Merge "Fix ViLTE is not available when WiFi Calling is disabled"
This commit is contained in:
@@ -145,7 +145,8 @@
|
||||
|
||||
<PreferenceCategory
|
||||
android:key="calling_category"
|
||||
android:title="@string/call_category">
|
||||
android:title="@string/call_category"
|
||||
settings:controller="com.android.settings.network.telephony.CallingPreferenceCategoryController">
|
||||
|
||||
<PreferenceScreen
|
||||
android:key="wifi_calling"
|
||||
|
@@ -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);
|
||||
}
|
||||
}
|
@@ -154,7 +154,8 @@ public class MobileNetworkSettings extends RestrictedDashboardFragment {
|
||||
if (!FeatureFlagPersistent.isEnabled(getContext(), FeatureFlags.NETWORK_INTERNET_V2)) {
|
||||
use(EuiccPreferenceController.class).init(mSubId);
|
||||
}
|
||||
use(WifiCallingPreferenceController.class).init(mSubId);
|
||||
final WifiCallingPreferenceController wifiCallingPreferenceController =
|
||||
use(WifiCallingPreferenceController.class).init(mSubId);
|
||||
|
||||
final OpenNetworkSelectPagePreferenceController openNetworkSelectPagePreferenceController =
|
||||
use(OpenNetworkSelectPagePreferenceController.class).init(mSubId);
|
||||
@@ -172,6 +173,8 @@ public class MobileNetworkSettings extends RestrictedDashboardFragment {
|
||||
|
||||
final VideoCallingPreferenceController videoCallingPreferenceController =
|
||||
use(VideoCallingPreferenceController.class).init(mSubId);
|
||||
use(CallingPreferenceCategoryController.class).setChildren(
|
||||
Arrays.asList(wifiCallingPreferenceController, videoCallingPreferenceController));
|
||||
use(Enhanced4gLtePreferenceController.class).init(mSubId)
|
||||
.addListener(videoCallingPreferenceController);
|
||||
use(Enhanced4gCallingPreferenceController.class).init(mSubId)
|
||||
|
@@ -63,7 +63,6 @@ public class VideoCallingPreferenceController extends TelephonyTogglePreferenceC
|
||||
@Override
|
||||
public int getAvailabilityStatus(int subId) {
|
||||
return subId != SubscriptionManager.INVALID_SUBSCRIPTION_ID
|
||||
&& MobileNetworkUtils.isWifiCallingEnabled(mContext, subId)
|
||||
&& isVideoCallEnabled(subId)
|
||||
? AVAILABLE
|
||||
: CONDITIONALLY_UNAVAILABLE;
|
||||
|
@@ -49,9 +49,6 @@ import java.util.List;
|
||||
public class WifiCallingPreferenceController extends TelephonyBasePreferenceController implements
|
||||
LifecycleObserver, OnStart, OnStop {
|
||||
|
||||
@VisibleForTesting
|
||||
static final String KEY_PREFERENCE_CATEGORY = "calling_category";
|
||||
|
||||
private TelephonyManager mTelephonyManager;
|
||||
@VisibleForTesting
|
||||
CarrierConfigManager mCarrierConfigManager;
|
||||
@@ -95,13 +92,6 @@ public class WifiCallingPreferenceController extends TelephonyBasePreferenceCont
|
||||
if (intent != null) {
|
||||
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
|
||||
@@ -158,12 +148,14 @@ public class WifiCallingPreferenceController extends TelephonyBasePreferenceCont
|
||||
mTelephonyManager.getCallState(mSubId) == TelephonyManager.CALL_STATE_IDLE);
|
||||
}
|
||||
|
||||
public void init(int subId) {
|
||||
public WifiCallingPreferenceController init(int subId) {
|
||||
mSubId = subId;
|
||||
mTelephonyManager = TelephonyManager.from(mContext).createForSubscriptionId(mSubId);
|
||||
mImsManager = ImsManager.getInstance(mContext, SubscriptionManager.getPhoneId(mSubId));
|
||||
mSimCallManager = mContext.getSystemService(TelecomManager.class)
|
||||
.getSimCallManagerForSubscription(mSubId);
|
||||
|
||||
return this;
|
||||
}
|
||||
|
||||
private class PhoneCallStateListener extends PhoneStateListener {
|
||||
|
@@ -27,6 +27,7 @@ import android.telephony.CarrierConfigManager;
|
||||
import android.telephony.TelephonyManager;
|
||||
import android.telephony.ims.feature.ImsFeature;
|
||||
|
||||
import androidx.preference.PreferenceScreen;
|
||||
import androidx.preference.SwitchPreference;
|
||||
|
||||
import com.android.ims.ImsManager;
|
||||
@@ -49,6 +50,8 @@ public class VideoCallingPreferenceControllerTest {
|
||||
private ImsManager mImsManager;
|
||||
@Mock
|
||||
private CarrierConfigManager mCarrierConfigManager;
|
||||
@Mock
|
||||
private PreferenceScreen mPreferenceScreen;
|
||||
|
||||
private VideoCallingPreferenceController mController;
|
||||
private PersistableBundle mCarrierConfig;
|
||||
@@ -125,4 +128,15 @@ public class VideoCallingPreferenceControllerTest {
|
||||
assertThat(mPreference.isEnabled()).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 Preference mPreference;
|
||||
private PreferenceCategory mPreferenceCategory;
|
||||
private Context mContext;
|
||||
private PersistableBundle mCarrierConfig;
|
||||
|
||||
@@ -87,10 +86,6 @@ public class WifiCallingPreferenceControllerTest {
|
||||
mCarrierConfig = new PersistableBundle();
|
||||
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(
|
||||
mPreference);
|
||||
}
|
||||
@@ -164,12 +159,12 @@ public class WifiCallingPreferenceControllerTest {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void displayPreference_notAvailable_setCategoryInvisible() {
|
||||
public void displayPreference_notAvailable_setPreferenceInvisible() {
|
||||
mController.init(SubscriptionManager.INVALID_SUBSCRIPTION_ID);
|
||||
|
||||
mController.displayPreference(mPreferenceScreen);
|
||||
|
||||
assertThat(mPreferenceCategory.isVisible()).isFalse();
|
||||
assertThat(mPreferenceScreen.isVisible()).isFalse();
|
||||
}
|
||||
|
||||
@Test
|
||||
|
Reference in New Issue
Block a user