Partial additional action button icons implementation.
authorSoren Stoutner <soren@stoutner.com>
Mon, 5 Sep 2016 17:00:38 +0000 (10:00 -0700)
committerSoren Stoutner <soren@stoutner.com>
Mon, 5 Sep 2016 17:00:38 +0000 (10:00 -0700)
41 files changed:
app/src/main/AndroidManifest.xml
app/src/main/assets/en/about_changelog.html
app/src/main/java/com/stoutner/privacybrowser/MainWebViewActivity.java
app/src/main/java/com/stoutner/privacybrowser/SettingsFragment.java
app/src/main/java/com/stoutner/privacybrowser/SslCertificateError.java
app/src/main/res/drawable/about.xml
app/src/main/res/drawable/add.xml
app/src/main/res/drawable/back.xml
app/src/main/res/drawable/bookmarks.xml
app/src/main/res/drawable/cookies_critical.xml [new file with mode: 0644]
app/src/main/res/drawable/cookies_disabled.xml [new file with mode: 0644]
app/src/main/res/drawable/cookies_ghosted.xml [new file with mode: 0644]
app/src/main/res/drawable/cookies_warning.xml [new file with mode: 0644]
app/src/main/res/drawable/create_folder.xml
app/src/main/res/drawable/delete.xml
app/src/main/res/drawable/dom_storage_disabled.xml [new file with mode: 0644]
app/src/main/res/drawable/dom_storage_enabled.xml [new file with mode: 0644]
app/src/main/res/drawable/dom_storage_ghosted.xml [new file with mode: 0644]
app/src/main/res/drawable/downloads.xml
app/src/main/res/drawable/edit.xml
app/src/main/res/drawable/exit.xml
app/src/main/res/drawable/folder_dark_blue.xml
app/src/main/res/drawable/folder_grey.xml
app/src/main/res/drawable/form_data_disabled.xml [new file with mode: 0644]
app/src/main/res/drawable/form_data_enabled.xml [new file with mode: 0644]
app/src/main/res/drawable/forward.xml
app/src/main/res/drawable/guide.xml
app/src/main/res/drawable/home.xml
app/src/main/res/drawable/javascript_enabled.xml
app/src/main/res/drawable/move_bookmark_down_disabled.xml
app/src/main/res/drawable/move_bookmark_down_enabled.xml
app/src/main/res/drawable/move_bookmark_up_disabled.xml
app/src/main/res/drawable/move_bookmark_up_enabled.xml
app/src/main/res/drawable/move_to_folder.xml
app/src/main/res/drawable/privacy_mode.xml
app/src/main/res/drawable/select_all.xml
app/src/main/res/drawable/settings.xml
app/src/main/res/drawable/warning.xml
app/src/main/res/menu/webview_options_menu.xml
app/src/main/res/values/colors.xml
app/src/main/res/values/strings.xml

index a0550338affa1f9e669825e9b8df9acf35e6db0f..924d8da8b5f6adce5e8cc1c11a778f56969063dc 100644 (file)
@@ -40,7 +40,7 @@
         android:allowBackup="false"
         android:fullBackupContent="false" >
 
-        <!-- If `android:name="android.webkit.WebView.MetricsOptOut"` is not `true` then WebViews will upload metrics to Google.
+        <!-- If `android:name="android.webkit.WebView.MetricsOptOut"` is not `true` then `WebViews` will upload metrics to Google.
             https://developer.android.com/reference/android/webkit/WebView.html -->
         <meta-data
             android:name="android.webkit.WebView.MetricsOptOut"
@@ -55,6 +55,7 @@
             android:label="@string/privacy_browser"
             android:configChanges="orientation|screenSize"
             android:launchMode="singleTask"
+            android:screenOrientation="fullUser"
             android:persistableMode="persistNever" >
 
             <intent-filter>
@@ -81,6 +82,7 @@
             android:theme="@style/PrivacyBrowser.SecondaryActivity"
             android:parentActivityName=".MainWebViewActivity"
             android:configChanges="orientation|screenSize"
+            android:screenOrientation="fullUser"
             android:persistableMode="persistNever" />
 
         <!-- `android:configChanges="orientation|screenSize"` makes the activity not reload when the orientation changes.
@@ -91,6 +93,7 @@
             android:theme="@style/PrivacyBrowser.SecondaryActivity"
             android:parentActivityName=".BookmarksActivity"
             android:configChanges="orientation|screenSize"
+            android:screenOrientation="fullUser"
             android:persistableMode="persistNever" />
 
         <!-- `android:configChanges="orientation|screenSize"` makes the activity not reload when the orientation changes.
             android:theme="@style/Settings"
             android:parentActivityName=".MainWebViewActivity"
             android:configChanges="orientation|screenSize"
+            android:screenOrientation="fullUser"
             android:persistableMode="persistNever" />
 
         <!-- `android:configChanges="orientation|screenSize"` makes the activity not reload when the orientation changes.
             android:theme="@style/PrivacyBrowser.SecondaryActivity"
             android:parentActivityName=".MainWebViewActivity"
             android:configChanges="orientation|screenSize"
+            android:screenOrientation="fullUser"
             android:persistableMode="persistNever" />
 
         <!-- `android:configChanges="orientation|screenSize"` makes the activity not reload when the orientation changes.
             android:theme="@style/PrivacyBrowser.SecondaryActivity"
             android:parentActivityName=".MainWebViewActivity"
             android:configChanges="orientation|screenSize"
+            android:screenOrientation="fullUser"
             android:persistableMode="persistNever" />
     </application>
 </manifest>
index 80723ea3a4bcc702141b4058663f8d00b2a9759f..41b67f7c21c7cf259b167e2657cfd383065fadb7 100644 (file)
@@ -27,9 +27,9 @@
 
 <body>
 <h3>1.9.1 (version code 11)</h3>
-<p>27 August 2016 - minimum API 19, target API 23</p>
+<p><a href="https://git.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=6de831ce03c8b9114212870715c6c722e26f5b28">27 August 2016</a> - minimum API 19, target API 23</p>
 <ul>
-    <li>Changed asset image links to relative paths so Privacy Browser will build of F-Droid.</li>
+    <li>Changed asset image links to relative paths so Privacy Browser will build on F-Droid.</li>
 </ul>
 
 <h3>1.9 (version code 10)</h3>
index 0a824a1527c0f0b657ea51f84430f3ba7f916cf5..a48fa3780d25da29a395e17b4084a8138ab5b449 100644 (file)
@@ -36,6 +36,7 @@ import android.os.Bundle;
 import android.preference.PreferenceManager;
 import android.support.design.widget.NavigationView;
 import android.support.design.widget.Snackbar;
+import android.support.v4.app.ActivityCompat;
 import android.support.v4.content.ContextCompat;
 import android.support.v4.view.GravityCompat;
 import android.support.v4.widget.DrawerLayout;
@@ -76,6 +77,10 @@ public class MainWebViewActivity extends AppCompatActivity implements Navigation
     // It is also used in `onCreate()` and `onCreateHomeScreenShortcutCreate()`.
     public static Bitmap favoriteIcon;
 
+    // `privacyBrowserActivity` is public static so it can be accessed from `SettingsFragment`.
+    // It is also used in `onCreate()`, `onCreateOptionsMenu()`, and `onOptionsItemSelected()`,
+    public static Activity privacyBrowserActivity;
+
     // `mainWebView` is public static so it can be accessed from `SettingsFragment`.
     // It is also used in `onCreate()`, `onOptionsItemSelected()`, `onNavigationItemSelected()`, and `loadUrlFromTextBox()`.
     public static WebView mainWebView;
@@ -98,7 +103,8 @@ public class MainWebViewActivity extends AppCompatActivity implements Navigation
     // It is also used in `onCreate()`, `onCreateOptionsMenu()`, `onPrepareOptionsMenu()`, and `onOptionsItemSelected()`.
     public static boolean firstPartyCookiesEnabled;
 
-    // `thirdPartyCookiesEnabled` is used in `onCreate()`, `onCreateOptionsMenu()`, `onPrepareOptionsMenu()`, and `onOptionsItemSelected()`.
+    // `thridPartyCookiesEnables` is public static so it can be accessed from `SettingsFragment`.
+    // It is also used in `onCreate()`, `onCreateOptionsMenu()`, `onPrepareOptionsMenu()`, and `onOptionsItemSelected()`.
     public static boolean thirdPartyCookiesEnabled;
 
     // `domStorageEnabled` is public static so it can be accessed from `SettingsFragment`.  It is also used in `onCreate()`, `onCreateOptionsMenu()`, and `onOptionsItemSelected()`.
@@ -133,9 +139,6 @@ public class MainWebViewActivity extends AppCompatActivity implements Navigation
     // `drawerLayout` is used in `onCreate()`, `onNewIntent()`, and `onBackPressed()`.
     private DrawerLayout drawerLayout;
 
-    // `privacyIcon` is used in `onCreateOptionsMenu()` and `updatePrivacyIcon()`.
-    private MenuItem privacyIcon;
-
     // `urlTextBox` is used in `onCreate()`, `onOptionsItemSelected()`, and `loadUrlFromTextBox()`.
     private EditText urlTextBox;
 
@@ -152,6 +155,9 @@ public class MainWebViewActivity extends AppCompatActivity implements Navigation
         super.onCreate(savedInstanceState);
         setContentView(R.layout.main_coordinatorlayout);
 
+        // We need a handle for the activity, which is accessed from `SettingsFragment` and fed into `updatePrivacyIcons()`.
+        privacyBrowserActivity = this;
+
         // We need to use the SupportActionBar from android.support.v7.app.ActionBar until the minimum API is >= 21.
         Toolbar supportAppBar = (Toolbar) findViewById(R.id.appBar);
         setSupportActionBar(supportAppBar);
@@ -505,11 +511,8 @@ 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);
-
         // Set the initial status of the privacy icon.
-        updatePrivacyIcon();
+        updatePrivacyIcons(privacyBrowserActivity);
 
         // Get MenuItems for checkable menu items.
         MenuItem toggleFirstPartyCookies = menu.findItem(R.id.toggleFirstPartyCookies);
@@ -631,9 +634,9 @@ public class MainWebViewActivity extends AppCompatActivity implements Navigation
                 mainWebView.getSettings().setJavaScriptEnabled(javaScriptEnabled);
 
                 // Update the privacy icon.
-                updatePrivacyIcon();
+                updatePrivacyIcons(privacyBrowserActivity);
 
-                // Display a Snackbar.
+                // Display a `Snackbar`.
                 if (javaScriptEnabled) {
                     Snackbar.make(findViewById(R.id.mainWebView), R.string.javascript_enabled, Snackbar.LENGTH_SHORT).show();
                 } else {
@@ -659,7 +662,18 @@ public class MainWebViewActivity extends AppCompatActivity implements Navigation
                 cookieManager.setAcceptCookie(firstPartyCookiesEnabled);
 
                 // Update the privacy icon.
-                updatePrivacyIcon();
+                updatePrivacyIcons(privacyBrowserActivity);
+
+                // Display a `Snackbar`.
+                if (firstPartyCookiesEnabled) {
+                    Snackbar.make(findViewById(R.id.mainWebView), R.string.first_party_cookies_enabled, Snackbar.LENGTH_SHORT).show();
+                } else {
+                    if (javaScriptEnabled) {
+                        Snackbar.make(findViewById(R.id.mainWebView), R.string.first_party_cookies_disabled, Snackbar.LENGTH_SHORT).show();
+                    } else {
+                        Snackbar.make(findViewById(R.id.mainWebView), R.string.privacy_mode, Snackbar.LENGTH_SHORT).show();
+                    }
+                }
 
                 // Reload the WebView.
                 mainWebView.reload();
@@ -676,6 +690,13 @@ public class MainWebViewActivity extends AppCompatActivity implements Navigation
                     // Apply the new cookie status.
                     cookieManager.setAcceptThirdPartyCookies(mainWebView, thirdPartyCookiesEnabled);
 
+                    // Display a `Snackbar`.
+                    if (thirdPartyCookiesEnabled) {
+                        Snackbar.make(findViewById(R.id.mainWebView), R.string.third_party_cookies_enabled, Snackbar.LENGTH_SHORT).show();
+                    } else {
+                        Snackbar.make(findViewById(R.id.mainWebView), R.string.third_party_cookies_disabled, Snackbar.LENGTH_SHORT).show();
+                    }
+
                     // Reload the WebView.
                     mainWebView.reload();
                 } // Else do nothing because SDK < 21.
@@ -691,6 +712,13 @@ public class MainWebViewActivity extends AppCompatActivity implements Navigation
                 // Apply the new DOM Storage status.
                 mainWebView.getSettings().setDomStorageEnabled(domStorageEnabled);
 
+                // Display a `Snackbar`.
+                if (domStorageEnabled) {
+                    Snackbar.make(findViewById(R.id.mainWebView), R.string.dom_storage_enabled, Snackbar.LENGTH_SHORT).show();
+                } else {
+                    Snackbar.make(findViewById(R.id.mainWebView), R.string.dom_storage_disabled, Snackbar.LENGTH_SHORT).show();
+                }
+
                 // Reload the WebView.
                 mainWebView.reload();
                 return true;
@@ -705,6 +733,13 @@ public class MainWebViewActivity extends AppCompatActivity implements Navigation
                 // Apply the new form data status.
                 mainWebView.getSettings().setSaveFormData(saveFormDataEnabled);
 
+                // Display a `Snackbar`.
+                if (saveFormDataEnabled) {
+                    Snackbar.make(findViewById(R.id.mainWebView), R.string.form_data_enabled, Snackbar.LENGTH_SHORT).show();
+                } else {
+                    Snackbar.make(findViewById(R.id.mainWebView), R.string.form_data_disabled, Snackbar.LENGTH_SHORT).show();
+                }
+
                 // Reload the WebView.
                 mainWebView.reload();
                 return true;
@@ -906,6 +941,9 @@ public class MainWebViewActivity extends AppCompatActivity implements Navigation
 
         // Reinitialize the adView variable, as the View will have been removed and re-added in the free flavor by BannerAd.reloadAfterRotate().
         adView = findViewById(R.id.adView);
+
+        // `invalidateOptionsMenu` should recalculate the number of action buttons from the menu to display on the app bar, but it doesn't because of the this bug:  https://code.google.com/p/android/issues/detail?id=20493#c8
+        invalidateOptionsMenu();
     }
 
     @Override
@@ -1033,15 +1071,70 @@ public class MainWebViewActivity extends AppCompatActivity implements Navigation
         inputMethodManager.hideSoftInputFromWindow(mainWebView.getWindowToken(), 0);
     }
 
-    private void updatePrivacyIcon() {
+    public static void updatePrivacyIcons(Activity activity) {
+        // Get handles for the icons.
+        MenuItem privacyIcon = mainMenu.findItem(R.id.toggleJavaScript);
+        MenuItem firstPartyCookiesIcon = mainMenu.findItem(R.id.toggleFirstPartyCookies);
+        MenuItem thirdPartyCookiesIcon = mainMenu.findItem(R.id.toggleThirdPartyCookies);
+        MenuItem domStorageIcon = mainMenu.findItem(R.id.toggleDomStorage);
+        MenuItem formDataIcon = mainMenu.findItem(R.id.toggleSaveFormData);
+
+        // Update `privacyIcon`.
         if (javaScriptEnabled) {
+            // `JavaScript` is enabled.
             privacyIcon.setIcon(R.drawable.javascript_enabled);
         } else {
             if (firstPartyCookiesEnabled) {
+                // `JavaScript` is disabled but cookies are enabled.
                 privacyIcon.setIcon(R.drawable.warning);
             } else {
+                // All the dangerous features are disabled.
                 privacyIcon.setIcon(R.drawable.privacy_mode);
             }
         }
+
+        // Update `firstPartyCookiesIcon`.
+        if (firstPartyCookiesEnabled) {
+            // First-party cookies are enabled.
+            firstPartyCookiesIcon.setIcon(R.drawable.cookies_warning);
+        } else {
+            // First-party cookies are disabled.
+            firstPartyCookiesIcon.setIcon(R.drawable.cookies_disabled);
+        }
+
+        // Update `thirdPartyCookiesIcon`.
+        if (firstPartyCookiesEnabled) {
+            if (thirdPartyCookiesEnabled) {
+                //  Third-party cookies are enabled.  Bad!
+                thirdPartyCookiesIcon.setIcon(R.drawable.cookies_critical);
+            } else {
+                // Third-party cookies are disabled.
+                thirdPartyCookiesIcon.setIcon(R.drawable.cookies_disabled);
+            }
+        } else {
+            // First-party cookies are disabled, so third-party cookies are ghosted.
+            thirdPartyCookiesIcon.setIcon(R.drawable.cookies_ghosted);
+        }
+
+        // Update `domStorageIcon`.
+        if (javaScriptEnabled) {
+            if (domStorageEnabled) {
+                domStorageIcon.setIcon(R.drawable.dom_storage_enabled);
+            } else {
+                domStorageIcon.setIcon(R.drawable.dom_storage_disabled);
+            }
+        } else {
+            domStorageIcon.setIcon(R.drawable.dom_storage_ghosted);
+        }
+
+        // Update `formDataIcon`.
+        if (saveFormDataEnabled) {
+            formDataIcon.setIcon(R.drawable.form_data_enabled);
+        } else {
+            formDataIcon.setIcon(R.drawable.form_data_disabled);
+        }
+
+        // `invalidateOptionsMenu` calls `onPrepareOptionsMenu()` and redraws the icons in the `AppBar`.
+        ActivityCompat.invalidateOptionsMenu(activity);
     }
 }
index 38463427425875c55dbeb7f8c4c36a62a03d2e99..51952c4f071bb507b9433d56b9b541067677e0d9 100644 (file)
@@ -139,8 +139,8 @@ public class SettingsFragment extends PreferenceFragment {
                         MainWebViewActivity.mainWebView.getSettings().setJavaScriptEnabled(MainWebViewActivity.javaScriptEnabled);
                         MainWebViewActivity.mainWebView.reload();
 
-                        // Update the privacy icon.
-                        updatePrivacyIcon();
+                        // Update the privacy icons.
+                        MainWebViewActivity.updatePrivacyIcons(MainWebViewActivity.privacyBrowserActivity);
                         break;
 
                     case "first_party_cookies_enabled":
@@ -159,8 +159,8 @@ public class SettingsFragment extends PreferenceFragment {
                         MenuItem firstPartyCookiesMenuItem = MainWebViewActivity.mainMenu.findItem(R.id.toggleFirstPartyCookies);
                         firstPartyCookiesMenuItem.setChecked(MainWebViewActivity.firstPartyCookiesEnabled);
 
-                        // Update the privacy icon.
-                        updatePrivacyIcon();
+                        // Update the privacy icons.
+                        MainWebViewActivity.updatePrivacyIcons(MainWebViewActivity.privacyBrowserActivity);
                         break;
 
                     case "third_party_cookies_enabled":
@@ -176,6 +176,9 @@ public class SettingsFragment extends PreferenceFragment {
                             MainWebViewActivity.cookieManager.setAcceptThirdPartyCookies(MainWebViewActivity.mainWebView, MainWebViewActivity.thirdPartyCookiesEnabled);
                             MainWebViewActivity.mainWebView.reload();
                         }
+
+                        // Update the privacy icons.
+                        MainWebViewActivity.updatePrivacyIcons(MainWebViewActivity.privacyBrowserActivity);
                         break;
 
                     case "dom_storage_enabled":
@@ -190,8 +193,8 @@ public class SettingsFragment extends PreferenceFragment {
                         MainWebViewActivity.mainWebView.getSettings().setDomStorageEnabled(MainWebViewActivity.domStorageEnabled);
                         MainWebViewActivity.mainWebView.reload();
 
-                        // Update the privacy icon.
-                        updatePrivacyIcon();
+                        // Update the privacy icons.
+                        MainWebViewActivity.updatePrivacyIcons(MainWebViewActivity.privacyBrowserActivity);
                         break;
 
                     case "save_form_data_enabled":
@@ -205,6 +208,9 @@ public class SettingsFragment extends PreferenceFragment {
                         // Update mainWebView and reload the website.
                         MainWebViewActivity.mainWebView.getSettings().setSaveFormData(MainWebViewActivity.saveFormDataEnabled);
                         MainWebViewActivity.mainWebView.reload();
+
+                        // Update the privacy icons.
+                        MainWebViewActivity.updatePrivacyIcons(MainWebViewActivity.privacyBrowserActivity);
                         break;
 
                     case "user_agent":
@@ -349,19 +355,4 @@ public class SettingsFragment extends PreferenceFragment {
         super.onResume();
         savedPreferences.registerOnSharedPreferenceChangeListener(preferencesListener);
     }
-
-    private void updatePrivacyIcon() {
-        // Define a reference to the toggleJavaScript icon.
-        MenuItem toggleJavaScript = MainWebViewActivity.mainMenu.findItem(R.id.toggleJavaScript);
-
-        if (MainWebViewActivity.javaScriptEnabled) {
-            toggleJavaScript.setIcon(R.drawable.javascript_enabled);
-        } else {
-            if (MainWebViewActivity.firstPartyCookiesEnabled) {
-                toggleJavaScript.setIcon(R.drawable.warning);
-            } else {
-                toggleJavaScript.setIcon(R.drawable.privacy_mode);
-            }
-        }
-    }
 }
index 45702f628d61ba73218e3bfa2140f215648d0899..52826504de985fbe3584103b5d562a7988984c48 100644 (file)
@@ -24,21 +24,15 @@ import android.app.AlertDialog;
 import android.app.Dialog;
 import android.app.DialogFragment;
 import android.content.DialogInterface;
-import android.graphics.drawable.BitmapDrawable;
-import android.graphics.drawable.Drawable;
 import android.net.http.SslCertificate;
 import android.net.http.SslError;
 import android.os.Bundle;
-import android.support.v4.content.ContextCompat;
-import android.text.SpannableString;
 import android.text.SpannableStringBuilder;
 import android.text.Spanned;
 import android.text.style.ForegroundColorSpan;
 import android.view.LayoutInflater;
 import android.widget.TextView;
 
-import org.w3c.dom.Text;
-
 import java.util.Date;
 
 public class SslCertificateError extends DialogFragment{
index 55884c12c574d00a10d38b622eed1b7c6b9dcbd9..32ce26a095c3e113026ff6e992d858d30cc5f53f 100644 (file)
@@ -8,6 +8,7 @@
     android:viewportHeight="24.0"
     android:viewportWidth="24.0" >
 
+    <!-- We have to use a hard coded color code until API >= 21.  Then we can use`@color`. -->
     <path
         android:fillColor="#FF000000"
         android:pathData="M11,17h2v-6h-2v6zM12,2C6.48,2 2,6.48 2,12s4.48,10 10,10 10,-4.48 10,-10S17.52,2 12,2zM12,20c-4.41,0 -8,-3.59 -8,-8s3.59,-8 8,-8 8,3.59 8,8 -3.59,8 -8,8zM11,9h2L13,7h-2v2z" />
index 92e17d17dd30c8522b072f0e6d645eeac0501889..3d1934b0b82156e2b53f45bc1aff24461f8fed91 100644 (file)
@@ -8,6 +8,7 @@
     android:viewportHeight="24.0"
     android:viewportWidth="24.0" >
 
+    <!-- We have to use a hard coded color code until API >= 21.  Then we can use`@color`. -->
     <path
         android:fillColor="#FFFFFFFF"
         android:pathData="M19,13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z"/>
index a49efd8b44cc4ec17a5fcceb159b5b2c2cc0a766..7d4bc031c9b662507b3f8dc4dfd194d5f00097ad 100644 (file)
@@ -9,6 +9,7 @@
     android:viewportWidth="24.0"
     android:autoMirrored="true" >
 
+    <!-- We have to use a hard coded color code until API >= 21.  Then we can use`@color`. -->
     <path
         android:fillColor="#FF000000"
         android:pathData="M20,11H7.83l5.59,-5.59L12,4l-8,8 8,8 1.41,-1.41L7.83,13H20v-2z" />
index 7676249160a3551a1170080f5b2ee10be4d6ed25..342130135037e22b2b38b670e553bba6a1edeb3b 100644 (file)
@@ -8,6 +8,7 @@
     android:viewportHeight="24.0"
     android:viewportWidth="24.0" >
 
+    <!-- We have to use a hard coded color code until API >= 21.  Then we can use`@color`. -->
     <path
         android:fillColor="#FF000000"
         android:pathData="M17,3L7,3c-1.1,0 -1.99,0.9 -1.99,2L5,21l7,-3 7,3L19,5c0,-1.1 -0.9,-2 -2,-2zM17,18l-5,-2.18L7,18L7,5h10v13z"/>
diff --git a/app/src/main/res/drawable/cookies_critical.xml b/app/src/main/res/drawable/cookies_critical.xml
new file mode 100644 (file)
index 0000000..236b1c5
--- /dev/null
@@ -0,0 +1,14 @@
+<!-- cookies_critical.xml was created by Google and downloaded from https://materialdesignicons.com/icon/cookie. -->
+
+<vector
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:height="26dp"
+    android:width="26dp"
+    android:viewportHeight="24.0"
+    android:viewportWidth="24.0" >
+
+    <!-- We have to use a hard coded color code until API >= 21.  Then we can use`@color`. -->
+    <path
+        android:fillColor="#FFD50000"
+        android:pathData="M12,3A9,9 0 0,0 3,12A9,9 0 0,0 12,21A9,9 0 0,0 21,12C21,11.5 20.96,11 20.87,10.5C20.6,10 20,10 20,10H18V9C18,8 17,8 17,8H15V7C15,6 14,6 14,6H13V4C13,3 12,3 12,3M9.5,6A1.5,1.5 0 0,1 11,7.5A1.5,1.5 0 0,1 9.5,9A1.5,1.5 0 0,1 8,7.5A1.5,1.5 0 0,1 9.5,6M6.5,10A1.5,1.5 0 0,1 8,11.5A1.5,1.5 0 0,1 6.5,13A1.5,1.5 0 0,1 5,11.5A1.5,1.5 0 0,1 6.5,10M11.5,11A1.5,1.5 0 0,1 13,12.5A1.5,1.5 0 0,1 11.5,14A1.5,1.5 0 0,1 10,12.5A1.5,1.5 0 0,1 11.5,11M16.5,13A1.5,1.5 0 0,1 18,14.5A1.5,1.5 0 0,1 16.5,16H16.5A1.5,1.5 0 0,1 15,14.5H15A1.5,1.5 0 0,1 16.5,13M11,16A1.5,1.5 0 0,1 12.5,17.5A1.5,1.5 0 0,1 11,19A1.5,1.5 0 0,1 9.5,17.5A1.5,1.5 0 0,1 11,16Z" />
+</vector>
\ No newline at end of file
diff --git a/app/src/main/res/drawable/cookies_disabled.xml b/app/src/main/res/drawable/cookies_disabled.xml
new file mode 100644 (file)
index 0000000..8a1a562
--- /dev/null
@@ -0,0 +1,14 @@
+<!-- cookies_disabled.xml was created by Google and downloaded from https://materialdesignicons.com/icon/cookie. -->
+
+<vector
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:height="26dp"
+    android:width="26dp"
+    android:viewportHeight="24.0"
+    android:viewportWidth="24.0" >
+
+    <!-- We have to use a hard coded color code until API >= 21.  Then we can use`@color`. -->
+    <path
+        android:fillColor="#88000000"
+        android:pathData="M12,3A9,9 0 0,0 3,12A9,9 0 0,0 12,21A9,9 0 0,0 21,12C21,11.5 20.96,11 20.87,10.5C20.6,10 20,10 20,10H18V9C18,8 17,8 17,8H15V7C15,6 14,6 14,6H13V4C13,3 12,3 12,3M9.5,6A1.5,1.5 0 0,1 11,7.5A1.5,1.5 0 0,1 9.5,9A1.5,1.5 0 0,1 8,7.5A1.5,1.5 0 0,1 9.5,6M6.5,10A1.5,1.5 0 0,1 8,11.5A1.5,1.5 0 0,1 6.5,13A1.5,1.5 0 0,1 5,11.5A1.5,1.5 0 0,1 6.5,10M11.5,11A1.5,1.5 0 0,1 13,12.5A1.5,1.5 0 0,1 11.5,14A1.5,1.5 0 0,1 10,12.5A1.5,1.5 0 0,1 11.5,11M16.5,13A1.5,1.5 0 0,1 18,14.5A1.5,1.5 0 0,1 16.5,16H16.5A1.5,1.5 0 0,1 15,14.5H15A1.5,1.5 0 0,1 16.5,13M11,16A1.5,1.5 0 0,1 12.5,17.5A1.5,1.5 0 0,1 11,19A1.5,1.5 0 0,1 9.5,17.5A1.5,1.5 0 0,1 11,16Z" />
+</vector>
\ No newline at end of file
diff --git a/app/src/main/res/drawable/cookies_ghosted.xml b/app/src/main/res/drawable/cookies_ghosted.xml
new file mode 100644 (file)
index 0000000..d05224c
--- /dev/null
@@ -0,0 +1,14 @@
+<!-- cookies_ghosted.xml was created by Google and downloaded from https://materialdesignicons.com/icon/cookie. -->
+
+<vector
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:height="26dp"
+    android:width="26dp"
+    android:viewportHeight="24.0"
+    android:viewportWidth="24.0" >
+
+    <!-- We have to use a hard coded color code until API >= 21.  Then we can use`@color`. -->
+    <path
+        android:fillColor="#22000000"
+        android:pathData="M12,3A9,9 0 0,0 3,12A9,9 0 0,0 12,21A9,9 0 0,0 21,12C21,11.5 20.96,11 20.87,10.5C20.6,10 20,10 20,10H18V9C18,8 17,8 17,8H15V7C15,6 14,6 14,6H13V4C13,3 12,3 12,3M9.5,6A1.5,1.5 0 0,1 11,7.5A1.5,1.5 0 0,1 9.5,9A1.5,1.5 0 0,1 8,7.5A1.5,1.5 0 0,1 9.5,6M6.5,10A1.5,1.5 0 0,1 8,11.5A1.5,1.5 0 0,1 6.5,13A1.5,1.5 0 0,1 5,11.5A1.5,1.5 0 0,1 6.5,10M11.5,11A1.5,1.5 0 0,1 13,12.5A1.5,1.5 0 0,1 11.5,14A1.5,1.5 0 0,1 10,12.5A1.5,1.5 0 0,1 11.5,11M16.5,13A1.5,1.5 0 0,1 18,14.5A1.5,1.5 0 0,1 16.5,16H16.5A1.5,1.5 0 0,1 15,14.5H15A1.5,1.5 0 0,1 16.5,13M11,16A1.5,1.5 0 0,1 12.5,17.5A1.5,1.5 0 0,1 11,19A1.5,1.5 0 0,1 9.5,17.5A1.5,1.5 0 0,1 11,16Z" />
+</vector>
\ No newline at end of file
diff --git a/app/src/main/res/drawable/cookies_warning.xml b/app/src/main/res/drawable/cookies_warning.xml
new file mode 100644 (file)
index 0000000..c68a963
--- /dev/null
@@ -0,0 +1,15 @@
+<!-- cookies_warning.xml was created by Google and downloaded from https://materialdesignicons.com/icon/cookie. -->
+
+<vector
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:height="26dp"
+    android:width="26dp"
+    android:viewportHeight="24.0"
+    android:viewportWidth="24.0"
+    android:autoMirrored="true" >
+
+    <!-- We have to use a hard coded color code until API >= 21.  Then we can use`@color`. -->
+    <path
+        android:fillColor="#FFF57F17"
+        android:pathData="M12,3A9,9 0 0,0 3,12A9,9 0 0,0 12,21A9,9 0 0,0 21,12C21,11.5 20.96,11 20.87,10.5C20.6,10 20,10 20,10H18V9C18,8 17,8 17,8H15V7C15,6 14,6 14,6H13V4C13,3 12,3 12,3M9.5,6A1.5,1.5 0 0,1 11,7.5A1.5,1.5 0 0,1 9.5,9A1.5,1.5 0 0,1 8,7.5A1.5,1.5 0 0,1 9.5,6M6.5,10A1.5,1.5 0 0,1 8,11.5A1.5,1.5 0 0,1 6.5,13A1.5,1.5 0 0,1 5,11.5A1.5,1.5 0 0,1 6.5,10M11.5,11A1.5,1.5 0 0,1 13,12.5A1.5,1.5 0 0,1 11.5,14A1.5,1.5 0 0,1 10,12.5A1.5,1.5 0 0,1 11.5,11M16.5,13A1.5,1.5 0 0,1 18,14.5A1.5,1.5 0 0,1 16.5,16H16.5A1.5,1.5 0 0,1 15,14.5H15A1.5,1.5 0 0,1 16.5,13M11,16A1.5,1.5 0 0,1 12.5,17.5A1.5,1.5 0 0,1 11,19A1.5,1.5 0 0,1 9.5,17.5A1.5,1.5 0 0,1 11,16Z" />
+</vector>
\ No newline at end of file
index 0ac318e16de0b37bcb64fcdc3fcb1b4b886c396c..cfc810dfb8ad029e5633af3e5c933de7dff7a60d 100644 (file)
@@ -9,6 +9,7 @@
     android:viewportWidth="24.0"
     android:autoMirrored="true" >
 
+    <!-- We have to use a hard coded color code until API >= 21.  Then we can use`@color`. -->
     <path
         android:fillColor="#FFFFFFFF"
         android:pathData="M20,6h-8l-2,-2L4,4c-1.11,0 -1.99,0.89 -1.99,2L2,18c0,1.11 0.89,2 2,2h16c1.11,0 2,-0.89 2,-2L22,8c0,-1.11 -0.89,-2 -2,-2zM19,14h-3v3h-2v-3h-3v-2h3L14,9h2v3h3v2z"/>
index d314874dd3c79e92ecdd07b3f7160c01c102b27e..00d6fef42534af174d4a418d89b14ef55e586b3a 100644 (file)
@@ -8,6 +8,7 @@
     android:viewportHeight="24.0"
     android:viewportWidth="24.0" >
 
+    <!-- We have to use a hard coded color code until API >= 21.  Then we can use`@color`. -->
     <path
         android:fillColor="#FFFFFFFF"
         android:pathData="M6,19c0,1.1 0.9,2 2,2h8c1.1,0 2,-0.9 2,-2V7H6v12zM19,4h-3.5l-1,-1h-5l-1,1H5v2h14V4z"/>
diff --git a/app/src/main/res/drawable/dom_storage_disabled.xml b/app/src/main/res/drawable/dom_storage_disabled.xml
new file mode 100644 (file)
index 0000000..9541cc6
--- /dev/null
@@ -0,0 +1,16 @@
+<!-- dom_storage_disabled.xml comes from the Android Material icon set, where it is called ic_web.
+  It is released under the CC-BY license <https://creativecommons.org/licenses/by/4.0/>. -->
+
+<vector
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:height="26dp"
+    android:width="26dp"
+    android:viewportHeight="24.0"
+    android:viewportWidth="24.0"
+    android:autoMirrored="true" >
+
+    <!-- We have to use a hard coded color code until API >= 21.  Then we can use`@color`. -->
+    <path
+        android:fillColor="#88000000"
+        android:pathData="M20,4L4,4c-1.1,0 -1.99,0.9 -1.99,2L2,18c0,1.1 0.9,2 2,2h16c1.1,0 2,-0.9 2,-2L22,6c0,-1.1 -0.9,-2 -2,-2zM15,18L4,18v-4h11v4zM15,13L4,13L4,9h11v4zM20,18h-4L16,9h4v9z"/>
+</vector>
diff --git a/app/src/main/res/drawable/dom_storage_enabled.xml b/app/src/main/res/drawable/dom_storage_enabled.xml
new file mode 100644 (file)
index 0000000..bc71681
--- /dev/null
@@ -0,0 +1,16 @@
+<!-- dom_storage_enabled.xml comes from the Android Material icon set, where it is called ic_web.
+  It is released under the CC-BY license <https://creativecommons.org/licenses/by/4.0/>. -->
+
+<vector
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:height="26dp"
+    android:width="26dp"
+    android:viewportHeight="24.0"
+    android:viewportWidth="24.0"
+    android:autoMirrored="true" >
+
+    <!-- We have to use a hard coded color code until API >= 21.  Then we can use`@color`. -->
+    <path
+        android:fillColor="#FFF57F17"
+        android:pathData="M20,4L4,4c-1.1,0 -1.99,0.9 -1.99,2L2,18c0,1.1 0.9,2 2,2h16c1.1,0 2,-0.9 2,-2L22,6c0,-1.1 -0.9,-2 -2,-2zM15,18L4,18v-4h11v4zM15,13L4,13L4,9h11v4zM20,18h-4L16,9h4v9z"/>
+</vector>
diff --git a/app/src/main/res/drawable/dom_storage_ghosted.xml b/app/src/main/res/drawable/dom_storage_ghosted.xml
new file mode 100644 (file)
index 0000000..9a338ec
--- /dev/null
@@ -0,0 +1,16 @@
+<!-- dom_storage_ghosted.xml comes from the Android Material icon set, where it is called ic_web.
+  It is released under the CC-BY license <https://creativecommons.org/licenses/by/4.0/>. -->
+
+<vector
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:height="26dp"
+    android:width="26dp"
+    android:viewportHeight="24.0"
+    android:viewportWidth="24.0"
+    android:autoMirrored="true" >
+
+    <!-- We have to use a hard coded color code until API >= 21.  Then we can use`@color`. -->
+    <path
+        android:fillColor="#44000000"
+        android:pathData="M20,4L4,4c-1.1,0 -1.99,0.9 -1.99,2L2,18c0,1.1 0.9,2 2,2h16c1.1,0 2,-0.9 2,-2L22,6c0,-1.1 -0.9,-2 -2,-2zM15,18L4,18v-4h11v4zM15,13L4,13L4,9h11v4zM20,18h-4L16,9h4v9z"/>
+</vector>
index cd7c5e89f10be048d4c97691cecb32d3084b65e2..d985eff5eee7078e6b1d04e4c9d19baa08232edb 100644 (file)
@@ -8,6 +8,7 @@
     android:viewportHeight="24.0"
     android:viewportWidth="24.0" >
 
+    <!-- We have to use a hard coded color code until API >= 21.  Then we can use`@color`. -->
     <path
         android:fillColor="#FF000000"
         android:pathData="M19,9h-4V3H9v6H5l7,7 7,-7zM5,18v2h14v-2H5z" />
index 89a86c32df286ec3cfc8b2f0cb7e8388bca34978..26e890cd7e08ba1a9a75d6ed18afd81db3cafcd0 100644 (file)
@@ -9,6 +9,7 @@
     android:viewportWidth="24.0"
     android:autoMirrored="true" >
 
+    <!-- We have to use a hard coded color code until API >= 21.  Then we can use`@color`. -->
     <path
         android:fillColor="#FFFFFFFF"
         android:pathData="M3,17.25V21h3.75L17.81,9.94l-3.75,-3.75L3,17.25zM20.71,7.04c0.39,-0.39 0.39,-1.02 0,-1.41l-2.34,-2.34c-0.39,-0.39 -1.02,-0.39 -1.41,0l-1.83,1.83 3.75,3.75 1.83,-1.83z"/>
index e46ccccaa44c91be326d4bcda48efaf23484cf7d..a74375c3312ea1677fdcd66865bf83d7dcbe3454 100644 (file)
@@ -9,6 +9,7 @@
     android:viewportWidth="24.0"
     android:autoMirrored="true" >
 
+    <!-- We have to use a hard coded color code until API >= 21.  Then we can use`@color`. -->
     <path
         android:fillColor="#FF000000"
         android:pathData="M10.09,15.59L11.5,17l5,-5 -5,-5 -1.41,1.41L12.67,11H3v2h9.67l-2.58,2.59zM19,3H5c-1.11,0 -2,0.9 -2,2v4h2V5h14v14H5v-4H3v4c0,1.1 0.89,2 2,2h14c1.1,0 2,-0.9 2,-2V5c0,-1.1 -0.9,-2 -2,-2z" />
index ffa947738694c98ad595c714d17d7ec9377c694f..ebb3c8ad98adb606deeae65648ea7446a8cb4b86 100644 (file)
@@ -8,6 +8,7 @@
     android:viewportHeight="24.0"
     android:viewportWidth="24.0" >
 
+    <!-- We have to use a hard coded color code until API >= 21.  Then we can use`@color`. -->
     <path
         android:fillColor="#FF0D47A1"
         android:pathData="M10,4H4c-1.1,0 -1.99,0.9 -1.99,2L2,18c0,1.1 0.9,2 2,2h16c1.1,0 2,-0.9 2,-2V8c0,-1.1 -0.9,-2 -2,-2h-8l-2,-2z"/>
index 5710e29ac6f6bbf16a0c41caa4e7662890cd2289..9bf91cb333a0792b3fedde79d8a97709cd6836df 100644 (file)
@@ -8,6 +8,7 @@
     android:viewportHeight="24.0"
     android:viewportWidth="24.0" >
 
+    <!-- We have to use a hard coded color code until API >= 21.  Then we can use`@color`. -->
     <path
         android:fillColor="#FF9E9E9E"
         android:pathData="M10,4H4c-1.1,0 -1.99,0.9 -1.99,2L2,18c0,1.1 0.9,2 2,2h16c1.1,0 2,-0.9 2,-2V8c0,-1.1 -0.9,-2 -2,-2h-8l-2,-2z"/>
diff --git a/app/src/main/res/drawable/form_data_disabled.xml b/app/src/main/res/drawable/form_data_disabled.xml
new file mode 100644 (file)
index 0000000..804e545
--- /dev/null
@@ -0,0 +1,16 @@
+<!-- form_data_disabled.xml comes from the Android Material icon set, where it is called ic_subtitles.
+  It is released under the CC-BY license <https://creativecommons.org/licenses/by/4.0/>. -->
+
+<vector
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:height="26dp"
+    android:width="26dp"
+    android:viewportHeight="24.0"
+    android:viewportWidth="24.0"
+    android:autoMirrored="true" >
+
+    <!-- We have to use a hard coded color code until API >= 21.  Then we can use`@color`. -->
+    <path
+        android:fillColor="#88000000"
+        android:pathData="M20,4L4,4c-1.1,0 -2,0.9 -2,2v12c0,1.1 0.9,2 2,2h16c1.1,0 2,-0.9 2,-2L22,6c0,-1.1 -0.9,-2 -2,-2zM4,12h4v2L4,14v-2zM14,18L4,18v-2h10v2zM20,18h-4v-2h4v2zM20,14L10,14v-2h10v2z"/>
+</vector>
diff --git a/app/src/main/res/drawable/form_data_enabled.xml b/app/src/main/res/drawable/form_data_enabled.xml
new file mode 100644 (file)
index 0000000..a34dade
--- /dev/null
@@ -0,0 +1,16 @@
+<!-- form_data_enabled.xml comes from the Android Material icon set, where it is called ic_subtitles.
+  It is released under the CC-BY license <https://creativecommons.org/licenses/by/4.0/>. -->
+
+<vector
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:height="26dp"
+    android:width="26dp"
+    android:viewportHeight="24.0"
+    android:viewportWidth="24.0"
+    android:autoMirrored="true" >
+
+    <!-- We have to use a hard coded color code until API >= 21.  Then we can use`@color`. -->
+    <path
+        android:fillColor="#FFF57F17"
+        android:pathData="M20,4L4,4c-1.1,0 -2,0.9 -2,2v12c0,1.1 0.9,2 2,2h16c1.1,0 2,-0.9 2,-2L22,6c0,-1.1 -0.9,-2 -2,-2zM4,12h4v2L4,14v-2zM14,18L4,18v-2h10v2zM20,18h-4v-2h4v2zM20,14L10,14v-2h10v2z"/>
+</vector>
index dfa9e066b96ce0d30e2c3a73ff7968d3eeffa46c..d10357f64ba8ca00c4c3045a664ae0fe50075f45 100644 (file)
@@ -9,6 +9,7 @@
     android:viewportWidth="24.0"
     android:autoMirrored="true" >
 
+    <!-- We have to use a hard coded color code until API >= 21.  Then we can use`@color`. -->
     <path
         android:fillColor="#FF000000"
         android:pathData="M12,4l-1.41,1.41L16.17,11H4v2h12.17l-5.58,5.59L12,20l8,-8z" />
index b060597af46f29af6f82194e1ea113c65bd7657c..cb2c2e88f2ed7297e796cc950b4f82e161e04e06 100644 (file)
@@ -9,6 +9,7 @@
     android:viewportHeight="24.0"
     android:viewportWidth="24.0" >
 
+    <!-- We have to use a hard coded color code until API >= 21.  Then we can use`@color`. -->
     <path
         android:fillColor="#FF000000"
         android:pathData="M21,5c-1.11,-0.35 -2.33,-0.5 -3.5,-0.5 -1.95,0 -4.05,0.4 -5.5,1.5 -1.45,-1.1 -3.55,-1.5 -5.5,-1.5S2.45,4.9 1,6v14.65c0,0.25 0.25,0.5 0.5,0.5 0.1,0 0.15,-0.05 0.25,-0.05C3.1,20.45 5.05,20 6.5,20c1.95,0 4.05,0.4 5.5,1.5 1.35,-0.85 3.8,-1.5 5.5,-1.5 1.65,0 3.35,0.3 4.75,1.05 0.1,0.05 0.15,0.05 0.25,0.05 0.25,0 0.5,-0.25 0.5,-0.5L23,6c-0.6,-0.45 -1.25,-0.75 -2,-1zM21,18.5c-1.1,-0.35 -2.3,-0.5 -3.5,-0.5 -1.7,0 -4.15,0.65 -5.5,1.5L12,8c1.35,-0.85 3.8,-1.5 5.5,-1.5 1.2,0 2.4,0.15 3.5,0.5v11.5z" />
index a0696a3e5a7f1461df5bb018391079cda2e75e62..cb6f857150b7bd64dd65514f5b7aa1bd12e0da50 100644 (file)
@@ -8,6 +8,7 @@
     android:viewportHeight="24.0"
     android:viewportWidth="24.0" >
 
+    <!-- We have to use a hard coded color code until API >= 21.  Then we can use`@color`. -->
     <path
         android:fillColor="#FF000000"
         android:pathData="M10,20v-6h4v6h5v-8h3L12,3 2,12h3v8z" />
index 49db0f5d2bf3e333dd1eacade285481ce56f5492..2280c51ea7060a0ff3c6d46cd9e26da0f92aec43 100644 (file)
@@ -8,16 +8,19 @@
     android:viewportHeight="256.0"
     android:viewportWidth="256.0" >
 
+    <!-- We have to use a hard coded color code until API >= 21.  Then we can use`@color`. -->
     <path
         android:fillAlpha="1"
         android:fillColor="#b71c1c"
         android:pathData="m128,12.8 l-94.25,41.89 0,62.84c0,58.12 40.22,112.48 94.25,125.67 54.04,-13.2 94.25,-67.55 94.25,-125.67l0,-62.84z" android:strokeColor="#00000000" />
 
+    <!-- We have to use a hard coded color code until API >= 21.  Then we can use`@color`. -->
     <path
         android:fillAlpha="1"
         android:fillColor="#d32f2f"
         android:pathData="m128,0 l-104.73,46.55 0,69.82C23.27,180.95 67.96,241.34 128,256 188.04,241.34 232.73,180.95 232.73,116.36l0,-69.82L128,0ZM128,127.88 L209.45,127.88C203.29,175.83 171.29,218.53 128,231.91l0,-103.91 -81.45,0 0,-66.33L128,25.48l0,102.4z" android:strokeColor="#00000000" />
 
+    <!-- We have to use a hard coded color code until API >= 21.  Then we can use`@color`. -->
     <path
         android:fillAlpha="1"
         android:fillColor="#ffffff"
index 6934feb5286bd7777928e1a8eb6b7d1d76f208a4..c51590402e526fa240bab9cd74462cfbea0658b0 100644 (file)
@@ -8,7 +8,7 @@
     android:viewportHeight="24.0"
     android:viewportWidth="24.0" >
 
-    <!-- We have to wait until API >=21 to reference `@color/light_blue` directly. -->
+    <!-- We have to use a hard coded color code until API >= 21.  Then we can use`@color`. -->
     <path
         android:fillColor="#FFBBDEFB"
         android:pathData="M16,13h-3V3h-2v10H8l4,4 4,-4zM4,19v2h16v-2H4z"/>
index b7a2423ece42638153c110460dabdf6a45b28e5c..70d82b84773a5f9f914b7cd70fa1a7094a46ee18 100644 (file)
@@ -8,6 +8,7 @@
     android:viewportHeight="24.0"
     android:viewportWidth="24.0" >
 
+    <!-- We have to use a hard coded color code until API >= 21.  Then we can use`@color`. -->
     <path
         android:fillColor="#FFFFFFFF"
         android:pathData="M16,13h-3V3h-2v10H8l4,4 4,-4zM4,19v2h16v-2H4z"/>
index 4ead123aa821216887cf918d4552e69e4373e993..a610b6d6bf5e3086a19c78847d22c826e41af97b 100644 (file)
@@ -8,7 +8,7 @@
     android:viewportHeight="24.0"
     android:viewportWidth="24.0" >
 
-    <!-- We have to wait until API >=21 to reference `@color/light_blue` directly. -->
+    <!-- We have to use a hard coded color code until API >= 21.  Then we can use`@color`. -->
     <path
         android:fillColor="#FFBBDEFB"
         android:pathData="M8,11h3v10h2V11h3l-4,-4 -4,4zM4,3v2h16V3H4z"/>
index 20a40515464168ba39f17314272a5dcb41215bdb..809661864710ec73d03f8fe7ec85ae4077be1a49 100644 (file)
@@ -8,6 +8,7 @@
     android:viewportHeight="24.0"
     android:viewportWidth="24.0" >
 
+    <!-- We have to use a hard coded color code until API >= 21.  Then we can use`@color`. -->
     <path
         android:fillColor="#FFFFFFFF"
         android:pathData="M8,11h3v10h2V11h3l-4,-4 -4,4zM4,3v2h16V3H4z"/>
index 9b912bb1a0041a595392a8ae3992d93ae16ec140..67a3adb933cdb0dacd30b1c679bfb13159d4694c 100644 (file)
@@ -9,6 +9,7 @@
     android:viewportHeight="24.0"
     android:viewportWidth="24.0" >
 
+    <!-- We have to use a hard coded color code until API >= 21.  Then we can use`@color`. -->
     <path
         android:fillColor="#FFFFFFFF"
         android:pathData="M20,6h-8l-2,-2L4,4c-1.1,0 -2,0.9 -2,2v12c0,1.1 0.9,2 2,2h16c1.1,0 2,-0.9 2,-2L22,8c0,-1.1 -0.9,-2 -2,-2zM17.94,17L15,15.28 12.06,17l0.78,-3.33 -2.59,-2.24 3.41,-0.29L15,8l1.34,3.14 3.41,0.29 -2.59,2.24 0.78,3.33z"/>
index 01a0891ebbcd62d4ce5751f0239536f6e352fe67..79bdf144e462c282b292572ca73e43258c1bd0fe 100644 (file)
@@ -8,16 +8,19 @@
     android:viewportHeight="256.0"
     android:viewportWidth="256.0" >
 
+    <!-- We have to use a hard coded color code until API >= 21.  Then we can use`@color`. -->
     <path
         android:fillAlpha="1"
         android:fillColor="#0d4781"
         android:pathData="m128,12.8 l-94.25,41.89 0,62.84c0,58.12 40.22,112.48 94.25,125.67 54.04,-13.2 94.25,-67.55 94.25,-125.67l0,-62.84z" android:strokeColor="#00000000" />
 
+    <!-- We have to use a hard coded color code until API >= 21.  Then we can use`@color`. -->
     <path
         android:fillAlpha="1"
         android:fillColor="#1976d2"
         android:pathData="m128,0 l-104.73,46.55 0,69.82C23.27,180.95 67.96,241.34 128,256 188.04,241.34 232.73,180.95 232.73,116.36l0,-69.82L128,0ZM128,127.88 L209.45,127.88C203.29,175.83 171.29,218.53 128,231.91l0,-103.91 -81.45,0 0,-66.33L128,25.48l0,102.4z" android:strokeColor="#00000000" />
 
+    <!-- We have to use a hard coded color code until API >= 21.  Then we can use`@color`. -->
     <path
         android:fillAlpha="1"
         android:fillColor="#ffffff"
index 24205a5b00b1afaa7aa2e9ee74625677d812ab51..45d86250dc3e7d4389e019132c14e5a2bf04426b 100644 (file)
@@ -8,6 +8,7 @@
     android:viewportHeight="24.0"
     android:viewportWidth="24.0" >
 
+    <!-- We have to use a hard coded color code until API >= 21.  Then we can use`@color`. -->
     <path
         android:fillColor="#FFFFFFFF"
         android:pathData="M3,5h2L5,3c-1.1,0 -2,0.9 -2,2zM3,13h2v-2L3,11v2zM7,21h2v-2L7,19v2zM3,9h2L5,7L3,7v2zM13,3h-2v2h2L13,3zM19,3v2h2c0,-1.1 -0.9,-2 -2,-2zM5,21v-2L3,19c0,1.1 0.9,2 2,2zM3,17h2v-2L3,15v2zM9,3L7,3v2h2L9,3zM11,21h2v-2h-2v2zM19,13h2v-2h-2v2zM19,21c1.1,0 2,-0.9 2,-2h-2v2zM19,9h2L21,7h-2v2zM19,17h2v-2h-2v2zM15,21h2v-2h-2v2zM15,5h2L17,3h-2v2zM7,17h10L17,7L7,7v10zM9,9h6v6L9,15L9,9z"/>
index 3b26c7885e2393000745ff000959a56ec86bd833..ece63010fedc23e52c741967ddce4ea0f93237a9 100644 (file)
@@ -8,6 +8,7 @@
     android:viewportHeight="24.0"
     android:viewportWidth="24.0" >
 
+    <!-- We have to use a hard coded color code until API >= 21.  Then we can use`@color`. -->
     <path
         android:fillColor="#FF000000"
         android:pathData="M19.43,12.98c0.04,-0.32 0.07,-0.64 0.07,-0.98s-0.03,-0.66 -0.07,-0.98l2.11,-1.65c0.19,-0.15 0.24,-0.42 0.12,-0.64l-2,-3.46c-0.12,-0.22 -0.39,-0.3 -0.61,-0.22l-2.49,1c-0.52,-0.4 -1.08,-0.73 -1.69,-0.98l-0.38,-2.65C14.46,2.18 14.25,2 14,2h-4c-0.25,0 -0.46,0.18 -0.49,0.42l-0.38,2.65c-0.61,0.25 -1.17,0.59 -1.69,0.98l-2.49,-1c-0.23,-0.09 -0.49,0 -0.61,0.22l-2,3.46c-0.13,0.22 -0.07,0.49 0.12,0.64l2.11,1.65c-0.04,0.32 -0.07,0.65 -0.07,0.98s0.03,0.66 0.07,0.98l-2.11,1.65c-0.19,0.15 -0.24,0.42 -0.12,0.64l2,3.46c0.12,0.22 0.39,0.3 0.61,0.22l2.49,-1c0.52,0.4 1.08,0.73 1.69,0.98l0.38,2.65c0.03,0.24 0.24,0.42 0.49,0.42h4c0.25,0 0.46,-0.18 0.49,-0.42l0.38,-2.65c0.61,-0.25 1.17,-0.59 1.69,-0.98l2.49,1c0.23,0.09 0.49,0 0.61,-0.22l2,-3.46c0.12,-0.22 0.07,-0.49 -0.12,-0.64l-2.11,-1.65zM12,15.5c-1.93,0 -3.5,-1.57 -3.5,-3.5s1.57,-3.5 3.5,-3.5 3.5,1.57 3.5,3.5 -1.57,3.5 -3.5,3.5z" />
index ff5c18de176bc9ccca950c81d16c7b0111fdd52f..636ff113f035378983d6730ea6dc67f4ffec9c3c 100644 (file)
@@ -8,16 +8,19 @@
     android:viewportHeight="256.0"
     android:viewportWidth="256.0" >
 
+    <!-- We have to use a hard coded color code until API >= 21.  Then we can use`@color`. -->
     <path
         android:fillAlpha="1"
         android:fillColor="#f57f17"
         android:pathData="m128,12.8 l-94.25,41.89 0,62.84c0,58.12 40.22,112.48 94.25,125.67 54.04,-13.2 94.25,-67.55 94.25,-125.67l0,-62.84z" android:strokeColor="#00000000" />
 
+    <!-- We have to use a hard coded color code until API >= 21.  Then we can use`@color`. -->
     <path
         android:fillAlpha="1"
         android:fillColor="#fbc02d"
         android:pathData="m128,0 l-104.73,46.55 0,69.82C23.27,180.95 67.96,241.34 128,256 188.04,241.34 232.73,180.95 232.73,116.36l0,-69.82L128,0ZM128,127.88 L209.45,127.88C203.29,175.83 171.29,218.53 128,231.91l0,-103.91 -81.45,0 0,-66.33L128,25.48l0,102.4z" android:strokeColor="#00000000" />
 
+    <!-- We have to use a hard coded color code until API >= 21.  Then we can use`@color`. -->
     <path
         android:fillAlpha="1"
         android:fillColor="#ffffff"
index 202437d1cee8ef298c5dbe42ccc53a81c108fff3..40294bccfbc92a19eb71bf8fbd1505824932dbb8 100644 (file)
         android:title="@string/first_party_cookies"
         android:orderInCategory="20"
         android:checkable="true"
-        app:showAsAction="never" />
+        app:showAsAction="ifRoom" />
 
     <item
         android:id="@+id/toggleThirdPartyCookies"
         android:title="@string/third_party_cookies"
         android:orderInCategory="30"
         android:checkable="true"
-        app:showAsAction="never" />
+        app:showAsAction="ifRoom" />
 
     <item
         android:id="@+id/toggleDomStorage"
         android:title="@string/dom_storage"
         android:orderInCategory="40"
         android:checkable="true"
-        app:showAsAction="never" />
+        app:showAsAction="ifRoom" />
 
     <item
         android:id="@+id/toggleSaveFormData"
         android:title="@string/form_data"
         android:orderInCategory="50"
         android:checkable="true"
-        app:showAsAction="never" />
+        app:showAsAction="ifRoom" />
 
     <item
         android:id="@+id/clearCookies"
index 423664c57d25c687e6075bc7403d0cdb518fc12c..46a5fb5a27477da35258dad5830af35634aa8c1f 100644 (file)
@@ -28,6 +28,7 @@
     <color name="green">#FF64DD17</color>
     <color name="light_blue">#FFBBDEFB</color>
     <color name="medium_light_blue">#FF42A5F5</color>
+    <color name="orange">#FFF57F17</color>
     <color name="red">#FFD50000</color>
     <color name="white">#FFFFFFFF</color>
     <color name="yellow">#FFFFD600</color>
index 32c7bb35a5f81e6059d7d43b4b751514a137fa02..7eeaaecff2e436462b9138179338edbc405dcab0 100644 (file)
     <string name="privacy_mode">Privacy Mode</string>
     <string name="javascript_enabled">JavaScript enabled</string>
     <string name="javascript_disabled">JavaScript disabled</string>
+    <string name="first_party_cookies_enabled">First-Party Cookies enabled</string>
+    <string name="first_party_cookies_disabled">First-Party Cookies disabled</string>
+    <string name="third_party_cookies_enabled">Third-Party Cookies enabled</string>
+    <string name="third_party_cookies_disabled">Third-Party Cookies disabled</string>
+    <string name="dom_storage_enabled">DOM Storage enabled</string>
+    <string name="dom_storage_disabled">DOM Storage disabled</string>
+    <string name="form_data_enabled">Form Data enabled</string>
+    <string name="form_data_disabled">Form Data disabled</string>
     <string name="cookies_deleted">Cookies deleted</string>
     <string name="dom_storage_deleted">DOM Storage deleted</string>
     <string name="open_navigation">Open Navigation Drawer</string>