Merge "Fix a bug that the QuickAccessWalletTile displaying packageName as title." into sc-dev
diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/QuickAccessWalletTile.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/QuickAccessWalletTile.java
index 82b6c0c..ab81ac1 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/tiles/QuickAccessWalletTile.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/QuickAccessWalletTile.java
@@ -153,9 +153,25 @@
});
}
+ @Nullable
+ private CharSequence getServiceLabelSafe() {
+ try {
+ return mController.getWalletClient().getServiceLabel();
+ } catch (RuntimeException e) {
+ Log.e(TAG, "Failed to get the service label safely, recreating wallet client", e);
+ mController.reCreateWalletClient();
+ try {
+ return mController.getWalletClient().getServiceLabel();
+ } catch (RuntimeException e2) {
+ Log.e(TAG, "The QAW service label is broken.", e2);
+ return null;
+ }
+ }
+ }
+
@Override
protected void handleUpdateState(State state, Object arg) {
- CharSequence label = mController.getWalletClient().getServiceLabel();
+ CharSequence label = getServiceLabelSafe();
state.label = label == null ? mLabel : label;
state.contentDescription = state.label;
Drawable tileIcon = mController.getWalletClient().getTileIcon();
diff --git a/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/QuickAccessWalletTileTest.java b/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/QuickAccessWalletTileTest.java
index a70c2be..17797b7 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/QuickAccessWalletTileTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/QuickAccessWalletTileTest.java
@@ -30,6 +30,7 @@
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.anyInt;
import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.Mockito.doAnswer;
import static org.mockito.Mockito.doNothing;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.times;
@@ -256,6 +257,19 @@
}
@Test
+ public void testGetServiceLabelUnsafe_recreateWalletClient() {
+ doAnswer(invocation -> {
+ throw new Exception("Bad service label.");
+ }).when(mQuickAccessWalletClient).getServiceLabel();
+
+ QSTile.State state = new QSTile.State();
+
+ mTile.handleUpdateState(state, null);
+
+ verify(mController).reCreateWalletClient();
+ }
+
+ @Test
public void testHandleUpdateState_updateLabelAndIcon() {
QSTile.State state = new QSTile.State();