]> gitweb.stoutner.com Git - PrivacyBrowserAndroid.git/blobdiff - app/src/main/java/com/stoutner/privacybrowser/dialogs/HttpAuthenticationDialog.kt
Fix a crash when restarting if the pinned mismatch dialog is displayed. https:/...
[PrivacyBrowserAndroid.git] / app / src / main / java / com / stoutner / privacybrowser / dialogs / HttpAuthenticationDialog.kt
index c8e84e6f8b430250a5c0fcef0be49d02d6f3208a..b2c749bdeea2c9071657b877636770e835366bab 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright © 2017-2022 Soren Stoutner <soren@stoutner.com>.
+ * Copyright © 2017-2023 Soren Stoutner <soren@stoutner.com>.
  *
  * This file is part of Privacy Browser Android <https://www.stoutner.com/privacy-browser-android>.
  *
@@ -21,7 +21,6 @@ package com.stoutner.privacybrowser.dialogs
 
 import android.app.Dialog
 import android.content.DialogInterface
-import android.content.res.Configuration
 import android.os.Bundle
 import android.text.SpannableStringBuilder
 import android.text.Spanned
@@ -47,16 +46,7 @@ private const val REALM = "realm"
 private const val WEBVIEW_FRAGMENT_ID = "webview_fragment_id"
 
 class HttpAuthenticationDialog : DialogFragment() {
-    // Define the class variables.
-    private var dismissDialog: Boolean = false
-
-    // Declare the class views.
-    private lateinit var usernameEditText: EditText
-    private lateinit var passwordEditText: EditText
-
     companion object {
-        // `@JvmStatic` will no longer be required once all the code has transitioned to Kotlin.
-        @JvmStatic
         fun displayDialog(host: String, realm: String, webViewFragmentId: Long): HttpAuthenticationDialog {
             // Create an arguments bundle.
             val argumentsBundle = Bundle()
@@ -77,6 +67,13 @@ class HttpAuthenticationDialog : DialogFragment() {
         }
     }
 
+    // Define the class variables.
+    private var dismissDialog: Boolean = false
+
+    // Declare the class views.
+    private lateinit var usernameEditText: EditText
+    private lateinit var passwordEditText: EditText
+
     override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
         // Get a handle for the arguments.
         val arguments = requireArguments()
@@ -89,10 +86,10 @@ class HttpAuthenticationDialog : DialogFragment() {
         // Try to populate the alert dialog.
         try {  // Getting the WebView tab fragment will fail if Privacy Browser has been restarted.
             // Get the current position of this WebView fragment.
-            val webViewPosition = MainWebViewActivity.webViewPagerAdapter.getPositionForId(webViewFragmentId)
+            val webViewPosition = MainWebViewActivity.webViewStateAdapter!!.getPositionForId(webViewFragmentId)
 
             // Get the WebView tab fragment.
-            val webViewTabFragment = MainWebViewActivity.webViewPagerAdapter.getPageFragment(webViewPosition)
+            val webViewTabFragment = MainWebViewActivity.webViewStateAdapter!!.getPageFragment(webViewPosition)
 
             // Get the fragment view.
             val fragmentView = webViewTabFragment.requireView()
@@ -106,8 +103,8 @@ class HttpAuthenticationDialog : DialogFragment() {
             // Use an alert dialog builder to create the alert dialog.
             val dialogBuilder = AlertDialog.Builder(requireContext(), R.style.PrivacyBrowserAlertDialog)
 
-            // Set the icon according to the theme.
-            dialogBuilder.setIconAttribute(R.attr.lockBlueIcon)
+            // Set the icon.
+            dialogBuilder.setIcon(R.drawable.lock)
 
             // Set the title.
             dialogBuilder.setTitle(R.string.http_authentication)
@@ -165,20 +162,11 @@ class HttpAuthenticationDialog : DialogFragment() {
             realmTextView.text = httpAuthRealm
 
             // Initialize the host label and the spannable string builder.
-            val hostLabel = getString(R.string.host) + "  "
+            val hostLabel = getString(R.string.host)
             val hostStringBuilder = SpannableStringBuilder(hostLabel + httpAuthHost)
 
-            // Get the current theme status.
-            val currentThemeStatus = resources.configuration.uiMode and Configuration.UI_MODE_NIGHT_MASK
-
-            // Set the blue color span according to the theme.  The deprecated `getColor()` must be used until API >= 23.
-            val blueColorSpan = if (currentThemeStatus == Configuration.UI_MODE_NIGHT_NO) {
-                @Suppress("DEPRECATION")
-                ForegroundColorSpan(resources.getColor(R.color.blue_700))
-            } else {
-                @Suppress("DEPRECATION")
-                ForegroundColorSpan(resources.getColor(R.color.violet_700))
-            }
+            // Set the blue color span.
+            val blueColorSpan = ForegroundColorSpan(requireContext().getColor(R.color.blue_text))
 
             // Setup the span to display the host name in blue.  `SPAN_INCLUSIVE_INCLUSIVE` allows the span to grow in either direction.
             hostStringBuilder.setSpan(blueColorSpan, hostLabel.length, hostStringBuilder.length, Spanned.SPAN_INCLUSIVE_INCLUSIVE)