private void deliver(BitmapHunter hunter) { if (hunter.isCancelled()) { return; } RequestHandler.Result result = hunter.getResult(); if (result != null) { Bitmap bitmap = result.getBitmap(); if (bitmap != null) { bitmap.prepareToDraw(); } } mainThreadHandler.sendMessage(mainThreadHandler.obtainMessage(HUNTER_COMPLETE, hunter)); logDelivery(hunter); }
static BitmapHunter mockHunter(String key, RequestHandler.Result result, Action action) { Request data = new Request.Builder(URI_1).build(); BitmapHunter hunter = mock(BitmapHunter.class); when(hunter.getKey()).thenReturn(key); when(hunter.getResult()).thenReturn(result); when(hunter.getData()).thenReturn(data); when(hunter.getAction()).thenReturn(action); Picasso picasso = mockPicasso(); when(hunter.getPicasso()).thenReturn(picasso); return hunter; }
void performComplete(BitmapHunter hunter) { if (shouldWriteToMemoryCache(hunter.data.memoryPolicy)) { RequestHandler.Result result = hunter.getResult(); if (result != null) { Bitmap bitmap = result.getBitmap(); if (bitmap != null) { cache.set(hunter.getKey(), bitmap); } } } hunterMap.remove(hunter.getKey()); deliver(hunter); }
void complete(BitmapHunter hunter) { Action single = hunter.getAction(); List<Action> joined = hunter.getActions(); boolean hasMultiple = joined != null && !joined.isEmpty(); boolean shouldDeliver = single != null || hasMultiple; if (!shouldDeliver) { return; } Uri uri = checkNotNull(hunter.getData().uri, "uri == null"); Exception exception = hunter.getException(); RequestHandler.Result result = hunter.getResult(); if (single != null) { deliverAction(result, single, exception); } if (joined != null) { //noinspection ForLoopReplaceableByForEach for (int i = 0, n = joined.size(); i < n; i++) { Action join = joined.get(i); deliverAction(result, join, exception); } } if (listener != null && exception != null) { listener.onImageLoadFailed(this, uri, exception); } }
@Test public void outOfMemoryDispatchFailed() { Action action = mockAction(URI_KEY_1, URI_1); BitmapHunter hunter = new OOMBitmapHunter(picasso, dispatcher, cache, stats, action); hunter.run(); Exception exception = hunter.getException(); verify(dispatcher).dispatchFailed(hunter); assertThat(hunter.getResult()).isNull(); assertThat(exception).hasMessageThat().contains("BEGIN PICASSO STATS"); assertThat(exception.getCause()).isInstanceOf(OutOfMemoryError.class); }