Merge "Revert "[Dagger] Remove Dependency.get from VolumeDialogImpl."" into sc-v2-dev am: efbfcd1290

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/15628183

Change-Id: I3ec594a03cfba5a8300d963ca6622a079933193e
This commit is contained in:
Caitlin Cassidy
2021-08-19 23:29:33 +00:00
committed by Automerger Merge Worker
7 changed files with 38 additions and 95 deletions

View File

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

View File

@@ -75,6 +75,7 @@ import com.android.systemui.util.sensors.SensorModule;
import com.android.systemui.util.settings.SettingsUtilModule; import com.android.systemui.util.settings.SettingsUtilModule;
import com.android.systemui.util.time.SystemClock; import com.android.systemui.util.time.SystemClock;
import com.android.systemui.util.time.SystemClockImpl; 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.wallet.dagger.WalletModule;
import com.android.systemui.wmshell.BubblesManager; import com.android.systemui.wmshell.BubblesManager;
import com.android.wm.shell.bubbles.Bubbles; import com.android.wm.shell.bubbles.Bubbles;
@@ -111,6 +112,7 @@ import dagger.Provides;
TunerModule.class, TunerModule.class,
UserModule.class, UserModule.class,
UtilModule.class, UtilModule.class,
VolumeModule.class,
WalletModule.class WalletModule.class
}, },
subcomponents = { subcomponents = {

View File

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

View File

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

View File

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

View File

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