implementation 'androidx.webkit:webkit:1.4.0'
// Include the Kotlin standard libraries. This should be the same version number listed in project build.gradle.
- implementation 'org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.5.21'
+ implementation 'org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.5.31'
// Include the Google material library.
implementation 'com.google.android.material:material:1.4.0'
// Only compile AdMob ads for the free flavor.
- freeImplementation 'com.google.android.gms:play-services-ads:20.2.0'
+ freeImplementation 'com.google.android.gms:play-services-ads:20.4.0'
}
\ No newline at end of file
<h3>Werbeeinblendungen</h3>
<p>Privacy Browser Free blendet einen Werbebanner unten am Bildschirm ein und verwendet hierfür Googles Netzwerk AdMob,
- dessen eigene Datenschutzbestimmungen <a href="https://www.google.com/intl/en/policies/privacy/">hier zu finden sind</a>.
- Die Ausspielung dieser Werbebanner erfolgt dabei <a href="https://developers.google.com/admob/android/eu-consent#update_consent_status">nicht-personalisiert</a>.
+ dessen eigene Datenschutzbestimmungen <a href="https://policies.google.com/privacy">hier zu finden sind</a>.
+ Die Ausspielung dieser Werbebanner erfolgt dabei <a href="https://developers.google.com/ad-manager/mobile-ads-sdk/android/eu-consent#forward-consent">nicht-personalisiert</a>.
AdMob überträgt zudem <em>anonymisierte Zusammenfassungen</em> folgender Informationen an die Entwickler:</p>
<ul>
<li><item>Totale Besuche</item></li>
<h3>Google Play</h3>
- <p>Google Play has its <a href="https://www.google.com/intl/en/policies/privacy/">own privacy policy</a>.
+ <p>Google Play has its <a href="https://policies.google.com/privacy">own privacy policy</a>.
Google provides <em>anonymized summary installation information</em> to developers, including the number of installs organized by the following categories.</p>
<ul>
<li><item>Android version</item> (eg. Android 7.1)</li>
<h3>Google Play Ratings</h3>
- <p>Google Play has its <a href="https://www.google.com/intl/en/policies/privacy/">own privacy policy</a>.
+ <p>Google Play has its <a href="https://policies.google.com/privacy">own privacy policy</a>.
Google provides developers with <em>anonymized summaries</em> of the following information related to user ratings.</p>
<ul>
<li><item>Country</item> (eg. United States)</li>
<h3>Google Play Reviews</h3>
- <p>Google Play has its <a href="https://www.google.com/intl/en/policies/privacy/">own privacy policy</a>.
+ <p>Google Play has its <a href="https://policies.google.com/privacy">own privacy policy</a>.
In addition to the name of the reviewer, the rating, and the text of the review (which are all available publicly), Google provides some or all of the following information to the developer.</p>
<ul>
<li><item>Version code</item> (eg. 7)</li>
<h3>Advertisements</h3>
<p>Privacy Browser Free displays a banner ad across the bottom of the screen using Google's AdMob network,
- which has its <a href="https://www.google.com/intl/en/policies/privacy/">own privacy policy</a>.
- These ads are set to be <a href="https://developers.google.com/admob/android/eu-consent#update_consent_status">non-personalized</a>.
+ which has its <a href="https://policies.google.com/privacy">own privacy policy</a>.
+ These ads are set to be <a href="https://developers.google.com/ad-manager/mobile-ads-sdk/android/eu-consent#forward-consent">non-personalized</a>.
AdMob reports <em>anonymized summaries</em> of the following information to developers.</p>
<ul>
<li><item>Total impressions</item></li>
<!--
Copyright © 2017-2021 Soren Stoutner <soren@stoutner.com>.
- Translation 2017-2019,2021 Jose A. León Becerra. Copyright assigned to Soren Stoutner <soren@stoutner.com>.
+ Translation 2017-2019,2021 Jose A. León. Copyright assigned to Soren Stoutner <soren@stoutner.com>.
This file is part of Privacy Browser <https://www.stoutner.com/privacy-browser>.
<!--
Copyright © 2017-2018,2020 Soren Stoutner <soren@stoutner.com>.
- Translation 2017-2018 Jose A. León Becerra. Copyright assigned to Soren Stoutner <soren@stoutner.com>.
+ Translation 2017-2018 Jose A. León. Copyright assigned to Soren Stoutner <soren@stoutner.com>.
This file is part of Privacy Browser <https://www.stoutner.com/privacy-browser>.
<h3>Google Play</h3>
- <p>Google Play tiene su <a href="https://www.google.com/intl/en/policies/privacy/">propia política de privacidad</a>.
+ <p>Google Play tiene su <a href="https://policies.google.com/privacy">propia política de privacidad</a>.
Google proporciona <em>información resumida y anónima de instalación</em> a los desarrolladores, incluyendo el número de instalaciones, organizadas por las siguientes categorías.</p>
<ul>
<li><item>Versión de Android</item> (p.ej. Android 7.1)</li>
<h3>Calificaciones de Google Play</h3>
- <p>Google Play tiene su <a href="https://www.google.com/intl/en/policies/privacy/">propia política de privacidad</a>.
+ <p>Google Play tiene su <a href="https://policies.google.com/privacy">propia política de privacidad</a>.
Google proporciona a los desarrolladores <em>resúmenes anónimos</em> de la siguiente información relativa a las valoraciones de los usuarios.</p>
<ul>
<li><item>País</item> (p.ej. Estados Unidos)</li>
<h3>Comentarios de Google Play</h3>
- <p>Google Play tiene su <a href="https://www.google.com/intl/en/policies/privacy/">propia política de privacidad</a>.
+ <p>Google Play tiene su <a href="https://policies.google.com/privacy">propia política de privacidad</a>.
Además del nombre del comentador, la calificación y el texto del comentario (las cuales están disponibles públicamente),
Google proporciona alguna o toda la siguiente información al desarrollador.</p>
<ul>
<h3>Anuncios</h3>
<p>Navegador Privado Gratuito muestra un banner publicitario en la parte inferior de la pantalla mediante la red AdMob de Google,
- que tiene su <a href="https://www.google.com/intl/en/policies/privacy/">propia política de privacidad</a>.
- Estos anuncios están configurados para ser <a href="https://developers.google.com/admob/android/eu-consent#update_consent_status">no personalizados</a>.
+ que tiene su <a href="https://policies.google.com/privacy">propia política de privacidad</a>.
+ Estos anuncios están configurados para ser <a href="https://developers.google.com/ad-manager/mobile-ads-sdk/android/eu-consent#forward-consent">no personalizados</a>.
AdMob reporta <em>resúmenes anónimos</em> de la siguiente información a los desarrolladores.</p>
<ul>
<li><item>Impresiones totales</item></li>
<!--
Copyright © 2016-2021 Soren Stoutner <soren@stoutner.com>.
- Translation 2019,2021 Kévin LE FLOHIC <kevinliste@framalistes.org>. Copyright assigned to Soren Stoutner <soren@stoutner.com>.
+ Translation 2019,2021 Kévin L. <kevinliste@framalistes.org>. Copyright assigned to Soren Stoutner <soren@stoutner.com>.
This file is part of Privacy Browser <https://www.stoutner.com/privacy-browser>.
<!--
Copyright © 2016-2018,2020 Soren Stoutner <soren@stoutner.com>.
- Translation 2019 Kévin LE FLOHIC <kevinliste@framalistes.org>. Copyright assigned to Soren Stoutner <soren@stoutner.com>.
+ Translation 2019 Kévin L. <kevinliste@framalistes.org>. Copyright assigned to Soren Stoutner <soren@stoutner.com>.
This file is part of Privacy Browser <https://www.stoutner.com/privacy-browser>.
<h3>Google Play</h3>
- <p>Google Play a sa <a href="https://www.google.com/intl/en/policies/privacy/"> propre règle de confidentialité </a>.
+ <p>Google Play a sa <a href="https://policies.google.com/privacy"> propre règle de confidentialité </a>.
Google fournit aux développeurs des <em>informations d'installation récapitulatives et anonymisées</em>, notamment le nombre d'installations organisées selon les catégories suivantes.</p>
<ul>
<li><item>Version d'Android</item> (ex. Android 7.1)</li>
<h3>Notes Google Play</h3>
- <p>Google Play a sa <a href="https://www.google.com/intl/en/policies/privacy/">propre règle de confidentialité </a>.
+ <p>Google Play a sa <a href="https://policies.google.com/privacy">propre règle de confidentialité </a>.
Google fournit aux développeurs des <em>résumés anonymisés</em> des informations suivantes relatives aux évaluations des utilisateurs.</p>
<ul>
<li><item>Pays</item> (ex. France)</li>
<h3>Avis Google Play</h3>
- <p>Google Play a sa <a href="https://www.google.com/intl/en/policies/privacy/">propre règle de confidentialité</a>.
+ <p>Google Play a sa <a href="https://policies.google.com/privacy">propre règle de confidentialité</a>.
Outre le nom du réviseur, l'évaluation et le texte de la révision (tous disponibles publiquement), Google fournit au développeur tout ou partie des informations suivantes.</p>
<ul>
<li><item>Code de Version</item> (ex. 7)</li>
<h3>Annonces</h3>
<p>Privacy Browser Free affiche une bannière publicitaire en bas de l'écran à l'aide du réseau AdMob de Google,
- qui a sa <a href="https://www.google.com/intl/en/policies/privacy/">propre politique de confidentialité</a>.
- Ces annonces sont définies pour être <a href="https://developers.google.com/admob/android/eu-consent#update_consent_status">non-personalisées</a>.
+ qui a sa <a href="https://policies.google.com/privacy">propre politique de confidentialité</a>.
+ Ces annonces sont définies pour être <a href="https://developers.google.com/ad-manager/mobile-ads-sdk/android/eu-consent#forward-consent">non-personalisées</a>.
AdMob transmet aux développeurs des <em>résumés anonymisés</em> des informations suivantes.</p>
<ul>
<li><item>Total d'affichages</item></li>
<h3>Google Play</h3>
- <p>Google Play ha una <a href="https://www.google.com/intl/en/policies/privacy/">propria privacy policy</a>.
+ <p>Google Play ha una <a href="https://policies.google.com/privacy">propria privacy policy</a>.
Google fornisce agli sviluppatori <em>informazioni anonime sulle installazioni</em>, incluso il numero di installazioni, secondo le seguenti categorie.</p>
<ul>
<li><item>Versione Android</item> (es. Android 7.1)</li>
<h3>Ratings di Google Play</h3>
- <p>Google Play ha una <a href="https://www.google.com/intl/en/policies/privacy/">propria privacy policy</a>.
+ <p>Google Play ha una <a href="https://policies.google.com/privacy">propria privacy policy</a>.
Google fornisce agli sviluppatori <em>sintesi anonime</em> delle seguenti informazioni collegate ai ratings degli utenti.</p>
<ul>
<li><item>Nazione</item> (es. United States)</li>
<h3>Recensioni di Google Play</h3>
- <p>Google Play ha una <a href="https://www.google.com/intl/en/policies/privacy/">propria privacy policy</a>.
+ <p>Google Play ha una <a href="https://policies.google.com/privacy">propria privacy policy</a>.
Oltre al nome del recensore, al rating, e al testo della recensione (i quali sono tutti pubblicamente disponibili), Google fornisce alcune o tutte le seguenti informazioni allo sviluppatore.</p>
<ul>
<li><item>Codice Versione</item> (es. 7)</li>
<h3>Annunci</h3>
<p>Privacy Browser Free mostra un banner pubblicitario nella parte inferiore dello schermo utilizzando la Google's AdMob network,
- che ha una propria <a href="https://www.google.com/intl/en/policies/privacy/">privacy policy</a>.
- Questi annunci sono impostati in modo da essere <a href="https://developers.google.com/admob/android/eu-consent#update_consent_status">non-personalizzati</a>.
+ che ha una propria <a href="https://policies.google.com/privacy">privacy policy</a>.
+ Questi annunci sono impostati in modo da essere <a href="https://developers.google.com/ad-manager/mobile-ads-sdk/android/eu-consent#forward-consent">non-personalizzati</a>.
AdMob fornisce agli sviluppatori <em>sintesi anonime</em> delle seguenti informazioni.</p>
<ul>
<li><item>Numero totale di visualizzazioni</item></li>
<h3>Google Play</h3>
- <p>Google Play has its <a href="https://www.google.com/intl/en/policies/privacy/">own privacy policy</a>.
+ <p>Google Play has its <a href="https://policies.google.com/privacy">own privacy policy</a>.
Google provides <em>anonymized summary installation information</em> to developers, including the number of installs organized by the following categories.</p>
<ul>
<li><item>Android version</item> (eg. Android 7.1)</li>
<h3>Google Play Ratings</h3>
- <p>Google Play has its <a href="https://www.google.com/intl/en/policies/privacy/">own privacy policy</a>.
+ <p>Google Play has its <a href="https://policies.google.com/privacy">own privacy policy</a>.
Google provides developers with <em>anonymized summaries</em> of the following information related to user ratings.</p>
<ul>
<li><item>Country</item> (eg. United States)</li>
<h3>Google Play Reviews</h3>
- <p>Google Play has its <a href="https://www.google.com/intl/en/policies/privacy/">own privacy policy</a>.
+ <p>Google Play has its <a href="https://policies.google.com/privacy">own privacy policy</a>.
In addition to the name of the reviewer, the rating, and the text of the review (which are all available publicly), Google provides some or all of the following information to the developer.</p>
<ul>
<li><item>Version code</item> (eg. 7)</li>
<h3>Advertisements</h3>
<p>Privacy Browser Free displays a banner ad across the bottom of the screen using Google's AdMob network,
- which has its <a href="https://www.google.com/intl/en/policies/privacy/">own privacy policy</a>.
- These ads are set to be <a href="https://developers.google.com/admob/android/eu-consent#update_consent_status">non-personalized</a>.
+ which has its <a href="https://policies.google.com/privacy">own privacy policy</a>.
+ These ads are set to be <a href="https://developers.google.com/ad-manager/mobile-ads-sdk/android/eu-consent#forward-consent">non-personalized</a>.
AdMob reports <em>anonymized summaries</em> of the following information to developers.</p>
<ul>
<li><item>Total impressions</item></li>
<h3>Google Play</h3>
- <p>Google Play имеет <a href="https://www.google.com/intl/en/policies/privacy/">собственную политику конфиденциальности</a>.
+ <p>Google Play имеет <a href="https://policies.google.com/privacy">собственную политику конфиденциальности</a>.
Google предоставляет разработчикам <em>сводную анонимизированную информацию об установке</em>, включающую их количество, организованную по следующим категориям.</p>
<ul>
<li><item>Версия Android</item> (напр. Android 7.1)</li>
<h3>Рейтинги Google Play</h3>
- <p>Google Play имеет <a href="https://www.google.com/intl/en/policies/privacy/">собственную политику конфиденциальности</a>.
+ <p>Google Play имеет <a href="https://policies.google.com/privacy">собственную политику конфиденциальности</a>.
Google предоставляет разработчикам <em>анонимизированные сводки</em> следующей информации, связанной с пользовательскими рейтингами.</p>
<ul>
<li><item>Страна</item> (напр. Russian Federation)</li>
<h3>Отзывы Google Play</h3>
- <p>Google Play имеет <a href="https://www.google.com/intl/en/policies/privacy/">собственную политику конфиденциальности</a>.
+ <p>Google Play имеет <a href="https://policies.google.com/privacy">собственную политику конфиденциальности</a>.
Помимо имени автора отзыва, оценки и текста отзыва (все они доступны публично), Google предоставляет разработчику некоторую или всю следующую информацию.</p>
<ul>
<li><item>Код версии</item> (напр. 7)</li>
<h3>Реклама</h3>
<p>Privacy Browser Free отображает рекламный баннер в нижней части экрана с помощью сети Google AdMob,
- которая имеет <a href="https://www.google.com/intl/en/policies/privacy/">собственную политику конфиденциальности</a>.
- Эта реклама <a href="https://developers.google.com/admob/android/eu-consent#update_consent_status">не персонализируется</a>.
+ которая имеет <a href="https://policies.google.com/privacy">собственную политику конфиденциальности</a>.
+ Эта реклама <a href="https://developers.google.com/ad-manager/mobile-ads-sdk/android/eu-consent#forward-consent">не персонализируется</a>.
AdMob отправляет <em>анонимные отчеты</em> разработчикам, содержащие следующую информацию.</p>
<ul>
<li><item>Всего показов</item></li>
<h3>Google Play</h3>
- <p>Google Play <a href="https://www.google.com/intl/en/policies/privacy/">kendisine özgü gizlilik politikasına sahiptir</a>.
+ <p>Google Play <a href="https://policies.google.com/privacy">kendisine özgü gizlilik politikasına sahiptir</a>.
Google, aşağıdaki kategorilerce düzenlenen, indirme sayıları da dahil, <em>anonimleştirilmiş özet kurulum bilgilerini</em> geliştiricilere verir.</p>
<ul>
<li><item>Android versiyonu</item> (örn. Android 7.1)</li>
<h3>Google Play Derecelendirmeleri</h3>
- <p>Google Play <a href="https://www.google.com/intl/en/policies/privacy/">kendisine özgü gizlilik politikasına sahiptir</a>.
+ <p>Google Play <a href="https://policies.google.com/privacy">kendisine özgü gizlilik politikasına sahiptir</a>.
Google, kullanıcı değerlendirmeleriyle ilişkili aşağıdaki bilgilerin <em>anonimleştirilmiş özetlerini</em> geliştiricilere verir.</p>
<ul>
<li><item>Ülke</item> (örn. Amerika Birleşik Devletleri)</li>
<h3>Google Play Kritikleri</h3>
- <p>Google Play <a href="https://www.google.com/intl/en/policies/privacy/">kendisine özgü gizlilik politikasına sahiptir</a>.
+ <p>Google Play <a href="https://policies.google.com/privacy">kendisine özgü gizlilik politikasına sahiptir</a>.
Google, inceleme yapan kişinin ismine, değerlendirmeye ve inceleme metninine (tümü halka açıktır) ek olarak, aşağıdaki bilgilerin bir kısmını ya da tamamını geliştiricilere verir.</p>
<ul>
<li><item>Versiyon kodu</item> (örn. 7)</li>
<h3>Reklamlar</h3>
- <p>Privacy Browser Ücretsiz, Google'ın, <a href="https://www.google.com/intl/en/policies/privacy/">kendisine özgü gizlilik politikası olan</a>
+ <p>Privacy Browser Ücretsiz, Google'ın, <a href="https://policies.google.com/privacy">kendisine özgü gizlilik politikası olan</a>
AdMob ağını kullanarak ekranın alt kısmında bir banner reklam gösterir.
- Bu reklamlar <a href="https://developers.google.com/admob/android/eu-consent#update_consent_status">kişiselleştirilmemiş</a> olarak ayarlanmıştır.
+ Bu reklamlar <a href="https://developers.google.com/ad-manager/mobile-ads-sdk/android/eu-consent#forward-consent">kişiselleştirilmemiş</a> olarak ayarlanmıştır.
AdMob, geliştiricilere aşağıdaki bilgilerin <em>anonimleştirilmiş özetlerini</em> rapor eder.</p>
<ul>
<li><item>Toplam gösterimler</item></li>
// Create an ad settings bundle.
val adSettingsBundle = Bundle()
- // Only request non-personalized ads. <https://developers.google.com/ad-manager/mobile-ads-sdk/android/eu-consent#forward_consent_to_the_google_mobile_ads_sdk>
+ // Only request non-personalized ads. <https://developers.google.com/ad-manager/mobile-ads-sdk/android/eu-consent#forward-consent>
adSettingsBundle.putString("npa", "1")
// Build the ad request.
<!--
Copyright © 2015-2019 Soren Stoutner <soren@stoutner.com>.
- Translation 2017-2019 Jose A. León Becerra <emails@joseleon.me>. Copyright assigned to Soren Stoutner <soren@stoutner.com>.
+ Translation 2017-2019 Jose A. León. Copyright assigned to Soren Stoutner <soren@stoutner.com>.
This file is part of Privacy Browser <https://www.stoutner.com/privacy-browser>.
<!--
Copyright © 2015-2019 Soren Stoutner <soren@stoutner.com>.
- Translation 2019 Kévin LE FLOHIC <kevinliste@framalistes.org>. Copyright assigned to Soren Stoutner <soren@stoutner.com>.
+ Translation 2019 Kévin L. <kevinliste@framalistes.org>. Copyright assigned to Soren Stoutner <soren@stoutner.com>.
This file is part of Privacy Browser <https://www.stoutner.com/privacy-browser>.
You should have received a copy of the GNU General Public License
along with Privacy Browser. If not, see <http://www.gnu.org/licenses/>. -->
-<!-- Install location auto allows users to move Privacy Browser to an SD card if desired. -->
+<!-- Install location `auto` allows users to move Privacy Browser to an SD card if desired. -->
<manifest
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:resource="@xml/file_provider_paths" />
</provider>
- <!-- The label uses the short name so that it isn't truncated under the icon in the launcher on most phones.
+ <!-- MainWebViewActivity. The label uses the short name so that it isn't truncated under the icon in the launcher on most phones.
The theme has to be defined here or an ugly title bar is displayed when the app launches.
`android:configChanges="orientation|screenSize"` makes the activity not restart when the orientation changes, which preserves scroll location in the WebView.
`android:configChanges="screenLayout"` makes the activity not restart when entering or exiting split screen mode.
android:launchMode="singleTask"
android:screenOrientation="fullUser"
android:persistableMode="persistNever"
+ android:exported="true"
tools:ignore="UnusedAttribute" >
<intent-filter>
</activity>
- <!-- `android:configChanges="orientation|screenSize"` makes the activity not restart when the orientation changes, which preserves scroll location in the WebView.
+ <!-- BookmarksActivity. `android:configChanges="orientation|screenSize"` makes the activity not restart when the orientation changes, which preserves scroll location in the WebView.
`android:configChanges="screenLayout"` makes the activity not restart when entering or exiting split screen mode.
`android:configChanges="keyboard|keyboardHidden"` makes the activity not restart when a bluetooth keyboard is activated/goes to sleep.
`android:persistableMode="persistNever"` removes Privacy Browser from the recent apps list on a device reboot.
android:persistableMode="persistNever"
tools:ignore="UnusedAttribute" />
- <!-- `android:configChanges="orientation|screenSize"` makes the activity not restart when the orientation changes, which preserves scroll location in the WebView.
+ <!-- BookmarksDatabaseViewActivity. `android:configChanges="orientation|screenSize"` makes the activity not restart when the orientation changes, which preserves scroll location in the WebView.
`android:configChanges="screenLayout"` makes the activity not restart when entering or exiting split screen mode.
`android:configChanges="keyboard|keyboardHidden"` makes the activity not restart when a bluetooth keyboard is activated/goes to sleep.
`android:persistableMode="persistNever"` removes Privacy Browser from the recent apps list on a device reboot.
android:persistableMode="persistNever"
tools:ignore="UnusedAttribute" />
- <!-- `android:configChanges="orientation|screenSize"` makes the activity not restart when the orientation changes, which preserves scroll location in the WebView.
+ <!-- RequestsActivity. `android:configChanges="orientation|screenSize"` makes the activity not restart when the orientation changes, which preserves scroll location in the WebView.
`android:configChanges="screenLayout"` makes the activity not restart when entering or exiting split screen mode.
`android:configChanges="keyboard|keyboardHidden"` makes the activity not restart when a bluetooth keyboard is activated/goes to sleep.
`android:persistableMode="persistNever"` removes Privacy Browser from the recent apps list on a device reboot.
android:persistableMode="persistNever"
tools:ignore="UnusedAttribute" />
- <!-- `android:configChanges="screenLayout"` makes the activity not restart when entering or exiting split screen mode.
+ <!-- DomainsActivity. `android:configChanges="screenLayout"` makes the activity not restart when entering or exiting split screen mode.
`android:configChanges="keyboard|keyboardHidden"` makes the activity not reload when a bluetooth keyboard is activated/goes to sleep.
`android:windowSoftInputMode="stateAlwaysHidden"` keeps the keyboard from displaying when the screen is rotated and after the `AddDomainDialog` is dismissed.
`android:persistableMode="persistNever"` removes Privacy Browser from the recent apps list on a device reboot.
android:persistableMode="persistNever"
tools:ignore="UnusedAttribute" />
- <!-- `android:configChanges="orientation|screenSize"` makes the activity not restart when the orientation changes, which preserves scroll location in the WebView.
+ <!-- SettingsActivity. `android:configChanges="orientation|screenSize"` makes the activity not restart when the orientation changes, which preserves scroll location in the WebView.
`android:configChanges="screenLayout"` makes the activity not restart when entering or exiting split screen mode.
`android:configChanges="keyboard|keyboardHidden"` makes the activity not restart when a bluetooth keyboard is activated/goes to sleep.
`android:persistableMode="persistNever"` removes Privacy Browser from the recent apps list on a device reboot.
android:persistableMode="persistNever"
tools:ignore="UnusedAttribute" />
- <!-- `android:configChanges="orientation|screenSize"` makes the activity not restart when the orientation changes, which preserves scroll location in the WebView.
+ <!-- ImportExportActivity. `android:configChanges="orientation|screenSize"` makes the activity not restart when the orientation changes, which preserves scroll location in the WebView.
`android:configChanges="screenLayout"` makes the activity not restart when entering or exiting split screen mode.
`android:configChanges="keyboard|keyboardHidden"` makes the activity not restart when a bluetooth keyboard is activated/goes to sleep.
`android:persistableMode="persistNever"` removes Privacy Browser from the recent apps list on a device reboot.
android:persistableMode="persistNever"
tools:ignore="UnusedAttribute" />
- <!-- `android:configChanges="orientation|screenSize"` makes the activity not restart when the orientation changes, which preserves scroll location in the WebView.
+ <!-- LogcatActivity. `android:configChanges="orientation|screenSize"` makes the activity not restart when the orientation changes, which preserves scroll location in the WebView.
`android:configChanges="screenLayout"` makes the activity not restart when entering or exiting split screen mode.
`android:configChanges="keyboard|keyboardHidden"` makes the activity not restart when a bluetooth keyboard is activated/goes to sleep.
`android:persistableMode="persistNever"` removes Privacy Browser from the recent apps list on a device reboot.
android:persistableMode="persistNever"
tools:ignore="UnusedAttribute" />
- <!-- `android:configChanges="orientation|screenSize"` makes the activity not restart when the orientation changes, which preserves scroll location in the WebView.
+ <!-- GuideActivity. `android:configChanges="orientation|screenSize"` makes the activity not restart when the orientation changes, which preserves scroll location in the WebView.
`android:configChanges="screenLayout"` makes the activity not restart when entering or exiting split screen mode.
`android:configChanges="keyboard|keyboardHidden"` makes the activity not restart when a bluetooth keyboard is activated/goes to sleep.
`android:persistableMode="persistNever"` removes Privacy Browser from the recent apps list on a device reboot.
android:persistableMode="persistNever"
tools:ignore="UnusedAttribute" />
- <!-- `android:configChanges="orientation|screenSize"` makes the activity not restart when the orientation changes, which preserves scroll location in the WebView.
+ <!-- AboutActivity. `android:configChanges="orientation|screenSize"` makes the activity not restart when the orientation changes, which preserves scroll location in the WebView.
`android:configChanges="screenLayout"` makes the activity not restart when entering or exiting split screen mode.
`android:configChanges="keyboard|keyboardHidden"` makes the activity not restart when a bluetooth keyboard is activated/goes to sleep.
`android:persistableMode="persistNever"` removes Privacy Browser from the recent apps list on a device reboot.
android:persistableMode="persistNever"
tools:ignore="UnusedAttribute" />
- <!-- `android:configChanges="orientation|screenSize"` makes the activity not restart when the orientation changes, which preserves scroll location in the WebView.
+ <!-- ViewSourceActivity. `android:configChanges="orientation|screenSize"` makes the activity not restart when the orientation changes, which preserves scroll location in the WebView.
`android:configChanges="screenLayout"` makes the activity not restart when entering or exiting split screen mode.
`android:configChanges="keyboard|keyboardHidden"` makes the activity not restart when a bluetooth keyboard is activated/goes to sleep.
`android:persistableMode="persistNever"` removes Privacy Browser from the recent apps list on a device reboot.
android:persistableMode="persistNever"
tools:ignore="UnusedAttribute" />
</application>
-</manifest>
\ No newline at end of file
+</manifest>
<h3>Lizenz:</h3>
<p>Privacy Browser ist veröffentlicht unter der <a href="https://www.gnu.org/licenses/gpl-3.0.html">GPLv3+ Lizenz</a>. The full text of the license is below.
- The source code is available from <a href="https://git.stoutner.com/?p=PrivacyBrowser.git;a=summary">git.stoutner.com</a>.</p>
+ The source code is available from <a href="https://gitweb.stoutner.com/?p=PrivacyBrowser.git;a=summary">gitweb.stoutner.com</a>.</p>
<h3>Blocklists:</h3>
<p><a href="https://easylist.to/easylist/easylist.txt">EasyList</a> and <a href="https://easylist.to/easylist/easyprivacy.txt">EasyPrivacy</a>
<h4><a href="https://www.stoutner.com/category/privacy-browser/"><svg class="links"><use href="../shared_images/chrome_reader_mode.svg#icon"/></svg></a>
<a href="https://www.stoutner.com/category/privacy-browser/">Neuigkeiten</a></h4>
- <h4><a href="https://www.stoutner.com/category/roadmap/"><svg class="links"><use href="../shared_images/map.svg#icon"/></svg></a>
- <a href="https://www.stoutner.com/category/roadmap/">Roadmap</a></h4>
+ <h4><a href="https://www.stoutner.com/category/privacy-browser-roadmap/"><svg class="links"><use href="../shared_images/map.svg#icon"/></svg></a>
+ <a href="https://www.stoutner.com/category/privacy-browser-roadmap/">Roadmap</a></h4>
<h4><a href="https://fosstodon.org/@privacybrowser"><svg class="links"><use href="../shared_images/mastodon.svg#icon"/></svg></a>
<a href="https://fosstodon.org/@privacybrowser">Fosstodon</a></h4>
<h3>License</h3>
<p>Privacy Browser is released under the <a href="https://www.gnu.org/licenses/gpl-3.0.html">GPLv3+ license</a>. The full text of the license is below.
- The source code is available from <a href="https://git.stoutner.com/?p=PrivacyBrowser.git;a=summary">git.stoutner.com</a>.</p>
+ The source code is available from <a href="https://gitweb.stoutner.com/?p=PrivacyBrowser.git;a=summary">gitweb.stoutner.com</a>.</p>
<h3>Blocklists</h3>
<p><a href="https://easylist.to/easylist/easylist.txt">EasyList</a> and <a href="https://easylist.to/easylist/easyprivacy.txt">EasyPrivacy</a>
<h4><a href="https://www.stoutner.com/category/privacy-browser/"><svg class="links"><use href="../shared_images/chrome_reader_mode.svg#icon"/></svg></a>
<a href="https://www.stoutner.com/category/privacy-browser/">News</a></h4>
- <h4><a href="https://www.stoutner.com/category/roadmap/"><svg class="links"><use href="../shared_images/map.svg#icon"/></svg></a>
- <a href="https://www.stoutner.com/category/roadmap/">Roadmap</a></h4>
+ <h4><a href="https://www.stoutner.com/category/privacy-browser-roadmap/"><svg class="links"><use href="../shared_images/map.svg#icon"/></svg></a>
+ <a href="https://www.stoutner.com/category/privacy-browser-roadmap/">Roadmap</a></h4>
<h4><a href="https://fosstodon.org/@privacybrowser"><svg class="links"><use href="../shared_images/mastodon.svg#icon"/></svg></a>
<a href="https://fosstodon.org/@privacybrowser">Fosstodon</a></h4>
<h3>Google Play</h3>
- <p>Google Play has its <a href="https://www.google.com/intl/en/policies/privacy/">own privacy policy</a>.
+ <p>Google Play has its <a href="https://policies.google.com/privacy">own privacy policy</a>.
Google provides <em>anonymized summary installation information</em> to developers, including the number of installs organized by the following categories.</p>
<ul>
<li><item>Android version</item> (eg. Android 7.1)</li>
<h3>Google Play Ratings</h3>
- <p>Google Play has its <a href="https://www.google.com/intl/en/policies/privacy/">own privacy policy</a>.
+ <p>Google Play has its <a href="https://policies.google.com/privacy">own privacy policy</a>.
Google provides developers with <em>anonymized summaries</em> of the following information related to user ratings.</p>
<ul>
<li><item>Country</item> (eg. United States)</li>
<h3>Google Play Reviews</h3>
- <p>Google Play has its <a href="https://www.google.com/intl/en/policies/privacy/">own privacy policy</a>.
+ <p>Google Play has its <a href="https://policies.google.com/privacy">own privacy policy</a>.
In addition to the name of the reviewer, the rating, and the text of the review (which are all available publicly), Google provides some or all of the following information to the developer.</p>
<ul>
<li><item>Version code</item> (eg. 7)</li>
<body>
<h3><a href="https://www.stoutner.com/privacy-browser-3-8-1/">3.8.1</a> (código de versión 56)</h3>
- <p><a href="https://gitweb.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=bda37dc9784e900cb64b87af3e221e11320d9d01">29 de junio de 2021</a> - API mínimo 19, API dirigido 30</p>
+ <p><a href="https://gitweb.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=bda37dc9784e900cb64b87af3e221e11320d9d01">29 de junio de 2021</a> - API mínimo 19, API objetivo 30</p>
<ul>
<li>Eliminar <a href="https://redmine.stoutner.com/issues/722">Startpage</a> y hacer de <a href="https://redmine.stoutner.com/issues/577">Mojeek</a>
el motor de búsqueda y la página de inicio por defecto.</li>
</ul>
<h3><a href="https://www.stoutner.com/privacy-browser-3-8/">3.8</a> (código de versión 55)</h3>
- <p><a href="https://gitweb.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=1650cd6eff9ef807a84263328cb73e755250e3af">24 de mayo de 2021</a> - API mínimo 19, API dirigido 30</p>
+ <p><a href="https://gitweb.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=1650cd6eff9ef807a84263328cb73e755250e3af">24 de mayo de 2021</a> - API mínimo 19, API objetivo 30</p>
<ul>
<li>Añadir una opción para <a href="https://redmine.stoutner.com/issues/143">mover la barra de aplicaciones a la parte inferior</a>.</li>
<li>Reimplementar el <a href="https://redmine.stoutner.com/issues/677">guardar archivos web</a>.</li>
</ul>
<h3><a href="https://www.stoutner.com/privacy-browser-3-7/">3.7</a> (código de versión 54)</h3>
- <p><a href="https://gitweb.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=f3b9172adedd74f705ddc0beac80798ae84f2920">29 de marzo de 2021</a> - API mínimo 19, API dirigido 30</p>
+ <p><a href="https://gitweb.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=f3b9172adedd74f705ddc0beac80798ae84f2920">29 de marzo de 2021</a> - API mínimo 19, API objetivo 30</p>
<ul>
<li>Rediseñar el acceso a los archivos para que funcione con <a href="https://redmine.stoutner.com/issues/546">el almacenamiento de alcance y el marco de acceso al almacenamiento</a>.
- Esto permite que la API de destino se eleve a 30 y elimina la necesidad de los peligrosos permisos READ_EXTERNAL_STORAGE y WRITE_EXTERNAL_STORAGE.
+ Esto permite que la API de objetivo se eleve a 30 y elimina la necesidad de los peligrosos permisos READ_EXTERNAL_STORAGE y WRITE_EXTERNAL_STORAGE.
Desafortunadamente, debido a un error en el WebView de Android,
esto también elimina temporalmente la capacidad de <a href="https://redmine.stoutner.com/issues/677">guardar un archivo web</a>.</li>
<li>Actualizar <a href="https://redmine.stoutner.com/issues/678">Acerca de > Permisos</a>.</li>
</ul>
<h3><a href="https://www.stoutner.com/privacy-browser-3-6-1/">3.6.1</a> (código de versión 53)</h3>
- <p><a href="https://gitweb.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=78e6b0e9a553e3bf800e4c69535c46fb63bef017">26 de noviembre de 2020</a> - API mínimo 19, API dirigido 29</p>
+ <p><a href="https://gitweb.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=78e6b0e9a553e3bf800e4c69535c46fb63bef017">26 de noviembre de 2020</a> - API mínimo 19, API objetivo 29</p>
<ul>
<li>Arreglar un error que provocaba la <a href="https://redmine.stoutner.com/issues/642">caída de Ver la Fuente</a>.</li>
</ul>
<h3><a href="https://www.stoutner.com/privacy-browser-3-6/">3.6</a> (código de versión 52)</h3>
- <p><a href="https://gitweb.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=8a06558b0071fa94e2a7d1093b3118417ac5cc8f">16 de noviembre de 2020</a> - API mínimo 19, API dirigido 29</p>
+ <p><a href="https://gitweb.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=8a06558b0071fa94e2a7d1093b3118417ac5cc8f">16 de noviembre de 2020</a> - API mínimo 19, API objetivo 29</p>
<ul>
<li>Arreglar la reproducción de audio con buffer <a href="https://redmine.stoutner.com/issues/595">después de cerrar una pestaña</a>.</li>
<li>Confiar en <a href="https://redmine.stoutner.com/issues/636">las autoridades de certificación de usuarios</a> de Android 7 (API 24) o más reciente.</li>
</ul>
<h3><a href="https://www.stoutner.com/privacy-browser-3-5-1/">3.5.1</a> (código de versión 51)</h3>
- <p><a href="https://gitweb.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=1907b1ff1fd02d6f8809aeb6710af42e033c064f">28 de agosto de 2020</a> - API mínimo 19, API dirigido 29</p>
+ <p><a href="https://gitweb.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=1907b1ff1fd02d6f8809aeb6710af42e033c064f">28 de agosto de 2020</a> - API mínimo 19, API objetivo 29</p>
<ul>
<li>Corregir un error que provocaba que los nuevos intentos (enlaces de otras aplicaciones) <a href="https://redmine.stoutner.com/issues/599">no se cargaran</a>
si Navegador Privado había sido "matado" por el SO en segundo plano.</li>
</ul>
<h3><a href="https://www.stoutner.com/privacy-browser-3-5/">3.5</a> (código de versión 50)</h3>
- <p><a href="https://gitweb.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=379ae3eabfd9ee949151b7b218b875ffcc627c5a">18 de agosto de 2020</a> - API mínimo 19, API dirigido 29</p>
+ <p><a href="https://gitweb.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=379ae3eabfd9ee949151b7b218b875ffcc627c5a">18 de agosto de 2020</a> - API mínimo 19, API objetivo 29</p>
<ul>
<li>Implementar el relativamente <a href="https://redmine.stoutner.com/issues/572">nuevo</a> <a href="https://redmine.stoutner.com/issues/523">tema</a>
<a href="https://redmine.stoutner.com/issues/522">Día/Noche</a> <a href="https://redmine.stoutner.com/issues/506">de Android</a>.</li>
</ul>
<h3><a href="https://www.stoutner.com/privacy-browser-3-4-1/">3.4.1</a> (código de versión 49)</h3>
- <p><a href="https://gitweb.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=47361652ebde9a4bd7d8d3520c8dd988953b8614">1 de abril de 2020</a> - API mínimo 19, API dirigido 29</p>
+ <p><a href="https://gitweb.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=47361652ebde9a4bd7d8d3520c8dd988953b8614">1 de abril de 2020</a> - API mínimo 19, API objetivo 29</p>
<ul>
<li>Arreglar un <a href="https://redmine.stoutner.com/issues/545">problema de permiso de almacenamiento</a> en algunos dispositivos con Android 10.</li>
</ul>
<h3><a href="https://www.stoutner.com/privacy-browser-3-4/">3.4</a> (código de versión 48)</h3>
- <p><a href="https://gitweb.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=7de44ca8dbf4330ee6fa3d9146940c1016edd608">28 de marzo de 2020</a> - API mínimo 19, API dirigido 29</p>
+ <p><a href="https://gitweb.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=7de44ca8dbf4330ee6fa3d9146940c1016edd608">28 de marzo de 2020</a> - API mínimo 19, API objetivo 29</p>
<ul>
<li>Reemplazar el administrador de descargas de Android por una <a href="https://redmine.stoutner.com/issues/528">implementación personalizada</a>.</li>
<li>Añadir una opción para especificar el <a href="https://redmine.stoutner.com/issues/32">lugar de descarga por defecto</a>.</li>
</ul>
<h3><a href="https://www.stoutner.com/privacy-browser-3-3/">3.3</a> (código de versión 47)</h3>
- <p><a href="https://gitweb.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=54153efaffb2447307fbd8be569529d0118b823d">3 de enero de 2020</a> - API mínimo 19, API dirigido 29</p>
+ <p><a href="https://gitweb.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=54153efaffb2447307fbd8be569529d0118b823d">3 de enero de 2020</a> - API mínimo 19, API objetivo 29</p>
<ul>
<li>Añadir soporte para proxis personalizados, incluyendo <a href="https://redmine.stoutner.com/issues/486">proxis SOCKS</a>,
e incluir una entrada para <a href="https://redmine.stoutner.com/issues/355">I2P</a>.</li>
<li>Deshabilitar manualmente <a href="https://redmine.stoutner.com/issues/404">el tiempo de espera de la pantalla</a> al reproducir vídeos en el modo de pantalla completa.</li>
<li>Deshabilitar <a href="https://redmine.stoutner.com/issues/480">HSTS</a>.</li>
<li>Actualizar la Fuente de Vista para utilizar los <a href="https://redmine.stoutner.com/issues/503">encabezados</a> Sec-Fetch.</li>
- <li>Subir la API de destino a 29 (Android 10).</li>
+ <li>Incrementar la API objetivo hacia la 29 (Android 10).</li>
<li>Traducción al francés por <a href="mailto:kevinliste@framalistes.org">Kévin L</a>.</li>
<li>Actualizada la traducción al español proporcionada por Jose A. León.</li>
<li>Actualizada la traducción al alemán proporcionada por Bernhard G. Keller.</li>
</ul>
<h3><a href="https://www.stoutner.com/privacy-browser-3-2/">3.2</a> (código de versión 46)</h3>
- <p><a href="https://gitweb.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=424ab40e495fed0fd1fe4109be466206d64ae6be">20 de julio de 2019</a> - API mínimo 19, API dirigido 28</p>
+ <p><a href="https://gitweb.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=424ab40e495fed0fd1fe4109be466206d64ae6be">20 de julio de 2019</a> - API mínimo 19, API objetivo 28</p>
<ul>
<li>Cambiar el motor de búsqueda y la página de inicio predeterminados a <a href="https://www.stoutner.com/switching-to-startpage-as-the-default-homepage-and-search-engine/">Startpage</a>.</li>
<li>Corregir el proxy a través de Orbot en <a href="https://redmine.stoutner.com/issues/473">recientes</a> <a href="https://redmine.stoutner.com/issues/474">versiones</a> de WebView.</li>
</ul>
<h3><a href="https://www.stoutner.com/privacy-browser-3-1/">3.1</a> (código de versión 45)</h3>
- <p><a href="https://gitweb.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=2a28c6401f60afa40ca93b18fc0b9a0ab196ff88">27 de mayo de 2019</a> - API mínimo 19, API dirigido 28</p>
+ <p><a href="https://gitweb.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=2a28c6401f60afa40ca93b18fc0b9a0ab196ff88">27 de mayo de 2019</a> - API mínimo 19, API objetivo 28</p>
<ul>
<li>Añadir un <a href="https://redmine.stoutner.com/issues/416">botón de cerrar pestaña</a> a la barra de aplicaciones.</li>
<li>Arreglar el <a href="https://redmine.stoutner.com/issues/415">desplazamiento a la izquierda y a la derecha </a> de los elementos de la página web,
</ul>
<h3><a href="https://www.stoutner.com/privacy-browser-3-0-1/">3.0.1</a> (código de versión 44)</h3>
- <p><a href="https://gitweb.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=fd8eedc7aab1062da69d65514cf5d0a6fd28abad">2 de mayo de 2019</a> - API mínimo 19, API dirigido 28</p>
+ <p><a href="https://gitweb.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=fd8eedc7aab1062da69d65514cf5d0a6fd28abad">2 de mayo de 2019</a> - API mínimo 19, API objetivo 28</p>
<ul>
<li>Corregir un error que permitía que la barra de aplicaciones se desplazara fuera de la pantalla cuando el desplazamiento de la barra de aplicaciones estaba desactivado,
sin <a href="https://redmine.stoutner.com/issues/418">posibilidad de hacerla retroceder</a>.</li>
</ul>
<h3><a href="https://www.stoutner.com/privacy-browser-3-0/">3.0</a> (código de versión 43)</h3>
- <p><a href="https://gitweb.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=aedc35976f8eda7c00bdd822c172e19cad0fc485">26 de abril de 2019</a> - API mínimo 19, API dirigido 28</p>
+ <p><a href="https://gitweb.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=aedc35976f8eda7c00bdd822c172e19cad0fc485">26 de abril de 2019</a> - API mínimo 19, API objetivo 28</p>
<ul>
<li>Añadir <a href="https://redmine.stoutner.com/issues/22">navegación por pestañas</a>.</li>
<li>Se corrigió un error que provocaba que <a href="https://redmine.stoutner.com/issues/398">se cortara la parte inferior de la vista web</a>
</ul>
<h3><a href="https://www.stoutner.com/privacy-browser-2-17-1/">2.17.1</a> (código de versión 42)</h3>
- <p><a href="https://gitweb.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=fbb7aef30a9417c42661a0f76b5836dcf6a40242">5 de marzo de 2019</a> - API mínimo 19, API dirigido 28</p>
+ <p><a href="https://gitweb.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=fbb7aef30a9417c42661a0f76b5836dcf6a40242">5 de marzo de 2019</a> - API mínimo 19, API objetivo 28</p>
<ul>
<li>Corregir un bloqueo causado por favoritos con <a href="https://redmine.stoutner.com/issues/395">iconos preferidos muy grandes</a>.</li>
<li>Permitir mover Navegador Privado a una <a href="https://redmine.stoutner.com/issues/394">tarjeta SD</a>.</li>
</ul>
<h3><a href="https://www.stoutner.com/privacy-browser-2-17/">2.17</a> (código de versión 41)</h3>
- <p><a href="https://gitweb.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=ee0fa80bcf12d87d13c5ae9feb44ceb2b5aed2dd">27 de febrero de 2019</a> - API mínimo 19, API dirigido 28</p>
+ <p><a href="https://gitweb.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=ee0fa80bcf12d87d13c5ae9feb44ceb2b5aed2dd">27 de febrero de 2019</a> - API mínimo 19, API objetivo 28</p>
<ul>
<li>Añadir la posibilidad de <a href="https://redmine.stoutner.com/issues/8">desplazarse por la barra de aplicaciones</a>.</li>
<li>Crear una <a href="https://redmine.stoutner.com/issues/264">actividad Logcat</a>.</li>
</ul>
<h3><a href="https://www.stoutner.com/privacy-browser-2-16/">2.16</a> (código de versión 40)</h3>
- <p><a href="https://gitweb.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=6fa1563622642855d342cd7bcb523a8c1b6bbc44">31 de enero de 2019</a> - API mínimo 19, API dirigido 28</p>
+ <p><a href="https://gitweb.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=6fa1563622642855d342cd7bcb523a8c1b6bbc44">31 de enero de 2019</a> - API mínimo 19, API objetivo 28</p>
<ul>
<li>Arreglar un fallo, introducido en 2.15, que provocaba que <a href="https://redmine.stoutner.com/issues/370">se ignorara el fijado del certificado SSL</a> en la mayoría de los casos.</li>
<li>Añadir <a href="https://redmine.stoutner.com/issues/212">fijación</a> de <a href="https://redmine.stoutner.com/issues/211">dirección</a>
</ul>
<h3><a href="https://www.stoutner.com/privacy-browser-2-15-1/">2.15.1</a> (código de versión 39)</h3>
- <p><a href="https://gitweb.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=df8b520d10c3fa31b603ff7c50670ab1f0728d2f">27 de diciembre de 2018</a> - API mínimo 19, API dirigido 28</p>
+ <p><a href="https://gitweb.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=df8b520d10c3fa31b603ff7c50670ab1f0728d2f">27 de diciembre de 2018</a> - API mínimo 19, API objetivo 28</p>
<ul>
<li>Corregir un error que provocaba que <a href="https://redmine.stoutner.com/issues/364">algunos dispositivos se bloquearan</a> al abrir una actividad secundaria.</li>
</ul>
<h3><a href="https://www.stoutner.com/privacy-browser-2-15/">2.15</a> (código de versión 38)</h3>
- <p><a href="https://gitweb.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=2250acd83180a9dcf1fbee80025a9d6aadbee510">24 de diciembre de 2018</a> - API mínimo 19, API dirigido 28</p>
+ <p><a href="https://gitweb.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=2250acd83180a9dcf1fbee80025a9d6aadbee510">24 de diciembre de 2018</a> - API mínimo 19, API objetivo 28</p>
<ul>
<li>Corregir un error al <a href="https://redmine.stoutner.com/issues/160">cambiar el agente de usuario</a> con la configuración de dominio.</li>
<li>Arreglar los <a href="https://redmine.stoutner.com/issues/250">diseños de cajones en teléfonos que vienen con notch</a>.</li>
</ul>
<h3><a href="https://www.stoutner.com/privacy-browser-2-14/">2.14</a> (código de versión 37)</h3>
- <p><a href="https://gitweb.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=57020e5c7cad1eec43c3627f136be1640d07d4aa">8 de diciembre de 2018</a> - API mínimo 19, API dirigido 28</p>
+ <p><a href="https://gitweb.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=57020e5c7cad1eec43c3627f136be1640d07d4aa">8 de diciembre de 2018</a> - API mínimo 19, API objetivo 28</p>
<ul>
<li>Añadir <a href="https://redmine.stoutner.com/issues/338">opciones de importación y exportación cifradas</a>.</li>
<li>Corregir un error al <a href="https://redmine.stoutner.com/issues/350">importar bases de datos bajo ciertas circunstancias</a>.</li>
</ul>
<h3><a href="https://www.stoutner.com/privacy-browser-2-13/">2.13</a> (código de versión 36)</h3>
- <p><a href="https://gitweb.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=c44cc1c5af504b415b86654d7d03a3e78a5adf1b">29 de octubre de 2018</a> - API mínimo 19, API dirigido 28</p>
+ <p><a href="https://gitweb.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=c44cc1c5af504b415b86654d7d03a3e78a5adf1b">29 de octubre de 2018</a> - API mínimo 19, API objetivo 28</p>
<ul>
<li>Añadir la <a href="https://redmine.stoutner.com/issues/23">importación y exportación</a> de favoritos y ajustes (incluye el <a href="https://redmine.stoutner.com/issues/280">permiso de almacenamiento de lectura</a>).</li>
<li>Cambiar la <a href="https://redmine.stoutner.com/issues/165">carga predeterminada de URLs</a> de HTTP a HTTPS.</li>
<li>Arreglar un problema con <a href="https://redmine.stoutner.com/issues/325">la desaparición de las barras del sistema</a> tras ver un vídeo a pantalla completa.</li>
<li>Arreglar el <a href="https://redmine.stoutner.com/issues/317">estado del elemento del menú Borrar Datos</a> en Oreo (Android 8.0) y posteriores.</li>
<li>Arreglar el tamaño del mensaje <a href="https://redmine.stoutner.com/issues/319">Esperando a Orbot</a>.</li>
- <li>Incrementar la API dirigido hacia la 28 (Android 9 Pie).</li>
+ <li>Incrementar la API objetivo hacia la 28 (Android 9 Pie).</li>
<li>Actualizada la traducción al español proporcionada por Jose A. León.</li>
<li>Actualizada la traducción al italiano proporcionada por Francesco Buratti.</li>
<li>Actualizada la traducción al ruso.</li>
</ul>
<h3><a href="https://www.stoutner.com/privacy-browser-2-12/">2.12</a> (código de versión 35)</h3>
- <p><a href="https://gitweb.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=eeb6f383b74980bc29ff1ecab8f6c3eb6ac17d54">31 de julio de 2018</a> - API mínimo 19, API dirigido 27</p>
+ <p><a href="https://gitweb.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=eeb6f383b74980bc29ff1ecab8f6c3eb6ac17d54">31 de julio de 2018</a> - API mínimo 19, API objetivo 27</p>
<ul>
<li>Cambiar la página de inicio y motor de búsqueda predeterminados a <a href="https://redmine.stoutner.com/issues/308">Searx.me</a>.</li>
<li>Añadir <a href="https://redmine.stoutner.com/issues/310">Ultra Privacidad</a> a las listas de bloqueo.</li>
</ul>
<h3><a href="https://www.stoutner.com/privacy-browser-2-11/">2.11</a> (código de versión 34)</h3>
- <p><a href="https://gitweb.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=bc45b14cfda10249800a6ccfdb8247d2ce9b32a9">10 de julio de 2018</a> - API mínimo 19, API dirigido 27</p>
+ <p><a href="https://gitweb.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=bc45b14cfda10249800a6ccfdb8247d2ce9b32a9">10 de julio de 2018</a> - API mínimo 19, API objetivo 27</p>
<ul>
<li>Añadir una <a href="https://redmine.stoutner.com/issues/170">Actividad de peticiones</a> que muestre cuantas peticiones de recursos se han bloqueado.</li>
<li>Solucionar un problema con <a href="https://redmine.stoutner.com/issues/297">el proxy a través de Orbot</a> en versiones recientes de WebView.</li>
</ul>
<h3><a href="https://www.stoutner.com/privacy-browser-2-10/">2.10</a> (código de versión 33)</h3>
- <p><a href="https://gitweb.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=29e6b7b467e6987d6aa42429b03e3b5498acbae3">24 de mayo de 2018</a> - API mínimo 19, API dirigido 27</p>
+ <p><a href="https://gitweb.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=29e6b7b467e6987d6aa42429b03e3b5498acbae3">24 de mayo de 2018</a> - API mínimo 19, API objetivo 27</p>
<ul>
<li>Habilitar <a href="https://redmine.stoutner.com/issues/1">la subida de archivos</a> a páginas web en Lollipop y más recientes.</li>
<li>Permitir <a href="https://redmine.stoutner.com/issues/216">que los agentes de usuario aplicados puedan actualizarse automáticamente</a> con nuevas versiones.</li>
</ul>
<h3><a href="https://www.stoutner.com/privacy-browser-2-9/">2.9</a> (código de versión 32)</h3>
- <p><a href="https://gitweb.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=39cde1235af331de5e5ff454ac2daf667d7d894f">9 de mayo de 2018</a> - API mínimo 19, API dirigido 27</p>
+ <p><a href="https://gitweb.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=39cde1235af331de5e5ff454ac2daf667d7d894f">9 de mayo de 2018</a> - API mínimo 19, API objetivo 27</p>
<ul>
<li>Usar el <a href="https://redmine.stoutner.com/issues/224">directorio público de descargas</a>
(requiere <a href="https://redmine.stoutner.com/issues/79">el permiso de almacenamiento de escritura</a>).</li>
</ul>
<h3><a href="https://www.stoutner.com/privacy-browser-2-8-1/">2.8.1</a> (código de versión 31)</h3>
- <p><a href="https://gitweb.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=8d1060fb1148d2d2fd7af8261dc9956c3a5687a1">1 de marzo de 2018</a> - API mínimo 19, API dirigido 27</p>
+ <p><a href="https://gitweb.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=8d1060fb1148d2d2fd7af8261dc9956c3a5687a1">1 de marzo de 2018</a> - API mínimo 19, API objetivo 27</p>
<ul>
<li>Solución a un error en versiones recientes del WebView de Android que <a href="https://redmine.stoutner.com/issues/253">impedía a los usuarios guardar cookies</a> cuando lo deseaban.</li>
</ul>
<h3><a href="https://www.stoutner.com/privacy-browser-2-8/">2.8</a> (código de versión 30)</h3>
- <p><a href="https://gitweb.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=0718e0dc7330462352c7cf71b0ef486ee6b90df7">22 de febrero de 2018</a> - API mínimo 19, API dirigido 27</p>
+ <p><a href="https://gitweb.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=0718e0dc7330462352c7cf71b0ef486ee6b90df7">22 de febrero de 2018</a> - API mínimo 19, API objetivo 27</p>
<ul>
<li><a href="https://redmine.stoutner.com/issues/136">Cambiar a “EasyList”</a> para el bloqueo de publicidad y rastreo.</li>
<li>Añadir una actividad: <a href="https://redmine.stoutner.com/issues/64">“Ver Fuente”</a>.</li>
<li>Corregir la opción <a href="https://redmine.stoutner.com/issues/231">“Añadir a pantalla de inicio”</a> para ser compatible con Android Oreo.</li>
<li>Corregir <a href="https://redmine.stoutner.com/issues/248">el formato de color</a> en el cuadro de texto URL.</li>
<li>Clarificar el lenguaje en la <a href="https://redmine.stoutner.com/issues/244">política de privacidad</a>.</li>
- <li>Incrementar la API dirigido hacia la 27 (Android Oreo, 8.1.0).</li>
+ <li>Incrementar la API objetivo hacia la 27 (Android Oreo, 8.1.0).</li>
<li>Actualizada la traducción al español proporcionada por Jose A. León.</li>
<li>Actualizada la traducción al italiano proporcionada por Francesco Buratti.</li>
<li>Traducción parcial al ruso.</li>
</ul>
<h3><a href="https://www.stoutner.com/privacy-browser-2-7-2/">2.7.2</a> (código de versión 29)</h3>
- <p><a href="https://gitweb.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=298ddb5aeffe0e18e84c7551c55ff8164b238080">22 de noviembre de 2017</a> - API mínimo 19, API dirigido 26</p>
+ <p><a href="https://gitweb.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=298ddb5aeffe0e18e84c7551c55ff8164b238080">22 de noviembre de 2017</a> - API mínimo 19, API objetivo 26</p>
<ul>
<li>Añadir un elemento de menú de opciones para <a href="https://redmine.stoutner.com/issues/104">crear/editar la configuración del dominio</a> para el dominio actual.</li>
<li>Abrir <a href="https://redmine.stoutner.com/issues/226">hipervínculos de números telefónicos</a> en el marcador telefónico.</li>
</ul>
<h3><a href="https://www.stoutner.com/privacy-browser-2-7-1/">2.7.1</a> (código de versión 28)</h3>
- <p><a href="https://gitweb.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=24f2d6529540bc8ea47f45bc07dd058f402a9140">9 de noviembre de 2017</a> - API mínimo 19, API dirigido 26</p>
+ <p><a href="https://gitweb.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=24f2d6529540bc8ea47f45bc07dd058f402a9140">9 de noviembre de 2017</a> - API mínimo 19, API objetivo 26</p>
<ul>
<li>Corrregir un fallo al <a href="https://redmine.stoutner.com/issues/225">editar un favorito</a> en el nuevo cajón de favoritos.</li>
</ul>
<h3><a href="https://www.stoutner.com/privacy-browser-2-7/">2.7</a> (código de versión 27)</h3>
- <p><a href="https://gitweb.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=eb9bc527c37223964f7c00592df982b47ff2f81c">7 de noviembre de 2017</a> - API mínimo 19, API dirigido 26</p>
+ <p><a href="https://gitweb.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=eb9bc527c37223964f7c00592df982b47ff2f81c">7 de noviembre de 2017</a> - API mínimo 19, API objetivo 26</p>
<ul>
<li>Añadir un <a href="https://redmine.stoutner.com/issues/132">cajón de favoritos</a> al que se accede deslizando desde la derecha.</li>
<li>Evitar que el Modo Noche <a href="https://redmine.stoutner.com/issues/213">parpadee sobre un fondo blanco</a> al cargar páginas nuevas.</li>
<li>Actualizar los <a href="https://gitweb.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=379d977e9db12b28952cbce0b127548576c87b95">agentes de usuario</a>.</li>
- <li>Incrementar la API dirigido hacia la 26 (Android Oreo, 8.0.0).</li>
+ <li>Incrementar la API objetivo hacia la 26 (Android Oreo, 8.0.0).</li>
<li>Actualizada la traducción al español proporcionada por Jose A. León.</li>
<li>Actualizada la traducción al italiano proporcionada por Francesco Buratti.</li>
</ul>
<h3><a href="https://www.stoutner.com/privacy-browser-2-6/">2.6</a> (código de versión 26)</h3>
- <p><a href="https://gitweb.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=ecd1f67963852c0523c42ce1326b78cb7a71f053">18 de septiembre de 2017</a> - API mínimo 19, API dirigido 25</p>
+ <p><a href="https://gitweb.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=ecd1f67963852c0523c42ce1326b78cb7a71f053">18 de septiembre de 2017</a> - API mínimo 19, API objetivo 25</p>
<ul>
<li>Añadir <a href="https://redmine.stoutner.com/issues/145">renderizado en modo nocturno</a>.</li>
<li>Actualizar el renderizado del tema oscuro de las <a href="https://redmine.stoutner.com/issues/150">secciones Acerca de y Guía</a>.</li>
</ul>
<h3><a href="https://www.stoutner.com/privacy-browser-2-5/">2.5</a> (código de versión 25)</h3>
- <p><a href="https://gitweb.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=80ddcb075d03a4c78263d1ff80466f3df0967f6d">26 de agosto de 2017</a> - API mínimo 19, API dirigido 25</p>
+ <p><a href="https://gitweb.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=80ddcb075d03a4c78263d1ff80466f3df0967f6d">26 de agosto de 2017</a> - API mínimo 19, API objetivo 25</p>
<ul>
<li>Añadir <a href="https://redmine.stoutner.com/issues/54">fijación de certificado SSL</a> a la configuración de dominios.</li>
<li>Añadir <a href="https://redmine.stoutner.com/issues/163">searx.me</a> a la lista de motores de búsqueda.</li>
</ul>
<h3><a href="https://www.stoutner.com/privacy-browser-2-4/">2.4</a> (código de versión 24)</h3>
- <p><a href="https://gitweb.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=0063aac3b25ee5ea558669d42269d16158eca40b">23 de junio de 2017</a> - API mínimo 19, API dirigido 25</p>
+ <p><a href="https://gitweb.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=0063aac3b25ee5ea558669d42269d16158eca40b">23 de junio de 2017</a> - API mínimo 19, API objetivo 25</p>
<ul>
<li>Añadir una opción de <a href="https://redmine.stoutner.com/issues/124">tema oscuro</a>.</li>
<li><a href="https://redmine.stoutner.com/issues/137">Destacar http:// en rojo</a> si el dominio no está cifrado.</li>
</ul>
<h3><a href="https://www.stoutner.com/privacy-browser-2-3/">2.3</a> (código de versión 23)</h3>
- <p><a href="https://gitweb.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=edbeafeb712ae0c2a217a130d940f6c8326ca2d0">26 de mayo de 2017</a> - API mínimo 19, API dirigido 25</p>
+ <p><a href="https://gitweb.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=edbeafeb712ae0c2a217a130d940f6c8326ca2d0">26 de mayo de 2017</a> - API mínimo 19, API objetivo 25</p>
<ul>
<li><a href="https://redmine.stoutner.com/issues/127">No incluir redirecciones URL</a> en el historial de WebView.</li>
<li>Añadir la opción de <a href="https://redmine.stoutner.com/issues/123">deshabilitar la carga de imágenes</a> para conservar ancho de banda.</li>
</ul>
<h3><a href="https://www.stoutner.com/privacy-browser-2-2/">2.2</a> (código de versión 22)</h3>
- <p><a href="https://gitweb.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=1d8a8322dace658f69b80ad4d24f941074aa2200">27 de abril de 2017</a> - API mínimo 19, API dirigido 25</p>
+ <p><a href="https://gitweb.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=1d8a8322dace658f69b80ad4d24f941074aa2200">27 de abril de 2017</a> - API mínimo 19, API objetivo 25</p>
<ul>
<li>Crear un <a href="https://redmine.stoutner.com/issues/116">Modo Incógnito</a>, que borre la caché y el historial después de cargar cada página web.</li>
<li>Combinar las <a href="https://redmine.stoutner.com/issues/122">opciones de búsqueda JavaScript-habilitado y JavaScript-deshabilitado</a> en una entrada.</li>
</ul>
<h3><a href="https://www.stoutner.com/privacy-browser-2-1/">2.1</a> (código de versión 21)</h3>
- <p><a href="https://gitweb.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=f01cad697eb5ab015888e88e20f26ac5911b1d85">25 de marzo de 2017</a> - API mínimo 19, API dirigido 25</p>
+ <p><a href="https://gitweb.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=f01cad697eb5ab015888e88e20f26ac5911b1d85">25 de marzo de 2017</a> - API mínimo 19, API objetivo 25</p>
<ul>
<li>Arreglar un <a href="https://redmine.stoutner.com/issues/110">problema al cargar</a> introducido en la versión 2.0.1 si la página de inicio está en blanco.</li>
<li>Arreglar un error que <a href="https://redmine.stoutner.com/issues/112">impedía la carga de páginas web con un dominio localhost</a>.</li>
</ul>
<h3><a href="https://www.stoutner.com/privacy-browser-2-0-1/">2.0.1</a> (código de versión 20)</h3>
- <p><a href="https://gitweb.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=1aec01e7c168c3fcc272530607e16f5ffa6d6c74">21 de marzo de 2017</a> - API mínimo 19, API dirigido 25</p>
+ <p><a href="https://gitweb.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=1aec01e7c168c3fcc272530607e16f5ffa6d6c74">21 de marzo de 2017</a> - API mínimo 19, API objetivo 25</p>
<ul>
<li><a href="https://redmine.stoutner.com/issues/101">Sólo cargar la configuración del dominio cuando el dominio cambie</a>.</li>
<li>Sólo aplicar la configuración de dominio a subdominios si <a href="https://redmine.stoutner.com/issues/99">*. se especifica al principio del nombre de dominio</a>.</li>
</ul>
<h3><a href="https://www.stoutner.com/privacy-browser-2-0/">2.0</a> (código de versión 19)</h3>
- <p><a href="https://gitweb.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=8f1c15606ef8cd277f51cc837c2c39667c48d0d4">16 de marzo de 2017</a> - API mínimo 19, API dirigido 25</p>
+ <p><a href="https://gitweb.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=8f1c15606ef8cd277f51cc837c2c39667c48d0d4">16 de marzo de 2017</a> - API mínimo 19, API objetivo 25</p>
<ul>
<li>Implementar <a href="https://redmine.stoutner.com/issues/7">configuración de dominio personalizado</a>.</li>
<li>Cuando se usa proxy a través de Tor, <a href="https://redmine.stoutner.com/issues/90">esperar hasta que Orbot esté listo</a> antes de intentar cargar una página.</li>
</ul>
<h3><a href="https://www.stoutner.com/privacy-browser-1-15/">1.15</a> (código de versión 18)</h3>
- <p><a href="https://gitweb.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=8f4d6373a35a43a36050ed383f58c4074143b264">11 de febrero de 2017</a> - API mínimo 19, API dirigido 25</p>
+ <p><a href="https://gitweb.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=8f4d6373a35a43a36050ed383f58c4074143b264">11 de febrero de 2017</a> - API mínimo 19, API objetivo 25</p>
<ul>
<li>Eliminar <a href="https://redmine.stoutner.com/issues/84">la caché secreta y no documentada de WebView</a> en Eliminar y salir.</li>
<li><a href="https://redmine.stoutner.com/issues/83">Iniciar automáticamente Orbot</a> cuando se habilita el proxy a través de Orbot.</li>
</ul>
<h3><a href="https://www.stoutner.com/privacy-browser-1-14-1/">1.14.1</a> (código de versión 17)</h3>
- <p><a href="https://gitweb.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=5bd318993ebf675433f514dd04fc3e29545c9312">4 de enero de 2017</a> - API mínimo 19, API dirigido 25</p>
+ <p><a href="https://gitweb.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=5bd318993ebf675433f514dd04fc3e29545c9312">4 de enero de 2017</a> - API mínimo 19, API objetivo 25</p>
<ul>
<li>Arreglar un error que hacía que Navegador Privado <a href="https://redmine.stoutner.com/issues/80">se colgase en algunas páginas web</a> cuando el bloqueador de anuncios estaba habilitado.</li>
</ul>
<h3><a href="https://www.stoutner.com/privacy-browser-1-14/">1.14</a> (código de versión 16)</h3>
- <p><a href="https://gitweb.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=6d3d23ab62cfdd6ef142dbdb764a6bac8fc38ce1">26 de diciembre de 2016</a> - API mínimo 19, API dirigido 25</p>
+ <p><a href="https://gitweb.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=6d3d23ab62cfdd6ef142dbdb764a6bac8fc38ce1">26 de diciembre de 2016</a> - API mínimo 19, API objetivo 25</p>
<ul>
<li>Incluir un <a href="https://redmine.stoutner.com/issues/31">bloqueador de anuncios</a>.</li>
<li>Cambiar el agente de usuario por defecto a PrivacyBrowser/1.0 <a href="https://gitweb.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=7f0fda47dbd040262a8149e1e6d27f7abe9043ea">definitivamente</a>.</li>
<li>Cambiar el modo de “No rastrear” <a href="https://gitweb.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=c3ec2515bf9a49d4561efc47f5d21106f15cb286">poniédolo por defecto como falso</a>.</li>
<li>Añadir la opción de <a href="https://redmine.stoutner.com/issues/75">habilitar el modo de navegación a pantalla completa</a> y ponerlo <a href="https://gitweb.stoutner.com/?p=PrivacyBrowser.git;a=blobdiff;f=app/src/main/res/xml/preferences.xml;h=cdda87e7c2eaa0cabdb6a1a77ffca1124e9423e1;hp=8ed81b84aab687621a0f08921c4f6165392d59d2;hb=743982f883eab347e4029f8a3be760f780b14da1;hpb=7f0fda47dbd040262a8149e1e6d27f7abe9043ea">por defecto como falso</a>.</li>
<li>Arreglar un error que a veces hací que <a href="https://redmine.stoutner.com/issues/74">la barra de navegación se pusiera de color gris en modo de pantalla completa</a> al cambiar entre aplicaciones.</li>
- <li>Incrementar la <a href="https://gitweb.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=5c6db7b33577612ff7f120b30fb98cab8afa591f">API dirigido hacia la 25</a>.</li>
+ <li>Incrementar la <a href="https://gitweb.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=5c6db7b33577612ff7f120b30fb98cab8afa591f">API objetivo hacia la 25</a>.</li>
<li>Actualizar la <a href="https://gitweb.stoutner.com/?p=PrivacyBrowser.git;a=blobdiff;f=app/src/main/res/values-es/strings.xml;h=83c162b389a075effb68c7ce41cd03482c7c8bce;hp=ff79b6a9f30dbe71a0a076cfcfdc0df834ebb792;hb=2c8e83a7d1a044a5186020ac17d3cefb22b7f330;hpb=e9ed376cc7890f1d1f2e370e2e63f19dcfd1859d">traducción</a> <a href="https://gitweb.stoutner.com/?p=PrivacyBrowser.git;a=blob;f=app/src/main/assets/es/about_permissions.html;h=eab82ba8ee104e6a71776a557366f70660d28711;hb=2c8e83a7d1a044a5186020ac17d3cefb22b7f330">parcial</a> <a href="https://gitweb.stoutner.com/?p=PrivacyBrowser.git;a=blobdiff;f=app/src/main/assets/es/about_changelog.html;h=ffb0e4895c0323ae4ee6ca11aab775b318a1b9ef;hp=f810cccc58ee840eb2704bcf81c9e3387d29ff2c;hb=c3ec2515bf9a49d4561efc47f5d21106f15cb286;hpb=2c8e83a7d1a044a5186020ac17d3cefb22b7f330">de español</a>.</li>
</ul>
<h3><a href="https://www.stoutner.com/privacy-browser-1-13/">1.13</a> (código de versión 15)</h3>
- <p><a href="https://gitweb.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=5a9cabddff240061fe521f01df3025b037e9da9e">28 de noviembre de 2016</a> - API mínimo 19, API dirigido 24</p>
+ <p><a href="https://gitweb.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=5a9cabddff240061fe521f01df3025b037e9da9e">28 de noviembre de 2016</a> - API mínimo 19, API objetivo 24</p>
<ul>
<li>Doble toque para el <a href="https://redmine.stoutner.com/issues/46">modo de navegación a pantalla completa</a>.</li>
<li>Cambiar el agente de usuario por defecto a <a href="https://gitweb.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=b0ddee839c666ba339e374749588f910070658ee">PrivacyBrowser/1.0</a>.</li>
</ul>
<h3><a href="https://www.stoutner.com/privacy-browser-1-12/">1.12</a> (código de versión 14)</h3>
- <p><a href="https://gitweb.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=3f2c7129a56e84d34cb07c151baf87bdea94dd12">9 de noviembre de 2016</a> - API mínimo 19, API dirigido 24</p>
+ <p><a href="https://gitweb.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=3f2c7129a56e84d34cb07c151baf87bdea94dd12">9 de noviembre de 2016</a> - API mínimo 19, API objetivo 24</p>
<ul>
<li>Añadir una <a href="https://redmine.stoutner.com/issues/24">lista de historial hacia adelante y atrás</a>.</li>
<li>Toque prolongado <a href="https://redmine.stoutner.com/issues/63">muestra los URL</a> y la opción de <a href="https://redmine.stoutner.com/issues/10">ver o descargar imágenes</a>.</li>
</ul>
<h3><a href="https://www.stoutner.com/privacy-browser-1-11/">1.11</a> (código de versión 13)</h3>
- <p><a href="https://gitweb.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=d9974f13e3a4dad62f760e02e94d8782d6e4bb3d">22 de octubre de 2016</a> - API mínimo 19, API dirigido 24</p>
+ <p><a href="https://gitweb.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=d9974f13e3a4dad62f760e02e94d8782d6e4bb3d">22 de octubre de 2016</a> - API mínimo 19, API objetivo 24</p>
<ul>
- <li>Incrementar la API dirigido hacia la 24, que habilita el soporte multiventana en Android Nougat.</li>
+ <li>Incrementar la API objetivo hacia la 24, que habilita el soporte multiventana en Android Nougat.</li>
<li>Arreglar un error introducido en versión 1.10 que consumió <a href="https://redmine.stoutner.com/issues/66">bastante CPU</a> sin ninguna razón.</li>
<li>Añadir <a href="https://redmine.stoutner.com/issues/18">la opción para imprimir</a>.</li>
<li>Arreglar <a href="https://redmine.stoutner.com/issues/67">la descarga de archivos</a> en KitKat y Lollipop.</li>
</ul>
<h3><a href="https://www.stoutner.com/privacy-browser-1-10/">01.10</a> (código de versión 12)</h3>
- <p><a href="https://gitweb.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=c9365866ad37cc2b0b0fa53ee04aaaa4740f70b7">15 de septiembre de 2016</a> - API mínimo 19, API dirigido 23</p>
+ <p><a href="https://gitweb.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=c9365866ad37cc2b0b0fa53ee04aaaa4740f70b7">15 de septiembre de 2016</a> - API mínimo 19, API objetivo 23</p>
<ul>
<li>Añadir compatibilidad con <a href="https://redmine.stoutner.com/issues/26">Tor Orbot</a>.</li>
<li>Añadir compatibilidad con <a href="https://redmine.stoutner.com/issues/30">No rastrear</a>.</li>
</ul>
<h3><a href="https://www.stoutner.com/privacy-browser-1-9-and-1-9-1/">1.9.1</a> (código de versión 11)</h3>
- <p><a href="https://gitweb.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=6de831ce03c8b9114212870715c6c722e26f5b28">27 de agosto de 2016</a> - API mínimo 19, API dirigido 23</p>
+ <p><a href="https://gitweb.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=6de831ce03c8b9114212870715c6c722e26f5b28">27 de agosto de 2016</a> - API mínimo 19, API objetivo 23</p>
<ul>
<li>Cambiar las rutas de los imágenes activas para ser relativas para que Navegador Privado sea compatible con F-Droid.</li>
</ul>
<h3><a href="https://www.stoutner.com/privacy-browser-1-9-and-1-9-1/">1.9</a> (código de versión 10)</h3>
- <p><a href="https://gitweb.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=7c6dae59026beeb9e32fcc4d6706129f8bee029c">26 de agosto de 2016</a> - API mínimo 19, API dirigido 23</p>
+ <p><a href="https://gitweb.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=7c6dae59026beeb9e32fcc4d6706129f8bee029c">26 de agosto de 2016</a> - API mínimo 19, API objetivo 23</p>
<ul>
<li>Traducción al alemán proveída por <a href="mailto:aaron@gerlach.com">Aaron Gerlach</a>.</li>
<li>Añadir la opción para <a href="https://redmine.stoutner.com/issues/2">ver los detalles de certificados SSL y los errores de SSL</a>.
</ul>
<h3><a href=https://www.stoutner.com/privacy-browser-1-8/">1.8</a> (código de versión 9)</h3>
- <p><a href="https://gitweb.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=f386169ee9c68325562068394cb6b21b0b89be1c">16 de julio de 2016</a> - API mínimo 19, API dirigido 23</p>
+ <p><a href="https://gitweb.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=f386169ee9c68325562068394cb6b21b0b89be1c">16 de julio de 2016</a> - API mínimo 19, API objetivo 23</p>
<ul>
<li>Añadir un <a href="https://redmine.stoutner.com/issues/16">sistema de marcadores</a>.</li>
<li>Añadir <a href="https://redmine.stoutner.com/issues/29">controles básicos para datos de formularios</a>.</li>
</ul>
<h3><a href="https://www.stoutner.com/privacy-browser-1-7/">1.7</a> (código de versión 8)</h3>
- <p><a href="https://gitweb.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=347e702f50a02782add9400afa552fbee1cf7ab6;ds=inline">16 de junio de 2016</a> - API mínimo 19, API dirigido 23</p>
+ <p><a href="https://gitweb.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=347e702f50a02782add9400afa552fbee1cf7ab6;ds=inline">16 de junio de 2016</a> - API mínimo 19, API objetivo 23</p>
<ul>
<li>Crear la <a href="https://redmine.stoutner.com/issues/15">actividad “Acerca de” con una vista de pestañas</a>.</li>
<li>Crear la actividad “Guía” con una vista de pestañas.</li>
</ul>
<h3>1.6 (código de versión 7)</h3>
- <p><a href="https://gitweb.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=151e4550065da8e740e8e3bd414ec30ae2a18c33">11 de mayo de 2016</a> - API mínimo 15, API dirigido 23</p>
+ <p><a href="https://gitweb.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=151e4550065da8e740e8e3bd414ec30ae2a18c33">11 de mayo de 2016</a> - API mínimo 15, API objetivo 23</p>
<ul>
<li>Añadir la opción para <a href="https://redmine.stoutner.com/issues/4">personalizar los URL de búsquedas</a>.</li>
<li>Añadir la opción para <a href="https://redmine.stoutner.com/issues/3">personalizar el agente de usuario</a>.</li>
</ul>
<h3>1.5 (código de versión 6)</h3>
- <p><a href="https://gitweb.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=b0a048867d5582bc693ba8699a75aa93b4fa1b69">5 de mayo de 2016</a> - API mínimo 15, API dirigido 23</p>
+ <p><a href="https://gitweb.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=b0a048867d5582bc693ba8699a75aa93b4fa1b69">5 de mayo de 2016</a> - API mínimo 15, API objetivo 23</p>
<ul>
<li>Añadir la opción para deshabilitar “Deslizar para actualizar” para que ciertas páginas web, como Mapas de Google, funcionen correctamente.</li>
</ul>
<h3>1.4 (código de versión 5)</h3>
- <p><a href="https://gitweb.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=58e6c22da860871eadd1cbf214a30e88ced4f19e">28 de abril de 2016</a> - API mínimo 15, API dirigido 23</p>
+ <p><a href="https://gitweb.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=58e6c22da860871eadd1cbf214a30e88ced4f19e">28 de abril de 2016</a> - API mínimo 15, API objetivo 23</p>
<ul>
<li>Añadir controles para <a href="https://redmine.stoutner.com/issues/21">cookies de terceras partes</a>.</li>
<li>Corregir el ejecutar videos en pantalla completa.</li>
</ul>
<h3>1.3 (código de versión 4)</h3>
- <p><a href="https://gitweb.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=4f704be746c00c0a29a52c28646e6d7cf2f9c53c">7 de abril de 2016</a> - API mínimo 15, API dirigido 23</p>
+ <p><a href="https://gitweb.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=4f704be746c00c0a29a52c28646e6d7cf2f9c53c">7 de abril de 2016</a> - API mínimo 15, API objetivo 23</p>
<ul>
<li>Crear un <a href="https://redmine.stoutner.com/issues/17">cajón de navegación</a>.</li>
</ul>
<h3>1.2 (código de versión 3)</h3>
- <p><a href="https://gitweb.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=bde6908fee004715f0125ab2d51016dd63a956f4">23 de marzo de 2016</a> - API mínimo 15, API dirigido 23</p>
+ <p><a href="https://gitweb.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=bde6908fee004715f0125ab2d51016dd63a956f4">23 de marzo de 2016</a> - API mínimo 15, API objetivo 23</p>
<ul>
<li>Actualizar el icono principal para que sea más grande.</li>
<li>Reemplazar todos los mensajes de tipo “toast” con <a href="https://redmine.stoutner.com/issues/12">“snackbars”</a>.</li>
</ul>
<h3>1.1 (código de versión 2)</h3>
- <p><a href="https://gitweb.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=f56d4111a627bebdb7f181da062253b3e6145381">9 de marzo de 2016</a> - API mínimo 10, API dirigido 23</p>
+ <p><a href="https://gitweb.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=f56d4111a627bebdb7f181da062253b3e6145381">9 de marzo de 2016</a> - API mínimo 10, API objetivo 23</p>
<ul>
<li>Separar los sabores estándar y gratuito para que Navegador Privado sea compatible con F-Droid.</li>
</ul>
<h3>1.0 (código de versión 1)</h3>
- <p><a href="https://gitweb.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=6f7130bc4218755bea242a2108e4c4ad6f63dcf9">24 de febrero de 2016</a> - API mínimo 10, API dirigido 23</p>
+ <p><a href="https://gitweb.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=6f7130bc4218755bea242a2108e4c4ad6f63dcf9">24 de febrero de 2016</a> - API mínimo 10, API objetivo 23</p>
<ul>
<li>Controlar JavaScript, almacenamiento DOM, y cookies.</li>
<li>Establecer el estado por defecto de JavaScript, almacenamiento DOM, y cookies.</li>
<h3>Licencia</h3>
<p>Navegador Privado está liberado bajo la licencia <a href="https://www.gnu.org/licenses/gpl-3.0.html">GPLv3+</a>.
El texto completo de la licencia se encuentra en la parte inferior de este documento (se deja en el idioma original).
- El código fuente está disponible en <a href="https://git.stoutner.com/?p=PrivacyBrowser.git;a=summary">git.stoutner.com</a>.</p>
+ El código fuente está disponible en <a href="https://gitweb.stoutner.com/?p=PrivacyBrowser.git;a=summary">gitweb.stoutner.com</a>.</p>
<h3>Listas de bloqueo</h3>
<p><a href="https://easylist.to/easylist/easylist.txt">EasyList</a> y <a href="https://easylist.to/easylist/easyprivacy.txt">EasyPrivacy</a>
<h4><a href="https://www.stoutner.com/category/privacy-browser/"><svg class="links"><use href="../shared_images/chrome_reader_mode.svg#icon"/></svg></a>
<a href="https://www.stoutner.com/category/privacy-browser/">Noticias</a></h4>
- <h4><a href="https://www.stoutner.com/category/roadmap/"><svg class="links"><use href="../shared_images/map.svg#icon"/></svg></a>
- <a href="https://www.stoutner.com/category/roadmap/">Hoja de ruta</a></h4>
+ <h4><a href="https://www.stoutner.com/category/privacy-browser-roadmap/"><svg class="links"><use href="../shared_images/map.svg#icon"/></svg></a>
+ <a href="https://www.stoutner.com/category/privacy-browser-roadmap/">Hoja de ruta</a></h4>
<h4><a href="https://fosstodon.org/@privacybrowser"><svg class="links"><use href="../shared_images/mastodon.svg#icon"/></svg></a>
<a href="https://fosstodon.org/@privacybrowser">Fosstodon</a></h4>
<h3>Google Play</h3>
- <p>Google Play tiene su <a href="https://www.google.com/intl/en/policies/privacy/">propia política de privacidad</a>.
+ <p>Google Play tiene su <a href="https://policies.google.com/privacy">propia política de privacidad</a>.
Google proporciona <em>información resumida y anónima de instalación</em> a los desarrolladores, incluyendo el número de instalaciones, organizadas por las siguientes categorías.</p>
<ul>
<li><item>Versión de Android</item> (p.ej. Android 7.1)</li>
<h3>Calificaciones de Google Play</h3>
- <p>Google Play tiene su <a href="https://www.google.com/intl/en/policies/privacy/">propia política de privacidad</a>.
+ <p>Google Play tiene su <a href="https://policies.google.com/privacy">propia política de privacidad</a>.
Google proporciona a los desarrolladores <em>resúmenes anónimos</em> de la siguiente información relativa a las valoraciones de los usuarios.</p>
<ul>
<li><item>País</item> (p.ej. Estados Unidos)</li>
<h3>Comentarios de Google Play</h3>
- <p>Google Play tiene su <a href="https://www.google.com/intl/en/policies/privacy/">propia política de privacidad</a>.
+ <p>Google Play tiene su <a href="https://policies.google.com/privacy">propia política de privacidad</a>.
Además del nombre del comentador, la calificación y el texto del comentario (las cuales están disponibles públicamente), Google proporciona alguna o toda la siguiente información al desarrollador.</p>
<ul>
<li><item>Código de versión</item> (p.ej. 7)</li>
<h3>Licence</h3>
<p>rivacy Browser est publié sous la <a href="https://www.gnu.org/licenses/gpl-3.0.html">licence GPLv3+</a>. Le texte complet de la licence est ci-dessous.
- Le code source est disponible à partir de <a href="https://git.stoutner.com/?p=PrivacyBrowser.git;a=summary">git.stoutner.com</a>.</p>
+ Le code source est disponible à partir de <a href="https://gitweb.stoutner.com/?p=PrivacyBrowser.git;a=summary">gitweb.stoutner.com</a>.</p>
<h3>Listes de blocage</h3>
<p><a href="https://easylist.to/easylist/easylist.txt">EasyList</a> et <a href="https://easylist.to/easylist/easyprivacy.txt">EasyPrivacy</a>
<h4><a href="https://www.stoutner.com/category/privacy-browser/"><svg class="links"><use href="../shared_images/chrome_reader_mode.svg#icon"/></svg></a>
<a href="https://www.stoutner.com/category/privacy-browser/">Actualités</a></h4>
- <h4><a href="https://www.stoutner.com/category/roadmap/"><svg class="links"><use href="../shared_images/map.svg#icon"/></svg></a>
- <a href="https://www.stoutner.com/category/roadmap/">Roadmap</a></h4>
+ <h4><a href="https://www.stoutner.com/category/privacy-browser-roadmap/"><svg class="links"><use href="../shared_images/map.svg#icon"/></svg></a>
+ <a href="https://www.stoutner.com/category/privacy-browser-roadmap/">Roadmap</a></h4>
<h4><a href="https://fosstodon.org/@privacybrowser"><svg class="links"><use href="../shared_images/mastodon.svg#icon"/></svg></a>
<a href="https://fosstodon.org/@privacybrowser">Fosstodon</a></h4>
<h3>Google Play</h3>
- <p>Google Play a sa <a href="https://www.google.com/intl/en/policies/privacy/"> propre règle de confidentialité </a>.
+ <p>Google Play a sa <a href="https://policies.google.com/privacy"> propre règle de confidentialité </a>.
Google fournit aux développeurs des <em>informations d'installation récapitulatives et anonymisées</em>, notamment le nombre d'installations organisées selon les catégories suivantes.</p>
<ul>
<li><item>Version d'Android</item> (ex. Android 7.1)</li>
<h3>Notes Google Play</h3>
- <p>Google Play a sa <a href="https://www.google.com/intl/en/policies/privacy/">propre règle de confidentialité </a>.
+ <p>Google Play a sa <a href="https://policies.google.com/privacy">propre règle de confidentialité </a>.
Google fournit aux développeurs des <em>résumés anonymisés</em> des informations suivantes relatives aux évaluations des utilisateurs.</p>
<ul>
<li><item>Pays</item> (ex. France)</li>
<h3>Avis Google Play</h3>
- <p>Google Play a sa <a href="https://www.google.com/intl/en/policies/privacy/">propre règle de confidentialité</a>.
+ <p>Google Play a sa <a href="https://policies.google.com/privacy">propre règle de confidentialité</a>.
Outre le nom du réviseur, l'évaluation et le texte de la révision (tous disponibles publiquement), Google fournit au développeur tout ou partie des informations suivantes.</p>
<ul>
<li><item>Code de Version</item> (ex. 7)</li>
Lo scopo di questa traduzione è unicamente quello di aiutare gli utenti di lingua italiana a comprendere la GNU GPL, e pertanto in caso di eventuali discrepanze tra
traduzione e versione originale in inglese, prevarrà e sarà unicamente la versione originale ad avere valore legale.
E' inoltre ammessa la modifica e la pubblicazione di questa traduzione, ma solamente in accordo ai termini <a href="https://www.gnu.org/licenses/translations.html">qui</a> riportati.
- Il codice sorgente è disponibile su <a href="https://git.stoutner.com/?p=PrivacyBrowser.git;a=summary">git.stoutner.com</a>.</p>
+ Il codice sorgente è disponibile su <a href="https://gitweb.stoutner.com/?p=PrivacyBrowser.git;a=summary">gitweb.stoutner.com</a>.</p>
<h3>Blocklist</h3>
<p><a href="https://easylist.to/easylist/easylist.txt">EasyList</a> e <a href="https://easylist.to/easylist/easyprivacy.txt">EasyPrivacy</a>
<h4><a href="https://www.stoutner.com/category/privacy-browser/"><svg class="links"><use href="../shared_images/chrome_reader_mode.svg#icon"/></svg></a>
<a href="https://www.stoutner.com/category/privacy-browser/">Novità</a></h4>
- <h4><a href="https://www.stoutner.com/category/roadmap/"><svg class="links"><use href="../shared_images/map.svg#icon"/></svg></a>
- <a href="https://www.stoutner.com/category/roadmap/">Roadmap</a></h4>
+ <h4><a href="https://www.stoutner.com/category/privacy-browser-roadmap/"><svg class="links"><use href="../shared_images/map.svg#icon"/></svg></a>
+ <a href="https://www.stoutner.com/category/privacy-browser-roadmap/">Roadmap</a></h4>
<h4><a href="https://fosstodon.org/@privacybrowser"><svg class="links"><use href="../shared_images/mastodon.svg#icon"/></svg></a>
<a href="https://fosstodon.org/@privacybrowser">Fosstodon</a></h4>
<h3>Google Play</h3>
- <p>Google Play ha una <a href="https://www.google.com/intl/en/policies/privacy/">propria privacy policy</a>.
+ <p>Google Play ha una <a href="https://policies.google.com/privacy">propria privacy policy</a>.
Google fornisce agli sviluppatori <em>informazioni anonime sulle installazioni</em>, incluso il numero di installazioni, secondo le seguenti categorie.</p>
<ul>
<li><item>Versione Android</item> (es. Android 7.1)</li>
<h3>Ratings di Google Play</h3>
- <p>Google Play ha una <a href="https://www.google.com/intl/en/policies/privacy/">propria privacy policy</a>.
+ <p>Google Play ha una <a href="https://policies.google.com/privacy">propria privacy policy</a>.
Google fornisce agli sviluppatori <em>sintesi anonime</em> delle seguenti informazioni collegate ai ratings degli utenti.</p>
<ul>
<li><item>Nazione</item> (es. United States)</li>
<h3>Recensioni di Google Play</h3>
- <p>Google Play ha una <a href="https://www.google.com/intl/en/policies/privacy/">propria privacy policy</a>.
+ <p>Google Play ha una <a href="https://policies.google.com/privacy">propria privacy policy</a>.
Oltre al nome del recensore, al rating, e al testo della recensione (i quali sono tutti pubblicamente disponibili), Google fornisce alcune o tutte le seguenti informazioni allo sviluppatore.</p>
<ul>
<li><item>Codice Versione</item> (es. 7)</li>
<h3>License</h3>
<p>Privacy Browser is released under the <a href="https://www.gnu.org/licenses/gpl-3.0.html">GPLv3+ license</a>. The full text of the license is below.
- The source code is available from <a href="https://git.stoutner.com/?p=PrivacyBrowser.git;a=summary">git.stoutner.com</a>.</p>
+ The source code is available from <a href="https://gitweb.stoutner.com/?p=PrivacyBrowser.git;a=summary">gitweb.stoutner.com</a>.</p>
<h3>Blocklists</h3>
<p><a href="https://easylist.to/easylist/easylist.txt">EasyList</a> and <a href="https://easylist.to/easylist/easyprivacy.txt">EasyPrivacy</a>
<h4><a href="https://www.stoutner.com/category/privacy-browser/"><svg class="links"><use href="../shared_images/chrome_reader_mode.svg#icon"/></svg></a>
<a href="https://www.stoutner.com/category/privacy-browser/">News</a></h4>
- <h4><a href="https://www.stoutner.com/category/roadmap/"><svg class="links"><use href="../shared_images/map.svg#icon"/></svg></a>
- <a href="https://www.stoutner.com/category/roadmap/">Roadmap</a></h4>
+ <h4><a href="https://www.stoutner.com/category/privacy-browser-roadmap/"><svg class="links"><use href="../shared_images/map.svg#icon"/></svg></a>
+ <a href="https://www.stoutner.com/category/privacy-browser-roadmap/">Roadmap</a></h4>
<h4><a href="https://fosstodon.org/@privacybrowser"><svg class="links"><use href="../shared_images/mastodon.svg#icon"/></svg></a>
<a href="https://fosstodon.org/@privacybrowser">Fosstodon</a></h4>
<h3>Google Play</h3>
- <p>Google Play has its <a href="https://www.google.com/intl/en/policies/privacy/">own privacy policy</a>.
+ <p>Google Play has its <a href="https://policies.google.com/privacy">own privacy policy</a>.
Google provides <em>anonymized summary installation information</em> to developers, including the number of installs organized by the following categories.</p>
<ul>
<li><item>Android version</item> (eg. Android 7.1)</li>
<h3>Google Play Ratings</h3>
- <p>Google Play has its <a href="https://www.google.com/intl/en/policies/privacy/">own privacy policy</a>.
+ <p>Google Play has its <a href="https://policies.google.com/privacy">own privacy policy</a>.
Google provides developers with <em>anonymized summaries</em> of the following information related to user ratings.</p>
<ul>
<li><item>Country</item> (eg. United States)</li>
<h3>Google Play Reviews</h3>
- <p>Google Play has its <a href="https://www.google.com/intl/en/policies/privacy/">own privacy policy</a>.
+ <p>Google Play has its <a href="https://policies.google.com/privacy">own privacy policy</a>.
In addition to the name of the reviewer, the rating, and the text of the review (which are all available publicly), Google provides some or all of the following information to the developer.</p>
<ul>
<li><item>Version code</item> (eg. 7)</li>
<h3>Лицензия</h3>
<p>Privacy Browser выпущен под <a href="https://www.gnu.org/licenses/gpl-3.0.html">лицензией GPLv3+</a>. Полный текст лицензии приведен ниже.
- Исходный код доступен на <a href="https://git.stoutner.com/?p=PrivacyBrowser.git;a=summary">git.stoutner.com</a>.</p>
+ Исходный код доступен на <a href="https://gitweb.stoutner.com/?p=PrivacyBrowser.git;a=summary">gitweb.stoutner.com</a>.</p>
<h3>Списки блокировки</h3>
<p><a href="https://easylist.to/easylist/easylist.txt">EasyList</a> и <a href="https://easylist.to/easylist/easyprivacy.txt">EasyPrivacy</a>
<h4><a href="https://www.stoutner.com/category/privacy-browser/"><svg class="links"><use href="../shared_images/chrome_reader_mode.svg#icon"/></svg></a>
<a href="https://www.stoutner.com/category/privacy-browser/">Новости</a></h4>
- <h4><a href="https://www.stoutner.com/category/roadmap/"><svg class="links"><use href="../shared_images/map.svg#icon"/></svg></a>
- <a href="https://www.stoutner.com/category/roadmap/">Дорожная карта</a></h4>
+ <h4><a href="https://www.stoutner.com/category/privacy-browser-roadmap/"><svg class="links"><use href="../shared_images/map.svg#icon"/></svg></a>
+ <a href="https://www.stoutner.com/category/privacy-browser-roadmap/">Дорожная карта</a></h4>
<h4><a href="https://fosstodon.org/@privacybrowser"><svg class="links"><use href="../shared_images/mastodon.svg#icon"/></svg></a>
<a href="https://fosstodon.org/@privacybrowser">Fosstodon</a></h4>
<h3>Google Play</h3>
- <p>Google Play имеет <a href="https://www.google.com/intl/en/policies/privacy/">собственную политику конфиденциальности</a>.
+ <p>Google Play имеет <a href="https://policies.google.com/privacy">собственную политику конфиденциальности</a>.
Google предоставляет разработчикам <em>сводную анонимизированную информацию об установке</em>, включающую их количество, организованную по следующим категориям.</p>
<ul>
<li><item>Версия Android</item> (напр. Android 7.1)</li>
<h3>Рейтинги Google Play</h3>
- <p>Google Play имеет <a href="https://www.google.com/intl/en/policies/privacy/">собственную политику конфиденциальности</a>.
+ <p>Google Play имеет <a href="https://policies.google.com/privacy">собственную политику конфиденциальности</a>.
Google предоставляет разработчикам <em>анонимизированные сводки</em> следующей информации, связанной с пользовательскими рейтингами.</p>
<ul>
<li><item>Страна</item> (напр. Russian Federation)</li>
<h3>Отзывы Google Play</h3>
- <p>Google Play имеет <a href="https://www.google.com/intl/en/policies/privacy/">собственную политику конфиденциальности</a>.
+ <p>Google Play имеет <a href="https://policies.google.com/privacy">собственную политику конфиденциальности</a>.
Помимо имени автора отзыва, оценки и текста отзыва (все они доступны публично), Google предоставляет разработчику некоторую или всю следующую информацию.</p>
<ul>
<li><item>Код версии</item> (напр. 7)</li>
<h3>Lisans</h3>
<p>Privacy Browser <a href="https://www.gnu.org/licenses/gpl-3.0.html">GPLv3+</a> lisansı altında yayınlandı. Lisansın tam metni aşağıdadır.
- Kaynak kodu <a href="https://git.stoutner.com/?p=PrivacyBrowser.git;a=summary">git.stoutner.com</a> adresinden temin edilebilir.</p>
+ Kaynak kodu <a href="https://gitweb.stoutner.com/?p=PrivacyBrowser.git;a=summary">gitweb.stoutner.com</a> adresinden temin edilebilir.</p>
<h3>Engel Listeleri</h3>
<p><a href="https://easylist.to/easylist/easylist.txt">EasyList</a> ve <a href="https://easylist.to/easylist/easyprivacy.txt">EasyPrivacy</a> listeleri
<h4><a href="https://www.stoutner.com/category/privacy-browser/"><svg class="links"><use href="../shared_images/chrome_reader_mode.svg#icon"/></svg></a>
<a href="https://www.stoutner.com/category/privacy-browser/">Haber</a></h4>
- <h4><a href="https://www.stoutner.com/category/roadmap/"><svg class="links"><use href="../shared_images/map.svg#icon"/></svg></a>
- <a href="https://www.stoutner.com/category/roadmap/">Yol Haritası</a></h4>
+ <h4><a href="https://www.stoutner.com/category/privacy-browser-roadmap/"><svg class="links"><use href="../shared_images/map.svg#icon"/></svg></a>
+ <a href="https://www.stoutner.com/category/privacy-browser-roadmap/">Yol Haritası</a></h4>
<h4><a href="https://fosstodon.org/@privacybrowser"><svg class="links"><use href="../shared_images/mastodon.svg#icon"/></svg></a>
<a href="https://fosstodon.org/@privacybrowser">Fosstodon</a></h4>
<h3>Google Play</h3>
- <p>Google Play <a href="https://www.google.com/intl/en/policies/privacy/">kendisine özgü gizlilik politikasına sahiptir</a>.
+ <p>Google Play <a href="https://policies.google.com/privacy">kendisine özgü gizlilik politikasına sahiptir</a>.
Google, aşağıdaki kategorilerce düzenlenen, indirme sayıları da dahil, <em>anonimleştirilmiş özet kurulum bilgilerini</em> geliştiricilere verir.</p>
<ul>
<li><item>Android versiyonu</item> (örn. Android 7.1)</li>
<h3>Google Play Derecelendirmeleri</h3>
- <p>Google Play <a href="https://www.google.com/intl/en/policies/privacy/">kendisine özgü gizlilik politikasına sahiptir</a>.
+ <p>Google Play <a href="https://policies.google.com/privacy">kendisine özgü gizlilik politikasına sahiptir</a>.
Google, kullanıcı değerlendirmeleriyle ilişkili aşağıdaki bilgilerin <em>anonimleştirilmiş özetlerini</em> geliştiricilere verir.</p>
<ul>
<li><item>Ülke</item> (örn. Amerika Birleşik Devletleri)</li>
<h3>Google Play Kritikleri</h3>
- <p>Google Play <a href="https://www.google.com/intl/en/policies/privacy/">kendisine özgü gizlilik politikasına sahiptir</a>.
+ <p>Google Play <a href="https://policies.google.com/privacy">kendisine özgü gizlilik politikasına sahiptir</a>.
Google, inceleme yapan kişinin ismine, değerlendirmeye ve inceleme metninine (tümü halka açıktır) ek olarak, aşağıdaki bilgilerin bir kısmını ya da tamamını geliştiricilere verir.</p>
<ul>
<li><item>Versiyon kodu</item> (örn. 7)</li>
// Set the content view.
if (bottomAppBar) {
- setContentView(R.layout.about_coordinatorlayout_bottom_appbar)
+ setContentView(R.layout.about_bottom_appbar)
} else {
- setContentView(R.layout.about_coordinatorlayout_top_appbar)
+ setContentView(R.layout.about_top_appbar)
}
// Get handles for the views.
val aboutTabLayout = findViewById<TabLayout>(R.id.about_tablayout)
val aboutViewPager = findViewById<ViewPager>(R.id.about_viewpager)
- // Set the action bar. `SupportActionBar` must be used until the minimum API is >= 21.
+ // Set the support action bar.
setSupportActionBar(toolbar)
// Get a handle for the action bar.
val actionBar = supportActionBar!!
- // Display the home arrow on action bar.
+ // Display the home arrow on the action bar.
actionBar.setDisplayHomeAsUpEnabled(true)
// Initialize the about pager adapter.
SaveAboutVersionImage(this, fileNameString, aboutVersionLinearLayout).execute()
}
}
-}
\ No newline at end of file
+}
// Set the content according to the app bar position.
if (bottomAppBar) {
// Set the content view.
- setContentView(R.layout.bookmarks_coordinatorlayout_bottom_appbar);
+ setContentView(R.layout.bookmarks_bottom_appbar);
} else {
// `Window.FEATURE_ACTION_MODE_OVERLAY` makes the contextual action mode cover the support action bar. It must be requested before the content is set.
supportRequestWindowFeature(Window.FEATURE_ACTION_MODE_OVERLAY);
// Set the content view.
- setContentView(R.layout.bookmarks_coordinatorlayout_top_appbar);
+ setContentView(R.layout.bookmarks_top_appbar);
}
// Get a handle for the toolbar.
// Set the view according to the theme.
if (bottomAppBar) {
// Set the content view.
- setContentView(R.layout.bookmarks_databaseview_coordinatorlayout_bottom_appbar);
+ setContentView(R.layout.bookmarks_databaseview_bottom_appbar);
} else {
// `Window.FEATURE_ACTION_MODE_OVERLAY` makes the contextual action mode cover the support action bar. It must be requested before the content is set.
supportRequestWindowFeature(Window.FEATURE_ACTION_MODE_OVERLAY);
// Set the content view.
- setContentView(R.layout.bookmarks_databaseview_coordinatorlayout_top_appbar);
+ setContentView(R.layout.bookmarks_databaseview_top_appbar);
}
// Get a handle for the toolbar.
// Set the view.
if (bottomAppBar) {
- setContentView(R.layout.domains_coordinatorlayout_bottom_appbar);
+ setContentView(R.layout.domains_bottom_appbar);
} else {
- setContentView(R.layout.domains_coordinatorlayout_top_appbar);
+ setContentView(R.layout.domains_top_appbar);
}
// Populate the class variables.
// Set the content view.
if (bottomAppBar) {
- setContentView(R.layout.guide_coordinatorlayout_bottom_appbar);
+ setContentView(R.layout.guide_bottom_appbar);
} else {
- setContentView(R.layout.guide_coordinatorlayout_top_appbar);
+ setContentView(R.layout.guide_top_appbar);
}
// Get a handle for the toolbar.
// Set the content view.
if (bottomAppBar) {
- setContentView(R.layout.import_export_coordinatorlayout_bottom_appbar);
+ setContentView(R.layout.import_export_bottom_appbar);
} else {
- setContentView(R.layout.import_export_coordinatorlayout_top_appbar);
+ setContentView(R.layout.import_export_top_appbar);
}
// Get a handle for the toolbar.
// Set the content view.
if (bottomAppBar) {
- setContentView(R.layout.logcat_coordinatorlayout_bottom_appbar);
+ setContentView(R.layout.logcat_bottom_appbar);
} else {
- setContentView(R.layout.logcat_coordinatorlayout_top_appbar);
+ setContentView(R.layout.logcat_top_appbar);
}
// Get handles for the views.
tabLayout = findViewById(R.id.tablayout);
swipeRefreshLayout = findViewById(R.id.swiperefreshlayout);
webViewPager = findViewById(R.id.webviewpager);
- fullScreenVideoFrameLayout = findViewById(R.id.full_screen_video_framelayout);
-
- // Get a handle for the navigation view.
NavigationView navigationView = findViewById(R.id.navigationview);
+ fullScreenVideoFrameLayout = findViewById(R.id.full_screen_video_framelayout);
// Get a handle for the navigation menu.
Menu navigationMenu = navigationView.getMenu();
inputMethodManager.hideSoftInputFromWindow(currentWebView.getWindowToken(), 0);
}
- // Clear the focus from from the URL text box and the WebView. This removes any text selection markers and context menus, which otherwise draw above the open drawers.
+ // Clear the focus from from the URL text box. This removes any text selection markers and context menus, which otherwise draw above the open drawers.
urlEditText.clearFocus();
- currentWebView.clearFocus();
+
+ // Clear the focus from from the WebView if it is not null, which can happen if a user opens a drawer while the browser is being resumed.
+ if (currentWebView != null) {
+ // Clearing the focus from the WebView removes any text selection markers and context menus, which otherwise draw above the open drawers.
+ currentWebView.clearFocus();
+ }
}
}
});
// Set the content view.
if (bottomAppBar) {
- setContentView(R.layout.requests_coordinatorlayout_bottom_appbar);
+ setContentView(R.layout.requests_bottom_appbar);
} else {
- setContentView(R.layout.requests_coordinatorlayout_top_appbar);
+ setContentView(R.layout.requests_top_appbar);
}
// Use the AndroidX toolbar until the minimum API is >= 21.
// Set the content view.
if (bottomAppBar) {
- setContentView(R.layout.view_source_coordinatorlayout_bottom_appbar)
+ setContentView(R.layout.view_source_bottom_appbar)
} else {
- setContentView(R.layout.view_source_coordinatorlayout_top_appbar)
+ setContentView(R.layout.view_source_top_appbar)
}
// Get a handle for the toolbar.
class AboutViewSourceDialog : DialogFragment() {
override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
// Use a builder to create the alert dialog.
- val dialogBuilder: AlertDialog.Builder = AlertDialog.Builder(requireContext(), R.style.PrivacyBrowserAlertDialog)
+ val dialogBuilder = AlertDialog.Builder(requireContext(), R.style.PrivacyBrowserAlertDialog)
// Set the icon according to the theme.
dialogBuilder.setIconAttribute(R.attr.aboutBlueIcon)
package com.stoutner.privacybrowser.dialogs
-import android.annotation.SuppressLint
import android.app.Dialog
import android.content.Context
import android.content.DialogInterface
}
}
- // `@SuppressLint("InflateParams")` removes the warning about using `null` as the parent view group when inflating the alert dialog.
- @SuppressLint("InflateParams")
override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
// Get the arguments.
val arguments = requireArguments()
val urlString = arguments.getString(URL_STRING)
// Use an alert dialog builder to create the alert dialog.
- val dialogBuilder: AlertDialog.Builder = AlertDialog.Builder(requireContext(), R.style.PrivacyBrowserAlertDialog)
+ val dialogBuilder = AlertDialog.Builder(requireContext(), R.style.PrivacyBrowserAlertDialog)
// Set the icon according to the theme.
dialogBuilder.setIconAttribute(R.attr.domainsBlueIcon)
// Set the title.
dialogBuilder.setTitle(R.string.add_domain)
- // Set the view. The parent view is `null` because it will be assigned by the alert dialog.
- dialogBuilder.setView(layoutInflater.inflate(R.layout.add_domain_dialog, null))
+ // Set the view.
+ dialogBuilder.setView(R.layout.add_domain_dialog)
// Set the cancel button listener. Using `null` as the listener closes the dialog without doing anything else.
dialogBuilder.setNegativeButton(R.string.cancel, null)
package com.stoutner.privacybrowser.dialogs
-import android.annotation.SuppressLint
import android.app.Dialog
import android.content.Context
import android.content.DialogInterface
}
}
- // `@SuppressLint("InflateParams")` removes the warning about using `null` as the parent view group when inflating the alert dialog.
- @SuppressLint("InflateParams")
override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
// Get the arguments.
val arguments = requireArguments()
// Set the icon.
dialogBuilder.setIcon(favoriteIconDrawable)
- // Set the view. The parent view is `null` because it will be assigned by the alert dialog.
- dialogBuilder.setView(layoutInflater.inflate(R.layout.create_bookmark_dialog, null))
+ // Set the view.
+ dialogBuilder.setView(R.layout.create_bookmark_dialog)
// Set a listener on the cancel button. Using `null` as the listener closes the dialog without doing anything else.
dialogBuilder.setNegativeButton(R.string.cancel, null)
package com.stoutner.privacybrowser.dialogs
-import android.annotation.SuppressLint
import android.app.Dialog
import android.content.Context
import android.content.DialogInterface
}
}
- // `@SuppressLint("InflateParams")` removes the warning about using `null` as the parent view group when inflating the alert dialog.
- @SuppressLint("InflateParams")
override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
// Get the arguments.
val arguments = requireArguments()
// Set the title.
dialogBuilder.setTitle(R.string.create_folder)
- // Set the view. The parent view is null because it will be assigned by the alert dialog.
- dialogBuilder.setView(layoutInflater.inflate(R.layout.create_bookmark_folder_dialog, null))
+ // Set the view.
+ dialogBuilder.setView(R.layout.create_bookmark_folder_dialog)
// Set a listener on the cancel button. Using `null` as the listener closes the dialog without doing anything else.
dialogBuilder.setNegativeButton(R.string.cancel, null)
package com.stoutner.privacybrowser.dialogs
-import android.annotation.SuppressLint
import android.app.Dialog
import android.content.DialogInterface
import android.content.Intent
}
}
- // `@SuppressLint("InflateParams")` removes the warning about using `null` as the parent view group when inflating the alert dialog.
- @SuppressLint("InflateParams")
override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
// Get the arguments.
val arguments = requireArguments()
// Set the icon.
dialogBuilder.setIcon(favoriteIconDrawable)
- // Set the view. The parent view is null because it will be assigned by the alert dialog.
- dialogBuilder.setView(layoutInflater.inflate(R.layout.create_home_screen_shortcut_dialog, null))
+ // Set the view.
+ dialogBuilder.setView(R.layout.create_home_screen_shortcut_dialog)
// Set a listener on the close button. Using null closes the dialog without doing anything else.
dialogBuilder.setNegativeButton(R.string.cancel, null)
package com.stoutner.privacybrowser.dialogs
-import android.annotation.SuppressLint
import android.app.Dialog
import android.content.Context
import android.content.DialogInterface
}
}
- // `@SuppressLint("InflateParams")` removes the warning about using `null` as the parent view group when inflating the alert dialog.
- @SuppressLint("InflateParams")
override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
// Get the arguments.
val arguments = requireArguments()
// Set the title.
dialogBuilder.setTitle(R.string.edit_bookmark)
- // Set the view. The parent view is `null` because it will be assigned by the alert dialog.
- dialogBuilder.setView(layoutInflater.inflate(R.layout.edit_bookmark_databaseview_dialog, null))
+ // Set the view.
+ dialogBuilder.setView(R.layout.edit_bookmark_databaseview_dialog)
// Set the cancel button listener. Using `null` as the listener closes the dialog without doing anything else.
dialogBuilder.setNegativeButton(R.string.cancel, null)
package com.stoutner.privacybrowser.dialogs
-import android.annotation.SuppressLint
import android.app.Dialog
import android.content.Context
import android.content.DialogInterface
}
}
- // `@SuppressLint("InflateParams")` removes the warning about using `null` as the parent view group when inflating the alert dialog.
- @SuppressLint("InflateParams")
override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
// Get the arguments.
val arguments = requireArguments()
// Set the title.
dialogBuilder.setTitle(R.string.edit_bookmark)
- // Set the view. The parent view is null because it will be assigned by the alert dialog.
- dialogBuilder.setView(layoutInflater.inflate(R.layout.edit_bookmark_dialog, null))
+ // Set the view.
+ dialogBuilder.setView(R.layout.edit_bookmark_dialog)
// Set the cancel button listener. Using `null` as the listener closes the dialog without doing anything else.
dialogBuilder.setNegativeButton(R.string.cancel, null)
package com.stoutner.privacybrowser.dialogs
-import android.annotation.SuppressLint
import android.app.Dialog
import android.content.Context
import android.content.DialogInterface
}
}
- // `@SuppressLint("InflateParams")` removes the warning about using `null` as the parent view group when inflating the alert dialog.
- @SuppressLint("InflateParams")
override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
// Get a handle for the arguments.
val arguments = requireArguments()
// Set the title.
dialogBuilder.setTitle(R.string.edit_folder)
- // Set the view. The parent view is `null` because it will be assigned by the alert dialog.
- dialogBuilder.setView(layoutInflater.inflate(R.layout.edit_bookmark_folder_databaseview_dialog, null))
+ // Set the view.
+ dialogBuilder.setView(R.layout.edit_bookmark_folder_databaseview_dialog)
// Set the cancel button listener. Using `null` as the listener closes the dialog without doing anything else.
dialogBuilder.setNegativeButton(R.string.cancel, null)
package com.stoutner.privacybrowser.dialogs
-import android.annotation.SuppressLint
import android.app.Dialog
import android.content.Context
import android.content.DialogInterface
}
}
- // `@SuppressLint("InflateParams")` removes the warning about using `null` as the parent view group when inflating the alert dialog.
- @SuppressLint("InflateParams")
override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
// Get a handle for the arguments.
val arguments = requireArguments()
// Set the title.
dialogBuilder.setTitle(R.string.edit_folder)
- // Set the view. The parent view is `null` because it will be assigned by the alert dialog.
- dialogBuilder.setView(layoutInflater.inflate(R.layout.edit_bookmark_folder_dialog, null))
+ // Set the view.
+ dialogBuilder.setView(R.layout.edit_bookmark_folder_dialog)
// Set the cancel button listener. Using `null` as the listener closes the dialog without doing anything else.
dialogBuilder.setNegativeButton(R.string.cancel, null)
package com.stoutner.privacybrowser.dialogs
-import android.annotation.SuppressLint
import android.app.Dialog
import android.content.Context
import android.content.DialogInterface
}
}
- // `@SuppressLint("InflateParams")` removes the warning about using null as the parent view group when inflating the alert dialog.
- @SuppressLint("InflateParams")
override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
// Get the current font size from the arguments.
val currentFontSize = requireArguments().getInt(FONT_SIZE)
// Set the title.
dialogBuilder.setTitle(R.string.font_size)
- // Set the view. The parent view is null because it will be assigned by the alert dialog.
- dialogBuilder.setView(layoutInflater.inflate(R.layout.font_size_dialog, null))
+ // Set the view.
+ dialogBuilder.setView(R.layout.font_size_dialog)
// Set the close button listener. Using `null` as the listener closes the dialog without doing anything else.
dialogBuilder.setNegativeButton(R.string.close, null)
package com.stoutner.privacybrowser.dialogs
-import android.annotation.SuppressLint
import android.app.Dialog
import android.content.DialogInterface
import android.content.res.Configuration
}
}
- // `@SuppressLint("InflateParams")` removes the warning about using `null` as the parent view group when inflating the `AlertDialog`.
- @SuppressLint("InflateParams")
override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
// Get a handle for the arguments.
val arguments = requireArguments()
// Set the title.
dialogBuilder.setTitle(R.string.http_authentication)
- // Set the view. The parent view is `null` because it will be assigned by the alert dialog.
- dialogBuilder.setView(layoutInflater.inflate(R.layout.http_authentication_dialog, null))
+ // Set the view.
+ dialogBuilder.setView(R.layout.http_authentication_dialog)
// Set the close button listener.
dialogBuilder.setNegativeButton(R.string.close) { _: DialogInterface?, _: Int ->
package com.stoutner.privacybrowser.dialogs
-import android.annotation.SuppressLint
import android.app.Dialog
import android.content.Context
import android.content.DialogInterface
}
}
- // `@SuppressLint("InflateParams")` removes the warning about using `null` as the parent view group when inflating the alert dialog.
- @SuppressLint("InflateParams")
override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
// Get the data from the arguments.
val currentFolder = requireArguments().getString(CURRENT_FOLDER)!!
// Set the title.
dialogBuilder.setTitle(R.string.move_to_folder)
- // Set the view. The parent view is `null` because it will be assigned by the alert dialog.
- dialogBuilder.setView(layoutInflater.inflate(R.layout.move_to_folder_dialog, null))
+ // Set the view.
+ dialogBuilder.setView(R.layout.move_to_folder_dialog)
// Set the listener for the cancel button. Using `null` as the listener closes the dialog without doing anything else.
dialogBuilder.setNegativeButton(R.string.cancel, null)
package com.stoutner.privacybrowser.dialogs
-import android.annotation.SuppressLint
import android.app.Dialog
import android.content.Context
import android.content.DialogInterface
openListener = context as OpenListener
}
- // `@SuppressLint("InflateParams")` removes the warning about using null as the parent view group when inflating the alert dialog.
- @SuppressLint("InflateParams")
override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
// Use an alert dialog builder to create the alert dialog.
val dialogBuilder = AlertDialog.Builder(requireContext(), R.style.PrivacyBrowserAlertDialog)
// Set the title.
dialogBuilder.setTitle(R.string.open)
- // Set the view. The parent view is null because it will be assigned by the alert dialog.
- dialogBuilder.setView(layoutInflater.inflate(R.layout.open_dialog, null))
+ // Set the view.
+ dialogBuilder.setView(R.layout.open_dialog)
// Set the cancel button listener. Using `null` as the listener closes the dialog without doing anything else.
dialogBuilder.setNegativeButton(R.string.cancel, null)
package com.stoutner.privacybrowser.dialogs
-import android.annotation.SuppressLint
import android.app.Dialog
import android.content.Context
import android.content.DialogInterface
}
}
- // `@SuppressLint("InflateParams")` removes the warning about using `null` as the parent view group when inflating the alert dialog.
- @SuppressLint("InflateParams")
override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
// Get the WebView fragment ID.
val webViewFragmentId = requireArguments().getLong(WEBVIEW_FRAGMENT_ID)
// Set the title.
dialogBuilder.setTitle(R.string.pinned_mismatch)
- // Set the layout. The parent view is `null` because it will be assigned by the alert dialog.
- dialogBuilder.setView(layoutInflater.inflate(R.layout.pinned_mismatch_linearlayout, null))
+ // Set the layout.
+ dialogBuilder.setView(R.layout.pinned_mismatch_linearlayout)
// Set the update button listener.
dialogBuilder.setNeutralButton(R.string.update) { _: DialogInterface?, _: Int ->
}
// Update the IP addresses if they are pinned.
- if (!nestedScrollWebView.pinnedIpAddresses.equals("")) {
+ if (nestedScrollWebView.pinnedIpAddresses != "") {
// Update the pinned IP addresses in the domain database.
domainsDatabaseHelper.updatePinnedIpAddresses(nestedScrollWebView.domainSettingsDatabaseId, nestedScrollWebView. currentIpAddresses)
package com.stoutner.privacybrowser.dialogs
-import android.annotation.SuppressLint
import android.app.Dialog
import android.content.Context
import android.content.DialogInterface
}
}
- // `@SuppressLint("InflateParams")` removes the warning about using null as the parent view group when inflating the alert dialog.
- @SuppressLint("InflateParams")
override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
// Get the arguments from the bundle.
val saveType = requireArguments().getInt(SAVE_TYPE)
}
}
- // Set the view. The parent view is null because it will be assigned by the alert dialog.
- dialogBuilder.setView(layoutInflater.inflate(R.layout.save_dialog, null))
+ // Set the view.
+ dialogBuilder.setView(R.layout.save_dialog)
// Set the cancel button listener. Using `null` as the listener closes the dialog without doing anything else.
dialogBuilder.setNegativeButton(R.string.cancel, null)
package com.stoutner.privacybrowser.dialogs
-import android.annotation.SuppressLint
import android.app.Dialog
import android.content.Context
import android.content.DialogInterface
}
}
- // `@SuppressLint("InflateParams")` removes the warning about using null as the parent view group when inflating the alert dialog.
- @SuppressLint("InflateParams")
override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
// Get the arguments from the bundle.
val saveType = requireArguments().getInt(SAVE_TYPE)
}
}
- // Set the view. The parent view is null because it will be assigned by the alert dialog.
- dialogBuilder.setView(layoutInflater.inflate(R.layout.save_webpage_dialog, null))
+ // Set the view.
+ dialogBuilder.setView(R.layout.save_webpage_dialog)
// Set the cancel button listener. Using `null` as the listener closes the dialog without doing anything else.
dialogBuilder.setNegativeButton(R.string.cancel, null)
package com.stoutner.privacybrowser.dialogs
-import android.annotation.SuppressLint
import android.app.Activity
import android.app.Dialog
import android.content.DialogInterface
}
}
- // `@SuppressLint("InflateParams")` removes the warning about using `null` as the parent view group when inflating the alert dialog.
- @SuppressLint("InflateParams")
override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
// Get the variables from the bundle.
val primaryErrorInt = requireArguments().getInt(PRIMARY_ERROR_INT)
// Set the title.
dialogBuilder.setTitle(R.string.ssl_certificate_error)
- // Set the view. The parent view is null because it will be assigned by the alert dialog.
- dialogBuilder.setView(layoutInflater.inflate(R.layout.ssl_certificate_error, null))
+ // Set the view.
+ dialogBuilder.setView(R.layout.ssl_certificate_error)
// Set the cancel button listener.
dialogBuilder.setNegativeButton(R.string.cancel) { _: DialogInterface?, _: Int ->
// Check to see if the app has been restarted.
if (savedInstanceState == null) { // The app has not been restarted.
// Use a builder to create the alert dialog.
- val dialogBuilder: AlertDialog.Builder = AlertDialog.Builder(requireContext(), R.style.PrivacyBrowserAlertDialog)
+ val dialogBuilder = AlertDialog.Builder(requireContext(), R.style.PrivacyBrowserAlertDialog)
// Set the icon according to the theme.
dialogBuilder.setIconAttribute(R.attr.sslCertificateBlueIcon)
package com.stoutner.privacybrowser.dialogs
-import android.annotation.SuppressLint
import android.app.Dialog
import android.content.Context
import android.content.DialogInterface
}
}
- // `@SuppressLint("InflateParams")` removes the warning about using null as the parent view group when inflating the alert dialog.
- @SuppressLint("InflateParams")
override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
// Get the WebView fragment ID from the arguments.
val webViewFragmentId = requireArguments().getLong(WEBVIEW_FRAGMENT_ID)
// Set the title.
dialogBuilder.setTitle(R.string.history)
- // Set the view. The parent view is `null` because it will be assigned by the alert dialog.
- dialogBuilder.setView(layoutInflater.inflate(R.layout.url_history_dialog, null))
+ // Set the view.
+ dialogBuilder.setView(R.layout.url_history_dialog)
// Setup the clear history button listener.
dialogBuilder.setNegativeButton(R.string.clear_history) { _: DialogInterface, _: Int ->
package com.stoutner.privacybrowser.dialogs
-import android.annotation.SuppressLint
import android.app.Dialog
import android.content.Context
import android.content.DialogInterface
}
}
- // `@SuppressLint("InflateParams")` removes the warning about using null as the parent view group when inflating the alert dialog.
- @SuppressLint("InflateParams")
override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
// Get the arguments from the bundle.
val id = requireArguments().getInt(ID)
// Set the title.
dialogBuilder.setTitle(resources.getString(R.string.request_details) + " - " + id)
- // Set the view. The parent view is null because it will be assigned by the alert dialog.
- dialogBuilder.setView(layoutInflater.inflate(R.layout.view_request_dialog, null))
+ // Set the view.
+ dialogBuilder.setView(R.layout.view_request_dialog)
// Set the close button. Using `null` as the listener closes the dialog without doing anything else.
dialogBuilder.setNeutralButton(R.string.close, null)
package com.stoutner.privacybrowser.dialogs
-import android.annotation.SuppressLint
import android.app.Dialog
import android.content.res.Configuration
import android.graphics.Bitmap
}
}
- // `@SuppressLint("InflateParams")` removes the warning about using `null` as the parent view group when inflating the alert dialog.
- @SuppressLint("InflateParams")
override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
// Use a builder to create the alert dialog.
val dialogBuilder = AlertDialog.Builder(requireContext(), R.style.PrivacyBrowserAlertDialog)
// Set the title.
dialogBuilder.setTitle(R.string.ssl_certificate)
- // Set the layout. The parent view is `null` because it will be assigned by the alert dialog.
- dialogBuilder.setView(layoutInflater.inflate(R.layout.view_ssl_certificate_dialog, null))
+ // Set the layout.
+ dialogBuilder.setView(R.layout.view_ssl_certificate_dialog)
// Create an alert dialog from the builder.
val alertDialog = dialogBuilder.create()
// Set the title.
dialogBuilder.setTitle(R.string.unencrypted_website)
- // Set the Layout. The parent view is `null` because it will be assigned by the alert dialog.
- dialogBuilder.setView(layoutInflater.inflate(R.layout.unencrypted_website_dialog, null))
+ // Set the Layout.
+ dialogBuilder.setView(R.layout.unencrypted_website_dialog)
// Create an alert dialog from the builder.
val alertDialog = dialogBuilder.create()
package com.stoutner.privacybrowser.dialogs
-import android.annotation.SuppressLint
import android.app.Dialog
import android.os.Bundle
import android.view.WindowManager
import com.stoutner.privacybrowser.R
class WaitingForProxyDialog : DialogFragment() {
- // `@SuppressLint("InflateParams")` removes the warning about using `null` as the parent view group when inflating the alert dialog.
- @SuppressLint("InflateParams")
override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
// Use a builder to create the alert dialog.
val dialogBuilder = AlertDialog.Builder(requireContext(), R.style.PrivacyBrowserAlertDialog)
- // Set the layout. The parent view is `null` because it will be assigned by the alert dialog.
- dialogBuilder.setView(layoutInflater.inflate(R.layout.waiting_for_proxy_dialog, null))
+ // Set the layout.
+ dialogBuilder.setView(R.layout.waiting_for_proxy_dialog)
// Create an alert dialog from the builder.
val alertDialog = dialogBuilder.create()
// Set a WebView client.
tabWebView.webViewClient = object : WebViewClient() {
- // `shouldOverrideUrlLoading` allows the sending of external links back to the main Privacy Browser WebView. The deprecated `shouldOverrideUrlLoading` must be used until API >= 24.
+ // // Send external links back to the main Privacy Browser WebView. The deprecated `shouldOverrideUrlLoading` must be used until API >= 24.
override fun shouldOverrideUrlLoading(view: WebView, url: String): Boolean {
// Create an intent to view the URL.
val urlIntent = Intent(Intent.ACTION_VIEW)
// Make it so.
startActivity(urlIntent)
+
+ // Consume the click.
return true
}
-
+
+ // Process asset requests with the asset loader.
override fun shouldInterceptRequest(webView: WebView, url: String): WebResourceResponse? {
- // Have the WebView asset loader process the request.
// This allows using the `appassets.androidplatform.net` URL, which handles the loading of SVG files, which otherwise is prevented by the CORS policy.
return webViewAssetLoader.shouldInterceptRequest(Uri.parse(url))
}
savedInstanceState.putInt(SCROLL_Y, tabWebView.scrollY)
}
}
-}
\ No newline at end of file
+}
// Get the current theme status.
currentThemeStatus = getResources().getConfiguration().uiMode & Configuration.UI_MODE_NIGHT_MASK;
- // // Get a handle for the shared preferences.
+ // Get a handle for the shared preferences.
SharedPreferences sharedPreferences = getPreferenceScreen().getSharedPreferences();
// Get handles for the preferences.
displayWebpageImagesPreference.setIcon(R.drawable.images_disabled_day);
}
}
-
- // Get the shared preferences change listener.
- sharedPreferenceChangeListener = getSharedPreferencesChangeListener(requireContext());
-
- // Register the listener.
- sharedPreferences.registerOnSharedPreferenceChangeListener(sharedPreferenceChangeListener);
}
// The listener should be unregistered when the app is paused.
// Get a handle for the shared preferences.
SharedPreferences sharedPreferences = getPreferenceScreen().getSharedPreferences();
- // Unregister the shared preferences listener.
+ // Unregister the shared preference listener.
sharedPreferences.unregisterOnSharedPreferenceChangeListener(sharedPreferenceChangeListener);
}
// Run the default commands.
super.onResume();
- // Get a new shared preferences change listener.
- sharedPreferenceChangeListener = getSharedPreferencesChangeListener(requireContext());
+ // Get a new shared preference change listener.
+ sharedPreferenceChangeListener = getSharedPreferenceChangeListener(requireContext());
// Get a handle for the shared preferences.
SharedPreferences sharedPreferences = getPreferenceScreen().getSharedPreferences();
- // Re-register the shared preferences listener.
+ // Re-register the shared preference listener.
sharedPreferences.registerOnSharedPreferenceChangeListener(sharedPreferenceChangeListener);
}
// The context must be passed to the shared preference change listener or else any calls to the system `getString()` will crash if the app has been restarted.
- private SharedPreferences.OnSharedPreferenceChangeListener getSharedPreferencesChangeListener(Context context) {
+ // This can be removed at some future point, perhaps after the switch to PreferenceScreenCompat. It isn't an issue in Privacy Cell.
+ private SharedPreferences.OnSharedPreferenceChangeListener getSharedPreferenceChangeListener(Context context) {
// Return the shared preference change listener.
return (SharedPreferences sharedPreferences, String key) -> {
switch (key) {
// Restart the activity after 400 milliseconds, so that the app has enough time to save the change to the preference.
restartHandler.postDelayed(restartRunnable, 400);
}
-}
\ No newline at end of file
+}
NestedScrollingChild2 {
companion object {
- // Define the companion object blocklists constants. These can be moved to class constants once all of the code has transitioned to Kotlin.
+ // Define the public companion object blocklists constants.
const val BLOCKED_REQUESTS = 0
const val EASYLIST = 1
const val EASYPRIVACY = 2
+++ /dev/null
-<component name="ProjectCodeStyleConfiguration">
- <code_scheme name="Project" version="173">
- <codeStyleSettings language="XML">
- <arrangement>
- <rules>
- <section>
- <rule>
- <match>
- <AND>
- <NAME>xmlns:android</NAME>
- <XML_ATTRIBUTE />
- <XML_NAMESPACE>^$</XML_NAMESPACE>
- </AND>
- </match>
- </rule>
- </section>
- <section>
- <rule>
- <match>
- <AND>
- <NAME>xmlns:.*</NAME>
- <XML_ATTRIBUTE />
- <XML_NAMESPACE>^$</XML_NAMESPACE>
- </AND>
- </match>
- <order>BY_NAME</order>
- </rule>
- </section>
- <section>
- <rule>
- <match>
- <AND>
- <NAME>.*:id</NAME>
- <XML_ATTRIBUTE />
- <XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
- </AND>
- </match>
- </rule>
- </section>
- <section>
- <rule>
- <match>
- <AND>
- <NAME>.*:name</NAME>
- <XML_ATTRIBUTE />
- <XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
- </AND>
- </match>
- </rule>
- </section>
- <section>
- <rule>
- <match>
- <AND>
- <NAME>name</NAME>
- <XML_ATTRIBUTE />
- <XML_NAMESPACE>^$</XML_NAMESPACE>
- </AND>
- </match>
- </rule>
- </section>
- <section>
- <rule>
- <match>
- <AND>
- <NAME>style</NAME>
- <XML_ATTRIBUTE />
- <XML_NAMESPACE>^$</XML_NAMESPACE>
- </AND>
- </match>
- </rule>
- </section>
- <section>
- <rule>
- <match>
- <AND>
- <NAME>.*</NAME>
- <XML_ATTRIBUTE />
- <XML_NAMESPACE>^$</XML_NAMESPACE>
- </AND>
- </match>
- <order>BY_NAME</order>
- </rule>
- </section>
- <section>
- <rule>
- <match>
- <AND>
- <NAME>.*</NAME>
- <XML_ATTRIBUTE />
- <XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
- </AND>
- </match>
- <order>ANDROID_ATTRIBUTE_ORDER</order>
- </rule>
- </section>
- <section>
- <rule>
- <match>
- <AND>
- <NAME>.*</NAME>
- <XML_ATTRIBUTE />
- <XML_NAMESPACE>.*</XML_NAMESPACE>
- </AND>
- </match>
- <order>BY_NAME</order>
- </rule>
- </section>
- </rules>
- </arrangement>
- </codeStyleSettings>
- </code_scheme>
-</component>
\ No newline at end of file
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>
-<project version="4">
- <component name="CMakeSettings">
- <configurations>
- <configuration PROFILE_NAME="Debug" CONFIG_NAME="Debug" />
- </configurations>
- </component>
-</project>
\ No newline at end of file
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>
-<project version="4">
- <component name="ProjectModuleManager">
- <modules>
- <module fileurl="file://$PROJECT_DIR$/.idea/drawable.iml" filepath="$PROJECT_DIR$/.idea/drawable.iml" />
- </modules>
- </component>
-</project>
\ No newline at end of file
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>
-<project version="4">
- <component name="VcsDirectoryMappings">
- <mapping directory="$PROJECT_DIR$/../../../../.." vcs="Git" />
- </component>
-</project>
\ No newline at end of file
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>
-<project version="4">
- <component name="ChangeListManager">
- <list default="true" id="300aa3b2-5467-4b77-b970-a3e70210d389" name="Default Changelist" comment="">
- <change afterPath="$PROJECT_DIR$/../../assets/shared_images/open_in_browser_dark.png" afterDir="false" />
- <change afterPath="$PROJECT_DIR$/../../assets/shared_images/open_in_browser_light.png" afterDir="false" />
- <change afterPath="$PROJECT_DIR$/../../java/com/stoutner/privacybrowser/dialogs/ProxyNotInstalledDialog.java" afterDir="false" />
- <change afterPath="$PROJECT_DIR$/../../java/com/stoutner/privacybrowser/dialogs/WaitingForProxyDialog.java" afterDir="false" />
- <change afterPath="$PROJECT_DIR$/proxy_disabled_dark.xml" afterDir="false" />
- <change afterPath="$PROJECT_DIR$/proxy_disabled_light.xml" afterDir="false" />
- <change afterPath="$PROJECT_DIR$/proxy_enabled_dark.xml" afterDir="false" />
- <change afterPath="$PROJECT_DIR$/proxy_enabled_light.xml" afterDir="false" />
- <change afterPath="$PROJECT_DIR$/proxy_ghosted_dark.xml" afterDir="false" />
- <change afterPath="$PROJECT_DIR$/proxy_ghosted_light.xml" afterDir="false" />
- <change afterPath="$PROJECT_DIR$/../layout/waiting_for_proxy_dialog.xml" afterDir="false" />
- <change beforePath="$PROJECT_DIR$/../../../../../.idea/assetWizardSettings.xml" beforeDir="false" afterPath="$PROJECT_DIR$/../../../../../.idea/assetWizardSettings.xml" afterDir="false" />
- <change beforePath="$PROJECT_DIR$/../../../../../.idea/dictionaries/soren.xml" beforeDir="false" afterPath="$PROJECT_DIR$/../../../../../.idea/dictionaries/soren.xml" afterDir="false" />
- <change beforePath="$PROJECT_DIR$/../../../../build.gradle" beforeDir="false" afterPath="$PROJECT_DIR$/../../../../build.gradle" afterDir="false" />
- <change beforePath="$PROJECT_DIR$/../../assets/de/about_licenses_dark.html" beforeDir="false" afterPath="$PROJECT_DIR$/../../assets/de/about_licenses_dark.html" afterDir="false" />
- <change beforePath="$PROJECT_DIR$/../../assets/de/about_licenses_light.html" beforeDir="false" afterPath="$PROJECT_DIR$/../../assets/de/about_licenses_light.html" afterDir="false" />
- <change beforePath="$PROJECT_DIR$/../../assets/en/about_licenses_dark.html" beforeDir="false" afterPath="$PROJECT_DIR$/../../assets/en/about_licenses_dark.html" afterDir="false" />
- <change beforePath="$PROJECT_DIR$/../../assets/en/about_licenses_light.html" beforeDir="false" afterPath="$PROJECT_DIR$/../../assets/en/about_licenses_light.html" afterDir="false" />
- <change beforePath="$PROJECT_DIR$/../../assets/es/about_licenses_dark.html" beforeDir="false" afterPath="$PROJECT_DIR$/../../assets/es/about_licenses_dark.html" afterDir="false" />
- <change beforePath="$PROJECT_DIR$/../../assets/es/about_licenses_light.html" beforeDir="false" afterPath="$PROJECT_DIR$/../../assets/es/about_licenses_light.html" afterDir="false" />
- <change beforePath="$PROJECT_DIR$/../../assets/fr/about_licenses_dark.html" beforeDir="false" afterPath="$PROJECT_DIR$/../../assets/fr/about_licenses_dark.html" afterDir="false" />
- <change beforePath="$PROJECT_DIR$/../../assets/fr/about_licenses_light.html" beforeDir="false" afterPath="$PROJECT_DIR$/../../assets/fr/about_licenses_light.html" afterDir="false" />
- <change beforePath="$PROJECT_DIR$/../../assets/it/about_licenses_dark.html" beforeDir="false" afterPath="$PROJECT_DIR$/../../assets/it/about_licenses_dark.html" afterDir="false" />
- <change beforePath="$PROJECT_DIR$/../../assets/it/about_licenses_light.html" beforeDir="false" afterPath="$PROJECT_DIR$/../../assets/it/about_licenses_light.html" afterDir="false" />
- <change beforePath="$PROJECT_DIR$/../../assets/ru/about_licenses_dark.html" beforeDir="false" afterPath="$PROJECT_DIR$/../../assets/ru/about_licenses_dark.html" afterDir="false" />
- <change beforePath="$PROJECT_DIR$/../../assets/ru/about_licenses_light.html" beforeDir="false" afterPath="$PROJECT_DIR$/../../assets/ru/about_licenses_light.html" afterDir="false" />
- <change beforePath="$PROJECT_DIR$/../../assets/tr/about_licenses_dark.html" beforeDir="false" afterPath="$PROJECT_DIR$/../../assets/tr/about_licenses_dark.html" afterDir="false" />
- <change beforePath="$PROJECT_DIR$/../../assets/tr/about_licenses_light.html" beforeDir="false" afterPath="$PROJECT_DIR$/../../assets/tr/about_licenses_light.html" afterDir="false" />
- <change beforePath="$PROJECT_DIR$/../../java/com/stoutner/privacybrowser/activities/GuideActivity.java" beforeDir="false" afterPath="$PROJECT_DIR$/../../java/com/stoutner/privacybrowser/activities/GuideActivity.java" afterDir="false" />
- <change beforePath="$PROJECT_DIR$/../../java/com/stoutner/privacybrowser/activities/MainWebViewActivity.java" beforeDir="false" afterPath="$PROJECT_DIR$/../../java/com/stoutner/privacybrowser/activities/MainWebViewActivity.java" afterDir="false" />
- <change beforePath="$PROJECT_DIR$/../../java/com/stoutner/privacybrowser/activities/ViewSourceActivity.java" beforeDir="false" afterPath="$PROJECT_DIR$/../../java/com/stoutner/privacybrowser/activities/ViewSourceActivity.java" afterDir="false" />
- <change beforePath="$PROJECT_DIR$/../../java/com/stoutner/privacybrowser/dialogs/AboutViewSourceDialog.java" beforeDir="false" afterPath="$PROJECT_DIR$/../../java/com/stoutner/privacybrowser/dialogs/AboutViewSourceDialog.java" afterDir="false" />
- <change beforePath="$PROJECT_DIR$/../../java/com/stoutner/privacybrowser/dialogs/CreateHomeScreenShortcutDialog.java" beforeDir="false" afterPath="$PROJECT_DIR$/../../java/com/stoutner/privacybrowser/dialogs/CreateHomeScreenShortcutDialog.java" afterDir="false" />
- <change beforePath="$PROJECT_DIR$/../../java/com/stoutner/privacybrowser/dialogs/ViewSslCertificateDialog.java" beforeDir="false" afterPath="$PROJECT_DIR$/../../java/com/stoutner/privacybrowser/dialogs/ViewSslCertificateDialog.java" afterDir="false" />
- <change beforePath="$PROJECT_DIR$/../../java/com/stoutner/privacybrowser/fragments/AboutTabFragment.java" beforeDir="false" afterPath="$PROJECT_DIR$/../../java/com/stoutner/privacybrowser/fragments/AboutTabFragment.java" afterDir="false" />
- <change beforePath="$PROJECT_DIR$/../../java/com/stoutner/privacybrowser/fragments/SettingsFragment.java" beforeDir="false" afterPath="$PROJECT_DIR$/../../java/com/stoutner/privacybrowser/fragments/SettingsFragment.java" afterDir="false" />
- <change beforePath="$PROJECT_DIR$/../../java/com/stoutner/privacybrowser/helpers/ImportExportDatabaseHelper.java" beforeDir="false" afterPath="$PROJECT_DIR$/../../java/com/stoutner/privacybrowser/helpers/ImportExportDatabaseHelper.java" afterDir="false" />
- <change beforePath="$PROJECT_DIR$/../../java/com/stoutner/privacybrowser/helpers/OrbotProxyHelper.java" beforeDir="false" afterPath="$PROJECT_DIR$/../../java/com/stoutner/privacybrowser/helpers/ProxyHelper.java" afterDir="false" />
- <change beforePath="$PROJECT_DIR$/app_bar_disabled_dark.xml" beforeDir="false" afterPath="$PROJECT_DIR$/app_bar_disabled_dark.xml" afterDir="false" />
- <change beforePath="$PROJECT_DIR$/app_bar_disabled_light.xml" beforeDir="false" afterPath="$PROJECT_DIR$/app_bar_disabled_light.xml" afterDir="false" />
- <change beforePath="$PROJECT_DIR$/app_bar_enabled_dark.xml" beforeDir="false" afterPath="$PROJECT_DIR$/app_bar_enabled_dark.xml" afterDir="false" />
- <change beforePath="$PROJECT_DIR$/app_bar_enabled_light.xml" beforeDir="false" afterPath="$PROJECT_DIR$/app_bar_enabled_light.xml" afterDir="false" />
- <change beforePath="$PROJECT_DIR$/app_bar_ghosted_dark.xml" beforeDir="false" afterPath="$PROJECT_DIR$/app_bar_ghosted_dark.xml" afterDir="false" />
- <change beforePath="$PROJECT_DIR$/app_bar_ghosted_light.xml" beforeDir="false" afterPath="$PROJECT_DIR$/app_bar_ghosted_light.xml" afterDir="false" />
- <change beforePath="$PROJECT_DIR$/../layout/about_tab_version.xml" beforeDir="false" afterPath="$PROJECT_DIR$/../layout/about_tab_version.xml" afterDir="false" />
- <change beforePath="$PROJECT_DIR$/../layout/unencrypted_website.xml" beforeDir="false" afterPath="$PROJECT_DIR$/../layout/unencrypted_website_dialog.xml" afterDir="false" />
- <change beforePath="$PROJECT_DIR$/../layout/view_ssl_certificate.xml" beforeDir="false" afterPath="$PROJECT_DIR$/../layout/view_ssl_certificate_dialog.xml" afterDir="false" />
- <change beforePath="$PROJECT_DIR$/../menu/webview_options_menu.xml" beforeDir="false" afterPath="$PROJECT_DIR$/../menu/webview_options_menu.xml" afterDir="false" />
- <change beforePath="$PROJECT_DIR$/../values-de/strings.xml" beforeDir="false" afterPath="$PROJECT_DIR$/../values-de/strings.xml" afterDir="false" />
- <change beforePath="$PROJECT_DIR$/../values-es/strings.xml" beforeDir="false" afterPath="$PROJECT_DIR$/../values-es/strings.xml" afterDir="false" />
- <change beforePath="$PROJECT_DIR$/../values-fr/strings.xml" beforeDir="false" afterPath="$PROJECT_DIR$/../values-fr/strings.xml" afterDir="false" />
- <change beforePath="$PROJECT_DIR$/../values-it/strings.xml" beforeDir="false" afterPath="$PROJECT_DIR$/../values-it/strings.xml" afterDir="false" />
- <change beforePath="$PROJECT_DIR$/../values-ru/strings.xml" beforeDir="false" afterPath="$PROJECT_DIR$/../values-ru/strings.xml" afterDir="false" />
- <change beforePath="$PROJECT_DIR$/../values-tr/strings.xml" beforeDir="false" afterPath="$PROJECT_DIR$/../values-tr/strings.xml" afterDir="false" />
- <change beforePath="$PROJECT_DIR$/../values/strings.xml" beforeDir="false" afterPath="$PROJECT_DIR$/../values/strings.xml" afterDir="false" />
- <change beforePath="$PROJECT_DIR$/../xml/preferences.xml" beforeDir="false" afterPath="$PROJECT_DIR$/../xml/preferences.xml" afterDir="false" />
- <change beforePath="$PROJECT_DIR$/../../../../../build.gradle" beforeDir="false" afterPath="$PROJECT_DIR$/../../../../../build.gradle" afterDir="false" />
- </list>
- <option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" />
- <option name="SHOW_DIALOG" value="false" />
- <option name="HIGHLIGHT_CONFLICTS" value="true" />
- <option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
- <option name="LAST_RESOLUTION" value="IGNORE" />
- </component>
- <component name="Git.Settings">
- <option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$/../../../../.." />
- </component>
- <component name="ProjectFrameBounds" extendedState="6">
- <option name="x" value="1213" />
- <option name="y" value="595" />
- <option name="width" value="2289" />
- <option name="height" value="1457" />
- </component>
- <component name="ProjectLevelVcsManager" settingsEditedManually="true" />
- <component name="ProjectView">
- <navigator currentView="ProjectPane" proportions="" version="1">
- <foldersAlwaysOnTop value="true" />
- </navigator>
- <panes>
- <pane id="ProjectPane" />
- <pane id="Scope" />
- <pane id="PackagesPane" />
- </panes>
- </component>
- <component name="PropertiesComponent">
- <property name="android.sdk.path" value="$USER_HOME$/Android/Sdk" />
- <property name="last_opened_file_path" value="$USER_HOME$/Lightning-Browser" />
- <property name="settings.editor.selected.configurable" value="AndroidSdkUpdater" />
- </component>
- <component name="RunDashboard">
- <option name="ruleStates">
- <list>
- <RuleState>
- <option name="name" value="ConfigurationTypeDashboardGroupingRule" />
- </RuleState>
- <RuleState>
- <option name="name" value="StatusDashboardGroupingRule" />
- </RuleState>
- </list>
- </option>
- </component>
- <component name="RunManager">
- <configuration default="true" type="JUnit" factoryName="JUnit">
- <extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea" />
- <module name="" />
- <option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
- <option name="ALTERNATIVE_JRE_PATH" />
- <option name="PACKAGE_NAME" />
- <option name="MAIN_CLASS_NAME" />
- <option name="METHOD_NAME" />
- <option name="TEST_OBJECT" value="class" />
- <option name="VM_PARAMETERS" value="-ea" />
- <option name="PARAMETERS" />
- <option name="WORKING_DIRECTORY" value="$MODULE_DIR$" />
- <option name="ENV_VARIABLES" />
- <option name="PASS_PARENT_ENVS" value="true" />
- <option name="TEST_SEARCH_SCOPE">
- <value defaultName="singleModule" />
- </option>
- <envs />
- <patterns />
- <method />
- </configuration>
- <configuration name="<template>" type="#org.jetbrains.idea.devkit.run.PluginConfigurationType" default="true" selected="false">
- <option name="VM_PARAMETERS" value="-Xmx512m -Xms256m -XX:MaxPermSize=250m -ea" />
- </configuration>
- <configuration default="true" type="Applet">
- <option name="POLICY_FILE" value="$APPLICATION_HOME_DIR$/bin/appletviewer.policy" />
- <method v="2">
- <option name="Make" enabled="true" />
- </method>
- </configuration>
- <configuration default="true" type="Application" factoryName="Application">
- <option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" />
- <method v="2">
- <option name="Make" enabled="true" />
- </method>
- </configuration>
- <configuration default="true" type="TestNG">
- <option name="TEST_OBJECT" value="CLASS" />
- <option name="WORKING_DIRECTORY" value="$MODULE_DIR$" />
- <properties />
- <listeners />
- <method v="2">
- <option name="Make" enabled="true" />
- </method>
- </configuration>
- </component>
- <component name="SvnConfiguration">
- <configuration />
- </component>
- <component name="TaskManager">
- <task active="true" id="Default" summary="Default task">
- <changelist id="300aa3b2-5467-4b77-b970-a3e70210d389" name="Default Changelist" comment="" />
- <created>1576705464689</created>
- <option name="number" value="Default" />
- <option name="presentableId" value="Default" />
- <updated>1576705464689</updated>
- </task>
- <servers />
- </component>
- <component name="ToolWindowManager">
- <frame x="-8" y="0" width="3668" height="2068" extended-state="6" />
- <layout>
- <window_info active="true" content_ui="combo" id="Project" visible="true" weight="0.3297402" />
- <window_info id="Structure" side_tool="true" />
- <window_info id="Image Layers" />
- <window_info id="Designer" />
- <window_info id="Resources Explorer" />
- <window_info id="Capture Tool" />
- <window_info id="Favorites" side_tool="true" />
- <window_info id="Captures" order="0" weight="0.25" />
- <window_info anchor="bottom" id="Version Control" />
- <window_info anchor="bottom" id="TODO" />
- <window_info anchor="bottom" id="Terminal" />
- <window_info anchor="bottom" id="Event Log" side_tool="true" />
- <window_info anchor="right" id="Capture Analysis" />
- <window_info anchor="right" id="Theme Preview" />
- <window_info anchor="right" id="Palette	" />
- </layout>
- </component>
-</project>
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>
+
+<!--
+ Copyright © 2016-2017,2019-2021 Soren Stoutner <soren@stoutner.com>.
+
+ This file is part of Privacy Browser <https://www.stoutner.com/privacy-browser>.
+
+ Privacy Browser 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 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. If not, see <http://www.gnu.org/licenses/>. -->
+
+<androidx.coordinatorlayout.widget.CoordinatorLayout
+ android:id="@+id/about_coordinatorlayout"
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:app="http://schemas.android.com/apk/res-auto"
+ android:layout_height="match_parent"
+ android:layout_width="match_parent" >
+
+ <!-- The linear layout with `orientation="vertical"` keeps the view pager above the app bar layout.
+ `app:layout_dodgeInsetEdges="bottom"` as a child of a coordinator layout moves the view above snackbars. -->
+ <LinearLayout
+ android:layout_height="match_parent"
+ android:layout_width="match_parent"
+ android:orientation="vertical"
+ app:layout_dodgeInsetEdges="bottom" >
+
+ <!-- `android:layout_weight="1"` makes the view pager fill the rest of the screen. -->
+ <androidx.viewpager.widget.ViewPager
+ android:id="@+id/about_viewpager"
+ android:layout_height="0dp"
+ android:layout_width="match_parent"
+ android:layout_weight="1" />
+
+ <!-- The app bar theme must be specified here because the activity uses a `NoActionBar` theme. -->
+ <com.google.android.material.appbar.AppBarLayout
+ android:id="@+id/about_appbarlayout"
+ android:layout_height="wrap_content"
+ android:layout_width="match_parent"
+ android:background="?android:attr/colorBackground"
+ android:theme="@style/PrivacyBrowserAppBar" >
+
+ <com.google.android.material.tabs.TabLayout
+ android:id="@+id/about_tablayout"
+ android:layout_height="wrap_content"
+ android:layout_width="match_parent"
+ app:tabMode="scrollable" />
+
+ <androidx.appcompat.widget.Toolbar
+ android:id="@+id/about_toolbar"
+ android:layout_height="wrap_content"
+ android:layout_width="match_parent" />
+ </com.google.android.material.appbar.AppBarLayout>
+ </LinearLayout>
+</androidx.coordinatorlayout.widget.CoordinatorLayout>
\ No newline at end of file
+++ /dev/null
-<?xml version="1.0" encoding="utf-8"?>
-
-<!--
- Copyright © 2016-2017,2019-2021 Soren Stoutner <soren@stoutner.com>.
-
- This file is part of Privacy Browser <https://www.stoutner.com/privacy-browser>.
-
- Privacy Browser 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 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. If not, see <http://www.gnu.org/licenses/>. -->
-
-<androidx.coordinatorlayout.widget.CoordinatorLayout
- android:id="@+id/about_coordinatorlayout"
- xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:app="http://schemas.android.com/apk/res-auto"
- android:layout_height="match_parent"
- android:layout_width="match_parent" >
-
- <!-- The linear layout with `orientation="vertical"` keeps the view pager above the app bar layout.
- `app:layout_dodgeInsetEdges="bottom"` as a child of a coordinator layout moves the view above snackbars. -->
- <LinearLayout
- android:layout_height="match_parent"
- android:layout_width="match_parent"
- android:orientation="vertical"
- app:layout_dodgeInsetEdges="bottom" >
-
- <!-- `android:layout_weight="1"` makes the view pager fill the rest of the screen. -->
- <androidx.viewpager.widget.ViewPager
- android:id="@+id/about_viewpager"
- android:layout_height="0dp"
- android:layout_width="match_parent"
- android:layout_weight="1" />
-
- <!-- The app bar theme must be specified here because the activity uses a `NoActionBar` theme. -->
- <com.google.android.material.appbar.AppBarLayout
- android:id="@+id/about_appbarlayout"
- android:layout_height="wrap_content"
- android:layout_width="match_parent"
- android:background="?android:attr/colorBackground"
- android:theme="@style/PrivacyBrowserAppBar" >
-
- <com.google.android.material.tabs.TabLayout
- android:id="@+id/about_tablayout"
- android:layout_height="wrap_content"
- android:layout_width="match_parent"
- app:tabMode="scrollable" />
-
- <androidx.appcompat.widget.Toolbar
- android:id="@+id/about_toolbar"
- android:layout_height="wrap_content"
- android:layout_width="match_parent" />
- </com.google.android.material.appbar.AppBarLayout>
- </LinearLayout>
-</androidx.coordinatorlayout.widget.CoordinatorLayout>
\ No newline at end of file
+++ /dev/null
-<?xml version="1.0" encoding="utf-8"?>
-
-<!--
- Copyright © 2016-2017,2019-2020 Soren Stoutner <soren@stoutner.com>.
-
- This file is part of Privacy Browser <https://www.stoutner.com/privacy-browser>.
-
- Privacy Browser 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 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. If not, see <http://www.gnu.org/licenses/>. -->
-
-<androidx.coordinatorlayout.widget.CoordinatorLayout
- android:id="@+id/about_coordinatorlayout"
- xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:app="http://schemas.android.com/apk/res-auto"
- android:layout_height="match_parent"
- android:layout_width="match_parent" >
-
- <!-- The linear layout with `orientation="vertical"` moves the view pager below the app bar layout. -->
- <LinearLayout
- android:layout_height="match_parent"
- android:layout_width="match_parent"
- android:orientation="vertical" >
-
- <!-- The app bar theme must be specified here because the activity uses a `NoActionBar` theme. -->
- <com.google.android.material.appbar.AppBarLayout
- android:id="@+id/about_appbarlayout"
- android:layout_height="wrap_content"
- android:layout_width="match_parent"
- android:background="?android:attr/colorBackground"
- android:theme="@style/PrivacyBrowserAppBar" >
-
- <androidx.appcompat.widget.Toolbar
- android:id="@+id/about_toolbar"
- android:layout_height="wrap_content"
- android:layout_width="match_parent" />
-
- <com.google.android.material.tabs.TabLayout
- android:id="@+id/about_tablayout"
- android:layout_height="wrap_content"
- android:layout_width="match_parent"
- app:tabMode="scrollable" />
- </com.google.android.material.appbar.AppBarLayout>
-
- <!-- `android:layout_weight="1"` makes the view pager fill the rest of the screen. -->
- <androidx.viewpager.widget.ViewPager
- android:id="@+id/about_viewpager"
- android:layout_height="0dp"
- android:layout_width="match_parent"
- android:layout_weight="1" />
- </LinearLayout>
-</androidx.coordinatorlayout.widget.CoordinatorLayout>
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>
+
+<!--
+ Copyright © 2016-2017,2019-2020 Soren Stoutner <soren@stoutner.com>.
+
+ This file is part of Privacy Browser <https://www.stoutner.com/privacy-browser>.
+
+ Privacy Browser 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 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. If not, see <http://www.gnu.org/licenses/>. -->
+
+<androidx.coordinatorlayout.widget.CoordinatorLayout
+ android:id="@+id/about_coordinatorlayout"
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:app="http://schemas.android.com/apk/res-auto"
+ android:layout_height="match_parent"
+ android:layout_width="match_parent" >
+
+ <!-- The linear layout with `orientation="vertical"` moves the view pager below the app bar layout. -->
+ <LinearLayout
+ android:layout_height="match_parent"
+ android:layout_width="match_parent"
+ android:orientation="vertical" >
+
+ <!-- The app bar theme must be specified here because the activity uses a `NoActionBar` theme. -->
+ <com.google.android.material.appbar.AppBarLayout
+ android:id="@+id/about_appbarlayout"
+ android:layout_height="wrap_content"
+ android:layout_width="match_parent"
+ android:background="?android:attr/colorBackground"
+ android:theme="@style/PrivacyBrowserAppBar" >
+
+ <androidx.appcompat.widget.Toolbar
+ android:id="@+id/about_toolbar"
+ android:layout_height="wrap_content"
+ android:layout_width="match_parent" />
+
+ <com.google.android.material.tabs.TabLayout
+ android:id="@+id/about_tablayout"
+ android:layout_height="wrap_content"
+ android:layout_width="match_parent"
+ app:tabMode="scrollable" />
+ </com.google.android.material.appbar.AppBarLayout>
+
+ <!-- `android:layout_weight="1"` makes the view pager fill the rest of the screen. -->
+ <androidx.viewpager.widget.ViewPager
+ android:id="@+id/about_viewpager"
+ android:layout_height="0dp"
+ android:layout_width="match_parent"
+ android:layout_weight="1" />
+ </LinearLayout>
+</androidx.coordinatorlayout.widget.CoordinatorLayout>
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>
+
+<!--
+ Copyright © 2016-2021 Soren Stoutner <soren@stoutner.com>.
+
+ This file is part of Privacy Browser <https://www.stoutner.com/privacy-browser>.
+
+ Privacy Browser 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 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. If not, see <http://www.gnu.org/licenses/>. -->
+
+<androidx.coordinatorlayout.widget.CoordinatorLayout
+ android:id="@+id/bookmarks_coordinatorlayout"
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:app="http://schemas.android.com/apk/res-auto"
+ android:layout_height="match_parent"
+ android:layout_width="match_parent" >
+
+ <!-- The linear layout with `orientation="vertical"` keeps the content above the app bar layout. `app:layout_dodgeInsetEdges="bottom"` as a child of a coordinator layout moves the view above snackbars. -->
+ <LinearLayout
+ android:layout_height="match_parent"
+ android:layout_width="match_parent"
+ android:orientation="vertical"
+ app:layout_dodgeInsetEdges="bottom" >
+
+ <!-- `android:choiceMode="multipleChoiceModal"` allows the contextual action menu to select more than one item at a time.
+ `android:dividerHeight` must be at least `1dp` or the list view is inconsistent in calculating how many bookmarks are displayed. -->
+ <ListView
+ android:id="@+id/bookmarks_listview"
+ android:layout_height="0dp"
+ android:layout_width="match_parent"
+ android:layout_weight="1"
+ android:choiceMode="multipleChoiceModal"
+ android:divider="@color/transparent"
+ android:dividerHeight="1dp" />
+
+ <!-- The app bar theme must be specified here because the activity uses a `NoActionBar` theme. -->
+ <com.google.android.material.appbar.AppBarLayout
+ android:id="@+id/bookmarks_appbarlayout"
+ android:layout_height="wrap_content"
+ android:layout_width="match_parent"
+ android:background="?android:attr/colorBackground"
+ android:theme="@style/PrivacyBrowserAppBar" >
+
+ <androidx.appcompat.widget.Toolbar
+ android:id="@+id/bookmarks_toolbar"
+ android:layout_height="wrap_content"
+ android:layout_width="match_parent" />
+ </com.google.android.material.appbar.AppBarLayout>
+ </LinearLayout>
+
+ <com.google.android.material.floatingactionbutton.FloatingActionButton
+ android:id="@+id/create_bookmark_folder_fab"
+ android:layout_height="wrap_content"
+ android:layout_width="wrap_content"
+ android:layout_gravity="bottom|end"
+ android:layout_marginEnd="16dp"
+ android:layout_marginBottom="140dp"
+ android:src="@drawable/create_folder"
+ android:tint="?attr/fabIconTintColor"
+ android:contentDescription="@string/create_folder" />
+
+ <com.google.android.material.floatingactionbutton.FloatingActionButton
+ android:id="@+id/create_bookmark_fab"
+ android:layout_height="wrap_content"
+ android:layout_width="wrap_content"
+ android:layout_gravity="bottom|end"
+ android:layout_marginEnd="16dp"
+ android:layout_marginBottom="70dp"
+ android:src="@drawable/create_bookmark"
+ android:tint="?attr/fabIconTintColor"
+ android:contentDescription="@string/create_bookmark" />
+</androidx.coordinatorlayout.widget.CoordinatorLayout>
\ No newline at end of file
+++ /dev/null
-<?xml version="1.0" encoding="utf-8"?>
-
-<!--
- Copyright © 2016-2021 Soren Stoutner <soren@stoutner.com>.
-
- This file is part of Privacy Browser <https://www.stoutner.com/privacy-browser>.
-
- Privacy Browser 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 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. If not, see <http://www.gnu.org/licenses/>. -->
-
-<androidx.coordinatorlayout.widget.CoordinatorLayout
- android:id="@+id/bookmarks_coordinatorlayout"
- xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:app="http://schemas.android.com/apk/res-auto"
- android:layout_height="match_parent"
- android:layout_width="match_parent" >
-
- <!-- The linear layout with `orientation="vertical"` keeps the content above the app bar layout. `app:layout_dodgeInsetEdges="bottom"` as a child of a coordinator layout moves the view above snackbars. -->
- <LinearLayout
- android:layout_height="match_parent"
- android:layout_width="match_parent"
- android:orientation="vertical"
- app:layout_dodgeInsetEdges="bottom" >
-
- <!-- `android:choiceMode="multipleChoiceModal"` allows the contextual action menu to select more than one item at a time.
- `android:dividerHeight` must be at least `1dp` or the list view is inconsistent in calculating how many bookmarks are displayed. -->
- <ListView
- android:id="@+id/bookmarks_listview"
- android:layout_height="0dp"
- android:layout_width="match_parent"
- android:layout_weight="1"
- android:choiceMode="multipleChoiceModal"
- android:divider="@color/transparent"
- android:dividerHeight="1dp" />
-
- <!-- The app bar theme must be specified here because the activity uses a `NoActionBar` theme. -->
- <com.google.android.material.appbar.AppBarLayout
- android:id="@+id/bookmarks_appbarlayout"
- android:layout_height="wrap_content"
- android:layout_width="match_parent"
- android:background="?android:attr/colorBackground"
- android:theme="@style/PrivacyBrowserAppBar" >
-
- <androidx.appcompat.widget.Toolbar
- android:id="@+id/bookmarks_toolbar"
- android:layout_height="wrap_content"
- android:layout_width="match_parent" />
- </com.google.android.material.appbar.AppBarLayout>
- </LinearLayout>
-
- <com.google.android.material.floatingactionbutton.FloatingActionButton
- android:id="@+id/create_bookmark_folder_fab"
- android:layout_height="wrap_content"
- android:layout_width="wrap_content"
- android:layout_gravity="bottom|end"
- android:layout_marginEnd="16dp"
- android:layout_marginBottom="140dp"
- android:src="@drawable/create_folder"
- android:tint="?attr/fabIconTintColor"
- android:contentDescription="@string/create_folder" />
-
- <com.google.android.material.floatingactionbutton.FloatingActionButton
- android:id="@+id/create_bookmark_fab"
- android:layout_height="wrap_content"
- android:layout_width="wrap_content"
- android:layout_gravity="bottom|end"
- android:layout_marginEnd="16dp"
- android:layout_marginBottom="70dp"
- android:src="@drawable/create_bookmark"
- android:tint="?attr/fabIconTintColor"
- android:contentDescription="@string/create_bookmark" />
-</androidx.coordinatorlayout.widget.CoordinatorLayout>
\ No newline at end of file
+++ /dev/null
-<?xml version="1.0" encoding="utf-8"?>
-
-<!--
- Copyright © 2016-2021 Soren Stoutner <soren@stoutner.com>.
-
- This file is part of Privacy Browser <https://www.stoutner.com/privacy-browser>.
-
- Privacy Browser 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 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. If not, see <http://www.gnu.org/licenses/>. -->
-
-<androidx.coordinatorlayout.widget.CoordinatorLayout
- android:id="@+id/bookmarks_coordinatorlayout"
- xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_height="match_parent"
- android:layout_width="match_parent" >
-
- <!-- The linear layout with `orientation="vertical"` moves the content below the app bar layout. -->
- <LinearLayout
- android:layout_height="match_parent"
- android:layout_width="match_parent"
- android:orientation="vertical" >
-
- <!-- The app bar theme must be specified here because the activity uses a `NoActionBar` theme. -->
- <com.google.android.material.appbar.AppBarLayout
- android:id="@+id/bookmarks_appbarlayout"
- android:layout_height="wrap_content"
- android:layout_width="match_parent"
- android:background="?android:attr/colorBackground"
- android:theme="@style/PrivacyBrowserAppBar" >
-
- <androidx.appcompat.widget.Toolbar
- android:id="@+id/bookmarks_toolbar"
- android:layout_height="wrap_content"
- android:layout_width="match_parent" />
- </com.google.android.material.appbar.AppBarLayout>
-
- <!-- `android:choiceMode="multipleChoiceModal"` allows the contextual action menu to select more than one item at a time.
- `android:dividerHeight` must be at least `1dp` or the list view is inconsistent in calculating how many bookmarks are displayed. -->
- <ListView
- android:id="@+id/bookmarks_listview"
- android:layout_height="match_parent"
- android:layout_width="match_parent"
- android:choiceMode="multipleChoiceModal"
- android:divider="@color/transparent"
- android:dividerHeight="1dp" />
- </LinearLayout>
-
- <com.google.android.material.floatingactionbutton.FloatingActionButton
- android:id="@+id/create_bookmark_folder_fab"
- android:layout_height="wrap_content"
- android:layout_width="wrap_content"
- android:layout_gravity="bottom|end"
- android:layout_marginEnd="16dp"
- android:layout_marginBottom="85dp"
- android:src="@drawable/create_folder"
- android:tint="?attr/fabIconTintColor"
- android:contentDescription="@string/create_folder" />
-
- <com.google.android.material.floatingactionbutton.FloatingActionButton
- android:id="@+id/create_bookmark_fab"
- android:layout_height="wrap_content"
- android:layout_width="wrap_content"
- android:layout_gravity="bottom|end"
- android:layout_margin="16dp"
- android:src="@drawable/create_bookmark"
- android:tint="?attr/fabIconTintColor"
- android:contentDescription="@string/create_bookmark" />
-</androidx.coordinatorlayout.widget.CoordinatorLayout>
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>
+
+<!--
+ Copyright © 2016-2021 Soren Stoutner <soren@stoutner.com>.
+
+ This file is part of Privacy Browser <https://www.stoutner.com/privacy-browser>.
+
+ Privacy Browser 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 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. If not, see <http://www.gnu.org/licenses/>. -->
+
+<androidx.coordinatorlayout.widget.CoordinatorLayout
+ android:id="@+id/bookmarks_databaseview_coordinatorlayout"
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:app="http://schemas.android.com/apk/res-auto"
+ android:layout_height="match_parent"
+ android:layout_width="match_parent" >
+
+ <!-- The linear layout with `orientation="vertical"` keeps the list view above the app bar layout.
+ `app:layout_dodgeInsetEdges="bottom"` as a child of a coordinator layout moves the view above snackbars.-->
+ <LinearLayout
+ android:layout_height="match_parent"
+ android:layout_width="match_parent"
+ android:orientation="vertical"
+ app:layout_dodgeInsetEdges="bottom" >
+
+ <!-- `android:choiceMode="multipleChoiceModal"` allows the contextual action menu to select more than one item at a time. -->
+ <ListView
+ android:id="@+id/bookmarks_databaseview_listview"
+ android:layout_height="0dp"
+ android:layout_width="match_parent"
+ android:layout_weight="1"
+ android:choiceMode="multipleChoiceModal" />
+
+ <!-- The app bar theme must be specified here because the activity uses a `NoActionBar` theme. -->
+ <com.google.android.material.appbar.AppBarLayout
+ android:id="@+id/bookmarks_databaseview_appbarlayout"
+ android:layout_height="wrap_content"
+ android:layout_width="match_parent"
+ android:background="?android:attr/colorBackground"
+ android:theme="@style/PrivacyBrowserAppBar" >
+
+ <androidx.appcompat.widget.Toolbar
+ android:id="@+id/bookmarks_databaseview_toolbar"
+ android:layout_height="wrap_content"
+ android:layout_width="match_parent" />
+ </com.google.android.material.appbar.AppBarLayout>
+ </LinearLayout>
+</androidx.coordinatorlayout.widget.CoordinatorLayout>
\ No newline at end of file
+++ /dev/null
-<?xml version="1.0" encoding="utf-8"?>
-
-<!--
- Copyright © 2016-2021 Soren Stoutner <soren@stoutner.com>.
-
- This file is part of Privacy Browser <https://www.stoutner.com/privacy-browser>.
-
- Privacy Browser 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 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. If not, see <http://www.gnu.org/licenses/>. -->
-
-<androidx.coordinatorlayout.widget.CoordinatorLayout
- android:id="@+id/bookmarks_databaseview_coordinatorlayout"
- xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:app="http://schemas.android.com/apk/res-auto"
- android:layout_height="match_parent"
- android:layout_width="match_parent" >
-
- <!-- The linear layout with `orientation="vertical"` keeps the list view above the app bar layout.
- `app:layout_dodgeInsetEdges="bottom"` as a child of a coordinator layout moves the view above snackbars.-->
- <LinearLayout
- android:layout_height="match_parent"
- android:layout_width="match_parent"
- android:orientation="vertical"
- app:layout_dodgeInsetEdges="bottom" >
-
- <!-- `android:choiceMode="multipleChoiceModal"` allows the contextual action menu to select more than one item at a time. -->
- <ListView
- android:id="@+id/bookmarks_databaseview_listview"
- android:layout_height="0dp"
- android:layout_width="match_parent"
- android:layout_weight="1"
- android:choiceMode="multipleChoiceModal" />
-
- <!-- The app bar theme must be specified here because the activity uses a `NoActionBar` theme. -->
- <com.google.android.material.appbar.AppBarLayout
- android:id="@+id/bookmarks_databaseview_appbarlayout"
- android:layout_height="wrap_content"
- android:layout_width="match_parent"
- android:background="?android:attr/colorBackground"
- android:theme="@style/PrivacyBrowserAppBar" >
-
- <androidx.appcompat.widget.Toolbar
- android:id="@+id/bookmarks_databaseview_toolbar"
- android:layout_height="wrap_content"
- android:layout_width="match_parent" />
- </com.google.android.material.appbar.AppBarLayout>
- </LinearLayout>
-</androidx.coordinatorlayout.widget.CoordinatorLayout>
\ No newline at end of file
+++ /dev/null
-<?xml version="1.0" encoding="utf-8"?>
-
-<!--
- Copyright © 2016-2020 Soren Stoutner <soren@stoutner.com>.
-
- This file is part of Privacy Browser <https://www.stoutner.com/privacy-browser>.
-
- Privacy Browser 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 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. If not, see <http://www.gnu.org/licenses/>. -->
-
-<androidx.coordinatorlayout.widget.CoordinatorLayout
- android:id="@+id/bookmarks_databaseview_coordinatorlayout"
- xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_height="match_parent"
- android:layout_width="match_parent" >
-
- <!-- The linear layout with `orientation="vertical"` moves the list view below the app bar layout. -->
- <LinearLayout
- android:layout_height="match_parent"
- android:layout_width="match_parent"
- android:orientation="vertical" >
-
- <!-- The app bar theme must be specified here because the activity uses a `NoActionBar` theme. -->
- <com.google.android.material.appbar.AppBarLayout
- android:id="@+id/bookmarks_databaseview_appbarlayout"
- android:layout_height="wrap_content"
- android:layout_width="match_parent"
- android:background="?android:attr/colorBackground"
- android:theme="@style/PrivacyBrowserAppBar" >
-
- <androidx.appcompat.widget.Toolbar
- android:id="@+id/bookmarks_databaseview_toolbar"
- android:layout_height="wrap_content"
- android:layout_width="match_parent" />
- </com.google.android.material.appbar.AppBarLayout>
-
- <!-- `android:choiceMode="multipleChoiceModal"` allows the contextual action menu to select more than one item at a time. -->
- <ListView
- android:id="@+id/bookmarks_databaseview_listview"
- android:layout_height="match_parent"
- android:layout_width="match_parent"
- android:choiceMode="multipleChoiceModal" />
- </LinearLayout>
-</androidx.coordinatorlayout.widget.CoordinatorLayout>
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>
+
+<!--
+ Copyright © 2016-2020 Soren Stoutner <soren@stoutner.com>.
+
+ This file is part of Privacy Browser <https://www.stoutner.com/privacy-browser>.
+
+ Privacy Browser 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 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. If not, see <http://www.gnu.org/licenses/>. -->
+
+<androidx.coordinatorlayout.widget.CoordinatorLayout
+ android:id="@+id/bookmarks_databaseview_coordinatorlayout"
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_height="match_parent"
+ android:layout_width="match_parent" >
+
+ <!-- The linear layout with `orientation="vertical"` moves the list view below the app bar layout. -->
+ <LinearLayout
+ android:layout_height="match_parent"
+ android:layout_width="match_parent"
+ android:orientation="vertical" >
+
+ <!-- The app bar theme must be specified here because the activity uses a `NoActionBar` theme. -->
+ <com.google.android.material.appbar.AppBarLayout
+ android:id="@+id/bookmarks_databaseview_appbarlayout"
+ android:layout_height="wrap_content"
+ android:layout_width="match_parent"
+ android:background="?android:attr/colorBackground"
+ android:theme="@style/PrivacyBrowserAppBar" >
+
+ <androidx.appcompat.widget.Toolbar
+ android:id="@+id/bookmarks_databaseview_toolbar"
+ android:layout_height="wrap_content"
+ android:layout_width="match_parent" />
+ </com.google.android.material.appbar.AppBarLayout>
+
+ <!-- `android:choiceMode="multipleChoiceModal"` allows the contextual action menu to select more than one item at a time. -->
+ <ListView
+ android:id="@+id/bookmarks_databaseview_listview"
+ android:layout_height="match_parent"
+ android:layout_width="match_parent"
+ android:choiceMode="multipleChoiceModal" />
+ </LinearLayout>
+</androidx.coordinatorlayout.widget.CoordinatorLayout>
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>
+
+<!--
+ Copyright © 2016-2021 Soren Stoutner <soren@stoutner.com>.
+
+ This file is part of Privacy Browser <https://www.stoutner.com/privacy-browser>.
+
+ Privacy Browser 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 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. If not, see <http://www.gnu.org/licenses/>. -->
+
+<androidx.coordinatorlayout.widget.CoordinatorLayout
+ android:id="@+id/bookmarks_coordinatorlayout"
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_height="match_parent"
+ android:layout_width="match_parent" >
+
+ <!-- The linear layout with `orientation="vertical"` moves the content below the app bar layout. -->
+ <LinearLayout
+ android:layout_height="match_parent"
+ android:layout_width="match_parent"
+ android:orientation="vertical" >
+
+ <!-- The app bar theme must be specified here because the activity uses a `NoActionBar` theme. -->
+ <com.google.android.material.appbar.AppBarLayout
+ android:id="@+id/bookmarks_appbarlayout"
+ android:layout_height="wrap_content"
+ android:layout_width="match_parent"
+ android:background="?android:attr/colorBackground"
+ android:theme="@style/PrivacyBrowserAppBar" >
+
+ <androidx.appcompat.widget.Toolbar
+ android:id="@+id/bookmarks_toolbar"
+ android:layout_height="wrap_content"
+ android:layout_width="match_parent" />
+ </com.google.android.material.appbar.AppBarLayout>
+
+ <!-- `android:choiceMode="multipleChoiceModal"` allows the contextual action menu to select more than one item at a time.
+ `android:dividerHeight` must be at least `1dp` or the list view is inconsistent in calculating how many bookmarks are displayed. -->
+ <ListView
+ android:id="@+id/bookmarks_listview"
+ android:layout_height="match_parent"
+ android:layout_width="match_parent"
+ android:choiceMode="multipleChoiceModal"
+ android:divider="@color/transparent"
+ android:dividerHeight="1dp" />
+ </LinearLayout>
+
+ <com.google.android.material.floatingactionbutton.FloatingActionButton
+ android:id="@+id/create_bookmark_folder_fab"
+ android:layout_height="wrap_content"
+ android:layout_width="wrap_content"
+ android:layout_gravity="bottom|end"
+ android:layout_marginEnd="16dp"
+ android:layout_marginBottom="85dp"
+ android:src="@drawable/create_folder"
+ android:tint="?attr/fabIconTintColor"
+ android:contentDescription="@string/create_folder" />
+
+ <com.google.android.material.floatingactionbutton.FloatingActionButton
+ android:id="@+id/create_bookmark_fab"
+ android:layout_height="wrap_content"
+ android:layout_width="wrap_content"
+ android:layout_gravity="bottom|end"
+ android:layout_margin="16dp"
+ android:src="@drawable/create_bookmark"
+ android:tint="?attr/fabIconTintColor"
+ android:contentDescription="@string/create_bookmark" />
+</androidx.coordinatorlayout.widget.CoordinatorLayout>
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>
+
+<!--
+ Copyright © 2017,2019-2021 Soren Stoutner <soren@stoutner.com>.
+
+ This file is part of Privacy Browser <https://www.stoutner.com/privacy-browser>.
+
+ Privacy Browser 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 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. If not, see <http://www.gnu.org/licenses/>. -->
+
+<androidx.coordinatorlayout.widget.CoordinatorLayout
+ android:id="@+id/domains_coordinatorlayout"
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:app="http://schemas.android.com/apk/res-auto"
+ android:layout_height="match_parent"
+ android:layout_width="match_parent"
+ android:fitsSystemWindows="true" >
+
+ <!-- The linear layout with `orientation="vertical"` keeps the content above the app bar layout. `app:layout_dodgeInsetEdges="bottom"` as a child of a coordinator layout moves the view above snackbars. -->
+ <LinearLayout
+ android:layout_height="match_parent"
+ android:layout_width="match_parent"
+ android:orientation="vertical"
+ app:layout_dodgeInsetEdges="bottom" >
+
+ <include layout="@layout/domains_fragments" />
+
+ <!-- The app bar theme must be specified here because the activity uses a `NoActionBar` theme. -->
+ <com.google.android.material.appbar.AppBarLayout
+ android:layout_height="wrap_content"
+ android:layout_width="match_parent"
+ android:background="?android:attr/colorBackground"
+ android:theme="@style/PrivacyBrowserAppBar" >
+
+ <androidx.appcompat.widget.Toolbar
+ android:id="@+id/domains_toolbar"
+ android:layout_height="wrap_content"
+ android:layout_width="match_parent" />
+ </com.google.android.material.appbar.AppBarLayout>
+ </LinearLayout>
+
+ <com.google.android.material.floatingactionbutton.FloatingActionButton
+ android:id="@+id/add_domain_fab"
+ android:layout_height="wrap_content"
+ android:layout_width="wrap_content"
+ android:layout_gravity="bottom|end"
+ android:layout_marginEnd="16dp"
+ android:layout_marginBottom="70dp"
+ android:src="@drawable/add"
+ android:tint="?attr/fabIconTintColor"
+ android:contentDescription="@string/add_domain" />
+</androidx.coordinatorlayout.widget.CoordinatorLayout>
\ No newline at end of file
+++ /dev/null
-<?xml version="1.0" encoding="utf-8"?>
-
-<!--
- Copyright © 2017,2019-2021 Soren Stoutner <soren@stoutner.com>.
-
- This file is part of Privacy Browser <https://www.stoutner.com/privacy-browser>.
-
- Privacy Browser 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 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. If not, see <http://www.gnu.org/licenses/>. -->
-
-<androidx.coordinatorlayout.widget.CoordinatorLayout
- android:id="@+id/domains_coordinatorlayout"
- xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:app="http://schemas.android.com/apk/res-auto"
- android:layout_height="match_parent"
- android:layout_width="match_parent"
- android:fitsSystemWindows="true" >
-
- <!-- The linear layout with `orientation="vertical"` keeps the content above the app bar layout. `app:layout_dodgeInsetEdges="bottom"` as a child of a coordinator layout moves the view above snackbars. -->
- <LinearLayout
- android:layout_height="match_parent"
- android:layout_width="match_parent"
- android:orientation="vertical"
- app:layout_dodgeInsetEdges="bottom" >
-
- <include layout="@layout/domains_fragments" />
-
- <!-- The app bar theme must be specified here because the activity uses a `NoActionBar` theme. -->
- <com.google.android.material.appbar.AppBarLayout
- android:layout_height="wrap_content"
- android:layout_width="match_parent"
- android:background="?android:attr/colorBackground"
- android:theme="@style/PrivacyBrowserAppBar" >
-
- <androidx.appcompat.widget.Toolbar
- android:id="@+id/domains_toolbar"
- android:layout_height="wrap_content"
- android:layout_width="match_parent" />
- </com.google.android.material.appbar.AppBarLayout>
- </LinearLayout>
-
- <com.google.android.material.floatingactionbutton.FloatingActionButton
- android:id="@+id/add_domain_fab"
- android:layout_height="wrap_content"
- android:layout_width="wrap_content"
- android:layout_gravity="bottom|end"
- android:layout_marginEnd="16dp"
- android:layout_marginBottom="70dp"
- android:src="@drawable/add"
- android:tint="?attr/fabIconTintColor"
- android:contentDescription="@string/add_domain" />
-</androidx.coordinatorlayout.widget.CoordinatorLayout>
\ No newline at end of file
+++ /dev/null
-<?xml version="1.0" encoding="utf-8"?>
-
-<!--
- Copyright © 2017,2019-2020 Soren Stoutner <soren@stoutner.com>.
-
- This file is part of Privacy Browser <https://www.stoutner.com/privacy-browser>.
-
- Privacy Browser 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 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. If not, see <http://www.gnu.org/licenses/>. -->
-
-<androidx.coordinatorlayout.widget.CoordinatorLayout
- android:id="@+id/domains_coordinatorlayout"
- xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_height="match_parent"
- android:layout_width="match_parent"
- android:fitsSystemWindows="true" >
-
- <!-- The linear layout with `orientation="vertical"` moves the content below the app bar layout. -->
- <LinearLayout
- android:layout_height="match_parent"
- android:layout_width="match_parent"
- android:orientation="vertical" >
-
- <!-- The app bar theme must be specified here because the activity uses a `NoActionBar` theme. -->
- <com.google.android.material.appbar.AppBarLayout
- android:layout_height="wrap_content"
- android:layout_width="match_parent"
- android:background="?android:attr/colorBackground"
- android:theme="@style/PrivacyBrowserAppBar" >
-
- <androidx.appcompat.widget.Toolbar
- android:id="@+id/domains_toolbar"
- android:layout_height="wrap_content"
- android:layout_width="match_parent" />
- </com.google.android.material.appbar.AppBarLayout>
-
- <include layout="@layout/domains_fragments" />
- </LinearLayout>
-
- <com.google.android.material.floatingactionbutton.FloatingActionButton
- android:id="@+id/add_domain_fab"
- android:layout_height="wrap_content"
- android:layout_width="wrap_content"
- android:layout_gravity="bottom|end"
- android:layout_margin="16dp"
- android:src="@drawable/add"
- android:tint="?attr/fabIconTintColor"
- android:contentDescription="@string/add_domain" />
-</androidx.coordinatorlayout.widget.CoordinatorLayout>
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>
+
+<!--
+ Copyright © 2017,2019-2020 Soren Stoutner <soren@stoutner.com>.
+
+ This file is part of Privacy Browser <https://www.stoutner.com/privacy-browser>.
+
+ Privacy Browser 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 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. If not, see <http://www.gnu.org/licenses/>. -->
+
+<androidx.coordinatorlayout.widget.CoordinatorLayout
+ android:id="@+id/domains_coordinatorlayout"
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_height="match_parent"
+ android:layout_width="match_parent"
+ android:fitsSystemWindows="true" >
+
+ <!-- The linear layout with `orientation="vertical"` moves the content below the app bar layout. -->
+ <LinearLayout
+ android:layout_height="match_parent"
+ android:layout_width="match_parent"
+ android:orientation="vertical" >
+
+ <!-- The app bar theme must be specified here because the activity uses a `NoActionBar` theme. -->
+ <com.google.android.material.appbar.AppBarLayout
+ android:layout_height="wrap_content"
+ android:layout_width="match_parent"
+ android:background="?android:attr/colorBackground"
+ android:theme="@style/PrivacyBrowserAppBar" >
+
+ <androidx.appcompat.widget.Toolbar
+ android:id="@+id/domains_toolbar"
+ android:layout_height="wrap_content"
+ android:layout_width="match_parent" />
+ </com.google.android.material.appbar.AppBarLayout>
+
+ <include layout="@layout/domains_fragments" />
+ </LinearLayout>
+
+ <com.google.android.material.floatingactionbutton.FloatingActionButton
+ android:id="@+id/add_domain_fab"
+ android:layout_height="wrap_content"
+ android:layout_width="wrap_content"
+ android:layout_gravity="bottom|end"
+ android:layout_margin="16dp"
+ android:src="@drawable/add"
+ android:tint="?attr/fabIconTintColor"
+ android:contentDescription="@string/add_domain" />
+</androidx.coordinatorlayout.widget.CoordinatorLayout>
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>
+
+<!--
+ Copyright © 2016-2017,2019-2021 Soren Stoutner <soren@stoutner.com>.
+
+ This file is part of Privacy Browser <https://www.stoutner.com/privacy-browser>.
+
+ Privacy Browser 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 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. If not, see <http://www.gnu.org/licenses/>. -->
+
+<androidx.coordinatorlayout.widget.CoordinatorLayout
+ android:id="@+id/guide_coordinatorlayout"
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:app="http://schemas.android.com/apk/res-auto"
+ android:layout_height="match_parent"
+ android:layout_width="match_parent" >
+
+ <!-- The linear layout with `orientation="vertical"` keeps the view pager above the app bar layout.
+ `app:layout_dodgeInsetEdges="bottom"` as a child of a coordinator layout moves the view above snackbars. -->
+ <LinearLayout
+ android:layout_height="match_parent"
+ android:layout_width="match_parent"
+ android:orientation="vertical"
+ app:layout_dodgeInsetEdges="bottom" >
+
+ <!-- `android:layout_weight="1"` makes the view pager fill the rest of the screen. -->
+ <androidx.viewpager.widget.ViewPager
+ android:id="@+id/guide_viewpager"
+ android:layout_width="match_parent"
+ android:layout_height="0dp"
+ android:layout_weight="1" />
+
+ <!-- The app bar theme must be specified here because the activity uses a `NoActionBar` theme. -->
+ <com.google.android.material.appbar.AppBarLayout
+ android:id="@+id/guide_appbarlayout"
+ android:layout_height="wrap_content"
+ android:layout_width="match_parent"
+ android:background="?android:attr/colorBackground"
+ android:theme="@style/PrivacyBrowserAppBar" >
+
+ <com.google.android.material.tabs.TabLayout
+ android:id="@+id/guide_tablayout"
+ android:layout_height="wrap_content"
+ android:layout_width="match_parent"
+ app:tabMode="scrollable" />
+
+ <androidx.appcompat.widget.Toolbar
+ android:id="@+id/guide_toolbar"
+ android:layout_height="wrap_content"
+ android:layout_width="match_parent" />
+ </com.google.android.material.appbar.AppBarLayout>
+ </LinearLayout>
+</androidx.coordinatorlayout.widget.CoordinatorLayout>
\ No newline at end of file
+++ /dev/null
-<?xml version="1.0" encoding="utf-8"?>
-
-<!--
- Copyright © 2016-2017,2019-2021 Soren Stoutner <soren@stoutner.com>.
-
- This file is part of Privacy Browser <https://www.stoutner.com/privacy-browser>.
-
- Privacy Browser 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 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. If not, see <http://www.gnu.org/licenses/>. -->
-
-<androidx.coordinatorlayout.widget.CoordinatorLayout
- android:id="@+id/guide_coordinatorlayout"
- xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:app="http://schemas.android.com/apk/res-auto"
- android:layout_height="match_parent"
- android:layout_width="match_parent" >
-
- <!-- The linear layout with `orientation="vertical"` keeps the view pager above the app bar layout.
- `app:layout_dodgeInsetEdges="bottom"` as a child of a coordinator layout moves the view above snackbars. -->
- <LinearLayout
- android:layout_height="match_parent"
- android:layout_width="match_parent"
- android:orientation="vertical"
- app:layout_dodgeInsetEdges="bottom" >
-
- <!-- `android:layout_weight="1"` makes the view pager fill the rest of the screen. -->
- <androidx.viewpager.widget.ViewPager
- android:id="@+id/guide_viewpager"
- android:layout_width="match_parent"
- android:layout_height="0dp"
- android:layout_weight="1" />
-
- <!-- The app bar theme must be specified here because the activity uses a `NoActionBar` theme. -->
- <com.google.android.material.appbar.AppBarLayout
- android:id="@+id/guide_appbarlayout"
- android:layout_height="wrap_content"
- android:layout_width="match_parent"
- android:background="?android:attr/colorBackground"
- android:theme="@style/PrivacyBrowserAppBar" >
-
- <com.google.android.material.tabs.TabLayout
- android:id="@+id/guide_tablayout"
- android:layout_height="wrap_content"
- android:layout_width="match_parent"
- app:tabMode="scrollable" />
-
- <androidx.appcompat.widget.Toolbar
- android:id="@+id/guide_toolbar"
- android:layout_height="wrap_content"
- android:layout_width="match_parent" />
- </com.google.android.material.appbar.AppBarLayout>
- </LinearLayout>
-</androidx.coordinatorlayout.widget.CoordinatorLayout>
\ No newline at end of file
+++ /dev/null
-<?xml version="1.0" encoding="utf-8"?>
-
-<!--
- Copyright © 2016-2017,2019-2021 Soren Stoutner <soren@stoutner.com>.
-
- This file is part of Privacy Browser <https://www.stoutner.com/privacy-browser>.
-
- Privacy Browser 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 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. If not, see <http://www.gnu.org/licenses/>. -->
-
-<androidx.coordinatorlayout.widget.CoordinatorLayout
- android:id="@+id/guide_coordinatorlayout"
- xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:app="http://schemas.android.com/apk/res-auto"
- android:layout_height="match_parent"
- android:layout_width="match_parent" >
-
- <!-- The linear layout with `orientation="vertical"` moves the view pager below the app bar layout. -->
- <LinearLayout
- android:layout_height="match_parent"
- android:layout_width="match_parent"
- android:orientation="vertical" >
-
- <!-- The app bar theme must be specified here because the activity uses a `NoActionBar` theme. -->
- <com.google.android.material.appbar.AppBarLayout
- android:id="@+id/guide_appbarlayout"
- android:layout_height="wrap_content"
- android:layout_width="match_parent"
- android:background="?android:attr/colorBackground"
- android:theme="@style/PrivacyBrowserAppBar" >
-
- <com.google.android.material.tabs.TabLayout
- android:id="@+id/guide_tablayout"
- android:layout_height="wrap_content"
- android:layout_width="match_parent"
- app:tabMode="scrollable" />
-
- <androidx.appcompat.widget.Toolbar
- android:id="@+id/guide_toolbar"
- android:layout_height="wrap_content"
- android:layout_width="match_parent" />
- </com.google.android.material.appbar.AppBarLayout>
-
- <!-- `android:layout_weight="1"` makes the view pager fill the rest of the screen. -->
- <androidx.viewpager.widget.ViewPager
- android:id="@+id/guide_viewpager"
- android:layout_width="match_parent"
- android:layout_height="0dp"
- android:layout_weight="1" />
- </LinearLayout>
-</androidx.coordinatorlayout.widget.CoordinatorLayout>
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>
+
+<!--
+ Copyright © 2016-2017,2019-2021 Soren Stoutner <soren@stoutner.com>.
+
+ This file is part of Privacy Browser <https://www.stoutner.com/privacy-browser>.
+
+ Privacy Browser 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 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. If not, see <http://www.gnu.org/licenses/>. -->
+
+<androidx.coordinatorlayout.widget.CoordinatorLayout
+ android:id="@+id/guide_coordinatorlayout"
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:app="http://schemas.android.com/apk/res-auto"
+ android:layout_height="match_parent"
+ android:layout_width="match_parent" >
+
+ <!-- The linear layout with `orientation="vertical"` moves the view pager below the app bar layout. -->
+ <LinearLayout
+ android:layout_height="match_parent"
+ android:layout_width="match_parent"
+ android:orientation="vertical" >
+
+ <!-- The app bar theme must be specified here because the activity uses a `NoActionBar` theme. -->
+ <com.google.android.material.appbar.AppBarLayout
+ android:id="@+id/guide_appbarlayout"
+ android:layout_height="wrap_content"
+ android:layout_width="match_parent"
+ android:background="?android:attr/colorBackground"
+ android:theme="@style/PrivacyBrowserAppBar" >
+
+ <androidx.appcompat.widget.Toolbar
+ android:id="@+id/guide_toolbar"
+ android:layout_height="wrap_content"
+ android:layout_width="match_parent" />
+
+ <com.google.android.material.tabs.TabLayout
+ android:id="@+id/guide_tablayout"
+ android:layout_height="wrap_content"
+ android:layout_width="match_parent"
+ app:tabMode="scrollable" />
+ </com.google.android.material.appbar.AppBarLayout>
+
+ <!-- `android:layout_weight="1"` makes the view pager fill the rest of the screen. -->
+ <androidx.viewpager.widget.ViewPager
+ android:id="@+id/guide_viewpager"
+ android:layout_width="match_parent"
+ android:layout_height="0dp"
+ android:layout_weight="1" />
+ </LinearLayout>
+</androidx.coordinatorlayout.widget.CoordinatorLayout>
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>
+
+<!--
+ Copyright © 2018-2021 Soren Stoutner <soren@stoutner.com>.
+
+ This file is part of Privacy Browser <https://www.stoutner.com/privacy-browser>.
+
+ Privacy Browser 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 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. If not, see <http://www.gnu.org/licenses/>. -->
+
+<androidx.coordinatorlayout.widget.CoordinatorLayout
+ android:id="@+id/import_export_coordinatorlayout"
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:app="http://schemas.android.com/apk/res-auto"
+ android:layout_height="match_parent"
+ android:layout_width="match_parent" >
+
+ <!-- the linear layout with `orientation="vertical"` keeps the content above the app bar layout. `app:layout_dodgeInsetEdges="bottom"` as a child of a coordinator layout moves the view above snackbars.-->
+ <LinearLayout
+ android:layout_height="match_parent"
+ android:layout_width="match_parent"
+ android:orientation="vertical"
+ app:layout_dodgeInsetEdges="bottom" >
+
+ <ScrollView
+ android:layout_height="0dp"
+ android:layout_width="match_parent"
+ android:layout_weight="1" >
+
+ <!-- Align the cards vertically. -->
+ <LinearLayout
+ android:layout_height="wrap_content"
+ android:layout_width="match_parent"
+ android:orientation="vertical" >
+
+ <!-- The encryption card. -->
+ <androidx.cardview.widget.CardView
+ android:layout_height="wrap_content"
+ android:layout_width="match_parent"
+ android:layout_marginTop="10dp"
+ android:layout_marginBottom="5dp"
+ android:layout_marginStart="10dp"
+ android:layout_marginEnd="10dp" >
+
+ <!-- Align the contents of the card vertically. -->
+ <LinearLayout
+ android:layout_height="match_parent"
+ android:layout_width="match_parent"
+ android:orientation="vertical"
+ android:layout_marginTop="10dp"
+ android:layout_marginBottom="20dp"
+ android:layout_marginStart="10dp"
+ android:layout_marginEnd="10dp" >
+
+ <TextView
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_gravity="center_horizontal"
+ android:layout_marginBottom="6dp"
+ android:text="@string/encryption"
+ android:textSize="25sp"
+ android:textStyle="bold"
+ android:textColor="?colorAccent" />
+
+ <Spinner
+ android:id="@+id/encryption_spinner"
+ android:layout_height="wrap_content"
+ android:layout_width="wrap_content"
+ android:layout_gravity="center_horizontal" />
+
+ <!-- The encryption password. -->
+ <com.google.android.material.textfield.TextInputLayout
+ android:id="@+id/encryption_password_textinputlayout"
+ android:layout_height="wrap_content"
+ android:layout_width="match_parent"
+ app:passwordToggleEnabled="true" >
+
+ <com.google.android.material.textfield.TextInputEditText
+ android:id="@+id/encryption_password_edittext"
+ android:layout_height="wrap_content"
+ android:layout_width="match_parent"
+ android:hint="@string/password"
+ android:inputType="textPassword"/>
+ </com.google.android.material.textfield.TextInputLayout>
+
+ <!-- KitKat password encryption message. -->
+ <TextView
+ android:id="@+id/kitkat_password_encryption_textview"
+ android:layout_height="wrap_content"
+ android:layout_width="wrap_content"
+ android:layout_gravity="center_horizontal"
+ android:layout_marginTop="10dp"
+ android:text="@string/kitkat_password_encryption_message"
+ android:textAlignment="center" />
+
+ <!-- OpenKeychain required message. -->
+ <TextView
+ android:id="@+id/openkeychain_required_textview"
+ android:layout_height="wrap_content"
+ android:layout_width="wrap_content"
+ android:layout_gravity="center_horizontal"
+ android:layout_marginTop="10dp"
+ android:text="@string/openkeychain_required"
+ android:textAlignment="center" />
+ </LinearLayout>
+ </androidx.cardview.widget.CardView>
+
+ <!-- The file location card. -->
+ <androidx.cardview.widget.CardView
+ android:id="@+id/file_location_cardview"
+ android:layout_height="wrap_content"
+ android:layout_width="match_parent"
+ android:layout_marginTop="5dp"
+ android:layout_marginBottom="5dp"
+ android:layout_marginStart="10dp"
+ android:layout_marginEnd="10dp" >
+
+ <!-- Align the contents of the card vertically. -->
+ <LinearLayout
+ android:layout_height="match_parent"
+ android:layout_width="match_parent"
+ android:orientation="vertical"
+ android:layout_marginTop="10dp"
+ android:layout_marginBottom="20dp"
+ android:layout_marginStart="10dp"
+ android:layout_marginEnd="10dp" >
+
+ <TextView
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_gravity="center_horizontal"
+ android:layout_marginBottom="6dp"
+ android:text="@string/file_location"
+ android:textSize="25sp"
+ android:textStyle="bold"
+ android:textColor="?colorAccent" />
+
+ <RadioGroup
+ android:layout_height="wrap_content"
+ android:layout_width="wrap_content"
+ android:layout_gravity="center_horizontal"
+ android:orientation="horizontal" >
+
+ <RadioButton
+ android:id="@+id/import_radiobutton"
+ android:layout_height="wrap_content"
+ android:layout_width="wrap_content"
+ android:text="@string/import_button"
+ android:layout_marginEnd="10dp"
+ android:onClick="onClickRadioButton" />
+
+ <RadioButton
+ android:id="@+id/export_radiobutton"
+ android:layout_height="wrap_content"
+ android:layout_width="wrap_content"
+ android:text="@string/export"
+ android:onClick="onClickRadioButton" />
+ </RadioGroup>
+
+ <!-- Align the edit text and the select file button horizontally. -->
+ <LinearLayout
+ android:id="@+id/file_name_linearlayout"
+ android:layout_height="wrap_content"
+ android:layout_width="match_parent"
+ android:orientation="horizontal"
+ android:layout_marginTop="10dp">
+
+ <!-- The text input layout makes the hint float above the edit text. -->
+ <com.google.android.material.textfield.TextInputLayout
+ android:layout_height="wrap_content"
+ android:layout_width="0dp"
+ android:layout_weight="1" >
+
+ <!-- `android:inputType="textUri" disables spell check and places an `/` on the main keyboard. -->
+ <com.google.android.material.textfield.TextInputEditText
+ android:id="@+id/file_name_edittext"
+ android:layout_height="wrap_content"
+ android:layout_width="match_parent"
+ android:hint="@string/file_name"
+ android:inputType="textMultiLine|textUri" />
+ </com.google.android.material.textfield.TextInputLayout>
+
+ <Button
+ android:id="@+id/browse_button"
+ android:layout_height="wrap_content"
+ android:layout_width="wrap_content"
+ android:layout_gravity="center_vertical"
+ android:text="@string/browse"
+ android:onClick="browse" />
+ </LinearLayout>
+
+ <!-- OpenKeychain import instructions -->
+ <TextView
+ android:id="@+id/openkeychain_import_instructions_textview"
+ android:layout_height="wrap_content"
+ android:layout_width="wrap_content"
+ android:layout_gravity="center_horizontal"
+ android:layout_margin="5dp"
+ android:text="@string/openkeychain_import_instructions"
+ android:textAlignment="center" />
+
+ <Button
+ android:id="@+id/import_export_button"
+ android:layout_height="wrap_content"
+ android:layout_width="wrap_content"
+ android:layout_gravity="center_horizontal"
+ android:layout_marginTop="10dp"
+ android:text="@string/import_button"
+ android:textSize="18sp"
+ android:onClick="importExport"
+ app:backgroundTint="?attr/buttonBackgroundColorSelector"
+ android:textColor="?attr/buttonTextColorSelector" />
+ </LinearLayout>
+ </androidx.cardview.widget.CardView>
+ </LinearLayout>
+ </ScrollView>
+
+ <!-- The app bar theme must be specified here because the activity uses a `NoActionBar` theme. -->
+ <com.google.android.material.appbar.AppBarLayout
+ android:id="@+id/import_export_appbarlayout"
+ android:layout_height="wrap_content"
+ android:layout_width="match_parent"
+ android:background="?android:attr/colorBackground"
+ android:theme="@style/PrivacyBrowserAppBar" >
+
+ <androidx.appcompat.widget.Toolbar
+ android:id="@+id/import_export_toolbar"
+ android:layout_height="wrap_content"
+ android:layout_width="match_parent" />
+ </com.google.android.material.appbar.AppBarLayout>
+ </LinearLayout>
+</androidx.coordinatorlayout.widget.CoordinatorLayout>
\ No newline at end of file
+++ /dev/null
-<?xml version="1.0" encoding="utf-8"?>
-
-<!--
- Copyright © 2018-2021 Soren Stoutner <soren@stoutner.com>.
-
- This file is part of Privacy Browser <https://www.stoutner.com/privacy-browser>.
-
- Privacy Browser 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 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. If not, see <http://www.gnu.org/licenses/>. -->
-
-<androidx.coordinatorlayout.widget.CoordinatorLayout
- android:id="@+id/import_export_coordinatorlayout"
- xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:app="http://schemas.android.com/apk/res-auto"
- android:layout_height="match_parent"
- android:layout_width="match_parent" >
-
- <!-- the linear layout with `orientation="vertical"` keeps the content above the app bar layout. `app:layout_dodgeInsetEdges="bottom"` as a child of a coordinator layout moves the view above snackbars.-->
- <LinearLayout
- android:layout_height="match_parent"
- android:layout_width="match_parent"
- android:orientation="vertical"
- app:layout_dodgeInsetEdges="bottom" >
-
- <ScrollView
- android:layout_height="0dp"
- android:layout_width="match_parent"
- android:layout_weight="1" >
-
- <!-- Align the cards vertically. -->
- <LinearLayout
- android:layout_height="wrap_content"
- android:layout_width="match_parent"
- android:orientation="vertical" >
-
- <!-- The encryption card. -->
- <androidx.cardview.widget.CardView
- android:layout_height="wrap_content"
- android:layout_width="match_parent"
- android:layout_marginTop="10dp"
- android:layout_marginBottom="5dp"
- android:layout_marginStart="10dp"
- android:layout_marginEnd="10dp" >
-
- <!-- Align the contents of the card vertically. -->
- <LinearLayout
- android:layout_height="match_parent"
- android:layout_width="match_parent"
- android:orientation="vertical"
- android:layout_marginTop="10dp"
- android:layout_marginBottom="20dp"
- android:layout_marginStart="10dp"
- android:layout_marginEnd="10dp" >
-
- <TextView
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_gravity="center_horizontal"
- android:layout_marginBottom="6dp"
- android:text="@string/encryption"
- android:textSize="25sp"
- android:textStyle="bold"
- android:textColor="?colorAccent" />
-
- <Spinner
- android:id="@+id/encryption_spinner"
- android:layout_height="wrap_content"
- android:layout_width="wrap_content"
- android:layout_gravity="center_horizontal" />
-
- <!-- The encryption password. -->
- <com.google.android.material.textfield.TextInputLayout
- android:id="@+id/encryption_password_textinputlayout"
- android:layout_height="wrap_content"
- android:layout_width="match_parent"
- app:passwordToggleEnabled="true" >
-
- <com.google.android.material.textfield.TextInputEditText
- android:id="@+id/encryption_password_edittext"
- android:layout_height="wrap_content"
- android:layout_width="match_parent"
- android:hint="@string/password"
- android:inputType="textPassword"/>
- </com.google.android.material.textfield.TextInputLayout>
-
- <!-- KitKat password encryption message. -->
- <TextView
- android:id="@+id/kitkat_password_encryption_textview"
- android:layout_height="wrap_content"
- android:layout_width="wrap_content"
- android:layout_gravity="center_horizontal"
- android:layout_marginTop="10dp"
- android:text="@string/kitkat_password_encryption_message"
- android:textAlignment="center" />
-
- <!-- OpenKeychain required message. -->
- <TextView
- android:id="@+id/openkeychain_required_textview"
- android:layout_height="wrap_content"
- android:layout_width="wrap_content"
- android:layout_gravity="center_horizontal"
- android:layout_marginTop="10dp"
- android:text="@string/openkeychain_required"
- android:textAlignment="center" />
- </LinearLayout>
- </androidx.cardview.widget.CardView>
-
- <!-- The file location card. -->
- <androidx.cardview.widget.CardView
- android:id="@+id/file_location_cardview"
- android:layout_height="wrap_content"
- android:layout_width="match_parent"
- android:layout_marginTop="5dp"
- android:layout_marginBottom="5dp"
- android:layout_marginStart="10dp"
- android:layout_marginEnd="10dp" >
-
- <!-- Align the contents of the card vertically. -->
- <LinearLayout
- android:layout_height="match_parent"
- android:layout_width="match_parent"
- android:orientation="vertical"
- android:layout_marginTop="10dp"
- android:layout_marginBottom="20dp"
- android:layout_marginStart="10dp"
- android:layout_marginEnd="10dp" >
-
- <TextView
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_gravity="center_horizontal"
- android:layout_marginBottom="6dp"
- android:text="@string/file_location"
- android:textSize="25sp"
- android:textStyle="bold"
- android:textColor="?colorAccent" />
-
- <RadioGroup
- android:layout_height="wrap_content"
- android:layout_width="wrap_content"
- android:layout_gravity="center_horizontal"
- android:orientation="horizontal" >
-
- <RadioButton
- android:id="@+id/import_radiobutton"
- android:layout_height="wrap_content"
- android:layout_width="wrap_content"
- android:text="@string/import_button"
- android:layout_marginEnd="10dp"
- android:onClick="onClickRadioButton" />
-
- <RadioButton
- android:id="@+id/export_radiobutton"
- android:layout_height="wrap_content"
- android:layout_width="wrap_content"
- android:text="@string/export"
- android:onClick="onClickRadioButton" />
- </RadioGroup>
-
- <!-- Align the edit text and the select file button horizontally. -->
- <LinearLayout
- android:id="@+id/file_name_linearlayout"
- android:layout_height="wrap_content"
- android:layout_width="match_parent"
- android:orientation="horizontal"
- android:layout_marginTop="10dp">
-
- <!-- The text input layout makes the hint float above the edit text. -->
- <com.google.android.material.textfield.TextInputLayout
- android:layout_height="wrap_content"
- android:layout_width="0dp"
- android:layout_weight="1" >
-
- <!-- `android:inputType="textUri" disables spell check and places an `/` on the main keyboard. -->
- <com.google.android.material.textfield.TextInputEditText
- android:id="@+id/file_name_edittext"
- android:layout_height="wrap_content"
- android:layout_width="match_parent"
- android:hint="@string/file_name"
- android:inputType="textMultiLine|textUri" />
- </com.google.android.material.textfield.TextInputLayout>
-
- <Button
- android:id="@+id/browse_button"
- android:layout_height="wrap_content"
- android:layout_width="wrap_content"
- android:layout_gravity="center_vertical"
- android:text="@string/browse"
- android:onClick="browse" />
- </LinearLayout>
-
- <!-- OpenKeychain import instructions -->
- <TextView
- android:id="@+id/openkeychain_import_instructions_textview"
- android:layout_height="wrap_content"
- android:layout_width="wrap_content"
- android:layout_gravity="center_horizontal"
- android:layout_margin="5dp"
- android:text="@string/openkeychain_import_instructions"
- android:textAlignment="center" />
-
- <Button
- android:id="@+id/import_export_button"
- android:layout_height="wrap_content"
- android:layout_width="wrap_content"
- android:layout_gravity="center_horizontal"
- android:layout_marginTop="10dp"
- android:text="@string/import_button"
- android:textSize="18sp"
- android:onClick="importExport"
- app:backgroundTint="?attr/buttonBackgroundColorSelector"
- android:textColor="?attr/buttonTextColorSelector" />
- </LinearLayout>
- </androidx.cardview.widget.CardView>
- </LinearLayout>
- </ScrollView>
-
- <!-- The app bar theme must be specified here because the activity uses a `NoActionBar` theme. -->
- <com.google.android.material.appbar.AppBarLayout
- android:id="@+id/import_export_appbarlayout"
- android:layout_height="wrap_content"
- android:layout_width="match_parent"
- android:background="?android:attr/colorBackground"
- android:theme="@style/PrivacyBrowserAppBar" >
-
- <androidx.appcompat.widget.Toolbar
- android:id="@+id/import_export_toolbar"
- android:layout_height="wrap_content"
- android:layout_width="match_parent" />
- </com.google.android.material.appbar.AppBarLayout>
- </LinearLayout>
-</androidx.coordinatorlayout.widget.CoordinatorLayout>
\ No newline at end of file
+++ /dev/null
-<?xml version="1.0" encoding="utf-8"?>
-
-<!--
- Copyright © 2018-2021 Soren Stoutner <soren@stoutner.com>.
-
- This file is part of Privacy Browser <https://www.stoutner.com/privacy-browser>.
-
- Privacy Browser 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 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. If not, see <http://www.gnu.org/licenses/>. -->
-
-<androidx.coordinatorlayout.widget.CoordinatorLayout
- android:id="@+id/import_export_coordinatorlayout"
- xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:app="http://schemas.android.com/apk/res-auto"
- android:layout_height="match_parent"
- android:layout_width="match_parent" >
-
- <!-- the linear layout with `orientation="vertical"` moves the content below the app bar layout. -->
- <LinearLayout
- android:layout_height="match_parent"
- android:layout_width="match_parent"
- android:orientation="vertical" >
-
- <!-- The app bar theme must be specified here because the activity uses a `NoActionBar` theme. -->
- <com.google.android.material.appbar.AppBarLayout
- android:id="@+id/import_export_appbarlayout"
- android:layout_height="wrap_content"
- android:layout_width="match_parent"
- android:background="?android:attr/colorBackground"
- android:theme="@style/PrivacyBrowserAppBar" >
-
- <androidx.appcompat.widget.Toolbar
- android:id="@+id/import_export_toolbar"
- android:layout_height="wrap_content"
- android:layout_width="match_parent" />
- </com.google.android.material.appbar.AppBarLayout>
-
- <ScrollView
- android:layout_height="match_parent"
- android:layout_width="match_parent" >
-
- <!-- Align the cards vertically. -->
- <LinearLayout
- android:layout_height="wrap_content"
- android:layout_width="match_parent"
- android:orientation="vertical" >
-
- <!-- The encryption card. -->
- <androidx.cardview.widget.CardView
- android:layout_height="wrap_content"
- android:layout_width="match_parent"
- android:layout_marginTop="10dp"
- android:layout_marginBottom="5dp"
- android:layout_marginStart="10dp"
- android:layout_marginEnd="10dp" >
-
- <!-- Align the contents of the card vertically. -->
- <LinearLayout
- android:layout_height="match_parent"
- android:layout_width="match_parent"
- android:orientation="vertical"
- android:layout_marginTop="10dp"
- android:layout_marginBottom="20dp"
- android:layout_marginStart="10dp"
- android:layout_marginEnd="10dp" >
-
- <TextView
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_gravity="center_horizontal"
- android:layout_marginBottom="6dp"
- android:text="@string/encryption"
- android:textSize="25sp"
- android:textStyle="bold"
- android:textColor="?colorAccent" />
-
- <Spinner
- android:id="@+id/encryption_spinner"
- android:layout_height="wrap_content"
- android:layout_width="wrap_content"
- android:layout_gravity="center_horizontal" />
-
- <!-- The encryption password. -->
- <com.google.android.material.textfield.TextInputLayout
- android:id="@+id/encryption_password_textinputlayout"
- android:layout_height="wrap_content"
- android:layout_width="match_parent"
- app:passwordToggleEnabled="true" >
-
- <com.google.android.material.textfield.TextInputEditText
- android:id="@+id/encryption_password_edittext"
- android:layout_height="wrap_content"
- android:layout_width="match_parent"
- android:hint="@string/password"
- android:inputType="textPassword"/>
- </com.google.android.material.textfield.TextInputLayout>
-
- <!-- KitKat password encryption message. -->
- <TextView
- android:id="@+id/kitkat_password_encryption_textview"
- android:layout_height="wrap_content"
- android:layout_width="wrap_content"
- android:layout_gravity="center_horizontal"
- android:layout_marginTop="10dp"
- android:text="@string/kitkat_password_encryption_message"
- android:textAlignment="center" />
-
- <!-- OpenKeychain required message. -->
- <TextView
- android:id="@+id/openkeychain_required_textview"
- android:layout_height="wrap_content"
- android:layout_width="wrap_content"
- android:layout_gravity="center_horizontal"
- android:layout_marginTop="10dp"
- android:text="@string/openkeychain_required"
- android:textAlignment="center" />
- </LinearLayout>
- </androidx.cardview.widget.CardView>
-
- <!-- The file location card. -->
- <androidx.cardview.widget.CardView
- android:id="@+id/file_location_cardview"
- android:layout_height="wrap_content"
- android:layout_width="match_parent"
- android:layout_marginTop="5dp"
- android:layout_marginBottom="5dp"
- android:layout_marginStart="10dp"
- android:layout_marginEnd="10dp" >
-
- <!-- Align the contents of the card vertically. -->
- <LinearLayout
- android:layout_height="match_parent"
- android:layout_width="match_parent"
- android:orientation="vertical"
- android:layout_marginTop="10dp"
- android:layout_marginBottom="20dp"
- android:layout_marginStart="10dp"
- android:layout_marginEnd="10dp" >
-
- <TextView
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_gravity="center_horizontal"
- android:layout_marginBottom="6dp"
- android:text="@string/file_location"
- android:textSize="25sp"
- android:textStyle="bold"
- android:textColor="?colorAccent" />
-
- <RadioGroup
- android:layout_height="wrap_content"
- android:layout_width="wrap_content"
- android:layout_gravity="center_horizontal"
- android:orientation="horizontal" >
-
- <RadioButton
- android:id="@+id/import_radiobutton"
- android:layout_height="wrap_content"
- android:layout_width="wrap_content"
- android:text="@string/import_button"
- android:layout_marginEnd="10dp"
- android:onClick="onClickRadioButton" />
-
- <RadioButton
- android:id="@+id/export_radiobutton"
- android:layout_height="wrap_content"
- android:layout_width="wrap_content"
- android:text="@string/export"
- android:onClick="onClickRadioButton" />
- </RadioGroup>
-
- <!-- Align the edit text and the select file button horizontally. -->
- <LinearLayout
- android:id="@+id/file_name_linearlayout"
- android:layout_height="wrap_content"
- android:layout_width="match_parent"
- android:orientation="horizontal"
- android:layout_marginTop="10dp">
-
- <!-- The text input layout makes the hint float above the edit text. -->
- <com.google.android.material.textfield.TextInputLayout
- android:layout_height="wrap_content"
- android:layout_width="0dp"
- android:layout_weight="1" >
-
- <!-- `android:inputType="textUri" disables spell check and places an `/` on the main keyboard. -->
- <com.google.android.material.textfield.TextInputEditText
- android:id="@+id/file_name_edittext"
- android:layout_height="wrap_content"
- android:layout_width="match_parent"
- android:hint="@string/file_name"
- android:inputType="textMultiLine|textUri" />
- </com.google.android.material.textfield.TextInputLayout>
-
- <Button
- android:id="@+id/browse_button"
- android:layout_height="wrap_content"
- android:layout_width="wrap_content"
- android:layout_gravity="center_vertical"
- android:text="@string/browse"
- android:onClick="browse" />
- </LinearLayout>
-
- <!-- OpenKeychain import instructions -->
- <TextView
- android:id="@+id/openkeychain_import_instructions_textview"
- android:layout_height="wrap_content"
- android:layout_width="wrap_content"
- android:layout_gravity="center_horizontal"
- android:layout_margin="5dp"
- android:text="@string/openkeychain_import_instructions"
- android:textAlignment="center" />
-
- <Button
- android:id="@+id/import_export_button"
- android:layout_height="wrap_content"
- android:layout_width="wrap_content"
- android:layout_gravity="center_horizontal"
- android:layout_marginTop="10dp"
- android:text="@string/import_button"
- android:textSize="18sp"
- android:onClick="importExport"
- app:backgroundTint="?attr/buttonBackgroundColorSelector"
- android:textColor="?attr/buttonTextColorSelector" />
- </LinearLayout>
- </androidx.cardview.widget.CardView>
- </LinearLayout>
- </ScrollView>
- </LinearLayout>
-</androidx.coordinatorlayout.widget.CoordinatorLayout>
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>
+
+<!--
+ Copyright © 2018-2021 Soren Stoutner <soren@stoutner.com>.
+
+ This file is part of Privacy Browser <https://www.stoutner.com/privacy-browser>.
+
+ Privacy Browser 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 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. If not, see <http://www.gnu.org/licenses/>. -->
+
+<androidx.coordinatorlayout.widget.CoordinatorLayout
+ android:id="@+id/import_export_coordinatorlayout"
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:app="http://schemas.android.com/apk/res-auto"
+ android:layout_height="match_parent"
+ android:layout_width="match_parent" >
+
+ <!-- the linear layout with `orientation="vertical"` moves the content below the app bar layout. -->
+ <LinearLayout
+ android:layout_height="match_parent"
+ android:layout_width="match_parent"
+ android:orientation="vertical" >
+
+ <!-- The app bar theme must be specified here because the activity uses a `NoActionBar` theme. -->
+ <com.google.android.material.appbar.AppBarLayout
+ android:id="@+id/import_export_appbarlayout"
+ android:layout_height="wrap_content"
+ android:layout_width="match_parent"
+ android:background="?android:attr/colorBackground"
+ android:theme="@style/PrivacyBrowserAppBar" >
+
+ <androidx.appcompat.widget.Toolbar
+ android:id="@+id/import_export_toolbar"
+ android:layout_height="wrap_content"
+ android:layout_width="match_parent" />
+ </com.google.android.material.appbar.AppBarLayout>
+
+ <ScrollView
+ android:layout_height="match_parent"
+ android:layout_width="match_parent" >
+
+ <!-- Align the cards vertically. -->
+ <LinearLayout
+ android:layout_height="wrap_content"
+ android:layout_width="match_parent"
+ android:orientation="vertical" >
+
+ <!-- The encryption card. -->
+ <androidx.cardview.widget.CardView
+ android:layout_height="wrap_content"
+ android:layout_width="match_parent"
+ android:layout_marginTop="10dp"
+ android:layout_marginBottom="5dp"
+ android:layout_marginStart="10dp"
+ android:layout_marginEnd="10dp" >
+
+ <!-- Align the contents of the card vertically. -->
+ <LinearLayout
+ android:layout_height="match_parent"
+ android:layout_width="match_parent"
+ android:orientation="vertical"
+ android:layout_marginTop="10dp"
+ android:layout_marginBottom="20dp"
+ android:layout_marginStart="10dp"
+ android:layout_marginEnd="10dp" >
+
+ <TextView
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_gravity="center_horizontal"
+ android:layout_marginBottom="6dp"
+ android:text="@string/encryption"
+ android:textSize="25sp"
+ android:textStyle="bold"
+ android:textColor="?colorAccent" />
+
+ <Spinner
+ android:id="@+id/encryption_spinner"
+ android:layout_height="wrap_content"
+ android:layout_width="wrap_content"
+ android:layout_gravity="center_horizontal" />
+
+ <!-- The encryption password. -->
+ <com.google.android.material.textfield.TextInputLayout
+ android:id="@+id/encryption_password_textinputlayout"
+ android:layout_height="wrap_content"
+ android:layout_width="match_parent"
+ app:passwordToggleEnabled="true" >
+
+ <com.google.android.material.textfield.TextInputEditText
+ android:id="@+id/encryption_password_edittext"
+ android:layout_height="wrap_content"
+ android:layout_width="match_parent"
+ android:hint="@string/password"
+ android:inputType="textPassword"/>
+ </com.google.android.material.textfield.TextInputLayout>
+
+ <!-- KitKat password encryption message. -->
+ <TextView
+ android:id="@+id/kitkat_password_encryption_textview"
+ android:layout_height="wrap_content"
+ android:layout_width="wrap_content"
+ android:layout_gravity="center_horizontal"
+ android:layout_marginTop="10dp"
+ android:text="@string/kitkat_password_encryption_message"
+ android:textAlignment="center" />
+
+ <!-- OpenKeychain required message. -->
+ <TextView
+ android:id="@+id/openkeychain_required_textview"
+ android:layout_height="wrap_content"
+ android:layout_width="wrap_content"
+ android:layout_gravity="center_horizontal"
+ android:layout_marginTop="10dp"
+ android:text="@string/openkeychain_required"
+ android:textAlignment="center" />
+ </LinearLayout>
+ </androidx.cardview.widget.CardView>
+
+ <!-- The file location card. -->
+ <androidx.cardview.widget.CardView
+ android:id="@+id/file_location_cardview"
+ android:layout_height="wrap_content"
+ android:layout_width="match_parent"
+ android:layout_marginTop="5dp"
+ android:layout_marginBottom="5dp"
+ android:layout_marginStart="10dp"
+ android:layout_marginEnd="10dp" >
+
+ <!-- Align the contents of the card vertically. -->
+ <LinearLayout
+ android:layout_height="match_parent"
+ android:layout_width="match_parent"
+ android:orientation="vertical"
+ android:layout_marginTop="10dp"
+ android:layout_marginBottom="20dp"
+ android:layout_marginStart="10dp"
+ android:layout_marginEnd="10dp" >
+
+ <TextView
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_gravity="center_horizontal"
+ android:layout_marginBottom="6dp"
+ android:text="@string/file_location"
+ android:textSize="25sp"
+ android:textStyle="bold"
+ android:textColor="?colorAccent" />
+
+ <RadioGroup
+ android:layout_height="wrap_content"
+ android:layout_width="wrap_content"
+ android:layout_gravity="center_horizontal"
+ android:orientation="horizontal" >
+
+ <RadioButton
+ android:id="@+id/import_radiobutton"
+ android:layout_height="wrap_content"
+ android:layout_width="wrap_content"
+ android:text="@string/import_button"
+ android:layout_marginEnd="10dp"
+ android:onClick="onClickRadioButton" />
+
+ <RadioButton
+ android:id="@+id/export_radiobutton"
+ android:layout_height="wrap_content"
+ android:layout_width="wrap_content"
+ android:text="@string/export"
+ android:onClick="onClickRadioButton" />
+ </RadioGroup>
+
+ <!-- Align the edit text and the select file button horizontally. -->
+ <LinearLayout
+ android:id="@+id/file_name_linearlayout"
+ android:layout_height="wrap_content"
+ android:layout_width="match_parent"
+ android:orientation="horizontal"
+ android:layout_marginTop="10dp">
+
+ <!-- The text input layout makes the hint float above the edit text. -->
+ <com.google.android.material.textfield.TextInputLayout
+ android:layout_height="wrap_content"
+ android:layout_width="0dp"
+ android:layout_weight="1" >
+
+ <!-- `android:inputType="textUri" disables spell check and places an `/` on the main keyboard. -->
+ <com.google.android.material.textfield.TextInputEditText
+ android:id="@+id/file_name_edittext"
+ android:layout_height="wrap_content"
+ android:layout_width="match_parent"
+ android:hint="@string/file_name"
+ android:inputType="textMultiLine|textUri" />
+ </com.google.android.material.textfield.TextInputLayout>
+
+ <Button
+ android:id="@+id/browse_button"
+ android:layout_height="wrap_content"
+ android:layout_width="wrap_content"
+ android:layout_gravity="center_vertical"
+ android:text="@string/browse"
+ android:onClick="browse" />
+ </LinearLayout>
+
+ <!-- OpenKeychain import instructions -->
+ <TextView
+ android:id="@+id/openkeychain_import_instructions_textview"
+ android:layout_height="wrap_content"
+ android:layout_width="wrap_content"
+ android:layout_gravity="center_horizontal"
+ android:layout_margin="5dp"
+ android:text="@string/openkeychain_import_instructions"
+ android:textAlignment="center" />
+
+ <Button
+ android:id="@+id/import_export_button"
+ android:layout_height="wrap_content"
+ android:layout_width="wrap_content"
+ android:layout_gravity="center_horizontal"
+ android:layout_marginTop="10dp"
+ android:text="@string/import_button"
+ android:textSize="18sp"
+ android:onClick="importExport"
+ app:backgroundTint="?attr/buttonBackgroundColorSelector"
+ android:textColor="?attr/buttonTextColorSelector" />
+ </LinearLayout>
+ </androidx.cardview.widget.CardView>
+ </LinearLayout>
+ </ScrollView>
+ </LinearLayout>
+</androidx.coordinatorlayout.widget.CoordinatorLayout>
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>
+
+<!--
+ Copyright © 2018-2021 Soren Stoutner <soren@stoutner.com>.
+
+ This file is part of Privacy Browser <https://www.stoutner.com/privacy-browser>.
+
+ Privacy Browser 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 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. If not, see <http://www.gnu.org/licenses/>. -->
+
+<androidx.coordinatorlayout.widget.CoordinatorLayout
+ android:id="@+id/logcat_coordinatorlayout"
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:app="http://schemas.android.com/apk/res-auto"
+ android:layout_height="match_parent"
+ android:layout_width="match_parent" >
+
+ <!-- The linear layout with `orientation="vertical"` keeps the content above the app bar layout. `app:layout_dodgeInsetEdges="bottom"` as a child of a coordinator layout moves the view above snackbars. -->
+ <LinearLayout
+ android:layout_height="match_parent"
+ android:layout_width="match_parent"
+ android:orientation="vertical"
+ app:layout_dodgeInsetEdges="bottom" >
+
+ <androidx.swiperefreshlayout.widget.SwipeRefreshLayout
+ android:id="@+id/logcat_swiperefreshlayout"
+ android:layout_height="0dp"
+ android:layout_width="match_parent"
+ android:layout_weight="1" >
+
+ <ScrollView
+ android:id="@+id/logcat_scrollview"
+ android:layout_height="wrap_content"
+ android:layout_width="match_parent" >
+
+ <TextView
+ android:id="@+id/logcat_textview"
+ android:layout_height="wrap_content"
+ android:layout_width="match_parent"
+ android:layout_margin="10dp"
+ android:textIsSelectable="true" />
+ </ScrollView>
+ </androidx.swiperefreshlayout.widget.SwipeRefreshLayout>
+
+ <!-- The app bar theme must be specified here because the activity uses a `NoActionBar` theme. -->
+ <com.google.android.material.appbar.AppBarLayout
+ android:id="@+id/logcat_appbarlayout"
+ android:layout_height="wrap_content"
+ android:layout_width="match_parent"
+ android:background="?android:attr/colorBackground"
+ android:theme="@style/PrivacyBrowserAppBar" >
+
+ <androidx.appcompat.widget.Toolbar
+ android:id="@+id/logcat_toolbar"
+ android:layout_height="wrap_content"
+ android:layout_width="match_parent" />
+ </com.google.android.material.appbar.AppBarLayout>
+ </LinearLayout>
+</androidx.coordinatorlayout.widget.CoordinatorLayout>
\ No newline at end of file
+++ /dev/null
-<?xml version="1.0" encoding="utf-8"?>
-
-<!--
- Copyright © 2018-2021 Soren Stoutner <soren@stoutner.com>.
-
- This file is part of Privacy Browser <https://www.stoutner.com/privacy-browser>.
-
- Privacy Browser 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 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. If not, see <http://www.gnu.org/licenses/>. -->
-
-<androidx.coordinatorlayout.widget.CoordinatorLayout
- android:id="@+id/logcat_coordinatorlayout"
- xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:app="http://schemas.android.com/apk/res-auto"
- android:layout_height="match_parent"
- android:layout_width="match_parent" >
-
- <!-- The linear layout with `orientation="vertical"` keeps the content above the app bar layout. `app:layout_dodgeInsetEdges="bottom"` as a child of a coordinator layout moves the view above snackbars. -->
- <LinearLayout
- android:layout_height="match_parent"
- android:layout_width="match_parent"
- android:orientation="vertical"
- app:layout_dodgeInsetEdges="bottom" >
-
- <androidx.swiperefreshlayout.widget.SwipeRefreshLayout
- android:id="@+id/logcat_swiperefreshlayout"
- android:layout_height="0dp"
- android:layout_width="match_parent"
- android:layout_weight="1" >
-
- <ScrollView
- android:id="@+id/logcat_scrollview"
- android:layout_height="wrap_content"
- android:layout_width="match_parent" >
-
- <TextView
- android:id="@+id/logcat_textview"
- android:layout_height="wrap_content"
- android:layout_width="match_parent"
- android:layout_margin="10dp"
- android:textIsSelectable="true" />
- </ScrollView>
- </androidx.swiperefreshlayout.widget.SwipeRefreshLayout>
-
- <!-- The app bar theme must be specified here because the activity uses a `NoActionBar` theme. -->
- <com.google.android.material.appbar.AppBarLayout
- android:id="@+id/logcat_appbarlayout"
- android:layout_height="wrap_content"
- android:layout_width="match_parent"
- android:background="?android:attr/colorBackground"
- android:theme="@style/PrivacyBrowserAppBar" >
-
- <androidx.appcompat.widget.Toolbar
- android:id="@+id/logcat_toolbar"
- android:layout_height="wrap_content"
- android:layout_width="match_parent" />
- </com.google.android.material.appbar.AppBarLayout>
- </LinearLayout>
-</androidx.coordinatorlayout.widget.CoordinatorLayout>
\ No newline at end of file
+++ /dev/null
-<?xml version="1.0" encoding="utf-8"?>
-
-<!--
- Copyright © 2018-2021 Soren Stoutner <soren@stoutner.com>.
-
- This file is part of Privacy Browser <https://www.stoutner.com/privacy-browser>.
-
- Privacy Browser 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 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. If not, see <http://www.gnu.org/licenses/>. -->
-
-<androidx.coordinatorlayout.widget.CoordinatorLayout
- android:id="@+id/logcat_coordinatorlayout"
- xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_height="match_parent"
- android:layout_width="match_parent" >
-
- <!-- The linear layout with `orientation="vertical"` moves the content below the app bar layout. -->
- <LinearLayout
- android:layout_height="match_parent"
- android:layout_width="match_parent"
- android:orientation="vertical" >
-
- <!-- The app bar theme must be specified here because the activity uses a `NoActionBar` theme. -->
- <com.google.android.material.appbar.AppBarLayout
- android:id="@+id/logcat_appbarlayout"
- android:layout_height="wrap_content"
- android:layout_width="match_parent"
- android:background="?android:attr/colorBackground"
- android:theme="@style/PrivacyBrowserAppBar" >
-
- <androidx.appcompat.widget.Toolbar
- android:id="@+id/logcat_toolbar"
- android:layout_height="wrap_content"
- android:layout_width="match_parent" />
- </com.google.android.material.appbar.AppBarLayout>
-
- <androidx.swiperefreshlayout.widget.SwipeRefreshLayout
- android:id="@+id/logcat_swiperefreshlayout"
- android:layout_height="match_parent"
- android:layout_width="match_parent" >
-
- <ScrollView
- android:id="@+id/logcat_scrollview"
- android:layout_height="wrap_content"
- android:layout_width="match_parent" >
-
- <TextView
- android:id="@+id/logcat_textview"
- android:layout_height="wrap_content"
- android:layout_width="match_parent"
- android:layout_margin="10dp"
- android:textIsSelectable="true" />
- </ScrollView>
- </androidx.swiperefreshlayout.widget.SwipeRefreshLayout>
- </LinearLayout>
-</androidx.coordinatorlayout.widget.CoordinatorLayout>
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>
+
+<!--
+ Copyright © 2018-2021 Soren Stoutner <soren@stoutner.com>.
+
+ This file is part of Privacy Browser <https://www.stoutner.com/privacy-browser>.
+
+ Privacy Browser 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 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. If not, see <http://www.gnu.org/licenses/>. -->
+
+<androidx.coordinatorlayout.widget.CoordinatorLayout
+ android:id="@+id/logcat_coordinatorlayout"
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_height="match_parent"
+ android:layout_width="match_parent" >
+
+ <!-- The linear layout with `orientation="vertical"` moves the content below the app bar layout. -->
+ <LinearLayout
+ android:layout_height="match_parent"
+ android:layout_width="match_parent"
+ android:orientation="vertical" >
+
+ <!-- The app bar theme must be specified here because the activity uses a `NoActionBar` theme. -->
+ <com.google.android.material.appbar.AppBarLayout
+ android:id="@+id/logcat_appbarlayout"
+ android:layout_height="wrap_content"
+ android:layout_width="match_parent"
+ android:background="?android:attr/colorBackground"
+ android:theme="@style/PrivacyBrowserAppBar" >
+
+ <androidx.appcompat.widget.Toolbar
+ android:id="@+id/logcat_toolbar"
+ android:layout_height="wrap_content"
+ android:layout_width="match_parent" />
+ </com.google.android.material.appbar.AppBarLayout>
+
+ <androidx.swiperefreshlayout.widget.SwipeRefreshLayout
+ android:id="@+id/logcat_swiperefreshlayout"
+ android:layout_height="match_parent"
+ android:layout_width="match_parent" >
+
+ <ScrollView
+ android:id="@+id/logcat_scrollview"
+ android:layout_height="wrap_content"
+ android:layout_width="match_parent" >
+
+ <TextView
+ android:id="@+id/logcat_textview"
+ android:layout_height="wrap_content"
+ android:layout_width="match_parent"
+ android:layout_margin="10dp"
+ android:textIsSelectable="true" />
+ </ScrollView>
+ </androidx.swiperefreshlayout.widget.SwipeRefreshLayout>
+ </LinearLayout>
+</androidx.coordinatorlayout.widget.CoordinatorLayout>
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>
+
+<!--
+ Copyright © 2018-2021 Soren Stoutner <soren@stoutner.com>.
+
+ This file is part of Privacy Browser <https://www.stoutner.com/privacy-browser>.
+
+ Privacy Browser 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 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. If not, see <http://www.gnu.org/licenses/>. -->
+
+<androidx.coordinatorlayout.widget.CoordinatorLayout
+ android:id="@+id/requests_coordinatorlayout"
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_height="match_parent"
+ android:layout_width="match_parent" >
+
+ <!-- The linear layout with `orientation="vertical"` keeps the content above the app bar layout. -->
+ <LinearLayout
+ android:layout_height="match_parent"
+ android:layout_width="match_parent"
+ android:orientation="vertical" >
+
+ <!-- `android:dividerHeight` must be at least `1dp` or the list view is inconsistent in calculating how many bookmarks are displayed. -->
+ <ListView
+ android:id="@+id/requests_listview"
+ android:layout_height="0dp"
+ android:layout_width="match_parent"
+ android:layout_weight="1"
+ android:divider="@color/transparent"
+ android:dividerHeight="1dp" />
+
+ <!-- The app bar theme must be specified here because the activity uses a `NoActionBar` theme. -->
+ <com.google.android.material.appbar.AppBarLayout
+ android:id="@+id/requests_appbarlayout"
+ android:layout_height="wrap_content"
+ android:layout_width="match_parent"
+ android:background="?android:attr/colorBackground"
+ android:theme="@style/PrivacyBrowserAppBar" >
+
+ <androidx.appcompat.widget.Toolbar
+ android:id="@+id/requests_toolbar"
+ android:layout_height="wrap_content"
+ android:layout_width="match_parent" />
+ </com.google.android.material.appbar.AppBarLayout>
+ </LinearLayout>
+</androidx.coordinatorlayout.widget.CoordinatorLayout>
\ No newline at end of file
+++ /dev/null
-<?xml version="1.0" encoding="utf-8"?>
-
-<!--
- Copyright © 2018-2021 Soren Stoutner <soren@stoutner.com>.
-
- This file is part of Privacy Browser <https://www.stoutner.com/privacy-browser>.
-
- Privacy Browser 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 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. If not, see <http://www.gnu.org/licenses/>. -->
-
-<androidx.coordinatorlayout.widget.CoordinatorLayout
- android:id="@+id/requests_coordinatorlayout"
- xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_height="match_parent"
- android:layout_width="match_parent" >
-
- <!-- The linear layout with `orientation="vertical"` keeps the content above the app bar layout. -->
- <LinearLayout
- android:layout_height="match_parent"
- android:layout_width="match_parent"
- android:orientation="vertical" >
-
- <!-- `android:dividerHeight` must be at least `1dp` or the list view is inconsistent in calculating how many bookmarks are displayed. -->
- <ListView
- android:id="@+id/requests_listview"
- android:layout_height="0dp"
- android:layout_width="match_parent"
- android:layout_weight="1"
- android:divider="@color/transparent"
- android:dividerHeight="1dp" />
-
- <!-- The app bar theme must be specified here because the activity uses a `NoActionBar` theme. -->
- <com.google.android.material.appbar.AppBarLayout
- android:id="@+id/requests_appbarlayout"
- android:layout_height="wrap_content"
- android:layout_width="match_parent"
- android:background="?android:attr/colorBackground"
- android:theme="@style/PrivacyBrowserAppBar" >
-
- <androidx.appcompat.widget.Toolbar
- android:id="@+id/requests_toolbar"
- android:layout_height="wrap_content"
- android:layout_width="match_parent" />
- </com.google.android.material.appbar.AppBarLayout>
- </LinearLayout>
-</androidx.coordinatorlayout.widget.CoordinatorLayout>
\ No newline at end of file
+++ /dev/null
-<?xml version="1.0" encoding="utf-8"?>
-
-<!--
- Copyright © 2018-2021 Soren Stoutner <soren@stoutner.com>.
-
- This file is part of Privacy Browser <https://www.stoutner.com/privacy-browser>.
-
- Privacy Browser 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 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. If not, see <http://www.gnu.org/licenses/>. -->
-
-<androidx.coordinatorlayout.widget.CoordinatorLayout
- android:id="@+id/requests_coordinatorlayout"
- xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_height="match_parent"
- android:layout_width="match_parent" >
-
- <!-- The linear layout with `orientation="vertical"` moves the content below the app bar layout. -->
- <LinearLayout
- android:layout_height="match_parent"
- android:layout_width="match_parent"
- android:orientation="vertical" >
-
- <!-- The app bar theme must be specified here because the activity uses a `NoActionBar` theme. -->
- <com.google.android.material.appbar.AppBarLayout
- android:id="@+id/requests_appbarlayout"
- android:layout_height="wrap_content"
- android:layout_width="match_parent"
- android:background="?android:attr/colorBackground"
- android:theme="@style/PrivacyBrowserAppBar" >
-
- <androidx.appcompat.widget.Toolbar
- android:id="@+id/requests_toolbar"
- android:layout_height="wrap_content"
- android:layout_width="match_parent" />
- </com.google.android.material.appbar.AppBarLayout>
-
- <!-- `android:dividerHeight` must be at least `1dp` or the list view is inconsistent in calculating how many bookmarks are displayed. -->
- <ListView
- android:id="@+id/requests_listview"
- android:layout_height="match_parent"
- android:layout_width="match_parent"
- android:divider="@color/transparent"
- android:dividerHeight="1dp" />
- </LinearLayout>
-</androidx.coordinatorlayout.widget.CoordinatorLayout>
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>
+
+<!--
+ Copyright © 2018-2021 Soren Stoutner <soren@stoutner.com>.
+
+ This file is part of Privacy Browser <https://www.stoutner.com/privacy-browser>.
+
+ Privacy Browser 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 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. If not, see <http://www.gnu.org/licenses/>. -->
+
+<androidx.coordinatorlayout.widget.CoordinatorLayout
+ android:id="@+id/requests_coordinatorlayout"
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_height="match_parent"
+ android:layout_width="match_parent" >
+
+ <!-- The linear layout with `orientation="vertical"` moves the content below the app bar layout. -->
+ <LinearLayout
+ android:layout_height="match_parent"
+ android:layout_width="match_parent"
+ android:orientation="vertical" >
+
+ <!-- The app bar theme must be specified here because the activity uses a `NoActionBar` theme. -->
+ <com.google.android.material.appbar.AppBarLayout
+ android:id="@+id/requests_appbarlayout"
+ android:layout_height="wrap_content"
+ android:layout_width="match_parent"
+ android:background="?android:attr/colorBackground"
+ android:theme="@style/PrivacyBrowserAppBar" >
+
+ <androidx.appcompat.widget.Toolbar
+ android:id="@+id/requests_toolbar"
+ android:layout_height="wrap_content"
+ android:layout_width="match_parent" />
+ </com.google.android.material.appbar.AppBarLayout>
+
+ <!-- `android:dividerHeight` must be at least `1dp` or the list view is inconsistent in calculating how many bookmarks are displayed. -->
+ <ListView
+ android:id="@+id/requests_listview"
+ android:layout_height="match_parent"
+ android:layout_width="match_parent"
+ android:divider="@color/transparent"
+ android:dividerHeight="1dp" />
+ </LinearLayout>
+</androidx.coordinatorlayout.widget.CoordinatorLayout>
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>
+
+<!--
+ Copyright © 2017-2021 Soren Stoutner <soren@stoutner.com>.
+
+ This file is part of Privacy Browser <https://www.stoutner.com/privacy-browser>.
+
+ Privacy Browser 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 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. If not, see <http://www.gnu.org/licenses/>. -->
+
+<!-- Setting the layout root to be `focusableInTouchMode` prevents the URL toolbar from stealing focus on launch and opening the keyboard. -->
+<androidx.coordinatorlayout.widget.CoordinatorLayout android:id="@+id/view_source_coordinatorlayout"
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:tools="http://schemas.android.com/tools"
+ android:layout_height="match_parent"
+ android:layout_width="match_parent"
+ android:focusable="true"
+ android:focusableInTouchMode="true"
+ xmlns:app="http://schemas.android.com/apk/res-auto">
+
+ <!-- The linear layout with `orientation="vertical"` keeps the content above the app bar layout. `app:layout_dodgeInsetEdges="bottom"` as a child of a coordinator layout moves the view above snackbars. -->
+ <LinearLayout
+ android:layout_height="match_parent"
+ android:layout_width="match_parent"
+ android:orientation="vertical"
+ app:layout_dodgeInsetEdges="bottom" >
+
+ <!-- `android:layout_weight="1"` causes the swipe refresh layout to fill all the remaining space. -->
+ <androidx.swiperefreshlayout.widget.SwipeRefreshLayout
+ android:id="@+id/view_source_swiperefreshlayout"
+ android:layout_height="0dp"
+ android:layout_width="match_parent"
+ android:layout_weight="1">
+
+ <ScrollView
+ android:id="@+id/view_source_scrollview"
+ android:layout_height="wrap_content"
+ android:layout_width="match_parent" >
+
+ <LinearLayout
+ android:layout_height="wrap_content"
+ android:layout_width="match_parent"
+ android:orientation="vertical"
+ android:layout_margin="10dp" >
+
+ <!-- Request headers. -->
+ <TextView
+ android:id="@+id/request_headers_title_textview"
+ android:layout_height="wrap_content"
+ android:layout_width="match_parent"
+ android:text="@string/request_headers"
+ android:textAlignment="center"
+ android:textSize="18sp"
+ android:textColor="?attr/blueTextColor"
+ android:textStyle="bold" />
+
+ <TextView
+ android:id="@+id/request_headers_textview"
+ android:layout_height="wrap_content"
+ android:layout_width="match_parent"
+ android:textIsSelectable="true"
+ android:layout_marginBottom="8dp" />
+
+ <!-- Response message. -->
+ <TextView
+ android:id="@+id/response_message_title_textview"
+ android:layout_height="wrap_content"
+ android:layout_width="match_parent"
+ android:text="@string/response_message"
+ android:textAlignment="center"
+ android:textSize="18sp"
+ android:textColor="?attr/blueTextColor"
+ android:textStyle="bold" />
+
+ <TextView
+ android:id="@+id/response_message_textview"
+ android:layout_height="wrap_content"
+ android:layout_width="match_parent"
+ android:textIsSelectable="true"
+ android:layout_marginBottom="8dp" />
+
+ <!-- Response headers. -->
+ <!-- The title text is set programatically. -->
+ <TextView
+ android:id="@+id/response_headers_title_textivew"
+ android:layout_height="wrap_content"
+ android:layout_width="match_parent"
+ android:textAlignment="center"
+ android:textSize="18sp"
+ android:textColor="?attr/blueTextColor"
+ android:textStyle="bold" />
+
+ <TextView
+ android:id="@+id/response_headers_textview"
+ android:layout_height="wrap_content"
+ android:layout_width="match_parent"
+ android:textIsSelectable="true"
+ android:layout_marginBottom="8dp" />
+
+ <!-- Response body. -->
+ <!-- The title text is set programatically. -->
+ <TextView
+ android:id="@+id/response_body_title_textview"
+ android:layout_height="wrap_content"
+ android:layout_width="match_parent"
+ android:textAlignment="center"
+ android:textSize="18sp"
+ android:textColor="?attr/blueTextColor"
+ android:textStyle="bold" />
+
+ <TextView
+ android:id="@+id/response_body_textview"
+ android:layout_height="wrap_content"
+ android:layout_width="match_parent"
+ android:textIsSelectable="true" />
+ </LinearLayout>
+ </ScrollView>
+ </androidx.swiperefreshlayout.widget.SwipeRefreshLayout>
+
+ <!-- The app bar theme must be specified here because the activity uses a `NoActionBar` theme. -->
+ <com.google.android.material.appbar.AppBarLayout
+ android:layout_height="wrap_content"
+ android:layout_width="match_parent"
+ android:background="?android:attr/colorBackground"
+ android:theme="@style/PrivacyBrowserAppBar" >
+
+ <!-- The frame layout allows the toolbar and the progress bar to occupy the same space. -->
+ <FrameLayout
+ android:layout_height="wrap_content"
+ android:layout_width="match_parent" >
+
+ <androidx.appcompat.widget.Toolbar
+ android:id="@+id/view_source_toolbar"
+ android:layout_height="wrap_content"
+ android:layout_width="match_parent" />
+
+ <!-- Android automatically uses a different, skinnier drawable with padding for indeterminate horizontal progress bars in API >= 21.
+ They make this very difficult to override. https://redmine.stoutner.com/issues/241
+ `tools:ignore="UnusedAttribute"` removes the lint warning about `progressTint` and `progressBackgroundTint` not applying to API < 21. -->
+ <ProgressBar
+ android:id="@+id/progress_bar"
+ style="?android:attr/progressBarStyleHorizontal"
+ android:layout_height="wrap_content"
+ android:layout_width="match_parent"
+ android:minHeight="3dp"
+ android:layout_gravity="bottom"
+ android:visibility="gone"
+ tools:ignore="UnusedAttribute" />
+ </FrameLayout>
+ </com.google.android.material.appbar.AppBarLayout>
+ </LinearLayout>
+</androidx.coordinatorlayout.widget.CoordinatorLayout>
\ No newline at end of file
+++ /dev/null
-<?xml version="1.0" encoding="utf-8"?>
-
-<!--
- Copyright © 2017-2021 Soren Stoutner <soren@stoutner.com>.
-
- This file is part of Privacy Browser <https://www.stoutner.com/privacy-browser>.
-
- Privacy Browser 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 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. If not, see <http://www.gnu.org/licenses/>. -->
-
-<!-- Setting the layout root to be `focusableInTouchMode` prevents the URL toolbar from stealing focus on launch and opening the keyboard. -->
-<androidx.coordinatorlayout.widget.CoordinatorLayout android:id="@+id/view_source_coordinatorlayout"
- xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:tools="http://schemas.android.com/tools"
- android:layout_height="match_parent"
- android:layout_width="match_parent"
- android:focusable="true"
- android:focusableInTouchMode="true"
- xmlns:app="http://schemas.android.com/apk/res-auto">
-
- <!-- The linear layout with `orientation="vertical"` keeps the content above the app bar layout. `app:layout_dodgeInsetEdges="bottom"` as a child of a coordinator layout moves the view above snackbars. -->
- <LinearLayout
- android:layout_height="match_parent"
- android:layout_width="match_parent"
- android:orientation="vertical"
- app:layout_dodgeInsetEdges="bottom" >
-
- <!-- `android:layout_weight="1"` causes the swipe refresh layout to fill all the remaining space. -->
- <androidx.swiperefreshlayout.widget.SwipeRefreshLayout
- android:id="@+id/view_source_swiperefreshlayout"
- android:layout_height="0dp"
- android:layout_width="match_parent"
- android:layout_weight="1">
-
- <ScrollView
- android:id="@+id/view_source_scrollview"
- android:layout_height="wrap_content"
- android:layout_width="match_parent" >
-
- <LinearLayout
- android:layout_height="wrap_content"
- android:layout_width="match_parent"
- android:orientation="vertical"
- android:layout_margin="10dp" >
-
- <!-- Request headers. -->
- <TextView
- android:id="@+id/request_headers_title_textview"
- android:layout_height="wrap_content"
- android:layout_width="match_parent"
- android:text="@string/request_headers"
- android:textAlignment="center"
- android:textSize="18sp"
- android:textColor="?attr/blueTextColor"
- android:textStyle="bold" />
-
- <TextView
- android:id="@+id/request_headers_textview"
- android:layout_height="wrap_content"
- android:layout_width="match_parent"
- android:textIsSelectable="true"
- android:layout_marginBottom="8dp" />
-
- <!-- Response message. -->
- <TextView
- android:id="@+id/response_message_title_textview"
- android:layout_height="wrap_content"
- android:layout_width="match_parent"
- android:text="@string/response_message"
- android:textAlignment="center"
- android:textSize="18sp"
- android:textColor="?attr/blueTextColor"
- android:textStyle="bold" />
-
- <TextView
- android:id="@+id/response_message_textview"
- android:layout_height="wrap_content"
- android:layout_width="match_parent"
- android:textIsSelectable="true"
- android:layout_marginBottom="8dp" />
-
- <!-- Response headers. -->
- <!-- The title text is set programatically. -->
- <TextView
- android:id="@+id/response_headers_title_textivew"
- android:layout_height="wrap_content"
- android:layout_width="match_parent"
- android:textAlignment="center"
- android:textSize="18sp"
- android:textColor="?attr/blueTextColor"
- android:textStyle="bold" />
-
- <TextView
- android:id="@+id/response_headers_textview"
- android:layout_height="wrap_content"
- android:layout_width="match_parent"
- android:textIsSelectable="true"
- android:layout_marginBottom="8dp" />
-
- <!-- Response body. -->
- <!-- The title text is set programatically. -->
- <TextView
- android:id="@+id/response_body_title_textview"
- android:layout_height="wrap_content"
- android:layout_width="match_parent"
- android:textAlignment="center"
- android:textSize="18sp"
- android:textColor="?attr/blueTextColor"
- android:textStyle="bold" />
-
- <TextView
- android:id="@+id/response_body_textview"
- android:layout_height="wrap_content"
- android:layout_width="match_parent"
- android:textIsSelectable="true" />
- </LinearLayout>
- </ScrollView>
- </androidx.swiperefreshlayout.widget.SwipeRefreshLayout>
-
- <!-- The app bar theme must be specified here because the activity uses a `NoActionBar` theme. -->
- <com.google.android.material.appbar.AppBarLayout
- android:layout_height="wrap_content"
- android:layout_width="match_parent"
- android:background="?android:attr/colorBackground"
- android:theme="@style/PrivacyBrowserAppBar" >
-
- <!-- The frame layout allows the toolbar and the progress bar to occupy the same space. -->
- <FrameLayout
- android:layout_height="wrap_content"
- android:layout_width="match_parent" >
-
- <androidx.appcompat.widget.Toolbar
- android:id="@+id/view_source_toolbar"
- android:layout_height="wrap_content"
- android:layout_width="match_parent" />
-
- <!-- Android automatically uses a different, skinnier drawable with padding for indeterminate horizontal progress bars in API >= 21.
- They make this very difficult to override. https://redmine.stoutner.com/issues/241
- `tools:ignore="UnusedAttribute"` removes the lint warning about `progressTint` and `progressBackgroundTint` not applying to API < 21. -->
- <ProgressBar
- android:id="@+id/progress_bar"
- style="?android:attr/progressBarStyleHorizontal"
- android:layout_height="wrap_content"
- android:layout_width="match_parent"
- android:minHeight="3dp"
- android:layout_gravity="bottom"
- android:visibility="gone"
- tools:ignore="UnusedAttribute" />
- </FrameLayout>
- </com.google.android.material.appbar.AppBarLayout>
- </LinearLayout>
-</androidx.coordinatorlayout.widget.CoordinatorLayout>
\ No newline at end of file
+++ /dev/null
-<?xml version="1.0" encoding="utf-8"?>
-
-<!--
- Copyright © 2017-2021 Soren Stoutner <soren@stoutner.com>.
-
- This file is part of Privacy Browser <https://www.stoutner.com/privacy-browser>.
-
- Privacy Browser 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 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. If not, see <http://www.gnu.org/licenses/>. -->
-
-<!-- Setting the layout root to be `focusableInTouchMode` prevents the URL toolbar from stealing focus on launch and opening the keyboard. -->
-<androidx.coordinatorlayout.widget.CoordinatorLayout
- android:id="@+id/view_source_coordinatorlayout"
- xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:tools="http://schemas.android.com/tools"
- android:layout_height="match_parent"
- android:layout_width="match_parent"
- android:focusable="true"
- android:focusableInTouchMode="true" >
-
- <!-- The linear layout with `orientation="vertical"` moves the content below the app bar layout. -->
- <LinearLayout
- android:layout_height="match_parent"
- android:layout_width="match_parent"
- android:orientation="vertical" >
-
- <!-- The app bar theme must be specified here because the activity uses a `NoActionBar` theme. -->
- <com.google.android.material.appbar.AppBarLayout
- android:layout_height="wrap_content"
- android:layout_width="match_parent"
- android:background="?android:attr/colorBackground"
- android:theme="@style/PrivacyBrowserAppBar" >
-
- <!-- The frame layout allows the toolbar and the progress bar to occupy the same space. -->
- <FrameLayout
- android:layout_height="wrap_content"
- android:layout_width="match_parent" >
-
- <androidx.appcompat.widget.Toolbar
- android:id="@+id/view_source_toolbar"
- android:layout_height="wrap_content"
- android:layout_width="match_parent" />
-
- <!-- Android automatically uses a different, skinnier drawable with padding for indeterminate horizontal progress bars in API >= 21.
- They make this very difficult to override. https://redmine.stoutner.com/issues/241
- `tools:ignore="UnusedAttribute"` removes the lint warning about `progressTint` and `progressBackgroundTint` not applying to API < 21. -->
- <ProgressBar
- android:id="@+id/progress_bar"
- style="?android:attr/progressBarStyleHorizontal"
- android:layout_height="wrap_content"
- android:layout_width="match_parent"
- android:minHeight="3dp"
- android:layout_gravity="bottom"
- android:visibility="gone"
- tools:ignore="UnusedAttribute" />
- </FrameLayout>
- </com.google.android.material.appbar.AppBarLayout>
-
- <androidx.swiperefreshlayout.widget.SwipeRefreshLayout
- android:id="@+id/view_source_swiperefreshlayout"
- android:layout_height="match_parent"
- android:layout_width="match_parent">
-
- <ScrollView
- android:id="@+id/view_source_scrollview"
- android:layout_height="wrap_content"
- android:layout_width="match_parent" >
-
- <LinearLayout
- android:layout_height="wrap_content"
- android:layout_width="match_parent"
- android:orientation="vertical"
- android:layout_margin="10dp" >
-
- <!-- Request headers. -->
- <TextView
- android:id="@+id/request_headers_title_textview"
- android:layout_height="wrap_content"
- android:layout_width="match_parent"
- android:text="@string/request_headers"
- android:textAlignment="center"
- android:textSize="18sp"
- android:textColor="?attr/blueTextColor"
- android:textStyle="bold" />
-
- <TextView
- android:id="@+id/request_headers_textview"
- android:layout_height="wrap_content"
- android:layout_width="match_parent"
- android:textIsSelectable="true"
- android:layout_marginBottom="8dp" />
-
- <!-- Response message. -->
- <TextView
- android:id="@+id/response_message_title_textview"
- android:layout_height="wrap_content"
- android:layout_width="match_parent"
- android:text="@string/response_message"
- android:textAlignment="center"
- android:textSize="18sp"
- android:textColor="?attr/blueTextColor"
- android:textStyle="bold" />
-
- <TextView
- android:id="@+id/response_message_textview"
- android:layout_height="wrap_content"
- android:layout_width="match_parent"
- android:textIsSelectable="true"
- android:layout_marginBottom="8dp" />
-
- <!-- Response headers. -->
- <!-- The title text is set programatically. -->
- <TextView
- android:id="@+id/response_headers_title_textivew"
- android:layout_height="wrap_content"
- android:layout_width="match_parent"
- android:textAlignment="center"
- android:textSize="18sp"
- android:textColor="?attr/blueTextColor"
- android:textStyle="bold" />
-
- <TextView
- android:id="@+id/response_headers_textview"
- android:layout_height="wrap_content"
- android:layout_width="match_parent"
- android:textIsSelectable="true"
- android:layout_marginBottom="8dp" />
-
- <!-- Response body. -->
- <!-- The title text is set programatically. -->
- <TextView
- android:id="@+id/response_body_title_textview"
- android:layout_height="wrap_content"
- android:layout_width="match_parent"
- android:textAlignment="center"
- android:textSize="18sp"
- android:textColor="?attr/blueTextColor"
- android:textStyle="bold" />
-
- <TextView
- android:id="@+id/response_body_textview"
- android:layout_height="wrap_content"
- android:layout_width="match_parent"
- android:textIsSelectable="true" />
- </LinearLayout>
- </ScrollView>
- </androidx.swiperefreshlayout.widget.SwipeRefreshLayout>
- </LinearLayout>
-</androidx.coordinatorlayout.widget.CoordinatorLayout>
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>
+
+<!--
+ Copyright © 2017-2021 Soren Stoutner <soren@stoutner.com>.
+
+ This file is part of Privacy Browser <https://www.stoutner.com/privacy-browser>.
+
+ Privacy Browser 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 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. If not, see <http://www.gnu.org/licenses/>. -->
+
+<!-- Setting the layout root to be `focusableInTouchMode` prevents the URL toolbar from stealing focus on launch and opening the keyboard. -->
+<androidx.coordinatorlayout.widget.CoordinatorLayout
+ android:id="@+id/view_source_coordinatorlayout"
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:tools="http://schemas.android.com/tools"
+ android:layout_height="match_parent"
+ android:layout_width="match_parent"
+ android:focusable="true"
+ android:focusableInTouchMode="true" >
+
+ <!-- The linear layout with `orientation="vertical"` moves the content below the app bar layout. -->
+ <LinearLayout
+ android:layout_height="match_parent"
+ android:layout_width="match_parent"
+ android:orientation="vertical" >
+
+ <!-- The app bar theme must be specified here because the activity uses a `NoActionBar` theme. -->
+ <com.google.android.material.appbar.AppBarLayout
+ android:layout_height="wrap_content"
+ android:layout_width="match_parent"
+ android:background="?android:attr/colorBackground"
+ android:theme="@style/PrivacyBrowserAppBar" >
+
+ <!-- The frame layout allows the toolbar and the progress bar to occupy the same space. -->
+ <FrameLayout
+ android:layout_height="wrap_content"
+ android:layout_width="match_parent" >
+
+ <androidx.appcompat.widget.Toolbar
+ android:id="@+id/view_source_toolbar"
+ android:layout_height="wrap_content"
+ android:layout_width="match_parent" />
+
+ <!-- Android automatically uses a different, skinnier drawable with padding for indeterminate horizontal progress bars in API >= 21.
+ They make this very difficult to override. https://redmine.stoutner.com/issues/241
+ `tools:ignore="UnusedAttribute"` removes the lint warning about `progressTint` and `progressBackgroundTint` not applying to API < 21. -->
+ <ProgressBar
+ android:id="@+id/progress_bar"
+ style="?android:attr/progressBarStyleHorizontal"
+ android:layout_height="wrap_content"
+ android:layout_width="match_parent"
+ android:minHeight="3dp"
+ android:layout_gravity="bottom"
+ android:visibility="gone"
+ tools:ignore="UnusedAttribute" />
+ </FrameLayout>
+ </com.google.android.material.appbar.AppBarLayout>
+
+ <androidx.swiperefreshlayout.widget.SwipeRefreshLayout
+ android:id="@+id/view_source_swiperefreshlayout"
+ android:layout_height="match_parent"
+ android:layout_width="match_parent">
+
+ <ScrollView
+ android:id="@+id/view_source_scrollview"
+ android:layout_height="wrap_content"
+ android:layout_width="match_parent" >
+
+ <LinearLayout
+ android:layout_height="wrap_content"
+ android:layout_width="match_parent"
+ android:orientation="vertical"
+ android:layout_margin="10dp" >
+
+ <!-- Request headers. -->
+ <TextView
+ android:id="@+id/request_headers_title_textview"
+ android:layout_height="wrap_content"
+ android:layout_width="match_parent"
+ android:text="@string/request_headers"
+ android:textAlignment="center"
+ android:textSize="18sp"
+ android:textColor="?attr/blueTextColor"
+ android:textStyle="bold" />
+
+ <TextView
+ android:id="@+id/request_headers_textview"
+ android:layout_height="wrap_content"
+ android:layout_width="match_parent"
+ android:textIsSelectable="true"
+ android:layout_marginBottom="8dp" />
+
+ <!-- Response message. -->
+ <TextView
+ android:id="@+id/response_message_title_textview"
+ android:layout_height="wrap_content"
+ android:layout_width="match_parent"
+ android:text="@string/response_message"
+ android:textAlignment="center"
+ android:textSize="18sp"
+ android:textColor="?attr/blueTextColor"
+ android:textStyle="bold" />
+
+ <TextView
+ android:id="@+id/response_message_textview"
+ android:layout_height="wrap_content"
+ android:layout_width="match_parent"
+ android:textIsSelectable="true"
+ android:layout_marginBottom="8dp" />
+
+ <!-- Response headers. -->
+ <!-- The title text is set programatically. -->
+ <TextView
+ android:id="@+id/response_headers_title_textivew"
+ android:layout_height="wrap_content"
+ android:layout_width="match_parent"
+ android:textAlignment="center"
+ android:textSize="18sp"
+ android:textColor="?attr/blueTextColor"
+ android:textStyle="bold" />
+
+ <TextView
+ android:id="@+id/response_headers_textview"
+ android:layout_height="wrap_content"
+ android:layout_width="match_parent"
+ android:textIsSelectable="true"
+ android:layout_marginBottom="8dp" />
+
+ <!-- Response body. -->
+ <!-- The title text is set programatically. -->
+ <TextView
+ android:id="@+id/response_body_title_textview"
+ android:layout_height="wrap_content"
+ android:layout_width="match_parent"
+ android:textAlignment="center"
+ android:textSize="18sp"
+ android:textColor="?attr/blueTextColor"
+ android:textStyle="bold" />
+
+ <TextView
+ android:id="@+id/response_body_textview"
+ android:layout_height="wrap_content"
+ android:layout_width="match_parent"
+ android:textIsSelectable="true" />
+ </LinearLayout>
+ </ScrollView>
+ </androidx.swiperefreshlayout.widget.SwipeRefreshLayout>
+ </LinearLayout>
+</androidx.coordinatorlayout.widget.CoordinatorLayout>
\ No newline at end of file
<!--
Copyright © 2016-2021 Soren Stoutner <soren@stoutner.com>.
- Translation 2017-2021 Jose A. León Becerra. Copyright assigned to Soren Stoutner <soren@stoutner.com>.
+ Translation 2017-2021 Jose A. León. Copyright assigned to Soren Stoutner <soren@stoutner.com>.
This file is part of Privacy Browser <https://www.stoutner.com/privacy-browser>.
<!--
Copyright © 2015-2021 Soren Stoutner <soren@stoutner.com>.
- Translation 2019-2020 Kévin LE FLOHIC <kevinliste@framalistes.org>. Copyright assigned to Soren Stoutner <soren@stoutner.com>.
+ Translation 2019-2021 Kévin L. <kevinliste@framalistes.org>. Copyright assigned to Soren Stoutner <soren@stoutner.com>.
This file is part of Privacy Browser <https://www.stoutner.com/privacy-browser>.
<string name="close">Fermer</string>
<string name="domain">Domaine</string>
<string name="domain_label">Domaine :</string>
- <string name="ip_addresses">Addresse(s) IP :</string>
+ <string name="ip_addresses">Addresse(s) IP:</string>
<string name="issued_to">Delivré à</string>
<string name="issued_by">Délivré par</string>
- <string name="common_name">Nom Commun (CN) :</string>
- <string name="organization">Organisation (O) :</string>
- <string name="organizational_unit">Unité Organisationelle (OU) :</string>
+ <string name="common_name">Nom courant (CN):</string>
+ <string name="organization">Organisation (O):</string>
+ <string name="organizational_unit">Unité Organisationelle (OU):</string>
<string name="valid_dates">Dates de validités</string>
- <string name="start_date">Début :</string>
- <string name="end_date">Fin :</string>
+ <string name="start_date">Début:</string>
+ <string name="end_date">Fin:</string>
<!-- SSL Certificate Error. -->
<string name="ssl_certificate_error">Erreur de certificat SSL</string>
<string name="proceed">Continuer</string>
<string name="future_certificate">La date de début du certificat est dans le futur</string>
<string name="expired_certificate">Le certificat a expiré</string>
- <string name="cn_mismatch">Le nom commun n\'est pas en lien avec le nom d\'hôte</string>
+ <string name="cn_mismatch">Le nom courant n\'est pas en lien avec le nom d\'hôte</string>
<string name="untrusted">L\'autorité de certification n\'est pas de confiance</string>
<string name="invalid_date">La date du certificat est invalide</string>
<string name="invalid_certificate">Le certificat est invalide</string>
<string name="clear_history">Vider l\'historique</string>
<string name="open">Ouvrir</string>
<string name="downloads">Téléchargements</string>
- <string name="no_file_manager_detected">Le système ne peut pas détecter un gestionnaire de fichiers compatible.</string>
+ <string name="no_file_manager_detected">Le système n\'a pas détecté de gestionnaire de fichiers compatible.</string>
<string name="settings">Paramètres</string>
<string name="import_export">Importer/Exporter</string>
<string name="logcat">Journal système</string>
<string name="user_agent_safari_on_macos">Safari sous macOS</string>
<string name="user_agent_custom">Personnalisé</string>
<string name="swipe_to_refresh_options_menu">Glisser pour actualiser</string>
- <string name="wide_viewport">Fenêtre large</string>
+ <string name="wide_viewport">Fenêtre de visualisation large</string>
<string name="display_images">Afficher les images</string>
<string name="dark_webview">WebView sombre</string>
<string name="font_size">Police</string>
<string name="content_data">Données du contenu</string>
<string name="untrusted_ssl_certificate">Le certificat SSL n\'est pas fiable.</string>
<string name="load_anyway">Charger quand même</string>
- <string name="about_view_source">A propos View Source</string>
+ <string name="about_view_source">A propos de Voir Source</string>
<string name="about_view_source_message">Puisqu\'Android Webview ne permet pas de révêler l\'information source,
une requête séparée a été effectuée en utilisant les outils sytèmes afin d\'afficher ce qui est présenté à l\'écran
Il peut donc y avoir des différences entre ces connées et celle utilisée par Webview. Cette limitation sera supprimée lors de la sortie de Privacy Webview 4.x</string>
<!-- Bookmarks. -->
<string name="bookmarks">Favoris</string>
<string name="database_view">Voir base de données</string>
- <string name="bookmark_opened_in_background">Le signet a été ouvert dans un onglet en arrière-plan.</string>
+ <string name="bookmark_opened_in_background">Le favori a été ouvert dans un onglet en arrière-plan.</string>
<string name="create_bookmark">Créer un favori</string>
<string name="create_folder">Créer un dossier</string>
- <string name="current_bookmark_icon">Icone actuelle</string>
- <string name="current_folder_icon">Icone actuelle</string>
- <string name="default_folder_icon">Icone par défaut</string>
- <string name="webpage_favorite_icon">Icone de la page web courante</string>
+ <string name="current_bookmark_icon">Icône actuelle</string>
+ <string name="current_folder_icon">Icône actuelle</string>
+ <string name="default_folder_icon">Icône par défaut</string>
+ <string name="webpage_favorite_icon">Icône de la page web courante</string>
<string name="bookmark_name">Nom du favori</string>
<string name="folder_name">Nom du dossier</string>
<string name="bookmark_url">Ajouter aux favoris</string>
<!-- About Activity. -->
<string name="about_privacy_browser">À propos</string>
<string name="version">Version</string>
- <string name="version_code">version du code</string>
+ <string name="version_code">Code de la version</string>
<string name="hardware">Matériel</string>
<string name="brand">Marque :</string>
<string name="manufacturer">Constructeur :</string>
<string name="ultralist_label">UltraList :</string>
<string name="ultraprivacy_label">UltraPrivacy :</string>
<string name="package_signature">Signature de paquets</string>
- <string name="issuer_dn">Emetteur DN :</string>
- <string name="subject_dn">Sujet DN :</string>
+ <string name="issuer_dn">DN émetteur :</string>
+ <string name="subject_dn">Dn sujet :</string>
<string name="certificate_version">Version du certificat :</string>
<string name="serial_number">Numéro de série :</string>
<string name="signature_algorithm">Algorithme de chiffrement :</string>
<string name="fanboys_social_blocking_list">Fanboy’s social blocking list</string>
<string name="fanboys_social_blocking_list_summary">Bloque les contenus des médias sociaux tiers.</string>
<string name="ultralist">UltraList</string>
- <string name="ultralist_summary">UltraList bloque les publicités que EasyList ne bloque pas car cela peut casser les sites Web</string>
+ <string name="ultralist_summary">Bloque les publicités qu\'EasyList ne bloque pas car cela peut casser les sites Web</string>
<string name="ultraprivacy">UltraPrivacy</string>
- <string name="ultraprivacy_summary">UltraPrivacy bloque les pisteurs que EasyPrivacy ne bloque pas car cela peut casser les sites Web.</string>
- <string name="block_all_third_party_requests">Bloquers toutes les requêtes tierces</string>
+ <string name="ultraprivacy_summary">Bloque les pisteurs qu\'EasyPrivacy ne bloque pas car cela peut casser les sites Web.</string>
+ <string name="block_all_third_party_requests">Bloquer toutes les requêtes tierces</string>
<string name="block_all_third_party_requests_summary">Le blocage de toutes les requêtes tierces augmente la vie privée, mais détruit de nombreux sites Web.</string>
<string name="url_modification">Modifications d\'URL</string>
<string name="google_analytics">Google Analytics</string>
<string name="facebook_click_ids">Facebook Click IDs</string>
<string name="facebook_click_ids_summary">Supprime “?fbclid=”, “&fbclid=”, “?fbadid=” et “&fbadid=” et tout ce qui suit après ces URLs.</string>
<string name="twitter_amp_redirects">Twitter AMP</string>
- <string name="twitter_amp_redirects_summary">Supprimer “?amp=1” et tout ce qui suit après cette URL.</string>
+ <string name="twitter_amp_redirects_summary">Supprime “?amp=1” et tout ce qui suit après cette URL.</string>
<string name="search">Moteur de Recherche</string>
<string-array name="search_entries">
<item>Mojeek</item>
<item>I2P</item>
<item>Personnalisé</item>
</string-array>
- <string name="no_proxy_enabled">Aucun - Connectez-vous directement à Internet.</string>
- <string name="tor_enabled">Tor - Connectez-vous via socks://localhost:9050.</string>
- <string name="tor_enabled_kitkat">Tor - Connectez-vous via http://localhost:8118.</string>
- <string name="i2p_enabled">I2P - Connectez-vous via http://localhost:4444.</string>
+ <string name="no_proxy_enabled">Aucun - Se connecter directement à Internet.</string>
+ <string name="tor_enabled">Tor - Se connecter via socks://localhost:9050.</string>
+ <string name="tor_enabled_kitkat">Tor - Se connecter via http://localhost:8118.</string>
+ <string name="i2p_enabled">I2P - Se connecter via http://localhost:4444.</string>
<string name="custom_proxy">Proxy personnalisé</string>
<string name="proxy_custom_url">URL personnalisée du proxy</string>
<string name="full_screen">Plein écran</string>
<string name="full_screen_browsing_mode">Navigation plein écran</string>
- <string name="full_screen_browsing_mode_summary">Appuyez deux fois pour basculer en mode de navigation en plein écran.</string>
+ <string name="full_screen_browsing_mode_summary">Appuyez deux fois pour basculer en mode plein écran.</string>
<string name="hide_app_bar">Masquer la barre d\'application</string>
<string name="hide_app_bar_summary">Masquer la barre d\'applications contenant l\'URL.</string>
<string name="clear_everything">Tout effacer</string>
<string name="open_intents_in_new_tab">Intentions dans un nouvel onglet</string>
<string name="open_intents_in_new_tab_summary">Les intentions sont des liens envoyés à partir d\'autres applications.</string>
<string name="swipe_to_refresh">Glisser pour rafraîchir</string>
- <string name="swipe_to_refresh_summary">Certains sites Web ne fonctionnent pas bien "Glissez pour refraîchir" est activé.</string>
+ <string name="swipe_to_refresh_summary">Certains sites Web ne fonctionnent pas bien lorsque "Glisser pour rafraîchir" est activé.</string>
<string name="download_with_external_app">Téléchargement avec une app externe</string>
<string name="download_with_external_app_summary">Utiliser une application externe pour télécharger des fichiers.</string>
<string name="scroll_app_bar">Défilement barre d\'applications</string>
<item>Sombre</item>
</string-array>
<string name="wide_viewport_preference">Large fenêtre</string>
- <string name="wide_viewport_summary">L\'utilisation d\'une fenêtre d\'affichage large fait que la mise en page de certaines pages Web ressemble davantage au site de bureau.</string>
+ <string name="wide_viewport_summary">L\'utilisation d\'une fenêtre d\'affichage large fait que la mise en page de certaines pages Web ressemble davantage au site sur ordinateur.</string>
<string name="display_webpage_images">Afficher images Web</string>
- <string name="display_webpage_images_summary">Désactiver pour conserver la bande passante.</string>
+ <string name="display_webpage_images_summary">Désactiver pour conserver de la bande passante.</string>
<!-- Ad Control. There are no ads in the standard flavor, but these strings must exist because they are referenced in the code. -->
<string name="ad_consent">Consentement publicitaire</string>
}
dependencies {
- classpath 'com.android.tools.build:gradle:7.0.0'
- classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.5.21"
+ classpath 'com.android.tools.build:gradle:7.0.2'
+ classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.5.31"
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files