Don't reload web pages on a new intent unless the intent contains a new URL. Fixes...
authorSoren Stoutner <soren@stoutner.com>
Tue, 6 Mar 2018 04:17:42 +0000 (21:17 -0700)
committerSoren Stoutner <soren@stoutner.com>
Tue, 6 Mar 2018 04:17:42 +0000 (21:17 -0700)
14 files changed:
app/build.gradle
app/src/main/assets/de/about_changelog_dark.html
app/src/main/assets/de/about_changelog_light.html
app/src/main/assets/en/about_changelog_dark.html
app/src/main/assets/en/about_changelog_light.html
app/src/main/assets/es/about_changelog_dark.html
app/src/main/assets/es/about_changelog_light.html
app/src/main/assets/it/about_changelog_dark.html
app/src/main/assets/it/about_changelog_light.html
app/src/main/assets/ru/about_changelog_dark.html
app/src/main/assets/ru/about_changelog_light.html
app/src/main/java/com/stoutner/privacybrowser/activities/GuideActivity.java
app/src/main/java/com/stoutner/privacybrowser/activities/MainWebViewActivity.java
app/src/main/res/values-es/strings.xml

index 47a6163..55df377 100644 (file)
@@ -65,7 +65,7 @@ android {
 
 dependencies {
     implementation fileTree(include: ['*.jar'], dir: 'libs')
-    implementation 'com.android.support:design:27.1.0'
+    implementation 'com.android.support:design:27.0.2'
     // Only compile `com.google.firebase:firebase-ads` for the free flavor.
     freeImplementation 'com.google.firebase:firebase-ads:11.8.0'
 }
index 7347ef3..ac26942 100644 (file)
@@ -30,7 +30,7 @@
 
     <body>
         <h3>2.8.1 (version code 31)</h3>
-        <p>1 March 2018 - minimum API 19, target API 27</p>
+        <p><a href="https://git.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=8d1060fb1148d2d2fd7af8261dc9956c3a5687a1">1 March 2018</a> - minimum API 19, target API 27</p>
         <ul>
             <li>Workaround a bug in recent versions of Android’s WebView that <a href="https://redmine.stoutner.com/issues/253">prevented users from saving cookies</a> when desired.</li>
         </ul>
index 548e7e6..d355afa 100644 (file)
@@ -30,7 +30,7 @@
 
     <body>
         <h3>2.8.1 (version code 31)</h3>
-        <p>1 March 2018 - minimum API 19, target API 27</p>
+        <p><a href="https://git.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=8d1060fb1148d2d2fd7af8261dc9956c3a5687a1">1 March 2018</a> - minimum API 19, target API 27</p>
         <ul>
             <li>Workaround a bug in recent versions of Android’s WebView that <a href="https://redmine.stoutner.com/issues/253">prevented users from saving cookies</a> when desired.</li>
         </ul>
index ec8df29..b4184b8 100644 (file)
@@ -25,7 +25,7 @@
 
     <body>
         <h3>2.8.1 (version code 31)</h3>
-        <p>1 March 2018 - minimum API 19, target API 27</p>
+        <p><a href="https://git.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=8d1060fb1148d2d2fd7af8261dc9956c3a5687a1">1 March 2018</a> - minimum API 19, target API 27</p>
         <ul>
             <li>Workaround a bug in recent versions of Android’s WebView that <a href="https://redmine.stoutner.com/issues/253">prevented users from saving cookies</a> when desired.</li>
         </ul>
index 6144abb..49996b3 100644 (file)
@@ -25,7 +25,7 @@
 
     <body>
         <h3>2.8.1 (version code 31)</h3>
-        <p>1 March 2018 - minimum API 19, target API 27</p>
+        <p><a href="https://git.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=8d1060fb1148d2d2fd7af8261dc9956c3a5687a1">1 March 2018</a> - minimum API 19, target API 27</p>
         <ul>
             <li>Workaround a bug in recent versions of Android’s WebView that <a href="https://redmine.stoutner.com/issues/253">prevented users from saving cookies</a> when desired.</li>
         </ul>
index c442d7c..605d814 100644 (file)
@@ -27,7 +27,7 @@
 
     <body>
         <h3>2.8.1 (código de versión 31)</h3>
-        <p>1 de marzo de 2018 - API mínimo 19, API dirigido 27</p>
+        <p><a href="https://git.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=8d1060fb1148d2d2fd7af8261dc9956c3a5687a1">1 de marzo de 2018</a> - API mínimo 19, API dirigido 27</p>
         <ul>
             <li>Solución a un error en versiones recientes del WebView de Android que <a href="https://redmine.stoutner.com/issues/253">impedía a los usuarios guardar cookies</a> cuando lo deseaban.</li>
         </ul>
index febf454..f494f87 100644 (file)
@@ -27,7 +27,7 @@
 
     <body>
         <h3>2.8.1 (código de versión 31)</h3>
-        <p>1 de marzo de 2018 - API mínimo 19, API dirigido 27</p>
+        <p><a href="https://git.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=8d1060fb1148d2d2fd7af8261dc9956c3a5687a1">1 de marzo de 2018</a> - API mínimo 19, API dirigido 27</p>
         <ul>
             <li>Solución a un error en versiones recientes del WebView de Android que <a href="https://redmine.stoutner.com/issues/253">impedía a los usuarios guardar cookies</a> cuando lo deseaban.</li>
         </ul>
index 4a0d448..f7bc296 100644 (file)
@@ -27,7 +27,7 @@
 
     <body>
         <h3>2.8.1 (versione codice 31)</h3>
-        <p>1 Marzo 2018 - minima API 19, target API 27</p>
+        <p><a href="https://git.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=8d1060fb1148d2d2fd7af8261dc9956c3a5687a1">1 Marzo 2018</a> - minima API 19, target API 27</p>
         <ul>
             <li>Correzione di un baco dovuto alle più recenti versioni della WebView di Android che <a href="https://redmine.stoutner.com/issues/253">impediva il salvataggio dei cookies agli utenti</a>
                 quando desideravano farlo.</li>
index b1ee7d7..0b2847d 100644 (file)
@@ -27,7 +27,7 @@
 
     <body>
         <h3>2.8.1 (versione codice 31)</h3>
-        <p>1 Marzo 2018 - minima API 19, target API 27</p>
+        <p><a href="https://git.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=8d1060fb1148d2d2fd7af8261dc9956c3a5687a1">1 Marzo 2018</a> - minima API 19, target API 27</p>
         <ul>
             <li>Correzione di un baco dovuto alle più recenti versioni della WebView di Android che <a href="https://redmine.stoutner.com/issues/253">impediva il salvataggio dei cookies agli utenti</a>
                 quando desideravano farlo.</li>
index 5454dda..ab49fbf 100644 (file)
@@ -25,7 +25,7 @@
 
     <body>
         <h3>2.8.1 (код версии 31)</h3>
-        <p>1 марта 2018 - minimum API 19, target API 27</p>
+        <p><a href="https://git.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=8d1060fb1148d2d2fd7af8261dc9956c3a5687a1">1 марта 2018</a> - minimum API 19, target API 27</p>
         <ul>
             <li>Исправление ошибки, препятствовавшей принудительному сохранению файлов cookie <a href="https://redmine.stoutner.com/issues/253">при использовании последних версий Android WebView</a>.</li>
         </ul>
index dc98ae1..fc597c9 100644 (file)
@@ -25,7 +25,7 @@
 
     <body>
         <h3>2.8.1 (код версии 31)</h3>
-        <p>1 марта 2018 - minimum API 19, target API 27</p>
+        <p><a href="https://git.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=8d1060fb1148d2d2fd7af8261dc9956c3a5687a1">1 марта 2018</a> - minimum API 19, target API 27</p>
         <ul>
             <li>Исправление ошибки, препятствовавшей принудительному сохранению файлов cookie <a href="https://redmine.stoutner.com/issues/253">при использовании последних версий Android WebView</a>.</li>
         </ul>
index 945d9b6..a419ff9 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright © 2016-2017 Soren Stoutner <soren@stoutner.com>.
+ * Copyright © 2016-2018 Soren Stoutner <soren@stoutner.com>.
  *
  * This file is part of Privacy Browser <https://www.stoutner.com/privacy-browser>.
  *
@@ -49,7 +49,7 @@ public class GuideActivity extends AppCompatActivity {
         setContentView(R.layout.guide_coordinatorlayout);
 
         // We need to use `SupportActionBar` from `android.support.v7.app.ActionBar` until the minimum API is >= 21.
-        Toolbar guideAppBar = (Toolbar) findViewById(R.id.guide_toolbar);
+        Toolbar guideAppBar = findViewById(R.id.guide_toolbar);
         setSupportActionBar(guideAppBar);
 
         // Display the home arrow on `ppBar`.
@@ -58,12 +58,12 @@ public class GuideActivity extends AppCompatActivity {
         appBar.setDisplayHomeAsUpEnabled(true);
 
         //  Setup the ViewPager.
-        ViewPager aboutViewPager = (ViewPager) findViewById(R.id.guide_viewpager);
+        ViewPager aboutViewPager = findViewById(R.id.guide_viewpager);
         assert aboutViewPager != null; // This assert removes the incorrect warning in Android Studio on the following line that aboutViewPager might be null.
         aboutViewPager.setAdapter(new guidePagerAdapter(getSupportFragmentManager()));
 
         // Setup the TabLayout and connect it to the ViewPager.
-        TabLayout aboutTabLayout = (TabLayout) findViewById(R.id.guide_tablayout);
+        TabLayout aboutTabLayout = findViewById(R.id.guide_tablayout);
         assert aboutTabLayout != null; // This assert removes the incorrect warning in Android Studio on the following line that aboutTabLayout might be null.
         aboutTabLayout.setupWithViewPager(aboutViewPager);
     }
index 0158996..032aacb 100644 (file)
@@ -301,6 +301,9 @@ public class MainWebViewActivity extends AppCompatActivity implements AddDomainD
     // `reapplyDomainSettingsOnRestart` is used in `onCreate()`, `onOptionsItemSelected()`, `onNavigationItemSelected()`, `onRestart()`, and `onAddDomain()`, .
     private boolean reapplyDomainSettingsOnRestart;
 
+    // `returnFromSettings` is used in `onNavigationItemSelected()` and `onRestart()`.
+    private boolean returnFromSettings;
+
     // `currentDomainName` is used in `onCreate()`, `onOptionsItemSelected()`, `onNavigationItemSelected()`, `onAddDomain()`, and `applyDomainSettings()`.
     private String currentDomainName;
 
@@ -1162,7 +1165,7 @@ public class MainWebViewActivity extends AppCompatActivity implements AddDomainD
             @Override
             public void onPageFinished(WebView view, String url) {
                 // Flush any cookies to persistent storage.  `CookieManager` has become very lazy about flushing cookies in recent versions.
-                if (Build.VERSION.SDK_INT >= 21) {
+                if (firstPartyCookiesEnabled && Build.VERSION.SDK_INT >= 21) {
                     cookieManager.flush();
                 }
 
@@ -1332,22 +1335,23 @@ public class MainWebViewActivity extends AppCompatActivity implements AddDomainD
         // 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);
 
+        // Check to see if the intent contains a new URL.
         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);
 
-        // Load the website.
-        loadUrl(formattedUrlString);
+            // Close the navigation drawer if it is open.
+            if (drawerLayout.isDrawerVisible(GravityCompat.START)) {
+                drawerLayout.closeDrawer(GravityCompat.START);
+            }
 
-        // Clear the keyboard if displayed and remove the focus on the urlTextBar if it has it.
-        mainWebView.requestFocus();
+            // Clear the keyboard if displayed and remove the focus on the urlTextBar if it has it.
+            mainWebView.requestFocus();
+        }
     }
 
     @Override
@@ -1355,25 +1359,19 @@ public class MainWebViewActivity extends AppCompatActivity implements AddDomainD
         // Run the default commands.
         super.onRestart();
 
-        // Apply the app settings, which may have been changed in `SettingsActivity`.
-        applyAppSettings();
+        // Apply the app settings if returning from the Settings activity..
+        if (returnFromSettings) {
+            // Reset the return from settings flag.
+            returnFromSettings = false;
 
-        // Apply the domain settings if returning from the Domains Activity.
-        if (reapplyDomainSettingsOnRestart) {
-            // Reset `reapplyDomainSettingsOnRestart`.
-            reapplyDomainSettingsOnRestart = false;
+            // Apply the app settings.
+            applyAppSettings();
 
-            // Reapply the domain settings.
-            applyDomainSettings(formattedUrlString);
+            // Set the display webpage images mode.
+            setDisplayWebpageImages();
         }
 
-        // Update the privacy icon.  `true` runs `invalidateOptionsMenu` as the last step.
-        updatePrivacyIcons(true);
-
-        // Set the display webpage images mode.
-        setDisplayWebpageImages();
-
-        // Reload the webpage if displaying of images has been disabled in `SettingsFragment`.
+        // Reload the webpage if displaying of images has been disabled in the Settings activity.
         if (reloadOnRestart) {
             // Reload `mainWebView`.
             mainWebView.reload();
@@ -1382,6 +1380,15 @@ public class MainWebViewActivity extends AppCompatActivity implements AddDomainD
             reloadOnRestart = false;
         }
 
+        // Apply the domain settings if returning from the Domains activity.
+        if (reapplyDomainSettingsOnRestart) {
+            // Reset `reapplyDomainSettingsOnRestart`.
+            reapplyDomainSettingsOnRestart = false;
+
+            // Reapply the domain settings.
+            applyDomainSettings(formattedUrlString);
+        }
+
         // Load the URL on restart to apply changes to night mode.
         if (loadUrlOnRestart) {
             // Load the current `formattedUrlString`.
@@ -1391,7 +1398,7 @@ public class MainWebViewActivity extends AppCompatActivity implements AddDomainD
             loadUrlOnRestart = false;
         }
 
-        //
+        // Update the bookmarks drawer if returning from the Bookmarks activity.
         if (restartFromBookmarksActivity) {
             // Close the bookmarks drawer.
             drawerLayout.closeDrawer(GravityCompat.END);
@@ -1402,6 +1409,9 @@ public class MainWebViewActivity extends AppCompatActivity implements AddDomainD
             // Reset `restartFromBookmarksActivity`.
             restartFromBookmarksActivity = false;
         }
+
+        // Update the privacy icon.  `true` runs `invalidateOptionsMenu` as the last step.
+        updatePrivacyIcons(true);
     }
 
     // `onResume()` runs after `onStart()`, which runs after `onCreate()` and `onRestart()`.
@@ -2029,6 +2039,9 @@ public class MainWebViewActivity extends AppCompatActivity implements AddDomainD
                 reapplyDomainSettingsOnRestart = true;
                 currentDomainName = "";
 
+                // Mark a flag to reapply app settings on restart only when returning from Settings.
+                returnFromSettings = true;
+
                 // Launch `SettingsActivity`.
                 Intent settingsIntent = new Intent(this, SettingsActivity.class);
                 startActivity(settingsIntent);
index 3c7696a..af6d44d 100644 (file)
         <string name="incognito_mode_summary">Borrar el historial y el caché después de que cada página web termine de cargar.</string>
         <string name="do_not_track">No rastrear</string>
         <string name="do_not_track_summary">Enviar la cabecera de no rastrear (DNT) que educadamente sugiere que los servidores web no rastreen este navegador.</string>
-    <string name="block_lists">Bloquear listas</string>
+    <string name="block_lists">Listas de bloqueo</string>
         <string name="easylist">EasyList</string>
         <string name="easylist_summary">Lista principal de bloqueo de anuncios.</string>
         <string name="easyprivacy">EasyPrivacy</string>