diff options
author | TreeHugger Robot <treehugger-gerrit@google.com> | 2019-05-10 18:14:02 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2019-05-10 18:14:02 +0000 |
commit | 12dcbe7c7148ec50f21662707727ec89633a8ce8 (patch) | |
tree | 224f1295728c495152306ba8a4ae64bc87c9a12a | |
parent | 41656de5d4cd632da1af3b2cdb1129f411c783c8 (diff) | |
parent | 095c5be44845c8dcb6e45fac24d629d59fc86ea1 (diff) | |
download | packages_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.java | 26 | ||||
-rw-r--r-- | tests/robotests/src/com/android/settings/media/MediaOutputSliceTest.java | 20 |
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); |