Merge "Import translations. DO NOT MERGE ANYWHERE" into udc-dev
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index d36dfec..8d03ed7 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -164,6 +164,9 @@
<!-- Needed to set user association to a certain sim -->
<uses-permission android:name="android.permission.MANAGE_SUBSCRIPTION_USER_ASSOCIATION"/>
+ <!-- Needed to register for UWB state changes for satellite communication -->
+ <uses-permission android:name="android.permission.UWB_PRIVILEGED"/>
+
<permission android:name="com.android.phone.permission.ACCESS_LAST_KNOWN_CELL_ID"
android:label="Access last known cell identity."
android:protectionLevel="signature"/>
diff --git a/src/com/android/phone/slice/SlicePurchaseController.java b/src/com/android/phone/slice/SlicePurchaseController.java
index 4166b1e..ef8780c 100644
--- a/src/com/android/phone/slice/SlicePurchaseController.java
+++ b/src/com/android/phone/slice/SlicePurchaseController.java
@@ -679,8 +679,8 @@
}
}
- /*
- return a new PremiumNetworkEntitlementApi object.
+ /**
+ * @return A new PremiumNetworkEntitlementApi object.
*/
@VisibleForTesting
public PremiumNetworkEntitlementApi getPremiumNetworkEntitlementApi() {
@@ -987,6 +987,7 @@
int[] supportedCapabilities = getCarrierConfigs().getIntArray(
CarrierConfigManager.KEY_SUPPORTED_PREMIUM_CAPABILITIES_INT_ARRAY);
if (supportedCapabilities == null) {
+ logd("No premium capabilities are supported by the carrier.");
return false;
}
return Arrays.stream(supportedCapabilities)
@@ -1015,8 +1016,13 @@
private boolean arePremiumCapabilitiesSupportedByDevice() {
if ((mPhone.getCachedAllowedNetworkTypesBitmask()
& TelephonyManager.NETWORK_TYPE_BITMASK_NR) == 0) {
+ logd("Premium capabilities unsupported because NR is not allowed on the device.");
return false;
}
+ if (!mIsSlicingUpsellEnabled) {
+ logd("Premium capabilities unsupported because "
+ + "slicing upsell is disabled on the device.");
+ }
return mIsSlicingUpsellEnabled;
}
@@ -1048,7 +1054,13 @@
private boolean isNetworkAvailable() {
if (mPhone.getServiceState().getDataRoaming()) {
- logd("Network unavailable because it is roaming.");
+ logd("Network unavailable because device is roaming.");
+ return false;
+ }
+
+ if (!mPhone.getDataSettingsManager().isDataEnabledForReason(
+ TelephonyManager.DATA_ENABLED_REASON_USER)) {
+ logd("Network unavailable because user data is disabled.");
return false;
}
diff --git a/tests/src/com/android/phone/slice/SlicePurchaseControllerTest.java b/tests/src/com/android/phone/slice/SlicePurchaseControllerTest.java
index a29ed09..d79b305 100644
--- a/tests/src/com/android/phone/slice/SlicePurchaseControllerTest.java
+++ b/tests/src/com/android/phone/slice/SlicePurchaseControllerTest.java
@@ -57,6 +57,7 @@
import com.android.TelephonyTestBase;
import com.android.internal.telephony.CommandsInterface;
import com.android.internal.telephony.Phone;
+import com.android.internal.telephony.data.DataSettingsManager;
import org.junit.Before;
import org.junit.Test;
@@ -88,6 +89,7 @@
@Mock CarrierConfigManager mCarrierConfigManager;
@Mock CommandsInterface mCommandsInterface;
@Mock ServiceState mServiceState;
+ @Mock DataSettingsManager mDataSettingsManager;
@Mock PremiumNetworkEntitlementApi mPremiumNetworkEntitlementApi;
@Mock SharedPreferences mSharedPreferences;
@Mock SharedPreferences.Editor mEditor;
@@ -116,6 +118,7 @@
doReturn(PHONE_ID).when(mPhone).getPhoneId();
doReturn(mContext).when(mPhone).getContext();
doReturn(mServiceState).when(mPhone).getServiceState();
+ doReturn(mDataSettingsManager).when(mPhone).getDataSettingsManager();
mPhone.mCi = mCommandsInterface;
doReturn(mCarrierConfigManager).when(mContext)
@@ -357,6 +360,7 @@
// retry with valid network
doReturn(TelephonyManager.NETWORK_TYPE_NR).when(mServiceState).getDataNetworkType();
+ doReturn(true).when(mDataSettingsManager).isDataEnabledForReason(anyInt());
mSlicePurchaseController.purchasePremiumCapability(
TelephonyManager.PREMIUM_CAPABILITY_PRIORITIZE_LATENCY, mHandler.obtainMessage());
@@ -375,6 +379,7 @@
SlicePurchaseController.SLICE_PURCHASE_TEST_FILE);
doReturn(SubscriptionManager.getDefaultDataSubscriptionId()).when(mPhone).getSubId();
doReturn(TelephonyManager.NETWORK_TYPE_NR).when(mServiceState).getDataNetworkType();
+ doReturn(true).when(mDataSettingsManager).isDataEnabledForReason(anyInt());
doReturn(null).when(mPremiumNetworkEntitlementApi).checkEntitlementStatus(anyInt());
mSlicePurchaseController.purchasePremiumCapability(
@@ -713,6 +718,7 @@
doReturn(SubscriptionManager.getDefaultDataSubscriptionId()).when(mPhone).getSubId();
// network available
doReturn(TelephonyManager.NETWORK_TYPE_NR).when(mServiceState).getDataNetworkType();
+ doReturn(true).when(mDataSettingsManager).isDataEnabledForReason(anyInt());
// entitlement check passed
mEntitlementResponse.mEntitlementStatus =
PremiumNetworkEntitlementResponse.PREMIUM_NETWORK_ENTITLEMENT_STATUS_DISABLED;