Merge "Move MediaRoute2Info API from InfoMediaDevice to MediaDevice"

This commit is contained in:
TreeHugger Robot
2020-02-11 01:38:53 +00:00
committed by Android (Google) Code Review
4 changed files with 79 additions and 95 deletions

View File

@@ -16,12 +16,9 @@
package com.android.settingslib.media;
import android.content.Context;
import android.content.pm.PackageManager;
import android.graphics.drawable.Drawable;
import android.media.MediaRoute2Info;
import android.media.MediaRouter2Manager;
import android.text.TextUtils;
import android.util.Log;
import com.android.settingslib.R;
import com.android.settingslib.bluetooth.BluetoothUtils;
@@ -62,46 +59,6 @@ public class InfoMediaDevice extends MediaDevice {
return MediaDeviceUtils.getId(mRouteInfo);
}
@Override
public void requestSetVolume(int volume) {
mRouterManager.requestSetVolume(mRouteInfo, volume);
}
@Override
public int getMaxVolume() {
return mRouteInfo.getVolumeMax();
}
@Override
public int getCurrentVolume() {
return mRouteInfo.getVolume();
}
@Override
public String getClientPackageName() {
return mRouteInfo.getClientPackageName();
}
@Override
public String getClientAppLabel() {
final String packageName = mRouteInfo.getClientPackageName();
if (TextUtils.isEmpty(packageName)) {
Log.d(TAG, "Client package name is empty");
return mContext.getResources().getString(R.string.unknown);
}
try {
final PackageManager packageManager = mContext.getPackageManager();
final String appLabel = packageManager.getApplicationLabel(
packageManager.getApplicationInfo(packageName, 0)).toString();
if (!TextUtils.isEmpty(appLabel)) {
return appLabel;
}
} catch (PackageManager.NameNotFoundException e) {
Log.e(TAG, "unable to find " + packageName);
}
return mContext.getResources().getString(R.string.unknown);
}
public boolean isConnected() {
return true;
}

View File

@@ -16,14 +16,18 @@
package com.android.settingslib.media;
import android.content.Context;
import android.content.pm.PackageManager;
import android.graphics.drawable.Drawable;
import android.media.MediaRoute2Info;
import android.media.MediaRouter2Manager;
import android.text.TextUtils;
import android.util.Log;
import androidx.annotation.IntDef;
import androidx.annotation.VisibleForTesting;
import com.android.settingslib.R;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
@@ -113,7 +117,9 @@ public abstract class MediaDevice implements Comparable<MediaDevice> {
*
* @param volume is the new value.
*/
public void requestSetVolume(int volume) {
mRouterManager.requestSetVolume(mRouteInfo, volume);
}
/**
@@ -122,7 +128,7 @@ public abstract class MediaDevice implements Comparable<MediaDevice> {
* @return max volume.
*/
public int getMaxVolume() {
return 100;
return mRouteInfo.getVolumeMax();
}
/**
@@ -131,7 +137,7 @@ public abstract class MediaDevice implements Comparable<MediaDevice> {
* @return current volume.
*/
public int getCurrentVolume() {
return 0;
return mRouteInfo.getVolume();
}
/**
@@ -140,7 +146,7 @@ public abstract class MediaDevice implements Comparable<MediaDevice> {
* @return package name.
*/
public String getClientPackageName() {
return null;
return mRouteInfo.getClientPackageName();
}
/**
@@ -149,7 +155,22 @@ public abstract class MediaDevice implements Comparable<MediaDevice> {
* @return application label.
*/
public String getClientAppLabel() {
return null;
final String packageName = mRouteInfo.getClientPackageName();
if (TextUtils.isEmpty(packageName)) {
Log.d(TAG, "Client package name is empty");
return mContext.getResources().getString(R.string.unknown);
}
try {
final PackageManager packageManager = mContext.getPackageManager();
final String appLabel = packageManager.getApplicationLabel(
packageManager.getApplicationInfo(packageName, 0)).toString();
if (!TextUtils.isEmpty(appLabel)) {
return appLabel;
}
} catch (PackageManager.NameNotFoundException e) {
Log.e(TAG, "unable to find " + packageName);
}
return mContext.getResources().getString(R.string.unknown);
}
/**

View File

@@ -21,9 +21,6 @@ import static com.google.common.truth.Truth.assertThat;
import static org.mockito.Mockito.when;
import android.content.Context;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageInfo;
import android.content.pm.PackageStats;
import android.media.MediaRoute2Info;
import android.media.MediaRouter2Manager;
@@ -36,14 +33,11 @@ import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.robolectric.RobolectricTestRunner;
import org.robolectric.RuntimeEnvironment;
import org.robolectric.Shadows;
import org.robolectric.shadows.ShadowPackageManager;
@RunWith(RobolectricTestRunner.class)
public class InfoMediaDeviceTest {
private static final String TEST_PACKAGE_NAME = "com.test.packagename";
private static final String TEST_PACKAGE_NAME2 = "com.test.packagename2";
private static final String TEST_ID = "test_id";
private static final String TEST_NAME = "test_name";
@@ -52,27 +46,13 @@ public class InfoMediaDeviceTest {
@Mock
private MediaRoute2Info mRouteInfo;
private Context mContext;
private InfoMediaDevice mInfoMediaDevice;
private ShadowPackageManager mShadowPackageManager;
private ApplicationInfo mAppInfo;
private PackageInfo mPackageInfo;
private PackageStats mPackageStats;
@Before
public void setUp() {
MockitoAnnotations.initMocks(this);
mContext = RuntimeEnvironment.application;
mShadowPackageManager = Shadows.shadowOf(mContext.getPackageManager());
mAppInfo = new ApplicationInfo();
mAppInfo.flags = ApplicationInfo.FLAG_INSTALLED;
mAppInfo.packageName = TEST_PACKAGE_NAME;
mAppInfo.name = TEST_NAME;
mPackageInfo = new PackageInfo();
mPackageInfo.packageName = TEST_PACKAGE_NAME;
mPackageInfo.applicationInfo = mAppInfo;
mPackageStats = new PackageStats(TEST_PACKAGE_NAME);
mInfoMediaDevice = new InfoMediaDevice(mContext, mRouterManager, mRouteInfo,
TEST_PACKAGE_NAME);
@@ -106,32 +86,4 @@ public class InfoMediaDeviceTest {
assertThat(mInfoMediaDevice.getId()).isEqualTo(TEST_ID);
}
@Test
public void getClientPackageName_returnPackageName() {
when(mRouteInfo.getClientPackageName()).thenReturn(TEST_PACKAGE_NAME);
assertThat(mInfoMediaDevice.getClientPackageName()).isEqualTo(TEST_PACKAGE_NAME);
}
@Test
public void getClientAppLabel_matchedPackageName_returnLabel() {
when(mRouteInfo.getClientPackageName()).thenReturn(TEST_PACKAGE_NAME);
assertThat(mInfoMediaDevice.getClientAppLabel()).isEqualTo(
mContext.getResources().getString(R.string.unknown));
mShadowPackageManager.addPackage(mPackageInfo, mPackageStats);
assertThat(mInfoMediaDevice.getClientAppLabel()).isEqualTo(TEST_NAME);
}
@Test
public void getClientAppLabel_noMatchedPackageName_returnDefault() {
mShadowPackageManager.addPackage(mPackageInfo, mPackageStats);
when(mRouteInfo.getClientPackageName()).thenReturn(TEST_PACKAGE_NAME2);
assertThat(mInfoMediaDevice.getClientAppLabel()).isEqualTo(
mContext.getResources().getString(R.string.unknown));
}
}

View File

@@ -23,9 +23,13 @@ import static org.mockito.Mockito.when;
import android.bluetooth.BluetoothClass;
import android.bluetooth.BluetoothDevice;
import android.content.Context;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageInfo;
import android.content.pm.PackageStats;
import android.media.MediaRoute2Info;
import android.media.MediaRouter2Manager;
import com.android.settingslib.R;
import com.android.settingslib.bluetooth.A2dpProfile;
import com.android.settingslib.bluetooth.CachedBluetoothDevice;
import com.android.settingslib.bluetooth.HearingAidProfile;
@@ -39,6 +43,8 @@ import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.robolectric.RobolectricTestRunner;
import org.robolectric.RuntimeEnvironment;
import org.robolectric.Shadows;
import org.robolectric.shadows.ShadowPackageManager;
import java.util.ArrayList;
import java.util.Collections;
@@ -58,6 +64,8 @@ public class MediaDeviceTest {
private static final String ROUTER_ID_2 = "RouterId_2";
private static final String ROUTER_ID_3 = "RouterId_3";
private static final String TEST_PACKAGE_NAME = "com.test.playmusic";
private static final String TEST_PACKAGE_NAME2 = "com.test.playmusic2";
private static final String TEST_APPLICATION_LABEL = "playmusic";
private final BluetoothClass mHeadreeClass =
new BluetoothClass(BluetoothClass.Device.AUDIO_VIDEO_HEADPHONES);
private final BluetoothClass mCarkitClass =
@@ -111,6 +119,10 @@ public class MediaDeviceTest {
private InfoMediaDevice mInfoMediaDevice3;
private List<MediaDevice> mMediaDevices = new ArrayList<>();
private PhoneMediaDevice mPhoneMediaDevice;
private ShadowPackageManager mShadowPackageManager;
private ApplicationInfo mAppInfo;
private PackageInfo mPackageInfo;
private PackageStats mPackageStats;
@Before
public void setUp() {
@@ -394,4 +406,46 @@ public class MediaDeviceTest {
verify(mMediaRouter2Manager).selectRoute(TEST_PACKAGE_NAME, mRouteInfo1);
}
@Test
public void getClientPackageName_returnPackageName() {
when(mRouteInfo1.getClientPackageName()).thenReturn(TEST_PACKAGE_NAME);
assertThat(mInfoMediaDevice1.getClientPackageName()).isEqualTo(TEST_PACKAGE_NAME);
}
private void initPackage() {
mShadowPackageManager = Shadows.shadowOf(mContext.getPackageManager());
mAppInfo = new ApplicationInfo();
mAppInfo.flags = ApplicationInfo.FLAG_INSTALLED;
mAppInfo.packageName = TEST_PACKAGE_NAME;
mAppInfo.name = TEST_APPLICATION_LABEL;
mPackageInfo = new PackageInfo();
mPackageInfo.packageName = TEST_PACKAGE_NAME;
mPackageInfo.applicationInfo = mAppInfo;
mPackageStats = new PackageStats(TEST_PACKAGE_NAME);
}
@Test
public void getClientAppLabel_matchedPackageName_returnLabel() {
initPackage();
when(mRouteInfo1.getClientPackageName()).thenReturn(TEST_PACKAGE_NAME);
assertThat(mInfoMediaDevice1.getClientAppLabel()).isEqualTo(
mContext.getResources().getString(R.string.unknown));
mShadowPackageManager.addPackage(mPackageInfo, mPackageStats);
assertThat(mInfoMediaDevice1.getClientAppLabel()).isEqualTo(TEST_APPLICATION_LABEL);
}
@Test
public void getClientAppLabel_noMatchedPackageName_returnDefault() {
initPackage();
mShadowPackageManager.addPackage(mPackageInfo, mPackageStats);
when(mRouteInfo1.getClientPackageName()).thenReturn(TEST_PACKAGE_NAME2);
assertThat(mInfoMediaDevice1.getClientAppLabel()).isEqualTo(
mContext.getResources().getString(R.string.unknown));
}
}