Security fix for VPN app killable via lockscreen. am: 0fddfa039d

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/27198359

Change-Id: I1f0a54f8fa7addf3915cb16a60c8f31dbabad398
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
diff --git a/packages/SystemUI/src/com/android/systemui/qs/QSFgsManagerFooter.java b/packages/SystemUI/src/com/android/systemui/qs/QSFgsManagerFooter.java
index ba6b1dd..3681c2c 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/QSFgsManagerFooter.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/QSFgsManagerFooter.java
@@ -30,6 +30,7 @@
 import com.android.systemui.R;
 import com.android.systemui.dagger.qualifiers.Background;
 import com.android.systemui.dagger.qualifiers.Main;
+import com.android.systemui.plugins.ActivityStarter;
 import com.android.systemui.qs.dagger.QSScope;
 
 import java.util.concurrent.Executor;
@@ -51,6 +52,7 @@
     private final Context mContext;
     private final Executor mMainExecutor;
     private final Executor mExecutor;
+    private final ActivityStarter mActivityStarter;
 
     private final FgsManagerController mFgsManagerController;
 
@@ -69,7 +71,8 @@
     @Inject
     QSFgsManagerFooter(@Named(QS_FGS_MANAGER_FOOTER_VIEW) View rootView,
             @Main Executor mainExecutor, @Background Executor executor,
-            FgsManagerController fgsManagerController) {
+            FgsManagerController fgsManagerController,
+            ActivityStarter activityStarter) {
         mRootView = rootView;
         mFooterText = mRootView.findViewById(R.id.footer_text);
         mTextContainer = mRootView.findViewById(R.id.fgs_text_container);
@@ -81,6 +84,7 @@
         mMainExecutor = mainExecutor;
         mExecutor = executor;
         mFgsManagerController = fgsManagerController;
+        mActivityStarter = activityStarter;
     }
 
     /**
@@ -128,7 +132,14 @@
 
     @Override
     public void onClick(View view) {
-        mFgsManagerController.showDialog(mRootView);
+        mActivityStarter.dismissKeyguardThenExecute(
+            () -> {
+                mFgsManagerController.showDialog(mRootView);
+                return false /* if the dismiss should be deferred */;
+            },
+            null /* cancelAction */,
+            true /* afterKeyguardGone */
+        );
     }
 
     public void refreshState() {