@Override public DiskCache build() { File cacheDir = cacheDirectoryGetter.getCacheDirectory(); if (cacheDir == null) { return null; } if (!cacheDir.mkdirs() && (!cacheDir.exists() || !cacheDir.isDirectory())) { return null; } return DiskLruCacheWrapper.create(cacheDir, diskCacheSize); } }
@Override public DiskCache build() { // Careful: the external cache directory doesn't enforce permissions return DiskLruCacheWrapper.create(DataHelper.makeDirs(new File(appComponent.cacheFile(), "Glide")), IMAGE_DISK_CACHE_MAX_SIZE); } });
@Before public void setUp() { dir = RuntimeEnvironment.application.getCacheDir(); cache = DiskLruCacheWrapper.create(dir, 10 * 1024 * 1024); key = new ObjectKey("test" + Math.random()); data = new byte[] { 1, 2, 3, 4, 5, 6 }; }
@Test public void clearDiskCache_afterOpeningDiskCache_andDeleteDirectoryOutsideGlide_doesNotThrow() { DiskCache cache = DiskLruCacheWrapper.create(cacheDir, 1024 * 1024); cache.get(mock(Key.class)); deleteRecursively(cacheDir); cache.clear(); }
@Test public void get_afterDeleteDirectoryOutsideGlideAndClose_doesNotThrow() { DiskCache cache = DiskLruCacheWrapper.create(cacheDir, 1024 * 1024); cache.get(mock(Key.class)); deleteRecursively(cacheDir); cache.clear(); cache.get(mock(Key.class)); }
@Test public void get_afterDeleteDirectoryOutsideGlideAndClose_doesNotThrow() { assumeTrue("A file handle is likely open, so cannot delete dir", !Util.isWindows()); DiskCache cache = DiskLruCacheWrapper.create(dir, 1024 * 1024); cache.get(mock(Key.class)); deleteRecursive(dir); cache.clear(); cache.get(mock(Key.class)); } }
@Test public void clearDiskCache_afterOpeningDiskCache_andDeleteDirectoryOutsideGlide_doesNotThrow() { assumeTrue("A file handle is likely open, so cannot delete dir", !Util.isWindows()); DiskCache cache = DiskLruCacheWrapper.create(dir, 1024 * 1024); cache.get(mock(Key.class)); deleteRecursive(dir); cache.clear(); }
@Test public void loadFromCache_afterDiskCacheDeleted_doesNotFail() { final DiskCache cache = DiskLruCacheWrapper.create(cacheDir, 1024 * 1024); cache.get(mock(Key.class)); deleteRecursively(cacheDir); Glide.init( context, new GlideBuilder() .setDiskCache(new Factory() { @Override public DiskCache build() { return cache; } })); Drawable drawable = concurrency.get(Glide.with(context) .load(raw.canonical) .submit()); assertThat(drawable).isNotNull(); }
@Test public void loadFromCache_afterDiskCacheDeletedAndCleared_doesNotFail() { final DiskCache cache = DiskLruCacheWrapper.create(cacheDir, 1024 * 1024); cache.get(mock(Key.class)); deleteRecursively(cacheDir); cache.clear(); Glide.init( context, new GlideBuilder() .setDiskCache(new Factory() { @Override public DiskCache build() { return cache; } })); Drawable drawable = concurrency.get( Glide.with(context) .load(ResourceIds.raw.canonical) .submit()); assertThat(drawable).isNotNull(); }
@Override public void applyOptions(@NonNull Context context, @NonNull GlideBuilder builder) { super.applyOptions(context, builder); builder.setDiskCache(() -> DiskLruCacheWrapper.create(context.getCacheDir(),IMAGE_DISK_CACHE_MAX_SIZE)); } }
@Override public DiskCache build() { // Careful: the external cache directory doesn't enforce permissions return DiskLruCacheWrapper.create(DataHelper.makeDirs(new File(appComponent.cacheFile(), "Glide")), IMAGE_DISK_CACHE_MAX_SIZE); } });