X-Git-Url: https://gitweb.stoutner.com/?p=PrivacyBrowserAndroid.git;a=blobdiff_plain;f=app%2Fsrc%2Fmain%2Fjava%2Fcom%2Fstoutner%2Fprivacybrowser%2Fdialogs%2FViewSslCertificateDialog.kt;h=04cdad8dd3b292555970cacd612f6986a34d6831;hp=5edaae6202bb2d6f618555357dc22b42039c2e19;hb=HEAD;hpb=12042264a50769030361cf51b0ac197050209f0f diff --git a/app/src/main/java/com/stoutner/privacybrowser/dialogs/ViewSslCertificateDialog.kt b/app/src/main/java/com/stoutner/privacybrowser/dialogs/ViewSslCertificateDialog.kt index 5edaae62..fd269459 100644 --- a/app/src/main/java/com/stoutner/privacybrowser/dialogs/ViewSslCertificateDialog.kt +++ b/app/src/main/java/com/stoutner/privacybrowser/dialogs/ViewSslCertificateDialog.kt @@ -1,5 +1,5 @@ /* - * Copyright © 2016-2023 Soren Stoutner . + * Copyright 2016-2023 Soren Stoutner . * * This file is part of Privacy Browser Android . * @@ -45,43 +45,24 @@ import java.text.DateFormat import java.util.Calendar import java.util.Date -// Define the class constants. -private const val WEBVIEW_FRAGMENT_ID = "webview_fragment_id" -private const val FAVORITE_ICON_BYTE_ARRAY = "favorite_icon_byte_array" -private const val HAS_SSL_CERTIFICATE = "has_ssl_certificate" -private const val DOMAIN = "domain" -private const val IP_ADDRESSES = "ip_addresses" -private const val ISSUED_TO_CNAME = "issued_to_cname" -private const val ISSUED_TO_ONAME = "issued_to_oname" -private const val ISSUED_TO_UNAME = "issued_to_uname" -private const val ISSUED_BY_CNAME = "issued_by_cname" -private const val ISSUED_BY_ONAME = "issued_by_oname" -private const val ISSUED_BY_UNAME = "issued_by_uname" -private const val START_DATE = "start_date" -private const val END_DATE = "end_date" +// Define the private class constants. +private const val DOMAIN = "A" +private const val END_DATE = "B" +private const val FAVORITE_ICON_BYTE_ARRAY = "C" +private const val HAS_SSL_CERTIFICATE = "D" +private const val IP_ADDRESSES = "E" +private const val ISSUED_BY_CNAME = "F" +private const val ISSUED_BY_ONAME = "G" +private const val ISSUED_BY_UNAME = "H" +private const val ISSUED_TO_CNAME = "I" +private const val ISSUED_TO_ONAME = "J" +private const val ISSUED_TO_UNAME = "K" +private const val START_DATE = "L" +private const val WEBVIEW_FRAGMENT_ID = "M" +private const val URL = "N" class ViewSslCertificateDialog : DialogFragment() { - // Define the class variables. - private var hasSslCertificate: Boolean = false - - // Declare the class variables. - private lateinit var domainString: String - private lateinit var ipAddresses: String - private lateinit var issuedToCName: String - private lateinit var issuedToOName: String - private lateinit var issuedToUName: String - private lateinit var issuedByCName: String - private lateinit var issuedByOName: String - private lateinit var issuedByUName: String - private lateinit var startDate: Date - private lateinit var endDate: Date - - // Declare the class views. - private lateinit var nestedScrollWebView: NestedScrollWebView - companion object { - // `@JvmStatic` will no longer be required once all the code has transitioned to Kotlin. - @JvmStatic fun displayDialog(webViewFragmentId: Long, favoriteIconBitmap: Bitmap): ViewSslCertificateDialog { // Create an arguments bundle. val argumentsBundle = Bundle() @@ -110,6 +91,23 @@ class ViewSslCertificateDialog : DialogFragment() { } } + // Define the class variables. + private var hasSslCertificate: Boolean = false + + // Declare the class variables. + private lateinit var domainString: String + private lateinit var endDate: Date + private lateinit var ipAddresses: String + private lateinit var issuedByCName: String + private lateinit var issuedByOName: String + private lateinit var issuedByUName: String + private lateinit var issuedToCName: String + private lateinit var issuedToOName: String + private lateinit var issuedToUName: String + private lateinit var nestedScrollWebView: NestedScrollWebView + private lateinit var startDate: Date + private lateinit var urlString: String + override fun onCreateDialog(savedInstanceState: Bundle?): Dialog { // Use a builder to create the alert dialog. val dialogBuilder = AlertDialog.Builder(requireContext(), R.style.PrivacyBrowserAlertDialog) @@ -117,10 +115,10 @@ class ViewSslCertificateDialog : DialogFragment() { // Populate the class variables. if (savedInstanceState == null) { // The dialog is starting for the first time. // Get the current position of this WebView fragment. - val webViewPosition = MainWebViewActivity.webViewPagerAdapter.getPositionForId(requireArguments().getLong(WEBVIEW_FRAGMENT_ID)) + val webViewPosition = MainWebViewActivity.webViewStateAdapter!!.getPositionForId(requireArguments().getLong(WEBVIEW_FRAGMENT_ID)) // 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() @@ -134,10 +132,13 @@ class ViewSslCertificateDialog : DialogFragment() { // Store the status of the SSL certificate. hasSslCertificate = sslCertificate != null + // Store the URL string. + urlString = nestedScrollWebView.currentUrl + // Populate the certificate class variables if the webpage has an SSL certificate. if (hasSslCertificate) { // Convert the URL to a URI. - val uri = Uri.parse(nestedScrollWebView.url) + val uri = Uri.parse(nestedScrollWebView.currentUrl) // Extract the domain name from the URI. domainString = uri.host!! @@ -158,6 +159,7 @@ class ViewSslCertificateDialog : DialogFragment() { } else { // The dialog has been restarted. // Get the data from the saved instance state. hasSslCertificate = savedInstanceState.getBoolean(HAS_SSL_CERTIFICATE) + urlString = savedInstanceState.getString(URL)!! // Populate the certificate class variables if the webpage has an SSL certificate. if (hasSslCertificate) { @@ -335,11 +337,20 @@ class ViewSslCertificateDialog : DialogFragment() { // Return the alert dialog. return alertDialog } else { // The website is not encrypted. - // Set the title. - dialogBuilder.setTitle(R.string.unencrypted_website) - - // Set the Layout. - dialogBuilder.setView(R.layout.unencrypted_website_dialog) + // Populate the dialog according to the URL type. + if (urlString.startsWith("content://")) { // A content URL is loaded. + // Set the title. + dialogBuilder.setTitle(R.string.content_url) + + // Set the message. + dialogBuilder.setMessage(R.string.content_url_message) + } else { // The website is unencrypted. + // Set the title. + dialogBuilder.setTitle(R.string.unencrypted_website) + + // Set the layout. + dialogBuilder.setView(R.layout.unencrypted_website_dialog) + } // Create an alert dialog from the builder. val alertDialog = dialogBuilder.create() @@ -361,6 +372,7 @@ class ViewSslCertificateDialog : DialogFragment() { // Save the common class variables. savedInstanceState.putBoolean(HAS_SSL_CERTIFICATE, hasSslCertificate) + savedInstanceState.putString(URL, urlString) // Save the SSL certificate strings if they exist. if (hasSslCertificate) { @@ -376,4 +388,4 @@ class ViewSslCertificateDialog : DialogFragment() { savedInstanceState.putLong(END_DATE, endDate.time) } } -} \ No newline at end of file +}