diff options
| -rw-r--r-- | core/java/android/os/ZygoteProcess.java | 2 | ||||
| -rw-r--r-- | core/java/com/android/internal/os/ZygoteConnection.java | 9 | ||||
| -rw-r--r-- | services/core/java/com/android/server/am/ActivityManagerService.java | 37 |
3 files changed, 35 insertions, 13 deletions
diff --git a/core/java/android/os/ZygoteProcess.java b/core/java/android/os/ZygoteProcess.java index 6478de2612c3..85361587119d 100644 --- a/core/java/android/os/ZygoteProcess.java +++ b/core/java/android/os/ZygoteProcess.java @@ -881,6 +881,7 @@ public class ZygoteProcess { maybeSetApiBlacklistExemptions(primaryZygoteState, false); maybeSetHiddenApiAccessLogSampleRate(primaryZygoteState); + maybeSetHiddenApiAccessStatslogSampleRate(primaryZygoteState); } } @@ -896,6 +897,7 @@ public class ZygoteProcess { maybeSetApiBlacklistExemptions(secondaryZygoteState, false); maybeSetHiddenApiAccessLogSampleRate(secondaryZygoteState); + maybeSetHiddenApiAccessStatslogSampleRate(secondaryZygoteState); } } diff --git a/core/java/com/android/internal/os/ZygoteConnection.java b/core/java/com/android/internal/os/ZygoteConnection.java index dd6fb72888e2..2987b4e56fec 100644 --- a/core/java/com/android/internal/os/ZygoteConnection.java +++ b/core/java/com/android/internal/os/ZygoteConnection.java @@ -406,8 +406,13 @@ class ZygoteConnection { private int mHiddenApiAccessStatslogSampleRate = 0; public static void setHiddenApiAccessLogSampleRates(int sampleRate, int newSampleRate) { - sInstance.mHiddenApiAccessLogSampleRate = sampleRate; - sInstance.mHiddenApiAccessStatslogSampleRate = newSampleRate; + if (sampleRate != -1) { + sInstance.mHiddenApiAccessLogSampleRate = sampleRate; + } + + if (newSampleRate != -1) { + sInstance.mHiddenApiAccessStatslogSampleRate = newSampleRate; + } } public static HiddenApiUsageLogger getInstance() { diff --git a/services/core/java/com/android/server/am/ActivityManagerService.java b/services/core/java/com/android/server/am/ActivityManagerService.java index 11ddceb9b8f2..4d0d3d2dc578 100644 --- a/services/core/java/com/android/server/am/ActivityManagerService.java +++ b/services/core/java/com/android/server/am/ActivityManagerService.java @@ -2185,24 +2185,38 @@ public class ActivityManagerService extends IActivityManager.Stub "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) { + int logSampleRate = properties.getInt(HIDDEN_API_ACCESS_LOG_SAMPLING_RATE, + mLogSampleRate); + int statslogSampleRate = properties.getInt(HIDDEN_API_ACCESS_STATSLOG_SAMPLING_RATE, + mStatslogSampleRate); + setSampleRates(logSampleRate, statslogSampleRate); + } + + private void setSampleRates(int logSampleRate, int statslogSampleRate) { + if (logSampleRate >= 0 && logSampleRate <= 0x10000 + && 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) { + if (statslogSampleRate >= 0 && statslogSampleRate <= 0x10000 + && statslogSampleRate != mStatslogSampleRate) { mStatslogSampleRate = statslogSampleRate; ZYGOTE_PROCESS.setHiddenApiAccessStatslogSampleRate(mStatslogSampleRate); } + + } + + /** + * Set initial sampling rates from DeviceConfig. This is required after each restart, + * if they never get updated. + */ + private void initializeSampleRates() { + int logSampleRate = DeviceConfig.getInt(DeviceConfig.NAMESPACE_APP_COMPAT, + HIDDEN_API_ACCESS_LOG_SAMPLING_RATE, 0); + int statslogSampleRate = DeviceConfig.getInt(DeviceConfig.NAMESPACE_APP_COMPAT, + HIDDEN_API_ACCESS_STATSLOG_SAMPLING_RATE, 0); + setSampleRates(logSampleRate, statslogSampleRate); } public HiddenApiSettings(Handler handler, Context context) { @@ -2219,6 +2233,7 @@ public class ActivityManagerService extends IActivityManager.Stub Settings.Global.getUriFor(Settings.Global.HIDDEN_API_POLICY), false, this); + initializeSampleRates(); DeviceConfig.addOnPropertiesChangedListener(DeviceConfig.NAMESPACE_APP_COMPAT, mContext.getMainExecutor(), this); update(); |