Loading res/layout/wifi_calling_settings_preferences.xml +0 −6 Original line number Diff line number Diff line Loading @@ -21,12 +21,6 @@ android:layout_height="match_parent" android:orientation="vertical"> <com.android.settings.widget.SettingsMainSwitchBar android:id="@+id/switch_bar" android:title="@string/wifi_calling_main_switch_title" android:layout_height="wrap_content" android:layout_width="match_parent" /> <FrameLayout android:id="@android:id/tabcontent" android:layout_width="match_parent" Loading res/xml/wifi_calling_settings.xml +4 −0 Original line number Diff line number Diff line Loading @@ -19,6 +19,10 @@ android:key="wifi_calling_settings" android:title="@string/wifi_calling_settings_title"> <com.android.settings.widget.SettingsMainSwitchPreference android:key="wifi_calling_switch_bar" android:title="@string/wifi_calling_main_switch_title" /> <com.android.settings.wifi.calling.ListWithEntrySummaryPreference android:key="wifi_calling_mode" isPreferenceVisible="false" Loading src/com/android/settings/wifi/calling/WifiCallingSettings.java +4 −14 Original line number Diff line number Diff line Loading @@ -30,13 +30,12 @@ import android.view.ViewGroup; import androidx.annotation.VisibleForTesting; import androidx.fragment.app.Fragment; import androidx.fragment.app.FragmentActivity; import androidx.fragment.app.FragmentManager; import androidx.fragment.app.FragmentPagerAdapter; import com.android.internal.util.CollectionUtils; import com.android.settings.R; import com.android.settings.core.InstrumentedFragment; import com.android.settings.SettingsPreferenceFragment; import com.android.settings.network.ActiveSubscriptionsListener; import com.android.settings.network.SubscriptionUtil; import com.android.settings.network.ims.WifiCallingQueryImsState; Loading @@ -54,7 +53,8 @@ import java.util.List; * "Wi-Fi Calling settings" screen. This is the container fragment which holds * {@link WifiCallingSettingsForSub} fragments. */ public class WifiCallingSettings extends InstrumentedFragment implements HelpResourceProvider { public class WifiCallingSettings extends SettingsPreferenceFragment implements HelpResourceProvider { private static final String TAG = "WifiCallingSettings"; private int mConstructionSubId; private List<SubscriptionInfo> mSil; Loading Loading @@ -317,17 +317,7 @@ public class WifiCallingSettings extends InstrumentedFragment implements HelpRes } // close this fragment finish(); } protected void finish() { FragmentActivity activity = getActivity(); if (activity == null) return; if (getFragmentManager().getBackStackEntryCount() > 0) { getFragmentManager().popBackStack(); } else { activity.finish(); } finishFragment(); } protected int [] subscriptionIdList(List<SubscriptionInfo> subInfoList) { Loading src/com/android/settings/wifi/calling/WifiCallingSettingsForSub.java +44 −42 Original line number Diff line number Diff line Loading @@ -27,7 +27,6 @@ import android.content.res.Resources; import android.os.Bundle; import android.os.PersistableBundle; import android.telephony.CarrierConfigManager; import android.telephony.PhoneStateListener; import android.telephony.SubscriptionManager; import android.telephony.TelephonyCallback; import android.telephony.TelephonyManager; Loading @@ -40,7 +39,6 @@ import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.Switch; import android.widget.TextView; import androidx.appcompat.app.AlertDialog; import androidx.preference.Preference; Loading @@ -56,8 +54,7 @@ import com.android.settings.SettingsPreferenceFragment; import com.android.settings.Utils; import com.android.settings.core.SubSettingLauncher; import com.android.settings.network.ims.WifiCallingQueryImsState; import com.android.settings.widget.SettingsMainSwitchBar; import com.android.settings.wifi.calling.LinkifyDescriptionPreference; import com.android.settings.widget.SettingsMainSwitchPreference; import com.android.settingslib.widget.OnMainSwitchChangeListener; import java.util.List; Loading @@ -72,6 +69,7 @@ public class WifiCallingSettingsForSub extends SettingsPreferenceFragment private static final String TAG = "WifiCallingForSub"; //String keys for preference lookup private static final String SWITCH_BAR = "wifi_calling_switch_bar"; private static final String BUTTON_WFC_MODE = "wifi_calling_mode"; private static final String BUTTON_WFC_ROAMING_MODE = "wifi_calling_roaming_mode"; private static final String PREFERENCE_EMERGENCY_ADDRESS = "emergency_address_key"; Loading @@ -91,7 +89,7 @@ public class WifiCallingSettingsForSub extends SettingsPreferenceFragment public static final int LAUCH_APP_UPDATE = 1; //UI objects private SettingsMainSwitchBar mSwitchBar; private SettingsMainSwitchPreference mSwitchBar; private ListWithEntrySummaryPreference mButtonWfcMode; private ListWithEntrySummaryPreference mButtonWfcRoamingMode; private Preference mUpdateAddress; Loading Loading @@ -119,23 +117,37 @@ public class WifiCallingSettingsForSub extends SettingsPreferenceFragment @Override public void onCallStateChanged(int state) { final SettingsActivity activity = (SettingsActivity) getActivity(); final boolean isNonTtyOrTtyOnVolteEnabled = queryImsState(WifiCallingSettingsForSub.this.mSubId).isAllowUserControl(); final boolean isWfcEnabled = mSwitchBar.isChecked() && isNonTtyOrTtyOnVolteEnabled; boolean isCallStateIdle = getTelephonyManagerForSub( boolean isWfcEnabled = false; boolean isCallStateIdle = false; final SettingsMainSwitchPreference prefSwitch = (SettingsMainSwitchPreference) getPreferenceScreen().findPreference(SWITCH_BAR); if (prefSwitch != null) { isWfcEnabled = prefSwitch.isChecked(); isCallStateIdle = getTelephonyManagerForSub( WifiCallingSettingsForSub.this.mSubId).getCallState() == TelephonyManager.CALL_STATE_IDLE; mSwitchBar.setEnabled(isCallStateIdle && isNonTtyOrTtyOnVolteEnabled); boolean isNonTtyOrTtyOnVolteEnabled = true; if (isWfcEnabled || isCallStateIdle) { isNonTtyOrTtyOnVolteEnabled = queryImsState(WifiCallingSettingsForSub.this.mSubId) .isAllowUserControl(); } isWfcEnabled = isWfcEnabled && isNonTtyOrTtyOnVolteEnabled; prefSwitch.setEnabled(isCallStateIdle && isNonTtyOrTtyOnVolteEnabled); } boolean isWfcModeEditable = true; boolean isWfcRoamingModeEditable = false; if (isWfcEnabled && isCallStateIdle) { final CarrierConfigManager configManager = (CarrierConfigManager) activity.getSystemService(Context.CARRIER_CONFIG_SERVICE); if (configManager != null) { PersistableBundle b = configManager.getConfigForSubId(WifiCallingSettingsForSub.this.mSubId); PersistableBundle b = configManager.getConfigForSubId( WifiCallingSettingsForSub.this.mSubId); if (b != null) { isWfcModeEditable = b.getBoolean( CarrierConfigManager.KEY_EDITABLE_WFC_MODE_BOOL); Loading @@ -143,17 +155,19 @@ public class WifiCallingSettingsForSub extends SettingsPreferenceFragment CarrierConfigManager.KEY_EDITABLE_WFC_ROAMING_MODE_BOOL); } } } else { isWfcModeEditable = false; isWfcRoamingModeEditable = false; } final Preference pref = getPreferenceScreen().findPreference(BUTTON_WFC_MODE); if (pref != null) { pref.setEnabled(isWfcEnabled && isWfcModeEditable && isCallStateIdle); pref.setEnabled(isWfcModeEditable); } final Preference pref_roam = getPreferenceScreen().findPreference(BUTTON_WFC_ROAMING_MODE); if (pref_roam != null) { pref_roam.setEnabled(isWfcEnabled && isWfcRoamingModeEditable && isCallStateIdle); pref_roam.setEnabled(isWfcRoamingModeEditable); } } } Loading Loading @@ -184,20 +198,6 @@ public class WifiCallingSettingsForSub extends SettingsPreferenceFragment } }; @Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); mSwitchBar = getView().findViewById(R.id.switch_bar); mSwitchBar.show(); } @Override public void onDestroyView() { super.onDestroyView(); mSwitchBar.hide(); } @VisibleForTesting void showAlert(Intent intent) { final Context context = getActivity(); Loading Loading @@ -292,6 +292,8 @@ public class WifiCallingSettingsForSub extends SettingsPreferenceFragment mProvisioningManager = getImsProvisioningManager(); mImsMmTelManager = getImsMmTelManager(); mSwitchBar = (SettingsMainSwitchPreference) findPreference(SWITCH_BAR); mButtonWfcMode = findPreference(BUTTON_WFC_MODE); mButtonWfcMode.setOnPreferenceChangeListener(this); Loading tests/robotests/src/com/android/settings/wifi/calling/WifiCallingSettingsForSubTest.java +28 −4 Original line number Diff line number Diff line Loading @@ -55,6 +55,7 @@ import com.android.settings.network.ims.MockWifiCallingQueryImsState; import com.android.settings.network.ims.WifiCallingQueryImsState; import com.android.settings.testutils.shadow.ShadowFragment; import com.android.settings.widget.SettingsMainSwitchBar; import com.android.settings.widget.SettingsMainSwitchPreference; import org.junit.Before; import org.junit.Test; Loading @@ -72,6 +73,7 @@ import org.robolectric.util.ReflectionHelpers; public class WifiCallingSettingsForSubTest { private static final int SUB_ID = 2; private static final String SWITCH_BAR = "wifi_calling_switch_bar"; private static final String BUTTON_WFC_MODE = "wifi_calling_mode"; private static final String BUTTON_WFC_ROAMING_MODE = "wifi_calling_roaming_mode"; private static final String PREFERENCE_NO_OPTIONS_DESC = "no_options_description"; Loading Loading @@ -100,6 +102,8 @@ public class WifiCallingSettingsForSubTest { @Mock private View mView; @Mock private SettingsMainSwitchPreference mSwitchBarPreference; @Mock private LinkifyDescriptionPreference mDescriptionView; @Mock private ListWithEntrySummaryPreference mButtonWfcMode; Loading @@ -116,6 +120,7 @@ public class WifiCallingSettingsForSubTest { doReturn(mContext.getTheme()).when(mActivity).getTheme(); mFragment = spy(new TestFragment()); mFragment.setSwitchBar(mSwitchBarPreference); doReturn(mActivity).when(mFragment).getActivity(); doReturn(mContext).when(mFragment).getContext(); doReturn(mock(Intent.class)).when(mActivity).getIntent(); Loading @@ -125,10 +130,6 @@ public class WifiCallingSettingsForSubTest { final Bundle bundle = new Bundle(); when(mFragment.getArguments()).thenReturn(bundle); doNothing().when(mFragment).addPreferencesFromResource(anyInt()); doReturn(mock(ListWithEntrySummaryPreference.class)).when(mFragment).findPreference(any()); doReturn(mButtonWfcMode).when(mFragment).findPreference(BUTTON_WFC_MODE); doReturn(mButtonWfcRoamingMode).when(mFragment).findPreference(BUTTON_WFC_ROAMING_MODE); doReturn(mDescriptionView).when(mFragment).findPreference(PREFERENCE_NO_OPTIONS_DESC); doNothing().when(mFragment).finish(); doReturn(mView).when(mFragment).getView(); Loading Loading @@ -344,6 +345,29 @@ public class WifiCallingSettingsForSubTest { } protected class TestFragment extends WifiCallingSettingsForSub { private SettingsMainSwitchPreference mSwitchPref; protected void setSwitchBar(SettingsMainSwitchPreference switchPref) { mSwitchPref = switchPref; } @Override public <T extends Preference> T findPreference(CharSequence key) { if (SWITCH_BAR.equals(key)) { return (T) mSwitchPref; } if (BUTTON_WFC_MODE.equals(key)) { return (T) mButtonWfcMode; } if (BUTTON_WFC_ROAMING_MODE.equals(key)) { return (T) mButtonWfcRoamingMode; } if (PREFERENCE_NO_OPTIONS_DESC.equals(key)) { return (T) mDescriptionView; } return (T) mock(ListWithEntrySummaryPreference.class); } @Override protected Object getSystemService(final String name) { switch (name) { Loading Loading
res/layout/wifi_calling_settings_preferences.xml +0 −6 Original line number Diff line number Diff line Loading @@ -21,12 +21,6 @@ android:layout_height="match_parent" android:orientation="vertical"> <com.android.settings.widget.SettingsMainSwitchBar android:id="@+id/switch_bar" android:title="@string/wifi_calling_main_switch_title" android:layout_height="wrap_content" android:layout_width="match_parent" /> <FrameLayout android:id="@android:id/tabcontent" android:layout_width="match_parent" Loading
res/xml/wifi_calling_settings.xml +4 −0 Original line number Diff line number Diff line Loading @@ -19,6 +19,10 @@ android:key="wifi_calling_settings" android:title="@string/wifi_calling_settings_title"> <com.android.settings.widget.SettingsMainSwitchPreference android:key="wifi_calling_switch_bar" android:title="@string/wifi_calling_main_switch_title" /> <com.android.settings.wifi.calling.ListWithEntrySummaryPreference android:key="wifi_calling_mode" isPreferenceVisible="false" Loading
src/com/android/settings/wifi/calling/WifiCallingSettings.java +4 −14 Original line number Diff line number Diff line Loading @@ -30,13 +30,12 @@ import android.view.ViewGroup; import androidx.annotation.VisibleForTesting; import androidx.fragment.app.Fragment; import androidx.fragment.app.FragmentActivity; import androidx.fragment.app.FragmentManager; import androidx.fragment.app.FragmentPagerAdapter; import com.android.internal.util.CollectionUtils; import com.android.settings.R; import com.android.settings.core.InstrumentedFragment; import com.android.settings.SettingsPreferenceFragment; import com.android.settings.network.ActiveSubscriptionsListener; import com.android.settings.network.SubscriptionUtil; import com.android.settings.network.ims.WifiCallingQueryImsState; Loading @@ -54,7 +53,8 @@ import java.util.List; * "Wi-Fi Calling settings" screen. This is the container fragment which holds * {@link WifiCallingSettingsForSub} fragments. */ public class WifiCallingSettings extends InstrumentedFragment implements HelpResourceProvider { public class WifiCallingSettings extends SettingsPreferenceFragment implements HelpResourceProvider { private static final String TAG = "WifiCallingSettings"; private int mConstructionSubId; private List<SubscriptionInfo> mSil; Loading Loading @@ -317,17 +317,7 @@ public class WifiCallingSettings extends InstrumentedFragment implements HelpRes } // close this fragment finish(); } protected void finish() { FragmentActivity activity = getActivity(); if (activity == null) return; if (getFragmentManager().getBackStackEntryCount() > 0) { getFragmentManager().popBackStack(); } else { activity.finish(); } finishFragment(); } protected int [] subscriptionIdList(List<SubscriptionInfo> subInfoList) { Loading
src/com/android/settings/wifi/calling/WifiCallingSettingsForSub.java +44 −42 Original line number Diff line number Diff line Loading @@ -27,7 +27,6 @@ import android.content.res.Resources; import android.os.Bundle; import android.os.PersistableBundle; import android.telephony.CarrierConfigManager; import android.telephony.PhoneStateListener; import android.telephony.SubscriptionManager; import android.telephony.TelephonyCallback; import android.telephony.TelephonyManager; Loading @@ -40,7 +39,6 @@ import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.Switch; import android.widget.TextView; import androidx.appcompat.app.AlertDialog; import androidx.preference.Preference; Loading @@ -56,8 +54,7 @@ import com.android.settings.SettingsPreferenceFragment; import com.android.settings.Utils; import com.android.settings.core.SubSettingLauncher; import com.android.settings.network.ims.WifiCallingQueryImsState; import com.android.settings.widget.SettingsMainSwitchBar; import com.android.settings.wifi.calling.LinkifyDescriptionPreference; import com.android.settings.widget.SettingsMainSwitchPreference; import com.android.settingslib.widget.OnMainSwitchChangeListener; import java.util.List; Loading @@ -72,6 +69,7 @@ public class WifiCallingSettingsForSub extends SettingsPreferenceFragment private static final String TAG = "WifiCallingForSub"; //String keys for preference lookup private static final String SWITCH_BAR = "wifi_calling_switch_bar"; private static final String BUTTON_WFC_MODE = "wifi_calling_mode"; private static final String BUTTON_WFC_ROAMING_MODE = "wifi_calling_roaming_mode"; private static final String PREFERENCE_EMERGENCY_ADDRESS = "emergency_address_key"; Loading @@ -91,7 +89,7 @@ public class WifiCallingSettingsForSub extends SettingsPreferenceFragment public static final int LAUCH_APP_UPDATE = 1; //UI objects private SettingsMainSwitchBar mSwitchBar; private SettingsMainSwitchPreference mSwitchBar; private ListWithEntrySummaryPreference mButtonWfcMode; private ListWithEntrySummaryPreference mButtonWfcRoamingMode; private Preference mUpdateAddress; Loading Loading @@ -119,23 +117,37 @@ public class WifiCallingSettingsForSub extends SettingsPreferenceFragment @Override public void onCallStateChanged(int state) { final SettingsActivity activity = (SettingsActivity) getActivity(); final boolean isNonTtyOrTtyOnVolteEnabled = queryImsState(WifiCallingSettingsForSub.this.mSubId).isAllowUserControl(); final boolean isWfcEnabled = mSwitchBar.isChecked() && isNonTtyOrTtyOnVolteEnabled; boolean isCallStateIdle = getTelephonyManagerForSub( boolean isWfcEnabled = false; boolean isCallStateIdle = false; final SettingsMainSwitchPreference prefSwitch = (SettingsMainSwitchPreference) getPreferenceScreen().findPreference(SWITCH_BAR); if (prefSwitch != null) { isWfcEnabled = prefSwitch.isChecked(); isCallStateIdle = getTelephonyManagerForSub( WifiCallingSettingsForSub.this.mSubId).getCallState() == TelephonyManager.CALL_STATE_IDLE; mSwitchBar.setEnabled(isCallStateIdle && isNonTtyOrTtyOnVolteEnabled); boolean isNonTtyOrTtyOnVolteEnabled = true; if (isWfcEnabled || isCallStateIdle) { isNonTtyOrTtyOnVolteEnabled = queryImsState(WifiCallingSettingsForSub.this.mSubId) .isAllowUserControl(); } isWfcEnabled = isWfcEnabled && isNonTtyOrTtyOnVolteEnabled; prefSwitch.setEnabled(isCallStateIdle && isNonTtyOrTtyOnVolteEnabled); } boolean isWfcModeEditable = true; boolean isWfcRoamingModeEditable = false; if (isWfcEnabled && isCallStateIdle) { final CarrierConfigManager configManager = (CarrierConfigManager) activity.getSystemService(Context.CARRIER_CONFIG_SERVICE); if (configManager != null) { PersistableBundle b = configManager.getConfigForSubId(WifiCallingSettingsForSub.this.mSubId); PersistableBundle b = configManager.getConfigForSubId( WifiCallingSettingsForSub.this.mSubId); if (b != null) { isWfcModeEditable = b.getBoolean( CarrierConfigManager.KEY_EDITABLE_WFC_MODE_BOOL); Loading @@ -143,17 +155,19 @@ public class WifiCallingSettingsForSub extends SettingsPreferenceFragment CarrierConfigManager.KEY_EDITABLE_WFC_ROAMING_MODE_BOOL); } } } else { isWfcModeEditable = false; isWfcRoamingModeEditable = false; } final Preference pref = getPreferenceScreen().findPreference(BUTTON_WFC_MODE); if (pref != null) { pref.setEnabled(isWfcEnabled && isWfcModeEditable && isCallStateIdle); pref.setEnabled(isWfcModeEditable); } final Preference pref_roam = getPreferenceScreen().findPreference(BUTTON_WFC_ROAMING_MODE); if (pref_roam != null) { pref_roam.setEnabled(isWfcEnabled && isWfcRoamingModeEditable && isCallStateIdle); pref_roam.setEnabled(isWfcRoamingModeEditable); } } } Loading Loading @@ -184,20 +198,6 @@ public class WifiCallingSettingsForSub extends SettingsPreferenceFragment } }; @Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); mSwitchBar = getView().findViewById(R.id.switch_bar); mSwitchBar.show(); } @Override public void onDestroyView() { super.onDestroyView(); mSwitchBar.hide(); } @VisibleForTesting void showAlert(Intent intent) { final Context context = getActivity(); Loading Loading @@ -292,6 +292,8 @@ public class WifiCallingSettingsForSub extends SettingsPreferenceFragment mProvisioningManager = getImsProvisioningManager(); mImsMmTelManager = getImsMmTelManager(); mSwitchBar = (SettingsMainSwitchPreference) findPreference(SWITCH_BAR); mButtonWfcMode = findPreference(BUTTON_WFC_MODE); mButtonWfcMode.setOnPreferenceChangeListener(this); Loading
tests/robotests/src/com/android/settings/wifi/calling/WifiCallingSettingsForSubTest.java +28 −4 Original line number Diff line number Diff line Loading @@ -55,6 +55,7 @@ import com.android.settings.network.ims.MockWifiCallingQueryImsState; import com.android.settings.network.ims.WifiCallingQueryImsState; import com.android.settings.testutils.shadow.ShadowFragment; import com.android.settings.widget.SettingsMainSwitchBar; import com.android.settings.widget.SettingsMainSwitchPreference; import org.junit.Before; import org.junit.Test; Loading @@ -72,6 +73,7 @@ import org.robolectric.util.ReflectionHelpers; public class WifiCallingSettingsForSubTest { private static final int SUB_ID = 2; private static final String SWITCH_BAR = "wifi_calling_switch_bar"; private static final String BUTTON_WFC_MODE = "wifi_calling_mode"; private static final String BUTTON_WFC_ROAMING_MODE = "wifi_calling_roaming_mode"; private static final String PREFERENCE_NO_OPTIONS_DESC = "no_options_description"; Loading Loading @@ -100,6 +102,8 @@ public class WifiCallingSettingsForSubTest { @Mock private View mView; @Mock private SettingsMainSwitchPreference mSwitchBarPreference; @Mock private LinkifyDescriptionPreference mDescriptionView; @Mock private ListWithEntrySummaryPreference mButtonWfcMode; Loading @@ -116,6 +120,7 @@ public class WifiCallingSettingsForSubTest { doReturn(mContext.getTheme()).when(mActivity).getTheme(); mFragment = spy(new TestFragment()); mFragment.setSwitchBar(mSwitchBarPreference); doReturn(mActivity).when(mFragment).getActivity(); doReturn(mContext).when(mFragment).getContext(); doReturn(mock(Intent.class)).when(mActivity).getIntent(); Loading @@ -125,10 +130,6 @@ public class WifiCallingSettingsForSubTest { final Bundle bundle = new Bundle(); when(mFragment.getArguments()).thenReturn(bundle); doNothing().when(mFragment).addPreferencesFromResource(anyInt()); doReturn(mock(ListWithEntrySummaryPreference.class)).when(mFragment).findPreference(any()); doReturn(mButtonWfcMode).when(mFragment).findPreference(BUTTON_WFC_MODE); doReturn(mButtonWfcRoamingMode).when(mFragment).findPreference(BUTTON_WFC_ROAMING_MODE); doReturn(mDescriptionView).when(mFragment).findPreference(PREFERENCE_NO_OPTIONS_DESC); doNothing().when(mFragment).finish(); doReturn(mView).when(mFragment).getView(); Loading Loading @@ -344,6 +345,29 @@ public class WifiCallingSettingsForSubTest { } protected class TestFragment extends WifiCallingSettingsForSub { private SettingsMainSwitchPreference mSwitchPref; protected void setSwitchBar(SettingsMainSwitchPreference switchPref) { mSwitchPref = switchPref; } @Override public <T extends Preference> T findPreference(CharSequence key) { if (SWITCH_BAR.equals(key)) { return (T) mSwitchPref; } if (BUTTON_WFC_MODE.equals(key)) { return (T) mButtonWfcMode; } if (BUTTON_WFC_ROAMING_MODE.equals(key)) { return (T) mButtonWfcRoamingMode; } if (PREFERENCE_NO_OPTIONS_DESC.equals(key)) { return (T) mDescriptionView; } return (T) mock(ListWithEntrySummaryPreference.class); } @Override protected Object getSystemService(final String name) { switch (name) { Loading