Add toast when user tries to leave lock-to-app

The toast will describe how to exit when entered normally, but when
entered by a DPM whitelisted app it will just notify them they are in
the mode.

Bug: 15780115
Change-Id: I75ac8540c31a75ac68e34b3b5c8260e191894b39
diff --git a/services/core/java/com/android/server/am/ActivityStackSupervisor.java b/services/core/java/com/android/server/am/ActivityStackSupervisor.java
index dbd3638..15bae9b 100644
--- a/services/core/java/com/android/server/am/ActivityStackSupervisor.java
+++ b/services/core/java/com/android/server/am/ActivityStackSupervisor.java
@@ -262,6 +262,9 @@
     /** If non-null then the task specified remains in front and no other tasks may be started
      * until the task exits or #stopLockTaskMode() is called. */
     TaskRecord mLockTaskModeTask;
+    /** Whether lock task has been entered by an authorized app and cannot
+     * be exited. */
+    private boolean mLockTaskIsLocked;
     /**
      * Notifies the user when entering/exiting lock-task.
      */
@@ -1670,6 +1673,7 @@
                         : findActivityLocked(intent, r.info);
                 if (intentActivity != null) {
                     if (isLockTaskModeViolation(intentActivity.task)) {
+                        showLockTaskToast();
                         Slog.e(TAG, "moveTaskToFront: Attempt to violate Lock Task Mode");
                         return ActivityManager.START_RETURN_LOCK_TASK_MODE_VIOLATION;
                     }
@@ -3028,7 +3032,11 @@
         return list;
     }
 
-    void setLockTaskModeLocked(TaskRecord task, boolean showHomeRecents) {
+    void showLockTaskToast() {
+        mLockTaskNotify.showToast(mLockTaskIsLocked);
+    }
+
+    void setLockTaskModeLocked(TaskRecord task, boolean isLocked) {
         if (task == null) {
             // Take out of lock task mode if necessary
             if (mLockTaskModeTask != null) {
@@ -3052,7 +3060,7 @@
         lockTaskMsg.obj = mLockTaskModeTask.intent.getComponent().getPackageName();
         lockTaskMsg.arg1 = mLockTaskModeTask.userId;
         lockTaskMsg.what = LOCK_TASK_START_MSG;
-        lockTaskMsg.arg2 = showHomeRecents ? 1 : 0;
+        lockTaskMsg.arg2 = !isLocked ? 1 : 0;
         mHandler.sendMessage(lockTaskMsg);
     }