summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--data/etc/platform.xml2
-rw-r--r--telephony/java/android/telephony/TelephonyManager.java2
-rw-r--r--telephony/java/android/telephony/data/DataProfile.java7
-rw-r--r--telephony/java/android/telephony/data/QualifiedNetworksService.java40
-rw-r--r--telephony/java/android/telephony/euicc/EuiccManager.java2
-rw-r--r--telephony/java/com/android/internal/telephony/ITelephony.aidl2
6 files changed, 38 insertions, 17 deletions
diff --git a/data/etc/platform.xml b/data/etc/platform.xml
index 110a83c274a9..662fb77a7f5a 100644
--- a/data/etc/platform.xml
+++ b/data/etc/platform.xml
@@ -121,7 +121,7 @@
</permission>
<permission name="android.permission.WRITE_SECURITY_LOG">
- <group gid="security_log" />
+ <group gid="security_log_writer" />
</permission>
<!-- These are permissions that were mapped to gids but we need
diff --git a/telephony/java/android/telephony/TelephonyManager.java b/telephony/java/android/telephony/TelephonyManager.java
index bbd3c46c0d68..4e186e5e09fd 100644
--- a/telephony/java/android/telephony/TelephonyManager.java
+++ b/telephony/java/android/telephony/TelephonyManager.java
@@ -14837,7 +14837,7 @@ public class TelephonyManager {
}
ITelephony service = getITelephony();
if (service != null) {
- return service.isMvnoMatched(getSubId(), mvnoType, mvnoMatchData);
+ return service.isMvnoMatched(getSlotIndex(), mvnoType, mvnoMatchData);
}
} catch (RemoteException ex) {
Rlog.e(TAG, "Telephony#matchesCurrentSimOperator RemoteException" + ex);
diff --git a/telephony/java/android/telephony/data/DataProfile.java b/telephony/java/android/telephony/data/DataProfile.java
index 0b361dcef395..dfa0b5d5a672 100644
--- a/telephony/java/android/telephony/data/DataProfile.java
+++ b/telephony/java/android/telephony/data/DataProfile.java
@@ -232,13 +232,14 @@ public final class DataProfile implements Parcelable {
}
/**
- * @return True if the profile is enabled.
+ * @return {@code true} if the profile is enabled. If the profile only has a
+ * {@link TrafficDescriptor}, but no {@link ApnSetting}, then this profile is always enabled.
*/
public boolean isEnabled() {
if (mApnSetting != null) {
return mApnSetting.isEnabled();
}
- return false;
+ return true;
}
/**
@@ -534,7 +535,7 @@ public final class DataProfile implements Parcelable {
@Type
private int mType = -1;
- private boolean mEnabled;
+ private boolean mEnabled = true;
@ApnType
private int mSupportedApnTypesBitmask;
diff --git a/telephony/java/android/telephony/data/QualifiedNetworksService.java b/telephony/java/android/telephony/data/QualifiedNetworksService.java
index 4e85d8926f11..fb973361e398 100644
--- a/telephony/java/android/telephony/data/QualifiedNetworksService.java
+++ b/telephony/java/android/telephony/data/QualifiedNetworksService.java
@@ -26,6 +26,7 @@ import android.os.IBinder;
import android.os.Looper;
import android.os.Message;
import android.os.RemoteException;
+import android.telephony.AccessNetworkConstants;
import android.telephony.AccessNetworkConstants.AccessNetworkType;
import android.telephony.Annotation.ApnType;
import android.util.Log;
@@ -129,17 +130,36 @@ public abstract class QualifiedNetworksService extends Service {
}
/**
- * Update the qualified networks list. Network availability provider must invoke this method
- * whenever the qualified networks changes. If this method is never invoked for certain
- * APN types, then frameworks will always use the default (i.e. cellular) data and network
- * service.
+ * Update the suggested qualified networks list. Network availability provider must invoke
+ * this method whenever the suggested qualified networks changes. If this method is never
+ * invoked for certain APN types, then frameworks uses its own logic to determine the
+ * transport to setup the data network.
*
- * @param apnTypes APN types of the qualified networks. This must be a bitmask combination
- * of {@link ApnType}.
- * @param qualifiedNetworkTypes List of network types which are qualified for data
- * connection setup for {@link @apnType} in the preferred order. Each element in the list
- * is a {@link AccessNetworkType}. An empty list indicates no networks are qualified
- * for data setup.
+ * For example, QNS can suggest frameworks setting up IMS data network on IWLAN by
+ * specifying {@link ApnSetting#TYPE_IMS} with a list containing
+ * {@link AccessNetworkType#IWLAN}.
+ *
+ * If QNS considers multiple access networks qualified for certain APN type, it can
+ * suggest frameworks by specifying the APN type with multiple access networks in the list,
+ * for example {{@link AccessNetworkType#EUTRAN}, {@link AccessNetworkType#IWLAN}}.
+ * Frameworks will then first attempt to setup data on LTE network, and If the device moves
+ * from LTE to UMTS, then frameworks will perform handover the data network to the second
+ * preferred access network if available.
+ *
+ * If the {@code qualifiedNetworkTypes} list is empty, it means QNS has no suggestion to the
+ * frameworks, and for that APN type frameworks will route the corresponding network
+ * requests to {@link AccessNetworkConstants#TRANSPORT_TYPE_WWAN}.
+ *
+ * @param apnTypes APN type(s) of the qualified networks. This must be a bitmask combination
+ * of {@link ApnType}. The same qualified networks will be applicable to all APN types
+ * specified here.
+ * @param qualifiedNetworkTypes List of access network types which are qualified for data
+ * connection setup for {@code apnTypes} in the preferred order. Empty list means QNS has no
+ * suggestion to the frameworks, and for that APN type frameworks will route the
+ * corresponding network requests to {@link AccessNetworkConstants#TRANSPORT_TYPE_WWAN}.
+ *
+ * If one of the element is invalid, for example, {@link AccessNetworkType#UNKNOWN}, then
+ * this operation becomes a no-op.
*/
public final void updateQualifiedNetworkTypes(
@ApnType int apnTypes, @NonNull List<Integer> qualifiedNetworkTypes) {
diff --git a/telephony/java/android/telephony/euicc/EuiccManager.java b/telephony/java/android/telephony/euicc/EuiccManager.java
index a49a61b592ba..afcd263cf8aa 100644
--- a/telephony/java/android/telephony/euicc/EuiccManager.java
+++ b/telephony/java/android/telephony/euicc/EuiccManager.java
@@ -761,7 +761,7 @@ public class EuiccManager {
public static final int ERROR_INSTALL_PROFILE = 10009;
/**
- * Failed to load profile onto eUICC due to Profile Poicly Rules.
+ * Failed to load profile onto eUICC due to Profile Policy Rules.
* @see #EXTRA_EMBEDDED_SUBSCRIPTION_DETAILED_CODE for details
*/
public static final int ERROR_DISALLOWED_BY_PPR = 10010;
diff --git a/telephony/java/com/android/internal/telephony/ITelephony.aidl b/telephony/java/com/android/internal/telephony/ITelephony.aidl
index f5877d8fd20a..20b9f3a5c8c5 100644
--- a/telephony/java/com/android/internal/telephony/ITelephony.aidl
+++ b/telephony/java/com/android/internal/telephony/ITelephony.aidl
@@ -2148,7 +2148,7 @@ interface ITelephony {
List<RadioAccessSpecifier> getSystemSelectionChannels(int subId);
- boolean isMvnoMatched(int subId, int mvnoType, String mvnoMatchData);
+ boolean isMvnoMatched(int slotIndex, int mvnoType, String mvnoMatchData);
/**
* Enqueue a pending sms Consumer, which will answer with the user specified selection for an