X-Git-Url: https://gitweb.stoutner.com/?a=blobdiff_plain;f=app%2Fsrc%2Fmain%2Fjava%2Fcom%2Fstoutner%2Fprivacybrowser%2Factivities%2FMainWebViewActivity.java;h=91c3a71ebbaa125590debe2d2bbf99ead47a0e2f;hb=31cabbff2facf185d9037588fca46b8a6e5737bc;hp=c5cb7e996d60676644948799a24875eb2fd9f4b3;hpb=b10576d7744c1bd7172f8b7b3e769f4007a4dce8;p=PrivacyBrowserAndroid.git diff --git a/app/src/main/java/com/stoutner/privacybrowser/activities/MainWebViewActivity.java b/app/src/main/java/com/stoutner/privacybrowser/activities/MainWebViewActivity.java index c5cb7e99..91c3a71e 100644 --- a/app/src/main/java/com/stoutner/privacybrowser/activities/MainWebViewActivity.java +++ b/app/src/main/java/com/stoutner/privacybrowser/activities/MainWebViewActivity.java @@ -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,6 +759,19 @@ public class MainWebViewActivity extends AppCompatActivity implements CreateBook } } } else { // The app has been restarted. + // 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); } @@ -4356,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()); @@ -5330,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);