summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--core/java/android/provider/Settings.java10
-rw-r--r--packages/SettingsProvider/src/com/android/providers/settings/SettingsProtoDumpUtil.java3
-rw-r--r--packages/SettingsProvider/test/src/android/provider/SettingsBackupTest.java1
-rw-r--r--services/core/java/com/android/server/am/ActivityManagerConstants.java23
-rw-r--r--services/core/java/com/android/server/am/ActivityManagerService.java19
-rw-r--r--services/core/java/com/android/server/am/ProcessList.java2
-rw-r--r--services/tests/servicestests/src/com/android/server/am/ActivityManagerServiceTest.java2
7 files changed, 27 insertions, 33 deletions
diff --git a/core/java/android/provider/Settings.java b/core/java/android/provider/Settings.java
index 111c6704a57d..03d40dbae098 100644
--- a/core/java/android/provider/Settings.java
+++ b/core/java/android/provider/Settings.java
@@ -15368,16 +15368,6 @@ public final class Settings {
public static final String DEVICE_DEMO_MODE = "device_demo_mode";
/**
- * Indicates the maximum time that an app is blocked for the network rules to get updated.
- *
- * Type: long
- *
- * @hide
- */
- @Readable
- public static final String NETWORK_ACCESS_TIMEOUT_MS = "network_access_timeout_ms";
-
- /**
* The reason for the settings database being downgraded. This is only for
* troubleshooting purposes and its value should not be interpreted in any way.
*
diff --git a/packages/SettingsProvider/src/com/android/providers/settings/SettingsProtoDumpUtil.java b/packages/SettingsProvider/src/com/android/providers/settings/SettingsProtoDumpUtil.java
index 3c29a803ffbb..ccfeae43e8b6 100644
--- a/packages/SettingsProvider/src/com/android/providers/settings/SettingsProtoDumpUtil.java
+++ b/packages/SettingsProvider/src/com/android/providers/settings/SettingsProtoDumpUtil.java
@@ -1058,9 +1058,6 @@ class SettingsProtoDumpUtil {
Settings.Global.NETWORK_SCORING_PROVISIONED,
GlobalSettingsProto.Network.SCORING_PROVISIONED);
dumpSetting(s, p,
- Settings.Global.NETWORK_ACCESS_TIMEOUT_MS,
- GlobalSettingsProto.Network.ACCESS_TIMEOUT_MS);
- dumpSetting(s, p,
Settings.Global.RECOMMENDED_NETWORK_EVALUATOR_CACHE_EXPIRY_MS,
GlobalSettingsProto.Network.RECOMMENDED_NETWORK_EVALUATOR_CACHE_EXPIRY_MS);
p.end(networkToken);
diff --git a/packages/SettingsProvider/test/src/android/provider/SettingsBackupTest.java b/packages/SettingsProvider/test/src/android/provider/SettingsBackupTest.java
index d122cf5acab3..f1b23d5733af 100644
--- a/packages/SettingsProvider/test/src/android/provider/SettingsBackupTest.java
+++ b/packages/SettingsProvider/test/src/android/provider/SettingsBackupTest.java
@@ -527,7 +527,6 @@ public class SettingsBackupTest {
Settings.Global.INSTALL_CARRIER_APP_NOTIFICATION_PERSISTENT,
Settings.Global.INSTALL_CARRIER_APP_NOTIFICATION_SLEEP_MILLIS,
Settings.Global.USER_SWITCHER_ENABLED,
- Settings.Global.NETWORK_ACCESS_TIMEOUT_MS,
Settings.Global.WARNING_TEMPERATURE,
Settings.Global.WEBVIEW_DATA_REDUCTION_PROXY_KEY,
Settings.Global.WEBVIEW_MULTIPROCESS,
diff --git a/services/core/java/com/android/server/am/ActivityManagerConstants.java b/services/core/java/com/android/server/am/ActivityManagerConstants.java
index af9e410db6eb..c3720965e7f6 100644
--- a/services/core/java/com/android/server/am/ActivityManagerConstants.java
+++ b/services/core/java/com/android/server/am/ActivityManagerConstants.java
@@ -140,6 +140,11 @@ final class ActivityManagerConstants extends ContentObserver {
*/
static final String KEY_COMPONENT_ALIAS_OVERRIDES = "component_alias_overrides";
+ /**
+ * Indicates the maximum time that an app is blocked for the network rules to get updated.
+ */
+ static final String KEY_NETWORK_ACCESS_TIMEOUT_MS = "network_access_timeout_ms";
+
private static final int DEFAULT_MAX_CACHED_PROCESSES = 32;
private static final long DEFAULT_FGSERVICE_MIN_SHOWN_TIME = 2*1000;
private static final long DEFAULT_FGSERVICE_MIN_REPORT_TIME = 3*1000;
@@ -185,6 +190,7 @@ final class ActivityManagerConstants extends ContentObserver {
private static final float DEFAULT_FGS_START_ALLOWED_LOG_SAMPLE_RATE = 0.25f; // 25%
private static final float DEFAULT_FGS_START_DENIED_LOG_SAMPLE_RATE = 1; // 100%
private static final long DEFAULT_PROCESS_KILL_TIMEOUT_MS = 10 * 1000;
+ private static final long DEFAULT_NETWORK_ACCESS_TIMEOUT_MS = 200; // 0.2 sec
static final long DEFAULT_BACKGROUND_SETTLE_TIME = 60 * 1000;
static final long DEFAULT_KILL_BG_RESTRICTED_CACHED_IDLE_SETTLE_TIME_MS = 60 * 1000;
@@ -781,6 +787,11 @@ final class ActivityManagerConstants extends ContentObserver {
private List<String> mDefaultImperceptibleKillExemptPackages;
private List<Integer> mDefaultImperceptibleKillExemptProcStates;
+ /**
+ * Indicates the maximum time spent waiting for the network rules to get updated.
+ */
+ volatile long mNetworkAccessTimeoutMs = DEFAULT_NETWORK_ACCESS_TIMEOUT_MS;
+
@SuppressWarnings("unused")
private static final int OOMADJ_UPDATE_POLICY_SLOW = 0;
private static final int OOMADJ_UPDATE_POLICY_QUICK = 1;
@@ -976,6 +987,9 @@ final class ActivityManagerConstants extends ContentObserver {
case KEY_MAX_EMPTY_TIME_MILLIS:
updateMaxEmptyTimeMillis();
break;
+ case KEY_NETWORK_ACCESS_TIMEOUT_MS:
+ updateNetworkAccessTimeoutMs();
+ break;
default:
break;
}
@@ -1446,6 +1460,13 @@ final class ActivityManagerConstants extends ContentObserver {
DEFAULT_MAX_EMPTY_TIME_MILLIS);
}
+ private void updateNetworkAccessTimeoutMs() {
+ mNetworkAccessTimeoutMs = DeviceConfig.getLong(
+ DeviceConfig.NAMESPACE_ACTIVITY_MANAGER,
+ KEY_NETWORK_ACCESS_TIMEOUT_MS,
+ DEFAULT_NETWORK_ACCESS_TIMEOUT_MS);
+ }
+
private void updateServiceStartForegroundTimeoutMs() {
mServiceStartForegroundTimeoutMs = DeviceConfig.getInt(
DeviceConfig.NAMESPACE_ACTIVITY_MANAGER,
@@ -1756,6 +1777,8 @@ final class ActivityManagerConstants extends ContentObserver {
pw.print("="); pw.println(mServiceStartForegroundAnrDelayMs);
pw.print(" "); pw.print(KEY_SERVICE_BIND_ALMOST_PERCEPTIBLE_TIMEOUT_MS);
pw.print("="); pw.println(mServiceBindAlmostPerceptibleTimeoutMs);
+ pw.print(" "); pw.print(KEY_NETWORK_ACCESS_TIMEOUT_MS);
+ pw.print("="); pw.println(mNetworkAccessTimeoutMs);
pw.println();
if (mOverrideMaxCachedProcesses >= 0) {
diff --git a/services/core/java/com/android/server/am/ActivityManagerService.java b/services/core/java/com/android/server/am/ActivityManagerService.java
index 9a72de0c62b3..8dd65b7e3d29 100644
--- a/services/core/java/com/android/server/am/ActivityManagerService.java
+++ b/services/core/java/com/android/server/am/ActivityManagerService.java
@@ -95,7 +95,6 @@ import static android.os.Process.setThreadPriority;
import static android.os.Process.setThreadScheduler;
import static android.provider.Settings.Global.ALWAYS_FINISH_ACTIVITIES;
import static android.provider.Settings.Global.DEBUG_APP;
-import static android.provider.Settings.Global.NETWORK_ACCESS_TIMEOUT_MS;
import static android.provider.Settings.Global.WAIT_FOR_DEBUGGER;
import static android.text.format.DateUtils.DAY_IN_MILLIS;
import static android.util.FeatureFlagUtils.SETTINGS_ENABLE_MONITOR_PHANTOM_PROCS;
@@ -535,11 +534,6 @@ public class ActivityManagerService extends IActivityManager.Stub
// If set, we will push process association information in to procstats.
static final boolean TRACK_PROCSTATS_ASSOCIATIONS = true;
- /**
- * Default value for {@link Settings.Global#NETWORK_ACCESS_TIMEOUT_MS}.
- */
- private static final long NETWORK_ACCESS_TIMEOUT_DEFAULT_MS = 200; // 0.2 sec
-
// The minimum memory growth threshold (in KB) for low RAM devices.
private static final int MINIMUM_MEMORY_GROWTH_THRESHOLD = 10 * 1000; // 10 MB
@@ -712,12 +706,6 @@ public class ActivityManagerService extends IActivityManager.Stub
final PackageWatchdog mPackageWatchdog;
/**
- * Indicates the maximum time spent waiting for the network rules to get updated.
- */
- @VisibleForTesting
- long mWaitForNetworkTimeoutMs;
-
- /**
* Uids of apps with current active camera sessions. Access synchronized on
* the IntArray instance itself, and no other locks must be acquired while that
* one is held.
@@ -7929,8 +7917,6 @@ public class ActivityManagerService extends IActivityManager.Stub
final boolean waitForDebugger = Settings.Global.getInt(resolver, WAIT_FOR_DEBUGGER, 0) != 0;
final boolean alwaysFinishActivities =
Settings.Global.getInt(resolver, ALWAYS_FINISH_ACTIVITIES, 0) != 0;
- final long waitForNetworkTimeoutMs = Settings.Global.getLong(resolver,
- NETWORK_ACCESS_TIMEOUT_MS, NETWORK_ACCESS_TIMEOUT_DEFAULT_MS);
mHiddenApiBlacklist.registerObserver();
mPlatformCompat.registerContentObserver();
@@ -7951,7 +7937,6 @@ public class ActivityManagerService extends IActivityManager.Stub
com.android.internal.R.bool.config_multiuserDelayUserDataLocking);
mUserController.setInitialConfig(userSwitchUiEnabled, maxRunningUsers,
delayUserDataLocking);
- mWaitForNetworkTimeoutMs = waitForNetworkTimeoutMs;
}
mAppErrors.loadAppsNotReportingCrashesFromConfig(res.getString(
com.android.internal.R.string.config_appsNotReportingCrashes));
@@ -17613,10 +17598,10 @@ public class ActivityManagerService extends IActivityManager.Stub
}
final long startTime = SystemClock.uptimeMillis();
record.procStateSeqWaitingForNetwork = procStateSeq;
- record.networkStateLock.wait(mWaitForNetworkTimeoutMs);
+ record.networkStateLock.wait(mConstants.mNetworkAccessTimeoutMs);
record.procStateSeqWaitingForNetwork = 0;
final long totalTime = SystemClock.uptimeMillis() - startTime;
- if (totalTime >= mWaitForNetworkTimeoutMs || DEBUG_NETWORK) {
+ if (totalTime >= mConstants.mNetworkAccessTimeoutMs || DEBUG_NETWORK) {
Slog.w(TAG_NETWORK, "Total time waited for network rules to get updated: "
+ totalTime + ". Uid: " + callingUid + " procStateSeq: "
+ procStateSeq + " UidRec: " + record
diff --git a/services/core/java/com/android/server/am/ProcessList.java b/services/core/java/com/android/server/am/ProcessList.java
index 72a0e1a3c6d4..fc73a5955001 100644
--- a/services/core/java/com/android/server/am/ProcessList.java
+++ b/services/core/java/com/android/server/am/ProcessList.java
@@ -4792,7 +4792,7 @@ public final class ProcessList {
final UidRecord uidRec = activeUids.valueAt(i);
uidRec.curProcStateSeq = getNextProcStateSeq();
}
- if (mService.mWaitForNetworkTimeoutMs <= 0) {
+ if (mService.mConstants.mNetworkAccessTimeoutMs <= 0) {
return;
}
// Used for identifying which uids need to block for network.
diff --git a/services/tests/servicestests/src/com/android/server/am/ActivityManagerServiceTest.java b/services/tests/servicestests/src/com/android/server/am/ActivityManagerServiceTest.java
index c76964eb907a..3c1710250803 100644
--- a/services/tests/servicestests/src/com/android/server/am/ActivityManagerServiceTest.java
+++ b/services/tests/servicestests/src/com/android/server/am/ActivityManagerServiceTest.java
@@ -164,7 +164,7 @@ public class ActivityManagerServiceTest {
mHandler = new TestHandler(mHandlerThread.getLooper());
mInjector = new TestInjector(mContext);
mAms = new ActivityManagerService(mInjector, mServiceThreadRule.getThread());
- mAms.mWaitForNetworkTimeoutMs = 2000;
+ mAms.mConstants.mNetworkAccessTimeoutMs = 2000;
mAms.mActivityTaskManager = new ActivityTaskManagerService(mContext);
mAms.mActivityTaskManager.initialize(null, null, mHandler.getLooper());
mHandler.setRunnablesToIgnore(