[Dagger] Remove Dependency.get from VolumeDialogImpl.

The original change was reverted because it was breaking the build, but
that was because automerger split the topic so not all CLs were in the
build (see go/automerger-questions#did-automerger-split-a-topic). I'm
now submitting the same changes on master and sc-v2-dev to avoid
automerger issues.

Test: atest and manual
Bug: 138786270

Change-Id: I42665b800fb2016db9e33dcfa85c3661d9ccf605
This commit is contained in:
Caitlin Cassidy
2021-08-20 15:18:42 +00:00
parent f8c928be0e
commit c914ace6f5
7 changed files with 95 additions and 38 deletions

View File

@@ -68,6 +68,7 @@ import com.android.systemui.statusbar.policy.IndividualSensorPrivacyController;
import com.android.systemui.statusbar.policy.IndividualSensorPrivacyControllerImpl;
import com.android.systemui.statusbar.policy.SensorPrivacyController;
import com.android.systemui.statusbar.policy.SensorPrivacyControllerImpl;
import com.android.systemui.volume.dagger.VolumeModule;
import javax.inject.Named;
@@ -82,7 +83,8 @@ import dagger.Provides;
@Module(includes = {
MediaModule.class,
PowerModule.class,
QSModule.class
QSModule.class,
VolumeModule.class
})
public abstract class SystemUIDefaultModule {

View File

@@ -76,7 +76,6 @@ import com.android.systemui.util.sensors.SensorModule;
import com.android.systemui.util.settings.SettingsUtilModule;
import com.android.systemui.util.time.SystemClock;
import com.android.systemui.util.time.SystemClockImpl;
import com.android.systemui.volume.dagger.VolumeModule;
import com.android.systemui.wallet.dagger.WalletModule;
import com.android.systemui.wmshell.BubblesManager;
import com.android.wm.shell.bubbles.Bubbles;
@@ -114,7 +113,6 @@ import dagger.Provides;
TunerModule.class,
UserModule.class,
UtilModule.class,
VolumeModule.class,
WalletModule.class
},
subcomponents = {

View File

@@ -70,6 +70,7 @@ import com.android.systemui.statusbar.policy.IndividualSensorPrivacyControllerIm
import com.android.systemui.statusbar.policy.SensorPrivacyController;
import com.android.systemui.statusbar.policy.SensorPrivacyControllerImpl;
import com.android.systemui.statusbar.tv.notifications.TvNotificationHandler;
import com.android.systemui.volume.dagger.VolumeModule;
import javax.inject.Named;
@@ -83,7 +84,8 @@ import dagger.Provides;
*/
@Module(includes = {
PowerModule.class,
QSModule.class
QSModule.class,
VolumeModule.class,
},
subcomponents = {
})

View File

@@ -20,7 +20,6 @@ import android.content.Context;
import android.content.Intent;
import android.content.pm.ActivityInfo;
import android.content.res.Configuration;
import android.media.AudioManager;
import android.media.VolumePolicy;
import android.os.Bundle;
import android.view.WindowManager.LayoutParams;
@@ -84,7 +83,8 @@ public class VolumeDialogComponent implements VolumeComponent, TunerService.Tuna
DemoModeController demoModeController,
PluginDependencyProvider pluginDependencyProvider,
ExtensionController extensionController,
TunerService tunerService) {
TunerService tunerService,
VolumeDialog volumeDialog) {
mContext = context;
mKeyguardViewMediator = keyguardViewMediator;
mActivityStarter = activityStarter;
@@ -94,7 +94,7 @@ public class VolumeDialogComponent implements VolumeComponent, TunerService.Tuna
pluginDependencyProvider.allowPluginDependency(VolumeDialogController.class);
extensionController.newExtension(VolumeDialog.class)
.withPlugin(VolumeDialog.class)
.withDefault(this::createDefault)
.withDefault(() -> volumeDialog)
.withCallback(dialog -> {
if (mDialog != null) {
mDialog.destroy();
@@ -108,14 +108,6 @@ public class VolumeDialogComponent implements VolumeComponent, TunerService.Tuna
demoModeController.addCallback(this);
}
protected VolumeDialog createDefault() {
VolumeDialogImpl impl = new VolumeDialogImpl(mContext);
impl.setStreamImportant(AudioManager.STREAM_SYSTEM, false);
impl.setAutomute(true);
impl.setSilentMode(false);
return impl;
}
@Override
public void onTuningChanged(String key, String newValue) {
boolean volumeDownToEnterSilent = mVolumePolicy.volumeDownToEnterSilent;

View File

@@ -106,7 +106,6 @@ import androidx.annotation.Nullable;
import com.android.internal.graphics.drawable.BackgroundBlurDrawable;
import com.android.internal.view.RotationPolicy;
import com.android.settingslib.Utils;
import com.android.systemui.Dependency;
import com.android.systemui.Prefs;
import com.android.systemui.R;
import com.android.systemui.animation.Interpolators;
@@ -235,6 +234,10 @@ public class VolumeDialogImpl implements VolumeDialog,
private final Object mSafetyWarningLock = new Object();
private final Accessibility mAccessibility = new Accessibility();
private final ConfigurationController mConfigurationController;
private final MediaOutputDialogFactory mMediaOutputDialogFactory;
private final ActivityStarter mActivityStarter;
private boolean mShowing;
private boolean mShowA11yStream;
@@ -256,14 +259,24 @@ public class VolumeDialogImpl implements VolumeDialog,
private Consumer<Boolean> mCrossWindowBlurEnabledListener;
private BackgroundBlurDrawable mDialogRowsViewBackground;
public VolumeDialogImpl(Context context) {
public VolumeDialogImpl(
Context context,
VolumeDialogController volumeDialogController,
AccessibilityManagerWrapper accessibilityManagerWrapper,
DeviceProvisionedController deviceProvisionedController,
ConfigurationController configurationController,
MediaOutputDialogFactory mediaOutputDialogFactory,
ActivityStarter activityStarter) {
mContext =
new ContextThemeWrapper(context, R.style.volume_dialog_theme);
mController = Dependency.get(VolumeDialogController.class);
mController = volumeDialogController;
mKeyguard = (KeyguardManager) mContext.getSystemService(Context.KEYGUARD_SERVICE);
mActivityManager = (ActivityManager) mContext.getSystemService(Context.ACTIVITY_SERVICE);
mAccessibilityMgr = Dependency.get(AccessibilityManagerWrapper.class);
mDeviceProvisionedController = Dependency.get(DeviceProvisionedController.class);
mAccessibilityMgr = accessibilityManagerWrapper;
mDeviceProvisionedController = deviceProvisionedController;
mConfigurationController = configurationController;
mMediaOutputDialogFactory = mediaOutputDialogFactory;
mActivityStarter = activityStarter;
mShowActiveStreamOnly = showActiveStreamOnly();
mHasSeenODICaptionsTooltip =
Prefs.getBoolean(context, Prefs.Key.HAS_SEEN_ODI_CAPTIONS_TOOLTIP, false);
@@ -306,14 +319,14 @@ public class VolumeDialogImpl implements VolumeDialog,
mController.addCallback(mControllerCallbackH, mHandler);
mController.getState();
Dependency.get(ConfigurationController.class).addCallback(this);
mConfigurationController.addCallback(this);
}
@Override
public void destroy() {
mController.removeCallback(mControllerCallbackH);
mHandler.removeCallbacksAndMessages(null);
Dependency.get(ConfigurationController.class).removeCallback(this);
mConfigurationController.removeCallback(this);
}
@Override
@@ -1017,9 +1030,8 @@ public class VolumeDialogImpl implements VolumeDialog,
Events.writeEvent(Events.EVENT_SETTINGS_CLICK);
Intent intent = new Intent(Settings.Panel.ACTION_VOLUME);
dismissH(DISMISS_REASON_SETTINGS_CLICKED);
Dependency.get(MediaOutputDialogFactory.class).dismiss();
Dependency.get(ActivityStarter.class).startActivity(intent,
true /* dismissShade */);
mMediaOutputDialogFactory.dismiss();
mActivityStarter.startActivity(intent, true /* dismissShade */);
});
}
}

View File

@@ -16,11 +16,23 @@
package com.android.systemui.volume.dagger;
import android.content.Context;
import android.media.AudioManager;
import com.android.systemui.media.dialog.MediaOutputDialogFactory;
import com.android.systemui.plugins.ActivityStarter;
import com.android.systemui.plugins.VolumeDialog;
import com.android.systemui.plugins.VolumeDialogController;
import com.android.systemui.statusbar.policy.AccessibilityManagerWrapper;
import com.android.systemui.statusbar.policy.ConfigurationController;
import com.android.systemui.statusbar.policy.DeviceProvisionedController;
import com.android.systemui.volume.VolumeComponent;
import com.android.systemui.volume.VolumeDialogComponent;
import com.android.systemui.volume.VolumeDialogImpl;
import dagger.Binds;
import dagger.Module;
import dagger.Provides;
/** Dagger Module for code in the volume package. */
@@ -29,4 +41,28 @@ public interface VolumeModule {
/** */
@Binds
VolumeComponent provideVolumeComponent(VolumeDialogComponent volumeDialogComponent);
/** */
@Provides
static VolumeDialog provideVolumeDialog(
Context context,
VolumeDialogController volumeDialogController,
AccessibilityManagerWrapper accessibilityManagerWrapper,
DeviceProvisionedController deviceProvisionedController,
ConfigurationController configurationController,
MediaOutputDialogFactory mediaOutputDialogFactory,
ActivityStarter activityStarter) {
VolumeDialogImpl impl = new VolumeDialogImpl(
context,
volumeDialogController,
accessibilityManagerWrapper,
deviceProvisionedController,
configurationController,
mediaOutputDialogFactory,
activityStarter);
impl.setStreamImportant(AudioManager.STREAM_SYSTEM, false);
impl.setAutomute(true);
impl.setSilentMode(false);
return impl;
}
}

View File

@@ -41,9 +41,13 @@ import androidx.test.filters.SmallTest;
import com.android.systemui.Prefs;
import com.android.systemui.R;
import com.android.systemui.SysuiTestCase;
import com.android.systemui.media.dialog.MediaOutputDialogFactory;
import com.android.systemui.plugins.ActivityStarter;
import com.android.systemui.plugins.VolumeDialogController;
import com.android.systemui.plugins.VolumeDialogController.State;
import com.android.systemui.statusbar.policy.AccessibilityManagerWrapper;
import com.android.systemui.statusbar.policy.ConfigurationController;
import com.android.systemui.statusbar.policy.DeviceProvisionedController;
import org.junit.Before;
import org.junit.Test;
@@ -68,23 +72,34 @@ public class VolumeDialogImplTest extends SysuiTestCase {
View mDrawerNormal;
@Mock
VolumeDialogController mController;
VolumeDialogController mVolumeDialogController;
@Mock
KeyguardManager mKeyguard;
@Mock
AccessibilityManagerWrapper mAccessibilityMgr;
@Mock
DeviceProvisionedController mDeviceProvisionedController;
@Mock
ConfigurationController mConfigurationController;
@Mock
MediaOutputDialogFactory mMediaOutputDialogFactory;
@Mock
ActivityStarter mActivityStarter;
@Before
public void setup() throws Exception {
MockitoAnnotations.initMocks(this);
mController = mDependency.injectMockDependency(VolumeDialogController.class);
mAccessibilityMgr = mDependency.injectMockDependency(AccessibilityManagerWrapper.class);
getContext().addMockSystemService(KeyguardManager.class, mKeyguard);
mDialog = new VolumeDialogImpl(getContext());
mDialog = new VolumeDialogImpl(
getContext(),
mVolumeDialogController,
mAccessibilityMgr,
mDeviceProvisionedController,
mConfigurationController,
mMediaOutputDialogFactory,
mActivityStarter);
mDialog.init(0, null);
State state = createShellState();
mDialog.onStateChangedH(state);
@@ -170,7 +185,7 @@ public class VolumeDialogImplTest extends SysuiTestCase {
Mockito.reset(mAccessibilityMgr);
ArgumentCaptor<VolumeDialogController.Callbacks> controllerCallbackCapture =
ArgumentCaptor.forClass(VolumeDialogController.Callbacks.class);
verify(mController).addCallback(controllerCallbackCapture.capture(), any());
verify(mVolumeDialogController).addCallback(controllerCallbackCapture.capture(), any());
VolumeDialogController.Callbacks callbacks = controllerCallbackCapture.getValue();
callbacks.onShowSafetyWarning(AudioManager.FLAG_SHOW_UI);
verify(mAccessibilityMgr).getRecommendedTimeoutMillis(
@@ -201,13 +216,13 @@ public class VolumeDialogImplTest extends SysuiTestCase {
mDialog.onStateChangedH(initialSilentState);
// expected: shouldn't call vibrate yet
verify(mController, never()).vibrate(any());
verify(mVolumeDialogController, never()).vibrate(any());
// changed ringer to vibrate
mDialog.onStateChangedH(vibrateState);
// expected: vibrate device
verify(mController).vibrate(any());
verify(mVolumeDialogController).vibrate(any());
}
@Test
@@ -225,7 +240,7 @@ public class VolumeDialogImplTest extends SysuiTestCase {
mDialog.onStateChangedH(vibrateState);
// shouldn't call vibrate
verify(mController, never()).vibrate(any());
verify(mVolumeDialogController, never()).vibrate(any());
}
@Test
@@ -238,7 +253,7 @@ public class VolumeDialogImplTest extends SysuiTestCase {
mDrawerVibrate.performClick();
// Make sure we've actually changed the ringer mode.
verify(mController, times(1)).setRingerMode(
verify(mVolumeDialogController, times(1)).setRingerMode(
AudioManager.RINGER_MODE_VIBRATE, false);
}
@@ -252,7 +267,7 @@ public class VolumeDialogImplTest extends SysuiTestCase {
mDrawerMute.performClick();
// Make sure we've actually changed the ringer mode.
verify(mController, times(1)).setRingerMode(
verify(mVolumeDialogController, times(1)).setRingerMode(
AudioManager.RINGER_MODE_SILENT, false);
}
@@ -266,7 +281,7 @@ public class VolumeDialogImplTest extends SysuiTestCase {
mDrawerNormal.performClick();
// Make sure we've actually changed the ringer mode.
verify(mController, times(1)).setRingerMode(
verify(mVolumeDialogController, times(1)).setRingerMode(
AudioManager.RINGER_MODE_NORMAL, false);
}