summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTreeHugger Robot <treehugger-gerrit@google.com>2019-05-10 18:14:02 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2019-05-10 18:14:02 +0000
commit12dcbe7c7148ec50f21662707727ec89633a8ce8 (patch)
tree224f1295728c495152306ba8a4ae64bc87c9a12a
parent41656de5d4cd632da1af3b2cdb1129f411c783c8 (diff)
parent095c5be44845c8dcb6e45fac24d629d59fc86ea1 (diff)
downloadpackages_apps_Settings-12dcbe7c7148ec50f21662707727ec89633a8ce8.tar.gz
packages_apps_Settings-12dcbe7c7148ec50f21662707727ec89633a8ce8.tar.bz2
packages_apps_Settings-12dcbe7c7148ec50f21662707727ec89633a8ce8.zip
Merge "Clear media switcher items when in phone call" into qt-dev
-rw-r--r--src/com/android/settings/media/MediaOutputSlice.java26
-rw-r--r--tests/robotests/src/com/android/settings/media/MediaOutputSliceTest.java20
2 files changed, 37 insertions, 9 deletions
diff --git a/src/com/android/settings/media/MediaOutputSlice.java b/src/com/android/settings/media/MediaOutputSlice.java
index 96f8bc31cd..734c31e5b4 100644
--- a/src/com/android/settings/media/MediaOutputSlice.java
+++ b/src/com/android/settings/media/MediaOutputSlice.java
@@ -24,6 +24,7 @@ import android.content.Context;
import android.content.Intent;
import android.graphics.drawable.Drawable;
import android.net.Uri;
+import android.telephony.TelephonyManager;
import android.text.TextUtils;
import android.util.Log;
@@ -76,14 +77,8 @@ public class MediaOutputSlice implements CustomSliceable {
final ListBuilder listBuilder = new ListBuilder(mContext, getUri(), ListBuilder.INFINITY)
.setAccentColor(COLOR_NOT_TINTED);
- final BluetoothAdapter adapter = BluetoothAdapter.getDefaultAdapter();
- if (!adapter.isEnabled()) {
- Log.d(TAG, "getSlice() Bluetooth is off");
- return listBuilder.build();
- }
-
- if (getWorker() == null) {
- Log.d(TAG, "getSlice() Can not get worker through uri!");
+ if (!isVisible()) {
+ Log.d(TAG, "getSlice() is not visible");
return listBuilder.build();
}
@@ -198,4 +193,19 @@ public class MediaOutputSlice implements CustomSliceable {
public Class getBackgroundWorkerClass() {
return MediaDeviceUpdateWorker.class;
}
+
+ private boolean isVisible() {
+ // To decide Slice's visibility.
+ // Return true if
+ // 1. phone is not in ongoing call mode
+ // 2. worker is not null
+ // 3. Bluetooth is enabled
+ final TelephonyManager telephonyManager =
+ (TelephonyManager)mContext.getSystemService(Context.TELEPHONY_SERVICE);
+ final BluetoothAdapter adapter = BluetoothAdapter.getDefaultAdapter();
+
+ return telephonyManager.getCallState() == TelephonyManager.CALL_STATE_IDLE
+ && adapter.isEnabled()
+ && getWorker() != null;
+ }
}
diff --git a/tests/robotests/src/com/android/settings/media/MediaOutputSliceTest.java b/tests/robotests/src/com/android/settings/media/MediaOutputSliceTest.java
index 4a3491921b..ac37a7f7bf 100644
--- a/tests/robotests/src/com/android/settings/media/MediaOutputSliceTest.java
+++ b/tests/robotests/src/com/android/settings/media/MediaOutputSliceTest.java
@@ -34,6 +34,7 @@ import android.bluetooth.BluetoothAdapter;
import android.content.Context;
import android.content.Intent;
import android.graphics.drawable.Drawable;
+import android.telephony.TelephonyManager;
import androidx.slice.Slice;
import androidx.slice.SliceMetadata;
@@ -55,12 +56,13 @@ import org.robolectric.RobolectricTestRunner;
import org.robolectric.RuntimeEnvironment;
import org.robolectric.annotation.Config;
import org.robolectric.shadow.api.Shadow;
+import org.robolectric.shadows.ShadowTelephonyManager;
import java.util.ArrayList;
import java.util.List;
@RunWith(RobolectricTestRunner.class)
-@Config(shadows = {ShadowBluetoothAdapter.class})
+@Config(shadows = {ShadowBluetoothAdapter.class, ShadowTelephonyManager.class})
public class MediaOutputSliceTest {
private static final String TEST_PACKAGE_NAME = "com.fake.android.music";
@@ -80,17 +82,21 @@ public class MediaOutputSliceTest {
private MediaOutputSlice mMediaOutputSlice;
private MediaDeviceUpdateWorker mMediaDeviceUpdateWorker;
private ShadowBluetoothAdapter mShadowBluetoothAdapter;
+ private ShadowTelephonyManager mShadowTelephonyManager;
@Before
public void setUp() throws Exception {
MockitoAnnotations.initMocks(this);
mContext = spy(RuntimeEnvironment.application);
+ mShadowTelephonyManager = Shadow.extract(mContext.getSystemService(
+ Context.TELEPHONY_SERVICE));
// Set-up specs for SliceMetadata.
SliceProvider.setSpecs(SliceLiveData.SUPPORTED_SPECS);
// Setup BluetoothAdapter
mShadowBluetoothAdapter = Shadow.extract(BluetoothAdapter.getDefaultAdapter());
mShadowBluetoothAdapter.setEnabled(true);
+ mShadowTelephonyManager.setCallState(TelephonyManager.CALL_STATE_IDLE);
mMediaOutputSlice = new MediaOutputSlice(mContext);
mMediaDeviceUpdateWorker = new MediaDeviceUpdateWorker(mContext, MEDIA_OUTPUT_SLICE_URI);
@@ -125,6 +131,18 @@ public class MediaOutputSliceTest {
}
@Test
+ public void getSlice_callStateRinging_shouldReturnZeroRow() {
+ mShadowTelephonyManager.setCallState(TelephonyManager.CALL_STATE_RINGING);
+
+ final Slice slice = mMediaOutputSlice.getSlice();
+
+ final int rows = SliceQuery.findAll(slice, FORMAT_SLICE, HINT_LIST_ITEM,
+ null /* nonHints */).size();
+
+ assertThat(rows).isEqualTo(0);
+ }
+
+ @Test
public void getSlice_shouldHaveActiveDeviceName() {
mDevices.clear();
final MediaDevice device = mock(MediaDevice.class);