X-Git-Url: https://gitweb.stoutner.com/?p=PrivacyBrowserAndroid.git;a=blobdiff_plain;f=app%2Fsrc%2Fmain%2Fjava%2Fcom%2Fstoutner%2Fprivacybrowser%2Fdialogs%2FPinnedMismatchDialog.java;h=9694c0ac4d9db578ee0e122eeb5775071339bc83;hp=fbf1f90fb143385b97842f671b79014229a7fc7c;hb=3f3b7c8fbe988fe730a5fbb53169489566655595;hpb=fa3b8b382eb5ed86c598e3b126d1ef5dd117c5be diff --git a/app/src/main/java/com/stoutner/privacybrowser/dialogs/PinnedMismatchDialog.java b/app/src/main/java/com/stoutner/privacybrowser/dialogs/PinnedMismatchDialog.java index fbf1f90f..9694c0ac 100644 --- a/app/src/main/java/com/stoutner/privacybrowser/dialogs/PinnedMismatchDialog.java +++ b/app/src/main/java/com/stoutner/privacybrowser/dialogs/PinnedMismatchDialog.java @@ -59,6 +59,11 @@ import androidx.fragment.app.DialogFragment; // The AndroidX dialog fragment mu import androidx.viewpager.widget.PagerAdapter; public class PinnedMismatchDialog extends DialogFragment { + // The public interface is used to send information back to the parent activity. + public interface PinnedMismatchListener { + void pinnedErrorGoBack(); + } + // Declare the class variables. private PinnedMismatchListener pinnedMismatchListener; private NestedScrollWebView nestedScrollWebView; @@ -71,19 +76,12 @@ public class PinnedMismatchDialog extends DialogFragment { private Date currentSslStartDate; private Date currentSslEndDate; - // The public interface is used to send information back to the parent activity. - public interface PinnedMismatchListener { - void onPinnedMismatchBack(); - - void onPinnedMismatchProceed(); - } - - // Check to make sure that the parent activity implements the listener. + @Override public void onAttach(Context context) { // Run the default commands. super.onAttach(context); - // Get a handle for `PinnedSslCertificateMismatchListener` from the launching context. + // Get a handle for the listener from the launching context. pinnedMismatchListener = (PinnedMismatchListener) context; } @@ -225,16 +223,21 @@ public class PinnedMismatchDialog extends DialogFragment { } }); - // Setup the negative button. + // Setup the back button. dialogBuilder.setNegativeButton(R.string.back, (DialogInterface dialog, int which) -> { - // Call the `onSslMismatchBack` public interface to send the `WebView` back one page. - pinnedMismatchListener.onPinnedMismatchBack(); + if (nestedScrollWebView.canGoBack()) { // There is a back page in the history. + // Invoke the navigate history listener in the calling activity. These commands cannot be run here because they need access to `applyDomainSettings()`. + pinnedMismatchListener.pinnedErrorGoBack(); + } else { // There are no pages to go back to. + // Load a blank page + nestedScrollWebView.loadUrl(""); + } }); - // Setup the positive button. + // Setup the proceed button. dialogBuilder.setPositiveButton(R.string.proceed, (DialogInterface dialog, int which) -> { - // Call the `onSslMismatchProceed` public interface. - pinnedMismatchListener.onPinnedMismatchProceed(); + // Do not check the pinned information for this domain again until the domain changes. + nestedScrollWebView.setIgnorePinnedDomainInformation(true); }); // Set the title.