Enable delay destroy socket as default
delay_destroy_frozen_sockets_version is rolled out to public 100%. So this CL enables this flag as default with kill switch. This flag is no-op if destroy_frozen_sockets_version is disabled, and destroy_frozen_sockets_version is also rolled out to public 100%. So this CL does not change any behabior on the production devices. Upcoming CLs will update CS to destroy sockets of apps that are under FIREWALL_CHAIN_BACKGROUND restriction as well. So this CL renames flag name from delay_destroy_frozen_sockets_version to delay_destroy_sockets which is not specific to frozen apps. Bug: 300681644 Test: TH Change-Id: Icb9edff4e517fca57408d7d690fe9e172754c35e
This commit is contained in:
parent
5a11d7e31e
commit
390be06f64
4 changed files with 23 additions and 16 deletions
|
|
@ -120,6 +120,7 @@ import static com.android.net.module.util.PermissionUtils.enforceNetworkStackPer
|
|||
import static com.android.net.module.util.PermissionUtils.enforceNetworkStackPermissionOr;
|
||||
import static com.android.net.module.util.PermissionUtils.hasAnyPermissionOf;
|
||||
import static com.android.server.ConnectivityStatsLog.CONNECTIVITY_STATE_SAMPLE;
|
||||
import static com.android.server.connectivity.ConnectivityFlags.DELAY_DESTROY_SOCKETS;
|
||||
import static com.android.server.connectivity.ConnectivityFlags.REQUEST_RESTRICTED_WIFI;
|
||||
import static com.android.server.connectivity.ConnectivityFlags.INGRESS_TO_VPN_ADDRESS_FILTERING;
|
||||
|
||||
|
|
@ -998,8 +999,8 @@ public class ConnectivityService extends IConnectivityManager.Stub
|
|||
// Flag to enable the feature of closing frozen app sockets.
|
||||
private final boolean mDestroyFrozenSockets;
|
||||
|
||||
// Flag to optimize closing frozen app sockets by waiting for the cellular modem to wake up.
|
||||
private final boolean mDelayDestroyFrozenSockets;
|
||||
// Flag to optimize closing app sockets by waiting for the cellular modem to wake up.
|
||||
private final boolean mDelayDestroySockets;
|
||||
|
||||
// Flag to allow SysUI to receive connectivity reports for wifi picker UI.
|
||||
private final boolean mAllowSysUiConnectivityReports;
|
||||
|
|
@ -1954,8 +1955,7 @@ public class ConnectivityService extends IConnectivityManager.Stub
|
|||
|
||||
mDestroyFrozenSockets = mDeps.isAtLeastV() || (mDeps.isAtLeastU()
|
||||
&& mDeps.isFeatureEnabled(context, KEY_DESTROY_FROZEN_SOCKETS_VERSION));
|
||||
mDelayDestroyFrozenSockets = mDeps.isAtLeastU()
|
||||
&& mDeps.isFeatureEnabled(context, DELAY_DESTROY_FROZEN_SOCKETS_VERSION);
|
||||
mDelayDestroySockets = mDeps.isFeatureNotChickenedOut(context, DELAY_DESTROY_SOCKETS);
|
||||
mAllowSysUiConnectivityReports = mDeps.isFeatureNotChickenedOut(
|
||||
mContext, ALLOW_SYSUI_CONNECTIVITY_REPORTS);
|
||||
if (mDestroyFrozenSockets) {
|
||||
|
|
@ -3364,7 +3364,7 @@ public class ConnectivityService extends IConnectivityManager.Stub
|
|||
return;
|
||||
}
|
||||
|
||||
if (mDelayDestroyFrozenSockets && isCellNetworkIdle()) {
|
||||
if (mDelayDestroySockets && isCellNetworkIdle()) {
|
||||
// Delay closing sockets to avoid waking the cell modem up.
|
||||
// Wi-Fi network state is not considered since waking Wi-Fi modem up is much cheaper
|
||||
// than waking cell modem up.
|
||||
|
|
@ -3403,7 +3403,7 @@ public class ConnectivityService extends IConnectivityManager.Stub
|
|||
isCellNetworkActivity = params.label == TRANSPORT_CELLULAR;
|
||||
}
|
||||
|
||||
if (mDelayDestroyFrozenSockets
|
||||
if (mDelayDestroySockets
|
||||
&& params.isActive
|
||||
&& isCellNetworkActivity
|
||||
&& !mPendingFrozenUids.isEmpty()) {
|
||||
|
|
@ -3435,7 +3435,7 @@ public class ConnectivityService extends IConnectivityManager.Stub
|
|||
pw.println("CloseFrozenAppSockets:");
|
||||
pw.increaseIndent();
|
||||
pw.print("mDestroyFrozenSockets="); pw.println(mDestroyFrozenSockets);
|
||||
pw.print("mDelayDestroyFrozenSockets="); pw.println(mDelayDestroyFrozenSockets);
|
||||
pw.print("mDelayDestroySockets="); pw.println(mDelayDestroySockets);
|
||||
pw.print("mPendingFrozenUids="); pw.println(mPendingFrozenUids);
|
||||
pw.decreaseIndent();
|
||||
}
|
||||
|
|
@ -3462,9 +3462,6 @@ public class ConnectivityService extends IConnectivityManager.Stub
|
|||
|
||||
@VisibleForTesting
|
||||
static final String KEY_DESTROY_FROZEN_SOCKETS_VERSION = "destroy_frozen_sockets_version";
|
||||
@VisibleForTesting
|
||||
static final String DELAY_DESTROY_FROZEN_SOCKETS_VERSION =
|
||||
"delay_destroy_frozen_sockets_version";
|
||||
|
||||
@VisibleForTesting
|
||||
public static final String ALLOW_SYSUI_CONNECTIVITY_REPORTS =
|
||||
|
|
|
|||
|
|
@ -44,6 +44,8 @@ public final class ConnectivityFlags {
|
|||
|
||||
public static final String BACKGROUND_FIREWALL_CHAIN = "background_firewall_chain";
|
||||
|
||||
public static final String DELAY_DESTROY_SOCKETS = "delay_destroy_sockets";
|
||||
|
||||
private boolean mNoRematchAllRequestsOnRegister;
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -163,7 +163,6 @@ import static android.telephony.DataConnectionRealTimeInfo.DC_POWER_STATE_HIGH;
|
|||
import static android.telephony.DataConnectionRealTimeInfo.DC_POWER_STATE_LOW;
|
||||
|
||||
import static com.android.server.ConnectivityService.ALLOW_SATALLITE_NETWORK_FALLBACK;
|
||||
import static com.android.server.ConnectivityService.DELAY_DESTROY_FROZEN_SOCKETS_VERSION;
|
||||
import static com.android.net.module.util.DeviceConfigUtils.TETHERING_MODULE_NAME;
|
||||
import static com.android.server.ConnectivityService.ALLOW_SYSUI_CONNECTIVITY_REPORTS;
|
||||
import static com.android.server.ConnectivityService.KEY_DESTROY_FROZEN_SOCKETS_VERSION;
|
||||
|
|
@ -178,6 +177,7 @@ import static com.android.server.ConnectivityServiceTestUtils.transportToLegacyT
|
|||
import static com.android.server.NetworkAgentWrapper.CallbackType.OnQosCallbackRegister;
|
||||
import static com.android.server.NetworkAgentWrapper.CallbackType.OnQosCallbackUnregister;
|
||||
import static com.android.server.connectivity.ConnectivityFlags.BACKGROUND_FIREWALL_CHAIN;
|
||||
import static com.android.server.connectivity.ConnectivityFlags.DELAY_DESTROY_SOCKETS;
|
||||
import static com.android.server.connectivity.ConnectivityFlags.INGRESS_TO_VPN_ADDRESS_FILTERING;
|
||||
import static com.android.testutils.Cleanup.testAndCleanup;
|
||||
import static com.android.testutils.ConcurrentUtils.await;
|
||||
|
|
@ -2169,8 +2169,6 @@ public class ConnectivityServiceTest {
|
|||
return true;
|
||||
case KEY_DESTROY_FROZEN_SOCKETS_VERSION:
|
||||
return true;
|
||||
case DELAY_DESTROY_FROZEN_SOCKETS_VERSION:
|
||||
return true;
|
||||
default:
|
||||
return super.isFeatureEnabled(context, name);
|
||||
}
|
||||
|
|
@ -2187,6 +2185,8 @@ public class ConnectivityServiceTest {
|
|||
return true;
|
||||
case BACKGROUND_FIREWALL_CHAIN:
|
||||
return true;
|
||||
case DELAY_DESTROY_SOCKETS:
|
||||
return true;
|
||||
default:
|
||||
return super.isFeatureNotChickenedOut(context, name);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -157,11 +157,11 @@ open class CSTest {
|
|||
it[ConnectivityFlags.NO_REMATCH_ALL_REQUESTS_ON_REGISTER] = true
|
||||
it[ConnectivityFlags.REQUEST_RESTRICTED_WIFI] = true
|
||||
it[ConnectivityService.KEY_DESTROY_FROZEN_SOCKETS_VERSION] = true
|
||||
it[ConnectivityService.DELAY_DESTROY_FROZEN_SOCKETS_VERSION] = true
|
||||
it[ConnectivityService.ALLOW_SYSUI_CONNECTIVITY_REPORTS] = true
|
||||
it[ConnectivityService.ALLOW_SATALLITE_NETWORK_FALLBACK] = true
|
||||
it[ConnectivityFlags.INGRESS_TO_VPN_ADDRESS_FILTERING] = true
|
||||
it[ConnectivityFlags.BACKGROUND_FIREWALL_CHAIN] = true
|
||||
it[ConnectivityFlags.DELAY_DESTROY_SOCKETS] = true
|
||||
}
|
||||
fun setFeatureEnabled(flag: String, enabled: Boolean) = enabledFeatures.set(flag, enabled)
|
||||
|
||||
|
|
@ -171,7 +171,11 @@ open class CSTest {
|
|||
val contentResolver = makeMockContentResolver(context)
|
||||
|
||||
val PRIMARY_USER = 0
|
||||
val PRIMARY_USER_INFO = UserInfo(PRIMARY_USER, "" /* name */, UserInfo.FLAG_PRIMARY)
|
||||
val PRIMARY_USER_INFO = UserInfo(
|
||||
PRIMARY_USER,
|
||||
"", // name
|
||||
UserInfo.FLAG_PRIMARY
|
||||
)
|
||||
val PRIMARY_USER_HANDLE = UserHandle(PRIMARY_USER)
|
||||
val userManager = makeMockUserManager(PRIMARY_USER_INFO, PRIMARY_USER_HANDLE)
|
||||
val activityManager = makeActivityManager()
|
||||
|
|
@ -186,7 +190,11 @@ open class CSTest {
|
|||
val bpfNetMaps = mock<BpfNetMaps>()
|
||||
val clatCoordinator = mock<ClatCoordinator>()
|
||||
val networkRequestStateStatsMetrics = mock<NetworkRequestStateStatsMetrics>()
|
||||
val proxyTracker = ProxyTracker(context, mock<Handler>(), 16 /* EVENT_PROXY_HAS_CHANGED */)
|
||||
val proxyTracker = ProxyTracker(
|
||||
context,
|
||||
mock<Handler>(),
|
||||
16 // EVENT_PROXY_HAS_CHANGED
|
||||
)
|
||||
val systemConfigManager = makeMockSystemConfigManager()
|
||||
val batteryStats = mock<IBatteryStats>()
|
||||
val batteryManager = BatteryStatsManager(batteryStats)
|
||||
|
|
|
|||
Loading…
Reference in a new issue