提交 93208760 编写于 作者: S Sam Judd

Always clear thumbnails after full completes.

Fixes #244
上级 c1fc2eda
......@@ -432,6 +432,15 @@ public class GenericRequestTest {
assertTrue(request.isCancelled());
}
@Test
public void testDoesNotNotifyTargetTwiceIfClearedTwiceInARow() {
GenericRequest request = harness.getRequest();
request.clear();
request.clear();
verify(harness.target, times(1)).onLoadCleared(any(Drawable.class));
}
@Test
public void testResourceIsNotCompleteWhenAskingCoordinatorIfCanSetImage() {
RequestCoordinator requestCoordinator = mock(RequestCoordinator.class);
......
......@@ -282,11 +282,11 @@ public class ThumbnailRequestCoordinatorTest {
}
@Test
public void testDoesNotClearThumbRequestOnFullRequestComplete_withNonNullParent() {
public void testClearsThumbRequestOnFullRequestComplete_withNonNullParent() {
coordinator = new ThumbnailRequestCoordinator(parent);
coordinator.setRequests(full, thumb);
coordinator.onRequestSuccess(full);
verify(thumb, never()).clear();
verify(thumb).clear();
}
@Test
......
......@@ -46,10 +46,12 @@ public final class GenericRequest<A, T, Z, R> implements Request, SizeReadyCallb
WAITING_FOR_SIZE,
/** Finished loading media successfully. */
COMPLETE,
/** Failed to load media. */
/** Failed to load media, may be restarted. */
FAILED,
/** Cancelled by the user, may not be restarted. */
CANCELLED,
/** Cleared by the user with a placeholder set, may not be restarted. */
CLEARED,
/** Temporarily paused by the system, may be restarted. */
PAUSED,
}
......@@ -298,6 +300,9 @@ public final class GenericRequest<A, T, Z, R> implements Request, SizeReadyCallb
@Override
public void clear() {
Util.assertMainThread();
if (status == Status.CLEARED) {
return;
}
cancel();
// Resource must be released before canNotifyStatusChanged is called.
if (resource != null) {
......@@ -306,6 +311,8 @@ public final class GenericRequest<A, T, Z, R> implements Request, SizeReadyCallb
if (canNotifyStatusChanged()) {
target.onLoadCleared(getPlaceholderDrawable());
}
// Must be after cancel().
status = Status.CLEARED;
}
@Override
......@@ -353,7 +360,7 @@ public final class GenericRequest<A, T, Z, R> implements Request, SizeReadyCallb
*/
@Override
public boolean isCancelled() {
return status == Status.CANCELLED;
return status == Status.CANCELLED || status == Status.CLEARED;
}
/**
......
......@@ -60,14 +60,13 @@ public class ThumbnailRequestCoordinator implements RequestCoordinator, Request
@Override
public void onRequestSuccess(Request request) {
if (request.equals(thumb)) {
return;
}
if (coordinator == null) {
if (request.equals(thumb)) {
return;
}
if (coordinator != null) {
coordinator.onRequestSuccess(this);
}
thumb.clear();
} else {
coordinator.onRequestSuccess(this);
}
}
private boolean parentIsAnyResourceSet() {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册