From 9139d389afa9516e386ead79b6b92c02c6a71ed9 Mon Sep 17 00:00:00 2001 From: Andrei Onea Date: Tue, 19 Mar 2019 13:31:23 +0000 Subject: Add app_compat flags for hidden api logging Remove the global settings hidden_api_access_log_sampling_rate and hidden_api_access_statslog_sampling_rate and replace them with DeviceConfig values under the app_compat namespace. Test: m Test: cts-tradefed run cts-dev -m CtsStatsdHostTestCases -t \ android.cts.statsd.atom.UidAtomTests#testHiddenApiUsed Bug: 119217680 Bug: 115322973 Change-Id: I7d3257f572e57b9471883e90789e0ac97a1de483 --- core/java/android/provider/Settings.java | 18 ------ .../src/android/provider/SettingsBackupTest.java | 2 - .../android/server/am/ActivityManagerService.java | 72 +++++++++++++--------- 3 files changed, 44 insertions(+), 48 deletions(-) diff --git a/core/java/android/provider/Settings.java b/core/java/android/provider/Settings.java index b8174e66e8a6..f7747667b54e 100644 --- a/core/java/android/provider/Settings.java +++ b/core/java/android/provider/Settings.java @@ -13476,24 +13476,6 @@ public final class Settings { public static final String HIDDEN_API_BLACKLIST_EXEMPTIONS = "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. * diff --git a/core/tests/coretests/src/android/provider/SettingsBackupTest.java b/core/tests/coretests/src/android/provider/SettingsBackupTest.java index 7322a5445e86..16485089749d 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 82254761817e..d37797c08fed 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; @@ -2141,7 +2142,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; @@ -2151,6 +2153,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; @@ -2161,19 +2202,12 @@ public class ActivityManagerService extends IActivityManager.Stub Settings.Global.getUriFor(Settings.Global.HIDDEN_API_BLACKLIST_EXEMPTIONS), 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(); } @@ -2197,24 +2231,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); } -- cgit v1.2.3-59-g8ed1b