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

Commit 65d142ba authored by Hugh Chen's avatar Hugh Chen Committed by Automerger Merge Worker
Browse files

Merge "Use device type to show corresponding icon and name" into rvc-dev am:...

Merge "Use device type to show corresponding icon and name" into rvc-dev am: ea93f91f am: 289eb5b8

Change-Id: Ica36f2b2ff1e20d159bd334ac89d2c6da853d28b
parents dfda2cce 289eb5b8
Loading
Loading
Loading
Loading
+32 −0
Original line number Original line Diff line number Diff line
<!--
  Copyright (C) 2020 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
  -->

<vector xmlns:android="http://schemas.android.com/apk/res/android"
        android:width="24dp"
        android:height="24dp"
        android:viewportWidth="24"
        android:viewportHeight="24"
        android:tint="?android:attr/colorControlNormal">
    <path
        android:pathData="M18.2,1L9.8,1C8.81,1 8,1.81 8,2.8v14.4c0,0.99 0.81,1.79 1.8,1.79l8.4,0.01c0.99,0 1.8,-0.81 1.8,-1.8L20,2.8c0,-0.99 -0.81,-1.8 -1.8,-1.8zM14,3c1.1,0 2,0.89 2,2s-0.9,2 -2,2 -2,-0.89 -2,-2 0.9,-2 2,-2zM14,16.5c-2.21,0 -4,-1.79 -4,-4s1.79,-4 4,-4 4,1.79 4,4 -1.79,4 -4,4z"
        android:fillColor="#000000"/>
    <path
        android:pathData="M14,12.5m-2.5,0a2.5,2.5 0,1 1,5 0a2.5,2.5 0,1 1,-5 0"
        android:fillColor="#000000"/>
    <path
        android:pathData="M6,5H4v16c0,1.1 0.89,2 2,2h10v-2H6V5z"
        android:fillColor="#000000"/>
</vector>
 No newline at end of file
+23 −1
Original line number Original line Diff line number Diff line
@@ -15,11 +15,17 @@
 */
 */
package com.android.settingslib.media;
package com.android.settingslib.media;


import static android.media.MediaRoute2Info.TYPE_GROUP;
import static android.media.MediaRoute2Info.TYPE_REMOTE_SPEAKER;
import static android.media.MediaRoute2Info.TYPE_REMOTE_TV;

import android.content.Context;
import android.content.Context;
import android.graphics.drawable.Drawable;
import android.graphics.drawable.Drawable;
import android.media.MediaRoute2Info;
import android.media.MediaRoute2Info;
import android.media.MediaRouter2Manager;
import android.media.MediaRouter2Manager;


import androidx.annotation.VisibleForTesting;

import com.android.settingslib.R;
import com.android.settingslib.R;
import com.android.settingslib.bluetooth.BluetoothUtils;
import com.android.settingslib.bluetooth.BluetoothUtils;


@@ -51,7 +57,23 @@ public class InfoMediaDevice extends MediaDevice {
    public Drawable getIcon() {
    public Drawable getIcon() {
        //TODO(b/120669861): Return remote device icon uri once api is ready.
        //TODO(b/120669861): Return remote device icon uri once api is ready.
        return BluetoothUtils.buildBtRainbowDrawable(mContext,
        return BluetoothUtils.buildBtRainbowDrawable(mContext,
                mContext.getDrawable(R.drawable.ic_media_device), getId().hashCode());
                mContext.getDrawable(getDrawableResId()), getId().hashCode());
    }

    @VisibleForTesting
    int getDrawableResId() {
        int resId;
        switch (mRouteInfo.getType()) {
            case TYPE_GROUP:
                resId = R.drawable.ic_media_group_device;
                break;
            case TYPE_REMOTE_TV:
            case TYPE_REMOTE_SPEAKER:
            default:
                resId = R.drawable.ic_media_device;
                break;
        }
        return resId;
    }
    }


    @Override
    @Override
+35 −2
Original line number Original line Diff line number Diff line
@@ -15,11 +15,17 @@
 */
 */
package com.android.settingslib.media;
package com.android.settingslib.media;


import static android.media.MediaRoute2Info.TYPE_BUILTIN_SPEAKER;
import static android.media.MediaRoute2Info.TYPE_WIRED_HEADPHONES;
import static android.media.MediaRoute2Info.TYPE_WIRED_HEADSET;

import android.content.Context;
import android.content.Context;
import android.graphics.drawable.Drawable;
import android.graphics.drawable.Drawable;
import android.media.MediaRoute2Info;
import android.media.MediaRoute2Info;
import android.media.MediaRouter2Manager;
import android.media.MediaRouter2Manager;


import androidx.annotation.VisibleForTesting;

import com.android.settingslib.R;
import com.android.settingslib.R;
import com.android.settingslib.bluetooth.BluetoothUtils;
import com.android.settingslib.bluetooth.BluetoothUtils;


@@ -43,7 +49,18 @@ public class PhoneMediaDevice extends MediaDevice {


    @Override
    @Override
    public String getName() {
    public String getName() {
        return mContext.getString(R.string.media_transfer_this_device_name);
        CharSequence name;
        switch (mRouteInfo.getType()) {
            case TYPE_WIRED_HEADSET:
            case TYPE_WIRED_HEADPHONES:
                name = mRouteInfo.getName();
                break;
            case TYPE_BUILTIN_SPEAKER:
            default:
                name = mContext.getString(R.string.media_transfer_this_device_name);
                break;
        }
        return name.toString();
    }
    }


    @Override
    @Override
@@ -54,7 +71,23 @@ public class PhoneMediaDevice extends MediaDevice {
    @Override
    @Override
    public Drawable getIcon() {
    public Drawable getIcon() {
        return BluetoothUtils.buildBtRainbowDrawable(mContext,
        return BluetoothUtils.buildBtRainbowDrawable(mContext,
                mContext.getDrawable(R.drawable.ic_smartphone), getId().hashCode());
                mContext.getDrawable(getDrawableResId()), getId().hashCode());
    }

    @VisibleForTesting
    int getDrawableResId() {
        int resId;
        switch (mRouteInfo.getType()) {
            case TYPE_WIRED_HEADSET:
            case TYPE_WIRED_HEADPHONES:
                resId = com.android.internal.R.drawable.ic_bt_headphones_a2dp;
                break;
            case TYPE_BUILTIN_SPEAKER:
            default:
                resId = R.drawable.ic_smartphone;
                break;
        }
        return resId;
    }
    }


    @Override
    @Override
+19 −0
Original line number Original line Diff line number Diff line
@@ -16,6 +16,10 @@


package com.android.settingslib.media;
package com.android.settingslib.media;


import static android.media.MediaRoute2Info.TYPE_GROUP;
import static android.media.MediaRoute2Info.TYPE_REMOTE_SPEAKER;
import static android.media.MediaRoute2Info.TYPE_REMOTE_TV;

import static com.google.common.truth.Truth.assertThat;
import static com.google.common.truth.Truth.assertThat;


import static org.mockito.Mockito.when;
import static org.mockito.Mockito.when;
@@ -86,4 +90,19 @@ public class InfoMediaDeviceTest {


        assertThat(mInfoMediaDevice.getId()).isEqualTo(TEST_ID);
        assertThat(mInfoMediaDevice.getId()).isEqualTo(TEST_ID);
    }
    }

    @Test
    public void getDrawableResId_returnCorrectResId() {
        when(mRouteInfo.getType()).thenReturn(TYPE_REMOTE_TV);

        assertThat(mInfoMediaDevice.getDrawableResId()).isEqualTo(R.drawable.ic_media_device);

        when(mRouteInfo.getType()).thenReturn(TYPE_REMOTE_SPEAKER);

        assertThat(mInfoMediaDevice.getDrawableResId()).isEqualTo(R.drawable.ic_media_device);

        when(mRouteInfo.getType()).thenReturn(TYPE_GROUP);

        assertThat(mInfoMediaDevice.getDrawableResId()).isEqualTo(R.drawable.ic_media_group_device);
    }
}
}
+50 −1
Original line number Original line Diff line number Diff line
@@ -16,15 +16,23 @@


package com.android.settingslib.media;
package com.android.settingslib.media;


import static android.media.MediaRoute2Info.TYPE_BUILTIN_SPEAKER;
import static android.media.MediaRoute2Info.TYPE_WIRED_HEADPHONES;
import static android.media.MediaRoute2Info.TYPE_WIRED_HEADSET;

import static com.google.common.truth.Truth.assertThat;
import static com.google.common.truth.Truth.assertThat;


import static org.mockito.Mockito.when;

import android.content.Context;
import android.content.Context;
import android.media.MediaRoute2Info;


import com.android.settingslib.R;
import com.android.settingslib.R;


import org.junit.Before;
import org.junit.Before;
import org.junit.Test;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.mockito.MockitoAnnotations;
import org.robolectric.RobolectricTestRunner;
import org.robolectric.RobolectricTestRunner;
import org.robolectric.RuntimeEnvironment;
import org.robolectric.RuntimeEnvironment;
@@ -32,6 +40,9 @@ import org.robolectric.RuntimeEnvironment;
@RunWith(RobolectricTestRunner.class)
@RunWith(RobolectricTestRunner.class)
public class PhoneMediaDeviceTest {
public class PhoneMediaDeviceTest {


    @Mock
    private MediaRoute2Info mInfo;

    private Context mContext;
    private Context mContext;
    private PhoneMediaDevice mPhoneMediaDevice;
    private PhoneMediaDevice mPhoneMediaDevice;


@@ -41,7 +52,7 @@ public class PhoneMediaDeviceTest {
        mContext = RuntimeEnvironment.application;
        mContext = RuntimeEnvironment.application;


        mPhoneMediaDevice =
        mPhoneMediaDevice =
                new PhoneMediaDevice(mContext, null, null, null);
                new PhoneMediaDevice(mContext, null, mInfo, null);
    }
    }


    @Test
    @Test
@@ -58,4 +69,42 @@ public class PhoneMediaDeviceTest {


        assertThat(mPhoneMediaDevice.getSummary()).isEmpty();
        assertThat(mPhoneMediaDevice.getSummary()).isEmpty();
    }
    }

    @Test
    public void getDrawableResId_returnCorrectResId() {
        when(mInfo.getType()).thenReturn(TYPE_WIRED_HEADPHONES);

        assertThat(mPhoneMediaDevice.getDrawableResId())
                .isEqualTo(com.android.internal.R.drawable.ic_bt_headphones_a2dp);

        when(mInfo.getType()).thenReturn(TYPE_WIRED_HEADSET);

        assertThat(mPhoneMediaDevice.getDrawableResId())
                .isEqualTo(com.android.internal.R.drawable.ic_bt_headphones_a2dp);

        when(mInfo.getType()).thenReturn(TYPE_BUILTIN_SPEAKER);

        assertThat(mPhoneMediaDevice.getDrawableResId()).isEqualTo(R.drawable.ic_smartphone);
    }

    @Test
    public void getName_returnCorrectName() {
        final String deviceName = "test_name";

        when(mInfo.getType()).thenReturn(TYPE_WIRED_HEADPHONES);
        when(mInfo.getName()).thenReturn(deviceName);

        assertThat(mPhoneMediaDevice.getName())
                .isEqualTo(deviceName);

        when(mInfo.getType()).thenReturn(TYPE_WIRED_HEADSET);

        assertThat(mPhoneMediaDevice.getName())
                .isEqualTo(deviceName);

        when(mInfo.getType()).thenReturn(TYPE_BUILTIN_SPEAKER);

        assertThat(mPhoneMediaDevice.getName())
                .isEqualTo(mContext.getString(R.string.media_transfer_this_device_name));
    }
}
}