Loading packages/SystemUI/src/com/android/systemui/media/MediaControlPanel.java +8 −0 Original line number Diff line number Diff line Loading @@ -64,6 +64,7 @@ import java.util.concurrent.Executor; import javax.inject.Inject; import dagger.Lazy; import kotlin.Unit; /** * A view controller used for Media Playback. Loading Loading @@ -133,6 +134,13 @@ public class MediaControlPanel { mMediaOutputDialogFactory = mediaOutputDialogFactory; mMediaCarouselController = mediaCarouselController; loadDimens(); mSeekBarViewModel.setLogSmartspaceClick(() -> { logSmartspaceCardReported( 760, // SMARTSPACE_CARD_CLICK /* isRecommendationCard */ false); return Unit.INSTANCE; }); } public void onDestroy() { Loading packages/SystemUI/src/com/android/systemui/media/SeekBarViewModel.kt +7 −2 Original line number Diff line number Diff line Loading @@ -28,8 +28,8 @@ import android.widget.SeekBar import androidx.annotation.AnyThread import androidx.annotation.WorkerThread import androidx.core.view.GestureDetectorCompat import androidx.lifecycle.MutableLiveData import androidx.lifecycle.LiveData import androidx.lifecycle.MutableLiveData import com.android.systemui.dagger.qualifiers.Background import com.android.systemui.util.concurrency.RepeatableExecutor import javax.inject.Inject Loading Loading @@ -70,7 +70,9 @@ private fun PlaybackState.computePosition(duration: Long): Long { } /** ViewModel for seek bar in QS media player. */ class SeekBarViewModel @Inject constructor(@Background private val bgExecutor: RepeatableExecutor) { class SeekBarViewModel @Inject constructor( @Background private val bgExecutor: RepeatableExecutor ) { private var _data = Progress(false, false, null, 0) set(value) { field = value Loading Loading @@ -127,6 +129,8 @@ class SeekBarViewModel @Inject constructor(@Background private val bgExecutor: R } } lateinit var logSmartspaceClick: () -> Unit /** * Event indicating that the user has started interacting with the seek bar. */ Loading Loading @@ -167,6 +171,7 @@ class SeekBarViewModel @Inject constructor(@Background private val bgExecutor: R scrubbing = false checkPlaybackPosition() } else { logSmartspaceClick() controller?.transportControls?.seekTo(position) // Invalidate the cached playbackState to avoid the thumb jumping back to the previous // position. Loading packages/SystemUI/tests/src/com/android/systemui/media/SeekBarViewModelTest.kt +1 −0 Original line number Diff line number Diff line Loading @@ -75,6 +75,7 @@ public class SeekBarViewModelTest : SysuiTestCase() { fun setUp() { fakeExecutor = FakeExecutor(FakeSystemClock()) viewModel = SeekBarViewModel(FakeRepeatableExecutor(fakeExecutor)) viewModel.logSmartspaceClick = { } mockController = mock(MediaController::class.java) whenever(mockController.sessionToken).thenReturn(token1) mockTransport = mock(MediaController.TransportControls::class.java) Loading Loading
packages/SystemUI/src/com/android/systemui/media/MediaControlPanel.java +8 −0 Original line number Diff line number Diff line Loading @@ -64,6 +64,7 @@ import java.util.concurrent.Executor; import javax.inject.Inject; import dagger.Lazy; import kotlin.Unit; /** * A view controller used for Media Playback. Loading Loading @@ -133,6 +134,13 @@ public class MediaControlPanel { mMediaOutputDialogFactory = mediaOutputDialogFactory; mMediaCarouselController = mediaCarouselController; loadDimens(); mSeekBarViewModel.setLogSmartspaceClick(() -> { logSmartspaceCardReported( 760, // SMARTSPACE_CARD_CLICK /* isRecommendationCard */ false); return Unit.INSTANCE; }); } public void onDestroy() { Loading
packages/SystemUI/src/com/android/systemui/media/SeekBarViewModel.kt +7 −2 Original line number Diff line number Diff line Loading @@ -28,8 +28,8 @@ import android.widget.SeekBar import androidx.annotation.AnyThread import androidx.annotation.WorkerThread import androidx.core.view.GestureDetectorCompat import androidx.lifecycle.MutableLiveData import androidx.lifecycle.LiveData import androidx.lifecycle.MutableLiveData import com.android.systemui.dagger.qualifiers.Background import com.android.systemui.util.concurrency.RepeatableExecutor import javax.inject.Inject Loading Loading @@ -70,7 +70,9 @@ private fun PlaybackState.computePosition(duration: Long): Long { } /** ViewModel for seek bar in QS media player. */ class SeekBarViewModel @Inject constructor(@Background private val bgExecutor: RepeatableExecutor) { class SeekBarViewModel @Inject constructor( @Background private val bgExecutor: RepeatableExecutor ) { private var _data = Progress(false, false, null, 0) set(value) { field = value Loading Loading @@ -127,6 +129,8 @@ class SeekBarViewModel @Inject constructor(@Background private val bgExecutor: R } } lateinit var logSmartspaceClick: () -> Unit /** * Event indicating that the user has started interacting with the seek bar. */ Loading Loading @@ -167,6 +171,7 @@ class SeekBarViewModel @Inject constructor(@Background private val bgExecutor: R scrubbing = false checkPlaybackPosition() } else { logSmartspaceClick() controller?.transportControls?.seekTo(position) // Invalidate the cached playbackState to avoid the thumb jumping back to the previous // position. Loading
packages/SystemUI/tests/src/com/android/systemui/media/SeekBarViewModelTest.kt +1 −0 Original line number Diff line number Diff line Loading @@ -75,6 +75,7 @@ public class SeekBarViewModelTest : SysuiTestCase() { fun setUp() { fakeExecutor = FakeExecutor(FakeSystemClock()) viewModel = SeekBarViewModel(FakeRepeatableExecutor(fakeExecutor)) viewModel.logSmartspaceClick = { } mockController = mock(MediaController::class.java) whenever(mockController.sessionToken).thenReturn(token1) mockTransport = mock(MediaController.TransportControls::class.java) Loading