Merge "Add setting to hide silent notifs in status bar"
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index 1f9c650..4f0ba58 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -8,6 +8,7 @@
 
     <uses-permission android:name="android.permission.REQUEST_NETWORK_SCORES" />
     <uses-permission android:name="android.permission.WRITE_MEDIA_STORAGE" />
+    <uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE" />
     <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
     <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
     <uses-permission android:name="android.permission.WRITE_SETTINGS" />
diff --git a/src/com/android/settings/development/qstile/DevelopmentTiles.java b/src/com/android/settings/development/qstile/DevelopmentTiles.java
index bb791ab..8f06750 100644
--- a/src/com/android/settings/development/qstile/DevelopmentTiles.java
+++ b/src/com/android/settings/development/qstile/DevelopmentTiles.java
@@ -233,9 +233,22 @@
             return layerTraceEnabled;
         }
 
+        private boolean isSystemUiTracingEnabled() {
+            try {
+                final IStatusBarService statusBarService = IStatusBarService.Stub.asInterface(
+                        ServiceManager.checkService(Context.STATUS_BAR_SERVICE));
+                if (statusBarService != null) {
+                    return statusBarService.isTracing();
+                }
+            } catch (RemoteException e) {
+                Log.e(TAG, "Could not get system ui tracing status." + e.toString());
+            }
+            return false;
+        }
+
         @Override
         protected boolean isEnabled() {
-            return isWindowTraceEnabled() || isLayerTraceEnabled();
+            return isWindowTraceEnabled() || isLayerTraceEnabled() || isSystemUiTracingEnabled();
         }
 
         private void setWindowTraceEnabled(boolean isEnabled) {
@@ -269,10 +282,27 @@
             }
         }
 
+        private void setSystemUiTracing(boolean isEnabled) {
+            try {
+                final IStatusBarService statusBarService = IStatusBarService.Stub.asInterface(
+                        ServiceManager.checkService(Context.STATUS_BAR_SERVICE));
+                if (statusBarService != null) {
+                    if (isEnabled) {
+                        statusBarService.startTracing();
+                    } else {
+                        statusBarService.stopTracing();
+                    }
+                }
+            } catch (RemoteException e) {
+                Log.e(TAG, "Could not set system ui tracing." + e.toString());
+            }
+        }
+
         @Override
         protected void setIsEnabled(boolean isEnabled) {
             setWindowTraceEnabled(isEnabled);
             setLayerTraceEnabled(isEnabled);
+            setSystemUiTracing(isEnabled);
             if (!isEnabled) {
                 mToast.show();
             }
diff --git a/src/com/android/settings/password/ConfirmLockPassword.java b/src/com/android/settings/password/ConfirmLockPassword.java
index a62f77f..a6a1b37 100644
--- a/src/com/android/settings/password/ConfirmLockPassword.java
+++ b/src/com/android/settings/password/ConfirmLockPassword.java
@@ -56,12 +56,16 @@
 
 public class ConfirmLockPassword extends ConfirmDeviceCredentialBaseActivity {
 
-    // The index of the array is isStrongAuth << 1 + isAlpha.
+    // The index of the array is isStrongAuth << 2 + isManagedProfile << 1 + isAlpha.
     private static final int[] DETAIL_TEXTS = new int[] {
         R.string.lockpassword_confirm_your_pin_generic,
         R.string.lockpassword_confirm_your_password_generic,
+        R.string.lockpassword_confirm_your_pin_generic_profile,
+        R.string.lockpassword_confirm_your_password_generic_profile,
         R.string.lockpassword_strong_auth_required_device_pin,
-        R.string.lockpassword_strong_auth_required_device_password
+        R.string.lockpassword_strong_auth_required_device_password,
+        R.string.lockpassword_strong_auth_required_work_pin,
+        R.string.lockpassword_strong_auth_required_work_password
     };
 
     public static class InternalActivity extends ConfirmLockPassword {
@@ -218,8 +222,9 @@
                         : R.string.lockpassword_confirm_your_pin_details_frp;
             }
             boolean isStrongAuthRequired = isStrongAuthRequired();
-            // Map boolean flags to an index by isStrongAuth << 1 + isAlpha.
-            int index = ((isStrongAuthRequired ? 1 : 0) << 1) + (mIsAlpha ? 1 : 0);
+            // Map boolean flags to an index by isStrongAuth << 2 + isManagedProfile << 1 + isAlpha.
+            int index = ((isStrongAuthRequired ? 1 : 0) << 2) + ((mIsManagedProfile ? 1 : 0) << 1)
+                    + (mIsAlpha ? 1 : 0);
             return DETAIL_TEXTS[index];
         }
 
diff --git a/src/com/android/settings/password/ConfirmLockPattern.java b/src/com/android/settings/password/ConfirmLockPattern.java
index 557eae4..d52992f 100644
--- a/src/com/android/settings/password/ConfirmLockPattern.java
+++ b/src/com/android/settings/password/ConfirmLockPattern.java
@@ -239,7 +239,7 @@
                 return R.string.lockpassword_confirm_your_pattern_details_frp;
             }
             final boolean isStrongAuthRequired = isStrongAuthRequired();
-            if (UserManager.get(getActivity()).isManagedProfile(mEffectiveUserId)) {
+            if (mIsManagedProfile) {
                 return isStrongAuthRequired
                         ? R.string.lockpassword_strong_auth_required_work_pattern
                         : R.string.lockpassword_confirm_your_pattern_generic_profile;