diff --git a/packages/SystemUI/src/com/android/systemui/qs/QSFragment.java b/packages/SystemUI/src/com/android/systemui/qs/QSFragment.java index 043f5f1610a6f..0fe018efb009e 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/QSFragment.java +++ b/packages/SystemUI/src/com/android/systemui/qs/QSFragment.java @@ -16,9 +16,6 @@ package com.android.systemui.qs; import static android.app.StatusBarManager.DISABLE2_QUICK_SETTINGS; -import static com.android.systemui.media.dagger.MediaModule.QS_PANEL; -import static com.android.systemui.media.dagger.MediaModule.QUICK_QS_PANEL; - import android.animation.Animator; import android.animation.AnimatorListenerAdapter; import android.content.res.Configuration; @@ -53,7 +50,6 @@ import com.android.systemui.util.LifecycleFragment; import com.android.systemui.util.Utils; import javax.inject.Inject; -import javax.inject.Named; public class QSFragment extends LifecycleFragment implements QS, CommandQueue.Callbacks, StatusBarStateController.StateListener { @@ -86,8 +82,6 @@ public class QSFragment extends LifecycleFragment implements QS, CommandQueue.Ca private final InjectionInflationController mInjectionInflater; private final CommandQueue mCommandQueue; private final QSDetailDisplayer mQsDetailDisplayer; - private final MediaHost mQsMediaHost; - private final MediaHost mQqsMediaHost; private final QSFragmentComponent.Factory mQsComponentFactory; private final QSTileHost mHost; private boolean mShowCollapsedOnKeyguard; @@ -110,15 +104,12 @@ public class QSFragment extends LifecycleFragment implements QS, CommandQueue.Ca public QSFragment(RemoteInputQuickSettingsDisabler remoteInputQsDisabler, InjectionInflationController injectionInflater, QSTileHost qsTileHost, StatusBarStateController statusBarStateController, CommandQueue commandQueue, - QSDetailDisplayer qsDetailDisplayer, @Named(QS_PANEL) MediaHost qsMediaHost, - @Named(QUICK_QS_PANEL) MediaHost qqsMediaHost, + QSDetailDisplayer qsDetailDisplayer, QSFragmentComponent.Factory qsComponentFactory) { mRemoteInputQuickSettingsDisabler = remoteInputQsDisabler; mInjectionInflater = injectionInflater; mCommandQueue = commandQueue; mQsDetailDisplayer = qsDetailDisplayer; - mQsMediaHost = qsMediaHost; - mQqsMediaHost = qqsMediaHost; mQsComponentFactory = qsComponentFactory; commandQueue.observe(getLifecycle(), this); mHost = qsTileHost; @@ -270,6 +261,7 @@ public class QSFragment extends LifecycleFragment implements QS, CommandQueue.Ca } public void setHost(QSTileHost qsh) { + mHeader.setQSPanel(mQSPanelController.getView()); mQSDetail.setHost(qsh); } @@ -463,9 +455,11 @@ public class QSFragment extends LifecycleFragment implements QS, CommandQueue.Ca float expandedMediaPosition = absoluteBottomPosition - mQSPanelScrollView.getScrollY() + mQSPanelScrollView.getScrollRange(); // The expanded media host should never move below the laid out position - pinToBottom(expandedMediaPosition, mQsMediaHost, true /* expanded */); + pinToBottom( + expandedMediaPosition, mQSPanelController.getMediaHost(), true /* expanded */); // The expanded media host should never move above the laid out position - pinToBottom(absoluteBottomPosition, mQqsMediaHost, false /* expanded */); + pinToBottom(absoluteBottomPosition, mHeader.getHeaderQsPanel().getMediaHost(), + false /* expanded */); } } diff --git a/packages/SystemUI/src/com/android/systemui/qs/QSPanel.java b/packages/SystemUI/src/com/android/systemui/qs/QSPanel.java index 8955a7e27deef..08f38a83a4114 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/QSPanel.java +++ b/packages/SystemUI/src/com/android/systemui/qs/QSPanel.java @@ -550,7 +550,6 @@ public class QSPanel extends LinearLayout implements Tunable { } boolean horizontal = shouldUseHorizontalLayout(); ViewGroup host = mMediaHost.getHostView(); - ViewGroup newParent = horizontal ? mHorizontalLinearLayout : this; ViewGroup currentParent = (ViewGroup) host.getParent(); if (currentParent != newParent) { @@ -866,6 +865,10 @@ public class QSPanel extends LinearLayout implements Tunable { } } + public MediaHost getMediaHost() { + return mMediaHost; + } + /** * Set the header container of quick settings. */ diff --git a/packages/SystemUI/src/com/android/systemui/qs/QSPanelController.java b/packages/SystemUI/src/com/android/systemui/qs/QSPanelController.java index d0a97fc792a2a..addaf7e456b84 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/QSPanelController.java +++ b/packages/SystemUI/src/com/android/systemui/qs/QSPanelController.java @@ -16,7 +16,6 @@ package com.android.systemui.qs; -import static com.android.systemui.media.dagger.MediaModule.QS_PANEL; import static com.android.systemui.qs.QSPanel.QS_SHOW_BRIGHTNESS; import android.annotation.NonNull; @@ -41,7 +40,6 @@ import com.android.systemui.tuner.TunerService; import java.util.function.Consumer; import javax.inject.Inject; -import javax.inject.Named; /** * Controller for {@link QSPanel}. @@ -51,7 +49,6 @@ public class QSPanelController extends QSPanelControllerBase { private final QSSecurityFooter mQsSecurityFooter; private final TunerService mTunerService; private final QSCustomizerController mQsCustomizerController; - private final QSTileRevealController.Factory mQsTileRevealControllerFactory; private final BrightnessController mBrightnessController; private final BrightnessSlider.Factory mBrightnessSliderFactory; private final BrightnessSlider mBrightnessSlider; @@ -76,17 +73,15 @@ public class QSPanelController extends QSPanelControllerBase { @Inject QSPanelController(QSPanel view, QSSecurityFooter qsSecurityFooter, TunerService tunerService, QSTileHost qstileHost, QSCustomizerController qsCustomizerController, - @Named(QS_PANEL) MediaHost mediaHost, QSTileRevealController.Factory qsTileRevealControllerFactory, DumpManager dumpManager, MetricsLogger metricsLogger, UiEventLogger uiEventLogger, BrightnessController.Factory brightnessControllerFactory, BrightnessSlider.Factory brightnessSliderFactory) { - super(view, qstileHost, qsCustomizerController, mediaHost, metricsLogger, uiEventLogger, - dumpManager); + super(view, qstileHost, qsCustomizerController, qsTileRevealControllerFactory, + metricsLogger, uiEventLogger, dumpManager); mQsSecurityFooter = qsSecurityFooter; mTunerService = tunerService; mQsCustomizerController = qsCustomizerController; - mQsTileRevealControllerFactory = qsTileRevealControllerFactory; mQsSecurityFooter.setHostEnvironment(qstileHost); mBrightnessSliderFactory = brightnessSliderFactory; @@ -98,7 +93,6 @@ public class QSPanelController extends QSPanelControllerBase { @Override public void onInit() { - super.init(); mQsCustomizerController.init(); mBrightnessSlider.init(); } @@ -119,12 +113,6 @@ public class QSPanelController extends QSPanelControllerBase { } } - @Override - protected QSTileRevealController createTileRevealController() { - return mQsTileRevealControllerFactory.create( - this, (PagedTileLayout) mView.createRegularTileLayout()); - } - @Override protected void onViewDetached() { mTunerService.removeTunable(mView); @@ -170,6 +158,11 @@ public class QSPanelController extends QSPanelControllerBase { } } + /** */ + public MediaHost getMediaHost() { + return mView.getMediaHost(); + } + /** */ public void setBrightnessMirror(BrightnessMirrorController brightnessMirrorController) { mBrightnessMirrorController = brightnessMirrorController; @@ -287,10 +280,5 @@ public class QSPanelController extends QSPanelControllerBase { public void setFooterPageIndicator(PageIndicator pageIndicator) { mView.setFooterPageIndicator(pageIndicator); } - - /** */ - public boolean isExpanded() { - return mView.isExpanded(); - } } diff --git a/packages/SystemUI/src/com/android/systemui/qs/QSPanelControllerBase.java b/packages/SystemUI/src/com/android/systemui/qs/QSPanelControllerBase.java index 06bf9acb64f09..a3daf0e3e5fee 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/QSPanelControllerBase.java +++ b/packages/SystemUI/src/com/android/systemui/qs/QSPanelControllerBase.java @@ -48,6 +48,7 @@ public abstract class QSPanelControllerBase extends ViewContr implements Dumpable{ protected final QSTileHost mHost; private final QSCustomizerController mQsCustomizerController; + private final QSTileRevealController.Factory mQsTileRevealControllerFactory; private final MediaHost mMediaHost; private final MetricsLogger mMetricsLogger; private final UiEventLogger mUiEventLogger; @@ -73,12 +74,14 @@ public abstract class QSPanelControllerBase extends ViewContr }; protected QSPanelControllerBase(T view, QSTileHost host, - QSCustomizerController qsCustomizerController, MediaHost mediaHost, + QSCustomizerController qsCustomizerController, + QSTileRevealController.Factory qsTileRevealControllerFactory, MetricsLogger metricsLogger, UiEventLogger uiEventLogger, DumpManager dumpManager) { super(view); mHost = host; mQsCustomizerController = qsCustomizerController; - mMediaHost = mediaHost; + mQsTileRevealControllerFactory = qsTileRevealControllerFactory; + mMediaHost = mView.getMediaHost(); mMetricsLogger = metricsLogger; mUiEventLogger = uiEventLogger; mDumpManager = dumpManager; @@ -86,8 +89,10 @@ public abstract class QSPanelControllerBase extends ViewContr @Override protected void onViewAttached() { - mQsTileRevealController = createTileRevealController(); - if (mQsTileRevealController != null) { + QSPanel.QSTileLayout regularTileLayout = mView.createRegularTileLayout(); + if (regularTileLayout instanceof PagedTileLayout) { + mQsTileRevealController = mQsTileRevealControllerFactory.create( + (PagedTileLayout) regularTileLayout); mQsTileRevealController.setExpansion(mRevealExpansion); } @@ -114,10 +119,6 @@ public abstract class QSPanelControllerBase extends ViewContr mDumpManager.unregisterDumpable(mView.getDumpableTag()); } - protected QSTileRevealController createTileRevealController() { - return null; - } - /** */ public void setTiles() { setTiles(mHost.getTiles(), false); @@ -125,11 +126,9 @@ public abstract class QSPanelControllerBase extends ViewContr /** */ public void setTiles(Collection tiles, boolean collapsedView) { - // TODO(b/168904199): move this logic into QSPanelController. - if (!collapsedView && mQsTileRevealController != null) { + if (!collapsedView) { mQsTileRevealController.updateRevealedTiles(tiles); } - for (QSPanelControllerBase.TileRecord record : mRecords) { mView.removeTile(record); record.tile.removeCallback(record.callback); @@ -193,6 +192,7 @@ public abstract class QSPanelControllerBase extends ViewContr .collect(Collectors.joining(",")); } + /** */ public void setExpanded(boolean expanded) { mView.setExpanded(expanded); @@ -234,6 +234,7 @@ public abstract class QSPanelControllerBase extends ViewContr boolean switchTileLayout(boolean force) { if (mView.switchTileLayout(force, mRecords)) { setTiles(); + mView.reSetLayoutListening(); return true; } return false; diff --git a/packages/SystemUI/src/com/android/systemui/qs/QSSecurityFooter.java b/packages/SystemUI/src/com/android/systemui/qs/QSSecurityFooter.java index 478923994af85..270fcbffbd712 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/QSSecurityFooter.java +++ b/packages/SystemUI/src/com/android/systemui/qs/QSSecurityFooter.java @@ -15,8 +15,6 @@ */ package com.android.systemui.qs; -import static com.android.systemui.qs.dagger.QSFragmentModule.QS_SECURITY_FOOTER_VIEW; - import android.app.AlertDialog; import android.app.admin.DeviceAdminInfo; import android.app.admin.DevicePolicyEventLogger; @@ -46,10 +44,9 @@ import android.widget.TextView; import androidx.annotation.VisibleForTesting; import com.android.internal.util.FrameworkStatsLog; +import com.android.systemui.Dependency; import com.android.systemui.FontSizeUtils; import com.android.systemui.R; -import com.android.systemui.dagger.qualifiers.Background; -import com.android.systemui.dagger.qualifiers.Main; import com.android.systemui.plugins.ActivityStarter; import com.android.systemui.qs.dagger.QSScope; import com.android.systemui.settings.UserTracker; @@ -57,7 +54,6 @@ import com.android.systemui.statusbar.phone.SystemUIDialog; import com.android.systemui.statusbar.policy.SecurityController; import javax.inject.Inject; -import javax.inject.Named; @QSScope class QSSecurityFooter implements OnClickListener, DialogInterface.OnClickListener { @@ -85,19 +81,18 @@ class QSSecurityFooter implements OnClickListener, DialogInterface.OnClickListen private int mFooterIconId; @Inject - QSSecurityFooter(@Named(QS_SECURITY_FOOTER_VIEW) View rootView, Context context, - UserTracker userTracker, @Main Handler mainHandler, ActivityStarter activityStarter, - SecurityController securityController, @Background Looper bgLooper) { - mRootView = rootView; + public QSSecurityFooter(QSPanel qsPanel, Context context, UserTracker userTracker) { + mRootView = LayoutInflater.from(context) + .inflate(R.layout.quick_settings_footer, qsPanel, false); mRootView.setOnClickListener(this); mFooterText = mRootView.findViewById(R.id.footer_text); mFooterIcon = mRootView.findViewById(R.id.footer_icon); mFooterIconId = R.drawable.ic_info_outline; mContext = context; - mMainHandler = mainHandler; - mActivityStarter = activityStarter; - mSecurityController = securityController; - mHandler = new H(bgLooper); + mMainHandler = new Handler(Looper.myLooper()); + mActivityStarter = Dependency.get(ActivityStarter.class); + mSecurityController = Dependency.get(SecurityController.class); + mHandler = new H(Dependency.get(Dependency.BG_LOOPER)); mUserTracker = userTracker; } diff --git a/packages/SystemUI/src/com/android/systemui/qs/QSTileRevealController.java b/packages/SystemUI/src/com/android/systemui/qs/QSTileRevealController.java index 3f931088ec836..9414d0e3ed52d 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/QSTileRevealController.java +++ b/packages/SystemUI/src/com/android/systemui/qs/QSTileRevealController.java @@ -22,7 +22,7 @@ public class QSTileRevealController { private static final long QS_REVEAL_TILES_DELAY = 500L; private final Context mContext; - private final QSPanelController mQSPanelController; + private final QSPanel mQSPanel; private final PagedTileLayout mPagedTileLayout; private final QSCustomizerController mQsCustomizerController; private final ArraySet mTilesToReveal = new ArraySet<>(); @@ -32,17 +32,17 @@ public class QSTileRevealController { @Override public void run() { mPagedTileLayout.startTileReveal(mTilesToReveal, () -> { - if (mQSPanelController.isExpanded()) { + if (mQSPanel.isExpanded()) { addTileSpecsToRevealed(mTilesToReveal); mTilesToReveal.clear(); } }); } }; - QSTileRevealController(Context context, QSPanelController qsPanelController, - PagedTileLayout pagedTileLayout, QSCustomizerController qsCustomizerController) { + QSTileRevealController(Context context, QSPanel qsPanel, PagedTileLayout pagedTileLayout, + QSCustomizerController qsCustomizerController) { mContext = context; - mQSPanelController = qsPanelController; + mQSPanel = qsPanel; mPagedTileLayout = pagedTileLayout; mQsCustomizerController = qsCustomizerController; } @@ -85,17 +85,18 @@ public class QSTileRevealController { @QSScope static class Factory { private final Context mContext; + private final QSPanel mQsPanel; private final QSCustomizerController mQsCustomizerController; @Inject - Factory(Context context, QSCustomizerController qsCustomizerController) { + Factory(Context context, QSPanel qsPanel, QSCustomizerController qsCustomizerController) { mContext = context; + mQsPanel = qsPanel; mQsCustomizerController = qsCustomizerController; } - QSTileRevealController create(QSPanelController qsPanelController, - PagedTileLayout pagedTileLayout) { - return new QSTileRevealController(mContext, qsPanelController, pagedTileLayout, + QSTileRevealController create(PagedTileLayout pagedTileLayout) { + return new QSTileRevealController(mContext, mQsPanel, pagedTileLayout, mQsCustomizerController); } } diff --git a/packages/SystemUI/src/com/android/systemui/qs/QuickQSPanel.java b/packages/SystemUI/src/com/android/systemui/qs/QuickQSPanel.java index 06e8634a0d1fa..ebe80ae961727 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/QuickQSPanel.java +++ b/packages/SystemUI/src/com/android/systemui/qs/QuickQSPanel.java @@ -51,6 +51,7 @@ public class QuickQSPanel extends QSPanel { private boolean mDisabledByPolicy; private int mMaxTiles; + protected QSPanel mFullPanel; @Inject @@ -117,6 +118,10 @@ public class QuickQSPanel extends QSPanel { return TAG; } + public void setQSPanelAndHeader(QSPanel fullPanel, View header) { + mFullPanel = fullPanel; + } + @Override protected boolean shouldShowDetail() { return !mExpanded; diff --git a/packages/SystemUI/src/com/android/systemui/qs/QuickQSPanelController.java b/packages/SystemUI/src/com/android/systemui/qs/QuickQSPanelController.java index 7f50eef019a93..54d3026878c8c 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/QuickQSPanelController.java +++ b/packages/SystemUI/src/com/android/systemui/qs/QuickQSPanelController.java @@ -16,13 +16,10 @@ package com.android.systemui.qs; -import static com.android.systemui.media.dagger.MediaModule.QUICK_QS_PANEL; - import com.android.internal.logging.MetricsLogger; import com.android.internal.logging.UiEventLogger; import com.android.systemui.R; import com.android.systemui.dump.DumpManager; -import com.android.systemui.media.MediaHost; import com.android.systemui.plugins.qs.QSTile; import com.android.systemui.qs.customize.QSCustomizerController; import com.android.systemui.qs.dagger.QSScope; @@ -31,7 +28,6 @@ import java.util.ArrayList; import java.util.List; import javax.inject.Inject; -import javax.inject.Named; /** Controller for {@link QuickQSPanel}. */ @QSScope @@ -50,11 +46,11 @@ public class QuickQSPanelController extends QSPanelControllerBase @Inject QuickQSPanelController(QuickQSPanel view, QSTileHost qsTileHost, QSCustomizerController qsCustomizerController, - @Named(QUICK_QS_PANEL) MediaHost mediaHost, + QSTileRevealController.Factory qsTileRevealControllerFactory, MetricsLogger metricsLogger, UiEventLogger uiEventLogger, DumpManager dumpManager) { - super(view, qsTileHost, qsCustomizerController, mediaHost, metricsLogger, uiEventLogger, - dumpManager); + super(view, qsTileHost, qsCustomizerController, qsTileRevealControllerFactory, + metricsLogger, uiEventLogger, dumpManager); } @Override diff --git a/packages/SystemUI/src/com/android/systemui/qs/QuickStatusBarHeader.java b/packages/SystemUI/src/com/android/systemui/qs/QuickStatusBarHeader.java index e2748fcb2fc20..5757602b9d0fd 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/QuickStatusBarHeader.java +++ b/packages/SystemUI/src/com/android/systemui/qs/QuickStatusBarHeader.java @@ -153,12 +153,6 @@ public class QuickStatusBarHeader extends RelativeLayout implements LifecycleOwn mBatteryRemainingIcon.setPercentShowMode(BatteryMeterView.MODE_ESTIMATE); mRingerModeTextView.setSelected(true); mNextAlarmTextView.setSelected(true); - - int colorForeground = Utils.getColorAttrDefaultColor(getContext(), - android.R.attr.colorForeground); - float intensity = getColorIntensity(colorForeground); - int fillColor = mDualToneHandler.getSingleColor(intensity); - mBatteryRemainingIcon.onDarkChanged(tintArea, intensity, fillColor); } void onAttach(TintedIconManager iconManager) { @@ -445,6 +439,18 @@ public class QuickStatusBarHeader extends RelativeLayout implements LifecycleOwn post(() -> setClickable(!mExpanded)); } + public void setQSPanel(final QSPanel qsPanel) { + //host.setHeaderView(mExpandIndicator); + mHeaderQsPanel.setQSPanelAndHeader(qsPanel, this); + + Rect tintArea = new Rect(0, 0, 0, 0); + int colorForeground = Utils.getColorAttrDefaultColor(getContext(), + android.R.attr.colorForeground); + float intensity = getColorIntensity(colorForeground); + int fillColor = mDualToneHandler.getSingleColor(intensity); + mBatteryRemainingIcon.onDarkChanged(tintArea, intensity, fillColor); + } + public void setCallback(Callback qsPanelCallback) { mHeaderQsPanel.setCallback(qsPanelCallback); } @@ -469,7 +475,6 @@ public class QuickStatusBarHeader extends RelativeLayout implements LifecycleOwn return mLifecycle; } - /** */ public void setContentMargins(int marginStart, int marginEnd) { mContentMarginStart = marginStart; mContentMarginEnd = marginEnd; diff --git a/packages/SystemUI/src/com/android/systemui/qs/QuickStatusBarHeaderController.java b/packages/SystemUI/src/com/android/systemui/qs/QuickStatusBarHeaderController.java index cb744f72ee980..32904a21cd3c5 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/QuickStatusBarHeaderController.java +++ b/packages/SystemUI/src/com/android/systemui/qs/QuickStatusBarHeaderController.java @@ -366,6 +366,7 @@ class QuickStatusBarHeaderController extends ViewController mController; /** Implementation needed to ensure we have a reflectively-available class name. */ - private class TestableQSPanelControllerBase extends QSPanelControllerBase { + private static class TestableQSPanelControllerBase extends QSPanelControllerBase { protected TestableQSPanelControllerBase(QSPanel view, QSTileHost host, - QSCustomizerController qsCustomizerController, MediaHost mediaHost, + QSCustomizerController qsCustomizerController, + QSTileRevealController.Factory qsTileRevealControllerFactory, MetricsLogger metricsLogger, UiEventLogger uiEventLogger, DumpManager dumpManager) { - super(view, host, qsCustomizerController, mediaHost, - metricsLogger, uiEventLogger, dumpManager); - } - - @Override - protected QSTileRevealController createTileRevealController() { - return mQSTileRevealController; + super(view, host, qsCustomizerController, qsTileRevealControllerFactory, metricsLogger, + uiEventLogger, dumpManager); } } @@ -104,6 +100,7 @@ public class QSPanelControllerBaseTest extends SysuiTestCase { public void setup() throws Exception { MockitoAnnotations.initMocks(this); + when(mQSPanel.getMediaHost()).thenReturn(mMediaHost); when(mQSPanel.isAttachedToWindow()).thenReturn(true); when(mQSPanel.getDumpableTag()).thenReturn("QSPanel"); when(mQSPanel.openPanelEvent()).thenReturn(QSEvent.QS_PANEL_EXPANDED); @@ -111,11 +108,11 @@ public class QSPanelControllerBaseTest extends SysuiTestCase { when(mQSPanel.createRegularTileLayout()).thenReturn(mPagedTileLayout); when(mQSTileHost.getTiles()).thenReturn(Collections.singleton(mQSTile)); when(mQSTileHost.createTileView(eq(mQSTile), anyBoolean())).thenReturn(mQSTileView); - when(mQSTileRevealControllerFactory.create(any(), any())) - .thenReturn(mQSTileRevealController); + when(mQSTileRevealControllerFactory.create(any())).thenReturn(mQSTileRevealController); mController = new TestableQSPanelControllerBase(mQSPanel, mQSTileHost, - mQSCustomizerController, mMediaHost, mMetricsLogger, mUiEventLogger, mDumpManager); + mQSCustomizerController, mQSTileRevealControllerFactory, mMetricsLogger, + mUiEventLogger, mDumpManager); mController.init(); reset(mQSTileRevealController); @@ -125,14 +122,9 @@ public class QSPanelControllerBaseTest extends SysuiTestCase { public void testSetRevealExpansion_preAttach() { mController.onViewDetached(); - QSPanelControllerBase controller = new QSPanelControllerBase( - mQSPanel, mQSTileHost, mQSCustomizerController, mMediaHost, mMetricsLogger, - mUiEventLogger, mDumpManager) { - @Override - protected QSTileRevealController createTileRevealController() { - return mQSTileRevealController; - } - }; + QSPanelControllerBase controller = new TestableQSPanelControllerBase(mQSPanel, + mQSTileHost, mQSCustomizerController, mQSTileRevealControllerFactory, + mMetricsLogger, mUiEventLogger, mDumpManager); // Nothing happens until attached controller.setRevealExpansion(0); diff --git a/packages/SystemUI/tests/src/com/android/systemui/qs/QSPanelControllerTest.java b/packages/SystemUI/tests/src/com/android/systemui/qs/QSPanelControllerTest.java index 9090b9bc0e6f6..f57e3c2892ea6 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/qs/QSPanelControllerTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/qs/QSPanelControllerTest.java @@ -41,7 +41,6 @@ import com.android.systemui.settings.brightness.BrightnessController; import com.android.systemui.settings.brightness.BrightnessSlider; import com.android.systemui.settings.brightness.ToggleSlider; import com.android.systemui.tuner.TunerService; -import com.android.systemui.util.animation.DisappearParameters; import org.junit.Before; import org.junit.Test; @@ -98,6 +97,7 @@ public class QSPanelControllerTest extends SysuiTestCase { public void setup() throws Exception { MockitoAnnotations.initMocks(this); + when(mQSPanel.getMediaHost()).thenReturn(mMediaHost); when(mQSPanel.isAttachedToWindow()).thenReturn(true); when(mQSPanel.getDumpableTag()).thenReturn("QSPanel"); when(mQSPanel.createRegularTileLayout()).thenReturn(mPagedTileLayout); @@ -107,13 +107,11 @@ public class QSPanelControllerTest extends SysuiTestCase { .thenReturn(mBrightnessSlider); when(mBrightnessControllerFactory.create(any(ToggleSlider.class))) .thenReturn(mBrightnessController); - when(mQSTileRevealControllerFactory.create(any(), any())) - .thenReturn(mQSTileRevealController); - when(mMediaHost.getDisappearParameters()).thenReturn(new DisappearParameters()); + when(mQSTileRevealControllerFactory.create(any())).thenReturn(mQSTileRevealController); mController = new QSPanelController(mQSPanel, mQSSecurityFooter, mTunerService, - mQSTileHost, mQSCustomizerController, mMediaHost, mQSTileRevealControllerFactory, - mDumpManager, mMetricsLogger, mUiEventLogger, mBrightnessControllerFactory, + mQSTileHost, mQSCustomizerController, mQSTileRevealControllerFactory, mDumpManager, + mMetricsLogger, mUiEventLogger, mBrightnessControllerFactory, mToggleSliderViewControllerFactory); mController.init(); diff --git a/packages/SystemUI/tests/src/com/android/systemui/qs/QSSecurityFooterTest.java b/packages/SystemUI/tests/src/com/android/systemui/qs/QSSecurityFooterTest.java index 6fa6f31984f2f..c82aee48ab913 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/qs/QSSecurityFooterTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/qs/QSSecurityFooterTest.java @@ -23,9 +23,8 @@ import static org.mockito.Mockito.never; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; +import android.content.Context; import android.content.pm.UserInfo; -import android.os.Handler; -import android.os.Looper; import android.provider.Settings; import android.test.suitebuilder.annotation.SmallTest; import android.testing.AndroidTestingRunner; @@ -39,18 +38,16 @@ import android.view.View; import android.view.ViewGroup; import android.widget.TextView; +import com.android.systemui.Dependency; import com.android.systemui.R; import com.android.systemui.SysuiTestCase; -import com.android.systemui.plugins.ActivityStarter; import com.android.systemui.settings.UserTracker; import com.android.systemui.statusbar.policy.SecurityController; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; -import org.mockito.Mock; import org.mockito.Mockito; -import org.mockito.MockitoAnnotations; /* * Compile and run the whole SystemUI test suite: @@ -76,23 +73,22 @@ public class QSSecurityFooterTest extends SysuiTestCase { private TextView mFooterText; private TestableImageView mFooterIcon; private QSSecurityFooter mFooter; - @Mock - private SecurityController mSecurityController; - @Mock + private SecurityController mSecurityController = mock(SecurityController.class); private UserTracker mUserTracker; - @Mock - private ActivityStarter mActivityStarter; @Before public void setUp() { - MockitoAnnotations.initMocks(this); - Looper looper = TestableLooper.get(this).getLooper(); + mDependency.injectTestDependency(SecurityController.class, mSecurityController); + mDependency.injectTestDependency(Dependency.BG_LOOPER, + TestableLooper.get(this).getLooper()); + mUserTracker = mock(UserTracker.class); when(mUserTracker.getUserInfo()).thenReturn(mock(UserInfo.class)); - mRootView = (ViewGroup) new LayoutInflaterBuilder(mContext) - .replace("ImageView", TestableImageView.class) - .build().inflate(R.layout.quick_settings_footer, null, false); - mFooter = new QSSecurityFooter(mRootView, mContext, mUserTracker, new Handler(looper), - mActivityStarter, mSecurityController, looper); + mContext.addMockSystemService(Context.LAYOUT_INFLATER_SERVICE, + new LayoutInflaterBuilder(mContext) + .replace("ImageView", TestableImageView.class) + .build()); + mFooter = new QSSecurityFooter(null, mContext, mUserTracker); + mRootView = (ViewGroup) mFooter.getView(); mFooterText = mRootView.findViewById(R.id.footer_text); mFooterIcon = mRootView.findViewById(R.id.footer_icon); mFooter.setHostEnvironment(null);