提交 41e1e84c 编写于 作者: J judds 提交者: Sam Judd

Clear thumb loads when full load finishes.

上级 1e618804
......@@ -2,6 +2,7 @@ package com.bumptech.glide.request;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import static org.mockito.Matchers.any;
import static org.mockito.Matchers.eq;
import static org.mockito.Mockito.inOrder;
import static org.mockito.Mockito.mock;
......@@ -266,4 +267,40 @@ public class ThumbnailRequestCoordinatorTest {
assertTrue(coordinator.isResourceSet());
}
@Test
public void testClearsThumbRequestOnFullRequestComplete_withNullParent() {
coordinator.onRequestSuccess(full);
verify(thumb).clear();
}
@Test
public void testNotifiesParentOnFullRequestComplete_withNonNullParent() {
coordinator = new ThumbnailRequestCoordinator(parent);
coordinator.setRequests(full, thumb);
coordinator.onRequestSuccess(full);
verify(parent).onRequestSuccess(eq(coordinator));
}
@Test
public void testDoesNotClearThumbRequestOnFullRequestComplete_withNonNullParent() {
coordinator = new ThumbnailRequestCoordinator(parent);
coordinator.setRequests(full, thumb);
coordinator.onRequestSuccess(full);
verify(thumb, never()).clear();
}
@Test
public void testDoesNotClearThumbOnThumbRequestComplete() {
coordinator.onRequestSuccess(thumb);
verify(thumb, never()).clear();
}
@Test
public void testDoesNotNotifyParentOnThumbRequestComplete() {
coordinator = new ThumbnailRequestCoordinator(parent);
coordinator.setRequests(full, thumb);
coordinator.onRequestSuccess(thumb);
verify(parent, never()).onRequestSuccess(any(Request.class));
}
}
......@@ -438,6 +438,12 @@ public final class GenericRequest<A, T, Z, R> implements Request, SizeReadyCallb
return requestCoordinator == null || !requestCoordinator.isAnyResourceSet();
}
private void notifyLoadSuccess() {
if (requestCoordinator != null) {
requestCoordinator.onRequestSuccess(this);
}
}
/**
* A callback method that should never be invoked directly.
*/
......@@ -488,6 +494,7 @@ public final class GenericRequest<A, T, Z, R> implements Request, SizeReadyCallb
status = Status.COMPLETE;
this.resource = resource;
notifyLoadSuccess();
if (Log.isLoggable(TAG, Log.VERBOSE)) {
logV("Resource ready in " + LogTime.getElapsedMillis(startTime) + " size: "
......
......@@ -25,4 +25,9 @@ public interface RequestCoordinator {
* @see Request#isComplete()
*/
boolean isAnyResourceSet();
/**
* Must be called when a request coordinated by this object completes successfully.
*/
void onRequestSuccess(Request request);
}
......@@ -58,6 +58,18 @@ public class ThumbnailRequestCoordinator implements RequestCoordinator, Request
return parentIsAnyResourceSet() || isResourceSet();
}
@Override
public void onRequestSuccess(Request request) {
if (request.equals(thumb)) {
return;
}
if (coordinator == null) {
thumb.clear();
} else {
coordinator.onRequestSuccess(this);
}
}
private boolean parentIsAnyResourceSet() {
return coordinator != null && coordinator.isAnyResourceSet();
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册