Don't rematch all requests when adding new ones

With the network selection rewrite in S, rematching a single request can
now easily be done; this can be used as an optimization in
handleRegisterNetworkRequests to avoid rematching all requests when
registering a new one.

This can be disabled by a flag that is unset by default,
REMATCH_ALL_REQUESTS_ON_REGISTER.

Test: atest ConnectivityServiceTest
Change-Id: If76f79b41ac88863974f7025624667134bea2570
This commit is contained in:
Remi NGUYEN VAN
2021-08-02 13:04:31 +09:00
parent 7269fb17fd
commit 959d2cb6bd
4 changed files with 102 additions and 3 deletions

View File

@@ -327,6 +327,7 @@ import com.android.net.module.util.LocationPermissionChecker;
import com.android.server.ConnectivityService.ConnectivityDiagnosticsCallbackInfo;
import com.android.server.ConnectivityService.NetworkRequestInfo;
import com.android.server.ConnectivityServiceTest.ConnectivityServiceDependencies.ReportedInterfaces;
import com.android.server.connectivity.ConnectivityFlags;
import com.android.server.connectivity.MockableSystemProperties;
import com.android.server.connectivity.Nat464Xlat;
import com.android.server.connectivity.NetworkAgentInfo;
@@ -1916,6 +1917,16 @@ public class ConnectivityServiceTest {
mReportedInterfaceHistory.add(new ReportedInterfaces(context, iface, transportTypes));
super.reportNetworkInterfaceForTransports(context, iface, transportTypes);
}
@Override
public boolean isFeatureEnabled(Context context, String name, boolean defaultEnabled) {
switch (name) {
case ConnectivityFlags.NO_REMATCH_ALL_REQUESTS_ON_REGISTER:
return true;
default:
return super.isFeatureEnabled(context, name, defaultEnabled);
}
}
}
private static void initAlarmManager(final AlarmManager am, final Handler alarmHandler) {