Check for the STATUS_BAR permission for the system UI properties.

If the app doesn't have that permission, just mask out the bits.
Also makes the systemUiVisibility field visible in hierarchyviewer.

Change-Id: Ic3d3a3aed96b5c6448832755b4b2e6175117e5be
diff --git a/services/java/com/android/server/WindowManagerService.java b/services/java/com/android/server/WindowManagerService.java
index 779e0ad..7c79b8a 100644
--- a/services/java/com/android/server/WindowManagerService.java
+++ b/services/java/com/android/server/WindowManagerService.java
@@ -47,6 +47,7 @@
 import android.Manifest;
 import android.app.ActivityManagerNative;
 import android.app.IActivityManager;
+import android.app.StatusBarManager;
 import android.app.admin.DevicePolicyManager;
 import android.content.BroadcastReceiver;
 import android.content.ClipData;
@@ -2758,6 +2759,15 @@
         boolean displayed = false;
         boolean inTouchMode;
         boolean configChanged;
+
+        // if they don't have this permission, mask out the status bar bits
+        if (attrs != null) {
+            if (mContext.checkCallingOrSelfPermission(android.Manifest.permission.STATUS_BAR)
+                    != PackageManager.PERMISSION_GRANTED) {
+                attrs.systemUiVisibility &= ~StatusBarManager.DISABLE_MASK;
+                attrs.subtreeSystemUiVisibility &= ~StatusBarManager.DISABLE_MASK;
+            }
+        }
         long origId = Binder.clearCallingIdentity();
 
         synchronized(mWindowMap) {