diff options
3 files changed, 44 insertions, 48 deletions
diff --git a/core/java/android/provider/Settings.java b/core/java/android/provider/Settings.java index 3beb8841acc8..e754ab238b04 100644 --- a/core/java/android/provider/Settings.java +++ b/core/java/android/provider/Settings.java @@ -13477,24 +13477,6 @@ public final class Settings { "hidden_api_blacklist_exemptions"; /** - * Sampling rate for hidden API access event logs with libmetricslogger, as an integer in - * the range 0 to 0x10000 inclusive. - * - * @hide - */ - public static final String HIDDEN_API_ACCESS_LOG_SAMPLING_RATE = - "hidden_api_access_log_sampling_rate"; - - /** - * Sampling rate for hidden API access event logging with statslog, as an integer in the - * range 0 to 0x10000 inclusive. - * - * @hide - */ - public static final String HIDDEN_API_ACCESS_STATSLOG_SAMPLING_RATE = - "hidden_api_access_statslog_sampling_rate"; - - /** * Hidden API enforcement policy for apps. * * Values correspond to @{@link diff --git a/core/tests/coretests/src/android/provider/SettingsBackupTest.java b/core/tests/coretests/src/android/provider/SettingsBackupTest.java index 8fc6a9694586..80250db581d4 100644 --- a/core/tests/coretests/src/android/provider/SettingsBackupTest.java +++ b/core/tests/coretests/src/android/provider/SettingsBackupTest.java @@ -287,8 +287,6 @@ public class SettingsBackupTest { Settings.Global.HDMI_CONTROL_ENABLED, Settings.Global.HDMI_SYSTEM_AUDIO_CONTROL_ENABLED, Settings.Global.HEADS_UP_NOTIFICATIONS_ENABLED, - Settings.Global.HIDDEN_API_ACCESS_LOG_SAMPLING_RATE, - Settings.Global.HIDDEN_API_ACCESS_STATSLOG_SAMPLING_RATE, Settings.Global.HIDDEN_API_POLICY, Settings.Global.HIDE_ERROR_DIALOGS, Settings.Global.HTTP_PROXY, diff --git a/services/core/java/com/android/server/am/ActivityManagerService.java b/services/core/java/com/android/server/am/ActivityManagerService.java index e39c6ac29104..8e7fce1d46c2 100644 --- a/services/core/java/com/android/server/am/ActivityManagerService.java +++ b/services/core/java/com/android/server/am/ActivityManagerService.java @@ -271,6 +271,7 @@ import android.os.UserManager; import android.os.WorkSource; import android.os.storage.IStorageManager; import android.os.storage.StorageManager; +import android.provider.DeviceConfig; import android.provider.Settings; import android.sysprop.VoldProperties; import android.text.TextUtils; @@ -2154,7 +2155,8 @@ public class ActivityManagerService extends IActivityManager.Stub * Encapsulates global settings related to hidden API enforcement behaviour, including tracking * the latest value via a content observer. */ - static class HiddenApiSettings extends ContentObserver { + static class HiddenApiSettings extends ContentObserver + implements DeviceConfig.OnPropertiesChangedListener { private final Context mContext; private boolean mBlacklistDisabled; @@ -2164,6 +2166,45 @@ public class ActivityManagerService extends IActivityManager.Stub private int mStatslogSampleRate = -1; @HiddenApiEnforcementPolicy private int mPolicy = HIDDEN_API_ENFORCEMENT_DEFAULT; + /** + * Sampling rate for hidden API access event logs with libmetricslogger, as an integer in + * the range 0 to 0x10000 inclusive. + * + * @hide + */ + public static final String HIDDEN_API_ACCESS_LOG_SAMPLING_RATE = + "hidden_api_access_log_sampling_rate"; + + /** + * Sampling rate for hidden API access event logging with statslog, as an integer in the + * range 0 to 0x10000 inclusive. + * + * @hide + */ + public static final String HIDDEN_API_ACCESS_STATSLOG_SAMPLING_RATE = + "hidden_api_access_statslog_sampling_rate"; + + public void onPropertiesChanged(DeviceConfig.Properties properties) { + int logSampleRate = properties.getInt(HIDDEN_API_ACCESS_LOG_SAMPLING_RATE, 0x0); + if (logSampleRate < 0 || logSampleRate > 0x10000) { + logSampleRate = -1; + } + if (logSampleRate != -1 && logSampleRate != mLogSampleRate) { + mLogSampleRate = logSampleRate; + ZYGOTE_PROCESS.setHiddenApiAccessLogSampleRate(mLogSampleRate); + } + + int statslogSampleRate = + properties.getInt(HIDDEN_API_ACCESS_STATSLOG_SAMPLING_RATE, 0); + if (statslogSampleRate < 0 || statslogSampleRate > 0x10000) { + statslogSampleRate = -1; + } + if (statslogSampleRate != -1 && statslogSampleRate != mStatslogSampleRate) { + mStatslogSampleRate = statslogSampleRate; + ZYGOTE_PROCESS.setHiddenApiAccessStatslogSampleRate(mStatslogSampleRate); + } + } + public HiddenApiSettings(Handler handler, Context context) { super(handler); mContext = context; @@ -2175,18 +2216,11 @@ public class ActivityManagerService extends IActivityManager.Stub false, this); mContext.getContentResolver().registerContentObserver( - Settings.Global.getUriFor(Settings.Global.HIDDEN_API_ACCESS_LOG_SAMPLING_RATE), - false, - this); - mContext.getContentResolver().registerContentObserver( - Settings.Global.getUriFor( - Settings.Global.HIDDEN_API_ACCESS_STATSLOG_SAMPLING_RATE), - false, - this); - mContext.getContentResolver().registerContentObserver( Settings.Global.getUriFor(Settings.Global.HIDDEN_API_POLICY), false, this); + DeviceConfig.addOnPropertiesChangedListener(DeviceConfig.NAMESPACE_APP_COMPAT, + mContext.getMainExecutor(), this); update(); } @@ -2210,24 +2244,6 @@ public class ActivityManagerService extends IActivityManager.Stub mExemptions = Collections.emptyList(); } } - int logSampleRate = Settings.Global.getInt(mContext.getContentResolver(), - Settings.Global.HIDDEN_API_ACCESS_LOG_SAMPLING_RATE, 0x200); - if (logSampleRate < 0 || logSampleRate > 0x10000) { - logSampleRate = -1; - } - if (logSampleRate != -1 && logSampleRate != mLogSampleRate) { - mLogSampleRate = logSampleRate; - ZYGOTE_PROCESS.setHiddenApiAccessLogSampleRate(mLogSampleRate); - } - int statslogSampleRate = Settings.Global.getInt(mContext.getContentResolver(), - Settings.Global.HIDDEN_API_ACCESS_STATSLOG_SAMPLING_RATE, 0); - if (statslogSampleRate < 0 || statslogSampleRate > 0x10000) { - statslogSampleRate = -1; - } - if (statslogSampleRate != -1 && statslogSampleRate != mStatslogSampleRate) { - mStatslogSampleRate = statslogSampleRate; - ZYGOTE_PROCESS.setHiddenApiAccessStatslogSampleRate(mStatslogSampleRate); - } mPolicy = getValidEnforcementPolicy(Settings.Global.HIDDEN_API_POLICY); } |