<p>Почти все сайты с логинами требуют, чтобы для авторизации пользователя были включены cookie.
Именно так они удостоверяются, что это все еще вы, когда переходите со страницы на страницу на сайте, и, на мой взгляд, это единственное законное использование файлов cookie.</p>
- <p>Android's System WebView treats cookies as an app level setting, meaning that cookies are either on or off for all tabs in Privacy Browser.
- The result is that the cookies setting for whatever tab is currently displayed controls the cookies setting for all the background tabs as well.
- If you have a tab in that background that has cookies enabled so that you can be logged into a website, and switch to a tab that doesn't have cookies enabled, it disabled cookies for all the tabs.
- If the background tab makes a request, for example, to see if there is updated information, that request will be sent without cookies, which will cause the website to log you out.
- This is a limitation that will be removed with the release of <a href="https://www.stoutner.com/category/privacy-browser-android-roadmap/">Privacy WebView</a> in the 4.x series.</p>
+ <p>Android System WebView рассматривает cookie как настройку на уровне приложения, что означает, что cookie либо включены, либо выключены для всех вкладок в Privacy Browser.
+ В результате настройка cookie для той вкладки, которая отображается в данный момент, управляет настройками cookies для всех фоновых вкладок.
+ Если у вас есть фоновая вкладка, на которой включены cookie, чтобы вы могли войти на сайт, и вы переключаетесь на вкладку, на которой cookie не включены,
+ это приведет к отключению cookies для всех вкладок.
+ Если фоновая вкладка делает запрос, например, чтобы узнать, есть ли обновленная информация, этот запрос будет отправлен без файлов cookie, что приведет к разлогиниванию.
+ Это ограничение будет устранено с выходом <a href="https://www.stoutner.com/category/privacy-browser-android-roadmap/">Privacy WebView</a> в версии 4.x.</p>
<p>Если cookie включены и при этом JavaScript отключен, то значок конфиденциальности будет желтого цвета <img class="inline" src="../shared_images/warning.svg"> в качестве предупреждения.</p>
Таким образом, элементы управления данными формы больше не отображаются на новых Android-устройствах.</p>
- <h3><svg class="header"><use href="../shared_images/delete_forever.svg#icon"/></svg> Clear and Exit</h3>
+ <h3><svg class="header"><use href="../shared_images/delete_forever.svg#icon"/></svg> Очистить и выйти</h3>
- <p>Clear and Exit runs every time the last tab is closed or Clear and Exit is selected from the navigation menu.
- By default it clears the cookies, DOM storage, form data, the logcat, and the WebView cache. Then it manually deletes the entire <code>app_webview</code> and <code>cache</code> directories.
- The behavior of Clear and Exit can be configured in the settings.</p>
+ <p>Функция Очистить и выйти запускается каждый раз при закрытии последней вкладки или выборе Очистить и выйти из меню навигации.
+ По умолчанию очищаются cookie, DOM-хранилище, данные формы, logcat и кэш WebView. Затем происходит ручное удаление всех каталогов <code>app_webview</code> и <code>cache</code>.
+ Поведение опции Очистить и выйти можно настроить в настройках.</p>
</body>
</html>
\ No newline at end of file
<h3><svg class="header"><use href="../shared_images/link_off.svg#icon"/></svg> Модификация URL</h3>
- <p>Privacy Browser removes tracking IDs and AMP (<a href="https://en.wikipedia.org/wiki/Accelerated_Mobile_Pages">Accelerated Mobile Pages</a>) redirects from URL queries.
- There is a blog post that is updated with the <a href="https://www.stoutner.com/url-modification/">current list</a> of modifications.
- URL modification can be turned off in the settings if it is causing issues.</p>
+ <p>Privacy Browser удаляет идентификаторы отслеживания и перенаправления AMP (<a href="https://en.wikipedia.org/wiki/Accelerated_Mobile_Pages">Accelerated Mobile Pages</a>) из URL.
+ В блоге опубликован обновляемый <a href="https://www.stoutner.com/url-modification/">актуальный список</a> модификаций.
+ Модификация URL может быть отключена в настройках, если она вызывает проблемы.</p>
</body>
</html>
\ No newline at end of file
}
});
- // Set the JavaScript switch status.
- if (javaScriptInt == 1) { // JavaScript is enabled.
- javaScriptSwitch.setChecked(true);
- javaScriptImageView.setImageDrawable(ResourcesCompat.getDrawable(resources, R.drawable.javascript_enabled, null));
- } else { // JavaScript is disabled.
- javaScriptSwitch.setChecked(false);
- javaScriptImageView.setImageDrawable(ResourcesCompat.getDrawable(resources, R.drawable.privacy_mode, null));
- }
-
- // Set the cookies switch status. Once the minimum API >= 21 a selector can be used as the tint mode instead of specifying different icons.
- // Doing this makes no sense until it can also be done with the preferences.
- if (cookiesInt == 1) { // Cookies are enabled.
- // Turn the switch on.
- cookiesSwitch.setChecked(true);
-
- // Set the icon.
- cookiesImageView.setImageDrawable(ResourcesCompat.getDrawable(resources, R.drawable.cookies_enabled, null));
- } else { // Cookies are disabled.
- // Turn the switch off
- cookiesSwitch.setChecked(false);
-
- // Set the icon.
- cookiesImageView.setImageDrawable(ResourcesCompat.getDrawable(resources, R.drawable.cookies_disabled, null));
- }
-
- // Only enable DOM storage if JavaScript is enabled.
- if (javaScriptInt == 1) { // JavaScript is enabled.
- // Enable the DOM storage switch.
- domStorageSwitch.setEnabled(true);
-
- // Set the DOM storage status. Once the minimum API >= 21 a selector can be used as the tint mode instead of specifying different icons.
- // Doing this makes no sense until it can also be done with the preferences.
- if (domStorageInt == 1) { // Both JavaScript and DOM storage are enabled.
- domStorageSwitch.setChecked(true);
- domStorageImageView.setImageDrawable(ResourcesCompat.getDrawable(resources, R.drawable.dom_storage_enabled, null));
- } else { // JavaScript is enabled but DOM storage is disabled.
- // Set the DOM storage switch to off.
- domStorageSwitch.setChecked(false);
-
- // Set the icon.
- domStorageImageView.setImageDrawable(ResourcesCompat.getDrawable(resources, R.drawable.dom_storage_disabled, null));
- }
- } else { // JavaScript is disabled.
- // Disable the DOM storage switch.
- domStorageSwitch.setEnabled(false);
-
- // Set the checked status of DOM storage.
- domStorageSwitch.setChecked(domStorageInt == 1);
-
- // Set the icon.
- domStorageImageView.setImageDrawable(ResourcesCompat.getDrawable(resources, R.drawable.dom_storage_ghosted, null));
- }
-
- // Set the form data visibility. Form data can be removed once the minimum API >= 26.
- if (Build.VERSION.SDK_INT >= 26) { // Form data no longer applies to newer versions of Android.
- // Hide the form data image view and switch.
- formDataImageView.setVisibility(View.GONE);
- formDataSwitch.setVisibility(View.GONE);
- } else { // Form data should be displayed because this is an older version of Android.
- if (formDataInt == 1) { // Form data is on.
- // Turn the form data switch on.
- formDataSwitch.setChecked(true);
-
- // Set the form data icon.
- formDataImageView.setImageDrawable(ResourcesCompat.getDrawable(resources, R.drawable.form_data_enabled, null));
- } else { // Form data is off.
- // Turn the form data switch to off.
- formDataSwitch.setChecked(false);
-
- // Set the icon. Once the minimum API >= 21 a selector can be used as the tint mode instead of specifying different icons.
- // Doing this makes no sense until it can also be done with the preferences.
- formDataImageView.setImageDrawable(ResourcesCompat.getDrawable(resources, R.drawable.form_data_disabled, null));
- }
- }
-
// Set the switch positions.
+ javaScriptSwitch.setChecked(javaScriptInt == 1);
+ cookiesSwitch.setChecked(cookiesInt == 1);
+ domStorageSwitch.setChecked(domStorageInt == 1);
+ formDataSwitch.setChecked(formDataInt == 1); // Form data can be removed once the minimum API >= 26.
easyListSwitch.setChecked(easyListInt == 1);
easyPrivacySwitch.setChecked(easyPrivacyInt == 1);
fanboysAnnoyanceListSwitch.setChecked(fanboysAnnoyanceListInt == 1);
ultraListSwitch.setChecked(ultraListInt == 1);
ultraPrivacySwitch.setChecked(ultraPrivacyInt == 1);
blockAllThirdPartyRequestsSwitch.setChecked(blockAllThirdPartyRequestsInt == 1);
+ pinnedSslCertificateSwitch.setChecked(pinnedSslCertificateInt == 1);
+ pinnedIpAddressesSwitch.setChecked(pinnedIpAddressesInt == 1);
// Set the switch icon colors.
+ cookiesImageView.setSelected(cookiesInt == 1);
+ domStorageImageView.setSelected(domStorageInt == 1);
+ formDataImageView.setSelected(formDataInt == 1); // Form data can be removed once the minimum API >= 26.
easyListImageView.setSelected(easyListInt == 1);
easyPrivacyImageView.setSelected(easyPrivacyInt == 1);
fanboysAnnoyanceListImageView.setSelected(fanboysAnnoyanceListInt == 1);
ultraListImageView.setSelected(ultraListInt == 1);
ultraPrivacyImageView.setSelected(ultraPrivacyInt == 1);
blockAllThirdPartyRequestsImageView.setSelected(blockAllThirdPartyRequestsInt == 1);
+ pinnedSslCertificateImageView.setSelected(pinnedSslCertificateInt == 1);
+ pinnedIpAddressesImageView.setSelected(pinnedIpAddressesInt == 1);
+
+ // Set the JavaScript icon.
+ if (javaScriptInt == 1)
+ javaScriptImageView.setImageDrawable(ResourcesCompat.getDrawable(resources, R.drawable.javascript_enabled, null));
+ else
+ javaScriptImageView.setImageDrawable(ResourcesCompat.getDrawable(resources, R.drawable.privacy_mode, null));
+
+ // Set the DOM storage switch status based on the JavaScript status.
+ domStorageSwitch.setEnabled(javaScriptInt == 1);
+
+ // Set the DOM storage icon ghosted status based on the JavaScript status.
+ domStorageImageView.setEnabled(javaScriptInt == 1);
+
+ // Set the form data visibility. Form data can be removed once the minimum API >= 26.
+ if (Build.VERSION.SDK_INT >= 26) {
+ // Hide the form data image view and switch.
+ formDataImageView.setVisibility(View.GONE);
+ formDataSwitch.setVisibility(View.GONE);
+ }
// Set Fanboy's Social Blocking List switch status based on the Annoyance List status.
fanboysSocialBlockingListSwitch.setEnabled(fanboysAnnoyanceListInt == 0);
displayWebpageImagesSpinner.performClick();
});
- // Set the switch positions.
- pinnedSslCertificateSwitch.setChecked(pinnedSslCertificateInt == 1);
- pinnedIpAddressesSwitch.setChecked(pinnedIpAddressesInt == 1);
-
- // Set the switch icon colors.
- pinnedSslCertificateImageView.setSelected(pinnedSslCertificateInt == 1);
- pinnedIpAddressesImageView.setSelected(pinnedIpAddressesInt == 1);
-
// Store the current date.
Date currentDate = Calendar.getInstance().getTime();
// Set the JavaScript switch listener.
javaScriptSwitch.setOnCheckedChangeListener((CompoundButton buttonView, boolean isChecked) -> {
- if (isChecked) { // JavaScript is enabled.
- // Update the JavaScript icon.
+ // Update the JavaScript icon.
+ if (isChecked)
javaScriptImageView.setImageDrawable(ResourcesCompat.getDrawable(resources, R.drawable.javascript_enabled, null));
-
- // Enable the DOM storage `Switch`.
- domStorageSwitch.setEnabled(true);
-
- // Update the DOM storage icon.
- if (domStorageSwitch.isChecked()) { // DOM storage is enabled.
- domStorageImageView.setImageDrawable(ResourcesCompat.getDrawable(resources, R.drawable.dom_storage_enabled, null));
- } else { // DOM storage is disabled.
- // Set the icon.
- domStorageImageView.setImageDrawable(ResourcesCompat.getDrawable(resources, R.drawable.dom_storage_disabled, null));
- }
- } else { // JavaScript is disabled.
- // Update the JavaScript icon.
+ else
javaScriptImageView.setImageDrawable(ResourcesCompat.getDrawable(resources, R.drawable.privacy_mode, null));
- // Disable the DOM storage switch.
- domStorageSwitch.setEnabled(false);
+ // Set the DOM storage switch status.
+ domStorageSwitch.setEnabled(isChecked);
- // Set the DOM storage icon.
- domStorageImageView.setImageDrawable(ResourcesCompat.getDrawable(resources, R.drawable.dom_storage_ghosted, null));
- }
+ // Set the DOM storage ghosted icon status.
+ domStorageImageView.setEnabled(isChecked);
});
// Set the cookies switch listener.
cookiesSwitch.setOnCheckedChangeListener((CompoundButton buttonView, boolean isChecked) -> {
- // Update the cookies icon.
- if (isChecked) {
- cookiesImageView.setImageDrawable(ResourcesCompat.getDrawable(resources, R.drawable.cookies_enabled, null));
- } else {
- cookiesImageView.setImageDrawable(ResourcesCompat.getDrawable(resources, R.drawable.cookies_disabled, null));
- }
+ // Update the icon color.
+ cookiesImageView.setSelected(isChecked);
});
// Set the DOM Storage switch listener.
domStorageSwitch.setOnCheckedChangeListener((CompoundButton buttonView, boolean isChecked) -> {
- // Update the icon.
- if (isChecked) {
- domStorageImageView.setImageDrawable(ResourcesCompat.getDrawable(resources, R.drawable.dom_storage_enabled, null));
- } else {
- // Set the icon.
- domStorageImageView.setImageDrawable(ResourcesCompat.getDrawable(resources, R.drawable.dom_storage_disabled, null));
- }
+ // Update the icon color.
+ domStorageImageView.setSelected(isChecked);
});
// Set the form data switch listener. It can be removed once the minimum API >= 26.
if (Build.VERSION.SDK_INT < 26) {
formDataSwitch.setOnCheckedChangeListener((CompoundButton buttonView, boolean isChecked) -> {
- // Update the icon.
- if (isChecked) {
- formDataImageView.setImageDrawable(ResourcesCompat.getDrawable(resources, R.drawable.form_data_enabled, null));
- } else {
- // Set the icon.
- formDataImageView.setImageDrawable(ResourcesCompat.getDrawable(resources, R.drawable.form_data_disabled, null));
- }
+ // Update the icon color.
+ formDataImageView.setSelected(isChecked);
});
}
+++ /dev/null
-<?xml version="1.0" encoding="utf-8"?>
-
-<!--
- Copyright © 2017-2018,2020,2022 Soren Stoutner <soren@stoutner.com>.
-
- This file is part of Privacy Browser Android <https://www.stoutner.com/privacy-browser-android>.
-
- Privacy Browser Android is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
-
- Privacy Browser Android is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with Privacy Browser Android. If not, see <http://www.gnu.org/licenses/>. -->
-
-<!-- Set an background color for a button based on the state. -->
-<selector xmlns:android="http://schemas.android.com/apk/res/android" >
- <item android:state_enabled="true" android:color="@color/blue_600" />
- <item android:color="@color/gray_300" />
-</selector>
\ No newline at end of file
+++ /dev/null
-<?xml version="1.0" encoding="utf-8"?>
-
-<!--
- Copyright © 2017-2018,2020,2022 Soren Stoutner <soren@stoutner.com>.
-
- This file is part of Privacy Browser Android <https://www.stoutner.com/privacy-browser-android>.
-
- Privacy Browser Android is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
-
- Privacy Browser Android is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with Privacy Browser Android. If not, see <http://www.gnu.org/licenses/>. -->
-
-<!-- Set a background color for a button based on the state. -->
-<selector xmlns:android="http://schemas.android.com/apk/res/android" >
- <item android:state_enabled="true" android:color="@color/blue_600" />
- <item android:color="@color/gray_750" />
-</selector>
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>
+
+<!--
+ Copyright © 2017-2018,2020,2022 Soren Stoutner <soren@stoutner.com>.
+
+ This file is part of Privacy Browser Android <https://www.stoutner.com/privacy-browser-android>.
+
+ Privacy Browser Android is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ Privacy Browser Android is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Privacy Browser Android. If not, see <http://www.gnu.org/licenses/>. -->
+
+<!-- Set an background color for a button based on the state. -->
+<selector xmlns:android="http://schemas.android.com/apk/res/android" >
+ <item android:state_enabled="true" android:color="@color/blue_button" />
+ <item android:state_enabled="false" android:color="@color/disabled_button" />
+</selector>
\ No newline at end of file
+++ /dev/null
-<?xml version="1.0" encoding="utf-8"?>
-
-<!--
- Copyright © 2017-2018,2020,2022 Soren Stoutner <soren@stoutner.com>.
-
- This file is part of Privacy Browser Android <https://www.stoutner.com/privacy-browser-android>.
-
- Privacy Browser Android is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
-
- Privacy Browser Android is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with Privacy Browser Android. If not, see <http://www.gnu.org/licenses/>. -->
-
-<!-- Set the text color for a button based on the state. -->
-<selector xmlns:android="http://schemas.android.com/apk/res/android" >
- <item android:state_enabled="true" android:color="@color/white" />
- <item android:color="@color/gray_400" />
-</selector>
\ No newline at end of file
+++ /dev/null
-<?xml version="1.0" encoding="utf-8"?>
-
-<!--
- Copyright © 2017-2018,2020,2022 Soren Stoutner <soren@stoutner.com>.
-
- This file is part of Privacy Browser Android <https://www.stoutner.com/privacy-browser-android>.
-
- Privacy Browser Android is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
-
- Privacy Browser Android is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with Privacy Browser Android. If not, see <http://www.gnu.org/licenses/>. -->
-
-<!-- Set the text color for a button based on the state. -->
-<selector xmlns:android="http://schemas.android.com/apk/res/android" >
- <item android:state_enabled="true" android:color="?android:attr/textColorPrimary" />
- <item android:color="@color/gray_500" />
-</selector>
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>
+
+<!--
+ Copyright © 2017-2018,2020,2022 Soren Stoutner <soren@stoutner.com>.
+
+ This file is part of Privacy Browser Android <https://www.stoutner.com/privacy-browser-android>.
+
+ Privacy Browser Android is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ Privacy Browser Android is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Privacy Browser Android. If not, see <http://www.gnu.org/licenses/>. -->
+
+<!-- Set the text color for a button based on the state. -->
+<selector xmlns:android="http://schemas.android.com/apk/res/android" >
+ <item android:state_enabled="true" android:color="@color/button_text" />
+ <item android:state_enabled="false" android:color="@color/disabled_button_text" />
+</selector>
\ No newline at end of file
+++ /dev/null
-<?xml version="1.0" encoding="utf-8"?>
-
-<!--
- Copyright © 2017-2018,2020,2022 Soren Stoutner <soren@stoutner.com>.
-
- This file is part of Privacy Browser Android <https://www.stoutner.com/privacy-browser-android>.
-
- Privacy Browser Android is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
-
- Privacy Browser Android is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with Privacy Browser Android. If not, see <http://www.gnu.org/licenses/>. -->
-
-<!-- Sets the color of non-checked items to be gray. -->
-<selector xmlns:android="http://schemas.android.com/apk/res/android" >
- <item android:state_checked="true" android:color="?android:attr/textColorPrimary" />
- <item android:color="@color/gray_500" />
-</selector>
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>
+
+<!--
+ Copyright © 2017-2018,2020,2022 Soren Stoutner <soren@stoutner.com>.
+
+ This file is part of Privacy Browser Android <https://www.stoutner.com/privacy-browser-android>.
+
+ Privacy Browser Android is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ Privacy Browser Android is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Privacy Browser Android. If not, see <http://www.gnu.org/licenses/>. -->
+
+<!-- Sets the color of non-checked items to be gray. -->
+<selector xmlns:android="http://schemas.android.com/apk/res/android" >
+ <item android:state_checked="true" android:color="?android:attr/textColorPrimary" />
+ <item android:state_checked="false" android:color="@color/gray_500" />
+</selector>
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>
+
+<!--
+ Copyright © 2022 Soren Stoutner <soren@stoutner.com>.
+
+ This file is part of Privacy Browser Android <https://www.stoutner.com/privacy-browser-android>.
+
+ Privacy Browser Android is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ Privacy Browser Android is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Privacy Browser Android. If not, see <http://www.gnu.org/licenses/>. -->
+
+<!-- Set the icon tint color based on the state. -->
+<selector xmlns:android="http://schemas.android.com/apk/res/android" >
+ <item android:state_enabled="false" android:color="@color/ghosted_icon" />
+ <item android:state_selected="true" android:color="@color/yellow_900" />
+ <item android:state_selected="false" android:color="@color/disabled_icon" />
+</selector>
\ No newline at end of file
android:paddingTop="8dp"
android:paddingBottom="8dp"
android:textSize="18sp"
- android:textColor="@color/checked_text_color_selector" />
+ android:textColor="@color/checked_text_selector" />
</com.stoutner.privacybrowser.views.CheckedLinearLayout>
\ No newline at end of file
android:paddingTop="8dp"
android:paddingBottom="8dp"
android:textSize="18sp"
- android:textColor="@color/checked_text_color_selector" />
+ android:textColor="@color/checked_text_selector" />
</com.stoutner.privacybrowser.views.CheckedLinearLayout>
\ No newline at end of file
android:layout_marginTop="1dp"
android:layout_marginEnd="10dp"
android:layout_gravity="center_vertical"
+ android:src="@drawable/cookies_enabled"
+ app:tint="@color/yellow_icon_selector"
tools:ignore="contentDescription" />
<androidx.appcompat.widget.SwitchCompat
android:layout_marginTop="1dp"
android:layout_marginEnd="10dp"
android:layout_gravity="center_vertical"
+ android:src="@drawable/dom_storage_enabled"
+ app:tint="@color/yellow_icon_selector"
tools:ignore="contentDescription" />
<androidx.appcompat.widget.SwitchCompat
android:layout_marginTop="1dp"
android:layout_marginEnd="10dp"
android:layout_gravity="center_vertical"
+ android:src="@drawable/form_data_enabled"
+ app:tint="@color/yellow_icon_selector"
tools:ignore="contentDescription" />
<androidx.appcompat.widget.SwitchCompat
android:text="@string/import_button"
android:textSize="18sp"
android:onClick="importExport"
- app:backgroundTint="?attr/buttonBackgroundColorSelector"
- android:textColor="?attr/buttonTextColorSelector" />
+ app:backgroundTint="@color/button_background_selector"
+ android:textColor="@color/button_text_selector" />
</LinearLayout>
</androidx.cardview.widget.CardView>
</LinearLayout>
android:text="@string/import_button"
android:textSize="18sp"
android:onClick="importExport"
- app:backgroundTint="?attr/buttonBackgroundColorSelector"
- android:textColor="?attr/buttonTextColorSelector" />
+ app:backgroundTint="@color/button_background_selector"
+ android:textColor="@color/button_text_selector" />
</LinearLayout>
</androidx.cardview.widget.CardView>
</LinearLayout>
android:paddingTop="8dp"
android:paddingBottom="8dp"
android:textSize="18sp"
- android:textColor="@color/checked_text_color_selector" />
\ No newline at end of file
+ android:textColor="@color/checked_text_selector" />
\ No newline at end of file
android:paddingTop="8dp"
android:paddingBottom="8dp"
android:textSize="18sp"
- android:textColor="@color/checked_text_color_selector" />
\ No newline at end of file
+ android:textColor="@color/checked_text_selector" />
\ No newline at end of file
<!-- Colors. -->
<item name="android:actionModeBackground">?android:attr/colorBackground</item>
<item name="android:textColorHighlight">@color/violet_700</item>
- <item name="buttonBackgroundColorSelector">@color/button_background_color_selector_night</item>
- <item name="buttonTextColorSelector">@color/button_text_color_selector_night</item>
<item name="colorAccent">@color/violet_500</item>
<item name="redTextColor">@color/red_900</item>
<resources>
<!-- Nicknamed colors. -->
<color name="alt_blue_text">@color/violet_700</color>
+ <color name="blue_button">@color/violet_700</color>
<color name="blue_icon">@color/violet_500</color>
<color name="blue_text">@color/violet_500</color>
<color name="blue_title_text">@color/violet_500</color>
+ <color name="button_text">?android:attr/textColorPrimary</color>
+ <color name="disabled_button">@color/gray_750</color>
+ <color name="disabled_button_text">@color/gray_500</color>
<color name="disabled_icon">@color/gray_500</color>
<color name="ghosted_icon">@color/gray_700</color>
<color name="icon">@color/white</color>
<!-- Colors. -->
<item name="android:actionModeBackground">?android:attr/colorBackground</item>
<item name="android:textColorHighlight">@color/violet_700</item>
- <item name="buttonBackgroundColorSelector">@color/button_background_color_selector_night</item>
- <item name="buttonTextColorSelector">@color/button_text_color_selector_night</item>
<item name="colorAccent">@color/violet_500</item>
<item name="redTextColor">@color/red_900</item>
<string name="block_all_third_party_requests">Блокировать все сторонние запросы</string>
<string name="block_all_third_party_requests_summary">Блокировка всех сторонних запросов повышает конфиденциальность, но ломает многие веб-сайты.</string>
<string name="url_modification">Модификация URL</string>
+ <string name="tracking_queries">Параметры отслеживания</string>
+ <string name="tracking_queries_summary">Удалять известные параметры отслеживания из URL.</string>
+ <string name="amp_redirects">Перенаправления AMP</string>
+ <string name="amp_redirects_summary">Удалять перенаправляющие параметры из URL известных AMP (Accelerated Mobil Pages).</string>
<string name="search">Поиск</string>
<string-array name="search_entries">
<item>Mojeek</item>
<!-- Colors. -->
<item name="android:actionModeBackground">?android:attr/colorBackground</item>
<item name="android:textColorHighlight">@color/blue_200</item>
- <item name="buttonBackgroundColorSelector">@color/button_background_color_selector_day</item>
- <item name="buttonTextColorSelector">@color/button_text_color_selector_day</item>
<item name="colorAccent">@color/blue_700</item>
<item name="redTextColor">@color/red_a700</item>
<!-- Colors. -->
<attr name="aboutBackground" format="color" />
<attr name="activatedListViewItemBackground" format="color" />
- <attr name="buttonBackgroundColorSelector" format="color" />
- <attr name="buttonTextColorSelector" format="color" />
<attr name="redTextColor" format="color" />
<!-- Tint Colors. -->
<resources>
<!-- Nicknamed colors. -->
<color name="alt_blue_text">@color/blue_700</color>
+ <color name="blue_button">@color/blue_600</color>
<color name="blue_icon">@color/blue_800</color>
<color name="blue_text">@color/blue_700</color>
<color name="blue_title_text">@color/blue_900</color>
+ <color name="button_text">@color/white</color>
+ <color name="disabled_button">@color/gray_300</color>
+ <color name="disabled_button_text">@color/gray_400</color>
<color name="disabled_icon">@color/gray_600</color>
<color name="ghosted_icon">@color/gray_425</color>
<color name="icon">@color/gray_925</color>
<!-- Colors. -->
<item name="android:actionModeBackground">?android:attr/colorBackground</item>
<item name="android:textColorHighlight">@color/blue_200</item>
- <item name="buttonBackgroundColorSelector">@color/button_background_color_selector_day</item>
- <item name="buttonTextColorSelector">@color/button_text_color_selector_day</item>
<item name="colorAccent">@color/blue_700</item>
<item name="redTextColor">@color/red_a700</item>