Merge "DO NOT MERGE Log remote exceptions in NotifCollection" into rvc-dev
diff --git a/services/core/java/com/android/server/am/CarUserSwitchingDialog.java b/services/core/java/com/android/server/am/CarUserSwitchingDialog.java
index a6811e3..ea607cb 100644
--- a/services/core/java/com/android/server/am/CarUserSwitchingDialog.java
+++ b/services/core/java/com/android/server/am/CarUserSwitchingDialog.java
@@ -35,6 +35,8 @@
 import android.provider.Settings;
 import android.view.LayoutInflater;
 import android.view.View;
+import android.view.WindowInsets;
+import android.view.WindowManager;
 import android.widget.ImageView;
 import android.widget.TextView;
 
@@ -50,12 +52,19 @@
 final class CarUserSwitchingDialog extends UserSwitchingDialog {
 
     private static final String TAG = "ActivityManagerCarUserSwitchingDialog";
+    private View mView;
 
     public CarUserSwitchingDialog(ActivityManagerService service, Context context, UserInfo oldUser,
             UserInfo newUser, boolean aboveSystem, String switchingFromSystemUserMessage,
             String switchingToSystemUserMessage) {
         super(service, context, oldUser, newUser, aboveSystem, switchingFromSystemUserMessage,
                 switchingToSystemUserMessage);
+
+        // {@link UserSwitchingDialog} uses {@link WindowManager.LayoutParams.TYPE_SYSTEM_ERROR}
+        // when trying to show dialog above system. That window type has been deprecated and since
+        // this is a system dialog, hence, it makes sense to put this in System Dialog Window.
+        // This window also automatically shows status bar.
+        getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_DIALOG);
     }
 
     @Override
@@ -65,7 +74,7 @@
         Resources res = getContext().getResources();
         // Custom view due to alignment and font size requirements
         getContext().setTheme(R.style.Theme_DeviceDefault_Light_Dialog_Alert_UserSwitchingDialog);
-        View view = LayoutInflater.from(getContext()).inflate(
+        mView = LayoutInflater.from(getContext()).inflate(
                 R.layout.car_user_switching_dialog,
                 null);
 
@@ -75,11 +84,11 @@
         if (bitmap != null) {
             CircleFramedDrawable drawable = CircleFramedDrawable.getInstance(bitmap,
                     res.getDimension(R.dimen.car_fullscreen_user_pod_image_avatar_height));
-            ((ImageView) view.findViewById(R.id.user_loading_avatar))
+            ((ImageView) mView.findViewById(R.id.user_loading_avatar))
                     .setImageDrawable(drawable);
         }
 
-        TextView msgView = view.findViewById(R.id.user_loading);
+        TextView msgView = mView.findViewById(R.id.user_loading);
 
         // TODO(b/145132885): use constant from CarSettings
         boolean showInfo = "true".equals(Settings.Global.getString(
@@ -92,7 +101,17 @@
         } else {
             msgView.setText(res.getString(R.string.car_loading_profile));
         }
-        setView(view);
+        setView(mView);
+    }
+
+    @Override
+    public void show() {
+        super.show();
+        hideNavigationBar();
+    }
+
+    private void hideNavigationBar() {
+        mView.getWindowInsetsController().hide(WindowInsets.Type.navigationBars());
     }
 
     /**