Merge changes I2769bc3f,I20171f31 into tm-dev

* changes:
  Use configuration for display rotation instead of display
  Refill all the dispatcher views when updating rotation
diff --git a/packages/SystemUI/src/com/android/systemui/navigationbar/NavigationBarInflaterView.java b/packages/SystemUI/src/com/android/systemui/navigationbar/NavigationBarInflaterView.java
index 4d9175b..59bb2278e 100644
--- a/packages/SystemUI/src/com/android/systemui/navigationbar/NavigationBarInflaterView.java
+++ b/packages/SystemUI/src/com/android/systemui/navigationbar/NavigationBarInflaterView.java
@@ -168,6 +168,7 @@
 
     public void setButtonDispatchers(SparseArray<ButtonDispatcher> buttonDispatchers) {
         mButtonDispatchers = buttonDispatchers;
+        clearDispatcherViews();
         for (int i = 0; i < buttonDispatchers.size(); i++) {
             initiallyFill(buttonDispatchers.valueAt(i));
         }
@@ -454,12 +455,16 @@
         }
     }
 
-    private void clearViews() {
+    private void clearDispatcherViews() {
         if (mButtonDispatchers != null) {
             for (int i = 0; i < mButtonDispatchers.size(); i++) {
                 mButtonDispatchers.valueAt(i).clear();
             }
         }
+    }
+
+    private void clearViews() {
+        clearDispatcherViews();
         clearAllChildren(mHorizontal.findViewById(R.id.nav_buttons));
         clearAllChildren(mVertical.findViewById(R.id.nav_buttons));
     }
diff --git a/packages/SystemUI/src/com/android/systemui/navigationbar/NavigationBarView.java b/packages/SystemUI/src/com/android/systemui/navigationbar/NavigationBarView.java
index a13c199..9cd007e 100644
--- a/packages/SystemUI/src/com/android/systemui/navigationbar/NavigationBarView.java
+++ b/packages/SystemUI/src/com/android/systemui/navigationbar/NavigationBarView.java
@@ -317,7 +317,7 @@
                 R.drawable.ic_sysbar_rotate_button_ccw_start_90,
                 R.drawable.ic_sysbar_rotate_button_cw_start_0,
                 R.drawable.ic_sysbar_rotate_button_cw_start_90,
-                () -> getDisplay().getRotation());
+                () -> mCurrentRotation);
 
         mConfiguration = new Configuration();
         mTmpLastConfiguration = new Configuration();
@@ -538,6 +538,7 @@
             mRotationButtonController.setRotationButton(mRotationContextButton,
                     mRotationButtonListener);
         }
+        mNavigationInflaterView.setButtonDispatchers(mButtonDispatchers);
     }
 
     public KeyButtonDrawable getBackDrawable() {
@@ -978,15 +979,27 @@
         return mCurrentRotation != rotation;
     }
 
+    private void updateCurrentRotation() {
+        final int rotation = mConfiguration.windowConfiguration.getDisplayRotation();
+        if (mCurrentRotation == rotation) {
+            return;
+        }
+        mCurrentRotation = rotation;
+        mNavigationInflaterView.setAlternativeOrder(mCurrentRotation == Surface.ROTATION_90);
+        mDeadZone.onConfigurationChanged(mCurrentRotation);
+        if (DEBUG) {
+            Log.d(TAG, "updateCurrentRotation(): rot=" + mCurrentRotation);
+        }
+    }
+
     private void updateCurrentView() {
         resetViews();
         mCurrentView = mIsVertical ? mVertical : mHorizontal;
         mCurrentView.setVisibility(View.VISIBLE);
         mNavigationInflaterView.setVertical(mIsVertical);
-        mCurrentRotation = getContextDisplay().getRotation();
-        mNavigationInflaterView.setAlternativeOrder(mCurrentRotation == Surface.ROTATION_90);
         mNavigationInflaterView.updateButtonDispatchersCurrentView();
         updateLayoutTransitionsEnabled();
+        updateCurrentRotation();
     }
 
     private void resetViews() {
@@ -1019,17 +1032,11 @@
 
     public void reorient() {
         updateCurrentView();
-
         ((NavigationBarFrame) getRootView()).setDeadZone(mDeadZone);
-        mDeadZone.onConfigurationChanged(mCurrentRotation);
 
         // force the low profile & disabled states into compliance
         mBarTransitions.init();
 
-        if (DEBUG) {
-            Log.d(TAG, "reorient(): rot=" + mCurrentRotation);
-        }
-
         // Resolve layout direction if not resolved since components changing layout direction such
         // as changing languages will recreate this view and the direction will be resolved later
         if (!isLayoutDirectionResolved()) {
@@ -1100,6 +1107,7 @@
         boolean uiCarModeChanged = updateCarMode();
         updateIcons(mTmpLastConfiguration);
         updateRecentsIcon();
+        updateCurrentRotation();
         mEdgeBackGestureHandler.onConfigurationChanged(mConfiguration);
         if (uiCarModeChanged || mTmpLastConfiguration.densityDpi != mConfiguration.densityDpi
                 || mTmpLastConfiguration.getLayoutDirection() != mConfiguration.getLayoutDirection()) {