Merge "Prevent VCN service from being registered twice" into main

This commit is contained in:
Yan Yan 2025-03-03 13:09:19 -08:00 • committed by Gerrit Code Review
commit 8c9ae9dbdc
2 changed files with 23 additions and 2 deletions

View file

@ -29,7 +29,10 @@ filegroup {
"vcn-location-flag/platform/com/android/server/vcn/VcnLocation.java",
],
}),
visibility: ["//frameworks/base/services/core"],
visibility: [
"//frameworks/base/services/core",
"//packages/modules/Connectivity/service-t",
],
}
// TODO: b/374174952 This library is only used in "service-connectivity-b-platform"

View file

@ -38,9 +38,27 @@ public final class ConnectivityServiceInitializerB extends SystemService {
private static final String TAG = ConnectivityServiceInitializerB.class.getSimpleName();
private final VcnManagementService mVcnManagementService;
// STOPSHIP: b/385203616 This static flag is for handling a temporary case when the mainline
// module prebuilt has updated to register the VCN but the platform change to remove
// registration is not merged. After mainline prebuilt is updated, we should merge the platform
// ASAP and remove this static check. This check is safe because both mainline and platform
// registration are triggered from the same method on the same thread.
private static boolean sIsRegistered = false;
public ConnectivityServiceInitializerB(Context context) {
super(context);
mVcnManagementService = VcnManagementService.create(context);
if (!sIsRegistered) {
mVcnManagementService = VcnManagementService.create(context);
sIsRegistered = true;
} else {
mVcnManagementService = null;
Log.e(
TAG,
"Ignore this registration since VCN is already registered. It will happen when"
+ " the mainline module prebuilt has updated to register the VCN but the"
+ " platform change to remove registration is not merged.");
}
}
@Override