Skip to content

Commit 37ef90c

Browse files
committed
Merge pull request square#602 from square/dimitris/cancel-remote-views
Add API to cancel remote view requests.
2 parents da58ccc + e6bfb83 commit 37ef90c

File tree

3 files changed

+29
-0
lines changed

3 files changed

+29
-0
lines changed

picasso/src/main/java/com/squareup/picasso/Picasso.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
import android.os.Message;
2525
import android.os.Process;
2626
import android.widget.ImageView;
27+
import android.widget.RemoteViews;
2728
import java.io.File;
2829
import java.lang.ref.ReferenceQueue;
2930
import java.util.List;
@@ -156,6 +157,14 @@ public void cancelRequest(Target target) {
156157
cancelExistingRequest(target);
157158
}
158159

160+
/**
161+
* Cancel any existing requests for the specified {@link RemoteViews} target with the given {@code
162+
* viewId}.
163+
*/
164+
public void cancelRequest(RemoteViews remoteViews, int viewId) {
165+
cancelExistingRequest(new RemoteViewsAction.RemoteViewsTarget(remoteViews, viewId));
166+
}
167+
159168
/**
160169
* Start an image request using the specified URI.
161170
* <p>

picasso/src/test/java/com/squareup/picasso/PicassoTest.java

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
import android.content.Context;
1919
import android.graphics.Bitmap;
2020
import android.widget.ImageView;
21+
import android.widget.RemoteViews;
2122
import java.util.Arrays;
2223
import java.util.Collections;
2324
import java.util.concurrent.ExecutorService;
@@ -31,6 +32,7 @@
3132

3233
import static com.squareup.picasso.Picasso.Listener;
3334
import static com.squareup.picasso.Picasso.LoadedFrom.MEMORY;
35+
import static com.squareup.picasso.RemoteViewsAction.RemoteViewsTarget;
3436
import static com.squareup.picasso.TestUtils.BITMAP_1;
3537
import static com.squareup.picasso.TestUtils.URI_1;
3638
import static com.squareup.picasso.TestUtils.URI_KEY_1;
@@ -219,6 +221,20 @@ public class PicassoTest {
219221
verify(dispatcher).dispatchCancel(action);
220222
}
221223

224+
@Test public void cancelExistingRequestWithRemoteViewTarget() throws Exception {
225+
int layoutId = 0;
226+
int viewId = 1;
227+
RemoteViews remoteViews = new RemoteViews("packageName", layoutId);
228+
RemoteViewsTarget target = new RemoteViewsTarget(remoteViews, viewId);
229+
Action action = mockAction(URI_KEY_1, URI_1, target);
230+
picasso.enqueueAndSubmit(action);
231+
assertThat(picasso.targetToAction).hasSize(1);
232+
picasso.cancelRequest(remoteViews, viewId);
233+
assertThat(picasso.targetToAction).isEmpty();
234+
verify(action).cancel();
235+
verify(dispatcher).dispatchCancel(action);
236+
}
237+
222238
@Test public void deferAddsToMap() throws Exception {
223239
ImageView target = mockImageViewTarget();
224240
DeferredRequestCreator deferredRequestCreator = mockDeferredRequestCreator();

picasso/src/test/java/com/squareup/picasso/TestUtils.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -161,6 +161,10 @@ static Target mockTarget() {
161161
return mock(Target.class);
162162
}
163163

164+
static RemoteViewsAction.RemoteViewsTarget mockRemoteViewsTarget() {
165+
return mock(RemoteViewsAction.RemoteViewsTarget.class);
166+
}
167+
164168
static Callback mockCallback() {
165169
return mock(Callback.class);
166170
}

0 commit comments

Comments
 (0)