summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--core/java/android/os/ZygoteProcess.java2
-rw-r--r--core/java/com/android/internal/os/ZygoteConnection.java9
-rw-r--r--services/core/java/com/android/server/am/ActivityManagerService.java37
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();