]> gitweb.stoutner.com Git - PrivacyBrowserAndroid.git/blobdiff - app/src/main/java/com/stoutner/privacybrowser/Webview.java
Create Cookie menu options.
[PrivacyBrowserAndroid.git] / app / src / main / java / com / stoutner / privacybrowser / Webview.java
index a1eb26be2f675c78012256a6dde4dca3a796f18f..6295ce52a79683d86c8d372f2fab0332232f9528 100644 (file)
@@ -41,6 +41,7 @@ import android.view.Menu;
 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;
@@ -65,10 +66,21 @@ public class Webview extends AppCompatActivity implements CreateHomeScreenShortc
     private String formattedUrlString;
     // homepage is used in onCreate and onOptionsItemSelected.
     private String homepage = "https://www.duckduckgo.com/";
-    // enableJavaScript is used in onCreate and onOptionsItemSelected.
+    // enableJavaScript is used in onCreate, onCreateOptionsMenu, and onOptionsItemSelected.
     private boolean enableJavaScript;
-    // enableDomStorage is used in onCreate and onOptionsItemSelected.
+    // 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;
 
@@ -263,6 +275,17 @@ public class Webview extends AppCompatActivity implements CreateHomeScreenShortc
         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();
 
@@ -285,15 +308,40 @@ public class Webview extends AppCompatActivity implements CreateHomeScreenShortc
     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);
-        MenuItem toggleDomStorageMenuItem = menu.findItem(R.id.toggleDomStorage);
 
-        // Set the JavaScript menu item checkbox initial status.
-        toggleJavaScriptMenuItem.setChecked(enableJavaScript);
+        // 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());
 
-        // Set the DOM Storage menu item checkbox initial status.
-        toggleDomStorageMenuItem.setChecked(enableDomStorage);
+        // Run all the other default commands.
+        super.onPrepareOptionsMenu(menu);
 
+        // Return true displays the menu.
         return true;
     }
 
@@ -313,12 +361,12 @@ public class Webview extends AppCompatActivity implements CreateHomeScreenShortc
                     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;
 
@@ -327,13 +375,52 @@ public class Webview extends AppCompatActivity implements CreateHomeScreenShortc
                     enableDomStorage = false;
                     menuItem.setChecked(false);
                     mainWebView.getSettings().setDomStorageEnabled(false);
-                    mainWebView.loadUrl(formattedUrlString);
+                    mainWebView.reload();
                 } else {
                     enableDomStorage = true;
                     menuItem.setChecked(true);
                     mainWebView.getSettings().setDomStorageEnabled(true);
-                    mainWebView.loadUrl(formattedUrlString);
+                    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:
@@ -341,7 +428,7 @@ public class Webview extends AppCompatActivity implements CreateHomeScreenShortc
                 return true;
 
             case R.id.refresh:
-                mainWebView.loadUrl(formattedUrlString);
+                mainWebView.reload();
                 return true;
 
             case R.id.back: