Revert "Revert "Making mirror slider appear when brightness slider is used in split shade""
This reverts commit 7b43d58976.
Reason for revert: Submitting code with problem fixed
Test: CTS in Forrest
Bug: 193651759
Change-Id: I8dd921ab34798ac156af17a14e2ca27c70a743cc
This commit is contained in:
committed by
Michal Brzezinski
parent
17d4009aac
commit
d057da2ca5
@@ -52,6 +52,7 @@ import com.android.systemui.statusbar.StatusBarState;
|
||||
import com.android.systemui.statusbar.notification.stack.StackStateAnimator;
|
||||
import com.android.systemui.statusbar.phone.KeyguardBypassController;
|
||||
import com.android.systemui.statusbar.phone.NotificationsQuickSettingsContainer;
|
||||
import com.android.systemui.statusbar.policy.BrightnessMirrorController;
|
||||
import com.android.systemui.statusbar.policy.RemoteInputQuickSettingsDisabler;
|
||||
import com.android.systemui.util.InjectionInflationController;
|
||||
import com.android.systemui.util.LifecycleFragment;
|
||||
@@ -414,6 +415,12 @@ public class QSFragment extends LifecycleFragment implements QS, CommandQueue.Ca
|
||||
return mQSPanelController;
|
||||
}
|
||||
|
||||
public void setBrightnessMirrorController(
|
||||
BrightnessMirrorController brightnessMirrorController) {
|
||||
mQSPanelController.setBrightnessMirror(brightnessMirrorController);
|
||||
mQuickQSPanelController.setBrightnessMirror(brightnessMirrorController);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isShowingDetail() {
|
||||
return mQSCustomizerController.isCustomizing() || mQSDetail.isShowingDetail();
|
||||
|
||||
@@ -40,6 +40,7 @@ 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.BrightnessController;
|
||||
import com.android.systemui.settings.brightness.BrightnessMirrorHandler;
|
||||
import com.android.systemui.settings.brightness.BrightnessSlider;
|
||||
import com.android.systemui.statusbar.policy.BrightnessMirrorController;
|
||||
import com.android.systemui.tuner.TunerService;
|
||||
@@ -60,10 +61,9 @@ public class QSPanelController extends QSPanelControllerBase<QSPanel> {
|
||||
private final QSTileRevealController.Factory mQsTileRevealControllerFactory;
|
||||
private final FalsingManager mFalsingManager;
|
||||
private final BrightnessController mBrightnessController;
|
||||
private final BrightnessSlider.Factory mBrightnessSliderFactory;
|
||||
private final BrightnessSlider mBrightnessSlider;
|
||||
private final BrightnessMirrorHandler mBrightnessMirrorHandler;
|
||||
|
||||
private BrightnessMirrorController mBrightnessMirrorController;
|
||||
private boolean mGridContentVisible = true;
|
||||
|
||||
private final QSPanel.OnConfigurationChangedListener mOnConfigurationChangedListener =
|
||||
@@ -75,14 +75,10 @@ public class QSPanelController extends QSPanelControllerBase<QSPanel> {
|
||||
if (mView.isListening()) {
|
||||
refreshAllTiles();
|
||||
}
|
||||
updateBrightnessMirror();
|
||||
mView.switchSecurityFooter(mShouldUseSplitNotificationShade);
|
||||
}
|
||||
};
|
||||
|
||||
private final BrightnessMirrorController.BrightnessMirrorListener mBrightnessMirrorListener =
|
||||
mirror -> updateBrightnessMirror();
|
||||
|
||||
private View.OnTouchListener mTileLayoutTouchListener = new View.OnTouchListener() {
|
||||
@Override
|
||||
public boolean onTouch(View v, MotionEvent event) {
|
||||
@@ -110,12 +106,12 @@ public class QSPanelController extends QSPanelControllerBase<QSPanel> {
|
||||
mQsTileRevealControllerFactory = qsTileRevealControllerFactory;
|
||||
mFalsingManager = falsingManager;
|
||||
mQsSecurityFooter.setHostEnvironment(qstileHost);
|
||||
mBrightnessSliderFactory = brightnessSliderFactory;
|
||||
|
||||
mBrightnessSlider = mBrightnessSliderFactory.create(getContext(), mView);
|
||||
mBrightnessSlider = brightnessSliderFactory.create(getContext(), mView);
|
||||
mView.setBrightnessView(mBrightnessSlider.getRootView());
|
||||
|
||||
mBrightnessController = brightnessControllerFactory.create(mBrightnessSlider);
|
||||
mBrightnessMirrorHandler = new BrightnessMirrorHandler(mBrightnessController);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -142,9 +138,7 @@ public class QSPanelController extends QSPanelControllerBase<QSPanel> {
|
||||
mView.addOnConfigurationChangedListener(mOnConfigurationChangedListener);
|
||||
mView.setSecurityFooter(mQsSecurityFooter.getView(), mShouldUseSplitNotificationShade);
|
||||
switchTileLayout(true);
|
||||
if (mBrightnessMirrorController != null) {
|
||||
mBrightnessMirrorController.addCallback(mBrightnessMirrorListener);
|
||||
}
|
||||
mBrightnessMirrorHandler.onQsPanelAttached();
|
||||
|
||||
((PagedTileLayout) mView.getOrCreateTileLayout())
|
||||
.setOnTouchListener(mTileLayoutTouchListener);
|
||||
@@ -160,9 +154,7 @@ public class QSPanelController extends QSPanelControllerBase<QSPanel> {
|
||||
protected void onViewDetached() {
|
||||
mTunerService.removeTunable(mView);
|
||||
mView.removeOnConfigurationChangedListener(mOnConfigurationChangedListener);
|
||||
if (mBrightnessMirrorController != null) {
|
||||
mBrightnessMirrorController.removeCallback(mBrightnessMirrorListener);
|
||||
}
|
||||
mBrightnessMirrorHandler.onQsPanelDettached();
|
||||
super.onViewDetached();
|
||||
}
|
||||
|
||||
@@ -196,23 +188,8 @@ public class QSPanelController extends QSPanelControllerBase<QSPanel> {
|
||||
}
|
||||
}
|
||||
|
||||
/** */
|
||||
public void setBrightnessMirror(BrightnessMirrorController brightnessMirrorController) {
|
||||
mBrightnessMirrorController = brightnessMirrorController;
|
||||
if (mBrightnessMirrorController != null) {
|
||||
mBrightnessMirrorController.removeCallback(mBrightnessMirrorListener);
|
||||
}
|
||||
mBrightnessMirrorController = brightnessMirrorController;
|
||||
if (mBrightnessMirrorController != null) {
|
||||
mBrightnessMirrorController.addCallback(mBrightnessMirrorListener);
|
||||
}
|
||||
updateBrightnessMirror();
|
||||
}
|
||||
|
||||
private void updateBrightnessMirror() {
|
||||
if (mBrightnessMirrorController != null) {
|
||||
mBrightnessSlider.setMirrorControllerAndMirror(mBrightnessMirrorController);
|
||||
}
|
||||
mBrightnessMirrorHandler.setController(brightnessMirrorController);
|
||||
}
|
||||
|
||||
/** Get the QSTileHost this panel uses. */
|
||||
|
||||
@@ -19,6 +19,8 @@ package com.android.systemui.qs
|
||||
import androidx.annotation.VisibleForTesting
|
||||
import com.android.systemui.settings.brightness.BrightnessController
|
||||
import com.android.systemui.settings.brightness.BrightnessSlider
|
||||
import com.android.systemui.settings.brightness.MirroredBrightnessController
|
||||
import com.android.systemui.statusbar.policy.BrightnessMirrorController
|
||||
import javax.inject.Inject
|
||||
|
||||
/**
|
||||
@@ -27,7 +29,7 @@ import javax.inject.Inject
|
||||
*/
|
||||
class QuickQSBrightnessController @VisibleForTesting constructor(
|
||||
private val brightnessControllerFactory: () -> BrightnessController
|
||||
) {
|
||||
) : MirroredBrightnessController {
|
||||
|
||||
@Inject constructor(
|
||||
brightnessControllerFactory: BrightnessController.Factory,
|
||||
@@ -42,6 +44,7 @@ class QuickQSBrightnessController @VisibleForTesting constructor(
|
||||
|
||||
private var isListening = false
|
||||
private var brightnessController: BrightnessController? = null
|
||||
private var mirrorController: BrightnessMirrorController? = null
|
||||
|
||||
fun init(shouldUseSplitNotificationShade: Boolean) {
|
||||
refreshVisibility(shouldUseSplitNotificationShade)
|
||||
@@ -77,6 +80,11 @@ class QuickQSBrightnessController @VisibleForTesting constructor(
|
||||
}
|
||||
}
|
||||
|
||||
override fun setMirror(controller: BrightnessMirrorController) {
|
||||
mirrorController = controller
|
||||
mirrorController?.let { brightnessController?.setMirror(it) }
|
||||
}
|
||||
|
||||
private fun hideBrightnessSlider() {
|
||||
brightnessController?.hideSlider()
|
||||
}
|
||||
@@ -84,11 +92,10 @@ class QuickQSBrightnessController @VisibleForTesting constructor(
|
||||
private fun showBrightnessSlider() {
|
||||
if (brightnessController == null) {
|
||||
brightnessController = brightnessControllerFactory()
|
||||
}
|
||||
brightnessController?.showSlider()
|
||||
if (!isListening) {
|
||||
mirrorController?.also { brightnessController?.setMirror(it) }
|
||||
brightnessController?.registerCallbacks()
|
||||
isListening = true
|
||||
}
|
||||
brightnessController?.showSlider()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -29,6 +29,8 @@ 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;
|
||||
@@ -50,6 +52,7 @@ public class QuickQSPanelController extends QSPanelControllerBase<QuickQSPanel>
|
||||
|
||||
// brightness is visible only in split shade
|
||||
private final QuickQSBrightnessController mBrightnessController;
|
||||
private final BrightnessMirrorHandler mBrightnessMirrorHandler;
|
||||
|
||||
@Inject
|
||||
QuickQSPanelController(QuickQSPanel view, QSTileHost qsTileHost,
|
||||
@@ -63,6 +66,7 @@ public class QuickQSPanelController extends QSPanelControllerBase<QuickQSPanel>
|
||||
super(view, qsTileHost, qsCustomizerController, usingMediaPlayer, mediaHost, metricsLogger,
|
||||
uiEventLogger, qsLogger, dumpManager);
|
||||
mBrightnessController = quickQSBrightnessController;
|
||||
mBrightnessMirrorHandler = new BrightnessMirrorHandler(mBrightnessController);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -78,12 +82,14 @@ 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
|
||||
@@ -132,4 +138,8 @@ public class QuickQSPanelController extends QSPanelControllerBase<QuickQSPanel>
|
||||
public int getNumQuickTiles() {
|
||||
return mView.getNumQuickTiles();
|
||||
}
|
||||
|
||||
public void setBrightnessMirror(BrightnessMirrorController brightnessMirrorController) {
|
||||
mBrightnessMirrorHandler.setController(brightnessMirrorController);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -50,12 +50,13 @@ import com.android.settingslib.RestrictedLockUtilsInternal;
|
||||
import com.android.systemui.Dependency;
|
||||
import com.android.systemui.broadcast.BroadcastDispatcher;
|
||||
import com.android.systemui.settings.CurrentUserTracker;
|
||||
import com.android.systemui.statusbar.policy.BrightnessMirrorController;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
import javax.inject.Inject;
|
||||
|
||||
public class BrightnessController implements ToggleSlider.Listener {
|
||||
public class BrightnessController implements ToggleSlider.Listener, MirroredBrightnessController {
|
||||
private static final String TAG = "StatusBar.BrightnessController";
|
||||
private static final int SLIDER_ANIMATION_DURATION = 3000;
|
||||
|
||||
@@ -109,6 +110,11 @@ public class BrightnessController implements ToggleSlider.Listener {
|
||||
|
||||
private ValueAnimator mSliderAnimator;
|
||||
|
||||
@Override
|
||||
public void setMirror(BrightnessMirrorController controller) {
|
||||
mControl.setMirrorControllerAndMirror(controller);
|
||||
}
|
||||
|
||||
public interface BrightnessStateChangeCallback {
|
||||
/** Indicates that some of the brightness settings have changed */
|
||||
void onBrightnessLevelChanged();
|
||||
|
||||
@@ -0,0 +1,46 @@
|
||||
/*
|
||||
* 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.settings.brightness
|
||||
|
||||
import com.android.systemui.statusbar.policy.BrightnessMirrorController
|
||||
import com.android.systemui.statusbar.policy.BrightnessMirrorController.BrightnessMirrorListener
|
||||
|
||||
class BrightnessMirrorHandler(private val brightnessController: MirroredBrightnessController) {
|
||||
|
||||
private var mirrorController: BrightnessMirrorController? = null
|
||||
|
||||
private val brightnessMirrorListener = BrightnessMirrorListener { updateBrightnessMirror() }
|
||||
|
||||
fun onQsPanelAttached() {
|
||||
mirrorController?.addCallback(brightnessMirrorListener)
|
||||
}
|
||||
|
||||
fun onQsPanelDettached() {
|
||||
mirrorController?.removeCallback(brightnessMirrorListener)
|
||||
}
|
||||
|
||||
fun setController(controller: BrightnessMirrorController) {
|
||||
mirrorController?.removeCallback(brightnessMirrorListener)
|
||||
mirrorController = controller
|
||||
mirrorController?.addCallback(brightnessMirrorListener)
|
||||
updateBrightnessMirror()
|
||||
}
|
||||
|
||||
private fun updateBrightnessMirror() {
|
||||
mirrorController?.let { brightnessController.setMirror(it) }
|
||||
}
|
||||
}
|
||||
@@ -140,13 +140,7 @@ public class BrightnessSlider extends ViewController<BrightnessSliderView> imple
|
||||
@Override
|
||||
public void setMirrorControllerAndMirror(BrightnessMirrorController c) {
|
||||
mMirrorController = c;
|
||||
if (c != null) {
|
||||
setMirror(c.getToggleSlider());
|
||||
} else {
|
||||
// If there's no mirror, we may be the ones dispatching, events but we should not mirror
|
||||
// them
|
||||
mView.setOnDispatchTouchEventListener(null);
|
||||
}
|
||||
setMirror(c.getToggleSlider());
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -0,0 +1,26 @@
|
||||
/*
|
||||
* 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.settings.brightness
|
||||
|
||||
import com.android.systemui.statusbar.policy.BrightnessMirrorController
|
||||
|
||||
/**
|
||||
* Indicates controller that has brightness slider and uses [BrightnessMirrorController]
|
||||
*/
|
||||
interface MirroredBrightnessController {
|
||||
fun setMirror(controller: BrightnessMirrorController)
|
||||
}
|
||||
@@ -1365,7 +1365,7 @@ public class StatusBar extends SystemUI implements
|
||||
QS qs = (QS) f;
|
||||
if (qs instanceof QSFragment) {
|
||||
mQSPanelController = ((QSFragment) qs).getQSPanelController();
|
||||
mQSPanelController.setBrightnessMirror(mBrightnessMirrorController);
|
||||
((QSFragment) qs).setBrightnessMirrorController(mBrightnessMirrorController);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@@ -19,13 +19,15 @@ 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.verify
|
||||
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
|
||||
@@ -104,4 +106,13 @@ class QuickQSBrightnessControllerTest : SysuiTestCase() {
|
||||
|
||||
verify(brightnessController, never()).registerCallbacks()
|
||||
}
|
||||
|
||||
@Test
|
||||
fun testMirrorIsSetWhenSliderIsShown() {
|
||||
val mirrorController = mock(BrightnessMirrorController::class.java)
|
||||
quickQSBrightnessController.setMirror(mirrorController)
|
||||
quickQSBrightnessController.refreshVisibility(shouldUseSplitNotificationShade = true)
|
||||
|
||||
verify(brightnessController).setMirror(mirrorController)
|
||||
}
|
||||
}
|
||||
@@ -107,15 +107,6 @@ class BrightnessSliderTest : SysuiTestCase() {
|
||||
verify(brightnessSliderView).setEnforcedAdmin(enforcedAdmin)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun testNullMirrorControllerNotTrackingTouch() {
|
||||
mController.setMirrorControllerAndMirror(null)
|
||||
|
||||
verify(brightnessSliderView, never()).max
|
||||
verify(brightnessSliderView, never()).value
|
||||
verify(brightnessSliderView).setOnDispatchTouchEventListener(isNull())
|
||||
}
|
||||
|
||||
@Test
|
||||
fun testNullMirrorNotTrackingTouch() {
|
||||
whenever(mirrorController.toggleSlider).thenReturn(null)
|
||||
|
||||
Reference in New Issue
Block a user