From debaec32afb3504bbd0e25f6eb64b4b39add9fcc Mon Sep 17 00:00:00 2001 From: topjohnwu Date: Mon, 29 Jul 2019 00:42:53 -0700 Subject: [PATCH] Remove old download progress update system --- .../model/download/RemoteFileService.kt | 4 +- ...gInputStream.kt => ProgressInputStream.kt} | 2 +- .../magisk/view/ProgressNotification.kt | 73 ------------------- .../net/DownloadProgressListener.java | 5 -- .../java/com/topjohnwu/net/Networking.java | 1 - .../topjohnwu/net/ProgressInputStream.java | 43 ----------- .../main/java/com/topjohnwu/net/Request.java | 31 ++------ 7 files changed, 10 insertions(+), 149 deletions(-) rename app/src/main/java/com/topjohnwu/magisk/utils/{ProgInputStream.kt => ProgressInputStream.kt} (97%) delete mode 100644 app/src/main/java/com/topjohnwu/magisk/view/ProgressNotification.kt delete mode 100644 net/src/main/java/com/topjohnwu/net/DownloadProgressListener.java delete mode 100644 net/src/main/java/com/topjohnwu/net/ProgressInputStream.java diff --git a/app/src/main/java/com/topjohnwu/magisk/model/download/RemoteFileService.kt b/app/src/main/java/com/topjohnwu/magisk/model/download/RemoteFileService.kt index 71153f5da..ee04d9124 100644 --- a/app/src/main/java/com/topjohnwu/magisk/model/download/RemoteFileService.kt +++ b/app/src/main/java/com/topjohnwu/magisk/model/download/RemoteFileService.kt @@ -12,7 +12,7 @@ import com.topjohnwu.magisk.extensions.get import com.topjohnwu.magisk.extensions.writeTo import com.topjohnwu.magisk.model.entity.internal.DownloadSubject import com.topjohnwu.magisk.model.entity.internal.DownloadSubject.* -import com.topjohnwu.magisk.utils.ProgInputStream +import com.topjohnwu.magisk.utils.ProgressInputStream import com.topjohnwu.magisk.view.Notifications import com.topjohnwu.superuser.ShellUtils import io.reactivex.Single @@ -100,7 +100,7 @@ abstract class RemoteFileService : NotificationService() { val maxRaw = contentLength() val max = maxRaw / 1_000_000f - return ProgInputStream(byteStream()) { + return ProgressInputStream(byteStream()) { val progress = it / 1_000_000f update(id) { notification -> notification diff --git a/app/src/main/java/com/topjohnwu/magisk/utils/ProgInputStream.kt b/app/src/main/java/com/topjohnwu/magisk/utils/ProgressInputStream.kt similarity index 97% rename from app/src/main/java/com/topjohnwu/magisk/utils/ProgInputStream.kt rename to app/src/main/java/com/topjohnwu/magisk/utils/ProgressInputStream.kt index bee8e1a6c..817f06566 100644 --- a/app/src/main/java/com/topjohnwu/magisk/utils/ProgInputStream.kt +++ b/app/src/main/java/com/topjohnwu/magisk/utils/ProgressInputStream.kt @@ -4,7 +4,7 @@ import com.topjohnwu.superuser.internal.UiThreadHandler import java.io.FilterInputStream import java.io.InputStream -class ProgInputStream( +class ProgressInputStream( base: InputStream, val progressEmitter: (Long) -> Unit = {} ) : FilterInputStream(base) { diff --git a/app/src/main/java/com/topjohnwu/magisk/view/ProgressNotification.kt b/app/src/main/java/com/topjohnwu/magisk/view/ProgressNotification.kt deleted file mode 100644 index 8f8460c09..000000000 --- a/app/src/main/java/com/topjohnwu/magisk/view/ProgressNotification.kt +++ /dev/null @@ -1,73 +0,0 @@ -package com.topjohnwu.magisk.view - -import android.app.Notification -import android.app.PendingIntent -import android.content.Intent -import android.widget.Toast - -import androidx.core.app.NotificationCompat - -import com.topjohnwu.magisk.App -import com.topjohnwu.magisk.R -import com.topjohnwu.magisk.utils.Utils -import com.topjohnwu.net.DownloadProgressListener - -class ProgressNotification(title: String) : DownloadProgressListener { - - val notificationBuilder: NotificationCompat.Builder = Notifications.progress(title) - lateinit var notification: Notification - private set - private var prevTime: Long = 0 - - init { - prevTime = System.currentTimeMillis() - update() - Utils.toast(App.self.getString(R.string.downloading_toast, title), Toast.LENGTH_SHORT) - } - - override fun onProgress(bytesDownloaded: Long, totalBytes: Long) { - val cur = System.currentTimeMillis() - if (cur - prevTime >= 1000) { - prevTime = cur - val progress = (bytesDownloaded * 100 / totalBytes).toInt() - notificationBuilder.setProgress(100, progress, false) - notificationBuilder.setContentText("$progress%") - update() - } - } - - fun update() { - notification = notificationBuilder.build() - Notifications.mgr.notify(hashCode(), notification) - } - - private fun lastUpdate() { - Notifications.mgr.cancel(hashCode()) - notification = notificationBuilder.build().apply { - Notifications.mgr.notify(hashCode(), this) - } - } - - fun dlDone(intent: PendingIntent = PendingIntent.getActivity(App.self, hashCode(), - Intent(), PendingIntent.FLAG_UPDATE_CURRENT)) { - notificationBuilder.setProgress(0, 0, false) - .setContentText(App.self.getString(R.string.download_complete)) - .setSmallIcon(android.R.drawable.stat_sys_download_done) - .setContentIntent(intent) - .setOngoing(false) - .setAutoCancel(true) - lastUpdate() - } - - fun dlFail() { - notificationBuilder.setProgress(0, 0, false) - .setContentText(App.self.getString(R.string.download_file_error)) - .setSmallIcon(android.R.drawable.stat_notify_error) - .setOngoing(false) - lastUpdate() - } - - fun dismiss() { - Notifications.mgr.cancel(hashCode()) - } -} diff --git a/net/src/main/java/com/topjohnwu/net/DownloadProgressListener.java b/net/src/main/java/com/topjohnwu/net/DownloadProgressListener.java deleted file mode 100644 index 9395699d4..000000000 --- a/net/src/main/java/com/topjohnwu/net/DownloadProgressListener.java +++ /dev/null @@ -1,5 +0,0 @@ -package com.topjohnwu.net; - -public interface DownloadProgressListener { - void onProgress(long bytesDownloaded, long totalBytes); -} diff --git a/net/src/main/java/com/topjohnwu/net/Networking.java b/net/src/main/java/com/topjohnwu/net/Networking.java index f2033c1b1..c06faa382 100644 --- a/net/src/main/java/com/topjohnwu/net/Networking.java +++ b/net/src/main/java/com/topjohnwu/net/Networking.java @@ -13,7 +13,6 @@ import java.net.URL; import javax.net.ssl.HttpsURLConnection; -@Deprecated public class Networking { private static final int READ_TIMEOUT = 15000; diff --git a/net/src/main/java/com/topjohnwu/net/ProgressInputStream.java b/net/src/main/java/com/topjohnwu/net/ProgressInputStream.java deleted file mode 100644 index 6d495258f..000000000 --- a/net/src/main/java/com/topjohnwu/net/ProgressInputStream.java +++ /dev/null @@ -1,43 +0,0 @@ -package com.topjohnwu.net; - -import java.io.FilterInputStream; -import java.io.IOException; -import java.io.InputStream; - -public class ProgressInputStream extends FilterInputStream { - - private long totalBytes; - private long bytesDownloaded; - private DownloadProgressListener progress; - - public ProgressInputStream(InputStream in, long total, DownloadProgressListener listener) { - super(in); - totalBytes = total; - progress = listener; - } - - @Override - public int read() throws IOException { - int b = super.read(); - if (totalBytes > 0 && b >= 0) { - bytesDownloaded++; - Networking.mainHandler.post(() -> progress.onProgress(bytesDownloaded, totalBytes)); - } - return b; - } - - @Override - public int read(byte[] b) throws IOException { - return read(b, 0, b.length); - } - - @Override - public int read(byte[] b, int off, int len) throws IOException { - int sz = super.read(b, off, len); - if (totalBytes > 0 && sz > 0) { - bytesDownloaded += sz; - Networking.mainHandler.post(() -> progress.onProgress(bytesDownloaded, totalBytes)); - } - return sz; - } -} diff --git a/net/src/main/java/com/topjohnwu/net/Request.java b/net/src/main/java/com/topjohnwu/net/Request.java index b37ccdfd3..8b16facb9 100644 --- a/net/src/main/java/com/topjohnwu/net/Request.java +++ b/net/src/main/java/com/topjohnwu/net/Request.java @@ -23,7 +23,6 @@ import java.util.concurrent.Executor; public class Request implements Closeable { private HttpURLConnection conn; private Executor executor = null; - private DownloadProgressListener progress = null; private int code = -1; ErrorHandler err = null; @@ -66,11 +65,6 @@ public class Request implements Closeable { return this; } - public Request setDownloadProgressListener(DownloadProgressListener listener) { - progress = listener; - return this; - } - public Request setErrorHandler(ErrorHandler handler) { err = handler; return this; @@ -169,24 +163,13 @@ public class Request implements Closeable { private BufferedInputStream getInputStream() throws IOException { connect0(); - InputStream in = conn.getInputStream(); - if (progress != null) { - in = new ProgressInputStream(in, conn.getContentLength(), progress) { - @Override - public void close() throws IOException { - super.close(); - conn.disconnect(); - } - }; - } else { - in = new FilterInputStream(in) { - @Override - public void close() throws IOException { - super.close(); - conn.disconnect(); - } - }; - } + InputStream in = new FilterInputStream(conn.getInputStream()) { + @Override + public void close() throws IOException { + super.close(); + conn.disconnect(); + } + }; return new BufferedInputStream(in); }