From 2019b7a7c38aee76f0907b5cb783d51839346538 Mon Sep 17 00:00:00 2001 From: Hans-Christoph Steiner Date: Mon, 28 Mar 2016 16:52:58 +0200 Subject: [PATCH] make all Downloader downloads cancelable Allowing all downloads, including updates, to be canceled simplifies the code and if the user wants to cancel an update, they should be able to. But canceling updates is not implemented in this commit. --- .../main/java/org/fdroid/fdroid/RepoUpdater.java | 5 ++++- .../java/org/fdroid/fdroid/net/Downloader.java | 14 -------------- 2 files changed, 4 insertions(+), 15 deletions(-) diff --git a/app/src/main/java/org/fdroid/fdroid/RepoUpdater.java b/app/src/main/java/org/fdroid/fdroid/RepoUpdater.java index e1fd27d9c..f38c4c3df 100644 --- a/app/src/main/java/org/fdroid/fdroid/RepoUpdater.java +++ b/app/src/main/java/org/fdroid/fdroid/RepoUpdater.java @@ -102,7 +102,7 @@ public class RepoUpdater { repo.getCredentials() ); downloader.setCacheTag(repo.lastetag); - downloader.downloadUninterrupted(); + downloader.download(); if (downloader.isCached()) { // The index is unchanged since we last read it. We just mark @@ -118,6 +118,9 @@ public class RepoUpdater { } throw new UpdateException(repo, "Error getting index file", e); + } catch (InterruptedException e) { + // ignored if canceled, the local database just won't be updated + e.printStackTrace(); } return downloader; } 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 b66dcc7ec..e66b793ad 100644 --- a/app/src/main/java/org/fdroid/fdroid/net/Downloader.java +++ b/app/src/main/java/org/fdroid/fdroid/net/Downloader.java @@ -91,20 +91,6 @@ public abstract class Downloader { protected abstract int totalDownloadSize(); - /** - * Helper function for synchronous downloads (i.e. those *not* using AsyncDownloadWrapper), - * which don't really want to bother dealing with an InterruptedException. - * The InterruptedException thrown from download() is there to enable cancelling asynchronous - * downloads, but regular synchronous downloads cannot be cancelled because download() will - * block until completed. - * @throws IOException - */ - public void downloadUninterrupted() throws IOException { - try { - download(); - } catch (InterruptedException ignored) { } - } - public abstract void download() throws IOException, InterruptedException; public abstract boolean isCached();