Skip to content

Commit bd8c207

Browse files
author
jacob-tabak
committed
Prioritize injected RequestHandlers over defaults
1 parent d3a6b45 commit bd8c207

File tree

2 files changed

+16
-9
lines changed

2 files changed

+16
-9
lines changed

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

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -147,15 +147,15 @@ public interface RequestTransformer {
147147
// forcing other RequestHandlers to perform null checks on request.uri
148148
// to cover the (request.resourceId != 0) case.
149149
allRequestHandlers.add(new ResourceRequestHandler(context));
150+
if (extraRequestHandlers != null) {
151+
allRequestHandlers.addAll(extraRequestHandlers);
152+
}
150153
allRequestHandlers.add(new ContactsPhotoRequestHandler(context));
151154
allRequestHandlers.add(new MediaStoreRequestHandler(context));
152155
allRequestHandlers.add(new ContentStreamRequestHandler(context));
153156
allRequestHandlers.add(new AssetRequestHandler(context));
154157
allRequestHandlers.add(new FileRequestHandler(context));
155158
allRequestHandlers.add(new NetworkRequestHandler(dispatcher.downloader, stats));
156-
if (extraRequestHandlers != null) {
157-
allRequestHandlers.addAll(extraRequestHandlers);
158-
}
159159
requestHandlers = Collections.unmodifiableList(allRequestHandlers);
160160

161161
this.stats = stats;

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

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -17,30 +17,26 @@
1717

1818
import android.content.Context;
1919
import android.graphics.Bitmap;
20-
import android.graphics.BitmapFactory;
2120
import android.graphics.Matrix;
2221
import android.net.Uri;
2322
import java.io.File;
2423
import java.io.IOException;
24+
import java.util.Arrays;
25+
import java.util.List;
2526
import java.util.concurrent.FutureTask;
2627
import org.junit.Before;
2728
import org.junit.Test;
2829
import org.junit.runner.RunWith;
2930
import org.mockito.Mock;
30-
import org.robolectric.Robolectric;
3131
import org.robolectric.RobolectricTestRunner;
3232
import org.robolectric.annotation.Config;
3333
import org.robolectric.shadows.ShadowBitmap;
3434
import org.robolectric.shadows.ShadowMatrix;
3535

3636
import static android.graphics.Bitmap.Config.ARGB_8888;
37-
import static android.graphics.Bitmap.Config.RGB_565;
3837
import static com.squareup.picasso.BitmapHunter.forRequest;
3938
import static com.squareup.picasso.BitmapHunter.transformResult;
4039
import static com.squareup.picasso.Picasso.LoadedFrom.MEMORY;
41-
import static com.squareup.picasso.RequestHandler.calculateInSampleSize;
42-
import static com.squareup.picasso.RequestHandler.createBitmapOptions;
43-
import static com.squareup.picasso.RequestHandler.requiresInSampleSize;
4440
import static com.squareup.picasso.TestUtils.ASSET_KEY_1;
4541
import static com.squareup.picasso.TestUtils.ASSET_URI_1;
4642
import static com.squareup.picasso.TestUtils.BITMAP_1;
@@ -329,6 +325,17 @@ public class BitmapHunterTest {
329325
assertThat(hunter.requestHandler).isInstanceOf(CustomRequestHandler.class);
330326
}
331327

328+
@Test public void forOverrideRequest() {
329+
Action action = mockAction(ASSET_KEY_1, ASSET_URI_1);
330+
RequestHandler handler = new AssetRequestHandler(context);
331+
List<RequestHandler> handlers = Arrays.asList(handler);
332+
// Must use non-mock constructor because that is where Picasso's list of handlers is created.
333+
Picasso picasso = new Picasso(context, dispatcher, cache, null, null, handlers, stats,
334+
false, false);
335+
BitmapHunter hunter = forRequest(picasso, dispatcher, cache, stats, action);
336+
assertThat(hunter.requestHandler).isEqualTo(handler);
337+
}
338+
332339
@Test public void exifRotation() throws Exception {
333340
Request data = new Request.Builder(URI_1).rotate(-45).build();
334341
Bitmap source = Bitmap.createBitmap(10, 10, ARGB_8888);

0 commit comments

Comments
 (0)