summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--apex/Android.bp1
-rw-r--r--services/core/java/com/android/server/audio/AudioService.java1
-rw-r--r--services/core/java/com/android/server/timezonedetector/GeolocationTimeZoneSuggestion.java2
-rw-r--r--telephony/java/android/telephony/TelephonyManager.java49
-rw-r--r--wifi/java/android/net/wifi/WifiNetworkSuggestion.java3
-rw-r--r--wifi/java/android/net/wifi/hotspot2/PasspointConfiguration.java88
-rw-r--r--wifi/tests/src/android/net/wifi/WifiNetworkSuggestionTest.java23
7 files changed, 148 insertions, 19 deletions
diff --git a/apex/Android.bp b/apex/Android.bp
index 0a535a8fe9b9..4e80acb64e05 100644
--- a/apex/Android.bp
+++ b/apex/Android.bp
@@ -15,6 +15,7 @@
mainline_stubs_args =
"--error UnhiddenSystemApi " +
"--hide BroadcastBehavior " +
+ "--hide CallbackInterface " +
"--hide DeprecationMismatch " +
"--hide HiddenSuperclass " +
"--hide HiddenTypedefConstant " +
diff --git a/services/core/java/com/android/server/audio/AudioService.java b/services/core/java/com/android/server/audio/AudioService.java
index 89150aee44ad..4d971a51e885 100644
--- a/services/core/java/com/android/server/audio/AudioService.java
+++ b/services/core/java/com/android/server/audio/AudioService.java
@@ -545,7 +545,6 @@ public class AudioService extends IAudioService.Stub
AudioSystem.DEVICE_OUT_DGTL_DOCK_HEADSET,
AudioSystem.DEVICE_OUT_ANLG_DOCK_HEADSET,
AudioSystem.DEVICE_OUT_HDMI_ARC,
- AudioSystem.DEVICE_OUT_SPDIF,
AudioSystem.DEVICE_OUT_AUX_LINE));
// Devices for which the volume is always max, no volume panel
Set<Integer> mFullVolumeDevices = new HashSet<>();
diff --git a/services/core/java/com/android/server/timezonedetector/GeolocationTimeZoneSuggestion.java b/services/core/java/com/android/server/timezonedetector/GeolocationTimeZoneSuggestion.java
index 118899add968..1867ee207958 100644
--- a/services/core/java/com/android/server/timezonedetector/GeolocationTimeZoneSuggestion.java
+++ b/services/core/java/com/android/server/timezonedetector/GeolocationTimeZoneSuggestion.java
@@ -61,7 +61,7 @@ import java.util.StringTokenizer;
*/
public final class GeolocationTimeZoneSuggestion {
- @NonNull private final List<String> mZoneIds;
+ @Nullable private final List<String> mZoneIds;
@Nullable private ArrayList<String> mDebugInfo;
public GeolocationTimeZoneSuggestion(@Nullable List<String> zoneIds) {
diff --git a/telephony/java/android/telephony/TelephonyManager.java b/telephony/java/android/telephony/TelephonyManager.java
index 886ec33af2b8..9e4228473c3e 100644
--- a/telephony/java/android/telephony/TelephonyManager.java
+++ b/telephony/java/android/telephony/TelephonyManager.java
@@ -12290,23 +12290,15 @@ public class TelephonyManager {
@NonNull
public Map<Integer, List<EmergencyNumber>> getEmergencyNumberList(
@EmergencyServiceCategories int categories) {
- Map<Integer, List<EmergencyNumber>> emergencyNumberList = new HashMap<>();
+ Map<Integer, List<EmergencyNumber>> emergencyNumberListForCategories = new HashMap<>();
try {
ITelephony telephony = getITelephony();
if (telephony != null) {
- emergencyNumberList = telephony.getEmergencyNumberList(
- mContext.getOpPackageName(), mContext.getAttributionTag());
- if (emergencyNumberList != null) {
- for (Integer subscriptionId : emergencyNumberList.keySet()) {
- List<EmergencyNumber> numberList = emergencyNumberList.get(subscriptionId);
- for (EmergencyNumber number : numberList) {
- if (!number.isInEmergencyServiceCategories(categories)) {
- numberList.remove(number);
- }
- }
- }
- }
- return emergencyNumberList;
+ Map<Integer, List<EmergencyNumber>> emergencyNumberList =
+ telephony.getEmergencyNumberList(mContext.getOpPackageName(),
+ mContext.getAttributionTag());
+ emergencyNumberListForCategories =
+ filterEmergencyNumbersByCategories(emergencyNumberList, categories);
} else {
throw new IllegalStateException("telephony service is null.");
}
@@ -12314,7 +12306,34 @@ public class TelephonyManager {
Log.e(TAG, "getEmergencyNumberList with Categories RemoteException", ex);
ex.rethrowAsRuntimeException();
}
- return emergencyNumberList;
+ return emergencyNumberListForCategories;
+ }
+
+ /**
+ * Filter emergency numbers with categories.
+ *
+ * @hide
+ */
+ @VisibleForTesting
+ public Map<Integer, List<EmergencyNumber>> filterEmergencyNumbersByCategories(
+ Map<Integer, List<EmergencyNumber>> emergencyNumberList,
+ @EmergencyServiceCategories int categories) {
+ Map<Integer, List<EmergencyNumber>> emergencyNumberListForCategories = new HashMap<>();
+ if (emergencyNumberList != null) {
+ for (Integer subscriptionId : emergencyNumberList.keySet()) {
+ List<EmergencyNumber> allNumbersForSub = emergencyNumberList.get(
+ subscriptionId);
+ List<EmergencyNumber> numbersForCategoriesPerSub = new ArrayList<>();
+ for (EmergencyNumber number : allNumbersForSub) {
+ if (number.isInEmergencyServiceCategories(categories)) {
+ numbersForCategoriesPerSub.add(number);
+ }
+ }
+ emergencyNumberListForCategories.put(
+ subscriptionId, numbersForCategoriesPerSub);
+ }
+ }
+ return emergencyNumberListForCategories;
}
/**
diff --git a/wifi/java/android/net/wifi/WifiNetworkSuggestion.java b/wifi/java/android/net/wifi/WifiNetworkSuggestion.java
index e606d533a532..b7450c538ff8 100644
--- a/wifi/java/android/net/wifi/WifiNetworkSuggestion.java
+++ b/wifi/java/android/net/wifi/WifiNetworkSuggestion.java
@@ -917,6 +917,9 @@ public final class WifiNetworkSuggestion implements Parcelable {
mPasspointConfiguration.setCarrierId(mCarrierId);
mPasspointConfiguration.setSubscriptionId(mSubscriptionId);
mPasspointConfiguration.setMeteredOverride(wifiConfiguration.meteredOverride);
+ mPasspointConfiguration.setOemPrivate(mIsNetworkOemPrivate);
+ mPasspointConfiguration.setOemPaid(mIsNetworkOemPaid);
+ mPasspointConfiguration.setCarrierMerged(mIsCarrierMerged);
wifiConfiguration.macRandomizationSetting = mIsEnhancedMacRandomizationEnabled
? WifiConfiguration.RANDOMIZATION_ENHANCED
: WifiConfiguration.RANDOMIZATION_PERSISTENT;
diff --git a/wifi/java/android/net/wifi/hotspot2/PasspointConfiguration.java b/wifi/java/android/net/wifi/hotspot2/PasspointConfiguration.java
index 357c5bcfa265..006fbaa028bd 100644
--- a/wifi/java/android/net/wifi/hotspot2/PasspointConfiguration.java
+++ b/wifi/java/android/net/wifi/hotspot2/PasspointConfiguration.java
@@ -474,6 +474,27 @@ public final class PasspointConfiguration implements Parcelable {
*/
private boolean mIsEnhancedMacRandomizationEnabled = false;
+
+ /**
+ * Indicate whether the network is oem paid or not. Networks are considered oem paid
+ * if the corresponding connection is only available to system apps.
+ * @hide
+ */
+ private boolean mIsOemPaid;
+
+ /**
+ * Indicate whether the network is oem private or not. Networks are considered oem private
+ * if the corresponding connection is only available to system apps.
+ * @hide
+ */
+ private boolean mIsOemPrivate;
+
+ /**
+ * Indicate whether or not the network is a carrier merged network.
+ * @hide
+ */
+ private boolean mIsCarrierMerged;
+
/**
* Indicates if the end user has expressed an explicit opinion about the
* meteredness of this network, such as through the Settings app.
@@ -589,6 +610,54 @@ public final class PasspointConfiguration implements Parcelable {
}
/**
+ * Set whether the network is oem paid or not.
+ * @hide
+ */
+ public void setOemPaid(boolean isOemPaid) {
+ mIsOemPaid = isOemPaid;
+ }
+
+ /**
+ * Get whether the network is oem paid or not.
+ * @hide
+ */
+ public boolean isOemPaid() {
+ return mIsOemPaid;
+ }
+
+ /**
+ * Set whether the network is oem private or not.
+ * @hide
+ */
+ public void setOemPrivate(boolean isOemPrivate) {
+ mIsOemPrivate = isOemPrivate;
+ }
+
+ /**
+ * Get whether the network is oem private or not.
+ * @hide
+ */
+ public boolean isOemPrivate() {
+ return mIsOemPrivate;
+ }
+
+ /**
+ * Set whether the network is carrier merged or not.
+ * @hide
+ */
+ public void setCarrierMerged(boolean isCarrierMerged) {
+ mIsCarrierMerged = isCarrierMerged;
+ }
+
+ /**
+ * Get whether the network is carrier merged or not.
+ * @hide
+ */
+ public boolean isCarrierMerged() {
+ return mIsCarrierMerged;
+ }
+
+ /**
* Constructor for creating PasspointConfiguration with default values.
*/
public PasspointConfiguration() {}
@@ -635,6 +704,9 @@ public final class PasspointConfiguration implements Parcelable {
mIsMacRandomizationEnabled = source.mIsMacRandomizationEnabled;
mIsEnhancedMacRandomizationEnabled = source.mIsEnhancedMacRandomizationEnabled;
mMeteredOverride = source.mMeteredOverride;
+ mIsCarrierMerged = source.mIsCarrierMerged;
+ mIsOemPaid = source.mIsOemPaid;
+ mIsOemPrivate = source.mIsOemPrivate;
}
@Override
@@ -669,6 +741,9 @@ public final class PasspointConfiguration implements Parcelable {
dest.writeBoolean(mIsEnhancedMacRandomizationEnabled);
dest.writeInt(mMeteredOverride);
dest.writeInt(mSubscriptionId);
+ dest.writeBoolean(mIsCarrierMerged);
+ dest.writeBoolean(mIsOemPaid);
+ dest.writeBoolean(mIsOemPrivate);
}
@Override
@@ -700,6 +775,9 @@ public final class PasspointConfiguration implements Parcelable {
&& mUsageLimitTimeLimitInMinutes == that.mUsageLimitTimeLimitInMinutes
&& mCarrierId == that.mCarrierId
&& mSubscriptionId == that.mSubscriptionId
+ && mIsOemPrivate == that.mIsOemPrivate
+ && mIsOemPaid == that.mIsOemPaid
+ && mIsCarrierMerged == that.mIsCarrierMerged
&& mIsAutojoinEnabled == that.mIsAutojoinEnabled
&& mIsMacRandomizationEnabled == that.mIsMacRandomizationEnabled
&& mIsEnhancedMacRandomizationEnabled == that.mIsEnhancedMacRandomizationEnabled
@@ -715,7 +793,8 @@ public final class PasspointConfiguration implements Parcelable {
mSubscriptionExpirationTimeMillis, mUsageLimitUsageTimePeriodInMinutes,
mUsageLimitStartTimeInMillis, mUsageLimitDataLimit, mUsageLimitTimeLimitInMinutes,
mServiceFriendlyNames, mCarrierId, mIsAutojoinEnabled, mIsMacRandomizationEnabled,
- mIsEnhancedMacRandomizationEnabled, mMeteredOverride, mSubscriptionId);
+ mIsEnhancedMacRandomizationEnabled, mMeteredOverride, mSubscriptionId,
+ mIsCarrierMerged, mIsOemPaid, mIsOemPrivate);
}
@Override
@@ -774,6 +853,9 @@ public final class PasspointConfiguration implements Parcelable {
builder.append("mIsMacRandomizationEnabled:" + mIsMacRandomizationEnabled);
builder.append("mIsEnhancedMacRandomizationEnabled:" + mIsEnhancedMacRandomizationEnabled);
builder.append("mMeteredOverride:" + mMeteredOverride);
+ builder.append("mIsCarrierMerged:" + mIsCarrierMerged);
+ builder.append("mIsOemPaid:" + mIsOemPaid);
+ builder.append("mIsOemPrivate" + mIsOemPrivate);
return builder.toString();
}
@@ -884,6 +966,10 @@ public final class PasspointConfiguration implements Parcelable {
config.mIsEnhancedMacRandomizationEnabled = in.readBoolean();
config.mMeteredOverride = in.readInt();
config.mSubscriptionId = in.readInt();
+ config.mIsCarrierMerged = in.readBoolean();
+ config.mIsOemPaid = in.readBoolean();
+ config.mIsOemPrivate = in.readBoolean();
+
return config;
}
diff --git a/wifi/tests/src/android/net/wifi/WifiNetworkSuggestionTest.java b/wifi/tests/src/android/net/wifi/WifiNetworkSuggestionTest.java
index 643a78c38f91..5e829188f93f 100644
--- a/wifi/tests/src/android/net/wifi/WifiNetworkSuggestionTest.java
+++ b/wifi/tests/src/android/net/wifi/WifiNetworkSuggestionTest.java
@@ -809,7 +809,7 @@ public class WifiNetworkSuggestionTest {
/**
* Ensure {@link WifiNetworkSuggestion.Builder#build()} throws an exception
* when both {@link WifiNetworkSuggestion.Builder#setWpa3Passphrase(String)} and
- * {@link WifiNetworkSuggestion.Builderi
+ * {@link WifiNetworkSuggestion.Builder
* #setWpa3EnterpriseStandardModeConfig(WifiEnterpriseConfig)}
* are invoked.
*/
@@ -1310,6 +1310,7 @@ public class WifiNetworkSuggestionTest {
.build();
assertTrue(suggestion.isOemPaid());
assertFalse(suggestion.isUserAllowedToManuallyConnect);
+ assertTrue(suggestion.getPasspointConfig().isOemPaid());
}
/**
@@ -1345,6 +1346,7 @@ public class WifiNetworkSuggestionTest {
.build();
assertTrue(suggestion.isOemPrivate());
assertFalse(suggestion.isUserAllowedToManuallyConnect);
+ assertTrue(suggestion.getPasspointConfig().isOemPrivate());
}
/**
@@ -1439,6 +1441,25 @@ public class WifiNetworkSuggestionTest {
}
/**
+ * Validate {@link WifiNetworkSuggestion.Builder#setCarrierMerged(boolean)} (boolean)} set the
+ * correct value to the passpoint network.
+ */
+ @Test
+ public void testSetCarrierMergedNetworkOnPasspointNetwork() {
+ assumeTrue(SdkLevel.isAtLeastS());
+
+ PasspointConfiguration passpointConfiguration = PasspointTestUtils.createConfig();
+ WifiNetworkSuggestion suggestion = new WifiNetworkSuggestion.Builder()
+ .setPasspointConfig(passpointConfiguration)
+ .setSubscriptionId(1)
+ .setCarrierMerged(true)
+ .setIsMetered(true)
+ .build();
+ assertTrue(suggestion.isCarrierMerged());
+ assertTrue(suggestion.getPasspointConfig().isCarrierMerged());
+ }
+
+ /**
* Ensure {@link WifiNetworkSuggestion.Builder#build()} throws an exception
* when set both {@link WifiNetworkSuggestion.Builder#setCarrierMerged(boolean)} (boolean)}
* to true on a network is not metered.