From 4efdd567eab0e00d6df71c62c2b71751f2ba34a0 Mon Sep 17 00:00:00 2001 From: Tarandeep Singh Date: Wed, 6 Sep 2017 22:16:12 +0000 Subject: [PATCH] Revert "Make settings themed apps have light nav" 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 --- .../com/android/internal/policy/DecorView.java | 43 +++------------------- .../com/android/internal/policy/PhoneWindow.java | 7 ---- core/res/res/values/attrs.xml | 19 ---------- core/res/res/values/themes_device_defaults.xml | 5 --- 4 files changed, 6 insertions(+), 68 deletions(-) diff --git a/core/java/com/android/internal/policy/DecorView.java b/core/java/com/android/internal/policy/DecorView.java index dafa68ee095c..0d962eb424f6 100644 --- a/core/java/com/android/internal/policy/DecorView.java +++ b/core/java/com/android/internal/policy/DecorView.java @@ -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 dir = (Pair) 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. diff --git a/core/java/com/android/internal/policy/PhoneWindow.java b/core/java/com/android/internal/policy/PhoneWindow.java index 2de95372f62c..544afd993b37 100644 --- a/core/java/com/android/internal/policy/PhoneWindow.java +++ b/core/java/com/android/internal/policy/PhoneWindow.java @@ -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) { diff --git a/core/res/res/values/attrs.xml b/core/res/res/values/attrs.xml index 15d593b9ce54..8151ceb26407 100644 --- a/core/res/res/values/attrs.xml +++ b/core/res/res/values/attrs.xml @@ -2055,14 +2055,6 @@ Corresponds to {@link android.view.Window#setNavigationBarColor(int)}. --> - - - - - - diff --git a/core/res/res/values/themes_device_defaults.xml b/core/res/res/values/themes_device_defaults.xml index bf0c90660392..8755e37f105f 100644 --- a/core/res/res/values/themes_device_defaults.xml +++ b/core/res/res/values/themes_device_defaults.xml @@ -745,11 +745,6 @@ easier. @color/secondary_device_default_settings_light @color/accent_device_default_light @android:color/black - - - #1f000000 - @android:color/white - true