Index: chrome/android/java/src/org/chromium/chrome/browser/offlinepages/OfflinePageBridge.java |
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/offlinepages/OfflinePageBridge.java b/chrome/android/java/src/org/chromium/chrome/browser/offlinepages/OfflinePageBridge.java |
index 419ae683e74c32c413859de8ac7e8e0933aad075..d169856ddca3e175c0bdde0e0c380931b4d18ca0 100644 |
--- a/chrome/android/java/src/org/chromium/chrome/browser/offlinepages/OfflinePageBridge.java |
+++ b/chrome/android/java/src/org/chromium/chrome/browser/offlinepages/OfflinePageBridge.java |
@@ -244,6 +244,69 @@ public class OfflinePageBridge { |
nativeGetRequestsInQueue(mNativeOfflinePageBridge, callback); |
} |
+ private static class RequestsRemovedCallback { |
+ private Callback<List<RequestRemovedResult>> mCallback; |
+ |
+ public RequestsRemovedCallback(Callback<List<RequestRemovedResult>> callback) { |
+ mCallback = callback; |
+ } |
+ |
+ @CalledByNative("RequestsRemovedCallback") |
+ public void onResult(long[] resultIds, int[] resultCodes) { |
+ assert resultIds.length == resultCodes.length; |
+ |
+ List<RequestRemovedResult> results = new ArrayList<>(); |
+ for (int i = 0; i < resultIds.length; i++) { |
+ results.add(new RequestRemovedResult(resultIds[i], resultCodes[i])); |
+ } |
+ |
+ mCallback.onResult(results); |
+ } |
+ } |
+ |
+ /** |
+ * Contains a result for a remove page request. |
+ */ |
+ public static class RequestRemovedResult { |
+ private long mRequestId; |
+ private int mUpdateRequestResult; |
+ |
+ public RequestRemovedResult(long requestId, int requestResult) { |
+ mRequestId = requestId; |
+ mUpdateRequestResult = requestResult; |
+ } |
+ |
+ /** Request ID as found in the SavePageRequest. */ |
+ public long getRequestId() { |
+ return mRequestId; |
+ } |
+ |
+ /** {@see org.chromium.components.offlinepages.background.UpdateRequestResult} enum. */ |
+ public int getUpdateRequestResult() { |
+ return mUpdateRequestResult; |
+ } |
+ } |
+ |
+ /** |
+ * Removes SavePageRequests from the request queue. |
+ * |
+ * The callback will be called with |null| in the case that the queue is unavailable. This can |
+ * happen in incognito, for example. |
+ * |
+ * @param requestIds The IDs of the requests to remove. |
+ * @param callback Called when the removal is done, with the SavePageRequest objects that were |
+ * actually removed. |
+ */ |
+ public void removeRequestsFromQueue( |
+ List<Long> requestIdList, Callback<List<RequestRemovedResult>> callback) { |
+ long[] requestIds = new long[requestIdList.size()]; |
+ for (int i = 0; i < requestIdList.size(); i++) { |
+ requestIds[i] = requestIdList.get(i).longValue(); |
+ } |
+ nativeRemoveRequestsFromQueue( |
+ mNativeOfflinePageBridge, requestIds, new RequestsRemovedCallback(callback)); |
+ } |
+ |
private List<OfflinePageItem> getPagesByClientIdInternal(ClientId clientId) { |
Set<Long> ids = getOfflineIdsForClientId(clientId); |
List<OfflinePageItem> result = new ArrayList<>(); |
@@ -552,6 +615,10 @@ public class OfflinePageBridge { |
long nativeOfflinePageBridge, Callback<SavePageRequest[]> callback); |
@VisibleForTesting |
+ native void nativeRemoveRequestsFromQueue( |
+ long nativeOfflinePageBridge, long[] requestIds, RequestsRemovedCallback callback); |
+ |
+ @VisibleForTesting |
native OfflinePageItem nativeGetPageByOfflineId(long nativeOfflinePageBridge, long offlineId); |
private native void nativeSelectPageForOnlineUrl( |
long nativeOfflinePageBridge, String onlineUrl, int tabId, |