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() {