Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e8ed32f8 authored by Greg Kaiser's avatar Greg Kaiser Committed by Android (Google) Code Review
Browse files

Merge "Remove circular depdendency in VolumdDialogControllerImpl."

parents 70052fbc afc242bd
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -18,7 +18,6 @@ package com.android.systemui.volume;

import android.content.Context;

import com.android.systemui.SystemUI;
import com.android.systemui.keyguard.KeyguardViewMediator;
import com.android.systemui.plugins.VolumeDialog;

@@ -32,8 +31,9 @@ import javax.inject.Singleton;
public class CarVolumeDialogComponent extends VolumeDialogComponent {

    @Inject
    public CarVolumeDialogComponent(Context context, KeyguardViewMediator keyguardViewMediator) {
        super(context, keyguardViewMediator);
    public CarVolumeDialogComponent(Context context, KeyguardViewMediator keyguardViewMediator,
            VolumeDialogControllerImpl volumeDialogController) {
        super(context, keyguardViewMediator, volumeDialogController);
    }

    protected VolumeDialog createDefault() {
+3 −2
Original line number Diff line number Diff line
@@ -72,10 +72,11 @@ public class VolumeDialogComponent implements VolumeComponent, TunerService.Tuna
    );

    @Inject
    public VolumeDialogComponent(Context context, KeyguardViewMediator keyguardViewMediator) {
    public VolumeDialogComponent(Context context, KeyguardViewMediator keyguardViewMediator,
            VolumeDialogControllerImpl volumeDialogController) {
        mContext = context;
        mKeyguardViewMediator = keyguardViewMediator;
        mController = (VolumeDialogControllerImpl) Dependency.get(VolumeDialogController.class);
        mController = volumeDialogController;
        mController.setUserActivityListener(this);
        // Allow plugins to reference the VolumeDialogController.
        Dependency.get(PluginDependencyProvider.class)
+13 −9
Original line number Diff line number Diff line
@@ -74,6 +74,8 @@ import java.util.Optional;
import javax.inject.Inject;
import javax.inject.Singleton;

import dagger.Lazy;

/**
 *  Source of truth for all state / events related to the volume dialog.  No presentation.
 *
@@ -115,7 +117,7 @@ public class VolumeDialogControllerImpl implements VolumeDialogController, Dumpa
    private final Context mContext;
    private AudioManager mAudio;
    private IAudioService mAudioService;
    private final Optional<StatusBar> mStatusBarOptional;
    private final Optional<Lazy<StatusBar>> mStatusBarOptionalLazy;
    private final NotificationManager mNoMan;
    private final SettingObserver mObserver;
    private final Receiver mReceiver = new Receiver();
@@ -142,9 +144,9 @@ public class VolumeDialogControllerImpl implements VolumeDialogController, Dumpa

    @Inject
    public VolumeDialogControllerImpl(Context context, BroadcastDispatcher broadcastDispatcher,
            Optional<StatusBar> statusBarOptional) {
            Optional<Lazy<StatusBar>> statusBarOptionalLazy) {
        mContext = context.getApplicationContext();
        mStatusBarOptional = statusBarOptional;
        mStatusBarOptionalLazy = statusBarOptionalLazy;
        mNotificationManager = (NotificationManager) mContext.getSystemService(
                Context.NOTIFICATION_SERVICE);
        Events.writeEvent(mContext, Events.EVENT_COLLECTION_STARTED);
@@ -448,12 +450,14 @@ public class VolumeDialogControllerImpl implements VolumeDialogController, Dumpa
    private boolean shouldShowUI(int flags) {
        // if status bar isn't null, check if phone is in AOD, else check flags
        // since we could be using a different status bar
        return mStatusBarOptional.map(statusBar ->
                statusBar.getWakefulnessState() != WakefulnessLifecycle.WAKEFULNESS_ASLEEP
        return mStatusBarOptionalLazy.map(statusBarLazy -> {
            StatusBar statusBar = statusBarLazy.get();
            return statusBar.getWakefulnessState() != WakefulnessLifecycle.WAKEFULNESS_ASLEEP
                    && statusBar.getWakefulnessState()
                    != WakefulnessLifecycle.WAKEFULNESS_GOING_TO_SLEEP
                        && statusBar.isDeviceInteractive()
                        && (flags & AudioManager.FLAG_SHOW_UI) != 0 && mShowVolumeDialog).orElse(
                    && statusBar.isDeviceInteractive() && (flags & AudioManager.FLAG_SHOW_UI) != 0
                    && mShowVolumeDialog;
        }).orElse(
                mShowVolumeDialog && (flags & AudioManager.FLAG_SHOW_UI) != 0);
    }

+10 −6
Original line number Diff line number Diff line
@@ -69,8 +69,7 @@ public class VolumeDialogControllerImplTest extends SysuiTestCase {

    @Test
    public void testRegisteredWithDispatcher() {
        verify(mBroadcastDispatcher).registerReceiver(
                any(BroadcastReceiver.class),
        verify(mBroadcastDispatcher).registerReceiver(any(BroadcastReceiver.class),
                any(IntentFilter.class),
                any(Handler.class)); // VolumeDialogControllerImpl does not call with user
    }
@@ -97,7 +96,8 @@ public class VolumeDialogControllerImplTest extends SysuiTestCase {
        when(mStatusBar.getWakefulnessState()).thenReturn(WakefulnessLifecycle.WAKEFULNESS_AWAKE);
        mVolumeController.onVolumeChangedW(0, AudioManager.FLAG_SHOW_UI);
        when(mStatusBar.isDeviceInteractive()).thenReturn(false);
        when(mStatusBar.getWakefulnessState()).thenReturn(WakefulnessLifecycle.WAKEFULNESS_GOING_TO_SLEEP);
        when(mStatusBar.getWakefulnessState()).thenReturn(
                WakefulnessLifecycle.WAKEFULNESS_GOING_TO_SLEEP);
        mVolumeController.onVolumeChangedW(0, AudioManager.FLAG_SHOW_UI);
        verify(mCallback, times(1)).onShowRequested(Events.SHOW_REASON_VOLUME_CHANGED);
    }
@@ -105,8 +105,10 @@ public class VolumeDialogControllerImplTest extends SysuiTestCase {
    @Test
    public void testVolumeChangeW_nullStatusBar() {
        VolumeDialogControllerImpl.C callback = mock(VolumeDialogControllerImpl.C.class);
        TestableVolumeDialogControllerImpl nullStatusBarTestableDialog =  new
                TestableVolumeDialogControllerImpl(mContext, callback, null, mBroadcastDispatcher);
        TestableVolumeDialogControllerImpl
                nullStatusBarTestableDialog =
                new TestableVolumeDialogControllerImpl(
                        mContext, callback, null, mBroadcastDispatcher);
        nullStatusBarTestableDialog.setEnableDialogs(true, true);
        nullStatusBarTestableDialog.onVolumeChangedW(0, AudioManager.FLAG_SHOW_UI);
        verify(callback, times(1)).onShowRequested(Events.SHOW_REASON_VOLUME_CHANGED);
@@ -127,7 +129,9 @@ public class VolumeDialogControllerImplTest extends SysuiTestCase {
    static class TestableVolumeDialogControllerImpl extends VolumeDialogControllerImpl {
        TestableVolumeDialogControllerImpl(Context context, C callback, StatusBar s,
                BroadcastDispatcher broadcastDispatcher) {
            super(context, broadcastDispatcher, s == null ? Optional.empty() : Optional.of(s));
            super(
                    context, broadcastDispatcher,
                    s == null ? Optional.empty() : Optional.of(() -> s));
            mCallbacks = callback;
        }
    }