]> gitweb.stoutner.com Git - PrivacyBrowserAndroid.git/blobdiff - app/src/main/java/com/stoutner/privacybrowser/fragments/AboutWebViewFragment.kt
Update the URL in the copyright header. https://redmine.stoutner.com/issues/796
[PrivacyBrowserAndroid.git] / app / src / main / java / com / stoutner / privacybrowser / fragments / AboutWebViewFragment.kt
index 054d200e0236e2320aa43f8ac87d57f868a4bcbf..3f14e183bd8f00cf273e19b3c3e7b34e9b7cbf3f 100644 (file)
@@ -1,20 +1,20 @@
 /*
- * Copyright © 2016-2021 Soren Stoutner <soren@stoutner.com>.
+ * Copyright © 2016-2022 Soren Stoutner <soren@stoutner.com>.
  *
- * This file is part of Privacy Browser <https://www.stoutner.com/privacy-browser>.
+ * This file is part of Privacy Browser Android <https://www.stoutner.com/privacy-browser-android>.
  *
- * Privacy Browser is free software: you can redistribute it and/or modify
+ * Privacy Browser Android is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation, either version 3 of the License, or
  * (at your option) any later version.
  *
- * Privacy Browser is distributed in the hope that it will be useful,
+ * Privacy Browser Android is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  * GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with Privacy Browser.  If not, see <http://www.gnu.org/licenses/>.
+ * along with Privacy Browser Android.  If not, see <http://www.gnu.org/licenses/>.
  */
 
 package com.stoutner.privacybrowser.fragments
@@ -26,6 +26,7 @@ import android.os.Bundle
 import android.view.LayoutInflater
 import android.view.View
 import android.view.ViewGroup
+import android.webkit.WebResourceRequest
 import android.webkit.WebResourceResponse
 import android.webkit.WebView
 import android.webkit.WebViewClient
@@ -40,6 +41,8 @@ import com.stoutner.privacybrowser.R
 
 // Define the class constants.
 private const val TAB_NUMBER = "tab_number"
+private const val SCROLL_X = "scroll_x"
+private const val SCROLL_Y = "scroll_y"
 
 class AboutWebViewFragment : Fragment() {
     // Define the class variables.
@@ -87,7 +90,7 @@ class AboutWebViewFragment : Fragment() {
 
         // Set a WebView client.
         tabWebView.webViewClient = object : WebViewClient() {
-            // `shouldOverrideUrlLoading` allows the sending of external links back to the main Privacy Browser WebView.  The deprecated `shouldOverrideUrlLoading` must be used until API >= 24.
+            // // Send external links back to the main Privacy Browser WebView.  The deprecated `shouldOverrideUrlLoading` must be used until API >= 24.
             override fun shouldOverrideUrlLoading(view: WebView, url: String): Boolean {
                 // Create an intent to view the URL.
                 val urlIntent = Intent(Intent.ACTION_VIEW)
@@ -97,12 +100,15 @@ class AboutWebViewFragment : Fragment() {
 
                 // Make it so.
                 startActivity(urlIntent)
+                
+                // Consume the click.
                 return true
             }
-
-            override fun shouldInterceptRequest(webView: WebView, url: String): WebResourceResponse? {
-                // Have the WebView asset loader process the request.  This allows the loading of SVG files, which otherwise is prevented by the CORS policy.
-                return webViewAssetLoader.shouldInterceptRequest(Uri.parse(url))
+            
+            // Process asset requests with the asset loader.
+            override fun shouldInterceptRequest(webView: WebView, webResourceRequest: WebResourceRequest): WebResourceResponse? {
+                // This allows using the `appassets.androidplatform.net` URL, which handles the loading of SVG files, which otherwise is prevented by the CORS policy.
+                return webViewAssetLoader.shouldInterceptRequest(webResourceRequest.url)
             }
         }
 
@@ -128,8 +134,8 @@ class AboutWebViewFragment : Fragment() {
         // Scroll the tab if the saved instance state is not null.
         if (savedInstanceState != null) {
             tabWebView.post {
-                tabWebView.scrollX = savedInstanceState.getInt("scroll_x")
-                tabWebView.scrollY = savedInstanceState.getInt("scroll_y")
+                tabWebView.scrollX = savedInstanceState.getInt(SCROLL_X)
+                tabWebView.scrollY = savedInstanceState.getInt(SCROLL_Y)
             }
         }
 
@@ -146,8 +152,8 @@ class AboutWebViewFragment : Fragment() {
 
         // Save the scroll positions if the layout is not null, which can happen if a tab is not currently selected.
         if (tabWebView != null) {
-            savedInstanceState.putInt("scroll_x", tabWebView.scrollX)
-            savedInstanceState.putInt("scroll_y", tabWebView.scrollY)
+            savedInstanceState.putInt(SCROLL_X, tabWebView.scrollX)
+            savedInstanceState.putInt(SCROLL_Y, tabWebView.scrollY)
         }
     }
-}
\ No newline at end of file
+}