import android.view.MenuItem;
import android.view.View;
import android.view.inputmethod.InputMethodManager;
+import android.webkit.CookieManager;
import android.webkit.DownloadListener;
import android.webkit.WebChromeClient;
import android.webkit.WebView;
private String formattedUrlString;
// homepage is used in onCreate and onOptionsItemSelected.
private String homepage = "https://www.duckduckgo.com/";
- // enableJavaScript is used onCreate and onOptionsItemSelected.
+ // enableJavaScript is used in onCreate, onCreateOptionsMenu, and onOptionsItemSelected.
private boolean enableJavaScript;
+ // enableDomStorage is used in onCreate, onCreateOptionsMenu, and onOptionsItemSelected.
+ private boolean enableDomStorage;
+
+ /* enableSaveFormData does nothing until database storage is implemented.
+ // enableSaveFormData is used in onCreate, onCreateOptionsMenu, and onOptionsItemSelected.
+ private boolean enableSaveFormData;
+ */
+
+ // cookieManager is used in onCreate and onOptionsItemSelected.
+ private CookieManager cookieManager;
+ //enableCookies is used in onCreate, onCreateOptionsMenu, and onOptionsItemSelected.
+ private boolean enableCookies;
+
// actionBar is used in onCreate and onOptionsItemSelected.
private ActionBar actionBar;
// Set JavaScript initial status.
enableJavaScript = true;
- if (enableJavaScript) {
- mainWebView.getSettings().setJavaScriptEnabled(true);
- } else {
- mainWebView.getSettings().setJavaScriptEnabled(false);
- }
+ mainWebView.getSettings().setJavaScriptEnabled(enableJavaScript);
- // Enable DOM Storage.
- mainWebView.getSettings().setDomStorageEnabled(true);
+ // Set DOM Storage initial status.
+ enableDomStorage = true;
+ mainWebView.getSettings().setDomStorageEnabled(enableDomStorage);
+
+ /* Save Form Data does nothing until database storage is implemented.
+ // Set Save Form Data initial status.
+ enableSaveFormData = true;
+ mainWebView.getSettings().setSaveFormData(enableSaveFormData);
+ */
+
+ // Set Cookies initial status.
+ cookieManager = CookieManager.getInstance();
+ enableCookies = true;
+ cookieManager.setAcceptCookie(enableCookies);
// Get the intent information that started the app.
final Intent intent = getIntent();
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_webview, menu);
- MenuItem toggleJavaScriptMenuItem = menu.findItem(R.id.toggleJavaScript);
- // Set the JavaScript menu item checkbox initial status.
- if (enableJavaScript) {
- toggleJavaScriptMenuItem.setChecked(true);
- } else {
- toggleJavaScriptMenuItem.setChecked(false);
- }
+ // Get MenuItems for checkable menu items.
+ MenuItem toggleJavaScript = menu.findItem(R.id.toggleJavaScript);
+ MenuItem toggleDomStorage = menu.findItem(R.id.toggleDomStorage);
+ /* toggleSaveFormData does nothing until database storage is implemented.
+ MenuItem toggleSaveFormData = menu.findItem(R.id.toggleSaveFormData);
+ */
+ MenuItem toggleCookies = menu.findItem(R.id.toggleCookies);
+ MenuItem clearCookies = menu.findItem(R.id.clearCookies);
+
+ // Set the initial status of the menu item checkboxes.
+ toggleJavaScript.setChecked(enableJavaScript);
+ toggleDomStorage.setChecked(enableDomStorage);
+ /* toggleSaveFormData does nothing until database storage is implemented.
+ toggleSaveFormData.setChecked(enableSaveFormData);
+ */
+ toggleCookies.setChecked(enableCookies);
+
+ // Disable Clear Cookies if there are none.
+ clearCookies.setEnabled(cookieManager.hasCookies());
return true;
}
+ @Override
+ public boolean onPrepareOptionsMenu(Menu menu) {
+ // Enable Clear Cookies if there are any.
+ MenuItem clearCookies = menu.findItem(R.id.clearCookies);
+ clearCookies.setEnabled(cookieManager.hasCookies());
+
+ // Run all the other default commands.
+ super.onPrepareOptionsMenu(menu);
+
+ // Return true displays the menu.
+ return true;
+ }
+
@Override
// @TargetApi(11) turns off the errors regarding copy and paste, which are removed from view in menu_webview.xml for lower version of Android.
@TargetApi(11)
enableJavaScript = false;
menuItem.setChecked(false);
mainWebView.getSettings().setJavaScriptEnabled(false);
- mainWebView.loadUrl(formattedUrlString);
+ mainWebView.reload();
} else {
enableJavaScript = true;
menuItem.setChecked(true);
mainWebView.getSettings().setJavaScriptEnabled(true);
- mainWebView.loadUrl(formattedUrlString);
+ mainWebView.reload();
+ }
+ return true;
+
+ case R.id.toggleDomStorage:
+ if (enableDomStorage) {
+ enableDomStorage = false;
+ menuItem.setChecked(false);
+ mainWebView.getSettings().setDomStorageEnabled(false);
+ mainWebView.reload();
+ } else {
+ enableDomStorage = true;
+ menuItem.setChecked(true);
+ mainWebView.getSettings().setDomStorageEnabled(true);
+ mainWebView.reload();
+ }
+ return true;
+
+ /* toggleSaveFormData does nothing until database storage is implemented.
+ case R.id.toggleSaveFormData:
+ if (enableSaveFormData) {
+ enableSaveFormData = false;
+ menuItem.setChecked(false);
+ mainWebView.getSettings().setSaveFormData(false);
+ mainWebView.reload();
+ } else {
+ enableSaveFormData = true;
+ menuItem.setChecked(true);
+ mainWebView.getSettings().setSaveFormData(true);
+ mainWebView.reload();
+ }
+ return true;
+ */
+
+ case R.id.toggleCookies:
+ if (enableCookies) {
+ enableCookies = false;
+ menuItem.setChecked(false);
+ cookieManager.setAcceptCookie(false);
+ mainWebView.reload();
+ } else {
+ enableCookies = true;
+ menuItem.setChecked(true);
+ cookieManager.setAcceptCookie(true);
+ mainWebView.reload();
+ }
+ return true;
+
+ case R.id.clearCookies:
+ if (Build.VERSION.SDK_INT < 21) {
+ cookieManager.removeAllCookie();
+ } else {
+ cookieManager.removeAllCookies(null);
}
+ Toast.makeText(getApplicationContext(), "Cookies deleted", Toast.LENGTH_SHORT).show();
return true;
case R.id.home:
return true;
case R.id.refresh:
- mainWebView.loadUrl(formattedUrlString);
+ mainWebView.reload();
return true;
case R.id.back: