Index: base/android/java/src/org/chromium/base/ApiCompatibilityUtils.java |
diff --git a/base/android/java/src/org/chromium/base/ApiCompatibilityUtils.java b/base/android/java/src/org/chromium/base/ApiCompatibilityUtils.java |
index 3df7b923a322265079b550209763384cdc168988..76d73967d49c891b45f4552ea388c0c86cf9f5d4 100644 |
--- a/base/android/java/src/org/chromium/base/ApiCompatibilityUtils.java |
+++ b/base/android/java/src/org/chromium/base/ApiCompatibilityUtils.java |
@@ -349,6 +349,7 @@ public class ApiCompatibilityUtils { |
/** |
* @see android.view.Window#setStatusBarColor(int color). |
+ * TODO(ianwen): remove this method after downstream rolling. |
*/ |
public static void setStatusBarColor(Activity activity, int statusBarColor) { |
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { |
@@ -365,6 +366,22 @@ public class ApiCompatibilityUtils { |
} |
/** |
+ * @see android.view.Window#setStatusBarColor(int color). |
+ */ |
+ public static void setStatusBarColor(Window window, int statusBarColor) { |
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { |
+ // If both system bars are black, we can remove these from our layout, |
+ // removing or shrinking the SurfaceFlinger overlay required for our views. |
+ if (statusBarColor == Color.BLACK && window.getNavigationBarColor() == Color.BLACK) { |
+ window.clearFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS); |
+ } else { |
+ window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS); |
+ } |
+ window.setStatusBarColor(statusBarColor); |
+ } |
+ } |
+ |
+ /** |
* @see android.content.res.Resources#getDrawable(int id). |
*/ |
@SuppressWarnings("deprecation") |