Merge "Hide dream status bar when system status bar showing." into tm-dev am: 10afa70623
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/17778150 Change-Id: I5b9f3b050ab41d0ffad921f773727336f0393913 Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
@@ -16,8 +16,13 @@
|
|||||||
|
|
||||||
package com.android.systemui.dreams;
|
package com.android.systemui.dreams;
|
||||||
|
|
||||||
|
import static android.app.StatusBarManager.WINDOW_STATE_HIDDEN;
|
||||||
|
import static android.app.StatusBarManager.WINDOW_STATE_HIDING;
|
||||||
|
import static android.app.StatusBarManager.WINDOW_STATE_SHOWING;
|
||||||
|
|
||||||
import android.annotation.Nullable;
|
import android.annotation.Nullable;
|
||||||
import android.app.AlarmManager;
|
import android.app.AlarmManager;
|
||||||
|
import android.app.StatusBarManager;
|
||||||
import android.content.res.Resources;
|
import android.content.res.Resources;
|
||||||
import android.hardware.SensorPrivacyManager;
|
import android.hardware.SensorPrivacyManager;
|
||||||
import android.net.ConnectivityManager;
|
import android.net.ConnectivityManager;
|
||||||
@@ -29,6 +34,7 @@ import android.os.UserHandle;
|
|||||||
import android.provider.Settings;
|
import android.provider.Settings;
|
||||||
import android.text.format.DateFormat;
|
import android.text.format.DateFormat;
|
||||||
import android.util.PluralsMessageFormatter;
|
import android.util.PluralsMessageFormatter;
|
||||||
|
import android.view.View;
|
||||||
|
|
||||||
import com.android.systemui.R;
|
import com.android.systemui.R;
|
||||||
import com.android.systemui.dagger.qualifiers.Main;
|
import com.android.systemui.dagger.qualifiers.Main;
|
||||||
@@ -36,6 +42,7 @@ import com.android.systemui.dreams.dagger.DreamOverlayComponent;
|
|||||||
import com.android.systemui.statusbar.policy.IndividualSensorPrivacyController;
|
import com.android.systemui.statusbar.policy.IndividualSensorPrivacyController;
|
||||||
import com.android.systemui.statusbar.policy.NextAlarmController;
|
import com.android.systemui.statusbar.policy.NextAlarmController;
|
||||||
import com.android.systemui.statusbar.policy.ZenModeController;
|
import com.android.systemui.statusbar.policy.ZenModeController;
|
||||||
|
import com.android.systemui.statusbar.window.StatusBarWindowStateController;
|
||||||
import com.android.systemui.touch.TouchInsetManager;
|
import com.android.systemui.touch.TouchInsetManager;
|
||||||
import com.android.systemui.util.ViewController;
|
import com.android.systemui.util.ViewController;
|
||||||
import com.android.systemui.util.time.DateFormatUtil;
|
import com.android.systemui.util.time.DateFormatUtil;
|
||||||
@@ -119,7 +126,8 @@ public class DreamOverlayStatusBarViewController extends ViewController<DreamOve
|
|||||||
DateFormatUtil dateFormatUtil,
|
DateFormatUtil dateFormatUtil,
|
||||||
IndividualSensorPrivacyController sensorPrivacyController,
|
IndividualSensorPrivacyController sensorPrivacyController,
|
||||||
DreamOverlayNotificationCountProvider dreamOverlayNotificationCountProvider,
|
DreamOverlayNotificationCountProvider dreamOverlayNotificationCountProvider,
|
||||||
ZenModeController zenModeController) {
|
ZenModeController zenModeController,
|
||||||
|
StatusBarWindowStateController statusBarWindowStateController) {
|
||||||
super(view);
|
super(view);
|
||||||
mResources = resources;
|
mResources = resources;
|
||||||
mMainExecutor = mainExecutor;
|
mMainExecutor = mainExecutor;
|
||||||
@@ -131,6 +139,10 @@ public class DreamOverlayStatusBarViewController extends ViewController<DreamOve
|
|||||||
mSensorPrivacyController = sensorPrivacyController;
|
mSensorPrivacyController = sensorPrivacyController;
|
||||||
mDreamOverlayNotificationCountProvider = dreamOverlayNotificationCountProvider;
|
mDreamOverlayNotificationCountProvider = dreamOverlayNotificationCountProvider;
|
||||||
mZenModeController = zenModeController;
|
mZenModeController = zenModeController;
|
||||||
|
|
||||||
|
// Register to receive show/hide updates for the system status bar. Our custom status bar
|
||||||
|
// needs to hide when the system status bar is showing to ovoid overlapping status bars.
|
||||||
|
statusBarWindowStateController.addListener(this::onSystemStatusBarStateChanged);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -229,4 +241,22 @@ public class DreamOverlayStatusBarViewController extends ViewController<DreamOve
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void onSystemStatusBarStateChanged(@StatusBarManager.WindowVisibleState int state) {
|
||||||
|
mMainExecutor.execute(() -> {
|
||||||
|
if (!mIsAttached) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
switch (state) {
|
||||||
|
case WINDOW_STATE_SHOWING:
|
||||||
|
mView.setVisibility(View.INVISIBLE);
|
||||||
|
break;
|
||||||
|
case WINDOW_STATE_HIDING:
|
||||||
|
case WINDOW_STATE_HIDDEN:
|
||||||
|
mView.setVisibility(View.VISIBLE);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -16,10 +16,14 @@
|
|||||||
|
|
||||||
package com.android.systemui.dreams;
|
package com.android.systemui.dreams;
|
||||||
|
|
||||||
|
import static android.app.StatusBarManager.WINDOW_STATE_HIDDEN;
|
||||||
|
import static android.app.StatusBarManager.WINDOW_STATE_SHOWING;
|
||||||
|
|
||||||
import static org.mockito.ArgumentMatchers.any;
|
import static org.mockito.ArgumentMatchers.any;
|
||||||
import static org.mockito.ArgumentMatchers.anyInt;
|
import static org.mockito.ArgumentMatchers.anyInt;
|
||||||
import static org.mockito.ArgumentMatchers.eq;
|
import static org.mockito.ArgumentMatchers.eq;
|
||||||
import static org.mockito.ArgumentMatchers.isNull;
|
import static org.mockito.ArgumentMatchers.isNull;
|
||||||
|
import static org.mockito.Mockito.never;
|
||||||
import static org.mockito.Mockito.verify;
|
import static org.mockito.Mockito.verify;
|
||||||
import static org.mockito.Mockito.when;
|
import static org.mockito.Mockito.when;
|
||||||
|
|
||||||
@@ -32,6 +36,7 @@ import android.net.NetworkCapabilities;
|
|||||||
import android.net.NetworkRequest;
|
import android.net.NetworkRequest;
|
||||||
import android.provider.Settings;
|
import android.provider.Settings;
|
||||||
import android.testing.AndroidTestingRunner;
|
import android.testing.AndroidTestingRunner;
|
||||||
|
import android.view.View;
|
||||||
|
|
||||||
import androidx.test.filters.SmallTest;
|
import androidx.test.filters.SmallTest;
|
||||||
|
|
||||||
@@ -40,6 +45,8 @@ import com.android.systemui.SysuiTestCase;
|
|||||||
import com.android.systemui.statusbar.policy.IndividualSensorPrivacyController;
|
import com.android.systemui.statusbar.policy.IndividualSensorPrivacyController;
|
||||||
import com.android.systemui.statusbar.policy.NextAlarmController;
|
import com.android.systemui.statusbar.policy.NextAlarmController;
|
||||||
import com.android.systemui.statusbar.policy.ZenModeController;
|
import com.android.systemui.statusbar.policy.ZenModeController;
|
||||||
|
import com.android.systemui.statusbar.window.StatusBarWindowStateController;
|
||||||
|
import com.android.systemui.statusbar.window.StatusBarWindowStateListener;
|
||||||
import com.android.systemui.touch.TouchInsetManager;
|
import com.android.systemui.touch.TouchInsetManager;
|
||||||
import com.android.systemui.util.time.DateFormatUtil;
|
import com.android.systemui.util.time.DateFormatUtil;
|
||||||
|
|
||||||
@@ -84,6 +91,8 @@ public class DreamOverlayStatusBarViewControllerTest extends SysuiTestCase {
|
|||||||
ZenModeController mZenModeController;
|
ZenModeController mZenModeController;
|
||||||
@Mock
|
@Mock
|
||||||
DreamOverlayNotificationCountProvider mDreamOverlayNotificationCountProvider;
|
DreamOverlayNotificationCountProvider mDreamOverlayNotificationCountProvider;
|
||||||
|
@Mock
|
||||||
|
StatusBarWindowStateController mStatusBarWindowStateController;
|
||||||
|
|
||||||
private final Executor mMainExecutor = Runnable::run;
|
private final Executor mMainExecutor = Runnable::run;
|
||||||
|
|
||||||
@@ -107,7 +116,8 @@ public class DreamOverlayStatusBarViewControllerTest extends SysuiTestCase {
|
|||||||
mDateFormatUtil,
|
mDateFormatUtil,
|
||||||
mSensorPrivacyController,
|
mSensorPrivacyController,
|
||||||
mDreamOverlayNotificationCountProvider,
|
mDreamOverlayNotificationCountProvider,
|
||||||
mZenModeController);
|
mZenModeController,
|
||||||
|
mStatusBarWindowStateController);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@@ -401,4 +411,41 @@ public class DreamOverlayStatusBarViewControllerTest extends SysuiTestCase {
|
|||||||
verify(mView).showIcon(
|
verify(mView).showIcon(
|
||||||
DreamOverlayStatusBarView.STATUS_ICON_PRIORITY_MODE_ON, false, null);
|
DreamOverlayStatusBarView.STATUS_ICON_PRIORITY_MODE_ON, false, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testStatusBarHiddenWhenSystemStatusBarShown() {
|
||||||
|
mController.onViewAttached();
|
||||||
|
|
||||||
|
final ArgumentCaptor<StatusBarWindowStateListener>
|
||||||
|
callbackCapture = ArgumentCaptor.forClass(StatusBarWindowStateListener.class);
|
||||||
|
verify(mStatusBarWindowStateController).addListener(callbackCapture.capture());
|
||||||
|
callbackCapture.getValue().onStatusBarWindowStateChanged(WINDOW_STATE_SHOWING);
|
||||||
|
|
||||||
|
verify(mView).setVisibility(View.INVISIBLE);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testStatusBarShownWhenSystemStatusBarHidden() {
|
||||||
|
mController.onViewAttached();
|
||||||
|
|
||||||
|
final ArgumentCaptor<StatusBarWindowStateListener>
|
||||||
|
callbackCapture = ArgumentCaptor.forClass(StatusBarWindowStateListener.class);
|
||||||
|
verify(mStatusBarWindowStateController).addListener(callbackCapture.capture());
|
||||||
|
callbackCapture.getValue().onStatusBarWindowStateChanged(WINDOW_STATE_HIDDEN);
|
||||||
|
|
||||||
|
verify(mView).setVisibility(View.VISIBLE);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testUnattachedStatusBarVisibilityUnchangedWhenSystemStatusBarHidden() {
|
||||||
|
mController.onViewAttached();
|
||||||
|
mController.onViewDetached();
|
||||||
|
|
||||||
|
final ArgumentCaptor<StatusBarWindowStateListener>
|
||||||
|
callbackCapture = ArgumentCaptor.forClass(StatusBarWindowStateListener.class);
|
||||||
|
verify(mStatusBarWindowStateController).addListener(callbackCapture.capture());
|
||||||
|
callbackCapture.getValue().onStatusBarWindowStateChanged(WINDOW_STATE_SHOWING);
|
||||||
|
|
||||||
|
verify(mView, never()).setVisibility(anyInt());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user