Bug 1394378 - Wrap drawable to support tinting across different API levels. r?nechen draft
authorJing-wei Wu <topwu.tw@gmail.com>
Wed, 06 Sep 2017 10:15:14 +0800
changeset 659430 e471cbacdfd0d69fdb3d781a87baf674dd9683be
parent 659429 44ae4787af2e0072fe9bc569874cf5e91b609c40
child 729990 108780fc1b069258233f188bd16887aded56554b
push id78129
push userbmo:topwu.tw@gmail.com
push dateWed, 06 Sep 2017 02:16:31 +0000
reviewersnechen
bugs1394378
milestone57.0a1
Bug 1394378 - Wrap drawable to support tinting across different API levels. r?nechen According to the comment of `DrawableCompat.wrap(Drawable)`[1], a drawable should be wrapped to support tinting across the different API levels. [1] https://android.googlesource.com/platform/frameworks/support/+/android-6.0.1_r67/v4/java/android/support/v4/graphics/drawable/DrawableCompat.java#329 MozReview-Commit-ID: JJ4alkFF1og
mobile/android/base/java/org/mozilla/gecko/home/TabMenuStripLayout.java
--- a/mobile/android/base/java/org/mozilla/gecko/home/TabMenuStripLayout.java
+++ b/mobile/android/base/java/org/mozilla/gecko/home/TabMenuStripLayout.java
@@ -65,17 +65,17 @@ class TabMenuStripLayout extends ThemedL
         tabContentStart = a.getDimensionPixelSize(R.styleable.TabMenuStrip_tabsMarginLeft, 0);
         activeTextColor = a.getColor(R.styleable.TabMenuStrip_activeTextColor,
                                      ResourcesCompat.getColor(getResources(), R.color.text_and_tabs_tray_grey, null));
         inactiveTextColor = a.getColorStateList(R.styleable.TabMenuStrip_inactiveTextColor);
         stripColor = a.getColorStateList(R.styleable.TabMenuStrip_stripColor);
         a.recycle();
 
         if (stripResId != -1) {
-            strip = getResources().getDrawable(stripResId);
+            strip = ResourcesCompat.getDrawable(getResources(), stripResId, null);
 
             if (stripColor != null) {
                 final int backgroundTintColor = stripColor.getColorForState(getDrawableState(), Color.TRANSPARENT);
                 DrawableCompat.setTint(strip, backgroundTintColor);
             }
         }
 
         setWillNotDraw(false);
@@ -292,16 +292,17 @@ class TabMenuStripLayout extends ThemedL
 
     @Override
     public void setPrivateMode(boolean isPrivate) {
         final boolean modeChanged = (isPrivateMode() != isPrivate);
 
         super.setPrivateMode(isPrivate);
 
         if (modeChanged && stripColor != null) {
+            strip = DrawableCompat.wrap(strip);
             final int backgroundTintColor = stripColor.getColorForState(getDrawableState(), Color.TRANSPARENT);
             DrawableCompat.setTint(strip, backgroundTintColor);
         }
     }
 
     private class ViewClickListener implements OnClickListener {
         private final int mIndex;