From 5987e0cf5095be146f4fdece1d6d01b5a4cc128d Mon Sep 17 00:00:00 2001 From: Soren Stoutner Date: Fri, 19 Jan 2024 15:41:53 -0700 Subject: [PATCH] Don't populate the current domain in the new domain settings dialog. https://redmine.stoutner.com/issues/1156 --- .../activities/DomainsActivity.kt | 9 ++-- .../activities/MainWebViewActivity.kt | 3 -- .../privacybrowser/dialogs/AddDomainDialog.kt | 46 +++---------------- app/src/main/res/layout/add_domain_dialog.xml | 6 ++- 4 files changed, 14 insertions(+), 50 deletions(-) diff --git a/app/src/main/java/com/stoutner/privacybrowser/activities/DomainsActivity.kt b/app/src/main/java/com/stoutner/privacybrowser/activities/DomainsActivity.kt index 473be992..96de49fa 100644 --- a/app/src/main/java/com/stoutner/privacybrowser/activities/DomainsActivity.kt +++ b/app/src/main/java/com/stoutner/privacybrowser/activities/DomainsActivity.kt @@ -1,5 +1,5 @@ /* - * Copyright 2017-2023 Soren Stoutner . + * Copyright 2017-2024 Soren Stoutner . * * This file is part of Privacy Browser Android . * @@ -49,8 +49,8 @@ import com.google.android.material.floatingactionbutton.FloatingActionButton import com.google.android.material.snackbar.Snackbar import com.stoutner.privacybrowser.R +import com.stoutner.privacybrowser.dialogs.AddDomainDialog import com.stoutner.privacybrowser.dialogs.AddDomainDialog.AddDomainListener -import com.stoutner.privacybrowser.dialogs.AddDomainDialog.Companion.addDomain import com.stoutner.privacybrowser.fragments.DomainSettingsFragment import com.stoutner.privacybrowser.fragments.DomainsListFragment import com.stoutner.privacybrowser.fragments.DomainsListFragment.DismissSnackbarInterface @@ -157,9 +157,6 @@ class DomainsActivity : AppCompatActivity(), AddDomainListener, DismissSnackbarI // Get the status of close-on-back, which is true when the domains activity is called from the options menu. closeOnBack = intent.getBooleanExtra(CLOSE_ON_BACK, false) - // Get the current URL. - val currentUrl = intent.getStringExtra(CURRENT_URL) - // Store the current SSL certificate information in class variables. sslIssuedToCName = intent.getStringExtra(SSL_ISSUED_TO_CNAME) sslIssuedToOName = intent.getStringExtra(SSL_ISSUED_TO_ONAME) @@ -200,7 +197,7 @@ class DomainsActivity : AppCompatActivity(), AddDomainListener, DismissSnackbarI // Configure the add domain floating action button. addDomainFAB.setOnClickListener { // Create an add domain dialog. - val addDomainDialog: DialogFragment = addDomain(currentUrl) + val addDomainDialog: DialogFragment = AddDomainDialog() // Show the add domain dialog. addDomainDialog.show(supportFragmentManager, resources.getString(R.string.add_domain)) diff --git a/app/src/main/java/com/stoutner/privacybrowser/activities/MainWebViewActivity.kt b/app/src/main/java/com/stoutner/privacybrowser/activities/MainWebViewActivity.kt index ed6ecb36..0d9755f1 100644 --- a/app/src/main/java/com/stoutner/privacybrowser/activities/MainWebViewActivity.kt +++ b/app/src/main/java/com/stoutner/privacybrowser/activities/MainWebViewActivity.kt @@ -2114,7 +2114,6 @@ class MainWebViewActivity : AppCompatActivity(), CreateBookmarkDialog.CreateBook // Add the extra information to the intent. domainsIntent.putExtra(LOAD_DOMAIN, currentWebView!!.domainSettingsDatabaseId) domainsIntent.putExtra(CLOSE_ON_BACK, true) - domainsIntent.putExtra(CURRENT_URL, currentWebView!!.url) domainsIntent.putExtra(CURRENT_IP_ADDRESSES, currentWebView!!.currentIpAddresses) // Get the current certificate. @@ -2271,7 +2270,6 @@ class MainWebViewActivity : AppCompatActivity(), CreateBookmarkDialog.CreateBook // Add the extra information to the intent. domainsIntent.putExtra(LOAD_DOMAIN, newDomainDatabaseId) domainsIntent.putExtra(CLOSE_ON_BACK, true) - domainsIntent.putExtra(CURRENT_URL, currentWebView!!.url) domainsIntent.putExtra(CURRENT_IP_ADDRESSES, currentWebView!!.currentIpAddresses) // Get the current certificate. @@ -2488,7 +2486,6 @@ class MainWebViewActivity : AppCompatActivity(), CreateBookmarkDialog.CreateBook val domainsIntent = Intent(this, DomainsActivity::class.java) // Add the extra information to the intent. - domainsIntent.putExtra(CURRENT_URL, currentWebView!!.url) domainsIntent.putExtra(CURRENT_IP_ADDRESSES, currentWebView!!.currentIpAddresses) // Get the current certificate. diff --git a/app/src/main/java/com/stoutner/privacybrowser/dialogs/AddDomainDialog.kt b/app/src/main/java/com/stoutner/privacybrowser/dialogs/AddDomainDialog.kt index 00d281af..309a615c 100644 --- a/app/src/main/java/com/stoutner/privacybrowser/dialogs/AddDomainDialog.kt +++ b/app/src/main/java/com/stoutner/privacybrowser/dialogs/AddDomainDialog.kt @@ -1,5 +1,5 @@ /* - * Copyright © 2017-2023 Soren Stoutner . + * Copyright 2017-2024 Soren Stoutner . * * This file is part of Privacy Browser Android . * @@ -22,7 +22,6 @@ package com.stoutner.privacybrowser.dialogs import android.app.Dialog import android.content.Context import android.content.DialogInterface -import android.net.Uri import android.os.Bundle import android.text.Editable import android.text.TextWatcher @@ -39,9 +38,6 @@ import androidx.preference.PreferenceManager import com.stoutner.privacybrowser.R import com.stoutner.privacybrowser.helpers.DomainsDatabaseHelper -// Define the class constants. -private const val URL_STRING = "url_string" - class AddDomainDialog : DialogFragment() { // Declare the class variables private lateinit var addDomainListener: AddDomainListener @@ -59,32 +55,7 @@ class AddDomainDialog : DialogFragment() { addDomainListener = context as AddDomainListener } - companion object { - fun addDomain(urlString: String?): AddDomainDialog { - // Create an arguments bundle. - val argumentsBundle = Bundle() - - // Store the URL in the bundle. - argumentsBundle.putString(URL_STRING, urlString) - - // Create a new instance of the dialog. - val addDomainDialog = AddDomainDialog() - - // Add the arguments bundle to the dialog. - addDomainDialog.arguments = argumentsBundle - - // Return the new dialog. - return addDomainDialog - } - } - override fun onCreateDialog(savedInstanceState: Bundle?): Dialog { - // Get the arguments. - val arguments = requireArguments() - - // Get the URL from the bundle. - val urlString = arguments.getString(URL_STRING) - // Use an alert dialog builder to create the alert dialog. val dialogBuilder = AlertDialog.Builder(requireContext(), R.style.PrivacyBrowserAlertDialog) @@ -131,6 +102,9 @@ class AddDomainDialog : DialogFragment() { val domainNameAlreadyExistsTextView = alertDialog.findViewById(R.id.domain_name_already_exists_textview)!! val addButton = alertDialog.getButton(AlertDialog.BUTTON_POSITIVE) + // Initially disable the add button. + addButton.isEnabled = false + // Update the status of the warning text and the add button when the domain name changes. addDomainEditText.addTextChangedListener(object: TextWatcher { override fun beforeTextChanged(s: CharSequence, start: Int, count: Int, after: Int) { @@ -141,7 +115,7 @@ class AddDomainDialog : DialogFragment() { // Do nothing. } - override fun afterTextChanged(s: Editable) { + override fun afterTextChanged(editable: Editable) { if (domainsDatabaseHelper.getCursorForDomainName(addDomainEditText.text.toString()).count > 0) { // The domain already exists. // Show the warning text. domainNameAlreadyExistsTextView.visibility = View.VISIBLE @@ -152,18 +126,12 @@ class AddDomainDialog : DialogFragment() { // Hide the warning text. domainNameAlreadyExistsTextView.visibility = View.GONE - // Enable the add button. - addButton.isEnabled = true + // Enable the add button if the domain name is not empty. + addButton.isEnabled = editable.isNotEmpty() } } }) - // Convert the URL string to a URI. - val currentUri = Uri.parse(urlString) - - // Display the host in the add domain edit text. - addDomainEditText.setText(currentUri.host) - // Allow the enter key on the keyboard to create the domain from the add domain edit text. addDomainEditText.setOnKeyListener { _: View, keyCode: Int, keyEvent: KeyEvent -> // Check the key code and event. diff --git a/app/src/main/res/layout/add_domain_dialog.xml b/app/src/main/res/layout/add_domain_dialog.xml index 557103cf..ed814f18 100644 --- a/app/src/main/res/layout/add_domain_dialog.xml +++ b/app/src/main/res/layout/add_domain_dialog.xml @@ -1,7 +1,7 @@ + android:layout_marginEnd="8dp" + android:visibility="gone" /> -- 2.43.0