CrackMe.apk
Download file
package com.facebook.imagepipeline.producers;
import com.facebook.cache.common.CacheKey;
import com.facebook.imageformat.ImageFormat;
import com.facebook.imagepipeline.cache.BufferedDiskCache;
import com.facebook.imagepipeline.cache.CacheKeyFactory;
import com.facebook.imagepipeline.image.EncodedImage;
import com.facebook.imagepipeline.request.ImageRequest;
import java.util.Map;
import javax.annotation.Nullable;
public class DiskCacheWriteProducer implements Producer<EncodedImage> {
static final String PRODUCER_NAME = "DiskCacheWriteProducer";
private final CacheKeyFactory mCacheKeyFactory;
private final BufferedDiskCache mDefaultBufferedDiskCache;
private final Producer<EncodedImage> mInputProducer;
private final BufferedDiskCache mSmallImageBufferedDiskCache;
public DiskCacheWriteProducer(BufferedDiskCache bufferedDiskCache, BufferedDiskCache bufferedDiskCache2, CacheKeyFactory cacheKeyFactory, Producer<EncodedImage> producer) {
this.mDefaultBufferedDiskCache = bufferedDiskCache;
this.mSmallImageBufferedDiskCache = bufferedDiskCache2;
this.mCacheKeyFactory = cacheKeyFactory;
this.mInputProducer = producer;
}
public void produceResults(Consumer<EncodedImage> consumer, ProducerContext producerContext) {
maybeStartInputProducer(consumer, producerContext);
}
private void maybeStartInputProducer(Consumer<EncodedImage> consumer, ProducerContext producerContext) {
if (producerContext.getLowestPermittedRequestLevel().getValue() >= ImageRequest.RequestLevel.DISK_CACHE.getValue()) {
producerContext.putOriginExtra("disk", "nil-result_write");
consumer.onNewResult(null, 1);
return;
}
if (producerContext.getImageRequest().isDiskCacheEnabled()) {
consumer = new DiskCacheWriteConsumer(consumer, producerContext, this.mDefaultBufferedDiskCache, this.mSmallImageBufferedDiskCache, this.mCacheKeyFactory);
}
this.mInputProducer.produceResults(consumer, producerContext);
}
private static class DiskCacheWriteConsumer extends DelegatingConsumer<EncodedImage, EncodedImage> {
private final CacheKeyFactory mCacheKeyFactory;
private final BufferedDiskCache mDefaultBufferedDiskCache;
private final ProducerContext mProducerContext;
private final BufferedDiskCache mSmallImageBufferedDiskCache;
private DiskCacheWriteConsumer(Consumer<EncodedImage> consumer, ProducerContext producerContext, BufferedDiskCache bufferedDiskCache, BufferedDiskCache bufferedDiskCache2, CacheKeyFactory cacheKeyFactory) {
super(consumer);
this.mProducerContext = producerContext;
this.mDefaultBufferedDiskCache = bufferedDiskCache;
this.mSmallImageBufferedDiskCache = bufferedDiskCache2;
this.mCacheKeyFactory = cacheKeyFactory;
}
public void onNewResultImpl(@Nullable EncodedImage encodedImage, int i) {
this.mProducerContext.getProducerListener().onProducerStart(this.mProducerContext, DiskCacheWriteProducer.PRODUCER_NAME);
if (isNotLast(i) || encodedImage == null || statusHasAnyFlag(i, 10) || encodedImage.getImageFormat() == ImageFormat.UNKNOWN) {
this.mProducerContext.getProducerListener().onProducerFinishWithSuccess(this.mProducerContext, DiskCacheWriteProducer.PRODUCER_NAME, (Map<String, String>) null);
getConsumer().onNewResult(encodedImage, i);
return;
}
ImageRequest imageRequest = this.mProducerContext.getImageRequest();
CacheKey encodedCacheKey = this.mCacheKeyFactory.getEncodedCacheKey(imageRequest, this.mProducerContext.getCallerContext());
if (imageRequest.getCacheChoice() == ImageRequest.CacheChoice.SMALL) {
this.mSmallImageBufferedDiskCache.put(encodedCacheKey, encodedImage);
} else {
this.mDefaultBufferedDiskCache.put(encodedCacheKey, encodedImage);
}
this.mProducerContext.getProducerListener().onProducerFinishWithSuccess(this.mProducerContext, DiskCacheWriteProducer.PRODUCER_NAME, (Map<String, String>) null);
getConsumer().onNewResult(encodedImage, i);
}
}
}
Download file