summaryrefslogtreecommitdiff
path: root/service
diff options
context:
space:
mode:
authorRoshan Pius <rpius@google.com>2019-06-28 16:44:38 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2019-06-28 16:44:38 +0000
commitd2aff57d0254d5597bb0e771fa20a2093c2e04ca (patch)
treea468f733547a3e4c8b50e5561374ff77a89137b8 /service
parentb55924f05bde1a901aa0ef45368b47cd06816658 (diff)
parenta171b41e2c47a93408c1f867e8570330cbcf5091 (diff)
Merge "WifiNetworkSuggestionsManager: Persist enterprise credentials" into qt-dev
Diffstat (limited to 'service')
-rw-r--r--service/java/com/android/server/wifi/NetworkSuggestionStoreData.java54
1 files changed, 45 insertions, 9 deletions
diff --git a/service/java/com/android/server/wifi/NetworkSuggestionStoreData.java b/service/java/com/android/server/wifi/NetworkSuggestionStoreData.java
index 088092df4..9627a9daa 100644
--- a/service/java/com/android/server/wifi/NetworkSuggestionStoreData.java
+++ b/service/java/com/android/server/wifi/NetworkSuggestionStoreData.java
@@ -17,9 +17,9 @@
package com.android.server.wifi;
import android.net.wifi.WifiConfiguration;
+import android.net.wifi.WifiEnterpriseConfig;
import android.net.wifi.WifiNetworkSuggestion;
import android.os.Process;
-import android.text.TextUtils;
import android.util.Log;
import android.util.Pair;
@@ -53,6 +53,8 @@ public class NetworkSuggestionStoreData implements WifiConfigStore.StoreData {
"NetworkSuggestionPerApp";
private static final String XML_TAG_SECTION_HEADER_NETWORK_SUGGESTION = "NetworkSuggestion";
private static final String XML_TAG_SECTION_HEADER_WIFI_CONFIGURATION = "WifiConfiguration";
+ private static final String XML_TAG_SECTION_HEADER_WIFI_ENTERPRISE_CONFIGURATION =
+ "WifiEnterpriseConfiguration";
private static final String XML_TAG_IS_APP_INTERACTION_REQUIRED = "IsAppInteractionRequired";
private static final String XML_TAG_IS_USER_INTERACTION_REQUIRED = "IsUserInteractionRequired";
private static final String XML_TAG_SUGGESTOR_UID = "SuggestorUid";
@@ -187,6 +189,16 @@ public class NetworkSuggestionStoreData implements WifiConfigStore.StoreData {
XmlUtil.writeNextSectionStart(out, XML_TAG_SECTION_HEADER_WIFI_CONFIGURATION);
WifiConfigurationXmlUtil.writeToXmlForConfigStore(out, suggestion.wifiConfiguration);
XmlUtil.writeNextSectionEnd(out, XML_TAG_SECTION_HEADER_WIFI_CONFIGURATION);
+ // Serialize enterprise configuration for enterprise networks.
+ if (suggestion.wifiConfiguration.enterpriseConfig != null
+ && suggestion.wifiConfiguration.enterpriseConfig.getEapMethod()
+ != WifiEnterpriseConfig.Eap.NONE) {
+ XmlUtil.writeNextSectionStart(
+ out, XML_TAG_SECTION_HEADER_WIFI_ENTERPRISE_CONFIGURATION);
+ XmlUtil.WifiEnterpriseConfigXmlUtil.writeToXml(
+ out, suggestion.wifiConfiguration.enterpriseConfig);
+ XmlUtil.writeNextSectionEnd(out, XML_TAG_SECTION_HEADER_WIFI_ENTERPRISE_CONFIGURATION);
+ }
// Serialize other fields
XmlUtil.writeNextValue(out, XML_TAG_IS_APP_INTERACTION_REQUIRED,
@@ -269,7 +281,8 @@ public class NetworkSuggestionStoreData implements WifiConfigStore.StoreData {
*/
private WifiNetworkSuggestion parseNetworkSuggestion(XmlPullParser in, int outerTagDepth)
throws XmlPullParserException, IOException {
- WifiConfiguration wifiConfiguration = null;
+ Pair<String, WifiConfiguration> parsedConfig = null;
+ WifiEnterpriseConfig enterpriseConfig = null;
boolean isAppInteractionRequired = false;
boolean isUserInteractionRequired = false;
int suggestorUid = Process.INVALID_UID;
@@ -299,16 +312,35 @@ public class NetworkSuggestionStoreData implements WifiConfigStore.StoreData {
"Unknown value name found: " + valueName[0]);
}
} else {
- if (!TextUtils.equals(in.getName(), XML_TAG_SECTION_HEADER_WIFI_CONFIGURATION)) {
- throw new XmlPullParserException("Unexpected section under configuration: "
- + in.getName());
+ String tagName = in.getName();
+ if (tagName == null) {
+ throw new XmlPullParserException("Unexpected null under "
+ + XML_TAG_SECTION_HEADER_NETWORK_SUGGESTION);
+ }
+ switch (tagName) {
+ case XML_TAG_SECTION_HEADER_WIFI_CONFIGURATION:
+ if (parsedConfig != null) {
+ throw new XmlPullParserException("Detected duplicate tag for: "
+ + XML_TAG_SECTION_HEADER_WIFI_CONFIGURATION);
+ }
+ parsedConfig = WifiConfigurationXmlUtil.parseFromXml(
+ in, outerTagDepth + 1);
+ break;
+ case XML_TAG_SECTION_HEADER_WIFI_ENTERPRISE_CONFIGURATION:
+ if (enterpriseConfig != null) {
+ throw new XmlPullParserException("Detected duplicate tag for: "
+ + XML_TAG_SECTION_HEADER_WIFI_ENTERPRISE_CONFIGURATION);
+ }
+ enterpriseConfig = XmlUtil.WifiEnterpriseConfigXmlUtil.parseFromXml(
+ in, outerTagDepth + 1);
+ break;
+ default:
+ throw new XmlPullParserException("Unknown tag under "
+ + XML_TAG_SECTION_HEADER_NETWORK_SUGGESTION + ": " + in.getName());
}
- Pair<String, WifiConfiguration> parsedConfigWithConfigKey =
- WifiConfigurationXmlUtil.parseFromXml(in, outerTagDepth + 1);
- wifiConfiguration = parsedConfigWithConfigKey.second;
}
}
- if (wifiConfiguration == null) {
+ if (parsedConfig == null || parsedConfig.second == null) {
throw new XmlPullParserException("XML parsing of wifi configuration failed");
}
if (suggestorUid == -1) {
@@ -317,6 +349,10 @@ public class NetworkSuggestionStoreData implements WifiConfigStore.StoreData {
if (suggestorPackageName == null) {
throw new XmlPullParserException("XML parsing of suggestor package name failed");
}
+ WifiConfiguration wifiConfiguration = parsedConfig.second;
+ if (enterpriseConfig != null) {
+ wifiConfiguration.enterpriseConfig = enterpriseConfig;
+ }
return new WifiNetworkSuggestion(
wifiConfiguration, isAppInteractionRequired, isUserInteractionRequired,
suggestorUid, suggestorPackageName);