X-Git-Url: https://gitweb.stoutner.com/?a=blobdiff_plain;ds=sidebyside;f=app%2Fsrc%2Fmain%2Fjava%2Fcom%2Fstoutner%2Fprivacybrowser%2Factivities%2FMainWebViewActivity.java;h=26a6a403a68256af7eb0bdfac55acc56edb545ca;hb=5a385f0ba12a7af005761e30155f7fd18767d2f9;hp=f594c595893e2f2e8a290aff38379c66d991228a;hpb=012e5595c82d6e8d0b8a46f1ef18a02a56341182;p=PrivacyBrowserAndroid.git 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 f594c595..26a6a403 100644 --- a/app/src/main/java/com/stoutner/privacybrowser/activities/MainWebViewActivity.java +++ b/app/src/main/java/com/stoutner/privacybrowser/activities/MainWebViewActivity.java @@ -283,7 +283,7 @@ public class MainWebViewActivity extends AppCompatActivity implements CreateBook // `fullScreenVideoFrameLayout` is used in `onCreate()` and `onConfigurationChanged()`. private FrameLayout fullScreenVideoFrameLayout; - // `swipeRefreshLayout` is used in `onCreate()`, `onPrepareOptionsMenu()`, `onOptionsMenuSelected()`, and `onRestart()`. + // `swipeRefreshLayout` is used in `onCreate()`, `onPrepareOptionsMenu()`, `onOptionsItemSelected()`, and `onRestart()`. private SwipeRefreshLayout swipeRefreshLayout; // `urlAppBarRelativeLayout` is used in `onCreate()` and `applyDomainSettings()`. @@ -325,7 +325,7 @@ public class MainWebViewActivity extends AppCompatActivity implements CreateBook // `searchURL` is used in `loadURLFromTextBox()` and `applyAppSettings()`. private String searchURL; - // The block list variables are used in `onCreate()` and `applyAppSettings()`. + // The block list variables are used in `onCreate()`, `onPrepareOptionsMenu()`, `onOptionsItemSelected()`, and `applyAppSettings()`. private boolean easyListEnabled; private boolean easyPrivacyEnabled; private boolean fanboysAnnoyanceListEnabled; @@ -1172,15 +1172,9 @@ public class MainWebViewActivity extends AppCompatActivity implements CreateBook @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { if (url.startsWith("http")) { // Load the URL in Privacy Browser. - // Hide the WebView while applying domain settings so changes to things like JavaScript aren't rendered on the current URL, which otherwise will reload automatically. - mainWebView.setVisibility(View.INVISIBLE); - - // Apply the domain settings for the new URL. + // Apply the domain settings for the new URL. `applyDomainSettings` doesn't do anything if the domain has not changed. applyDomainSettings(url, true, false); - // Display the WebView again so that the new URL can be loaded. - mainWebView.setVisibility(View.VISIBLE); - // Returning false causes the current WebView to handle the URL and prevents it from adding redirects to the history list. return false; } else if (url.startsWith("mailto:")) { // Load the email address in an external email program. @@ -1313,7 +1307,7 @@ public class MainWebViewActivity extends AppCompatActivity implements CreateBook // Hide the keyboard. `0` indicates no additional flags. inputMethodManager.hideSoftInputFromWindow(mainWebView.getWindowToken(), 0); - // Check to see if we are waiting on Orbot. + // Check to see if Privacy Browser is waiting on Orbot. if (!waitingForOrbot) { // We are not waiting on Orbot, so we need to process the URL. // We need to update `formattedUrlString` at the beginning of the load, so that if the user toggles JavaScript during the load the new website is reloaded. formattedUrlString = url; @@ -1697,6 +1691,10 @@ public class MainWebViewActivity extends AppCompatActivity implements CreateBook MenuItem clearCookiesMenuItem = menu.findItem(R.id.clear_cookies); MenuItem clearDOMStorageMenuItem = menu.findItem(R.id.clear_dom_storage); MenuItem clearFormDataMenuItem = menu.findItem(R.id.clear_form_data); // Form data can be removed once the minimum API >= 26. + MenuItem easyListMenuItem = menu.findItem(R.id.easylist); + MenuItem easyPrivacyMenuItem = menu.findItem(R.id.easyprivacy); + MenuItem fanboysAnnoyanceListMenuItem = menu.findItem(R.id.fanboys_annoyance_list); + MenuItem fanboysSocialBlockingListMenuItem = menu.findItem(R.id.fanboys_social_blocking_list); MenuItem fontSizeMenuItem = menu.findItem(R.id.font_size); MenuItem swipeToRefreshMenuItem = menu.findItem(R.id.swipe_to_refresh); MenuItem displayImagesMenuItem = menu.findItem(R.id.display_images); @@ -1713,44 +1711,51 @@ public class MainWebViewActivity extends AppCompatActivity implements CreateBook toggleThirdPartyCookiesMenuItem.setChecked(thirdPartyCookiesEnabled); toggleDomStorageMenuItem.setChecked(domStorageEnabled); toggleSaveFormDataMenuItem.setChecked(saveFormDataEnabled); // Form data can be removed once the minimum API >= 26. + easyListMenuItem.setChecked(easyListEnabled); + easyPrivacyMenuItem.setChecked(easyPrivacyEnabled); + fanboysAnnoyanceListMenuItem.setChecked(fanboysAnnoyanceListEnabled); + fanboysSocialBlockingListMenuItem.setChecked(fanboysSocialBlockingListEnabled); swipeToRefreshMenuItem.setChecked(swipeRefreshLayout.isEnabled()); displayImagesMenuItem.setChecked(mainWebView.getSettings().getLoadsImagesAutomatically()); // Enable third-party cookies if first-party cookies are enabled. toggleThirdPartyCookiesMenuItem.setEnabled(firstPartyCookiesEnabled); - // Enable `DOM Storage` if JavaScript is enabled. + // Enable DOM Storage if JavaScript is enabled. toggleDomStorageMenuItem.setEnabled(javaScriptEnabled); - // Enable `Clear Cookies` if there are any. + // Enable Clear Cookies if there are any. clearCookiesMenuItem.setEnabled(cookieManager.hasCookies()); - // Get a count of the number of files in the `Local Storage` directory. + // Get a count of the number of files in the Local Storage directory. File localStorageDirectory = new File (privateDataDirectoryString + "/app_webview/Local Storage/"); int localStorageDirectoryNumberOfFiles = 0; if (localStorageDirectory.exists()) { localStorageDirectoryNumberOfFiles = localStorageDirectory.list().length; } - // Get a count of the number of files in the `IndexedDB` directory. + // Get a count of the number of files in the IndexedDB directory. File indexedDBDirectory = new File (privateDataDirectoryString + "/app_webview/IndexedDB"); int indexedDBDirectoryNumberOfFiles = 0; if (indexedDBDirectory.exists()) { indexedDBDirectoryNumberOfFiles = indexedDBDirectory.list().length; } - // Enable `Clear DOM Storage` if there is any. + // Enable Clear DOM Storage if there is any. clearDOMStorageMenuItem.setEnabled(localStorageDirectoryNumberOfFiles > 0 || indexedDBDirectoryNumberOfFiles > 0); - // Enable `Clear Form Data` is there is any. This can be removed once the minimum API >= 26. + // Enable Clear Form Data is there is any. This can be removed once the minimum API >= 26. if (Build.VERSION.SDK_INT < 26) { WebViewDatabase mainWebViewDatabase = WebViewDatabase.getInstance(this); clearFormDataMenuItem.setEnabled(mainWebViewDatabase.hasFormData()); } - // Enable `Clear Data` if any of the submenu items are enabled. + // Enable Clear Data if any of the submenu items are enabled. clearDataMenuItem.setEnabled(clearCookiesMenuItem.isEnabled() || clearDOMStorageMenuItem.isEnabled() || clearFormDataMenuItem.isEnabled()); + // Disable Fanboy's Social Blocking List if Fanboy's Annoyance List is checked. + fanboysSocialBlockingListMenuItem.setEnabled(!fanboysAnnoyanceListEnabled); + // Initialize font size variables. int fontSize = mainWebView.getSettings().getTextZoom(); String fontSizeTitle; @@ -2138,6 +2143,54 @@ public class MainWebViewActivity extends AppCompatActivity implements CreateBook startActivity(viewSourceIntent); return true; + case R.id.easylist: + // Toggle the EasyList status. + easyListEnabled = !easyListEnabled; + + // Update the menu checkbox. + menuItem.setChecked(easyListEnabled); + + // Reload the main WebView. + mainWebView.reload(); + return true; + + case R.id.easyprivacy: + // Toggle the EasyPrivacy status. + easyPrivacyEnabled = !easyPrivacyEnabled; + + // Update the menu checkbox. + menuItem.setChecked(easyPrivacyEnabled); + + // Reload the main WebView. + mainWebView.reload(); + return true; + + case R.id.fanboys_annoyance_list: + // Toggle Fanboy's Annoyance List status. + fanboysAnnoyanceListEnabled = !fanboysAnnoyanceListEnabled; + + // Update the menu checkbox. + menuItem.setChecked(fanboysAnnoyanceListEnabled); + + // Update the staus of Fanboy's Social Blocking List. + MenuItem fanboysSocialBlockingListMenuItem = mainMenu.findItem(R.id.fanboys_social_blocking_list); + fanboysSocialBlockingListMenuItem.setEnabled(!fanboysAnnoyanceListEnabled); + + // Reload the main WebView. + mainWebView.reload(); + return true; + + case R.id.fanboys_social_blocking_list: + // Toggle Fanboy's Social Blocking List status. + fanboysSocialBlockingListEnabled = !fanboysSocialBlockingListEnabled; + + // Update teh menu checkbox. + menuItem.setChecked(fanboysSocialBlockingListEnabled); + + // Reload the main WebView. + mainWebView.reload(); + return true; + case R.id.share: // Setup the share string. String shareString = webViewTitle + " – " + urlTextBox.getText().toString(); @@ -3188,9 +3241,7 @@ public class MainWebViewActivity extends AppCompatActivity implements CreateBook loadUrl(formattedUrlString); } - - private void loadUrl(String url) { - // Apply any custom domain settings. + private void loadUrl(String url) {// Apply any custom domain settings. applyDomainSettings(url, true, false); // Set `urlIsLoading` to prevent changes in the user agent on websites with redirects from reloading the current website. @@ -3641,7 +3692,7 @@ public class MainWebViewActivity extends AppCompatActivity implements CreateBook } else { urlAppBarRelativeLayout.setBackground(getResources().getDrawable(R.drawable.url_bar_background_light_green)); } - } else { // The URL we are loading does not have custom domain settings. Load the defaults. + } else { // The new URL does not have custom domain settings. Load the defaults. // Store the values from `sharedPreferences` in variables. javaScriptEnabled = sharedPreferences.getBoolean("javascript_enabled", false); firstPartyCookiesEnabled = sharedPreferences.getBoolean("first_party_cookies_enabled", false); @@ -3734,11 +3785,11 @@ public class MainWebViewActivity extends AppCompatActivity implements CreateBook if (mainMenu != null) { updatePrivacyIcons(true); } + } - // Reload the website if returning from the Domains activity. - if (reloadWebsite) { - mainWebView.reload(); - } + // Reload the website if returning from the Domains activity. + if (reloadWebsite) { + mainWebView.reload(); } }