X-Git-Url: https://gitweb.stoutner.com/?p=PrivacyBrowserAndroid.git;a=blobdiff_plain;f=app%2Fsrc%2Fmain%2Fjava%2Fcom%2Fstoutner%2Fprivacybrowser%2Factivities%2FViewSourceActivity.kt;h=514e3095a2abd6fb6ae40351354766dc3e045806;hp=8868697a37d875e30001b014d3a373ce4d02ff23;hb=6790b16072ffa307636462579ed1476668a57e6e;hpb=f441c077da729e1d3d97c9efb46e8380a0730dd9 diff --git a/app/src/main/java/com/stoutner/privacybrowser/activities/ViewSourceActivity.kt b/app/src/main/java/com/stoutner/privacybrowser/activities/ViewSourceActivity.kt index 8868697a..514e3095 100644 --- a/app/src/main/java/com/stoutner/privacybrowser/activities/ViewSourceActivity.kt +++ b/app/src/main/java/com/stoutner/privacybrowser/activities/ViewSourceActivity.kt @@ -22,7 +22,6 @@ package com.stoutner.privacybrowser.activities import android.os.Build import android.os.Bundle import android.text.SpannableStringBuilder -import android.text.Spanned import android.text.style.ForegroundColorSpan import android.util.TypedValue import android.view.KeyEvent @@ -52,6 +51,7 @@ import com.stoutner.privacybrowser.dialogs.AboutViewSourceDialog import com.stoutner.privacybrowser.dialogs.UntrustedSslCertificateDialog import com.stoutner.privacybrowser.dialogs.UntrustedSslCertificateDialog.UntrustedSslCertificateListener import com.stoutner.privacybrowser.helpers.ProxyHelper +import com.stoutner.privacybrowser.helpers.UrlHelper import com.stoutner.privacybrowser.viewmodelfactories.WebViewSourceFactory import com.stoutner.privacybrowser.viewmodels.WebViewSource @@ -144,7 +144,7 @@ class ViewSourceActivity: AppCompatActivity(), UntrustedSslCertificateListener { redColorSpan = ForegroundColorSpan(getColor(R.color.red_text)) // Apply text highlighting to the URL. - highlightUrlText() + UrlHelper.highlightSyntax(urlEditText, initialGrayColorSpan, finalGrayColorSpan, redColorSpan) // Get a handle for the input method manager, which is used to hide the keyboard. val inputMethodManager = (getSystemService(INPUT_METHOD_SERVICE) as InputMethodManager) @@ -164,7 +164,7 @@ class ViewSourceActivity: AppCompatActivity(), UntrustedSslCertificateListener { urlEditText.setSelection(0) // Reapply the highlighting. - highlightUrlText() + UrlHelper.highlightSyntax(urlEditText, initialGrayColorSpan, finalGrayColorSpan, redColorSpan) } } @@ -377,64 +377,6 @@ class ViewSourceActivity: AppCompatActivity(), UntrustedSslCertificateListener { webViewSource.updateSource(urlEditText.text.toString(), true) } - private fun highlightUrlText() { - // Get a handle for the URL edit text. - val urlEditText = findViewById(R.id.url_edittext) - - // Get the URL string. - val urlString = urlEditText.text.toString() - - // Highlight the URL according to the protocol. - if (urlString.startsWith("file://")) { // This is a file URL. - // De-emphasize only the protocol. - urlEditText.text.setSpan(initialGrayColorSpan, 0, 7, Spanned.SPAN_INCLUSIVE_INCLUSIVE) - } else if (urlString.startsWith("content://")) { - // De-emphasize only the protocol. - urlEditText.text.setSpan(initialGrayColorSpan, 0, 10, Spanned.SPAN_INCLUSIVE_INCLUSIVE) - } else { // This is a web URL. - // Get the index of the `/` immediately after the domain name. - val endOfDomainName = urlString.indexOf("/", urlString.indexOf("//") + 2) - - // Get the base URL. - val baseUrl = if (endOfDomainName > 0) { // There is at least one character after the base URL. - // Get the base URL. - urlString.substring(0, endOfDomainName) - } else { // There are no characters after the base URL. - // Set the base URL to be the entire URL string. - urlString - } - - // Get the index of the last `.` in the domain. - val lastDotIndex = baseUrl.lastIndexOf(".") - - // Get the index of the penultimate `.` in the domain. - val penultimateDotIndex = baseUrl.lastIndexOf(".", lastDotIndex - 1) - - // Markup the beginning of the URL. - if (urlString.startsWith("http://")) { // Highlight the protocol of connections that are not encrypted. - urlEditText.text.setSpan(redColorSpan, 0, 7, Spanned.SPAN_INCLUSIVE_INCLUSIVE) - - // De-emphasize subdomains. - if (penultimateDotIndex > 0) { // There is more than one subdomain in the domain name. - urlEditText.text.setSpan(initialGrayColorSpan, 7, penultimateDotIndex + 1, Spanned.SPAN_INCLUSIVE_INCLUSIVE) - } - } else if (urlString.startsWith("https://")) { // De-emphasize the protocol of connections that are encrypted. - if (penultimateDotIndex > 0) { // There is more than one subdomain in the domain name. - // De-emphasize the protocol and the additional subdomains. - urlEditText.text.setSpan(initialGrayColorSpan, 0, penultimateDotIndex + 1, Spanned.SPAN_INCLUSIVE_INCLUSIVE) - } else { // There is only one subdomain in the domain name. - // De-emphasize only the protocol. - urlEditText.text.setSpan(initialGrayColorSpan, 0, 8, Spanned.SPAN_INCLUSIVE_INCLUSIVE) - } - } - - // De-emphasize the text after the domain name. - if (endOfDomainName > 0) { - urlEditText.text.setSpan(finalGrayColorSpan, endOfDomainName, urlString.length, Spanned.SPAN_INCLUSIVE_INCLUSIVE) - } - } - } - private fun updateLayout(urlString: String) { if (urlString.startsWith("content://")) { // This is a content URL. // Hide the unused text views.