Merge "Tweak lifecycle of nav bar/view" into sc-dev

This commit is contained in:
Winson Chung
2021-05-27 03:23:28 +00:00
committed by Android (Google) Code Review
3 changed files with 56 additions and 115 deletions

View File

@@ -31,6 +31,7 @@ import static android.view.WindowInsetsController.APPEARANCE_LOW_PROFILE_BARS;
import static android.view.WindowInsetsController.APPEARANCE_OPAQUE_NAVIGATION_BARS; import static android.view.WindowInsetsController.APPEARANCE_OPAQUE_NAVIGATION_BARS;
import static android.view.WindowInsetsController.APPEARANCE_SEMI_TRANSPARENT_NAVIGATION_BARS; import static android.view.WindowInsetsController.APPEARANCE_SEMI_TRANSPARENT_NAVIGATION_BARS;
import static android.view.WindowInsetsController.BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE; import static android.view.WindowInsetsController.BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE;
import static android.view.WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_ALWAYS;
import static android.view.WindowManager.LayoutParams.PRIVATE_FLAG_NO_MOVE_ANIMATION; import static android.view.WindowManager.LayoutParams.PRIVATE_FLAG_NO_MOVE_ANIMATION;
import static android.view.WindowManagerPolicyConstants.NAV_BAR_MODE_3BUTTON; import static android.view.WindowManagerPolicyConstants.NAV_BAR_MODE_3BUTTON;
import static android.view.WindowManagerPolicyConstants.NAV_BAR_MODE_GESTURAL; import static android.view.WindowManagerPolicyConstants.NAV_BAR_MODE_GESTURAL;
@@ -200,7 +201,7 @@ public class NavigationBar implements View.OnAttachStateChangeListener,
private final UiEventLogger mUiEventLogger; private final UiEventLogger mUiEventLogger;
private Bundle mSavedState; private Bundle mSavedState;
private NavigationBarView mNavigationBarView = null; private NavigationBarView mNavigationBarView;
private @WindowVisibleState int mNavigationBarWindowState = WINDOW_STATE_SHOWING; private @WindowVisibleState int mNavigationBarWindowState = WINDOW_STATE_SHOWING;
@@ -392,7 +393,8 @@ public class NavigationBar implements View.OnAttachStateChangeListener,
}; };
private final Runnable mAutoDim = () -> getBarTransitions().setAutoDim(true); private final Runnable mAutoDim = () -> getBarTransitions().setAutoDim(true);
private final Runnable mEnableLayoutTransitions = () ->
mNavigationBarView.setLayoutTransitionsEnabled(true);
private final Runnable mOnVariableDurationHomeLongClick = () -> { private final Runnable mOnVariableDurationHomeLongClick = () -> {
if (onHomeLongClick(mNavigationBarView.getHomeButton().getCurrentView())) { if (onHomeLongClick(mNavigationBarView.getHomeButton().getCurrentView())) {
mNavigationBarView.getHomeButton().getCurrentView().performHapticFeedback( mNavigationBarView.getHomeButton().getCurrentView().performHapticFeedback(
@@ -488,7 +490,7 @@ public class NavigationBar implements View.OnAttachStateChangeListener,
mA11yBtnMode = mAccessibilityButtonModeObserver.getCurrentAccessibilityButtonMode(); mA11yBtnMode = mAccessibilityButtonModeObserver.getCurrentAccessibilityButtonMode();
} }
public View getView() { public NavigationBarView getView() {
return mNavigationBarView; return mNavigationBarView;
} }
@@ -504,16 +506,19 @@ public class NavigationBar implements View.OnAttachStateChangeListener,
| WindowManager.LayoutParams.FLAG_SLIPPERY, | WindowManager.LayoutParams.FLAG_SLIPPERY,
PixelFormat.TRANSLUCENT); PixelFormat.TRANSLUCENT);
lp.token = new Binder(); lp.token = new Binder();
lp.setTitle("NavigationBar" + mContext.getDisplayId());
lp.accessibilityTitle = mContext.getString(R.string.nav_bar); lp.accessibilityTitle = mContext.getString(R.string.nav_bar);
lp.windowAnimations = 0;
lp.privateFlags |= WindowManager.LayoutParams.PRIVATE_FLAG_COLOR_SPACE_AGNOSTIC; lp.privateFlags |= WindowManager.LayoutParams.PRIVATE_FLAG_COLOR_SPACE_AGNOSTIC;
lp.layoutInDisplayCutoutMode = LAYOUT_IN_DISPLAY_CUTOUT_MODE_ALWAYS;
lp.windowAnimations = 0;
lp.setTitle("NavigationBar" + mContext.getDisplayId());
lp.setFitInsetsTypes(0 /* types */);
NavigationBarFrame frame = (NavigationBarFrame) LayoutInflater.from(mContext).inflate( NavigationBarFrame frame = (NavigationBarFrame) LayoutInflater.from(mContext).inflate(
R.layout.navigation_bar_window, null); R.layout.navigation_bar_window, null);
View barView = LayoutInflater.from(frame.getContext()).inflate( View barView = LayoutInflater.from(frame.getContext()).inflate(
R.layout.navigation_bar, frame); R.layout.navigation_bar, frame);
barView.addOnAttachStateChangeListener(this); barView.addOnAttachStateChangeListener(this);
mNavigationBarView = barView.findViewById(R.id.navigation_bar_view);
if (DEBUG) Log.v(TAG, "addNavigationBar: about to add " + barView); if (DEBUG) Log.v(TAG, "addNavigationBar: about to add " + barView);
mContext.getSystemService(WindowManager.class).addView(frame, lp); mContext.getSystemService(WindowManager.class).addView(frame, lp);
@@ -533,6 +538,19 @@ public class NavigationBar implements View.OnAttachStateChangeListener,
mContentResolver.registerContentObserver( mContentResolver.registerContentObserver(
Settings.Secure.getUriFor(Settings.Secure.ASSIST_TOUCH_GESTURE_ENABLED), Settings.Secure.getUriFor(Settings.Secure.ASSIST_TOUCH_GESTURE_ENABLED),
false, mAssistContentObserver, UserHandle.USER_ALL); false, mAssistContentObserver, UserHandle.USER_ALL);
mAllowForceNavBarHandleOpaque = mContext.getResources().getBoolean(
R.bool.allow_force_nav_bar_handle_opaque);
mForceNavBarHandleOpaque = DeviceConfig.getBoolean(
DeviceConfig.NAMESPACE_SYSTEMUI,
NAV_BAR_HANDLE_FORCE_OPAQUE,
/* defaultValue = */ true);
mHomeButtonLongPressDurationMs = Optional.of(DeviceConfig.getLong(
DeviceConfig.NAMESPACE_SYSTEMUI,
HOME_BUTTON_LONG_PRESS_DURATION_MS,
/* defaultValue = */ 0
)).filter(duration -> duration != 0);
DeviceConfig.addOnPropertiesChangedListener(
DeviceConfig.NAMESPACE_SYSTEMUI, mHandler::post, mOnPropertiesChangedListener);
updateAssistantEntrypoints(); updateAssistantEntrypoints();
if (savedState != null) { if (savedState != null) {
@@ -543,25 +561,10 @@ public class NavigationBar implements View.OnAttachStateChangeListener,
mTransientShown = savedState.getBoolean(EXTRA_TRANSIENT_STATE, false); mTransientShown = savedState.getBoolean(EXTRA_TRANSIENT_STATE, false);
} }
mSavedState = savedState; mSavedState = savedState;
mAccessibilityManagerWrapper.addCallback(mAccessibilityListener);
// Respect the latest disabled-flags. // Respect the latest disabled-flags.
mCommandQueue.recomputeDisableFlags(mDisplayId, false); mCommandQueue.recomputeDisableFlags(mDisplayId, false);
mAllowForceNavBarHandleOpaque = mContext.getResources().getBoolean(
R.bool.allow_force_nav_bar_handle_opaque);
mForceNavBarHandleOpaque = DeviceConfig.getBoolean(
DeviceConfig.NAMESPACE_SYSTEMUI,
NAV_BAR_HANDLE_FORCE_OPAQUE,
/* defaultValue = */ true);
mHomeButtonLongPressDurationMs = Optional.of(DeviceConfig.getLong(
DeviceConfig.NAMESPACE_SYSTEMUI,
HOME_BUTTON_LONG_PRESS_DURATION_MS,
/* defaultValue = */ 0
)).filter(duration -> duration != 0);
DeviceConfig.addOnPropertiesChangedListener(
DeviceConfig.NAMESPACE_SYSTEMUI, mHandler::post, mOnPropertiesChangedListener);
mIsCurrentUserSetup = mDeviceProvisionedController.isCurrentUserSetup(); mIsCurrentUserSetup = mDeviceProvisionedController.isCurrentUserSetup();
mDeviceProvisionedController.addCallback(mUserSetupListener); mDeviceProvisionedController.addCallback(mUserSetupListener);
@@ -587,7 +590,6 @@ public class NavigationBar implements View.OnAttachStateChangeListener,
@Override @Override
public void onViewAttachedToWindow(View v) { public void onViewAttachedToWindow(View v) {
final Display display = v.getDisplay(); final Display display = v.getDisplay();
mNavigationBarView = v.findViewById(R.id.navigation_bar_view);
mNavigationBarView.setComponents(mStatusBarLazy.get().getPanelController()); mNavigationBarView.setComponents(mStatusBarLazy.get().getPanelController());
mNavigationBarView.setDisabledFlags(mDisabledFlags1); mNavigationBarView.setDisabledFlags(mDisabledFlags1);
mNavigationBarView.setOnVerticalChangedListener(this::onVerticalChanged); mNavigationBarView.setOnVerticalChangedListener(this::onVerticalChanged);
@@ -598,6 +600,9 @@ public class NavigationBar implements View.OnAttachStateChangeListener,
mNavigationBarView.setNavigationIconHints(mNavigationIconHints); mNavigationBarView.setNavigationIconHints(mNavigationIconHints);
mNavigationBarView.setWindowVisible(isNavBarWindowVisible()); mNavigationBarView.setWindowVisible(isNavBarWindowVisible());
mNavigationBarView.setBehavior(mBehavior); mNavigationBarView.setBehavior(mBehavior);
mAccessibilityManagerWrapper.addCallback(mAccessibilityListener);
mSplitScreenOptional.ifPresent(mNavigationBarView::registerDockedListener); mSplitScreenOptional.ifPresent(mNavigationBarView::registerDockedListener);
mPipOptional.ifPresent(mNavigationBarView::registerPipExclusionBoundsChangeListener); mPipOptional.ifPresent(mNavigationBarView::registerPipExclusionBoundsChangeListener);
@@ -657,10 +662,8 @@ public class NavigationBar implements View.OnAttachStateChangeListener,
@Override @Override
public void onViewDetachedFromWindow(View v) { public void onViewDetachedFromWindow(View v) {
if (mNavigationBarView != null) { mNavigationBarView.getBarTransitions().destroy();
mNavigationBarView.getBarTransitions().destroy(); mNavigationBarView.getLightTransitionsController().destroy(mContext);
mNavigationBarView.getLightTransitionsController().destroy(mContext);
}
mOverviewProxyService.removeCallback(mOverviewProxyListener); mOverviewProxyService.removeCallback(mOverviewProxyListener);
mBroadcastDispatcher.unregisterReceiver(mBroadcastReceiver); mBroadcastDispatcher.unregisterReceiver(mBroadcastReceiver);
if (mOrientationHandle != null) { if (mOrientationHandle != null) {
@@ -671,6 +674,8 @@ public class NavigationBar implements View.OnAttachStateChangeListener,
mOrientationHandleGlobalLayoutListener); mOrientationHandleGlobalLayoutListener);
} }
mHandler.removeCallbacks(mAutoDim); mHandler.removeCallbacks(mAutoDim);
mHandler.removeCallbacks(mOnVariableDurationHomeLongClick);
mHandler.removeCallbacks(mEnableLayoutTransitions);
mNavigationBarView = null; mNavigationBarView = null;
mOrientationHandle = null; mOrientationHandle = null;
} }
@@ -682,9 +687,7 @@ public class NavigationBar implements View.OnAttachStateChangeListener,
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);
if (mNavigationBarView != null) { mNavigationBarView.getLightTransitionsController().saveState(outState);
mNavigationBarView.getLightTransitionsController().saveState(outState);
}
} }
/** /**
@@ -809,15 +812,12 @@ public class NavigationBar implements View.OnAttachStateChangeListener,
// mOrientedHandle is initialized lazily // mOrientedHandle is initialized lazily
mOrientationHandle.setVisibility(View.GONE); mOrientationHandle.setVisibility(View.GONE);
} }
if (mNavigationBarView != null) { mNavigationBarView.setVisibility(View.VISIBLE);
mNavigationBarView.setVisibility(View.VISIBLE); mNavigationBarView.setOrientedHandleSamplingRegion(null);
mNavigationBarView.setOrientedHandleSamplingRegion(null);
}
} }
private void reconfigureHomeLongClick() { private void reconfigureHomeLongClick() {
if (mNavigationBarView == null if (mNavigationBarView.getHomeButton().getCurrentView() == null) {
|| mNavigationBarView.getHomeButton().getCurrentView() == null) {
return; return;
} }
if (mHomeButtonLongPressDurationMs.isPresent() || !mLongPressHomeEnabled) { if (mHomeButtonLongPressDurationMs.isPresent() || !mLongPressHomeEnabled) {
@@ -844,17 +844,12 @@ public class NavigationBar implements View.OnAttachStateChangeListener,
pw.println(" mHomeButtonLongPressDurationMs=" + mHomeButtonLongPressDurationMs); pw.println(" mHomeButtonLongPressDurationMs=" + mHomeButtonLongPressDurationMs);
pw.println(" mLongPressHomeEnabled=" + mLongPressHomeEnabled); pw.println(" mLongPressHomeEnabled=" + mLongPressHomeEnabled);
pw.println(" mAssistantTouchGestureEnabled=" + mAssistantTouchGestureEnabled); pw.println(" mAssistantTouchGestureEnabled=" + mAssistantTouchGestureEnabled);
pw.println(" mNavigationBarWindowState="
if (mNavigationBarView != null) { + windowStateToString(mNavigationBarWindowState));
pw.println(" mNavigationBarWindowState=" pw.println(" mNavigationBarMode="
+ windowStateToString(mNavigationBarWindowState)); + BarTransitions.modeToString(mNavigationBarMode));
pw.println(" mNavigationBarMode=" dumpBarTransitions(pw, "mNavigationBarView", mNavigationBarView.getBarTransitions());
+ BarTransitions.modeToString(mNavigationBarMode)); mNavigationBarView.dump(pw);
dumpBarTransitions(pw, "mNavigationBarView", mNavigationBarView.getBarTransitions());
mNavigationBarView.dump(pw);
} else {
pw.print(" mNavigationBarView=null");
}
} }
// ----- CommandQueue Callbacks ----- // ----- CommandQueue Callbacks -----
@@ -889,10 +884,7 @@ public class NavigationBar implements View.OnAttachStateChangeListener,
if (hints == mNavigationIconHints) return; if (hints == mNavigationIconHints) return;
mNavigationIconHints = hints; mNavigationIconHints = hints;
mNavigationBarView.setNavigationIconHints(hints);
if (mNavigationBarView != null) {
mNavigationBarView.setNavigationIconHints(hints);
}
checkBarModes(); checkBarModes();
updateSystemUiStateFlags(-1); updateSystemUiStateFlags(-1);
} }
@@ -911,23 +903,12 @@ public class NavigationBar implements View.OnAttachStateChangeListener,
orientSecondaryHomeHandle(); orientSecondaryHomeHandle();
} }
if (DEBUG_WINDOW_STATE) Log.d(TAG, "Navigation bar " + windowStateToString(state)); if (DEBUG_WINDOW_STATE) Log.d(TAG, "Navigation bar " + windowStateToString(state));
mNavigationBarView.setWindowVisible(isNavBarWindowVisible());
if (mNavigationBarView != null) {
mNavigationBarView.setWindowVisible(isNavBarWindowVisible());
}
} }
} }
@Override @Override
public void onRotationProposal(final int rotation, boolean isValid) { public void onRotationProposal(final int rotation, boolean isValid) {
if (mNavigationBarView == null) {
if (RotationContextButton.DEBUG_ROTATION) {
Log.v(TAG, "onRotationProposal proposedRotation=" +
Surface.rotationToString(rotation) + ", mNavigationBarView is null");
}
return;
}
final int winRotation = mNavigationBarView.getDisplay().getRotation(); final int winRotation = mNavigationBarView.getDisplay().getRotation();
final boolean rotateSuggestionsDisabled = RotationButtonController final boolean rotateSuggestionsDisabled = RotationButtonController
.hasDisable2RotateSuggestionFlag(mDisabledFlags2); .hasDisable2RotateSuggestionFlag(mDisabledFlags2);
@@ -941,8 +922,7 @@ public class NavigationBar implements View.OnAttachStateChangeListener,
+ ", isValid=" + isValid + ", mNavBarWindowState=" + ", isValid=" + isValid + ", mNavBarWindowState="
+ StatusBarManager.windowStateToString(mNavigationBarWindowState) + StatusBarManager.windowStateToString(mNavigationBarWindowState)
+ ", rotateSuggestionsDisabled=" + rotateSuggestionsDisabled + ", rotateSuggestionsDisabled=" + rotateSuggestionsDisabled
+ ", isRotateButtonVisible=" + (mNavigationBarView == null ? "null" + ", isRotateButtonVisible=" + rotationButton.isVisible());
: rotationButton.isVisible()));
} }
// Respect the disabled flag, no need for action as flag change callback will handle hiding // Respect the disabled flag, no need for action as flag change callback will handle hiding
@@ -983,9 +963,6 @@ public class NavigationBar implements View.OnAttachStateChangeListener,
boolean nbModeChanged = false; boolean nbModeChanged = false;
if (mAppearance != appearance) { if (mAppearance != appearance) {
mAppearance = appearance; mAppearance = appearance;
if (getView() == null) {
return;
}
nbModeChanged = updateBarMode(barMode(mTransientShown, appearance)); nbModeChanged = updateBarMode(barMode(mTransientShown, appearance));
} }
if (mLightBarController != null) { if (mLightBarController != null) {
@@ -994,9 +971,7 @@ public class NavigationBar implements View.OnAttachStateChangeListener,
} }
if (mBehavior != behavior) { if (mBehavior != behavior) {
mBehavior = behavior; mBehavior = behavior;
if (mNavigationBarView != null) { mNavigationBarView.setBehavior(behavior);
mNavigationBarView.setBehavior(behavior);
}
updateSystemUiStateFlags(-1); updateSystemUiStateFlags(-1);
} }
} }
@@ -1034,12 +1009,7 @@ public class NavigationBar implements View.OnAttachStateChangeListener,
} }
private void handleTransientChanged() { private void handleTransientChanged() {
if (getView() == null) { mNavigationBarView.onTransientStateChanged(mTransientShown);
return;
}
if (mNavigationBarView != null) {
mNavigationBarView.onTransientStateChanged(mTransientShown);
}
final int barMode = barMode(mTransientShown, mAppearance); final int barMode = barMode(mTransientShown, mAppearance);
if (updateBarMode(barMode) && mLightBarController != null) { if (updateBarMode(barMode) && mLightBarController != null) {
mLightBarController.onNavigationBarModeChanged(barMode); mLightBarController.onNavigationBarModeChanged(barMode);
@@ -1092,9 +1062,7 @@ public class NavigationBar implements View.OnAttachStateChangeListener,
| StatusBarManager.DISABLE_SEARCH); | StatusBarManager.DISABLE_SEARCH);
if (masked != mDisabledFlags1) { if (masked != mDisabledFlags1) {
mDisabledFlags1 = masked; mDisabledFlags1 = masked;
if (mNavigationBarView != null) { mNavigationBarView.setDisabledFlags(state1);
mNavigationBarView.setDisabledFlags(state1);
}
updateScreenPinningGestures(); updateScreenPinningGestures();
} }
@@ -1110,17 +1078,13 @@ public class NavigationBar implements View.OnAttachStateChangeListener,
private void setDisabled2Flags(int state2) { private void setDisabled2Flags(int state2) {
// Method only called on change of disable2 flags // Method only called on change of disable2 flags
if (mNavigationBarView != null) { mNavigationBarView.getRotationButtonController().onDisable2FlagChanged(state2);
mNavigationBarView.getRotationButtonController().onDisable2FlagChanged(state2);
}
} }
// ----- Internal stuff ----- // ----- Internal stuff -----
private void refreshLayout(int layoutDirection) { private void refreshLayout(int layoutDirection) {
if (mNavigationBarView != null) { mNavigationBarView.setLayoutDirection(layoutDirection);
mNavigationBarView.setLayoutDirection(layoutDirection);
}
} }
private boolean shouldDisableNavbarGestures() { private boolean shouldDisableNavbarGestures() {
@@ -1129,7 +1093,7 @@ public class NavigationBar implements View.OnAttachStateChangeListener,
} }
private void repositionNavigationBar() { private void repositionNavigationBar() {
if (mNavigationBarView == null || !mNavigationBarView.isAttachedToWindow()) return; if (!mNavigationBarView.isAttachedToWindow()) return;
prepareNavigationBarView(); prepareNavigationBarView();
@@ -1138,10 +1102,6 @@ public class NavigationBar implements View.OnAttachStateChangeListener,
} }
private void updateScreenPinningGestures() { private void updateScreenPinningGestures() {
if (mNavigationBarView == null) {
return;
}
// Change the cancel pin gesture to home and back if recents button is invisible // Change the cancel pin gesture to home and back if recents button is invisible
boolean pinningActive = ActivityManagerWrapper.getInstance().isScreenPinningActive(); boolean pinningActive = ActivityManagerWrapper.getInstance().isScreenPinningActive();
ButtonDispatcher backButton = mNavigationBarView.getBackButton(); ButtonDispatcher backButton = mNavigationBarView.getBackButton();
@@ -1252,10 +1212,7 @@ public class NavigationBar implements View.OnAttachStateChangeListener,
AssistManager.INVOCATION_TYPE_HOME_BUTTON_LONG_PRESS); AssistManager.INVOCATION_TYPE_HOME_BUTTON_LONG_PRESS);
mAssistManagerLazy.get().startAssist(args); mAssistManagerLazy.get().startAssist(args);
mStatusBarLazy.get().awakenDreams(); mStatusBarLazy.get().awakenDreams();
mNavigationBarView.abortCurrentGesture();
if (mNavigationBarView != null) {
mNavigationBarView.abortCurrentGesture();
}
return true; return true;
} }
@@ -1405,9 +1362,6 @@ public class NavigationBar implements View.OnAttachStateChangeListener,
} }
void updateAccessibilityServicesState(AccessibilityManager accessibilityManager) { void updateAccessibilityServicesState(AccessibilityManager accessibilityManager) {
if (mNavigationBarView == null) {
return;
}
boolean[] feedbackEnabled = new boolean[1]; boolean[] feedbackEnabled = new boolean[1];
int a11yFlags = getA11yButtonState(feedbackEnabled); int a11yFlags = getA11yButtonState(feedbackEnabled);
@@ -1593,7 +1547,7 @@ public class NavigationBar implements View.OnAttachStateChangeListener,
public void disableAnimationsDuringHide(long delay) { public void disableAnimationsDuringHide(long delay) {
mNavigationBarView.setLayoutTransitionsEnabled(false); mNavigationBarView.setLayoutTransitionsEnabled(false);
mNavigationBarView.postDelayed(() -> mNavigationBarView.setLayoutTransitionsEnabled(true), mHandler.postDelayed(mEnableLayoutTransitions,
delay + StackStateAnimator.ANIMATION_DURATION_GO_TO_FULL_SHADE); delay + StackStateAnimator.ANIMATION_DURATION_GO_TO_FULL_SHADE);
} }
@@ -1608,10 +1562,7 @@ public class NavigationBar implements View.OnAttachStateChangeListener,
} }
public NavigationBarTransitions getBarTransitions() { public NavigationBarTransitions getBarTransitions() {
if (mNavigationBarView != null) { return mNavigationBarView.getBarTransitions();
return mNavigationBarView.getBarTransitions();
}
return null;
} }
public void finishBarAnimations() { public void finishBarAnimations() {
@@ -1626,8 +1577,7 @@ public class NavigationBar implements View.OnAttachStateChangeListener,
} }
private final Consumer<Integer> mRotationWatcher = rotation -> { private final Consumer<Integer> mRotationWatcher = rotation -> {
if (mNavigationBarView != null if (mNavigationBarView.needsReorient(rotation)) {
&& mNavigationBarView.needsReorient(rotation)) {
repositionNavigationBar(); repositionNavigationBar();
} }
}; };
@@ -1635,9 +1585,6 @@ public class NavigationBar implements View.OnAttachStateChangeListener,
private final BroadcastReceiver mBroadcastReceiver = new BroadcastReceiver() { private final BroadcastReceiver mBroadcastReceiver = new BroadcastReceiver() {
@Override @Override
public void onReceive(Context context, Intent intent) { public void onReceive(Context context, Intent intent) {
if (mNavigationBarView == null) {
return;
}
String action = intent.getAction(); String action = intent.getAction();
if (Intent.ACTION_SCREEN_OFF.equals(action) if (Intent.ACTION_SCREEN_OFF.equals(action)
|| Intent.ACTION_SCREEN_ON.equals(action)) { || Intent.ACTION_SCREEN_ON.equals(action)) {

View File

@@ -224,10 +224,7 @@ public class NavigationBarController implements Callbacks,
if (navBar == null) { if (navBar == null) {
continue; continue;
} }
NavigationBarView view = (NavigationBarView) navBar.getView(); navBar.getView().updateStates();
if (view != null) {
view.updateStates();
}
} }
}); });
} }
@@ -365,13 +362,12 @@ public class NavigationBarController implements Callbacks,
mHandler, mHandler,
mNavBarOverlayController, mNavBarOverlayController,
mUiEventLogger); mUiEventLogger);
mNavigationBars.put(displayId, navBar);
View navigationBarView = navBar.createView(savedState); View navigationBarView = navBar.createView(savedState);
navigationBarView.addOnAttachStateChangeListener(new View.OnAttachStateChangeListener() { navigationBarView.addOnAttachStateChangeListener(new View.OnAttachStateChangeListener() {
@Override @Override
public void onViewAttachedToWindow(View v) { public void onViewAttachedToWindow(View v) {
mNavigationBars.put(displayId, navBar);
if (result != null) { if (result != null) {
navBar.setImeWindowStatus(display.getDisplayId(), result.mImeToken, navBar.setImeWindowStatus(display.getDisplayId(), result.mImeToken,
result.mImeWindowVis, result.mImeBackDisposition, result.mImeWindowVis, result.mImeBackDisposition,
@@ -447,7 +443,7 @@ public class NavigationBarController implements Callbacks,
*/ */
public @Nullable NavigationBarView getNavigationBarView(int displayId) { public @Nullable NavigationBarView getNavigationBarView(int displayId) {
NavigationBar navBar = mNavigationBars.get(displayId); NavigationBar navBar = mNavigationBars.get(displayId);
return (navBar == null) ? null : (NavigationBarView) navBar.getView(); return (navBar == null) ? null : navBar.getView();
} }
/** @return {@link NavigationBar} on the default display. */ /** @return {@link NavigationBar} on the default display. */

View File

@@ -40,7 +40,6 @@ public class ButtonDispatcher {
private final ArrayList<View> mViews = new ArrayList<>(); private final ArrayList<View> mViews = new ArrayList<>();
private final int mId; private final int mId;
private final AssistManager mAssistManager;
private View.OnClickListener mClickListener; private View.OnClickListener mClickListener;
private View.OnTouchListener mTouchListener; private View.OnTouchListener mTouchListener;
@@ -73,7 +72,6 @@ public class ButtonDispatcher {
public ButtonDispatcher(int id) { public ButtonDispatcher(int id) {
mId = id; mId = id;
mAssistManager = Dependency.get(AssistManager.class);
} }
public void clear() { public void clear() {