]> gitweb.stoutner.com Git - PrivacyBrowserAndroid.git/blobdiff - app/src/main/java/com/stoutner/privacybrowser/fragments/SettingsFragment.java
Add option to remove Facebook Click IDs from URLs. https://redmine.stoutner.com...
[PrivacyBrowserAndroid.git] / app / src / main / java / com / stoutner / privacybrowser / fragments / SettingsFragment.java
index cbacb38580d73825f6152b82f11a93e0ab53b163..51962b6bbb92904a988969ee34bda5029e22312c 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright © 2016-2017 Soren Stoutner <soren@stoutner.com>.
+ * Copyright © 2016-2019 Soren Stoutner <soren@stoutner.com>.
  *
  * This file is part of Privacy Browser <https://www.stoutner.com/privacy-browser>.
  *
 package com.stoutner.privacybrowser.fragments;
 
 import android.annotation.SuppressLint;
+import android.content.Context;
 import android.content.Intent;
 import android.content.SharedPreferences;
 import android.os.Build;
 import android.os.Bundle;
+import android.os.Handler;
 import android.preference.Preference;
+import android.preference.PreferenceCategory;
 import android.preference.PreferenceFragment;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.webkit.WebView;
+import android.widget.ArrayAdapter;
 
 import com.stoutner.privacybrowser.R;
 import com.stoutner.privacybrowser.activities.MainWebViewActivity;
@@ -39,104 +43,151 @@ public class SettingsFragment extends PreferenceFragment {
 
     @Override
     public void onCreate(Bundle savedInstanceState) {
+        // Run the default commands.
         super.onCreate(savedInstanceState);
+
+        // Load the preferences from the XML file.
         addPreferencesFromResource(R.xml.preferences);
 
+        // Get a handle for the context.
+        Context context = getActivity().getApplicationContext();
+
         // Initialize savedPreferences.
         savedPreferences = getPreferenceScreen().getSharedPreferences();
 
-        // Get handles for the preferences we need to modify.
-        final Preference javaScriptPreference = findPreference("javascript_enabled");
-        final Preference firstPartyCookiesPreference = findPreference("first_party_cookies_enabled");
-        final Preference thirdPartyCookiesPreference = findPreference("third_party_cookies_enabled");
-        final Preference domStoragePreference = findPreference("dom_storage_enabled");
-        final Preference saveFormDataPreference = findPreference("save_form_data_enabled");
-        final Preference userAgentPreference = findPreference("user_agent");
-        final Preference customUserAgentPreference = findPreference("custom_user_agent");
-        final Preference blockAdsPreference = findPreference("block_ads");
-        final Preference incognitoModePreference = findPreference("incognito_mode");
-        final Preference doNotTrackPreference = findPreference("do_not_track");
-        final Preference proxyThroughOrbotPreference = findPreference("proxy_through_orbot");
-        final Preference torHomepagePreference = findPreference("tor_homepage");
-        final Preference torSearchPreference = findPreference("tor_search");
-        final Preference torSearchCustomURLPreference = findPreference("tor_search_custom_url");
-        final Preference searchPreference = findPreference("search");
-        final Preference searchCustomURLPreference = findPreference("search_custom_url");
-        final Preference fullScreenBrowsingModePreference = findPreference("full_screen_browsing_mode");
-        final Preference hideSystemBarsPreference = findPreference("hide_system_bars");
-        final Preference translucentNavigationBarPreference = findPreference("translucent_navigation_bar");
-        final Preference clearEverythingPreference = findPreference("clear_everything");
-        final Preference clearCookiesPreference = findPreference("clear_cookies");
-        final Preference clearDomStoragePreference = findPreference("clear_dom_storage");
-        final Preference clearFormDataPreference = findPreference("clear_form_data");
-        final Preference clearCachePreference = findPreference("clear_cache");
-        final Preference homepagePreference = findPreference("homepage");
-        final Preference defaultFontSizePreference = findPreference("default_font_size");
-        final Preference swipeToRefreshPreference = findPreference("swipe_to_refresh");
-        final Preference displayAdditionalAppBarIconsPreference = findPreference("display_additional_app_bar_icons");
-        final Preference darkThemePreference = findPreference("dark_theme");
-        final Preference nightModePreference = findPreference("night_mode");
-        final Preference displayWebpageImagesPreference = findPreference("display_webpage_images");
+        // Get handles for the preferences.
+        Preference javaScriptPreference = findPreference("javascript");
+        Preference firstPartyCookiesPreference = findPreference("first_party_cookies");
+        Preference thirdPartyCookiesPreference = findPreference("third_party_cookies");
+        Preference domStoragePreference = findPreference("dom_storage");
+        Preference formDataPreference = findPreference("save_form_data");  // The form data preference can be removed once the minimum API >= 26.
+        Preference userAgentPreference = findPreference("user_agent");
+        Preference customUserAgentPreference = findPreference("custom_user_agent");
+        Preference incognitoModePreference = findPreference("incognito_mode");
+        Preference doNotTrackPreference = findPreference("do_not_track");
+        Preference allowScreenshotsPreference = findPreference("allow_screenshots");
+        Preference easyListPreference = findPreference("easylist");
+        Preference easyPrivacyPreference = findPreference("easyprivacy");
+        Preference fanboyAnnoyanceListPreference = findPreference("fanboys_annoyance_list");
+        Preference fanboySocialBlockingListPreference = findPreference("fanboys_social_blocking_list");
+        Preference ultraPrivacyPreference = findPreference("ultraprivacy");
+        Preference blockAllThirdPartyRequestsPreference = findPreference("block_all_third_party_requests");
+        Preference googleAnalyticsPreference = findPreference("google_analytics");
+        Preference facebookClickIdsPreference = findPreference("facebook_click_ids");
+        Preference proxyThroughOrbotPreference = findPreference("proxy_through_orbot");
+        Preference torHomepagePreference = findPreference("tor_homepage");
+        Preference torSearchPreference = findPreference("tor_search");
+        Preference torSearchCustomURLPreference = findPreference("tor_search_custom_url");
+        Preference searchPreference = findPreference("search");
+        Preference searchCustomURLPreference = findPreference("search_custom_url");
+        Preference fullScreenBrowsingModePreference = findPreference("full_screen_browsing_mode");
+        Preference hideAppBarPreference = findPreference("hide_app_bar");
+        Preference clearEverythingPreference = findPreference("clear_everything");
+        Preference clearCookiesPreference = findPreference("clear_cookies");
+        Preference clearDomStoragePreference = findPreference("clear_dom_storage");
+        Preference clearFormDataPreference = findPreference("clear_form_data");  // The clear form data preference can be removed once the minimum API >= 26.
+        Preference clearCachePreference = findPreference("clear_cache");
+        Preference homepagePreference = findPreference("homepage");
+        Preference fontSizePreference = findPreference("font_size");
+        Preference openIntentsInNewTabPreference = findPreference("open_intents_in_new_tab");
+        Preference swipeToRefreshPreference = findPreference("swipe_to_refresh");
+        Preference scrollAppBarPreference = findPreference("scroll_app_bar");
+        Preference displayAdditionalAppBarIconsPreference = findPreference("display_additional_app_bar_icons");
+        Preference downloadWithExternalAppPreference = findPreference("download_with_external_app");
+        Preference darkThemePreference = findPreference("dark_theme");
+        Preference nightModePreference = findPreference("night_mode");
+        Preference displayWebpageImagesPreference = findPreference("display_webpage_images");
 
         // Set dependencies.
         torHomepagePreference.setDependency("proxy_through_orbot");
         torSearchPreference.setDependency("proxy_through_orbot");
-        hideSystemBarsPreference.setDependency("full_screen_browsing_mode");
+        hideAppBarPreference.setDependency("full_screen_browsing_mode");
+
+        // Get strings from the preferences.
+        String torSearchString = savedPreferences.getString("tor_search", getString(R.string.tor_search_default_value));
+        String searchString = savedPreferences.getString("search", getString(R.string.search_default_value));
+
+        // Get booleans that are used in multiple places from the preferences.
+        boolean javaScriptEnabled = savedPreferences.getBoolean("javascript", false);
+        boolean firstPartyCookiesEnabled = savedPreferences.getBoolean("first_party_cookies", false);
+        boolean thirdPartyCookiesEnabled = savedPreferences.getBoolean("third_party_cookies", false);
+        boolean fanboyAnnoyanceListEnabled = savedPreferences.getBoolean("fanboys_annoyance_list", true);
+        boolean fanboySocialBlockingEnabled = savedPreferences.getBoolean("fanboys_social_blocking_list", true);
+        boolean proxyThroughOrbot = savedPreferences.getBoolean("proxy_through_orbot", false);
+        boolean fullScreenBrowsingMode = savedPreferences.getBoolean("full_screen_browsing_mode", false);
+        boolean clearEverything = savedPreferences.getBoolean("clear_everything", true);
+        boolean darkTheme = savedPreferences.getBoolean("dark_theme", false);
+        boolean nightMode = savedPreferences.getBoolean("night_mode", false);
+
+        // Only enable the third-party cookies preference if first-party cookies are enabled and API >= 21.
+        thirdPartyCookiesPreference.setEnabled(firstPartyCookiesEnabled && (Build.VERSION.SDK_INT >= 21));
+
+        // Only enable the DOM storage preference if either JavaScript or Night Mode is enabled.
+        domStoragePreference.setEnabled(javaScriptEnabled || nightMode);
+
+        // Remove the form data preferences if the API is >= 26 as they no longer do anything.
+        if (Build.VERSION.SDK_INT >= 26) {
+            // Get the categories.
+            PreferenceCategory privacyCategory = (PreferenceCategory) findPreference("privacy");
+            PreferenceCategory clearAndExitCategory = (PreferenceCategory) findPreference("clear_and_exit");
+
+            // Remove the form data preferences.
+            privacyCategory.removePreference(formDataPreference);
+            clearAndExitCategory.removePreference(clearFormDataPreference);
+        }
 
-        // Get Strings from the preferences.
-        String torSearchString = savedPreferences.getString("tor_search", "https://3g2upl4pq6kufc4m.onion/html/?q=");
-        String searchString = savedPreferences.getString("search", "https://duckduckgo.com/html/?q=");
+        // Only enable Fanboy's social blocking list preference if Fanboy's annoyance list is disabled.
+        fanboySocialBlockingListPreference.setEnabled(!fanboyAnnoyanceListEnabled);
 
-        // Get booleans from the preferences.
-        final boolean javaScriptEnabledBoolean = savedPreferences.getBoolean("javascript_enabled", false);
-        boolean firstPartyCookiesEnabledBoolean = savedPreferences.getBoolean("first_party_cookies_enabled", false);
-        boolean thirdPartyCookiesEnabledBoolean = savedPreferences.getBoolean("third_party_cookies_enabled", false);
-        boolean proxyThroughOrbotBoolean = savedPreferences.getBoolean("proxy_through_orbot", false);
-        boolean fullScreenBrowsingModeBoolean = savedPreferences.getBoolean("full_screen_browsing_mode", false);
-        boolean hideSystemBarsBoolean = savedPreferences.getBoolean("hide_system_bars", false);
-        boolean clearEverythingBoolean = savedPreferences.getBoolean("clear_everything", true);
-        final boolean nightModeBoolean = savedPreferences.getBoolean("night_mode", false);
+        // Inflate a WebView to get the default user agent.
+        LayoutInflater inflater = getActivity().getLayoutInflater();
+        // `@SuppressLint("InflateParams")` removes the warning about using `null` as the `ViewGroup`, which in this case makes sense because the `bare_webview` will not be displayed.
+        @SuppressLint("InflateParams") View bareWebViewLayout = inflater.inflate(R.layout.bare_webview, null, false);
+        WebView bareWebView = bareWebViewLayout.findViewById(R.id.bare_webview);
 
-        // Only enable `thirdPartyCookiesPreference` if `firstPartyCookiesEnabledBoolean` is `true` and API >= 21.
-        thirdPartyCookiesPreference.setEnabled(firstPartyCookiesEnabledBoolean && (Build.VERSION.SDK_INT >= 21));
+        // Get the user agent arrays.
+        ArrayAdapter<CharSequence> userAgentNamesArray = ArrayAdapter.createFromResource(context, R.array.user_agent_names, R.layout.spinner_item);
+        String[] translatedUserAgentNamesArray = getResources().getStringArray(R.array.translated_user_agent_names);
+        String[] userAgentDataArray = getResources().getStringArray(R.array.user_agent_data);
 
-        // Only enable `domStoragePreference` if either `javaScriptEnabledBoolean` or `nightModeBoolean` is true.
-        domStoragePreference.setEnabled(javaScriptEnabledBoolean || nightModeBoolean);
+        // Get the current user agent name from the preference.
+        String userAgentName = savedPreferences.getString("user_agent", getString(R.string.user_agent_default_value));
 
-        // We need to inflated a `WebView` to get the default user agent.
-        LayoutInflater inflater = getActivity().getLayoutInflater();
-        // `@SuppressLint("InflateParams")` removes the warning about using `null` as the `ViewGroup`, which in this case makes sense because we don't want to display `bare_webview` on the screen.  `false` does not attach the view to the root.
-        @SuppressLint("InflateParams") View bareWebViewLayout = inflater.inflate(R.layout.bare_webview, null, false);
-        final WebView bareWebView = (WebView) bareWebViewLayout.findViewById(R.id.bare_webview);
+        // Get the array position of the user agent name.
+        int userAgentArrayPosition = userAgentNamesArray.getPosition(userAgentName);
 
-        // Set the current user-agent as the summary text for the "user_agent" preference when the preference screen is loaded.
-        switch (savedPreferences.getString("user_agent", "PrivacyBrowser/1.0")) {
-            case "WebView default user agent":
+        // Populate the user agent summary.
+        switch (userAgentArrayPosition) {
+            case MainWebViewActivity.UNRECOGNIZED_USER_AGENT:  // The user agent name is not on the canonical list.
+                // This is probably because it was set in an older version of Privacy Browser before the switch to persistent user agent names.  Use the current user agent entry name as the summary.
+                userAgentPreference.setSummary(userAgentName);
+                break;
+
+            case MainWebViewActivity.SETTINGS_WEBVIEW_DEFAULT_USER_AGENT:
                 // Get the user agent text from the webview (which changes based on the version of Android and WebView installed).
-                userAgentPreference.setSummary(bareWebView.getSettings().getUserAgentString());
+                userAgentPreference.setSummary(translatedUserAgentNamesArray[userAgentArrayPosition] + ":\n" + bareWebView.getSettings().getUserAgentString());
                 break;
 
-            case "Custom user agent":
-                // We can't use the string from the array because it is referenced in code and can't be translated.
+            case MainWebViewActivity.SETTINGS_CUSTOM_USER_AGENT:
+                // Set the summary text.
                 userAgentPreference.setSummary(R.string.custom_user_agent);
                 break;
 
             default:
-                // Display the user agent from the preference as the summary text.
-                userAgentPreference.setSummary(savedPreferences.getString("user_agent", "PrivacyBrowser/1.0"));
-                break;
+                // Get the user agent summary from the user agent data array.
+                userAgentPreference.setSummary(translatedUserAgentNamesArray[userAgentArrayPosition] + ":\n" + userAgentDataArray[userAgentArrayPosition]);
         }
 
-        // Set the summary text for "customUserAgentPreference" (the default is `PrivacyBrowser/1.0`) and enable it if `userAgentPreference` it set to `Custom user agent`.
-        customUserAgentPreference.setSummary(savedPreferences.getString("custom_user_agent", "PrivacyBrowser/1.0"));
-        customUserAgentPreference.setEnabled(userAgentPreference.getSummary().equals("Custom user agent"));
+        // Set the summary text for the custom user agent preference and enable it if user agent preference is set to custom.
+        customUserAgentPreference.setSummary(savedPreferences.getString("custom_user_agent", getString(R.string.custom_user_agent_default_value)));
+        customUserAgentPreference.setEnabled(userAgentPreference.getSummary().equals(getString(R.string.custom_user_agent)));
 
 
-        // Set the Tor homepage URL as the summary text for the `tor_homepage` preference when the preference screen is loaded.  The default is DuckDuckGo: `https://3g2upl4pq6kufc4m.onion`.
-        torHomepagePreference.setSummary(savedPreferences.getString("tor_homepage", "https://3g2upl4pq6kufc4m.onion"));
+        // Set the Tor homepage URL as the summary text for the `tor_homepage` preference when the preference screen is loaded.  The default is Searx: `http://ulrn6sryqaifefld.onion/`.
+        torHomepagePreference.setSummary(savedPreferences.getString("tor_homepage", getString(R.string.tor_homepage_default_value)));
 
 
-        // Set the Tor search URL as the summary text for the Tor preference when the preference screen is loaded.  The default is `https://3g2upl4pq6kufc4m.onion/html/?q=`
+        // Set the Tor search URL as the summary text for the Tor preference when the preference screen is loaded.
         if (torSearchString.equals("Custom URL")) {
             // Use R.string.custom_url, which will be translated, instead of the array value, which will not.
             torSearchPreference.setSummary(R.string.custom_url);
@@ -146,13 +197,13 @@ public class SettingsFragment extends PreferenceFragment {
         }
 
         // Set the summary text for `tor_search_custom_url`.  The default is `""`.
-        torSearchCustomURLPreference.setSummary(savedPreferences.getString("tor_search_custom_url", ""));
+        torSearchCustomURLPreference.setSummary(savedPreferences.getString("tor_search_custom_url", getString(R.string.tor_search_custom_url_default_value)));
 
         // Enable the Tor custom URL search options only if proxying through Orbot and the search is set to `Custom URL`.
-        torSearchCustomURLPreference.setEnabled(proxyThroughOrbotBoolean && torSearchString.equals("Custom URL"));
+        torSearchCustomURLPreference.setEnabled(proxyThroughOrbot && torSearchString.equals("Custom URL"));
 
 
-        // Set the search URL as the summary text for the search preference when the preference screen is loaded.  The default is `https://duckduckgo.com/html/?q=`.
+        // Set the search URL as the summary text for the search preference when the preference screen is loaded.
         if (searchString.equals("Custom URL")) {
             // Use R.string.custom_url, which will be translated, instead of the array value, which will not.
             searchPreference.setSummary(R.string.custom_url);
@@ -162,158 +213,285 @@ public class SettingsFragment extends PreferenceFragment {
         }
 
         // Set the summary text for `search_custom_url` (the default is `""`) and enable it if `search` is set to `Custom URL`.
-        searchCustomURLPreference.setSummary(savedPreferences.getString("search_custom_url", ""));
+        searchCustomURLPreference.setSummary(savedPreferences.getString("search_custom_url", getString(R.string.search_custom_url_default_value)));
         searchCustomURLPreference.setEnabled(searchString.equals("Custom URL"));
 
+        // Set the status of the Clear and Exit preferences.
+        clearCookiesPreference.setEnabled(!clearEverything);
+        clearDomStoragePreference.setEnabled(!clearEverything);
+        clearFormDataPreference.setEnabled(!clearEverything);  // The form data line can be removed once the minimum API is >= 26.
+        clearCachePreference.setEnabled(!clearEverything);
 
-        // Enable `translucentNavigationBarPreference` only if full screen browsing mode is enabled and `hide_system_bars` is disabled.
-        translucentNavigationBarPreference.setEnabled(fullScreenBrowsingModeBoolean && !hideSystemBarsBoolean);
-
-        // Set the status of the `Clear and Exit` preferences.
-        clearCookiesPreference.setEnabled(!clearEverythingBoolean);
-        clearDomStoragePreference.setEnabled(!clearEverythingBoolean);
-        clearFormDataPreference.setEnabled(!clearEverythingBoolean);
-        clearCachePreference.setEnabled(!clearEverythingBoolean);
+        // Set the homepage URL as the summary text for the homepage preference.
+        homepagePreference.setSummary(savedPreferences.getString("homepage", getString(R.string.homepage_default_value)));
 
-        // Set the homepage URL as the summary text for the `Homepage` preference when the preference screen is loaded.  The default is `https://duckduckgo.com`.
-        homepagePreference.setSummary(savedPreferences.getString("homepage", "https://duckduckgo.com"));
+        // Set the font size as the summary text for the preference.
+        fontSizePreference.setSummary(savedPreferences.getString("font_size", getString(R.string.font_size_default_value)) + "%%");
 
-        // Set the default font size as the summary text for the `Default Font Size` preference when the preference screen is loaded.  The default is `100`.
-        defaultFontSizePreference.setSummary(savedPreferences.getString("default_font_size", "100") + "%%");
+        // Disable the JavaScript preference if Night Mode is enabled.  JavaScript will be enabled for all web pages.
+        javaScriptPreference.setEnabled(!nightMode);
 
-        // Disable `javaScriptPreference` if `nightModeBoolean` is true.  JavaScript will be enabled for all web pages.
-        javaScriptPreference.setEnabled(!nightModeBoolean);
-
-        // Set the `javaScriptPreference` icon.
-        if (javaScriptEnabledBoolean || nightModeBoolean) {
+        // Set the JavaScript icon.
+        if (javaScriptEnabled || nightMode) {
             javaScriptPreference.setIcon(R.drawable.javascript_enabled);
         } else {
             javaScriptPreference.setIcon(R.drawable.privacy_mode);
         }
 
-        // Set the `firstPartyCookiesPreference` icon.
-        if (firstPartyCookiesEnabledBoolean) {
+        // Set the first-party cookies icon.
+        if (firstPartyCookiesEnabled) {
             firstPartyCookiesPreference.setIcon(R.drawable.cookies_enabled);
         } else {
-            if (MainWebViewActivity.darkTheme) {
+            if (darkTheme) {
                 firstPartyCookiesPreference.setIcon(R.drawable.cookies_disabled_dark);
             } else {
                 firstPartyCookiesPreference.setIcon(R.drawable.cookies_disabled_light);
             }
         }
 
-        // Set the `thirdPartyCookiesPreference` icon.
-        if (firstPartyCookiesEnabledBoolean && Build.VERSION.SDK_INT >= 21) {
-            if (thirdPartyCookiesEnabledBoolean) {
+        // Set the third party cookies icon.
+        if (firstPartyCookiesEnabled && Build.VERSION.SDK_INT >= 21) {
+            if (thirdPartyCookiesEnabled) {
                 thirdPartyCookiesPreference.setIcon(R.drawable.cookies_warning);
             } else {
-                if (MainWebViewActivity.darkTheme) {
+                if (darkTheme) {
                     thirdPartyCookiesPreference.setIcon(R.drawable.cookies_disabled_dark);
                 } else {
                     thirdPartyCookiesPreference.setIcon(R.drawable.cookies_disabled_light);
                 }
             }
         } else {
-            if (MainWebViewActivity.darkTheme) {
+            if (darkTheme) {
                 thirdPartyCookiesPreference.setIcon(R.drawable.cookies_ghosted_dark);
             } else {
                 thirdPartyCookiesPreference.setIcon(R.drawable.cookies_ghosted_light);
             }
         }
 
-        // Set the `domStoragePreference` icon.
-        if (javaScriptEnabledBoolean || nightModeBoolean) {  // The preference is enabled.
-            if (savedPreferences.getBoolean("dom_storage_enabled", false)) {  // DOM storage is enabled.
+        // Set the DOM storage icon.
+        if (javaScriptEnabled || nightMode) {  // The preference is enabled.
+            if (savedPreferences.getBoolean("dom_storage", false)) {  // DOM storage is enabled.
                 domStoragePreference.setIcon(R.drawable.dom_storage_enabled);
             } else {  // DOM storage is disabled.
-                if (MainWebViewActivity.darkTheme) {
+                if (darkTheme) {
                     domStoragePreference.setIcon(R.drawable.dom_storage_disabled_dark);
                 } else {
                     domStoragePreference.setIcon(R.drawable.dom_storage_disabled_light);
                 }
             }
         } else {  // The preference is disabled.  The icon should be ghosted.
-            if (MainWebViewActivity.darkTheme) {
+            if (darkTheme) {
                 domStoragePreference.setIcon(R.drawable.dom_storage_ghosted_dark);
             } else {
                 domStoragePreference.setIcon(R.drawable.dom_storage_ghosted_light);
             }
         }
 
-        // Set the `saveFormDataPreference` icon.
-        if (savedPreferences.getBoolean("save_form_data_enabled", false)) {
-            saveFormDataPreference.setIcon(R.drawable.form_data_enabled);
-        } else {
-            if (MainWebViewActivity.darkTheme) {
-                saveFormDataPreference.setIcon(R.drawable.form_data_disabled_dark);
+        // Set the save form data icon if API < 26.  Save form data has no effect on API >= 26.
+        if (Build.VERSION.SDK_INT < 26) {
+            if (savedPreferences.getBoolean("save_form_data", false)) {
+                formDataPreference.setIcon(R.drawable.form_data_enabled);
             } else {
-                saveFormDataPreference.setIcon(R.drawable.form_data_disabled_light);
+                if (darkTheme) {
+                    formDataPreference.setIcon(R.drawable.form_data_disabled_dark);
+                } else {
+                    formDataPreference.setIcon(R.drawable.form_data_disabled_light);
+                }
             }
         }
 
-        // Set the `customUserAgentPreference` icon.
+        // Set the custom user agent icon.
         if (customUserAgentPreference.isEnabled()) {
-            if (MainWebViewActivity.darkTheme) {
+            if (darkTheme) {
                 customUserAgentPreference.setIcon(R.drawable.custom_user_agent_enabled_dark);
             } else {
                 customUserAgentPreference.setIcon(R.drawable.custom_user_agent_enabled_light);
             }
         } else {
-            if (MainWebViewActivity.darkTheme) {
+            if (darkTheme) {
                 customUserAgentPreference.setIcon(R.drawable.custom_user_agent_ghosted_dark);
             } else {
                 customUserAgentPreference.setIcon(R.drawable.custom_user_agent_ghosted_light);
             }
         }
 
-        // Set the `blockAdsPreference` icon.
-        if (savedPreferences.getBoolean("block_ads", true)) {
-            if (MainWebViewActivity.darkTheme) {
-                blockAdsPreference.setIcon(R.drawable.block_ads_enabled_dark);
+        // Set the incognito mode icon.
+        if (savedPreferences.getBoolean("incognito_mode", false)) {
+            if (darkTheme) {
+                incognitoModePreference.setIcon(R.drawable.incognito_mode_enabled_dark);
             } else {
-                blockAdsPreference.setIcon(R.drawable.block_ads_enabled_light);
+                incognitoModePreference.setIcon(R.drawable.incognito_mode_enabled_light);
             }
         } else {
-            if (MainWebViewActivity.darkTheme) {
-                blockAdsPreference.setIcon(R.drawable.block_ads_disabled_dark);
+            if (darkTheme) {
+                incognitoModePreference.setIcon(R.drawable.incognito_mode_disabled_dark);
             } else {
-                blockAdsPreference.setIcon(R.drawable.block_ads_disabled_light);
+                incognitoModePreference.setIcon(R.drawable.incognito_mode_disabled_light);
             }
         }
 
-        // Set the `incognitoModePreference` icon.
-        if (savedPreferences.getBoolean("incognito_mode", false)) {
-            if (MainWebViewActivity.darkTheme) {
-                incognitoModePreference.setIcon(R.drawable.incognito_mode_enabled_dark);
+        // Set the Do Not Track icon.
+        if (savedPreferences.getBoolean("do_not_track", false)) {
+            if (darkTheme) {
+                doNotTrackPreference.setIcon(R.drawable.block_tracking_enabled_dark);
             } else {
-                incognitoModePreference.setIcon(R.drawable.incognito_mode_enabled_light);
+                doNotTrackPreference.setIcon(R.drawable.block_tracking_enabled_light);
             }
         } else {
-            if (MainWebViewActivity.darkTheme) {
-                incognitoModePreference.setIcon(R.drawable.incognito_mode_disabled_dark);
+            if (darkTheme) {
+                doNotTrackPreference.setIcon(R.drawable.block_tracking_disabled_dark);
             } else {
-                incognitoModePreference.setIcon(R.drawable.incognito_mode_disabled_light);
+                doNotTrackPreference.setIcon(R.drawable.block_tracking_disabled_light);
             }
         }
 
-        // Set the `doNotTrackPreference` icon.
-        if (savedPreferences.getBoolean("do_not_track", false)) {
-            if (MainWebViewActivity.darkTheme) {
-                doNotTrackPreference.setIcon(R.drawable.do_not_track_enabled_dark);
+        // Set the allow screenshots icon.
+        if (savedPreferences.getBoolean("allow_screenshots", false)) {
+            if (darkTheme) {
+                allowScreenshotsPreference.setIcon(R.drawable.allow_screenshots_enabled_dark);
             } else {
-                doNotTrackPreference.setIcon(R.drawable.do_not_track_enabled_light);
+                allowScreenshotsPreference.setIcon(R.drawable.allow_screenshots_enabled_light);
             }
         } else {
-            if (MainWebViewActivity.darkTheme) {
-                doNotTrackPreference.setIcon(R.drawable.do_not_track_disabled_dark);
+            if (darkTheme) {
+                allowScreenshotsPreference.setIcon(R.drawable.allow_screenshots_disabled_dark);
             } else {
-                doNotTrackPreference.setIcon(R.drawable.do_not_track_disabled_light);
+                allowScreenshotsPreference.setIcon(R.drawable.allow_screenshots_disabled_light);
+            }
+        }
+
+        // Set the EasyList icon.
+        if (savedPreferences.getBoolean("easylist", true)) {
+            if (darkTheme) {
+                easyListPreference.setIcon(R.drawable.block_ads_enabled_dark);
+            } else {
+                easyListPreference.setIcon(R.drawable.block_ads_enabled_light);
+            }
+        } else {
+            if (darkTheme) {
+                easyListPreference.setIcon(R.drawable.block_ads_disabled_dark);
+            } else {
+                easyListPreference.setIcon(R.drawable.block_ads_disabled_light);
+            }
+        }
+
+        // Set the EasyPrivacy icon.
+        if (savedPreferences.getBoolean("easyprivacy", true)) {
+            if (darkTheme) {
+                easyPrivacyPreference.setIcon(R.drawable.block_tracking_enabled_dark);
+            } else {
+                easyPrivacyPreference.setIcon(R.drawable.block_tracking_enabled_light);
+            }
+        } else {
+            if (darkTheme) {
+                easyPrivacyPreference.setIcon(R.drawable.block_tracking_disabled_dark);
+            } else {
+                easyPrivacyPreference.setIcon(R.drawable.block_tracking_disabled_light);
+            }
+        }
+
+        // Set the Fanboy lists icons.
+        if (fanboyAnnoyanceListEnabled) {
+            if (darkTheme) {
+                // Set the Fanboy annoyance list icon.
+                fanboyAnnoyanceListPreference.setIcon(R.drawable.social_media_enabled_dark);
+
+                // Set the Fanboy social blocking list icon.
+                fanboySocialBlockingListPreference.setIcon(R.drawable.social_media_ghosted_dark);
+            } else {
+                // Set the Fanboy annoyance list icon.
+                fanboyAnnoyanceListPreference.setIcon(R.drawable.social_media_enabled_light);
+
+                // Set the Fanboy social blocking list icon.
+                fanboySocialBlockingListPreference.setIcon(R.drawable.social_media_ghosted_light);
+            }
+        } else {
+            if (darkTheme) {
+                // Set the Fanboy annoyance list icon.
+                fanboyAnnoyanceListPreference.setIcon(R.drawable.social_media_disabled_dark);
+
+                // Set the Fanboy social blocking list icon.
+                if (fanboySocialBlockingEnabled) {
+                    fanboySocialBlockingListPreference.setIcon(R.drawable.social_media_enabled_dark);
+                } else {
+                    fanboySocialBlockingListPreference.setIcon(R.drawable.social_media_disabled_dark);
+                }
+            } else {
+                // Set the Fanboy annoyance list icon.
+                fanboyAnnoyanceListPreference.setIcon(R.drawable.block_ads_disabled_light);
+
+                // Set the Fanboy social blocking list icon.
+                if (fanboySocialBlockingEnabled) {
+                    fanboySocialBlockingListPreference.setIcon(R.drawable.social_media_enabled_light);
+                } else {
+                    fanboySocialBlockingListPreference.setIcon(R.drawable.social_media_disabled_light);
+                }
+            }
+        }
+
+        // Set the UltraPrivacy icon.
+        if (savedPreferences.getBoolean("ultraprivacy", true)) {
+            if (darkTheme) {
+                ultraPrivacyPreference.setIcon(R.drawable.block_tracking_enabled_dark);
+            } else {
+                ultraPrivacyPreference.setIcon(R.drawable.block_tracking_enabled_light);
+            }
+        } else {
+            if (darkTheme) {
+                ultraPrivacyPreference.setIcon(R.drawable.block_tracking_disabled_dark);
+            } else {
+                ultraPrivacyPreference.setIcon(R.drawable.block_tracking_disabled_light);
+            }
+        }
+
+        // Set the block all third-party requests icon.
+        if (savedPreferences.getBoolean("block_all_third_party_requests", false)) {
+            if (darkTheme) {
+                blockAllThirdPartyRequestsPreference.setIcon(R.drawable.block_all_third_party_requests_enabled_dark);
+            } else {
+                blockAllThirdPartyRequestsPreference.setIcon(R.drawable.block_all_third_party_requests_enabled_light);
+            }
+        } else {
+            if (darkTheme) {
+                blockAllThirdPartyRequestsPreference.setIcon(R.drawable.block_all_third_party_requests_disabled_dark);
+            } else {
+                blockAllThirdPartyRequestsPreference.setIcon(R.drawable.block_all_third_party_requests_disabled_light);
+            }
+        }
+
+        // Set the Google Analytics icon according to the theme.
+        if (savedPreferences.getBoolean("google_analytics", true)) {
+            if (darkTheme) {
+                googleAnalyticsPreference.setIcon(R.drawable.modify_url_enabled_dark);
+            } else {
+                googleAnalyticsPreference.setIcon(R.drawable.modify_url_enabled_light);
+            }
+        } else {
+            if (darkTheme) {
+                googleAnalyticsPreference.setIcon(R.drawable.modify_url_disabled_dark);
+            } else {
+                googleAnalyticsPreference.setIcon(R.drawable.modify_url_disabled_light);
+            }
+        }
+
+        // Set the Facebook Click IDs icon according to the theme.
+        if (savedPreferences.getBoolean("facebook_click_ids", true)) {
+            if (darkTheme) {
+                facebookClickIdsPreference.setIcon(R.drawable.modify_url_enabled_dark);
+            } else {
+                facebookClickIdsPreference.setIcon(R.drawable.modify_url_enabled_light);
+            }
+        } else {
+            if (darkTheme) {
+                facebookClickIdsPreference.setIcon(R.drawable.modify_url_disabled_dark);
+            } else {
+                facebookClickIdsPreference.setIcon(R.drawable.modify_url_disabled_light);
             }
         }
 
         // Set the Tor icons according to the theme.
-        if (proxyThroughOrbotBoolean) {  // Proxying is enabled.
-            if (MainWebViewActivity.darkTheme) {
+        if (proxyThroughOrbot) {  // Proxying is enabled.
+            if (darkTheme) {
                 proxyThroughOrbotPreference.setIcon(R.drawable.orbot_enabled_dark);
                 torHomepagePreference.setIcon(R.drawable.home_enabled_dark);
                 torSearchPreference.setIcon(R.drawable.search_enabled_dark);
@@ -337,7 +515,7 @@ public class SettingsFragment extends PreferenceFragment {
                 }
             }
         } else {  // Proxying is disabled.
-            if (MainWebViewActivity.darkTheme) {
+            if (darkTheme) {
                 proxyThroughOrbotPreference.setIcon(R.drawable.orbot_disabled_dark);
                 torHomepagePreference.setIcon(R.drawable.home_ghosted_dark);
                 torSearchPreference.setIcon(R.drawable.search_ghosted_dark);
@@ -350,15 +528,15 @@ public class SettingsFragment extends PreferenceFragment {
             }
         }
 
-        // Set the `searchCustomURLPreference` icon.
+        // Set the search custom URL icon.
         if (searchCustomURLPreference.isEnabled()) {
-            if (MainWebViewActivity.darkTheme) {
+            if (darkTheme) {
                 searchCustomURLPreference.setIcon(R.drawable.search_custom_url_enabled_dark);
             } else {
                 searchCustomURLPreference.setIcon(R.drawable.search_custom_url_enabled_light);
             }
         } else {
-            if (MainWebViewActivity.darkTheme) {
+            if (darkTheme) {
                 searchCustomURLPreference.setIcon(R.drawable.search_custom_url_ghosted_dark);
             } else {
                 searchCustomURLPreference.setIcon(R.drawable.search_custom_url_ghosted_light);
@@ -366,63 +544,44 @@ public class SettingsFragment extends PreferenceFragment {
         }
 
         // Set the full screen browsing mode icons.
-        if (fullScreenBrowsingModeBoolean) {  // `fullScreenBrowsingModeBoolean` is `true`.
+        if (fullScreenBrowsingMode) {  // Full screen browsing mode is enabled.
             // Set the `fullScreenBrowsingModePreference` icon according to the theme.
-            if (MainWebViewActivity.darkTheme) {
+            if (darkTheme) {
                 fullScreenBrowsingModePreference.setIcon(R.drawable.full_screen_enabled_dark);
             } else {
                 fullScreenBrowsingModePreference.setIcon(R.drawable.full_screen_enabled_light);
             }
 
-            if (hideSystemBarsBoolean) {  // `hideSystemBarsBoolean` is `true`.
-                // Set the icons according to the theme.
-                if (MainWebViewActivity.darkTheme) {
-                    hideSystemBarsPreference.setIcon(R.drawable.hide_system_bars_enabled_dark);
-                    translucentNavigationBarPreference.setIcon(R.drawable.translucent_bar_ghosted_dark);
+            // Set the hide app bar icon.
+            if (savedPreferences.getBoolean("hide_app_bar", true)) {  // Hide app bar is enabled.
+                // Set the icon according to the theme.
+                if (darkTheme) {
+                    hideAppBarPreference.setIcon(R.drawable.app_bar_enabled_dark);
                 } else {
-                    hideSystemBarsPreference.setIcon(R.drawable.hide_system_bars_enabled_light);
-                    translucentNavigationBarPreference.setIcon(R.drawable.translucent_bar_ghosted_light);
+                    hideAppBarPreference.setIcon(R.drawable.app_bar_enabled_light);
                 }
-            } else {  // `hideSystemBarsBoolean` is `false`.
-                // Set the `hideSystemBarsPreference` icon according to the theme.
-                if (MainWebViewActivity.darkTheme) {
-                    // Set the icon for `hideSystemBarsPreference`.
-                    hideSystemBarsPreference.setIcon(R.drawable.hide_system_bars_disabled_dark);
-
-                    // Set the icon for `translucentNavigationBarPreference`.
-                    if (savedPreferences.getBoolean("translucent_navigation_bar", true)) {
-                        translucentNavigationBarPreference.setIcon(R.drawable.translucent_bar_enabled_dark);
-                    } else {
-                        translucentNavigationBarPreference.setIcon(R.drawable.translucent_bar_disabled_dark);
-                    }
+            } else {  // Hide app bar is disabled.
+                // Set the icon according to the theme.
+                if (darkTheme) {
+                    hideAppBarPreference.setIcon(R.drawable.app_bar_disabled_dark);
                 } else {
-                    // Set the icon for `hideSystemBarsPreference`.
-                    hideSystemBarsPreference.setIcon(R.drawable.hide_system_bars_disabled_light);
-
-                    // Set the icon for `translucentNavigationBarPreference`.
-                    if (savedPreferences.getBoolean("translucent_navigation_bar", true)) {
-                        translucentNavigationBarPreference.setIcon(R.drawable.translucent_bar_enabled_light);
-                    } else {
-                        translucentNavigationBarPreference.setIcon(R.drawable.translucent_bar_disabled_light);
-                    }
+                    hideAppBarPreference.setIcon(R.drawable.app_bar_disabled_light);
                 }
             }
-        } else {  // `fullScreenBrowsingModeBoolean` is `false`.
+        } else {  // Full screen browsing mode is disabled.
             // Set the icons according to the theme.
-            if (MainWebViewActivity.darkTheme) {
+            if (darkTheme) {
                 fullScreenBrowsingModePreference.setIcon(R.drawable.full_screen_disabled_dark);
-                hideSystemBarsPreference.setIcon(R.drawable.hide_system_bars_ghosted_dark);
-                translucentNavigationBarPreference.setIcon(R.drawable.translucent_bar_ghosted_dark);
+                hideAppBarPreference.setIcon(R.drawable.app_bar_ghosted_dark);
             } else {
                 fullScreenBrowsingModePreference.setIcon(R.drawable.full_screen_disabled_light);
-                hideSystemBarsPreference.setIcon(R.drawable.hide_system_bars_ghosted_light);
-                translucentNavigationBarPreference.setIcon(R.drawable.translucent_bar_ghosted_light);
+                hideAppBarPreference.setIcon(R.drawable.app_bar_ghosted_light);
             }
         }
 
-        // Set the `clearEverythingPreference` icon.
-        if (clearEverythingBoolean) {
-            if (MainWebViewActivity.darkTheme) {
+        // Set the clear everything preference icon.
+        if (clearEverything) {
+            if (darkTheme) {
                 clearEverythingPreference.setIcon(R.drawable.clear_everything_enabled_dark);
             } else {
                 clearEverythingPreference.setIcon(R.drawable.clear_everything_enabled_light);
@@ -431,9 +590,9 @@ public class SettingsFragment extends PreferenceFragment {
             clearEverythingPreference.setIcon(R.drawable.clear_everything_disabled);
         }
 
-        // Set the `clearCookiesPreference` icon.
-        if (clearEverythingBoolean || savedPreferences.getBoolean("clear_cookies", true)) {
-            if (MainWebViewActivity.darkTheme) {
+        // Set the clear cookies preference icon.
+        if (clearEverything || savedPreferences.getBoolean("clear_cookies", true)) {
+            if (darkTheme) {
                 clearCookiesPreference.setIcon(R.drawable.cookies_cleared_dark);
             } else {
                 clearCookiesPreference.setIcon(R.drawable.cookies_cleared_light);
@@ -442,9 +601,9 @@ public class SettingsFragment extends PreferenceFragment {
             clearCookiesPreference.setIcon(R.drawable.cookies_warning);
         }
 
-        // Set the `clearDomStoragePreference` icon.
-        if (clearEverythingBoolean || savedPreferences.getBoolean("clear_dom_storage", true)) {
-            if (MainWebViewActivity.darkTheme) {
+        // Set the clear DOM storage preference icon.
+        if (clearEverything || savedPreferences.getBoolean("clear_dom_storage", true)) {
+            if (darkTheme) {
                 clearDomStoragePreference.setIcon(R.drawable.dom_storage_cleared_dark);
             } else {
                 clearDomStoragePreference.setIcon(R.drawable.dom_storage_cleared_light);
@@ -453,20 +612,22 @@ public class SettingsFragment extends PreferenceFragment {
             clearDomStoragePreference.setIcon(R.drawable.dom_storage_warning);
         }
 
-        // Set the `clearFormDataPreference` icon.
-        if (clearEverythingBoolean || savedPreferences.getBoolean("clear_form_data", true)) {
-            if (MainWebViewActivity.darkTheme) {
-                clearFormDataPreference.setIcon(R.drawable.form_data_cleared_dark);
+        // Set the clear form data preference icon if the API < 26.  It has no effect on newer versions of Android.
+        if (Build.VERSION.SDK_INT < 26) {
+            if (clearEverything || savedPreferences.getBoolean("clear_form_data", true)) {
+                if (darkTheme) {
+                    clearFormDataPreference.setIcon(R.drawable.form_data_cleared_dark);
+                } else {
+                    clearFormDataPreference.setIcon(R.drawable.form_data_cleared_light);
+                }
             } else {
-                clearFormDataPreference.setIcon(R.drawable.form_data_cleared_light);
+                clearFormDataPreference.setIcon(R.drawable.form_data_warning);
             }
-        } else {
-            clearFormDataPreference.setIcon(R.drawable.form_data_warning);
         }
 
-        // Set the `clearCachePreference` icon.
-        if (clearEverythingBoolean || savedPreferences.getBoolean("clear_cache", true)) {
-            if (MainWebViewActivity.darkTheme) {
+        // Set the clear cache preference icon.
+        if (clearEverything || savedPreferences.getBoolean("clear_cache", true)) {
+            if (darkTheme) {
                 clearCachePreference.setIcon(R.drawable.cache_cleared_dark);
             } else {
                 clearCachePreference.setIcon(R.drawable.cache_cleared_light);
@@ -475,67 +636,112 @@ public class SettingsFragment extends PreferenceFragment {
             clearCachePreference.setIcon(R.drawable.cache_warning);
         }
 
-        // Set the `swipeToRefreshPreference` icon.
-        if (savedPreferences.getBoolean("swipe_to_refresh", false)) {
-            if (MainWebViewActivity.darkTheme) {
+        // Set the open intents in new tab preference icon.
+        if (savedPreferences.getBoolean("open_intents_in_new_tab", true)) {
+            if (darkTheme) {
+                openIntentsInNewTabPreference.setIcon(R.drawable.tab_enabled_dark);
+            } else {
+                openIntentsInNewTabPreference.setIcon(R.drawable.tab_enabled_light);
+            }
+        } else {
+            if (darkTheme) {
+                openIntentsInNewTabPreference.setIcon(R.drawable.tab_disabled_dark);
+            } else {
+                openIntentsInNewTabPreference.setIcon(R.drawable.tab_disabled_light);
+            }
+        }
+
+        // Set the swipe to refresh preference icon.
+        if (savedPreferences.getBoolean("swipe_to_refresh", true)) {
+            if (darkTheme) {
                 swipeToRefreshPreference.setIcon(R.drawable.refresh_enabled_dark);
             } else {
                 swipeToRefreshPreference.setIcon(R.drawable.refresh_enabled_light);
             }
         } else {
-            if (MainWebViewActivity.darkTheme) {
+            if (darkTheme) {
                 swipeToRefreshPreference.setIcon(R.drawable.refresh_disabled_dark);
             } else {
                 swipeToRefreshPreference.setIcon(R.drawable.refresh_disabled_light);
             }
         }
 
-        // Set the `displayAdditionalAppBarIconsPreference` icon.
+        // Set the scroll app bar preference icon.
+        if (savedPreferences.getBoolean("scroll_app_bar", true)) {
+            if (darkTheme) {
+                scrollAppBarPreference.setIcon(R.drawable.app_bar_enabled_dark);
+            } else {
+                scrollAppBarPreference.setIcon(R.drawable.app_bar_enabled_light);
+            }
+        } else {
+            if (darkTheme) {
+                scrollAppBarPreference.setIcon(R.drawable.app_bar_disabled_dark);
+            } else {
+                scrollAppBarPreference.setIcon(R.drawable.app_bar_disabled_light);
+            }
+        }
+
+        // Set the display additional app bar icons preference icon.
         if (savedPreferences.getBoolean("display_additional_app_bar_icons", false)) {
-            if (MainWebViewActivity.darkTheme) {
+            if (darkTheme) {
                 displayAdditionalAppBarIconsPreference.setIcon(R.drawable.more_enabled_dark);
             } else {
                 displayAdditionalAppBarIconsPreference.setIcon(R.drawable.more_enabled_light);
             }
         } else {
-            if (MainWebViewActivity.darkTheme) {
+            if (darkTheme) {
                 displayAdditionalAppBarIconsPreference.setIcon(R.drawable.more_disabled_dark);
             } else {
                 displayAdditionalAppBarIconsPreference.setIcon(R.drawable.more_disabled_light);
             }
         }
 
-        // Set the `darkThemePreference` icon.
+        // Set the download with external app preference icon.
+        if (savedPreferences.getBoolean("download_with_external_app", false)) {
+            if (darkTheme) {
+                downloadWithExternalAppPreference.setIcon(R.drawable.open_with_external_app_enabled_dark);
+            } else {
+                downloadWithExternalAppPreference.setIcon(R.drawable.open_with_external_app_enabled_light);
+            }
+        } else {
+            if (darkTheme) {
+                downloadWithExternalAppPreference.setIcon(R.drawable.open_with_external_app_disabled_dark);
+            } else {
+                downloadWithExternalAppPreference.setIcon(R.drawable.open_with_external_app_disabled_light);
+            }
+        }
+
+        // Set the dark theme preference icon.
         if (savedPreferences.getBoolean("dark_theme", false)) {
             darkThemePreference.setIcon(R.drawable.theme_dark);
         } else {
             darkThemePreference.setIcon(R.drawable.theme_light);
         }
 
-        // Set the `nightModePreference` icon.
-        if (nightModeBoolean) {
-            if (MainWebViewActivity.darkTheme) {
+        // Set the night mode preference icon.
+        if (nightMode) {
+            if (darkTheme) {
                 nightModePreference.setIcon(R.drawable.night_mode_enabled_dark);
             } else {
                 nightModePreference.setIcon(R.drawable.night_mode_enabled_light);
             }
         } else {
-            if (MainWebViewActivity.darkTheme) {
+            if (darkTheme) {
                 nightModePreference.setIcon(R.drawable.night_mode_disabled_dark);
             } else {
                 nightModePreference.setIcon(R.drawable.night_mode_disabled_light);
             }
         }
 
-        // Set the `displayWebpageImagesPreference` icon.
+        // Set the display webpage images preference icon.
         if (savedPreferences.getBoolean("display_webpage_images", true)) {
-            if (MainWebViewActivity.darkTheme) {
+            if (darkTheme) {
                 displayWebpageImagesPreference.setIcon(R.drawable.images_enabled_dark);
             } else {
                 displayWebpageImagesPreference.setIcon(R.drawable.images_enabled_light);
             }
         } else {
-            if (MainWebViewActivity.darkTheme) {
+            if (darkTheme) {
                 displayWebpageImagesPreference.setIcon(R.drawable.images_disabled_dark);
             } else {
                 displayWebpageImagesPreference.setIcon(R.drawable.images_disabled_light);
@@ -544,540 +750,667 @@ public class SettingsFragment extends PreferenceFragment {
 
 
         // Listen for preference changes.
-        preferencesListener = new SharedPreferences.OnSharedPreferenceChangeListener() {
-            @Override
-            // Remove Android Studio's warning about the dangers of using SetJavaScriptEnabled.  We know.
-            @SuppressLint("SetJavaScriptEnabled")
-            public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
-
-                switch (key) {
-                    case "javascript_enabled":
-                        // Update the icons and the DOM storage preference status.
-                        if (sharedPreferences.getBoolean("javascript_enabled", false)) {  // The JavaScript preference is enabled.
-                            // Update the icon for the JavaScript preference.
-                            javaScriptPreference.setIcon(R.drawable.javascript_enabled);
-
-                            // Update the status of the DOM storage preference.
-                            domStoragePreference.setEnabled(true);
-
-                            // Update the icon for the DOM storage preference.
-                            if (sharedPreferences.getBoolean("dom_storage_enabled", false)) {
-                                domStoragePreference.setIcon(R.drawable.dom_storage_enabled);
-                            } else {
-                                if (MainWebViewActivity.darkTheme) {
-                                    domStoragePreference.setIcon(R.drawable.dom_storage_disabled_dark);
-                                } else {
-                                    domStoragePreference.setIcon(R.drawable.dom_storage_disabled_light);
-                                }
-                            }
-                        } else {  // The JavaScript preference is disabled.
-                            // Update the icon for the JavaScript preference.
-                            javaScriptPreference.setIcon(R.drawable.privacy_mode);
-
-                            // Update the status of the DOM storage preference.
-                            domStoragePreference.setEnabled(false);
-
-                            // Set the icon for DOM storage preference to be ghosted.
-                            if (MainWebViewActivity.darkTheme) {
-                                domStoragePreference.setIcon(R.drawable.dom_storage_ghosted_dark);
+        preferencesListener = (SharedPreferences sharedPreferences, String key) -> {
+            switch (key) {
+                case "javascript":
+                    // Update the icons and the DOM storage preference status.
+                    if (sharedPreferences.getBoolean("javascript", false)) {  // The JavaScript preference is enabled.
+                        // Update the icon for the JavaScript preference.
+                        javaScriptPreference.setIcon(R.drawable.javascript_enabled);
+
+                        // Update the status of the DOM storage preference.
+                        domStoragePreference.setEnabled(true);
+
+                        // Update the icon for the DOM storage preference.
+                        if (sharedPreferences.getBoolean("dom_storage", false)) {
+                            domStoragePreference.setIcon(R.drawable.dom_storage_enabled);
+                        } else {
+                            if (darkTheme) {
+                                domStoragePreference.setIcon(R.drawable.dom_storage_disabled_dark);
                             } else {
-                                domStoragePreference.setIcon(R.drawable.dom_storage_ghosted_light);
+                                domStoragePreference.setIcon(R.drawable.dom_storage_disabled_light);
                             }
                         }
-                        break;
+                    } else {  // The JavaScript preference is disabled.
+                        // Update the icon for the JavaScript preference.
+                        javaScriptPreference.setIcon(R.drawable.privacy_mode);
 
-                    case "first_party_cookies_enabled":
-                        // Update the icons for `first_party_cookies_enabled` and `third_party_cookies_enabled`.
-                        if (sharedPreferences.getBoolean("first_party_cookies_enabled", false)) {
-                            // Set the icon for `first_party_cookies_enabled`.
-                            firstPartyCookiesPreference.setIcon(R.drawable.cookies_enabled);
+                        // Update the status of the DOM storage preference.
+                        domStoragePreference.setEnabled(false);
 
-                            // Update the icon for `third_party_cookies_enabled`.
-                            if (Build.VERSION.SDK_INT >= 21) {
-                                if (sharedPreferences.getBoolean("third_party_cookies_enabled", false)) {
-                                    thirdPartyCookiesPreference.setIcon(R.drawable.cookies_warning);
-                                } else {
-                                    if (MainWebViewActivity.darkTheme) {
-                                        thirdPartyCookiesPreference.setIcon(R.drawable.cookies_disabled_dark);
-                                    } else {
-                                        thirdPartyCookiesPreference.setIcon(R.drawable.cookies_disabled_light);
-                                    }
-                                }
+                        // Set the icon for DOM storage preference to be ghosted.
+                        if (darkTheme) {
+                            domStoragePreference.setIcon(R.drawable.dom_storage_ghosted_dark);
+                        } else {
+                            domStoragePreference.setIcon(R.drawable.dom_storage_ghosted_light);
+                        }
+                    }
+                    break;
+
+                case "first_party_cookies":
+                    // Update the icons for `first_party_cookies` and `third_party_cookies`.
+                    if (sharedPreferences.getBoolean("first_party_cookies", false)) {
+                        // Set the icon for `first_party_cookies`.
+                        firstPartyCookiesPreference.setIcon(R.drawable.cookies_enabled);
+
+                        // Update the icon for `third_party_cookies`.
+                        if (Build.VERSION.SDK_INT >= 21) {
+                            if (sharedPreferences.getBoolean("third_party_cookies", false)) {
+                                thirdPartyCookiesPreference.setIcon(R.drawable.cookies_warning);
                             } else {
-                                if (MainWebViewActivity.darkTheme) {
-                                    thirdPartyCookiesPreference.setIcon(R.drawable.cookies_ghosted_dark);
+                                if (darkTheme) {
+                                    thirdPartyCookiesPreference.setIcon(R.drawable.cookies_disabled_dark);
                                 } else {
-                                    thirdPartyCookiesPreference.setIcon(R.drawable.cookies_ghosted_light);
+                                    thirdPartyCookiesPreference.setIcon(R.drawable.cookies_disabled_light);
                                 }
                             }
-                        } else {  // `first_party_cookies_enabled` is `false`.
-                            // Update the icon for `first_party_cookies_enabled`.
-                            if (MainWebViewActivity.darkTheme) {
-                                firstPartyCookiesPreference.setIcon(R.drawable.cookies_disabled_dark);
-                            } else {
-                                firstPartyCookiesPreference.setIcon(R.drawable.cookies_disabled_light);
-                            }
-
-                            // Set the icon for `third_party_cookies_enabled` to be ghosted.
-                            if (MainWebViewActivity.darkTheme) {
+                        } else {
+                            if (darkTheme) {
                                 thirdPartyCookiesPreference.setIcon(R.drawable.cookies_ghosted_dark);
                             } else {
                                 thirdPartyCookiesPreference.setIcon(R.drawable.cookies_ghosted_light);
                             }
                         }
+                    } else {  // `first_party_cookies` is `false`.
+                        // Update the icon for `first_party_cookies`.
+                        if (darkTheme) {
+                            firstPartyCookiesPreference.setIcon(R.drawable.cookies_disabled_dark);
+                        } else {
+                            firstPartyCookiesPreference.setIcon(R.drawable.cookies_disabled_light);
+                        }
 
-                        // Enable `third_party_cookies_enabled` if `first_party_cookies_enabled` is `true` and API >= 21.
-                        thirdPartyCookiesPreference.setEnabled(sharedPreferences.getBoolean("first_party_cookies_enabled", false) && (Build.VERSION.SDK_INT >= 21));
-                        break;
+                        // Set the icon for `third_party_cookies` to be ghosted.
+                        if (darkTheme) {
+                            thirdPartyCookiesPreference.setIcon(R.drawable.cookies_ghosted_dark);
+                        } else {
+                            thirdPartyCookiesPreference.setIcon(R.drawable.cookies_ghosted_light);
+                        }
+                    }
 
-                    case "third_party_cookies_enabled":
-                        // Update the icon.
-                        if (sharedPreferences.getBoolean("third_party_cookies_enabled", false)) {
-                            thirdPartyCookiesPreference.setIcon(R.drawable.cookies_warning);
+                    // Enable `third_party_cookies` if `first_party_cookies` is `true` and API >= 21.
+                    thirdPartyCookiesPreference.setEnabled(sharedPreferences.getBoolean("first_party_cookies", false) && (Build.VERSION.SDK_INT >= 21));
+                    break;
+
+                case "third_party_cookies":
+                    // Update the icon.
+                    if (sharedPreferences.getBoolean("third_party_cookies", false)) {
+                        thirdPartyCookiesPreference.setIcon(R.drawable.cookies_warning);
+                    } else {
+                        if (darkTheme) {
+                            thirdPartyCookiesPreference.setIcon(R.drawable.cookies_disabled_dark);
                         } else {
-                            if (MainWebViewActivity.darkTheme) {
-                                thirdPartyCookiesPreference.setIcon(R.drawable.cookies_disabled_dark);
-                            } else {
-                                thirdPartyCookiesPreference.setIcon(R.drawable.cookies_disabled_light);
-                            }
+                            thirdPartyCookiesPreference.setIcon(R.drawable.cookies_disabled_light);
                         }
-                        break;
+                    }
+                    break;
 
-                    case "dom_storage_enabled":
-                        // Update the icon.
-                        if (sharedPreferences.getBoolean("dom_storage_enabled", false)) {
-                            domStoragePreference.setIcon(R.drawable.dom_storage_enabled);
+                case "dom_storage":
+                    // Update the icon.
+                    if (sharedPreferences.getBoolean("dom_storage", false)) {
+                        domStoragePreference.setIcon(R.drawable.dom_storage_enabled);
+                    } else {
+                        if (darkTheme) {
+                            domStoragePreference.setIcon(R.drawable.dom_storage_disabled_dark);
                         } else {
-                            if (MainWebViewActivity.darkTheme) {
-                                domStoragePreference.setIcon(R.drawable.dom_storage_disabled_dark);
-                            } else {
-                                domStoragePreference.setIcon(R.drawable.dom_storage_disabled_light);
-                            }
+                            domStoragePreference.setIcon(R.drawable.dom_storage_disabled_light);
                         }
-                        break;
+                    }
+                    break;
 
-                    case "save_form_data_enabled":
-                        // Update the icon.
-                        if (sharedPreferences.getBoolean("save_form_data_enabled", false)) {
-                            saveFormDataPreference.setIcon(R.drawable.form_data_enabled);
+                // Save form data can be removed once the minimum API >= 26.
+                case "save_form_data":
+                    // Update the icon.
+                    if (sharedPreferences.getBoolean("save_form_data", false)) {
+                        formDataPreference.setIcon(R.drawable.form_data_enabled);
+                    } else {
+                        if (darkTheme) {
+                            formDataPreference.setIcon(R.drawable.form_data_disabled_dark);
                         } else {
-                            if (MainWebViewActivity.darkTheme) {
-                                saveFormDataPreference.setIcon(R.drawable.form_data_disabled_dark);
-                            } else {
-                                saveFormDataPreference.setIcon(R.drawable.form_data_disabled_light);
-                            }
+                            formDataPreference.setIcon(R.drawable.form_data_disabled_light);
                         }
+                    }
+                    break;
 
-                    case "user_agent":
-                        String userAgentString = sharedPreferences.getString("user_agent", "PrivacyBrowser/1.0");
+                case "user_agent":
+                    // Get the new user agent name.
+                    String newUserAgentName = sharedPreferences.getString("user_agent", getString(R.string.user_agent_default_value));
 
-                        switch (userAgentString) {
-                            case "WebView default user agent":
-                                // Display the user agent as the summary text for `userAgentPreference`.
-                                userAgentPreference.setSummary(bareWebView.getSettings().getUserAgentString());
+                    // Get the array position for the new user agent name.
+                    int newUserAgentArrayPosition = userAgentNamesArray.getPosition(newUserAgentName);
 
-                                // Disable `customUserAgentPreference`.
-                                customUserAgentPreference.setEnabled(false);
+                    // Get the translated new user agent name.
+                    String translatedNewUserAgentName = translatedUserAgentNamesArray[newUserAgentArrayPosition];
 
-                                // Set the `customUserAgentPreference` icon according to the theme.
-                                if (MainWebViewActivity.darkTheme) {
-                                    customUserAgentPreference.setIcon(R.drawable.custom_user_agent_ghosted_dark);
-                                } else {
-                                    customUserAgentPreference.setIcon(R.drawable.custom_user_agent_ghosted_light);
-                                }
-                                break;
+                    // Populate the user agent summary.
+                    switch (newUserAgentArrayPosition) {
+                        case MainWebViewActivity.SETTINGS_WEBVIEW_DEFAULT_USER_AGENT:
+                            // Get the user agent text from the webview (which changes based on the version of Android and WebView installed).
+                            userAgentPreference.setSummary(translatedNewUserAgentName + ":\n" + bareWebView.getSettings().getUserAgentString());
 
-                            case "Custom user agent":
-                                // Display `Custom user agent` as the summary text for `userAgentPreference`.
-                                userAgentPreference.setSummary(R.string.custom_user_agent);
+                            // Disable the custom user agent preference.
+                            customUserAgentPreference.setEnabled(false);
 
-                                // Enable `customUserAgentPreference`.
-                                customUserAgentPreference.setEnabled(true);
+                            // Set the custom user agent preference icon according to the theme.
+                            if (darkTheme) {
+                                customUserAgentPreference.setIcon(R.drawable.custom_user_agent_ghosted_dark);
+                            } else {
+                                customUserAgentPreference.setIcon(R.drawable.custom_user_agent_ghosted_light);
+                            }
+                            break;
 
-                                // Set the `customUserAgentPreference` icon according to the theme.
-                                if (MainWebViewActivity.darkTheme) {
-                                    customUserAgentPreference.setIcon(R.drawable.custom_user_agent_enabled_dark);
-                                } else {
-                                    customUserAgentPreference.setIcon(R.drawable.custom_user_agent_enabled_light);
-                                }
-                                break;
+                        case MainWebViewActivity.SETTINGS_CUSTOM_USER_AGENT:
+                            // Set the summary text.
+                            userAgentPreference.setSummary(R.string.custom_user_agent);
 
-                            default:
-                                // Display the user agent as the summary text for `userAgentPreference`.
-                                userAgentPreference.setSummary(sharedPreferences.getString("user_agent", "PrivacyBrowser/1.0"));
+                            // Enable the custom user agent preference.
+                            customUserAgentPreference.setEnabled(true);
 
-                                // Disable `customUserAgentPreference`.
-                                customUserAgentPreference.setEnabled(false);
+                            // Set the custom user agent preference icon according to the theme.
+                            if (darkTheme) {
+                                customUserAgentPreference.setIcon(R.drawable.custom_user_agent_enabled_dark);
+                            } else {
+                                customUserAgentPreference.setIcon(R.drawable.custom_user_agent_enabled_light);
+                            }
+                            break;
 
-                                // Set the `customUserAgentPreference` icon according to the theme.
-                                if (MainWebViewActivity.darkTheme) {
-                                    customUserAgentPreference.setIcon(R.drawable.custom_user_agent_ghosted_dark);
-                                } else {
-                                    customUserAgentPreference.setIcon(R.drawable.custom_user_agent_ghosted_light);
-                                }
-                                break;
-                        }
-                        break;
+                        default:
+                            // Get the user agent summary from the user agent data array.
+                            userAgentPreference.setSummary(translatedNewUserAgentName + ":\n" + userAgentDataArray[newUserAgentArrayPosition]);
 
-                    case "custom_user_agent":
-                        // Set the new custom user agent as the summary text for `custom_user_agent`.  The default is `PrivacyBrowser/1.0`.
-                        customUserAgentPreference.setSummary(sharedPreferences.getString("custom_user_agent", "PrivacyBrowser/1.0"));
-                        break;
+                            // Disable the custom user agent preference.
+                            customUserAgentPreference.setEnabled(false);
 
-                    case "block_ads":
-                        // Update the icon.
-                        if (sharedPreferences.getBoolean("block_ads", true)) {
-                            if (MainWebViewActivity.darkTheme) {
-                                blockAdsPreference.setIcon(R.drawable.block_ads_enabled_dark);
+                            // Set the custom user agent preference icon according to the theme.
+                            if (darkTheme) {
+                                customUserAgentPreference.setIcon(R.drawable.custom_user_agent_ghosted_dark);
                             } else {
-                                blockAdsPreference.setIcon(R.drawable.block_ads_enabled_light);
+                                customUserAgentPreference.setIcon(R.drawable.custom_user_agent_ghosted_light);
                             }
+                    }
+                    break;
+
+                case "custom_user_agent":
+                    // Set the new custom user agent as the summary text for the preference.
+                    customUserAgentPreference.setSummary(sharedPreferences.getString("custom_user_agent", getString(R.string.custom_user_agent_default_value)));
+                    break;
+
+                case "incognito_mode":
+                    // Update the icon.
+                    if (sharedPreferences.getBoolean("incognito_mode", false)) {
+                        if (darkTheme) {
+                            incognitoModePreference.setIcon(R.drawable.incognito_mode_enabled_dark);
                         } else {
-                            if (MainWebViewActivity.darkTheme) {
-                                blockAdsPreference.setIcon(R.drawable.block_ads_disabled_dark);
-                            } else {
-                                blockAdsPreference.setIcon(R.drawable.block_ads_disabled_light);
-                            }
+                            incognitoModePreference.setIcon(R.drawable.incognito_mode_enabled_light);
                         }
-                        break;
+                    } else {
+                        if (darkTheme) {
+                            incognitoModePreference.setIcon(R.drawable.incognito_mode_disabled_dark);
+                        } else {
+                            incognitoModePreference.setIcon(R.drawable.incognito_mode_disabled_light);
+                        }
+                    }
+                    break;
 
-                    case "incognito_mode":
-                        // Update the icon.
-                        if (sharedPreferences.getBoolean("incognito_mode", false)) {
-                            if (MainWebViewActivity.darkTheme) {
-                                incognitoModePreference.setIcon(R.drawable.incognito_mode_enabled_dark);
-                            } else {
-                                incognitoModePreference.setIcon(R.drawable.incognito_mode_enabled_light);
-                            }
+                case "do_not_track":
+                    // Update the icon.
+                    if (sharedPreferences.getBoolean("do_not_track", false)) {
+                        if (darkTheme) {
+                            doNotTrackPreference.setIcon(R.drawable.block_tracking_enabled_dark);
                         } else {
-                            if (MainWebViewActivity.darkTheme) {
-                                incognitoModePreference.setIcon(R.drawable.incognito_mode_disabled_dark);
-                            } else {
-                                incognitoModePreference.setIcon(R.drawable.incognito_mode_disabled_light);
-                            }
+                            doNotTrackPreference.setIcon(R.drawable.block_tracking_enabled_light);
                         }
-                        break;
+                    } else {
+                        if (darkTheme) {
+                            doNotTrackPreference.setIcon(R.drawable.block_tracking_disabled_dark);
+                        } else {
+                            doNotTrackPreference.setIcon(R.drawable.block_tracking_disabled_light);
+                        }
+                    }
 
-                    case "do_not_track":
-                        // Update the icon.
-                        if (sharedPreferences.getBoolean("do_not_track", false)) {
-                            if (MainWebViewActivity.darkTheme) {
-                                doNotTrackPreference.setIcon(R.drawable.do_not_track_enabled_dark);
-                            } else {
-                                doNotTrackPreference.setIcon(R.drawable.do_not_track_enabled_light);
-                            }
+                    break;
+
+                case "allow_screenshots":
+                    // Update the icon.
+                    if (sharedPreferences.getBoolean("allow_screenshots", false)) {
+                        if (darkTheme) {
+                            allowScreenshotsPreference.setIcon(R.drawable.allow_screenshots_enabled_dark);
                         } else {
-                            if (MainWebViewActivity.darkTheme) {
-                                doNotTrackPreference.setIcon(R.drawable.do_not_track_disabled_dark);
-                            } else {
-                                doNotTrackPreference.setIcon(R.drawable.do_not_track_disabled_light);
-                            }
+                            allowScreenshotsPreference.setIcon(R.drawable.allow_screenshots_enabled_light);
                         }
+                    } else {
+                        if (darkTheme) {
+                            allowScreenshotsPreference.setIcon(R.drawable.allow_screenshots_disabled_dark);
+                        } else {
+                            allowScreenshotsPreference.setIcon(R.drawable.allow_screenshots_disabled_light);
+                        }
+                    }
 
-                        break;
+                    // Create an intent to restart Privacy Browser.
+                    Intent allowScreenshotsRestartIntent = getActivity().getParentActivityIntent();
 
-                    case "proxy_through_orbot":
-                        // Get current settings.
-                        boolean currentProxyThroughOrbot = sharedPreferences.getBoolean("proxy_through_orbot", false);
-                        String currentTorSearchString = sharedPreferences.getString("tor_search", "https://3g2upl4pq6kufc4m.onion/html/?q=");
+                    // Assert that the intent is not null to remove the lint error below.
+                    assert allowScreenshotsRestartIntent != null;
 
-                        // Enable the Tor custom URL search option only if `currentProxyThroughOrbot` is true and the search is set to `Custom URL`.
-                        torSearchCustomURLPreference.setEnabled(currentProxyThroughOrbot && currentTorSearchString.equals("Custom URL"));
+                    // `Intent.FLAG_ACTIVITY_CLEAR_TASK` removes all activities from the stack.  It requires `Intent.FLAG_ACTIVITY_NEW_TASK`.
+                    allowScreenshotsRestartIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
 
-                        // Update the icons.
-                        if (currentProxyThroughOrbot) {
-                            // Set the Tor icons according to the theme.
-                            if (MainWebViewActivity.darkTheme) {
-                                proxyThroughOrbotPreference.setIcon(R.drawable.orbot_enabled_dark);
-                                torHomepagePreference.setIcon(R.drawable.home_enabled_dark);
-                                torSearchPreference.setIcon(R.drawable.search_enabled_dark);
+                    // Create a handler to restart the activity.
+                    Handler allowScreenshotsRestartHandler = new Handler();
 
-                                // Set the `torSearchCustomURLPreference` icon.
-                                if (torSearchCustomURLPreference.isEnabled()) {
-                                    torSearchCustomURLPreference.setIcon(R.drawable.search_custom_url_enabled_dark);
-                                } else {
-                                    torSearchCustomURLPreference.setIcon(R.drawable.search_custom_url_ghosted_dark);
-                                }
-                            } else {
-                                proxyThroughOrbotPreference.setIcon(R.drawable.orbot_enabled_light);
-                                torHomepagePreference.setIcon(R.drawable.home_enabled_light);
-                                torSearchPreference.setIcon(R.drawable.search_enabled_light);
+                    // Create a runnable to restart the activity.
+                    Runnable allowScreenshotsRestartRunnable = () -> {
+                        // Restart the activity.
+                        startActivity(allowScreenshotsRestartIntent);
 
-                                // Set the `torSearchCustomURLPreference` icon.
-                                if (torSearchCustomURLPreference.isEnabled()) {
-                                    torSearchCustomURLPreference.setIcon(R.drawable.search_custom_url_enabled_light);
-                                } else {
-                                    torSearchCustomURLPreference.setIcon(R.drawable.search_custom_url_ghosted_light);
-                                }
-                            }
-                        } else {  // Proxy through Orbot is disabled.
-                            if (MainWebViewActivity.darkTheme) {
-                                proxyThroughOrbotPreference.setIcon(R.drawable.orbot_disabled_dark);
-                                torHomepagePreference.setIcon(R.drawable.home_ghosted_dark);
-                                torSearchPreference.setIcon(R.drawable.search_ghosted_dark);
-                                torSearchCustomURLPreference.setIcon(R.drawable.search_custom_url_ghosted_dark);
-                            } else {
-                                proxyThroughOrbotPreference.setIcon(R.drawable.orbot_disabled_light);
-                                torHomepagePreference.setIcon(R.drawable.home_ghosted_light);
-                                torSearchPreference.setIcon(R.drawable.search_ghosted_light);
-                                torSearchCustomURLPreference.setIcon(R.drawable.search_custom_url_ghosted_light);
-                            }
+                        // Kill this instance of Privacy Browser.  Otherwise, the app exhibits sporadic behavior after the restart.
+                        System.exit(0);
+                    };
+
+                    // Restart the activity after 100 milliseconds, so that the app has enough time to save the change to the preference.
+                    allowScreenshotsRestartHandler.postDelayed(allowScreenshotsRestartRunnable, 100);
+                    break;
+
+                case "easylist":
+                    // Update the icon.
+                    if (sharedPreferences.getBoolean("easylist", true)) {
+                        if (darkTheme) {
+                            easyListPreference.setIcon(R.drawable.block_ads_enabled_dark);
+                        } else {
+                            easyListPreference.setIcon(R.drawable.block_ads_enabled_light);
                         }
-                        break;
+                    } else {
+                        if (darkTheme) {
+                            easyListPreference.setIcon(R.drawable.block_ads_disabled_dark);
+                        } else {
+                            easyListPreference.setIcon(R.drawable.block_ads_disabled_light);
+                        }
+                    }
+                    break;
 
-                    case "tor_homepage":
-                        // Set the new tor homepage URL as the summary text for the `tor_homepage` preference.  The default is DuckDuckGo:  `https://3g2upl4pq6kufc4m.onion`.
-                        torHomepagePreference.setSummary(sharedPreferences.getString("tor_homepage", "https://3g2upl4pq6kufc4m.onion"));
-                        break;
+                case "easyprivacy":
+                    // Update the icon.
+                    if (sharedPreferences.getBoolean("easyprivacy", true)) {
+                        if (darkTheme) {
+                            easyPrivacyPreference.setIcon(R.drawable.block_tracking_enabled_dark);
+                        } else {
+                            easyPrivacyPreference.setIcon(R.drawable.block_tracking_enabled_light);
+                        }
+                    } else {
+                        if (darkTheme) {
+                            easyPrivacyPreference.setIcon(R.drawable.block_tracking_disabled_dark);
+                        } else {
+                            easyPrivacyPreference.setIcon(R.drawable.block_tracking_disabled_light);
+                        }
+                    }
+                    break;
 
-                    case "tor_search":
-                        // Get the present search string.
-                        String presentTorSearchString = sharedPreferences.getString("tor_search", "https://3g2upl4pq6kufc4m.onion/html/?q=");
+                case "fanboys_annoyance_list":
+                    boolean currentFanboyAnnoyanceList = sharedPreferences.getBoolean("fanboys_annoyance_list", true);
+                    boolean currentFanboySocialBlockingList = sharedPreferences.getBoolean("fanboys_social_blocking_list", true);
 
-                        // Update the preferences.
-                        if (presentTorSearchString.equals("Custom URL")) {
-                            // Use `R.string.custom_url`, which is translated, as the summary instead of the array value, which isn't.
-                            torSearchPreference.setSummary(R.string.custom_url);
+                    // Update the Fanboy icons.
+                    if (currentFanboyAnnoyanceList) {  // Fanboy's annoyance list is enabled.
+                        if (darkTheme) {
+                            // Update the Fanboy's annoyance list icon.
+                            fanboyAnnoyanceListPreference.setIcon(R.drawable.social_media_enabled_dark);
 
-                            // Enable `torSearchCustomURLPreference`.
-                            torSearchCustomURLPreference.setEnabled(true);
+                            // Update the Fanboy's social blocking list icon.
+                            fanboySocialBlockingListPreference.setIcon(R.drawable.social_media_ghosted_dark);
+                        } else {
+                            // Update the Fanboy's annoyance list icon.
+                            fanboyAnnoyanceListPreference.setIcon(R.drawable.social_media_enabled_light);
 
-                            // Update the `torSearchCustomURLPreference` icon.
-                            if (MainWebViewActivity.darkTheme) {
-                                torSearchCustomURLPreference.setIcon(R.drawable.search_custom_url_enabled_dark);
+                            // Update the Fanboy's social blocking list icon.
+                            fanboySocialBlockingListPreference.setIcon(R.drawable.social_media_ghosted_light);
+                        }
+                    } else {  // Fanboy's annoyance list is disabled.
+                        if (darkTheme) {
+                            // Update the Fanboy's annoyance list icon.
+                            fanboyAnnoyanceListPreference.setIcon(R.drawable.social_media_disabled_dark);
+
+                            // Update the Fanboy's social blocking list icon.
+                            if (currentFanboySocialBlockingList) {
+                                fanboySocialBlockingListPreference.setIcon(R.drawable.social_media_enabled_dark);
                             } else {
-                                torSearchCustomURLPreference.setIcon(R.drawable.search_custom_url_enabled_light);
+                                fanboySocialBlockingListPreference.setIcon(R.drawable.social_media_disabled_dark);
                             }
                         } else {
-                            // Set the array value as the summary text.
-                            torSearchPreference.setSummary(presentTorSearchString);
+                            // Update the Fanboy's annoyance list icon.
+                            fanboyAnnoyanceListPreference.setIcon(R.drawable.social_media_disabled_light);
 
-                            // Disable `torSearchCustomURLPreference`.
-                            torSearchCustomURLPreference.setEnabled(false);
-
-                            // Update the `torSearchCustomURLPreference` icon.
-                            if (MainWebViewActivity.darkTheme) {
-                                torSearchCustomURLPreference.setIcon(R.drawable.search_custom_url_ghosted_dark);
+                            // Update the Fanboy's social blocking list icon.
+                            if (currentFanboySocialBlockingList) {
+                                fanboySocialBlockingListPreference.setIcon(R.drawable.social_media_enabled_light);
                             } else {
-                                torSearchCustomURLPreference.setIcon(R.drawable.search_custom_url_ghosted_light);
+                                fanboySocialBlockingListPreference.setIcon(R.drawable.social_media_disabled_light);
                             }
                         }
-                        break;
+                    }
 
-                    case "tor_search_custom_url":
-                        // Set the summary text for `tor_search_custom_url`.
-                        torSearchCustomURLPreference.setSummary(sharedPreferences.getString("tor_search_custom_url", ""));
-                        break;
+                    // Only enable Fanboy's social blocking list preference if Fanboy's annoyance list preference is disabled.
+                    fanboySocialBlockingListPreference.setEnabled(!currentFanboyAnnoyanceList);
+                    break;
 
-                    case "search":
-                        // Store the new search string.
-                        String newSearchString = sharedPreferences.getString("search", "https://duckduckgo.com/html/?q=");
+                case "fanboys_social_blocking_list":
+                    // Update the icon.
+                    if (sharedPreferences.getBoolean("fanboys_social_blocking_list", true)) {
+                        if (darkTheme) {
+                            fanboySocialBlockingListPreference.setIcon(R.drawable.social_media_enabled_dark);
+                        } else {
+                            fanboySocialBlockingListPreference.setIcon(R.drawable.social_media_enabled_light);
+                        }
+                    } else {
+                        if (darkTheme) {
+                            fanboySocialBlockingListPreference.setIcon(R.drawable.social_media_disabled_dark);
+                        } else {
+                            fanboySocialBlockingListPreference.setIcon(R.drawable.social_media_disabled_light);
+                        }
+                    }
+                    break;
 
-                        // Update `searchPreference` and `searchCustomURLPreference`.
-                        if (newSearchString.equals("Custom URL")) {  // `Custom URL` is selected.
-                            // Set the summary text to `R.string.custom_url`, which is translated.
-                            searchPreference.setSummary(R.string.custom_url);
+                case "ultraprivacy":
+                    // Update the icon.
+                    if (sharedPreferences.getBoolean("ultraprivacy", true)) {
+                        if (darkTheme) {
+                            ultraPrivacyPreference.setIcon(R.drawable.block_tracking_enabled_dark);
+                        } else {
+                            ultraPrivacyPreference.setIcon(R.drawable.block_tracking_enabled_light);
+                        }
+                    } else {
+                        if (darkTheme) {
+                            ultraPrivacyPreference.setIcon(R.drawable.block_tracking_disabled_dark);
+                        } else {
+                            ultraPrivacyPreference.setIcon(R.drawable.block_tracking_disabled_light);
+                        }
+                    }
+                    break;
+
+                case "block_all_third_party_requests":
+                    // Update the icon.
+                    if (sharedPreferences.getBoolean("block_all_third_party_requests", false)) {
+                        if (darkTheme) {
+                            blockAllThirdPartyRequestsPreference.setIcon(R.drawable.block_all_third_party_requests_enabled_dark);
+                        } else {
+                            blockAllThirdPartyRequestsPreference.setIcon(R.drawable.block_all_third_party_requests_enabled_light);
+                        }
+                    } else {
+                        if (darkTheme) {
+                            blockAllThirdPartyRequestsPreference.setIcon(R.drawable.block_all_third_party_requests_disabled_dark);
+                        } else {
+                            blockAllThirdPartyRequestsPreference.setIcon(R.drawable.block_all_third_party_requests_disabled_light);
+                        }
+                    }
+                    break;
 
-                            // Enable `searchCustomURLPreference`.
-                            searchCustomURLPreference.setEnabled(true);
+                case "google_analytics":
+                    // Update the icon.
+                    if (sharedPreferences.getBoolean("google_analytics", true)) {
+                        if (darkTheme) {
+                            googleAnalyticsPreference.setIcon(R.drawable.modify_url_enabled_dark);
+                        } else {
+                            googleAnalyticsPreference.setIcon(R.drawable.modify_url_enabled_light);
+                        }
+                    } else {
+                        if (darkTheme) {
+                            googleAnalyticsPreference.setIcon(R.drawable.modify_url_disabled_dark);
+                        } else {
+                            googleAnalyticsPreference.setIcon(R.drawable.modify_url_disabled_light);
+                        }
+                    }
+                    break;
 
-                            // Set the `searchCustomURLPreference` according to the theme.
-                            if (MainWebViewActivity.darkTheme) {
-                                searchCustomURLPreference.setIcon(R.drawable.search_custom_url_enabled_dark);
+                case "facebook_click_ids":
+                    // Update the icon.
+                    if (sharedPreferences.getBoolean("facebook_click_ids", true)) {
+                        if (darkTheme) {
+                            facebookClickIdsPreference.setIcon(R.drawable.modify_url_enabled_dark);
+                        } else {
+                            facebookClickIdsPreference.setIcon(R.drawable.modify_url_enabled_light);
+                        }
+                    } else {
+                        if (darkTheme) {
+                            facebookClickIdsPreference.setIcon(R.drawable.modify_url_disabled_dark);
+                        } else {
+                            facebookClickIdsPreference.setIcon(R.drawable.modify_url_disabled_light);
+                        }
+                    }
+                    break;
+
+                case "proxy_through_orbot":
+                    // Get current settings.
+                    boolean currentProxyThroughOrbot = sharedPreferences.getBoolean("proxy_through_orbot", false);
+                    String currentTorSearchString = sharedPreferences.getString("tor_search", getString(R.string.tor_search_default_value));
+
+                    // Enable the Tor custom URL search option only if `currentProxyThroughOrbot` is true and the search is set to `Custom URL`.
+                    torSearchCustomURLPreference.setEnabled(currentProxyThroughOrbot && currentTorSearchString.equals("Custom URL"));
+
+                    // Update the icons.
+                    if (currentProxyThroughOrbot) {
+                        // Set the Tor icons according to the theme.
+                        if (darkTheme) {
+                            proxyThroughOrbotPreference.setIcon(R.drawable.orbot_enabled_dark);
+                            torHomepagePreference.setIcon(R.drawable.home_enabled_dark);
+                            torSearchPreference.setIcon(R.drawable.search_enabled_dark);
+
+                            // Set the `torSearchCustomURLPreference` icon.
+                            if (torSearchCustomURLPreference.isEnabled()) {
+                                torSearchCustomURLPreference.setIcon(R.drawable.search_custom_url_enabled_dark);
                             } else {
-                                searchCustomURLPreference.setIcon(R.drawable.search_custom_url_enabled_light);
+                                torSearchCustomURLPreference.setIcon(R.drawable.search_custom_url_ghosted_dark);
                             }
-                        } else {  // `Custom URL` is not selected.
-                            // Set the summary text to `newSearchString`.
-                            searchPreference.setSummary(newSearchString);
-
-                            // Disable `searchCustomURLPreference`.
-                            searchCustomURLPreference.setEnabled(false);
+                        } else {
+                            proxyThroughOrbotPreference.setIcon(R.drawable.orbot_enabled_light);
+                            torHomepagePreference.setIcon(R.drawable.home_enabled_light);
+                            torSearchPreference.setIcon(R.drawable.search_enabled_light);
 
-                            // Set the `searchCustomURLPreference` according to the theme.
-                            if (MainWebViewActivity.darkTheme) {
-                                searchCustomURLPreference.setIcon(R.drawable.search_custom_url_ghosted_dark);
+                            // Set the `torSearchCustomURLPreference` icon.
+                            if (torSearchCustomURLPreference.isEnabled()) {
+                                torSearchCustomURLPreference.setIcon(R.drawable.search_custom_url_enabled_light);
                             } else {
-                                searchCustomURLPreference.setIcon(R.drawable.search_custom_url_ghosted_light);
+                                torSearchCustomURLPreference.setIcon(R.drawable.search_custom_url_ghosted_light);
                             }
                         }
-                        break;
+                    } else {  // Proxy through Orbot is disabled.
+                        if (darkTheme) {
+                            proxyThroughOrbotPreference.setIcon(R.drawable.orbot_disabled_dark);
+                            torHomepagePreference.setIcon(R.drawable.home_ghosted_dark);
+                            torSearchPreference.setIcon(R.drawable.search_ghosted_dark);
+                            torSearchCustomURLPreference.setIcon(R.drawable.search_custom_url_ghosted_dark);
+                        } else {
+                            proxyThroughOrbotPreference.setIcon(R.drawable.orbot_disabled_light);
+                            torHomepagePreference.setIcon(R.drawable.home_ghosted_light);
+                            torSearchPreference.setIcon(R.drawable.search_ghosted_light);
+                            torSearchCustomURLPreference.setIcon(R.drawable.search_custom_url_ghosted_light);
+                        }
+                    }
+                    break;
 
-                    case "search_custom_url":
-                        // Set the new custom search URL as the summary text for `search_custom_url`.  The default is `""`.
-                        searchCustomURLPreference.setSummary(sharedPreferences.getString("search_custom_url", ""));
-                        break;
+                case "tor_homepage":
+                    // Set the new tor homepage URL as the summary text for the `tor_homepage` preference.  The default is Searx:  `http://ulrn6sryqaifefld.onion/`.
+                    torHomepagePreference.setSummary(sharedPreferences.getString("tor_homepage", getString(R.string.tor_homepage_default_value)));
+                    break;
 
-                    case "full_screen_browsing_mode":
-                        if (sharedPreferences.getBoolean("full_screen_browsing_mode", false)) {
-                            // Set the `fullScreenBrowsingModePreference` icon according to the theme.
-                            if (MainWebViewActivity.darkTheme) {
-                                fullScreenBrowsingModePreference.setIcon(R.drawable.full_screen_enabled_dark);
-                            } else {
-                                fullScreenBrowsingModePreference.setIcon(R.drawable.full_screen_enabled_light);
-                            }
+                case "tor_search":
+                    // Get the present search string.
+                    String presentTorSearchString = sharedPreferences.getString("tor_search", getString(R.string.tor_search_default_value));
 
-                            if (sharedPreferences.getBoolean("hide_system_bars", false)) {  // `hide_system_bars` is `true`.
-                                // Disable `translucentNavigationBarPreference`.
-                                translucentNavigationBarPreference.setEnabled(false);
+                    // Update the preferences.
+                    if (presentTorSearchString.equals("Custom URL")) {
+                        // Use `R.string.custom_url`, which is translated, as the summary instead of the array value, which isn't.
+                        torSearchPreference.setSummary(R.string.custom_url);
 
-                                // Set the icons according to the theme.
-                                if (MainWebViewActivity.darkTheme) {
-                                    hideSystemBarsPreference.setIcon(R.drawable.hide_system_bars_enabled_dark);
-                                    translucentNavigationBarPreference.setIcon(R.drawable.translucent_bar_ghosted_dark);
-                                } else {
-                                    hideSystemBarsPreference.setIcon(R.drawable.hide_system_bars_enabled_light);
-                                    translucentNavigationBarPreference.setIcon(R.drawable.translucent_bar_ghosted_light);
-                                }
-                            } else {  // `hide_system_bars` is `false`.
-                                // Enable `translucentNavigationBarPreference`.
-                                translucentNavigationBarPreference.setEnabled(true);
-
-                                // Set the icons according to the theme.
-                                if (MainWebViewActivity.darkTheme) {  // Use the dark theme.
-                                    // Set the `hideSystemBarsPreference` icon.
-                                    hideSystemBarsPreference.setIcon(R.drawable.hide_system_bars_disabled_dark);
-
-                                    // Set the `translucentNavigationBarPreference` icon.
-                                    if (sharedPreferences.getBoolean("translucent_navigation_bar", true)) {
-                                        translucentNavigationBarPreference.setIcon(R.drawable.translucent_bar_enabled_dark);
-                                    } else {
-                                        translucentNavigationBarPreference.setIcon(R.drawable.translucent_bar_disabled_dark);
-                                    }
-                                } else {  // Use the light theme.
-                                    // Set the `hideSystemBarsPreference` icon.
-                                    hideSystemBarsPreference.setIcon(R.drawable.hide_system_bars_disabled_light);
-
-                                    // Set the `translucentNavigationBarPreference` icon.
-                                    if (sharedPreferences.getBoolean("translucent_navigation_bar", true)) {
-                                        translucentNavigationBarPreference.setIcon(R.drawable.translucent_bar_enabled_light);
-                                    } else {
-                                        translucentNavigationBarPreference.setIcon(R.drawable.translucent_bar_disabled_light);
-                                    }
-                                }
-                            }
-                        } else {  // `full_screen_browsing_mode` is false.
-                            // Disable `translucentNavigationBarPreference`.
-                            translucentNavigationBarPreference.setEnabled(false);
-
-                            // Update the icons according to the theme.
-                            if (MainWebViewActivity.darkTheme) {
-                                fullScreenBrowsingModePreference.setIcon(R.drawable.full_screen_disabled_dark);
-                                hideSystemBarsPreference.setIcon(R.drawable.hide_system_bars_ghosted_dark);
-                                translucentNavigationBarPreference.setIcon(R.drawable.translucent_bar_ghosted_dark);
-                            } else {
-                                fullScreenBrowsingModePreference.setIcon(R.drawable.full_screen_disabled_light);
-                                hideSystemBarsPreference.setIcon(R.drawable.hide_system_bars_ghosted_light);
-                                translucentNavigationBarPreference.setIcon(R.drawable.translucent_bar_ghosted_light);
-                            }
-                        }
-                        break;
+                        // Enable `torSearchCustomURLPreference`.
+                        torSearchCustomURLPreference.setEnabled(true);
 
-                    case "hide_system_bars":
-                        if (sharedPreferences.getBoolean("hide_system_bars", false)) {
-                            // Disable `translucentNavigationBarPreference`.
-                            translucentNavigationBarPreference.setEnabled(false);
+                        // Update the `torSearchCustomURLPreference` icon.
+                        if (darkTheme) {
+                            torSearchCustomURLPreference.setIcon(R.drawable.search_custom_url_enabled_dark);
+                        } else {
+                            torSearchCustomURLPreference.setIcon(R.drawable.search_custom_url_enabled_light);
+                        }
+                    } else {
+                        // Set the array value as the summary text.
+                        torSearchPreference.setSummary(presentTorSearchString);
 
-                            // Set the icons according to the theme.
-                            if (MainWebViewActivity.darkTheme) {
-                                hideSystemBarsPreference.setIcon(R.drawable.hide_system_bars_enabled_dark);
-                                translucentNavigationBarPreference.setIcon(R.drawable.translucent_bar_ghosted_dark);
-                            } else {
-                                hideSystemBarsPreference.setIcon(R.drawable.hide_system_bars_enabled_light);
-                                translucentNavigationBarPreference.setIcon(R.drawable.translucent_bar_ghosted_light);
-                            }
-                        } else {  // `hide_system_bars` is false.
-                            // Enable `translucentNavigationBarPreference`.
-                            translucentNavigationBarPreference.setEnabled(true);
-
-                            // Set the icons according to the theme.
-                            if (MainWebViewActivity.darkTheme) {
-                                // Set the `hideSystemBarsPreference` icon.
-                                hideSystemBarsPreference.setIcon(R.drawable.hide_system_bars_disabled_dark);
-
-                                // Set the `translucentNavigationBarPreference` icon.
-                                if (sharedPreferences.getBoolean("translucent_navigation_bar", true)) {
-                                    translucentNavigationBarPreference.setIcon(R.drawable.translucent_bar_enabled_dark);
-                                } else {
-                                    translucentNavigationBarPreference.setIcon(R.drawable.translucent_bar_disabled_dark);
-                                }
-                            } else {
-                                // Set the `hideSystemBarsPreference` icon.
-                                hideSystemBarsPreference.setIcon(R.drawable.hide_system_bars_disabled_light);
+                        // Disable `torSearchCustomURLPreference`.
+                        torSearchCustomURLPreference.setEnabled(false);
 
-                                // Set the `translucentNavigationBarPreference` icon.
-                                if (sharedPreferences.getBoolean("translucent_navigation_bar", true)) {
-                                    translucentNavigationBarPreference.setIcon(R.drawable.translucent_bar_enabled_light);
-                                } else {
-                                    translucentNavigationBarPreference.setIcon(R.drawable.translucent_bar_disabled_light);
-                                }
-                            }
+                        // Update the `torSearchCustomURLPreference` icon.
+                        if (darkTheme) {
+                            torSearchCustomURLPreference.setIcon(R.drawable.search_custom_url_ghosted_dark);
+                        } else {
+                            torSearchCustomURLPreference.setIcon(R.drawable.search_custom_url_ghosted_light);
                         }
-                        break;
+                    }
+                    break;
 
-                    case "translucent_navigation_bar":
-                        // Update the icon.
-                        if (sharedPreferences.getBoolean("translucent_navigation_bar", true)) {
-                            if (MainWebViewActivity.darkTheme) {
-                                translucentNavigationBarPreference.setIcon(R.drawable.translucent_bar_enabled_dark);
-                            } else {
-                                translucentNavigationBarPreference.setIcon(R.drawable.translucent_bar_enabled_light);
-                            }
+                case "tor_search_custom_url":
+                    // Set the summary text for `tor_search_custom_url`.
+                    torSearchCustomURLPreference.setSummary(sharedPreferences.getString("tor_search_custom_url", getString(R.string.tor_search_custom_url_default_value)));
+                    break;
+
+                case "search":
+                    // Store the new search string.
+                    String newSearchString = sharedPreferences.getString("search", getString(R.string.search_default_value));
+
+                    // Update `searchPreference` and `searchCustomURLPreference`.
+                    if (newSearchString.equals("Custom URL")) {  // `Custom URL` is selected.
+                        // Set the summary text to `R.string.custom_url`, which is translated.
+                        searchPreference.setSummary(R.string.custom_url);
+
+                        // Enable `searchCustomURLPreference`.
+                        searchCustomURLPreference.setEnabled(true);
+
+                        // Set the `searchCustomURLPreference` according to the theme.
+                        if (darkTheme) {
+                            searchCustomURLPreference.setIcon(R.drawable.search_custom_url_enabled_dark);
                         } else {
-                            if (MainWebViewActivity.darkTheme) {
-                                translucentNavigationBarPreference.setIcon(R.drawable.translucent_bar_disabled_dark);
-                            } else {
-                                translucentNavigationBarPreference.setIcon(R.drawable.translucent_bar_disabled_light);
-                            }
+                            searchCustomURLPreference.setIcon(R.drawable.search_custom_url_enabled_light);
                         }
-                        break;
+                    } else {  // `Custom URL` is not selected.
+                        // Set the summary text to `newSearchString`.
+                        searchPreference.setSummary(newSearchString);
 
-                    case "clear_everything":
-                        // Store the new `clear_everything` status
-                        boolean newClearEverythingBoolean = sharedPreferences.getBoolean("clear_everything", true);
+                        // Disable `searchCustomURLPreference`.
+                        searchCustomURLPreference.setEnabled(false);
 
-                        // Update the status of the `Clear and Exit` preferences.
-                        clearCookiesPreference.setEnabled(!newClearEverythingBoolean);
-                        clearDomStoragePreference.setEnabled(!newClearEverythingBoolean);
-                        clearFormDataPreference.setEnabled(!newClearEverythingBoolean);
-                        clearCachePreference.setEnabled(!newClearEverythingBoolean);
+                        // Set the `searchCustomURLPreference` according to the theme.
+                        if (darkTheme) {
+                            searchCustomURLPreference.setIcon(R.drawable.search_custom_url_ghosted_dark);
+                        } else {
+                            searchCustomURLPreference.setIcon(R.drawable.search_custom_url_ghosted_light);
+                        }
+                    }
+                    break;
+
+                case "search_custom_url":
+                    // Set the new custom search URL as the summary text for `search_custom_url`.  The default is `""`.
+                    searchCustomURLPreference.setSummary(sharedPreferences.getString("search_custom_url", getString(R.string.search_custom_url_default_value)));
+                    break;
+
+                case "full_screen_browsing_mode":
+                    if (sharedPreferences.getBoolean("full_screen_browsing_mode", false)) {  // Full screen browsing is enabled.
+                        // Set the full screen browsing mode preference icon according to the theme.
+                        if (darkTheme) {
+                            fullScreenBrowsingModePreference.setIcon(R.drawable.full_screen_enabled_dark);
+                        } else {
+                            fullScreenBrowsingModePreference.setIcon(R.drawable.full_screen_enabled_light);
+                        }
 
-                        // Update the `clearEverythingPreference` icon.
-                        if (newClearEverythingBoolean) {
-                            if (MainWebViewActivity.darkTheme) {
-                                clearEverythingPreference.setIcon(R.drawable.clear_everything_enabled_dark);
+                        // Set the hide app bar preference icon.
+                        if (sharedPreferences.getBoolean("hide_app_bar", true)) {  //  Hide app bar is enabled.
+                            // Set the icon according to the theme.
+                            if (darkTheme) {
+                                hideAppBarPreference.setIcon(R.drawable.app_bar_enabled_dark);
                             } else {
-                                clearEverythingPreference.setIcon(R.drawable.clear_everything_enabled_light);
+                                hideAppBarPreference.setIcon(R.drawable.app_bar_enabled_light);
                             }
+                        } else {  // Hide app bar is disabled.
+                            // Set the icon according to the theme.
+                            if (darkTheme) {
+                                hideAppBarPreference.setIcon(R.drawable.app_bar_disabled_dark);
+                            } else {
+                                hideAppBarPreference.setIcon(R.drawable.app_bar_disabled_light);
+                            }
+                        }
+                    } else {  // Full screen browsing is disabled.
+                        // Update the icons according to the theme.
+                        if (darkTheme) {
+                            fullScreenBrowsingModePreference.setIcon(R.drawable.full_screen_disabled_dark);
+                            hideAppBarPreference.setIcon(R.drawable.app_bar_ghosted_dark);
+                        } else {
+                            fullScreenBrowsingModePreference.setIcon(R.drawable.full_screen_disabled_light);
+                            hideAppBarPreference.setIcon(R.drawable.app_bar_ghosted_light);
+                        }
+                    }
+                    break;
+
+                case "hide_app_bar":
+                    // Update the icon.
+                    if (sharedPreferences.getBoolean("hide_app_bar", true)) {  // Hide app bar is enabled.
+                        // Set the icon according to the theme.
+                        if (darkTheme) {
+                            hideAppBarPreference.setIcon(R.drawable.app_bar_enabled_dark);
+                        } else {
+                            hideAppBarPreference.setIcon(R.drawable.app_bar_enabled_light);
+                        }
+                    } else {  // Hide app bar is disabled.
+                        // Set the icon according to the theme.
+                        if (darkTheme) {
+                            hideAppBarPreference.setIcon(R.drawable.app_bar_disabled_dark);
+                        } else {
+                            hideAppBarPreference.setIcon(R.drawable.app_bar_disabled_light);
+                        }
+                    }
+                    break;
+
+                case "clear_everything":
+                    // Store the new `clear_everything` status
+                    boolean newClearEverythingBoolean = sharedPreferences.getBoolean("clear_everything", true);
+
+                    // Update the status of the `Clear and Exit` preferences.
+                    clearCookiesPreference.setEnabled(!newClearEverythingBoolean);
+                    clearDomStoragePreference.setEnabled(!newClearEverythingBoolean);
+                    clearFormDataPreference.setEnabled(!newClearEverythingBoolean);  // This line can be removed once the minimum API >= 26.
+                    clearCachePreference.setEnabled(!newClearEverythingBoolean);
+
+                    // Update the `clearEverythingPreference` icon.
+                    if (newClearEverythingBoolean) {
+                        if (darkTheme) {
+                            clearEverythingPreference.setIcon(R.drawable.clear_everything_enabled_dark);
                         } else {
-                            clearEverythingPreference.setIcon(R.drawable.clear_everything_disabled);
+                            clearEverythingPreference.setIcon(R.drawable.clear_everything_enabled_light);
                         }
+                    } else {
+                        clearEverythingPreference.setIcon(R.drawable.clear_everything_disabled);
+                    }
 
-                        // Update the `clearCookiesPreference` icon.
-                        if (newClearEverythingBoolean || sharedPreferences.getBoolean("clear_cookies", true)) {
-                            if (MainWebViewActivity.darkTheme) {
-                                clearCookiesPreference.setIcon(R.drawable.cookies_cleared_dark);
-                            } else {
-                                clearCookiesPreference.setIcon(R.drawable.cookies_cleared_light);
-                            }
+                    // Update the `clearCookiesPreference` icon.
+                    if (newClearEverythingBoolean || sharedPreferences.getBoolean("clear_cookies", true)) {
+                        if (darkTheme) {
+                            clearCookiesPreference.setIcon(R.drawable.cookies_cleared_dark);
                         } else {
-                            clearCookiesPreference.setIcon(R.drawable.cookies_warning);
+                            clearCookiesPreference.setIcon(R.drawable.cookies_cleared_light);
                         }
+                    } else {
+                        clearCookiesPreference.setIcon(R.drawable.cookies_warning);
+                    }
 
-                        // Update the `clearDomStoragePreference` icon.
-                        if (newClearEverythingBoolean || sharedPreferences.getBoolean("clear_dom_storage", true)) {
-                            if (MainWebViewActivity.darkTheme) {
-                                clearDomStoragePreference.setIcon(R.drawable.dom_storage_cleared_dark);
-                            } else {
-                                clearDomStoragePreference.setIcon(R.drawable.dom_storage_cleared_light);
-                            }
+                    // Update the `clearDomStoragePreference` icon.
+                    if (newClearEverythingBoolean || sharedPreferences.getBoolean("clear_dom_storage", true)) {
+                        if (darkTheme) {
+                            clearDomStoragePreference.setIcon(R.drawable.dom_storage_cleared_dark);
                         } else {
-                            clearDomStoragePreference.setIcon(R.drawable.dom_storage_warning);
+                            clearDomStoragePreference.setIcon(R.drawable.dom_storage_cleared_light);
                         }
+                    } else {
+                        clearDomStoragePreference.setIcon(R.drawable.dom_storage_warning);
+                    }
 
-                        // Update the `clearFormDataPreference` icon.
+                    // Update the clear form data preference icon if the API < 26.
+                    if (Build.VERSION.SDK_INT < 26) {
                         if (newClearEverythingBoolean || sharedPreferences.getBoolean("clear_form_data", true)) {
-                            if (MainWebViewActivity.darkTheme) {
+                            if (darkTheme) {
                                 clearFormDataPreference.setIcon(R.drawable.form_data_cleared_dark);
                             } else {
                                 clearFormDataPreference.setIcon(R.drawable.form_data_cleared_light);
@@ -1085,214 +1418,269 @@ public class SettingsFragment extends PreferenceFragment {
                         } else {
                             clearFormDataPreference.setIcon(R.drawable.form_data_warning);
                         }
+                    }
 
-                        // Update the `clearCachePreference` icon.
-                        if (newClearEverythingBoolean || sharedPreferences.getBoolean("clear_cache", true)) {
-                            if (MainWebViewActivity.darkTheme) {
-                                clearCachePreference.setIcon(R.drawable.cache_cleared_dark);
-                            } else {
-                                clearCachePreference.setIcon(R.drawable.cache_cleared_light);
-                            }
+                    // Update the `clearCachePreference` icon.
+                    if (newClearEverythingBoolean || sharedPreferences.getBoolean("clear_cache", true)) {
+                        if (darkTheme) {
+                            clearCachePreference.setIcon(R.drawable.cache_cleared_dark);
                         } else {
-                            clearCachePreference.setIcon(R.drawable.cache_warning);
+                            clearCachePreference.setIcon(R.drawable.cache_cleared_light);
                         }
-                        break;
+                    } else {
+                        clearCachePreference.setIcon(R.drawable.cache_warning);
+                    }
+                    break;
 
-                    case "clear_cookies":
-                        // Update the icon.
-                        if (sharedPreferences.getBoolean("clear_cookies", true)) {
-                            if (MainWebViewActivity.darkTheme) {
-                                clearCookiesPreference.setIcon(R.drawable.cookies_cleared_dark);
-                            } else {
-                                clearCookiesPreference.setIcon(R.drawable.cookies_cleared_light);
-                            }
+                case "clear_cookies":
+                    // Update the icon.
+                    if (sharedPreferences.getBoolean("clear_cookies", true)) {
+                        if (darkTheme) {
+                            clearCookiesPreference.setIcon(R.drawable.cookies_cleared_dark);
                         } else {
-                            clearCookiesPreference.setIcon(R.drawable.cookies_warning);
+                            clearCookiesPreference.setIcon(R.drawable.cookies_cleared_light);
                         }
-                        break;
+                    } else {
+                        clearCookiesPreference.setIcon(R.drawable.cookies_warning);
+                    }
+                    break;
 
-                    case "clear_dom_storage":
-                        // Update the icon.
-                        if (sharedPreferences.getBoolean("clear_dom_storage", true)) {
-                            if (MainWebViewActivity.darkTheme) {
-                                clearDomStoragePreference.setIcon(R.drawable.dom_storage_cleared_dark);
-                            } else {
-                                clearDomStoragePreference.setIcon(R.drawable.dom_storage_cleared_light);
-                            }
+                case "clear_dom_storage":
+                    // Update the icon.
+                    if (sharedPreferences.getBoolean("clear_dom_storage", true)) {
+                        if (darkTheme) {
+                            clearDomStoragePreference.setIcon(R.drawable.dom_storage_cleared_dark);
                         } else {
-                            clearDomStoragePreference.setIcon(R.drawable.dom_storage_warning);
+                            clearDomStoragePreference.setIcon(R.drawable.dom_storage_cleared_light);
                         }
-                        break;
-
-                    case "clear_form_data":
-                        // Update the icon.
-                        if (sharedPreferences.getBoolean("clear_form_data", true)) {
-                            if (MainWebViewActivity.darkTheme) {
-                                clearFormDataPreference.setIcon(R.drawable.form_data_cleared_dark);
-                            } else {
-                                clearFormDataPreference.setIcon(R.drawable.form_data_cleared_light);
-                            }
+                    } else {
+                        clearDomStoragePreference.setIcon(R.drawable.dom_storage_warning);
+                    }
+                    break;
+
+                // This section can be removed once the minimum API >= 26.
+                case "clear_form_data":
+                    // Update the icon.
+                    if (sharedPreferences.getBoolean("clear_form_data", true)) {
+                        if (darkTheme) {
+                            clearFormDataPreference.setIcon(R.drawable.form_data_cleared_dark);
                         } else {
-                            clearFormDataPreference.setIcon(R.drawable.form_data_warning);
+                            clearFormDataPreference.setIcon(R.drawable.form_data_cleared_light);
                         }
-                        break;
+                    } else {
+                        clearFormDataPreference.setIcon(R.drawable.form_data_warning);
+                    }
+                    break;
 
-                    case "clear_cache":
-                        // Update the icon.
-                        if (sharedPreferences.getBoolean("clear_cache", true)) {
-                            if (MainWebViewActivity.darkTheme) {
-                                clearCachePreference.setIcon(R.drawable.cache_cleared_dark);
-                            } else {
-                                clearCachePreference.setIcon(R.drawable.cache_cleared_light);
-                            }
+                case "clear_cache":
+                    // Update the icon.
+                    if (sharedPreferences.getBoolean("clear_cache", true)) {
+                        if (darkTheme) {
+                            clearCachePreference.setIcon(R.drawable.cache_cleared_dark);
                         } else {
-                            clearCachePreference.setIcon(R.drawable.cache_warning);
+                            clearCachePreference.setIcon(R.drawable.cache_cleared_light);
                         }
-                        break;
-
-                    case "homepage":
-                        // Set the new homepage URL as the summary text for the Homepage preference.  The default is `https://www.duckduckgo.com`.
-                        homepagePreference.setSummary(sharedPreferences.getString("homepage", "https://www.duckduckgo.com"));
-                        break;
+                    } else {
+                        clearCachePreference.setIcon(R.drawable.cache_warning);
+                    }
+                    break;
+
+                case "homepage":
+                    // Set the new homepage URL as the summary text for the Homepage preference.
+                    homepagePreference.setSummary(sharedPreferences.getString("homepage", getString(R.string.homepage_default_value)));
+                    break;
+
+                case "font_size":
+                    // Update the font size summary text.
+                    fontSizePreference.setSummary(sharedPreferences.getString("font_size", getString(R.string.font_size_default_value)) + "%%");
+                    break;
+
+                case "open_intents_in_new_tab":
+                    // Update the icon.
+                    if (sharedPreferences.getBoolean("open_intents_in_new_tab", true)) {
+                        if (darkTheme) {
+                            openIntentsInNewTabPreference.setIcon(R.drawable.tab_enabled_dark);
+                        } else {
+                            openIntentsInNewTabPreference.setIcon(R.drawable.tab_enabled_light);
+                        }
+                    } else {
+                        if (darkTheme) {
+                            openIntentsInNewTabPreference.setIcon(R.drawable.tab_disabled_dark);
+                        } else {
+                            openIntentsInNewTabPreference.setIcon(R.drawable.tab_disabled_light);
+                        }
+                    }
+                    break;
 
-                    case "default_font_size":
-                        // Update the summary text of `default_font_size`.
-                        defaultFontSizePreference.setSummary(sharedPreferences.getString("default_font_size", "100") + "%%");
-                        break;
+                case "swipe_to_refresh":
+                    // Update the icon.
+                    if (sharedPreferences.getBoolean("swipe_to_refresh", true)) {
+                        if (darkTheme) {
+                            swipeToRefreshPreference.setIcon(R.drawable.refresh_enabled_dark);
+                        } else {
+                            swipeToRefreshPreference.setIcon(R.drawable.refresh_enabled_light);
+                        }
+                    } else {
+                        if (darkTheme) {
+                            swipeToRefreshPreference.setIcon(R.drawable.refresh_disabled_dark);
+                        } else {
+                            swipeToRefreshPreference.setIcon(R.drawable.refresh_disabled_light);
+                        }
+                    }
+                    break;
 
-                    case "swipe_to_refresh":
-                        // Update the icon.
-                        if (sharedPreferences.getBoolean("swipe_to_refresh", false)) {
-                            if (MainWebViewActivity.darkTheme) {
-                                swipeToRefreshPreference.setIcon(R.drawable.refresh_enabled_dark);
-                            } else {
-                                swipeToRefreshPreference.setIcon(R.drawable.refresh_enabled_light);
-                            }
+                case "scroll_app_bar":
+                    // Update the icon.
+                    if (sharedPreferences.getBoolean("scroll_app_bar", true)) {
+                        if (darkTheme) {
+                            scrollAppBarPreference.setIcon(R.drawable.app_bar_enabled_dark);
                         } else {
-                            if (MainWebViewActivity.darkTheme) {
-                                swipeToRefreshPreference.setIcon(R.drawable.refresh_disabled_dark);
-                            } else {
-                                swipeToRefreshPreference.setIcon(R.drawable.refresh_disabled_light);
-                            }
+                            scrollAppBarPreference.setIcon(R.drawable.app_bar_enabled_light);
+                        }
+                    } else {
+                        if (darkTheme) {
+                            scrollAppBarPreference.setIcon(R.drawable.app_bar_disabled_dark);
+                        } else {
+                            scrollAppBarPreference.setIcon(R.drawable.app_bar_disabled_light);
                         }
-                        break;
+                    }
+                    break;
 
-                    case "display_additional_app_bar_icons":
-                        // Update the icon.
-                        if (sharedPreferences.getBoolean("display_additional_app_bar_icons", false)) {
-                            if (MainWebViewActivity.darkTheme) {
-                                displayAdditionalAppBarIconsPreference.setIcon(R.drawable.more_enabled_dark);
-                            } else {
-                                displayAdditionalAppBarIconsPreference.setIcon(R.drawable.more_enabled_light);
-                            }
+                case "display_additional_app_bar_icons":
+                    // Update the icon.
+                    if (sharedPreferences.getBoolean("display_additional_app_bar_icons", false)) {
+                        if (darkTheme) {
+                            displayAdditionalAppBarIconsPreference.setIcon(R.drawable.more_enabled_dark);
                         } else {
-                            if (MainWebViewActivity.darkTheme) {
-                                displayAdditionalAppBarIconsPreference.setIcon(R.drawable.more_disabled_dark);
-                            } else {
-                                displayAdditionalAppBarIconsPreference.setIcon(R.drawable.more_disabled_light);
-                            }
+                            displayAdditionalAppBarIconsPreference.setIcon(R.drawable.more_enabled_light);
+                        }
+                    } else {
+                        if (darkTheme) {
+                            displayAdditionalAppBarIconsPreference.setIcon(R.drawable.more_disabled_dark);
+                        } else {
+                            displayAdditionalAppBarIconsPreference.setIcon(R.drawable.more_disabled_light);
                         }
-                        break;
+                    }
+                    break;
 
-                    case "dark_theme":
-                        // Update the icon.
-                        if (sharedPreferences.getBoolean("dark_theme", false)) {
-                            darkThemePreference.setIcon(R.drawable.theme_dark);
+                case "download_with_external_app":
+                    // Update the icon.
+                    if (sharedPreferences.getBoolean("download_with_external_app", false)) {
+                        if (darkTheme) {
+                            downloadWithExternalAppPreference.setIcon(R.drawable.open_with_external_app_enabled_dark);
                         } else {
-                            darkThemePreference.setIcon(R.drawable.theme_light);
+                            downloadWithExternalAppPreference.setIcon(R.drawable.open_with_external_app_enabled_light);
                         }
+                    } else {
+                        if (darkTheme) {
+                            downloadWithExternalAppPreference.setIcon(R.drawable.open_with_external_app_disabled_dark);
+                        } else {
+                            downloadWithExternalAppPreference.setIcon(R.drawable.open_with_external_app_disabled_light);
+                        }
+                    }
+                    break;
 
-                        // Create an `Intent` to restart Privacy Browser.
-                        Intent intent = getActivity().getParentActivityIntent();
+                case "dark_theme":
+                    // Update the icon.
+                    if (sharedPreferences.getBoolean("dark_theme", false)) {
+                        darkThemePreference.setIcon(R.drawable.theme_dark);
+                    } else {
+                        darkThemePreference.setIcon(R.drawable.theme_light);
+                    }
 
-                        // Assert that `intent` is not `null` to remove the lint error below.
-                        assert intent != null;
+                    // Create an intent to restart Privacy Browser.
+                    Intent changeThemeRestartIntent = getActivity().getParentActivityIntent();
 
-                        // `Intent.FLAG_ACTIVITY_CLEAR_TASK` removes all activities from the stack.  It requires `Intent.FLAG_ACTIVITY_NEW_TASK`.
-                        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
+                    // Assert that the intent is not null to remove the lint error below.
+                    assert changeThemeRestartIntent != null;
 
-                        // Make it so.
-                        startActivity(intent);
-                        break;
+                    // `Intent.FLAG_ACTIVITY_CLEAR_TASK` removes all activities from the stack.  It requires `Intent.FLAG_ACTIVITY_NEW_TASK`.
+                    changeThemeRestartIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
 
-                    case "night_mode":
-                        // Set the URL to be reloaded on restart to apply the new night mode setting.
-                        MainWebViewActivity.loadUrlOnRestart = true;
+                    // Create a handler to restart the activity.
+                    Handler changeThemeRestartHandler = new Handler();
 
-                        // Store the current night mode status.
-                        boolean currentNightModeBoolean = sharedPreferences.getBoolean("night_mode", false);
-                        boolean currentJavaScriptBoolean = sharedPreferences.getBoolean("javascript_enabled", false);
+                    // Create a runnable to restart the activity.
+                    Runnable changeThemeRestartRunnable = () -> {
+                        // Restart the activity.
+                        startActivity(changeThemeRestartIntent);
 
-                        // Update the icon.
-                        if (currentNightModeBoolean) {
-                            if (MainWebViewActivity.darkTheme) {
-                                nightModePreference.setIcon(R.drawable.night_mode_enabled_dark);
-                            } else {
-                                nightModePreference.setIcon(R.drawable.night_mode_enabled_light);
-                            }
-                        } else {
-                            if (MainWebViewActivity.darkTheme) {
-                                nightModePreference.setIcon(R.drawable.night_mode_disabled_dark);
-                            } else {
-                                nightModePreference.setIcon(R.drawable.night_mode_disabled_light);
-                            }
-                        }
+                        // Kill this instance of Privacy Browser.  Otherwise, the app exhibits sporadic behavior after the restart.
+                        System.exit(0);
+                    };
+
+                    // Restart the activity after 100 milliseconds, so that the app has enough time to save the change to the preference.
+                    changeThemeRestartHandler.postDelayed(changeThemeRestartRunnable, 100);
+                    break;
 
-                        // Update the status of `javaScriptPreference` and `domStoragePreference`.
-                        javaScriptPreference.setEnabled(!currentNightModeBoolean);
-                        domStoragePreference.setEnabled(currentNightModeBoolean || currentJavaScriptBoolean);
+                case "night_mode":
+                    // Store the current night mode status.
+                    boolean currentNightModeBoolean = sharedPreferences.getBoolean("night_mode", false);
+                    boolean currentJavaScriptBoolean = sharedPreferences.getBoolean("javascript", false);
 
-                        // Update the `javaScriptPreference` icon.
-                        if (currentNightModeBoolean || currentJavaScriptBoolean) {
-                            javaScriptPreference.setIcon(R.drawable.javascript_enabled);
+                    // Update the icon.
+                    if (currentNightModeBoolean) {
+                        if (darkTheme) {
+                            nightModePreference.setIcon(R.drawable.night_mode_enabled_dark);
                         } else {
-                            javaScriptPreference.setIcon(R.drawable.privacy_mode);
+                            nightModePreference.setIcon(R.drawable.night_mode_enabled_light);
                         }
-
-                        // Update the `domStoragePreference` icon.
-                        if (currentNightModeBoolean || currentJavaScriptBoolean) {  // The preference is enabled.
-                            if (sharedPreferences.getBoolean("dom_storage_enabled", false)) {  // DOM storage is enabled.
-                                domStoragePreference.setIcon(R.drawable.dom_storage_enabled);
-                            } else {  // DOM storage is disabled.
-                                if (MainWebViewActivity.darkTheme) {
-                                    domStoragePreference.setIcon(R.drawable.dom_storage_disabled_dark);
-                                } else {
-                                    domStoragePreference.setIcon(R.drawable.dom_storage_disabled_light);
-                                }
-                            }
-                        } else {  // The preference is disabled.  The icon should be ghosted.
-                            if (MainWebViewActivity.darkTheme) {
-                                domStoragePreference.setIcon(R.drawable.dom_storage_ghosted_dark);
-                            } else {
-                                domStoragePreference.setIcon(R.drawable.dom_storage_ghosted_light);
-                            }
+                    } else {
+                        if (darkTheme) {
+                            nightModePreference.setIcon(R.drawable.night_mode_disabled_dark);
+                        } else {
+                            nightModePreference.setIcon(R.drawable.night_mode_disabled_light);
                         }
-                        break;
+                    }
 
-                    case "display_webpage_images":
-                        if (sharedPreferences.getBoolean("display_webpage_images", true)) {
-                            // Update the icon.
-                            if (MainWebViewActivity.darkTheme) {
-                                displayWebpageImagesPreference.setIcon(R.drawable.images_enabled_dark);
-                            } else {
-                                displayWebpageImagesPreference.setIcon(R.drawable.images_enabled_light);
-                            }
+                    // Update the status of `javaScriptPreference` and `domStoragePreference`.
+                    javaScriptPreference.setEnabled(!currentNightModeBoolean);
+                    domStoragePreference.setEnabled(currentNightModeBoolean || currentJavaScriptBoolean);
 
-                            // `mainWebView` does not need to be reloaded because unloaded images will load automatically.
-                            MainWebViewActivity.reloadOnRestart = false;
-                        } else {
-                            // Update the icon.
-                            if (MainWebViewActivity.darkTheme) {
-                                displayWebpageImagesPreference.setIcon(R.drawable.images_disabled_dark);
+                    // Update the `javaScriptPreference` icon.
+                    if (currentNightModeBoolean || currentJavaScriptBoolean) {
+                        javaScriptPreference.setIcon(R.drawable.javascript_enabled);
+                    } else {
+                        javaScriptPreference.setIcon(R.drawable.privacy_mode);
+                    }
+
+                    // Update the DOM storage preference icon.
+                    if (currentNightModeBoolean || currentJavaScriptBoolean) {  // The preference is enabled.
+                        if (sharedPreferences.getBoolean("dom_storage", false)) {  // DOM storage is enabled.
+                            domStoragePreference.setIcon(R.drawable.dom_storage_enabled);
+                        } else {  // DOM storage is disabled.
+                            if (darkTheme) {
+                                domStoragePreference.setIcon(R.drawable.dom_storage_disabled_dark);
                             } else {
-                                displayWebpageImagesPreference.setIcon(R.drawable.images_disabled_light);
+                                domStoragePreference.setIcon(R.drawable.dom_storage_disabled_light);
                             }
+                        }
+                    } else {  // The preference is disabled.  The icon should be ghosted.
+                        if (darkTheme) {
+                            domStoragePreference.setIcon(R.drawable.dom_storage_ghosted_dark);
+                        } else {
+                            domStoragePreference.setIcon(R.drawable.dom_storage_ghosted_light);
+                        }
+                    }
+                    break;
 
-                            // Set `mainWebView` to reload on restart to remove the current images.
-                            MainWebViewActivity.reloadOnRestart = true;
+                case "display_webpage_images":
+                    if (sharedPreferences.getBoolean("display_webpage_images", true)) {
+                        // Update the icon.
+                        if (darkTheme) {
+                            displayWebpageImagesPreference.setIcon(R.drawable.images_enabled_dark);
+                        } else {
+                            displayWebpageImagesPreference.setIcon(R.drawable.images_enabled_light);
                         }
-                        break;
-                }
+                    } else {
+                        // Update the icon.
+                        if (darkTheme) {
+                            displayWebpageImagesPreference.setIcon(R.drawable.images_disabled_dark);
+                        } else {
+                            displayWebpageImagesPreference.setIcon(R.drawable.images_disabled_light);
+                        }
+                    }
+                    break;
             }
         };
 
@@ -1300,8 +1688,7 @@ public class SettingsFragment extends PreferenceFragment {
         savedPreferences.registerOnSharedPreferenceChangeListener(preferencesListener);
     }
 
-    // It is necessary to re-register the listener on every resume or it will randomly stop working because apps can be paused and resumed at any time
-    // even while running in the foreground.
+    // It is necessary to re-register the listener on every resume or it will randomly stop working because apps can be paused and resumed at any time, even while running in the foreground.
     @Override
     public void onPause() {
         super.onPause();