Update the Permission and the Privacy Policy tabs. Add a Clear History button.
authorSoren Stoutner <soren@stoutner.com>
Mon, 14 Nov 2016 18:52:15 +0000 (11:52 -0700)
committerSoren Stoutner <soren@stoutner.com>
Mon, 14 Nov 2016 18:52:15 +0000 (11:52 -0700)
19 files changed:
.idea/dictionaries/soren.xml
app/src/free/assets/de/about_privacy_policy.html
app/src/free/assets/en/about_permissions.html [new file with mode: 0644]
app/src/free/assets/en/about_privacy_policy.html
app/src/main/assets/de/about_changelog.html
app/src/main/assets/de/about_permissions.html
app/src/main/assets/de/about_privacy_policy.html
app/src/main/assets/en/about_changelog.html
app/src/main/assets/en/about_permissions.html
app/src/main/assets/en/about_privacy_policy.html
app/src/main/java/com/stoutner/privacybrowser/BookmarksActivity.java
app/src/main/java/com/stoutner/privacybrowser/HistoryArrayAdapter.java
app/src/main/java/com/stoutner/privacybrowser/MainWebViewActivity.java
app/src/main/java/com/stoutner/privacybrowser/UrlHistory.java
app/src/main/res/layout/bookmarks_coordinatorlayout.xml
app/src/main/res/layout/bookmarks_item_linearlayout.xml
app/src/main/res/layout/url_history_dialog.xml
app/src/main/res/values-de/strings.xml
app/src/main/res/values/strings.xml

index 2e3bd78321b5556f1e388ed307c1e8805c28ceb2..4f40564b62b341b0fa15915077fc21fc597982e3 100644 (file)
@@ -1,6 +1,7 @@
 <component name="ProjectDictionaryState">
   <dictionary name="soren">
     <words>
+      <w>aaaa</w>
       <w>adsense</w>
       <w>amiunique</w>
       <w>androidversion</w>
@@ -8,6 +9,7 @@
       <w>appbarlayout</w>
       <w>aren</w>
       <w>bebdb</w>
+      <w>beeb</w>
       <w>bookmarkname</w>
       <w>bookmarkurl</w>
       <w>buildapi</w>
       <w>displayorder</w>
       <w>dname</w>
       <w>downloadfile</w>
+      <w>dwallach</w>
       <w>eadd</w>
       <w>edittext</w>
       <w>exynos</w>
       <w>favoriteicon</w>
+      <w>fbee</w>
       <w>firebase</w>
       <w>gerlach</w>
       <w>intl</w>
@@ -69,6 +73,7 @@
       <w>webkitversion</w>
       <w>whatismyip</w>
       <w>zenlte</w>
+      <w>zeroflte</w>
     </words>
   </dictionary>
 </component>
\ No newline at end of file
index 8a49b66d2eb6f6a0450615b373ef57d6cad670c1..114b152b3cf394e507f530d900b94eeeb7d85fc9 100644 (file)
 <head>\r
     <style>\r
         h3 {\r
-        color: 0D4781;\r
+            color: 0D4781;\r
         }\r
 \r
         strong {\r
-        color: B71C1C;\r
+            color: B71C1C;\r
         }\r
 \r
         item {\r
-        color: 1976D2;\r
-        font-weight: bold;\r
+            color: 1976D2;\r
+            font-weight: bold;\r
         }\r
     </style>\r
 </head>\r
 \r
 <body>\r
 <h3>Privacy Browser Free</h3>\r
-\r
 <p><strong>Privacy Browser Free sammelt keinerlei Benutzerinformationen</strong>.</p>\r
 \r
 \r
 <h3>Werbung</h3>\r
-\r
 <p>Privacy Browser Free zeigt eine Bannerwerbung am unteren Rand des Bildschirms &uuml;ber Googles AdMob-Netzwerk,\r
     welches seine eigene <a href="https://www.google.com/intl/en/policies/privacy/">Datenschutzrichtlinien</a> hat.\r
     Beachten Sie, dass - solange Sie nicht <a href="http://www.techrepublic.com/article/pro-tip-how-to-opt-out-of-interest-based-ads-on-your-android-phone/">interessenbezogene Werbungen deaktiviert haben</a> -\r
     der Werbebetreibende eine Kopie Ihrer einmaligen, ger&auml;tebezogenen Werbe-ID bekommt, was es ihm erm&ouml;glicht, Ihr Ger&auml;tenutzung in verschiedenen Anwendungen nachzuverfolgen.\r
     AdMob sendet <em>anonymisierte Zusammenfassungen</em> der folgenden Informationen an Entwickler.\r
     <strong>Stoutner kann diese Informationen zu jedem Zweck nutzen</strong>.</p>\r
-\r
 <ul>\r
     <li><item>Anzeigen insgesamt</item></li>\r
     <li><item>Klicks insgesamt</item></li>\r
 \r
 \r
 <h3>Google Play-Bewertungen</h3>\r
-\r
 <p>Google Play hat seine eigenen <a href="https://www.google.com/intl/en/policies/privacy/">Datenschutzbestimmungen</a>.\r
     Google stellt den Entwicklern <em>anonymisierte Statistiken</em> der folgenden Informationen zu den Bewertungen.\r
     <strong>Stoutner kann diese Informationen f&uuml;r jeden Zweck benutzen</strong>.</p>\r
-\r
 <ul>\r
     <li><item>Land</item></li>\r
     <li><item>Sprache</item></li>\r
 \r
 \r
 <h3>Google Play Rezensionen</h3>\r
-\r
 <p>Google Play hat seine eigenen <a href="https://www.google.com/intl/en/policies/privacy/">Datenschutzbestimmungen</a>.\r
     Zus&auml;tzlich zum Namen des Verfassers, der Bewertung und der Rezension (welche alle &ouml;ffentlich sind)\r
     stellt Google einige oder alle der folgenden Informationen dem Entwickler zur Verf&uuml;gung.\r
     <strong>Stoutner kann diese Informationen zu jedem Zweck nutzen</strong>.</p>\r
-\r
 <ul>\r
     <li><item>Version-Code</item> (z. B. 7)</li>\r
     <li><item>Version-Name</item> (z. B. 1.6)</li>\r
diff --git a/app/src/free/assets/en/about_permissions.html b/app/src/free/assets/en/about_permissions.html
new file mode 100644 (file)
index 0000000..1c7983d
--- /dev/null
@@ -0,0 +1,60 @@
+<!--
+  Copyright 2016 Soren Stoutner <soren@stoutner.com>.
+
+  This file is part of Privacy Browser <https://www.stoutner.com/privacy-browser>.
+
+  Privacy Browser is free software: you can redistribute it and/or modify
+  it under the terms of the GNU General Public License as published by
+  the Free Software Foundation, either version 3 of the License, or
+  (at your option) any later version.
+
+  Privacy Browser is distributed in the hope that it will be useful,
+  but WITHOUT ANY WARRANTY; without even the implied warranty of
+  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+  GNU General Public License for more details.
+
+  You should have received a copy of the GNU General Public License
+  along with Privacy Browser.  If not, see <http://www.gnu.org/licenses/>. -->
+
+<html>
+<head>
+<style>
+    h3 {
+        color: 0D4781;
+    }
+</style>
+</head>
+
+<body>
+<h3>Have full network access</h3>
+<p><a href="https://developer.android.com/reference/android/Manifest.permission.html#INTERNET">android.permission.INTERNET</a></p>
+<p>Required for the WebView to access the internet.  Without this permission, Privacy Browser would be “No Browser: Protecting Your Privacy by Staying Completely
+    Off the Internet”.</p>
+
+<h3>Install shortcuts</h3>
+<p><a href="https://developer.android.com/reference/android/Manifest.permission.html#INSTALL_SHORTCUT">com.android.launcher.permission.INSTALL_SHORTCUT</a></p>
+<p>Required to add shortcuts for websites to the launcher desktop.</p>
+
+<br/>
+<hr/>
+<br/>
+
+<p>In addition, Privacy Browser Free displays ads from Google's AdMob network using the Firebase backend.  For the free flavor, Firebase adds the following permissions even though they are not listed in the manifest file.</p>
+
+<h3>View network connections</h3>
+<p><a href="https://developer.android.com/reference/android/Manifest.permission.html#ACCESS_NETWORK_STATE">android.permission.ACCESS_NETWORK_STATE</a></p>
+<p>Allows the ads to tell when you are connected to the internet and when you aren't (presumably so they don't try to reload an ad when you are disconnected).  They can also tell if you are connected via Wi-Fi, 2G, 3G, 4G, etc.</p>
+
+<h3>Prevent phone from sleeping</h3>
+<p><a href="https://developer.android.com/reference/android/Manifest.permission.html#WAKE_LOCK">android.permission.WAKE_LOCK</a></p>
+<p>Allows the ads to keep the processor from sleeping and the screen from dimming, although in my testing I don't think the ads actually do this.</p>
+
+<h3>Receive data from Internet</h3>
+<p><a href="http://androidpermissions.com/permission/com.google.android.c2dm.permission.RECEIVE">com.google.android.c2dm.permission.RECEIVE</a></p>
+<p>Allows Google to send information directly to the AdView without having to receive a request first (cloud-to-device messaging).</p>
+
+<h3>Receive data from Internet</h3>
+<p><a href="https://developers.google.com/cloud-messaging/android/client">com.stoutner.privacybrowser.free.permission.C2D_MESSAGE</a></p>
+<p>Secures the cloud-to-device messages so that only Privacy Browser Free can receive them.</p>
+</body>
+</html>
\ No newline at end of file
index 241dbc74b175e3b4c6129e0701adfd43d5b85d1b..49335556ed3c98818bc519e7dd2d903c69fbaac6 100644 (file)
 <head>
     <style>
         h3 {
-        color: 0D4781;
+            color: 0D4781;
         }
 
         strong {
-        color: B71C1C;
+            color: B71C1C;
         }
 
         item {
-        color: 1976D2;
-        font-weight: bold;
+            color: 1976D2;
+            font-weight: bold;
         }
     </style>
 </head>
 
 <body>
 <h3>Privacy Browser Free</h3>
-
 <p><strong>Privacy Browser Free does not collect any user information</strong>.</p>
 
 
-<h3>Advertisements</h3>
-
-<p>Privacy Browser Free displays a banner add across the bottom of the screen using the Google's AdMob network,
-    which has its <a href="https://www.google.com/intl/en/policies/privacy/">own privacy policy</a>.
-    Note that unless you have <a href="http://www.techrepublic.com/article/pro-tip-how-to-opt-out-of-interest-based-ads-on-your-android-phone/">opted out of interest-based ads</a>,
-    the advertiser will receive a copy of your unique device advertising ID, which allows them to track your device across apps.
-    AdMob reports <em>anonymized summaries</em> of the following information to developers.
-    <strong>Stoutner may use this information for any purpose</strong>.</p>
-
+<h3>Google Play</h3>
+<p>Google Play has its <a href="https://www.google.com/intl/en/policies/privacy/">own privacy policy</a>.
+    Google provides <em>anonymized summary installation information</em> to developers, including the number of
+    installs organized by the following categories. <strong>Stoutner may use this information for any purpose</strong>.
+    Reasonable effort is made to not use this information in a way that would make the user uncomfortable.</p>
 <ul>
-    <li><item>Total impressions</item></li>
-    <li><item>Total clicks</item></li>
-    <li><item>Platforms</item> (eg. high-end mobile devices, tablets)</li>
-    <li><item>Activity by country</item></li>
+    <li><item>Android version</item> (eg. Android 7.1)</li>
+    <li><item>Device</item> (eg. Samsung Galaxy S6 [zeroflte])</li>
+    <li><item>Tablets</item> (eg. Tablets 10" and above)</li>
+    <li><item>Country</item> (eg. United States)</li>
+    <li><item>Language</item> (eg. English [United States])</li>
+    <li><item>App version</item> (eg. 14)</li>
+    <li><item>Carrier</item> (eg. T-Mobile - US)</li>
 </ul>
 
 
 <h3>Google Play Ratings</h3>
-
 <p>Google Play has its <a href="https://www.google.com/intl/en/policies/privacy/">own privacy policy</a>.
     Google provides developers with <em>anonymized summaries</em> of the following information related to user ratings.
-    <strong>Stoutner may use this information for any purpose</strong>.</p>
-
+    <strong>Stoutner may use this information for any purpose</strong>. Reasonable effort is made
+    to not use this information in a way that would make the user uncomfortable.</p>
 <ul>
-    <li><item>Country</item></li>
-    <li><item>Language</item></li>
-    <li><item>App version</item></li>
-    <li><item>Android version</item></li>
-    <li><item>Device</item> (eg. Google Nexus 5X, Samsung Galaxy Note3)</li>
+    <li><item>Country</item> (eg. United States)</li>
+    <li><item>Language</item> (eg. English)</li>
+    <li><item>App version</item> (eg. 14)</li>
+    <li><item>Android version</item> (eg. Android 7.1)</li>
+    <li><item>Device</item> (eg. Google Nexus 5X [bullhead])</li>
     <li><item>Tablets</item> (eg. Tablets 10" and above)</li>
 </ul>
 
 
 <h3>Google Play Reviews</h3>
-
-<p>Google Play has it <a href="https://www.google.com/intl/en/policies/privacy/">own privacy policy</a>.
+<p>Google Play has its <a href="https://www.google.com/intl/en/policies/privacy/">own privacy policy</a>.
     In addition to the name of the reviewer, the rating, and the text of the review (which are all available publicly),
-    Google provides some or all of the following information to the developer.
-    <strong>Stoutner may use this information for any purpose</strong>.</p>
-
+    Google provides some or all of the following information to the developer. <strong>Stoutner may
+    use this information for any purpose</strong>. Reasonable effort is made to not use this
+    information in a way that would make the reviewer uncomfortable.</p>
 <ul>
     <li><item>Version code</item> (eg. 7)</li>
     <li><item>Version name</item> (eg. 1.6)</li>
     <li><item>Device language</item> (eg. English)</li>
 </ul>
 
+
+<h3>Advertisements</h3>
+<p>Privacy Browser Free displays a banner ad across the bottom of the screen using Google's AdMob network,
+    which has its <a href="https://www.google.com/intl/en/policies/privacy/">own privacy policy</a>.
+    Note that unless you have <a href="http://www.techrepublic.com/article/pro-tip-how-to-opt-out-of-interest-based-ads-on-your-android-phone/">opted out of interest-based ads</a>,
+    the advertiser will receive a copy of your unique device advertising ID, which allows them to track your device across apps.
+    AdMob reports <em>anonymized summaries</em> of the following information to developers.
+    <strong>Stoutner may use this information for any purpose</strong>. Reasonable effort is made to
+    not use this information in a way that would make the user uncomfortable.</p>
+<ul>
+    <li><item>Total impressions</item></li>
+    <li><item>Total clicks</item></li>
+    <li><item>Platforms</item> (eg. high-end mobile devices, tablets)</li>
+    <li><item>Activity by country</item></li>
+</ul>
+
+
+<h3>Direct Communications</h3>
+<p>Users may choose to send direct communications to Stoutner, like email messages and comments on
+    <a href="https://www.stoutner.com/">stoutner.com</a>. <strong>Stoutner may use this information
+        for any purpose</strong>. Reasonable effort is made to not use this information in a way that
+    would make the author uncomfortable.</p>
+
 <hr />
-<p style="text-align: center;"><em>Revision 1.2.1, 2 November 2016</em></p>
+<p style="text-align: center;"><em>Revision 1.3, 14 November 2016</em></p>
 </body>
 </html>
\ No newline at end of file
index b3fda20458e9dfbf6b17aab08b29c6e0e07641e8..aeb2cc2278d435f218ac3cb7f9ea39ae4b24a8df 100644 (file)
@@ -33,7 +33,7 @@
 <body>\r
 \r
 <h3>1.12 (version code 14)</h3>\r
-<p>9. November 2016 - Mindest-API 19, Ziel-API 24</p>\r
+<p><a href="https://git.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=3f2c7129a56e84d34cb07c151baf87bdea94dd12">9. November 2016</a> - Mindest-API 19, Ziel-API 24</p>\r
 <ul>\r
     <li>Hinzuf&uuml;gen einer <a href="https://redmine.stoutner.com/issues/24">Historie f&uuml;r Vor- und Zur&uuml;ck-Schaltfl&auml;chen</a>.</li>\r
     <li>Gedr&uuml;ckt halten bewirkt nun <a href="https://redmine.stoutner.com/issues/63">das Anzeigen der Zieladresse von URLs</a> und bietet die M&ouml;glichkeit, <a href="https://redmine.stoutner.com/issues/10">Bilder anzuzeigen oder herunterzuladen</a>.</li>\r
index da648f8c22c321f0cc63279294fa7c7374dc2205..ebea067185e50613de5ea8da9c552887d114494f 100644 (file)
 <head>\r
     <style>\r
         h3 {\r
-        color: 0D4781;\r
+            color: 0D4781;\r
         }\r
     </style>\r
 </head>\r
 \r
 <body>\r
 <h3>Voller Netzwerkzugriff</h3>\r
-\r
 <p><a href="https://developer.android.com/reference/android/Manifest.permission.html#INTERNET">android.permission.INTERNET</a></p>\r
-\r
 <p>Ben&ouml;tigt, damit WebView das Internet nutzen kann. Ohne diese Berechtigung w&auml;re Privacy Browser "Kein Browser: Sch&uuml;tzt Ihre Privatsph&auml;re durch Fernbleiben von jeglicher Konnektivit&auml;t".</p>\r
 \r
 \r
 <h3>Verkn&uuml;pfungen installieren</h3>\r
-\r
 <p><a href="https://developer.android.com/reference/android/Manifest.permission.html#INSTALL_SHORTCUT">com.android.launcher.permission.INSTALL_SHORTCUT</a></p>\r
-\r
 <p>Ben&ouml;tigt, um Verkn&uuml;pfungen zu Websites auf Ihrer Startseite zu erstellen.</p>\r
 </body>\r
 </html>
\ No newline at end of file
index a8f29ff1a5b05189246121f03dc75be21e77bd94..0015f81af1cfc48485958182f93ce2b9e332ff29 100644 (file)
 <head>
     <style>
         h3 {
-        color: 0D4781;
+            color: 0D4781;
         }
 
         strong {
-        color: B71C1C;
+            color: B71C1C;
         }
 
         item {
-        color: 1976D2;
-        font-weight: bold;
+            color: 1976D2;
+            font-weight: bold;
         }
     </style>
 </head>
 
 <body>
 <h3>Privacy Browser</h3>
-
 <p><strong>Privacy Browser sammelt keinerlei Benutzerinformationen</strong>.</p>
 
 
 <h3>Google Play-Bewertungen</h3>
-
 <p>Google Play hat seine eigenen <a href="https://www.google.com/intl/en/policies/privacy/">Datenschutzbestimmungen</a>.
     Google stellt den Entwicklern <em>anonymisierte Statistiken</em> der folgenden Informationen zu den Bewertungen.
     <strong>Stoutner kann diese Informationen f&uuml;r jeden Zweck benutzen</strong>.</p>
-
 <ul>
     <li><item>Land</item></li>
     <li><item>Sprache</item></li>
 
 
 <h3>Google Play Rezensionen</h3>
-
 <p>Google Play hat seine eigenen <a href="https://www.google.com/intl/en/policies/privacy/">Datenschutzbestimmungen</a>.
     Zus&auml;tzlich zum Namen des Verfassers, der Bewertung und der Rezension (welche alle &ouml;ffentlich sind)
     stellt Google einige oder alle der folgenden Informationen dem Entwickler zur Verf&uuml;gung.
     <strong>Stoutner kann diese Informationen zu jedem Zweck nutzen</strong>.</p>
-
 <ul>
     <li><item>Version-Code</item> (z. B. 7)</li>
     <li><item>Version-Name</item> (z. B. 1.6)</li>
index 4d162a9b8d782bbc9b9d04620cfca198b9f1d9e5..0472baf14c4883692a8a2d065290455a78c8d8fe 100644 (file)
 <body>
 
 <h3>1.12 (version code 14)</h3>
-<p>9 November 2016 - minimum API 19, target API 24</p>
+<p><a href="https://git.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=3f2c7129a56e84d34cb07c151baf87bdea94dd12">9 November 2016</a> - minimum API 19, target API 24</p>
 <ul>
     <li>Add a <a href="https://redmine.stoutner.com/issues/24">forward and back history list</a>.</li>
     <li>Long press now <a href="https://redmine.stoutner.com/issues/63">displays target URLs</a> and the option to <a href="https://redmine.stoutner.com/issues/10">view or download pictures</a>.</li>
     <li>Added <a href="https://redmine.stoutner.com/issues/9">Find on Page</a>.</li>
     <li>Completely <a href="https://redmine.stoutner.com/issues/69">remove Privacy Browser from RAM</a> on "Clear and Exit".</li>
-    <li>Fix a crash when <a href="https://redmine.stoutner.com/issues/70">displaying an SSL Certificate error</a> in Android Kitkat and Lollipop.</li>
-    <li>Fix a crash on some file downloades caused by a <a href="https://redmine.stoutner.com/issues/71">failure to parse the Content-Disposition header</a> correctly.</li>
+    <li>Fix a crash when <a href="https://redmine.stoutner.com/issues/70">displaying an SSL Certificate error</a> in Android KitKat and Lollipop.</li>
+    <li>Fix a crash on some file downloads caused by a <a href="https://redmine.stoutner.com/issues/71">failure to parse the Content-Disposition header</a> correctly.</li>
     <li>Updated German translation provided by <a href="mailto:aaron@gerlach.com">Aaron Gerlach</a>.</li>
 </ul>
 
index b40f8bf62b74b6a1ad09c84ac696b21132a0582e..c6abfecbe7e203204825964eb235dafc0bed4958 100644 (file)
 
 <html>
 <head>
-<style>
-    h3 {
-        color: 0D4781;
-    }
-</style>
+    <style>
+        h3 {
+            color: 0D4781;
+        }
+    </style>
 </head>
 
 <body>
 <h3>Have full network access</h3>
-
 <p><a href="https://developer.android.com/reference/android/Manifest.permission.html#INTERNET">android.permission.INTERNET</a></p>
-
 <p>Required for the WebView to access the internet.  Without this permission, Privacy Browser would be “No Browser: Protecting Your Privacy by Staying Completely
     Off the Internet”.</p>
 
 
 <h3>Install shortcuts</h3>
-
 <p><a href="https://developer.android.com/reference/android/Manifest.permission.html#INSTALL_SHORTCUT">com.android.launcher.permission.INSTALL_SHORTCUT</a></p>
-
 <p>Required to add shortcuts for websites to the launcher desktop.</p>
 </body>
 </html>
\ No newline at end of file
index 83ecfdaa4e23bcf51ab87eac26925b870db02ddd..6b1eb522897fd9d7c5bfd53401792947307c821c 100644 (file)
 
 <html>
 <head>
-<style>
-    h3 {
-        color: 0D4781;
-    }
-
-    strong {
-        color: B71C1C;
-    }
-
-    item {
-        color: 1976D2;
-        font-weight: bold;
-    }
-</style>
+    <style>
+        h3 {
+            color: 0D4781;
+        }
+
+        strong {
+            color: B71C1C;
+        }
+
+        item {
+            color: 1976D2;
+            font-weight: bold;
+        }
+    </style>
 </head>
 
 <body>
 <h3>Privacy Browser</h3>
-
 <p><strong>Privacy Browser does not collect any user information</strong>.</p>
 
 
-<h3>Google Play Ratings</h3>
+<h3>Google Play</h3>
+<p>Google Play has its <a href="https://www.google.com/intl/en/policies/privacy/">own privacy policy</a>.
+    Google provides <em>anonymized summary installation information</em> to developers, including the number of
+    installs organized by the following categories. <strong>Stoutner may use this information for any purpose</strong>.
+    Reasonable effort is made to not use this information in a way that would make the user uncomfortable.</p>
+<ul>
+    <li><item>Android version</item> (eg. Android 7.1)</li>
+    <li><item>Device</item> (eg. Samsung Galaxy S6 [zeroflte])</li>
+    <li><item>Tablets</item> (eg. Tablets 10" and above)</li>
+    <li><item>Country</item> (eg. United States)</li>
+    <li><item>Language</item> (eg. English [United States])</li>
+    <li><item>App version</item> (eg. 14)</li>
+    <li><item>Carrier</item> (eg. T-Mobile - US)</li>
+</ul>
+
 
+<h3>Google Play Ratings</h3>
 <p>Google Play has its <a href="https://www.google.com/intl/en/policies/privacy/">own privacy policy</a>.
     Google provides developers with <em>anonymized summaries</em> of the following information related to user ratings.
-    <strong>Stoutner may use this information for any purpose</strong>.</p>
-
+    <strong>Stoutner may use this information for any purpose</strong>. Reasonable effort is made
+    to not use this information in a way that would make the user uncomfortable.</p>
 <ul>
-    <li><item>Country</item></li>
-    <li><item>Language</item></li>
-    <li><item>App version</item></li>
-    <li><item>Android version</item></li>
-    <li><item>Device</item> (eg. Google Nexus 5X, Samsung Galaxy Note3)</li>
+    <li><item>Country</item> (eg. United States)</li>
+    <li><item>Language</item> (eg. English)</li>
+    <li><item>App version</item> (eg. 14)</li>
+    <li><item>Android version</item> (eg. Android 7.1)</li>
+    <li><item>Device</item> (eg. Google Nexus 5X [bullhead])</li>
     <li><item>Tablets</item> (eg. Tablets 10" and above)</li>
 </ul>
 
 
 <h3>Google Play Reviews</h3>
-
-<p>Google Play has it <a href="https://www.google.com/intl/en/policies/privacy/">own privacy policy</a>.
+<p>Google Play has its <a href="https://www.google.com/intl/en/policies/privacy/">own privacy policy</a>.
     In addition to the name of the reviewer, the rating, and the text of the review (which are all available publicly),
-    Google provides some or all of the following information to the developer.
-    <strong>Stoutner may use this information for any purpose</strong>.</p>
-
+    Google provides some or all of the following information to the developer. <strong>Stoutner may
+    use this information for any purpose</strong>. Reasonable effort is made to not use this
+    information in a way that would make the reviewer uncomfortable.</p>
 <ul>
     <li><item>Version code</item> (eg. 7)</li>
     <li><item>Version name</item> (eg. 1.6)</li>
     <li><item>Device language</item> (eg. English)</li>
 </ul>
 
+
+<h3>Direct Communications</h3>
+<p>Users may choose to send direct communications to Stoutner, like email messages and comments on
+    <a href="https://www.stoutner.com/">stoutner.com</a>. <strong>Stoutner may use this information
+    for any purpose</strong>. Reasonable effort is made to not use this information in a way that
+    would make the author uncomfortable.</p>
+
 <hr />
-<p style="text-align: center;"><em>Revision 1.2, 3 June 2016</em></p>
+<p style="text-align: center;"><em>Revision 1.3, 14 November 2016</em></p>
 </body>
 </html>
\ No newline at end of file
index 3941e634acaf030f3999423669c948e251227c20..15264c691ba152eab71adc63f8e214029a69fd68 100644 (file)
@@ -789,9 +789,8 @@ public class BookmarksActivity extends AppCompatActivity implements CreateBookma
 
                 // Make the font bold for folders.
                 if (cursor.getInt(cursor.getColumnIndex(BookmarksDatabaseHandler.IS_FOLDER)) == 1) {
-                    // The first argument is `null` because we don't want to change the font.
-                    bookmarkNameTextView.setTypeface(null, Typeface.BOLD);
-                } else {  // Reset the font to default.
+                    bookmarkNameTextView.setTypeface(Typeface.DEFAULT_BOLD);
+                } else {  // Reset the font to default for normal bookmarks.
                     bookmarkNameTextView.setTypeface(Typeface.DEFAULT);
                 }
             }
index 414f5fc4bb1b3cad0f4d78365e7546c4cfa94d3f..6b7f056196fc56f68e16b4f51af8f51645a2fb37 100644 (file)
@@ -20,8 +20,8 @@
 package com.stoutner.privacybrowser;
 
 import android.content.Context;
+import android.graphics.Typeface;
 import android.support.annotation.NonNull;
-import android.support.v4.content.ContextCompat;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
@@ -67,11 +67,11 @@ class HistoryArrayAdapter extends ArrayAdapter<History> {
         favoriteIconImageView.setImageBitmap(history.entryFavoriteIcon);
         urlTextView.setText(history.entryUrl);
 
-        // Set the URL text for `currentPage` to be grey.
+        // Set the URL text for `currentPage` to be bold.
         if (position == currentPage) {
-            urlTextView.setTextColor(ContextCompat.getColor(getContext(), R.color.grey_500));
-        } else {
-            urlTextView.setTextColor(ContextCompat.getColor(getContext(), R.color.black));
+            urlTextView.setTypeface(Typeface.DEFAULT_BOLD);
+        } else {  // Set the default typeface for all the other entries.
+            urlTextView.setTypeface(Typeface.DEFAULT);
         }
 
         // Return the modified `convertView`.
index 779d2d69b91a0e1c6d299c4dab2315439a063a75..077aa49b06e665b4c3cb7cafa72481f7ca3ebe44 100644 (file)
@@ -1288,6 +1288,12 @@ public class MainWebViewActivity extends AppCompatActivity implements Navigation
         mainWebView.goBackOrForward(moveBackOrForwardSteps);
     }
 
+    @Override
+    public void onClearHistory() {
+        // Clear the history.
+        mainWebView.clearHistory();
+    }
+
     // Override onBackPressed to handle the navigation drawer and mainWebView.
     @Override
     public void onBackPressed() {
@@ -1309,6 +1315,10 @@ public class MainWebViewActivity extends AppCompatActivity implements Navigation
 
     @Override
     public void onPause() {
+        // Pause `mainWebView`.
+        mainWebView.onPause();
+        mainWebView.pauseTimers();
+
         // We need to pause the adView or it will continue to consume resources in the background on the free flavor.
         BannerAd.pauseAd(adView);
 
@@ -1319,6 +1329,10 @@ public class MainWebViewActivity extends AppCompatActivity implements Navigation
     public void onResume() {
         super.onResume();
 
+        // Resume `mainWebView`.
+        mainWebView.resumeTimers();
+        mainWebView.onResume();
+
         // We need to resume the adView for the free flavor.
         BannerAd.resumeAd(adView);
     }
index d2d4fecde081bf3e4ee1327243f38212e9f40c3f..ec0b45e455acc659acc7c303077bfcf4079ddad9 100644 (file)
@@ -150,6 +150,9 @@ public class UrlHistory extends AppCompatDialogFragment{
     public interface UrlHistoryListener {
         // Send back the number of steps to move forward or back.
         void onUrlHistoryEntrySelected(int moveBackOrForwardSteps);
+
+        // Clear the history.
+        void onClearHistory();
     }
 
     // `urlHistoryListener` is used in `onAttach()` and `onCreateDialog()`.
@@ -185,7 +188,16 @@ public class UrlHistory extends AppCompatDialogFragment{
         dialogBuilder.setView(layoutInflater.inflate(R.layout.url_history_dialog, null));
 
         // Set an `onClick()` listener on the negative button.
-        dialogBuilder.setNegativeButton(R.string.close, new DialogInterface.OnClickListener() {
+        dialogBuilder.setNegativeButton(R.string.clear_history, new DialogInterface.OnClickListener() {
+            @Override
+            public void onClick(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.
index c055ea9984aafa47013a30f84e42b3d61a2ba1b9..4cdcb285be67edd864caaf25c2b5804944a8e2b2 100644 (file)
@@ -52,8 +52,7 @@
         </android.support.design.widget.AppBarLayout>
 
         <!-- `android:choiceMode="multipleChoiceModal"` allows the contextual action menu to select more than one item at a time.
-            `android:dividerHeight` must be specified with `android:divider` or the height will be `0dp`.
-            In our case we want the height to be `0dp`. -->
+            `android:dividerHeight` must be specified with `android:divider` or the height will be `0dp`.  In our case we want the height to be `0dp`. -->
         <ListView
             android:id="@+id/bookmarks_listview"
             android:layout_height="match_parent"
index a30fde520ca13d3302ac134b622fb8ad6e46e589..6b09f2f1916e2dc108a85f2d20806df473855e92 100644 (file)
@@ -42,5 +42,6 @@
         android:textColor="@color/black"
         android:textSize="22sp"
         android:layout_margin="10dp"
-        android:maxLines="1" />
+        android:maxLines="1"
+        android:ellipsize="end" />
 </LinearLayout>
\ No newline at end of file
index 0a32dfcbfe0a8d173a1bde9e81ad2b0cf451964d..b5e14f705f7fb1f64f6c04a8d83ea8e03d73d231 100644 (file)
   You should have received a copy of the GNU General Public License
   along with Privacy Browser.  If not, see <http://www.gnu.org/licenses/>. -->
 
+<!-- `android:dividerHeight` must be specified with `android:divider` or the height will be `0dp`.  In our case we want the height to be `0dp`. -->
 <ListView
     xmlns:android="http://schemas.android.com/apk/res/android"
     android:id="@+id/history_listview"
     android:layout_height="wrap_content"
-    android:layout_width="wrap_content" />
\ No newline at end of file
+    android:layout_width="wrap_content"
+    android:divider="@color/white"
+    android:dividerHeight="0dp" />
\ No newline at end of file
index 5ba95cf3dbef2c04dd46092a720a0230bb229769..e7a22a49aba084098c9deb46263a09b6371fc78e 100644 (file)
@@ -92,6 +92,7 @@
     <string name="back">Zurück</string>
     <string name="forward">Vorwärts</string>
     <string name="history">Verlauf</string>
+        <string name="clear_history">Verlauf löschen</string>
     <string name="bookmarks">Lesezeichen</string>
     <string name="downloads">Downloads</string>
     <string name="settings">Einstellungen</string>
     <string name="javascript_disabled_search">Suchmaschine bei deaktiviertem JavaScript</string>
     <string-array name="javascript_disabled_search_entries">
         <item>DuckDuckGo</item>
+        <item>StartPage</item>
         <item>Google</item>
         <item>Bing</item>
         <item>Yahoo</item>
-        <item>StartPage</item>
         <item>Qwant</item>
         <item>Eigene</item>
     </string-array>
     <string name="javascript_enabled_search">Suchmaschine bei aktiviertem JavaScript</string>
     <string-array name="javascript_enabled_search_entries">
         <item>DuckDuckGo</item>
+        <item>StartPage</item>
         <item>Google</item>
         <item>Bing</item>
         <item>Yahoo</item>
-        <item>StartPage</item>
         <item>Qwant</item>
         <item>Eigene</item>
     </string-array>
index 26f41f3b3eb429b9550e5c02bb4b3af59f092b4f..a8d6f5c7fd93b9359e5cc5115d49e9b66576bcb4 100644 (file)
@@ -91,6 +91,7 @@
     <string name="back">Back</string>
     <string name="forward">Forward</string>
     <string name="history">History</string>
+        <string name="clear_history">Clear History</string>
     <string name="bookmarks">Bookmarks</string>
     <string name="downloads">Downloads</string>
     <string name="settings">Settings</string>
         <string name="javascript_disabled_search">JavaScript-disabled search</string>
         <string-array name="javascript_disabled_search_entries">
             <item>DuckDuckGo</item>
+            <item>StartPage</item>
             <item>Google</item>
             <item>Bing</item>
             <item>Yahoo</item>
-            <item>StartPage</item>
             <item>Qwant</item>
             <item>Custom</item>
         </string-array>
         <string-array name="javascript_disabled_search_entry_values" translatable="false">  <!-- None of the items in this `string-array` should be translated. -->
             <item>https://duckduckgo.com/html/?q=</item>
+            <item>https://www.startpage.com/do/search?q=</item>
             <item>https://www.google.com/search?q=</item>
             <item>https://www.bing.com/search?q=</item>
             <item>https://search.yahoo.com/mobile/s?nojs=1&amp;p=</item>
-            <item>https://www.startpage.com/do/search?q=</item>
             <item>https://lite.qwant.com/?q=</item>
             <item>Custom URL</item>  <!-- This item must not be translated into other languages because it is referenced in code.  It is never displayed on the screen. -->
         </string-array>
         <string name="javascript_enabled_search">JavaScript-enabled search</string>
         <string-array name="javascript_enabled_search_entries">
             <item>DuckDuckGo</item>
+            <item>StartPage</item>
             <item>Google</item>
             <item>Bing</item>
             <item>Yahoo</item>
-            <item>StartPage</item>
             <item>Qwant</item>
             <item>Custom</item>
         </string-array>
         <string-array name="javascript_enabled_search_entry_values" translatable="false">  <!-- None of the items in this `string-array` should be translated. -->
             <item>https://duckduckgo.com/?q=</item>
+            <item>https://www.startpage.com/do/search?q=</item>
             <item>https://www.google.com/search?q=</item>
             <item>https://www.bing.com/search?q=</item>
             <item>https://search.yahoo.com/mobile/s?p=</item>
-            <item>https://www.startpage.com/do/search?q=</item>
             <item>https://www.qwant.com/?q=</item>
             <item>Custom URL</item>  <!-- This item must not be translated into other languages because it is referenced in code.  It is never displayed on the screen. -->
         </string-array>