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 47a6163bf14316b52537cef8723994906c96a572..55df3775d7ebb5e8ec12dce20bbd2dfaf0e544c6 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 7347ef3c13a1de6e70bfb2bc05a97bd4a18a7208..ac26942618dfd7cd3175118753a099d986c6be5d 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 548e7e60ad1844376cb0f87f3953fa92ba2236eb..d355afaff5cce3a56efb7ef970e1dba088ea4fee 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 ec8df29df50d25cf85e9e14ee0805254596c7825..b4184b88daf71d3dad64f2df43975250b93ebe26 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 6144abba1ca7007168de89bc8e0cc10f96f982d5..49996b3309e04a9bbfcbc3354a12ada7790fa21f 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 c442d7c28a98bb7a9f7ca496392bf0f679d6bbc1..605d8142ed7965f3342efdfb1334cccfd23d69b7 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 febf4544a97c5c8bf61f430318676cf5fe4c52e2..f494f87517da830c3de96ce0e030e0e608510cd3 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 4a0d448e8685715780fc5c2a7b59beec785a53b6..f7bc29686209314871ad90ecac885ba0f296ffdd 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 b1ee7d7c370482b1d53b5b5f36c20afc351ef689..0b2847deacc4c99be7e4570e8fbf667d66cc1d08 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 5454dda448974751ad4079b4b8f0a7628d8ad9cd..ab49fbfcfb8310a8435bdec13acd7f1d959b974d 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 dc98ae1ca257153df40e27358737598595ee8de2..fc597c9789db97f0fca04018e38fc5b721f4ad24 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 945d9b69b078f56584efb28cef25baaa7aa618d5..a419ff91030790058ecc121426d91e40bb0fd298 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 0158996f657e02aad3377bfe3fbb9d198acd47cd..032aacb07109d24d164e906a9a6b8731448addb9 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 3c7696a799a61ec8fa0139adafd2b54a14761b7f..af6d44dc510e735231fa7ad16f5f781d5a983268 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>