X-Git-Url: https://gitweb.stoutner.com/?a=blobdiff_plain;f=app%2Fsrc%2Fmain%2Fjava%2Fcom%2Fstoutner%2Fprivacybrowser%2FMainWebViewActivity.java;h=9e2d04966bea426ec9b6f00cce75ddb015cfb235;hb=77756d29db4d52a35a3999f67b101e22525c97e2;hp=2edbfdfeea2efd2f6eb21176b37f4bb986f311c9;hpb=57b05bcbae9759d4b58ce3b96ede61992eb34eee;p=PrivacyBrowserAndroid.git diff --git a/app/src/main/java/com/stoutner/privacybrowser/MainWebViewActivity.java b/app/src/main/java/com/stoutner/privacybrowser/MainWebViewActivity.java index 2edbfdfe..9e2d0496 100644 --- a/app/src/main/java/com/stoutner/privacybrowser/MainWebViewActivity.java +++ b/app/src/main/java/com/stoutner/privacybrowser/MainWebViewActivity.java @@ -99,9 +99,12 @@ public class MainWebViewActivity extends AppCompatActivity implements Navigation private DrawerLayout drawerLayout; // formattedUrlString is used in onCreate(), onOptionsItemSelected(), onCreateHomeScreenShortcutCreate(), and loadUrlFromTextBox(). private String formattedUrlString; - + // privacyIcon is used in onCreateOptionsMenu() and updatePrivacyIcon(). + private MenuItem privacyIcon; // urlTextBox is used in onCreate(), onOptionsItemSelected(), and loadUrlFromTextBox(). private EditText urlTextBox; + // adView is used in onCreate() and onConfigurationChanged(). + private View adView; @Override // Remove Android Studio's warning about the dangers of using SetJavaScriptEnabled. The whole premise of Privacy Browser is built around an understanding of these dangers. @@ -119,9 +122,6 @@ public class MainWebViewActivity extends AppCompatActivity implements Navigation // We need to use the SupportActionBar from android.support.v7.app.ActionBar until the minimum API is >= 21. final ActionBar appBar = getSupportActionBar(); - // Setup AdView for the free flavor. - final View adView = findViewById(R.id.adView); - // Implement swipe to refresh swipeToRefresh = (SwipeRefreshLayout) findViewById(R.id.swipeRefreshLayout); swipeToRefresh.setColorSchemeResources(R.color.blue); @@ -401,10 +401,12 @@ public class MainWebViewActivity extends AppCompatActivity implements Navigation // Load the initial website. mainWebView.loadUrl(formattedUrlString); - // Load the ad if this is the free flavor. + // Initialize AdView for the free flavor and request an ad. If this is not the free flavor BannerAd.requestAd() does nothing. + adView = findViewById(R.id.adView); BannerAd.requestAd(adView); } + @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. @@ -436,8 +438,10 @@ public class MainWebViewActivity extends AppCompatActivity implements Navigation // Set mainMenu so it can be used by onOptionsItemSelected. mainMenu = menu; + // Initialize privacyIcon + privacyIcon = menu.findItem(R.id.toggleJavaScript); + // Get MenuItems for checkable menu items. - MenuItem toggleJavaScript = menu.findItem(R.id.toggleJavaScript); MenuItem toggleFirstPartyCookies = menu.findItem(R.id.toggleFirstPartyCookies); MenuItem toggleThirdPartyCookies = menu.findItem(R.id.toggleThirdPartyCookies); MenuItem toggleDomStorage = menu.findItem(R.id.toggleDomStorage); @@ -445,16 +449,8 @@ public class MainWebViewActivity extends AppCompatActivity implements Navigation MenuItem toggleSaveFormData = menu.findItem(R.id.toggleSaveFormData); */ - // Set the initial icon for toggleJavaScript - if (javaScriptEnabled) { - toggleJavaScript.setIcon(R.drawable.javascript_enabled); - } else { - if (domStorageEnabled || firstPartyCookiesEnabled) { - toggleJavaScript.setIcon(R.drawable.warning); - } else { - toggleJavaScript.setIcon(R.drawable.privacy_mode); - } - } + // Set the initial status of the privacy icon. + updatePrivacyIcon(); // Set the initial status of the menu item checkboxes. toggleFirstPartyCookies.setChecked(firstPartyCookiesEnabled); @@ -502,114 +498,78 @@ public class MainWebViewActivity extends AppCompatActivity implements Navigation // Set the commands that relate to the menu entries. switch (menuItemId) { case R.id.toggleJavaScript: - if (javaScriptEnabled) { - javaScriptEnabled = false; - mainWebView.getSettings().setJavaScriptEnabled(false); - mainWebView.reload(); + // Switch the status of javaScriptEnabled. + javaScriptEnabled = !javaScriptEnabled; - // Update the toggleJavaScript icon and display a snackbar. + // Apply the new JavaScript status. + mainWebView.getSettings().setJavaScriptEnabled(javaScriptEnabled); + + // Update the privacy icon. + updatePrivacyIcon(); + + // Display a Snackbar. + if (javaScriptEnabled) { + Snackbar.make(findViewById(R.id.mainWebView), R.string.javascript_enabled, Snackbar.LENGTH_SHORT).show(); + } else { if (domStorageEnabled || firstPartyCookiesEnabled) { - menuItem.setIcon(R.drawable.warning); Snackbar.make(findViewById(R.id.mainWebView), R.string.javascript_disabled, Snackbar.LENGTH_SHORT).show(); } else { - menuItem.setIcon(R.drawable.privacy_mode); Snackbar.make(findViewById(R.id.mainWebView), R.string.privacy_mode, Snackbar.LENGTH_SHORT).show(); } - } else { - javaScriptEnabled = true; - menuItem.setIcon(R.drawable.javascript_enabled); - mainWebView.getSettings().setJavaScriptEnabled(true); - mainWebView.reload(); - Snackbar.make(findViewById(R.id.mainWebView), R.string.javascript_enabled, Snackbar.LENGTH_SHORT).show(); } + + // Reload the WebView. + mainWebView.reload(); return true; case R.id.toggleFirstPartyCookies: - if (firstPartyCookiesEnabled) { - firstPartyCookiesEnabled = false; - menuItem.setChecked(false); - cookieManager.setAcceptCookie(false); - mainWebView.reload(); + // Switch the status of firstPartyCookiesEnabled. + firstPartyCookiesEnabled = !firstPartyCookiesEnabled; - // Update the toggleJavaScript icon if appropriate and display a snackbar. - if (!javaScriptEnabled) { - if (domStorageEnabled) { - toggleJavaScript.setIcon(R.drawable.warning); - Snackbar.make(findViewById(R.id.mainWebView), R.string.first_party_cookies_disabled, Snackbar.LENGTH_SHORT).show(); - } else { - toggleJavaScript.setIcon(R.drawable.privacy_mode); - Snackbar.make(findViewById(R.id.mainWebView), R.string.privacy_mode, Snackbar.LENGTH_SHORT).show(); - } - } else { - Snackbar.make(findViewById(R.id.mainWebView), R.string.first_party_cookies_disabled, Snackbar.LENGTH_SHORT).show(); - } - } else { - firstPartyCookiesEnabled = true; - menuItem.setChecked(true); - cookieManager.setAcceptCookie(true); - mainWebView.reload(); + // Update the menu checkbox. + menuItem.setChecked(firstPartyCookiesEnabled); - // Update the toggleJavaScript icon if appropriate. - if (!javaScriptEnabled) { - toggleJavaScript.setIcon(R.drawable.warning); - } // Else do nothing because JavaScript is enabled. + // Apply the new cookie status. + cookieManager.setAcceptCookie(firstPartyCookiesEnabled); - Snackbar.make(findViewById(R.id.mainWebView), R.string.first_party_cookies_enabled, Snackbar.LENGTH_SHORT).show(); - } + // Update the privacy icon. + updatePrivacyIcon(); + + // Reload the WebView. + mainWebView.reload(); return true; case R.id.toggleThirdPartyCookies: if (Build.VERSION.SDK_INT >= 21) { - if (thirdPartyCookiesEnabled) { - thirdPartyCookiesEnabled = false; - menuItem.setChecked(false); - cookieManager.setAcceptThirdPartyCookies(mainWebView, false); - mainWebView.reload(); + // Switch the status of thirdPartyCookiesEnabled. + thirdPartyCookiesEnabled = !thirdPartyCookiesEnabled; - Snackbar.make(findViewById(R.id.mainWebView), R.string.third_party_cookies_disabled, Snackbar.LENGTH_SHORT).show(); - } else { - thirdPartyCookiesEnabled = true; - menuItem.setChecked(true); - cookieManager.setAcceptThirdPartyCookies(mainWebView, true); - mainWebView.reload(); + // Update the menu checkbox. + menuItem.setChecked(thirdPartyCookiesEnabled); - Snackbar.make(findViewById(R.id.mainWebView), R.string.third_party_cookies_enabled, Snackbar.LENGTH_SHORT).show(); - } + // Apply the new cookie status. + cookieManager.setAcceptThirdPartyCookies(mainWebView, thirdPartyCookiesEnabled); + + // Reload the WebView. + mainWebView.reload(); } // Else do nothing because SDK < 21. return true; case R.id.toggleDomStorage: - if (domStorageEnabled) { - domStorageEnabled = false; - menuItem.setChecked(false); - mainWebView.getSettings().setDomStorageEnabled(false); - mainWebView.reload(); + // Switch the status of domStorageEnabled. + domStorageEnabled = !domStorageEnabled; - // Update the toggleJavaScript icon if appropriate and display a snackbar. - if (!javaScriptEnabled) { - if (firstPartyCookiesEnabled) { - toggleJavaScript.setIcon(R.drawable.warning); - Snackbar.make(findViewById(R.id.mainWebView), R.string.dom_storage_disabled, Snackbar.LENGTH_SHORT).show(); - } else { - toggleJavaScript.setIcon(R.drawable.privacy_mode); - Snackbar.make(findViewById(R.id.mainWebView), R.string.privacy_mode, Snackbar.LENGTH_SHORT).show(); - } - }else { - Snackbar.make(findViewById(R.id.mainWebView), R.string.dom_storage_disabled, Snackbar.LENGTH_SHORT).show(); - } - } else { - domStorageEnabled = true; - menuItem.setChecked(true); - mainWebView.getSettings().setDomStorageEnabled(true); - mainWebView.reload(); + // Update the menu checkbox. + menuItem.setChecked(domStorageEnabled); - // Update the toggleJavaScript icon if appropriate. - if (!javaScriptEnabled) { - toggleJavaScript.setIcon(R.drawable.warning); - } // Else Do nothing because JavaScript is enabled. + // Apply the new DOM Storage status. + mainWebView.getSettings().setDomStorageEnabled(domStorageEnabled); - Snackbar.make(findViewById(R.id.mainWebView), R.string.dom_storage_enabled, Snackbar.LENGTH_SHORT).show(); - } + // Update the privacy icon. + updatePrivacyIcon(); + + // Reload the WebView. + mainWebView.reload(); return true; case R.id.clearCookies: @@ -744,6 +704,12 @@ public class MainWebViewActivity extends AppCompatActivity implements Navigation // Update the status of the drawerToggle icon. drawerToggle.onConfigurationChanged(newConfig); + + // Reload the ad if this is the free flavor. + BannerAd.reloadAfterRotate(adView, getApplicationContext(), getString(R.string.ad_id)); + + // Reinitialize the adView variable, as the View will have been removed and readded. + adView = findViewById(R.id.adView); } @Override @@ -789,6 +755,22 @@ public class MainWebViewActivity extends AppCompatActivity implements Navigation } } + @Override + public void onPause() { + // We need to pause the adView or it will continue to consume resources in the background on the free flavor. + BannerAd.pauseAd(adView); + + super.onPause(); + } + + @Override + public void onResume() { + super.onResume(); + + // We need to resume the adView for the free flavor. + BannerAd.resumeAd(adView); + } + private void loadUrlFromTextBox() throws UnsupportedEncodingException { // Get the text from urlTextBox and convert it to a string. String unformattedUrlString = urlTextBox.getText().toString(); @@ -836,4 +818,16 @@ public class MainWebViewActivity extends AppCompatActivity implements Navigation InputMethodManager inputMethodManager = (InputMethodManager) getSystemService(Activity.INPUT_METHOD_SERVICE); inputMethodManager.hideSoftInputFromWindow(mainWebView.getWindowToken(), 0); } + + private void updatePrivacyIcon() { + if (javaScriptEnabled) { + privacyIcon.setIcon(R.drawable.javascript_enabled); + } else { + if (domStorageEnabled || firstPartyCookiesEnabled) { + privacyIcon.setIcon(R.drawable.warning); + } else { + privacyIcon.setIcon(R.drawable.privacy_mode); + } + } + } }