import android.net.Uri;
import android.net.http.SslCertificate;
import android.os.Bundle;
-import android.support.annotation.NonNull;
-import android.support.design.widget.TabLayout;
-import android.support.v4.view.PagerAdapter;
-// `AppCompatDialogFragment` is used instead of `DialogFragment` to avoid an error on API <=22.
-import android.support.v7.app.AppCompatDialogFragment;
import android.text.SpannableStringBuilder;
import android.text.Spanned;
import android.text.style.ForegroundColorSpan;
import android.view.WindowManager;
import android.widget.TextView;
+import com.google.android.material.tabs.TabLayout;
+
import com.stoutner.privacybrowser.R;
import com.stoutner.privacybrowser.activities.MainWebViewActivity;
-import com.stoutner.privacybrowser.definitions.WrapVerticalContentViewPager;
+import com.stoutner.privacybrowser.views.WrapVerticalContentViewPager;
import com.stoutner.privacybrowser.helpers.DomainsDatabaseHelper;
import java.text.DateFormat;
import java.util.Date;
-public class PinnedMismatchDialog extends AppCompatDialogFragment {
+import androidx.annotation.NonNull;
+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.
private PinnedMismatchListener pinnedMismatchListener;
private LayoutInflater layoutInflater;
pinnedMismatchListener = (PinnedMismatchListener) context;
}
- public static PinnedMismatchDialog displayDialog(boolean pinnedSslCertificate, boolean pinnedIpAddresses) {
+ public static PinnedMismatchDialog displayDialog(int domainSettingsDatabaseId, boolean pinnedSslCertificate, boolean pinnedIpAddresses) {
// Create an arguments bundle.
Bundle argumentsBundle = new Bundle();
// Store the variables in the bundle.
- argumentsBundle.putBoolean("Pinned_SSL_Certificate", pinnedSslCertificate);
- argumentsBundle.putBoolean("Pinned_IP_Addresses", pinnedIpAddresses);
+ argumentsBundle.putInt("domain_settings_database_id", domainSettingsDatabaseId);
+ argumentsBundle.putBoolean("pinned_sss_certificate", pinnedSslCertificate);
+ argumentsBundle.putBoolean("pinned_ip_addresses", pinnedIpAddresses);
// Add the arguments bundle to this instance of `PinnedMismatchDialog`.
PinnedMismatchDialog thisPinnedMismatchDialog = new PinnedMismatchDialog();
assert getArguments() != null;
// Get the variables from the bundle.
- pinnedSslCertificate = getArguments().getBoolean("Pinned_SSL_Certificate");
- pinnedIpAddresses = getArguments().getBoolean("Pinned_IP_Addresses");
+ int domainSettingsDatabaseId = getArguments().getInt("domain_settings_database_id");
+ pinnedSslCertificate = getArguments().getBoolean("pinned_ssl_certificate");
+ pinnedIpAddresses = getArguments().getBoolean("pinned_ip_addresses");
- if (MainWebViewActivity.favoriteIconBitmap.equals(MainWebViewActivity.favoriteIconDefaultBitmap)) {
+ // Set the favorite icon as the dialog icon if it exists.
+ if (MainWebViewActivity.favoriteIconBitmap.equals(MainWebViewActivity.favoriteIconDefaultBitmap)) { // There is no favorite icon.
// Set the icon according to the theme.
if (MainWebViewActivity.darkTheme) {
dialogBuilder.setIcon(R.drawable.ssl_certificate_enabled_dark);
} else {
dialogBuilder.setIcon(R.drawable.ssl_certificate_enabled_light);
}
- } else {
+ } else { // There is a favorite icon.
// Create a drawable version of the favorite icon.
Drawable favoriteIconDrawable = new BitmapDrawable(getResources(), MainWebViewActivity.favoriteIconBitmap);
// Update the SSL certificate if it is pinned.
if (pinnedSslCertificate) {
// Update the pinned SSL certificate in the domain database.
- domainsDatabaseHelper.updatePinnedSslCertificate(MainWebViewActivity.domainSettingsDatabaseId, currentSslIssuedToCName, currentSslIssuedToOName, currentSslIssuedToUName,
+ domainsDatabaseHelper.updatePinnedSslCertificate(domainSettingsDatabaseId, 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.
// Update the IP addresses if they are pinned.
if (pinnedIpAddresses) {
// Update the pinned IP addresses in the domain database.
- domainsDatabaseHelper.updatePinnedIpAddresses(MainWebViewActivity.domainSettingsDatabaseId, MainWebViewActivity.currentHostIpAddresses);
+ domainsDatabaseHelper.updatePinnedIpAddresses(domainSettingsDatabaseId, MainWebViewActivity.currentHostIpAddresses);
// Update the pinned IP addresses class variable to match the information that is now in the database.
MainWebViewActivity.pinnedHostIpAddresses = MainWebViewActivity.currentHostIpAddresses;