Merge "Fix right-most navbar icon tinting mismatch" into pi-dev
diff --git a/packages/SystemUI/res/drawable-hdpi/ic_sysbar_accessibility_button.png b/packages/SystemUI/res/drawable-hdpi/ic_sysbar_accessibility_button.png
deleted file mode 100644
index 0615668..0000000
--- a/packages/SystemUI/res/drawable-hdpi/ic_sysbar_accessibility_button.png
+++ /dev/null
Binary files differ
diff --git a/packages/SystemUI/res/drawable-hdpi/ic_sysbar_accessibility_button_dark.png b/packages/SystemUI/res/drawable-hdpi/ic_sysbar_accessibility_button_dark.png
deleted file mode 100644
index 839e5ed..0000000
--- a/packages/SystemUI/res/drawable-hdpi/ic_sysbar_accessibility_button_dark.png
+++ /dev/null
Binary files differ
diff --git a/packages/SystemUI/res/drawable-mdpi/ic_sysbar_accessibility_button.png b/packages/SystemUI/res/drawable-mdpi/ic_sysbar_accessibility_button.png
deleted file mode 100644
index 1480c865..0000000
--- a/packages/SystemUI/res/drawable-mdpi/ic_sysbar_accessibility_button.png
+++ /dev/null
Binary files differ
diff --git a/packages/SystemUI/res/drawable-mdpi/ic_sysbar_accessibility_button_dark.png b/packages/SystemUI/res/drawable-mdpi/ic_sysbar_accessibility_button_dark.png
deleted file mode 100644
index 66e11fb..0000000
--- a/packages/SystemUI/res/drawable-mdpi/ic_sysbar_accessibility_button_dark.png
+++ /dev/null
Binary files differ
diff --git a/packages/SystemUI/res/drawable-xhdpi/ic_sysbar_accessibility_button.png b/packages/SystemUI/res/drawable-xhdpi/ic_sysbar_accessibility_button.png
deleted file mode 100644
index d2fe0c3..0000000
--- a/packages/SystemUI/res/drawable-xhdpi/ic_sysbar_accessibility_button.png
+++ /dev/null
Binary files differ
diff --git a/packages/SystemUI/res/drawable-xhdpi/ic_sysbar_accessibility_button_dark.png b/packages/SystemUI/res/drawable-xhdpi/ic_sysbar_accessibility_button_dark.png
deleted file mode 100644
index 5923269..0000000
--- a/packages/SystemUI/res/drawable-xhdpi/ic_sysbar_accessibility_button_dark.png
+++ /dev/null
Binary files differ
diff --git a/packages/SystemUI/res/drawable-xxhdpi/ic_sysbar_accessibility_button.png b/packages/SystemUI/res/drawable-xxhdpi/ic_sysbar_accessibility_button.png
deleted file mode 100644
index d0196e5..0000000
--- a/packages/SystemUI/res/drawable-xxhdpi/ic_sysbar_accessibility_button.png
+++ /dev/null
Binary files differ
diff --git a/packages/SystemUI/res/drawable-xxhdpi/ic_sysbar_accessibility_button_dark.png b/packages/SystemUI/res/drawable-xxhdpi/ic_sysbar_accessibility_button_dark.png
deleted file mode 100644
index d3a2b39..0000000
--- a/packages/SystemUI/res/drawable-xxhdpi/ic_sysbar_accessibility_button_dark.png
+++ /dev/null
Binary files differ
diff --git a/packages/SystemUI/res/drawable-xxxhdpi/ic_sysbar_accessibility_button.png b/packages/SystemUI/res/drawable-xxxhdpi/ic_sysbar_accessibility_button.png
deleted file mode 100644
index 726643c..0000000
--- a/packages/SystemUI/res/drawable-xxxhdpi/ic_sysbar_accessibility_button.png
+++ /dev/null
Binary files differ
diff --git a/packages/SystemUI/res/drawable-xxxhdpi/ic_sysbar_accessibility_button_dark.png b/packages/SystemUI/res/drawable-xxxhdpi/ic_sysbar_accessibility_button_dark.png
deleted file mode 100644
index 31078f6..0000000
--- a/packages/SystemUI/res/drawable-xxxhdpi/ic_sysbar_accessibility_button_dark.png
+++ /dev/null
Binary files differ
diff --git a/packages/SystemUI/res/drawable/ic_sysbar_accessibility_button.xml b/packages/SystemUI/res/drawable/ic_sysbar_accessibility_button.xml
new file mode 100644
index 0000000..1603eba
--- /dev/null
+++ b/packages/SystemUI/res/drawable/ic_sysbar_accessibility_button.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2018 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+        android:width="24dp"
+        android:height="24dp"
+        android:viewportWidth="24"
+        android:viewportHeight="24">
+    <path
+        android:pathData="M20.5,6c-2.61,0.7 -5.67,1 -8.5,1S6.11,6.7 3.5,6L3,8c1.86,0.5 4,0.83 6,1v13h2v-6h2v6h2V9c2,-0.17 4.14,-0.5 6,-1L20.5,6zM12,6c1.1,0 2,-0.9 2,-2s-0.9,-2 -2,-2s-2,0.9 -2,2S10.9,6 12,6z"
+        android:fillColor="?attr/singleToneColor"/>
+</vector>
\ No newline at end of file
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarView.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarView.java
index 84582b0..f216695 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarView.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarView.java
@@ -424,13 +424,16 @@
             mRecentIcon = getDrawable(ctx,
                     R.drawable.ic_sysbar_recent, R.drawable.ic_sysbar_recent_dark);
             mMenuIcon = getDrawable(ctx, R.drawable.ic_sysbar_menu, R.drawable.ic_sysbar_menu_dark);
-            mAccessibilityIcon = getDrawable(ctx, R.drawable.ic_sysbar_accessibility_button,
-                    R.drawable.ic_sysbar_accessibility_button_dark);
 
             int dualToneDarkTheme = Utils.getThemeAttr(ctx, R.attr.darkIconTheme);
             int dualToneLightTheme = Utils.getThemeAttr(ctx, R.attr.lightIconTheme);
             Context darkContext = new ContextThemeWrapper(ctx, dualToneDarkTheme);
             Context lightContext = new ContextThemeWrapper(ctx, dualToneLightTheme);
+
+            mAccessibilityIcon = getDrawable(darkContext, lightContext,
+                    R.drawable.ic_sysbar_accessibility_button,
+                    R.drawable.ic_sysbar_accessibility_button);
+
             mImeIcon = getDrawable(darkContext, lightContext,
                     R.drawable.ic_ime_switcher_default, R.drawable.ic_ime_switcher_default);
 
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/TintedKeyButtonDrawable.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/TintedKeyButtonDrawable.java
index 0616ffc..4d33dec 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/TintedKeyButtonDrawable.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/TintedKeyButtonDrawable.java
@@ -17,6 +17,7 @@
 package com.android.systemui.statusbar.policy;
 
 import android.annotation.ColorInt;
+import android.graphics.Color;
 import android.graphics.drawable.Drawable;
 
 import com.android.internal.graphics.ColorUtils;
@@ -49,16 +50,21 @@
     public void setDarkIntensity(float intensity) {
         // Duplicate intensity scaling from KeyButtonDrawable
         mDarkIntensity = intensity;
-        int intermediateColor = ColorUtils.compositeColors(
-                setAlphaFloat(mDarkColor, intensity),
-                setAlphaFloat(mLightColor,1f - intensity));
+
+        // Dark and light colors may have an alpha component
+        final int intermediateColor = ColorUtils.compositeColors(
+                blendAlpha(mDarkColor, intensity),
+                blendAlpha(mLightColor, (1f - intensity)));
+
         getDrawable(0).setTint(intermediateColor);
         invalidateSelf();
     }
 
-    private int setAlphaFloat(int color, float alpha) {
+    private int blendAlpha(int color, float alpha) {
+        final float newAlpha = alpha < 0f ? 0f : (alpha > 1f ? 1f : alpha);
+        final float colorAlpha = Color.alpha(color) / 255f;
+        final int alphaInt = (int) (255 * newAlpha * colorAlpha); // Blend by multiplying
         // Ensure alpha is clamped [0-255] or ColorUtils will crash
-        final int alphaInt = alpha > 1f ? 255 : (alpha < 0f ? 0 : ((int) alpha*255));
         return ColorUtils.setAlphaComponent(color, alphaInt);
     }