/*
- * Copyright 2016-2022 Soren Stoutner <soren@stoutner.com>.
+ * Copyright 2016-2023 Soren Stoutner <soren@stoutner.com>.
*
* This file is part of Privacy Browser Android <https://www.stoutner.com/privacy-browser-android>.
*
import androidx.preference.PreferenceFragmentCompat
import com.stoutner.privacybrowser.R
-import com.stoutner.privacybrowser.activities.MainWebViewActivity
+import com.stoutner.privacybrowser.activities.SETTINGS_CUSTOM_USER_AGENT
+import com.stoutner.privacybrowser.activities.SETTINGS_WEBVIEW_DEFAULT_USER_AGENT
+import com.stoutner.privacybrowser.activities.UNRECOGNIZED_USER_AGENT
import com.stoutner.privacybrowser.helpers.ProxyHelper
import kotlin.system.exitProcess
private lateinit var formDataPreference: Preference // The form data preference can be removed once the minimum API >= 26.
private lateinit var userAgentPreference: Preference
private lateinit var customUserAgentPreference: Preference
- private lateinit var xRequestedWithHeaderPreference: Preference
private lateinit var incognitoModePreference: Preference
private lateinit var allowScreenshotsPreference: Preference
private lateinit var easyListPreference: Preference
formDataPreference = findPreference(getString(R.string.save_form_data_key))!! // The form data preference can be removed once the minimum API >= 26.
userAgentPreference = findPreference(getString(R.string.user_agent_key))!!
customUserAgentPreference = findPreference(getString(R.string.custom_user_agent_key))!!
- xRequestedWithHeaderPreference = findPreference(getString(R.string.x_requested_with_header_key))!!
incognitoModePreference = findPreference(getString(R.string.incognito_mode_key))!!
allowScreenshotsPreference = findPreference(getString(R.string.allow_screenshots_key))!!
easyListPreference = findPreference(getString(R.string.easylist_key))!!
clearAndExitCategory.removePreference(clearFormDataPreference)
}
+ // Remove the WebView theme preference if the API < 29.
+ if (Build.VERSION.SDK_INT < 29) {
+ // Get a handle for the general category.
+ val generalCategory = findPreference<PreferenceCategory>(getString(R.string.general_category_key))!!
+
+ // Remove the WebView theme preference.
+ generalCategory.removePreference(webViewThemePreference)
+ }
+
// Only enable Fanboy's social blocking list preference if Fanboy's annoyance list is disabled.
fanboySocialBlockingListPreference.isEnabled = !fanboyAnnoyanceListEnabled
when (val userAgentArrayPosition = userAgentNamesArray.getPosition(userAgentName)) {
// 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.
- MainWebViewActivity.UNRECOGNIZED_USER_AGENT -> userAgentPreference.summary = userAgentName
+ UNRECOGNIZED_USER_AGENT -> userAgentPreference.summary = userAgentName
// Get the user agent text from the webview (which changes based on the version of Android and WebView installed).
- MainWebViewActivity.SETTINGS_WEBVIEW_DEFAULT_USER_AGENT -> userAgentPreference.summary = "${translatedUserAgentNamesArray[userAgentArrayPosition]}:\n$defaultUserAgent"
+ SETTINGS_WEBVIEW_DEFAULT_USER_AGENT -> userAgentPreference.summary = "${translatedUserAgentNamesArray[userAgentArrayPosition]}:\n$defaultUserAgent"
// Display the custom user agent.
- MainWebViewActivity.SETTINGS_CUSTOM_USER_AGENT -> userAgentPreference.setSummary(R.string.custom_user_agent)
+ SETTINGS_CUSTOM_USER_AGENT -> userAgentPreference.setSummary(R.string.custom_user_agent)
// Get the user agent summary from the user agent data array.
else -> userAgentPreference.summary = "${translatedUserAgentNamesArray[userAgentArrayPosition]}:\n${userAgentDataArray[userAgentArrayPosition]}"
// Set the current theme as the summary text for the preference.
appThemePreference.summary = appThemeEntriesStringArray[appThemeEntryNumber]
- // Enable the WebView theme preference if the API < 33 or the app theme is not set to light. Google no longer allows light themes to display dark WebViews.
- webViewThemePreference.isEnabled = ((Build.VERSION.SDK_INT < 33) || (appThemeEntryNumber != 1))
+ // Enable the WebView theme preference if the app theme is not set to light. Google does not allow light themes to display dark WebViews.
+ webViewThemePreference.isEnabled = (appThemeEntryNumber != 1)
// Get the WebView theme string arrays.
webViewThemeEntriesStringArray = resources.getStringArray(R.array.webview_theme_entries)
else
customUserAgentPreference.setIcon(R.drawable.custom_user_agent_ghosted)
- // Set the X-Requested With header icon.
- if (sharedPreferences.getBoolean(getString(R.string.x_requested_with_header_key), true))
- xRequestedWithHeaderPreference.setIcon(R.drawable.x_requested_with_header_enabled)
- else
- xRequestedWithHeaderPreference.setIcon(R.drawable.x_requested_with_header_disabled)
-
// Set the incognito mode icon.
if (sharedPreferences.getBoolean(getString(R.string.incognito_mode_key), false))
incognitoModePreference.setIcon(R.drawable.incognito_mode_enabled)
// Populate the user agent summary.
when (newUserAgentArrayPosition) {
- MainWebViewActivity.SETTINGS_WEBVIEW_DEFAULT_USER_AGENT -> {
+ 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.summary = "$translatedNewUserAgentName:\n$defaultUserAgent"
customUserAgentPreference.setIcon(R.drawable.custom_user_agent_ghosted)
}
- MainWebViewActivity.SETTINGS_CUSTOM_USER_AGENT -> {
+ SETTINGS_CUSTOM_USER_AGENT -> {
// Set the summary text.
userAgentPreference.setSummary(R.string.custom_user_agent)
customUserAgentPreference.summary = sharedPreferences.getString(getString(R.string.custom_user_agent_key), getString(R.string.custom_user_agent_default_value))
}
- getString(R.string.x_requested_with_header_key) -> {
- // Update the icon.
- if (sharedPreferences.getBoolean(getString(R.string.x_requested_with_header_key), true))
- xRequestedWithHeaderPreference.setIcon(R.drawable.x_requested_with_header_enabled)
- else
- xRequestedWithHeaderPreference.setIcon(R.drawable.x_requested_with_header_disabled)
-
- // Restart Privacy Browser.
- restartPrivacyBrowser()
- }
-
getString(R.string.incognito_mode_key) -> {
// Update the icon.
if (sharedPreferences.getBoolean(getString(R.string.incognito_mode_key), false))
displayAdditionalAppBarIconsPreference.setIcon(R.drawable.more_enabled)
else
displayAdditionalAppBarIconsPreference.setIcon(R.drawable.more_disabled)
+
+ // Restart Privacy Browser.
+ restartPrivacyBrowser()
}
getString(R.string.app_theme_key) -> {
- // Get the app theme entry number that matches the current app theme. A switch statement cannot be used because the theme entry values string array is not a compile time constant.
+ // Get the app theme entry number that matches the current app theme.
val appThemeEntryNumber: Int = when (sharedPreferences.getString(getString(R.string.app_theme_key), getString(R.string.app_theme_default_value))) {
appThemeEntryValuesStringArray[1] -> 1 // The light theme is selected.
appThemeEntryValuesStringArray[2] -> 2 // The dark theme is selected.
}
}
- // Enable the WebView theme preference if the API < 33 or the app theme is set to light.
- webViewThemePreference.isEnabled = ((Build.VERSION.SDK_INT < 33) || (appThemeEntryNumber != 1))
+ // Enable the WebView theme preference if the app theme is not set to light. Google does not allow light themes to display dark WebViews.
+ webViewThemePreference.isEnabled = (appThemeEntryNumber != 1)
// Get the webView theme entry number that matches the new WebView theme.
val webViewThemeEntryNumber: Int = when (sharedPreferences.getString(getString(R.string.webview_theme_key), getString(R.string.webview_theme_default_value))) {