Fix ViLTE is not available when WiFi Calling is disabled
Bug: 141831293 Test: 1. Set carrier config carrier_wfc_ims_available_bool to false, then verify Wi-Fi calling option is not shown. 2. Set carrier config carrier_vt_available_bool to false, then verify video calling option is not shown. 3. Set both carrier_wfc_ims_available_bool and carrier_vt_available_bool to false, then verify calling category is not shown. Change-Id: Ibec13fbeb5acf1d62342286687b2ba969beb4e14 Merged-In: Ibec13fbeb5acf1d62342286687b2ba969beb4e14
This commit is contained in:
@@ -124,7 +124,8 @@
|
|||||||
|
|
||||||
<PreferenceCategory
|
<PreferenceCategory
|
||||||
android:key="calling_category"
|
android:key="calling_category"
|
||||||
android:title="@string/call_category">
|
android:title="@string/call_category"
|
||||||
|
settings:controller="com.android.settings.network.telephony.CallingPreferenceCategoryController">
|
||||||
|
|
||||||
<PreferenceScreen
|
<PreferenceScreen
|
||||||
android:key="wifi_calling_key"
|
android:key="wifi_calling_key"
|
||||||
|
@@ -0,0 +1,31 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (C) 2019 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 com.android.settings.network.telephony;
|
||||||
|
|
||||||
|
import android.content.Context;
|
||||||
|
|
||||||
|
import com.android.settings.widget.PreferenceCategoryController;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Preference controller for "Calling" category
|
||||||
|
*/
|
||||||
|
public class CallingPreferenceCategoryController extends PreferenceCategoryController {
|
||||||
|
|
||||||
|
public CallingPreferenceCategoryController(Context context, String key) {
|
||||||
|
super(context, key);
|
||||||
|
}
|
||||||
|
}
|
@@ -155,7 +155,8 @@ public class MobileNetworkSettings extends RestrictedDashboardFragment {
|
|||||||
if (!FeatureFlagPersistent.isEnabled(getContext(), FeatureFlags.NETWORK_INTERNET_V2)) {
|
if (!FeatureFlagPersistent.isEnabled(getContext(), FeatureFlags.NETWORK_INTERNET_V2)) {
|
||||||
use(EuiccPreferenceController.class).init(mSubId);
|
use(EuiccPreferenceController.class).init(mSubId);
|
||||||
}
|
}
|
||||||
use(WifiCallingPreferenceController.class).init(mSubId);
|
final WifiCallingPreferenceController wifiCallingPreferenceController =
|
||||||
|
use(WifiCallingPreferenceController.class).init(mSubId);
|
||||||
|
|
||||||
final OpenNetworkSelectPagePreferenceController openNetworkSelectPagePreferenceController =
|
final OpenNetworkSelectPagePreferenceController openNetworkSelectPagePreferenceController =
|
||||||
use(OpenNetworkSelectPagePreferenceController.class).init(mSubId);
|
use(OpenNetworkSelectPagePreferenceController.class).init(mSubId);
|
||||||
@@ -173,6 +174,8 @@ public class MobileNetworkSettings extends RestrictedDashboardFragment {
|
|||||||
|
|
||||||
final VideoCallingPreferenceController videoCallingPreferenceController =
|
final VideoCallingPreferenceController videoCallingPreferenceController =
|
||||||
use(VideoCallingPreferenceController.class).init(mSubId);
|
use(VideoCallingPreferenceController.class).init(mSubId);
|
||||||
|
use(CallingPreferenceCategoryController.class).setChildren(
|
||||||
|
Arrays.asList(wifiCallingPreferenceController, videoCallingPreferenceController));
|
||||||
use(Enhanced4gLtePreferenceController.class).init(mSubId)
|
use(Enhanced4gLtePreferenceController.class).init(mSubId)
|
||||||
.addListener(videoCallingPreferenceController);
|
.addListener(videoCallingPreferenceController);
|
||||||
}
|
}
|
||||||
|
@@ -63,7 +63,6 @@ public class VideoCallingPreferenceController extends TelephonyTogglePreferenceC
|
|||||||
@Override
|
@Override
|
||||||
public int getAvailabilityStatus(int subId) {
|
public int getAvailabilityStatus(int subId) {
|
||||||
return subId != SubscriptionManager.INVALID_SUBSCRIPTION_ID
|
return subId != SubscriptionManager.INVALID_SUBSCRIPTION_ID
|
||||||
&& MobileNetworkUtils.isWifiCallingEnabled(mContext, subId)
|
|
||||||
&& isVideoCallEnabled(subId)
|
&& isVideoCallEnabled(subId)
|
||||||
? AVAILABLE
|
? AVAILABLE
|
||||||
: CONDITIONALLY_UNAVAILABLE;
|
: CONDITIONALLY_UNAVAILABLE;
|
||||||
|
@@ -49,9 +49,6 @@ import java.util.List;
|
|||||||
public class WifiCallingPreferenceController extends TelephonyBasePreferenceController implements
|
public class WifiCallingPreferenceController extends TelephonyBasePreferenceController implements
|
||||||
LifecycleObserver, OnStart, OnStop {
|
LifecycleObserver, OnStart, OnStop {
|
||||||
|
|
||||||
@VisibleForTesting
|
|
||||||
static final String KEY_PREFERENCE_CATEGORY = "calling_category";
|
|
||||||
|
|
||||||
private TelephonyManager mTelephonyManager;
|
private TelephonyManager mTelephonyManager;
|
||||||
@VisibleForTesting
|
@VisibleForTesting
|
||||||
CarrierConfigManager mCarrierConfigManager;
|
CarrierConfigManager mCarrierConfigManager;
|
||||||
@@ -95,13 +92,6 @@ public class WifiCallingPreferenceController extends TelephonyBasePreferenceCont
|
|||||||
if (intent != null) {
|
if (intent != null) {
|
||||||
intent.putExtra(Settings.EXTRA_SUB_ID, mSubId);
|
intent.putExtra(Settings.EXTRA_SUB_ID, mSubId);
|
||||||
}
|
}
|
||||||
if (!isAvailable()) {
|
|
||||||
// Set category as invisible
|
|
||||||
final Preference preferenceCateogry = screen.findPreference(KEY_PREFERENCE_CATEGORY);
|
|
||||||
if (preferenceCateogry != null) {
|
|
||||||
preferenceCateogry.setVisible(false);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -158,12 +148,14 @@ public class WifiCallingPreferenceController extends TelephonyBasePreferenceCont
|
|||||||
mTelephonyManager.getCallState(mSubId) == TelephonyManager.CALL_STATE_IDLE);
|
mTelephonyManager.getCallState(mSubId) == TelephonyManager.CALL_STATE_IDLE);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void init(int subId) {
|
public WifiCallingPreferenceController init(int subId) {
|
||||||
mSubId = subId;
|
mSubId = subId;
|
||||||
mTelephonyManager = TelephonyManager.from(mContext).createForSubscriptionId(mSubId);
|
mTelephonyManager = TelephonyManager.from(mContext).createForSubscriptionId(mSubId);
|
||||||
mImsManager = ImsManager.getInstance(mContext, SubscriptionManager.getPhoneId(mSubId));
|
mImsManager = ImsManager.getInstance(mContext, SubscriptionManager.getPhoneId(mSubId));
|
||||||
mSimCallManager = mContext.getSystemService(TelecomManager.class)
|
mSimCallManager = mContext.getSystemService(TelecomManager.class)
|
||||||
.getSimCallManagerForSubscription(mSubId);
|
.getSimCallManagerForSubscription(mSubId);
|
||||||
|
|
||||||
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
private class PhoneCallStateListener extends PhoneStateListener {
|
private class PhoneCallStateListener extends PhoneStateListener {
|
||||||
|
@@ -27,6 +27,7 @@ import android.telephony.CarrierConfigManager;
|
|||||||
import android.telephony.TelephonyManager;
|
import android.telephony.TelephonyManager;
|
||||||
import android.telephony.ims.feature.ImsFeature;
|
import android.telephony.ims.feature.ImsFeature;
|
||||||
|
|
||||||
|
import androidx.preference.PreferenceScreen;
|
||||||
import androidx.preference.SwitchPreference;
|
import androidx.preference.SwitchPreference;
|
||||||
|
|
||||||
import com.android.ims.ImsManager;
|
import com.android.ims.ImsManager;
|
||||||
@@ -49,6 +50,8 @@ public class VideoCallingPreferenceControllerTest {
|
|||||||
private ImsManager mImsManager;
|
private ImsManager mImsManager;
|
||||||
@Mock
|
@Mock
|
||||||
private CarrierConfigManager mCarrierConfigManager;
|
private CarrierConfigManager mCarrierConfigManager;
|
||||||
|
@Mock
|
||||||
|
private PreferenceScreen mPreferenceScreen;
|
||||||
|
|
||||||
private VideoCallingPreferenceController mController;
|
private VideoCallingPreferenceController mController;
|
||||||
private PersistableBundle mCarrierConfig;
|
private PersistableBundle mCarrierConfig;
|
||||||
@@ -125,4 +128,15 @@ public class VideoCallingPreferenceControllerTest {
|
|||||||
assertThat(mPreference.isEnabled()).isTrue();
|
assertThat(mPreference.isEnabled()).isTrue();
|
||||||
assertThat(mPreference.isChecked()).isTrue();
|
assertThat(mPreference.isChecked()).isTrue();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void displayPreference_notAvailable_setPreferenceInvisible() {
|
||||||
|
doReturn(false).when(mImsManager).isVtEnabledByPlatform();
|
||||||
|
|
||||||
|
mController.displayPreference(mPreferenceScreen);
|
||||||
|
|
||||||
|
assertThat(mPreferenceScreen.isVisible()).isFalse();
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@@ -64,7 +64,6 @@ public class WifiCallingPreferenceControllerTest {
|
|||||||
|
|
||||||
private WifiCallingPreferenceController mController;
|
private WifiCallingPreferenceController mController;
|
||||||
private Preference mPreference;
|
private Preference mPreference;
|
||||||
private PreferenceCategory mPreferenceCategory;
|
|
||||||
private Context mContext;
|
private Context mContext;
|
||||||
private PersistableBundle mCarrierConfig;
|
private PersistableBundle mCarrierConfig;
|
||||||
|
|
||||||
@@ -87,10 +86,6 @@ public class WifiCallingPreferenceControllerTest {
|
|||||||
mCarrierConfig = new PersistableBundle();
|
mCarrierConfig = new PersistableBundle();
|
||||||
when(mCarrierConfigManager.getConfigForSubId(SUB_ID)).thenReturn(mCarrierConfig);
|
when(mCarrierConfigManager.getConfigForSubId(SUB_ID)).thenReturn(mCarrierConfig);
|
||||||
|
|
||||||
mPreferenceCategory = new PreferenceCategory(mContext);
|
|
||||||
when(mPreferenceScreen.findPreference(
|
|
||||||
WifiCallingPreferenceController.KEY_PREFERENCE_CATEGORY)).thenReturn(
|
|
||||||
mPreferenceCategory);
|
|
||||||
when(mPreferenceScreen.findPreference(mController.getPreferenceKey())).thenReturn(
|
when(mPreferenceScreen.findPreference(mController.getPreferenceKey())).thenReturn(
|
||||||
mPreference);
|
mPreference);
|
||||||
}
|
}
|
||||||
@@ -164,12 +159,12 @@ public class WifiCallingPreferenceControllerTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void displayPreference_notAvailable_setCategoryInvisible() {
|
public void displayPreference_notAvailable_setPreferenceInvisible() {
|
||||||
mController.init(SubscriptionManager.INVALID_SUBSCRIPTION_ID);
|
mController.init(SubscriptionManager.INVALID_SUBSCRIPTION_ID);
|
||||||
|
|
||||||
mController.displayPreference(mPreferenceScreen);
|
mController.displayPreference(mPreferenceScreen);
|
||||||
|
|
||||||
assertThat(mPreferenceCategory.isVisible()).isFalse();
|
assertThat(mPreferenceScreen.isVisible()).isFalse();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
Reference in New Issue
Block a user