diff options
| author | 2023-05-23 05:11:45 +0000 | |
|---|---|---|
| committer | 2023-05-23 05:11:45 +0000 | |
| commit | 5c21964e992d003fa77767ed78df6b9fb365da02 (patch) | |
| tree | 13722f51637f69d6aedeb05ef93bb4ccd1b55731 | |
| parent | 69da5b9a8eeceaefd14ebb4bd17c96d379592f1e (diff) | |
| parent | a5c10c3cdc675c674f8eee1e5601759cc4e0af52 (diff) | |
Merge "Catch SecurityException within LatencyTracker" into udc-dev am: 6e439da5c1 am: a5c10c3cdc
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/22930576
Change-Id: Ic07c4e701b9b53efc2cc5fbd0a55cdd78d8e637a
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
| -rw-r--r-- | core/java/com/android/internal/util/LatencyTracker.java | 48 |
1 files changed, 31 insertions, 17 deletions
diff --git a/core/java/com/android/internal/util/LatencyTracker.java b/core/java/com/android/internal/util/LatencyTracker.java index f2776353fd1b..116c301c28f0 100644 --- a/core/java/com/android/internal/util/LatencyTracker.java +++ b/core/java/com/android/internal/util/LatencyTracker.java @@ -367,28 +367,42 @@ public class LatencyTracker { * using a single static object. */ @VisibleForTesting + @RequiresPermission(Manifest.permission.READ_DEVICE_CONFIG) public void startListeningForLatencyTrackerConfigChanges() { final Context context = ActivityThread.currentApplication(); - if (context != null - && context.checkCallingOrSelfPermission(READ_DEVICE_CONFIG) == PERMISSION_GRANTED) { - // Post initialization to the background in case we're running on the main thread. - BackgroundThread.getHandler().post(() -> this.updateProperties( - DeviceConfig.getProperties(NAMESPACE_LATENCY_TRACKER))); - DeviceConfig.addOnPropertiesChangedListener(NAMESPACE_LATENCY_TRACKER, - BackgroundThread.getExecutor(), mOnPropertiesChangedListener); - } else { + if (context == null) { if (DEBUG) { - if (context == null) { - Log.d(TAG, "No application for " + ActivityThread.currentActivityThread()); - } else { - synchronized (mLock) { - Log.d(TAG, "Initialized the LatencyTracker." - + " (No READ_DEVICE_CONFIG permission to change configs)" - + " enabled=" + mEnabled + ", package=" + context.getPackageName()); - } - } + Log.d(TAG, "No application for package: " + ActivityThread.currentPackageName()); } + return; } + if (context.checkCallingOrSelfPermission(READ_DEVICE_CONFIG) != PERMISSION_GRANTED) { + if (DEBUG) { + synchronized (mLock) { + Log.d(TAG, "Initialized the LatencyTracker." + + " (No READ_DEVICE_CONFIG permission to change configs)" + + " enabled=" + mEnabled + ", package=" + context.getPackageName()); + } + } + return; + } + + // Post initialization to the background in case we're running on the main thread. + BackgroundThread.getHandler().post(() -> { + try { + this.updateProperties( + DeviceConfig.getProperties(NAMESPACE_LATENCY_TRACKER)); + DeviceConfig.addOnPropertiesChangedListener(NAMESPACE_LATENCY_TRACKER, + BackgroundThread.getExecutor(), mOnPropertiesChangedListener); + } catch (SecurityException ex) { + // In case of running tests that the main thread passes the check, + // but the background thread doesn't have necessary permissions. + // Swallow it since it's ok to ignore device config changes in the tests. + Log.d(TAG, "Can't get properties: READ_DEVICE_CONFIG granted=" + + context.checkCallingOrSelfPermission(READ_DEVICE_CONFIG) + + ", package=" + context.getPackageName()); + } + }); } /** |