Merge "Final adjustments to privacy metrics:" into rvc-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
2775990021
@@ -212,7 +212,7 @@ public class StatsPullAtomService extends SystemService {
|
|||||||
private static final int DIMENSION_KEY_SIZE_HARD_LIMIT = 800;
|
private static final int DIMENSION_KEY_SIZE_HARD_LIMIT = 800;
|
||||||
private static final int DIMENSION_KEY_SIZE_SOFT_LIMIT = 500;
|
private static final int DIMENSION_KEY_SIZE_SOFT_LIMIT = 500;
|
||||||
private static final long APP_OPS_SAMPLING_INITIALIZATION_DELAY_MILLIS = 45000;
|
private static final long APP_OPS_SAMPLING_INITIALIZATION_DELAY_MILLIS = 45000;
|
||||||
private static final int APP_OPS_SIZE_ESTIMATE = 5000;
|
private static final int APP_OPS_SIZE_ESTIMATE = 2000;
|
||||||
|
|
||||||
private static final String RESULT_RECEIVER_CONTROLLER_KEY = "controller_activity";
|
private static final String RESULT_RECEIVER_CONTROLLER_KEY = "controller_activity";
|
||||||
/**
|
/**
|
||||||
@@ -320,8 +320,7 @@ public class StatsPullAtomService extends SystemService {
|
|||||||
|
|
||||||
private StatsPullAtomCallbackImpl mStatsCallbackImpl;
|
private StatsPullAtomCallbackImpl mStatsCallbackImpl;
|
||||||
|
|
||||||
private final Object mAppOpsSamplingRateLock = new Object();
|
@GuardedBy("mAttributedAppOpsLock")
|
||||||
@GuardedBy("mAppOpsSamplingRateLock")
|
|
||||||
private int mAppOpsSamplingRate = 0;
|
private int mAppOpsSamplingRate = 0;
|
||||||
private final Object mDangerousAppOpsListLock = new Object();
|
private final Object mDangerousAppOpsListLock = new Object();
|
||||||
@GuardedBy("mDangerousAppOpsListLock")
|
@GuardedBy("mDangerousAppOpsListLock")
|
||||||
@@ -3084,7 +3083,7 @@ public class StatsPullAtomService extends SystemService {
|
|||||||
int pullDangerousPermissionStateLocked(int atomTag, List<StatsEvent> pulledData) {
|
int pullDangerousPermissionStateLocked(int atomTag, List<StatsEvent> pulledData) {
|
||||||
final long token = Binder.clearCallingIdentity();
|
final long token = Binder.clearCallingIdentity();
|
||||||
float samplingRate = DeviceConfig.getFloat(DeviceConfig.NAMESPACE_PERMISSIONS,
|
float samplingRate = DeviceConfig.getFloat(DeviceConfig.NAMESPACE_PERMISSIONS,
|
||||||
DANGEROUS_PERMISSION_STATE_SAMPLE_RATE, 0.02f);
|
DANGEROUS_PERMISSION_STATE_SAMPLE_RATE, 0.015f);
|
||||||
Set<Integer> reportedUids = new HashSet<>();
|
Set<Integer> reportedUids = new HashSet<>();
|
||||||
try {
|
try {
|
||||||
PackageManager pm = mContext.getPackageManager();
|
PackageManager pm = mContext.getPackageManager();
|
||||||
@@ -3479,23 +3478,21 @@ public class StatsPullAtomService extends SystemService {
|
|||||||
HistoricalOps histOps = ops.get(EXTERNAL_STATS_SYNC_TIMEOUT_MILLIS,
|
HistoricalOps histOps = ops.get(EXTERNAL_STATS_SYNC_TIMEOUT_MILLIS,
|
||||||
TimeUnit.MILLISECONDS);
|
TimeUnit.MILLISECONDS);
|
||||||
|
|
||||||
synchronized (mAppOpsSamplingRateLock) {
|
if (mAppOpsSamplingRate == 0) {
|
||||||
if (mAppOpsSamplingRate == 0) {
|
mContext.getMainThreadHandler().postDelayed(new Runnable() {
|
||||||
mContext.getMainThreadHandler().postDelayed(new Runnable() {
|
@Override
|
||||||
@Override
|
public void run() {
|
||||||
public void run() {
|
try {
|
||||||
try {
|
estimateAppOpsSamplingRate();
|
||||||
estimateAppOpsSamplingRate();
|
} catch (Throwable e) {
|
||||||
} catch (Throwable e) {
|
Slog.e(TAG, "AppOps sampling ratio estimation failed: ", e);
|
||||||
Slog.e(TAG, "AppOps sampling ratio estimation failed: ", e);
|
synchronized (mAttributedAppOpsLock) {
|
||||||
synchronized (mAppOpsSamplingRateLock) {
|
mAppOpsSamplingRate = min(mAppOpsSamplingRate, 10);
|
||||||
mAppOpsSamplingRate = min(mAppOpsSamplingRate, 10);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}, APP_OPS_SAMPLING_INITIALIZATION_DELAY_MILLIS);
|
}
|
||||||
mAppOpsSamplingRate = 100;
|
}, APP_OPS_SAMPLING_INITIALIZATION_DELAY_MILLIS);
|
||||||
}
|
mAppOpsSamplingRate = 100;
|
||||||
}
|
}
|
||||||
|
|
||||||
List<AppOpEntry> opsList =
|
List<AppOpEntry> opsList =
|
||||||
@@ -3503,9 +3500,7 @@ public class StatsPullAtomService extends SystemService {
|
|||||||
|
|
||||||
int newSamplingRate = sampleAppOps(pulledData, opsList, atomTag, mAppOpsSamplingRate);
|
int newSamplingRate = sampleAppOps(pulledData, opsList, atomTag, mAppOpsSamplingRate);
|
||||||
|
|
||||||
synchronized (mAppOpsSamplingRateLock) {
|
mAppOpsSamplingRate = min(mAppOpsSamplingRate, newSamplingRate);
|
||||||
mAppOpsSamplingRate = min(mAppOpsSamplingRate, newSamplingRate);
|
|
||||||
}
|
|
||||||
} catch (Throwable t) {
|
} catch (Throwable t) {
|
||||||
// TODO: catch exceptions at a more granular level
|
// TODO: catch exceptions at a more granular level
|
||||||
Slog.e(TAG, "Could not read appops", t);
|
Slog.e(TAG, "Could not read appops", t);
|
||||||
@@ -3544,7 +3539,7 @@ public class StatsPullAtomService extends SystemService {
|
|||||||
}
|
}
|
||||||
int estimatedSamplingRate = (int) constrain(
|
int estimatedSamplingRate = (int) constrain(
|
||||||
appOpsTargetCollectionSize * 100 / estimatedSize, 0, 100);
|
appOpsTargetCollectionSize * 100 / estimatedSize, 0, 100);
|
||||||
synchronized (mAppOpsSamplingRateLock) {
|
synchronized (mAttributedAppOpsLock) {
|
||||||
mAppOpsSamplingRate = min(mAppOpsSamplingRate, estimatedSamplingRate);
|
mAppOpsSamplingRate = min(mAppOpsSamplingRate, estimatedSamplingRate);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user