summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Su <dysu@google.com>2020-07-10 23:34:45 +0000
committerAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>2020-07-10 23:34:45 +0000
commit3a524f8d1a4fcd7164652bab45a4d1935a40253e (patch)
tree92407f72355ce68826833890a667abe7f12ff0cf
parent771b4dd25daedb13c9de736a8bca18485fcb1ab6 (diff)
parent54039d06b6c995bc7b36bb3315e67a5018a7db4d (diff)
Fix EapFailureNotifier failing to resolve resource name dynamically am: 000ad45722 am: 54039d06b6
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/opt/net/wifi/+/12112844 Change-Id: I0ca25d2bb623fb6d6aa6c0a3a3698b051d24264c
-rw-r--r--service/java/com/android/server/wifi/EapFailureNotifier.java12
-rw-r--r--service/java/com/android/server/wifi/WifiContext.java13
-rw-r--r--tests/wifitests/src/com/android/server/wifi/EapFailureNotifierTest.java3
3 files changed, 24 insertions, 4 deletions
diff --git a/service/java/com/android/server/wifi/EapFailureNotifier.java b/service/java/com/android/server/wifi/EapFailureNotifier.java
index fe4cfbd66..cdb120321 100644
--- a/service/java/com/android/server/wifi/EapFailureNotifier.java
+++ b/service/java/com/android/server/wifi/EapFailureNotifier.java
@@ -75,8 +75,16 @@ public class EapFailureNotifier {
Resources res = getResourcesForSubId(mContext,
mWifiCarrierInfoManager.getBestMatchSubscriptionId(config));
if (res == null) return;
- int resourceId = res.getIdentifier(ERROR_MESSAGE_OVERLAY_PREFIX + errorCode,
- "string", mContext.getWifiOverlayApkPkgName());
+ int resourceId = res.getIdentifier(
+ ERROR_MESSAGE_OVERLAY_PREFIX + errorCode,
+ "string",
+ // getIdentifier seems to use the Java package name rather than the Android
+ // application package name. i.e. what you would have used if the resource name was
+ // statically known:
+ // import com.android.wifi.resources.R;
+ // ...
+ // R.string.wifi_eap_error_message_code_###
+ mContext.getWifiOverlayJavaPkgName());
if (resourceId == 0) return;
String errorMessage = res.getString(resourceId, config.SSID);
diff --git a/service/java/com/android/server/wifi/WifiContext.java b/service/java/com/android/server/wifi/WifiContext.java
index b360a8e3c..bbcb9d8a7 100644
--- a/service/java/com/android/server/wifi/WifiContext.java
+++ b/service/java/com/android/server/wifi/WifiContext.java
@@ -40,6 +40,7 @@ public class WifiContext extends ContextWrapper {
/** Intent action that is used to identify ServiceWifiResources.apk */
private static final String ACTION_RESOURCES_APK =
"com.android.server.wifi.intent.action.SERVICE_WIFI_RESOURCES_APK";
+ private static final String WIFI_OVERLAY_JAVA_PKG_NAME = "com.android.wifi.resources";
private String mWifiOverlayApkPkgName;
@@ -52,7 +53,17 @@ public class WifiContext extends ContextWrapper {
super(contextBase);
}
- /** Get the package name of ServiceWifiResources.apk */
+ /**
+ * Get the Java package name of the resources in ServiceWifiResources.apk
+ *
+ * i.e. the package name of the Wifi Resources R class:
+ * {@code import com.android.wifi.resources.R;}, which is "com.android.wifi.resources"
+ */
+ public String getWifiOverlayJavaPkgName() {
+ return WIFI_OVERLAY_JAVA_PKG_NAME;
+ }
+
+ /** Get the Android application package name of ServiceWifiResources.apk */
public String getWifiOverlayApkPkgName() {
if (mWifiOverlayApkPkgName != null) {
return mWifiOverlayApkPkgName;
diff --git a/tests/wifitests/src/com/android/server/wifi/EapFailureNotifierTest.java b/tests/wifitests/src/com/android/server/wifi/EapFailureNotifierTest.java
index f2ec351ae..d2a3ac0dc 100644
--- a/tests/wifitests/src/com/android/server/wifi/EapFailureNotifierTest.java
+++ b/tests/wifitests/src/com/android/server/wifi/EapFailureNotifierTest.java
@@ -89,7 +89,8 @@ public class EapFailureNotifierTest extends WifiBaseTest {
when(mResources.getString(eq(0), anyString())).thenReturn(null);
when(mResources.getString(eq(1), anyString())).thenReturn("Error Message");
when(mContext.createPackageContext(anyString(), eq(0))).thenReturn(mContext);
- when(mContext.getWifiOverlayApkPkgName()).thenReturn("test.com.android.wifi.resources");
+ when(mContext.getWifiOverlayApkPkgName()).thenReturn("test.com.oem.android.wifi.resources");
+ when(mContext.getWifiOverlayJavaPkgName()).thenReturn("test.com.android.wifi.resources");
mEapFailureNotifier =
new EapFailureNotifier(mContext, mFrameworkFacade, mWifiCarrierInfoManager);
}