diff --git a/src/org/lineageos/updater/DownloadClient.java b/src/org/lineageos/updater/DownloadClient.java index 8a2fe8e..d52740a 100644 --- a/src/org/lineageos/updater/DownloadClient.java +++ b/src/org/lineageos/updater/DownloadClient.java @@ -43,10 +43,12 @@ public class DownloadClient { private static final Object DOWNLOAD_TAG = new Object(); + private boolean mCancelled = false; + public interface DownloadCallback { void onResponse(int statusCode, String url, Headers headers); void onSuccess(String body); - void onFailure(); + void onFailure(boolean cancelled); } public interface ProgressListener { @@ -103,6 +105,7 @@ public class DownloadClient { new Thread(new Runnable() { @Override public void run() { + mCancelled = true; mClient.cancel(DOWNLOAD_TAG); } }).start(); @@ -116,8 +119,8 @@ public class DownloadClient { mClient.newCall(request).enqueue(new Callback() { @Override public void onFailure(Request request, IOException e) { - Log.d(TAG, "Download failed", e); - callback.onFailure(); + Log.d(TAG, "Download failed, cancelled=" + mCancelled, e); + callback.onFailure(mCancelled); } @Override @@ -177,7 +180,7 @@ public class DownloadClient { @Override public void onFailure(Request request, IOException e) { Log.d(TAG, "Download failed", e); - callback.onFailure(); + callback.onFailure(mCancelled); } @Override @@ -190,7 +193,7 @@ public class DownloadClient { Log.d(TAG, "The server fulfilled the partial content request"); } else if (!isSuccessful(response.code())) { Log.e(TAG, "The server replied with code " + response.code()); - callback.onFailure(); + callback.onFailure(mCancelled); return; } diff --git a/src/org/lineageos/updater/UpdatesActivity.java b/src/org/lineageos/updater/UpdatesActivity.java index 55739ef..2aacf43 100644 --- a/src/org/lineageos/updater/UpdatesActivity.java +++ b/src/org/lineageos/updater/UpdatesActivity.java @@ -156,7 +156,7 @@ public class UpdatesActivity extends AppCompatActivity { Log.d(TAG, "Checking " + url); DownloadClient.downloadFile(url, jsonFile, new DownloadClient.DownloadCallback() { @Override - public void onFailure() { + public void onFailure(boolean cancelled) { Log.e(TAG, "Could not download updates list"); } diff --git a/src/org/lineageos/updater/UpdatesCheckReceiver.java b/src/org/lineageos/updater/UpdatesCheckReceiver.java index 713db53..1a29433 100644 --- a/src/org/lineageos/updater/UpdatesCheckReceiver.java +++ b/src/org/lineageos/updater/UpdatesCheckReceiver.java @@ -65,7 +65,7 @@ public class UpdatesCheckReceiver extends BroadcastReceiver { String url = Utils.getServerURL(context); DownloadClient.downloadFile(url, jsonNew, new DownloadClient.DownloadCallback() { @Override - public void onFailure() { + public void onFailure(boolean cancelled) { Log.e(TAG, "Could not download updates list, scheduling new check"); scheduleUpdatesCheck(context); } diff --git a/src/org/lineageos/updater/controller/UpdaterController.java b/src/org/lineageos/updater/controller/UpdaterController.java index 66e5990..0ad4e8a 100644 --- a/src/org/lineageos/updater/controller/UpdaterController.java +++ b/src/org/lineageos/updater/controller/UpdaterController.java @@ -177,9 +177,9 @@ public class UpdaterController implements UpdaterControllerInt { } @Override - public void onFailure() { + public void onFailure(boolean cancelled) { // The client is null if we intentionally stopped the download - boolean cancelled = mDownloads.get(downloadId).mDownloadClient == null; + cancelled = mDownloads.get(downloadId).mDownloadClient == null; UpdateDownload update = mDownloads.get(downloadId).mUpdate; if (cancelled) { Log.d(TAG, "Download cancelled");