Loading src/com/android/settings/media/MediaOutputSlice.java +16 −13 Original line number Diff line number Diff line Loading @@ -70,21 +70,27 @@ public class MediaOutputSlice implements CustomSliceable { @Override public Slice getSlice() { // Reload theme for switching dark mode on/off mContext.getTheme().applyStyle(R.style.Theme_Settings_Home, true /* force */); 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 null; return listBuilder.build(); } if (getWorker() == null) { Log.d(TAG, "getSlice() Can not get worker through uri!"); return null; return listBuilder.build(); } final List<MediaDevice> devices = getMediaDevices(); final MediaDevice connectedDevice = getWorker().getCurrentConnectedMediaDevice(); final ListBuilder listBuilder = buildActiveDeviceHeader(connectedDevice); listBuilder.addRow(getActiveDeviceHeaderRow(connectedDevice)); for (MediaDevice device : devices) { if (!TextUtils.equals(connectedDevice.getId(), device.getId())) { Loading @@ -95,7 +101,7 @@ public class MediaOutputSlice implements CustomSliceable { return listBuilder.build(); } private ListBuilder buildActiveDeviceHeader(MediaDevice device) { private ListBuilder.RowBuilder getActiveDeviceHeaderRow(MediaDevice device) { final String title = device.getName(); final IconCompat icon = getDeviceIconCompat(device); Loading @@ -104,16 +110,13 @@ public class MediaOutputSlice implements CustomSliceable { final SliceAction primarySliceAction = SliceAction.createDeeplink(broadcastAction, icon, ListBuilder.ICON_IMAGE, title); final ListBuilder listBuilder = new ListBuilder(mContext, MEDIA_OUTPUT_SLICE_URI, ListBuilder.INFINITY) .setAccentColor(COLOR_NOT_TINTED) .addRow(new ListBuilder.RowBuilder() final ListBuilder.RowBuilder rowBuilder = new ListBuilder.RowBuilder() .setTitleItem(icon, ListBuilder.ICON_IMAGE) .setTitle(title) .setSubtitle(device.getSummary()) .setPrimaryAction(primarySliceAction)); .setPrimaryAction(primarySliceAction); return listBuilder; return rowBuilder; } private IconCompat getDeviceIconCompat(MediaDevice device) { Loading tests/robotests/src/com/android/settings/media/MediaOutputSliceTest.java +23 −2 Original line number Diff line number Diff line Loading @@ -17,6 +17,9 @@ package com.android.settings.media; import static android.app.slice.Slice.HINT_LIST_ITEM; import static android.app.slice.SliceItem.FORMAT_SLICE; import static com.android.settings.slices.CustomSliceRegistry.MEDIA_OUTPUT_SLICE_URI; import static com.google.common.truth.Truth.assertThat; Loading @@ -36,6 +39,7 @@ import androidx.slice.Slice; import androidx.slice.SliceMetadata; import androidx.slice.SliceProvider; import androidx.slice.core.SliceAction; import androidx.slice.core.SliceQuery; import androidx.slice.widget.SliceLiveData; import com.android.settings.testutils.shadow.ShadowBluetoothAdapter; Loading Loading @@ -97,10 +101,27 @@ public class MediaOutputSliceTest { } @Test public void getSlice_workerIsNull_shouldNotCrash() { public void getSlice_workerIsNull_shouldReturnZeroRow() { mMediaOutputSlice.init(TEST_PACKAGE_NAME, null); mMediaOutputSlice.getSlice(); 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_bluetoothIsDisable_shouldReturnZeroRow() { mShadowBluetoothAdapter.setEnabled(false); final Slice slice = mMediaOutputSlice.getSlice(); final int rows = SliceQuery.findAll(slice, FORMAT_SLICE, HINT_LIST_ITEM, null /* nonHints */).size(); assertThat(rows).isEqualTo(0); } @Test Loading Loading
src/com/android/settings/media/MediaOutputSlice.java +16 −13 Original line number Diff line number Diff line Loading @@ -70,21 +70,27 @@ public class MediaOutputSlice implements CustomSliceable { @Override public Slice getSlice() { // Reload theme for switching dark mode on/off mContext.getTheme().applyStyle(R.style.Theme_Settings_Home, true /* force */); 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 null; return listBuilder.build(); } if (getWorker() == null) { Log.d(TAG, "getSlice() Can not get worker through uri!"); return null; return listBuilder.build(); } final List<MediaDevice> devices = getMediaDevices(); final MediaDevice connectedDevice = getWorker().getCurrentConnectedMediaDevice(); final ListBuilder listBuilder = buildActiveDeviceHeader(connectedDevice); listBuilder.addRow(getActiveDeviceHeaderRow(connectedDevice)); for (MediaDevice device : devices) { if (!TextUtils.equals(connectedDevice.getId(), device.getId())) { Loading @@ -95,7 +101,7 @@ public class MediaOutputSlice implements CustomSliceable { return listBuilder.build(); } private ListBuilder buildActiveDeviceHeader(MediaDevice device) { private ListBuilder.RowBuilder getActiveDeviceHeaderRow(MediaDevice device) { final String title = device.getName(); final IconCompat icon = getDeviceIconCompat(device); Loading @@ -104,16 +110,13 @@ public class MediaOutputSlice implements CustomSliceable { final SliceAction primarySliceAction = SliceAction.createDeeplink(broadcastAction, icon, ListBuilder.ICON_IMAGE, title); final ListBuilder listBuilder = new ListBuilder(mContext, MEDIA_OUTPUT_SLICE_URI, ListBuilder.INFINITY) .setAccentColor(COLOR_NOT_TINTED) .addRow(new ListBuilder.RowBuilder() final ListBuilder.RowBuilder rowBuilder = new ListBuilder.RowBuilder() .setTitleItem(icon, ListBuilder.ICON_IMAGE) .setTitle(title) .setSubtitle(device.getSummary()) .setPrimaryAction(primarySliceAction)); .setPrimaryAction(primarySliceAction); return listBuilder; return rowBuilder; } private IconCompat getDeviceIconCompat(MediaDevice device) { Loading
tests/robotests/src/com/android/settings/media/MediaOutputSliceTest.java +23 −2 Original line number Diff line number Diff line Loading @@ -17,6 +17,9 @@ package com.android.settings.media; import static android.app.slice.Slice.HINT_LIST_ITEM; import static android.app.slice.SliceItem.FORMAT_SLICE; import static com.android.settings.slices.CustomSliceRegistry.MEDIA_OUTPUT_SLICE_URI; import static com.google.common.truth.Truth.assertThat; Loading @@ -36,6 +39,7 @@ import androidx.slice.Slice; import androidx.slice.SliceMetadata; import androidx.slice.SliceProvider; import androidx.slice.core.SliceAction; import androidx.slice.core.SliceQuery; import androidx.slice.widget.SliceLiveData; import com.android.settings.testutils.shadow.ShadowBluetoothAdapter; Loading Loading @@ -97,10 +101,27 @@ public class MediaOutputSliceTest { } @Test public void getSlice_workerIsNull_shouldNotCrash() { public void getSlice_workerIsNull_shouldReturnZeroRow() { mMediaOutputSlice.init(TEST_PACKAGE_NAME, null); mMediaOutputSlice.getSlice(); 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_bluetoothIsDisable_shouldReturnZeroRow() { mShadowBluetoothAdapter.setEnabled(false); final Slice slice = mMediaOutputSlice.getSlice(); final int rows = SliceQuery.findAll(slice, FORMAT_SLICE, HINT_LIST_ITEM, null /* nonHints */).size(); assertThat(rows).isEqualTo(0); } @Test Loading