From 1c6ab58a30fa04715833fc565572e745397e9c49 Mon Sep 17 00:00:00 2001
From: kunpw <6456371-kunpw@users.noreply.gitlab.com>
Date: Tue, 25 Aug 2020 15:12:56 +0000
Subject: [PATCH] Measure http download progress by size of complete file in
 resumed downloads

---
 app/src/main/java/org/fdroid/fdroid/net/Downloader.java     | 2 +-
 app/src/main/java/org/fdroid/fdroid/net/HttpDownloader.java | 6 ++++--
 2 files changed, 5 insertions(+), 3 deletions(-)

diff --git a/app/src/main/java/org/fdroid/fdroid/net/Downloader.java b/app/src/main/java/org/fdroid/fdroid/net/Downloader.java
index ce2f2aed8..c399013ad 100644
--- a/app/src/main/java/org/fdroid/fdroid/net/Downloader.java
+++ b/app/src/main/java/org/fdroid/fdroid/net/Downloader.java
@@ -169,7 +169,7 @@ public abstract class Downloader {
             throws IOException, InterruptedException {
         Timer timer = new Timer();
         try {
-            bytesRead = 0;
+            bytesRead = outputFile.length();
             totalBytes = totalDownloadSize();
             byte[] buffer = new byte[bufferSize];
 
diff --git a/app/src/main/java/org/fdroid/fdroid/net/HttpDownloader.java b/app/src/main/java/org/fdroid/fdroid/net/HttpDownloader.java
index db7a13cde..418ff947b 100644
--- a/app/src/main/java/org/fdroid/fdroid/net/HttpDownloader.java
+++ b/app/src/main/java/org/fdroid/fdroid/net/HttpDownloader.java
@@ -60,6 +60,7 @@ public class HttpDownloader extends Downloader {
     private HttpURLConnection connection;
     private boolean newFileAvailableOnServer;
 
+    private long fileFullSize = -1L;
     /**
      * String to append to all HTTP downloads, created in {@link FDroidApp#onCreate()}
      */
@@ -140,6 +141,7 @@ public class HttpDownloader extends Downloader {
             case HttpURLConnection.HTTP_OK:
                 String headETag = tmpConn.getHeaderField(HEADER_FIELD_ETAG);
                 contentLength = tmpConn.getContentLength();
+                fileFullSize = contentLength;
                 if (!TextUtils.isEmpty(cacheTag)) {
                     if (cacheTag.equals(headETag)) {
                         Utils.debugLog(TAG, urlString + " cached, not downloading: " + headETag);
@@ -248,9 +250,9 @@ public class HttpDownloader extends Downloader {
     @TargetApi(24)
     public long totalDownloadSize() {
         if (Build.VERSION.SDK_INT < 24) {
-            return connection.getContentLength();
+            return (int) fileFullSize;
         } else {
-            return connection.getContentLengthLong();
+            return fileFullSize;
         }
     }