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=fbc3293d5d072058c25de616e266aa8f10ec08c6;hp=7e86bbdb740589a78c182ab1c0c2710313b6e013;hb=f0393ca22075be3e5fe9199c7db87381256236fa;hpb=0cc9b798d6daa99959e33ff94a707516d6db8122 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 7e86bbdb..fbc3293d 100644 --- a/app/src/main/java/com/stoutner/privacybrowser/dialogs/PinnedMismatchDialog.java +++ b/app/src/main/java/com/stoutner/privacybrowser/dialogs/PinnedMismatchDialog.java @@ -24,15 +24,17 @@ import android.app.AlertDialog; import android.app.Dialog; import android.content.Context; import android.content.DialogInterface; +import android.content.SharedPreferences; +import android.graphics.Bitmap; import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.Drawable; import android.net.Uri; import android.net.http.SslCertificate; import android.os.Bundle; +import android.preference.PreferenceManager; import android.text.SpannableStringBuilder; import android.text.Spanned; import android.text.style.ForegroundColorSpan; -import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.view.WindowManager; @@ -42,20 +44,24 @@ import com.google.android.material.tabs.TabLayout; import com.stoutner.privacybrowser.R; import com.stoutner.privacybrowser.activities.MainWebViewActivity; +import com.stoutner.privacybrowser.fragments.WebViewTabFragment; +import com.stoutner.privacybrowser.views.NestedScrollWebView; import com.stoutner.privacybrowser.views.WrapVerticalContentViewPager; import com.stoutner.privacybrowser.helpers.DomainsDatabaseHelper; import java.text.DateFormat; +import java.util.ArrayList; import java.util.Date; import androidx.annotation.NonNull; +import androidx.core.content.ContextCompat; import androidx.fragment.app.DialogFragment; // The AndroidX dialog fragment must be used or an error is produced on API <=22. import androidx.viewpager.widget.PagerAdapter; public class PinnedMismatchDialog extends DialogFragment { - // Instantiate the class variables. + // Declare the class variables. private PinnedMismatchListener pinnedMismatchListener; - private LayoutInflater layoutInflater; + private NestedScrollWebView nestedScrollWebView; private String currentSslIssuedToCName; private String currentSslIssuedToOName; private String currentSslIssuedToUName; @@ -64,8 +70,6 @@ public class PinnedMismatchDialog extends DialogFragment { private String currentSslIssuedByUName; private Date currentSslStartDate; private Date currentSslEndDate; - private boolean pinnedSslCertificate; - private boolean pinnedIpAddresses; // The public interface is used to send information back to the parent activity. public interface PinnedMismatchListener { @@ -83,19 +87,21 @@ public class PinnedMismatchDialog extends DialogFragment { pinnedMismatchListener = (PinnedMismatchListener) context; } - public static PinnedMismatchDialog displayDialog(int domainSettingsDatabaseId, boolean pinnedSslCertificate, boolean pinnedIpAddresses) { + public static PinnedMismatchDialog displayDialog(long webViewFragmentId) { // Create an arguments bundle. Bundle argumentsBundle = new Bundle(); - // Store the variables in the bundle. - argumentsBundle.putInt("domain_settings_database_id", domainSettingsDatabaseId); - argumentsBundle.putBoolean("pinned_sss_certificate", pinnedSslCertificate); - argumentsBundle.putBoolean("pinned_ip_addresses", pinnedIpAddresses); + // Store the WebView fragment ID in the bundle. + argumentsBundle.putLong("webview_fragment_id", webViewFragmentId); - // Add the arguments bundle to this instance of `PinnedMismatchDialog`. - PinnedMismatchDialog thisPinnedMismatchDialog = new PinnedMismatchDialog(); - thisPinnedMismatchDialog.setArguments(argumentsBundle); - return thisPinnedMismatchDialog; + // Create a new instance of the pinned mismatch dialog. + PinnedMismatchDialog pinnedMismatchDialog = new PinnedMismatchDialog(); + + // Add the arguments bundle to the new instance. + pinnedMismatchDialog.setArguments(argumentsBundle); + + // Make it so. + return pinnedMismatchDialog; } // `@SuppressLing("InflateParams")` removes the warning about using `null` as the parent view group when inflating the `AlertDialog`. @@ -103,17 +109,39 @@ public class PinnedMismatchDialog extends DialogFragment { @Override @NonNull public Dialog onCreateDialog(Bundle savedInstanceState) { - // Remove the incorrect lint warning that `getActivity()` might be null. - assert getActivity() != null; + // Get the arguments. + Bundle arguments = getArguments(); + + // Remove the incorrect lint warning below that `.getArguments().getInt()` might be null. + assert arguments != null; + + // Get the current position of this WebView fragment. + int webViewPosition = MainWebViewActivity.webViewPagerAdapter.getPositionForId(arguments.getLong("webview_fragment_id")); + + // Get the WebView tab fragment. + WebViewTabFragment webViewTabFragment = MainWebViewActivity.webViewPagerAdapter.getPageFragment(webViewPosition); - // Get the activity's layout inflater. - layoutInflater = getActivity().getLayoutInflater(); + // Get the fragment view. + View fragmentView = webViewTabFragment.getView(); + + // Remove the incorrect lint warning below that the fragment view might be null. + assert fragmentView != null; + + // Get a handle for the current WebView. + nestedScrollWebView = fragmentView.findViewById(R.id.nestedscroll_webview); // Use an alert dialog builder to create the alert dialog. AlertDialog.Builder dialogBuilder; + // Get a handle for the shared preferences. + SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(getContext()); + + // Get the screenshot and theme preferences. + boolean darkTheme = sharedPreferences.getBoolean("dark_theme", false); + boolean allowScreenshots = sharedPreferences.getBoolean("allow_screenshots", false); + // Set the style according to the theme. - if (MainWebViewActivity.darkTheme) { + if (darkTheme) { // Set the dialog theme. dialogBuilder = new AlertDialog.Builder(getActivity(), R.style.PrivacyBrowserAlertDialogDark); } else { @@ -121,25 +149,38 @@ public class PinnedMismatchDialog extends DialogFragment { dialogBuilder = new AlertDialog.Builder(getActivity(), R.style.PrivacyBrowserAlertDialogLight); } - // Remove the incorrect lint warning below that `.getArguments.getBoolean()` might be null. - assert getArguments() != null; + // Get the context. + Context context = getContext(); + + // Remove the incorrect lint warning below that the context might be null. + assert context != null; - // Get the variables from the bundle. - int domainSettingsDatabaseId = getArguments().getInt("domain_settings_database_id"); - pinnedSslCertificate = getArguments().getBoolean("pinned_ssl_certificate"); - pinnedIpAddresses = getArguments().getBoolean("pinned_ip_addresses"); + // Get the favorite icon. + Bitmap favoriteIconBitmap = nestedScrollWebView.getFavoriteOrDefaultIcon(); + + // Get the default favorite icon drawable. `ContextCompat` must be used until API >= 21. + Drawable defaultFavoriteIconDrawable = ContextCompat.getDrawable(context, R.drawable.world); + + // Cast the favorite icon drawable to a bitmap drawable. + BitmapDrawable defaultFavoriteIconBitmapDrawable = (BitmapDrawable) defaultFavoriteIconDrawable; + + // Remove the incorrect warning below that the favorite icon bitmap drawable might be null. + assert defaultFavoriteIconBitmapDrawable != null; + + // Store the default icon bitmap. + Bitmap defaultFavoriteIconBitmap = defaultFavoriteIconBitmapDrawable.getBitmap(); // Set the favorite icon as the dialog icon if it exists. - if (MainWebViewActivity.favoriteIconBitmap.equals(MainWebViewActivity.favoriteIconDefaultBitmap)) { // There is no favorite icon. + if (favoriteIconBitmap.sameAs(defaultFavoriteIconBitmap)) { // There is no website favorite icon. // Set the icon according to the theme. - if (MainWebViewActivity.darkTheme) { + if (darkTheme) { dialogBuilder.setIcon(R.drawable.ssl_certificate_enabled_dark); } else { dialogBuilder.setIcon(R.drawable.ssl_certificate_enabled_light); } } else { // There is a favorite icon. // Create a drawable version of the favorite icon. - Drawable favoriteIconDrawable = new BitmapDrawable(getResources(), MainWebViewActivity.favoriteIconBitmap); + Drawable favoriteIconDrawable = new BitmapDrawable(getResources(), favoriteIconBitmap); // Set the icon. dialogBuilder.setIcon(favoriteIconDrawable); @@ -161,32 +202,26 @@ public class PinnedMismatchDialog extends DialogFragment { } // Initialize the database handler. The `0` specifies the database version, but that is ignored and set instead using a constant in `DomainsDatabaseHelper`. - DomainsDatabaseHelper domainsDatabaseHelper = new DomainsDatabaseHelper(getContext(), null, null, 0); + DomainsDatabaseHelper domainsDatabaseHelper = new DomainsDatabaseHelper(context, null, null, 0); // Update the SSL certificate if it is pinned. - if (pinnedSslCertificate) { + if (nestedScrollWebView.hasPinnedSslCertificate()) { // Update the pinned SSL certificate in the domain database. - domainsDatabaseHelper.updatePinnedSslCertificate(domainSettingsDatabaseId, currentSslIssuedToCName, currentSslIssuedToOName, currentSslIssuedToUName, + domainsDatabaseHelper.updatePinnedSslCertificate(nestedScrollWebView.getDomainSettingsDatabaseId(), currentSslIssuedToCName, currentSslIssuedToOName, currentSslIssuedToUName, currentSslIssuedByCName, currentSslIssuedByOName, currentSslIssuedByUName, currentSslStartDateLong, currentSslEndDateLong); - // Update the pinned SSL certificate class variables to match the information that is now in the database. - MainWebViewActivity.pinnedSslIssuedToCName = currentSslIssuedToCName; - MainWebViewActivity.pinnedSslIssuedToOName = currentSslIssuedToOName; - MainWebViewActivity.pinnedSslIssuedToUName = currentSslIssuedToUName; - MainWebViewActivity.pinnedSslIssuedByCName = currentSslIssuedByCName; - MainWebViewActivity.pinnedSslIssuedByOName = currentSslIssuedByOName; - MainWebViewActivity.pinnedSslIssuedByUName = currentSslIssuedByUName; - MainWebViewActivity.pinnedSslStartDate = currentSslStartDate; - MainWebViewActivity.pinnedSslEndDate = currentSslEndDate; + // Update the pinned SSL certificate in the nested scroll WebView. + nestedScrollWebView.setPinnedSslCertificate(currentSslIssuedToCName, currentSslIssuedToOName, currentSslIssuedToUName, currentSslIssuedByCName, currentSslIssuedByOName, currentSslIssuedByUName, + currentSslStartDate, currentSslEndDate); } // Update the IP addresses if they are pinned. - if (pinnedIpAddresses) { + if (nestedScrollWebView.hasPinnedIpAddresses()) { // Update the pinned IP addresses in the domain database. - domainsDatabaseHelper.updatePinnedIpAddresses(domainSettingsDatabaseId, MainWebViewActivity.currentHostIpAddresses); + domainsDatabaseHelper.updatePinnedIpAddresses(nestedScrollWebView.getDomainSettingsDatabaseId(), nestedScrollWebView.getCurrentIpAddresses()); - // Update the pinned IP addresses class variable to match the information that is now in the database. - MainWebViewActivity.pinnedHostIpAddresses = MainWebViewActivity.currentHostIpAddresses; + // Update the pinned IP addresses in the nested scroll WebView. + nestedScrollWebView.setPinnedIpAddresses(nestedScrollWebView.getCurrentIpAddresses()); } }); @@ -205,14 +240,18 @@ public class PinnedMismatchDialog extends DialogFragment { // Set the title. dialogBuilder.setTitle(R.string.pinned_mismatch); + // Remove the incorrect lint warning below that `getLayoutInflater()` might be null. + assert getActivity() != null; + // Set the layout. The parent view is `null` because it will be assigned by `AlertDialog`. - dialogBuilder.setView(layoutInflater.inflate(R.layout.pinned_mismatch_linearlayout, null)); + // For some reason, `getLayoutInflater()` without `getActivity()` produces an endless loop (probably a bug that will be fixed at some point in the future). + dialogBuilder.setView(getActivity().getLayoutInflater().inflate(R.layout.pinned_mismatch_linearlayout, null)); // Create an alert dialog from the alert dialog builder. final AlertDialog alertDialog = dialogBuilder.create(); // Disable screenshots if not allowed. - if (!MainWebViewActivity.allowScreenshots) { + if (!allowScreenshots) { // Remove the warning below that `getWindow()` might be null. assert alertDialog.getWindow() != null; @@ -262,7 +301,7 @@ public class PinnedMismatchDialog extends DialogFragment { @NonNull public Object instantiateItem(@NonNull ViewGroup container, int position) { // Inflate the scroll view for this tab. - ViewGroup tabViewGroup = (ViewGroup) layoutInflater.inflate(R.layout.pinned_mismatch_scrollview, container, false); + ViewGroup tabViewGroup = (ViewGroup) getLayoutInflater().inflate(R.layout.pinned_mismatch_scrollview, container, false); // Get handles for the `TextViews`. TextView domainNameTextView = tabViewGroup.findViewById(R.id.domain_name); @@ -285,14 +324,14 @@ public class PinnedMismatchDialog extends DialogFragment { String startDateLabel = getString(R.string.start_date) + " "; String endDateLabel = getString(R.string.end_date) + " "; - // Get a URI for the URL. - Uri currentUri = Uri.parse(MainWebViewActivity.formattedUrlString); + // Convert the URL to a URI. + Uri currentUri = Uri.parse(nestedScrollWebView.getUrl()); // Get the current host from the URI. String domainName = currentUri.getHost(); // Get the current website SSL certificate. - SslCertificate sslCertificate = MainWebViewActivity.sslCertificate; + SslCertificate sslCertificate = nestedScrollWebView.getCertificate(); // Extract the individual pieces of information from the current website SSL certificate if it is not null. if (sslCertificate != null) { @@ -314,6 +353,13 @@ public class PinnedMismatchDialog extends DialogFragment { currentSslIssuedByUName = ""; } + // Get the pinned SSL certificate. + ArrayList pinnedSslCertificateArrayList = nestedScrollWebView.getPinnedSslCertificate(); + + // Extract the arrays from the array list. + String[] pinnedSslCertificateStringArray = (String[]) pinnedSslCertificateArrayList.get(0); + Date[] pinnedSslCertificateDateArray = (Date[]) pinnedSslCertificateArrayList.get(1); + // Setup the domain name spannable string builder. SpannableStringBuilder domainNameStringBuilder = new SpannableStringBuilder(domainNameLabel + domainName); @@ -331,7 +377,7 @@ public class PinnedMismatchDialog extends DialogFragment { // Setup the spannable string builders for each tab. if (position == 0) { // Setup the current settings tab. // Create the string builders. - ipAddressesStringBuilder = new SpannableStringBuilder(ipAddressesLabel + MainWebViewActivity.currentHostIpAddresses); + ipAddressesStringBuilder = new SpannableStringBuilder(ipAddressesLabel + nestedScrollWebView.getCurrentIpAddresses()); issuedToCNameStringBuilder = new SpannableStringBuilder(cNameLabel + currentSslIssuedToCName); issuedToONameStringBuilder = new SpannableStringBuilder(oNameLabel + currentSslIssuedToOName); issuedToUNameStringBuilder = new SpannableStringBuilder(uNameLabel + currentSslIssuedToUName); @@ -353,29 +399,34 @@ public class PinnedMismatchDialog extends DialogFragment { } } else { // Setup the pinned settings tab. // Create the string builders. - ipAddressesStringBuilder = new SpannableStringBuilder(ipAddressesLabel + MainWebViewActivity.pinnedHostIpAddresses); - issuedToCNameStringBuilder = new SpannableStringBuilder(cNameLabel + MainWebViewActivity.pinnedSslIssuedToCName); - issuedToONameStringBuilder = new SpannableStringBuilder(oNameLabel + MainWebViewActivity.pinnedSslIssuedToOName); - issuedToUNameStringBuilder = new SpannableStringBuilder(uNameLabel + MainWebViewActivity.pinnedSslIssuedToUName); - issuedByCNameStringBuilder = new SpannableStringBuilder(cNameLabel + MainWebViewActivity.pinnedSslIssuedByCName); - issuedByONameStringBuilder = new SpannableStringBuilder(oNameLabel + MainWebViewActivity.pinnedSslIssuedByOName); - issuedByUNameStringBuilder = new SpannableStringBuilder(uNameLabel + MainWebViewActivity.pinnedSslIssuedByUName); + ipAddressesStringBuilder = new SpannableStringBuilder(ipAddressesLabel + nestedScrollWebView.getPinnedIpAddresses()); + issuedToCNameStringBuilder = new SpannableStringBuilder(cNameLabel + pinnedSslCertificateStringArray[0]); + issuedToONameStringBuilder = new SpannableStringBuilder(oNameLabel + pinnedSslCertificateStringArray[1]); + issuedToUNameStringBuilder = new SpannableStringBuilder(uNameLabel + pinnedSslCertificateStringArray[2]); + issuedByCNameStringBuilder = new SpannableStringBuilder(cNameLabel + pinnedSslCertificateStringArray[3]); + issuedByONameStringBuilder = new SpannableStringBuilder(oNameLabel + pinnedSslCertificateStringArray[4]); + issuedByUNameStringBuilder = new SpannableStringBuilder(uNameLabel + pinnedSslCertificateStringArray[5]); // Set the dates if they aren't `null`. - if (MainWebViewActivity.pinnedSslStartDate == null) { + if (pinnedSslCertificateDateArray[0] == null) { startDateStringBuilder = new SpannableStringBuilder(startDateLabel); } else { - startDateStringBuilder = new SpannableStringBuilder(startDateLabel + DateFormat.getDateTimeInstance(DateFormat.MEDIUM, DateFormat.LONG) - .format(MainWebViewActivity.pinnedSslStartDate)); + startDateStringBuilder = new SpannableStringBuilder(startDateLabel + DateFormat.getDateTimeInstance(DateFormat.MEDIUM, DateFormat.LONG).format(pinnedSslCertificateDateArray[0])); } - if (MainWebViewActivity.pinnedSslEndDate == null) { + if (pinnedSslCertificateDateArray[1] == null) { endDateStringBuilder = new SpannableStringBuilder(endDateLabel); } else { - endDateStringBuilder = new SpannableStringBuilder(endDateLabel + DateFormat.getDateTimeInstance(DateFormat.MEDIUM, DateFormat.LONG).format(MainWebViewActivity.pinnedSslEndDate)); + endDateStringBuilder = new SpannableStringBuilder(endDateLabel + DateFormat.getDateTimeInstance(DateFormat.MEDIUM, DateFormat.LONG).format(pinnedSslCertificateDateArray[1])); } } + // Get a handle for the shared preferences. + SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(getContext()); + + // Get the screenshot and theme preferences. + boolean darkTheme = sharedPreferences.getBoolean("dark_theme", false); + // Create a red foreground color span. The deprecated `getResources().getColor` must be used until the minimum API >= 23. @SuppressWarnings("deprecation") ForegroundColorSpan redColorSpan = new ForegroundColorSpan(getResources().getColor(R.color.red_a700)); @@ -383,7 +434,7 @@ public class PinnedMismatchDialog extends DialogFragment { ForegroundColorSpan blueColorSpan; // Set the blue color span according to the theme. The deprecated `getResources().getColor` must be used until the minimum API >= 23. - if (MainWebViewActivity.darkTheme) { + if (darkTheme) { //noinspection deprecation blueColorSpan = new ForegroundColorSpan(getResources().getColor(R.color.blue_400)); } else { @@ -395,8 +446,8 @@ public class PinnedMismatchDialog extends DialogFragment { domainNameStringBuilder.setSpan(blueColorSpan, domainNameLabel.length(), domainNameStringBuilder.length(), Spanned.SPAN_INCLUSIVE_INCLUSIVE); // Color coordinate the IP addresses if they are pinned. - if (pinnedIpAddresses) { - if (MainWebViewActivity.currentHostIpAddresses.equals(MainWebViewActivity.pinnedHostIpAddresses)) { + if (nestedScrollWebView.hasPinnedIpAddresses()) { + if (nestedScrollWebView.getCurrentIpAddresses().equals(nestedScrollWebView.getPinnedIpAddresses())) { ipAddressesStringBuilder.setSpan(blueColorSpan, ipAddressesLabel.length(), ipAddressesStringBuilder.length(), Spanned.SPAN_INCLUSIVE_INCLUSIVE); } else { ipAddressesStringBuilder.setSpan(redColorSpan, ipAddressesLabel.length(), ipAddressesStringBuilder.length(), Spanned.SPAN_INCLUSIVE_INCLUSIVE); @@ -404,50 +455,50 @@ public class PinnedMismatchDialog extends DialogFragment { } // Color coordinate the SSL certificate fields if they are pinned. - if (pinnedSslCertificate) { - if (currentSslIssuedToCName.equals(MainWebViewActivity.pinnedSslIssuedToCName)) { + if (nestedScrollWebView.hasPinnedSslCertificate()) { + if (currentSslIssuedToCName.equals(pinnedSslCertificateStringArray[0])) { issuedToCNameStringBuilder.setSpan(blueColorSpan, cNameLabel.length(), issuedToCNameStringBuilder.length(), Spanned.SPAN_INCLUSIVE_INCLUSIVE); } else { issuedToCNameStringBuilder.setSpan(redColorSpan, cNameLabel.length(), issuedToCNameStringBuilder.length(), Spanned.SPAN_INCLUSIVE_INCLUSIVE); } - if (currentSslIssuedToOName.equals(MainWebViewActivity.pinnedSslIssuedToOName)) { + if (currentSslIssuedToOName.equals(pinnedSslCertificateStringArray[1])) { issuedToONameStringBuilder.setSpan(blueColorSpan, oNameLabel.length(), issuedToONameStringBuilder.length(), Spanned.SPAN_INCLUSIVE_INCLUSIVE); } else { issuedToONameStringBuilder.setSpan(redColorSpan, oNameLabel.length(), issuedToONameStringBuilder.length(), Spanned.SPAN_INCLUSIVE_INCLUSIVE); } - if (currentSslIssuedToUName.equals(MainWebViewActivity.pinnedSslIssuedToUName)) { + if (currentSslIssuedToUName.equals(pinnedSslCertificateStringArray[2])) { issuedToUNameStringBuilder.setSpan(blueColorSpan, uNameLabel.length(), issuedToUNameStringBuilder.length(), Spanned.SPAN_INCLUSIVE_INCLUSIVE); } else { issuedToUNameStringBuilder.setSpan(redColorSpan, uNameLabel.length(), issuedToUNameStringBuilder.length(), Spanned.SPAN_INCLUSIVE_INCLUSIVE); } - if (currentSslIssuedByCName.equals(MainWebViewActivity.pinnedSslIssuedByCName)) { + if (currentSslIssuedByCName.equals(pinnedSslCertificateStringArray[3])) { issuedByCNameStringBuilder.setSpan(blueColorSpan, cNameLabel.length(), issuedByCNameStringBuilder.length(), Spanned.SPAN_INCLUSIVE_INCLUSIVE); } else { issuedByCNameStringBuilder.setSpan(redColorSpan, cNameLabel.length(), issuedByCNameStringBuilder.length(), Spanned.SPAN_INCLUSIVE_INCLUSIVE); } - if (currentSslIssuedByOName.equals(MainWebViewActivity.pinnedSslIssuedByOName)) { + if (currentSslIssuedByOName.equals(pinnedSslCertificateStringArray[4])) { issuedByONameStringBuilder.setSpan(blueColorSpan, oNameLabel.length(), issuedByONameStringBuilder.length(), Spanned.SPAN_INCLUSIVE_INCLUSIVE); } else { issuedByONameStringBuilder.setSpan(redColorSpan, oNameLabel.length(), issuedByONameStringBuilder.length(), Spanned.SPAN_INCLUSIVE_INCLUSIVE); } - if (currentSslIssuedByUName.equals(MainWebViewActivity.pinnedSslIssuedByUName)) { + if (currentSslIssuedByUName.equals(pinnedSslCertificateStringArray[5])) { issuedByUNameStringBuilder.setSpan(blueColorSpan, uNameLabel.length(), issuedByUNameStringBuilder.length(), Spanned.SPAN_INCLUSIVE_INCLUSIVE); } else { issuedByUNameStringBuilder.setSpan(redColorSpan, uNameLabel.length(), issuedByUNameStringBuilder.length(), Spanned.SPAN_INCLUSIVE_INCLUSIVE); } - if ((currentSslStartDate != null) && currentSslStartDate.equals(MainWebViewActivity.pinnedSslStartDate)) { + if ((currentSslStartDate != null) && currentSslStartDate.equals(pinnedSslCertificateDateArray[0])) { startDateStringBuilder.setSpan(blueColorSpan, startDateLabel.length(), startDateStringBuilder.length(), Spanned.SPAN_INCLUSIVE_INCLUSIVE); } else { startDateStringBuilder.setSpan(redColorSpan, startDateLabel.length(), startDateStringBuilder.length(), Spanned.SPAN_INCLUSIVE_INCLUSIVE); } - if ((currentSslEndDate != null) && currentSslEndDate.equals(MainWebViewActivity.pinnedSslEndDate)) { + if ((currentSslEndDate != null) && currentSslEndDate.equals(pinnedSslCertificateDateArray[1])) { endDateStringBuilder.setSpan(blueColorSpan, endDateLabel.length(), endDateStringBuilder.length(), Spanned.SPAN_INCLUSIVE_INCLUSIVE); } else { endDateStringBuilder.setSpan(redColorSpan, endDateLabel.length(), endDateStringBuilder.length(), Spanned.SPAN_INCLUSIVE_INCLUSIVE); @@ -473,4 +524,4 @@ public class PinnedMismatchDialog extends DialogFragment { return tabViewGroup; } } -} +} \ No newline at end of file