X-Git-Url: https://gitweb.stoutner.com/?p=PrivacyBrowserAndroid.git;a=blobdiff_plain;f=app%2Fsrc%2Fmain%2Fjava%2Fcom%2Fstoutner%2Fprivacybrowser%2Fasynctasks%2FGetHostIpAddresses.java;h=811eb7d322192a445a55c1ca5d3b08f98972bd45;hp=1e004d13ba4dc4dbca8f04971686c14d623503a1;hb=86e63c8ed007311ab392d4beb7dd7ba64b9c3c70;hpb=0cc9b798d6daa99959e33ff94a707516d6db8122 diff --git a/app/src/main/java/com/stoutner/privacybrowser/asynctasks/GetHostIpAddresses.java b/app/src/main/java/com/stoutner/privacybrowser/asynctasks/GetHostIpAddresses.java index 1e004d13..811eb7d3 100644 --- a/app/src/main/java/com/stoutner/privacybrowser/asynctasks/GetHostIpAddresses.java +++ b/app/src/main/java/com/stoutner/privacybrowser/asynctasks/GetHostIpAddresses.java @@ -22,7 +22,10 @@ package com.stoutner.privacybrowser.asynctasks; import android.app.Activity; import android.os.AsyncTask; -import com.stoutner.privacybrowser.activities.MainWebViewActivity; +import androidx.fragment.app.FragmentManager; + +import com.stoutner.privacybrowser.helpers.CheckPinnedMismatchHelper; +import com.stoutner.privacybrowser.views.NestedScrollWebView; import java.lang.ref.WeakReference; import java.net.InetAddress; @@ -32,39 +35,25 @@ import java.net.UnknownHostException; public class GetHostIpAddresses extends AsyncTask { // The weak references are used to determine if the activity have disappeared while the AsyncTask is running. private final WeakReference activityWeakReference; - private final int domainSettingsDatabaseId; + private final WeakReference fragmentManagerWeakReference; + private final WeakReference nestedScrollWebViewWeakReference; - public GetHostIpAddresses(Activity activity, int domainSettingsDatabaseId) { - // Populate the weak activity reference. + public GetHostIpAddresses(Activity activity, FragmentManager fragmentManager, NestedScrollWebView nestedScrollWebView) { + // Populate the weak references. activityWeakReference = new WeakReference<>(activity); - - // Populate the domain settings database ID. - this.domainSettingsDatabaseId = domainSettingsDatabaseId; - } - - // `onPreExecute()` operates on the UI thread. - @Override - protected void onPreExecute() { - // Get a handle for the activity. - Activity activity = activityWeakReference.get(); - - // Abort if the activity is gone. - if ((activity == null) || activity.isFinishing()) { - return; - } - - // Set the getting IP addresses tracker. - MainWebViewActivity.gettingIpAddresses = true; + fragmentManagerWeakReference = new WeakReference<>(fragmentManager); + nestedScrollWebViewWeakReference = new WeakReference<>(nestedScrollWebView); } - @Override protected String doInBackground(String... domainName) { - // Get a handle for the activity. + // Get a handles for the weak references. Activity activity = activityWeakReference.get(); + FragmentManager fragmentManager = fragmentManagerWeakReference.get(); + NestedScrollWebView nestedScrollWebView = nestedScrollWebViewWeakReference.get(); - // Abort if the activity is gone. - if ((activity == null) || activity.isFinishing()) { + // Abort if the activity or its components are gone. + if ((activity == null) || activity.isFinishing() || fragmentManager == null || nestedScrollWebView == null) { // Return an empty spannable string builder. return ""; } @@ -79,16 +68,13 @@ public class GetHostIpAddresses extends AsyncTask { // Add each IP address to the string builder. for (InetAddress inetAddress : inetAddressesArray) { - if (ipAddresses.length() == 0) { // This is the first IP address. - // Add the IP address to the string builder. - ipAddresses.append(inetAddress.getHostAddress()); - } else { // This is not the first IP address. - // Add a line break to the string builder first. + // Add a line break to the string builder if this is not the first IP address. + if (ipAddresses.length() > 0) { ipAddresses.append("\n"); - - // Add the IP address to the string builder. - ipAddresses.append(inetAddress.getHostAddress()); } + + // Add the IP address to the string builder. + ipAddresses.append(inetAddress.getHostAddress()); } } catch (UnknownHostException exception) { // Do nothing. @@ -101,22 +87,22 @@ public class GetHostIpAddresses extends AsyncTask { // `onPostExecute()` operates on the UI thread. @Override protected void onPostExecute(String ipAddresses) { - // Get a handle for the activity. + // Get a handle for the activity and the nested scroll WebView. Activity activity = activityWeakReference.get(); + FragmentManager fragmentManager = fragmentManagerWeakReference.get(); + NestedScrollWebView nestedScrollWebView = nestedScrollWebViewWeakReference.get(); - // Abort if the activity is gone. - if ((activity == null) || activity.isFinishing()) { + // Abort if the activity or its components are gone. + if ((activity == null) || activity.isFinishing() || fragmentManager == null || nestedScrollWebView == null) { return; } // Store the IP addresses. - MainWebViewActivity.currentHostIpAddresses = ipAddresses; + nestedScrollWebView.setCurrentIpAddresses(ipAddresses); - if (!MainWebViewActivity.urlIsLoading) { - MainWebViewActivity.checkPinnedMismatch(domainSettingsDatabaseId); + // Checked for pinned mismatches if there is pinned information and it is not ignored. + if ((nestedScrollWebView.hasPinnedSslCertificate() || nestedScrollWebView.hasPinnedIpAddresses()) && !nestedScrollWebView.ignorePinnedDomainInformation()) { + CheckPinnedMismatchHelper.checkPinnedMismatch(fragmentManager, nestedScrollWebView); } - - // Reset the getting IP addresses tracker. - MainWebViewActivity.gettingIpAddresses = false; } } \ No newline at end of file