Fix loading of new intents failing due to display images code.
[PrivacyBrowser.git] / app / src / main / java / com / stoutner / privacybrowser / activities / MainWebViewActivity.java
index 0c80f526d32c53e9aeefc51249479bdbd408a2cd..107a9cee6a83d538ff49b724f39f51f3da3b139a 100644 (file)
@@ -205,7 +205,7 @@ public class MainWebViewActivity extends AppCompatActivity implements Navigation
     private boolean adBlockerEnabled;
 
     // `privacyBrowserRuntime` is used in `onCreate()` and `applyAppSettings()`.
-    Runtime privacyBrowserRuntime;
+    private Runtime privacyBrowserRuntime;
 
     // `incognitoModeEnabled` is used in `onCreate()` and `applyAppSettings()`.
     private boolean incognitoModeEnabled;
@@ -237,6 +237,9 @@ public class MainWebViewActivity extends AppCompatActivity implements Navigation
     // `onTheFlyDisplayImagesSet` is used in `applyDomainSettings()` and `setDisplayWebpageImages()`.
     private boolean onTheFlyDisplayImagesSet;
 
+    // `loadingNewIntentBoolean` is used in `onNewIntent()` and `onRestart()`.
+    private boolean loadingNewIntentBoolean;
+
     // `waitingForOrbotData` is used in `onCreate()` and `applyAppSettings()`.
     private String waitingForOrbotHTMLString;
 
@@ -906,6 +909,32 @@ public class MainWebViewActivity extends AppCompatActivity implements Navigation
         }
     }
 
+    @Override
+    protected void onNewIntent(Intent intent) {
+        // Set `loadingNewIntentBoolean`.
+        loadingNewIntentBoolean = true;
+
+        // Sets the new intent as the activity intent, so that any future `getIntent()`s pick up this one instead of creating a new activity.
+        setIntent(intent);
+
+        if (intent.getData() != null) {
+            // Get the intent data and convert it to a string.
+            final Uri intentUriData = intent.getData();
+            formattedUrlString = intentUriData.toString();
+        }
+
+        // Close the navigation drawer if it is open.
+        if (drawerLayout.isDrawerVisible(GravityCompat.START)) {
+            drawerLayout.closeDrawer(GravityCompat.START);
+        }
+
+        // Load the website.
+        loadUrl(formattedUrlString);
+
+        // Clear the keyboard if displayed and remove the focus on the urlTextBar if it has it.
+        mainWebView.requestFocus();
+    }
+
     @Override
     public void onRestart() {
         super.onRestart();
@@ -919,8 +948,14 @@ public class MainWebViewActivity extends AppCompatActivity implements Navigation
         // Set the display webpage images mode.
         setDisplayWebpageImages();
 
-        // Reload the webpage to remove images if `setDisplayWebpageImages` has turned them off.
-        mainWebView.reload();
+        // Only reload `mainWebView` if not loading a new intent.
+        if (!loadingNewIntentBoolean) {
+            // Reload the webpage to remove images if `setDisplayWebpageImages` has turned them off.
+            mainWebView.reload();
+        } else {
+            // Reset `loadingNewIntentBoolean`.
+            loadingNewIntentBoolean = false;
+        }
     }
 
     // `onResume()` runs after `onStart()`, which runs after `onCreate()` and `onRestart()`.
@@ -956,29 +991,6 @@ public class MainWebViewActivity extends AppCompatActivity implements Navigation
         super.onPause();
     }
 
-    @Override
-    protected void onNewIntent(Intent intent) {
-        // Sets the new intent as the activity intent, so that any future `getIntent()`s pick up this one instead of creating a new activity.
-        setIntent(intent);
-
-        if (intent.getData() != null) {
-            // Get the intent data and convert it to a string.
-            final Uri intentUriData = intent.getData();
-            formattedUrlString = intentUriData.toString();
-        }
-
-        // Close the navigation drawer if it is open.
-        if (drawerLayout.isDrawerVisible(GravityCompat.START)) {
-            drawerLayout.closeDrawer(GravityCompat.START);
-        }
-
-        // Load the website.
-        loadUrl(formattedUrlString);
-
-        // Clear the keyboard if displayed and remove the focus on the urlTextBar if it has it.
-        mainWebView.requestFocus();
-    }
-
     @Override
     public boolean onCreateOptionsMenu(Menu menu) {
         // Inflate the menu; this adds items to the action bar if it is present.