OSDN Git Service

Revert "Make settings themed apps have light nav"
authorTarandeep Singh <tarandeep@google.com>
Wed, 6 Sep 2017 22:16:12 +0000 (22:16 +0000)
committerTarandeep Singh <tarandeep@google.com>
Wed, 6 Sep 2017 22:31:57 +0000 (22:31 +0000)
This reverts commit 45484206740874ddd4024fedfdd8676d935ea67b.

The above change causes restart due to ClassCastException.

Test: Manually:
      1. Open the Dialer app.
      2. Focus into the edit field to show the IME.
      3. Open the notification shade.
      4. Tap the gear icon to show the system settings.
      5. Make sure the system no longer restarts due to
         ClassCastException.
Bug: 63630024
Fixes: 65413752
Change-Id: I4a17ba2f8d70f99009f091c2aaad5cd5f4e9b31c

core/java/com/android/internal/policy/DecorView.java
core/java/com/android/internal/policy/PhoneWindow.java
core/res/res/values/attrs.xml
core/res/res/values/themes_device_defaults.xml

index dafa68e..0d962eb 100644 (file)
@@ -17,9 +17,6 @@
 package com.android.internal.policy;
 
 import android.graphics.Outline;
-import android.graphics.drawable.InsetDrawable;
-import android.graphics.drawable.LayerDrawable;
-import android.util.Pair;
 import android.view.ViewOutlineProvider;
 import android.view.accessibility.AccessibilityNodeInfo;
 import com.android.internal.R;
@@ -1106,8 +1103,8 @@ public class DecorView extends FrameLayout implements RootViewSurfaceTaker, Wind
             boolean navBarToLeftEdge = isNavBarToLeftEdge(mLastBottomInset, mLastLeftInset);
             int navBarSize = getNavBarSize(mLastBottomInset, mLastRightInset, mLastLeftInset);
             updateColorViewInt(mNavigationColorViewState, sysUiVisibility,
-                    mWindow.mNavigationBarColor, mWindow.mNavigationBarDividerColor, navBarSize,
-                    navBarToRightEdge || navBarToLeftEdge, navBarToLeftEdge,
+                    mWindow.mNavigationBarColor, navBarSize, navBarToRightEdge || navBarToLeftEdge,
+                    navBarToLeftEdge,
                     0 /* sideInset */, animate && !disallowAnimate, false /* force */);
 
             boolean statusBarNeedsRightInset = navBarToRightEdge
@@ -1117,7 +1114,7 @@ public class DecorView extends FrameLayout implements RootViewSurfaceTaker, Wind
             int statusBarSideInset = statusBarNeedsRightInset ? mLastRightInset
                     : statusBarNeedsLeftInset ? mLastLeftInset : 0;
             updateColorViewInt(mStatusColorViewState, sysUiVisibility,
-                    calculateStatusBarColor(), 0, mLastTopInset,
+                    calculateStatusBarColor(), mLastTopInset,
                     false /* matchVertical */, statusBarNeedsLeftInset, statusBarSideInset,
                     animate && !disallowAnimate,
                     mForceWindowDrawsStatusBarBackground);
@@ -1204,7 +1201,6 @@ public class DecorView extends FrameLayout implements RootViewSurfaceTaker, Wind
      * @param state the color view to update.
      * @param sysUiVis the current systemUiVisibility to apply.
      * @param color the current color to apply.
-     * @param dividerColor the current divider color to apply.
      * @param size the current size in the non-parent-matching dimension.
      * @param verticalBar if true the view is attached to a vertical edge, otherwise to a
      *                    horizontal edge,
@@ -1212,7 +1208,7 @@ public class DecorView extends FrameLayout implements RootViewSurfaceTaker, Wind
      * @param animate if true, the change will be animated.
      */
     private void updateColorViewInt(final ColorViewState state, int sysUiVis, int color,
-            int dividerColor, int size, boolean verticalBar, boolean seascape, int sideMargin,
+            int size, boolean verticalBar, boolean seascape, int sideMargin,
             boolean animate, boolean force) {
         state.present = state.attributes.isPresent(sysUiVis, mWindow.getAttributes().flags, force);
         boolean show = state.attributes.isVisible(state.present, color,
@@ -1231,7 +1227,7 @@ public class DecorView extends FrameLayout implements RootViewSurfaceTaker, Wind
         if (view == null) {
             if (showView) {
                 state.view = view = new View(mContext);
-                setColor(view, color, dividerColor, verticalBar, seascape);
+                view.setBackgroundColor(color);
                 view.setTransitionName(state.attributes.transitionName);
                 view.setId(state.attributes.id);
                 visibilityChanged = true;
@@ -1266,7 +1262,7 @@ public class DecorView extends FrameLayout implements RootViewSurfaceTaker, Wind
                 view.setLayoutParams(lp);
             }
             if (showView) {
-                setColor(view, color, dividerColor, verticalBar, seascape);
+                view.setBackgroundColor(color);
             }
         }
         if (visibilityChanged) {
@@ -1299,33 +1295,6 @@ public class DecorView extends FrameLayout implements RootViewSurfaceTaker, Wind
         state.color = color;
     }
 
-    private static void setColor(View v, int color, int dividerColor, boolean verticalBar,
-            boolean seascape) {
-        if (dividerColor != 0) {
-            final Pair<Boolean, Boolean> dir = (Pair<Boolean, Boolean>) v.getTag();
-            if (dir == null || dir.first != verticalBar || dir.second != seascape) {
-                final int size = Math.round(
-                        TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 1,
-                                v.getContext().getResources().getDisplayMetrics()));
-                // Use an inset to make the divider line on the side that faces the app.
-                final InsetDrawable d = new InsetDrawable(new ColorDrawable(color),
-                        verticalBar && !seascape ? size : 0,
-                        !verticalBar ? size : 0,
-                        verticalBar && seascape ? size : 0, 0);
-                v.setBackground(new LayerDrawable(new Drawable[] {
-                        new ColorDrawable(dividerColor), d }));
-                v.setTag(new Pair<>(verticalBar, seascape));
-            } else {
-                final LayerDrawable d = (LayerDrawable) v.getBackground();
-                final InsetDrawable inset = ((InsetDrawable) d.getDrawable(0));
-                ((ColorDrawable) inset.getDrawable()).setColor(dividerColor);
-                ((ColorDrawable) d.getDrawable(1)).setColor(color);
-            }
-        } else {
-            v.setBackgroundColor(color);
-        }
-    }
-
     private void updateColorViewTranslations() {
         // Put the color views back in place when they get moved off the screen
         // due to the the ViewRootImpl panning.
index 2de9537..544afd9 100644 (file)
@@ -233,7 +233,6 @@ public class PhoneWindow extends Window implements MenuBuilder.Callback {
     private int mTextColor = 0;
     int mStatusBarColor = 0;
     int mNavigationBarColor = 0;
-    int mNavigationBarDividerColor = 0;
     private boolean mForcedStatusBarColor = false;
     private boolean mForcedNavigationBarColor = false;
 
@@ -2433,8 +2432,6 @@ public class PhoneWindow extends Window implements MenuBuilder.Callback {
         }
         if (!mForcedNavigationBarColor) {
             mNavigationBarColor = a.getColor(R.styleable.Window_navigationBarColor, 0xFF000000);
-            mNavigationBarDividerColor = a.getColor(R.styleable.Window_navigationBarDividerColor,
-                    0x00000000);
         }
 
         WindowManager.LayoutParams params = getAttributes();
@@ -2456,10 +2453,6 @@ public class PhoneWindow extends Window implements MenuBuilder.Callback {
             decor.setSystemUiVisibility(
                     decor.getSystemUiVisibility() | View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);
         }
-        if (a.getBoolean(R.styleable.Window_windowLightNavigationBar, false)) {
-            decor.setSystemUiVisibility(
-                    decor.getSystemUiVisibility() | View.SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR);
-        }
 
         if (mAlwaysReadCloseOnTouchAttr || getContext().getApplicationInfo().targetSdkVersion
                 >= android.os.Build.VERSION_CODES.HONEYCOMB) {
index 15d593b..8151ceb 100644 (file)
              Corresponds to {@link android.view.Window#setNavigationBarColor(int)}. -->
         <attr name="navigationBarColor" format="color" />
 
-        <!-- @hide
-             Shows 1dp line of the specified color between the navigation bar and the app content.
-             <p>For this to take effect, the window must be drawing the system bar backgrounds with
-             {@link android.R.attr#windowDrawsSystemBarBackgrounds} and the navigation bar must not
-               have been requested to be translucent with
-             {@link android.R.attr#windowTranslucentNavigation}. -->
-        <attr name="navigationBarDividerColor" format="color" />
-
         <!-- The duration, in milliseconds, of the window background fade duration
              when transitioning into or away from an Activity when called with an
              Activity Transition. Corresponds to
              {@link android.R.attr#windowBackground}.
              -->
         <attr name="windowSplashscreenContent" format="reference" />
-
-        <!-- @hide
-             If set, the navigation bar will be drawn such that it is compatible with a light
-             navigation bar background.
-             <p>For this to take effect, the window must be drawing the system bar backgrounds with
-             {@link android.R.attr#windowDrawsSystemBarBackgrounds} and the navigation bar must not
-             have been requested to be translucent with
-             {@link android.R.attr#windowTranslucentNavigation}.
-             Corresponds to setting {@link android.view.View#SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR} on
-             the decor view. -->
-        <attr name="windowLightNavigationBar" format="boolean" />
     </declare-styleable>
 
     <!-- The set of attributes that describe a AlertDialog's theme. -->
index bf0c906..8755e37 100644 (file)
@@ -745,11 +745,6 @@ easier.
         <item name="colorSecondary">@color/secondary_device_default_settings_light</item>
         <item name="colorAccent">@color/accent_device_default_light</item>
         <item name="colorEdgeEffect">@android:color/black</item>
-
-        <!-- Add white nav bar with divider that matches material -->
-        <item name="navigationBarDividerColor">#1f000000</item>
-        <item name="navigationBarColor">@android:color/white</item>
-        <item name="windowLightNavigationBar">true</item>
     </style>
 
     <!-- @hide DeviceDefault theme for a window that should use Settings theme colors