Merge "Copy wifiCalling method from telephony to settings"
This commit is contained in:
@@ -22,6 +22,7 @@ import android.content.ContentResolver;
|
|||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.content.pm.PackageManager;
|
import android.content.pm.PackageManager;
|
||||||
|
import android.content.pm.ResolveInfo;
|
||||||
import android.database.Cursor;
|
import android.database.Cursor;
|
||||||
import android.os.PersistableBundle;
|
import android.os.PersistableBundle;
|
||||||
import android.os.SystemProperties;
|
import android.os.SystemProperties;
|
||||||
@@ -36,6 +37,8 @@ import android.telephony.ims.feature.ImsFeature;
|
|||||||
import android.text.TextUtils;
|
import android.text.TextUtils;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
|
|
||||||
|
import androidx.annotation.VisibleForTesting;
|
||||||
|
|
||||||
import com.android.ims.ImsException;
|
import com.android.ims.ImsException;
|
||||||
import com.android.ims.ImsManager;
|
import com.android.ims.ImsManager;
|
||||||
|
|
||||||
@@ -54,6 +57,8 @@ public class MobileNetworkUtils {
|
|||||||
// the default value is false.
|
// the default value is false.
|
||||||
private static final String KEY_ENABLE_ESIM_UI_BY_DEFAULT =
|
private static final String KEY_ENABLE_ESIM_UI_BY_DEFAULT =
|
||||||
"esim.enable_esim_system_ui_by_default";
|
"esim.enable_esim_system_ui_by_default";
|
||||||
|
private static final String LEGACY_ACTION_CONFIGURE_PHONE_ACCOUNT =
|
||||||
|
"android.telecom.action.CONNECTION_SERVICE_CONFIGURE";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns if DPC APNs are enforced.
|
* Returns if DPC APNs are enforced.
|
||||||
@@ -91,11 +96,10 @@ public class MobileNetworkUtils {
|
|||||||
|
|
||||||
boolean isWifiCallingEnabled;
|
boolean isWifiCallingEnabled;
|
||||||
if (simCallManager != null) {
|
if (simCallManager != null) {
|
||||||
//TODO(b/114749736): build intent to query wifi calling feature
|
Intent intent = buildPhoneAccountConfigureIntent(
|
||||||
final Intent intent = null;
|
context, simCallManager);
|
||||||
PackageManager pm = context.getPackageManager();
|
|
||||||
isWifiCallingEnabled = intent != null
|
isWifiCallingEnabled = intent != null;
|
||||||
&& !pm.queryIntentActivities(intent, 0 /* flags */).isEmpty();
|
|
||||||
} else {
|
} else {
|
||||||
ImsManager imsMgr = ImsManager.getInstance(context, phoneId);
|
ImsManager imsMgr = ImsManager.getInstance(context, phoneId);
|
||||||
isWifiCallingEnabled = imsMgr != null
|
isWifiCallingEnabled = imsMgr != null
|
||||||
@@ -107,6 +111,43 @@ public class MobileNetworkUtils {
|
|||||||
return isWifiCallingEnabled;
|
return isWifiCallingEnabled;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@VisibleForTesting
|
||||||
|
static Intent buildPhoneAccountConfigureIntent(
|
||||||
|
Context context, PhoneAccountHandle accountHandle) {
|
||||||
|
Intent intent = buildConfigureIntent(
|
||||||
|
context, accountHandle, TelecomManager.ACTION_CONFIGURE_PHONE_ACCOUNT);
|
||||||
|
|
||||||
|
if (intent == null) {
|
||||||
|
// If the new configuration didn't work, try the old configuration intent.
|
||||||
|
intent = buildConfigureIntent(context, accountHandle,
|
||||||
|
LEGACY_ACTION_CONFIGURE_PHONE_ACCOUNT);
|
||||||
|
}
|
||||||
|
return intent;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static Intent buildConfigureIntent(
|
||||||
|
Context context, PhoneAccountHandle accountHandle, String actionStr) {
|
||||||
|
if (accountHandle == null || accountHandle.getComponentName() == null
|
||||||
|
|| TextUtils.isEmpty(accountHandle.getComponentName().getPackageName())) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Build the settings intent.
|
||||||
|
Intent intent = new Intent(actionStr);
|
||||||
|
intent.setPackage(accountHandle.getComponentName().getPackageName());
|
||||||
|
intent.addCategory(Intent.CATEGORY_DEFAULT);
|
||||||
|
intent.putExtra(TelecomManager.EXTRA_PHONE_ACCOUNT_HANDLE, accountHandle);
|
||||||
|
|
||||||
|
// Check to see that the phone account package can handle the setting intent.
|
||||||
|
PackageManager pm = context.getPackageManager();
|
||||||
|
List<ResolveInfo> resolutions = pm.queryIntentActivities(intent, 0);
|
||||||
|
if (resolutions.size() == 0) {
|
||||||
|
intent = null; // set no intent if the package cannot handle it.
|
||||||
|
}
|
||||||
|
|
||||||
|
return intent;
|
||||||
|
}
|
||||||
|
|
||||||
public static boolean isImsServiceStateReady(ImsManager imsMgr) {
|
public static boolean isImsServiceStateReady(ImsManager imsMgr) {
|
||||||
boolean isImsServiceStateReady = false;
|
boolean isImsServiceStateReady = false;
|
||||||
|
|
||||||
|
|||||||
@@ -16,13 +16,24 @@
|
|||||||
|
|
||||||
package com.android.settings.mobilenetwork;
|
package com.android.settings.mobilenetwork;
|
||||||
|
|
||||||
|
import static com.google.common.truth.Truth.assertThat;
|
||||||
|
|
||||||
|
import static org.mockito.ArgumentMatchers.any;
|
||||||
import static org.mockito.ArgumentMatchers.anyBoolean;
|
import static org.mockito.ArgumentMatchers.anyBoolean;
|
||||||
|
import static org.mockito.ArgumentMatchers.anyInt;
|
||||||
|
import static org.mockito.ArgumentMatchers.anyObject;
|
||||||
|
import static org.mockito.ArgumentMatchers.nullable;
|
||||||
import static org.mockito.Mockito.doReturn;
|
import static org.mockito.Mockito.doReturn;
|
||||||
import static org.mockito.Mockito.never;
|
import static org.mockito.Mockito.never;
|
||||||
import static org.mockito.Mockito.spy;
|
import static org.mockito.Mockito.spy;
|
||||||
import static org.mockito.Mockito.verify;
|
import static org.mockito.Mockito.verify;
|
||||||
|
|
||||||
|
import android.content.ComponentName;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
|
import android.content.Intent;
|
||||||
|
import android.content.pm.PackageManager;
|
||||||
|
import android.content.pm.ResolveInfo;
|
||||||
|
import android.telecom.PhoneAccountHandle;
|
||||||
import android.telephony.SubscriptionInfo;
|
import android.telephony.SubscriptionInfo;
|
||||||
import android.telephony.SubscriptionManager;
|
import android.telephony.SubscriptionManager;
|
||||||
import android.telephony.TelephonyManager;
|
import android.telephony.TelephonyManager;
|
||||||
@@ -36,10 +47,12 @@ import org.mockito.Mock;
|
|||||||
import org.mockito.MockitoAnnotations;
|
import org.mockito.MockitoAnnotations;
|
||||||
import org.robolectric.RuntimeEnvironment;
|
import org.robolectric.RuntimeEnvironment;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
|
|
||||||
@RunWith(SettingsRobolectricTestRunner.class)
|
@RunWith(SettingsRobolectricTestRunner.class)
|
||||||
public class MobileNetworkUtilsTest {
|
public class MobileNetworkUtilsTest {
|
||||||
|
private static final String PACKAGE_NAME = "com.android.app";
|
||||||
private static final int SUB_ID_1 = 1;
|
private static final int SUB_ID_1 = 1;
|
||||||
private static final int SUB_ID_2 = 2;
|
private static final int SUB_ID_2 = 2;
|
||||||
|
|
||||||
@@ -53,6 +66,14 @@ public class MobileNetworkUtilsTest {
|
|||||||
private SubscriptionInfo mSubscriptionInfo1;
|
private SubscriptionInfo mSubscriptionInfo1;
|
||||||
@Mock
|
@Mock
|
||||||
private SubscriptionInfo mSubscriptionInfo2;
|
private SubscriptionInfo mSubscriptionInfo2;
|
||||||
|
@Mock
|
||||||
|
private PackageManager mPackageManager;
|
||||||
|
@Mock
|
||||||
|
private PhoneAccountHandle mPhoneAccountHandle;
|
||||||
|
@Mock
|
||||||
|
private ComponentName mComponentName;
|
||||||
|
@Mock
|
||||||
|
private ResolveInfo mResolveInfo;
|
||||||
|
|
||||||
private Context mContext;
|
private Context mContext;
|
||||||
|
|
||||||
@@ -65,6 +86,9 @@ public class MobileNetworkUtilsTest {
|
|||||||
doReturn(mTelephonyManager).when(mContext).getSystemService(Context.TELEPHONY_SERVICE);
|
doReturn(mTelephonyManager).when(mContext).getSystemService(Context.TELEPHONY_SERVICE);
|
||||||
doReturn(mTelephonyManager).when(mTelephonyManager).createForSubscriptionId(SUB_ID_1);
|
doReturn(mTelephonyManager).when(mTelephonyManager).createForSubscriptionId(SUB_ID_1);
|
||||||
doReturn(mTelephonyManager2).when(mTelephonyManager).createForSubscriptionId(SUB_ID_2);
|
doReturn(mTelephonyManager2).when(mTelephonyManager).createForSubscriptionId(SUB_ID_2);
|
||||||
|
doReturn(mPackageManager).when(mContext).getPackageManager();
|
||||||
|
doReturn(mComponentName).when(mPhoneAccountHandle).getComponentName();
|
||||||
|
doReturn(PACKAGE_NAME).when(mComponentName).getPackageName();
|
||||||
|
|
||||||
doReturn(SUB_ID_1).when(mSubscriptionInfo1).getSubscriptionId();
|
doReturn(SUB_ID_1).when(mSubscriptionInfo1).getSubscriptionId();
|
||||||
doReturn(SUB_ID_2).when(mSubscriptionInfo2).getSubscriptionId();
|
doReturn(SUB_ID_2).when(mSubscriptionInfo2).getSubscriptionId();
|
||||||
@@ -96,4 +120,27 @@ public class MobileNetworkUtilsTest {
|
|||||||
verify(mTelephonyManager).setDataEnabled(true);
|
verify(mTelephonyManager).setDataEnabled(true);
|
||||||
verify(mTelephonyManager2).setDataEnabled(false);
|
verify(mTelephonyManager2).setDataEnabled(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void buildConfigureIntent_nullHandle_returnNull() {
|
||||||
|
assertThat(MobileNetworkUtils.buildPhoneAccountConfigureIntent(mContext, null)).isNull();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void buildConfigureIntent_noActivityHandleIntent_returnNull() {
|
||||||
|
doReturn(new ArrayList<ResolveInfo>()).when(mPackageManager).queryIntentActivities(
|
||||||
|
nullable(Intent.class), anyInt());
|
||||||
|
|
||||||
|
assertThat(MobileNetworkUtils.buildPhoneAccountConfigureIntent(mContext,
|
||||||
|
mPhoneAccountHandle)).isNull();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void buildConfigureIntent_hasActivityHandleIntent_returnIntent() {
|
||||||
|
doReturn(Arrays.asList(mResolveInfo)).when(mPackageManager).queryIntentActivities(
|
||||||
|
nullable(Intent.class), anyInt());
|
||||||
|
|
||||||
|
assertThat(MobileNetworkUtils.buildPhoneAccountConfigureIntent(mContext,
|
||||||
|
mPhoneAccountHandle)).isNotNull();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user