Pass cookies (if enabled) to download manager. This allows downloading of files...
authorSoren Stoutner <soren@stoutner.com>
Tue, 24 Jan 2017 22:45:43 +0000 (15:45 -0700)
committerSoren Stoutner <soren@stoutner.com>
Tue, 24 Jan 2017 22:45:43 +0000 (15:45 -0700)
.idea/dictionaries/soren.xml
app/src/free/assets/es/about_privacy_policy.html [new file with mode: 0644]
app/src/free/assets/it/about_permissions.html [new file with mode: 0644]
app/src/free/assets/it/about_privacy_policy.html [new file with mode: 0644]
app/src/main/assets/de/about_contributors.html
app/src/main/assets/en/about_contributors.html
app/src/main/assets/es/about_contributors.html
app/src/main/assets/it/about_contributors.html
app/src/main/java/com/stoutner/privacybrowser/activities/MainWebView.java

index a3bba35f1392eabdb27658648a1e9c5ea9530911..b75603111c825d4ab7dd966176ed675fc474f9b6 100644 (file)
@@ -44,6 +44,7 @@
       <w>ipleak</w>
       <w>isfolder</w>
       <w>khtml</w>
+      <w>knackstedt</w>
       <w>konqueror</w>
       <w>linearlayout</w>
       <w>listview</w>
diff --git a/app/src/free/assets/es/about_privacy_policy.html b/app/src/free/assets/es/about_privacy_policy.html
new file mode 100644 (file)
index 0000000..dfb197a
--- /dev/null
@@ -0,0 +1,122 @@
+<!--
+  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;
+        }
+
+        strong {
+            color: B71C1C;
+        }
+
+        item {
+            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>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 users 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>. Reasonable effort is made
+    to not use this information in a way that would make users uncomfortable.</p>
+<ul>
+    <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 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>. 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>Android version</item> (eg. Android 5.1)</li>
+    <li><item>Device</item> (eg. Galaxy S6 Edge+ [zenlte])</li>
+    <li><item>Manufacturer</item> (eg. Samsung)</li>
+    <li><item>Device type</item> (eg. Phone)</li>
+    <li><item>CPU make</item> (eg. Samsung)</li>
+    <li><item>CPU model</item> (eg. Exynos 7420)</li>
+    <li><item>Screen density</item> (eg. 560 dpi)</li>
+    <li><item>Screen size</item> (eg. 2560 x 1440)</li>
+    <li><item>RAM</item> (eg. 4096 MB)</li>
+    <li><item>Native platform</item> (eg. armeabi-v7a,armeabi,arm64v8a)</li>
+    <li><item>OpenGL ES version</item> (eg. 3.1)</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 users 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.3, 14 November 2016</em></p>
+</body>
+</html>
\ No newline at end of file
diff --git a/app/src/free/assets/it/about_permissions.html b/app/src/free/assets/it/about_permissions.html
new file mode 100644 (file)
index 0000000..fe27890
--- /dev/null
@@ -0,0 +1,59 @@
+<!--
+  Copyright 2016-2017 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
diff --git a/app/src/free/assets/it/about_privacy_policy.html b/app/src/free/assets/it/about_privacy_policy.html
new file mode 100644 (file)
index 0000000..54aba7b
--- /dev/null
@@ -0,0 +1,122 @@
+<!--
+  Copyright 2016-2017 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;
+            }
+
+            strong {
+                color: B71C1C;
+            }
+
+            item {
+                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>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 users 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>. Reasonable effort is made
+            to not use this information in a way that would make users uncomfortable.</p>
+        <ul>
+            <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 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>. 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>Android version</item> (eg. Android 5.1)</li>
+            <li><item>Device</item> (eg. Galaxy S6 Edge+ [zenlte])</li>
+            <li><item>Manufacturer</item> (eg. Samsung)</li>
+            <li><item>Device type</item> (eg. Phone)</li>
+            <li><item>CPU make</item> (eg. Samsung)</li>
+            <li><item>CPU model</item> (eg. Exynos 7420)</li>
+            <li><item>Screen density</item> (eg. 560 dpi)</li>
+            <li><item>Screen size</item> (eg. 2560 x 1440)</li>
+            <li><item>RAM</item> (eg. 4096 MB)</li>
+            <li><item>Native platform</item> (eg. armeabi-v7a,armeabi,arm64v8a)</li>
+            <li><item>OpenGL ES version</item> (eg. 3.1)</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 users 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.3, 14 November 2016</em></p>
+    </body>
+</html>
\ No newline at end of file
index 1cdf170c86e7d45c977e46b4b3529759d9a1abff..059e90cdee43268772d2de84c13b85da1975e462 100644 (file)
   <http://www.gnu.org/licenses/>. -->
 
 <html>
-<head>
-    <style>
-        h3 {
-        color: 0D4781;
-        }
-    </style>
-</head>
-
-<body>
-<h3>Leitende Entwickler</h3>
-
-<p>Privacy Browser ist prim&auml;r entwickelt von <a href="mailto:soren@stoutner.com">Soren Stoutner</a>.</p>
-
-
-<h3>Mitwirkende</h3>
-
-<p><a href="mailto:aaron@gerlach.com">Aaron Gerlach</a>: Deutsche &Uuml;bersetzung</p>
-<p>Jose A. Le&oacute;n Becerra:  Spanisch &Uuml;bersetzung</p>
-<p>Francesco Buratti:  Italienisch &Uuml;bersetzung</p>
-
-<br/>
-<p>Mitwirkung ist willkommen in Form von <a href="https://www.stoutner.com/privacy-browser/contributors/">Code und &Uuml;bersetzung</a>.</p>
-</body>
+    <head>
+        <style>
+            h3 {
+                color: 0D4781;
+            }
+        </style>
+    </head>
+
+    <body>
+        <h3>Leitende Entwickler</h3>
+        <p>Privacy Browser ist prim&auml;r entwickelt von <a href="mailto:soren@stoutner.com">Soren Stoutner</a>.</p>
+
+        <h3>Coders</h3>
+        Hendrik Knackstedt
+
+        <h3>Mitwirkende</h3>
+        <p><a href="mailto:aaron@gerlach.com">Aaron Gerlach</a>: Deutsche &Uuml;bersetzung</p>
+        <p>Jose A. Le&oacute;n Becerra:  Spanisch &Uuml;bersetzung</p>
+        <p>Francesco Buratti:  Italienisch &Uuml;bersetzung</p>
+
+        <br/>
+        <p>Mitwirkung ist willkommen in Form von <a href="https://www.stoutner.com/privacy-browser/contributors/">Code und &Uuml;bersetzung</a>.</p>
+    </body>
 </html>
\ No newline at end of file
index e889102087c7dfc504da4a5ead5d700576f522df..afca93606305a54197dfd9466a6596ec7700022a 100644 (file)
@@ -29,6 +29,8 @@
         <h3>Principal Developer</h3>
         <p>Privacy Browser is primarily developed by <a href="mailto:soren@stoutner.com">Soren Stoutner</a>.</p>
 
+        <h3>Coders</h3>
+        Hendrik Knackstedt
 
         <h3>Translators</h3>
         <a href="mailto:aaron@gerlach.com">Aaron Gerlach</a>:  German Translation<br/>
index 1d0074b4aa93823ca7002eacd091adb387ec8ef6..2a3b29f0a61a6d3585e2eea58b6d02f6c7c840fa 100644 (file)
 
     <body>
         <h3>Principle Developers</h3>
-
         <p>Privacy Browser is primarily developed by <a href="mailto:soren@stoutner.com">Soren Stoutner</a>.</p>
 
+        <h3>Coders</h3>
+        Hendrik Knackstedt
 
         <h3>Contributors</h3>
-
         <p><a href="mailto:aaron@gerlach.com">Aaron Gerlach</a>:  German Translation</p>
         <p>Jose A. Le&oacute;n Becerra:  Spanish Translation</p>
         <p>Francesco Buratti:  Italian Translation</p>
index df5e4e2818bba311fc9d39281eda0dd20b66e39a..e6635c1344bd21483578460307046022e9ed41c6 100644 (file)
@@ -31,6 +31,8 @@
         <h3>Sviluppatori</h3>
         <p>Privacy Browser &egrave; sviluppato da <a href="mailto:soren@stoutner.com">Soren Stoutner</a>.</p>
 
+        <h3>Coders</h3>
+        Hendrik Knackstedt
 
         <h3>Traduttori</h3>
         <a href="mailto:aaron@gerlach.com">Aaron Gerlach</a>:  Traduzione in Tedesco<br/>
index 26237d7506af1cd5ee78c42c2e3fb7032031cced..542a1baf0e296159b4d8b303b117764c13359063 100644 (file)
@@ -1,6 +1,8 @@
 /**
  * Copyright 2015-2017 Soren Stoutner <soren@stoutner.com>.
  *
+ * Download cookie code contributed 2017 Hendrik Knackstedt.  Copyright assigned to 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
@@ -152,10 +154,10 @@ public class MainWebView extends AppCompatActivity implements NavigationView.OnN
     // It is `Boolean` instead of `boolean` because `applySettings()` needs to know if it is `null`.
     private Boolean javaScriptEnabled;
 
-    // `firstPartyCookiesEnabled` is used in `onCreate()`, `onCreateOptionsMenu()`, `onPrepareOptionsMenu()`, `onOptionsItemSelected()`, and `applySettings()`.
+    // `firstPartyCookiesEnabled` is used in `onCreate()`, `onCreateOptionsMenu()`, `onPrepareOptionsMenu()`, `onOptionsItemSelected()`, `onDownloadImage()`, `onDownloadFile()`, and `applySettings()`.
     private boolean firstPartyCookiesEnabled;
 
-    // `thirdPartyCookiesEnabled` used in `onCreate()`, `onCreateOptionsMenu()`, `onPrepareOptionsMenu()`, `onOptionsItemSelected()`, and `applySettings()`.
+    // `thirdPartyCookiesEnabled` used in `onCreate()`, `onCreateOptionsMenu()`, `onPrepareOptionsMenu()`, `onOptionsItemSelected()`, `onDownloadImage()`, `onDownloadFile()`, and `applySettings()`.
     private boolean thirdPartyCookiesEnabled;
 
     // `domStorageEnabled` is used in `onCreate()`, `onCreateOptionsMenu()`, `onOptionsItemSelected()`, and `applySettings()`.
@@ -1482,6 +1484,13 @@ public class MainWebView extends AppCompatActivity implements NavigationView.OnN
         // Parse `imageUrl`.
         DownloadManager.Request downloadRequest = new DownloadManager.Request(Uri.parse(imageUrl));
 
+        // Pass cookies to download manager if cookies are enabled.  This is required to download item from websites that require a login.
+        if (firstPartyCookiesEnabled) {
+            String cookies = cookieManager.getCookie(imageUrl);
+            // In the HTTP request header, cookies are named `Cookie`.
+            downloadRequest.addRequestHeader("Cookie", cookies);
+        }
+
         // Get the file name from `dialogFragment`.
         EditText downloadImageNameEditText = (EditText) dialogFragment.getDialog().findViewById(R.id.download_image_name);
         String imageName = downloadImageNameEditText.getText().toString();
@@ -1514,6 +1523,13 @@ public class MainWebView extends AppCompatActivity implements NavigationView.OnN
         // Parse `downloadUrl`.
         DownloadManager.Request downloadRequest = new DownloadManager.Request(Uri.parse(downloadUrl));
 
+        // Pass cookies to download manager if cookies are enabled.  This is required to download item from websites that require a login.
+        if (firstPartyCookiesEnabled) {
+            String cookies = cookieManager.getCookie(downloadUrl);
+            // In the HTTP request header, cookies are named `Cookie`.
+            downloadRequest.addRequestHeader("Cookie", cookies);
+        }
+
         // Get the file name from `dialogFragment`.
         EditText downloadFileNameEditText = (EditText) dialogFragment.getDialog().findViewById(R.id.download_file_name);
         String fileName = downloadFileNameEditText.getText().toString();