Merge "Catch SecurityException within LatencyTracker" into udc-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
6e439da5c1
@@ -367,28 +367,42 @@ public class LatencyTracker {
|
|||||||
* using a single static object.
|
* using a single static object.
|
||||||
*/
|
*/
|
||||||
@VisibleForTesting
|
@VisibleForTesting
|
||||||
|
@RequiresPermission(Manifest.permission.READ_DEVICE_CONFIG)
|
||||||
public void startListeningForLatencyTrackerConfigChanges() {
|
public void startListeningForLatencyTrackerConfigChanges() {
|
||||||
final Context context = ActivityThread.currentApplication();
|
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 (DEBUG) {
|
|
||||||
if (context == null) {
|
if (context == null) {
|
||||||
Log.d(TAG, "No application for " + ActivityThread.currentActivityThread());
|
if (DEBUG) {
|
||||||
} else {
|
Log.d(TAG, "No application for package: " + ActivityThread.currentPackageName());
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (context.checkCallingOrSelfPermission(READ_DEVICE_CONFIG) != PERMISSION_GRANTED) {
|
||||||
|
if (DEBUG) {
|
||||||
synchronized (mLock) {
|
synchronized (mLock) {
|
||||||
Log.d(TAG, "Initialized the LatencyTracker."
|
Log.d(TAG, "Initialized the LatencyTracker."
|
||||||
+ " (No READ_DEVICE_CONFIG permission to change configs)"
|
+ " (No READ_DEVICE_CONFIG permission to change configs)"
|
||||||
+ " enabled=" + mEnabled + ", package=" + context.getPackageName());
|
+ " 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());
|
||||||
}
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
Reference in New Issue
Block a user