// and `ViewSslCertificateDialog`. It is also used in `onCreate()`.
public static SslCertificate sslCertificate;
- // `orbotStatus` is public static so it can be accessed from `OrbotProxyHelper`. It is also used in `onCreate()`.
+ // `orbotStatus` is public static so it can be accessed from `OrbotProxyHelper`. It is also used in `onCreate()` and `onResume()`.
public static String orbotStatus;
// `webViewTitle` is public static so it can be accessed from `CreateBookmarkDialog` and `CreateHomeScreenShortcutDialog`. It is also used in `onCreate()`.
// `ignorePinnedSslCertificateForDomain` is used in `onCreate()`, `onSslMismatchProceed()`, and `applyDomainSettings()`.
private boolean ignorePinnedSslCertificate;
- // `waitingForOrbot` is used in `onCreate()` and `applyAppSettings()`.
+ // `waitingForOrbot` is used in `onCreate()`, `onResume()`, and `applyAppSettings()`.
private boolean waitingForOrbot;
// `domainSettingsApplied` is used in `prepareOptionsMenu()`, `applyDomainSettings()`, and `setDisplayWebpageImages()`.
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
if (url.startsWith("http")) { // Load the URL in Privacy Browser.
+ // Reset the formatted URL string so the page will load correctly if blocking of third-party requests is enabled.
+ formattedUrlString = "";
+
// Apply the domain settings for the new URL. `applyDomainSettings` doesn't do anything if the domain has not changed.
applyDomainSettings(url, true, false);
// Initialize the third party request tracker.
boolean isThirdPartyRequest = false;
- //
+ // Initialize the current domain string.
String currentDomain = "";
// Nobody is happy when comparing null strings.
// Apply any custom domain settings if the URL was loaded by navigating history.
if (navigatingHistory) {
+ // Reset `navigatingHistory`.
+ navigatingHistory = false;
+
+ // Apply the domain settings.
applyDomainSettings(url, true, false);
}
// The AdView is destroyed and recreated, which changes the ID, every time it is reloaded to handle possible rotations.
AdHelper.resumeAd(findViewById(R.id.adview));
}
+
+ // Display a message to the user if waiting for Orbot.
+ if (waitingForOrbot && !orbotStatus.equals("ON")) {
+ // Load a waiting page. `null` specifies no encoding, which defaults to ASCII.
+ mainWebView.loadData(waitingForOrbotHTMLString, "text/html", null);
+ }
}
@Override
case R.id.back:
if (mainWebView.canGoBack()) {
+ // Reset the formatted URL string so the page will load correctly if blocking of third-party requests is enabled.
+ formattedUrlString = "";
+
// Set `navigatingHistory` so that the domain settings are applied when the new URL is loaded.
navigatingHistory = true;
case R.id.forward:
if (mainWebView.canGoForward()) {
+ // Reset the formatted URL string so the page will load correctly if blocking of third-party requests is enabled.
+ formattedUrlString = "";
+
// Set `navigatingHistory` so that the domain settings are applied when the new URL is loaded.
navigatingHistory = true;
@Override
public void onSslMismatchBack() {
if (mainWebView.canGoBack()) { // There is a back page in the history.
+ // Reset the formatted URL string so the page will load correctly if blocking of third-party requests is enabled.
+ formattedUrlString = "";
+
// Set `navigatingHistory` so that the domain settings are applied when the new URL is loaded.
navigatingHistory = true;
@Override
public void onUrlHistoryEntrySelected(int moveBackOrForwardSteps) {
+ // Reset the formatted URL string so the page will load correctly if blocking of third-party requests is enabled.
+ formattedUrlString = "";
+
// Set `navigatingHistory` so that the domain settings are applied when the new URL is loaded.
navigatingHistory = true;
}
} else if (mainWebView.canGoBack()) { // There is at least one item in the `WebView` history.
+ // Reset the formatted URL string so the page will load correctly if blocking of third-party requests is enabled.
+ formattedUrlString = "";
+
// Set `navigatingHistory` so that the domain settings are applied when the new URL is loaded.
navigatingHistory = true;
appBar.setBackgroundDrawable(ContextCompat.getDrawable(this, R.color.blue_50));
}
- // Display a message to the user if we are waiting on Orbot.
+ // Display a message to the user if waiting for Orbot.
if (!orbotStatus.equals("ON")) {
// Set `waitingForOrbot`.
waitingForOrbot = true;
// The deprecated `.getDrawable()` must be used until the minimum API >= 21.
@SuppressWarnings("deprecation")
private void applyDomainSettings(String url, boolean resetFavoriteIcon, boolean reloadWebsite) {
- // Reset `navigatingHistory`.
- navigatingHistory = false;
-
// Parse the URL into a URI.
Uri uri = Uri.parse(url);