Remove method that used to get rainbow bt icon

Move get rainbow bt icon method to settingsLib

Bug: 128570540
Test: RunSettingsRoboTests
Change-Id: Iee022bd1471f1da057b1852bb648e9c7ce334727
diff --git a/res/drawable/ic_homepage_about.xml b/res/drawable/ic_homepage_about.xml
index 07dbb34..ef2136e 100644
--- a/res/drawable/ic_homepage_about.xml
+++ b/res/drawable/ic_homepage_about.xml
@@ -18,7 +18,7 @@
 <layer-list xmlns:android="http://schemas.android.com/apk/res/android">
 
     <item>
-        <com.android.settings.homepage.AdaptiveIconShapeDrawable
+        <com.android.settingslib.widget.AdaptiveIconShapeDrawable
             android:width="@dimen/dashboard_tile_image_size"
             android:height="@dimen/dashboard_tile_image_size"
             android:color="@color/homepage_about_background" />
diff --git a/res/drawable/ic_homepage_accessibility.xml b/res/drawable/ic_homepage_accessibility.xml
index 39f241b..85d4be3 100644
--- a/res/drawable/ic_homepage_accessibility.xml
+++ b/res/drawable/ic_homepage_accessibility.xml
@@ -18,7 +18,7 @@
 <layer-list xmlns:android="http://schemas.android.com/apk/res/android">
 
     <item>
-        <com.android.settings.homepage.AdaptiveIconShapeDrawable
+        <com.android.settingslib.widget.AdaptiveIconShapeDrawable
             android:width="@dimen/dashboard_tile_image_size"
             android:height="@dimen/dashboard_tile_image_size"
             android:color="@color/homepage_accessibility_background" />
diff --git a/res/drawable/ic_homepage_accounts.xml b/res/drawable/ic_homepage_accounts.xml
index 17408ed..3f4f3ab 100644
--- a/res/drawable/ic_homepage_accounts.xml
+++ b/res/drawable/ic_homepage_accounts.xml
@@ -18,7 +18,7 @@
 <layer-list xmlns:android="http://schemas.android.com/apk/res/android">
 
     <item>
-        <com.android.settings.homepage.AdaptiveIconShapeDrawable
+        <com.android.settingslib.widget.AdaptiveIconShapeDrawable
             android:width="@dimen/dashboard_tile_image_size"
             android:height="@dimen/dashboard_tile_image_size"
             android:color="@color/homepage_accounts_background" />
diff --git a/res/drawable/ic_homepage_apps.xml b/res/drawable/ic_homepage_apps.xml
index 2a6789c..24a580c 100644
--- a/res/drawable/ic_homepage_apps.xml
+++ b/res/drawable/ic_homepage_apps.xml
@@ -18,7 +18,7 @@
 <layer-list xmlns:android="http://schemas.android.com/apk/res/android">
 
     <item>
-        <com.android.settings.homepage.AdaptiveIconShapeDrawable
+        <com.android.settingslib.widget.AdaptiveIconShapeDrawable
             android:width="@dimen/dashboard_tile_image_size"
             android:height="@dimen/dashboard_tile_image_size"
             android:color="@color/homepage_app_and_notification_background" />
diff --git a/res/drawable/ic_homepage_battery.xml b/res/drawable/ic_homepage_battery.xml
index 87bb5be..0a1f77a 100644
--- a/res/drawable/ic_homepage_battery.xml
+++ b/res/drawable/ic_homepage_battery.xml
@@ -18,7 +18,7 @@
 <layer-list xmlns:android="http://schemas.android.com/apk/res/android">
 
     <item>
-        <com.android.settings.homepage.AdaptiveIconShapeDrawable
+        <com.android.settingslib.widget.AdaptiveIconShapeDrawable
             android:width="@dimen/dashboard_tile_image_size"
             android:height="@dimen/dashboard_tile_image_size"
             android:color="@color/homepage_battery_background" />
diff --git a/res/drawable/ic_homepage_connected_device.xml b/res/drawable/ic_homepage_connected_device.xml
index f3ce186..a648c44 100644
--- a/res/drawable/ic_homepage_connected_device.xml
+++ b/res/drawable/ic_homepage_connected_device.xml
@@ -18,7 +18,7 @@
 <layer-list xmlns:android="http://schemas.android.com/apk/res/android">
 
     <item>
-        <com.android.settings.homepage.AdaptiveIconShapeDrawable
+        <com.android.settingslib.widget.AdaptiveIconShapeDrawable
             android:width="@dimen/dashboard_tile_image_size"
             android:height="@dimen/dashboard_tile_image_size"
             android:color="@color/homepage_connected_device_background" />
diff --git a/res/drawable/ic_homepage_display.xml b/res/drawable/ic_homepage_display.xml
index fba7149..72db231 100644
--- a/res/drawable/ic_homepage_display.xml
+++ b/res/drawable/ic_homepage_display.xml
@@ -18,7 +18,7 @@
 <layer-list xmlns:android="http://schemas.android.com/apk/res/android">
 
     <item>
-        <com.android.settings.homepage.AdaptiveIconShapeDrawable
+        <com.android.settingslib.widget.AdaptiveIconShapeDrawable
             android:width="@dimen/dashboard_tile_image_size"
             android:height="@dimen/dashboard_tile_image_size"
             android:color="@color/homepage_display_background" />
diff --git a/res/drawable/ic_homepage_location.xml b/res/drawable/ic_homepage_location.xml
index c5d6e89..db6a791 100644
--- a/res/drawable/ic_homepage_location.xml
+++ b/res/drawable/ic_homepage_location.xml
@@ -18,7 +18,7 @@
 <layer-list xmlns:android="http://schemas.android.com/apk/res/android">
 
     <item>
-        <com.android.settings.homepage.AdaptiveIconShapeDrawable
+        <com.android.settingslib.widget.AdaptiveIconShapeDrawable
             android:width="@dimen/dashboard_tile_image_size"
             android:height="@dimen/dashboard_tile_image_size"
             android:color="@color/homepage_location_background" />
diff --git a/res/drawable/ic_homepage_network.xml b/res/drawable/ic_homepage_network.xml
index 1457ab9..085a688 100644
--- a/res/drawable/ic_homepage_network.xml
+++ b/res/drawable/ic_homepage_network.xml
@@ -18,7 +18,7 @@
 <layer-list xmlns:android="http://schemas.android.com/apk/res/android">
 
     <item>
-        <com.android.settings.homepage.AdaptiveIconShapeDrawable
+        <com.android.settingslib.widget.AdaptiveIconShapeDrawable
             android:width="@dimen/dashboard_tile_image_size"
             android:height="@dimen/dashboard_tile_image_size"
             android:color="@color/homepage_network_background" />
diff --git a/res/drawable/ic_homepage_privacy.xml b/res/drawable/ic_homepage_privacy.xml
index a102905..ebf8beb 100644
--- a/res/drawable/ic_homepage_privacy.xml
+++ b/res/drawable/ic_homepage_privacy.xml
@@ -18,7 +18,7 @@
 <layer-list xmlns:android="http://schemas.android.com/apk/res/android">
 
     <item>
-        <com.android.settings.homepage.AdaptiveIconShapeDrawable
+        <com.android.settingslib.widget.AdaptiveIconShapeDrawable
             android:width="@dimen/dashboard_tile_image_size"
             android:height="@dimen/dashboard_tile_image_size"
             android:color="@color/homepage_privacy_background" />
diff --git a/res/drawable/ic_homepage_security.xml b/res/drawable/ic_homepage_security.xml
index 0b6a1fd..8a0673c 100644
--- a/res/drawable/ic_homepage_security.xml
+++ b/res/drawable/ic_homepage_security.xml
@@ -18,7 +18,7 @@
 <layer-list xmlns:android="http://schemas.android.com/apk/res/android">
 
     <item>
-        <com.android.settings.homepage.AdaptiveIconShapeDrawable
+        <com.android.settingslib.widget.AdaptiveIconShapeDrawable
             android:width="@dimen/dashboard_tile_image_size"
             android:height="@dimen/dashboard_tile_image_size"
             android:color="@color/homepage_security_background" />
diff --git a/res/drawable/ic_homepage_sound.xml b/res/drawable/ic_homepage_sound.xml
index 21995c5..a15f4c6 100644
--- a/res/drawable/ic_homepage_sound.xml
+++ b/res/drawable/ic_homepage_sound.xml
@@ -18,7 +18,7 @@
 <layer-list xmlns:android="http://schemas.android.com/apk/res/android">
 
     <item>
-        <com.android.settings.homepage.AdaptiveIconShapeDrawable
+        <com.android.settingslib.widget.AdaptiveIconShapeDrawable
             android:width="@dimen/dashboard_tile_image_size"
             android:height="@dimen/dashboard_tile_image_size"
             android:color="@color/homepage_sound_background" />
diff --git a/res/drawable/ic_homepage_storage.xml b/res/drawable/ic_homepage_storage.xml
index 5e5c3ab..11032fa 100644
--- a/res/drawable/ic_homepage_storage.xml
+++ b/res/drawable/ic_homepage_storage.xml
@@ -18,7 +18,7 @@
 <layer-list xmlns:android="http://schemas.android.com/apk/res/android">
 
     <item>
-        <com.android.settings.homepage.AdaptiveIconShapeDrawable
+        <com.android.settingslib.widget.AdaptiveIconShapeDrawable
             android:width="@dimen/dashboard_tile_image_size"
             android:height="@dimen/dashboard_tile_image_size"
             android:color="@color/homepage_storage_background" />
diff --git a/res/drawable/ic_homepage_support.xml b/res/drawable/ic_homepage_support.xml
index 906dd6c..2e35e4f 100644
--- a/res/drawable/ic_homepage_support.xml
+++ b/res/drawable/ic_homepage_support.xml
@@ -18,7 +18,7 @@
 <layer-list xmlns:android="http://schemas.android.com/apk/res/android">
 
     <item>
-        <com.android.settings.homepage.AdaptiveIconShapeDrawable
+        <com.android.settingslib.widget.AdaptiveIconShapeDrawable
             android:width="@dimen/dashboard_tile_image_size"
             android:height="@dimen/dashboard_tile_image_size"
             android:color="@color/homepage_support_background" />
diff --git a/res/drawable/ic_homepage_system_dashboard.xml b/res/drawable/ic_homepage_system_dashboard.xml
index 5e9f372..add1212 100644
--- a/res/drawable/ic_homepage_system_dashboard.xml
+++ b/res/drawable/ic_homepage_system_dashboard.xml
@@ -18,7 +18,7 @@
 <layer-list xmlns:android="http://schemas.android.com/apk/res/android">
 
     <item>
-        <com.android.settings.homepage.AdaptiveIconShapeDrawable
+        <com.android.settingslib.widget.AdaptiveIconShapeDrawable
             android:width="@dimen/dashboard_tile_image_size"
             android:height="@dimen/dashboard_tile_image_size"
             android:color="@color/homepage_system_background" />
diff --git a/res/values/arrays.xml b/res/values/arrays.xml
index b8bd424..ffe0aa5 100644
--- a/res/values/arrays.xml
+++ b/res/values/arrays.xml
@@ -1398,25 +1398,4 @@
         <item>@string/enhanced_4g_lte_mode_summary_4g_calling</item>
     </string-array>
 
-    <!-- Bluetooth icon foreground colors -->
-    <integer-array name="bt_icon_fg_colors">
-        <item>@color/bt_color_icon_1</item>
-        <item>@color/bt_color_icon_2</item>
-        <item>@color/bt_color_icon_3</item>
-        <item>@color/bt_color_icon_4</item>
-        <item>@color/bt_color_icon_5</item>
-        <item>@color/bt_color_icon_6</item>
-        <item>@color/bt_color_icon_7</item>
-    </integer-array>
-
-    <!-- Bluetooth icon background colors -->
-    <integer-array name="bt_icon_bg_colors">
-        <item>@color/bt_color_bg_1</item>
-        <item>@color/bt_color_bg_2</item>
-        <item>@color/bt_color_bg_3</item>
-        <item>@color/bt_color_bg_4</item>
-        <item>@color/bt_color_bg_5</item>
-        <item>@color/bt_color_bg_6</item>
-        <item>@color/bt_color_bg_7</item>
-    </integer-array>
 </resources>
diff --git a/res/values/colors.xml b/res/values/colors.xml
index ff040ee..b547b5d 100644
--- a/res/values/colors.xml
+++ b/res/values/colors.xml
@@ -141,21 +141,4 @@
     <color name="qr_background_color">#b3ffffff</color> <!-- 70% white transparency -->
     <!-- End of QR code scanner colors -->
 
-    <color name="bt_color_icon_1">#48a50e0e</color> <!-- 72% Material Red 900 -->
-    <color name="bt_color_icon_2">#480d652d</color> <!-- 72% Material Green 900 -->
-    <color name="bt_color_icon_3">#48e37400</color> <!-- 72% Material Yellow 900 -->
-    <color name="bt_color_icon_4">#48b06000</color> <!-- 72% Material Orange 900 -->
-    <color name="bt_color_icon_5">#489c166b</color> <!-- 72% Material Pink 900 -->
-    <color name="bt_color_icon_6">#48681da8</color> <!-- 72% Material Purple 900 -->
-    <color name="bt_color_icon_7">#48007b83</color> <!-- 72% Material Cyan 900 -->
-
-    <color name="bt_color_bg_1">#fad2cf</color> <!-- Material Red 100 -->
-    <color name="bt_color_bg_2">#ceead6</color> <!-- Material Green 100 -->
-    <color name="bt_color_bg_3">#feefc3</color> <!-- Material Yellow 100 -->
-    <color name="bt_color_bg_4">#fedfc8</color> <!-- Material Orange 100 -->
-    <color name="bt_color_bg_5">#fdcfe8</color> <!-- Material Pink 100 -->
-    <color name="bt_color_bg_6">#e9d2fd</color> <!-- Material Purple 100 -->
-    <color name="bt_color_bg_7">#cbf0f8</color> <!-- Material Cyan 100 -->
-
-    <color name="bt_outline_color">#1f000000</color> <!-- icon outline color -->
 </resources>
\ No newline at end of file
diff --git a/res/values/dimens.xml b/res/values/dimens.xml
index 4a65bc9..886f558 100755
--- a/res/values/dimens.xml
+++ b/res/values/dimens.xml
@@ -405,12 +405,6 @@
     <!-- Wi-Fi DPP fragment icon size -->
     <dimen name="wifi_dpp_fragment_icon_width_height">48dp</dimen>
 
-    <!-- Size of nearby icon -->
-    <dimen name="bt_nearby_icon_size">24dp</dimen>
-
-    <!-- Stroke size of adaptive outline -->
-    <dimen name="adaptive_outline_stroke">1dp</dimen>
-
     <!-- Elevation of bluetooth icon -->
     <dimen name="bt_icon_elevation">4dp</dimen>
 </resources>
diff --git a/src/com/android/settings/bluetooth/BluetoothDetailsHeaderController.java b/src/com/android/settings/bluetooth/BluetoothDetailsHeaderController.java
index fe73a2e..47d56bc 100644
--- a/src/com/android/settings/bluetooth/BluetoothDetailsHeaderController.java
+++ b/src/com/android/settings/bluetooth/BluetoothDetailsHeaderController.java
@@ -26,6 +26,7 @@
 
 import com.android.settings.R;
 import com.android.settings.widget.EntityHeaderController;
+import com.android.settingslib.bluetooth.BluetoothUtils;
 import com.android.settingslib.bluetooth.CachedBluetoothDevice;
 import com.android.settingslib.bluetooth.CachedBluetoothDeviceManager;
 import com.android.settingslib.bluetooth.LocalBluetoothManager;
@@ -65,8 +66,8 @@
     }
 
     protected void setHeaderProperties() {
-        final Pair<Drawable, String> pair = Utils.getBtRainbowDrawableWithDescription(mContext,
-                mCachedDevice);
+        final Pair<Drawable, String> pair =
+                BluetoothUtils.getBtRainbowDrawableWithDescription(mContext, mCachedDevice);
         String summaryText = mCachedDevice.getConnectionSummary();
         // If both the hearing aids are connected, two device status should be shown.
         // If Second Summary is unavailable, to set it to null.
diff --git a/src/com/android/settings/bluetooth/BluetoothDevicePreference.java b/src/com/android/settings/bluetooth/BluetoothDevicePreference.java
index 4a7ca27..f67822d 100644
--- a/src/com/android/settings/bluetooth/BluetoothDevicePreference.java
+++ b/src/com/android/settings/bluetooth/BluetoothDevicePreference.java
@@ -38,6 +38,7 @@
 import com.android.settings.R;
 import com.android.settings.overlay.FeatureFactory;
 import com.android.settings.widget.GearPreference;
+import com.android.settingslib.bluetooth.BluetoothUtils;
 import com.android.settingslib.bluetooth.CachedBluetoothDevice;
 import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
 
@@ -129,8 +130,8 @@
         // Null check is done at the framework
         setSummary(mCachedDevice.getConnectionSummary());
 
-        final Pair<Drawable, String> pair = Utils
-                .getBtRainbowDrawableWithDescription(getContext(), mCachedDevice);
+        final Pair<Drawable, String> pair =
+                BluetoothUtils.getBtRainbowDrawableWithDescription(getContext(), mCachedDevice);
         if (pair.first != null) {
             setIcon(pair.first);
             contentDescription = pair.second;
diff --git a/src/com/android/settings/bluetooth/Utils.java b/src/com/android/settings/bluetooth/Utils.java
index ecf40b6..a86e1d5 100755
--- a/src/com/android/settings/bluetooth/Utils.java
+++ b/src/com/android/settings/bluetooth/Utils.java
@@ -21,33 +21,20 @@
 import android.bluetooth.BluetoothProfile;
 import android.content.Context;
 import android.content.DialogInterface;
-import android.content.res.Resources;
-import android.graphics.Bitmap;
-import android.graphics.PorterDuff;
-import android.graphics.drawable.Drawable;
-import android.net.Uri;
-import android.provider.MediaStore;
 import android.provider.Settings;
 import android.util.Log;
-import android.util.Pair;
 import android.widget.Toast;
 
 import androidx.annotation.VisibleForTesting;
 import androidx.appcompat.app.AlertDialog;
 
 import com.android.settings.R;
-import com.android.settings.homepage.AdaptiveIconShapeDrawable;
 import com.android.settings.overlay.FeatureFactory;
-import com.android.settings.widget.AdaptiveIcon;
-import com.android.settings.widget.AdaptiveOutlineDrawable;
 import com.android.settingslib.bluetooth.BluetoothUtils;
 import com.android.settingslib.bluetooth.BluetoothUtils.ErrorListener;
-import com.android.settingslib.bluetooth.CachedBluetoothDevice;
 import com.android.settingslib.bluetooth.LocalBluetoothManager;
 import com.android.settingslib.bluetooth.LocalBluetoothManager.BluetoothManagerCallback;
 
-import java.io.IOException;
-
 /**
  * Utils is a helper class that contains constants for various
  * Android resource IDs, debug logging flags, and static methods
@@ -193,54 +180,4 @@
             return META_INT_ERROR;
         }
     }
-
-    /**
-     * Get colorful bluetooth icon with description
-     */
-    public static Pair<Drawable, String> getBtRainbowDrawableWithDescription(Context context,
-            CachedBluetoothDevice cachedDevice) {
-        final Pair<Drawable, String> pair = BluetoothUtils.getBtClassDrawableWithDescription(
-                context, cachedDevice);
-        final boolean untetheredHeadset = Utils.getBooleanMetaData(cachedDevice.getDevice(),
-                BluetoothDevice.METADATA_IS_UNTHETHERED_HEADSET);
-        final int iconSize = context.getResources().getDimensionPixelSize(
-                R.dimen.bt_nearby_icon_size);
-        final Resources resources = context.getResources();
-
-        // Deal with untethered headset
-        if (untetheredHeadset) {
-            final String uriString = Utils.getStringMetaData(cachedDevice.getDevice(),
-                    BluetoothDevice.METADATA_MAIN_ICON);
-            final Uri iconUri = uriString != null ? Uri.parse(uriString) : null;
-            if (iconUri != null) {
-                try {
-                    final Bitmap bitmap = MediaStore.Images.Media.getBitmap(
-                            context.getContentResolver(), iconUri);
-                    if (bitmap != null) {
-                        final Bitmap resizedBitmap = Bitmap.createScaledBitmap(bitmap, iconSize,
-                                iconSize, false);
-                        bitmap.recycle();
-                        final AdaptiveOutlineDrawable drawable = new AdaptiveOutlineDrawable(
-                                resources, resizedBitmap);
-                        return new Pair<>(drawable, pair.second);
-                    }
-                } catch (IOException e) {
-                    Log.e(TAG, "Failed to get drawable for: " + iconUri, e);
-                }
-            }
-        }
-
-        // Deal with normal headset
-        final int[] iconFgColors = resources.getIntArray(R.array.bt_icon_fg_colors);
-        final int[] iconBgColors = resources.getIntArray(R.array.bt_icon_bg_colors);
-
-        // get color index based on mac address
-        final int index =  Math.abs(cachedDevice.getAddress().hashCode()) % iconBgColors.length;
-        pair.first.setColorFilter(iconFgColors[index], PorterDuff.Mode.SRC_ATOP);
-        final Drawable adaptiveIcon = new AdaptiveIcon(context, pair.first);
-        ((AdaptiveIcon) adaptiveIcon).setBackgroundColor(iconBgColors[index]);
-
-        return new Pair<>(adaptiveIcon, pair.second);
-    }
-
 }
diff --git a/src/com/android/settings/dashboard/DashboardFeatureProviderImpl.java b/src/com/android/settings/dashboard/DashboardFeatureProviderImpl.java
index 744cbd2..2cac4c2 100644
--- a/src/com/android/settings/dashboard/DashboardFeatureProviderImpl.java
+++ b/src/com/android/settings/dashboard/DashboardFeatureProviderImpl.java
@@ -46,12 +46,12 @@
 import com.android.settings.SettingsActivity;
 import com.android.settings.dashboard.profileselector.ProfileSelectDialog;
 import com.android.settings.overlay.FeatureFactory;
-import com.android.settings.widget.AdaptiveIcon;
 import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
 import com.android.settingslib.drawer.DashboardCategory;
 import com.android.settingslib.drawer.Tile;
 import com.android.settingslib.drawer.TileUtils;
 import com.android.settingslib.utils.ThreadUtils;
+import com.android.settingslib.widget.AdaptiveIcon;
 
 import java.util.List;
 import java.util.Map;
diff --git a/src/com/android/settings/homepage/AdaptiveIconShapeDrawable.java b/src/com/android/settings/homepage/AdaptiveIconShapeDrawable.java
deleted file mode 100644
index 62b768a..0000000
--- a/src/com/android/settings/homepage/AdaptiveIconShapeDrawable.java
+++ /dev/null
@@ -1,43 +0,0 @@
-package com.android.settings.homepage;
-
-import android.content.res.Resources;
-import android.content.res.Resources.Theme;
-import android.graphics.Path;
-import android.graphics.drawable.AdaptiveIconDrawable;
-import android.graphics.drawable.ShapeDrawable;
-import android.graphics.drawable.shapes.PathShape;
-import android.util.AttributeSet;
-import android.util.PathParser;
-
-import org.xmlpull.v1.XmlPullParser;
-import org.xmlpull.v1.XmlPullParserException;
-
-import java.io.IOException;
-
-/**
- * Draws a filled {@link ShapeDrawable} using the path from {@link AdaptiveIconDrawable}.
- */
-public class AdaptiveIconShapeDrawable extends ShapeDrawable {
-    public AdaptiveIconShapeDrawable() {
-        super();
-    }
-
-    public AdaptiveIconShapeDrawable(Resources resources) {
-        super();
-        init(resources);
-    }
-
-    @Override
-    public void inflate(Resources r, XmlPullParser parser, AttributeSet attrs, Theme theme)
-            throws XmlPullParserException, IOException {
-        super.inflate(r, parser, attrs, theme);
-        init(r);
-    }
-
-    private void init(Resources resources) {
-        final float pathSize = AdaptiveIconDrawable.MASK_SIZE;
-        final Path path = new Path(PathParser.createPathFromPathData(
-                resources.getString(com.android.internal.R.string.config_icon_mask)));
-        setShape(new PathShape(path, pathSize, pathSize));
-    }
-}
diff --git a/src/com/android/settings/homepage/contextualcards/slices/BluetoothDevicesSlice.java b/src/com/android/settings/homepage/contextualcards/slices/BluetoothDevicesSlice.java
index a760eff..8267df0 100644
--- a/src/com/android/settings/homepage/contextualcards/slices/BluetoothDevicesSlice.java
+++ b/src/com/android/settings/homepage/contextualcards/slices/BluetoothDevicesSlice.java
@@ -46,6 +46,7 @@
 import com.android.settings.slices.CustomSliceable;
 import com.android.settings.slices.SliceBroadcastReceiver;
 import com.android.settings.slices.SliceBuilderUtils;
+import com.android.settingslib.bluetooth.BluetoothUtils;
 import com.android.settingslib.bluetooth.CachedBluetoothDevice;
 import com.android.settingslib.bluetooth.LocalBluetoothManager;
 
@@ -211,8 +212,7 @@
     @VisibleForTesting
     IconCompat getBluetoothDeviceIcon(CachedBluetoothDevice device) {
         final Pair<Drawable, String> pair =
-                com.android.settings.bluetooth.Utils.getBtRainbowDrawableWithDescription(mContext,
-                        device);
+                BluetoothUtils.getBtRainbowDrawableWithDescription(mContext, device);
         final Drawable drawable = pair.first;
 
         // Use default bluetooth icon if can't get icon.
diff --git a/src/com/android/settings/widget/AdaptiveIcon.java b/src/com/android/settings/widget/AdaptiveIcon.java
deleted file mode 100644
index 04b33ae..0000000
--- a/src/com/android/settings/widget/AdaptiveIcon.java
+++ /dev/null
@@ -1,122 +0,0 @@
-/*
- * Copyright (C) 2018 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.settings.widget;
-
-import static androidx.annotation.VisibleForTesting.NONE;
-
-import static com.android.settingslib.drawer.TileUtils.META_DATA_PREFERENCE_ICON_BACKGROUND_ARGB;
-import static com.android.settingslib.drawer.TileUtils.META_DATA_PREFERENCE_ICON_BACKGROUND_HINT;
-
-import android.content.Context;
-import android.content.pm.PackageManager;
-import android.graphics.PorterDuff;
-import android.graphics.drawable.Drawable;
-import android.graphics.drawable.LayerDrawable;
-import android.os.Bundle;
-import android.util.Log;
-
-import androidx.annotation.VisibleForTesting;
-
-import com.android.settings.R;
-import com.android.settings.homepage.AdaptiveIconShapeDrawable;
-import com.android.settingslib.drawer.Tile;
-
-public class AdaptiveIcon extends LayerDrawable {
-
-    private static final String TAG = "AdaptiveHomepageIcon";
-
-    @VisibleForTesting(otherwise = NONE)
-    int mBackgroundColor = -1;
-    private AdaptiveConstantState mAdaptiveConstantState;
-
-    public AdaptiveIcon(Context context, Drawable foreground) {
-        super(new Drawable[]{
-                new AdaptiveIconShapeDrawable(context.getResources()),
-                foreground
-        });
-        final int insetPx = context.getResources()
-                .getDimensionPixelSize(R.dimen.dashboard_tile_foreground_image_inset);
-        setLayerInset(1 /* index */, insetPx, insetPx, insetPx, insetPx);
-        mAdaptiveConstantState = new AdaptiveConstantState(context, foreground);
-    }
-
-    public void setBackgroundColor(Context context, Tile tile) {
-        final Bundle metaData = tile.getMetaData();
-        try {
-            if (metaData != null) {
-                // Load from bg.argb first
-                int bgColor = metaData.getInt(META_DATA_PREFERENCE_ICON_BACKGROUND_ARGB,
-                        0 /* default */);
-                // Not found, load from bg.hint
-                if (bgColor == 0) {
-                    final int colorRes = metaData.getInt(META_DATA_PREFERENCE_ICON_BACKGROUND_HINT,
-                            0 /* default */);
-                    if (colorRes != 0) {
-                        bgColor = context.getPackageManager()
-                                .getResourcesForApplication(tile.getPackageName())
-                                .getColor(colorRes, null /* theme */);
-                    }
-                }
-                // If found anything, use it.
-                if (bgColor != 0) {
-                    setBackgroundColor(bgColor);
-                    return;
-                }
-            }
-        } catch (PackageManager.NameNotFoundException e) {
-            Log.e(TAG, "Failed to set background color for " + tile.getPackageName());
-        }
-        setBackgroundColor(context.getColor(R.color.homepage_generic_icon_background));
-    }
-
-    public void setBackgroundColor(int color) {
-        mBackgroundColor = color;
-        getDrawable(0).setColorFilter(color, PorterDuff.Mode.SRC_ATOP);
-        Log.d(TAG, "Setting background color " + mBackgroundColor);
-        mAdaptiveConstantState.color = color;
-    }
-
-    @Override
-    public ConstantState getConstantState() {
-        return mAdaptiveConstantState;
-    }
-
-    @VisibleForTesting
-    static class AdaptiveConstantState extends ConstantState {
-        Context context;
-        Drawable drawable;
-        int color;
-
-        public AdaptiveConstantState(Context context, Drawable drawable) {
-            this.context = context;
-            this.drawable = drawable;
-        }
-
-        @Override
-        public Drawable newDrawable() {
-            final AdaptiveIcon icon = new AdaptiveIcon(context, drawable);
-            icon.setBackgroundColor(color);
-
-            return icon;
-        }
-
-        @Override
-        public int getChangingConfigurations() {
-            return 0;
-        }
-    }
-}
diff --git a/src/com/android/settings/widget/AdaptiveOutlineDrawable.java b/src/com/android/settings/widget/AdaptiveOutlineDrawable.java
deleted file mode 100644
index 84c4e2f..0000000
--- a/src/com/android/settings/widget/AdaptiveOutlineDrawable.java
+++ /dev/null
@@ -1,90 +0,0 @@
-/*
- * Copyright (C) 2019 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.settings.widget;
-
-import android.content.res.Resources;
-import android.graphics.Bitmap;
-import android.graphics.Canvas;
-import android.graphics.Color;
-import android.graphics.Paint;
-import android.graphics.Path;
-import android.graphics.Rect;
-import android.graphics.drawable.AdaptiveIconDrawable;
-import android.graphics.drawable.DrawableWrapper;
-import android.util.PathParser;
-
-import androidx.annotation.VisibleForTesting;
-
-import com.android.settings.R;
-import com.android.settings.homepage.AdaptiveIconShapeDrawable;
-
-/**
- * Adaptive outline drawable with white plain background color and black outline
- */
-public class AdaptiveOutlineDrawable extends DrawableWrapper {
-    @VisibleForTesting
-    final Paint mOutlinePaint;
-    private Path mPath;
-    private final int mInsetPx;
-    private final Bitmap mBitmap;
-
-    public AdaptiveOutlineDrawable(Resources resources, Bitmap bitmap) {
-        super(new AdaptiveIconShapeDrawable(resources));
-
-        getDrawable().setTint(Color.WHITE);
-        mPath = new Path(PathParser.createPathFromPathData(
-                resources.getString(com.android.internal.R.string.config_icon_mask)));
-        mOutlinePaint = new Paint();
-        mOutlinePaint.setColor(resources.getColor(R.color.bt_outline_color, null));
-        mOutlinePaint.setStyle(Paint.Style.STROKE);
-        mOutlinePaint.setStrokeWidth(resources.getDimension(R.dimen.adaptive_outline_stroke));
-        mOutlinePaint.setAntiAlias(true);
-
-        mInsetPx = resources
-                .getDimensionPixelSize(R.dimen.dashboard_tile_foreground_image_inset);
-        mBitmap = bitmap;
-    }
-
-    @Override
-    public void draw(Canvas canvas) {
-        super.draw(canvas);
-        final Rect bounds = getBounds();
-        final float pathSize = AdaptiveIconDrawable.MASK_SIZE;
-
-        final float scaleX = (bounds.right - bounds.left) / pathSize;
-        final float scaleY = (bounds.bottom - bounds.top) / pathSize;
-
-        final int count = canvas.save();
-        canvas.scale(scaleX, scaleY);
-        // Draw outline
-        canvas.drawPath(mPath, mOutlinePaint);
-        canvas.restoreToCount(count);
-
-        // Draw the foreground icon
-        canvas.drawBitmap(mBitmap, bounds.left + mInsetPx, bounds.top + mInsetPx, null);
-    }
-
-    @Override
-    public int getIntrinsicHeight() {
-        return mBitmap.getHeight() + 2 * mInsetPx;
-    }
-
-    @Override
-    public int getIntrinsicWidth() {
-        return mBitmap.getWidth() + 2 * mInsetPx;
-    }
-}
diff --git a/tests/robotests/src/com/android/settings/bluetooth/UtilsTest.java b/tests/robotests/src/com/android/settings/bluetooth/UtilsTest.java
index a956518..ee79d61 100644
--- a/tests/robotests/src/com/android/settings/bluetooth/UtilsTest.java
+++ b/tests/robotests/src/com/android/settings/bluetooth/UtilsTest.java
@@ -29,8 +29,6 @@
 
 import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
 import com.android.settings.testutils.FakeFeatureFactory;
-import com.android.settings.widget.AdaptiveIcon;
-import com.android.settingslib.bluetooth.CachedBluetoothDevice;
 import com.android.settingslib.bluetooth.LocalBluetoothManager;
 import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
 
@@ -41,7 +39,6 @@
 import org.mockito.Mock;
 import org.mockito.MockitoAnnotations;
 import org.robolectric.RobolectricTestRunner;
-import org.robolectric.RuntimeEnvironment;
 
 @RunWith(RobolectricTestRunner.class)
 public class UtilsTest {
@@ -54,8 +51,6 @@
     private Context mContext;
     @Mock
     private BluetoothDevice mBluetoothDevice;
-    @Mock
-    private CachedBluetoothDevice mCachedBluetoothDevice;
 
     private MetricsFeatureProvider mMetricsFeatureProvider;
 
@@ -111,17 +106,4 @@
         assertThat(Utils.getBooleanMetaData(mBluetoothDevice,
                 BluetoothDevice.METADATA_IS_UNTHETHERED_HEADSET)).isEqualTo(true);
     }
-
-    @Test
-    public void getBtRainbowDrawableWithDescription_normalHeadset_returnAdaptiveIcon() {
-        when(mBluetoothDevice.getMetadata(
-                BluetoothDevice.METADATA_IS_UNTHETHERED_HEADSET)).thenReturn("false");
-        when(mCachedBluetoothDevice.getDevice()).thenReturn(mBluetoothDevice);
-        when(mCachedBluetoothDevice.getAddress()).thenReturn("1f:aa:bb");
-
-        assertThat(Utils.getBtRainbowDrawableWithDescription(RuntimeEnvironment.application,
-                mCachedBluetoothDevice).first).isInstanceOf(
-                AdaptiveIcon.class);
-    }
-
 }
diff --git a/tests/robotests/src/com/android/settings/widget/AdaptiveIconTest.java b/tests/robotests/src/com/android/settings/widget/AdaptiveIconTest.java
deleted file mode 100644
index 1be3332..0000000
--- a/tests/robotests/src/com/android/settings/widget/AdaptiveIconTest.java
+++ /dev/null
@@ -1,141 +0,0 @@
-/*
- * Copyright (C) 2018 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.settings.widget;
-
-import static com.android.settingslib.drawer.TileUtils.META_DATA_PREFERENCE_ICON_BACKGROUND_ARGB;
-import static com.android.settingslib.drawer.TileUtils.META_DATA_PREFERENCE_ICON_BACKGROUND_HINT;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import static org.mockito.Mockito.doReturn;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.spy;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
-
-import android.content.Context;
-import android.content.pm.ActivityInfo;
-import android.graphics.Color;
-import android.graphics.PorterDuff;
-import android.graphics.drawable.ColorDrawable;
-import android.graphics.drawable.Icon;
-import android.graphics.drawable.ShapeDrawable;
-import android.os.Bundle;
-
-import com.android.settings.R;
-import com.android.settings.homepage.AdaptiveIconShapeDrawable;
-import com.android.settingslib.drawer.CategoryKey;
-import com.android.settingslib.drawer.Tile;
-
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.robolectric.RobolectricTestRunner;
-import org.robolectric.RuntimeEnvironment;
-
-@RunWith(RobolectricTestRunner.class)
-public class AdaptiveIconTest {
-
-    private Context mContext;
-    private ActivityInfo mActivityInfo;
-
-    @Before
-    public void setUp() {
-        mContext = RuntimeEnvironment.application;
-        mActivityInfo = new ActivityInfo();
-        mActivityInfo.packageName = mContext.getPackageName();
-        mActivityInfo.name = "class";
-        mActivityInfo.metaData = new Bundle();
-    }
-
-    @Test
-    public void createIcon_shouldSetBackgroundAndInset() {
-        final AdaptiveIcon icon =
-                new AdaptiveIcon(mContext, new ColorDrawable(Color.BLACK));
-
-        assertThat(icon.getNumberOfLayers()).isEqualTo(2);
-        assertThat(icon.getDrawable(0)).isInstanceOf(AdaptiveIconShapeDrawable.class);
-    }
-
-    @Test
-    public void setBackgroundColor_shouldUpdateColorFilter() {
-        final AdaptiveIcon icon =
-                spy(new AdaptiveIcon(mContext, new ColorDrawable(Color.BLACK)));
-        final ShapeDrawable background = mock(ShapeDrawable.class);
-        when(icon.getDrawable(0)).thenReturn(background);
-
-        icon.setBackgroundColor(Color.BLUE);
-
-        verify(background).setColorFilter(Color.BLUE, PorterDuff.Mode.SRC_ATOP);
-    }
-
-    @Test
-    public void setBackgroundColor_externalTileWithBackgroundColorRawValue_shouldUpdateIcon() {
-        final Tile tile = spy(new Tile(mActivityInfo, CategoryKey.CATEGORY_HOMEPAGE));
-        mActivityInfo.metaData.putInt(META_DATA_PREFERENCE_ICON_BACKGROUND_ARGB, 0xff0000);
-        doReturn(Icon.createWithResource(mContext, R.drawable.ic_settings_accent))
-                .when(tile).getIcon(mContext);
-        final AdaptiveIcon icon =
-                new AdaptiveIcon(mContext, new ColorDrawable(Color.BLACK));
-
-        icon.setBackgroundColor(mContext, tile);
-        assertThat(icon.mBackgroundColor).isEqualTo(0xff0000);
-    }
-
-    @Test
-    public void setBackgroundColor_tileWithoutBackgroundColor_shouldSetDefaultBackgroundColor() {
-        final Tile tile = spy(new Tile(mActivityInfo, CategoryKey.CATEGORY_HOMEPAGE));
-        doReturn(Icon.createWithResource(mContext, R.drawable.ic_settings_accent))
-            .when(tile).getIcon(mContext);
-        final AdaptiveIcon icon =
-            new AdaptiveIcon(mContext, new ColorDrawable(Color.BLACK));
-
-        icon.setBackgroundColor(mContext, tile);
-
-        assertThat(icon.mBackgroundColor).isEqualTo(
-            mContext.getColor(R.color.homepage_generic_icon_background));
-    }
-
-    @Test
-    public void onBindTile_externalTileWithBackgroundColorHint_shouldUpdateIcon() {
-        final Tile tile = spy(new Tile(mActivityInfo, CategoryKey.CATEGORY_HOMEPAGE));
-        mActivityInfo.metaData.putInt(META_DATA_PREFERENCE_ICON_BACKGROUND_HINT,
-                R.color.material_blue_500);
-        doReturn(Icon.createWithResource(mContext, R.drawable.ic_settings_accent))
-                .when(tile).getIcon(mContext);
-
-        final AdaptiveIcon icon =
-                new AdaptiveIcon(mContext, new ColorDrawable(Color.BLACK));
-        icon.setBackgroundColor(mContext, tile);
-
-        assertThat(icon.mBackgroundColor)
-                .isEqualTo(mContext.getColor(R.color.material_blue_500));
-    }
-
-    @Test
-    public void getConstantState_returnCorrectState() {
-        final AdaptiveIcon icon =
-                new AdaptiveIcon(mContext, new ColorDrawable(Color.BLACK));
-        icon.setBackgroundColor(Color.YELLOW);
-
-        final AdaptiveIcon.AdaptiveConstantState state =
-                (AdaptiveIcon.AdaptiveConstantState) icon.getConstantState();
-
-        assertThat(state.color).isEqualTo(Color.YELLOW);
-        assertThat(state.context).isEqualTo(mContext);
-    }
-}
diff --git a/tests/robotests/src/com/android/settings/widget/AdaptiveOutlineDrawableTest.java b/tests/robotests/src/com/android/settings/widget/AdaptiveOutlineDrawableTest.java
deleted file mode 100644
index f21fc34..0000000
--- a/tests/robotests/src/com/android/settings/widget/AdaptiveOutlineDrawableTest.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Copyright (C) 2019 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.settings.widget;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import android.content.res.Resources;
-import android.graphics.Paint;
-
-import com.android.settings.R;
-
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.robolectric.RobolectricTestRunner;
-import org.robolectric.RuntimeEnvironment;
-
-@RunWith(RobolectricTestRunner.class)
-public class AdaptiveOutlineDrawableTest {
-
-    @Test
-    public void constructor_initPaint() {
-        final Resources resources = RuntimeEnvironment.application.getResources();
-        final AdaptiveOutlineDrawable drawable = new AdaptiveOutlineDrawable(resources, null);
-
-        assertThat(drawable.mOutlinePaint.getStyle()).isEqualTo(Paint.Style.STROKE);
-        assertThat(drawable.mOutlinePaint.getStrokeWidth()).isWithin(0.01f).of(
-                resources.getDimension(R.dimen.adaptive_outline_stroke));
-    }
-
-}