X-Git-Url: https://gitweb.stoutner.com/?p=PrivacyBrowserAndroid.git;a=blobdiff_plain;f=app%2Fsrc%2Fmain%2Fjava%2Fcom%2Fstoutner%2Fprivacybrowser%2Factivities%2FMainWebViewActivity.java;h=111cb63416c94f40cd4967122996b55bf491bde1;hp=ef226d7f5b9c6cbd29613b468ce55f9acae707f1;hb=8a06558b0071fa94e2a7d1093b3118417ac5cc8f;hpb=e5ab0aa3f50e3938243e7c2ba1c3b1df0f9fd6c3 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 ef226d7f..111cb634 100644 --- a/app/src/main/java/com/stoutner/privacybrowser/activities/MainWebViewActivity.java +++ b/app/src/main/java/com/stoutner/privacybrowser/activities/MainWebViewActivity.java @@ -597,14 +597,16 @@ public class MainWebViewActivity extends AppCompatActivity implements CreateBook // Get the nested scroll WebView from the tab fragment. NestedScrollWebView nestedScrollWebView = fragmentView.findViewById(R.id.nestedscroll_webview); - // Resume the nested scroll WebView JavaScript timers. - nestedScrollWebView.resumeTimers(); - // Resume the nested scroll WebView. nestedScrollWebView.onResume(); } } + // Resume the nested scroll WebView JavaScript timers. This is a global command that resumes JavaScript timers on all WebViews. + if (currentWebView != null) { + currentWebView.resumeTimers(); + } + // Reapply the proxy settings if the system is using a proxy. This redisplays the appropriate alert dialog. if (!proxyMode.equals(ProxyHelper.NONE)) { applyProxy(false); @@ -648,12 +650,14 @@ public class MainWebViewActivity extends AppCompatActivity implements CreateBook // Pause the nested scroll WebView. nestedScrollWebView.onPause(); - - // Pause the nested scroll WebView JavaScript timers. - nestedScrollWebView.pauseTimers(); } } + // Pause the WebView JavaScript timers. This is a global command that pauses JavaScript on all WebViews. + if (currentWebView != null) { + currentWebView.pauseTimers(); + } + // Pause the ad or it will continue to consume resources in the background on the free flavor. if (BuildConfig.FLAVOR.contentEquals("free")) { // Pause the ad. @@ -743,9 +747,9 @@ public class MainWebViewActivity extends AppCompatActivity implements CreateBook updatePrivacyIcons(false); // Get handles for the menu items. + MenuItem bookmarksMenuItem = menu.findItem(R.id.bookmarks); MenuItem toggleFirstPartyCookiesMenuItem = menu.findItem(R.id.toggle_first_party_cookies); MenuItem toggleThirdPartyCookiesMenuItem = menu.findItem(R.id.toggle_third_party_cookies); - MenuItem toggleDomStorageMenuItem = menu.findItem(R.id.toggle_dom_storage); MenuItem toggleSaveFormDataMenuItem = menu.findItem(R.id.toggle_save_form_data); // Form data can be removed once the minimum API >= 26. MenuItem clearFormDataMenuItem = menu.findItem(R.id.clear_form_data); // Form data can be removed once the minimum API >= 26. MenuItem refreshMenuItem = menu.findItem(R.id.refresh); @@ -771,18 +775,18 @@ public class MainWebViewActivity extends AppCompatActivity implements CreateBook // Get the shared preferences. SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this); - // Get the dark theme and app bar preferences.. - boolean displayAdditionalAppBarIcons = sharedPreferences.getBoolean("display_additional_app_bar_icons", false); + // Get the dark theme and app bar preferences. + boolean displayAdditionalAppBarIcons = sharedPreferences.getBoolean(getString(R.string.display_additional_app_bar_icons_key), false); // Set the status of the additional app bar icons. Setting the refresh menu item to `SHOW_AS_ACTION_ALWAYS` makes it appear even on small devices like phones. if (displayAdditionalAppBarIcons) { - toggleFirstPartyCookiesMenuItem.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM); - toggleDomStorageMenuItem.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM); refreshMenuItem.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS); + bookmarksMenuItem.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM); + toggleFirstPartyCookiesMenuItem.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM); } else { //Do not display the additional icons. - toggleFirstPartyCookiesMenuItem.setShowAsAction(MenuItem.SHOW_AS_ACTION_NEVER); - toggleDomStorageMenuItem.setShowAsAction(MenuItem.SHOW_AS_ACTION_NEVER); refreshMenuItem.setShowAsAction(MenuItem.SHOW_AS_ACTION_NEVER); + bookmarksMenuItem.setShowAsAction(MenuItem.SHOW_AS_ACTION_NEVER); + toggleFirstPartyCookiesMenuItem.setShowAsAction(MenuItem.SHOW_AS_ACTION_NEVER); } // Replace Refresh with Stop if a URL is already loading. @@ -797,9 +801,9 @@ public class MainWebViewActivity extends AppCompatActivity implements CreateBook // Set the icon according to the current theme status. if (currentThemeStatus == Configuration.UI_MODE_NIGHT_NO) { - refreshMenuItem.setIcon(R.drawable.close_day); + refreshMenuItem.setIcon(R.drawable.close_blue_day); } else { - refreshMenuItem.setIcon(R.drawable.close_night); + refreshMenuItem.setIcon(R.drawable.close_blue_night); } } } @@ -4392,7 +4396,6 @@ public class MainWebViewActivity extends AppCompatActivity implements CreateBook // Get handles for the menu items. MenuItem privacyMenuItem = optionsMenu.findItem(R.id.toggle_javascript); MenuItem firstPartyCookiesMenuItem = optionsMenu.findItem(R.id.toggle_first_party_cookies); - MenuItem domStorageMenuItem = optionsMenu.findItem(R.id.toggle_dom_storage); MenuItem refreshMenuItem = optionsMenu.findItem(R.id.refresh); // Update the privacy icon. @@ -4418,30 +4421,23 @@ public class MainWebViewActivity extends AppCompatActivity implements CreateBook } } - // Update the DOM storage icon. - if (currentWebView.getSettings().getJavaScriptEnabled() && currentWebView.getSettings().getDomStorageEnabled()) { // Both JavaScript and DOM storage are enabled. - domStorageMenuItem.setIcon(R.drawable.dom_storage_enabled); - } else if (currentWebView.getSettings().getJavaScriptEnabled()) { // JavaScript is enabled but DOM storage is disabled. + // Update the refresh icon. + if (refreshMenuItem.getTitle() == getString(R.string.refresh)) { // The refresh icon is displayed. + // Set the icon according to the theme. if (currentThemeStatus == Configuration.UI_MODE_NIGHT_NO) { - domStorageMenuItem.setIcon(R.drawable.dom_storage_disabled_day); + refreshMenuItem.setIcon(R.drawable.refresh_enabled_day); } else { - domStorageMenuItem.setIcon(R.drawable.dom_storage_disabled_night); + refreshMenuItem.setIcon(R.drawable.refresh_enabled_night); } - } else { // JavaScript is disabled, so DOM storage is ghosted. + } else { // The stop icon is displayed. + // Set the icon according to the theme. if (currentThemeStatus == Configuration.UI_MODE_NIGHT_NO) { - domStorageMenuItem.setIcon(R.drawable.dom_storage_ghosted_day); + refreshMenuItem.setIcon(R.drawable.close_blue_day); } else { - domStorageMenuItem.setIcon(R.drawable.dom_storage_ghosted_night); + refreshMenuItem.setIcon(R.drawable.close_blue_night); } } - // Update the refresh icon. - if (currentThemeStatus == Configuration.UI_MODE_NIGHT_NO) { - refreshMenuItem.setIcon(R.drawable.refresh_enabled_day); - } else { - refreshMenuItem.setIcon(R.drawable.refresh_enabled_night); - } - // `invalidateOptionsMenu()` calls `onPrepareOptionsMenu()` and redraws the icons in the app bar. if (runInvalidateOptionsMenu) { invalidateOptionsMenu(); @@ -4796,12 +4792,9 @@ public class MainWebViewActivity extends AppCompatActivity implements CreateBook } private void closeCurrentTab() { - // Pause the current WebView. + // Pause the current WebView. This prevents buffered audio from playing after the tab is closed. currentWebView.onPause(); - // Pause the current WebView JavaScript timers. - currentWebView.pauseTimers(); - // Get the current tab number. int currentTabNumber = tabLayout.getSelectedTabPosition(); @@ -6202,7 +6195,7 @@ public class MainWebViewActivity extends AppCompatActivity implements CreateBook refreshMenuItem.setTitle(R.string.stop); // Get the app bar and theme preferences. - boolean displayAdditionalAppBarIcons = sharedPreferences.getBoolean("display_additional_app_bar_icons", false); + boolean displayAdditionalAppBarIcons = sharedPreferences.getBoolean(getString(R.string.display_additional_app_bar_icons_key), false); // If the icon is displayed in the AppBar, set it according to the theme. if (displayAdditionalAppBarIcons) { @@ -6211,9 +6204,9 @@ public class MainWebViewActivity extends AppCompatActivity implements CreateBook // Set the stop icon according to the theme. if (currentThemeStatus == Configuration.UI_MODE_NIGHT_NO) { - refreshMenuItem.setIcon(R.drawable.close_day); + refreshMenuItem.setIcon(R.drawable.close_blue_day); } else { - refreshMenuItem.setIcon(R.drawable.close_night); + refreshMenuItem.setIcon(R.drawable.close_blue_night); } } } @@ -6235,7 +6228,7 @@ public class MainWebViewActivity extends AppCompatActivity implements CreateBook refreshMenuItem.setTitle(R.string.refresh); // Get the app bar and theme preferences. - boolean displayAdditionalAppBarIcons = sharedPreferences.getBoolean("display_additional_app_bar_icons", false); + boolean displayAdditionalAppBarIcons = sharedPreferences.getBoolean(getString(R.string.display_additional_app_bar_icons_key), false); // If the icon is displayed in the app bar, reset it according to the theme. if (displayAdditionalAppBarIcons) {