From a582bb1092b91b059a3256ff4f6dcfc3864791c7 Mon Sep 17 00:00:00 2001 From: Zoey Chen Date: Wed, 15 Dec 2021 23:36:41 +0800 Subject: [PATCH 1/2] [RESTRICT AUTOMERGE] [Provider Model] Internal cleanup - remove Provider Model flag and deprecated legacy UI part.5 Test: atest MobileNetworkSummaryControllerTest, NetworkProviderWifiCallingGroupTest, NetworkProviderBackupCallingGroupTest Bug: 197066557 Change-Id: I829590bfa37ee2166d9388ccad35d306b201f844 --- .../MobileNetworkSummaryControllerTest.java | 82 ------------------- ...NetworkProviderBackupCallingGroupTest.java | 2 - .../NetworkProviderWifiCallingGroupTest.java | 4 - 3 files changed, 88 deletions(-) diff --git a/tests/robotests/src/com/android/settings/network/MobileNetworkSummaryControllerTest.java b/tests/robotests/src/com/android/settings/network/MobileNetworkSummaryControllerTest.java index 1639bbae544..b6f14dbbdc6 100644 --- a/tests/robotests/src/com/android/settings/network/MobileNetworkSummaryControllerTest.java +++ b/tests/robotests/src/com/android/settings/network/MobileNetworkSummaryControllerTest.java @@ -209,82 +209,6 @@ public class MobileNetworkSummaryControllerTest { SubscriptionManager.INVALID_SUBSCRIPTION_ID)).isEqualTo(sub1.getSubscriptionId()); } - @Test - public void getSummary_twoSubscriptions_correctSummaryAndFragment() { - FeatureFlagUtils.setEnabled(mContext, FeatureFlagUtils.SETTINGS_PROVIDER_MODEL, false); - final SubscriptionInfo sub1 = mock(SubscriptionInfo.class); - final SubscriptionInfo sub2 = mock(SubscriptionInfo.class); - when(sub1.getSubscriptionId()).thenReturn(1); - when(sub2.getSubscriptionId()).thenReturn(2); - - SubscriptionUtil.setAvailableSubscriptionsForTesting(Arrays.asList(sub1, sub2)); - mController.displayPreference(mPreferenceScreen); - mController.onResume(); - assertThat(mController.getSummary()).isEqualTo("2 SIMs"); - assertThat(mPreference.getFragment()).isEqualTo(MobileNetworkListFragment.class.getName()); - } - - @Test - public void getSummaryAfterUpdate_twoSubscriptionsBecomesOne_correctSummaryAndFragment() { - FeatureFlagUtils.setEnabled(mContext, FeatureFlagUtils.SETTINGS_PROVIDER_MODEL, false); - final SubscriptionInfo sub1 = mock(SubscriptionInfo.class); - final SubscriptionInfo sub2 = mock(SubscriptionInfo.class); - when(sub1.getSubscriptionId()).thenReturn(1); - when(sub2.getSubscriptionId()).thenReturn(2); - when(sub1.getDisplayName()).thenReturn("sub1"); - when(sub2.getDisplayName()).thenReturn("sub2"); - - SubscriptionUtil.setAvailableSubscriptionsForTesting(Arrays.asList(sub1, sub2)); - SubscriptionUtil.setActiveSubscriptionsForTesting(Arrays.asList(sub1, sub2)); - mController.displayPreference(mPreferenceScreen); - mController.onResume(); - assertThat(mController.getSummary()).isEqualTo("2 SIMs"); - assertThat(mPreference.getFragment()).isEqualTo(MobileNetworkListFragment.class.getName()); - - // Simulate sub2 having disappeared - the end result should change to be the same as - // if there were just one subscription. - SubscriptionUtil.setAvailableSubscriptionsForTesting(Arrays.asList(sub1)); - mController.onSubscriptionsChanged(); - assertThat(mController.getSummary()).isEqualTo("sub1"); - assertThat(mPreference.getFragment()).isNull(); - final ArgumentCaptor intentCaptor = ArgumentCaptor.forClass(Intent.class); - doNothing().when(mContext).startActivity(intentCaptor.capture()); - mPreference.getOnPreferenceClickListener().onPreferenceClick(mPreference); - assertThat(intentCaptor.getValue().getComponent().getClassName()).isEqualTo( - MobileNetworkActivity.class.getName()); - } - - @Test - public void getSummaryAfterUpdate_oneSubscriptionBecomesTwo_correctSummaryAndFragment() { - FeatureFlagUtils.setEnabled(mContext, FeatureFlagUtils.SETTINGS_PROVIDER_MODEL, false); - final SubscriptionInfo sub1 = mock(SubscriptionInfo.class); - final SubscriptionInfo sub2 = mock(SubscriptionInfo.class); - when(sub1.getSubscriptionId()).thenReturn(1); - when(sub2.getSubscriptionId()).thenReturn(2); - when(sub1.getDisplayName()).thenReturn("sub1"); - when(sub2.getDisplayName()).thenReturn("sub2"); - - when(mSubscriptionManager.getAvailableSubscriptionInfoList()).thenReturn( - Arrays.asList(sub1)); - SubscriptionUtil.setActiveSubscriptionsForTesting(Arrays.asList(sub1)); - mController.displayPreference(mPreferenceScreen); - mController.onResume(); - assertThat(mController.getSummary()).isEqualTo("sub1"); - assertThat(mPreference.getFragment()).isNull(); - final ArgumentCaptor intentCaptor = ArgumentCaptor.forClass(Intent.class); - doNothing().when(mContext).startActivity(intentCaptor.capture()); - mPreference.getOnPreferenceClickListener().onPreferenceClick(mPreference); - assertThat(intentCaptor.getValue().getComponent().getClassName()).isEqualTo( - MobileNetworkActivity.class.getName()); - - // Simulate sub2 appearing in the list of subscriptions and check the results. - SubscriptionUtil.setAvailableSubscriptionsForTesting(Arrays.asList(sub1, sub2)); - mController.displayPreference(mPreferenceScreen); - mController.onResume(); - assertThat(mController.getSummary()).isEqualTo("2 SIMs"); - assertThat(mPreference.getFragment()).isEqualTo(MobileNetworkListFragment.class.getName()); - } - @Test public void getSummary_providerModel_Enabled() { final SubscriptionInfo sub1 = mock(SubscriptionInfo.class); @@ -296,15 +220,9 @@ public class MobileNetworkSummaryControllerTest { SubscriptionUtil.setAvailableSubscriptionsForTesting(Arrays.asList(sub1, sub2)); SubscriptionUtil.setActiveSubscriptionsForTesting(Arrays.asList(sub1, sub2)); - FeatureFlagUtils.setEnabled(mContext, FeatureFlagUtils.SETTINGS_PROVIDER_MODEL, true); mController.displayPreference(mPreferenceScreen); mController.onResume(); assertThat(mController.getSummary()).isEqualTo("sub1, sub2"); - - FeatureFlagUtils.setEnabled(mContext, FeatureFlagUtils.SETTINGS_PROVIDER_MODEL, false); - mController.displayPreference(mPreferenceScreen); - mController.onResume(); - assertThat(mController.getSummary()).isEqualTo("2 SIMs"); } @Test diff --git a/tests/unit/src/com/android/settings/network/telephony/NetworkProviderBackupCallingGroupTest.java b/tests/unit/src/com/android/settings/network/telephony/NetworkProviderBackupCallingGroupTest.java index e7a6af39319..8396f1b6a33 100644 --- a/tests/unit/src/com/android/settings/network/telephony/NetworkProviderBackupCallingGroupTest.java +++ b/tests/unit/src/com/android/settings/network/telephony/NetworkProviderBackupCallingGroupTest.java @@ -153,7 +153,6 @@ public class NetworkProviderBackupCallingGroupTest { @Test public void shouldShowBackupCallingForSub_crossSimDisabled_returnFalse() { - FeatureFlagUtils.setEnabled(mContext, FeatureFlagUtils.SETTINGS_PROVIDER_MODEL, true); doReturn(false).when(mNetworkProviderBackupCallingGroup).isCrossSimEnabledByPlatform( mContext, SUB_ID_1); @@ -163,7 +162,6 @@ public class NetworkProviderBackupCallingGroupTest { @Test public void shouldBackupCallingForSub_crossSimEnabled_returnTrue() { - FeatureFlagUtils.setEnabled(mContext, FeatureFlagUtils.SETTINGS_PROVIDER_MODEL, true); doReturn(true).when(mNetworkProviderBackupCallingGroup).isCrossSimEnabledByPlatform( mContext, SUB_ID_1); diff --git a/tests/unit/src/com/android/settings/network/telephony/NetworkProviderWifiCallingGroupTest.java b/tests/unit/src/com/android/settings/network/telephony/NetworkProviderWifiCallingGroupTest.java index 660772ed99f..9cd12fe09cf 100644 --- a/tests/unit/src/com/android/settings/network/telephony/NetworkProviderWifiCallingGroupTest.java +++ b/tests/unit/src/com/android/settings/network/telephony/NetworkProviderWifiCallingGroupTest.java @@ -147,7 +147,6 @@ public class NetworkProviderWifiCallingGroupTest { @Test public void shouldShowWifiCallingForSub_wifiCallingDisabledWithWifiCallingNotReady_returnFalse() { - FeatureFlagUtils.setEnabled(mContext, FeatureFlagUtils.SETTINGS_PROVIDER_MODEL, true); setWifiCallingEnabled(false); doReturn(mMockQueryWfcState).when(mNetworkProviderWifiCallingGroup).queryImsState(SUB_ID); @@ -157,7 +156,6 @@ public class NetworkProviderWifiCallingGroupTest { @Test public void shouldShowWifiCallingForSub_wifiCallingEnabledWithWifiCallingIsReady_returnTrue() { - FeatureFlagUtils.setEnabled(mContext, FeatureFlagUtils.SETTINGS_PROVIDER_MODEL, true); setWifiCallingEnabled(true); doReturn(mMockQueryWfcState).when(mNetworkProviderWifiCallingGroup).queryImsState(SUB_ID); @@ -168,7 +166,6 @@ public class NetworkProviderWifiCallingGroupTest { @Test public void shouldShowWifiCallingForSub_wifiCallingDisabledWithNoActivityHandleIntent_returnFalse() { - FeatureFlagUtils.setEnabled(mContext, FeatureFlagUtils.SETTINGS_PROVIDER_MODEL, true); buildPhoneAccountConfigureIntent(false); doReturn(mMockQueryWfcState).when(mNetworkProviderWifiCallingGroup).queryImsState(SUB_ID); doReturn(mPhoneAccountHandle).when(mNetworkProviderWifiCallingGroup) @@ -181,7 +178,6 @@ public class NetworkProviderWifiCallingGroupTest { @Test public void shouldShowWifiCallingForSub_wifiCallingEnabledWithActivityHandleIntent_returnTrue() { - FeatureFlagUtils.setEnabled(mContext, FeatureFlagUtils.SETTINGS_PROVIDER_MODEL, true); buildPhoneAccountConfigureIntent(true); doReturn(mMockQueryWfcState).when(mNetworkProviderWifiCallingGroup).queryImsState(SUB_ID); doReturn(mPhoneAccountHandle).when(mNetworkProviderWifiCallingGroup) From a93796f7a38964fe2ba6646ce337d38ad62afbad Mon Sep 17 00:00:00 2001 From: Bonian Chen Date: Thu, 16 Dec 2021 18:06:54 +0800 Subject: [PATCH 2/2] [Settings] Enable WiFi calling toggle in search WiFi calling toggle in search need to pass the toggle request to receiver to make it work. Bug: 206871758 Test: local Change-Id: If23d1ae1eaeb5d505e584dec94e1980f6e329c65 (cherry picked from commit a6a35b8409e9b012d3e7baa7bde1351255e12794) --- .../wifi/calling/WifiCallingSliceHelper.java | 39 +++++++++++++------ 1 file changed, 28 insertions(+), 11 deletions(-) diff --git a/src/com/android/settings/wifi/calling/WifiCallingSliceHelper.java b/src/com/android/settings/wifi/calling/WifiCallingSliceHelper.java index 36363419dfc..c73bffa7411 100644 --- a/src/com/android/settings/wifi/calling/WifiCallingSliceHelper.java +++ b/src/com/android/settings/wifi/calling/WifiCallingSliceHelper.java @@ -179,7 +179,8 @@ public class WifiCallingSliceHelper { .setTitle(res.getText(R.string.wifi_calling_settings_title)) .addEndItem( SliceAction.createToggle( - getBroadcastIntent(ACTION_WIFI_CALLING_CHANGED), + getBroadcastIntent(ACTION_WIFI_CALLING_CHANGED, + isWifiCallingEnabled), null /* actionTitle */, isWifiCallingEnabled)) .setPrimaryAction(SliceAction.createDeeplink( getActivityIntent(ACTION_WIFI_CALLING_SETTINGS_ACTIVITY), @@ -316,7 +317,7 @@ public class WifiCallingSliceHelper { final Resources res = getResourcesForSubId(subId); return new RowBuilder() .setTitle(res.getText(preferenceTitleResId)) - .setTitleItem(SliceAction.createToggle(getBroadcastIntent(action), + .setTitleItem(SliceAction.createToggle(getBroadcastIntent(action, checked), icon, res.getText(preferenceTitleResId), checked)); } @@ -370,25 +371,31 @@ public class WifiCallingSliceHelper { public void handleWifiCallingChanged(Intent intent) { final int subId = getDefaultVoiceSubId(); - if (SubscriptionManager.isValidSubscriptionId(subId)) { + if (SubscriptionManager.isValidSubscriptionId(subId) + && intent.hasExtra(EXTRA_TOGGLE_STATE)) { final WifiCallingQueryImsState queryState = queryImsState(subId); if (queryState.isWifiCallingProvisioned()) { - final boolean currentValue = queryState.isEnabledByUser() - && queryState.isAllowUserControl(); + final boolean currentValue = isWifiCallingEnabled(); final boolean newValue = intent.getBooleanExtra(EXTRA_TOGGLE_STATE, currentValue); final Intent activationAppIntent = getWifiCallingCarrierActivityIntent(subId); - if (!newValue || activationAppIntent == null) { + if ((newValue == currentValue) && activationAppIntent == null) { // If either the action is to turn off wifi calling setting // or there is no activation involved - Update the setting - if (newValue != currentValue) { - final ImsMmTelManager imsMmTelManager = getImsMmTelManager(subId); - imsMmTelManager.setVoWiFiSettingEnabled(newValue); - } + final ImsMmTelManager imsMmTelManager = getImsMmTelManager(subId); + imsMmTelManager.setVoWiFiSettingEnabled(!newValue); + } else { + Log.w(TAG, "action not taken: subId " + subId + + " from " + currentValue + " to " + newValue); } + } else { + Log.w(TAG, "action not taken: subId " + subId + " needs provision"); } + } else { + Log.w(TAG, "action not taken: subId " + subId); } + // notify change in slice in any case to get re-queried. This would result in displaying // appropriate message with the updated setting. mContext.getContentResolver().notifyChange(WIFI_CALLING_URI, null); @@ -541,10 +548,20 @@ public class WifiCallingSliceHelper { PendingIntent.FLAG_IMMUTABLE); } - private PendingIntent getBroadcastIntent(String action) { + /** + * Create PendingIntent for Slice. + * Note: SliceAction#createDeeplink() didn't support toggle status so far, + * therefore, embedding toggle status within PendingIntent. + * + * @param action Slice action + * @param isChecked Status when Slice created. + * @return PendingIntent + */ + private PendingIntent getBroadcastIntent(String action, boolean isChecked) { final Intent intent = new Intent(action); intent.setClass(mContext, SliceBroadcastReceiver.class); intent.addFlags(Intent.FLAG_RECEIVER_FOREGROUND); + intent.putExtra(EXTRA_TOGGLE_STATE, isChecked); return PendingIntent.getBroadcast(mContext, 0 /* requestCode */, intent, PendingIntent.FLAG_CANCEL_CURRENT | PendingIntent.FLAG_IMMUTABLE); }