Add work profile feature flag
Fix: 296290011
Test: basic voice call + data browsing
Change-Id: I8404d5c68324dc6764eb2e238227883276fc7898
diff --git a/Android.bp b/Android.bp
index 66cca32..b56ee2a 100644
--- a/Android.bp
+++ b/Android.bp
@@ -108,6 +108,7 @@
"telephony-protos",
"modules-utils-build_system",
"modules-utils-statemachine",
+ "telephony_flags-lib",
],
optimize: {
diff --git a/flags/Android.bp b/flags/Android.bp
new file mode 100644
index 0000000..184f716
--- /dev/null
+++ b/flags/Android.bp
@@ -0,0 +1,37 @@
+//
+// Copyright (C) 2023 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+package {
+ default_applicable_licenses: ["Android-Apache-2.0"],
+}
+
+aconfig_declarations {
+ name: "telephony_flags",
+ package: "com.android.internal.telephony.flags",
+ srcs: [
+ "data.aconfig",
+ "ims.aconfig",
+ "messaging.aconfig",
+ "misc.aconfig",
+ "subscription.aconfig",
+ "uicc.aconfig",
+ ],
+}
+
+java_aconfig_library {
+ name: "telephony_flags-lib",
+ aconfig_declarations: "telephony_flags"
+}
diff --git a/flags/data.aconfig b/flags/data.aconfig
new file mode 100644
index 0000000..9a5b506
--- /dev/null
+++ b/flags/data.aconfig
@@ -0,0 +1 @@
+package: "com.android.internal.telephony.flags"
diff --git a/flags/ims.aconfig b/flags/ims.aconfig
new file mode 100644
index 0000000..84e491e
--- /dev/null
+++ b/flags/ims.aconfig
@@ -0,0 +1 @@
+package: "com.android.internal.telephony.flags"
\ No newline at end of file
diff --git a/flags/messaging.aconfig b/flags/messaging.aconfig
new file mode 100644
index 0000000..84e491e
--- /dev/null
+++ b/flags/messaging.aconfig
@@ -0,0 +1 @@
+package: "com.android.internal.telephony.flags"
\ No newline at end of file
diff --git a/flags/misc.aconfig b/flags/misc.aconfig
new file mode 100644
index 0000000..84e491e
--- /dev/null
+++ b/flags/misc.aconfig
@@ -0,0 +1 @@
+package: "com.android.internal.telephony.flags"
\ No newline at end of file
diff --git a/flags/subscription.aconfig b/flags/subscription.aconfig
new file mode 100644
index 0000000..0521cb9
--- /dev/null
+++ b/flags/subscription.aconfig
@@ -0,0 +1,8 @@
+package: "com.android.internal.telephony.flags"
+
+flag {
+ name: "work_profile_api_split"
+ namespace: "telephony"
+ description: "To support separation between personal and work from TelephonyManager and SubscriptionManager API perspective."
+ bug: "296076674"
+}
\ No newline at end of file
diff --git a/flags/uicc.aconfig b/flags/uicc.aconfig
new file mode 100644
index 0000000..84e491e
--- /dev/null
+++ b/flags/uicc.aconfig
@@ -0,0 +1 @@
+package: "com.android.internal.telephony.flags"
\ No newline at end of file
diff --git a/src/java/com/android/internal/telephony/PhoneFactory.java b/src/java/com/android/internal/telephony/PhoneFactory.java
index 57a375b..1b05ffd 100644
--- a/src/java/com/android/internal/telephony/PhoneFactory.java
+++ b/src/java/com/android/internal/telephony/PhoneFactory.java
@@ -23,6 +23,7 @@
import static java.util.Arrays.copyOf;
+import android.annotation.NonNull;
import android.annotation.Nullable;
import android.compat.annotation.UnsupportedAppUsage;
import android.content.ComponentName;
@@ -47,6 +48,7 @@
import com.android.internal.telephony.data.TelephonyNetworkFactory;
import com.android.internal.telephony.euicc.EuiccCardController;
import com.android.internal.telephony.euicc.EuiccController;
+import com.android.internal.telephony.flags.FeatureFlags;
import com.android.internal.telephony.imsphone.ImsPhone;
import com.android.internal.telephony.imsphone.ImsPhoneFactory;
import com.android.internal.telephony.metrics.MetricsCollector;
@@ -105,8 +107,12 @@
//***** Class Methods
- public static void makeDefaultPhones(Context context) {
- makeDefaultPhone(context);
+ /**
+ * @param context The context.
+ * @param featureFlags The feature flag.
+ */
+ public static void makeDefaultPhones(Context context, @NonNull FeatureFlags featureFlags) {
+ makeDefaultPhone(context, featureFlags);
}
/**
@@ -114,7 +120,7 @@
* instances
*/
@UnsupportedAppUsage
- public static void makeDefaultPhone(Context context) {
+ public static void makeDefaultPhone(Context context, @NonNull FeatureFlags featureFlags) {
synchronized (sLockProxyPhones) {
if (!sMadeDefaults) {
sContext = context;
@@ -198,7 +204,7 @@
Rlog.i(LOG_TAG, "Creating SubscriptionManagerService");
sSubscriptionManagerService = new SubscriptionManagerService(context,
- Looper.myLooper());
+ Looper.myLooper(), featureFlags);
TelephonyComponentFactory.getInstance().inject(MultiSimSettingController.class.
getName()).initMultiSimSettingController(context);
diff --git a/src/java/com/android/internal/telephony/subscription/SubscriptionManagerService.java b/src/java/com/android/internal/telephony/subscription/SubscriptionManagerService.java
index 8c8620e..8a35649 100644
--- a/src/java/com/android/internal/telephony/subscription/SubscriptionManagerService.java
+++ b/src/java/com/android/internal/telephony/subscription/SubscriptionManagerService.java
@@ -95,6 +95,7 @@
import com.android.internal.telephony.TelephonyPermissions;
import com.android.internal.telephony.data.PhoneSwitcher;
import com.android.internal.telephony.euicc.EuiccController;
+import com.android.internal.telephony.flags.FeatureFlags;
import com.android.internal.telephony.subscription.SubscriptionDatabaseManager.SubscriptionDatabaseManagerCallback;
import com.android.internal.telephony.uicc.IccRecords;
import com.android.internal.telephony.uicc.IccUtils;
@@ -194,6 +195,10 @@
@NonNull
private final Context mContext;
+ /** Feature flags */
+ @NonNull
+ private final FeatureFlags mFeatureFlags;
+
/** App Ops manager instance. */
@NonNull
private final AppOpsManager mAppOpsManager;
@@ -406,10 +411,12 @@
* @param context The context
* @param looper The looper for the handler.
*/
- public SubscriptionManagerService(@NonNull Context context, @NonNull Looper looper) {
+ public SubscriptionManagerService(@NonNull Context context, @NonNull Looper looper,
+ @NonNull FeatureFlags featureFlags) {
logl("Created SubscriptionManagerService");
sInstance = this;
mContext = context;
+ mFeatureFlags = featureFlags;
mTelephonyManager = context.getSystemService(TelephonyManager.class);
mSubscriptionManager = context.getSystemService(SubscriptionManager.class);
mEuiccManager = context.getSystemService(EuiccManager.class);
diff --git a/tests/telephonytests/src/com/android/internal/telephony/subscription/SubscriptionManagerServiceTest.java b/tests/telephonytests/src/com/android/internal/telephony/subscription/SubscriptionManagerServiceTest.java
index aea7965..ab531a6 100644
--- a/tests/telephonytests/src/com/android/internal/telephony/subscription/SubscriptionManagerServiceTest.java
+++ b/tests/telephonytests/src/com/android/internal/telephony/subscription/SubscriptionManagerServiceTest.java
@@ -104,6 +104,7 @@
import com.android.internal.telephony.TelephonyIntents;
import com.android.internal.telephony.TelephonyTest;
import com.android.internal.telephony.euicc.EuiccController;
+import com.android.internal.telephony.flags.FeatureFlags;
import com.android.internal.telephony.subscription.SubscriptionDatabaseManagerTest.SubscriptionProvider;
import com.android.internal.telephony.subscription.SubscriptionManagerService.SubscriptionManagerServiceCallback;
import com.android.internal.telephony.subscription.SubscriptionManagerService.SubscriptionMap;
@@ -153,7 +154,7 @@
// mocked
private SubscriptionManagerServiceCallback mMockedSubscriptionManagerServiceCallback;
private EuiccController mEuiccController;
-
+ private FeatureFlags mFlags;
private Set<Integer> mActiveSubs = new ArraySet<>();
@Rule
@@ -199,7 +200,9 @@
((MockContentResolver) mContext.getContentResolver()).addProvider(
Telephony.Carriers.CONTENT_URI.getAuthority(), mSubscriptionProvider);
- mSubscriptionManagerServiceUT = new SubscriptionManagerService(mContext, Looper.myLooper());
+ mFlags = Mockito.mock(FeatureFlags.class);
+ mSubscriptionManagerServiceUT = new SubscriptionManagerService(mContext, Looper.myLooper(),
+ mFlags);
monitorTestableLooper(new TestableLooper(getBackgroundHandler().getLooper()));
monitorTestableLooper(new TestableLooper(getSubscriptionDatabaseManager().getLooper()));