diff options
4 files changed, 20 insertions, 59 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 a50a8356ebbd..884f8ccd5e54 100644 --- a/core/java/android/provider/Settings.java +++ b/core/java/android/provider/Settings.java @@ -14584,19 +14584,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(); - } - } } diff --git a/packages/SettingsProvider/test/src/android/provider/SettingsBackupTest.java b/packages/SettingsProvider/test/src/android/provider/SettingsBackupTest.java index a0a5fcb8f47a..af12ddd8895b 100644 --- a/packages/SettingsProvider/test/src/android/provider/SettingsBackupTest.java +++ b/packages/SettingsProvider/test/src/android/provider/SettingsBackupTest.java @@ -315,7 +315,6 @@ public class SettingsBackupTest { Settings.Global.KERNEL_CPU_THREAD_READER, Settings.Global.LANG_ID_UPDATE_CONTENT_URL, Settings.Global.LANG_ID_UPDATE_METADATA_URL, - Settings.Global.LATENCY_TRACKER, Settings.Global.LOCATION_BACKGROUND_THROTTLE_INTERVAL_MS, Settings.Global.LOCATION_BACKGROUND_THROTTLE_PROXIMITY_ALERT_INTERVAL_MS, Settings.Global.LOCATION_BACKGROUND_THROTTLE_PACKAGE_WHITELIST, |