19fc12334a7d14347cd6951d0653264b2597bd3a0Sam Juddpackage com.bumptech.glide.load.model.file_descriptor;
2fcd787c911d5fbca2a34ff0963d4665543a03275Sam Judd
3fcd787c911d5fbca2a34ff0963d4665543a03275Sam Juddimport android.content.Context;
4fcd787c911d5fbca2a34ff0963d4665543a03275Sam Juddimport android.net.Uri;
5fcd787c911d5fbca2a34ff0963d4665543a03275Sam Juddimport android.os.ParcelFileDescriptor;
6f7a6d65cf7c1a41908dd48e0dab68ee5b881387eSam Judd
74626911b917568f6c1bd9d93f91ae1c70cb43554Sam Juddimport com.bumptech.glide.Glide;
8b51cd256aa6d673e49c77676a5e1f9bb644cd2b3Sam Juddimport com.bumptech.glide.load.data.DataFetcher;
9b51cd256aa6d673e49c77676a5e1f9bb644cd2b3Sam Juddimport com.bumptech.glide.load.data.FileDescriptorAssetPathFetcher;
10b51cd256aa6d673e49c77676a5e1f9bb644cd2b3Sam Juddimport com.bumptech.glide.load.data.FileDescriptorLocalUriFetcher;
119fc12334a7d14347cd6951d0653264b2597bd3a0Sam Juddimport com.bumptech.glide.load.model.GenericLoaderFactory;
129fc12334a7d14347cd6951d0653264b2597bd3a0Sam Juddimport com.bumptech.glide.load.model.GlideUrl;
139fc12334a7d14347cd6951d0653264b2597bd3a0Sam Juddimport com.bumptech.glide.load.model.ModelLoader;
149fc12334a7d14347cd6951d0653264b2597bd3a0Sam Juddimport com.bumptech.glide.load.model.ModelLoaderFactory;
159fc12334a7d14347cd6951d0653264b2597bd3a0Sam Juddimport com.bumptech.glide.load.model.UriLoader;
16fcd787c911d5fbca2a34ff0963d4665543a03275Sam Judd
17fcd787c911d5fbca2a34ff0963d4665543a03275Sam Judd/**
185f4610b54d517be58105bcf73ce3291ba79f9f40Sam Judd * A {@link ModelLoader} For translating {@link Uri} models for local uris into {@link ParcelFileDescriptor} data.
19fcd787c911d5fbca2a34ff0963d4665543a03275Sam Judd */
20fcd787c911d5fbca2a34ff0963d4665543a03275Sam Juddpublic class FileDescriptorUriLoader extends UriLoader<ParcelFileDescriptor> implements FileDescriptorModelLoader<Uri> {
21b2bcf70a40da4ebb1f914ab5ccedf3de593b6951Sam Judd
22b5419dc08eb0a0f82821d774435720e5a31bc936Sam Judd    /**
23b5419dc08eb0a0f82821d774435720e5a31bc936Sam Judd     * The default factory for {@link com.bumptech.glide.load.model.file_descriptor.FileDescriptorUriLoader}s.
24b5419dc08eb0a0f82821d774435720e5a31bc936Sam Judd     */
25fcd787c911d5fbca2a34ff0963d4665543a03275Sam Judd    public static class Factory implements ModelLoaderFactory<Uri, ParcelFileDescriptor> {
26fcd787c911d5fbca2a34ff0963d4665543a03275Sam Judd        @Override
27fcd787c911d5fbca2a34ff0963d4665543a03275Sam Judd        public ModelLoader<Uri, ParcelFileDescriptor> build(Context context, GenericLoaderFactory factories) {
28fe090f50f3040f4d478143a3e0ffa8cdf813fefcSam Judd            return new FileDescriptorUriLoader(context, factories.buildModelLoader(GlideUrl.class,
291c213bd9646c0292439767103060391121624ff9Sam Judd                    ParcelFileDescriptor.class));
30fcd787c911d5fbca2a34ff0963d4665543a03275Sam Judd        }
31fcd787c911d5fbca2a34ff0963d4665543a03275Sam Judd
32fcd787c911d5fbca2a34ff0963d4665543a03275Sam Judd        @Override
33de24d6a2112bebef8d42def8c1f21c79ab7d418fRobert Papp        public void teardown() {
34de24d6a2112bebef8d42def8c1f21c79ab7d418fRobert Papp            // Do nothing.
35de24d6a2112bebef8d42def8c1f21c79ab7d418fRobert Papp        }
36fcd787c911d5fbca2a34ff0963d4665543a03275Sam Judd    }
37fcd787c911d5fbca2a34ff0963d4665543a03275Sam Judd
384626911b917568f6c1bd9d93f91ae1c70cb43554Sam Judd    public FileDescriptorUriLoader(Context context) {
39c5ba6fb229c79a6f90e9c430f11d02b43bfdc247Sam Judd        this(context, Glide.buildFileDescriptorModelLoader(GlideUrl.class, context));
404626911b917568f6c1bd9d93f91ae1c70cb43554Sam Judd    }
414626911b917568f6c1bd9d93f91ae1c70cb43554Sam Judd
42c5ba6fb229c79a6f90e9c430f11d02b43bfdc247Sam Judd    public FileDescriptorUriLoader(Context context, ModelLoader<GlideUrl, ParcelFileDescriptor> urlLoader) {
43fcd787c911d5fbca2a34ff0963d4665543a03275Sam Judd        super(context, urlLoader);
44fcd787c911d5fbca2a34ff0963d4665543a03275Sam Judd    }
45fcd787c911d5fbca2a34ff0963d4665543a03275Sam Judd
46fcd787c911d5fbca2a34ff0963d4665543a03275Sam Judd    @Override
47bcf4a0dae04a4ad14287eeb34069a97c96fe9bb1Sam Judd    protected DataFetcher<ParcelFileDescriptor> getLocalUriFetcher(Context context, Uri uri) {
48fcd787c911d5fbca2a34ff0963d4665543a03275Sam Judd        return new FileDescriptorLocalUriFetcher(context, uri);
49fcd787c911d5fbca2a34ff0963d4665543a03275Sam Judd    }
50b51cd256aa6d673e49c77676a5e1f9bb644cd2b3Sam Judd
51b51cd256aa6d673e49c77676a5e1f9bb644cd2b3Sam Judd    @Override
52b51cd256aa6d673e49c77676a5e1f9bb644cd2b3Sam Judd    protected DataFetcher<ParcelFileDescriptor> getAssetPathFetcher(Context context, String assetPath) {
53b51cd256aa6d673e49c77676a5e1f9bb644cd2b3Sam Judd        return new FileDescriptorAssetPathFetcher(context.getApplicationContext().getAssets(), assetPath);
54b51cd256aa6d673e49c77676a5e1f9bb644cd2b3Sam Judd    }
55fcd787c911d5fbca2a34ff0963d4665543a03275Sam Judd}
56