Merge changes from topic "presubmit-am-8d46ef8e146342db89da2c1ff44742ea" into tm-dev

* changes:
  Tell NavigationBarView when mode changes.
  Revert "Revert "Remove Dep.get(CommandQueue.class) from NavBarView""
This commit is contained in:
Dave Mankoff
2022-04-25 17:48:14 +00:00
committed by Android (Google) Code Review
7 changed files with 57 additions and 41 deletions

View File

@@ -197,6 +197,7 @@ public class NavigationBar extends ViewController<NavigationBarView> implements
private final Optional<Pip> mPipOptional; private final Optional<Pip> mPipOptional;
private final Optional<Recents> mRecentsOptional; private final Optional<Recents> mRecentsOptional;
private final DeviceConfigProxy mDeviceConfigProxy; private final DeviceConfigProxy mDeviceConfigProxy;
private final NavigationBarTransitions mNavigationBarTransitions;
private final Optional<BackAnimation> mBackAnimation; private final Optional<BackAnimation> mBackAnimation;
private final Handler mHandler; private final Handler mHandler;
private final NavigationBarOverlayController mNavbarOverlayController; private final NavigationBarOverlayController mNavbarOverlayController;
@@ -329,7 +330,8 @@ public class NavigationBar extends ViewController<NavigationBarView> implements
@Override @Override
public void onConnectionChanged(boolean isConnected) { public void onConnectionChanged(boolean isConnected) {
mView.onOverviewProxyConnectionChange( mView.onOverviewProxyConnectionChange(
mOverviewProxyService.isEnabled(), mOverviewProxyService.shouldShowSwipeUpUI()); mOverviewProxyService.isEnabled());
mView.setShouldShowSwipeUpUi(mOverviewProxyService.shouldShowSwipeUpUI());
updateScreenPinningGestures(); updateScreenPinningGestures();
} }
@@ -513,6 +515,7 @@ public class NavigationBar extends ViewController<NavigationBarView> implements
InputMethodManager inputMethodManager, InputMethodManager inputMethodManager,
DeadZone deadZone, DeadZone deadZone,
DeviceConfigProxy deviceConfigProxy, DeviceConfigProxy deviceConfigProxy,
NavigationBarTransitions navigationBarTransitions,
Optional<BackAnimation> backAnimation) { Optional<BackAnimation> backAnimation) {
super(navigationBarView); super(navigationBarView);
mFrame = navigationBarFrame; mFrame = navigationBarFrame;
@@ -537,6 +540,7 @@ public class NavigationBar extends ViewController<NavigationBarView> implements
mRecentsOptional = recentsOptional; mRecentsOptional = recentsOptional;
mDeadZone = deadZone; mDeadZone = deadZone;
mDeviceConfigProxy = deviceConfigProxy; mDeviceConfigProxy = deviceConfigProxy;
mNavigationBarTransitions = navigationBarTransitions;
mBackAnimation = backAnimation; mBackAnimation = backAnimation;
mHandler = mainHandler; mHandler = mainHandler;
mNavbarOverlayController = navbarOverlayController; mNavbarOverlayController = navbarOverlayController;
@@ -561,6 +565,7 @@ public class NavigationBar extends ViewController<NavigationBarView> implements
public void onInit() { public void onInit() {
// TODO: A great deal of this code should probably live in onViewAttached. // TODO: A great deal of this code should probably live in onViewAttached.
// It should also has corresponding cleanup in onViewDetached. // It should also has corresponding cleanup in onViewDetached.
mView.setBarTransitions(mNavigationBarTransitions);
mView.setTouchHandler(mTouchHandler); mView.setTouchHandler(mTouchHandler);
mView.setNavBarMode(mNavBarMode); mView.setNavBarMode(mNavBarMode);
mView.updateRotationButton(); mView.updateRotationButton();
@@ -632,7 +637,7 @@ public class NavigationBar extends ViewController<NavigationBarView> implements
mView.setOnVerticalChangedListener(this::onVerticalChanged); mView.setOnVerticalChangedListener(this::onVerticalChanged);
mView.setOnTouchListener(this::onNavigationTouch); mView.setOnTouchListener(this::onNavigationTouch);
if (mSavedState != null) { if (mSavedState != null) {
mView.getLightTransitionsController().restoreState(mSavedState); getBarTransitions().getLightTransitionsController().restoreState(mSavedState);
} }
setNavigationIconHints(mNavigationIconHints); setNavigationIconHints(mNavigationIconHints);
mView.setWindowVisible(isNavBarWindowVisible()); mView.setWindowVisible(isNavBarWindowVisible());
@@ -705,8 +710,7 @@ public class NavigationBar extends ViewController<NavigationBarView> implements
mView.getRotationButtonController(); mView.getRotationButtonController();
rotationButtonController.setRotationCallback(null); rotationButtonController.setRotationCallback(null);
mView.setUpdateActiveTouchRegionsCallback(null); mView.setUpdateActiveTouchRegionsCallback(null);
mView.getBarTransitions().destroy(); getBarTransitions().destroy();
mView.getLightTransitionsController().destroy(mContext);
mOverviewProxyService.removeCallback(mOverviewProxyListener); mOverviewProxyService.removeCallback(mOverviewProxyListener);
mBroadcastDispatcher.unregisterReceiver(mBroadcastReceiver); mBroadcastDispatcher.unregisterReceiver(mBroadcastReceiver);
if (mOrientationHandle != null) { if (mOrientationHandle != null) {
@@ -732,7 +736,7 @@ public class NavigationBar extends ViewController<NavigationBarView> implements
outState.putInt(EXTRA_APPEARANCE, mAppearance); outState.putInt(EXTRA_APPEARANCE, mAppearance);
outState.putInt(EXTRA_BEHAVIOR, mBehavior); outState.putInt(EXTRA_BEHAVIOR, mBehavior);
outState.putBoolean(EXTRA_TRANSIENT_STATE, mTransientShown); outState.putBoolean(EXTRA_TRANSIENT_STATE, mTransientShown);
mView.getLightTransitionsController().saveState(outState); getBarTransitions().getLightTransitionsController().saveState(outState);
} }
/** /**
@@ -893,7 +897,7 @@ public class NavigationBar extends ViewController<NavigationBarView> implements
pw.println(" mTransientShown=" + mTransientShown); pw.println(" mTransientShown=" + mTransientShown);
pw.println(" mTransientShownFromGestureOnSystemBar=" pw.println(" mTransientShownFromGestureOnSystemBar="
+ mTransientShownFromGestureOnSystemBar); + mTransientShownFromGestureOnSystemBar);
dumpBarTransitions(pw, "mNavigationBarView", mView.getBarTransitions()); dumpBarTransitions(pw, "mNavigationBarView", getBarTransitions());
mView.dump(pw); mView.dump(pw);
} }
@@ -1430,7 +1434,7 @@ public class NavigationBar extends ViewController<NavigationBarView> implements
mLightBarController = lightBarController; mLightBarController = lightBarController;
if (mLightBarController != null) { if (mLightBarController != null) {
mLightBarController.setNavigationBar( mLightBarController.setNavigationBar(
mView.getLightTransitionsController()); getBarTransitions().getLightTransitionsController());
} }
} }
@@ -1472,7 +1476,7 @@ public class NavigationBar extends ViewController<NavigationBarView> implements
mCentralSurfacesOptionalLazy.get().map(CentralSurfaces::isDeviceInteractive) mCentralSurfacesOptionalLazy.get().map(CentralSurfaces::isDeviceInteractive)
.orElse(false) .orElse(false)
&& mNavigationBarWindowState != WINDOW_STATE_HIDDEN; && mNavigationBarWindowState != WINDOW_STATE_HIDDEN;
mView.getBarTransitions().transitionTo(mTransitionMode, anim); getBarTransitions().transitionTo(mTransitionMode, anim);
} }
public void disableAnimationsDuringHide(long delay) { public void disableAnimationsDuringHide(long delay) {
@@ -1492,11 +1496,11 @@ public class NavigationBar extends ViewController<NavigationBarView> implements
} }
public NavigationBarTransitions getBarTransitions() { public NavigationBarTransitions getBarTransitions() {
return mView.getBarTransitions(); return mNavigationBarTransitions;
} }
public void finishBarAnimations() { public void finishBarAnimations() {
mView.getBarTransitions().finishAnimations(); getBarTransitions().finishAnimations();
} }
private WindowManager.LayoutParams getBarLayoutParams(int rotation) { private WindowManager.LayoutParams getBarLayoutParams(int rotation) {
@@ -1654,6 +1658,7 @@ public class NavigationBar extends ViewController<NavigationBarView> implements
} }
if (mView != null) { if (mView != null) {
mView.setNavBarMode(mode); mView.setNavBarMode(mode);
mView.setShouldShowSwipeUpUi(mOverviewProxyService.shouldShowSwipeUpUI());
} }
} }
}; };

View File

@@ -29,19 +29,20 @@ import android.view.IWallpaperVisibilityListener;
import android.view.IWindowManager; import android.view.IWindowManager;
import android.view.View; import android.view.View;
import com.android.systemui.Dependency;
import com.android.systemui.R; import com.android.systemui.R;
import com.android.systemui.navigationbar.NavigationBarComponent.NavigationBarScope;
import com.android.systemui.navigationbar.buttons.ButtonDispatcher; import com.android.systemui.navigationbar.buttons.ButtonDispatcher;
import com.android.systemui.plugins.statusbar.StatusBarStateController;
import com.android.systemui.statusbar.CommandQueue;
import com.android.systemui.statusbar.phone.BarTransitions; import com.android.systemui.statusbar.phone.BarTransitions;
import com.android.systemui.statusbar.phone.LightBarTransitionsController; import com.android.systemui.statusbar.phone.LightBarTransitionsController;
import com.android.systemui.statusbar.policy.KeyguardStateController;
import java.io.PrintWriter; import java.io.PrintWriter;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import javax.inject.Inject;
/** */
@NavigationBarScope
public final class NavigationBarTransitions extends BarTransitions implements public final class NavigationBarTransitions extends BarTransitions implements
LightBarTransitionsController.DarkIntensityApplier { LightBarTransitionsController.DarkIntensityApplier {
@@ -60,6 +61,8 @@ public final class NavigationBarTransitions extends BarTransitions implements
} }
private final NavigationBarView mView; private final NavigationBarView mView;
@org.jetbrains.annotations.NotNull
private final IWindowManager mWindowManagerService;
private final LightBarTransitionsController mLightTransitionsController; private final LightBarTransitionsController mLightTransitionsController;
private final boolean mAllowAutoDimWallpaperNotVisible; private final boolean mAllowAutoDimWallpaperNotVisible;
private boolean mWallpaperVisible; private boolean mWallpaperVisible;
@@ -81,22 +84,21 @@ public final class NavigationBarTransitions extends BarTransitions implements
} }
}; };
public NavigationBarTransitions(NavigationBarView view, CommandQueue commandQueue) { @Inject
public NavigationBarTransitions(
NavigationBarView view,
IWindowManager windowManagerService,
LightBarTransitionsController.Factory lightBarTransitionsControllerFactory) {
super(view, R.drawable.nav_background); super(view, R.drawable.nav_background);
mView = view; mView = view;
mLightTransitionsController = new LightBarTransitionsController( mWindowManagerService = windowManagerService;
view.getContext(), mLightTransitionsController = lightBarTransitionsControllerFactory.create(this);
this,
commandQueue,
Dependency.get(KeyguardStateController.class),
Dependency.get(StatusBarStateController.class));
mAllowAutoDimWallpaperNotVisible = view.getContext().getResources() mAllowAutoDimWallpaperNotVisible = view.getContext().getResources()
.getBoolean(R.bool.config_navigation_bar_enable_auto_dim_no_visible_wallpaper); .getBoolean(R.bool.config_navigation_bar_enable_auto_dim_no_visible_wallpaper);
mDarkIntensityListeners = new ArrayList(); mDarkIntensityListeners = new ArrayList();
IWindowManager windowManagerService = Dependency.get(IWindowManager.class);
try { try {
mWallpaperVisible = windowManagerService.registerWallpaperVisibilityListener( mWallpaperVisible = mWindowManagerService.registerWallpaperVisibilityListener(
mWallpaperVisibilityListener, Display.DEFAULT_DISPLAY); mWallpaperVisibilityListener, Display.DEFAULT_DISPLAY);
} catch (RemoteException e) { } catch (RemoteException e) {
} }
@@ -121,12 +123,12 @@ public final class NavigationBarTransitions extends BarTransitions implements
@Override @Override
public void destroy() { public void destroy() {
IWindowManager windowManagerService = Dependency.get(IWindowManager.class);
try { try {
windowManagerService.unregisterWallpaperVisibilityListener(mWallpaperVisibilityListener, mWindowManagerService.unregisterWallpaperVisibilityListener(mWallpaperVisibilityListener,
Display.DEFAULT_DISPLAY); Display.DEFAULT_DISPLAY);
} catch (RemoteException e) { } catch (RemoteException e) {
} }
mLightTransitionsController.destroy();
} }
@Override @Override

View File

@@ -85,7 +85,6 @@ import com.android.systemui.shared.rotation.RotationButtonController;
import com.android.systemui.shared.system.ActivityManagerWrapper; import com.android.systemui.shared.system.ActivityManagerWrapper;
import com.android.systemui.shared.system.QuickStepContract; import com.android.systemui.shared.system.QuickStepContract;
import com.android.systemui.shared.system.WindowManagerWrapper; import com.android.systemui.shared.system.WindowManagerWrapper;
import com.android.systemui.statusbar.CommandQueue;
import com.android.systemui.statusbar.phone.AutoHideController; import com.android.systemui.statusbar.phone.AutoHideController;
import com.android.systemui.statusbar.phone.CentralSurfaces; import com.android.systemui.statusbar.phone.CentralSurfaces;
import com.android.systemui.statusbar.phone.LightBarTransitionsController; import com.android.systemui.statusbar.phone.LightBarTransitionsController;
@@ -140,7 +139,7 @@ public class NavigationBarView extends FrameLayout {
private EdgeBackGestureHandler mEdgeBackGestureHandler; private EdgeBackGestureHandler mEdgeBackGestureHandler;
private final DeadZone mDeadZone; private final DeadZone mDeadZone;
private boolean mDeadZoneConsuming = false; private boolean mDeadZoneConsuming = false;
private final NavigationBarTransitions mBarTransitions; private NavigationBarTransitions mBarTransitions;
@Nullable @Nullable
private AutoHideController mAutoHideController; private AutoHideController mAutoHideController;
@@ -370,7 +369,6 @@ public class NavigationBarView extends FrameLayout {
mConfiguration.updateFrom(context.getResources().getConfiguration()); mConfiguration.updateFrom(context.getResources().getConfiguration());
mScreenPinningNotify = new ScreenPinningNotify(mContext); mScreenPinningNotify = new ScreenPinningNotify(mContext);
mBarTransitions = new NavigationBarTransitions(this, Dependency.get(CommandQueue.class));
mButtonDispatchers.put(R.id.back, new ButtonDispatcher(R.id.back)); mButtonDispatchers.put(R.id.back, new ButtonDispatcher(R.id.back));
mButtonDispatchers.put(R.id.home, new ButtonDispatcher(R.id.home)); mButtonDispatchers.put(R.id.home, new ButtonDispatcher(R.id.home));
@@ -418,12 +416,12 @@ public class NavigationBarView extends FrameLayout {
} }
} }
public void setAutoHideController(AutoHideController autoHideController) { void setBarTransitions(NavigationBarTransitions navigationBarTransitions) {
mAutoHideController = autoHideController; mBarTransitions = navigationBarTransitions;
} }
public NavigationBarTransitions getBarTransitions() { public void setAutoHideController(AutoHideController autoHideController) {
return mBarTransitions; mAutoHideController = autoHideController;
} }
public LightBarTransitionsController getLightTransitionsController() { public LightBarTransitionsController getLightTransitionsController() {
@@ -888,8 +886,11 @@ public class NavigationBarView extends FrameLayout {
} }
} }
void onOverviewProxyConnectionChange(boolean enabled, boolean showSwipeUpUi) { void onOverviewProxyConnectionChange(boolean enabled) {
mOverviewProxyEnabled = enabled; mOverviewProxyEnabled = enabled;
}
void setShouldShowSwipeUpUi(boolean showSwipeUpUi) {
mShowSwipeUpUi = showSwipeUpUi; mShowSwipeUpUi = showSwipeUpUi;
updateStates(); updateStates();
} }

View File

@@ -264,7 +264,7 @@ public class TaskbarDelegate implements CommandQueue.Callbacks,
mWindowContext = null; mWindowContext = null;
} }
mAutoHideController.setNavigationBar(null); mAutoHideController.setNavigationBar(null);
mLightBarTransitionsController.destroy(mContext); mLightBarTransitionsController.destroy();
mLightBarController.setNavigationBar(null); mLightBarController.setNavigationBar(null);
mPipOptional.ifPresent(this::removePipExclusionBoundsChangeListener); mPipOptional.ifPresent(this::removePipExclusionBoundsChangeListener);
mInitialized = false; mInitialized = false;

View File

@@ -93,7 +93,8 @@ public class LightBarTransitionsController implements Dumpable, Callbacks,
mDisplayId = mContext.getDisplayId(); mDisplayId = mContext.getDisplayId();
} }
public void destroy(Context context) { /** Call to cleanup the LightBarTransitionsController when done with it. */
public void destroy() {
mCommandQueue.removeCallback(this); mCommandQueue.removeCallback(this);
mStatusBarStateController.removeCallback(this); mStatusBarStateController.removeCallback(this);
} }

View File

@@ -205,10 +205,9 @@ public class NavigationBarTest extends SysuiTestCase {
when(mNavigationBarView.getAccessibilityButton()).thenReturn(mAccessibilityButton); when(mNavigationBarView.getAccessibilityButton()).thenReturn(mAccessibilityButton);
when(mNavigationBarView.getImeSwitchButton()).thenReturn(mImeSwitchButton); when(mNavigationBarView.getImeSwitchButton()).thenReturn(mImeSwitchButton);
when(mNavigationBarView.getBackButton()).thenReturn(mBackButton); when(mNavigationBarView.getBackButton()).thenReturn(mBackButton);
when(mNavigationBarView.getBarTransitions()).thenReturn(mNavigationBarTransitions);
when(mNavigationBarView.getRotationButtonController()) when(mNavigationBarView.getRotationButtonController())
.thenReturn(mRotationButtonController); .thenReturn(mRotationButtonController);
when(mNavigationBarView.getLightTransitionsController()) when(mNavigationBarTransitions.getLightTransitionsController())
.thenReturn(mLightBarTransitionsController); .thenReturn(mLightBarTransitionsController);
when(mStatusBarKeyguardViewManager.isNavBarVisible()).thenReturn(true); when(mStatusBarKeyguardViewManager.isNavBarVisible()).thenReturn(true);
setupSysuiDependency(); setupSysuiDependency();
@@ -459,6 +458,7 @@ public class NavigationBarTest extends SysuiTestCase {
mInputMethodManager, mInputMethodManager,
mDeadZone, mDeadZone,
mDeviceConfigProxyFake, mDeviceConfigProxyFake,
mNavigationBarTransitions,
Optional.of(mock(BackAnimation.class)))); Optional.of(mock(BackAnimation.class))));
} }

View File

@@ -21,7 +21,6 @@ import static org.junit.Assert.assertTrue;
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.Mockito.doReturn; import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.spy; import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.when; import static org.mockito.Mockito.when;
@@ -37,8 +36,8 @@ import com.android.systemui.assist.AssistManager;
import com.android.systemui.navigationbar.gestural.EdgeBackGestureHandler; import com.android.systemui.navigationbar.gestural.EdgeBackGestureHandler;
import com.android.systemui.plugins.statusbar.StatusBarStateController; import com.android.systemui.plugins.statusbar.StatusBarStateController;
import com.android.systemui.recents.OverviewProxyService; import com.android.systemui.recents.OverviewProxyService;
import com.android.systemui.statusbar.CommandQueue;
import com.android.systemui.statusbar.phone.BarTransitions; import com.android.systemui.statusbar.phone.BarTransitions;
import com.android.systemui.statusbar.phone.LightBarTransitionsController;
import com.android.systemui.statusbar.policy.KeyguardStateController; import com.android.systemui.statusbar.policy.KeyguardStateController;
import org.junit.Before; import org.junit.Before;
@@ -52,10 +51,17 @@ import org.mockito.MockitoAnnotations;
@SmallTest @SmallTest
public class NavigationBarTransitionsTest extends SysuiTestCase { public class NavigationBarTransitionsTest extends SysuiTestCase {
@Mock
LightBarTransitionsController.Factory mLightBarTransitionsFactory;
@Mock
LightBarTransitionsController mLightBarTransitions;
@Mock @Mock
EdgeBackGestureHandler.Factory mEdgeBackGestureHandlerFactory; EdgeBackGestureHandler.Factory mEdgeBackGestureHandlerFactory;
@Mock @Mock
EdgeBackGestureHandler mEdgeBackGestureHandler; EdgeBackGestureHandler mEdgeBackGestureHandler;
@Mock
IWindowManager mIWindowManager;
private NavigationBarTransitions mTransitions; private NavigationBarTransitions mTransitions;
@Before @Before
@@ -64,7 +70,6 @@ public class NavigationBarTransitionsTest extends SysuiTestCase {
when(mEdgeBackGestureHandlerFactory.create(any(Context.class))) when(mEdgeBackGestureHandlerFactory.create(any(Context.class)))
.thenReturn(mEdgeBackGestureHandler); .thenReturn(mEdgeBackGestureHandler);
mDependency.injectMockDependency(IWindowManager.class);
mDependency.injectMockDependency(AssistManager.class); mDependency.injectMockDependency(AssistManager.class);
mDependency.injectMockDependency(OverviewProxyService.class); mDependency.injectMockDependency(OverviewProxyService.class);
mDependency.injectMockDependency(StatusBarStateController.class); mDependency.injectMockDependency(StatusBarStateController.class);
@@ -76,10 +81,12 @@ public class NavigationBarTransitionsTest extends SysuiTestCase {
.when(mDependency.injectMockDependency(NavigationModeController.class)) .when(mDependency.injectMockDependency(NavigationModeController.class))
.getCurrentUserContext(); .getCurrentUserContext();
when(mLightBarTransitionsFactory.create(any())).thenReturn(mLightBarTransitions);
NavigationBarView navBar = spy(new NavigationBarView(mContext, null)); NavigationBarView navBar = spy(new NavigationBarView(mContext, null));
when(navBar.getCurrentView()).thenReturn(navBar); when(navBar.getCurrentView()).thenReturn(navBar);
when(navBar.findViewById(anyInt())).thenReturn(navBar); when(navBar.findViewById(anyInt())).thenReturn(navBar);
mTransitions = new NavigationBarTransitions(navBar, mock(CommandQueue.class)); mTransitions = new NavigationBarTransitions(
navBar, mIWindowManager, mLightBarTransitionsFactory);
} }
@Test @Test