Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 3f9ea37a authored by Silin Huang's avatar Silin Huang Committed by Automerger Merge Worker
Browse files

Merge "Fix a bug that the QuickAccessWalletTile displaying packageName as...

Merge "Fix a bug that the QuickAccessWalletTile displaying packageName as title." into sc-dev am: 851904a4

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/15237268

Change-Id: I95fcaaf6c756a9b1f45d1e224cd0d3f4aa89106d
parents ff5f95ec 851904a4
Loading
Loading
Loading
Loading
+17 −1
Original line number Original line Diff line number Diff line
@@ -153,9 +153,25 @@ public class QuickAccessWalletTile extends QSTileImpl<QSTile.State> {
        });
        });
    }
    }


    @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
    @Override
    protected void handleUpdateState(State state, Object arg) {
    protected void handleUpdateState(State state, Object arg) {
        CharSequence label = mController.getWalletClient().getServiceLabel();
        CharSequence label = getServiceLabelSafe();
        state.label = label == null ? mLabel : label;
        state.label = label == null ? mLabel : label;
        state.contentDescription = state.label;
        state.contentDescription = state.label;
        Drawable tileIcon = mController.getWalletClient().getTileIcon();
        Drawable tileIcon = mController.getWalletClient().getTileIcon();
+14 −0
Original line number Original line Diff line number Diff line
@@ -30,6 +30,7 @@ import static junit.framework.TestCase.assertTrue;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.anyInt;
import static org.mockito.ArgumentMatchers.anyInt;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.doAnswer;
import static org.mockito.Mockito.doNothing;
import static org.mockito.Mockito.doNothing;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.times;
@@ -255,6 +256,19 @@ public class QuickAccessWalletTileTest extends SysuiTestCase {
        assertThat(nextStartedIntent.getComponent().getClassName()).isEqualTo(walletClassName);
        assertThat(nextStartedIntent.getComponent().getClassName()).isEqualTo(walletClassName);
    }
    }


    @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
    @Test
    public void testHandleUpdateState_updateLabelAndIcon() {
    public void testHandleUpdateState_updateLabelAndIcon() {
        QSTile.State state = new QSTile.State();
        QSTile.State state = new QSTile.State();