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

Commit 188db23f authored by Silin Huang's avatar Silin Huang Committed by Automerger Merge Worker
Browse files

Merge "Add a tile service meta-data for QuickAccessWalletServiceInfo that...

Merge "Add a tile service meta-data for QuickAccessWalletServiceInfo that fetches a drawable for wallet tile." into sc-dev am: 516cd210 am: 3c90dcf4

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

Change-Id: I433cde564a0876f55cca1cae8200a1c50f26f815
parents f9d37003 3c90dcf4
Loading
Loading
Loading
Loading
+8 −0
Original line number Original line Diff line number Diff line
@@ -177,6 +177,14 @@ public interface QuickAccessWalletClient extends Closeable {
    @Nullable
    @Nullable
    Drawable getLogo();
    Drawable getLogo();


    /**
     * Returns the tile icon associated with the {@link QuickAccessWalletService}.
     *
     * @hide
     */
    @Nullable
    Drawable getTileIcon();

    /**
    /**
     * Returns the service label specified by {@code android:label} in the service manifest entry.
     * Returns the service label specified by {@code android:label} in the service manifest entry.
     *
     *
+6 −0
Original line number Original line Diff line number Diff line
@@ -307,6 +307,12 @@ public class QuickAccessWalletClientImpl implements QuickAccessWalletClient, Ser
        return mServiceInfo == null ? null : mServiceInfo.getWalletLogo(mContext);
        return mServiceInfo == null ? null : mServiceInfo.getWalletLogo(mContext);
    }
    }


    @Nullable
    @Override
    public Drawable getTileIcon() {
        return mServiceInfo == null ? null : mServiceInfo.getTileIcon();
    }

    @Override
    @Override
    @Nullable
    @Nullable
    public CharSequence getServiceLabel() {
    public CharSequence getServiceLabel() {
+7 −0
Original line number Original line Diff line number Diff line
@@ -195,6 +195,13 @@ public abstract class QuickAccessWalletService extends Service {
     */
     */
    public static final String SERVICE_META_DATA = "android.quickaccesswallet";
    public static final String SERVICE_META_DATA = "android.quickaccesswallet";


    /**
     * Name of the QuickAccessWallet tile service meta-data.
     *
     * @hide
     */
    public static final String TILE_SERVICE_META_DATA = "android.quickaccesswallet.tile";

    private final Handler mHandler = new Handler(Looper.getMainLooper());
    private final Handler mHandler = new Handler(Looper.getMainLooper());


    /**
    /**
+37 −2
Original line number Original line Diff line number Diff line
@@ -56,12 +56,15 @@ class QuickAccessWalletServiceInfo {


    private final ServiceInfo mServiceInfo;
    private final ServiceInfo mServiceInfo;
    private final ServiceMetadata mServiceMetadata;
    private final ServiceMetadata mServiceMetadata;
    private final TileServiceMetadata mTileServiceMetadata;


    private QuickAccessWalletServiceInfo(
    private QuickAccessWalletServiceInfo(
            @NonNull ServiceInfo serviceInfo,
            @NonNull ServiceInfo serviceInfo,
            @NonNull ServiceMetadata metadata) {
            @NonNull ServiceMetadata metadata,
            @NonNull TileServiceMetadata tileServiceMetadata) {
        mServiceInfo = serviceInfo;
        mServiceInfo = serviceInfo;
        mServiceMetadata = metadata;
        mServiceMetadata = metadata;
        mTileServiceMetadata = tileServiceMetadata;
    }
    }


    @Nullable
    @Nullable
@@ -84,7 +87,9 @@ class QuickAccessWalletServiceInfo {
        }
        }


        ServiceMetadata metadata = parseServiceMetadata(context, serviceInfo);
        ServiceMetadata metadata = parseServiceMetadata(context, serviceInfo);
        return new QuickAccessWalletServiceInfo(serviceInfo, metadata);
        TileServiceMetadata tileServiceMetadata =
                new TileServiceMetadata(parseTileServiceMetadata(context, serviceInfo));
        return new QuickAccessWalletServiceInfo(serviceInfo, metadata, tileServiceMetadata);
    }
    }


    private static ComponentName getDefaultPaymentApp(Context context) {
    private static ComponentName getDefaultPaymentApp(Context context) {
@@ -105,6 +110,31 @@ class QuickAccessWalletServiceInfo {
        return resolveInfos.isEmpty() ? null : resolveInfos.get(0).serviceInfo;
        return resolveInfos.isEmpty() ? null : resolveInfos.get(0).serviceInfo;
    }
    }


    private static class TileServiceMetadata {
        @Nullable
        private final Drawable mTileIcon;

        private TileServiceMetadata(@Nullable Drawable tileIcon) {
            mTileIcon = tileIcon;
        }
    }

    @Nullable
    private static Drawable parseTileServiceMetadata(Context context, ServiceInfo serviceInfo) {
        PackageManager pm = context.getPackageManager();
        int tileIconDrawableId =
                serviceInfo.metaData.getInt(QuickAccessWalletService.TILE_SERVICE_META_DATA);
        if (tileIconDrawableId != 0) {
            try {
                Resources resources = pm.getResourcesForApplication(serviceInfo.applicationInfo);
                return resources.getDrawable(tileIconDrawableId, null);
            } catch (PackageManager.NameNotFoundException e) {
                Log.e(TAG, "Error parsing quickaccesswallet tile service meta-data", e);
            }
        }
        return null;
    }

    private static class ServiceMetadata {
    private static class ServiceMetadata {
        @Nullable
        @Nullable
        private final String mSettingsActivity;
        private final String mSettingsActivity;
@@ -216,6 +246,11 @@ class QuickAccessWalletServiceInfo {
        return mServiceInfo.loadIcon(context.getPackageManager());
        return mServiceInfo.loadIcon(context.getPackageManager());
    }
    }


    @Nullable
    Drawable getTileIcon() {
        return mTileServiceMetadata.mTileIcon;
    }

    @NonNull
    @NonNull
    CharSequence getShortcutShortLabel(Context context) {
    CharSequence getShortcutShortLabel(Context context) {
        if (!TextUtils.isEmpty(mServiceMetadata.mShortcutShortLabel)) {
        if (!TextUtils.isEmpty(mServiceMetadata.mShortcutShortLabel)) {
+8 −17
Original line number Original line Diff line number Diff line
@@ -20,18 +20,9 @@
        android:width="24dp"
        android:width="24dp"
        android:height="24dp"
        android:height="24dp"
        android:viewportWidth="24"
        android:viewportWidth="24"
    android:viewportHeight="24">
        android:viewportHeight="24"
  <group>
        android:tint="?attr/colorControlNormal">
    <clip-path
        android:pathData="M2.15,1.54h20v21h-20z"/>
  <path
  <path
        android:pathData="M19,21.83H5.35a3.19,3.19 0,0 1,-3.2 -3.19v-7A3.19,3.19 0,0 1,5.35 8.5H19a3.19,3.19 0,0 1,3.19 3.19v7A3.19,3.19 0,0 1,19 21.83ZM5.35,10.44A1.25,1.25 0,0 0,4.1 11.69v7a1.25,1.25 0,0 0,1.25 1.24H19a1.25,1.25 0,0 0,1.25 -1.24v-7A1.25,1.25 0,0 0,19 10.44Z"
      android:fillColor="@android:color/white"
        android:fillColor="#FF000000" />
      android:pathData="M20,4L4,4c-1.11,0 -1.99,0.89 -1.99,2L2,18c0,1.11 0.89,2 2,2h16c1.11,0 2,-0.89 2,-2L22,6c0,-1.11 -0.89,-2 -2,-2zM20,18L4,18v-6h16v6zM20,8L4,8L4,6h16v2z"/>
    <path
        android:pathData="M4.7,10.16 L4.21,8.57 16,5a3.56,3.56 0,0 1,3.1 0.25c1,0.67 1.65,2 1.89,4l-1.66,0.2C19.12,8 18.72,7 18.15,6.62a2,2 0,0 0,-1.7 0Z"
        android:fillColor="#FF000000" />
    <path
        android:pathData="M4.43,10.47l-1,-1.34 7.31,-5.44c3,-1.86 5.51,1 6.33,2L15.82,6.77c-2.1,-2.44 -3.23,-2.26 -4.14,-1.7Z"
        android:fillColor="#FF000000" />
  </group>
</vector>
</vector>
Loading