]> gitweb.stoutner.com Git - PrivacyBrowserAndroid.git/blobdiff - app/src/main/java/com/stoutner/privacybrowser/activities/MainWebViewActivity.java
Remove AsyncTask from SSLCertificateErrorDialog. https://redmine.stoutner.com/issues/987
[PrivacyBrowserAndroid.git] / app / src / main / java / com / stoutner / privacybrowser / activities / MainWebViewActivity.java
index 3a3db0e9f7932682b992338f0b5debff151cc87e..229ab3b6392233e6c9737fd797c88b967c81a3c5 100644 (file)
@@ -127,11 +127,11 @@ import com.google.android.material.tabs.TabLayout;
 
 import com.stoutner.privacybrowser.R;
 import com.stoutner.privacybrowser.adapters.WebViewPagerAdapter;
-import com.stoutner.privacybrowser.asynctasks.SaveUrl;
-import com.stoutner.privacybrowser.asynctasks.SaveWebpageImage;
 import com.stoutner.privacybrowser.coroutines.GetHostIpAddressesCoroutine;
 import com.stoutner.privacybrowser.coroutines.PopulateBlocklistsCoroutine;
 import com.stoutner.privacybrowser.coroutines.PrepareSaveDialogCoroutine;
+import com.stoutner.privacybrowser.coroutines.SaveUrlCoroutine;
+import com.stoutner.privacybrowser.coroutines.SaveWebpageImageCoroutine;
 import com.stoutner.privacybrowser.dataclasses.PendingDialogDataClass;
 import com.stoutner.privacybrowser.dialogs.CreateBookmarkDialog;
 import com.stoutner.privacybrowser.dialogs.CreateBookmarkFolderDialog;
@@ -363,7 +363,12 @@ public class MainWebViewActivity extends AppCompatActivity implements CreateBook
                 public void onActivityResult(Uri fileUri) {
                     // Only save the URL if the file URI is not null, which happens if the user exited the file picker by pressing back.
                     if (fileUri != null) {
-                        new SaveUrl(getApplicationContext(), resultLauncherActivityHandle, fileUri, currentWebView.getSettings().getUserAgentString(), currentWebView.getAcceptCookies()).execute(saveUrlString);
+                        // Instantiate the save URL coroutine.
+                        SaveUrlCoroutine saveUrlCoroutine = new SaveUrlCoroutine();
+
+                        // Save the URL.
+                        saveUrlCoroutine.save(getApplicationContext(), resultLauncherActivityHandle, saveUrlString, fileUri, currentWebView.getSettings().getUserAgentString(),
+                                currentWebView.getAcceptCookies());
                     }
 
                     // Reset the save URL string.
@@ -456,8 +461,11 @@ public class MainWebViewActivity extends AppCompatActivity implements CreateBook
                 public void onActivityResult(Uri fileUri) {
                     // Only save the webpage image if the file URI is not null, which happens if the user exited the file picker by pressing back.
                     if (fileUri != null) {
+                        // Instantiate the save webpage image coroutine.
+                        SaveWebpageImageCoroutine saveWebpageImageCoroutine = new SaveWebpageImageCoroutine();
+
                         // Save the webpage image.
-                        new SaveWebpageImage(resultLauncherActivityHandle, fileUri, currentWebView).execute();
+                        saveWebpageImageCoroutine.save(resultLauncherActivityHandle, fileUri, currentWebView);
                     }
                 }
             });
@@ -751,8 +759,18 @@ public class MainWebViewActivity extends AppCompatActivity implements CreateBook
                 }
             }
         } else {  // The app has been restarted.
-            // Set the saved tab position to be the size of the saved state array list.  The tab position is 0 based, meaning the at the new tab will be the tab position that is restored.
-            savedTabPosition = savedStateArrayList.size();
+            // Get the information from the intent.
+            String intentAction = intent.getAction();
+            Uri intentUriData = intent.getData();
+            String intentStringExtra = intent.getStringExtra(Intent.EXTRA_TEXT);
+
+            // Determine if this is a web search.
+            boolean isWebSearch = ((intentAction != null) && intentAction.equals(Intent.ACTION_WEB_SEARCH));
+
+            // If the new intent will open a new tab, set the saved tab position to be the size of the saved state array list.
+            // The tab position is 0 based, meaning the at the new tab will be the tab position that is restored.
+            if (intentUriData != null || intentStringExtra != null || isWebSearch)
+                savedTabPosition = savedStateArrayList.size();
 
             // Replace the intent that started the app with this one.  This will load the tab after the others have been restored.
             setIntent(intent);
@@ -2603,7 +2621,7 @@ public class MainWebViewActivity extends AppCompatActivity implements CreateBook
                         startActivity(emailIntent);
                     } catch (ActivityNotFoundException exception) {
                         // Display a snackbar.
-                        Snackbar.make(currentWebView, getString(R.string.error) + "  " + exception, Snackbar.LENGTH_INDEFINITE).show();
+                        Snackbar.make(currentWebView, getString(R.string.error) + exception, Snackbar.LENGTH_INDEFINITE).show();
                     }
 
                     // Consume the event.
@@ -2932,7 +2950,7 @@ public class MainWebViewActivity extends AppCompatActivity implements CreateBook
                 currentWebView.loadUrl(temporaryMhtFile.toString());
             } catch (Exception exception) {
                 // Display a snackbar.
-                Snackbar.make(currentWebView, getString(R.string.error) + "  " + exception, Snackbar.LENGTH_INDEFINITE).show();
+                Snackbar.make(currentWebView, getString(R.string.error) + exception, Snackbar.LENGTH_INDEFINITE).show();
             }
         } else {  // Let the WebView handle opening of the file.
             // Open the file.
@@ -4308,7 +4326,7 @@ public class MainWebViewActivity extends AppCompatActivity implements CreateBook
             startActivity(openWithAppIntent);
         } catch (ActivityNotFoundException exception) {  // There are no apps available to open the URL.
             // Show a snackbar with the error.
-            Snackbar.make(currentWebView, getString(R.string.error) + "  " + exception, Snackbar.LENGTH_INDEFINITE).show();
+            Snackbar.make(currentWebView, getString(R.string.error) + exception, Snackbar.LENGTH_INDEFINITE).show();
         }
     }
 
@@ -4328,7 +4346,7 @@ public class MainWebViewActivity extends AppCompatActivity implements CreateBook
             startActivity(openWithBrowserIntent);
         } catch (ActivityNotFoundException exception) {  // There are no browsers available to open the URL.
             // Show a snackbar with the error.
-            Snackbar.make(currentWebView, getString(R.string.error) + "  " + exception, Snackbar.LENGTH_INDEFINITE).show();
+            Snackbar.make(currentWebView, getString(R.string.error) + exception, Snackbar.LENGTH_INDEFINITE).show();
         }
     }
 
@@ -4359,7 +4377,7 @@ public class MainWebViewActivity extends AppCompatActivity implements CreateBook
             // Add the first tab.
             addNewTab("", true);
         } else {  // The activity has been restarted.
-            // Restore each tab.  Once the minimum API >= 24, a `forEach()` command can be used.
+            // Restore each tab.
             for (int i = 0; i < savedStateArrayList.size(); i++) {
                 // Add a new tab.
                 tabLayout.addTab(tabLayout.newTab());
@@ -5333,9 +5351,11 @@ public class MainWebViewActivity extends AppCompatActivity implements CreateBook
 
         nestedScrollWebView.setWebViewClient(new WebViewClient() {
             // `shouldOverrideUrlLoading` makes this WebView the default handler for URLs inside the app, so that links are not kicked out to other apps.
-            // The deprecated `shouldOverrideUrlLoading` must be used until API >= 24.
             @Override
-            public boolean shouldOverrideUrlLoading(WebView view, String url) {
+            public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest webResourceRequest) {
+                // Get the URL from the web resource request.
+                String url = webResourceRequest.getUrl().toString();
+
                 // Sanitize the url.
                 url = sanitizeUrl(url);
 
@@ -5362,7 +5382,7 @@ public class MainWebViewActivity extends AppCompatActivity implements CreateBook
                         startActivity(emailIntent);
                     } catch (ActivityNotFoundException exception) {
                         // Display a snackbar.
-                        Snackbar.make(currentWebView, getString(R.string.error) + "  " + exception, Snackbar.LENGTH_INDEFINITE).show();
+                        Snackbar.make(currentWebView, getString(R.string.error) + exception, Snackbar.LENGTH_INDEFINITE).show();
                     }
 
 
@@ -5383,7 +5403,7 @@ public class MainWebViewActivity extends AppCompatActivity implements CreateBook
                         startActivity(dialIntent);
                     } catch (ActivityNotFoundException exception) {
                         // Display a snackbar.
-                        Snackbar.make(currentWebView, getString(R.string.error) + "  " + exception, Snackbar.LENGTH_INDEFINITE).show();
+                        Snackbar.make(currentWebView, getString(R.string.error) + exception, Snackbar.LENGTH_INDEFINITE).show();
                     }
 
                     // Returning true indicates Privacy Browser is handling the URL by creating an intent.
@@ -5405,7 +5425,7 @@ public class MainWebViewActivity extends AppCompatActivity implements CreateBook
                     try {
                         startActivity(genericIntent);
                     } catch (ActivityNotFoundException exception) {
-                        Snackbar.make(nestedScrollWebView, getString(R.string.unrecognized_url) + "  " + url, Snackbar.LENGTH_SHORT).show();
+                        Snackbar.make(nestedScrollWebView, getString(R.string.unrecognized_url) + url, Snackbar.LENGTH_SHORT).show();
                     }
 
                     // Returning true indicates Privacy Browser is handling the URL by creating an intent.
@@ -5832,7 +5852,7 @@ public class MainWebViewActivity extends AppCompatActivity implements CreateBook
 
                 if ((currentDomainName != null) && !currentDomainName.isEmpty()) {
                     // Get the IP addresses for the current URI.
-                    GetHostIpAddressesCoroutine.getAddresses(currentDomainName, nestedScrollWebView, getSupportFragmentManager(), getString(R.string.pinned_mismatch));
+                    GetHostIpAddressesCoroutine.checkPinnedMismatch(currentDomainName, nestedScrollWebView, getSupportFragmentManager(), getString(R.string.pinned_mismatch));
                 }
 
                 // Replace Refresh with Stop if the options menu has been created.  (The first WebView typically begins loading before the menu items are instantiated.)