summaryrefslogtreecommitdiff
path: root/core/java
diff options
context:
space:
mode:
authorMarcin Oczeretko <marcinoc@google.com>2020-10-19 16:07:02 +0100
committerMarcin Oczeretko <marcinoc@google.com>2020-11-17 18:37:51 +0000
commit2db59986ebbe2f78854cdba84af6f3579ff15e5d (patch)
treeb9a78feaa1ef2e8c7cc05b196a2863339839e757 /core/java
parentf15a5fc2bf30ffabe691b432fa1a00693975ee64 (diff)
Switch LatencyTracker to the DeviceConfig API
Test: manual Bug: 162927074 Change-Id: I4eaae9db74ac1b23bdd0e90a6981a852375f788b
Diffstat (limited to 'core/java')
-rw-r--r--core/java/android/provider/DeviceConfig.java7
-rw-r--r--core/java/android/provider/Settings.java13
-rw-r--r--core/java/com/android/internal/util/LatencyTracker.java58
3 files changed, 20 insertions, 58 deletions
diff --git a/core/java/android/provider/DeviceConfig.java b/core/java/android/provider/DeviceConfig.java
index 97c9f4bbb4ba..0c4f8de449e6 100644
--- a/core/java/android/provider/DeviceConfig.java
+++ b/core/java/android/provider/DeviceConfig.java
@@ -457,6 +457,13 @@ public final class DeviceConfig {
*/
public static final String NAMESPACE_CONFIGURATION = "configuration";
+ /**
+ * LatencyTracker properties definitions.
+ *
+ * @hide
+ */
+ public static final String NAMESPACE_LATENCY_TRACKER = "latency_tracker";
+
private static final Object sLock = new Object();
@GuardedBy("sLock")
private static ArrayMap<OnPropertiesChangedListener, Pair<String, Executor>> sListeners =
diff --git a/core/java/android/provider/Settings.java b/core/java/android/provider/Settings.java
index 3e48168eabe0..fcc0222015c0 100644
--- a/core/java/android/provider/Settings.java
+++ b/core/java/android/provider/Settings.java
@@ -14576,19 +14576,6 @@ public final class Settings {
*/
public static final String MAXIMUM_OBSCURING_OPACITY_FOR_TOUCH =
"maximum_obscuring_opacity_for_touch";
-
- /**
- * LatencyTracker settings.
- *
- * The following strings are supported as keys:
- * <pre>
- * enabled (boolean)
- * sampling_interval (int)
- * </pre>
- *
- * @hide
- */
- public static final String LATENCY_TRACKER = "latency_tracker";
}
/**
diff --git a/core/java/com/android/internal/util/LatencyTracker.java b/core/java/com/android/internal/util/LatencyTracker.java
index a87e8aaa0e64..8012540ed314 100644
--- a/core/java/com/android/internal/util/LatencyTracker.java
+++ b/core/java/com/android/internal/util/LatencyTracker.java
@@ -15,15 +15,11 @@
package com.android.internal.util;
import android.content.Context;
-import android.database.ContentObserver;
-import android.net.Uri;
import android.os.Build;
import android.os.SystemClock;
import android.os.Trace;
-import android.os.UserHandle;
-import android.provider.Settings;
+import android.provider.DeviceConfig;
import android.util.EventLog;
-import android.util.KeyValueListParser;
import android.util.Log;
import android.util.SparseLongArray;
@@ -135,8 +131,16 @@ public class LatencyTracker {
mSamplingInterval = DEFAULT_SAMPLING_INTERVAL;
// Post initialization to the background in case we're running on the main thread.
- BackgroundThread.getHandler().post(this::registerSettingsObserver);
- BackgroundThread.getHandler().post(this::readSettings);
+ BackgroundThread.getHandler().post(() -> this.updateProperties(
+ DeviceConfig.getProperties(DeviceConfig.NAMESPACE_LATENCY_TRACKER)));
+ DeviceConfig.addOnPropertiesChangedListener(DeviceConfig.NAMESPACE_LATENCY_TRACKER,
+ BackgroundThread.getExecutor(), this::updateProperties);
+ }
+
+ private void updateProperties(DeviceConfig.Properties properties) {
+ mSamplingInterval = properties.getInt(SETTINGS_SAMPLING_INTERVAL_KEY,
+ DEFAULT_SAMPLING_INTERVAL);
+ mEnabled = properties.getBoolean(SETTINGS_ENABLED_KEY, DEFAULT_ENABLED);
}
/**
@@ -171,28 +175,6 @@ public class LatencyTracker {
}
}
- private void registerSettingsObserver() {
- Uri settingsUri = Settings.Global.getUriFor(Settings.Global.LATENCY_TRACKER);
- mContext.getContentResolver().registerContentObserver(
- settingsUri, false, new SettingsObserver(this), UserHandle.myUserId());
- }
-
- private void readSettings() {
- KeyValueListParser parser = new KeyValueListParser(',');
- String settingsValue = Settings.Global.getString(mContext.getContentResolver(),
- Settings.Global.LATENCY_TRACKER);
-
- try {
- parser.setString(settingsValue);
- mSamplingInterval = parser.getInt(SETTINGS_SAMPLING_INTERVAL_KEY,
- DEFAULT_SAMPLING_INTERVAL);
- mEnabled = parser.getBoolean(SETTINGS_ENABLED_KEY, DEFAULT_ENABLED);
- } catch (IllegalArgumentException e) {
- Log.e(TAG, "Incorrect settings format", e);
- mEnabled = false;
- }
- }
-
public static boolean isEnabled(Context ctx) {
return getInstance(ctx).isEnabled();
}
@@ -236,8 +218,8 @@ public class LatencyTracker {
/**
* Logs an action that has started and ended. This needs to be called from the main thread.
*
- * @param action The action to end. One of the ACTION_* values.
- * @param duration The duration of the action in ms.
+ * @param action The action to end. One of the ACTION_* values.
+ * @param duration The duration of the action in ms.
*/
public void logAction(int action, int duration) {
boolean shouldSample = ThreadLocalRandom.current().nextInt() % mSamplingInterval == 0;
@@ -260,18 +242,4 @@ public class LatencyTracker {
FrameworkStatsLog.UI_ACTION_LATENCY_REPORTED, STATSD_ACTION[action], duration);
}
}
-
- private static class SettingsObserver extends ContentObserver {
- private final LatencyTracker mThisTracker;
-
- SettingsObserver(LatencyTracker thisTracker) {
- super(BackgroundThread.getHandler());
- mThisTracker = thisTracker;
- }
-
- @Override
- public void onChange(boolean selfChange, Uri uri, int userId) {
- mThisTracker.readSettings();
- }
- }
}