From: Soren Stoutner
Date: Fri, 1 Jun 2018 01:55:48 +0000 (-0700)
Subject: Add setting to disable screenshots. https://redmine.stoutner.com/issues/266
X-Git-Tag: v2.11~8
X-Git-Url: https://gitweb.stoutner.com/?a=commitdiff_plain;h=0a5d2eabceeafb49a957598538aa74d4f11dfce0;p=PrivacyBrowserAndroid.git
Add setting to disable screenshots. https://redmine.stoutner.com/issues/266
---
diff --git a/.idea/assetWizardSettings.xml b/.idea/assetWizardSettings.xml
index 8cd05c3f..02141c9f 100644
--- a/.idea/assetWizardSettings.xml
+++ b/.idea/assetWizardSettings.xml
@@ -55,7 +55,39 @@
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/free/assets/de/about_privacy_policy_dark.html b/app/src/free/assets/de/about_privacy_policy_dark.html
index 5fb1977d..cb188bec 100644
--- a/app/src/free/assets/de/about_privacy_policy_dark.html
+++ b/app/src/free/assets/de/about_privacy_policy_dark.html
@@ -77,15 +77,16 @@
Advertisements
- Privacy Browser Free displays a banner ad across the bottom of the screen using Google's AdMob network, which has its own privacy policy .
- These ads are set to be non-personalized and the user is flagged as being under the age of consent,
- which removes all tracking and remarketing .
- AdMob reports anonymized summaries of the following information to developers.
+ Privacy Browser Free einen Werbebanner unten am Bildschirm ein und verwendet hierfür Googles Netzwerk AdMob,
+ dessen eigene Datenschutzbestimmungen hier zu finden sind .
+ Diese Werbung wurde eingestellt als anonymisiert und der Benutzer ist als unter dem Schutzalter gesetzt,
+ was sämtliches Tracking und Remarketing deaktiviert.
+ AdMob überträgt anonymisierte Zusammenfassungen folgender Informationen an die Entwickler.
- - Total impressions
- - Total clicks
- - Platforms
(eg. high-end mobile devices, tablets)
- - Activity by country
+ - Totale Besuche
+ - Totale Klicks
+ - Platform
(z.B. high-end Smartphones, Tablets)
+ - Activitäten nach Ländern
diff --git a/app/src/free/assets/de/about_privacy_policy_light.html b/app/src/free/assets/de/about_privacy_policy_light.html
index 64766e76..5a4bb260 100644
--- a/app/src/free/assets/de/about_privacy_policy_light.html
+++ b/app/src/free/assets/de/about_privacy_policy_light.html
@@ -77,15 +77,16 @@
Advertisements
- Privacy Browser Free displays a banner ad across the bottom of the screen using Google's AdMob network, which has its own privacy policy .
- These ads are set to be non-personalized and the user is flagged as being under the age of consent,
- which removes all tracking and remarketing .
- AdMob reports anonymized summaries of the following information to developers.
+ Privacy Browser Free einen Werbebanner unten am Bildschirm ein und verwendet hierfür Googles Netzwerk AdMob,
+ dessen eigene Datenschutzbestimmungen hier zu finden sind .
+ Diese Werbung wurde eingestellt als anonymisiert und der Benutzer ist als unter dem Schutzalter gesetzt,
+ was sämtliches Tracking und Remarketing deaktiviert.
+ AdMob überträgt anonymisierte Zusammenfassungen folgender Informationen an die Entwickler.
- - Total impressions
- - Total clicks
- - Platforms
(eg. high-end mobile devices, tablets)
- - Activity by country
+ - Totale Besuche
+ - Totale Klicks
+ - Platform
(z.B. high-end Smartphones, Tablets)
+ - Activitäten nach Ländern
diff --git a/app/src/free/res/drawable/privacy_browser_foreground.xml b/app/src/free/res/drawable/privacy_browser_foreground.xml
index 56a4c452..d723a60f 100644
--- a/app/src/free/res/drawable/privacy_browser_foreground.xml
+++ b/app/src/free/res/drawable/privacy_browser_foreground.xml
@@ -1,6 +1,5 @@
-
-
Privacy Browser Free
+
+
+ Privacy Browser Free blendet einen Werbebanner unten am Bildschirm ein.
+ Diese Werbungen kommen von Googles üblich genutzten Anbietern und sind anonymisiert und nicht verfolgend eingestellt. \n\nDie Standardversion von Privacy Browser beinhaltet keine Werbung.
+ Browser schlieÃen
+ Werbung zustimmen
\ No newline at end of file
diff --git a/app/src/main/assets/de/about_changelog_dark.html b/app/src/main/assets/de/about_changelog_dark.html
index 91fdef8d..d6bc6379 100644
--- a/app/src/main/assets/de/about_changelog_dark.html
+++ b/app/src/main/assets/de/about_changelog_dark.html
@@ -31,17 +31,16 @@
2.10 (version code 33)
24. Mai 2018 - Mindest-API 19, Ziel-API 27
- Enable uploading of files to websites on Lollipop and newer.
- Allow applied user agents to be auto-updated with new releases.
- Add a download URL option to the context menu.
- Add an ad consent dialog and update the privacy policy
- for Privacy Browser Free to comply with the GDPR.
- Use the new GDPR ad controls to set all app ads in Privacy Browser Free to be
- non-personalized and non-tracking .
- Fix a bug introduced in version 2.9 that prevented bookmarks from being loaded from the Bookmarks activity.
- Fix a bug that caused some changes in domain settings to not be applied until after a reload .
- Improve the workflow when adding and editing
- domain settings from the options menu.
+ Dateiuploads auf Webseiten unter Lollipop und neuer.
+ Automatische Aktualisierung von user agents mit neuen Releases.
+ Neue Option URL herunterladen im Kontextmenü.
+ Neuer Dialog über Werbung und aktualisierte Datenschutzbestimmungen
+ des Privacy Browser Free im Rahmen der EU-DSGV.
+ Neue Möglichkeit, die Werbung in Privacy Browser Free anonymisiert und nicht verfolgend einzustellen.
+ Bug fix aus Version 2.9: Lesezeichen wurden aus der Lesezeichen-Aktivität nicht geladen .
+ Bug fix: Domaineinstellungen wurden teilweise erst nach Neuladen übernommen .
+ Verbesserte Dialogführung beim Hinzufügen und Bearbeiten
+ von Domaineinstellungen in den Optionen.
Aktualisierte italienische Ãbersetzung von Francesco Buratti.
Aktualisierte russische Ãbersetzung.
Aktualisierte spanische Ãbersetzung von Jose A. León Becerra.
@@ -50,7 +49,7 @@
2.9 (version code 32)
9. Mai 2018 - Mindest-API 19, Ziel-API 27
- Verwendung des öffentlichen Download-Ordners (requires write storage permission ).
+ Verwendung des öffentlichen Download-Ordners (benötigt Schreibrechte ).
Neue Einstellungen für die Block-List in den Domain-Einstellungen.
Unterstützung vom Starten anderer Anwendungen mit Hilfe eigener URLs .
Neue Hilfe zum Lesezeichen-Tab .
diff --git a/app/src/main/assets/de/about_changelog_light.html b/app/src/main/assets/de/about_changelog_light.html
index 709ef8b3..ab151a41 100644
--- a/app/src/main/assets/de/about_changelog_light.html
+++ b/app/src/main/assets/de/about_changelog_light.html
@@ -31,17 +31,16 @@
2.10 (version code 33)
24. Mai 2018 - Mindest-API 19, Ziel-API 27
- Enable uploading of files to websites on Lollipop and newer.
- Allow applied user agents to be auto-updated with new releases.
- Add a download URL option to the context menu.
- Add an ad consent dialog and update the privacy policy
- for Privacy Browser Free to comply with the GDPR.
- Use the new GDPR ad controls to set all app ads in Privacy Browser Free to be
- non-personalized and non-tracking .
- Fix a bug introduced in version 2.9 that prevented bookmarks from being loaded from the Bookmarks activity.
- Fix a bug that caused some changes in domain settings to not be applied until after a reload .
- Improve the workflow when adding and editing
- domain settings from the options menu.
+ Dateiuploads auf Webseiten unter Lollipop und neuer.
+ Automatische Aktualisierung von user agents mit neuen Releases.
+ Neue Option URL herunterladen im Kontextmenü.
+ Neuer Dialog über Werbung und aktualisierte Datenschutzbestimmungen
+ des Privacy Browser Free im Rahmen der EU-DSGV.
+ Neue Möglichkeit, die Werbung in Privacy Browser Free anonymisiert und nicht verfolgend einzustellen.
+ Bug fix aus Version 2.9: Lesezeichen wurden aus der Lesezeichen-Aktivität nicht geladen .
+ Bug fix: Domaineinstellungen wurden teilweise erst nach Neuladen übernommen .
+ Verbesserte Dialogführung beim Hinzufügen und Bearbeiten
+ von Domaineinstellungen in den Optionen.
Aktualisierte italienische Ãbersetzung von Francesco Buratti.
Aktualisierte russische Ãbersetzung.
Aktualisierte spanische Ãbersetzung von Jose A. León Becerra.
@@ -50,7 +49,7 @@
2.9 (version code 32)
9. Mai 2018 - Mindest-API 19, Ziel-API 27
- Verwendung des öffentlichen Download-Ordners (requires write storage permission ).
+ Verwendung des öffentlichen Download-Ordners (benötigt Schreibrechte ).
Neue Einstellungen für die Block-List in den Domain-Einstellungen.
Unterstützung vom Starten anderer Anwendungen mit Hilfe eigener URLs .
Neue Hilfe zum Lesezeichen-Tab .
diff --git a/app/src/main/assets/de/about_licenses_dark.html b/app/src/main/assets/de/about_licenses_dark.html
index 58a32c01..165f8f98 100644
--- a/app/src/main/assets/de/about_licenses_dark.html
+++ b/app/src/main/assets/de/about_licenses_dark.html
@@ -51,25 +51,26 @@
Icons
- are derived from ic_security and ic_language, which are part of the
- Android Material icon set and are released under the Apache License 2.0 .
+ are derived from security
and language
,
+ which are part of the Android Material icon set and are released under the Apache License 2.0 .
The full text of the license is below. Modifications copyright © 2016 Soren Stoutner .
The resulting images are released under the GPLv3+ license .
- is derived from elements of ic_folder and ic_exit_to_app, which are part of the
+
is derived from elements of folder
and exit_to_app
, which are part of the
Android Material icon set and are released under the Apache License 2.0 .
Modifications copyright © 2017 Soren Stoutner .
The resulting image is released under the GPLv3+ license .
- is derived from elements of ic_bookmark and ic_create_new_folder, which are part of the
+
is derived from elements of bookmark
and create_new_folder
, which are part of the
Android Material icon set and are released under the Apache License 2.0 .
Modifications copyright © 2017 Soren Stoutner .
The resulting image is released under the GPLv3+ license .
- is derived from ic_create_new_folder, which is part of the Android Material icon set
- and is released under the Apache License 2.0 . Modifications copyright © 2017 Soren Stoutner .
+
is derived from create_new_folder
,
+ which is part of the Android Material icon set and is released under the Apache License 2.0 .
+ Modifications copyright © 2017 Soren Stoutner .
The resulting image is released under the GPLv3+ license .
- is derived from ic_exit_to_app, which is part of the Android Material icon set
+
is derived from exit_to_app
, which is part of the Android Material icon set
and is released under the Apache License 2.0 . Modifications copyright © 2017 Soren Stoutner .
The resulting image is released under the GPLv3+ license .
- is derived from ic_compare, which is part of the Android Material icon set
+
is derived from compare
, which is part of the Android Material icon set
and is released under the Apache License 2.0 . Modifications copyright © 2017 Soren Stoutner .
The resulting image is released under the GPLv3+ license .
orbot is a modified version of
@@ -77,59 +78,60 @@
which is copyright 2009-2010 Nathan Freitas, The Guardian Project. It is released under the 3-clause BSD license .
The full text of the license is below. Modifications copyright © 2017 Soren Stoutner .
The resulting image is released under the GPLv3+ license .
- cookie was created by Google. It is released under the Apache License 2.0
- and can be downloaded from Material Design Icons .
- It is unchanged except for layout information like color and size.
+ cookie
was created by Google.
+ It is released under the Apache License 2.0
+ and can be downloaded from Material Design Icons . It is unchanged except for layout information like color and size.
The following icons come from the Android Material icon set ,
which is released under the Apache License 2.0 .
They are unchanged except for layout information like color and size. Some of them have been renamed to match their use in the code. The original icons and names are shown below.
- ic_add.
- ic_arrow_back.
- ic_arrow_forward.
- ic_bookmark_border.
- ic_bug_report.
- ic_call_to_action.
- ic_chrome_reader_mode.
- ic_close.
- ic_delete.
- ic_delete_forever.
- ic_devices_other.
- ic_dns.
- ic_donut_small.
- ic_edit.
- ic_expand_less.
- ic_expand_more.
- ic_file_download.
- ic_find_in_page.
- ic_folder.
- ic_fullscreen.
- ic_home.
- ic_image.
- ic_import_contacts.
- ic_important_devices.
- ic_info_outline.
- ic_language.
- ic_list.
- ic_local_activity.
- ic_location_off.
- ic_lock.
- ic_map.
- ic_more.
- ic_question_answer.
- ic_refresh.
- ic_search.
- ic_select_all.
- ic_settings.
- ic_smartphone.
- ic_style.
- ic_subtitles.
- ic_text_fields.
- ic_thumbs_up_down.
- ic_vertical_align_bottom.
- ic_vertical_align_top.
- ic_visibility_off.
- ic_vpn_lock.
- ic_web.
+ add.
+ arrow_back.
+ arrow_forward.
+ bookmark_border.
+ bug_report.
+ call_to_action.
+ camera_enhance.
+ chrome_reader_mode.
+ close.
+ delete.
+ delete_forever.
+ devices_other.
+ dns.
+ donut_small.
+ edit.
+ expand_less.
+ expand_more.
+ file_download.
+ find_in_page.
+ folder.
+ fullscreen.
+ home.
+ image.
+ import_contacts.
+ important_devices.
+ info_outline.
+ language.
+ list.
+ local_activity.
+ location_off.
+ lock.
+ map.
+ more.
+ question_answer.
+ refresh.
+ search.
+ select_all.
+ settings.
+ smartphone.
+ style.
+ subtitles.
+ text_fields.
+ thumbs_up_down.
+ vertical_align_bottom.
+ vertical_align_top.
+ visibility_off.
+ vpn_lock.
+ web.
diff --git a/app/src/main/assets/de/about_licenses_light.html b/app/src/main/assets/de/about_licenses_light.html
index 24a57134..f242dc07 100644
--- a/app/src/main/assets/de/about_licenses_light.html
+++ b/app/src/main/assets/de/about_licenses_light.html
@@ -50,25 +50,27 @@
Icons
- are derived from ic_security and ic_language, which are part of the
- Android Material icon set and are released under the Apache License 2.0 .
+ are derived from security
and language
,
+ which are part of the Android Material icon set and are released under the Apache License 2.0 .
The full text of the license is below. Modifications copyright © 2016 Soren Stoutner .
The resulting images are released under the GPLv3+ license .
- is derived from elements of ic_folder and ic_exit_to_app, which are part of the
- Android Material icon set and are released under the Apache License 2.0 .
+
is derived from elements of folder
and exit_to_app
,
+ which are part of the Android Material icon set
+ and are released under the Apache License 2.0 .
Modifications copyright © 2017 Soren Stoutner .
The resulting image is released under the GPLv3+ license .
- is derived from elements of ic_bookmark and ic_create_new_folder, which are part of the
+
is derived from elements of bookmark
and create_new_folder
, which are part of the
Android Material icon set and are released under the Apache License 2.0 .
Modifications copyright © 2017 Soren Stoutner .
The resulting image is released under the GPLv3+ license .
- is derived from ic_create_new_folder, which is part of the Android Material icon set
- and is released under the Apache License 2.0 . Modifications copyright © 2017 Soren Stoutner .
+
is derived from create_new_folder
,
+ which is part of the Android Material icon set and is released under the Apache License 2.0 .
+ Modifications copyright © 2017 Soren Stoutner .
The resulting image is released under the GPLv3+ license .
- is derived from ic_exit_to_app, which is part of the Android Material icon set
+
is derived from exit_to_app
, which is part of the Android Material icon set
and is released under the Apache License 2.0 . Modifications copyright © 2017 Soren Stoutner .
The resulting image is released under the GPLv3+ license .
- is derived from ic_compare, which is part of the Android Material icon set
+
is derived from compare
, which is part of the Android Material icon set
and is released under the Apache License 2.0 . Modifications copyright © 2017 Soren Stoutner .
The resulting image is released under the GPLv3+ license .
orbot is a modified version of
@@ -76,58 +78,60 @@
which is copyright 2009-2010 Nathan Freitas, The Guardian Project. It is released under the 3-clause BSD license .
The full text of the license is below. Modifications copyright © 2017 Soren Stoutner .
The resulting image is released under the GPLv3+ license .
- cookie was created by Google. It is released under the Apache License 2.0
+
cookie
was created by Google.
+ It is released under the Apache License 2.0
and can be downloaded from Material Design Icons . It is unchanged except for layout information like color and size.
The following icons come from the Android Material icon set ,
which is released under the Apache License 2.0 .
They are unchanged except for layout information like color and size. Some of them have been renamed to match their use in the code. The original icons and names are shown below.
- ic_add.
- ic_arrow_back.
- ic_arrow_forward.
- ic_bookmark_border.
- ic_bug_report.
- ic_call_to_action.
- ic_chrome_reader_mode.
- ic_close.
- ic_delete.
- ic_delete_forever.
- ic_devices_other.
- ic_dns.
- ic_donut_small.
- ic_edit.
- ic_expand_less.
- ic_expand_more.
- ic_file_download.
- ic_find_in_page.
- ic_folder.
- ic_fullscreen.
- ic_home.
- ic_image.
- ic_import_contacts.
- ic_important_devices.
- ic_info_outline.
- ic_language.
- ic_list.
- ic_local_activity.
- ic_location_off.
- ic_lock.
- ic_map.
- ic_more.
- ic_question_answer.
- ic_refresh.
- ic_search.
- ic_select_all.
- ic_settings.
- ic_smartphone.
- ic_style.
- ic_subtitles.
- ic_text_fields.
- ic_thumbs_up_down.
- ic_vertical_align_bottom.
- ic_vertical_align_top.
- ic_visibility_off.
- ic_vpn_lock.
- ic_web.
+ add.
+ arrow_back.
+ arrow_forward.
+ bookmark_border.
+ bug_report.
+ call_to_action.
+ camera_enhance.
+ chrome_reader_mode.
+ close.
+ delete.
+ delete_forever.
+ devices_other.
+ dns.
+ donut_small.
+ edit.
+ expand_less.
+ expand_more.
+ file_download.
+ find_in_page.
+ folder.
+ fullscreen.
+ home.
+ image.
+ import_contacts.
+ important_devices.
+ info_outline.
+ language.
+ list.
+ local_activity.
+ location_off.
+ lock.
+ map.
+ more.
+ question_answer.
+ refresh.
+ search.
+ select_all.
+ settings.
+ smartphone.
+ style.
+ subtitles.
+ text_fields.
+ thumbs_up_down.
+ vertical_align_bottom.
+ vertical_align_top.
+ visibility_off.
+ vpn_lock.
+ web.
diff --git a/app/src/main/assets/en/about_licenses_dark.html b/app/src/main/assets/en/about_licenses_dark.html
index 92bdd826..3bddeab5 100644
--- a/app/src/main/assets/en/about_licenses_dark.html
+++ b/app/src/main/assets/en/about_licenses_dark.html
@@ -49,25 +49,26 @@
Icons
- are derived from ic_security and ic_language,
+ are derived from security
and language
,
which are part of the Android Material icon set and are released under the Apache License 2.0 .
The full text of the license is below. Modifications copyright © 2016 Soren Stoutner .
The resulting images are released under the GPLv3+ license .
- is derived from elements of ic_folder and ic_exit_to_app, which are part of the
+
is derived from elements of folder
and exit_to_app
, which are part of the
Android Material icon set and are released under the Apache License 2.0 .
Modifications copyright © 2017 Soren Stoutner .
The resulting image is released under the GPLv3+ license .
- is derived from elements of ic_bookmark and ic_create_new_folder, which are part of the
+
is derived from elements of bookmark
and create_new_folder
, which are part of the
Android Material icon set and are released under the Apache License 2.0 .
Modifications copyright © 2017 Soren Stoutner .
The resulting image is released under the GPLv3+ license .
- is derived from ic_create_new_folder, which is part of the Android Material icon set
- and is released under the Apache License 2.0 . Modifications copyright © 2017 Soren Stoutner .
+
is derived from create_new_folder
,
+ which is part of the Android Material icon set and is released under the Apache License 2.0 .
+ Modifications copyright © 2017 Soren Stoutner .
The resulting image is released under the GPLv3+ license .
- is derived from ic_exit_to_app, which is part of the Android Material icon set
+
is derived from exit_to_app
, which is part of the Android Material icon set
and is released under the Apache License 2.0 . Modifications copyright © 2017 Soren Stoutner .
The resulting image is released under the GPLv3+ license .
- is derived from ic_compare, which is part of the Android Material icon set
+
is derived from compare
, which is part of the Android Material icon set
and is released under the Apache License 2.0 . Modifications copyright © 2017 Soren Stoutner .
The resulting image is released under the GPLv3+ license .
orbot is a modified version of
@@ -75,58 +76,60 @@
which is copyright 2009-2010 Nathan Freitas, The Guardian Project. It is released under the 3-clause BSD license .
The full text of the license is below. Modifications copyright © 2017 Soren Stoutner .
The resulting image is released under the GPLv3+ license .
- cookie was created by Google. It is released under the Apache License 2.0
+
cookie
was created by Google.
+ It is released under the Apache License 2.0
and can be downloaded from Material Design Icons . It is unchanged except for layout information like color and size.
The following icons come from the Android Material icon set ,
which is released under the Apache License 2.0 .
They are unchanged except for layout information like color and size. Some of them have been renamed to match their use in the code. The original icons and names are shown below.
- ic_add.
- ic_arrow_back.
- ic_arrow_forward.
- ic_bookmark_border.
- ic_bug_report.
- ic_call_to_action.
- ic_chrome_reader_mode.
- ic_close.
- ic_delete.
- ic_delete_forever.
- ic_devices_other.
- ic_dns.
- ic_donut_small.
- ic_edit.
- ic_expand_less.
- ic_expand_more.
- ic_file_download.
- ic_find_in_page.
- ic_folder.
- ic_fullscreen.
- ic_home.
- ic_image.
- ic_import_contacts.
- ic_important_devices.
- ic_info_outline.
- ic_language.
- ic_list.
- ic_local_activity.
- ic_location_off.
- ic_lock.
- ic_map.
- ic_more.
- ic_question_answer.
- ic_refresh.
- ic_search.
- ic_select_all.
- ic_settings.
- ic_smartphone.
- ic_style.
- ic_subtitles.
- ic_text_fields.
- ic_thumbs_up_down.
- ic_vertical_align_bottom.
- ic_vertical_align_top.
- ic_visibility_off.
- ic_vpn_lock.
- ic_web.
+ add.
+ arrow_back.
+ arrow_forward.
+ bookmark_border.
+ bug_report.
+ call_to_action.
+ camera_enhance.
+ chrome_reader_mode.
+ close.
+ delete.
+ delete_forever.
+ devices_other.
+ dns.
+ donut_small.
+ edit.
+ expand_less.
+ expand_more.
+ file_download.
+ find_in_page.
+ folder.
+ fullscreen.
+ home.
+ image.
+ import_contacts.
+ important_devices.
+ info_outline.
+ language.
+ list.
+ local_activity.
+ location_off.
+ lock.
+ map.
+ more.
+ question_answer.
+ refresh.
+ search.
+ select_all.
+ settings.
+ smartphone.
+ style.
+ subtitles.
+ text_fields.
+ thumbs_up_down.
+ vertical_align_bottom.
+ vertical_align_top.
+ visibility_off.
+ vpn_lock.
+ web.
diff --git a/app/src/main/assets/en/about_licenses_light.html b/app/src/main/assets/en/about_licenses_light.html
index 287fe5b0..49397f98 100644
--- a/app/src/main/assets/en/about_licenses_light.html
+++ b/app/src/main/assets/en/about_licenses_light.html
@@ -49,26 +49,27 @@
Icons
- are derived from ic_security and ic_language,
+ are derived from security
and language
,
which are part of the Android Material icon set and are released under the Apache License 2.0 .
The full text of the license is below. Modifications copyright © 2016 Soren Stoutner .
The resulting images are released under the GPLv3+ license .
- is derived from elements of ic_folder and ic_exit_to_app,
+
is derived from elements of folder
and exit_to_app
,
which are part of the Android Material icon set
and are released under the Apache License 2.0 .
Modifications copyright © 2017 Soren Stoutner .
The resulting image is released under the GPLv3+ license .
- is derived from elements of ic_bookmark and ic_create_new_folder, which are part of the
+
is derived from elements of bookmark
and create_new_folder
, which are part of the
Android Material icon set and are released under the Apache License 2.0 .
Modifications copyright © 2017 Soren Stoutner .
The resulting image is released under the GPLv3+ license .
- is derived from ic_create_new_folder, which is part of the Android Material icon set
- and is released under the Apache License 2.0 . Modifications copyright © 2017 Soren Stoutner .
+
is derived from create_new_folder
,
+ which is part of the Android Material icon set and is released under the Apache License 2.0 .
+ Modifications copyright © 2017 Soren Stoutner .
The resulting image is released under the GPLv3+ license .
- is derived from ic_exit_to_app, which is part of the Android Material icon set
+
is derived from exit_to_app
, which is part of the Android Material icon set
and is released under the Apache License 2.0 . Modifications copyright © 2017 Soren Stoutner .
The resulting image is released under the GPLv3+ license .
- is derived from ic_compare, which is part of the Android Material icon set
+
is derived from compare
, which is part of the Android Material icon set
and is released under the Apache License 2.0 . Modifications copyright © 2017 Soren Stoutner .
The resulting image is released under the GPLv3+ license .
orbot is a modified version of
@@ -76,58 +77,60 @@
which is copyright 2009-2010 Nathan Freitas, The Guardian Project. It is released under the 3-clause BSD license .
The full text of the license is below. Modifications copyright © 2017 Soren Stoutner .
The resulting image is released under the GPLv3+ license .
- cookie was created by Google. It is released under the Apache License 2.0
+
cookie
was created by Google.
+ It is released under the Apache License 2.0
and can be downloaded from Material Design Icons . It is unchanged except for layout information like color and size.
The following icons come from the Android Material icon set ,
which is released under the Apache License 2.0 .
They are unchanged except for layout information like color and size. Some of them have been renamed to match their use in the code. The original icons and names are shown below.
- ic_add.
- ic_arrow_back.
- ic_arrow_forward.
- ic_bookmark_border.
- ic_bug_report.
- ic_call_to_action.
- ic_chrome_reader_mode.
- ic_close.
- ic_delete.
- ic_delete_forever.
- ic_devices_other.
- ic_dns.
- ic_donut_small.
- ic_edit.
- ic_expand_less.
- ic_expand_more.
- ic_file_download.
- ic_find_in_page.
- ic_folder.
- ic_fullscreen.
- ic_home.
- ic_image.
- ic_import_contacts.
- ic_important_devices.
- ic_info_outline.
- ic_language.
- ic_list.
- ic_local_activity.
- ic_location_off.
- ic_lock.
- ic_map.
- ic_more.
- ic_question_answer.
- ic_refresh.
- ic_search.
- ic_select_all.
- ic_settings.
- ic_smartphone.
- ic_style.
- ic_subtitles.
- ic_text_fields.
- ic_thumbs_up_down.
- ic_vertical_align_bottom.
- ic_vertical_align_top.
- ic_visibility_off.
- ic_vpn_lock.
- ic_web.
+ add.
+ arrow_back.
+ arrow_forward.
+ bookmark_border.
+ bug_report.
+ call_to_action.
+ camera_enhance.
+ chrome_reader_mode.
+ close.
+ delete.
+ delete_forever.
+ devices_other.
+ dns.
+ donut_small.
+ edit.
+ expand_less.
+ expand_more.
+ file_download.
+ find_in_page.
+ folder.
+ fullscreen.
+ home.
+ image.
+ import_contacts.
+ important_devices.
+ info_outline.
+ language.
+ list.
+ local_activity.
+ location_off.
+ lock.
+ map.
+ more.
+ question_answer.
+ refresh.
+ search.
+ select_all.
+ settings.
+ smartphone.
+ style.
+ subtitles.
+ text_fields.
+ thumbs_up_down.
+ vertical_align_bottom.
+ vertical_align_top.
+ visibility_off.
+ vpn_lock.
+ web.
diff --git a/app/src/main/assets/es/about_licenses_dark.html b/app/src/main/assets/es/about_licenses_dark.html
index 22f25387..c7ae7228 100644
--- a/app/src/main/assets/es/about_licenses_dark.html
+++ b/app/src/main/assets/es/about_licenses_dark.html
@@ -51,26 +51,27 @@
Iconos
- derivan de ic_security y de ic_language,
+ derivan de security
y de language
,
que son parte del conjunto de iconos Android Material
y son liberados bajo la Licencia Apache 2.0 . El texto completo de la licencia se encuentra debajo.
Copyright de modificaciones © 2016 Soren Stoutner .
Las imágenes resultantes se liberan bajo la licencia GPLv3+ .
- deriva de elementos de ic_folder y ic_exit_to_app, que son parte del
+
deriva de elementos de folder
y exit_to_app
, que son parte del
conjunto de iconos Android Material y son liberados bajo la Licencia Apache 2.0 .
Copyright de modificaciones © 2017 Soren Stoutner .
La imagen resultante se libera bajo la licencia GPLv3+ .
- deriva de elementos de ic_bookmark y ic_create_new_folder, que son parte del
+
deriva de elementos de bookmark
y create_new_folder
, que son parte del
conjunto de iconos Android Material y son liberados bajo la Licencia Apache 2.0 .
Copyright de modificaciones © 2017 Soren Stoutner .
La imagen resultante se libera bajo la licencia GPLv3+ .
- deriva de ic_create_new_folder, que es parte del conjunto de iconos Android Material
- y es liberado bajo la Licencia Apache 2.0 . Copyright de modificaciones © 2017 Soren Stoutner .
+
deriva de create_new_folder
,
+ que es parte del conjunto de iconos Android Material y es liberado bajo la Licencia Apache 2.0 .
+ Copyright de modificaciones © 2017 Soren Stoutner .
La imagen resultante se libera bajo la licencia GPLv3+ .
- deriva de ic_exit_to_app, que es parte del conjunto de iconos Android Material
+
deriva de exit_to_app
, que es parte del conjunto de iconos Android Material
y es liberado bajo la Licencia Apache 2.0 . Copyright de modificaciones © 2017 Soren Stoutner .
La imagen resultante se libera bajo la licencia GPLv3+ .
- deriva de ic_exit_to_app, que es parte del conjunto de iconos Android Material
+
deriva de compare
, que es parte del conjunto de iconos Android Material
y es liberado bajo la Licencia Apache 2.0 . Copyright de modificaciones © 2017 Soren Stoutner .
La imagen resultante se libera bajo la licencia GPLv3+ .
orbot es una versión modificada del
@@ -79,61 +80,61 @@
Es liberado bajo la licencia BSD modificada (de 3 cláusulas) .
El texto completo de la licencia se encuentra debajo. Copyright de modificaciones © 2017 Soren Stoutner .
La imagen resultante se libera bajo la licencia GPLv3+ .
- cookie fue creado por Google. Es liberado bajo la licencia Apache 2.0
+
cookie
fue creado por Google. Es liberado bajo la licencia Apache 2.0
y puede ser descargado desde Material Design Icons .
Está sin cambios, excepto por la información de diseño como el color y el tamaño.
Los siguientes iconos proceden de conjunto de iconos Android Material ,
el cual es liberado bajo la licencia Apache 2.0 .
Están sin cambios, excepto por la información de diseño como el color y el tamaño. Algunos de ellos se han renombrado para que coincida con su uso en el código.
Los iconos y los nombres originales se muestran a continuación.
- ic_add.
- ic_arrow_back.
- ic_arrow_forward.
- ic_bookmark_border.
- ic_bug_report.
- ic_call_to_action.
- ic_chrome_reader_mode.
- ic_close.
- ic_delete.
- ic_delete_forever.
- ic_devices_other.
- ic_dns.
- ic_donut_small.
- ic_edit.
- ic_expand_less.
- ic_expand_more.
- ic_file_download.
- ic_find_in_page.
- ic_folder.
- ic_fullscreen.
- ic_home.
- ic_image.
- ic_import_contacts.
- ic_important_devices.
- ic_info_outline.
- ic_language.
- ic_list.
- ic_local_activity.
- ic_location_off.
- ic_lock.
- ic_map.
- ic_more.
- ic_question_answer.
- ic_refresh.
- ic_search.
- ic_select_all.
- ic_settings.
- ic_smartphone.
- ic_style.
- ic_subtitles.
- ic_text_fields.
- ic_thumbs_up_down.
- ic_vertical_align_bottom.
- ic_vertical_align_top.
- ic_visibility_off.
- ic_vpn_lock.
- ic_web.
-
+ add.
+ arrow_back.
+ arrow_forward.
+ bookmark_border.
+ bug_report.
+ call_to_action.
+ camera_enhance.
+ chrome_reader_mode.
+ close.
+ delete.
+ delete_forever.
+ devices_other.
+ dns.
+ donut_small.
+ edit.
+ expand_less.
+ expand_more.
+ file_download.
+ find_in_page.
+ folder.
+ fullscreen.
+ home.
+ image.
+ import_contacts.
+ important_devices.
+ info_outline.
+ language.
+ list.
+ local_activity.
+ location_off.
+ lock.
+ map.
+ more.
+ question_answer.
+ refresh.
+ search.
+ select_all.
+ settings.
+ smartphone.
+ style.
+ subtitles.
+ text_fields.
+ thumbs_up_down.
+ vertical_align_bottom.
+ vertical_align_top.
+ visibility_off.
+ vpn_lock.
+ web.
GNU General Public License
diff --git a/app/src/main/assets/es/about_licenses_light.html b/app/src/main/assets/es/about_licenses_light.html
index 22059a81..6d1fb8ba 100644
--- a/app/src/main/assets/es/about_licenses_light.html
+++ b/app/src/main/assets/es/about_licenses_light.html
@@ -51,26 +51,27 @@
Iconos
- derivan de ic_security y de ic_language,
+ derivan de security
y de language
,
que son parte del conjunto de iconos Android Material
y son liberados bajo la Licencia Apache 2.0 .
El texto completo de la licencia se encuentra debajo. Copyright de modificaciones © 2016 Soren Stoutner .
Las imágenes resultantes se liberan bajo la licencia GPLv3+ .
- deriva de elementos de ic_folder y ic_exit_to_app, que son parte del
+
deriva de elementos de folder
y exit_to_app
, que son parte del
conjunto de iconos Android Material y son liberados bajo la Licencia Apache 2.0 .
Copyright de modificaciones © 2017 Soren Stoutner .
La imagen resultante se libera bajo la licencia GPLv3+ .
- deriva de elementos de ic_bookmark y ic_create_new_folder, que son parte del
+
deriva de elementos de bookmark
y create_new_folder
, que son parte del
conjunto de iconos Android Material y son liberados bajo la Licencia Apache 2.0 .
Copyright de modificaciones © 2017 Soren Stoutner .
La imagen resultante se libera bajo la licencia GPLv3+ .
- deriva de ic_create_new_folder, que es parte del conjunto de iconos Android Material
- y es liberado bajo la Licencia Apache 2.0 . Copyright de modificaciones © 2017 Soren Stoutner .
+
deriva de create_new_folder
,
+ que es parte del conjunto de iconos Android Material y es liberado bajo la Licencia Apache 2.0 .
+ Copyright de modificaciones © 2017 Soren Stoutner .
La imagen resultante se libera bajo la licencia GPLv3+ .
- deriva de ic_exit_to_app, que es parte del conjunto de iconos Android Material
+
deriva de exit_to_app
, que es parte del conjunto de iconos Android Material
y es liberado bajo la Licencia Apache 2.0 . Copyright de modificaciones © 2017 Soren Stoutner .
La imagen resultante se libera bajo la licencia GPLv3+ .
- deriva de ic_exit_to_app, que es parte del conjunto de iconos Android Material
+
deriva de compare
, que es parte del conjunto de iconos Android Material
y es liberado bajo la Licencia Apache 2.0 . Copyright de modificaciones © 2017 Soren Stoutner .
La imagen resultante se libera bajo la licencia GPLv3+ .
orbot es una versión modificada del
@@ -79,60 +80,62 @@
Es liberado bajo la licencia BSD modificada (de 3 cláusulas) .
El texto completo de la licencia se encuentra debajo. Copyright de modificaciones © 2017 Soren Stoutner .
La imagen resultante se libera bajo la licencia GPLv3+ .
- cookie fue creado por Google. Es liberado bajo la licencia Apache 2.0
+
cookie
fue creado por Google.
+ Es liberado bajo la licencia Apache 2.0
y puede ser descargado desde Material Design Icons .
Está sin cambios, excepto por la información de diseño como el color y el tamaño.
Los siguientes iconos proceden de conjunto de iconos Android Material ,
el cual es liberado bajo la licencia Apache 2.0 .
Están sin cambios, excepto por la información de diseño como el color y el tamaño. Algunos de ellos se han renombrado para que coincida con su uso en el código.
Los iconos y los nombres originales se muestran a continuación.
- ic_add.
- ic_arrow_back.
- ic_arrow_forward.
- ic_bookmark_border.
- ic_bug_report.
- ic_call_to_action.
- ic_chrome_reader_mode.
- ic_close.
- ic_delete.
- ic_delete_forever.
- ic_devices_other.
- ic_dns.
- ic_donut_small.
- ic_edit.
- ic_expand_less.
- ic_expand_more.
- ic_file_download.
- ic_find_in_page.
- ic_folder.
- ic_fullscreen.
- ic_home.
- ic_image.
- ic_import_contacts.
- ic_important_devices.
- ic_info_outline.
- ic_language.
- ic_list.
- ic_local_activity.
- ic_location_off.
- ic_lock.
- ic_map.
- ic_more.
- ic_question_answer.
- ic_refresh.
- ic_search.
- ic_select_all.
- ic_settings.
- ic_smartphone.
- ic_style.
- ic_subtitles.
- ic_text_fields.
- ic_thumbs_up_down.
- ic_vertical_align_bottom.
- ic_vertical_align_top.
- ic_visibility_off.
- ic_vpn_lock.
- ic_web.
+ add.
+ arrow_back.
+ arrow_forward.
+ bookmark_border.
+ bug_report.
+ call_to_action.
+ camera_enhance.
+ chrome_reader_mode.
+ close.
+ delete.
+ delete_forever.
+ devices_other.
+ dns.
+ donut_small.
+ edit.
+ expand_less.
+ expand_more.
+ file_download.
+ find_in_page.
+ folder.
+ fullscreen.
+ home.
+ image.
+ import_contacts.
+ important_devices.
+ info_outline.
+ language.
+ list.
+ local_activity.
+ location_off.
+ lock.
+ map.
+ more.
+ question_answer.
+ refresh.
+ search.
+ select_all.
+ settings.
+ smartphone.
+ style.
+ subtitles.
+ text_fields.
+ thumbs_up_down.
+ vertical_align_bottom.
+ vertical_align_top.
+ visibility_off.
+ vpn_lock.
+ web.
diff --git a/app/src/main/assets/it/about_licenses_dark.html b/app/src/main/assets/it/about_licenses_dark.html
index 8241c165..f0fd34f4 100644
--- a/app/src/main/assets/it/about_licenses_dark.html
+++ b/app/src/main/assets/it/about_licenses_dark.html
@@ -53,32 +53,28 @@
che è rilasciata con Licenza Apache 2.0 .
Icone
- La lista dei server utilizzata dalla funzionalità di blocco degli annunci è tratta da pgl.yoyo.org .
- Dal momento che si tratta di una lista di domini non può essere coperta da Copyright .
- Privacy Browser è sviluppato con la Android Support Library ,
- che è rilasciata con Licenza Apache 2.0 .
- sono state derivate da ic_security e ic_language, che fanno parte
+ sono state derivate da security
e language
, che fanno parte
dell'Android Material icon set e sono state rilasciate sotto Licenza Apache 2.0 .
Il testo completo della Licenza è riportato di seguito. Copyright delle modifiche © 2016 Soren Stoutner .
Le immagini risultanti sono rilasciate sotto Licenza GPLv3+ .
- è stata derivata da elementi di ic_folder e di ic_exit_to_app, che fanno parte
+
è stata derivata da elementi di folder
e di exit_to_app
, che fanno parte
dell'Android Material icon set e sono state rilasciate sotto Licenza Apache 2.0 .
Copyright delle modifiche © 2017 Soren Stoutner .
L'immagine risultante è rilasciata sotto Licenza GPLv3+ .
- è stata derivata da elementi di ic_bookmark e di ic_create_new_folder, che fanno parte
+
è stata derivata da elementi di bookmark
e di create_new_folder
, che fanno parte
dell'Android Material icon set e sono state rilasciate sotto Licenza Apache 2.0 .
Copyright delle modifiche © 2017 Soren Stoutner .
L'immagine risultante è rilasciata sotto Licenza GPLv3+ .
- è stata derivata da ic_create_new_folder,
+
è stata derivata da create_new_folder
,
che fa parte dell'Android Material icon set ed è stata rilasciata sotto Licenza Apache 2.0 .
Copyright delle modifiche © 2017 Soren Stoutner .
L'immagine risultante è rilasciata sotto Licenza GPLv3+ .
- è stata derivata da ic_exit_to_app,
+
è stata derivata da exit_to_app
,
che fa parte dell'Android Material icon set ed è stata rilasciata sotto Licenza Apache 2.0 .
Copyright delle modifiche © 2017 Soren Stoutner .
L'immagine risultante è rilasciata sotto Licenza GPLv3+ .
- è stata derivata da ic_compare,
+
è stata derivata da compare
,
che fa parte dell'Android Material icon set ed è stata rilasciata sotto Licenza Apache 2.0 .
Copyright delle modifiche © 2017 Soren Stoutner .
L'immagine risultante è rilasciata sotto Licenza GPLv3+ .
@@ -88,59 +84,61 @@
E' rilasciata sotto 3-clause BSD license . Il testo completo della Licenza è riportato di seguito.
Copyright delle modifiche © 2017Soren Stoutner .
L'immagine risultante è rilasciata sotto Licenza GPLv3+ .
- cookie è stata creata da Google. E' stata rilasciata con Licenza Apache 2.0
+
cookie
è stata creata da Google.
+ E' stata rilasciata con Licenza Apache 2.0
e può essere scaricata dirattamente dal Material Design Icons . Non è stata modificata ad eccezione del colore e della dimensione.
Le seguenti icone derivano dall'Android Material icon set ,
che è rilasciato sotto Licenza Apache 2.0 .
Non sono state modificatae ad eccezione del colore e della dimensione. Alcune sono state rinominate per coerenza con il tipo di utilizzo all'interno del codice.
Le icone con i loro nomi originali sono riportate di seguito.
- ic_add.
- ic_arrow_back.
- ic_arrow_forward.
- ic_bookmark_border.
- ic_bug_report.
- ic_call_to_action.
- ic_chrome_reader_mode.
- ic_close.
- ic_delete.
- ic_delete_forever.
- ic_devices_other.
- ic_dns.
- ic_donut_small.
- ic_edit.
- ic_expand_less.
- ic_expand_more.
- ic_file_download.
- ic_find_in_page.
- ic_folder.
- ic_fullscreen.
- ic_home.
- ic_image.
- ic_import_contacts.
- ic_important_devices.
- ic_info_outline.
- ic_language.
- ic_list.
- ic_local_activity.
- ic_location_off.
- ic_lock.
- ic_map.
- ic_more.
- ic_question_answer.
- ic_refresh.
- ic_search.
- ic_select_all.
- ic_settings.
- ic_smartphone.
- ic_style.
- ic_subtitles.
- ic_text_fields.
- ic_thumbs_up_down.
- ic_vertical_align_bottom.
- ic_vertical_align_top.
- ic_visibility_off.
- ic_vpn_lock.
- ic_web.
+ add.
+ arrow_back.
+ arrow_forward.
+ bookmark_border.
+ bug_report.
+ call_to_action.
+ camera_enhance.
+ chrome_reader_mode.
+ close.
+ delete.
+ delete_forever.
+ devices_other.
+ dns.
+ donut_small.
+ edit.
+ expand_less.
+ expand_more.
+ file_download.
+ find_in_page.
+ folder.
+ fullscreen.
+ home.
+ image.
+ import_contacts.
+ important_devices.
+ info_outline.
+ language.
+ list.
+ local_activity.
+ location_off.
+ lock.
+ map.
+ more.
+ question_answer.
+ refresh.
+ search.
+ select_all.
+ settings.
+ smartphone.
+ style.
+ subtitles.
+ text_fields.
+ thumbs_up_down.
+ vertical_align_bottom.
+ vertical_align_top.
+ visibility_off.
+ vpn_lock.
+ web.
diff --git a/app/src/main/assets/it/about_licenses_light.html b/app/src/main/assets/it/about_licenses_light.html
index c962a184..82dea778 100644
--- a/app/src/main/assets/it/about_licenses_light.html
+++ b/app/src/main/assets/it/about_licenses_light.html
@@ -54,27 +54,27 @@
Icone
- sono state derivate da ic_security e ic_language, che fanno parte
+ sono state derivate da security
e language
, che fanno parte
dell'Android Material icon set e sono state rilasciate sotto Licenza Apache 2.0 .
Il testo completo della Licenza è riportato di seguito. Copyright delle modifiche © 2016 Soren Stoutner .
Le immagini risultanti sono rilasciate sotto Licenza GPLv3+ .
- è stata derivata da elementi di ic_folder e di ic_exit_to_app, che fanno parte
+
è stata derivata da elementi di folder
e di exit_to_app
, che fanno parte
dell'Android Material icon set e sono state rilasciate sotto Licenza Apache 2.0 .
Copyright delle modifiche © 2017 Soren Stoutner .
L'immagine risultante è rilasciata sotto Licenza GPLv3+ .
- è stata derivata da elementi di ic_bookmark e di ic_create_new_folder, che fanno parte
+
è stata derivata da elementi di bookmark
e di create_new_folder
, che fanno parte
dell'Android Material icon set e sono state rilasciate sotto Licenza Apache 2.0 .
Copyright delle modifiche © 2017 Soren Stoutner .
L'immagine risultante è rilasciata sotto Licenza GPLv3+ .
- è stata derivata da ic_create_new_folder,
+
è stata derivata da create_new_folder
,
che fa parte dell'Android Material icon set ed è stata rilasciata sotto Licenza Apache 2.0 .
Copyright delle modifiche © 2017 Soren Stoutner .
L'immagine risultante è rilasciata sotto Licenza GPLv3+ .
- è stata derivata da ic_exit_to_app,
+
è stata derivata da exit_to_app
,
che fa parte dell'Android Material icon set ed è stata rilasciata sotto Licenza Apache 2.0 .
Copyright delle modifiche © 2017 Soren Stoutner .
L'immagine risultante è rilasciata sotto Licenza GPLv3+ .
- è stata derivata da ic_compare,
+
è stata derivata da compare
,
che fa parte dell'Android Material icon set ed è stata rilasciata sotto Licenza Apache 2.0 .
Copyright delle modifiche © 2017 Soren Stoutner .
L'immagine risultante è rilasciata sotto Licenza GPLv3+ .
@@ -84,59 +84,61 @@
E' rilasciata sotto 3-clause BSD license . Il testo completo della Licenza è riportato di seguito.
Copyright delle modifiche © 2017Soren Stoutner .
L'immagine risultante è rilasciata sotto Licenza GPLv3+ .
- cookie è stata creata da Google. E' stata rilasciata con Licenza Apache 2.0
+
cookie
è stata creata da Google.
+ E' stata rilasciata con Licenza Apache 2.0
e può essere scaricata dirattamente dal Material Design Icons .Non è stata modificata ad eccezione del colore e della dimensione.
Le seguenti icone derivano dall'Android Material icon set ,
che è rilasciato sotto Licenza Apache 2.0 .
Non sono state modificatae ad eccezione del colore e della dimensione. Alcune sono state rinominate per coerenza con il tipo di utilizzo all'interno del codice.
Le icone con i loro nomi originali sono riportate di seguito.
- ic_add.
- ic_arrow_back.
- ic_arrow_forward.
- ic_bookmark_border.
- ic_bug_report.
- ic_call_to_action.
- ic_chrome_reader_mode.
- ic_close.
- ic_delete.
- ic_delete_forever.
- ic_devices_other.
- ic_dns.
- ic_donut_small.
- ic_edit.
- ic_expand_less.
- ic_expand_more.
- ic_file_download.
- ic_find_in_page.
- ic_folder.
- ic_fullscreen.
- ic_home.
- ic_image.
- ic_import_contacts.
- ic_important_devices.
- ic_info_outline.
- ic_language.
- ic_list.
- ic_local_activity.
- ic_location_off.
- ic_lock.
- ic_map.
- ic_more.
- ic_question_answer.
- ic_refresh.
- ic_search.
- ic_select_all.
- ic_settings.
- ic_smartphone.
- ic_style.
- ic_subtitles.
- ic_text_fields.
- ic_thumbs_up_down.
- ic_vertical_align_bottom.
- ic_vertical_align_top.
- ic_visibility_off.
- ic_vpn_lock.
- ic_web.
+ add.
+ arrow_back.
+ arrow_forward.
+ bookmark_border.
+ bug_report.
+ call_to_action.
+ camera_enhance.
+ chrome_reader_mode.
+ close.
+ delete.
+ delete_forever.
+ devices_other.
+ dns.
+ donut_small.
+ edit.
+ expand_less.
+ expand_more.
+ file_download.
+ find_in_page.
+ folder.
+ fullscreen.
+ home.
+ image.
+ import_contacts.
+ important_devices.
+ info_outline.
+ language.
+ list.
+ local_activity.
+ location_off.
+ lock.
+ map.
+ more.
+ question_answer.
+ refresh.
+ search.
+ select_all.
+ settings.
+ smartphone.
+ style.
+ subtitles.
+ text_fields.
+ thumbs_up_down.
+ vertical_align_bottom.
+ vertical_align_top.
+ visibility_off.
+ vpn_lock.
+ web.
diff --git a/app/src/main/assets/ru/about_licenses_dark.html b/app/src/main/assets/ru/about_licenses_dark.html
index 2648eaa0..e18c1e1f 100644
--- a/app/src/main/assets/ru/about_licenses_dark.html
+++ b/app/src/main/assets/ru/about_licenses_dark.html
@@ -49,27 +49,27 @@
Ðконки
- ÑвлÑÑÑÑÑ Ð¿ÑоизводнÑми Ð¾Ñ ic_security и ic_language, коÑоÑÑе ÑвлÑÑÑÑÑ ÑаÑÑÑÑ
+ ÑвлÑÑÑÑÑ Ð¿ÑоизводнÑми Ð¾Ñ security
и language
, коÑоÑÑе ÑвлÑÑÑÑÑ ÑаÑÑÑÑ
Android Material icon set и вÑпÑÑÐµÐ½Ñ Ð¿Ð¾Ð´ Apache License 2.0 . ÐолнÑй ÑекÑÑ Ð»Ð¸Ñензии пÑиведен ниже.
ÐодиÑикаÑии авÑоÑÑкиÑ
пÑав © 2016 Soren Stoutner .
ÐолÑÑеннÑе изобÑÐ°Ð¶ÐµÐ½Ð¸Ñ Ð²ÑпÑÑÐµÐ½Ñ Ð¿Ð¾Ð´ лиÑензией GPLv3+ .
- ÑвлÑÑÑÑÑ Ð¿ÑоизводнÑми Ð¾Ñ ic_folder и ic_exit_to_app, коÑоÑÑе ÑвлÑÑÑÑÑ ÑаÑÑÑÑ
+
ÑвлÑÑÑÑÑ Ð¿ÑоизводнÑми Ð¾Ñ folder
и exit_to_app
, коÑоÑÑе ÑвлÑÑÑÑÑ ÑаÑÑÑÑ
Android Material icon set и вÑпÑÑÐµÐ½Ñ Ð¿Ð¾Ð´ Apache License 2.0 .
ÐодиÑикаÑии авÑоÑÑкиÑ
пÑав © 2017 Soren Stoutner .
ÐолÑÑеннÑе изобÑÐ°Ð¶ÐµÐ½Ð¸Ñ Ð²ÑпÑÑÐµÐ½Ñ Ð¿Ð¾Ð´ лиÑензией GPLv3+ .
- ÑвлÑÑÑÑÑ Ð¿ÑоизводнÑми Ð¾Ñ ic_bookmark и ic_create_new_folder, коÑоÑÑе ÑвлÑÑÑÑÑ ÑаÑÑÑÑ
+
ÑвлÑÑÑÑÑ Ð¿ÑоизводнÑми Ð¾Ñ bookmark
и create_new_folder
, коÑоÑÑе ÑвлÑÑÑÑÑ ÑаÑÑÑÑ
Android Material icon set и вÑпÑÑÐµÐ½Ñ Ð¿Ð¾Ð´ Apache License 2.0 .
ÐодиÑикаÑии авÑоÑÑкиÑ
пÑав © 2017 Soren Stoutner .
ÐолÑÑеннÑе изобÑÐ°Ð¶ÐµÐ½Ð¸Ñ Ð²ÑпÑÑÐµÐ½Ñ Ð¿Ð¾Ð´ лиÑензией GPLv3+ .
- ÑвлÑÑÑÑÑ Ð¿ÑоизводнÑми Ð¾Ñ ic_create_new_folder, коÑоÑÑе ÑвлÑÑÑÑÑ ÑаÑÑÑÑ
+
ÑвлÑÑÑÑÑ Ð¿ÑоизводнÑми Ð¾Ñ create_new_folder
, коÑоÑÑе ÑвлÑÑÑÑÑ ÑаÑÑÑÑ
Android Material icon set и вÑпÑÑÐµÐ½Ñ Ð¿Ð¾Ð´ Apache License 2.0 .
ÐодиÑикаÑии авÑоÑÑкиÑ
пÑав © 2017 Soren Stoutner .
ÐолÑÑеннÑе изобÑÐ°Ð¶ÐµÐ½Ð¸Ñ Ð²ÑпÑÑÐµÐ½Ñ Ð¿Ð¾Ð´ лиÑензией GPLv3+ .
- ÑвлÑÑÑÑÑ Ð¿ÑоизводнÑми Ð¾Ñ ic_exit_to_app, коÑоÑÑе ÑвлÑÑÑÑÑ ÑаÑÑÑÑ Android Material icon set
- и вÑпÑÑÐµÐ½Ñ Ð¿Ð¾Ð´ Apache License 2.0 .
+
ÑвлÑÑÑÑÑ Ð¿ÑоизводнÑми Ð¾Ñ exit_to_app
,
+ коÑоÑÑе ÑвлÑÑÑÑÑ ÑаÑÑÑÑ Android Material icon set и вÑпÑÑÐµÐ½Ñ Ð¿Ð¾Ð´ Apache License 2.0 .
ÐодиÑикаÑии авÑоÑÑкиÑ
пÑав © 2017 Soren Stoutner .
ÐолÑÑеннÑе изобÑÐ°Ð¶ÐµÐ½Ð¸Ñ Ð²ÑпÑÑÐµÐ½Ñ Ð¿Ð¾Ð´ лиÑензией GPLv3+ .
- ÑвлÑÑÑÑÑ Ð¿ÑоизводнÑми Ð¾Ñ ic_compare, коÑоÑÑе ÑвлÑÑÑÑÑ ÑаÑÑÑÑ Android Material icon set
+
ÑвлÑÑÑÑÑ Ð¿ÑоизводнÑми Ð¾Ñ compare
, коÑоÑÑе ÑвлÑÑÑÑÑ ÑаÑÑÑÑ Android Material icon set
и вÑпÑÑÐµÐ½Ñ Ð¿Ð¾Ð´ Apache License 2.0 .
ÐодиÑикаÑии авÑоÑÑкиÑ
пÑав © 2017 Soren Stoutner .
ÐолÑÑеннÑе изобÑÐ°Ð¶ÐµÐ½Ð¸Ñ Ð²ÑпÑÑÐµÐ½Ñ Ð¿Ð¾Ð´ лиÑензией GPLv3+ .
@@ -79,58 +79,59 @@
Ðн вÑпÑÑен под 3-clause BSD license . ÐолнÑй ÑекÑÑ Ð»Ð¸Ñензии пÑиведен ниже.
ÐодиÑикаÑии авÑоÑÑкиÑ
пÑав © 2017 Soren Stoutner .
ÐолÑÑеннÑе изобÑÐ°Ð¶ÐµÐ½Ð¸Ñ Ð²ÑпÑÑÐµÐ½Ñ Ð¿Ð¾Ð´ лиÑензией GPLv3+ .
- cookie бÑли ÑÐ¾Ð·Ð´Ð°Ð½Ñ Google. Ðни вÑпÑÑÐµÐ½Ñ Ð¿Ð¾Ð´ Apache License 2.0
+
cookie
бÑли ÑÐ¾Ð·Ð´Ð°Ð½Ñ Google. Ðни вÑпÑÑÐµÐ½Ñ Ð¿Ð¾Ð´ Apache License 2.0
и могÑÑ Ð±ÑÑÑ Ð·Ð°Ð³ÑÑÐ¶ÐµÐ½Ñ Ð¸Ð· Material Design Icons . Ðн неизменен, за иÑклÑÑением Ñакой инÑоÑмаÑии, как ÑÐ²ÐµÑ Ð¸ ÑазмеÑ.
СледÑÑÑие знаÑки взÑÑÑ Ð¸Ð·Android Material icon set ,
коÑоÑÑе вÑпÑÑÐµÐ½Ñ Ð¿Ð¾Ð´ Apache License 2.0 .
Ðни неизменнÑ, за иÑклÑÑением Ñакой инÑоÑмаÑии, как ÑÐ²ÐµÑ Ð¸ ÑазмеÑ. ÐекоÑоÑÑе из ниÑ
бÑли пеÑÐµÐ¸Ð¼ÐµÐ½Ð¾Ð²Ð°Ð½Ñ Ð² ÑооÑвеÑÑÑвии Ñ Ð¸Ñ
иÑполÑзованием в коде. ÐÑигиналÑнÑе знаÑки и имена Ð¿Ð¾ÐºÐ°Ð·Ð°Ð½Ñ Ð½Ð¸Ð¶Ðµ.
- ic_add.
- ic_arrow_back.
- ic_arrow_forward.
- ic_bookmark_border.
- ic_bug_report.
- ic_call_to_action.
- ic_chrome_reader_mode.
- ic_close.
- ic_delete.
- ic_delete_forever.
- ic_devices_other.
- ic_dns.
- ic_donut_small.
- ic_edit.
- ic_expand_less.
- ic_expand_more.
- ic_file_download.
- ic_find_in_page.
- ic_folder.
- ic_fullscreen.
- ic_home.
- ic_image.
- ic_import_contacts.
- ic_important_devices.
- ic_info_outline.
- ic_language.
- ic_list.
- ic_local_activity.
- ic_location_off.
- ic_lock.
- ic_map.
- ic_more.
- ic_question_answer.
- ic_refresh.
- ic_search.
- ic_select_all.
- ic_settings.
- ic_smartphone.
- ic_style.
- ic_subtitles.
- ic_text_fields.
- ic_thumbs_up_down.
- ic_vertical_align_bottom.
- ic_vertical_align_top.
- ic_visibility_off.
- ic_vpn_lock.
- ic_web.
+ add.
+ arrow_back.
+ arrow_forward.
+ bookmark_border.
+ bug_report.
+ call_to_action.
+ camera_enhance.
+ chrome_reader_mode.
+ close.
+ delete.
+ delete_forever.
+ devices_other.
+ dns.
+ donut_small.
+ edit.
+ expand_less.
+ expand_more.
+ file_download.
+ find_in_page.
+ folder.
+ fullscreen.
+ home.
+ image.
+ import_contacts.
+ important_devices.
+ info_outline.
+ language.
+ list.
+ local_activity.
+ location_off.
+ lock.
+ map.
+ more.
+ question_answer.
+ refresh.
+ search.
+ select_all.
+ settings.
+ smartphone.
+ style.
+ subtitles.
+ text_fields.
+ thumbs_up_down.
+ vertical_align_bottom.
+ vertical_align_top.
+ visibility_off.
+ vpn_lock.
+ web.
diff --git a/app/src/main/assets/ru/about_licenses_light.html b/app/src/main/assets/ru/about_licenses_light.html
index cf4e0d72..b337dfdd 100644
--- a/app/src/main/assets/ru/about_licenses_light.html
+++ b/app/src/main/assets/ru/about_licenses_light.html
@@ -49,28 +49,28 @@
Ðконки
- ÑвлÑÑÑÑÑ Ð¿ÑоизводнÑми Ð¾Ñ ic_security и ic_language, коÑоÑÑе ÑвлÑÑÑÑÑ ÑаÑÑÑÑ
+ ÑвлÑÑÑÑÑ Ð¿ÑоизводнÑми Ð¾Ñ security
и language
, коÑоÑÑе ÑвлÑÑÑÑÑ ÑаÑÑÑÑ
Android Material icon set и вÑпÑÑÐµÐ½Ñ Ð¿Ð¾Ð´ Apache License 2.0 . ÐолнÑй ÑекÑÑ Ð»Ð¸Ñензии пÑиведен ниже.
ÐодиÑикаÑии авÑоÑÑкиÑ
пÑав © 2016 Soren Stoutner .
ÐолÑÑеннÑе изобÑÐ°Ð¶ÐµÐ½Ð¸Ñ Ð²ÑпÑÑÐµÐ½Ñ Ð¿Ð¾Ð´ лиÑензией GPLv3+ .
- ÑвлÑÑÑÑÑ Ð¿ÑоизводнÑми Ð¾Ñ ic_folder и ic_exit_to_app, коÑоÑÑе ÑвлÑÑÑÑÑ ÑаÑÑÑÑ
+
ÑвлÑÑÑÑÑ Ð¿ÑоизводнÑми Ð¾Ñ folder
и exit_to_app
, коÑоÑÑе ÑвлÑÑÑÑÑ ÑаÑÑÑÑ
Android Material icon set и вÑпÑÑÐµÐ½Ñ Ð¿Ð¾Ð´ Apache License 2.0 .
ÐодиÑикаÑии авÑоÑÑкиÑ
пÑав © 2017 Soren Stoutner .
ÐолÑÑеннÑе изобÑÐ°Ð¶ÐµÐ½Ð¸Ñ Ð²ÑпÑÑÐµÐ½Ñ Ð¿Ð¾Ð´ лиÑензией GPLv3+ .
- ÑвлÑÑÑÑÑ Ð¿ÑоизводнÑми Ð¾Ñ ic_bookmark и ic_create_new_folder, коÑоÑÑе ÑвлÑÑÑÑÑ ÑаÑÑÑÑ
+
ÑвлÑÑÑÑÑ Ð¿ÑоизводнÑми Ð¾Ñ bookmark
и create_new_folder
, коÑоÑÑе ÑвлÑÑÑÑÑ ÑаÑÑÑÑ
Android Material icon set и вÑпÑÑÐµÐ½Ñ Ð¿Ð¾Ð´ Apache License 2.0 .
ÐодиÑикаÑии авÑоÑÑкиÑ
пÑав © 2017 Soren Stoutner .
ÐолÑÑеннÑе изобÑÐ°Ð¶ÐµÐ½Ð¸Ñ Ð²ÑпÑÑÐµÐ½Ñ Ð¿Ð¾Ð´ лиÑензией GPLv3+ .
- ÑвлÑÑÑÑÑ Ð¿ÑоизводнÑми Ð¾Ñ ic_create_new_folder, коÑоÑÑе ÑвлÑÑÑÑÑ ÑаÑÑÑÑ
+
ÑвлÑÑÑÑÑ Ð¿ÑоизводнÑми Ð¾Ñ create_new_folder
, коÑоÑÑе ÑвлÑÑÑÑÑ ÑаÑÑÑÑ
Android Material icon set и вÑпÑÑÐµÐ½Ñ Ð¿Ð¾Ð´ Apache License 2.0 .
ÐодиÑикаÑии авÑоÑÑкиÑ
пÑав © 2017 Soren Stoutner .
ÐолÑÑеннÑе изобÑÐ°Ð¶ÐµÐ½Ð¸Ñ Ð²ÑпÑÑÐµÐ½Ñ Ð¿Ð¾Ð´ лиÑензией GPLv3+ .
- ÑвлÑÑÑÑÑ Ð¿ÑоизводнÑми Ð¾Ñ ic_exit_to_app, коÑоÑÑе ÑвлÑÑÑÑÑ ÑаÑÑÑÑ Android Material icon set
- и вÑпÑÑÐµÐ½Ñ Ð¿Ð¾Ð´ Apache License 2.0 .
+
ÑвлÑÑÑÑÑ Ð¿ÑоизводнÑми Ð¾Ñ exit_to_app
,
+ коÑоÑÑе ÑвлÑÑÑÑÑ ÑаÑÑÑÑ Android Material icon set и вÑпÑÑÐµÐ½Ñ Ð¿Ð¾Ð´ Apache License 2.0 .
ÐодиÑикаÑии авÑоÑÑкиÑ
пÑав © 2017 Soren Stoutner .
ÐолÑÑеннÑе изобÑÐ°Ð¶ÐµÐ½Ð¸Ñ Ð²ÑпÑÑÐµÐ½Ñ Ð¿Ð¾Ð´ лиÑензией GPLv3+ .
- ÑвлÑÑÑÑÑ Ð¿ÑоизводнÑми Ð¾Ñ ic_compare, коÑоÑÑе ÑвлÑÑÑÑÑ ÑаÑÑÑÑ Android Material icon set
- и вÑпÑÑÐµÐ½Ñ Ð¿Ð¾Ð´ Apache License 2.0 .
+
ÑвлÑÑÑÑÑ Ð¿ÑоизводнÑми Ð¾Ñ compare
,
+ коÑоÑÑе ÑвлÑÑÑÑÑ ÑаÑÑÑÑ Android Material icon set и вÑпÑÑÐµÐ½Ñ Ð¿Ð¾Ð´ Apache License 2.0 .
ÐодиÑикаÑии авÑоÑÑкиÑ
пÑав © 2017 Soren Stoutner .
ÐолÑÑеннÑе изобÑÐ°Ð¶ÐµÐ½Ð¸Ñ Ð²ÑпÑÑÐµÐ½Ñ Ð¿Ð¾Ð´ лиÑензией GPLv3+ .
orbot - ÑÑо модиÑиÑиÑÐ¾Ð²Ð°Ð½Ð½Ð°Ñ Ð²ÐµÑÑиÑ
@@ -79,58 +79,59 @@
Ðн вÑпÑÑен под 3-clause BSD license . ÐолнÑй ÑекÑÑ Ð»Ð¸Ñензии пÑиведен ниже.
ÐодиÑикаÑии авÑоÑÑкиÑ
пÑав © 2017 Soren Stoutner .
ÐолÑÑеннÑе изобÑÐ°Ð¶ÐµÐ½Ð¸Ñ Ð²ÑпÑÑÐµÐ½Ñ Ð¿Ð¾Ð´ лиÑензией GPLv3+ .
- cookie бÑли ÑÐ¾Ð·Ð´Ð°Ð½Ñ Google. Ðни вÑпÑÑÐµÐ½Ñ Ð¿Ð¾Ð´ Apache License 2.0
+
cookie
бÑли ÑÐ¾Ð·Ð´Ð°Ð½Ñ Google. Ðни вÑпÑÑÐµÐ½Ñ Ð¿Ð¾Ð´ Apache License 2.0
и могÑÑ Ð±ÑÑÑ Ð·Ð°Ð³ÑÑÐ¶ÐµÐ½Ñ Ð¸Ð· Material Design Icons . Ðн неизменен, за иÑклÑÑением Ñакой инÑоÑмаÑии, как ÑÐ²ÐµÑ Ð¸ ÑазмеÑ.
СледÑÑÑие знаÑки взÑÑÑ Ð¸Ð·Android Material icon set ,
коÑоÑÑе вÑпÑÑÐµÐ½Ñ Ð¿Ð¾Ð´ Apache License 2.0 .
Ðни неизменнÑ, за иÑклÑÑением Ñакой инÑоÑмаÑии, как ÑÐ²ÐµÑ Ð¸ ÑазмеÑ. ÐекоÑоÑÑе из ниÑ
бÑли пеÑÐµÐ¸Ð¼ÐµÐ½Ð¾Ð²Ð°Ð½Ñ Ð² ÑооÑвеÑÑÑвии Ñ Ð¸Ñ
иÑполÑзованием в коде. ÐÑигиналÑнÑе знаÑки и имена Ð¿Ð¾ÐºÐ°Ð·Ð°Ð½Ñ Ð½Ð¸Ð¶Ðµ.
- ic_add.
- ic_arrow_back.
- ic_arrow_forward.
- ic_bookmark_border.
- ic_bug_report.
- ic_call_to_action.
- ic_chrome_reader_mode.
- ic_close.
- ic_delete.
- ic_delete_forever.
- ic_devices_other.
- ic_dns.
- ic_donut_small.
- ic_edit.
- ic_expand_less.
- ic_expand_more.
- ic_file_download.
- ic_find_in_page.
- ic_folder.
- ic_fullscreen.
- ic_home.
- ic_image.
- ic_import_contacts.
- ic_important_devices.
- ic_info_outline.
- ic_language.
- ic_list.
- ic_local_activity.
- ic_location_off.
- ic_lock.
- ic_map.
- ic_more.
- ic_question_answer.
- ic_refresh.
- ic_search.
- ic_select_all.
- ic_settings.
- ic_smartphone.
- ic_style.
- ic_subtitles.
- ic_text_fields.
- ic_thumbs_up_down.
- ic_vertical_align_bottom.
- ic_vertical_align_top.
- ic_visibility_off.
- ic_vpn_lock.
- ic_web.
+ add.
+ arrow_back.
+ arrow_forward.
+ bookmark_border.
+ bug_report.
+ call_to_action.
+ camera_enhance.
+ chrome_reader_mode.
+ close.
+ delete.
+ delete_forever.
+ devices_other.
+ dns.
+ donut_small.
+ edit.
+ expand_less.
+ expand_more.
+ file_download.
+ find_in_page.
+ folder.
+ fullscreen.
+ home.
+ image.
+ import_contacts.
+ important_devices.
+ info_outline.
+ language.
+ list.
+ local_activity.
+ location_off.
+ lock.
+ map.
+ more.
+ question_answer.
+ refresh.
+ search.
+ select_all.
+ settings.
+ smartphone.
+ style.
+ subtitles.
+ text_fields.
+ thumbs_up_down.
+ vertical_align_bottom.
+ vertical_align_top.
+ visibility_off.
+ vpn_lock.
+ web.
diff --git a/app/src/main/assets/shared_images/add_dark.png b/app/src/main/assets/shared_images/add_dark.png
new file mode 100644
index 00000000..c53b6387
Binary files /dev/null and b/app/src/main/assets/shared_images/add_dark.png differ
diff --git a/app/src/main/assets/shared_images/add_light.png b/app/src/main/assets/shared_images/add_light.png
new file mode 100644
index 00000000..5c486bb4
Binary files /dev/null and b/app/src/main/assets/shared_images/add_light.png differ
diff --git a/app/src/main/assets/shared_images/arrow_back_dark.png b/app/src/main/assets/shared_images/arrow_back_dark.png
new file mode 100644
index 00000000..ff07fd79
Binary files /dev/null and b/app/src/main/assets/shared_images/arrow_back_dark.png differ
diff --git a/app/src/main/assets/shared_images/arrow_back_light.png b/app/src/main/assets/shared_images/arrow_back_light.png
new file mode 100644
index 00000000..512e56fa
Binary files /dev/null and b/app/src/main/assets/shared_images/arrow_back_light.png differ
diff --git a/app/src/main/assets/shared_images/arrow_forward_dark.png b/app/src/main/assets/shared_images/arrow_forward_dark.png
new file mode 100644
index 00000000..5d5083fd
Binary files /dev/null and b/app/src/main/assets/shared_images/arrow_forward_dark.png differ
diff --git a/app/src/main/assets/shared_images/arrow_forward_light.png b/app/src/main/assets/shared_images/arrow_forward_light.png
new file mode 100644
index 00000000..afbd57b4
Binary files /dev/null and b/app/src/main/assets/shared_images/arrow_forward_light.png differ
diff --git a/app/src/main/assets/shared_images/bookmark_border_blue_dark.png b/app/src/main/assets/shared_images/bookmark_border_blue_dark.png
new file mode 100644
index 00000000..d7cc3f99
Binary files /dev/null and b/app/src/main/assets/shared_images/bookmark_border_blue_dark.png differ
diff --git a/app/src/main/assets/shared_images/bookmark_border_blue_light.png b/app/src/main/assets/shared_images/bookmark_border_blue_light.png
new file mode 100644
index 00000000..1240c102
Binary files /dev/null and b/app/src/main/assets/shared_images/bookmark_border_blue_light.png differ
diff --git a/app/src/main/assets/shared_images/bookmark_border_dark.png b/app/src/main/assets/shared_images/bookmark_border_dark.png
new file mode 100644
index 00000000..d48693ab
Binary files /dev/null and b/app/src/main/assets/shared_images/bookmark_border_dark.png differ
diff --git a/app/src/main/assets/shared_images/bookmark_border_light.png b/app/src/main/assets/shared_images/bookmark_border_light.png
new file mode 100644
index 00000000..ddc4b3c4
Binary files /dev/null and b/app/src/main/assets/shared_images/bookmark_border_light.png differ
diff --git a/app/src/main/assets/shared_images/bug_report_blue_dark.png b/app/src/main/assets/shared_images/bug_report_blue_dark.png
new file mode 100644
index 00000000..d2c16b47
Binary files /dev/null and b/app/src/main/assets/shared_images/bug_report_blue_dark.png differ
diff --git a/app/src/main/assets/shared_images/bug_report_blue_light.png b/app/src/main/assets/shared_images/bug_report_blue_light.png
new file mode 100644
index 00000000..76d4c000
Binary files /dev/null and b/app/src/main/assets/shared_images/bug_report_blue_light.png differ
diff --git a/app/src/main/assets/shared_images/bug_report_dark.png b/app/src/main/assets/shared_images/bug_report_dark.png
new file mode 100644
index 00000000..d33e939b
Binary files /dev/null and b/app/src/main/assets/shared_images/bug_report_dark.png differ
diff --git a/app/src/main/assets/shared_images/bug_report_light.png b/app/src/main/assets/shared_images/bug_report_light.png
new file mode 100644
index 00000000..bdf56767
Binary files /dev/null and b/app/src/main/assets/shared_images/bug_report_light.png differ
diff --git a/app/src/main/assets/shared_images/call_to_action_dark.png b/app/src/main/assets/shared_images/call_to_action_dark.png
new file mode 100644
index 00000000..872e14ef
Binary files /dev/null and b/app/src/main/assets/shared_images/call_to_action_dark.png differ
diff --git a/app/src/main/assets/shared_images/call_to_action_light.png b/app/src/main/assets/shared_images/call_to_action_light.png
new file mode 100644
index 00000000..84c2e372
Binary files /dev/null and b/app/src/main/assets/shared_images/call_to_action_light.png differ
diff --git a/app/src/main/assets/shared_images/camera_enhance_dark.png b/app/src/main/assets/shared_images/camera_enhance_dark.png
new file mode 100644
index 00000000..81c14c3b
Binary files /dev/null and b/app/src/main/assets/shared_images/camera_enhance_dark.png differ
diff --git a/app/src/main/assets/shared_images/camera_enhance_light.png b/app/src/main/assets/shared_images/camera_enhance_light.png
new file mode 100644
index 00000000..f4afd242
Binary files /dev/null and b/app/src/main/assets/shared_images/camera_enhance_light.png differ
diff --git a/app/src/main/assets/shared_images/chrome_reader_mode_blue_dark.png b/app/src/main/assets/shared_images/chrome_reader_mode_blue_dark.png
new file mode 100644
index 00000000..92fca842
Binary files /dev/null and b/app/src/main/assets/shared_images/chrome_reader_mode_blue_dark.png differ
diff --git a/app/src/main/assets/shared_images/chrome_reader_mode_blue_light.png b/app/src/main/assets/shared_images/chrome_reader_mode_blue_light.png
new file mode 100644
index 00000000..6bbac590
Binary files /dev/null and b/app/src/main/assets/shared_images/chrome_reader_mode_blue_light.png differ
diff --git a/app/src/main/assets/shared_images/chrome_reader_mode_dark.png b/app/src/main/assets/shared_images/chrome_reader_mode_dark.png
new file mode 100644
index 00000000..3d0f493c
Binary files /dev/null and b/app/src/main/assets/shared_images/chrome_reader_mode_dark.png differ
diff --git a/app/src/main/assets/shared_images/chrome_reader_mode_light.png b/app/src/main/assets/shared_images/chrome_reader_mode_light.png
new file mode 100644
index 00000000..648b97ec
Binary files /dev/null and b/app/src/main/assets/shared_images/chrome_reader_mode_light.png differ
diff --git a/app/src/main/assets/shared_images/close_dark.png b/app/src/main/assets/shared_images/close_dark.png
new file mode 100644
index 00000000..993e4410
Binary files /dev/null and b/app/src/main/assets/shared_images/close_dark.png differ
diff --git a/app/src/main/assets/shared_images/close_light.png b/app/src/main/assets/shared_images/close_light.png
new file mode 100644
index 00000000..0f1086a5
Binary files /dev/null and b/app/src/main/assets/shared_images/close_light.png differ
diff --git a/app/src/main/assets/shared_images/delete_dark.png b/app/src/main/assets/shared_images/delete_dark.png
new file mode 100644
index 00000000..d98cc724
Binary files /dev/null and b/app/src/main/assets/shared_images/delete_dark.png differ
diff --git a/app/src/main/assets/shared_images/delete_forever_dark.png b/app/src/main/assets/shared_images/delete_forever_dark.png
new file mode 100644
index 00000000..f93d72fe
Binary files /dev/null and b/app/src/main/assets/shared_images/delete_forever_dark.png differ
diff --git a/app/src/main/assets/shared_images/delete_forever_light.png b/app/src/main/assets/shared_images/delete_forever_light.png
new file mode 100644
index 00000000..a4e87cc9
Binary files /dev/null and b/app/src/main/assets/shared_images/delete_forever_light.png differ
diff --git a/app/src/main/assets/shared_images/delete_light.png b/app/src/main/assets/shared_images/delete_light.png
new file mode 100644
index 00000000..46c58c3d
Binary files /dev/null and b/app/src/main/assets/shared_images/delete_light.png differ
diff --git a/app/src/main/assets/shared_images/devices_other_blue_dark.png b/app/src/main/assets/shared_images/devices_other_blue_dark.png
new file mode 100644
index 00000000..9330aad1
Binary files /dev/null and b/app/src/main/assets/shared_images/devices_other_blue_dark.png differ
diff --git a/app/src/main/assets/shared_images/devices_other_blue_light.png b/app/src/main/assets/shared_images/devices_other_blue_light.png
new file mode 100644
index 00000000..d6e7989b
Binary files /dev/null and b/app/src/main/assets/shared_images/devices_other_blue_light.png differ
diff --git a/app/src/main/assets/shared_images/devices_other_dark.png b/app/src/main/assets/shared_images/devices_other_dark.png
new file mode 100644
index 00000000..42a1e526
Binary files /dev/null and b/app/src/main/assets/shared_images/devices_other_dark.png differ
diff --git a/app/src/main/assets/shared_images/devices_other_light.png b/app/src/main/assets/shared_images/devices_other_light.png
new file mode 100644
index 00000000..dcf7e12e
Binary files /dev/null and b/app/src/main/assets/shared_images/devices_other_light.png differ
diff --git a/app/src/main/assets/shared_images/dns_blue_dark.png b/app/src/main/assets/shared_images/dns_blue_dark.png
new file mode 100644
index 00000000..57d8c7da
Binary files /dev/null and b/app/src/main/assets/shared_images/dns_blue_dark.png differ
diff --git a/app/src/main/assets/shared_images/dns_blue_light.png b/app/src/main/assets/shared_images/dns_blue_light.png
new file mode 100644
index 00000000..0acaf829
Binary files /dev/null and b/app/src/main/assets/shared_images/dns_blue_light.png differ
diff --git a/app/src/main/assets/shared_images/dns_dark.png b/app/src/main/assets/shared_images/dns_dark.png
new file mode 100644
index 00000000..74721454
Binary files /dev/null and b/app/src/main/assets/shared_images/dns_dark.png differ
diff --git a/app/src/main/assets/shared_images/dns_light.png b/app/src/main/assets/shared_images/dns_light.png
new file mode 100644
index 00000000..0eefb00d
Binary files /dev/null and b/app/src/main/assets/shared_images/dns_light.png differ
diff --git a/app/src/main/assets/shared_images/donut_small_dark.png b/app/src/main/assets/shared_images/donut_small_dark.png
new file mode 100644
index 00000000..50c79655
Binary files /dev/null and b/app/src/main/assets/shared_images/donut_small_dark.png differ
diff --git a/app/src/main/assets/shared_images/donut_small_light.png b/app/src/main/assets/shared_images/donut_small_light.png
new file mode 100644
index 00000000..1ec1ca88
Binary files /dev/null and b/app/src/main/assets/shared_images/donut_small_light.png differ
diff --git a/app/src/main/assets/shared_images/edit_dark.png b/app/src/main/assets/shared_images/edit_dark.png
new file mode 100644
index 00000000..0b608d46
Binary files /dev/null and b/app/src/main/assets/shared_images/edit_dark.png differ
diff --git a/app/src/main/assets/shared_images/edit_light.png b/app/src/main/assets/shared_images/edit_light.png
new file mode 100644
index 00000000..f4612f08
Binary files /dev/null and b/app/src/main/assets/shared_images/edit_light.png differ
diff --git a/app/src/main/assets/shared_images/expand_less_dark.png b/app/src/main/assets/shared_images/expand_less_dark.png
new file mode 100644
index 00000000..273197cf
Binary files /dev/null and b/app/src/main/assets/shared_images/expand_less_dark.png differ
diff --git a/app/src/main/assets/shared_images/expand_less_light.png b/app/src/main/assets/shared_images/expand_less_light.png
new file mode 100644
index 00000000..1140aa2d
Binary files /dev/null and b/app/src/main/assets/shared_images/expand_less_light.png differ
diff --git a/app/src/main/assets/shared_images/expand_more_dark.png b/app/src/main/assets/shared_images/expand_more_dark.png
new file mode 100644
index 00000000..fb63c9c6
Binary files /dev/null and b/app/src/main/assets/shared_images/expand_more_dark.png differ
diff --git a/app/src/main/assets/shared_images/expand_more_light.png b/app/src/main/assets/shared_images/expand_more_light.png
new file mode 100644
index 00000000..897b3061
Binary files /dev/null and b/app/src/main/assets/shared_images/expand_more_light.png differ
diff --git a/app/src/main/assets/shared_images/file_download_dark.png b/app/src/main/assets/shared_images/file_download_dark.png
new file mode 100644
index 00000000..cea23b57
Binary files /dev/null and b/app/src/main/assets/shared_images/file_download_dark.png differ
diff --git a/app/src/main/assets/shared_images/file_download_light.png b/app/src/main/assets/shared_images/file_download_light.png
new file mode 100644
index 00000000..c250e34d
Binary files /dev/null and b/app/src/main/assets/shared_images/file_download_light.png differ
diff --git a/app/src/main/assets/shared_images/find_in_page_dark.png b/app/src/main/assets/shared_images/find_in_page_dark.png
new file mode 100644
index 00000000..2aae6673
Binary files /dev/null and b/app/src/main/assets/shared_images/find_in_page_dark.png differ
diff --git a/app/src/main/assets/shared_images/find_in_page_light.png b/app/src/main/assets/shared_images/find_in_page_light.png
new file mode 100644
index 00000000..4246a16d
Binary files /dev/null and b/app/src/main/assets/shared_images/find_in_page_light.png differ
diff --git a/app/src/main/assets/shared_images/folder_dark.png b/app/src/main/assets/shared_images/folder_dark.png
new file mode 100644
index 00000000..f5df8e51
Binary files /dev/null and b/app/src/main/assets/shared_images/folder_dark.png differ
diff --git a/app/src/main/assets/shared_images/folder_light.png b/app/src/main/assets/shared_images/folder_light.png
new file mode 100644
index 00000000..e1b3183d
Binary files /dev/null and b/app/src/main/assets/shared_images/folder_light.png differ
diff --git a/app/src/main/assets/shared_images/fullscreen_dark.png b/app/src/main/assets/shared_images/fullscreen_dark.png
new file mode 100644
index 00000000..78ab2bab
Binary files /dev/null and b/app/src/main/assets/shared_images/fullscreen_dark.png differ
diff --git a/app/src/main/assets/shared_images/fullscreen_light.png b/app/src/main/assets/shared_images/fullscreen_light.png
new file mode 100644
index 00000000..ae9d4c3e
Binary files /dev/null and b/app/src/main/assets/shared_images/fullscreen_light.png differ
diff --git a/app/src/main/assets/shared_images/home_dark.png b/app/src/main/assets/shared_images/home_dark.png
new file mode 100644
index 00000000..3b1f28c2
Binary files /dev/null and b/app/src/main/assets/shared_images/home_dark.png differ
diff --git a/app/src/main/assets/shared_images/home_light.png b/app/src/main/assets/shared_images/home_light.png
new file mode 100644
index 00000000..564f597f
Binary files /dev/null and b/app/src/main/assets/shared_images/home_light.png differ
diff --git a/app/src/main/assets/shared_images/ic_add_dark.png b/app/src/main/assets/shared_images/ic_add_dark.png
deleted file mode 100644
index c53b6387..00000000
Binary files a/app/src/main/assets/shared_images/ic_add_dark.png and /dev/null differ
diff --git a/app/src/main/assets/shared_images/ic_add_light.png b/app/src/main/assets/shared_images/ic_add_light.png
deleted file mode 100644
index 5c486bb4..00000000
Binary files a/app/src/main/assets/shared_images/ic_add_light.png and /dev/null differ
diff --git a/app/src/main/assets/shared_images/ic_arrow_back_dark.png b/app/src/main/assets/shared_images/ic_arrow_back_dark.png
deleted file mode 100644
index ff07fd79..00000000
Binary files a/app/src/main/assets/shared_images/ic_arrow_back_dark.png and /dev/null differ
diff --git a/app/src/main/assets/shared_images/ic_arrow_back_light.png b/app/src/main/assets/shared_images/ic_arrow_back_light.png
deleted file mode 100644
index 512e56fa..00000000
Binary files a/app/src/main/assets/shared_images/ic_arrow_back_light.png and /dev/null differ
diff --git a/app/src/main/assets/shared_images/ic_arrow_forward_dark.png b/app/src/main/assets/shared_images/ic_arrow_forward_dark.png
deleted file mode 100644
index 5d5083fd..00000000
Binary files a/app/src/main/assets/shared_images/ic_arrow_forward_dark.png and /dev/null differ
diff --git a/app/src/main/assets/shared_images/ic_arrow_forward_light.png b/app/src/main/assets/shared_images/ic_arrow_forward_light.png
deleted file mode 100644
index afbd57b4..00000000
Binary files a/app/src/main/assets/shared_images/ic_arrow_forward_light.png and /dev/null differ
diff --git a/app/src/main/assets/shared_images/ic_bookmark_border_blue_dark.png b/app/src/main/assets/shared_images/ic_bookmark_border_blue_dark.png
deleted file mode 100644
index d7cc3f99..00000000
Binary files a/app/src/main/assets/shared_images/ic_bookmark_border_blue_dark.png and /dev/null differ
diff --git a/app/src/main/assets/shared_images/ic_bookmark_border_blue_light.png b/app/src/main/assets/shared_images/ic_bookmark_border_blue_light.png
deleted file mode 100644
index 1240c102..00000000
Binary files a/app/src/main/assets/shared_images/ic_bookmark_border_blue_light.png and /dev/null differ
diff --git a/app/src/main/assets/shared_images/ic_bookmark_border_dark.png b/app/src/main/assets/shared_images/ic_bookmark_border_dark.png
deleted file mode 100644
index d48693ab..00000000
Binary files a/app/src/main/assets/shared_images/ic_bookmark_border_dark.png and /dev/null differ
diff --git a/app/src/main/assets/shared_images/ic_bookmark_border_light.png b/app/src/main/assets/shared_images/ic_bookmark_border_light.png
deleted file mode 100644
index ddc4b3c4..00000000
Binary files a/app/src/main/assets/shared_images/ic_bookmark_border_light.png and /dev/null differ
diff --git a/app/src/main/assets/shared_images/ic_bug_report_blue_dark.png b/app/src/main/assets/shared_images/ic_bug_report_blue_dark.png
deleted file mode 100644
index d2c16b47..00000000
Binary files a/app/src/main/assets/shared_images/ic_bug_report_blue_dark.png and /dev/null differ
diff --git a/app/src/main/assets/shared_images/ic_bug_report_blue_light.png b/app/src/main/assets/shared_images/ic_bug_report_blue_light.png
deleted file mode 100644
index 76d4c000..00000000
Binary files a/app/src/main/assets/shared_images/ic_bug_report_blue_light.png and /dev/null differ
diff --git a/app/src/main/assets/shared_images/ic_bug_report_dark.png b/app/src/main/assets/shared_images/ic_bug_report_dark.png
deleted file mode 100644
index d33e939b..00000000
Binary files a/app/src/main/assets/shared_images/ic_bug_report_dark.png and /dev/null differ
diff --git a/app/src/main/assets/shared_images/ic_bug_report_light.png b/app/src/main/assets/shared_images/ic_bug_report_light.png
deleted file mode 100644
index bdf56767..00000000
Binary files a/app/src/main/assets/shared_images/ic_bug_report_light.png and /dev/null differ
diff --git a/app/src/main/assets/shared_images/ic_call_to_action_dark.png b/app/src/main/assets/shared_images/ic_call_to_action_dark.png
deleted file mode 100644
index 872e14ef..00000000
Binary files a/app/src/main/assets/shared_images/ic_call_to_action_dark.png and /dev/null differ
diff --git a/app/src/main/assets/shared_images/ic_call_to_action_light.png b/app/src/main/assets/shared_images/ic_call_to_action_light.png
deleted file mode 100644
index 84c2e372..00000000
Binary files a/app/src/main/assets/shared_images/ic_call_to_action_light.png and /dev/null differ
diff --git a/app/src/main/assets/shared_images/ic_chrome_reader_mode_blue_dark.png b/app/src/main/assets/shared_images/ic_chrome_reader_mode_blue_dark.png
deleted file mode 100644
index 92fca842..00000000
Binary files a/app/src/main/assets/shared_images/ic_chrome_reader_mode_blue_dark.png and /dev/null differ
diff --git a/app/src/main/assets/shared_images/ic_chrome_reader_mode_blue_light.png b/app/src/main/assets/shared_images/ic_chrome_reader_mode_blue_light.png
deleted file mode 100644
index 6bbac590..00000000
Binary files a/app/src/main/assets/shared_images/ic_chrome_reader_mode_blue_light.png and /dev/null differ
diff --git a/app/src/main/assets/shared_images/ic_chrome_reader_mode_dark.png b/app/src/main/assets/shared_images/ic_chrome_reader_mode_dark.png
deleted file mode 100644
index 3d0f493c..00000000
Binary files a/app/src/main/assets/shared_images/ic_chrome_reader_mode_dark.png and /dev/null differ
diff --git a/app/src/main/assets/shared_images/ic_chrome_reader_mode_light.png b/app/src/main/assets/shared_images/ic_chrome_reader_mode_light.png
deleted file mode 100644
index 648b97ec..00000000
Binary files a/app/src/main/assets/shared_images/ic_chrome_reader_mode_light.png and /dev/null differ
diff --git a/app/src/main/assets/shared_images/ic_close_dark.png b/app/src/main/assets/shared_images/ic_close_dark.png
deleted file mode 100644
index 993e4410..00000000
Binary files a/app/src/main/assets/shared_images/ic_close_dark.png and /dev/null differ
diff --git a/app/src/main/assets/shared_images/ic_close_light.png b/app/src/main/assets/shared_images/ic_close_light.png
deleted file mode 100644
index 0f1086a5..00000000
Binary files a/app/src/main/assets/shared_images/ic_close_light.png and /dev/null differ
diff --git a/app/src/main/assets/shared_images/ic_delete_dark.png b/app/src/main/assets/shared_images/ic_delete_dark.png
deleted file mode 100644
index d98cc724..00000000
Binary files a/app/src/main/assets/shared_images/ic_delete_dark.png and /dev/null differ
diff --git a/app/src/main/assets/shared_images/ic_delete_forever_dark.png b/app/src/main/assets/shared_images/ic_delete_forever_dark.png
deleted file mode 100644
index f93d72fe..00000000
Binary files a/app/src/main/assets/shared_images/ic_delete_forever_dark.png and /dev/null differ
diff --git a/app/src/main/assets/shared_images/ic_delete_forever_light.png b/app/src/main/assets/shared_images/ic_delete_forever_light.png
deleted file mode 100644
index a4e87cc9..00000000
Binary files a/app/src/main/assets/shared_images/ic_delete_forever_light.png and /dev/null differ
diff --git a/app/src/main/assets/shared_images/ic_delete_light.png b/app/src/main/assets/shared_images/ic_delete_light.png
deleted file mode 100644
index 46c58c3d..00000000
Binary files a/app/src/main/assets/shared_images/ic_delete_light.png and /dev/null differ
diff --git a/app/src/main/assets/shared_images/ic_devices_other_blue_dark.png b/app/src/main/assets/shared_images/ic_devices_other_blue_dark.png
deleted file mode 100644
index 9330aad1..00000000
Binary files a/app/src/main/assets/shared_images/ic_devices_other_blue_dark.png and /dev/null differ
diff --git a/app/src/main/assets/shared_images/ic_devices_other_blue_light.png b/app/src/main/assets/shared_images/ic_devices_other_blue_light.png
deleted file mode 100644
index d6e7989b..00000000
Binary files a/app/src/main/assets/shared_images/ic_devices_other_blue_light.png and /dev/null differ
diff --git a/app/src/main/assets/shared_images/ic_devices_other_dark.png b/app/src/main/assets/shared_images/ic_devices_other_dark.png
deleted file mode 100644
index 42a1e526..00000000
Binary files a/app/src/main/assets/shared_images/ic_devices_other_dark.png and /dev/null differ
diff --git a/app/src/main/assets/shared_images/ic_devices_other_light.png b/app/src/main/assets/shared_images/ic_devices_other_light.png
deleted file mode 100644
index dcf7e12e..00000000
Binary files a/app/src/main/assets/shared_images/ic_devices_other_light.png and /dev/null differ
diff --git a/app/src/main/assets/shared_images/ic_dns_blue_dark.png b/app/src/main/assets/shared_images/ic_dns_blue_dark.png
deleted file mode 100644
index 57d8c7da..00000000
Binary files a/app/src/main/assets/shared_images/ic_dns_blue_dark.png and /dev/null differ
diff --git a/app/src/main/assets/shared_images/ic_dns_blue_light.png b/app/src/main/assets/shared_images/ic_dns_blue_light.png
deleted file mode 100644
index 0acaf829..00000000
Binary files a/app/src/main/assets/shared_images/ic_dns_blue_light.png and /dev/null differ
diff --git a/app/src/main/assets/shared_images/ic_dns_dark.png b/app/src/main/assets/shared_images/ic_dns_dark.png
deleted file mode 100644
index 74721454..00000000
Binary files a/app/src/main/assets/shared_images/ic_dns_dark.png and /dev/null differ
diff --git a/app/src/main/assets/shared_images/ic_dns_light.png b/app/src/main/assets/shared_images/ic_dns_light.png
deleted file mode 100644
index 0eefb00d..00000000
Binary files a/app/src/main/assets/shared_images/ic_dns_light.png and /dev/null differ
diff --git a/app/src/main/assets/shared_images/ic_donut_small_dark.png b/app/src/main/assets/shared_images/ic_donut_small_dark.png
deleted file mode 100644
index 50c79655..00000000
Binary files a/app/src/main/assets/shared_images/ic_donut_small_dark.png and /dev/null differ
diff --git a/app/src/main/assets/shared_images/ic_donut_small_light.png b/app/src/main/assets/shared_images/ic_donut_small_light.png
deleted file mode 100644
index 1ec1ca88..00000000
Binary files a/app/src/main/assets/shared_images/ic_donut_small_light.png and /dev/null differ
diff --git a/app/src/main/assets/shared_images/ic_edit_dark.png b/app/src/main/assets/shared_images/ic_edit_dark.png
deleted file mode 100644
index 0b608d46..00000000
Binary files a/app/src/main/assets/shared_images/ic_edit_dark.png and /dev/null differ
diff --git a/app/src/main/assets/shared_images/ic_edit_light.png b/app/src/main/assets/shared_images/ic_edit_light.png
deleted file mode 100644
index f4612f08..00000000
Binary files a/app/src/main/assets/shared_images/ic_edit_light.png and /dev/null differ
diff --git a/app/src/main/assets/shared_images/ic_expand_less_dark.png b/app/src/main/assets/shared_images/ic_expand_less_dark.png
deleted file mode 100644
index 273197cf..00000000
Binary files a/app/src/main/assets/shared_images/ic_expand_less_dark.png and /dev/null differ
diff --git a/app/src/main/assets/shared_images/ic_expand_less_light.png b/app/src/main/assets/shared_images/ic_expand_less_light.png
deleted file mode 100644
index 1140aa2d..00000000
Binary files a/app/src/main/assets/shared_images/ic_expand_less_light.png and /dev/null differ
diff --git a/app/src/main/assets/shared_images/ic_expand_more_dark.png b/app/src/main/assets/shared_images/ic_expand_more_dark.png
deleted file mode 100644
index fb63c9c6..00000000
Binary files a/app/src/main/assets/shared_images/ic_expand_more_dark.png and /dev/null differ
diff --git a/app/src/main/assets/shared_images/ic_expand_more_light.png b/app/src/main/assets/shared_images/ic_expand_more_light.png
deleted file mode 100644
index 897b3061..00000000
Binary files a/app/src/main/assets/shared_images/ic_expand_more_light.png and /dev/null differ
diff --git a/app/src/main/assets/shared_images/ic_file_download_dark.png b/app/src/main/assets/shared_images/ic_file_download_dark.png
deleted file mode 100644
index cea23b57..00000000
Binary files a/app/src/main/assets/shared_images/ic_file_download_dark.png and /dev/null differ
diff --git a/app/src/main/assets/shared_images/ic_file_download_light.png b/app/src/main/assets/shared_images/ic_file_download_light.png
deleted file mode 100644
index c250e34d..00000000
Binary files a/app/src/main/assets/shared_images/ic_file_download_light.png and /dev/null differ
diff --git a/app/src/main/assets/shared_images/ic_find_in_page_dark.png b/app/src/main/assets/shared_images/ic_find_in_page_dark.png
deleted file mode 100644
index 2aae6673..00000000
Binary files a/app/src/main/assets/shared_images/ic_find_in_page_dark.png and /dev/null differ
diff --git a/app/src/main/assets/shared_images/ic_find_in_page_light.png b/app/src/main/assets/shared_images/ic_find_in_page_light.png
deleted file mode 100644
index 4246a16d..00000000
Binary files a/app/src/main/assets/shared_images/ic_find_in_page_light.png and /dev/null differ
diff --git a/app/src/main/assets/shared_images/ic_folder_dark.png b/app/src/main/assets/shared_images/ic_folder_dark.png
deleted file mode 100644
index f5df8e51..00000000
Binary files a/app/src/main/assets/shared_images/ic_folder_dark.png and /dev/null differ
diff --git a/app/src/main/assets/shared_images/ic_folder_light.png b/app/src/main/assets/shared_images/ic_folder_light.png
deleted file mode 100644
index e1b3183d..00000000
Binary files a/app/src/main/assets/shared_images/ic_folder_light.png and /dev/null differ
diff --git a/app/src/main/assets/shared_images/ic_fullscreen_dark.png b/app/src/main/assets/shared_images/ic_fullscreen_dark.png
deleted file mode 100644
index 78ab2bab..00000000
Binary files a/app/src/main/assets/shared_images/ic_fullscreen_dark.png and /dev/null differ
diff --git a/app/src/main/assets/shared_images/ic_fullscreen_light.png b/app/src/main/assets/shared_images/ic_fullscreen_light.png
deleted file mode 100644
index ae9d4c3e..00000000
Binary files a/app/src/main/assets/shared_images/ic_fullscreen_light.png and /dev/null differ
diff --git a/app/src/main/assets/shared_images/ic_home_dark.png b/app/src/main/assets/shared_images/ic_home_dark.png
deleted file mode 100644
index 3b1f28c2..00000000
Binary files a/app/src/main/assets/shared_images/ic_home_dark.png and /dev/null differ
diff --git a/app/src/main/assets/shared_images/ic_home_light.png b/app/src/main/assets/shared_images/ic_home_light.png
deleted file mode 100644
index 564f597f..00000000
Binary files a/app/src/main/assets/shared_images/ic_home_light.png and /dev/null differ
diff --git a/app/src/main/assets/shared_images/ic_image_dark.png b/app/src/main/assets/shared_images/ic_image_dark.png
deleted file mode 100644
index 01fb717e..00000000
Binary files a/app/src/main/assets/shared_images/ic_image_dark.png and /dev/null differ
diff --git a/app/src/main/assets/shared_images/ic_image_light.png b/app/src/main/assets/shared_images/ic_image_light.png
deleted file mode 100644
index 3e4dc0c9..00000000
Binary files a/app/src/main/assets/shared_images/ic_image_light.png and /dev/null differ
diff --git a/app/src/main/assets/shared_images/ic_import_contacts_dark.png b/app/src/main/assets/shared_images/ic_import_contacts_dark.png
deleted file mode 100644
index fed4238e..00000000
Binary files a/app/src/main/assets/shared_images/ic_import_contacts_dark.png and /dev/null differ
diff --git a/app/src/main/assets/shared_images/ic_import_contacts_light.png b/app/src/main/assets/shared_images/ic_import_contacts_light.png
deleted file mode 100644
index 2e380c7f..00000000
Binary files a/app/src/main/assets/shared_images/ic_import_contacts_light.png and /dev/null differ
diff --git a/app/src/main/assets/shared_images/ic_important_devices_dark.png b/app/src/main/assets/shared_images/ic_important_devices_dark.png
deleted file mode 100644
index 0c4667d6..00000000
Binary files a/app/src/main/assets/shared_images/ic_important_devices_dark.png and /dev/null differ
diff --git a/app/src/main/assets/shared_images/ic_important_devices_light.png b/app/src/main/assets/shared_images/ic_important_devices_light.png
deleted file mode 100644
index f85e4fc2..00000000
Binary files a/app/src/main/assets/shared_images/ic_important_devices_light.png and /dev/null differ
diff --git a/app/src/main/assets/shared_images/ic_info_outline_dark.png b/app/src/main/assets/shared_images/ic_info_outline_dark.png
deleted file mode 100644
index a376d234..00000000
Binary files a/app/src/main/assets/shared_images/ic_info_outline_dark.png and /dev/null differ
diff --git a/app/src/main/assets/shared_images/ic_info_outline_light.png b/app/src/main/assets/shared_images/ic_info_outline_light.png
deleted file mode 100644
index d540f1cf..00000000
Binary files a/app/src/main/assets/shared_images/ic_info_outline_light.png and /dev/null differ
diff --git a/app/src/main/assets/shared_images/ic_language_dark.png b/app/src/main/assets/shared_images/ic_language_dark.png
deleted file mode 100644
index 5c185af2..00000000
Binary files a/app/src/main/assets/shared_images/ic_language_dark.png and /dev/null differ
diff --git a/app/src/main/assets/shared_images/ic_language_light.png b/app/src/main/assets/shared_images/ic_language_light.png
deleted file mode 100644
index 5aee3a92..00000000
Binary files a/app/src/main/assets/shared_images/ic_language_light.png and /dev/null differ
diff --git a/app/src/main/assets/shared_images/ic_list_dark.png b/app/src/main/assets/shared_images/ic_list_dark.png
deleted file mode 100644
index 495dd2b2..00000000
Binary files a/app/src/main/assets/shared_images/ic_list_dark.png and /dev/null differ
diff --git a/app/src/main/assets/shared_images/ic_list_light.png b/app/src/main/assets/shared_images/ic_list_light.png
deleted file mode 100644
index 786df41d..00000000
Binary files a/app/src/main/assets/shared_images/ic_list_light.png and /dev/null differ
diff --git a/app/src/main/assets/shared_images/ic_local_activity_dark.png b/app/src/main/assets/shared_images/ic_local_activity_dark.png
deleted file mode 100644
index 92312644..00000000
Binary files a/app/src/main/assets/shared_images/ic_local_activity_dark.png and /dev/null differ
diff --git a/app/src/main/assets/shared_images/ic_local_activity_light.png b/app/src/main/assets/shared_images/ic_local_activity_light.png
deleted file mode 100644
index 4e0a1539..00000000
Binary files a/app/src/main/assets/shared_images/ic_local_activity_light.png and /dev/null differ
diff --git a/app/src/main/assets/shared_images/ic_location_off_blue_dark.png b/app/src/main/assets/shared_images/ic_location_off_blue_dark.png
deleted file mode 100644
index 79140dff..00000000
Binary files a/app/src/main/assets/shared_images/ic_location_off_blue_dark.png and /dev/null differ
diff --git a/app/src/main/assets/shared_images/ic_location_off_blue_light.png b/app/src/main/assets/shared_images/ic_location_off_blue_light.png
deleted file mode 100644
index b1bb20d5..00000000
Binary files a/app/src/main/assets/shared_images/ic_location_off_blue_light.png and /dev/null differ
diff --git a/app/src/main/assets/shared_images/ic_location_off_dark.png b/app/src/main/assets/shared_images/ic_location_off_dark.png
deleted file mode 100644
index 38bd36db..00000000
Binary files a/app/src/main/assets/shared_images/ic_location_off_dark.png and /dev/null differ
diff --git a/app/src/main/assets/shared_images/ic_location_off_light.png b/app/src/main/assets/shared_images/ic_location_off_light.png
deleted file mode 100644
index 181aba4a..00000000
Binary files a/app/src/main/assets/shared_images/ic_location_off_light.png and /dev/null differ
diff --git a/app/src/main/assets/shared_images/ic_lock_dark.png b/app/src/main/assets/shared_images/ic_lock_dark.png
deleted file mode 100644
index 87a76590..00000000
Binary files a/app/src/main/assets/shared_images/ic_lock_dark.png and /dev/null differ
diff --git a/app/src/main/assets/shared_images/ic_lock_light.png b/app/src/main/assets/shared_images/ic_lock_light.png
deleted file mode 100644
index dba1a27b..00000000
Binary files a/app/src/main/assets/shared_images/ic_lock_light.png and /dev/null differ
diff --git a/app/src/main/assets/shared_images/ic_map_blue_dark.png b/app/src/main/assets/shared_images/ic_map_blue_dark.png
deleted file mode 100644
index dafbcc4b..00000000
Binary files a/app/src/main/assets/shared_images/ic_map_blue_dark.png and /dev/null differ
diff --git a/app/src/main/assets/shared_images/ic_map_blue_light.png b/app/src/main/assets/shared_images/ic_map_blue_light.png
deleted file mode 100644
index 869ee2d3..00000000
Binary files a/app/src/main/assets/shared_images/ic_map_blue_light.png and /dev/null differ
diff --git a/app/src/main/assets/shared_images/ic_map_dark.png b/app/src/main/assets/shared_images/ic_map_dark.png
deleted file mode 100644
index 5ac1d07d..00000000
Binary files a/app/src/main/assets/shared_images/ic_map_dark.png and /dev/null differ
diff --git a/app/src/main/assets/shared_images/ic_map_light.png b/app/src/main/assets/shared_images/ic_map_light.png
deleted file mode 100644
index 0f251607..00000000
Binary files a/app/src/main/assets/shared_images/ic_map_light.png and /dev/null differ
diff --git a/app/src/main/assets/shared_images/ic_more_blue_dark.png b/app/src/main/assets/shared_images/ic_more_blue_dark.png
deleted file mode 100644
index 481478d6..00000000
Binary files a/app/src/main/assets/shared_images/ic_more_blue_dark.png and /dev/null differ
diff --git a/app/src/main/assets/shared_images/ic_more_blue_light.png b/app/src/main/assets/shared_images/ic_more_blue_light.png
deleted file mode 100644
index bd606f9a..00000000
Binary files a/app/src/main/assets/shared_images/ic_more_blue_light.png and /dev/null differ
diff --git a/app/src/main/assets/shared_images/ic_more_dark.png b/app/src/main/assets/shared_images/ic_more_dark.png
deleted file mode 100644
index c1c54dac..00000000
Binary files a/app/src/main/assets/shared_images/ic_more_dark.png and /dev/null differ
diff --git a/app/src/main/assets/shared_images/ic_more_light.png b/app/src/main/assets/shared_images/ic_more_light.png
deleted file mode 100644
index c5c2632d..00000000
Binary files a/app/src/main/assets/shared_images/ic_more_light.png and /dev/null differ
diff --git a/app/src/main/assets/shared_images/ic_question_answer_blue_dark.png b/app/src/main/assets/shared_images/ic_question_answer_blue_dark.png
deleted file mode 100644
index 65752a38..00000000
Binary files a/app/src/main/assets/shared_images/ic_question_answer_blue_dark.png and /dev/null differ
diff --git a/app/src/main/assets/shared_images/ic_question_answer_blue_light.png b/app/src/main/assets/shared_images/ic_question_answer_blue_light.png
deleted file mode 100644
index 4fa34b94..00000000
Binary files a/app/src/main/assets/shared_images/ic_question_answer_blue_light.png and /dev/null differ
diff --git a/app/src/main/assets/shared_images/ic_question_answer_dark.png b/app/src/main/assets/shared_images/ic_question_answer_dark.png
deleted file mode 100644
index ec214b68..00000000
Binary files a/app/src/main/assets/shared_images/ic_question_answer_dark.png and /dev/null differ
diff --git a/app/src/main/assets/shared_images/ic_question_answer_light.png b/app/src/main/assets/shared_images/ic_question_answer_light.png
deleted file mode 100644
index cff293a0..00000000
Binary files a/app/src/main/assets/shared_images/ic_question_answer_light.png and /dev/null differ
diff --git a/app/src/main/assets/shared_images/ic_refresh_dark.png b/app/src/main/assets/shared_images/ic_refresh_dark.png
deleted file mode 100644
index 725b3107..00000000
Binary files a/app/src/main/assets/shared_images/ic_refresh_dark.png and /dev/null differ
diff --git a/app/src/main/assets/shared_images/ic_refresh_light.png b/app/src/main/assets/shared_images/ic_refresh_light.png
deleted file mode 100644
index a37fd60e..00000000
Binary files a/app/src/main/assets/shared_images/ic_refresh_light.png and /dev/null differ
diff --git a/app/src/main/assets/shared_images/ic_search_dark.png b/app/src/main/assets/shared_images/ic_search_dark.png
deleted file mode 100644
index 871bc0c1..00000000
Binary files a/app/src/main/assets/shared_images/ic_search_dark.png and /dev/null differ
diff --git a/app/src/main/assets/shared_images/ic_search_light.png b/app/src/main/assets/shared_images/ic_search_light.png
deleted file mode 100644
index e49d7545..00000000
Binary files a/app/src/main/assets/shared_images/ic_search_light.png and /dev/null differ
diff --git a/app/src/main/assets/shared_images/ic_select_all_dark.png b/app/src/main/assets/shared_images/ic_select_all_dark.png
deleted file mode 100644
index 2e58c4d0..00000000
Binary files a/app/src/main/assets/shared_images/ic_select_all_dark.png and /dev/null differ
diff --git a/app/src/main/assets/shared_images/ic_select_all_light.png b/app/src/main/assets/shared_images/ic_select_all_light.png
deleted file mode 100644
index 92aab4e2..00000000
Binary files a/app/src/main/assets/shared_images/ic_select_all_light.png and /dev/null differ
diff --git a/app/src/main/assets/shared_images/ic_settings_dark.png b/app/src/main/assets/shared_images/ic_settings_dark.png
deleted file mode 100644
index 29adb395..00000000
Binary files a/app/src/main/assets/shared_images/ic_settings_dark.png and /dev/null differ
diff --git a/app/src/main/assets/shared_images/ic_settings_light.png b/app/src/main/assets/shared_images/ic_settings_light.png
deleted file mode 100644
index ed308aa8..00000000
Binary files a/app/src/main/assets/shared_images/ic_settings_light.png and /dev/null differ
diff --git a/app/src/main/assets/shared_images/ic_smartphone_dark.png b/app/src/main/assets/shared_images/ic_smartphone_dark.png
deleted file mode 100644
index 13a662a3..00000000
Binary files a/app/src/main/assets/shared_images/ic_smartphone_dark.png and /dev/null differ
diff --git a/app/src/main/assets/shared_images/ic_smartphone_light.png b/app/src/main/assets/shared_images/ic_smartphone_light.png
deleted file mode 100644
index 9704accd..00000000
Binary files a/app/src/main/assets/shared_images/ic_smartphone_light.png and /dev/null differ
diff --git a/app/src/main/assets/shared_images/ic_style_dark.png b/app/src/main/assets/shared_images/ic_style_dark.png
deleted file mode 100644
index e00426b8..00000000
Binary files a/app/src/main/assets/shared_images/ic_style_dark.png and /dev/null differ
diff --git a/app/src/main/assets/shared_images/ic_style_light.png b/app/src/main/assets/shared_images/ic_style_light.png
deleted file mode 100644
index 56b43c02..00000000
Binary files a/app/src/main/assets/shared_images/ic_style_light.png and /dev/null differ
diff --git a/app/src/main/assets/shared_images/ic_subtitles_blue_dark.png b/app/src/main/assets/shared_images/ic_subtitles_blue_dark.png
deleted file mode 100644
index 6721719c..00000000
Binary files a/app/src/main/assets/shared_images/ic_subtitles_blue_dark.png and /dev/null differ
diff --git a/app/src/main/assets/shared_images/ic_subtitles_blue_light.png b/app/src/main/assets/shared_images/ic_subtitles_blue_light.png
deleted file mode 100644
index 11c87bd3..00000000
Binary files a/app/src/main/assets/shared_images/ic_subtitles_blue_light.png and /dev/null differ
diff --git a/app/src/main/assets/shared_images/ic_subtitles_dark.png b/app/src/main/assets/shared_images/ic_subtitles_dark.png
deleted file mode 100644
index c6742b7e..00000000
Binary files a/app/src/main/assets/shared_images/ic_subtitles_dark.png and /dev/null differ
diff --git a/app/src/main/assets/shared_images/ic_subtitles_light.png b/app/src/main/assets/shared_images/ic_subtitles_light.png
deleted file mode 100644
index dc320b03..00000000
Binary files a/app/src/main/assets/shared_images/ic_subtitles_light.png and /dev/null differ
diff --git a/app/src/main/assets/shared_images/ic_text_fields_dark.png b/app/src/main/assets/shared_images/ic_text_fields_dark.png
deleted file mode 100644
index c6dd101a..00000000
Binary files a/app/src/main/assets/shared_images/ic_text_fields_dark.png and /dev/null differ
diff --git a/app/src/main/assets/shared_images/ic_text_fields_light.png b/app/src/main/assets/shared_images/ic_text_fields_light.png
deleted file mode 100644
index de558366..00000000
Binary files a/app/src/main/assets/shared_images/ic_text_fields_light.png and /dev/null differ
diff --git a/app/src/main/assets/shared_images/ic_thumbs_up_down_dark.png b/app/src/main/assets/shared_images/ic_thumbs_up_down_dark.png
deleted file mode 100644
index 09d615d1..00000000
Binary files a/app/src/main/assets/shared_images/ic_thumbs_up_down_dark.png and /dev/null differ
diff --git a/app/src/main/assets/shared_images/ic_thumbs_up_down_light.png b/app/src/main/assets/shared_images/ic_thumbs_up_down_light.png
deleted file mode 100644
index 6f1f7910..00000000
Binary files a/app/src/main/assets/shared_images/ic_thumbs_up_down_light.png and /dev/null differ
diff --git a/app/src/main/assets/shared_images/ic_vertical_align_bottom_dark.png b/app/src/main/assets/shared_images/ic_vertical_align_bottom_dark.png
deleted file mode 100644
index 3a97e6ab..00000000
Binary files a/app/src/main/assets/shared_images/ic_vertical_align_bottom_dark.png and /dev/null differ
diff --git a/app/src/main/assets/shared_images/ic_vertical_align_bottom_light.png b/app/src/main/assets/shared_images/ic_vertical_align_bottom_light.png
deleted file mode 100644
index 620a1201..00000000
Binary files a/app/src/main/assets/shared_images/ic_vertical_align_bottom_light.png and /dev/null differ
diff --git a/app/src/main/assets/shared_images/ic_vertical_align_top_dark.png b/app/src/main/assets/shared_images/ic_vertical_align_top_dark.png
deleted file mode 100644
index 30ab1c5a..00000000
Binary files a/app/src/main/assets/shared_images/ic_vertical_align_top_dark.png and /dev/null differ
diff --git a/app/src/main/assets/shared_images/ic_vertical_align_top_light.png b/app/src/main/assets/shared_images/ic_vertical_align_top_light.png
deleted file mode 100644
index 607c9e6a..00000000
Binary files a/app/src/main/assets/shared_images/ic_vertical_align_top_light.png and /dev/null differ
diff --git a/app/src/main/assets/shared_images/ic_visibility_off_dark.png b/app/src/main/assets/shared_images/ic_visibility_off_dark.png
deleted file mode 100644
index 8c81329d..00000000
Binary files a/app/src/main/assets/shared_images/ic_visibility_off_dark.png and /dev/null differ
diff --git a/app/src/main/assets/shared_images/ic_visibility_off_light.png b/app/src/main/assets/shared_images/ic_visibility_off_light.png
deleted file mode 100644
index a4bcb6ac..00000000
Binary files a/app/src/main/assets/shared_images/ic_visibility_off_light.png and /dev/null differ
diff --git a/app/src/main/assets/shared_images/ic_vpn_lock_blue_dark.png b/app/src/main/assets/shared_images/ic_vpn_lock_blue_dark.png
deleted file mode 100644
index 134a19bf..00000000
Binary files a/app/src/main/assets/shared_images/ic_vpn_lock_blue_dark.png and /dev/null differ
diff --git a/app/src/main/assets/shared_images/ic_vpn_lock_blue_light.png b/app/src/main/assets/shared_images/ic_vpn_lock_blue_light.png
deleted file mode 100644
index 60c5c166..00000000
Binary files a/app/src/main/assets/shared_images/ic_vpn_lock_blue_light.png and /dev/null differ
diff --git a/app/src/main/assets/shared_images/ic_vpn_lock_dark.png b/app/src/main/assets/shared_images/ic_vpn_lock_dark.png
deleted file mode 100644
index 32367357..00000000
Binary files a/app/src/main/assets/shared_images/ic_vpn_lock_dark.png and /dev/null differ
diff --git a/app/src/main/assets/shared_images/ic_vpn_lock_light.png b/app/src/main/assets/shared_images/ic_vpn_lock_light.png
deleted file mode 100644
index 5adb9cfc..00000000
Binary files a/app/src/main/assets/shared_images/ic_vpn_lock_light.png and /dev/null differ
diff --git a/app/src/main/assets/shared_images/ic_web_blue_dark.png b/app/src/main/assets/shared_images/ic_web_blue_dark.png
deleted file mode 100644
index fe3939e4..00000000
Binary files a/app/src/main/assets/shared_images/ic_web_blue_dark.png and /dev/null differ
diff --git a/app/src/main/assets/shared_images/ic_web_blue_light.png b/app/src/main/assets/shared_images/ic_web_blue_light.png
deleted file mode 100644
index d3030bef..00000000
Binary files a/app/src/main/assets/shared_images/ic_web_blue_light.png and /dev/null differ
diff --git a/app/src/main/assets/shared_images/ic_web_dark.png b/app/src/main/assets/shared_images/ic_web_dark.png
deleted file mode 100644
index 0ece4668..00000000
Binary files a/app/src/main/assets/shared_images/ic_web_dark.png and /dev/null differ
diff --git a/app/src/main/assets/shared_images/ic_web_light.png b/app/src/main/assets/shared_images/ic_web_light.png
deleted file mode 100644
index 5ffe93a1..00000000
Binary files a/app/src/main/assets/shared_images/ic_web_light.png and /dev/null differ
diff --git a/app/src/main/assets/shared_images/image_dark.png b/app/src/main/assets/shared_images/image_dark.png
new file mode 100644
index 00000000..01fb717e
Binary files /dev/null and b/app/src/main/assets/shared_images/image_dark.png differ
diff --git a/app/src/main/assets/shared_images/image_light.png b/app/src/main/assets/shared_images/image_light.png
new file mode 100644
index 00000000..3e4dc0c9
Binary files /dev/null and b/app/src/main/assets/shared_images/image_light.png differ
diff --git a/app/src/main/assets/shared_images/import_contacts_dark.png b/app/src/main/assets/shared_images/import_contacts_dark.png
new file mode 100644
index 00000000..fed4238e
Binary files /dev/null and b/app/src/main/assets/shared_images/import_contacts_dark.png differ
diff --git a/app/src/main/assets/shared_images/import_contacts_light.png b/app/src/main/assets/shared_images/import_contacts_light.png
new file mode 100644
index 00000000..2e380c7f
Binary files /dev/null and b/app/src/main/assets/shared_images/import_contacts_light.png differ
diff --git a/app/src/main/assets/shared_images/important_devices_dark.png b/app/src/main/assets/shared_images/important_devices_dark.png
new file mode 100644
index 00000000..0c4667d6
Binary files /dev/null and b/app/src/main/assets/shared_images/important_devices_dark.png differ
diff --git a/app/src/main/assets/shared_images/important_devices_light.png b/app/src/main/assets/shared_images/important_devices_light.png
new file mode 100644
index 00000000..f85e4fc2
Binary files /dev/null and b/app/src/main/assets/shared_images/important_devices_light.png differ
diff --git a/app/src/main/assets/shared_images/info_outline_dark.png b/app/src/main/assets/shared_images/info_outline_dark.png
new file mode 100644
index 00000000..a376d234
Binary files /dev/null and b/app/src/main/assets/shared_images/info_outline_dark.png differ
diff --git a/app/src/main/assets/shared_images/info_outline_light.png b/app/src/main/assets/shared_images/info_outline_light.png
new file mode 100644
index 00000000..d540f1cf
Binary files /dev/null and b/app/src/main/assets/shared_images/info_outline_light.png differ
diff --git a/app/src/main/assets/shared_images/language_dark.png b/app/src/main/assets/shared_images/language_dark.png
new file mode 100644
index 00000000..5c185af2
Binary files /dev/null and b/app/src/main/assets/shared_images/language_dark.png differ
diff --git a/app/src/main/assets/shared_images/language_light.png b/app/src/main/assets/shared_images/language_light.png
new file mode 100644
index 00000000..5aee3a92
Binary files /dev/null and b/app/src/main/assets/shared_images/language_light.png differ
diff --git a/app/src/main/assets/shared_images/list_dark.png b/app/src/main/assets/shared_images/list_dark.png
new file mode 100644
index 00000000..495dd2b2
Binary files /dev/null and b/app/src/main/assets/shared_images/list_dark.png differ
diff --git a/app/src/main/assets/shared_images/list_light.png b/app/src/main/assets/shared_images/list_light.png
new file mode 100644
index 00000000..786df41d
Binary files /dev/null and b/app/src/main/assets/shared_images/list_light.png differ
diff --git a/app/src/main/assets/shared_images/local_activity_dark.png b/app/src/main/assets/shared_images/local_activity_dark.png
new file mode 100644
index 00000000..92312644
Binary files /dev/null and b/app/src/main/assets/shared_images/local_activity_dark.png differ
diff --git a/app/src/main/assets/shared_images/local_activity_light.png b/app/src/main/assets/shared_images/local_activity_light.png
new file mode 100644
index 00000000..4e0a1539
Binary files /dev/null and b/app/src/main/assets/shared_images/local_activity_light.png differ
diff --git a/app/src/main/assets/shared_images/location_off_blue_dark.png b/app/src/main/assets/shared_images/location_off_blue_dark.png
new file mode 100644
index 00000000..79140dff
Binary files /dev/null and b/app/src/main/assets/shared_images/location_off_blue_dark.png differ
diff --git a/app/src/main/assets/shared_images/location_off_blue_light.png b/app/src/main/assets/shared_images/location_off_blue_light.png
new file mode 100644
index 00000000..b1bb20d5
Binary files /dev/null and b/app/src/main/assets/shared_images/location_off_blue_light.png differ
diff --git a/app/src/main/assets/shared_images/location_off_dark.png b/app/src/main/assets/shared_images/location_off_dark.png
new file mode 100644
index 00000000..38bd36db
Binary files /dev/null and b/app/src/main/assets/shared_images/location_off_dark.png differ
diff --git a/app/src/main/assets/shared_images/location_off_light.png b/app/src/main/assets/shared_images/location_off_light.png
new file mode 100644
index 00000000..181aba4a
Binary files /dev/null and b/app/src/main/assets/shared_images/location_off_light.png differ
diff --git a/app/src/main/assets/shared_images/lock_dark.png b/app/src/main/assets/shared_images/lock_dark.png
new file mode 100644
index 00000000..87a76590
Binary files /dev/null and b/app/src/main/assets/shared_images/lock_dark.png differ
diff --git a/app/src/main/assets/shared_images/lock_light.png b/app/src/main/assets/shared_images/lock_light.png
new file mode 100644
index 00000000..dba1a27b
Binary files /dev/null and b/app/src/main/assets/shared_images/lock_light.png differ
diff --git a/app/src/main/assets/shared_images/map_blue_dark.png b/app/src/main/assets/shared_images/map_blue_dark.png
new file mode 100644
index 00000000..dafbcc4b
Binary files /dev/null and b/app/src/main/assets/shared_images/map_blue_dark.png differ
diff --git a/app/src/main/assets/shared_images/map_blue_light.png b/app/src/main/assets/shared_images/map_blue_light.png
new file mode 100644
index 00000000..869ee2d3
Binary files /dev/null and b/app/src/main/assets/shared_images/map_blue_light.png differ
diff --git a/app/src/main/assets/shared_images/map_dark.png b/app/src/main/assets/shared_images/map_dark.png
new file mode 100644
index 00000000..5ac1d07d
Binary files /dev/null and b/app/src/main/assets/shared_images/map_dark.png differ
diff --git a/app/src/main/assets/shared_images/map_light.png b/app/src/main/assets/shared_images/map_light.png
new file mode 100644
index 00000000..0f251607
Binary files /dev/null and b/app/src/main/assets/shared_images/map_light.png differ
diff --git a/app/src/main/assets/shared_images/more_blue_dark.png b/app/src/main/assets/shared_images/more_blue_dark.png
new file mode 100644
index 00000000..481478d6
Binary files /dev/null and b/app/src/main/assets/shared_images/more_blue_dark.png differ
diff --git a/app/src/main/assets/shared_images/more_blue_light.png b/app/src/main/assets/shared_images/more_blue_light.png
new file mode 100644
index 00000000..bd606f9a
Binary files /dev/null and b/app/src/main/assets/shared_images/more_blue_light.png differ
diff --git a/app/src/main/assets/shared_images/more_dark.png b/app/src/main/assets/shared_images/more_dark.png
new file mode 100644
index 00000000..c1c54dac
Binary files /dev/null and b/app/src/main/assets/shared_images/more_dark.png differ
diff --git a/app/src/main/assets/shared_images/more_light.png b/app/src/main/assets/shared_images/more_light.png
new file mode 100644
index 00000000..c5c2632d
Binary files /dev/null and b/app/src/main/assets/shared_images/more_light.png differ
diff --git a/app/src/main/assets/shared_images/question_answer_blue_dark.png b/app/src/main/assets/shared_images/question_answer_blue_dark.png
new file mode 100644
index 00000000..65752a38
Binary files /dev/null and b/app/src/main/assets/shared_images/question_answer_blue_dark.png differ
diff --git a/app/src/main/assets/shared_images/question_answer_blue_light.png b/app/src/main/assets/shared_images/question_answer_blue_light.png
new file mode 100644
index 00000000..4fa34b94
Binary files /dev/null and b/app/src/main/assets/shared_images/question_answer_blue_light.png differ
diff --git a/app/src/main/assets/shared_images/question_answer_dark.png b/app/src/main/assets/shared_images/question_answer_dark.png
new file mode 100644
index 00000000..ec214b68
Binary files /dev/null and b/app/src/main/assets/shared_images/question_answer_dark.png differ
diff --git a/app/src/main/assets/shared_images/question_answer_light.png b/app/src/main/assets/shared_images/question_answer_light.png
new file mode 100644
index 00000000..cff293a0
Binary files /dev/null and b/app/src/main/assets/shared_images/question_answer_light.png differ
diff --git a/app/src/main/assets/shared_images/refresh_dark.png b/app/src/main/assets/shared_images/refresh_dark.png
new file mode 100644
index 00000000..725b3107
Binary files /dev/null and b/app/src/main/assets/shared_images/refresh_dark.png differ
diff --git a/app/src/main/assets/shared_images/refresh_light.png b/app/src/main/assets/shared_images/refresh_light.png
new file mode 100644
index 00000000..a37fd60e
Binary files /dev/null and b/app/src/main/assets/shared_images/refresh_light.png differ
diff --git a/app/src/main/assets/shared_images/search_dark.png b/app/src/main/assets/shared_images/search_dark.png
new file mode 100644
index 00000000..871bc0c1
Binary files /dev/null and b/app/src/main/assets/shared_images/search_dark.png differ
diff --git a/app/src/main/assets/shared_images/search_light.png b/app/src/main/assets/shared_images/search_light.png
new file mode 100644
index 00000000..e49d7545
Binary files /dev/null and b/app/src/main/assets/shared_images/search_light.png differ
diff --git a/app/src/main/assets/shared_images/select_all_dark.png b/app/src/main/assets/shared_images/select_all_dark.png
new file mode 100644
index 00000000..2e58c4d0
Binary files /dev/null and b/app/src/main/assets/shared_images/select_all_dark.png differ
diff --git a/app/src/main/assets/shared_images/select_all_light.png b/app/src/main/assets/shared_images/select_all_light.png
new file mode 100644
index 00000000..92aab4e2
Binary files /dev/null and b/app/src/main/assets/shared_images/select_all_light.png differ
diff --git a/app/src/main/assets/shared_images/settings_dark.png b/app/src/main/assets/shared_images/settings_dark.png
new file mode 100644
index 00000000..29adb395
Binary files /dev/null and b/app/src/main/assets/shared_images/settings_dark.png differ
diff --git a/app/src/main/assets/shared_images/settings_light.png b/app/src/main/assets/shared_images/settings_light.png
new file mode 100644
index 00000000..ed308aa8
Binary files /dev/null and b/app/src/main/assets/shared_images/settings_light.png differ
diff --git a/app/src/main/assets/shared_images/smartphone_dark.png b/app/src/main/assets/shared_images/smartphone_dark.png
new file mode 100644
index 00000000..13a662a3
Binary files /dev/null and b/app/src/main/assets/shared_images/smartphone_dark.png differ
diff --git a/app/src/main/assets/shared_images/smartphone_light.png b/app/src/main/assets/shared_images/smartphone_light.png
new file mode 100644
index 00000000..9704accd
Binary files /dev/null and b/app/src/main/assets/shared_images/smartphone_light.png differ
diff --git a/app/src/main/assets/shared_images/style_dark.png b/app/src/main/assets/shared_images/style_dark.png
new file mode 100644
index 00000000..e00426b8
Binary files /dev/null and b/app/src/main/assets/shared_images/style_dark.png differ
diff --git a/app/src/main/assets/shared_images/style_light.png b/app/src/main/assets/shared_images/style_light.png
new file mode 100644
index 00000000..56b43c02
Binary files /dev/null and b/app/src/main/assets/shared_images/style_light.png differ
diff --git a/app/src/main/assets/shared_images/subtitles_blue_dark.png b/app/src/main/assets/shared_images/subtitles_blue_dark.png
new file mode 100644
index 00000000..6721719c
Binary files /dev/null and b/app/src/main/assets/shared_images/subtitles_blue_dark.png differ
diff --git a/app/src/main/assets/shared_images/subtitles_blue_light.png b/app/src/main/assets/shared_images/subtitles_blue_light.png
new file mode 100644
index 00000000..11c87bd3
Binary files /dev/null and b/app/src/main/assets/shared_images/subtitles_blue_light.png differ
diff --git a/app/src/main/assets/shared_images/subtitles_dark.png b/app/src/main/assets/shared_images/subtitles_dark.png
new file mode 100644
index 00000000..c6742b7e
Binary files /dev/null and b/app/src/main/assets/shared_images/subtitles_dark.png differ
diff --git a/app/src/main/assets/shared_images/subtitles_light.png b/app/src/main/assets/shared_images/subtitles_light.png
new file mode 100644
index 00000000..dc320b03
Binary files /dev/null and b/app/src/main/assets/shared_images/subtitles_light.png differ
diff --git a/app/src/main/assets/shared_images/text_fields_dark.png b/app/src/main/assets/shared_images/text_fields_dark.png
new file mode 100644
index 00000000..c6dd101a
Binary files /dev/null and b/app/src/main/assets/shared_images/text_fields_dark.png differ
diff --git a/app/src/main/assets/shared_images/text_fields_light.png b/app/src/main/assets/shared_images/text_fields_light.png
new file mode 100644
index 00000000..de558366
Binary files /dev/null and b/app/src/main/assets/shared_images/text_fields_light.png differ
diff --git a/app/src/main/assets/shared_images/thumbs_up_down_dark.png b/app/src/main/assets/shared_images/thumbs_up_down_dark.png
new file mode 100644
index 00000000..09d615d1
Binary files /dev/null and b/app/src/main/assets/shared_images/thumbs_up_down_dark.png differ
diff --git a/app/src/main/assets/shared_images/thumbs_up_down_light.png b/app/src/main/assets/shared_images/thumbs_up_down_light.png
new file mode 100644
index 00000000..6f1f7910
Binary files /dev/null and b/app/src/main/assets/shared_images/thumbs_up_down_light.png differ
diff --git a/app/src/main/assets/shared_images/vertical_align_bottom_dark.png b/app/src/main/assets/shared_images/vertical_align_bottom_dark.png
new file mode 100644
index 00000000..3a97e6ab
Binary files /dev/null and b/app/src/main/assets/shared_images/vertical_align_bottom_dark.png differ
diff --git a/app/src/main/assets/shared_images/vertical_align_bottom_light.png b/app/src/main/assets/shared_images/vertical_align_bottom_light.png
new file mode 100644
index 00000000..620a1201
Binary files /dev/null and b/app/src/main/assets/shared_images/vertical_align_bottom_light.png differ
diff --git a/app/src/main/assets/shared_images/vertical_align_top_dark.png b/app/src/main/assets/shared_images/vertical_align_top_dark.png
new file mode 100644
index 00000000..30ab1c5a
Binary files /dev/null and b/app/src/main/assets/shared_images/vertical_align_top_dark.png differ
diff --git a/app/src/main/assets/shared_images/vertical_align_top_light.png b/app/src/main/assets/shared_images/vertical_align_top_light.png
new file mode 100644
index 00000000..607c9e6a
Binary files /dev/null and b/app/src/main/assets/shared_images/vertical_align_top_light.png differ
diff --git a/app/src/main/assets/shared_images/visibility_off_dark.png b/app/src/main/assets/shared_images/visibility_off_dark.png
new file mode 100644
index 00000000..8c81329d
Binary files /dev/null and b/app/src/main/assets/shared_images/visibility_off_dark.png differ
diff --git a/app/src/main/assets/shared_images/visibility_off_light.png b/app/src/main/assets/shared_images/visibility_off_light.png
new file mode 100644
index 00000000..a4bcb6ac
Binary files /dev/null and b/app/src/main/assets/shared_images/visibility_off_light.png differ
diff --git a/app/src/main/assets/shared_images/vpn_lock_blue_dark.png b/app/src/main/assets/shared_images/vpn_lock_blue_dark.png
new file mode 100644
index 00000000..134a19bf
Binary files /dev/null and b/app/src/main/assets/shared_images/vpn_lock_blue_dark.png differ
diff --git a/app/src/main/assets/shared_images/vpn_lock_blue_light.png b/app/src/main/assets/shared_images/vpn_lock_blue_light.png
new file mode 100644
index 00000000..60c5c166
Binary files /dev/null and b/app/src/main/assets/shared_images/vpn_lock_blue_light.png differ
diff --git a/app/src/main/assets/shared_images/vpn_lock_dark.png b/app/src/main/assets/shared_images/vpn_lock_dark.png
new file mode 100644
index 00000000..32367357
Binary files /dev/null and b/app/src/main/assets/shared_images/vpn_lock_dark.png differ
diff --git a/app/src/main/assets/shared_images/vpn_lock_light.png b/app/src/main/assets/shared_images/vpn_lock_light.png
new file mode 100644
index 00000000..5adb9cfc
Binary files /dev/null and b/app/src/main/assets/shared_images/vpn_lock_light.png differ
diff --git a/app/src/main/assets/shared_images/web_blue_dark.png b/app/src/main/assets/shared_images/web_blue_dark.png
new file mode 100644
index 00000000..fe3939e4
Binary files /dev/null and b/app/src/main/assets/shared_images/web_blue_dark.png differ
diff --git a/app/src/main/assets/shared_images/web_blue_light.png b/app/src/main/assets/shared_images/web_blue_light.png
new file mode 100644
index 00000000..d3030bef
Binary files /dev/null and b/app/src/main/assets/shared_images/web_blue_light.png differ
diff --git a/app/src/main/assets/shared_images/web_dark.png b/app/src/main/assets/shared_images/web_dark.png
new file mode 100644
index 00000000..0ece4668
Binary files /dev/null and b/app/src/main/assets/shared_images/web_dark.png differ
diff --git a/app/src/main/assets/shared_images/web_light.png b/app/src/main/assets/shared_images/web_light.png
new file mode 100644
index 00000000..5ffe93a1
Binary files /dev/null and b/app/src/main/assets/shared_images/web_light.png differ
diff --git a/app/src/main/java/com/stoutner/privacybrowser/activities/AboutActivity.java b/app/src/main/java/com/stoutner/privacybrowser/activities/AboutActivity.java
index 0f6df3df..ca71d59c 100644
--- a/app/src/main/java/com/stoutner/privacybrowser/activities/AboutActivity.java
+++ b/app/src/main/java/com/stoutner/privacybrowser/activities/AboutActivity.java
@@ -1,5 +1,5 @@
/*
- * Copyright © 2016-2017 Soren Stoutner .
+ * Copyright © 2016-2018 Soren Stoutner .
*
* This file is part of Privacy Browser .
*
@@ -28,6 +28,7 @@ import android.support.v4.view.ViewPager;
import android.support.v7.app.ActionBar;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
+import android.view.WindowManager;
import com.stoutner.privacybrowser.fragments.AboutTabFragment;
import com.stoutner.privacybrowser.R;
@@ -35,6 +36,11 @@ import com.stoutner.privacybrowser.R;
public class AboutActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
+ // Disable screenshots if not allowed.
+ if (!MainWebViewActivity.allowScreenshots) {
+ getWindow().addFlags(WindowManager.LayoutParams.FLAG_SECURE);
+ }
+
// Set the theme.
if (MainWebViewActivity.darkTheme) {
setTheme(R.style.PrivacyBrowserDark_SecondaryActivity);
diff --git a/app/src/main/java/com/stoutner/privacybrowser/activities/BookmarksActivity.java b/app/src/main/java/com/stoutner/privacybrowser/activities/BookmarksActivity.java
index 2f6738cd..35a1eff6 100644
--- a/app/src/main/java/com/stoutner/privacybrowser/activities/BookmarksActivity.java
+++ b/app/src/main/java/com/stoutner/privacybrowser/activities/BookmarksActivity.java
@@ -1,5 +1,5 @@
/*
- * Copyright © 2016-2017 Soren Stoutner .
+ * Copyright © 2016-2018 Soren Stoutner .
*
* This file is part of Privacy Browser .
*
@@ -43,6 +43,7 @@ import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
+import android.view.WindowManager;
import android.widget.AbsListView;
import android.widget.CursorAdapter;
import android.widget.EditText;
@@ -103,6 +104,11 @@ public class BookmarksActivity extends AppCompatActivity implements CreateBookma
@Override
protected void onCreate(Bundle savedInstanceState) {
+ // Disable screenshots if not allowed.
+ if (!MainWebViewActivity.allowScreenshots) {
+ getWindow().addFlags(WindowManager.LayoutParams.FLAG_SECURE);
+ }
+
// Set the activity theme.
if (MainWebViewActivity.darkTheme) {
setTheme(R.style.PrivacyBrowserDark_SecondaryActivity);
diff --git a/app/src/main/java/com/stoutner/privacybrowser/activities/BookmarksDatabaseViewActivity.java b/app/src/main/java/com/stoutner/privacybrowser/activities/BookmarksDatabaseViewActivity.java
index a61391db..d66ae03c 100644
--- a/app/src/main/java/com/stoutner/privacybrowser/activities/BookmarksDatabaseViewActivity.java
+++ b/app/src/main/java/com/stoutner/privacybrowser/activities/BookmarksDatabaseViewActivity.java
@@ -1,5 +1,5 @@
/*
- * Copyright © 2016-2017 Soren Stoutner .
+ * Copyright © 2016-2018 Soren Stoutner .
*
* This file is part of Privacy Browser .
*
@@ -39,6 +39,7 @@ import android.support.v7.app.AppCompatDialogFragment;
import android.support.v7.widget.Toolbar;
import android.view.View;
import android.view.ViewGroup;
+import android.view.WindowManager;
import android.widget.AdapterView;
import android.widget.EditText;
import android.widget.ImageView;
@@ -79,6 +80,11 @@ public class BookmarksDatabaseViewActivity extends AppCompatActivity implements
@Override
public void onCreate(Bundle savedInstanceState) {
+ // Disable screenshots if not allowed.
+ if (!MainWebViewActivity.allowScreenshots) {
+ getWindow().addFlags(WindowManager.LayoutParams.FLAG_SECURE);
+ }
+
// Set the activity theme.
if (MainWebViewActivity.darkTheme) {
setTheme(R.style.PrivacyBrowserDark_SecondaryActivity);
diff --git a/app/src/main/java/com/stoutner/privacybrowser/activities/DomainsActivity.java b/app/src/main/java/com/stoutner/privacybrowser/activities/DomainsActivity.java
index 430bf90e..77cde1fa 100644
--- a/app/src/main/java/com/stoutner/privacybrowser/activities/DomainsActivity.java
+++ b/app/src/main/java/com/stoutner/privacybrowser/activities/DomainsActivity.java
@@ -39,6 +39,7 @@ import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
+import android.view.WindowManager;
import android.widget.CursorAdapter;
import android.widget.EditText;
import android.widget.ListView;
@@ -110,6 +111,11 @@ public class DomainsActivity extends AppCompatActivity implements AddDomainDialo
@Override
protected void onCreate(Bundle savedInstanceState) {
+ // Disable screenshots if not allowed.
+ if (!MainWebViewActivity.allowScreenshots) {
+ getWindow().addFlags(WindowManager.LayoutParams.FLAG_SECURE);
+ }
+
// Set the activity theme.
if (MainWebViewActivity.darkTheme) {
setTheme(R.style.PrivacyBrowserDark_SecondaryActivity);
diff --git a/app/src/main/java/com/stoutner/privacybrowser/activities/GuideActivity.java b/app/src/main/java/com/stoutner/privacybrowser/activities/GuideActivity.java
index 3e45bedc..856aa5d5 100644
--- a/app/src/main/java/com/stoutner/privacybrowser/activities/GuideActivity.java
+++ b/app/src/main/java/com/stoutner/privacybrowser/activities/GuideActivity.java
@@ -28,6 +28,7 @@ import android.support.v4.view.ViewPager;
import android.support.v7.app.ActionBar;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
+import android.view.WindowManager;
import com.stoutner.privacybrowser.fragments.GuideTabFragment;
import com.stoutner.privacybrowser.R;
@@ -35,6 +36,11 @@ import com.stoutner.privacybrowser.R;
public class GuideActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
+ // Disable screenshots if not allowed.
+ if (!MainWebViewActivity.allowScreenshots) {
+ getWindow().addFlags(WindowManager.LayoutParams.FLAG_SECURE);
+ }
+
// Set the theme.
if (MainWebViewActivity.darkTheme) {
setTheme(R.style.PrivacyBrowserDark_SecondaryActivity);
diff --git a/app/src/main/java/com/stoutner/privacybrowser/activities/MainWebViewActivity.java b/app/src/main/java/com/stoutner/privacybrowser/activities/MainWebViewActivity.java
index 02b70255..4905321b 100644
--- a/app/src/main/java/com/stoutner/privacybrowser/activities/MainWebViewActivity.java
+++ b/app/src/main/java/com/stoutner/privacybrowser/activities/MainWebViewActivity.java
@@ -149,7 +149,7 @@ import java.util.Set;
// AppCompatActivity from android.support.v7.app.AppCompatActivity must be used to have access to the SupportActionBar until the minimum API is >= 21.
public class MainWebViewActivity extends AppCompatActivity implements CreateBookmarkDialog.CreateBookmarkListener, CreateBookmarkFolderDialog.CreateBookmarkFolderListener,
- CreateHomeScreenShortcutDialog.CreateHomeScreenSchortcutListener, DownloadFileDialog.DownloadFileListener, DownloadImageDialog.DownloadImageListener,
+ CreateHomeScreenShortcutDialog.CreateHomeScreenShortcutListener, DownloadFileDialog.DownloadFileListener, DownloadImageDialog.DownloadImageListener,
DownloadLocationPermissionDialog.DownloadLocationPermissionDialogListener, EditBookmarkDialog.EditBookmarkListener, EditBookmarkFolderDialog.EditBookmarkFolderListener,
HttpAuthenticationDialog.HttpAuthenticationListener, NavigationView.OnNavigationItemSelectedListener, PinnedSslCertificateMismatchDialog.PinnedSslCertificateMismatchListener,
SslCertificateErrorDialog.SslCertificateErrorListener, UrlHistoryDialog.UrlHistoryListener {
@@ -160,6 +160,9 @@ public class MainWebViewActivity extends AppCompatActivity implements CreateBook
// and `OrbotProxyHelper`. It is also used in `onCreate()`, `applyAppSettings()`, `applyDomainSettings()`, and `updatePrivacyIcons()`.
public static boolean darkTheme;
+ // `allowScreenshots` is public static so it can be accessed from everywhere. It is also used in `onCreate()`.
+ public static boolean allowScreenshots;
+
// `favoriteIconBitmap` is public static so it can be accessed from `CreateHomeScreenShortcutDialog`, `BookmarksActivity`, `BookmarksDatabaseViewActivity`, `CreateBookmarkDialog`,
// `CreateBookmarkFolderDialog`, `EditBookmarkDialog`, `EditBookmarkFolderDialog`, `EditBookmarkDatabaseViewDialog`, and `ViewSslCertificateDialog`. It is also used in `onCreate()`,
// `onCreateBookmark()`, `onCreateBookmarkFolder()`, `onCreateHomeScreenShortcutCreate()`, `onSaveEditBookmark()`, `onSaveEditBookmarkFolder()`, and `applyDomainSettings()`.
@@ -429,11 +432,17 @@ public class MainWebViewActivity extends AppCompatActivity implements CreateBook
// Remove Android Studio's warning about deprecations. We have to use the deprecated `getColor()` until API >= 23.
@SuppressWarnings("deprecation")
protected void onCreate(Bundle savedInstanceState) {
- // Get a handle for `sharedPreferences`. `this` references the current context.
+ // Get a handle for the shared preferences.
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this);
- // Get the theme preference.
+ // Get the theme and screenshot preferences.
darkTheme = sharedPreferences.getBoolean("dark_theme", false);
+ allowScreenshots = sharedPreferences.getBoolean("allow_screenshots", false);
+
+ // Disable screenshots if not allowed.
+ if (!allowScreenshots) {
+ getWindow().addFlags(WindowManager.LayoutParams.FLAG_SECURE);
+ }
// Set the activity theme.
if (darkTheme) {
diff --git a/app/src/main/java/com/stoutner/privacybrowser/activities/SettingsActivity.java b/app/src/main/java/com/stoutner/privacybrowser/activities/SettingsActivity.java
index e1592a63..2e87c400 100644
--- a/app/src/main/java/com/stoutner/privacybrowser/activities/SettingsActivity.java
+++ b/app/src/main/java/com/stoutner/privacybrowser/activities/SettingsActivity.java
@@ -1,5 +1,5 @@
/*
- * Copyright © 2016-2017 Soren Stoutner .
+ * Copyright © 2016-2018 Soren Stoutner .
*
* This file is part of Privacy Browser .
*
@@ -22,6 +22,7 @@ package com.stoutner.privacybrowser.activities;
import android.os.Bundle;
import android.preference.PreferenceFragment;
import android.support.v7.app.AppCompatActivity;
+import android.view.WindowManager;
import com.stoutner.privacybrowser.R;
import com.stoutner.privacybrowser.fragments.SettingsFragment;
@@ -29,6 +30,11 @@ import com.stoutner.privacybrowser.fragments.SettingsFragment;
public class SettingsActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
+ // Disable screenshots if not allowed.
+ if (!MainWebViewActivity.allowScreenshots) {
+ getWindow().addFlags(WindowManager.LayoutParams.FLAG_SECURE);
+ }
+
// Set the activity theme.
if (MainWebViewActivity.darkTheme) {
setTheme(R.style.PrivacyBrowserSettingsDark);
diff --git a/app/src/main/java/com/stoutner/privacybrowser/activities/ViewSourceActivity.java b/app/src/main/java/com/stoutner/privacybrowser/activities/ViewSourceActivity.java
index 583e3c6a..9ed2642e 100644
--- a/app/src/main/java/com/stoutner/privacybrowser/activities/ViewSourceActivity.java
+++ b/app/src/main/java/com/stoutner/privacybrowser/activities/ViewSourceActivity.java
@@ -42,6 +42,7 @@ import android.view.KeyEvent;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
+import android.view.WindowManager;
import android.view.inputmethod.InputMethodManager;
import android.webkit.CookieManager;
import android.widget.EditText;
@@ -70,6 +71,11 @@ public class ViewSourceActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
+ // Disable screenshots if not allowed.
+ if (!MainWebViewActivity.allowScreenshots) {
+ getWindow().addFlags(WindowManager.LayoutParams.FLAG_SECURE);
+ }
+
// Set the theme.
if (MainWebViewActivity.darkTheme) {
setTheme(R.style.PrivacyBrowserDark);
diff --git a/app/src/main/java/com/stoutner/privacybrowser/dialogs/AboutViewSourceDialog.java b/app/src/main/java/com/stoutner/privacybrowser/dialogs/AboutViewSourceDialog.java
index 618406c2..7edc2db0 100644
--- a/app/src/main/java/com/stoutner/privacybrowser/dialogs/AboutViewSourceDialog.java
+++ b/app/src/main/java/com/stoutner/privacybrowser/dialogs/AboutViewSourceDialog.java
@@ -23,6 +23,7 @@ import android.app.AlertDialog;
import android.app.Dialog;
import android.app.DialogFragment;
import android.os.Bundle;
+import android.view.WindowManager;
import com.stoutner.privacybrowser.R;
import com.stoutner.privacybrowser.activities.MainWebViewActivity;
@@ -51,7 +52,19 @@ public class AboutViewSourceDialog extends DialogFragment {
// Set the text.
dialogBuilder.setMessage(R.string.about_view_source_message);
+ // Create an alert dialog from the alert dialog builder.
+ final AlertDialog alertDialog = dialogBuilder.create();
+
+ // Disable screenshots if not allowed.
+ if (!MainWebViewActivity.allowScreenshots) {
+ // Remove the warning below that `getWindow()` might be null.
+ assert alertDialog.getWindow() != null;
+
+ // Disable screenshots.
+ alertDialog.getWindow().addFlags(WindowManager.LayoutParams.FLAG_SECURE);
+ }
+
// `onCreateDialog` requires the return of an `AlertDialog`.
- return dialogBuilder.create();
+ return alertDialog;
}
}
diff --git a/app/src/main/java/com/stoutner/privacybrowser/dialogs/AddDomainDialog.java b/app/src/main/java/com/stoutner/privacybrowser/dialogs/AddDomainDialog.java
index 292ef453..c67c3aed 100644
--- a/app/src/main/java/com/stoutner/privacybrowser/dialogs/AddDomainDialog.java
+++ b/app/src/main/java/com/stoutner/privacybrowser/dialogs/AddDomainDialog.java
@@ -68,7 +68,7 @@ public class AddDomainDialog extends AppCompatDialogFragment {
@Override
@NonNull
public Dialog onCreateDialog(Bundle savedInstanceState) {
- // Use `AlertDialog.Builder` to create the `AlertDialog`.
+ // Use an alert dialog builder to create the alert dialog.
AlertDialog.Builder dialogBuilder;
// Set the style according to the theme.
@@ -101,9 +101,14 @@ public class AddDomainDialog extends AppCompatDialogFragment {
// Create an alert dialog from the builder.
final AlertDialog alertDialog = dialogBuilder.create();
- // Remove the warning below that `setSoftInputMode` might be null.
+ // Remove the warning below that `getWindow()` might be null.
assert alertDialog.getWindow() != null;
+ // Disable screenshots if not allowed.
+ if (!MainWebViewActivity.allowScreenshots) {
+ alertDialog.getWindow().addFlags(WindowManager.LayoutParams.FLAG_SECURE);
+ }
+
// Show the keyboard when the alert dialog is displayed on the screen.
alertDialog.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE);
diff --git a/app/src/main/java/com/stoutner/privacybrowser/dialogs/CreateBookmarkDialog.java b/app/src/main/java/com/stoutner/privacybrowser/dialogs/CreateBookmarkDialog.java
index b2966c14..caadd02a 100644
--- a/app/src/main/java/com/stoutner/privacybrowser/dialogs/CreateBookmarkDialog.java
+++ b/app/src/main/java/com/stoutner/privacybrowser/dialogs/CreateBookmarkDialog.java
@@ -1,5 +1,5 @@
/*
- * Copyright © 2016-2017 Soren Stoutner .
+ * Copyright © 2016-2018 Soren Stoutner .
*
* This file is part of Privacy Browser .
*
@@ -81,33 +81,34 @@ public class CreateBookmarkDialog extends AppCompatDialogFragment {
dialogBuilder.setTitle(R.string.create_bookmark);
dialogBuilder.setIcon(favoriteIconDrawable);
+ // Remove the warning below that `getLayoutInflater()` might be null.
+ assert getActivity() != null;
+
// Set the view. The parent view is `null` because it will be assigned by the `AlertDialog`.
dialogBuilder.setView(getActivity().getLayoutInflater().inflate(R.layout.create_bookmark_dialog, null));
// Set an `onClick()` listener for the negative button.
- dialogBuilder.setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() {
- @Override
- public void onClick(DialogInterface dialog, int which) {
- // Do nothing. The `AlertDialog` will close automatically.
- }
+ dialogBuilder.setNegativeButton(R.string.cancel, (DialogInterface dialog, int which) -> {
+ // Do nothing. The `AlertDialog` will close automatically.
});
// Set an `onClick()` listener for the positive button.
- dialogBuilder.setPositiveButton(R.string.create, new DialogInterface.OnClickListener() {
- @Override
- public void onClick(DialogInterface dialog, int which) {
- // Return the `DialogFragment` to the parent activity.
- createBookmarkListener.onCreateBookmark(CreateBookmarkDialog.this);
- }
+ dialogBuilder.setPositiveButton(R.string.create, (DialogInterface dialog, int which) -> {
+ // Return the `DialogFragment` to the parent activity.
+ createBookmarkListener.onCreateBookmark(CreateBookmarkDialog.this);
});
-
// Create an `AlertDialog` from the `AlertDialog.Builder`.
final AlertDialog alertDialog = dialogBuilder.create();
- // Remove the warning below that `setSoftInputMode` might produce `java.lang.NullPointerException`.
+ // Remove the warning below that `getWindow()` might be null.
assert alertDialog.getWindow() != null;
+ // Disable screenshots if not allowed.
+ if (!MainWebViewActivity.allowScreenshots) {
+ alertDialog.getWindow().addFlags(WindowManager.LayoutParams.FLAG_SECURE);
+ }
+
// Show the keyboard when the `AlertDialog` is displayed on the screen.
alertDialog.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE);
@@ -115,50 +116,46 @@ public class CreateBookmarkDialog extends AppCompatDialogFragment {
alertDialog.show();
// Get a handle for `create_bookmark_name_edittext`.
- EditText createBookmarkNameEditText = (EditText) alertDialog.findViewById(R.id.create_bookmark_name_edittext);
+ EditText createBookmarkNameEditText = alertDialog.findViewById(R.id.create_bookmark_name_edittext);
// Set the current `WebView` title as the text for `create_bookmark_name_edittext`.
createBookmarkNameEditText.setText(MainWebViewActivity.webViewTitle);
// Allow the `enter` key on the keyboard to create the bookmark from `create_bookmark_name_edittext`.
- createBookmarkNameEditText.setOnKeyListener(new View.OnKeyListener() {
- public boolean onKey(View view, int keyCode, KeyEvent event) {
- // If the event is a key-down on the `enter` key, select the `PositiveButton` `Create`.
- if ((keyCode == KeyEvent.KEYCODE_ENTER) && (event.getAction() == KeyEvent.ACTION_DOWN)) {
- // Trigger `createBookmarkListener` and return the `DialogFragment` to the parent activity.
- createBookmarkListener.onCreateBookmark(CreateBookmarkDialog.this);
-
- // Manually dismiss the `AlertDialog`.
- alertDialog.dismiss();
-
- // Consume the event.
- return true;
- } else { // If any other key was pressed, do not consume the event.
- return false;
- }
+ createBookmarkNameEditText.setOnKeyListener((View view, int keyCode, KeyEvent event) -> {
+ // If the event is a key-down on the `enter` key, select the `PositiveButton` `Create`.
+ if ((keyCode == KeyEvent.KEYCODE_ENTER) && (event.getAction() == KeyEvent.ACTION_DOWN)) {
+ // Trigger `createBookmarkListener` and return the `DialogFragment` to the parent activity.
+ createBookmarkListener.onCreateBookmark(CreateBookmarkDialog.this);
+
+ // Manually dismiss the `AlertDialog`.
+ alertDialog.dismiss();
+
+ // Consume the event.
+ return true;
+ } else { // If any other key was pressed, do not consume the event.
+ return false;
}
});
// Set the formattedUrlString as the initial text of `create_bookmark_url_edittext`.
- EditText createBookmarkUrlEditText = (EditText) alertDialog.findViewById(R.id.create_bookmark_url_edittext);
+ EditText createBookmarkUrlEditText = alertDialog.findViewById(R.id.create_bookmark_url_edittext);
createBookmarkUrlEditText.setText(MainWebViewActivity.formattedUrlString);
// Allow the `enter` key on the keyboard to create the bookmark from `create_bookmark_url_edittext`.
- createBookmarkUrlEditText.setOnKeyListener(new View.OnKeyListener() {
- public boolean onKey(View v, int keyCode, KeyEvent event) {
- // If the event is a key-down on the "enter" key, select the PositiveButton "Create".
- if ((keyCode == KeyEvent.KEYCODE_ENTER) && (event.getAction() == KeyEvent.ACTION_DOWN)) {
- // Trigger `createBookmarkListener` and return the DialogFragment to the parent activity.
- createBookmarkListener.onCreateBookmark(CreateBookmarkDialog.this);
-
- // Manually dismiss the `AlertDialog`.
- alertDialog.dismiss();
-
- // Consume the event.
- return true;
- } else { // If any other key was pressed, do not consume the event.
- return false;
- }
+ createBookmarkUrlEditText.setOnKeyListener((View v, int keyCode, KeyEvent event) -> {
+ // If the event is a key-down on the "enter" key, select the PositiveButton "Create".
+ if ((keyCode == KeyEvent.KEYCODE_ENTER) && (event.getAction() == KeyEvent.ACTION_DOWN)) {
+ // Trigger `createBookmarkListener` and return the DialogFragment to the parent activity.
+ createBookmarkListener.onCreateBookmark(CreateBookmarkDialog.this);
+
+ // Manually dismiss the `AlertDialog`.
+ alertDialog.dismiss();
+
+ // Consume the event.
+ return true;
+ } else { // If any other key was pressed, do not consume the event.
+ return false;
}
});
diff --git a/app/src/main/java/com/stoutner/privacybrowser/dialogs/CreateBookmarkFolderDialog.java b/app/src/main/java/com/stoutner/privacybrowser/dialogs/CreateBookmarkFolderDialog.java
index 7954478e..98fb9dcb 100644
--- a/app/src/main/java/com/stoutner/privacybrowser/dialogs/CreateBookmarkFolderDialog.java
+++ b/app/src/main/java/com/stoutner/privacybrowser/dialogs/CreateBookmarkFolderDialog.java
@@ -1,5 +1,5 @@
/*
- * Copyright © 2016-2017 Soren Stoutner .
+ * Copyright © 2016-2018 Soren Stoutner .
*
* This file is part of Privacy Browser .
*
@@ -67,7 +67,7 @@ public class CreateBookmarkFolderDialog extends AppCompatDialogFragment {
@Override
@NonNull
public Dialog onCreateDialog(Bundle savedInstanceState) {
- // Use `AlertDialog.Builder` to create the `AlertDialog`.
+ // Use an alert dialog builder to create the alert dialog.
AlertDialog.Builder dialogBuilder;
// Set the style according to the theme.
@@ -80,33 +80,35 @@ public class CreateBookmarkFolderDialog extends AppCompatDialogFragment {
// Set the title.
dialogBuilder.setTitle(R.string.create_folder);
+ // Remove the warning below that `getLayoutInflater()` might be null.
+ assert getActivity() != null;
+
// Set the view. The parent view is `null` because it will be assigned by the `AlertDialog`.
dialogBuilder.setView(getActivity().getLayoutInflater().inflate(R.layout.create_bookmark_folder_dialog, null));
// Set an `onClick()` listener for the negative button.
- dialogBuilder.setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() {
- @Override
- public void onClick(DialogInterface dialog, int which) {
- // Do nothing. The `AlertDialog` will close automatically.
- }
+ dialogBuilder.setNegativeButton(R.string.cancel, (DialogInterface dialog, int which) -> {
+ // Do nothing. The `AlertDialog` will close automatically.
});
// Set an `onClick()` listener fo the positive button.
- dialogBuilder.setPositiveButton(R.string.create, new DialogInterface.OnClickListener() {
- @Override
- public void onClick(DialogInterface dialog, int which) {
- // Return the `DialogFragment` to the parent activity on create.
- createBookmarkFolderListener.onCreateBookmarkFolder(CreateBookmarkFolderDialog.this);
- }
+ dialogBuilder.setPositiveButton(R.string.create, (DialogInterface dialog, int which) -> {
+ // Return the `DialogFragment` to the parent activity on create.
+ createBookmarkFolderListener.onCreateBookmarkFolder(CreateBookmarkFolderDialog.this);
});
// Create an `AlertDialog` from the `AlertDialog.Builder`.
final AlertDialog alertDialog = dialogBuilder.create();
- // Remove the warning below that `setSoftInputMode` might produce `java.lang.NullPointerException`.
+ // Remove the warning below that `getWindow()` might be null.
assert alertDialog.getWindow() != null;
+ // Disable screenshots if not allowed.
+ if (!MainWebViewActivity.allowScreenshots) {
+ alertDialog.getWindow().addFlags(WindowManager.LayoutParams.FLAG_SECURE);
+ }
+
// Show the keyboard when the `Dialog` is displayed on the screen.
alertDialog.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE);
@@ -115,13 +117,13 @@ public class CreateBookmarkFolderDialog extends AppCompatDialogFragment {
// Get handles for the views in the dialog.
final Button createButton = alertDialog.getButton(AlertDialog.BUTTON_POSITIVE);
- EditText folderNameEditText = (EditText) alertDialog.findViewById(R.id.create_folder_name_edittext);
- ImageView webPageIconImageView = (ImageView) alertDialog.findViewById(R.id.create_folder_web_page_icon);
+ EditText folderNameEditText = alertDialog.findViewById(R.id.create_folder_name_edittext);
+ ImageView webPageIconImageView = alertDialog.findViewById(R.id.create_folder_web_page_icon);
// Initially disable the create button.
createButton.setEnabled(false);
- // Initialize the database helper. The two `nulls` do not specify the database name or a `CursorFactory`. The `0` specifies a database version, but that is ignored and set instead using a constant in `BookmarksDatabaseHelper`.
+ // Initialize the database helper. The `0` specifies a database version, but that is ignored and set instead using a constant in `BookmarksDatabaseHelper`.
final BookmarksDatabaseHelper bookmarksDatabaseHelper = new BookmarksDatabaseHelper(getContext(), null, null, 0);
// Enable the create button if the new folder name is unique.
@@ -150,19 +152,17 @@ public class CreateBookmarkFolderDialog extends AppCompatDialogFragment {
});
// Allow the `enter` key on the keyboard to create the folder from `create_folder_name_edittext`.
- folderNameEditText.setOnKeyListener(new View.OnKeyListener() {
- public boolean onKey(View v, int keyCode, KeyEvent event) {
- // If the event is a key-down on the `enter` key, select the `PositiveButton` `Create`.
- if ((event.getAction() == KeyEvent.ACTION_DOWN) && (keyCode == KeyEvent.KEYCODE_ENTER) && createButton.isEnabled()) { // The enter key was pressed and the create button is enabled.
- // Trigger `createBookmarkFolderListener` and return the `DialogFragment` to the parent activity.
- createBookmarkFolderListener.onCreateBookmarkFolder(CreateBookmarkFolderDialog.this);
- // Manually dismiss the `AlertDialog`.
- alertDialog.dismiss();
- // Consume the event.
- return true;
- } else { // If any other key was pressed, or if the create button is currently disabled, do not consume the event.
- return false;
- }
+ folderNameEditText.setOnKeyListener((View v, int keyCode, KeyEvent event) -> {
+ // If the event is a key-down on the `enter` key, select the `PositiveButton` `Create`.
+ if ((event.getAction() == KeyEvent.ACTION_DOWN) && (keyCode == KeyEvent.KEYCODE_ENTER) && createButton.isEnabled()) { // The enter key was pressed and the create button is enabled.
+ // Trigger `createBookmarkFolderListener` and return the `DialogFragment` to the parent activity.
+ createBookmarkFolderListener.onCreateBookmarkFolder(CreateBookmarkFolderDialog.this);
+ // Manually dismiss the `AlertDialog`.
+ alertDialog.dismiss();
+ // Consume the event.
+ return true;
+ } else { // If any other key was pressed, or if the create button is currently disabled, do not consume the event.
+ return false;
}
});
diff --git a/app/src/main/java/com/stoutner/privacybrowser/dialogs/CreateHomeScreenShortcutDialog.java b/app/src/main/java/com/stoutner/privacybrowser/dialogs/CreateHomeScreenShortcutDialog.java
index 47418332..f3321280 100644
--- a/app/src/main/java/com/stoutner/privacybrowser/dialogs/CreateHomeScreenShortcutDialog.java
+++ b/app/src/main/java/com/stoutner/privacybrowser/dialogs/CreateHomeScreenShortcutDialog.java
@@ -1,5 +1,5 @@
/*
- * Copyright © 2015-2017 Soren Stoutner .
+ * Copyright © 2015-2018 Soren Stoutner .
*
* This file is part of Privacy Browser .
*
@@ -41,18 +41,18 @@ import com.stoutner.privacybrowser.R;
public class CreateHomeScreenShortcutDialog extends AppCompatDialogFragment {
// The public interface is used to send information back to the parent activity.
- public interface CreateHomeScreenSchortcutListener {
+ public interface CreateHomeScreenShortcutListener {
void onCreateHomeScreenShortcut(AppCompatDialogFragment dialogFragment);
}
//`createHomeScreenShortcutListener` is used in `onAttach()` and `onCreateDialog()`.
- private CreateHomeScreenSchortcutListener createHomeScreenShortcutListener;
+ private CreateHomeScreenShortcutListener createHomeScreenShortcutListener;
// Check to make sure that the parent activity implements the listener.
public void onAttach(Context context) {
super.onAttach(context);
try {
- createHomeScreenShortcutListener = (CreateHomeScreenSchortcutListener) context;
+ createHomeScreenShortcutListener = (CreateHomeScreenShortcutListener) context;
} catch(ClassCastException exception) {
throw new ClassCastException(context.toString() + " must implement CreateHomeScreenShortcutListener.");
}
@@ -63,6 +63,9 @@ public class CreateHomeScreenShortcutDialog extends AppCompatDialogFragment {
@Override
@NonNull
public Dialog onCreateDialog(Bundle savedInstanceState) {
+ // Remove the incorrect lint warning below that `getLayoutInflater()` might be null.
+ assert getActivity() != null;
+
// Get the activity's layout inflater.
LayoutInflater layoutInflater = getActivity().getLayoutInflater();
@@ -83,55 +86,52 @@ public class CreateHomeScreenShortcutDialog extends AppCompatDialogFragment {
dialogBuilder.setTitle(R.string.create_shortcut);
dialogBuilder.setIcon(favoriteIconDrawable);
- // Set the view. The parent view is `null` because it will be assigned by `AlertDialog`.
+ // 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));
- // Setup the negative button. Using `null` closes the dialog without doing anything else.
+ // Setup the negative button. Using null closes the dialog without doing anything else.
dialogBuilder.setNegativeButton(R.string.cancel, null);
// Set an `onClick` listener on the positive button.
- dialogBuilder.setPositiveButton(R.string.create, new DialogInterface.OnClickListener() {
- @Override
- public void onClick(DialogInterface dialog, int which) {
- createHomeScreenShortcutListener.onCreateHomeScreenShortcut(CreateHomeScreenShortcutDialog.this);
- }
- });
-
+ dialogBuilder.setPositiveButton(R.string.create, (DialogInterface dialog, int which) -> createHomeScreenShortcutListener.onCreateHomeScreenShortcut(CreateHomeScreenShortcutDialog.this));
- // Create an `AlertDialog` from the `AlertDialog.Builder`.
+ // Create an alert dialog from the alert dialog builder.
final AlertDialog alertDialog = dialogBuilder.create();
- // Remove the warning below that `setSoftInputMode` might produce `java.lang.NullPointerException`.
+ // Remove the warning below that `getWindow()` might be null.
assert alertDialog.getWindow() != null;
+ // Disable screenshots if not allowed.
+ if (!MainWebViewActivity.allowScreenshots) {
+ alertDialog.getWindow().addFlags(WindowManager.LayoutParams.FLAG_SECURE);
+ }
+
// Show the keyboard when the Dialog is displayed on the screen.
alertDialog.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE);
- // We need to show `alertDialog` before we can call `setOnKeyListener()` below.
+ // We need to show the alert dialog before we can call `setOnKeyListener()` below.
alertDialog.show();
// Get a handle for `shortcut_name_edittext`.
- EditText shortcutNameEditText = (EditText) alertDialog.findViewById(R.id.shortcut_name_edittext);
+ EditText shortcutNameEditText = alertDialog.findViewById(R.id.shortcut_name_edittext);
// Set the current `WebView` title as the text for `shortcutNameEditText`.
shortcutNameEditText.setText(MainWebViewActivity.webViewTitle);
// Allow the "enter" key on the keyboard to create the shortcut.
- shortcutNameEditText.setOnKeyListener(new View.OnKeyListener() {
- public boolean onKey(View v, int keyCode, KeyEvent event) {
- // If the event is a key-down on the "enter" button, select the PositiveButton "Create".
- if ((event.getAction() == KeyEvent.ACTION_DOWN) && (keyCode == KeyEvent.KEYCODE_ENTER)) {
- // Trigger the create listener.
- createHomeScreenShortcutListener.onCreateHomeScreenShortcut(CreateHomeScreenShortcutDialog.this);
-
- // Manually dismiss `alertDialog`.
- alertDialog.dismiss();
-
- // Consume the event.
- return true;
- } else { // If any other key was pressed, do not consume the event.
- return false;
- }
+ shortcutNameEditText.setOnKeyListener((View v, int keyCode, KeyEvent event) -> {
+ // If the event is a key-down on the "enter" button, select the PositiveButton "Create".
+ if ((event.getAction() == KeyEvent.ACTION_DOWN) && (keyCode == KeyEvent.KEYCODE_ENTER)) {
+ // Trigger the create listener.
+ createHomeScreenShortcutListener.onCreateHomeScreenShortcut(CreateHomeScreenShortcutDialog.this);
+
+ // Manually dismiss `alertDialog`.
+ alertDialog.dismiss();
+
+ // Consume the event.
+ return true;
+ } else { // If any other key was pressed, do not consume the event.
+ return false;
}
});
diff --git a/app/src/main/java/com/stoutner/privacybrowser/dialogs/DownloadFileDialog.java b/app/src/main/java/com/stoutner/privacybrowser/dialogs/DownloadFileDialog.java
index cbf08390..5ff4a851 100644
--- a/app/src/main/java/com/stoutner/privacybrowser/dialogs/DownloadFileDialog.java
+++ b/app/src/main/java/com/stoutner/privacybrowser/dialogs/DownloadFileDialog.java
@@ -130,7 +130,7 @@ public class DownloadFileDialog extends AppCompatDialogFragment {
// Get the activity's layout inflater.
LayoutInflater layoutInflater = getActivity().getLayoutInflater();
- // Use `AlertDialog.Builder` to create the `AlertDialog`.
+ // Use an alert dialog builder to create the alert dialog.
AlertDialog.Builder dialogBuilder;
// Set the style according to the theme.
@@ -146,24 +146,29 @@ public class DownloadFileDialog extends AppCompatDialogFragment {
// Set the view. The parent view is `null` because it will be assigned by `AlertDialog`.
dialogBuilder.setView(layoutInflater.inflate(R.layout.download_file_dialog, null));
- // Set an `onClick()` listener on the negative button.
+ // Set an listener on the negative button.
dialogBuilder.setNegativeButton(R.string.cancel, (DialogInterface dialog, int which) -> {
// Do nothing if `Cancel` is clicked. The `Dialog` will automatically close.
});
- // Set an `onClick()` listener on the positive button
+ // Set an listener on the positive button
dialogBuilder.setPositiveButton(R.string.download, (DialogInterface dialog, int which) -> {
// trigger `onDownloadFile()` and return the `DialogFragment` and the download URL to the parent activity.
downloadFileListener.onDownloadFile(DownloadFileDialog.this, downloadUrl);
});
- // Create an `AlertDialog` from the `AlertDialog.Builder`.
+ // Create an alert dialog from the alert dialog builder`.
final AlertDialog alertDialog = dialogBuilder.create();
- // Remove the warning below that `setSoftInputMode` might produce `java.lang.NullPointerException`.
+ // Remove the warning below that `getWindow()` might be null.
assert alertDialog.getWindow() != null;
- // Show the keyboard when `alertDialog` is displayed on the screen.
+ // Disable screenshots if not allowed.
+ if (!MainWebViewActivity.allowScreenshots) {
+ alertDialog.getWindow().addFlags(WindowManager.LayoutParams.FLAG_SECURE);
+ }
+
+ // Show the keyboard when alert dialog is displayed on the screen.
alertDialog.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE);
// We need to show `alertDialog` before we can modify the contents.
diff --git a/app/src/main/java/com/stoutner/privacybrowser/dialogs/DownloadImageDialog.java b/app/src/main/java/com/stoutner/privacybrowser/dialogs/DownloadImageDialog.java
index 4568607d..2221bfe9 100644
--- a/app/src/main/java/com/stoutner/privacybrowser/dialogs/DownloadImageDialog.java
+++ b/app/src/main/java/com/stoutner/privacybrowser/dialogs/DownloadImageDialog.java
@@ -108,7 +108,7 @@ public class DownloadImageDialog extends AppCompatDialogFragment {
// Get the activity's layout inflater.
LayoutInflater layoutInflater = getActivity().getLayoutInflater();
- // Use `AlertDialog.Builder` to create the `AlertDialog`.
+ // Use and alert dialog builder to create the alert dialog.
AlertDialog.Builder dialogBuilder;
// Set the style according to the theme.
@@ -124,28 +124,33 @@ public class DownloadImageDialog extends AppCompatDialogFragment {
// Set the view. The parent view is `null` because it will be assigned by `AlertDialog`.
dialogBuilder.setView(layoutInflater.inflate(R.layout.download_image_dialog, null));
- // Set an `onClick()` listener on the negative button.
+ // Set an listener on the negative button.
dialogBuilder.setNegativeButton(R.string.cancel, (DialogInterface dialog, int which) -> {
// Do nothing if `Cancel` is clicked.
});
- // Set an `onClick()` listener on the positive button
+ // Set an listener on the positive button
dialogBuilder.setPositiveButton(R.string.download, (DialogInterface dialog, int which) -> {
// trigger `onDownloadFile()` and return the `DialogFragment` and the download URL to the parent activity.
downloadImageListener.onDownloadImage(DownloadImageDialog.this, imageUrl);
});
- // Create an `AlertDialog` from the `AlertDialog.Builder`.
+ // Create an alert dialog from the alert dialog builder.
final AlertDialog alertDialog = dialogBuilder.create();
- // Remove the warning below that `setSoftInputMode` might produce `java.lang.NullPointerException`.
+ // Remove the warning below that `getWindow()` might be null.
assert alertDialog.getWindow() != null;
+ // Disable screenshots if not allowed.
+ if (!MainWebViewActivity.allowScreenshots) {
+ alertDialog.getWindow().addFlags(WindowManager.LayoutParams.FLAG_SECURE);
+ }
+
// Show the keyboard when `alertDialog` is displayed on the screen.
alertDialog.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE);
- // We need to show `alertDialog` before we can modify the contents.
+ // The alert dialog must be shown before the contents can be modified.
alertDialog.show();
// Set the text for `downloadImageNameTextView`.
diff --git a/app/src/main/java/com/stoutner/privacybrowser/dialogs/DownloadLocationPermissionDialog.java b/app/src/main/java/com/stoutner/privacybrowser/dialogs/DownloadLocationPermissionDialog.java
index 0ad43d1c..57b3889d 100644
--- a/app/src/main/java/com/stoutner/privacybrowser/dialogs/DownloadLocationPermissionDialog.java
+++ b/app/src/main/java/com/stoutner/privacybrowser/dialogs/DownloadLocationPermissionDialog.java
@@ -25,6 +25,7 @@ import android.app.DialogFragment;
import android.content.Context;
import android.content.DialogInterface;
import android.os.Bundle;
+import android.view.WindowManager;
import com.stoutner.privacybrowser.R;
import com.stoutner.privacybrowser.activities.MainWebViewActivity;
@@ -102,7 +103,19 @@ public class DownloadLocationPermissionDialog extends DialogFragment {
// Set the text.
dialogBuilder.setMessage(R.string.download_location_message);
+ // Create an alert dialog from the alert dialog builder.
+ final AlertDialog alertDialog = dialogBuilder.create();
+
+ // Disable screenshots if not allowed.
+ if (!MainWebViewActivity.allowScreenshots) {
+ // Remove the warning below that `getWindow()` might be null.
+ assert alertDialog.getWindow() != null;
+
+ // Disable screenshots.
+ alertDialog.getWindow().addFlags(WindowManager.LayoutParams.FLAG_SECURE);
+ }
+
// `onCreateDialog` requires the return of an `AlertDialog`.
- return dialogBuilder.create();
+ return alertDialog;
}
}
\ No newline at end of file
diff --git a/app/src/main/java/com/stoutner/privacybrowser/dialogs/EditBookmarkDatabaseViewDialog.java b/app/src/main/java/com/stoutner/privacybrowser/dialogs/EditBookmarkDatabaseViewDialog.java
index 712e216f..028db1b7 100644
--- a/app/src/main/java/com/stoutner/privacybrowser/dialogs/EditBookmarkDatabaseViewDialog.java
+++ b/app/src/main/java/com/stoutner/privacybrowser/dialogs/EditBookmarkDatabaseViewDialog.java
@@ -124,11 +124,11 @@ public class EditBookmarkDatabaseViewDialog extends AppCompatDialogFragment {
// Initialize the database helper. The two `nulls` do not specify the database name or a `CursorFactory`. The `0` specifies a database version, but that is ignored and set instead using a constant in `BookmarksDatabaseHelper`.
BookmarksDatabaseHelper bookmarksDatabaseHelper = new BookmarksDatabaseHelper(getContext(), null, null, 0);
- // Get a `Cursor` with the selected bookmark and move it to the first position.
+ // Get a cursor with the selected bookmark and move it to the first position.
Cursor bookmarkCursor = bookmarksDatabaseHelper.getBookmarkCursor(bookmarkDatabaseId);
bookmarkCursor.moveToFirst();
- // Use `AlertDialog.Builder` to create the `AlertDialog`.
+ // Use an alert dialog builder to create the alert dialog.
AlertDialog.Builder dialogBuilder;
// Set the style according to the theme.
@@ -147,27 +147,32 @@ public class EditBookmarkDatabaseViewDialog extends AppCompatDialogFragment {
// Set the view. The parent view is `null` because it will be assigned by `AlertDialog`.
dialogBuilder.setView(getActivity().getLayoutInflater().inflate(R.layout.edit_bookmark_databaseview_dialog, null));
- // Set an `onClick()` listener for the negative button.
+ // Set the listener for the negative button.
dialogBuilder.setNegativeButton(R.string.cancel, (DialogInterface dialog, int which) -> {
// Do nothing. The `AlertDialog` will close automatically.
});
- // Set the `onClick()` listener fo the positive button.
+ // Set the listener fo the positive button.
dialogBuilder.setPositiveButton(R.string.save, (DialogInterface dialog, int which) -> {
// Return the `DialogFragment` to the parent activity on save.
editBookmarkDatabaseViewListener.onSaveBookmark(EditBookmarkDatabaseViewDialog.this, bookmarkDatabaseId);
});
- // Create an `AlertDialog` from the `AlertDialog.Builder`.
+ // Create an alert dialog from the alert dialog builder`.
final AlertDialog alertDialog = dialogBuilder.create();
- // Remove the warning below that `setSoftInputMode` might produce `java.lang.NullPointerException`.
+ // Remove the warning below that `getWindow()` might be null.
assert alertDialog.getWindow() != null;
+ // Disable screenshots if not allowed.
+ if (!MainWebViewActivity.allowScreenshots) {
+ alertDialog.getWindow().addFlags(WindowManager.LayoutParams.FLAG_SECURE);
+ }
+
// Set the keyboard to be hidden when the `AlertDialog` is first shown. If this is not set, the `AlertDialog` will not shrink when the keyboard is displayed.
alertDialog.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);
- // The `AlertDialog` must be shown before items in the layout can be modified.
+ // The alert dialog must be shown before items in the layout can be modified.
alertDialog.show();
// Get handles for the layout items.
diff --git a/app/src/main/java/com/stoutner/privacybrowser/dialogs/EditBookmarkDialog.java b/app/src/main/java/com/stoutner/privacybrowser/dialogs/EditBookmarkDialog.java
index e37dacdf..492c113a 100644
--- a/app/src/main/java/com/stoutner/privacybrowser/dialogs/EditBookmarkDialog.java
+++ b/app/src/main/java/com/stoutner/privacybrowser/dialogs/EditBookmarkDialog.java
@@ -1,5 +1,5 @@
/*
- * Copyright © 2016-2017 Soren Stoutner .
+ * Copyright © 2016-2018 Soren Stoutner .
*
* This file is part of Privacy Browser .
*
@@ -95,6 +95,9 @@ public class EditBookmarkDialog extends AppCompatDialogFragment {
// Run the default commands.
super.onCreate(savedInstanceState);
+ // Remove the incorrect lint warning that `getInt()` might be null.
+ assert getArguments() != null;
+
// Store the bookmark database ID in the class variable.
selectedBookmarkDatabaseId = getArguments().getInt("Database ID");
}
@@ -111,7 +114,7 @@ public class EditBookmarkDialog extends AppCompatDialogFragment {
Cursor bookmarkCursor = bookmarksDatabaseHelper.getBookmarkCursor(selectedBookmarkDatabaseId);
bookmarkCursor.moveToFirst();
- // Use `AlertDialog.Builder` to create the `AlertDialog`.
+ // Use an alert dialog builder to create the alert dialog.
AlertDialog.Builder dialogBuilder;
// Set the style according to the theme.
@@ -124,30 +127,38 @@ public class EditBookmarkDialog extends AppCompatDialogFragment {
// Set the title.
dialogBuilder.setTitle(R.string.edit_bookmark);
+ // Remove the incorrect lint warning that `getActivity()` might be null.
+ assert getActivity() != null;
+
// Set the view. The parent view is `null` because it will be assigned by `AlertDialog`.
dialogBuilder.setView(getActivity().getLayoutInflater().inflate(R.layout.edit_bookmark_dialog, null));
- // Set an `onClick()` listener for the negative button.
+ // Set the listener for the negative button.
dialogBuilder.setNegativeButton(R.string.cancel, (DialogInterface dialog, int which) -> {
// Do nothing. The `AlertDialog` will close automatically.
});
- // Set the `onClick()` listener fo the positive button.
+ // Set the listener fo the positive button.
dialogBuilder.setPositiveButton(R.string.save, (DialogInterface dialog, int which) -> {
// Return the `DialogFragment` to the parent activity on save.
editBookmarkListener.onSaveBookmark(EditBookmarkDialog.this, selectedBookmarkDatabaseId);
});
- // Create an `AlertDialog` from the `AlertDialog.Builder`.
+ // Create an alert dialog from the alert dialog builder.
final AlertDialog alertDialog = dialogBuilder.create();
- // Remove the warning below that `setSoftInputMode` might produce `java.lang.NullPointerException`.
+ // Remove the warning below that `getWindow()` might be null.
assert alertDialog.getWindow() != null;
- // Show the keyboard when `alertDialog` is displayed on the screen.
+ // Disable screenshots if not allowed.
+ if (!MainWebViewActivity.allowScreenshots) {
+ alertDialog.getWindow().addFlags(WindowManager.LayoutParams.FLAG_SECURE);
+ }
+
+ // Show the keyboard when the alert dialog is displayed on the screen.
alertDialog.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE);
- // The `AlertDialog` must be shown before items in the layout can be modified.
+ // The alert dialog must be shown before items in the layout can be modified.
alertDialog.show();
// Get handles for the layout items.
diff --git a/app/src/main/java/com/stoutner/privacybrowser/dialogs/EditBookmarkFolderDatabaseViewDialog.java b/app/src/main/java/com/stoutner/privacybrowser/dialogs/EditBookmarkFolderDatabaseViewDialog.java
index 41bfbd05..af26e0b9 100644
--- a/app/src/main/java/com/stoutner/privacybrowser/dialogs/EditBookmarkFolderDatabaseViewDialog.java
+++ b/app/src/main/java/com/stoutner/privacybrowser/dialogs/EditBookmarkFolderDatabaseViewDialog.java
@@ -1,5 +1,5 @@
/*
- * Copyright © 2016-2017 Soren Stoutner .
+ * Copyright © 2016-2018 Soren Stoutner .
*
* This file is part of Privacy Browser .
*
@@ -109,6 +109,9 @@ public class EditBookmarkFolderDatabaseViewDialog extends AppCompatDialogFragmen
// Run the default commands.
super.onCreate(savedInstanceState);
+ // Remove the incorrect lint warning that `getInt()` might be null.
+ assert getArguments() != null;
+
// Store the bookmark database ID in the class variable.
folderDatabaseId = getArguments().getInt("Database ID");
}
@@ -125,7 +128,7 @@ public class EditBookmarkFolderDatabaseViewDialog extends AppCompatDialogFragmen
Cursor folderCursor = bookmarksDatabaseHelper.getBookmarkCursor(folderDatabaseId);
folderCursor.moveToFirst();
- // Use `AlertDialog.Builder` to create the `AlertDialog`.
+ // Use an alert dialog builder to create the alert dialog.
AlertDialog.Builder dialogBuilder;
// Set the style according to the theme.
@@ -138,30 +141,38 @@ public class EditBookmarkFolderDatabaseViewDialog extends AppCompatDialogFragmen
// Set the title.
dialogBuilder.setTitle(R.string.edit_folder);
+ // Remove the incorrect lint warning that `getActivity()` might be null.
+ assert getActivity() != null;
+
// Set the view. The parent view is `null` because it will be assigned by `AlertDialog`.
dialogBuilder.setView(getActivity().getLayoutInflater().inflate(R.layout.edit_bookmark_folder_databaseview_dialog, null));
- // Set an `onClick()` listener for the negative button.
+ // Set the listener for the negative button.
dialogBuilder.setNegativeButton(R.string.cancel, (DialogInterface dialog, int which) -> {
// Do nothing. The `AlertDialog` will close automatically.
});
- // Set the `onClick()` listener fo the positive button.
+ // Set the listener fo the positive button.
dialogBuilder.setPositiveButton(R.string.save, (DialogInterface dialog, int which) -> {
// Return the `DialogFragment` to the parent activity on save.
editBookmarkFolderDatabaseViewListener.onSaveBookmarkFolder(EditBookmarkFolderDatabaseViewDialog.this, folderDatabaseId);
});
- // Create an `AlertDialog` from the `AlertDialog.Builder`.
+ // Create an alert dialog from the alert dialog builder.
final AlertDialog alertDialog = dialogBuilder.create();
- // Remove the warning below that `setSoftInputMode` might produce `java.lang.NullPointerException`.
+ // Remove the warning below that `getWindow()` might be null.
assert alertDialog.getWindow() != null;
+ // Disable screenshots if not allowed.
+ if (!MainWebViewActivity.allowScreenshots) {
+ alertDialog.getWindow().addFlags(WindowManager.LayoutParams.FLAG_SECURE);
+ }
+
// Set the keyboard to be hidden when the `AlertDialog` is first shown. If this is not set, the `AlertDialog` will not shrink when the keyboard is displayed.
alertDialog.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);
- // The `AlertDialog` must be shown before items in the layout can be modified.
+ // The alert dialog must be shown before items in the layout can be modified.
alertDialog.show();
// Get handles for the layout items.
@@ -215,6 +226,9 @@ public class EditBookmarkFolderDatabaseViewDialog extends AppCompatDialogFragmen
// Combine `matrixCursor` and `foldersCursor`.
MergeCursor foldersMergeCursor = new MergeCursor(new Cursor[]{matrixCursor, foldersCursor});
+ // Remove the incorrect lint warning that `getContext()` might be null.
+ assert getContext() != null;
+
// Create a `ResourceCursorAdapter` for the `Spinner`. `0` specifies no flags.;
ResourceCursorAdapter foldersCursorAdapter = new ResourceCursorAdapter(getContext(), R.layout.edit_bookmark_databaseview_spinner_item, foldersMergeCursor, 0) {
@Override
diff --git a/app/src/main/java/com/stoutner/privacybrowser/dialogs/EditBookmarkFolderDialog.java b/app/src/main/java/com/stoutner/privacybrowser/dialogs/EditBookmarkFolderDialog.java
index ab3e690d..8f41bfc7 100644
--- a/app/src/main/java/com/stoutner/privacybrowser/dialogs/EditBookmarkFolderDialog.java
+++ b/app/src/main/java/com/stoutner/privacybrowser/dialogs/EditBookmarkFolderDialog.java
@@ -1,5 +1,5 @@
/*
- * Copyright © 2016-2017 Soren Stoutner .
+ * Copyright © 2016-2018 Soren Stoutner .
*
* This file is part of Privacy Browser .
*
@@ -89,6 +89,9 @@ public class EditBookmarkFolderDialog extends AppCompatDialogFragment {
// Run the default commands.
super.onCreate(savedInstanceState);
+ // Remove the incorrect lint warning that `getInt()` might be null.
+ assert getArguments() != null;
+
// Store the folder database ID in the class variable.
selectedFolderDatabaseId = getArguments().getInt("Database ID");
}
@@ -105,7 +108,7 @@ public class EditBookmarkFolderDialog extends AppCompatDialogFragment {
Cursor folderCursor = bookmarksDatabaseHelper.getBookmarkCursor(selectedFolderDatabaseId);
folderCursor.moveToFirst();
- // Use `AlertDialog.Builder` to create the `AlertDialog`.
+ // Use an alert dialog builder to create the alert dialog.
AlertDialog.Builder dialogBuilder;
// Set the style according to the theme.
@@ -118,30 +121,38 @@ public class EditBookmarkFolderDialog extends AppCompatDialogFragment {
// Set the title.
dialogBuilder.setTitle(R.string.edit_folder);
+ // Remove the incorrect lint warning that `getActivity()` might be null.
+ assert getActivity() != null;
+
// Set the view. The parent view is `null` because it will be assigned by `AlertDialog`.
dialogBuilder.setView(getActivity().getLayoutInflater().inflate(R.layout.edit_bookmark_folder_dialog, null));
- // Set an `onClick()` listener for the negative button.
+ // Set the listener for the negative button.
dialogBuilder.setNegativeButton(R.string.cancel, (DialogInterface dialog, int which) -> {
// Do nothing. The `AlertDialog` will close automatically.
});
- // Set the `onClick()` listener fo the positive button.
+ // Set the listener fo the positive button.
dialogBuilder.setPositiveButton(R.string.save, (DialogInterface dialog, int which) -> {
// Return the `DialogFragment` to the parent activity on save.
editBookmarkFolderListener.onSaveBookmarkFolder(EditBookmarkFolderDialog.this, selectedFolderDatabaseId);
});
- // Create an `AlertDialog` from the `AlertDialog.Builder`.
+ // Create an alert dialog from the alert dialog builder.
final AlertDialog alertDialog = dialogBuilder.create();
- // Remove the warning below that `setSoftInputMode` might produce `java.lang.NullPointerException`.
+ // Remove the warning below that `getWindow()` might be null.
assert alertDialog.getWindow() != null;
- // Show the keyboard when the `Dialog` is displayed on the screen.
+ // Disable screenshots if not allowed.
+ if (!MainWebViewActivity.allowScreenshots) {
+ alertDialog.getWindow().addFlags(WindowManager.LayoutParams.FLAG_SECURE);
+ }
+
+ // Show the keyboard when the dialog is displayed on the screen.
alertDialog.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE);
- // The `AlertDialog` must be shown before items in the layout can be modified.
+ // The alert dialog must be shown before items in the layout can be modified.
alertDialog.show();
// Get handles for layout items in the `AlertDialog`.
diff --git a/app/src/main/java/com/stoutner/privacybrowser/dialogs/HttpAuthenticationDialog.java b/app/src/main/java/com/stoutner/privacybrowser/dialogs/HttpAuthenticationDialog.java
index 993c8c3d..6110ed54 100644
--- a/app/src/main/java/com/stoutner/privacybrowser/dialogs/HttpAuthenticationDialog.java
+++ b/app/src/main/java/com/stoutner/privacybrowser/dialogs/HttpAuthenticationDialog.java
@@ -1,5 +1,5 @@
/*
- * Copyright © 2017 Soren Stoutner .
+ * Copyright © 2017-2018 Soren Stoutner .
*
* This file is part of Privacy Browser .
*
@@ -63,6 +63,9 @@ public class HttpAuthenticationDialog extends AppCompatDialogFragment{
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
+ // Remove the incorrect lint warnings that `getString()` might be null.
+ assert getArguments() != null;
+
// Save the host and realm in class variables.
httpAuthHost = getArguments().getString("Host");
httpAuthRealm = getArguments().getString("Realm");
@@ -94,10 +97,13 @@ public class HttpAuthenticationDialog extends AppCompatDialogFragment{
@Override
@NonNull
public Dialog onCreateDialog(Bundle savedInstanceState) {
+ // Remove the incorrect lint warning that `getActivity()` might be null.
+ assert getActivity() != null;
+
// Get the activity's layout inflater.
LayoutInflater layoutInflater = getActivity().getLayoutInflater();
- // Use `AlertDialog.Builder` to create the `AlertDialog`.
+ // Use an alert dialog builder to create the alert dialog.
AlertDialog.Builder dialogBuilder;
// Set the style according to the theme.
@@ -122,40 +128,39 @@ public class HttpAuthenticationDialog extends AppCompatDialogFragment{
dialogBuilder.setView(layoutInflater.inflate(R.layout.http_authentication_dialog, null));
// Setup the negative button.
- dialogBuilder.setNegativeButton(R.string.close, new DialogInterface.OnClickListener() {
- @Override
- public void onClick(DialogInterface dialog, int which) {
- // Call `onHttpAuthenticationCancel()` and return the `DialogFragment` to the parent activity.
- httpAuthenticationListener.onHttpAuthenticationCancel();
- }
+ dialogBuilder.setNegativeButton(R.string.close, (DialogInterface dialog, int which) -> {
+ // Call `onHttpAuthenticationCancel()` and return the `DialogFragment` to the parent activity.
+ httpAuthenticationListener.onHttpAuthenticationCancel();
});
// Setup the positive button.
- dialogBuilder.setPositiveButton(R.string.proceed, new DialogInterface.OnClickListener() {
- @Override
- public void onClick(DialogInterface dialog, int which) {
- // Call `onHttpAuthenticationProceed()` and return the `DialogFragment` to the parent activity.
- httpAuthenticationListener.onHttpAuthenticationProceed(HttpAuthenticationDialog.this);
- }
+ dialogBuilder.setPositiveButton(R.string.proceed, (DialogInterface dialog, int which) -> {
+ // Call `onHttpAuthenticationProceed()` and return the `DialogFragment` to the parent activity.
+ httpAuthenticationListener.onHttpAuthenticationProceed(HttpAuthenticationDialog.this);
});
- // Create an `AlertDialog` from the `AlertDialog.Builder`.
+ // Create an alert dialog from the alert dialog builder.
final AlertDialog alertDialog = dialogBuilder.create();
- // Remove the warning below that `setSoftInputMode` might produce `java.lang.NullPointerException`.
+ // Remove the warning below that `getWindow()` might be null.
assert alertDialog.getWindow() != null;
+ // Disable screenshots if not allowed.
+ if (!MainWebViewActivity.allowScreenshots) {
+ alertDialog.getWindow().addFlags(WindowManager.LayoutParams.FLAG_SECURE);
+ }
+
// Show the keyboard when the `AlertDialog` is displayed on the screen.
alertDialog.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE);
- // The `AlertDialog` needs to be shown before `setOnKeyListener()` can be called.
+ // The alert dialog needs to be shown before the contents can be modified.
alertDialog.show();
// Get handles for the views in `alertDialog`.
- TextView realmTextView = (TextView) alertDialog.findViewById(R.id.http_authentication_realm);
- TextView hostTextView = (TextView) alertDialog.findViewById(R.id.http_authentication_host);
- EditText usernameEditText = (EditText) alertDialog.findViewById(R.id.http_authentication_username);
- EditText passwordEditText = (EditText) alertDialog.findViewById(R.id.http_authentication_password);
+ TextView realmTextView = alertDialog.findViewById(R.id.http_authentication_realm);
+ TextView hostTextView = alertDialog.findViewById(R.id.http_authentication_host);
+ EditText usernameEditText = alertDialog.findViewById(R.id.http_authentication_username);
+ EditText passwordEditText = alertDialog.findViewById(R.id.http_authentication_password);
// Set the realm text.
realmTextView.setText(httpAuthRealm);
@@ -192,40 +197,36 @@ public class HttpAuthenticationDialog extends AppCompatDialogFragment{
hostTextView.setText(hostStringBuilder);
// Allow the `enter` key on the keyboard to trigger `onHttpAuthenticationProceed` from `usernameEditText`.
- usernameEditText.setOnKeyListener(new View.OnKeyListener() {
- public boolean onKey(View view, int keyCode, KeyEvent event) {
- // If the event is a key-down on the `enter` key, call `onHttpAuthenticationProceed()`.
- if ((keyCode == KeyEvent.KEYCODE_ENTER) && (event.getAction() == KeyEvent.ACTION_DOWN)) {
- // Trigger `onHttpAuthenticationProceed` and return the `DialogFragment` to the parent activity.
- httpAuthenticationListener.onHttpAuthenticationProceed(HttpAuthenticationDialog.this);
-
- // Manually dismiss the `AlertDialog`.
- alertDialog.dismiss();
-
- // Consume the event.
- return true;
- } else { // If any other key was pressed, do not consume the event.
- return false;
- }
+ usernameEditText.setOnKeyListener((View view, int keyCode, KeyEvent event) -> {
+ // If the event is a key-down on the `enter` key, call `onHttpAuthenticationProceed()`.
+ if ((keyCode == KeyEvent.KEYCODE_ENTER) && (event.getAction() == KeyEvent.ACTION_DOWN)) {
+ // Trigger `onHttpAuthenticationProceed` and return the `DialogFragment` to the parent activity.
+ httpAuthenticationListener.onHttpAuthenticationProceed(HttpAuthenticationDialog.this);
+
+ // Manually dismiss the `AlertDialog`.
+ alertDialog.dismiss();
+
+ // Consume the event.
+ return true;
+ } else { // If any other key was pressed, do not consume the event.
+ return false;
}
});
// Allow the `enter` key on the keyboard to trigger `onHttpAuthenticationProceed()` from `passwordEditText`.
- passwordEditText.setOnKeyListener(new View.OnKeyListener() {
- public boolean onKey(View view, int keyCode, KeyEvent event) {
- // If the event is a key-down on the `enter` key, call `onHttpAuthenticationProceed()`.
- if ((keyCode == KeyEvent.KEYCODE_ENTER) && (event.getAction() == KeyEvent.ACTION_DOWN)) {
- // Trigger `onHttpAuthenticationProceed` and return the `DialogFragment` to the parent activity.
- httpAuthenticationListener.onHttpAuthenticationProceed(HttpAuthenticationDialog.this);
-
- // Manually dismiss the `AlertDialog`.
- alertDialog.dismiss();
-
- // Consume the event.
- return true;
- } else { // If any other key was pressed, do not consume the event.
- return false;
- }
+ passwordEditText.setOnKeyListener((View view, int keyCode, KeyEvent event) -> {
+ // If the event is a key-down on the `enter` key, call `onHttpAuthenticationProceed()`.
+ if ((keyCode == KeyEvent.KEYCODE_ENTER) && (event.getAction() == KeyEvent.ACTION_DOWN)) {
+ // Trigger `onHttpAuthenticationProceed` and return the `DialogFragment` to the parent activity.
+ httpAuthenticationListener.onHttpAuthenticationProceed(HttpAuthenticationDialog.this);
+
+ // Manually dismiss the `AlertDialog`.
+ alertDialog.dismiss();
+
+ // Consume the event.
+ return true;
+ } else { // If any other key was pressed, do not consume the event.
+ return false;
}
});
diff --git a/app/src/main/java/com/stoutner/privacybrowser/dialogs/MoveToFolderDialog.java b/app/src/main/java/com/stoutner/privacybrowser/dialogs/MoveToFolderDialog.java
index c08939a4..2dfda361 100644
--- a/app/src/main/java/com/stoutner/privacybrowser/dialogs/MoveToFolderDialog.java
+++ b/app/src/main/java/com/stoutner/privacybrowser/dialogs/MoveToFolderDialog.java
@@ -1,5 +1,5 @@
/*
- * Copyright © 2016-2017 Soren Stoutner .
+ * Copyright © 2016-2018 Soren Stoutner .
*
* This file is part of Privacy Browser .
*
@@ -39,6 +39,7 @@ import android.support.v4.content.ContextCompat;
import android.support.v7.app.AppCompatDialogFragment;
import android.view.View;
import android.view.ViewGroup;
+import android.view.WindowManager;
import android.widget.AdapterView;
import android.widget.Button;
import android.widget.CursorAdapter;
@@ -85,7 +86,7 @@ public class MoveToFolderDialog extends AppCompatDialogFragment {
// Initialize the database helper. The two `nulls` do not specify the database name or a `CursorFactory`. The `0` specifies a database version, but that is ignored and set instead using a constant in `BookmarksDatabaseHelper`.
bookmarksDatabaseHelper = new BookmarksDatabaseHelper(getContext(), null, null, 0);
- // Use `AlertDialog.Builder` to create the `AlertDialog`.
+ // Use an alert dialog builder to create the alert dialog.
AlertDialog.Builder dialogBuilder;
// Set the style according to the theme.
@@ -98,24 +99,36 @@ public class MoveToFolderDialog extends AppCompatDialogFragment {
// Set the title.
dialogBuilder.setTitle(R.string.move_to_folder);
+ // Remove the incorrect lint warning that `getActivity()` might be null.
+ assert getActivity() != null;
+
// Set the view. The parent view is `null` because it will be assigned by `AlertDialog`.
dialogBuilder.setView(getActivity().getLayoutInflater().inflate(R.layout.move_to_folder_dialog, null));
- // Set an `onClick()` listener for the negative button.
+ // Set the listener for the negative button.
dialogBuilder.setNegativeButton(R.string.cancel, (DialogInterface dialog, int which) -> {
// Do nothing. The `AlertDialog` will close automatically.
});
- // Set the `onClick()` listener fo the positive button.
+ // Set the listener fo the positive button.
dialogBuilder.setPositiveButton(R.string.move, (DialogInterface dialog, int which) -> {
// Return the `DialogFragment` to the parent activity on save.
moveToFolderListener.onMoveToFolder(MoveToFolderDialog.this);
});
- // Create an `AlertDialog` from the `AlertDialog.Builder`.
+ // Create an alert dialog from the alert dialog builder.
final AlertDialog alertDialog = dialogBuilder.create();
- // Show the `AlertDialog` so the items in the layout can be modified.
+ // Disable screenshots if not allowed.
+ if (!MainWebViewActivity.allowScreenshots) {
+ // Remove the warning below that `getWindow()` might be null.
+ assert alertDialog.getWindow() != null;
+
+ // Disable screenshots.
+ alertDialog.getWindow().addFlags(WindowManager.LayoutParams.FLAG_SECURE);
+ }
+
+ // Show the alert dialog so the items in the layout can be modified.
alertDialog.show();
// Get a handle for the positive button.
@@ -185,10 +198,12 @@ public class MoveToFolderDialog extends AppCompatDialogFragment {
}
};
} else { // Display `Home Folder` at the top of the `ListView`.
- // Get the home folder icon drawable and convert it to a `Bitmap`. `this` specifies the current context.
+ // Get the home folder icon drawable and convert it to a `Bitmap`.
Drawable homeFolderIconDrawable = ContextCompat.getDrawable(getActivity().getApplicationContext(), R.drawable.folder_gray_bitmap);
BitmapDrawable homeFolderIconBitmapDrawable = (BitmapDrawable) homeFolderIconDrawable;
+ assert homeFolderIconDrawable != null;
Bitmap homeFolderIconBitmap = homeFolderIconBitmapDrawable.getBitmap();
+
// Convert the folder `Bitmap` to a byte array. `0` is for lossless compression (the only option for a PNG).
ByteArrayOutputStream homeFolderIconByteArrayOutputStream = new ByteArrayOutputStream();
homeFolderIconBitmap.compress(Bitmap.CompressFormat.PNG, 0, homeFolderIconByteArrayOutputStream);
diff --git a/app/src/main/java/com/stoutner/privacybrowser/dialogs/PinnedSslCertificateMismatchDialog.java b/app/src/main/java/com/stoutner/privacybrowser/dialogs/PinnedSslCertificateMismatchDialog.java
index d3315ad1..6796b50e 100644
--- a/app/src/main/java/com/stoutner/privacybrowser/dialogs/PinnedSslCertificateMismatchDialog.java
+++ b/app/src/main/java/com/stoutner/privacybrowser/dialogs/PinnedSslCertificateMismatchDialog.java
@@ -1,5 +1,5 @@
/*
- * Copyright © 2017 Soren Stoutner .
+ * Copyright © 2017-2018 Soren Stoutner .
*
* This file is part of Privacy Browser .
*
@@ -37,6 +37,7 @@ import android.text.style.ForegroundColorSpan;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
+import android.view.WindowManager;
import android.widget.TextView;
import com.stoutner.privacybrowser.R;
@@ -87,10 +88,13 @@ public class PinnedSslCertificateMismatchDialog extends AppCompatDialogFragment
@Override
@NonNull
public Dialog onCreateDialog(Bundle savedInstanceState) {
+ // Remove the incorrect lint warning that `getActivity()` might be null.
+ assert getActivity() != null;
+
// Get the activity's layout inflater.
layoutInflater = getActivity().getLayoutInflater();
- // Use `AlertDialog.Builder` to create the `AlertDialog`.
+ // Use an alert dialog builder to create the alert dialog.
AlertDialog.Builder dialogBuilder;
// Set the style according to the theme.
@@ -109,57 +113,48 @@ public class PinnedSslCertificateMismatchDialog extends AppCompatDialogFragment
}
// Setup the neutral button.
- dialogBuilder.setNeutralButton(R.string.update_ssl, new DialogInterface.OnClickListener() {
- @Override
- public void onClick(DialogInterface dialog, int which) {
- // Initialize the `long` date variables. If the date is `null`, a long value of `0` will be stored in the Domains database entry.
- long currentSslStartDateLong = 0;
- long currentSslEndDateLong = 0;
-
- // Convert the `Dates` into `longs`.
- if (currentSslStartDate != null) {
- currentSslStartDateLong = currentSslStartDate.getTime();
- }
-
- if (currentSslEndDate != null) {
- currentSslEndDateLong = currentSslEndDate.getTime();
- }
+ dialogBuilder.setNeutralButton(R.string.update_ssl, (DialogInterface dialog, int which) -> {
+ // Initialize the `long` date variables. If the date is `null`, a long value of `0` will be stored in the Domains database entry.
+ long currentSslStartDateLong = 0;
+ long currentSslEndDateLong = 0;
+
+ // Convert the `Dates` into `longs`.
+ if (currentSslStartDate != null) {
+ currentSslStartDateLong = currentSslStartDate.getTime();
+ }
- // Initialize the database handler. The two `nulls` do not specify the database name or a `CursorFactory`. The `0` specifies the database version, but that is ignored and set instead using a constant in `DomainsDatabaseHelper`.
- DomainsDatabaseHelper domainsDatabaseHelper = new DomainsDatabaseHelper(getContext(), null, null, 0);
-
- // Update the pinned SSL certificate for this domain.
- domainsDatabaseHelper.updateCertificate(MainWebViewActivity.domainSettingsDatabaseId, currentSslIssuedToCNameString, currentSslIssuedToONameString, currentSslIssuedToUNameString, currentSslIssuedByCNameString, currentSslIssuedByONameString,
- currentSslIssuedByUNameString, currentSslStartDateLong, currentSslEndDateLong);
-
- // Update the pinned SSL certificate global variables to match the information that is now in the database.
- MainWebViewActivity.pinnedDomainSslIssuedToCNameString = currentSslIssuedToCNameString;
- MainWebViewActivity.pinnedDomainSslIssuedToONameString = currentSslIssuedToONameString;
- MainWebViewActivity.pinnedDomainSslIssuedToUNameString = currentSslIssuedToUNameString;
- MainWebViewActivity.pinnedDomainSslIssuedByCNameString = currentSslIssuedByCNameString;
- MainWebViewActivity.pinnedDomainSslIssuedByONameString = currentSslIssuedByONameString;
- MainWebViewActivity.pinnedDomainSslIssuedByUNameString = currentSslIssuedByUNameString;
- MainWebViewActivity.pinnedDomainSslStartDate = currentSslStartDate;
- MainWebViewActivity.pinnedDomainSslEndDate = currentSslEndDate;
+ if (currentSslEndDate != null) {
+ currentSslEndDateLong = currentSslEndDate.getTime();
}
+
+ // Initialize the database handler. The `0` specifies the database version, but that is ignored and set instead using a constant in `DomainsDatabaseHelper`.
+ DomainsDatabaseHelper domainsDatabaseHelper = new DomainsDatabaseHelper(getContext(), null, null, 0);
+
+ // Update the pinned SSL certificate for this domain.
+ domainsDatabaseHelper.updateCertificate(MainWebViewActivity.domainSettingsDatabaseId, currentSslIssuedToCNameString, currentSslIssuedToONameString, currentSslIssuedToUNameString,
+ currentSslIssuedByCNameString, currentSslIssuedByONameString, currentSslIssuedByUNameString, currentSslStartDateLong, currentSslEndDateLong);
+
+ // Update the pinned SSL certificate global variables to match the information that is now in the database.
+ MainWebViewActivity.pinnedDomainSslIssuedToCNameString = currentSslIssuedToCNameString;
+ MainWebViewActivity.pinnedDomainSslIssuedToONameString = currentSslIssuedToONameString;
+ MainWebViewActivity.pinnedDomainSslIssuedToUNameString = currentSslIssuedToUNameString;
+ MainWebViewActivity.pinnedDomainSslIssuedByCNameString = currentSslIssuedByCNameString;
+ MainWebViewActivity.pinnedDomainSslIssuedByONameString = currentSslIssuedByONameString;
+ MainWebViewActivity.pinnedDomainSslIssuedByUNameString = currentSslIssuedByUNameString;
+ MainWebViewActivity.pinnedDomainSslStartDate = currentSslStartDate;
+ MainWebViewActivity.pinnedDomainSslEndDate = currentSslEndDate;
});
// Setup the negative button.
- dialogBuilder.setNegativeButton(R.string.back, new DialogInterface.OnClickListener() {
- @Override
- public void onClick(DialogInterface dialog, int which) {
- // Call the `onSslMismatchBack` public interface to send the `WebView` back one page.
- pinnedSslCertificateMismatchListener.onSslMismatchBack();
- }
+ dialogBuilder.setNegativeButton(R.string.back, (DialogInterface dialog, int which) -> {
+ // Call the `onSslMismatchBack` public interface to send the `WebView` back one page.
+ pinnedSslCertificateMismatchListener.onSslMismatchBack();
});
// Setup the positive button.
- dialogBuilder.setPositiveButton(R.string.proceed, new DialogInterface.OnClickListener() {
- @Override
- public void onClick(DialogInterface dialog, int which) {
- // Call the `onSslMismatchProceed` public interface.
- pinnedSslCertificateMismatchListener.onSslMismatchProceed();
- }
+ dialogBuilder.setPositiveButton(R.string.proceed, (DialogInterface dialog, int which) -> {
+ // Call the `onSslMismatchProceed` public interface.
+ pinnedSslCertificateMismatchListener.onSslMismatchProceed();
});
// Set the title.
@@ -168,27 +163,36 @@ public class PinnedSslCertificateMismatchDialog extends AppCompatDialogFragment
// Set the layout. The parent view is `null` because it will be assigned by `AlertDialog`.
dialogBuilder.setView(layoutInflater.inflate(R.layout.pinned_ssl_certificate_mismatch_linearlayout, null));
- // Create an `AlertDialog` from the `AlertDialog.Builder`
+ // Create an alert dialog from the alert dialog builder.
final AlertDialog alertDialog = dialogBuilder.create();
- // Show the `AlertDialog` so the items in the layout can be modified.
+ // Disable screenshots if not allowed.
+ if (!MainWebViewActivity.allowScreenshots) {
+ // Remove the warning below that `getWindow()` might be null.
+ assert alertDialog.getWindow() != null;
+
+ // Disable screenshots.
+ alertDialog.getWindow().addFlags(WindowManager.LayoutParams.FLAG_SECURE);
+ }
+
+ // Show the alert dialog so the items in the layout can be modified.
alertDialog.show();
- // Setup `wrapVerticalContentViewPager`.
- WrapVerticalContentViewPager wrapVerticalContentViewPager = (WrapVerticalContentViewPager) alertDialog.findViewById(R.id.pinned_ssl_certificate_mismatch_viewpager);
+ // Setup the view pager.
+ WrapVerticalContentViewPager wrapVerticalContentViewPager = alertDialog.findViewById(R.id.pinned_ssl_certificate_mismatch_viewpager);
wrapVerticalContentViewPager.setAdapter(new pagerAdapter());
- // Setup the `TabLayout` and connect it to the `WrapVerticalContentViewPager`.
- TabLayout tabLayout = (TabLayout) alertDialog.findViewById(R.id.pinned_ssl_certificate_mismatch_tablayout);
+ // Setup the tab layout and connect it to the view pager.
+ TabLayout tabLayout = alertDialog.findViewById(R.id.pinned_ssl_certificate_mismatch_tablayout);
tabLayout.setupWithViewPager(wrapVerticalContentViewPager);
- // `onCreateDialog` requires the return of an `AlertDialog`.
+ // `onCreateDialog()` requires the return of an `AlertDialog`.
return alertDialog;
}
private class pagerAdapter extends PagerAdapter {
@Override
- public boolean isViewFromObject(View view, Object object) {
+ public boolean isViewFromObject(@NonNull View view, @NonNull Object object) {
// Check to see if the `View` and the `Object` are the same.
return (view == object);
}
@@ -210,19 +214,20 @@ public class PinnedSslCertificateMismatchDialog extends AppCompatDialogFragment
}
@Override
- public Object instantiateItem(ViewGroup container, int position) {
+ @NonNull
+ public Object instantiateItem(@NonNull ViewGroup container, int position) {
// Inflate the `ScrollView` for this tab.
ViewGroup tabViewGroup = (ViewGroup) layoutInflater.inflate(R.layout.pinned_ssl_certificate_mismatch_scrollview, container, false);
// Get handles for the `TextViews`.
- TextView issuedToCNameTextView = (TextView) tabViewGroup.findViewById(R.id.issued_to_cname);
- TextView issuedToONameTextView = (TextView) tabViewGroup.findViewById(R.id.issued_to_oname);
- TextView issuedToUNameTextView = (TextView) tabViewGroup.findViewById(R.id.issued_to_uname);
- TextView issuedByCNameTextView = (TextView) tabViewGroup.findViewById(R.id.issued_by_cname);
- TextView issuedByONameTextView = (TextView) tabViewGroup.findViewById(R.id.issued_by_oname);
- TextView issuedByUNameTextView = (TextView) tabViewGroup.findViewById(R.id.issued_by_uname);
- TextView startDateTextView = (TextView) tabViewGroup.findViewById(R.id.start_date);
- TextView endDateTextView = (TextView) tabViewGroup.findViewById(R.id.end_date);
+ TextView issuedToCNameTextView = tabViewGroup.findViewById(R.id.issued_to_cname);
+ TextView issuedToONameTextView = tabViewGroup.findViewById(R.id.issued_to_oname);
+ TextView issuedToUNameTextView = tabViewGroup.findViewById(R.id.issued_to_uname);
+ TextView issuedByCNameTextView = tabViewGroup.findViewById(R.id.issued_by_cname);
+ TextView issuedByONameTextView = tabViewGroup.findViewById(R.id.issued_by_oname);
+ TextView issuedByUNameTextView = tabViewGroup.findViewById(R.id.issued_by_uname);
+ TextView startDateTextView = tabViewGroup.findViewById(R.id.start_date);
+ TextView endDateTextView = tabViewGroup.findViewById(R.id.end_date);
// Setup the labels.
String cNameLabel = getString(R.string.common_name) + " ";
@@ -297,7 +302,8 @@ public class PinnedSslCertificateMismatchDialog extends AppCompatDialogFragment
if (MainWebViewActivity.pinnedDomainSslStartDate == null) {
startDateStringBuilder = new SpannableStringBuilder(startDateLabel);
} else {
- startDateStringBuilder = new SpannableStringBuilder(startDateLabel + DateFormat.getDateTimeInstance(DateFormat.MEDIUM, DateFormat.LONG).format(MainWebViewActivity.pinnedDomainSslStartDate));
+ startDateStringBuilder = new SpannableStringBuilder(startDateLabel + DateFormat.getDateTimeInstance(DateFormat.MEDIUM, DateFormat.LONG)
+ .format(MainWebViewActivity.pinnedDomainSslStartDate));
}
if (MainWebViewActivity.pinnedDomainSslEndDate == null) {
diff --git a/app/src/main/java/com/stoutner/privacybrowser/dialogs/SslCertificateErrorDialog.java b/app/src/main/java/com/stoutner/privacybrowser/dialogs/SslCertificateErrorDialog.java
index 00a3b1f9..8bde8de0 100644
--- a/app/src/main/java/com/stoutner/privacybrowser/dialogs/SslCertificateErrorDialog.java
+++ b/app/src/main/java/com/stoutner/privacybrowser/dialogs/SslCertificateErrorDialog.java
@@ -1,5 +1,5 @@
/*
- * Copyright © 2016-2017 Soren Stoutner .
+ * Copyright © 2016-2018 Soren Stoutner .
*
* This file is part of Privacy Browser .
*
@@ -34,6 +34,7 @@ import android.text.SpannableStringBuilder;
import android.text.Spanned;
import android.text.style.ForegroundColorSpan;
import android.view.LayoutInflater;
+import android.view.WindowManager;
import android.widget.TextView;
import com.stoutner.privacybrowser.R;
@@ -93,6 +94,9 @@ public class SslCertificateErrorDialog extends AppCompatDialogFragment {
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
+ // Remove the incorrect lint warning that `getArguments()` might be null.
+ assert getArguments() != null;
+
// Save the components of the SSL error message in class variables.
primaryErrorInt = getArguments().getInt("PrimaryErrorInt");
urlWithError = getArguments().getString("UrlWithError");
@@ -133,10 +137,13 @@ public class SslCertificateErrorDialog extends AppCompatDialogFragment {
@Override
@NonNull
public Dialog onCreateDialog(Bundle savedInstanceState) {
+ // Remove the incorrect lint warning that `getActivity()` might be null.
+ assert getActivity() != null;
+
// Get the activity's layout inflater.
LayoutInflater layoutInflater = getActivity().getLayoutInflater();
- // Use `AlertDialog.Builder` to create the `AlertDialog`.
+ // Use an alert dialog builder to create the alert dialog.
AlertDialog.Builder dialogBuilder;
// Set the style and icon according to the theme.
@@ -160,42 +167,41 @@ public class SslCertificateErrorDialog extends AppCompatDialogFragment {
// Set the view. The parent view is `null` because it will be assigned by `AlertDialog`.
dialogBuilder.setView(layoutInflater.inflate(R.layout.ssl_certificate_error, null));
- // Set an `onClick` listener on the negative button. `null` doesn't do anything extra when the button is pressed. The `Dialog` will automatically close.
- dialogBuilder.setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() {
- @Override
- public void onClick(DialogInterface dialog, int which) {
- sslCertificateErrorListener.onSslErrorCancel();
- }
- });
+ // Set a listener on the negative button.
+ dialogBuilder.setNegativeButton(R.string.cancel, (DialogInterface dialog, int which) -> sslCertificateErrorListener.onSslErrorCancel());
- // Set an `onClick` listener on the positive button.
- dialogBuilder.setPositiveButton(R.string.proceed, new DialogInterface.OnClickListener() {
- @Override
- public void onClick(DialogInterface dialog, int which) {
- sslCertificateErrorListener.onSslErrorProceed();
- }
- });
+ // Set a listener on the positive button.
+ dialogBuilder.setPositiveButton(R.string.proceed, (DialogInterface dialog, int which) -> sslCertificateErrorListener.onSslErrorProceed());
- // Create an `AlertDialog` from the `AlertDialog.Builder`.
+ // Create an alert dialog from the alert dialog builder.
AlertDialog alertDialog = dialogBuilder.create();
- // We have to show the `AlertDialog` before we can modify the content.
+ // Disable screenshots if not allowed.
+ if (!MainWebViewActivity.allowScreenshots) {
+ // Remove the warning below that `getWindow()` might be null.
+ assert alertDialog.getWindow() != null;
+
+ // Disable screenshots.
+ alertDialog.getWindow().addFlags(WindowManager.LayoutParams.FLAG_SECURE);
+ }
+
+ // We have to show the alert dialog before we can modify the content.
alertDialog.show();
// Get handles for the `TextViews`
- TextView primaryErrorTextView = (TextView) alertDialog.findViewById(R.id.primary_error);
- TextView urlTextView = (TextView) alertDialog.findViewById(R.id.url_error_dialog);
- TextView issuedToCNameTextView = (TextView) alertDialog.findViewById(R.id.issued_to_cname_error_dialog);
- TextView issuedToONameTextView = (TextView) alertDialog.findViewById(R.id.issued_to_oname_error_dialog);
- TextView issuedToUNameTextView = (TextView) alertDialog.findViewById(R.id.issued_to_uname_error_dialog);
- TextView issuedByTextView = (TextView) alertDialog.findViewById(R.id.issued_by_textview);
- TextView issuedByCNameTextView = (TextView) alertDialog.findViewById(R.id.issued_by_cname_error_dialog);
- TextView issuedByONameTextView = (TextView) alertDialog.findViewById(R.id.issued_by_oname_error_dialog);
- TextView issuedByUNameTextView = (TextView) alertDialog.findViewById(R.id.issued_by_uname_error_dialog);
- TextView validDatesTextView = (TextView) alertDialog.findViewById(R.id.valid_dates_textview);
- TextView startDateTextView = (TextView) alertDialog.findViewById(R.id.start_date_error_dialog);
- TextView endDateTextView = (TextView) alertDialog.findViewById(R.id.end_date_error_dialog);
+ TextView primaryErrorTextView = alertDialog.findViewById(R.id.primary_error);
+ TextView urlTextView = alertDialog.findViewById(R.id.url_error_dialog);
+ TextView issuedToCNameTextView = alertDialog.findViewById(R.id.issued_to_cname_error_dialog);
+ TextView issuedToONameTextView = alertDialog.findViewById(R.id.issued_to_oname_error_dialog);
+ TextView issuedToUNameTextView = alertDialog.findViewById(R.id.issued_to_uname_error_dialog);
+ TextView issuedByTextView = alertDialog.findViewById(R.id.issued_by_textview);
+ TextView issuedByCNameTextView = alertDialog.findViewById(R.id.issued_by_cname_error_dialog);
+ TextView issuedByONameTextView = alertDialog.findViewById(R.id.issued_by_oname_error_dialog);
+ TextView issuedByUNameTextView = alertDialog.findViewById(R.id.issued_by_uname_error_dialog);
+ TextView validDatesTextView = alertDialog.findViewById(R.id.valid_dates_textview);
+ TextView startDateTextView = alertDialog.findViewById(R.id.start_date_error_dialog);
+ TextView endDateTextView = alertDialog.findViewById(R.id.end_date_error_dialog);
// Setup the common strings.
String urlLabel = getString(R.string.url_label) + " ";
diff --git a/app/src/main/java/com/stoutner/privacybrowser/dialogs/UrlHistoryDialog.java b/app/src/main/java/com/stoutner/privacybrowser/dialogs/UrlHistoryDialog.java
index 8a703929..00938102 100644
--- a/app/src/main/java/com/stoutner/privacybrowser/dialogs/UrlHistoryDialog.java
+++ b/app/src/main/java/com/stoutner/privacybrowser/dialogs/UrlHistoryDialog.java
@@ -1,5 +1,5 @@
/*
- * Copyright © 2016-2017 Soren Stoutner .
+ * Copyright © 2016-2018 Soren Stoutner .
*
* This file is part of Privacy Browser .
*
@@ -36,6 +36,7 @@ import android.support.v7.app.AppCompatDialogFragment;
import android.util.Base64;
import android.view.LayoutInflater;
import android.view.View;
+import android.view.WindowManager;
import android.webkit.WebBackForwardList;
import android.widget.AdapterView;
import android.widget.ListView;
@@ -71,6 +72,9 @@ public class UrlHistoryDialog extends AppCompatDialogFragment{
// Convert `defaultFavoriteIconDrawable` to a `BitmapDrawable`.
BitmapDrawable defaultFavoriteIconBitmapDrawable = (BitmapDrawable) defaultFavoriteIconDrawable;
+ // Remove the incorrect lint error that `getBitmap()` might be null.
+ assert defaultFavoriteIconBitmapDrawable != null;
+
// Extract a `Bitmap` from `defaultFavoriteIconBitmapDrawable`.
Bitmap defaultFavoriteIcon = defaultFavoriteIconBitmapDrawable.getBitmap();
@@ -93,6 +97,9 @@ public class UrlHistoryDialog extends AppCompatDialogFragment{
// Create a `ByteArrayOutputStream`.
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
+ // Remove the incorrect lint error that `compress()` might be null;
+ assert iconBitmap != null;
+
// Convert the favorite icon `Bitmap` to a `ByteArrayOutputStream`. `100` is the compression quality, which is ignored by `PNG`.
iconBitmap.compress(Bitmap.CompressFormat.PNG, 100, byteArrayOutputStream);
@@ -121,6 +128,9 @@ public class UrlHistoryDialog extends AppCompatDialogFragment{
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
+ // Remove the incorrect lint error that `getArguments()` might be null.
+ assert getArguments() != null;
+
// Get the `ArrayLists` from the `Arguments`.
ArrayList urlStringArrayList = getArguments().getStringArrayList("URL_History");
ArrayList favoriteIconBase64StringArrayList = getArguments().getStringArrayList("Favorite_Icons");
@@ -180,10 +190,13 @@ public class UrlHistoryDialog extends AppCompatDialogFragment{
// `@SuppressLing("InflateParams")` removes the warning about using `null` as the parent view group when inflating the `AlertDialog`.
@SuppressLint("InflateParams")
public Dialog onCreateDialog(Bundle savedInstanceState) {
+ // Remove the incorrect lint warning that `getActivity()` might be null.
+ assert getActivity() != null;
+
// Get the activity's layout inflater.
LayoutInflater layoutInflater = getActivity().getLayoutInflater();
- // Use `AlertDialog.Builder` to create the `AlertDialog`.
+ // Use an alert dialog builder to create the alert dialog.
AlertDialog.Builder dialogBuilder;
// Set the style according to the theme.
@@ -200,52 +213,52 @@ public class UrlHistoryDialog extends AppCompatDialogFragment{
dialogBuilder.setView(layoutInflater.inflate(R.layout.url_history_dialog, null));
// Set an `onClick()` listener on the negative button.
- dialogBuilder.setNegativeButton(R.string.clear_history, new DialogInterface.OnClickListener() {
- @Override
- public void onClick(DialogInterface dialog, int which) {
- // Clear the history.
- urlHistoryListener.onClearHistory();
- }
+ dialogBuilder.setNegativeButton(R.string.clear_history, (DialogInterface dialog, int which) -> {
+ // Clear the history.
+ urlHistoryListener.onClearHistory();
});
// Set an `onClick()` listener on the positive button.
- dialogBuilder.setPositiveButton(R.string.close, new DialogInterface.OnClickListener() {
- @Override
- public void onClick(DialogInterface dialog, int which) {
- // Do nothing if `Close` is clicked. The `Dialog` will automatically close.
- }
+ dialogBuilder.setPositiveButton(R.string.close, (DialogInterface dialog, int which) -> {
+ // Do nothing if `Close` is clicked. The `Dialog` will automatically close.
});
- // Create an `AlertDialog` from the `AlertDialog.Builder`.
+ // Create an alert dialog from the alert dialog builder.
final AlertDialog alertDialog = dialogBuilder.create();
- // We need to show `alertDialog` before we can modify the contents.
+ // Disable screenshots if not allowed.
+ if (!MainWebViewActivity.allowScreenshots) {
+ // Remove the warning below that `getWindow()` might be null.
+ assert alertDialog.getWindow() != null;
+
+ // Disable screenshots.
+ alertDialog.getWindow().addFlags(WindowManager.LayoutParams.FLAG_SECURE);
+ }
+
+ //The alert dialog must be shown before the contents can be modified.
alertDialog.show();
// Instantiate a `HistoryArrayAdapter`.
final HistoryArrayAdapter historyArrayAdapter = new HistoryArrayAdapter(getContext(), historyArrayList, currentPageId);
- // Get a handle for `listView`.
- ListView listView = (ListView) alertDialog.findViewById(R.id.history_listview);
+ // Get a handle for the list view.
+ ListView listView = alertDialog.findViewById(R.id.history_listview);
- // Set the adapter on `listView`.
+ // Set the list view adapter.
listView.setAdapter(historyArrayAdapter);
- // Listen for clicks on entries in `listView`.
- listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
- @Override
- public void onItemClick(AdapterView> parent, View view, int position, long id) {
- // Convert the `long` `id` to an `int`.
- int itemId = (int) id;
-
- // Only consume the click if it is not on the `currentPageId`.
- if (itemId != currentPageId) {
- // Go forward or back to `itemId`.
- urlHistoryListener.onUrlHistoryEntrySelected(currentPageId - itemId);
-
- // Dismiss the `Dialog`.
- alertDialog.dismiss();
- }
+ // Listen for clicks on entries in the list view.
+ listView.setOnItemClickListener((AdapterView> parent, View view, int position, long id) -> {
+ // Convert the `long` `id` to an `int`.
+ int itemId = (int) id;
+
+ // Only consume the click if it is not on the `currentPageId`.
+ if (itemId != currentPageId) {
+ // Go forward or back to `itemId`.
+ urlHistoryListener.onUrlHistoryEntrySelected(currentPageId - itemId);
+
+ // Dismiss the `Dialog`.
+ alertDialog.dismiss();
}
});
diff --git a/app/src/main/java/com/stoutner/privacybrowser/dialogs/ViewSslCertificateDialog.java b/app/src/main/java/com/stoutner/privacybrowser/dialogs/ViewSslCertificateDialog.java
index 6f9fa4d4..90a13271 100644
--- a/app/src/main/java/com/stoutner/privacybrowser/dialogs/ViewSslCertificateDialog.java
+++ b/app/src/main/java/com/stoutner/privacybrowser/dialogs/ViewSslCertificateDialog.java
@@ -32,6 +32,7 @@ import android.text.SpannableStringBuilder;
import android.text.Spanned;
import android.text.style.ForegroundColorSpan;
import android.view.LayoutInflater;
+import android.view.WindowManager;
import android.widget.TextView;
import com.stoutner.privacybrowser.activities.MainWebViewActivity;
@@ -64,7 +65,7 @@ public class ViewSslCertificateDialog extends DialogFragment {
// Set the icon.
dialogBuilder.setIcon(favoriteIconDrawable);
- // Set an `onClick` listener on the negative button. Using `null` as the listener closes the dialog without doing anything else.
+ // Set a listener on the negative button. Using `null` as the listener closes the dialog without doing anything else.
dialogBuilder.setNegativeButton(R.string.close, null);
// Check to see if the website is encrypted.
@@ -75,8 +76,20 @@ public class ViewSslCertificateDialog extends DialogFragment {
// Set the Layout. The parent view is `null` because it will be assigned by `AlertDialog`.
dialogBuilder.setView(layoutInflater.inflate(R.layout.unencrypted_website, null));
+ // Create an alert dialog from the alert dialog builder.
+ final AlertDialog alertDialog = dialogBuilder.create();
+
+ // Disable screenshots if not allowed.
+ if (!MainWebViewActivity.allowScreenshots) {
+ // Remove the warning below that `getWindow()` might be null.
+ assert alertDialog.getWindow() != null;
+
+ // Disable screenshots.
+ alertDialog.getWindow().addFlags(WindowManager.LayoutParams.FLAG_SECURE);
+ }
+
// `onCreateDialog` requires the return of an `AlertDialog`.
- return dialogBuilder.create();
+ return alertDialog;
} else { // Display the SSL certificate information
// Set the title.
@@ -88,6 +101,15 @@ public class ViewSslCertificateDialog extends DialogFragment {
// Create an alert dialog from the builder.
final AlertDialog alertDialog = dialogBuilder.create();
+ // Disable screenshots if not allowed.
+ if (!MainWebViewActivity.allowScreenshots) {
+ // Remove the warning below that `getWindow()` might be null.
+ assert alertDialog.getWindow() != null;
+
+ // Disable screenshots.
+ alertDialog.getWindow().addFlags(WindowManager.LayoutParams.FLAG_SECURE);
+ }
+
// The alert dialog must be shown before items in the layout can be modified.
alertDialog.show();
diff --git a/app/src/main/java/com/stoutner/privacybrowser/fragments/SettingsFragment.java b/app/src/main/java/com/stoutner/privacybrowser/fragments/SettingsFragment.java
index 88d57994..cb0ca13e 100644
--- a/app/src/main/java/com/stoutner/privacybrowser/fragments/SettingsFragment.java
+++ b/app/src/main/java/com/stoutner/privacybrowser/fragments/SettingsFragment.java
@@ -60,6 +60,7 @@ public class SettingsFragment extends PreferenceFragment {
final Preference customUserAgentPreference = findPreference("custom_user_agent");
final Preference incognitoModePreference = findPreference("incognito_mode");
final Preference doNotTrackPreference = findPreference("do_not_track");
+ final Preference allowScreenshotsPreference = findPreference("allow_screenshots");
final Preference easyListPreference = findPreference("easylist");
final Preference easyPrivacyPreference = findPreference("easyprivacy");
final Preference fanboyAnnoyanceListPreference = findPreference("fanboy_annoyance_list");
@@ -209,17 +210,17 @@ public class SettingsFragment extends PreferenceFragment {
// Set the default font size as the summary text for the preference.
defaultFontSizePreference.setSummary(savedPreferences.getString("default_font_size", "100") + "%%");
- // Disable `javaScriptPreference` if `nightModeBoolean` is true. JavaScript will be enabled for all web pages.
+ // Disable the JavaScript preference if Night Mode is enabled. JavaScript will be enabled for all web pages.
javaScriptPreference.setEnabled(!nightMode);
- // Set the `javaScriptPreference` icon.
+ // Set the JavaScript icon.
if (javaScriptEnabled || nightMode) {
javaScriptPreference.setIcon(R.drawable.javascript_enabled);
} else {
javaScriptPreference.setIcon(R.drawable.privacy_mode);
}
- // Set the `firstPartyCookiesPreference` icon.
+ // Set the first-party cookies icon.
if (firstPartyCookiesEnabled) {
firstPartyCookiesPreference.setIcon(R.drawable.cookies_enabled);
} else {
@@ -230,7 +231,7 @@ public class SettingsFragment extends PreferenceFragment {
}
}
- // Set the `thirdPartyCookiesPreference` icon.
+ // Set the third party cookies icon.
if (firstPartyCookiesEnabled && Build.VERSION.SDK_INT >= 21) {
if (thirdPartyCookiesEnabled) {
thirdPartyCookiesPreference.setIcon(R.drawable.cookies_warning);
@@ -249,7 +250,7 @@ public class SettingsFragment extends PreferenceFragment {
}
}
- // Set the `domStoragePreference` icon.
+ // Set the DOM storage icon.
if (javaScriptEnabled || nightMode) { // The preference is enabled.
if (savedPreferences.getBoolean("dom_storage_enabled", false)) { // DOM storage is enabled.
domStoragePreference.setIcon(R.drawable.dom_storage_enabled);
@@ -268,7 +269,7 @@ public class SettingsFragment extends PreferenceFragment {
}
}
- // Set the `saveFormDataPreference` icon.
+ // Set the save form data icon.
if (savedPreferences.getBoolean("save_form_data_enabled", false)) {
saveFormDataPreference.setIcon(R.drawable.form_data_enabled);
} else {
@@ -279,7 +280,7 @@ public class SettingsFragment extends PreferenceFragment {
}
}
- // Set the `customUserAgentPreference` icon.
+ // Set the custom user agent icon.
if (customUserAgentPreference.isEnabled()) {
if (MainWebViewActivity.darkTheme) {
customUserAgentPreference.setIcon(R.drawable.custom_user_agent_enabled_dark);
@@ -294,7 +295,7 @@ public class SettingsFragment extends PreferenceFragment {
}
}
- // Set the `incognitoModePreference` icon.
+ // Set the incognito mode icon.
if (savedPreferences.getBoolean("incognito_mode", false)) {
if (MainWebViewActivity.darkTheme) {
incognitoModePreference.setIcon(R.drawable.incognito_mode_enabled_dark);
@@ -309,7 +310,7 @@ public class SettingsFragment extends PreferenceFragment {
}
}
- // Set the `doNotTrackPreference` icon.
+ // Set the Do Not Track icon.
if (savedPreferences.getBoolean("do_not_track", false)) {
if (MainWebViewActivity.darkTheme) {
doNotTrackPreference.setIcon(R.drawable.block_tracking_enabled_dark);
@@ -324,6 +325,21 @@ public class SettingsFragment extends PreferenceFragment {
}
}
+ // Set the allow screenshots icon.
+ if (savedPreferences.getBoolean("allow_screenshots", false)) {
+ if (MainWebViewActivity.darkTheme) {
+ allowScreenshotsPreference.setIcon(R.drawable.allow_screenshots_enabled_dark);
+ } else {
+ allowScreenshotsPreference.setIcon(R.drawable.allow_screenshots_enabled_light);
+ }
+ } else {
+ if (MainWebViewActivity.darkTheme) {
+ allowScreenshotsPreference.setIcon(R.drawable.allow_screenshots_disabled_dark);
+ } else {
+ allowScreenshotsPreference.setIcon(R.drawable.allow_screenshots_disabled_light);
+ }
+ }
+
// Set the EasyList icon.
if (savedPreferences.getBoolean("easylist", true)) {
if (MainWebViewActivity.darkTheme) {
@@ -354,7 +370,7 @@ public class SettingsFragment extends PreferenceFragment {
}
}
- // Set the Fanboy list icons.
+ // Set the Fanboy lists icons.
if (fanboyAnnoyanceListEnabled) {
if (MainWebViewActivity.darkTheme) {
// Set the Fanboy annoyance list icon.
@@ -432,7 +448,7 @@ public class SettingsFragment extends PreferenceFragment {
}
}
- // Set the `searchCustomURLPreference` icon.
+ // Set the search custom URL icon.
if (searchCustomURLPreference.isEnabled()) {
if (MainWebViewActivity.darkTheme) {
searchCustomURLPreference.setIcon(R.drawable.search_custom_url_enabled_dark);
@@ -843,6 +859,35 @@ public class SettingsFragment extends PreferenceFragment {
break;
+ case "allow_screenshots":
+ // Update the icon.
+ if (sharedPreferences.getBoolean("allow_screenshots", false)) {
+ if (MainWebViewActivity.darkTheme) {
+ allowScreenshotsPreference.setIcon(R.drawable.allow_screenshots_enabled_dark);
+ } else {
+ allowScreenshotsPreference.setIcon(R.drawable.allow_screenshots_enabled_light);
+ }
+ } else {
+ if (MainWebViewActivity.darkTheme) {
+ allowScreenshotsPreference.setIcon(R.drawable.allow_screenshots_disabled_dark);
+ } else {
+ allowScreenshotsPreference.setIcon(R.drawable.allow_screenshots_disabled_light);
+ }
+ }
+
+ // Create an intent to restart Privacy Browser.
+ Intent allowScreenshotsRestartIntent = getActivity().getParentActivityIntent();
+
+ // Assert that the intent is not null to remove the lint error below.
+ assert allowScreenshotsRestartIntent != null;
+
+ // `Intent.FLAG_ACTIVITY_CLEAR_TASK` removes all activities from the stack. It requires `Intent.FLAG_ACTIVITY_NEW_TASK`.
+ allowScreenshotsRestartIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
+
+ // Make it so.
+ startActivity(allowScreenshotsRestartIntent);
+ break;
+
case "easylist":
// Update the icon.
if (sharedPreferences.getBoolean("easylist", true)) {
@@ -1367,17 +1412,17 @@ public class SettingsFragment extends PreferenceFragment {
darkThemePreference.setIcon(R.drawable.theme_light);
}
- // Create an `Intent` to restart Privacy Browser.
- Intent intent = getActivity().getParentActivityIntent();
+ // Create an intent to restart Privacy Browser.
+ Intent changeThemeRestartIntent = getActivity().getParentActivityIntent();
- // Assert that `intent` is not `null` to remove the lint error below.
- assert intent != null;
+ // Assert that the intent is not null to remove the lint error below.
+ assert changeThemeRestartIntent != null;
// `Intent.FLAG_ACTIVITY_CLEAR_TASK` removes all activities from the stack. It requires `Intent.FLAG_ACTIVITY_NEW_TASK`.
- intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
+ changeThemeRestartIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
// Make it so.
- startActivity(intent);
+ startActivity(changeThemeRestartIntent);
break;
case "night_mode":
diff --git a/app/src/main/res/drawable/about_dark.xml b/app/src/main/res/drawable/about_dark.xml
index a1927d79..4813364f 100644
--- a/app/src/main/res/drawable/about_dark.xml
+++ b/app/src/main/res/drawable/about_dark.xml
@@ -1,4 +1,4 @@
-
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/drawable/allow_screenshots_disabled_light.xml b/app/src/main/res/drawable/allow_screenshots_disabled_light.xml
new file mode 100644
index 00000000..93763084
--- /dev/null
+++ b/app/src/main/res/drawable/allow_screenshots_disabled_light.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
diff --git a/app/src/main/res/drawable/allow_screenshots_enabled_dark.xml b/app/src/main/res/drawable/allow_screenshots_enabled_dark.xml
new file mode 100644
index 00000000..61556c09
--- /dev/null
+++ b/app/src/main/res/drawable/allow_screenshots_enabled_dark.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
diff --git a/app/src/main/res/drawable/allow_screenshots_enabled_light.xml b/app/src/main/res/drawable/allow_screenshots_enabled_light.xml
new file mode 100644
index 00000000..ee605af5
--- /dev/null
+++ b/app/src/main/res/drawable/allow_screenshots_enabled_light.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
diff --git a/app/src/main/res/drawable/back.xml b/app/src/main/res/drawable/back.xml
index 51dc3f07..85c235aa 100644
--- a/app/src/main/res/drawable/back.xml
+++ b/app/src/main/res/drawable/back.xml
@@ -1,4 +1,4 @@
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
. The resulting image is released under the GPLv3+ license. -->
diff --git a/app/src/main/res/drawable/clear_everything_disabled.xml b/app/src/main/res/drawable/clear_everything_disabled.xml
index 77233c50..5ed15038 100644
--- a/app/src/main/res/drawable/clear_everything_disabled.xml
+++ b/app/src/main/res/drawable/clear_everything_disabled.xml
@@ -1,4 +1,4 @@
-
+
+
+
+
. The resulting image is released under the GPLv3+ license. -->
. The resulting image is released under the GPLv3+ license. -->
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
. The resulting image is released under the GPLv3+ license. -->
-
+
+
+
+
+
+
+
+
+
. The resulting image is released under the GPLv3+ license. -->
diff --git a/app/src/main/res/drawable/move_to_folder_light.xml b/app/src/main/res/drawable/move_to_folder_light.xml
index ee2fd4b6..fdbc6dbf 100644
--- a/app/src/main/res/drawable/move_to_folder_light.xml
+++ b/app/src/main/res/drawable/move_to_folder_light.xml
@@ -1,4 +1,4 @@
-
diff --git a/app/src/main/res/drawable/move_up_disabled.xml b/app/src/main/res/drawable/move_up_disabled.xml
index 6c935705..7d7dc93a 100644
--- a/app/src/main/res/drawable/move_up_disabled.xml
+++ b/app/src/main/res/drawable/move_up_disabled.xml
@@ -1,4 +1,4 @@
-
+
+
+
+
. The resulting image is released under the GPLv3+ license. -->
diff --git a/app/src/main/res/drawable/night_mode_disabled_light.xml b/app/src/main/res/drawable/night_mode_disabled_light.xml
index 81af0370..f7da08e9 100644
--- a/app/src/main/res/drawable/night_mode_disabled_light.xml
+++ b/app/src/main/res/drawable/night_mode_disabled_light.xml
@@ -1,4 +1,4 @@
-
diff --git a/app/src/main/res/drawable/night_mode_enabled_dark.xml b/app/src/main/res/drawable/night_mode_enabled_dark.xml
index b71a9838..38bf501e 100644
--- a/app/src/main/res/drawable/night_mode_enabled_dark.xml
+++ b/app/src/main/res/drawable/night_mode_enabled_dark.xml
@@ -1,4 +1,4 @@
-
diff --git a/app/src/main/res/drawable/night_mode_enabled_light.xml b/app/src/main/res/drawable/night_mode_enabled_light.xml
index 2d13d31b..464946ce 100644
--- a/app/src/main/res/drawable/night_mode_enabled_light.xml
+++ b/app/src/main/res/drawable/night_mode_enabled_light.xml
@@ -1,4 +1,4 @@
-
diff --git a/app/src/main/res/drawable/orbot_disabled_dark.xml b/app/src/main/res/drawable/orbot_disabled_dark.xml
index 39f6821b..8569ed1b 100644
--- a/app/src/main/res/drawable/orbot_disabled_dark.xml
+++ b/app/src/main/res/drawable/orbot_disabled_dark.xml
@@ -1,5 +1,5 @@
-
+
, which is released under the 3-clause BSD license.
- Modifications copyright Soren Stoutner 2017. The resulting image is released under the GPLv3+ license. -->
+
, which is released under the 3-clause BSD license.
- Modifications copyright Soren Stoutner 2017. The resulting image is released under the GPLv3+ license. -->
+
, which is released under the 3-clause BSD license.
- Modifications copyright Soren Stoutner 2017. The resulting image is released under the GPLv3+ license. -->
+
+
. The resulting image is released under the GPLv3+ license. -->
-
. The resulting image is released under the GPLv3+ license. -->
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
diff --git a/app/src/main/res/drawable/theme_light.xml b/app/src/main/res/drawable/theme_light.xml
index df0b9bce..a9b10798 100644
--- a/app/src/main/res/drawable/theme_light.xml
+++ b/app/src/main/res/drawable/theme_light.xml
@@ -1,4 +1,4 @@
-
+
-
+
diff --git a/app/src/main/res/drawable/translucent_bar_disabled_dark.xml b/app/src/main/res/drawable/translucent_bar_disabled_dark.xml
index 73dba40a..ad6341a8 100644
--- a/app/src/main/res/drawable/translucent_bar_disabled_dark.xml
+++ b/app/src/main/res/drawable/translucent_bar_disabled_dark.xml
@@ -1,4 +1,4 @@
-
+
-
+
diff --git a/app/src/main/res/drawable/translucent_bar_disabled_light.xml b/app/src/main/res/drawable/translucent_bar_disabled_light.xml
index 3c0187d9..6d97bd73 100644
--- a/app/src/main/res/drawable/translucent_bar_disabled_light.xml
+++ b/app/src/main/res/drawable/translucent_bar_disabled_light.xml
@@ -1,4 +1,4 @@
-
+
-
+
diff --git a/app/src/main/res/drawable/translucent_bar_enabled_dark.xml b/app/src/main/res/drawable/translucent_bar_enabled_dark.xml
index fd2c1627..b44db6d2 100644
--- a/app/src/main/res/drawable/translucent_bar_enabled_dark.xml
+++ b/app/src/main/res/drawable/translucent_bar_enabled_dark.xml
@@ -1,4 +1,4 @@
-
+
-
+
diff --git a/app/src/main/res/drawable/translucent_bar_enabled_light.xml b/app/src/main/res/drawable/translucent_bar_enabled_light.xml
index 66f62723..0b48dfbc 100644
--- a/app/src/main/res/drawable/translucent_bar_enabled_light.xml
+++ b/app/src/main/res/drawable/translucent_bar_enabled_light.xml
@@ -1,4 +1,4 @@
-
+
-
+
diff --git a/app/src/main/res/drawable/translucent_bar_ghosted_dark.xml b/app/src/main/res/drawable/translucent_bar_ghosted_dark.xml
index 5f5ac4cc..153d2804 100644
--- a/app/src/main/res/drawable/translucent_bar_ghosted_dark.xml
+++ b/app/src/main/res/drawable/translucent_bar_ghosted_dark.xml
@@ -1,4 +1,4 @@
-
+
-
+
diff --git a/app/src/main/res/drawable/translucent_bar_ghosted_light.xml b/app/src/main/res/drawable/translucent_bar_ghosted_light.xml
index a1697000..d81dda65 100644
--- a/app/src/main/res/drawable/translucent_bar_ghosted_light.xml
+++ b/app/src/main/res/drawable/translucent_bar_ghosted_light.xml
@@ -1,4 +1,4 @@
-
+
-
+
diff --git a/app/src/main/res/drawable/user_agent_dark.xml b/app/src/main/res/drawable/user_agent_dark.xml
index 83c8d02b..7419f4d9 100644
--- a/app/src/main/res/drawable/user_agent_dark.xml
+++ b/app/src/main/res/drawable/user_agent_dark.xml
@@ -1,4 +1,4 @@
-
+
-
+
diff --git a/app/src/main/res/drawable/user_agent_light.xml b/app/src/main/res/drawable/user_agent_light.xml
index bf8899c0..05e5555b 100644
--- a/app/src/main/res/drawable/user_agent_light.xml
+++ b/app/src/main/res/drawable/user_agent_light.xml
@@ -1,4 +1,4 @@
-
+
-
+
diff --git a/app/src/main/res/drawable/warning.xml b/app/src/main/res/drawable/warning.xml
index c123ebb4..c4e2c125 100644
--- a/app/src/main/res/drawable/warning.xml
+++ b/app/src/main/res/drawable/warning.xml
@@ -1,6 +1,5 @@
-
-
-
+ android:layout_width="wrap_content"
+ android:padding="10dp"
+ android:orientation="vertical" >
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
+ android:text="@string/issued_to"
+ android:textAllCaps="true"
+ android:textStyle="bold"
+ android:textColor="?attr/sslTitle" />
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml
index 59abd866..292c2dca 100644
--- a/app/src/main/res/values-de/strings.xml
+++ b/app/src/main/res/values-de/strings.xml
@@ -153,6 +153,7 @@
URL laden
URL kopieren
+ Download URL
E-Mail-Adresse
E-Mail-Adresse kopieren
E-Mail senden
@@ -386,4 +387,7 @@
Lizenzen
Mitwirkende
Links
+
+
+ Zustimmung zur Werbung
\ No newline at end of file
diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml
index b997e808..74d33b53 100644
--- a/app/src/main/res/values-es/strings.xml
+++ b/app/src/main/res/values-es/strings.xml
@@ -130,6 +130,7 @@
Borrar cookies
Borrar almacenamiento DOM
Borrar datos de formulario
+ Diseño
Tamaño de fuente
25%
50%
diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml
index 4748157d..2bb74f0e 100644
--- a/app/src/main/res/values-it/strings.xml
+++ b/app/src/main/res/values-it/strings.xml
@@ -130,6 +130,7 @@
Elimina cookies
Elimina DOM storage
Elimina dati dei moduli
+ Layout
Dimensione font
25%
50%
@@ -230,8 +231,8 @@
è possibile anteporre *. a un dominio per includere tutti i sottodomini (es. *.stoutner.com)
- Impostazioni di default
- - Swipe per aggiornare abilitata
- - Swipe per aggiornare disabilitata
+ - Swipe per aggiornare abilitato
+ - Swipe per aggiornare disabilitato
- Impostazioni di default
@@ -240,8 +241,8 @@
- Impostazioni di default
- - Abilita Immagini
- - Disabilita Immagini
+ - Immagini abilitate
+ - Immagini disabilitate
Certificato SSL appuntato
Certificato SSL salvato
diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml
index 5f0c473f..2dbc44a4 100644
--- a/app/src/main/res/values-ru/strings.xml
+++ b/app/src/main/res/values-ru/strings.xml
@@ -131,6 +131,7 @@
ÐÑиÑÑиÑÑ cookie
ÐÑиÑÑиÑÑ Ñ
ÑанилиÑе DOM
ÐÑиÑÑиÑÑ Ð´Ð°Ð½Ð½Ñе ÑоÑмÑ
+ ÐнеÑний вид
Ð Ð°Ð·Ð¼ÐµÑ ÑÑиÑÑа
25%
50%
@@ -231,8 +232,8 @@
добавÑÑе *. Ð´Ð»Ñ Ð²ÐºÐ»ÑÑÐµÐ½Ð¸Ñ Ð²ÑеÑ
поддоменов (напÑ. * .yandex.ru)
- ÐаÑÑÑойки по ÑмолÑаниÑ
- - ÐоÑÑнÑÑÑ Ð´Ð»Ñ Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ enabled
- - ÐоÑÑнÑÑÑ Ð´Ð»Ñ Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ disabled
+ - ÐоÑÑнÑÑÑ Ð´Ð»Ñ Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ - вклÑÑено
+ - ÐоÑÑнÑÑÑ Ð´Ð»Ñ Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ - вÑклÑÑено
- ÐаÑÑÑойки по ÑмолÑаниÑ
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index f77ab2d7..f52a84dd 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -338,6 +338,8 @@
Clear the history and cache after each webpage finishes loading. Forward and back do not work in Incognito Mode.
Do Not Track
Send the Do Not Track header, which politely suggests that web servers not track this browser.
+ Allow screenshots
+ Allow screenshots, video recording, and viewing on non-secure displays. Changing this setting will restart Privacy Browser.
Block Lists
EasyList
Main ad blocking list.
diff --git a/app/src/main/res/xml/preferences.xml b/app/src/main/res/xml/preferences.xml
index 0348df7f..ace949a9 100644
--- a/app/src/main/res/xml/preferences.xml
+++ b/app/src/main/res/xml/preferences.xml
@@ -79,6 +79,12 @@
android:title="@string/do_not_track"
android:summary="@string/do_not_track_summary"
android:defaultValue="false" />
+
+