Index: chrome/android/javatests/src/org/chromium/chrome/browser/offlinepages/OfflinePageBridgeTest.java |
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/offlinepages/OfflinePageBridgeTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/offlinepages/OfflinePageBridgeTest.java |
index c0a6eba8b111c23f3d54eab1f2a0c2229da96917..f55fb770e89605d03099c9e371433e08a9e75f6d 100644 |
--- a/chrome/android/javatests/src/org/chromium/chrome/browser/offlinepages/OfflinePageBridgeTest.java |
+++ b/chrome/android/javatests/src/org/chromium/chrome/browser/offlinepages/OfflinePageBridgeTest.java |
@@ -253,6 +253,32 @@ public class OfflinePageBridgeTest extends ChromeActivityTestCaseBase<ChromeActi |
assertEquals(null, mOfflinePageBridge); |
} |
+ @SmallTest |
+ public void testRemoveRequestsFromQueue() throws Exception { |
+ String url = "https://www.google.com/"; |
+ String namespace = "custom_tabs"; |
+ savePageLater(url, namespace); |
+ |
+ String url2 = "https://mail.google.com/"; |
+ String namespace2 = "last_n"; |
+ savePageLater(url2, namespace2); |
+ |
+ SavePageRequest[] requests = getRequestsInQueue(); |
+ assertEquals(2, requests.length); |
+ |
+ List<SavePageRequest> requestsToRemove = new ArrayList<>(); |
+ requestsToRemove.add(requests[1]); |
+ |
+ SavePageRequest[] removed = removeRequestsFromQueue(requestsToRemove); |
+ assertEquals(requests[1].getRequestId(), removed[0].getRequestId()); |
+ |
+ SavePageRequest[] remaining = getRequestsInQueue(); |
+ assertEquals(1, remaining.length); |
+ |
+ assertEquals(requests[0].getRequestId(), remaining[0].getRequestId()); |
+ assertEquals(requests[0].getUrl(), remaining[0].getUrl()); |
+ } |
+ |
private void savePage(final int expectedResult, final String expectedUrl) |
throws InterruptedException { |
final Semaphore semaphore = new Semaphore(0); |
@@ -403,4 +429,25 @@ public class OfflinePageBridgeTest extends ChromeActivityTestCaseBase<ChromeActi |
assertTrue(semaphore.tryAcquire(TIMEOUT_MS, TimeUnit.MILLISECONDS)); |
return ref.get(); |
} |
+ |
+ private SavePageRequest[] removeRequestsFromQueue(final List<SavePageRequest> requestsToRemove) |
+ throws InterruptedException { |
+ final AtomicReference<SavePageRequest[]> ref = new AtomicReference<>(); |
+ final Semaphore semaphore = new Semaphore(0); |
+ ThreadUtils.runOnUiThread(new Runnable() { |
+ @Override |
+ public void run() { |
+ mOfflinePageBridge.removeRequestsFromQueue( |
+ requestsToRemove, new Callback<SavePageRequest[]>() { |
+ @Override |
+ public void onResult(SavePageRequest[] removedRequests) { |
+ ref.set(removedRequests); |
+ semaphore.release(); |
+ } |
+ }); |
+ } |
+ }); |
+ assertTrue(semaphore.tryAcquire(TIMEOUT_MS, TimeUnit.MILLISECONDS)); |
+ return ref.get(); |
+ } |
} |