+
+ 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);
+ }