Migrate to new WM.LP.flags based translucent decor API.

Update/rename common helper class TranslucentDecor to handle both
apis so behavior is correct on old and new builds.

Bug:10674960
Change-Id: Id3b2d523026e9e4f2f71f0eab404792207c6d8c7
diff --git a/src/com/android/launcher3/Launcher.java b/src/com/android/launcher3/Launcher.java
index f2f4962..d330805 100644
--- a/src/com/android/launcher3/Launcher.java
+++ b/src/com/android/launcher3/Launcher.java
@@ -326,7 +326,7 @@
 
     private BubbleTextView mWaitingForResume;
 
-    protected TransparentBars mTransparentBars;
+    protected TranslucentDecor mTransparentDecor;
 
     private HideFromAccessibilityHelper mHideFromAccessibilityHelper
         = new HideFromAccessibilityHelper();
@@ -426,8 +426,8 @@
         checkForLocaleChange();
         setContentView(R.layout.launcher);
 
-        mTransparentBars = new TransparentBars(findViewById(R.id.launcher));
-        mTransparentBars.requestTransparentBars(true);
+        mTransparentDecor = new TranslucentDecor(findViewById(R.id.launcher));
+        mTransparentDecor.requestTranslucentDecor(true);
 
         setupViews();
         grid.layout(this);
diff --git a/src/com/android/launcher3/TranslucentDecor.java b/src/com/android/launcher3/TranslucentDecor.java
new file mode 100644
index 0000000..b50c022
--- /dev/null
+++ b/src/com/android/launcher3/TranslucentDecor.java
@@ -0,0 +1,82 @@
+/*
+ * Copyright (C) 2013 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.
+ */
+
+package com.android.launcher3;
+
+import android.app.Activity;
+import android.view.View;
+import android.view.Window;
+import android.view.WindowManager;
+
+public class TranslucentDecor {
+    private static final int SYSTEM_UI_FLAG_TRANSPARENT_STATUS = 0x00001000;
+    private static final int SYSTEM_UI_FLAG_TRANSPARENT_NAVIGATION = 0x00002000;
+
+    // Replace with SDK constants when available.
+    public static final int FLAG_TRANSLUCENT_STATUS = 0x04000000;
+    public static final int FLAG_TRANSLUCENT_NAVIGATION = 0x08000000;
+
+    // Behave properly on early K builds.
+    public static final boolean SYSUI_SUPPORTED = !hasSystemUiFlag("ALLOW_TRANSIENT") &&
+            hasSystemUiFlag("TRANSPARENT_STATUS") &&
+            hasSystemUiFlag("TRANSPARENT_NAVIGATION");
+
+    public static final boolean WM_SUPPORTED =
+            hasWindowManagerFlag("TRANSLUCENT_STATUS") &&
+            hasWindowManagerFlag("TRANSLUCENT_NAVIGATION");
+
+    private final View mTarget;
+
+    public TranslucentDecor(View target) {
+        mTarget = target;
+    }
+
+    public void requestTranslucentDecor(boolean translucent) {
+        int sysui = View.SYSTEM_UI_FLAG_LAYOUT_STABLE
+                | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
+                | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION;
+        if (WM_SUPPORTED && mTarget.getContext() instanceof Activity) {
+            Window w = ((Activity) mTarget.getContext()).getWindow();
+            int wmFlags = FLAG_TRANSLUCENT_STATUS | FLAG_TRANSLUCENT_NAVIGATION;
+            if (translucent) {
+                w.addFlags(wmFlags);
+            } else {
+               w.clearFlags(wmFlags);
+            }
+        } else if (SYSUI_SUPPORTED) {  // Remove when droidfood platform is updated
+            if (translucent) {
+                sysui |= SYSTEM_UI_FLAG_TRANSPARENT_STATUS | SYSTEM_UI_FLAG_TRANSPARENT_NAVIGATION;
+            }
+        }
+        mTarget.setSystemUiVisibility(sysui);
+    }
+
+    private static boolean hasWindowManagerFlag(String name) {
+        try {
+            return WindowManager.LayoutParams.class.getField("FLAG_" + name) != null;
+        } catch (NoSuchFieldException e) {
+            return false;
+        }
+    }
+
+    private static boolean hasSystemUiFlag(String name) {
+        try {
+            return View.class.getField("SYSTEM_UI_FLAG_" + name) != null;
+        } catch (NoSuchFieldException e) {
+            return false;
+        }
+    }
+}
diff --git a/src/com/android/launcher3/TransparentBars.java b/src/com/android/launcher3/TransparentBars.java
deleted file mode 100644
index a12da9e..0000000
--- a/src/com/android/launcher3/TransparentBars.java
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * Copyright (C) 2013 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.
- */
-
-package com.android.launcher3;
-
-import android.view.View;
-
-public class TransparentBars {
-    private static final int SYSTEM_UI_FLAG_TRANSPARENT_STATUS = 0x00001000;
-    private static final int SYSTEM_UI_FLAG_TRANSPARENT_NAVIGATION = 0x00002000;
-
-    // Behave properly on early K builds.  Replace with api check once sdk is baked.
-    public static final boolean SUPPORTED = !hasSystemUiFlag("ALLOW_TRANSIENT")
-            && hasSystemUiFlag("TRANSPARENT_STATUS")
-            && hasSystemUiFlag("TRANSPARENT_NAVIGATION");
-
-    private final View mTarget;
-
-    public TransparentBars(View target) {
-        mTarget = target;
-    }
-
-    public void requestTransparentBars(boolean transparent) {
-        if (!SUPPORTED) return;
-        int flags = View.SYSTEM_UI_FLAG_LAYOUT_STABLE
-                  | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
-                  | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION;
-        if (transparent) {
-            flags |= SYSTEM_UI_FLAG_TRANSPARENT_STATUS | SYSTEM_UI_FLAG_TRANSPARENT_NAVIGATION;
-        }
-        mTarget.setSystemUiVisibility(flags);
-    }
-
-    private static boolean hasSystemUiFlag(String name) {
-        try {
-            return View.class.getField("SYSTEM_UI_FLAG_" + name) != null;
-        } catch (NoSuchFieldException e) {
-            return false;
-        }
-    }
-}
diff --git a/src/com/android/launcher3/WallpaperCropActivity.java b/src/com/android/launcher3/WallpaperCropActivity.java
index 703db9a..78c8964 100644
--- a/src/com/android/launcher3/WallpaperCropActivity.java
+++ b/src/com/android/launcher3/WallpaperCropActivity.java
@@ -102,8 +102,8 @@
                         cropImageAndSetWallpaper(imageUri, null, finishActivityWhenDone);
                     }
                 });
-        TransparentBars transparentBars = new TransparentBars(findViewById(R.id.wallpaper_root));
-        transparentBars.requestTransparentBars(true);
+        TranslucentDecor transparentDecor = new TranslucentDecor(findViewById(R.id.wallpaper_root));
+        transparentDecor.requestTranslucentDecor(true);
     }
 
     public boolean enableRotation() {
diff --git a/src/com/android/launcher3/WallpaperPickerActivity.java b/src/com/android/launcher3/WallpaperPickerActivity.java
index 9702a3a..82c9977 100644
--- a/src/com/android/launcher3/WallpaperPickerActivity.java
+++ b/src/com/android/launcher3/WallpaperPickerActivity.java
@@ -181,8 +181,8 @@
     protected void init() {
         setContentView(R.layout.wallpaper_picker);
         final WallpaperRootView root = (WallpaperRootView) findViewById(R.id.wallpaper_root);
-        TransparentBars transparentBars = new TransparentBars(root);
-        transparentBars.requestTransparentBars(true);
+        TranslucentDecor transparentDecor = new TranslucentDecor(root);
+        transparentDecor.requestTranslucentDecor(true);
 
         mCropView = (CropView) findViewById(R.id.cropView);
         mWallpaperStrip = findViewById(R.id.wallpaper_strip);