Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a45075f3 authored by Jean Chalard's avatar Jean Chalard Committed by Android Git Automerger
Browse files

am 4d4310df: Merge "Fix a wrong call to cancel downloads"

* commit '4d4310df':
  Fix a wrong call to cancel downloads
parents df266ac7 4d4310df
Loading
Loading
Loading
Loading
+10 −7
Original line number Original line Diff line number Diff line
@@ -199,6 +199,7 @@ public class MetadataDbHelper extends SQLiteOpenHelper {
            final ContentValues defaultMetadataValues = new ContentValues();
            final ContentValues defaultMetadataValues = new ContentValues();
            defaultMetadataValues.put(CLIENT_CLIENT_ID_COLUMN, "");
            defaultMetadataValues.put(CLIENT_CLIENT_ID_COLUMN, "");
            defaultMetadataValues.put(CLIENT_METADATA_URI_COLUMN, defaultMetadataUri);
            defaultMetadataValues.put(CLIENT_METADATA_URI_COLUMN, defaultMetadataUri);
            defaultMetadataValues.put(CLIENT_PENDINGID_COLUMN, UpdateHandler.NOT_AN_ID);
            db.insert(CLIENT_TABLE_NAME, null, defaultMetadataValues);
            db.insert(CLIENT_TABLE_NAME, null, defaultMetadataValues);
        }
        }
    }
    }
@@ -358,21 +359,21 @@ public class MetadataDbHelper extends SQLiteOpenHelper {
    }
    }


    /**
    /**
     * Get the metadata download ID for a client ID.
     * Get the metadata download ID for a metadata URI.
     *
     *
     * This will retrieve the download ID for the metadata file associated with a client ID.
     * This will retrieve the download ID for the metadata file that has the passed URI.
     * If there is no metadata download in progress for this client, it will return NOT_AN_ID.
     * If this URI is not being downloaded right now, it will return NOT_AN_ID.
     *
     *
     * @param context a context instance to open the database on
     * @param context a context instance to open the database on
     * @param clientId the client ID to retrieve the metadata download ID of
     * @param uri the URI to retrieve the metadata download ID of
     * @return the metadata download ID, or NOT_AN_ID if no download is in progress
     * @return the metadata download ID, or NOT_AN_ID if no download is in progress
     */
     */
    public static long getMetadataDownloadIdForClient(final Context context,
    public static long getMetadataDownloadIdForURI(final Context context,
            final String clientId) {
            final String uri) {
        SQLiteDatabase defaultDb = getDb(context, null);
        SQLiteDatabase defaultDb = getDb(context, null);
        final Cursor cursor = defaultDb.query(CLIENT_TABLE_NAME,
        final Cursor cursor = defaultDb.query(CLIENT_TABLE_NAME,
                new String[] { CLIENT_PENDINGID_COLUMN },
                new String[] { CLIENT_PENDINGID_COLUMN },
                CLIENT_CLIENT_ID_COLUMN + " = ?", new String[] { clientId },
                CLIENT_METADATA_URI_COLUMN + " = ?", new String[] { uri },
                null, null, null, null);
                null, null, null, null);
        try {
        try {
            if (!cursor.moveToFirst()) return UpdateHandler.NOT_AN_ID;
            if (!cursor.moveToFirst()) return UpdateHandler.NOT_AN_ID;
@@ -782,6 +783,8 @@ public class MetadataDbHelper extends SQLiteOpenHelper {
                    " but the values " + "contain a different ID : ", valuesClientId);
                    " but the values " + "contain a different ID : ", valuesClientId);
            return;
            return;
        }
        }
        // Default value for a pending ID is NOT_AN_ID
        values.put(CLIENT_PENDINGID_COLUMN, UpdateHandler.NOT_AN_ID);
        final SQLiteDatabase defaultDb = getDb(context, "");
        final SQLiteDatabase defaultDb = getDb(context, "");
        if (-1 == defaultDb.insert(CLIENT_TABLE_NAME, null, values)) {
        if (-1 == defaultDb.insert(CLIENT_TABLE_NAME, null, values)) {
            defaultDb.update(CLIENT_TABLE_NAME, values,
            defaultDb.update(CLIENT_TABLE_NAME, values,
+12 −12
Original line number Original line Diff line number Diff line
@@ -272,23 +272,22 @@ public final class UpdateHandler {
    }
    }


    /**
    /**
     * Cancels a pending update, if there is one.
     * Cancels downloading a file, if there is one for this URI.
     *
     *
     * If none, this is a no-op.
     * If we are not currently downloading the file at this URI, this is a no-op.
     *
     *
     * @param context the context to open the database on
     * @param context the context to open the database on
     * @param clientId the id of the client
     * @param metadataUri the URI to cancel
     * @param manager an instance of DownloadManager
     * @param manager an instance of DownloadManager
     */
     */
    private static void cancelUpdateWithDownloadManager(final Context context,
    private static void cancelUpdateWithDownloadManager(final Context context,
            final String clientId, final DownloadManager manager) {
            final String metadataUri, final DownloadManager manager) {
        synchronized (sSharedIdProtector) {
        synchronized (sSharedIdProtector) {
            final long metadataDownloadId =
            final long metadataDownloadId =
                    MetadataDbHelper.getMetadataDownloadIdForClient(context, clientId);
                    MetadataDbHelper.getMetadataDownloadIdForURI(context, metadataUri);
            if (NOT_AN_ID == metadataDownloadId) return;
            if (NOT_AN_ID == metadataDownloadId) return;
            manager.remove(metadataDownloadId);
            manager.remove(metadataDownloadId);
            writeMetadataDownloadId(context,
            writeMetadataDownloadId(context, metadataUri, NOT_AN_ID);
                    MetadataDbHelper.getMetadataUriAsString(context, clientId), NOT_AN_ID);
        }
        }
        // Consider a cancellation as a failure. As such, inform listeners that the download
        // Consider a cancellation as a failure. As such, inform listeners that the download
        // has failed.
        // has failed.
@@ -298,10 +297,10 @@ public final class UpdateHandler {
    }
    }


    /**
    /**
     * Cancels a pending update, if there is one.
     * Cancels a pending update for this client, if there is one.
     *
     *
     * If there is none, this is a no-op. This is a helper method that gets the
     * If we are not currently updating metadata for this client, this is a no-op. This is a helper
     * download manager service.
     * method that gets the download manager service and the metadata URI for this client.
     *
     *
     * @param context the context, to get an instance of DownloadManager
     * @param context the context, to get an instance of DownloadManager
     * @param clientId the ID of the client we want to cancel the update of
     * @param clientId the ID of the client we want to cancel the update of
@@ -309,7 +308,8 @@ public final class UpdateHandler {
    public static void cancelUpdate(final Context context, final String clientId) {
    public static void cancelUpdate(final Context context, final String clientId) {
        final DownloadManager manager =
        final DownloadManager manager =
                    (DownloadManager) context.getSystemService(Context.DOWNLOAD_SERVICE);
                    (DownloadManager) context.getSystemService(Context.DOWNLOAD_SERVICE);
        if (null != manager) cancelUpdateWithDownloadManager(context, clientId, manager);
        final String metadataUri = MetadataDbHelper.getMetadataUriAsString(context, clientId);
        if (null != manager) cancelUpdateWithDownloadManager(context, metadataUri, manager);
    }
    }


    /**
    /**