Merge "Fix anr when open connected devices" into sc-dev am: 94c64def14
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/14702758 Change-Id: I2ead1ad8fb697a54930a5c92f6fd54a176070cf7
This commit is contained in:
@@ -1222,19 +1222,22 @@ public class CachedBluetoothDevice implements Comparable<CachedBluetoothDevice>
|
||||
*/
|
||||
public Pair<Drawable, String> getDrawableWithDescription() {
|
||||
Uri uri = BluetoothUtils.getUriMetaData(mDevice, BluetoothDevice.METADATA_MAIN_ICON);
|
||||
Pair<Drawable, String> pair = BluetoothUtils.getBtClassDrawableWithDescription(
|
||||
mContext, this);
|
||||
|
||||
if (BluetoothUtils.isAdvancedDetailsHeader(mDevice) && uri != null) {
|
||||
BitmapDrawable drawable = mDrawableCache.get(uri.toString());
|
||||
if (drawable != null) {
|
||||
Resources resources = mContext.getResources();
|
||||
return new Pair<>(new AdaptiveOutlineDrawable(
|
||||
resources, drawable.getBitmap()),
|
||||
BluetoothUtils.getBtClassDrawableWithDescription(mContext, this).second);
|
||||
resources, drawable.getBitmap()), pair.second);
|
||||
}
|
||||
|
||||
refresh();
|
||||
}
|
||||
|
||||
return BluetoothUtils.getBtRainbowDrawableWithDescription(mContext, this);
|
||||
return new Pair<>(BluetoothUtils.buildBtRainbowDrawable(
|
||||
mContext, pair.first, getAddress().hashCode()), pair.second);
|
||||
}
|
||||
|
||||
void releaseLruCache() {
|
||||
|
||||
@@ -31,7 +31,9 @@ import android.bluetooth.BluetoothAdapter;
|
||||
import android.bluetooth.BluetoothDevice;
|
||||
import android.bluetooth.BluetoothProfile;
|
||||
import android.content.Context;
|
||||
import android.graphics.drawable.BitmapDrawable;
|
||||
import android.media.AudioManager;
|
||||
import android.util.LruCache;
|
||||
|
||||
import com.android.settingslib.R;
|
||||
import com.android.settingslib.testutils.shadow.ShadowBluetoothAdapter;
|
||||
@@ -961,6 +963,10 @@ public class CachedBluetoothDeviceTest {
|
||||
|
||||
@Test
|
||||
public void getDrawableWithDescription_isAdvancedDevice_returnAdvancedIcon() {
|
||||
LruCache lruCache = mock(LruCache.class);
|
||||
mCachedDevice.mDrawableCache = lruCache;
|
||||
BitmapDrawable drawable = mock(BitmapDrawable.class);
|
||||
when(lruCache.get("fake_uri")).thenReturn(drawable);
|
||||
when(mDevice.getMetadata(BluetoothDevice.METADATA_MAIN_ICON))
|
||||
.thenReturn("fake_uri".getBytes());
|
||||
when(mDevice.getMetadata(BluetoothDevice.METADATA_IS_UNTETHERED_HEADSET))
|
||||
|
||||
Reference in New Issue
Block a user