summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--packages/PackageInstaller/src/com/android/packageinstaller/v2/ui/fragments/AnonymousSourceFragment.java26
-rw-r--r--packages/PackageInstaller/src/com/android/packageinstaller/v2/ui/fragments/ExternalSourcesBlockedFragment.java27
-rw-r--r--packages/PackageInstaller/src/com/android/packageinstaller/v2/ui/fragments/InstallConfirmationFragment.java26
3 files changed, 75 insertions, 4 deletions
diff --git a/packages/PackageInstaller/src/com/android/packageinstaller/v2/ui/fragments/AnonymousSourceFragment.java b/packages/PackageInstaller/src/com/android/packageinstaller/v2/ui/fragments/AnonymousSourceFragment.java
index 679f696ff59f..b29cb2ab308c 100644
--- a/packages/PackageInstaller/src/com/android/packageinstaller/v2/ui/fragments/AnonymousSourceFragment.java
+++ b/packages/PackageInstaller/src/com/android/packageinstaller/v2/ui/fragments/AnonymousSourceFragment.java
@@ -34,7 +34,10 @@ import com.android.packageinstaller.v2.ui.InstallActionListener;
public class AnonymousSourceFragment extends DialogFragment {
public static String TAG = AnonymousSourceFragment.class.getSimpleName();
+ @NonNull
private InstallActionListener mInstallActionListener;
+ @NonNull
+ private AlertDialog mDialog;
@Override
public void onAttach(@NonNull Context context) {
@@ -45,7 +48,7 @@ public class AnonymousSourceFragment extends DialogFragment {
@NonNull
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
- return new AlertDialog.Builder(getActivity())
+ mDialog = new AlertDialog.Builder(requireContext())
.setMessage(R.string.anonymous_source_warning)
.setPositiveButton(R.string.anonymous_source_continue,
((dialog, which) -> mInstallActionListener.onPositiveResponse(
@@ -53,6 +56,7 @@ public class AnonymousSourceFragment extends DialogFragment {
.setNegativeButton(R.string.cancel,
((dialog, which) -> mInstallActionListener.onNegativeResponse(
InstallStage.STAGE_USER_ACTION_REQUIRED))).create();
+ return mDialog;
}
@Override
@@ -60,4 +64,24 @@ public class AnonymousSourceFragment extends DialogFragment {
super.onCancel(dialog);
mInstallActionListener.onNegativeResponse(InstallStage.STAGE_USER_ACTION_REQUIRED);
}
+
+ @Override
+ public void onStart() {
+ super.onStart();
+ mDialog.getButton(DialogInterface.BUTTON_POSITIVE).setFilterTouchesWhenObscured(true);
+ }
+
+ @Override
+ public void onPause() {
+ super.onPause();
+ // This prevents tapjacking since an overlay activity started in front of Pia will
+ // cause Pia to be paused.
+ mDialog.getButton(DialogInterface.BUTTON_POSITIVE).setEnabled(false);
+ }
+
+ @Override
+ public void onResume() {
+ super.onResume();
+ mDialog.getButton(DialogInterface.BUTTON_POSITIVE).setEnabled(true);
+ }
}
diff --git a/packages/PackageInstaller/src/com/android/packageinstaller/v2/ui/fragments/ExternalSourcesBlockedFragment.java b/packages/PackageInstaller/src/com/android/packageinstaller/v2/ui/fragments/ExternalSourcesBlockedFragment.java
index 49901de96bc4..2314d6b3b47e 100644
--- a/packages/PackageInstaller/src/com/android/packageinstaller/v2/ui/fragments/ExternalSourcesBlockedFragment.java
+++ b/packages/PackageInstaller/src/com/android/packageinstaller/v2/ui/fragments/ExternalSourcesBlockedFragment.java
@@ -35,8 +35,12 @@ import com.android.packageinstaller.v2.ui.InstallActionListener;
public class ExternalSourcesBlockedFragment extends DialogFragment {
private final String TAG = ExternalSourcesBlockedFragment.class.getSimpleName();
+ @NonNull
private final InstallUserActionRequired mDialogData;
+ @NonNull
private InstallActionListener mInstallActionListener;
+ @NonNull
+ private AlertDialog mDialog;
public ExternalSourcesBlockedFragment(InstallUserActionRequired dialogData) {
mDialogData = dialogData;
@@ -51,7 +55,7 @@ public class ExternalSourcesBlockedFragment extends DialogFragment {
@NonNull
@Override
public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) {
- return new AlertDialog.Builder(requireContext())
+ mDialog = new AlertDialog.Builder(requireContext())
.setTitle(mDialogData.getAppLabel())
.setIcon(mDialogData.getAppIcon())
.setMessage(R.string.untrusted_external_source_warning)
@@ -62,6 +66,7 @@ public class ExternalSourcesBlockedFragment extends DialogFragment {
(dialog, which) -> mInstallActionListener.onNegativeResponse(
mDialogData.getStageCode()))
.create();
+ return mDialog;
}
@Override
@@ -69,4 +74,24 @@ public class ExternalSourcesBlockedFragment extends DialogFragment {
super.onCancel(dialog);
mInstallActionListener.onNegativeResponse(mDialogData.getStageCode());
}
+
+ @Override
+ public void onStart() {
+ super.onStart();
+ mDialog.getButton(DialogInterface.BUTTON_POSITIVE).setFilterTouchesWhenObscured(true);
+ }
+
+ @Override
+ public void onPause() {
+ super.onPause();
+ // This prevents tapjacking since an overlay activity started in front of Pia will
+ // cause Pia to be paused.
+ mDialog.getButton(DialogInterface.BUTTON_POSITIVE).setEnabled(false);
+ }
+
+ @Override
+ public void onResume() {
+ super.onResume();
+ mDialog.getButton(DialogInterface.BUTTON_POSITIVE).setEnabled(true);
+ }
}
diff --git a/packages/PackageInstaller/src/com/android/packageinstaller/v2/ui/fragments/InstallConfirmationFragment.java b/packages/PackageInstaller/src/com/android/packageinstaller/v2/ui/fragments/InstallConfirmationFragment.java
index 25363d0b5f7b..5ca02eae5167 100644
--- a/packages/PackageInstaller/src/com/android/packageinstaller/v2/ui/fragments/InstallConfirmationFragment.java
+++ b/packages/PackageInstaller/src/com/android/packageinstaller/v2/ui/fragments/InstallConfirmationFragment.java
@@ -42,6 +42,8 @@ public class InstallConfirmationFragment extends DialogFragment {
private final InstallUserActionRequired mDialogData;
@NonNull
private InstallActionListener mInstallActionListener;
+ @NonNull
+ private AlertDialog mDialog;
public InstallConfirmationFragment(@NonNull InstallUserActionRequired dialogData) {
mDialogData = dialogData;
@@ -58,7 +60,7 @@ public class InstallConfirmationFragment extends DialogFragment {
public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) {
View dialogView = getLayoutInflater().inflate(R.layout.install_content_view, null);
- AlertDialog dialog = new AlertDialog.Builder(requireContext())
+ mDialog = new AlertDialog.Builder(requireContext())
.setIcon(mDialogData.getAppIcon())
.setTitle(mDialogData.getAppLabel())
.setView(dialogView)
@@ -84,7 +86,7 @@ public class InstallConfirmationFragment extends DialogFragment {
}
viewToEnable.setVisibility(View.VISIBLE);
- return dialog;
+ return mDialog;
}
@Override
@@ -92,4 +94,24 @@ public class InstallConfirmationFragment extends DialogFragment {
super.onCancel(dialog);
mInstallActionListener.onNegativeResponse(mDialogData.getStageCode());
}
+
+ @Override
+ public void onStart() {
+ super.onStart();
+ mDialog.getButton(DialogInterface.BUTTON_POSITIVE).setFilterTouchesWhenObscured(true);
+ }
+
+ @Override
+ public void onPause() {
+ super.onPause();
+ // This prevents tapjacking since an overlay activity started in front of Pia will
+ // cause Pia to be paused.
+ mDialog.getButton(DialogInterface.BUTTON_POSITIVE).setEnabled(false);
+ }
+
+ @Override
+ public void onResume() {
+ super.onResume();
+ mDialog.getButton(DialogInterface.BUTTON_POSITIVE).setEnabled(true);
+ }
}