Merge changes from topic "presubmit-am-cbc644a75a634fa49a2e0c5860314968" into sc-v2-dev-plus-aosp
* changes:
[automerge] Remove QQS brightness controller 2p: 32b7c35f24
Remove QQS brightness controller
This commit is contained in:
committed by
Android (Google) Code Review
commit
6b5cdaf9f8
@@ -429,7 +429,6 @@ public class QSFragment extends LifecycleFragment implements QS, CommandQueue.Ca
|
||||
public void setBrightnessMirrorController(
|
||||
BrightnessMirrorController brightnessMirrorController) {
|
||||
mQSPanelController.setBrightnessMirror(brightnessMirrorController);
|
||||
mQuickQSPanelController.setBrightnessMirror(brightnessMirrorController);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -1,102 +0,0 @@
|
||||
/*
|
||||
* Copyright (C) 2021 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.android.systemui.qs
|
||||
|
||||
import androidx.annotation.VisibleForTesting
|
||||
import com.android.systemui.settings.brightness.BrightnessController
|
||||
import com.android.systemui.settings.brightness.BrightnessSliderController
|
||||
import com.android.systemui.settings.brightness.MirroredBrightnessController
|
||||
import com.android.systemui.statusbar.policy.BrightnessMirrorController
|
||||
import javax.inject.Inject
|
||||
|
||||
/**
|
||||
* Controls brightness slider in QQS, which is visible only in split shade. It's responsible for
|
||||
* showing/hiding it when appropriate and (un)registering listeners
|
||||
*/
|
||||
class QuickQSBrightnessController @VisibleForTesting constructor(
|
||||
private val brightnessControllerFactory: () -> BrightnessController
|
||||
) : MirroredBrightnessController {
|
||||
|
||||
@Inject constructor(
|
||||
brightnessControllerFactory: BrightnessController.Factory,
|
||||
brightnessSliderControllerFactory: BrightnessSliderController.Factory,
|
||||
quickQSPanel: QuickQSPanel
|
||||
) : this(brightnessControllerFactory = {
|
||||
val slider = brightnessSliderControllerFactory.create(quickQSPanel.context,
|
||||
quickQSPanel)
|
||||
slider.init()
|
||||
quickQSPanel.setBrightnessView(slider.rootView)
|
||||
brightnessControllerFactory.create(slider)
|
||||
})
|
||||
|
||||
private var isListening = false
|
||||
private var brightnessController: BrightnessController? = null
|
||||
private var mirrorController: BrightnessMirrorController? = null
|
||||
|
||||
fun init(shouldUseSplitNotificationShade: Boolean) {
|
||||
refreshVisibility(shouldUseSplitNotificationShade)
|
||||
}
|
||||
|
||||
/**
|
||||
* Starts/Stops listening for brightness changing events.
|
||||
* It's fine to call this function even if slider is not visible (which would be the case for
|
||||
* all small screen devices), it will just do nothing in that case
|
||||
*/
|
||||
fun setListening(listening: Boolean) {
|
||||
if (listening) {
|
||||
// controller can be null when slider was never shown
|
||||
if (!isListening && brightnessController != null) {
|
||||
brightnessController?.registerCallbacks()
|
||||
isListening = true
|
||||
}
|
||||
} else {
|
||||
brightnessController?.unregisterCallbacks()
|
||||
isListening = false
|
||||
}
|
||||
}
|
||||
|
||||
fun checkRestrictionAndSetEnabled() {
|
||||
brightnessController?.checkRestrictionAndSetEnabled()
|
||||
}
|
||||
|
||||
fun refreshVisibility(shouldUseSplitNotificationShade: Boolean) {
|
||||
if (shouldUseSplitNotificationShade) {
|
||||
showBrightnessSlider()
|
||||
} else {
|
||||
hideBrightnessSlider()
|
||||
}
|
||||
}
|
||||
|
||||
override fun setMirror(controller: BrightnessMirrorController) {
|
||||
mirrorController = controller
|
||||
mirrorController?.let { brightnessController?.setMirror(it) }
|
||||
}
|
||||
|
||||
private fun hideBrightnessSlider() {
|
||||
brightnessController?.hideSlider()
|
||||
}
|
||||
|
||||
private fun showBrightnessSlider() {
|
||||
if (brightnessController == null) {
|
||||
brightnessController = brightnessControllerFactory()
|
||||
mirrorController?.also { brightnessController?.setMirror(it) }
|
||||
brightnessController?.registerCallbacks()
|
||||
isListening = true
|
||||
}
|
||||
brightnessController?.showSlider()
|
||||
}
|
||||
}
|
||||
@@ -30,8 +30,6 @@ import com.android.systemui.plugins.qs.QSTile;
|
||||
import com.android.systemui.qs.customize.QSCustomizerController;
|
||||
import com.android.systemui.qs.dagger.QSScope;
|
||||
import com.android.systemui.qs.logging.QSLogger;
|
||||
import com.android.systemui.settings.brightness.BrightnessMirrorHandler;
|
||||
import com.android.systemui.statusbar.policy.BrightnessMirrorController;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
@@ -51,9 +49,6 @@ public class QuickQSPanelController extends QSPanelControllerBase<QuickQSPanel>
|
||||
}
|
||||
};
|
||||
|
||||
// brightness is visible only in split shade
|
||||
private final QuickQSBrightnessController mBrightnessController;
|
||||
private final BrightnessMirrorHandler mBrightnessMirrorHandler;
|
||||
private final FooterActionsController mFooterActionsController;
|
||||
|
||||
@Inject
|
||||
@@ -63,13 +58,10 @@ public class QuickQSPanelController extends QSPanelControllerBase<QuickQSPanel>
|
||||
@Named(QUICK_QS_PANEL) MediaHost mediaHost,
|
||||
MetricsLogger metricsLogger, UiEventLogger uiEventLogger, QSLogger qsLogger,
|
||||
DumpManager dumpManager,
|
||||
QuickQSBrightnessController quickQSBrightnessController,
|
||||
@Named(QQS_FOOTER) FooterActionsController footerActionsController
|
||||
) {
|
||||
super(view, qsTileHost, qsCustomizerController, usingMediaPlayer, mediaHost, metricsLogger,
|
||||
uiEventLogger, qsLogger, dumpManager);
|
||||
mBrightnessController = quickQSBrightnessController;
|
||||
mBrightnessMirrorHandler = new BrightnessMirrorHandler(mBrightnessController);
|
||||
mFooterActionsController = footerActionsController;
|
||||
}
|
||||
|
||||
@@ -79,7 +71,6 @@ public class QuickQSPanelController extends QSPanelControllerBase<QuickQSPanel>
|
||||
mMediaHost.setExpansion(0.0f);
|
||||
mMediaHost.setShowsOnlyActiveMedia(true);
|
||||
mMediaHost.init(MediaHierarchyManager.LOCATION_QQS);
|
||||
mBrightnessController.init(mShouldUseSplitNotificationShade);
|
||||
mFooterActionsController.init();
|
||||
mFooterActionsController.refreshVisibility(mShouldUseSplitNotificationShade);
|
||||
}
|
||||
@@ -88,20 +79,17 @@ public class QuickQSPanelController extends QSPanelControllerBase<QuickQSPanel>
|
||||
protected void onViewAttached() {
|
||||
super.onViewAttached();
|
||||
mView.addOnConfigurationChangedListener(mOnConfigurationChangedListener);
|
||||
mBrightnessMirrorHandler.onQsPanelAttached();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onViewDetached() {
|
||||
super.onViewDetached();
|
||||
mView.removeOnConfigurationChangedListener(mOnConfigurationChangedListener);
|
||||
mBrightnessMirrorHandler.onQsPanelDettached();
|
||||
}
|
||||
|
||||
@Override
|
||||
void setListening(boolean listening) {
|
||||
super.setListening(listening);
|
||||
mBrightnessController.setListening(listening);
|
||||
mFooterActionsController.setListening(listening);
|
||||
}
|
||||
|
||||
@@ -114,15 +102,8 @@ public class QuickQSPanelController extends QSPanelControllerBase<QuickQSPanel>
|
||||
setTiles();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void refreshAllTiles() {
|
||||
mBrightnessController.checkRestrictionAndSetEnabled();
|
||||
super.refreshAllTiles();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onConfigurationChanged() {
|
||||
mBrightnessController.refreshVisibility(mShouldUseSplitNotificationShade);
|
||||
mFooterActionsController.refreshVisibility(mShouldUseSplitNotificationShade);
|
||||
}
|
||||
|
||||
@@ -146,8 +127,4 @@ public class QuickQSPanelController extends QSPanelControllerBase<QuickQSPanel>
|
||||
public int getNumQuickTiles() {
|
||||
return mView.getNumQuickTiles();
|
||||
}
|
||||
|
||||
public void setBrightnessMirror(BrightnessMirrorController brightnessMirrorController) {
|
||||
mBrightnessMirrorHandler.setController(brightnessMirrorController);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,118 +0,0 @@
|
||||
/*
|
||||
* Copyright (C) 2021 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.android.systemui.qs
|
||||
|
||||
import androidx.test.filters.SmallTest
|
||||
import com.android.systemui.SysuiTestCase
|
||||
import com.android.systemui.settings.brightness.BrightnessController
|
||||
import com.android.systemui.statusbar.policy.BrightnessMirrorController
|
||||
import org.junit.Before
|
||||
import org.junit.Rule
|
||||
import org.junit.Test
|
||||
import org.mockito.Mock
|
||||
import org.mockito.Mockito.times
|
||||
import org.mockito.Mockito.verify
|
||||
import org.mockito.Mockito.never
|
||||
import org.mockito.Mockito.mock
|
||||
import org.mockito.junit.MockitoJUnit
|
||||
|
||||
@SmallTest
|
||||
class QuickQSBrightnessControllerTest : SysuiTestCase() {
|
||||
|
||||
@Mock
|
||||
lateinit var brightnessController: BrightnessController
|
||||
@get:Rule
|
||||
val mockito = MockitoJUnit.rule()
|
||||
|
||||
lateinit var quickQSBrightnessController: QuickQSBrightnessController
|
||||
|
||||
@Before
|
||||
fun setUp() {
|
||||
quickQSBrightnessController = QuickQSBrightnessController(
|
||||
brightnessControllerFactory = { brightnessController })
|
||||
}
|
||||
|
||||
@Test
|
||||
fun testSliderIsShownWhenInitializedInSplitShade() {
|
||||
quickQSBrightnessController.init(shouldUseSplitNotificationShade = true)
|
||||
|
||||
verify(brightnessController).showSlider()
|
||||
}
|
||||
|
||||
@Test
|
||||
fun testSliderIsShownWhenRefreshedInSplitShade() {
|
||||
quickQSBrightnessController.refreshVisibility(shouldUseSplitNotificationShade = true)
|
||||
|
||||
verify(brightnessController, times(1)).showSlider()
|
||||
}
|
||||
|
||||
@Test
|
||||
fun testSliderIsHiddenWhenRefreshedInNonSplitShade() {
|
||||
// needs to be shown first
|
||||
quickQSBrightnessController.refreshVisibility(shouldUseSplitNotificationShade = true)
|
||||
quickQSBrightnessController.refreshVisibility(shouldUseSplitNotificationShade = false)
|
||||
|
||||
verify(brightnessController).hideSlider()
|
||||
}
|
||||
|
||||
@Test
|
||||
fun testSliderChangesVisibilityWhenRotating() {
|
||||
quickQSBrightnessController.refreshVisibility(shouldUseSplitNotificationShade = true)
|
||||
verify(brightnessController, times(1)).showSlider()
|
||||
|
||||
quickQSBrightnessController.refreshVisibility(shouldUseSplitNotificationShade = false)
|
||||
verify(brightnessController, times(1)).hideSlider()
|
||||
}
|
||||
|
||||
@Test
|
||||
fun testCallbacksAreRegisteredOnlyOnce() {
|
||||
// this flow simulates expanding shade in portrait...
|
||||
quickQSBrightnessController.setListening(true)
|
||||
quickQSBrightnessController.refreshVisibility(shouldUseSplitNotificationShade = false)
|
||||
// ... and rotating to landscape/split shade where slider is visible
|
||||
quickQSBrightnessController.refreshVisibility(shouldUseSplitNotificationShade = true)
|
||||
|
||||
verify(brightnessController, times(1)).registerCallbacks()
|
||||
}
|
||||
|
||||
@Test
|
||||
fun testCallbacksAreRegisteredOnlyOnceWhenRotatingPhone() {
|
||||
quickQSBrightnessController.setListening(true)
|
||||
quickQSBrightnessController.refreshVisibility(shouldUseSplitNotificationShade = true)
|
||||
quickQSBrightnessController.refreshVisibility(shouldUseSplitNotificationShade = false)
|
||||
quickQSBrightnessController.refreshVisibility(shouldUseSplitNotificationShade = true)
|
||||
|
||||
verify(brightnessController, times(1)).registerCallbacks()
|
||||
}
|
||||
|
||||
@Test
|
||||
fun testCallbacksAreNotRegisteredWhenSliderNotVisible() {
|
||||
quickQSBrightnessController.setListening(true)
|
||||
quickQSBrightnessController.refreshVisibility(shouldUseSplitNotificationShade = false)
|
||||
|
||||
verify(brightnessController, never()).registerCallbacks()
|
||||
}
|
||||
|
||||
@Test
|
||||
fun testMirrorIsSetWhenSliderIsShown() {
|
||||
val mirrorController = mock(BrightnessMirrorController::class.java)
|
||||
quickQSBrightnessController.setMirror(mirrorController)
|
||||
quickQSBrightnessController.refreshVisibility(shouldUseSplitNotificationShade = true)
|
||||
|
||||
verify(brightnessController).setMirror(mirrorController)
|
||||
}
|
||||
}
|
||||
@@ -67,8 +67,6 @@ class QuickQSPanelControllerTest : SysuiTestCase() {
|
||||
@Mock
|
||||
private lateinit var tileView: QSTileView
|
||||
@Mock
|
||||
private lateinit var quickQsBrightnessController: QuickQSBrightnessController
|
||||
@Mock
|
||||
private lateinit var footerActionsController: FooterActionsController
|
||||
@Captor
|
||||
private lateinit var captor: ArgumentCaptor<QSPanel.OnConfigurationChangedListener>
|
||||
@@ -95,7 +93,6 @@ class QuickQSPanelControllerTest : SysuiTestCase() {
|
||||
uiEventLogger,
|
||||
qsLogger,
|
||||
dumpManager,
|
||||
quickQsBrightnessController,
|
||||
footerActionsController
|
||||
)
|
||||
|
||||
@@ -128,13 +125,11 @@ class QuickQSPanelControllerTest : SysuiTestCase() {
|
||||
}
|
||||
|
||||
@Test
|
||||
fun testBrightnessAndFooterVisibilityRefreshedWhenConfigurationChanged() {
|
||||
fun testFooterVisibilityRefreshedWhenConfigurationChanged() {
|
||||
// times(2) because both controller and base controller are registering their listeners
|
||||
verify(quickQSPanel, times(2)).addOnConfigurationChangedListener(captor.capture())
|
||||
|
||||
captor.allValues.forEach { it.onConfigurationChange(Configuration.EMPTY) }
|
||||
|
||||
verify(quickQsBrightnessController).refreshVisibility(anyBoolean())
|
||||
// times(2) because footer visibility is also refreshed on controller init
|
||||
verify(footerActionsController, times(2)).refreshVisibility(anyBoolean())
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user