Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c101faeb authored by Josh Hou's avatar Josh Hou
Browse files

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
parent 8eda6847
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -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"
+31 −0
Original line number Diff line number Diff line
/*
 * 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);
    }
}
+4 −1
Original line number Diff line number Diff line
@@ -154,6 +154,7 @@ public class MobileNetworkSettings extends RestrictedDashboardFragment {
        if (!FeatureFlagPersistent.isEnabled(getContext(), FeatureFlags.NETWORK_INTERNET_V2)) {
            use(EuiccPreferenceController.class).init(mSubId);
        }
        final WifiCallingPreferenceController wifiCallingPreferenceController =
                use(WifiCallingPreferenceController.class).init(mSubId);

        final OpenNetworkSelectPagePreferenceController openNetworkSelectPagePreferenceController =
@@ -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)
+0 −1
Original line number Diff line number Diff line
@@ -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;
+3 −11
Original line number Diff line number Diff line
@@ -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 {
Loading