diff options
author | Matt Pape <mpape@google.com> | 2019-04-19 12:31:24 -0700 |
---|---|---|
committer | Matt Pape <mpape@google.com> | 2019-04-30 16:35:16 +0000 |
commit | 15769e2ffab7f79b98df75e2d803c588a4fffc09 (patch) | |
tree | 640c0481755dd50addd48c6d3e5439502310cdd7 | |
parent | 28cb4d23db83de7b957e0b2fc6a3dae0371b4799 (diff) |
Migrate usage of single property lister to multi prop listener.
Test: atest CtsViewTestCases:TextClassificationManagerTest
atest FrameworksCoreTests:TextClassificationManagerTest
atest ExtServicesUnitTests:AssistantSettingsTest
atest SystemUITests:SmartReplyConstantsTest
atest FrameworksServicesTests:AutofillManagerServiceTest
atest FrameworksUiServicesTests:NotificationManagerServiceTest
Bug: 128902955
Change-Id: I00e524b615b3bd03b6b40535410ff7eb2ef6f8ee
14 files changed, 135 insertions, 150 deletions
diff --git a/core/java/android/view/textclassifier/TextClassificationManager.java b/core/java/android/view/textclassifier/TextClassificationManager.java index 417c6e7f3c75..042b943c60a3 100644 --- a/core/java/android/view/textclassifier/TextClassificationManager.java +++ b/core/java/android/view/textclassifier/TextClassificationManager.java @@ -25,6 +25,7 @@ import android.content.Context; import android.database.ContentObserver; import android.os.ServiceManager; import android.provider.DeviceConfig; +import android.provider.DeviceConfig.Properties; import android.provider.Settings; import android.service.textclassifier.TextClassifierService; import android.view.textclassifier.TextClassifier.TextClassifierType; @@ -199,7 +200,7 @@ public final class TextClassificationManager { getApplicationContext().getContentResolver() .unregisterContentObserver(mSettingsObserver); if (ConfigParser.ENABLE_DEVICE_CONFIG) { - DeviceConfig.removeOnPropertyChangedListener(mSettingsObserver); + DeviceConfig.removeOnPropertiesChangedListener(mSettingsObserver); } } } finally { @@ -286,7 +287,7 @@ public final class TextClassificationManager { } private static final class SettingsObserver extends ContentObserver - implements DeviceConfig.OnPropertyChangedListener { + implements DeviceConfig.OnPropertiesChangedListener { private final WeakReference<TextClassificationManager> mTcm; @@ -298,7 +299,7 @@ public final class TextClassificationManager { false /* notifyForDescendants */, this); if (ConfigParser.ENABLE_DEVICE_CONFIG) { - DeviceConfig.addOnPropertyChangedListener( + DeviceConfig.addOnPropertiesChangedListener( DeviceConfig.NAMESPACE_TEXTCLASSIFIER, ActivityThread.currentApplication().getMainExecutor(), this); @@ -311,7 +312,7 @@ public final class TextClassificationManager { } @Override - public void onPropertyChanged(String namespace, String name, String value) { + public void onPropertiesChanged(Properties properties) { invalidateSettings(); } diff --git a/packages/ExtServices/src/android/ext/services/notification/AssistantSettings.java b/packages/ExtServices/src/android/ext/services/notification/AssistantSettings.java index 46288bb67b4c..296db46d2624 100644 --- a/packages/ExtServices/src/android/ext/services/notification/AssistantSettings.java +++ b/packages/ExtServices/src/android/ext/services/notification/AssistantSettings.java @@ -102,10 +102,10 @@ final class AssistantSettings extends ContentObserver { } private void registerDeviceConfigs() { - DeviceConfig.addOnPropertyChangedListener( + DeviceConfig.addOnPropertiesChangedListener( DeviceConfig.NAMESPACE_SYSTEMUI, this::postToHandler, - this::onDeviceConfigPropertyChanged); + (properties) -> onDeviceConfigPropertiesChanged(properties.getNamespace())); // Update the fields in this class from the current state of the device config. updateFromDeviceConfigFlags(); @@ -116,10 +116,10 @@ final class AssistantSettings extends ContentObserver { } @VisibleForTesting - void onDeviceConfigPropertyChanged(String namespace, String name, String value) { + void onDeviceConfigPropertiesChanged(String namespace) { if (!DeviceConfig.NAMESPACE_SYSTEMUI.equals(namespace)) { Log.e(LOG_TAG, "Received update from DeviceConfig for unrelated namespace: " - + namespace + " " + name + "=" + value); + + namespace); return; } diff --git a/packages/ExtServices/tests/src/android/ext/services/notification/AssistantSettingsTest.java b/packages/ExtServices/tests/src/android/ext/services/notification/AssistantSettingsTest.java index ad52e2b9504b..5c877de23816 100644 --- a/packages/ExtServices/tests/src/android/ext/services/notification/AssistantSettingsTest.java +++ b/packages/ExtServices/tests/src/android/ext/services/notification/AssistantSettingsTest.java @@ -96,10 +96,7 @@ public class AssistantSettingsTest { SystemUiDeviceConfigFlags.NAS_GENERATE_REPLIES, "false", false /* makeDefault */)); - mAssistantSettings.onDeviceConfigPropertyChanged( - DeviceConfig.NAMESPACE_SYSTEMUI, - SystemUiDeviceConfigFlags.NAS_GENERATE_REPLIES, - "false"); + mAssistantSettings.onDeviceConfigPropertiesChanged(DeviceConfig.NAMESPACE_SYSTEMUI); assertFalse(mAssistantSettings.mGenerateReplies); } @@ -111,10 +108,7 @@ public class AssistantSettingsTest { SystemUiDeviceConfigFlags.NAS_GENERATE_REPLIES, "true", false /* makeDefault */)); - mAssistantSettings.onDeviceConfigPropertyChanged( - DeviceConfig.NAMESPACE_SYSTEMUI, - SystemUiDeviceConfigFlags.NAS_GENERATE_REPLIES, - "true"); + mAssistantSettings.onDeviceConfigPropertiesChanged(DeviceConfig.NAMESPACE_SYSTEMUI); assertTrue(mAssistantSettings.mGenerateReplies); } @@ -126,10 +120,7 @@ public class AssistantSettingsTest { SystemUiDeviceConfigFlags.NAS_GENERATE_REPLIES, "false", false /* makeDefault */)); - mAssistantSettings.onDeviceConfigPropertyChanged( - DeviceConfig.NAMESPACE_SYSTEMUI, - SystemUiDeviceConfigFlags.NAS_GENERATE_REPLIES, - "false"); + mAssistantSettings.onDeviceConfigPropertiesChanged(DeviceConfig.NAMESPACE_SYSTEMUI); assertFalse(mAssistantSettings.mGenerateReplies); @@ -138,10 +129,7 @@ public class AssistantSettingsTest { SystemUiDeviceConfigFlags.NAS_GENERATE_REPLIES, null, false /* makeDefault */)); - mAssistantSettings.onDeviceConfigPropertyChanged( - DeviceConfig.NAMESPACE_SYSTEMUI, - SystemUiDeviceConfigFlags.NAS_GENERATE_REPLIES, - null); + mAssistantSettings.onDeviceConfigPropertiesChanged(DeviceConfig.NAMESPACE_SYSTEMUI); // Go back to the default value. assertTrue(mAssistantSettings.mGenerateReplies); @@ -154,10 +142,7 @@ public class AssistantSettingsTest { SystemUiDeviceConfigFlags.NAS_GENERATE_ACTIONS, "false", false /* makeDefault */)); - mAssistantSettings.onDeviceConfigPropertyChanged( - DeviceConfig.NAMESPACE_SYSTEMUI, - SystemUiDeviceConfigFlags.NAS_GENERATE_ACTIONS, - "false"); + mAssistantSettings.onDeviceConfigPropertiesChanged(DeviceConfig.NAMESPACE_SYSTEMUI); assertFalse(mAssistantSettings.mGenerateActions); } @@ -169,10 +154,7 @@ public class AssistantSettingsTest { SystemUiDeviceConfigFlags.NAS_GENERATE_ACTIONS, "true", false /* makeDefault */)); - mAssistantSettings.onDeviceConfigPropertyChanged( - DeviceConfig.NAMESPACE_SYSTEMUI, - SystemUiDeviceConfigFlags.NAS_GENERATE_ACTIONS, - "true"); + mAssistantSettings.onDeviceConfigPropertiesChanged(DeviceConfig.NAMESPACE_SYSTEMUI); assertTrue(mAssistantSettings.mGenerateActions); } @@ -184,10 +166,7 @@ public class AssistantSettingsTest { SystemUiDeviceConfigFlags.NAS_GENERATE_ACTIONS, "false", false /* makeDefault */)); - mAssistantSettings.onDeviceConfigPropertyChanged( - DeviceConfig.NAMESPACE_SYSTEMUI, - SystemUiDeviceConfigFlags.NAS_GENERATE_ACTIONS, - "false"); + mAssistantSettings.onDeviceConfigPropertiesChanged(DeviceConfig.NAMESPACE_SYSTEMUI); assertFalse(mAssistantSettings.mGenerateActions); @@ -196,10 +175,7 @@ public class AssistantSettingsTest { SystemUiDeviceConfigFlags.NAS_GENERATE_ACTIONS, null, false /* makeDefault */)); - mAssistantSettings.onDeviceConfigPropertyChanged( - DeviceConfig.NAMESPACE_SYSTEMUI, - SystemUiDeviceConfigFlags.NAS_GENERATE_ACTIONS, - null); + mAssistantSettings.onDeviceConfigPropertiesChanged(DeviceConfig.NAMESPACE_SYSTEMUI); // Go back to the default value. assertTrue(mAssistantSettings.mGenerateActions); @@ -212,10 +188,7 @@ public class AssistantSettingsTest { SystemUiDeviceConfigFlags.NAS_MAX_MESSAGES_TO_EXTRACT, "10", false /* makeDefault */)); - mAssistantSettings.onDeviceConfigPropertyChanged( - DeviceConfig.NAMESPACE_SYSTEMUI, - SystemUiDeviceConfigFlags.NAS_MAX_MESSAGES_TO_EXTRACT, - "10"); + mAssistantSettings.onDeviceConfigPropertiesChanged(DeviceConfig.NAMESPACE_SYSTEMUI); assertEquals(10, mAssistantSettings.mMaxMessagesToExtract); } @@ -227,20 +200,14 @@ public class AssistantSettingsTest { SystemUiDeviceConfigFlags.NAS_MAX_SUGGESTIONS, "5", false /* makeDefault */)); - mAssistantSettings.onDeviceConfigPropertyChanged( - DeviceConfig.NAMESPACE_SYSTEMUI, - SystemUiDeviceConfigFlags.NAS_MAX_SUGGESTIONS, - "5"); + mAssistantSettings.onDeviceConfigPropertiesChanged(DeviceConfig.NAMESPACE_SYSTEMUI); assertEquals(5, mAssistantSettings.mMaxSuggestions); } @Test public void testMaxSuggestionsEmpty() { - mAssistantSettings.onDeviceConfigPropertyChanged( - DeviceConfig.NAMESPACE_SYSTEMUI, - SystemUiDeviceConfigFlags.NAS_MAX_SUGGESTIONS, - ""); + mAssistantSettings.onDeviceConfigPropertiesChanged(DeviceConfig.NAMESPACE_SYSTEMUI); assertEquals(DEFAULT_MAX_SUGGESTIONS, mAssistantSettings.mMaxSuggestions); } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/NotificationMediaManager.java b/packages/SystemUI/src/com/android/systemui/statusbar/NotificationMediaManager.java index fa223670208b..1615e657d498 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/NotificationMediaManager.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/NotificationMediaManager.java @@ -39,6 +39,7 @@ import android.os.Handler; import android.os.Trace; import android.os.UserHandle; import android.provider.DeviceConfig; +import android.provider.DeviceConfig.Properties; import android.util.Log; import android.view.View; import android.widget.ImageView; @@ -118,15 +119,18 @@ public class NotificationMediaManager implements Dumpable { private ImageView mBackdropBack; private boolean mShowCompactMediaSeekbar; - private final DeviceConfig.OnPropertyChangedListener mPropertyChangedListener = - new DeviceConfig.OnPropertyChangedListener() { + private final DeviceConfig.OnPropertiesChangedListener mPropertiesChangedListener = + new DeviceConfig.OnPropertiesChangedListener() { @Override - public void onPropertyChanged(String namespace, String name, String value) { - if (SystemUiDeviceConfigFlags.COMPACT_MEDIA_SEEKBAR_ENABLED.equals(name)) { - if (DEBUG_MEDIA) { - Log.v(TAG, "DEBUG_MEDIA: compact media seekbar flag updated: " + value); + public void onPropertiesChanged(Properties properties) { + for (String name : properties.getKeyset()) { + if (SystemUiDeviceConfigFlags.COMPACT_MEDIA_SEEKBAR_ENABLED.equals(name)) { + String value = properties.getString(name, null); + if (DEBUG_MEDIA) { + Log.v(TAG, "DEBUG_MEDIA: compact media seekbar flag updated: " + value); + } + mShowCompactMediaSeekbar = "true".equals(value); } - mShowCompactMediaSeekbar = "true".equals(value); } } }; @@ -189,9 +193,9 @@ public class NotificationMediaManager implements Dumpable { DeviceConfig.getProperty(DeviceConfig.NAMESPACE_SYSTEMUI, SystemUiDeviceConfigFlags.COMPACT_MEDIA_SEEKBAR_ENABLED)); - DeviceConfig.addOnPropertyChangedListener(DeviceConfig.NAMESPACE_SYSTEMUI, + DeviceConfig.addOnPropertiesChangedListener(DeviceConfig.NAMESPACE_SYSTEMUI, mContext.getMainExecutor(), - mPropertyChangedListener); + mPropertiesChangedListener); } public void setUpWithPresenter(NotificationPresenter presenter) { diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/SmartReplyConstants.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/SmartReplyConstants.java index f02b5441a737..655c29cbf687 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/SmartReplyConstants.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/SmartReplyConstants.java @@ -93,10 +93,10 @@ public final class SmartReplyConstants { } private void registerDeviceConfigListener() { - DeviceConfig.addOnPropertyChangedListener( + DeviceConfig.addOnPropertiesChangedListener( DeviceConfig.NAMESPACE_SYSTEMUI, this::postToHandler, - this::onDeviceConfigPropertyChanged); + (properties) -> onDeviceConfigPropertiesChanged(properties.getNamespace())); } private void postToHandler(Runnable r) { @@ -104,10 +104,10 @@ public final class SmartReplyConstants { } @VisibleForTesting - void onDeviceConfigPropertyChanged(String namespace, String name, String value) { + void onDeviceConfigPropertiesChanged(String namespace) { if (!DeviceConfig.NAMESPACE_SYSTEMUI.equals(namespace)) { Log.e(TAG, "Received update from DeviceConfig for unrelated namespace: " - + namespace + " " + name + "=" + value); + + namespace); return; } diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/SmartReplyConstantsTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/SmartReplyConstantsTest.java index fb2b7dced7c2..c761a44170c3 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/SmartReplyConstantsTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/SmartReplyConstantsTest.java @@ -229,8 +229,7 @@ public class SmartReplyConstantsTest extends SysuiTestCase { } private void triggerConstantsOnChange() { - mConstants.onDeviceConfigPropertyChanged(DeviceConfig.NAMESPACE_SYSTEMUI, - "" /* name */, "" /* value */); + mConstants.onDeviceConfigPropertiesChanged(DeviceConfig.NAMESPACE_SYSTEMUI); } private void resetAllDeviceConfigFlags() { diff --git a/services/autofill/java/com/android/server/autofill/AutofillManagerService.java b/services/autofill/java/com/android/server/autofill/AutofillManagerService.java index a94d1dc7f243..a64f4e475b7d 100644 --- a/services/autofill/java/com/android/server/autofill/AutofillManagerService.java +++ b/services/autofill/java/com/android/server/autofill/AutofillManagerService.java @@ -94,6 +94,7 @@ import java.util.Arrays; import java.util.List; import java.util.Map; import java.util.Objects; +import java.util.Set; /** * Entry point service for autofill management. @@ -192,9 +193,9 @@ public final class AutofillManagerService mUi = new AutoFillUI(ActivityThread.currentActivityThread().getSystemUiContext()); mAm = LocalServices.getService(ActivityManagerInternal.class); - DeviceConfig.addOnPropertyChangedListener(DeviceConfig.NAMESPACE_AUTOFILL, + DeviceConfig.addOnPropertiesChangedListener(DeviceConfig.NAMESPACE_AUTOFILL, ActivityThread.currentApplication().getMainExecutor(), - (namespace, key, value) -> onDeviceConfigChange(key)); + (properties) -> onDeviceConfigChange(properties.getKeyset())); setLogLevelFromSettings(); setMaxPartitionsFromSettings(); @@ -270,15 +271,17 @@ public final class AutofillManagerService } } - private void onDeviceConfigChange(@NonNull String key) { - switch (key) { - case AutofillManager.DEVICE_CONFIG_AUTOFILL_SMART_SUGGESTION_SUPPORTED_MODES: - case AutofillManager.DEVICE_CONFIG_AUGMENTED_SERVICE_IDLE_UNBIND_TIMEOUT: - case AutofillManager.DEVICE_CONFIG_AUGMENTED_SERVICE_REQUEST_TIMEOUT: - setDeviceConfigProperties(); - break; - default: - Slog.i(mTag, "Ignoring change on " + key); + private void onDeviceConfigChange(@NonNull Set<String> keys) { + for (String key : keys) { + switch (key) { + case AutofillManager.DEVICE_CONFIG_AUTOFILL_SMART_SUGGESTION_SUPPORTED_MODES: + case AutofillManager.DEVICE_CONFIG_AUGMENTED_SERVICE_IDLE_UNBIND_TIMEOUT: + case AutofillManager.DEVICE_CONFIG_AUGMENTED_SERVICE_REQUEST_TIMEOUT: + setDeviceConfigProperties(); + break; + default: + Slog.i(mTag, "Ignoring change on " + key); + } } } diff --git a/services/contentcapture/java/com/android/server/contentcapture/ContentCaptureManagerService.java b/services/contentcapture/java/com/android/server/contentcapture/ContentCaptureManagerService.java index a2d3d4c25b1d..5c6258ffe4cb 100644 --- a/services/contentcapture/java/com/android/server/contentcapture/ContentCaptureManagerService.java +++ b/services/contentcapture/java/com/android/server/contentcapture/ContentCaptureManagerService.java @@ -50,6 +50,7 @@ import android.os.ShellCallback; import android.os.UserHandle; import android.os.UserManager; import android.provider.DeviceConfig; +import android.provider.DeviceConfig.Properties; import android.provider.Settings; import android.service.contentcapture.ActivityEvent.ActivityEventType; import android.util.ArraySet; @@ -131,9 +132,9 @@ public final class ContentCaptureManagerService extends com.android.internal.R.string.config_defaultContentCaptureService), UserManager.DISALLOW_CONTENT_CAPTURE, /*packageUpdatePolicy=*/ PACKAGE_UPDATE_POLICY_NO_REFRESH); - DeviceConfig.addOnPropertyChangedListener(DeviceConfig.NAMESPACE_CONTENT_CAPTURE, + DeviceConfig.addOnPropertiesChangedListener(DeviceConfig.NAMESPACE_CONTENT_CAPTURE, ActivityThread.currentApplication().getMainExecutor(), - (namespace, key, value) -> onDeviceConfigChange(key, value)); + (properties) -> onDeviceConfigChange(properties)); setDeviceConfigProperties(); if (mDevCfgLogHistorySize > 0) { @@ -255,23 +256,25 @@ public final class ContentCaptureManagerService extends return enabled; } - private void onDeviceConfigChange(@NonNull String key, @Nullable String value) { - switch (key) { - case ContentCaptureManager.DEVICE_CONFIG_PROPERTY_SERVICE_EXPLICITLY_ENABLED: - setDisabledByDeviceConfig(value); - return; - case ContentCaptureManager.DEVICE_CONFIG_PROPERTY_LOGGING_LEVEL: - setLoggingLevelFromDeviceConfig(); - return; - case ContentCaptureManager.DEVICE_CONFIG_PROPERTY_MAX_BUFFER_SIZE: - case ContentCaptureManager.DEVICE_CONFIG_PROPERTY_IDLE_FLUSH_FREQUENCY: - case ContentCaptureManager.DEVICE_CONFIG_PROPERTY_LOG_HISTORY_SIZE: - case ContentCaptureManager.DEVICE_CONFIG_PROPERTY_TEXT_CHANGE_FLUSH_FREQUENCY: - case ContentCaptureManager.DEVICE_CONFIG_PROPERTY_IDLE_UNBIND_TIMEOUT: - setFineTuneParamsFromDeviceConfig(); - return; - default: - Slog.i(mTag, "Ignoring change on " + key); + private void onDeviceConfigChange(@NonNull Properties properties) { + for (String key : properties.getKeyset()) { + switch (key) { + case ContentCaptureManager.DEVICE_CONFIG_PROPERTY_SERVICE_EXPLICITLY_ENABLED: + setDisabledByDeviceConfig(properties.getString(key, null)); + return; + case ContentCaptureManager.DEVICE_CONFIG_PROPERTY_LOGGING_LEVEL: + setLoggingLevelFromDeviceConfig(); + return; + case ContentCaptureManager.DEVICE_CONFIG_PROPERTY_MAX_BUFFER_SIZE: + case ContentCaptureManager.DEVICE_CONFIG_PROPERTY_IDLE_FLUSH_FREQUENCY: + case ContentCaptureManager.DEVICE_CONFIG_PROPERTY_LOG_HISTORY_SIZE: + case ContentCaptureManager.DEVICE_CONFIG_PROPERTY_TEXT_CHANGE_FLUSH_FREQUENCY: + case ContentCaptureManager.DEVICE_CONFIG_PROPERTY_IDLE_UNBIND_TIMEOUT: + setFineTuneParamsFromDeviceConfig(); + return; + default: + Slog.i(mTag, "Ignoring change on " + key); + } } } diff --git a/services/core/java/com/android/server/StorageManagerService.java b/services/core/java/com/android/server/StorageManagerService.java index 6c1ffa7225f0..bace355c1c16 100644 --- a/services/core/java/com/android/server/StorageManagerService.java +++ b/services/core/java/com/android/server/StorageManagerService.java @@ -802,8 +802,8 @@ class StorageManagerService extends IStorageManager.Stub } }); // For now, simply clone property when it changes - DeviceConfig.addOnPropertyChangedListener(DeviceConfig.NAMESPACE_STORAGE, - mContext.getMainExecutor(), (namespace, name, value) -> { + DeviceConfig.addOnPropertiesChangedListener(DeviceConfig.NAMESPACE_STORAGE, + mContext.getMainExecutor(), (properties) -> { refreshIsolatedStorageSettings(); }); refreshIsolatedStorageSettings(); diff --git a/services/core/java/com/android/server/am/ActivityManagerConstants.java b/services/core/java/com/android/server/am/ActivityManagerConstants.java index d7decb4126fc..0da39e7aee76 100644 --- a/services/core/java/com/android/server/am/ActivityManagerConstants.java +++ b/services/core/java/com/android/server/am/ActivityManagerConstants.java @@ -26,7 +26,8 @@ import android.net.Uri; import android.os.Build; import android.os.Handler; import android.provider.DeviceConfig; -import android.provider.DeviceConfig.OnPropertyChangedListener; +import android.provider.DeviceConfig.OnPropertiesChangedListener; +import android.provider.DeviceConfig.Properties; import android.provider.Settings; import android.text.TextUtils; import android.text.TextUtils.SimpleStringSplitter; @@ -315,23 +316,25 @@ final class ActivityManagerConstants extends ContentObserver { private static final Uri ENABLE_AUTOMATIC_SYSTEM_SERVER_HEAP_DUMPS_URI = Settings.Global.getUriFor(Settings.Global.ENABLE_AUTOMATIC_SYSTEM_SERVER_HEAP_DUMPS); - private final OnPropertyChangedListener mOnDeviceConfigChangedListener = - new OnPropertyChangedListener() { + private final OnPropertiesChangedListener mOnDeviceConfigChangedListener = + new OnPropertiesChangedListener() { @Override - public void onPropertyChanged(String namespace, String name, String value) { - if (name == null) { - return; - } - switch (name) { - case KEY_MAX_CACHED_PROCESSES: - updateMaxCachedProcesses(); - break; - case KEY_DEFAULT_BACKGROUND_ACTIVITY_STARTS_ENABLED: - case KEY_BACKGROUND_ACTIVITY_STARTS_PACKAGE_NAMES_WHITELIST: - updateBackgroundActivityStarts(); - break; - default: - break; + public void onPropertiesChanged(Properties properties) { + for (String name : properties.getKeyset()) { + if (name == null) { + return; + } + switch (name) { + case KEY_MAX_CACHED_PROCESSES: + updateMaxCachedProcesses(); + break; + case KEY_DEFAULT_BACKGROUND_ACTIVITY_STARTS_ENABLED: + case KEY_BACKGROUND_ACTIVITY_STARTS_PACKAGE_NAMES_WHITELIST: + updateBackgroundActivityStarts(); + break; + default: + break; + } } } }; @@ -362,7 +365,7 @@ final class ActivityManagerConstants extends ContentObserver { if (mSystemServerAutomaticHeapDumpEnabled) { updateEnableAutomaticSystemServerHeapDumps(); } - DeviceConfig.addOnPropertyChangedListener(DeviceConfig.NAMESPACE_ACTIVITY_MANAGER, + DeviceConfig.addOnPropertiesChangedListener(DeviceConfig.NAMESPACE_ACTIVITY_MANAGER, ActivityThread.currentApplication().getMainExecutor(), mOnDeviceConfigChangedListener); updateMaxCachedProcesses(); diff --git a/services/core/java/com/android/server/am/AppCompactor.java b/services/core/java/com/android/server/am/AppCompactor.java index 13b55dbcad48..b0f8f86ada6b 100644 --- a/services/core/java/com/android/server/am/AppCompactor.java +++ b/services/core/java/com/android/server/am/AppCompactor.java @@ -30,7 +30,8 @@ import android.os.Process; import android.os.SystemClock; import android.os.Trace; import android.provider.DeviceConfig; -import android.provider.DeviceConfig.OnPropertyChangedListener; +import android.provider.DeviceConfig.OnPropertiesChangedListener; +import android.provider.DeviceConfig.Properties; import android.text.TextUtils; import android.util.EventLog; import android.util.Slog; @@ -126,29 +127,31 @@ public final class AppCompactor { private final ArrayList<ProcessRecord> mPendingCompactionProcesses = new ArrayList<ProcessRecord>(); private final ActivityManagerService mAm; - private final OnPropertyChangedListener mOnFlagsChangedListener = - new OnPropertyChangedListener() { + private final OnPropertiesChangedListener mOnFlagsChangedListener = + new OnPropertiesChangedListener() { @Override - public void onPropertyChanged(String namespace, String name, String value) { + public void onPropertiesChanged(Properties properties) { synchronized (mPhenotypeFlagLock) { - if (KEY_USE_COMPACTION.equals(name)) { - updateUseCompaction(); - } else if (KEY_COMPACT_ACTION_1.equals(name) - || KEY_COMPACT_ACTION_2.equals(name)) { - updateCompactionActions(); - } else if (KEY_COMPACT_THROTTLE_1.equals(name) - || KEY_COMPACT_THROTTLE_2.equals(name) - || KEY_COMPACT_THROTTLE_3.equals(name) - || KEY_COMPACT_THROTTLE_4.equals(name)) { - updateCompactionThrottles(); - } else if (KEY_COMPACT_STATSD_SAMPLE_RATE.equals(name)) { - updateStatsdSampleRate(); - } else if (KEY_COMPACT_FULL_RSS_THROTTLE_KB.equals(name)) { - updateFullRssThrottle(); - } else if (KEY_COMPACT_FULL_DELTA_RSS_THROTTLE_KB.equals(name)) { - updateFullDeltaRssThrottle(); - } else if (KEY_COMPACT_PROC_STATE_THROTTLE.equals(name)) { - updateProcStateThrottle(); + for (String name : properties.getKeyset()) { + if (KEY_USE_COMPACTION.equals(name)) { + updateUseCompaction(); + } else if (KEY_COMPACT_ACTION_1.equals(name) + || KEY_COMPACT_ACTION_2.equals(name)) { + updateCompactionActions(); + } else if (KEY_COMPACT_THROTTLE_1.equals(name) + || KEY_COMPACT_THROTTLE_2.equals(name) + || KEY_COMPACT_THROTTLE_3.equals(name) + || KEY_COMPACT_THROTTLE_4.equals(name)) { + updateCompactionThrottles(); + } else if (KEY_COMPACT_STATSD_SAMPLE_RATE.equals(name)) { + updateStatsdSampleRate(); + } else if (KEY_COMPACT_FULL_RSS_THROTTLE_KB.equals(name)) { + updateFullRssThrottle(); + } else if (KEY_COMPACT_FULL_DELTA_RSS_THROTTLE_KB.equals(name)) { + updateFullDeltaRssThrottle(); + } else if (KEY_COMPACT_PROC_STATE_THROTTLE.equals(name)) { + updateProcStateThrottle(); + } } } if (mTestCallback != null) { @@ -229,7 +232,7 @@ public final class AppCompactor { * starts the background thread if necessary. */ public void init() { - DeviceConfig.addOnPropertyChangedListener(DeviceConfig.NAMESPACE_ACTIVITY_MANAGER, + DeviceConfig.addOnPropertiesChangedListener(DeviceConfig.NAMESPACE_ACTIVITY_MANAGER, ActivityThread.currentApplication().getMainExecutor(), mOnFlagsChangedListener); synchronized (mPhenotypeFlagLock) { updateUseCompaction(); diff --git a/services/core/java/com/android/server/gpu/GpuService.java b/services/core/java/com/android/server/gpu/GpuService.java index 0f73f379900b..d4396534d067 100644 --- a/services/core/java/com/android/server/gpu/GpuService.java +++ b/services/core/java/com/android/server/gpu/GpuService.java @@ -37,6 +37,7 @@ import android.os.Handler; import android.os.SystemProperties; import android.os.UserHandle; import android.provider.DeviceConfig; +import android.provider.DeviceConfig.Properties; import android.provider.Settings; import android.util.Base64; import android.util.Slog; @@ -138,18 +139,19 @@ public class GpuService extends SystemService { } } - private final class DeviceConfigListener implements DeviceConfig.OnPropertyChangedListener { + private final class DeviceConfigListener implements DeviceConfig.OnPropertiesChangedListener { DeviceConfigListener() { super(); - DeviceConfig.addOnPropertyChangedListener(DeviceConfig.NAMESPACE_GAME_DRIVER, + DeviceConfig.addOnPropertiesChangedListener(DeviceConfig.NAMESPACE_GAME_DRIVER, mContext.getMainExecutor(), this); } @Override - public void onPropertyChanged(String namespace, String name, String value) { + public void onPropertiesChanged(Properties properties) { synchronized (mDeviceConfigLock) { - if (Settings.Global.GAME_DRIVER_BLACKLISTS.equals(name)) { - parseBlacklists(value != null ? value : ""); + if (properties.getKeyset().contains(Settings.Global.GAME_DRIVER_BLACKLISTS)) { + parseBlacklists( + properties.getString(Settings.Global.GAME_DRIVER_BLACKLISTS, "")); setBlacklist(); } } diff --git a/services/core/java/com/android/server/notification/NotificationManagerService.java b/services/core/java/com/android/server/notification/NotificationManagerService.java index 21a862a5ec6c..55191dbbbf40 100644 --- a/services/core/java/com/android/server/notification/NotificationManagerService.java +++ b/services/core/java/com/android/server/notification/NotificationManagerService.java @@ -1811,14 +1811,15 @@ public class NotificationManagerService extends SystemService { } private void registerDeviceConfigChange() { - DeviceConfig.addOnPropertyChangedListener( + DeviceConfig.addOnPropertiesChangedListener( DeviceConfig.NAMESPACE_SYSTEMUI, getContext().getMainExecutor(), - (namespace, name, value) -> { - if (!DeviceConfig.NAMESPACE_SYSTEMUI.equals(namespace)) { + (properties) -> { + if (!DeviceConfig.NAMESPACE_SYSTEMUI.equals(properties.getNamespace())) { return; } - if (SystemUiDeviceConfigFlags.NAS_DEFAULT_SERVICE.equals(name)) { + if (properties.getKeyset() + .contains(SystemUiDeviceConfigFlags.NAS_DEFAULT_SERVICE)) { mAssistants.resetDefaultAssistantsIfNecessary(); } }); diff --git a/services/tests/mockingservicestests/src/com/android/server/testables/TestableDeviceConfig.java b/services/tests/mockingservicestests/src/com/android/server/testables/TestableDeviceConfig.java index eb90295ed8c9..dae3d30c4fd1 100644 --- a/services/tests/mockingservicestests/src/com/android/server/testables/TestableDeviceConfig.java +++ b/services/tests/mockingservicestests/src/com/android/server/testables/TestableDeviceConfig.java @@ -137,7 +137,6 @@ public final class TestableDeviceConfig implements TestRule { return mKeyValueMap.get(getKey(namespace, name)); }).when(() -> DeviceConfig.getProperty(anyString(), anyString())); - return new TestWatcher() { @Override protected void succeeded(Description description) { |