Add decompiled APK source code (JADX)

- 28,932 files
- Full Java source code
- Smali files
- Resources

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This commit is contained in:
2026-02-18 14:52:23 -08:00
parent cc210a65ea
commit f9d20bb3fc
26991 changed files with 2541449 additions and 0 deletions

View File

@@ -0,0 +1,23 @@
package com.mbridge.msdk.foundation.download;
/* loaded from: classes4.dex */
public final class Command {
public static final int CACHE_DIRECTOR_PATH_TYPE_EXTERNAL = 1;
public static final int CACHE_DIRECTOR_PATH_TYPE_INTERNAL = 0;
public static final int DEFAULT_CONNECT_TIMEOUT_IN_MILLS = 20000;
public static final String DEFAULT_DATABASE_TABLE_NAME = "downloadTable";
public static final int DEFAULT_DOWNLOAD_RATE = 100;
public static final int DEFAULT_MAX_REQUESTS = 64;
public static final int DEFAULT_MAX_REQUESTS_PER_HOST = 20;
public static final int DEFAULT_PING_INTERVAL = 10;
public static final int DEFAULT_READ_TIMEOUT_IN_MILLS = 20000;
public static final int DEFAULT_STREAM_BYTE_BUFFER_SIZE = 4096;
public static final String DEFAULT_USER_AGENT = "okhttp/3.12.13/MAL_16.8.51";
public static final int DEFAULT_WRITE_TIMEOUT_IN_MILLS = 20000;
public static final String HTTP_HEADER_ETAG = "ETag";
public static final String HTTP_HEADER_RANGE = "Range";
public static final String HTTP_HEADER_USER_AGENT = "User-Agent";
private Command() {
}
}

View File

@@ -0,0 +1,14 @@
package com.mbridge.msdk.foundation.download;
/* loaded from: classes4.dex */
public class DownloadError {
private Exception exception;
public Exception getException() {
return this.exception;
}
public DownloadError(Exception exc) {
this.exception = exc;
}
}

View File

@@ -0,0 +1,182 @@
package com.mbridge.msdk.foundation.download;
import android.net.Uri;
import android.text.TextUtils;
import com.mbridge.msdk.foundation.download.core.GlobalComponent;
import com.mbridge.msdk.foundation.download.download.ResourceManager;
import com.mbridge.msdk.foundation.download.utils.ILogger;
import com.mbridge.msdk.foundation.same.net.e.b;
import com.mbridge.msdk.foundation.tools.af;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.HashMap;
import java.util.Map;
/* loaded from: classes4.dex */
public class DownloadMessage<T> {
private static final String TAG = "DownloadMessage";
private boolean checkMD5;
private int downloadRate;
private DownloadResourceType downloadResourceType;
private String downloadUrl;
private Map<String, Object> extraData;
private String host;
private boolean isCache;
private String md5;
private T object;
private String resourceUrl;
private String saveFileName;
private String saveFilePath;
private int from = 0;
private boolean isUseCronet = false;
private int md5VerifyResult = 0;
public boolean canUseCronet() {
return this.isUseCronet;
}
public int getDownloadRate() {
return this.downloadRate;
}
public DownloadResourceType getDownloadResourceType() {
return this.downloadResourceType;
}
public String getDownloadUrl() {
return this.downloadUrl;
}
public int getFrom() {
return this.from;
}
public String getMd5() {
return this.md5;
}
public int getMd5VerifyResult() {
return this.md5VerifyResult;
}
public T getObject() {
return this.object;
}
public String getResourceUrl() {
return this.resourceUrl;
}
public String getSaveFileName() {
return this.saveFileName;
}
public String getSaveFilePath() {
return this.saveFilePath;
}
public boolean isCache() {
return this.isCache;
}
public boolean isCheckMD5() {
return this.checkMD5;
}
public void setCache(boolean z) {
this.isCache = z;
}
public void setCheckMD5(boolean z) {
this.checkMD5 = z;
}
public void setDownloadRate(int i) {
this.downloadRate = i;
}
public void setFrom(int i) {
this.from = i;
}
public void setMd5(String str) {
this.md5 = str;
}
public void setMd5VerifyResult(int i) {
this.md5VerifyResult = i;
}
public void setSaveFilePath(String str) {
this.saveFilePath = str;
}
public DownloadMessage(T t, String str, String str2, int i, DownloadResourceType downloadResourceType) {
this.checkMD5 = false;
this.md5 = "";
this.object = t;
this.downloadUrl = str;
this.saveFileName = str2;
this.downloadRate = i;
this.downloadResourceType = downloadResourceType;
try {
URL url = new URL(str);
this.resourceUrl = url.getProtocol() + "://" + url.getHost() + url.getPath();
ILogger logger = GlobalComponent.getInstance().getLogger();
StringBuilder sb = new StringBuilder();
sb.append(" resourceUrl: ");
sb.append(this.resourceUrl);
logger.log(TAG, sb.toString());
} catch (MalformedURLException unused) {
this.resourceUrl = "";
}
try {
Uri parse = Uri.parse(str);
String queryParameter = parse.getQueryParameter(ResourceManager.KEY_MD5CHECK);
String queryParameter2 = parse.getQueryParameter(ResourceManager.KEY_MD5FILENAME);
if (!TextUtils.isEmpty(queryParameter) || TextUtils.isEmpty(queryParameter2)) {
return;
}
this.checkMD5 = true;
this.md5 = queryParameter2;
} catch (Throwable th) {
GlobalComponent.getInstance().getLogger().log(TAG, th.getMessage());
}
}
public void addExtra(String str, Object obj) {
if (this.extraData == null) {
this.extraData = new HashMap(4);
}
this.extraData.put(str, obj);
}
public Object getExtra(String str) {
Map<String, Object> map = this.extraData;
if (map == null || !map.containsKey(str)) {
return null;
}
return this.extraData.get(str);
}
public void setUseCronetDownload(int i) {
boolean z = true;
if (i != 1 && i != 2) {
z = false;
}
try {
this.isUseCronet = z;
if (TextUtils.isEmpty(this.downloadUrl)) {
return;
}
if (TextUtils.isEmpty(this.host)) {
this.host = new URL(this.downloadUrl).getHost();
}
if (this.isUseCronet) {
b.a(this.host);
}
} catch (Throwable th) {
af.b(TAG, th.getMessage());
}
}
}

View File

@@ -0,0 +1,9 @@
package com.mbridge.msdk.foundation.download;
/* loaded from: classes4.dex */
public enum DownloadPriority {
LOW,
MEDIUM,
HIGH,
IMMEDIATE
}

View File

@@ -0,0 +1,60 @@
package com.mbridge.msdk.foundation.download;
import android.os.Parcel;
import android.os.Parcelable;
/* loaded from: classes4.dex */
public class DownloadProgress implements Parcelable {
public static final Parcelable.Creator<DownloadProgress> CREATOR = new Parcelable.Creator<DownloadProgress>() { // from class: com.mbridge.msdk.foundation.download.DownloadProgress.1
/* JADX WARN: Can't rename method to resolve collision */
@Override // android.os.Parcelable.Creator
public DownloadProgress createFromParcel(Parcel parcel) {
return new DownloadProgress(parcel);
}
/* JADX WARN: Can't rename method to resolve collision */
@Override // android.os.Parcelable.Creator
public DownloadProgress[] newArray(int i) {
return new DownloadProgress[i];
}
};
private long current;
private int currentDownloadRate;
private long total;
@Override // android.os.Parcelable
public int describeContents() {
return 0;
}
public long getCurrent() {
return this.current;
}
public int getCurrentDownloadRate() {
return this.currentDownloadRate;
}
public long getTotal() {
return this.total;
}
public DownloadProgress(long j, long j2, int i) {
this.current = j;
this.total = j2;
this.currentDownloadRate = i;
}
public DownloadProgress(Parcel parcel) {
this.current = parcel.readLong();
this.total = parcel.readLong();
this.currentDownloadRate = parcel.readInt();
}
@Override // android.os.Parcelable
public void writeToParcel(Parcel parcel, int i) {
parcel.writeLong(this.current);
parcel.writeLong(this.total);
parcel.writeInt(this.currentDownloadRate);
}
}

View File

@@ -0,0 +1,39 @@
package com.mbridge.msdk.foundation.download;
/* loaded from: classes4.dex */
public enum DownloadResourceType {
DOWNLOAD_RESOURCE_TYPE_VIDEO(0),
DOWNLOAD_RESOURCE_TYPE_ZIP(1),
DOWNLOAD_RESOURCE_TYPE_IMAGE(2),
DOWNLOAD_RESOURCE_TYPE_HTML(3),
DOWNLOAD_RESOURCE_TYPE_OTHER(4),
DOWNLOAD_RESOURCE_TYPE_APK(5);
public int resourceType;
public static DownloadResourceType getDownloadResourceType(int i) {
if (i == 0) {
return DOWNLOAD_RESOURCE_TYPE_VIDEO;
}
if (i == 1) {
return DOWNLOAD_RESOURCE_TYPE_ZIP;
}
if (i == 2) {
return DOWNLOAD_RESOURCE_TYPE_IMAGE;
}
if (i == 3) {
return DOWNLOAD_RESOURCE_TYPE_HTML;
}
if (i == 4) {
return DOWNLOAD_RESOURCE_TYPE_OTHER;
}
if (i != 5) {
return null;
}
return DOWNLOAD_RESOURCE_TYPE_APK;
}
DownloadResourceType(int i) {
this.resourceType = i;
}
}

View File

@@ -0,0 +1,80 @@
package com.mbridge.msdk.foundation.download;
import com.mbridge.msdk.foundation.download.utils.Objects;
/* loaded from: classes4.dex */
public class DownloadResponse {
private static final String UN_KNOWN = "unknown";
private DownloadError _error;
private boolean _isCancelled;
private boolean _isSuccessful;
private int from = 0;
private boolean isFailed;
private boolean isResponseStart;
private boolean isTimeout;
public DownloadError getError() {
return this._error;
}
public int getFrom() {
return this.from;
}
public boolean isCancelled() {
return this._isCancelled;
}
public boolean isFailed() {
return this.isFailed;
}
public boolean isResponseStart() {
return this.isResponseStart;
}
public boolean isSuccessful() {
return this._isSuccessful;
}
public boolean isTimeout() {
return this.isTimeout;
}
public void setCancelled(boolean z) {
this._isCancelled = z;
}
public void setFailed(boolean z) {
this.isFailed = z;
}
public void setFrom(int i) {
this.from = i;
}
public void setResponseStart(boolean z) {
this.isResponseStart = z;
}
public void setSuccessful(boolean z) {
this._isSuccessful = z;
}
public void setTimeout(boolean z) {
this.isTimeout = z;
}
public String getErrorMessage() {
return (Objects.isNull(getError()) || Objects.isNull(getError().getException())) ? "unknown" : getError().getException().getMessage();
}
public void setError(DownloadError downloadError) {
this._error = downloadError;
setSuccessful(false);
}
public void setError(Exception exc) {
setError(new DownloadError(exc));
}
}

View File

@@ -0,0 +1,14 @@
package com.mbridge.msdk.foundation.download;
/* loaded from: classes4.dex */
public enum DownloadStatus {
QUEUED,
RUNNING,
PAUSED,
COMPLETED,
CANCELLED,
FAILED,
DELAY,
RETRY,
UNKNOWN
}

View File

@@ -0,0 +1,175 @@
package com.mbridge.msdk.foundation.download;
import android.os.Handler;
import com.mbridge.msdk.foundation.download.database.IDatabaseOpenHelper;
import com.mbridge.msdk.foundation.download.utils.ILogger;
import com.mbridge.msdk.foundation.download.utils.Objects;
/* loaded from: classes4.dex */
public class MBDownloadConfig {
private Handler databaseHandler;
private IDatabaseOpenHelper databaseHelper;
private long defaultConnectTimeout;
private long defaultPingInterval;
private long defaultReadTimeout;
private long defaultWriteTimeout;
private ILogger logger;
private int maxRequests;
private int maxRequestsPerHost;
public Handler getDatabaseHandler() {
return this.databaseHandler;
}
public IDatabaseOpenHelper getDatabaseHelper() {
return this.databaseHelper;
}
public long getDefaultConnectTimeout() {
return this.defaultConnectTimeout;
}
public long getDefaultPingInterval() {
return this.defaultPingInterval;
}
public long getDefaultReadTimeout() {
return this.defaultReadTimeout;
}
public long getDefaultWriteTimeout() {
return this.defaultWriteTimeout;
}
public ILogger getLogger() {
return this.logger;
}
public int getMaxRequests() {
return this.maxRequests;
}
public int getMaxRequestsPerHost() {
return this.maxRequestsPerHost;
}
private MBDownloadConfig(Builder builder) {
this.databaseHelper = builder.databaseHelper;
this.logger = builder.logger;
this.databaseHandler = builder.databaseHandler;
this.defaultConnectTimeout = builder.defaultConnectTimeout;
this.defaultReadTimeout = builder.defaultReadTimeout;
this.defaultWriteTimeout = builder.defaultWriteTimeout;
this.maxRequests = builder.maxRequests;
this.maxRequestsPerHost = builder.maxRequestsPerHost;
this.defaultPingInterval = builder.defaultPingInterval;
}
public static Builder newBuilder() {
return new Builder(null);
}
public static Builder newBuilder(MBDownloadConfig mBDownloadConfig) {
return new Builder(mBDownloadConfig);
}
public static final class Builder {
private Handler databaseHandler;
private IDatabaseOpenHelper databaseHelper;
private String databaseName;
private int databaseVersion;
private long defaultConnectTimeout;
private long defaultPingInterval;
private long defaultReadTimeout;
private long defaultWriteTimeout;
private ILogger logger;
private int maxRequests;
private int maxRequestsPerHost;
private String tableName;
public final Builder setDatabaseHandler(Handler handler) {
this.databaseHandler = handler;
return this;
}
public final Builder setDatabaseOpenHelper(IDatabaseOpenHelper iDatabaseOpenHelper) {
this.databaseHelper = iDatabaseOpenHelper;
return this;
}
public final Builder setDefaultConnectTimeout(long j) {
this.defaultConnectTimeout = j;
return this;
}
public final Builder setDefaultPingInterval(long j) {
this.defaultPingInterval = j;
return this;
}
public final Builder setDefaultReadTimeout(long j) {
this.defaultReadTimeout = j;
return this;
}
public final Builder setDefaultWriteTimeout(long j) {
this.defaultWriteTimeout = j;
return this;
}
public final Builder setLogger(ILogger iLogger) {
this.logger = iLogger;
return this;
}
public final Builder setMaxRequests(int i) {
this.maxRequests = i;
return this;
}
public final Builder setMaxRequestsPerHost(int i) {
this.maxRequestsPerHost = i;
return this;
}
public Builder() {
this(null);
}
public Builder(MBDownloadConfig mBDownloadConfig) {
this.databaseName = "";
this.databaseVersion = -1;
this.defaultConnectTimeout = 20000L;
this.defaultPingInterval = 10L;
this.defaultReadTimeout = 20000L;
this.defaultWriteTimeout = 20000L;
this.logger = new ILogger() { // from class: com.mbridge.msdk.foundation.download.MBDownloadConfig.Builder.1
@Override // com.mbridge.msdk.foundation.download.utils.ILogger
public void log(String str, Exception exc) {
}
@Override // com.mbridge.msdk.foundation.download.utils.ILogger
public void log(String str, String str2) {
}
};
this.maxRequests = 64;
this.maxRequestsPerHost = 20;
this.tableName = Command.DEFAULT_DATABASE_TABLE_NAME;
if (Objects.isNotNull(mBDownloadConfig)) {
this.databaseHandler = mBDownloadConfig.getDatabaseHandler();
this.logger = mBDownloadConfig.getLogger();
this.defaultReadTimeout = mBDownloadConfig.getDefaultReadTimeout();
this.defaultConnectTimeout = mBDownloadConfig.getDefaultConnectTimeout();
this.maxRequests = mBDownloadConfig.getMaxRequests();
this.defaultWriteTimeout = mBDownloadConfig.getDefaultWriteTimeout();
this.maxRequests = mBDownloadConfig.getMaxRequests();
this.maxRequestsPerHost = mBDownloadConfig.getMaxRequestsPerHost();
this.defaultPingInterval = mBDownloadConfig.getDefaultPingInterval();
}
}
public final MBDownloadConfig build() {
return new MBDownloadConfig(this);
}
}
}

View File

@@ -0,0 +1,67 @@
package com.mbridge.msdk.foundation.download;
import android.content.Context;
import com.mbridge.msdk.foundation.download.core.DownloadRequestBuilder;
import com.mbridge.msdk.foundation.download.core.DownloadRequestQueue;
import com.mbridge.msdk.foundation.download.core.ExecutorManager;
import com.mbridge.msdk.foundation.download.core.GlobalComponent;
import com.mbridge.msdk.foundation.download.resource.MBResourceManager;
import com.mbridge.msdk.foundation.download.resource.ResourceConfig;
/* loaded from: classes4.dex */
public final class MBDownloadManager {
private boolean initialize;
public static final class ClassHolder {
private static final MBDownloadManager MB_DOWNLOAD_MANAGER = new MBDownloadManager();
private ClassHolder() {
}
}
private MBDownloadManager() {
this.initialize = false;
}
public static MBDownloadManager getInstance() {
return ClassHolder.MB_DOWNLOAD_MANAGER;
}
public final synchronized void cancel(String str) {
DownloadRequestQueue.getInstance().cancel(str);
}
public final synchronized void cancelAll() {
DownloadRequestQueue.getInstance().cancelAll();
}
public final synchronized DownloadRequestBuilder download(DownloadMessage<?> downloadMessage) {
return new DownloadRequestBuilder(downloadMessage);
}
public final synchronized String getDownloadId(String str) {
return MBResourceManager.getInstance().getDownloadId(str);
}
public final synchronized DownloadStatus getStatus(String str) {
return DownloadRequestQueue.getInstance().getStatus(str);
}
public final void initialize(Context context, MBDownloadConfig mBDownloadConfig, ResourceConfig resourceConfig) {
if (this.initialize) {
return;
}
GlobalComponent.getInstance().initialize(context, mBDownloadConfig);
DownloadRequestQueue.getInstance().initialize();
MBResourceManager.getInstance().executeResourceStrategy(resourceConfig);
this.initialize = true;
}
public final synchronized void shutDown() {
ExecutorManager.shutDown();
}
public final synchronized void updateZipResource(String str, String str2, long j) {
GlobalComponent.getInstance().getDatabaseHelper().updateUnzipResource(str, str2, j);
}
}

View File

@@ -0,0 +1,12 @@
package com.mbridge.msdk.foundation.download;
/* loaded from: classes4.dex */
public interface OnDownloadStateListener<T> {
void onCancelDownload(DownloadMessage<T> downloadMessage);
void onDownloadComplete(DownloadMessage<T> downloadMessage);
void onDownloadError(DownloadMessage<T> downloadMessage, DownloadError downloadError);
void onDownloadStart(DownloadMessage<T> downloadMessage);
}

View File

@@ -0,0 +1,6 @@
package com.mbridge.msdk.foundation.download;
/* loaded from: classes4.dex */
public interface OnProgressStateListener<T> {
void onProgress(DownloadMessage<T> downloadMessage, DownloadProgress downloadProgress);
}

View File

@@ -0,0 +1,218 @@
package com.mbridge.msdk.foundation.download.core;
import android.text.TextUtils;
import com.mbridge.msdk.MBridgeConstans;
import com.mbridge.msdk.foundation.download.Command;
import com.mbridge.msdk.foundation.download.DownloadMessage;
import com.mbridge.msdk.foundation.download.DownloadProgress;
import com.mbridge.msdk.foundation.download.DownloadResponse;
import com.mbridge.msdk.foundation.download.DownloadStatus;
import com.mbridge.msdk.foundation.download.core.DownloaderReporter;
import com.mbridge.msdk.foundation.download.database.DownloadModel;
import com.mbridge.msdk.foundation.download.database.IDatabaseHelper;
import com.mbridge.msdk.foundation.download.resource.MBResourceManager;
import com.mbridge.msdk.foundation.download.resource.stream.DownloadFileOutputStream;
import com.mbridge.msdk.foundation.download.utils.Objects;
import com.mbridge.msdk.foundation.tools.af;
import com.mbridge.msdk.foundation.tools.ah;
import com.mbridge.msdk.tracker.network.h;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.nio.ByteBuffer;
import java.nio.channels.WritableByteChannel;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.concurrent.BlockingQueue;
import java.util.concurrent.atomic.AtomicBoolean;
import org.chromium.net.CronetException;
import org.chromium.net.UrlRequest;
import org.chromium.net.UrlResponseInfo;
/* loaded from: classes4.dex */
public class CronetDownloadCallback extends UrlRequest.Callback {
private static final String TAG = "CronetDownloadCallback";
private long contentLength;
private IDatabaseHelper databaseHelper;
private DownloadMessage<?> downloadMessage;
private DownloadModel downloadModel;
private DownloaderReporter.Builder downloadReporter;
private DownloadRequest<?> downloadRequest;
private DownloadResponse downloadResponse;
private String etag;
private DownloadFileOutputStream outputStream;
private int responseCode;
private BlockingQueue<DownloadResponse> responseQueue;
AtomicBoolean startResponse = new AtomicBoolean(false);
private ByteArrayOutputStream bytesReceived = null;
private WritableByteChannel receiveChannel = null;
private String getResponseHeadersWithJSON(UrlResponseInfo urlResponseInfo) {
return "";
}
private boolean isSuccessful(int i) {
return i >= 200 && i < 300;
}
public void onReadCompleted(UrlRequest urlRequest, UrlResponseInfo urlResponseInfo, ByteBuffer byteBuffer) throws Exception {
}
public void onRedirectReceived(UrlRequest urlRequest, UrlResponseInfo urlResponseInfo, String str) throws Exception {
}
public void onResponseStarted(UrlRequest urlRequest, UrlResponseInfo urlResponseInfo) throws Exception {
}
public void setBlockingQueue(BlockingQueue<DownloadResponse> blockingQueue) {
this.responseQueue = blockingQueue;
}
public CronetDownloadCallback(DownloadResponse downloadResponse, DownloadRequest<?> downloadRequest, DownloadMessage<?> downloadMessage, IDatabaseHelper iDatabaseHelper, DownloadModel downloadModel, DownloaderReporter.Builder builder) {
this.downloadResponse = downloadResponse;
this.downloadRequest = downloadRequest;
this.downloadMessage = downloadMessage;
this.databaseHelper = iDatabaseHelper;
this.downloadModel = downloadModel;
this.downloadReporter = builder;
}
public void onSucceeded(UrlRequest urlRequest, UrlResponseInfo urlResponseInfo) {
GlobalComponent.getInstance().getLogger().log(TAG, "onSucceeded");
insertDownloadInfo(this.downloadRequest.getDownloadId(), this.downloadRequest.getCacheDirectoryPath());
if (this.responseQueue != null) {
DownloadResponse downloadResponse = new DownloadResponse();
downloadResponse.setSuccessful(true);
this.responseQueue.add(downloadResponse);
}
}
private void insertDownloadInfo(String str, String str2) {
IDatabaseHelper databaseHelper = GlobalComponent.getInstance().getDatabaseHelper();
String downloadUrl = this.downloadMessage.getDownloadUrl();
String resourceUrl = this.downloadMessage.getResourceUrl();
String str3 = this.etag;
String saveFileName = this.downloadMessage.getSaveFileName();
long totalBytes = this.downloadRequest.getTotalBytes();
long downloadedBytes = this.downloadRequest.getDownloadedBytes();
int downloadRate = this.downloadMessage.getDownloadRate();
DownloadModel downloadModel = this.downloadModel;
databaseHelper.updateProgress(str, str2, DownloadModel.create(str, downloadUrl, resourceUrl, str3, str2, saveFileName, totalBytes, downloadedBytes, downloadRate, downloadModel == null ? 0 : downloadModel.getUsageCounter(), this.downloadMessage.getDownloadResourceType()));
if (this.downloadResponse.isCancelled()) {
return;
}
this.downloadResponse.setSuccessful(true);
}
@Override // org.chromium.net.UrlRequest.Callback
public void onFailed(UrlRequest urlRequest, UrlResponseInfo urlResponseInfo, CronetException cronetException) {
GlobalComponent.getInstance().getLogger().log(TAG, "onFailed");
try {
if (Objects.isNotNull(this.databaseHelper) && Objects.isNotNull(this.downloadRequest)) {
if (!ah.a().a("r_f_s_d_e", true)) {
this.databaseHelper.remove(this.downloadRequest.getDownloadId(), this.downloadRequest.getCacheDirectoryPath());
MBResourceManager.getInstance().deleteFile(new File(this.downloadRequest.getCacheDirectoryPath() + this.downloadMessage.getSaveFileName()));
}
this.downloadRequest.setDownloadedBytes(0L);
this.downloadRequest.setTotalBytes(0L);
}
} catch (Exception e) {
GlobalComponent.getInstance().getLogger().log(TAG, e.getMessage());
}
this.downloadResponse.setError(cronetException);
if (this.responseQueue != null) {
this.downloadResponse.setFailed(true);
this.responseQueue.add(this.downloadResponse);
}
}
@Override // org.chromium.net.UrlRequest.Callback
public void onCanceled(UrlRequest urlRequest, UrlResponseInfo urlResponseInfo) {
GlobalComponent.getInstance().getLogger().log(TAG, "onCanceled");
super.onCanceled(urlRequest, urlResponseInfo);
insertDownloadInfo(this.downloadRequest.getDownloadId(), this.downloadRequest.getCacheDirectoryPath());
}
private void sendProgress(DownloadRequest downloadRequest, DownloadMessage downloadMessage, long j, long j2, int i) {
if (downloadRequest.getStatus() != DownloadStatus.CANCELLED) {
downloadRequest.handlerProcessEvent(downloadMessage, new DownloadProgress(j, j2, i));
}
}
private boolean checkDownloadRequestInfo(UrlRequest urlRequest, UrlResponseInfo urlResponseInfo) {
this.downloadRequest.getDownloadId();
this.downloadRequest.getCacheDirectoryPath();
throw null;
}
private static void cancelRequestSafety(UrlRequest urlRequest) {
try {
throw null;
} catch (Exception e) {
if (MBridgeConstans.DEBUG) {
af.b(TAG, "cancelRequest error: ", e);
}
}
}
private int getContentLength(UrlResponseInfo urlResponseInfo) {
throw null;
}
private String getETagFromHeader(List<Map.Entry<String, String>> list) {
List<h> responseHeaders = getResponseHeaders(list);
if (responseHeaders.isEmpty()) {
return "";
}
for (h hVar : responseHeaders) {
if (hVar != null) {
String a = hVar.a();
if (!TextUtils.isEmpty(a) && a.equalsIgnoreCase(Command.HTTP_HEADER_ETAG)) {
return hVar.b();
}
}
}
return "";
}
private void handlerDownloadResume(String str, String str2) {
boolean z = !isSupportResume(this.responseCode, this.downloadModel);
DownloadRequest<?> downloadRequest = this.downloadRequest;
boolean z2 = downloadRequest != null && this.responseCode == 206 && downloadRequest.getTotalBytes() > 0 && this.contentLength != this.downloadRequest.getTotalBytes() - this.downloadRequest.getDownloadedBytes();
if (z && z2) {
this.downloadRequest.setDownloadedBytes(0L);
this.downloadRequest.setTotalBytes(0L);
if (Objects.isNotNull(this.databaseHelper)) {
this.databaseHelper.remove(str, str2);
}
this.downloadModel = null;
MBResourceManager.getInstance().deleteFile(new File(this.downloadRequest.getCacheDirectoryPath() + this.downloadMessage.getSaveFileName()));
}
}
private void handlerDownloadModel(String str) {
if (Objects.isNull(this.downloadModel)) {
DownloadModel create = DownloadModel.create(this.downloadRequest.getDownloadId(), this.downloadMessage.getDownloadUrl(), this.downloadMessage.getResourceUrl(), this.etag, str, this.downloadMessage.getSaveFileName(), this.downloadRequest.getTotalBytes(), 0L, this.downloadMessage.getDownloadRate(), 1, this.downloadMessage.getDownloadResourceType());
this.downloadModel = create;
this.databaseHelper.insert(create);
} else {
DownloadModel create2 = DownloadModel.create(this.downloadModel.getDownloadId(), this.downloadModel.getDownloadUrl(), this.downloadMessage.getResourceUrl(), this.downloadModel.getEtag(), this.downloadModel.getSaveDirectorPath(), this.downloadModel.getSaveFileName(), this.downloadRequest.getTotalBytes(), this.downloadModel.getDownloadedBytes(), this.downloadMessage.getDownloadRate(), this.downloadModel.getUsageCounter() + 1, this.downloadMessage.getDownloadResourceType());
this.downloadModel = create2;
this.databaseHelper.update(create2, str);
}
}
private List<h> getResponseHeaders(List<Map.Entry<String, String>> list) {
ArrayList arrayList = new ArrayList();
if (list != null && !list.isEmpty()) {
for (Map.Entry<String, String> entry : list) {
arrayList.add(new h(entry.getKey(), entry.getValue()));
}
}
return arrayList;
}
private boolean isSupportResume(int i, DownloadModel downloadModel) {
return i == 206 && !TextUtils.isEmpty(this.etag) && (downloadModel == null || TextUtils.equals(this.etag, downloadModel.getEtag()));
}
}

View File

@@ -0,0 +1,61 @@
package com.mbridge.msdk.foundation.download.core;
import com.mbridge.msdk.c.g;
import com.mbridge.msdk.c.h;
import com.mbridge.msdk.foundation.controller.c;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.LinkedBlockingQueue;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
/* loaded from: classes4.dex */
public class DefaultExecutorSupplier implements ExecutorSupplier {
private int DEFAULT_MAX_NUM_THREADS;
private final ThreadPoolExecutor backgroundExecutor;
private final ThreadPoolExecutor downloadResultExecutor;
private final DownloadExecutor networkExecutor;
@Override // com.mbridge.msdk.foundation.download.core.ExecutorSupplier
public ExecutorService getBackgroundTasks() {
return this.backgroundExecutor;
}
@Override // com.mbridge.msdk.foundation.download.core.ExecutorSupplier
public ExecutorService getDownloadResultTasks() {
return this.downloadResultExecutor;
}
@Override // com.mbridge.msdk.foundation.download.core.ExecutorSupplier
public DownloadExecutor getDownloadTasks() {
return this.networkExecutor;
}
@Override // com.mbridge.msdk.foundation.download.core.ExecutorSupplier
public ExecutorService getLruCacheThreadTasks() {
return this.backgroundExecutor;
}
public DefaultExecutorSupplier() {
this.DEFAULT_MAX_NUM_THREADS = 10;
g a = h.a().a(c.m().k());
if (a != null) {
int S = a.S();
this.DEFAULT_MAX_NUM_THREADS = S;
if (S <= 0) {
this.DEFAULT_MAX_NUM_THREADS = 10;
}
}
DownloadExecutor downloadExecutor = new DownloadExecutor(this.DEFAULT_MAX_NUM_THREADS, new PriorityThreadFactory(10), new ThreadPoolExecutor.DiscardPolicy());
this.networkExecutor = downloadExecutor;
if (this.DEFAULT_MAX_NUM_THREADS > 0) {
downloadExecutor.allowCoreThreadTimeOut(true);
}
TimeUnit timeUnit = TimeUnit.SECONDS;
ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor(1, 1, 10L, timeUnit, new LinkedBlockingQueue(), new PriorityThreadFactory(10), new ThreadPoolExecutor.DiscardPolicy());
this.backgroundExecutor = threadPoolExecutor;
threadPoolExecutor.allowCoreThreadTimeOut(true);
ThreadPoolExecutor threadPoolExecutor2 = new ThreadPoolExecutor(1, 1, 10L, timeUnit, new LinkedBlockingQueue(), new PriorityThreadFactory(10), new ThreadPoolExecutor.DiscardPolicy());
this.downloadResultExecutor = threadPoolExecutor2;
threadPoolExecutor2.allowCoreThreadTimeOut(true);
}
}

View File

@@ -0,0 +1,29 @@
package com.mbridge.msdk.foundation.download.core;
/* loaded from: classes4.dex */
public final class DownloadCommon {
public static final String DOWNLOAD_REPORT_CANCEL = "ca";
public static final String DOWNLOAD_REPORT_DOWNLOAD_CURRENT_RATE = "dcr";
public static final String DOWNLOAD_REPORT_DOWNLOAD_DOWNLOAD_BYTES = "ddb";
public static final String DOWNLOAD_REPORT_DOWNLOAD_ERROR = "de";
public static final String DOWNLOAD_REPORT_DOWNLOAD_ERROR_VALUE = "t=c";
public static final String DOWNLOAD_REPORT_DOWNLOAD_RATE = "dr";
public static final String DOWNLOAD_REPORT_DOWNLOAD_RESPONSE_CODE = "drc";
public static final String DOWNLOAD_REPORT_DOWNLOAD_TOTAL_BYTES = "dtb";
public static final String DOWNLOAD_REPORT_FIND_DOWNLOAD_SIZE = "fds";
public static final String DOWNLOAD_REPORT_FIND_FILE_RESULT = "ffr";
public static final String DOWNLOAD_REPORT_FIND_FILE_RESULT_VALUE_A = "a";
public static final String DOWNLOAD_REPORT_FIND_FILE_RESULT_VALUE_B = "b";
public static final String DOWNLOAD_REPORT_FIND_FILE_RESULT_VALUE_C = "c ";
public static final String DOWNLOAD_REPORT_FIND_FILE_RESULT_VALUE_D = "d";
public static final String DOWNLOAD_REPORT_FIND_FILE_SIZE = "ffs";
public static final String DOWNLOAD_REPORT_FIND_TOTAL_SIZE = "fts";
public static final String DOWNLOAD_REPORT_HOST = "ht";
public static final String DOWNLOAD_REPORT_KEY = "2000116";
public static final String DOWNLOAD_REPORT_QUERY_TIMEOUT = "qt";
public static final String DOWNLOAD_REPORT_REASON = "re";
public static final String DOWNLOAD_REPORT_RETRY_COUNT = "rc";
public static final String DOWNLOAD_REPORT_RETURN_FROM_CACHE = "rfc";
public static final String DOWNLOAD_REPORT_SUCCESS = "su";
public static final String DOWNLOAD_REPORT_URL = "url";
}

View File

@@ -0,0 +1,22 @@
package com.mbridge.msdk.foundation.download.core;
import java.util.concurrent.Future;
import java.util.concurrent.PriorityBlockingQueue;
import java.util.concurrent.RejectedExecutionHandler;
import java.util.concurrent.ThreadFactory;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
/* loaded from: classes4.dex */
public class DownloadExecutor extends ThreadPoolExecutor {
public DownloadExecutor(int i, ThreadFactory threadFactory, RejectedExecutionHandler rejectedExecutionHandler) {
super(i, i * 2, 15L, TimeUnit.MICROSECONDS, new PriorityBlockingQueue(), threadFactory, rejectedExecutionHandler);
}
@Override // java.util.concurrent.AbstractExecutorService, java.util.concurrent.ExecutorService
public Future<?> submit(Runnable runnable) {
DownloadFutureTask downloadFutureTask = new DownloadFutureTask((Downloader) runnable);
execute(downloadFutureTask);
return downloadFutureTask;
}
}

View File

@@ -0,0 +1,23 @@
package com.mbridge.msdk.foundation.download.core;
import com.mbridge.msdk.foundation.download.DownloadPriority;
import java.util.concurrent.FutureTask;
/* loaded from: classes4.dex */
public class DownloadFutureTask extends FutureTask<Downloader> implements Comparable<DownloadFutureTask> {
private final Downloader downloader;
public DownloadFutureTask(Downloader downloader) {
super(downloader, null);
this.downloader = downloader;
}
@Override // java.lang.Comparable
public int compareTo(DownloadFutureTask downloadFutureTask) {
Downloader downloader = this.downloader;
DownloadPriority downloadPriority = downloader.downloadPriority;
Downloader downloader2 = downloadFutureTask.downloader;
DownloadPriority downloadPriority2 = downloader2.downloadPriority;
return downloadPriority == downloadPriority2 ? downloader.sequence - downloader2.sequence : downloadPriority2.ordinal() - downloadPriority.ordinal();
}
}

View File

@@ -0,0 +1,334 @@
package com.mbridge.msdk.foundation.download.core;
import android.os.SystemClock;
import android.text.TextUtils;
import com.mbridge.msdk.foundation.download.DownloadError;
import com.mbridge.msdk.foundation.download.DownloadMessage;
import com.mbridge.msdk.foundation.download.DownloadPriority;
import com.mbridge.msdk.foundation.download.DownloadProgress;
import com.mbridge.msdk.foundation.download.DownloadStatus;
import com.mbridge.msdk.foundation.download.OnDownloadStateListener;
import com.mbridge.msdk.foundation.download.OnProgressStateListener;
import com.mbridge.msdk.foundation.download.resource.MBResourceManager;
import com.mbridge.msdk.foundation.download.utils.Objects;
import com.mbridge.msdk.foundation.tools.af;
import com.mbridge.msdk.foundation.tools.ah;
import com.mbridge.msdk.tracker.network.q;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.concurrent.Future;
/* loaded from: classes4.dex */
public class DownloadRequest<T> {
private static final String TAG = "DownloadRequest";
private int cacheDirectorPathType;
private String cacheDirectoryPath;
private long connectTimeout;
private String directoryPathExternal;
private String directoryPathInternal;
private String downloadId;
private DownloadMessage<T> downloadMessage;
private DownloadPriority downloadPriority;
private long downloadedBytes;
private Map<String, String> extraMap;
private Future future;
private HashMap<String, List<String>> headerMap;
private q monitor;
private volatile OnDownloadStateListener onDownloadListener;
private volatile OnProgressStateListener onProgressListener;
private long readTimeout;
private int retry;
private int sequence;
private DownloadStatus status;
private long timeout;
private String userAgent;
private long writeTimeout;
private volatile int retryedCount = 0;
private long totalBytes = 0;
private long downloadRequestCreateTime = SystemClock.elapsedRealtime();
private void destroy() {
this.onProgressListener = null;
this.onDownloadListener = null;
}
public int getCacheDirectorPathType() {
return this.cacheDirectorPathType;
}
public String getCacheDirectoryPath() {
return this.cacheDirectoryPath;
}
public long getConnectTimeout() {
return this.connectTimeout;
}
public String getDirectoryPathExternal() {
return this.directoryPathExternal;
}
public String getDirectoryPathInternal() {
return this.directoryPathInternal;
}
public String getDownloadId() {
return this.downloadId;
}
public DownloadMessage<T> getDownloadMessage() {
return this.downloadMessage;
}
public DownloadPriority getDownloadPriority() {
return this.downloadPriority;
}
public long getDownloadedBytes() {
return this.downloadedBytes;
}
public HashMap<String, List<String>> getHeaders() {
return this.headerMap;
}
public q getMonitor() {
return this.monitor;
}
public long getReadTimeout() {
return this.readTimeout;
}
public int getRetry() {
return this.retry;
}
public int getRetryedCount() {
return this.retryedCount;
}
public int getSequence() {
return this.sequence;
}
public DownloadStatus getStatus() {
return this.status;
}
public long getTimeout() {
return this.timeout;
}
public long getTotalBytes() {
return this.totalBytes;
}
public long getWriteTimeout() {
return this.writeTimeout;
}
public void setCacheDirectorPathType(int i) {
this.cacheDirectorPathType = i;
}
public void setCacheDirectoryPath(String str) {
this.cacheDirectoryPath = str;
}
public void setDownloadedBytes(long j) {
this.downloadedBytes = j;
}
public void setFuture(Future future) {
this.future = future;
}
public void setMonitor(q qVar) {
this.monitor = qVar;
}
public void setSequence(int i) {
this.sequence = i;
}
public void setStatus(DownloadStatus downloadStatus) {
this.status = downloadStatus;
}
public void setTotalBytes(long j) {
this.totalBytes = j;
}
public DownloadRequest(DownloadRequestBuilder<T> downloadRequestBuilder) {
this.headerMap = downloadRequestBuilder.headerMap;
this.downloadPriority = downloadRequestBuilder.downloadPriority;
this.readTimeout = downloadRequestBuilder.readTimeout;
this.connectTimeout = downloadRequestBuilder.connectTimeout;
this.userAgent = downloadRequestBuilder.userAgent;
this.downloadMessage = downloadRequestBuilder.downloadMessage;
this.writeTimeout = downloadRequestBuilder.writeTimeout;
this.onDownloadListener = downloadRequestBuilder.downloadStateListener;
this.onProgressListener = downloadRequestBuilder.progressStateListener;
this.directoryPathExternal = downloadRequestBuilder.directoryPathExternal;
this.directoryPathInternal = downloadRequestBuilder.directoryPathInternal;
this.retry = downloadRequestBuilder.retry;
this.timeout = downloadRequestBuilder.timeout;
this.extraMap = downloadRequestBuilder.extraMap;
}
public long getRequestQueueTime() {
return SystemClock.elapsedRealtime() - this.downloadRequestCreateTime;
}
public static DownloadRequest create(DownloadRequestBuilder downloadRequestBuilder) {
return new DownloadRequest(downloadRequestBuilder);
}
public void cancel(DownloadMessage<T> downloadMessage) {
this.status = DownloadStatus.CANCELLED;
Future future = this.future;
if (future != null) {
future.cancel(false);
}
}
public String get(String str, String str2) {
if (Objects.isNull(this.extraMap) || !this.extraMap.containsKey(str) || TextUtils.isEmpty(str)) {
return str2;
}
String str3 = this.extraMap.get(str);
return TextUtils.isEmpty(str3) ? str2 : str3;
}
public void handlerCancelEvent(final DownloadMessage<T> downloadMessage) {
ExecutorManager.getInstance().getExecutorSupplier().getDownloadResultTasks().execute(new Runnable() { // from class: com.mbridge.msdk.foundation.download.core.DownloadRequest.1
@Override // java.lang.Runnable
public void run() {
try {
if (DownloadRequest.this.onDownloadListener != null) {
DownloadRequest.this.onDownloadListener.onCancelDownload(downloadMessage);
}
DownloadRequest.this.finish();
} catch (Exception e) {
af.b(DownloadRequest.TAG, e.getMessage());
}
}
});
}
/* JADX INFO: Access modifiers changed from: private */
public void finish() {
destroy();
DownloadRequestQueue.getInstance().finish(this);
}
public void handlerErrorEvent(final DownloadMessage<T> downloadMessage, final DownloadError downloadError) {
if (this.status != DownloadStatus.CANCELLED) {
setStatus(DownloadStatus.FAILED);
ExecutorManager.getInstance().getExecutorSupplier().getDownloadResultTasks().execute(new Runnable() { // from class: com.mbridge.msdk.foundation.download.core.DownloadRequest.2
@Override // java.lang.Runnable
public void run() {
try {
if (DownloadRequest.this.retryedCount < DownloadRequest.this.retry) {
DownloadRequest.this.setStatus(DownloadStatus.RETRY);
DownloadRequest.this.retryedCount++;
DownloadRequest.this.setDownloadedBytes(0L);
DownloadRequest.this.setTotalBytes(0L);
DownloadRequestQueue.getInstance().finish(DownloadRequest.this);
DownloadRequestQueue.getInstance().addRequest(DownloadRequest.this);
return;
}
DownloadRequest.this.setStatus(DownloadStatus.FAILED);
if (DownloadRequest.this.onDownloadListener != null) {
DownloadRequest.this.onDownloadListener.onDownloadError(downloadMessage, downloadError);
}
DownloadRequest.this.finish();
} catch (Exception e) {
af.b(DownloadRequest.TAG, e.getMessage());
}
}
});
}
}
public void handlerProcessEvent(final DownloadMessage<T> downloadMessage, final DownloadProgress downloadProgress) {
if (this.status != DownloadStatus.CANCELLED) {
ExecutorManager.getInstance().getExecutorSupplier().getDownloadResultTasks().execute(new Runnable() { // from class: com.mbridge.msdk.foundation.download.core.DownloadRequest.3
@Override // java.lang.Runnable
public void run() {
try {
if (DownloadRequest.this.onProgressListener != null) {
DownloadRequest.this.onProgressListener.onProgress(downloadMessage, downloadProgress);
}
} catch (Exception e) {
af.b(DownloadRequest.TAG, e.getMessage());
}
}
});
}
}
public void handlerStartEvent(final DownloadMessage<T> downloadMessage) {
if (this.status != DownloadStatus.CANCELLED) {
ExecutorManager.getInstance().getExecutorSupplier().getDownloadResultTasks().execute(new Runnable() { // from class: com.mbridge.msdk.foundation.download.core.DownloadRequest.4
@Override // java.lang.Runnable
public void run() {
try {
if (DownloadRequest.this.onDownloadListener != null) {
DownloadRequest.this.onDownloadListener.onDownloadStart(downloadMessage);
}
} catch (Exception e) {
af.b(DownloadRequest.TAG, e.getMessage());
}
}
});
}
}
public void handlerSuccessEvent(final DownloadMessage<T> downloadMessage) {
if (this.status != DownloadStatus.CANCELLED) {
setStatus(DownloadStatus.COMPLETED);
ExecutorManager.getInstance().getExecutorSupplier().getDownloadResultTasks().execute(new Runnable() { // from class: com.mbridge.msdk.foundation.download.core.DownloadRequest.5
@Override // java.lang.Runnable
public void run() {
try {
if (DownloadRequest.this.extraMap != null && !DownloadRequest.this.extraMap.isEmpty()) {
String str = (String) DownloadRequest.this.extraMap.get("responseHeaders");
if (!TextUtils.isEmpty(str)) {
downloadMessage.addExtra("responseHeaders", str);
}
}
if (DownloadRequest.this.onDownloadListener != null) {
DownloadRequest.this.onDownloadListener.onDownloadComplete(downloadMessage);
}
DownloadRequest.this.finish();
} catch (Exception e) {
af.b(DownloadRequest.TAG, e.getMessage());
}
}
});
}
}
public void putExtraData(String str, String str2) {
if (TextUtils.isEmpty(str)) {
return;
}
if (Objects.isNull(this.extraMap)) {
this.extraMap = new HashMap();
}
this.extraMap.put(str, str2);
}
public String start() {
this.downloadId = MBResourceManager.getInstance().getDownloadId(this.downloadMessage.getResourceUrl());
DownloadRequestQueue.getInstance().addRequest(this);
return this.downloadId;
}
public boolean canTrack() {
return ah.a().a("request_track", true);
}
}

View File

@@ -0,0 +1,132 @@
package com.mbridge.msdk.foundation.download.core;
import android.text.TextUtils;
import com.mbridge.msdk.foundation.download.DownloadMessage;
import com.mbridge.msdk.foundation.download.DownloadPriority;
import com.mbridge.msdk.foundation.download.OnDownloadStateListener;
import com.mbridge.msdk.foundation.download.OnProgressStateListener;
import com.mbridge.msdk.foundation.download.utils.Objects;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/* loaded from: classes4.dex */
public class DownloadRequestBuilder<T> implements RequestBuilder<T> {
long connectTimeout;
String directoryPathExternal;
String directoryPathInternal;
DownloadMessage<T> downloadMessage;
DownloadPriority downloadPriority = DownloadPriority.MEDIUM;
OnDownloadStateListener downloadStateListener;
Map<String, String> extraMap;
HashMap<String, List<String>> headerMap;
OnProgressStateListener progressStateListener;
long readTimeout;
int retry;
long timeout;
String userAgent;
long writeTimeout;
@Override // com.mbridge.msdk.foundation.download.core.RequestBuilder
public DownloadRequestBuilder<T> withConnectTimeout(long j) {
this.connectTimeout = j;
return this;
}
@Override // com.mbridge.msdk.foundation.download.core.RequestBuilder
public RequestBuilder<T> withDirectoryPathExternal(String str) {
this.directoryPathExternal = str;
return this;
}
@Override // com.mbridge.msdk.foundation.download.core.RequestBuilder
public RequestBuilder<T> withDirectoryPathInternal(String str) {
this.directoryPathInternal = str;
return this;
}
@Override // com.mbridge.msdk.foundation.download.core.RequestBuilder
public RequestBuilder<T> withDownloadPriority(DownloadPriority downloadPriority) {
this.downloadPriority = downloadPriority;
return this;
}
@Override // com.mbridge.msdk.foundation.download.core.RequestBuilder
public RequestBuilder<T> withDownloadStateListener(OnDownloadStateListener onDownloadStateListener) {
this.downloadStateListener = onDownloadStateListener;
return this;
}
@Override // com.mbridge.msdk.foundation.download.core.RequestBuilder
public DownloadRequestBuilder<T> withHttpRetryCounter(int i) {
this.retry = i;
return this;
}
@Override // com.mbridge.msdk.foundation.download.core.RequestBuilder
public RequestBuilder<T> withProgressStateListener(OnProgressStateListener onProgressStateListener) {
this.progressStateListener = onProgressStateListener;
return this;
}
@Override // com.mbridge.msdk.foundation.download.core.RequestBuilder
public DownloadRequestBuilder<T> withReadTimeout(long j) {
this.readTimeout = j;
return this;
}
@Override // com.mbridge.msdk.foundation.download.core.RequestBuilder
public RequestBuilder<T> withTimeout(long j) {
this.timeout = j;
return this;
}
@Override // com.mbridge.msdk.foundation.download.core.RequestBuilder
public DownloadRequestBuilder<T> withUserAgent(String str) {
this.userAgent = str;
return this;
}
@Override // com.mbridge.msdk.foundation.download.core.RequestBuilder
public RequestBuilder<T> withWriteTimeout(long j) {
this.writeTimeout = j;
return this;
}
public DownloadRequestBuilder(DownloadMessage<T> downloadMessage) {
this.downloadMessage = downloadMessage;
}
@Override // com.mbridge.msdk.foundation.download.core.RequestBuilder
public DownloadRequestBuilder<T> withHeader(String str, String str2) {
if (this.headerMap == null) {
this.headerMap = new HashMap<>(4);
}
List<String> list = this.headerMap.get(str);
if (list == null) {
list = new ArrayList<>();
this.headerMap.put(str, list);
}
if (!list.contains(str2)) {
list.add(str2);
}
return this;
}
@Override // com.mbridge.msdk.foundation.download.core.RequestBuilder
public RequestBuilder<T> with(String str, String str2) {
if (!TextUtils.isEmpty(str) && !TextUtils.isEmpty(str2)) {
if (Objects.isNull(this.extraMap)) {
this.extraMap = new HashMap();
}
this.extraMap.put(str, str2);
}
return this;
}
@Override // com.mbridge.msdk.foundation.download.core.RequestBuilder
public DownloadRequest<T> build() {
return DownloadRequest.create(this);
}
}

View File

@@ -0,0 +1,159 @@
package com.mbridge.msdk.foundation.download.core;
import android.text.TextUtils;
import com.mbridge.msdk.foundation.download.DownloadStatus;
import java.util.Iterator;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.CopyOnWriteArrayList;
import java.util.concurrent.atomic.AtomicInteger;
/* loaded from: classes4.dex */
public class DownloadRequestQueue<T> {
private static final String TAG = "DownloadRequestQueue";
private final ConcurrentHashMap<String, DownloadRequest<T>> currentRequestMap;
private final ConcurrentHashMap<String, CopyOnWriteArrayList<DownloadRequest<T>>> delayRequestMap;
private final AtomicInteger sequenceGenerator;
public static final class ClassHolder {
private static final DownloadRequestQueue DOWNLOAD_REQUEST_QUEUE = new DownloadRequestQueue();
private ClassHolder() {
}
}
public void initialize() {
}
private DownloadRequestQueue() {
this.currentRequestMap = new ConcurrentHashMap<>();
this.sequenceGenerator = new AtomicInteger();
this.delayRequestMap = new ConcurrentHashMap<>();
}
public static DownloadRequestQueue getInstance() {
return ClassHolder.DOWNLOAD_REQUEST_QUEUE;
}
public synchronized void addRequest(DownloadRequest<T> downloadRequest) {
try {
String downloadId = downloadRequest.getDownloadId();
downloadRequest.setSequence(getSequenceNumber());
if (this.currentRequestMap.containsKey(downloadId)) {
DownloadStatus status = downloadRequest.getStatus();
DownloadStatus downloadStatus = DownloadStatus.RETRY;
if (status != downloadStatus) {
downloadStatus = DownloadStatus.DELAY;
}
downloadRequest.setStatus(downloadStatus);
if (this.delayRequestMap.containsKey(downloadId)) {
CopyOnWriteArrayList<DownloadRequest<T>> copyOnWriteArrayList = this.delayRequestMap.get(downloadId);
if (copyOnWriteArrayList != null) {
copyOnWriteArrayList.add(downloadRequest);
this.delayRequestMap.remove(downloadId);
this.delayRequestMap.put(downloadId, copyOnWriteArrayList);
}
} else {
CopyOnWriteArrayList<DownloadRequest<T>> copyOnWriteArrayList2 = new CopyOnWriteArrayList<>();
copyOnWriteArrayList2.add(downloadRequest);
this.delayRequestMap.put(downloadId, copyOnWriteArrayList2);
}
} else {
DownloadStatus status2 = downloadRequest.getStatus();
DownloadStatus downloadStatus2 = DownloadStatus.RETRY;
if (status2 != downloadStatus2) {
downloadStatus2 = DownloadStatus.QUEUED;
}
downloadRequest.setStatus(downloadStatus2);
this.currentRequestMap.put(downloadId, downloadRequest);
downloadRequest.setFuture(ExecutorManager.getInstance().getExecutorSupplier().getDownloadTasks().submit(new Downloader(downloadRequest)));
}
} catch (Throwable th) {
throw th;
}
}
private int getSequenceNumber() {
return this.sequenceGenerator.incrementAndGet();
}
public synchronized void cancel(String str) {
CopyOnWriteArrayList<DownloadRequest<T>> copyOnWriteArrayList;
try {
if (!TextUtils.isEmpty(str) && this.delayRequestMap.containsKey(str) && (copyOnWriteArrayList = this.delayRequestMap.get(str)) != null && copyOnWriteArrayList.size() > 0) {
Iterator<DownloadRequest<T>> it = copyOnWriteArrayList.iterator();
while (it.hasNext()) {
DownloadRequest<T> next = it.next();
copyOnWriteArrayList.remove(next);
next.handlerCancelEvent(next.getDownloadMessage());
}
if (copyOnWriteArrayList.size() > 0) {
this.delayRequestMap.remove(str);
this.delayRequestMap.put(str, copyOnWriteArrayList);
} else {
this.delayRequestMap.remove(str);
}
}
if (!TextUtils.isEmpty(str)) {
cancelAndRemoveFromMap(this.currentRequestMap.get(str), str);
}
} catch (Throwable th) {
throw th;
}
}
private void cancelAndRemoveFromMap(DownloadRequest downloadRequest, String str) {
if (downloadRequest != null) {
downloadRequest.cancel(downloadRequest.getDownloadMessage());
}
}
public synchronized void cancelAll() {
try {
Iterator<Map.Entry<String, CopyOnWriteArrayList<DownloadRequest<T>>>> it = this.delayRequestMap.entrySet().iterator();
while (it.hasNext()) {
CopyOnWriteArrayList<DownloadRequest<T>> value = it.next().getValue();
if (value != null && value.size() > 0) {
Iterator<DownloadRequest<T>> it2 = value.iterator();
while (it2.hasNext()) {
DownloadRequest<T> next = it2.next();
if (next != null) {
next.handlerCancelEvent(next.getDownloadMessage());
}
}
}
}
this.delayRequestMap.clear();
Iterator<Map.Entry<String, DownloadRequest<T>>> it3 = this.currentRequestMap.entrySet().iterator();
while (it3.hasNext()) {
DownloadRequest<T> value2 = it3.next().getValue();
cancelAndRemoveFromMap(value2, value2.getDownloadId());
}
} catch (Throwable th) {
throw th;
}
}
public synchronized void finish(DownloadRequest downloadRequest) {
CopyOnWriteArrayList<DownloadRequest<T>> remove;
String downloadId = downloadRequest.getDownloadId();
this.currentRequestMap.remove(downloadId);
if (this.delayRequestMap.containsKey(downloadId) && (remove = this.delayRequestMap.remove(downloadId)) != null && remove.size() > 0) {
DownloadRequest<T> remove2 = remove.remove(0);
remove2.setStatus(DownloadStatus.QUEUED);
this.currentRequestMap.put(downloadId, remove2);
remove2.setFuture(ExecutorManager.getInstance().getExecutorSupplier().getDownloadTasks().submit(new Downloader(remove2)));
if (remove.size() > 0) {
this.delayRequestMap.put(downloadId, remove);
}
}
}
public synchronized DownloadStatus getStatus(String str) {
DownloadRequest<T> downloadRequest = this.currentRequestMap.get(str);
if (downloadRequest != null) {
return downloadRequest.getStatus();
}
return DownloadStatus.UNKNOWN;
}
}

View File

@@ -0,0 +1,119 @@
package com.mbridge.msdk.foundation.download.core;
import com.mbridge.msdk.foundation.download.DownloadMessage;
import com.mbridge.msdk.foundation.download.DownloadProgress;
import com.mbridge.msdk.foundation.download.DownloadResponse;
import com.mbridge.msdk.foundation.download.DownloadStatus;
import com.mbridge.msdk.foundation.download.core.DownloaderReporter;
import com.mbridge.msdk.foundation.download.database.DownloadModel;
import com.mbridge.msdk.foundation.download.database.IDatabaseHelper;
import com.mbridge.msdk.foundation.download.utils.Objects;
import com.mbridge.msdk.foundation.download.utils.Utils;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.TimeUnit;
/* loaded from: classes4.dex */
public class DownloadTask implements IDownloadTask {
private IDatabaseHelper _databaseHelper;
private volatile DownloadMessage _downloadMessage;
private DownloaderReporter.Builder _downloaderReporter;
private volatile DownloadRequest _request;
private final String METRICS_D_LOAD_TYPE = "type";
private final Object _object = new Object();
private volatile DownloadModel _downloadModel = null;
private volatile boolean _needUpdateDownloadModel = true;
private String downType = "";
private DownloadTask(DownloadRequest downloadRequest, DownloadMessage downloadMessage, IDatabaseHelper iDatabaseHelper) {
this._request = downloadRequest;
this._downloadMessage = downloadMessage;
this._databaseHelper = iDatabaseHelper;
}
public static IDownloadTask create(DownloadRequest downloadRequest, DownloadMessage downloadMessage, IDatabaseHelper iDatabaseHelper) {
return new DownloadTask(downloadRequest, downloadMessage, iDatabaseHelper);
}
@Override // com.mbridge.msdk.foundation.download.core.IDownloadTask
public DownloadResponse run() {
DownloaderReporter.Builder builder = new DownloaderReporter.Builder(DownloadCommon.DOWNLOAD_REPORT_KEY);
this._downloaderReporter = builder;
builder.add(DownloadCommon.DOWNLOAD_REPORT_RETRY_COUNT, String.valueOf(this._request.getRetryedCount()));
String downloadId = this._request.getDownloadId();
if (this._request.getStatus() == DownloadStatus.CANCELLED) {
DownloadResponse downloadResponse = new DownloadResponse();
downloadResponse.setCancelled(true);
return downloadResponse;
}
if (this._downloadMessage.getDownloadRate() == 0) {
DownloadResponse downloadResponse2 = new DownloadResponse();
downloadResponse2.setSuccessful(true);
return downloadResponse2;
}
String cacheDirectoryPath = this._request.getCacheDirectoryPath();
final CountDownLatch countDownLatch = new CountDownLatch(1);
this._databaseHelper.find(downloadId, cacheDirectoryPath, new IDatabaseHelper.IDatabaseListener() { // from class: com.mbridge.msdk.foundation.download.core.DownloadTask.1
@Override // com.mbridge.msdk.foundation.download.database.IDatabaseHelper.IDatabaseListener
public void onDatabase(DownloadModel downloadModel) {
synchronized (DownloadTask.this._object) {
try {
if (DownloadTask.this._needUpdateDownloadModel) {
DownloadTask.this._downloadModel = downloadModel;
}
} catch (Throwable th) {
throw th;
}
}
countDownLatch.countDown();
}
});
try {
try {
countDownLatch.await(10L, TimeUnit.SECONDS);
synchronized (this._object) {
this._needUpdateDownloadModel = false;
}
} catch (InterruptedException e) {
GlobalComponent.getInstance().getLogger().log(IDownloadTask.TAG, "" + e.getMessage());
countDownLatch.countDown();
this._downloaderReporter.add(DownloadCommon.DOWNLOAD_REPORT_QUERY_TIMEOUT, Boolean.TRUE.toString());
synchronized (this._object) {
this._needUpdateDownloadModel = false;
}
}
this._request.putExtraData("resumed_breakpoint", (this._downloadModel == null || this._downloadModel.getDownloadedBytes() <= 0) ? "2" : "1");
DownloadResponse run = FindFileFromCache.create(this._request, this._downloadModel, this._databaseHelper, downloadId, this._downloadMessage, this._downloaderReporter).run();
if (!Objects.isNotNull(run) || !run.isSuccessful()) {
this._downloaderReporter.add(DownloadCommon.DOWNLOAD_REPORT_RETURN_FROM_CACHE, Boolean.FALSE.toString());
this._request.putExtraData("cache", "2");
if (this._downloadMessage != null) {
this._downloadMessage.setCache(false);
}
return OkHTTPFileDownloadTask.create(this._request, this._downloadModel, this._databaseHelper, this._downloadMessage, this._downloaderReporter).run();
}
this._request.putExtraData("cache", "1");
if (this._downloadMessage != null) {
this._downloadMessage.setCache(true);
}
sendProgress(this._request, this._downloadMessage);
this._downloadModel = DownloadModel.create(this._downloadModel.getDownloadId(), this._downloadModel.getDownloadUrl(), this._downloadModel.getResourceUrl(), this._downloadModel.getEtag(), this._downloadModel.getSaveDirectorPath(), this._downloadModel.getSaveFileName(), this._request.getTotalBytes(), this._downloadModel.getDownloadedBytes(), this._downloadModel.getDownloadRate(), this._downloadModel.getUsageCounter() + 1, this._downloadModel.getDownloadResourceType());
this._databaseHelper.update(this._downloadModel, cacheDirectoryPath);
this._downloaderReporter.add(DownloadCommon.DOWNLOAD_REPORT_RETURN_FROM_CACHE, Boolean.TRUE.toString());
this._downloaderReporter.build().report();
return run;
} catch (Throwable th) {
synchronized (this._object) {
this._needUpdateDownloadModel = false;
throw th;
}
}
}
private void sendProgress(DownloadRequest downloadRequest, DownloadMessage downloadMessage) {
if (downloadRequest.getStatus() != DownloadStatus.CANCELLED) {
long downloadedBytes = this._request.getDownloadedBytes();
long totalBytes = this._request.getTotalBytes();
downloadRequest.handlerProcessEvent(downloadMessage, new DownloadProgress(downloadedBytes, totalBytes, Utils.getDownloadRate(totalBytes, downloadedBytes)));
}
}
}

View File

@@ -0,0 +1,51 @@
package com.mbridge.msdk.foundation.download.core;
import com.mbridge.msdk.foundation.download.DownloadMessage;
import com.mbridge.msdk.foundation.download.DownloadPriority;
import com.mbridge.msdk.foundation.download.DownloadResponse;
import com.mbridge.msdk.foundation.download.DownloadStatus;
import com.mbridge.msdk.foundation.download.database.IDatabaseHelper;
/* loaded from: classes4.dex */
public class Downloader implements Runnable {
private static final String TAG = "DownloadTask";
private IDatabaseHelper databaseHelper;
private volatile DownloadMessage downloadMessage;
public final DownloadPriority downloadPriority;
public volatile DownloadRequest downloadRequest;
public final int sequence;
public Downloader(DownloadRequest downloadRequest) {
this.downloadRequest = downloadRequest;
this.downloadPriority = downloadRequest.getDownloadPriority();
this.sequence = downloadRequest.getSequence();
}
@Override // java.lang.Runnable
public void run() {
GlobalComponent.getInstance().getLogger().log("DownloadTask", "开始下载任务");
if (this.downloadRequest.getStatus() != DownloadStatus.RETRY) {
this.downloadRequest.handlerStartEvent(this.downloadRequest.getDownloadMessage());
}
this.downloadRequest.setStatus(DownloadStatus.RUNNING);
GlobalComponent.getInstance().getLogger().log("DownloadTask", "任务 " + this.downloadRequest.getDownloadId() + " 修改状态为 RUNNING");
this.downloadMessage = this.downloadRequest.getDownloadMessage();
this.databaseHelper = GlobalComponent.getInstance().getDatabaseHelper();
SynchronizeAvailableDirectorPath.create(this.downloadRequest).run();
String cacheDirectoryPath = this.downloadRequest.getCacheDirectoryPath();
int cacheDirectorPathType = this.downloadRequest.getCacheDirectorPathType();
this.downloadMessage.setSaveFilePath(cacheDirectoryPath + this.downloadMessage.getSaveFileName());
GlobalComponent.getInstance().getLogger().log("DownloadTask", "cacheDirectoryPath " + cacheDirectoryPath + " cacheDirectorPathType " + cacheDirectorPathType);
DownloadResponse run = DownloadTask.create(this.downloadRequest, this.downloadMessage, this.databaseHelper).run();
if (run.isSuccessful()) {
if (run.getFrom() == 1) {
this.downloadMessage.setFrom(1);
}
this.downloadRequest.handlerSuccessEvent(this.downloadMessage);
} else if (run.getError() != null) {
this.downloadRequest.handlerErrorEvent(this.downloadMessage, run.getError());
} else if (run.isCancelled()) {
this.downloadRequest.handlerCancelEvent(this.downloadMessage);
}
}
}

View File

@@ -0,0 +1,82 @@
package com.mbridge.msdk.foundation.download.core;
import android.text.TextUtils;
import com.ironsource.nb;
import com.mbridge.msdk.foundation.same.report.d.d;
import com.mbridge.msdk.foundation.tools.af;
import java.net.URLEncoder;
import java.util.HashMap;
import java.util.Map;
import org.json.JSONObject;
/* loaded from: classes4.dex */
public final class DownloaderReporter {
private static final String KEY = "key=";
private static final String TAG = "DownloaderReporter";
private final Map<String, String> _params;
private final String _reportKey;
private DownloaderReporter(Builder builder) {
this._reportKey = builder._reportKey;
this._params = builder._params;
}
public final void report() {
try {
JSONObject jSONObject = new JSONObject();
jSONObject.put(KEY, this._reportKey);
addUrlParams(this._params, jSONObject);
d.a().a(jSONObject);
} catch (Throwable th) {
af.b(TAG, th.getMessage());
}
}
private void addUrlParams(Map<String, String> map, JSONObject jSONObject) {
if (map == null || map.isEmpty() || jSONObject == null) {
return;
}
try {
for (String str : map.keySet()) {
jSONObject.put(str, encodeValue(map.get(str)));
}
} catch (Exception e) {
af.b(TAG, e.getMessage());
}
}
private String encodeValue(String str) {
try {
return URLEncoder.encode(str, nb.N);
} catch (Exception unused) {
return str;
}
}
public static class Builder {
private final Map<String, String> _params;
private final String _reportKey;
public Builder(String str) {
if (TextUtils.isEmpty(str)) {
throw new IllegalArgumentException("reportKey can not be empty");
}
this._reportKey = str;
this._params = new HashMap();
}
public Builder add(String str, String str2) {
if (!TextUtils.isEmpty(str) && !TextUtils.isEmpty(str2)) {
try {
this._params.put(str, str2);
} catch (Exception unused) {
}
}
return this;
}
public DownloaderReporter build() {
return new DownloaderReporter(this);
}
}
}

View File

@@ -0,0 +1,32 @@
package com.mbridge.msdk.foundation.download.core;
/* loaded from: classes4.dex */
public class ExecutorManager {
private static ExecutorManager instance;
private final ExecutorSupplier executorSupplier;
public static final class ClassHolder {
private static final ExecutorManager EXECUTOR_MANAGER = new ExecutorManager();
private ClassHolder() {
}
}
public static void shutDown() {
if (instance != null) {
instance = null;
}
}
public ExecutorSupplier getExecutorSupplier() {
return this.executorSupplier;
}
private ExecutorManager() {
this.executorSupplier = new DefaultExecutorSupplier();
}
public static ExecutorManager getInstance() {
return ClassHolder.EXECUTOR_MANAGER;
}
}

View File

@@ -0,0 +1,14 @@
package com.mbridge.msdk.foundation.download.core;
import java.util.concurrent.ExecutorService;
/* loaded from: classes4.dex */
public interface ExecutorSupplier {
ExecutorService getBackgroundTasks();
ExecutorService getDownloadResultTasks();
DownloadExecutor getDownloadTasks();
ExecutorService getLruCacheThreadTasks();
}

View File

@@ -0,0 +1,111 @@
package com.mbridge.msdk.foundation.download.core;
import com.mbridge.msdk.foundation.download.DownloadMessage;
import com.mbridge.msdk.foundation.download.DownloadResponse;
import com.mbridge.msdk.foundation.download.core.DownloaderReporter;
import com.mbridge.msdk.foundation.download.database.DownloadModel;
import com.mbridge.msdk.foundation.download.database.IDatabaseHelper;
import com.mbridge.msdk.foundation.download.resource.MBResourceManager;
import com.mbridge.msdk.foundation.download.utils.Objects;
import com.mbridge.msdk.foundation.download.utils.Utils;
import java.io.File;
/* loaded from: classes4.dex */
class FindFileFromCache implements IDownloadTask {
private final IDatabaseHelper _databaseHelper;
private final String _downloadId;
private DownloadMessage _downloadMessage;
private final DownloadModel _downloadModel;
private DownloaderReporter.Builder _downloaderReporter;
private final DownloadRequest _request;
private FindFileFromCache(DownloadRequest downloadRequest, DownloadModel downloadModel, IDatabaseHelper iDatabaseHelper, String str, DownloadMessage downloadMessage, DownloaderReporter.Builder builder) {
this._request = downloadRequest;
this._downloadModel = downloadModel;
this._databaseHelper = iDatabaseHelper;
this._downloadId = str;
this._downloadMessage = downloadMessage;
this._downloaderReporter = builder;
}
public static IDownloadTask create(DownloadRequest downloadRequest, DownloadModel downloadModel, IDatabaseHelper iDatabaseHelper, String str, DownloadMessage downloadMessage, DownloaderReporter.Builder builder) {
if (Objects.isNull(builder)) {
builder = new DownloaderReporter.Builder(DownloadCommon.DOWNLOAD_REPORT_KEY);
}
return new FindFileFromCache(downloadRequest, downloadModel, iDatabaseHelper, str, downloadMessage, builder);
}
@Override // com.mbridge.msdk.foundation.download.core.IDownloadTask
public DownloadResponse run() {
if (Objects.isNull(this._downloadModel)) {
return null;
}
DownloadResponse downloadResponse = new DownloadResponse();
String cacheDirectoryPath = this._request.getCacheDirectoryPath();
String saveFileName = this._downloadMessage.getSaveFileName();
File file = new File(cacheDirectoryPath + saveFileName);
if (!Objects.exists(file, cacheDirectoryPath, saveFileName)) {
this._downloaderReporter.add(DownloadCommon.DOWNLOAD_REPORT_FIND_FILE_RESULT, "d");
this._request.setDownloadedBytes(0L);
this._databaseHelper.remove(this._downloadId);
downloadResponse.setSuccessful(false);
return downloadResponse;
}
long fileSize = MBResourceManager.getInstance().getFileSize(file, cacheDirectoryPath, saveFileName);
this._downloaderReporter.add(DownloadCommon.DOWNLOAD_REPORT_FIND_FILE_SIZE, String.valueOf(fileSize));
this._downloaderReporter.add(DownloadCommon.DOWNLOAD_REPORT_FIND_TOTAL_SIZE, String.valueOf(this._downloadModel.getTotalBytes()));
this._downloaderReporter.add(DownloadCommon.DOWNLOAD_REPORT_FIND_DOWNLOAD_SIZE, String.valueOf(this._downloadModel.getDownloadedBytes()));
if (fileSize != this._downloadModel.getDownloadedBytes()) {
boolean checkUseFileResume = checkUseFileResume();
GlobalComponent.getInstance().getLogger().log(IDownloadTask.TAG, "数据库记录和文件大小不一致,是否以文件大小为基准进行断点续传: " + checkUseFileResume);
if (checkUseFileResume) {
resumeDownloadFromFile(downloadResponse, fileSize);
} else {
resumeDownloadAndDeleteFile(downloadResponse, file);
}
return downloadResponse;
}
this._request.setTotalBytes(this._downloadModel.getTotalBytes());
this._request.setDownloadedBytes(this._downloadModel.getDownloadedBytes());
if (checkDownloadReadyRate(this._downloadModel.getDownloadedBytes())) {
this._downloaderReporter.add(DownloadCommon.DOWNLOAD_REPORT_FIND_FILE_RESULT, "a");
downloadResponse.setFrom(this._downloadModel.getFrom());
downloadResponse.setSuccessful(true);
} else {
this._downloaderReporter.add(DownloadCommon.DOWNLOAD_REPORT_FIND_FILE_RESULT, DownloadCommon.DOWNLOAD_REPORT_FIND_FILE_RESULT_VALUE_B);
downloadResponse.setSuccessful(false);
}
return downloadResponse;
}
private boolean checkUseFileResume() {
boolean z;
try {
z = Boolean.parseBoolean(this._request.get("do_us_fi_re", Boolean.toString(true)));
} catch (Exception unused) {
GlobalComponent.getInstance().getLogger().log(IDownloadTask.TAG, "类型转换错误: do_us_fi_re");
z = false;
}
this._downloaderReporter.add(DownloadCommon.DOWNLOAD_REPORT_FIND_FILE_RESULT, DownloadCommon.DOWNLOAD_REPORT_FIND_FILE_RESULT_VALUE_C + z);
return z;
}
private void resumeDownloadFromFile(DownloadResponse downloadResponse, long j) {
this._request.setTotalBytes(this._downloadModel.getTotalBytes());
this._request.setDownloadedBytes(j);
GlobalComponent.getInstance().getDatabaseHelper().update(DownloadModel.create(this._downloadModel.getDownloadId(), this._downloadModel.getDownloadUrl(), this._downloadModel.getResourceUrl(), this._downloadModel.getEtag(), this._downloadModel.getSaveDirectorPath(), this._downloadModel.getSaveFileName(), this._downloadModel.getTotalBytes(), j, this._downloadModel.getDownloadRate(), this._downloadModel.getUsageCounter(), this._downloadModel.getDownloadResourceType()), this._request.getCacheDirectoryPath());
downloadResponse.setSuccessful(checkDownloadReadyRate(j));
}
private void resumeDownloadAndDeleteFile(DownloadResponse downloadResponse, File file) {
this._request.setDownloadedBytes(0L);
this._request.setTotalBytes(0L);
this._databaseHelper.remove(this._downloadId);
MBResourceManager.getInstance().deleteFile(file);
downloadResponse.setSuccessful(false);
}
private boolean checkDownloadReadyRate(long j) {
return Utils.getDownloadRate(this._downloadModel.getTotalBytes(), j) >= this._downloadMessage.getDownloadRate();
}
}

View File

@@ -0,0 +1,160 @@
package com.mbridge.msdk.foundation.download.core;
import android.content.Context;
import android.database.Cursor;
import com.mbridge.msdk.foundation.download.MBDownloadConfig;
import com.mbridge.msdk.foundation.download.database.DatabaseHelper;
import com.mbridge.msdk.foundation.download.database.DownloadModel;
import com.mbridge.msdk.foundation.download.database.IDatabaseHelper;
import com.mbridge.msdk.foundation.download.utils.ILogger;
import com.mbridge.msdk.foundation.download.utils.Objects;
import com.mbridge.msdk.foundation.tools.af;
import com.mbridge.msdk.thrid.okhttp.ConnectionPool;
import com.mbridge.msdk.thrid.okhttp.Dispatcher;
import com.mbridge.msdk.thrid.okhttp.OkHttpClient;
import com.mbridge.msdk.thrid.okhttp.Protocol;
import com.mbridge.msdk.thrid.okhttp.internal.Util;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.SynchronousQueue;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
/* loaded from: classes4.dex */
public final class GlobalComponent {
private static volatile GlobalComponent INSTANCE;
private MBDownloadConfig config;
private Context context;
private IDatabaseHelper databaseHelper;
private ILogger logger;
private volatile OkHttpClient okHttpClient;
private int byteBufferSize = 4096;
private String databaseTableName = DownloadModel.TABLE_NAME;
public final int getByteBufferSize() {
return this.byteBufferSize;
}
public final Context getContext() {
return this.context;
}
public final IDatabaseHelper getDatabaseHelper() {
return this.databaseHelper;
}
public final String getDatabaseTableName() {
return this.databaseTableName;
}
private GlobalComponent() {
}
public static GlobalComponent getInstance() {
if (Objects.isNull(INSTANCE)) {
synchronized (GlobalComponent.class) {
try {
if (Objects.isNull(INSTANCE)) {
INSTANCE = new GlobalComponent();
}
} finally {
}
}
}
return INSTANCE;
}
public final ILogger getLogger() {
if (this.logger == null) {
this.logger = new ILogger() { // from class: com.mbridge.msdk.foundation.download.core.GlobalComponent.1
@Override // com.mbridge.msdk.foundation.download.utils.ILogger
public void log(String str, String str2) {
af.a(str, str2);
}
@Override // com.mbridge.msdk.foundation.download.utils.ILogger
public void log(String str, Exception exc) {
af.a(str, exc.getMessage());
}
};
}
return this.logger;
}
public final OkHttpClient getOkHttpClient() {
if (this.okHttpClient == null) {
ArrayList arrayList = new ArrayList();
arrayList.add(Protocol.HTTP_1_1);
Dispatcher dispatcher = new Dispatcher(new ThreadPoolExecutor(0, Integer.MAX_VALUE, 60L, TimeUnit.SECONDS, new SynchronousQueue(), Util.threadFactory("OkHttp Dispatcher", false)));
dispatcher.setMaxRequests(this.config.getMaxRequests());
dispatcher.setMaxRequestsPerHost(this.config.getMaxRequestsPerHost());
OkHttpClient.Builder builder = new OkHttpClient.Builder();
long defaultConnectTimeout = this.config.getDefaultConnectTimeout();
TimeUnit timeUnit = TimeUnit.MILLISECONDS;
this.okHttpClient = builder.connectTimeout(defaultConnectTimeout, timeUnit).readTimeout(this.config.getDefaultConnectTimeout(), timeUnit).writeTimeout(this.config.getDefaultWriteTimeout(), timeUnit).dispatcher(dispatcher).pingInterval(this.config.getDefaultPingInterval(), timeUnit).retryOnConnectionFailure(true).connectionPool(new ConnectionPool(32, 5L, TimeUnit.MINUTES)).protocols(arrayList).build();
}
return this.okHttpClient;
}
public final void initialize(Context context, MBDownloadConfig mBDownloadConfig) {
this.context = context.getApplicationContext();
this.logger = mBDownloadConfig.getLogger();
this.config = mBDownloadConfig;
if (mBDownloadConfig.getDatabaseHandler() != null && mBDownloadConfig.getDatabaseHelper() != null) {
this.databaseHelper = new DatabaseHelper(context, mBDownloadConfig.getDatabaseHandler(), mBDownloadConfig.getDatabaseHelper());
} else {
this.databaseHelper = new IDatabaseHelper() { // from class: com.mbridge.msdk.foundation.download.core.GlobalComponent.2
@Override // com.mbridge.msdk.foundation.download.database.IDatabaseHelper
public void clear() {
}
@Override // com.mbridge.msdk.foundation.download.database.IDatabaseHelper
public void find(String str, String str2, IDatabaseHelper.IDatabaseListener iDatabaseListener) {
}
@Override // com.mbridge.msdk.foundation.download.database.IDatabaseHelper
public List<DownloadModel> findAll() {
return null;
}
@Override // com.mbridge.msdk.foundation.download.database.IDatabaseHelper
public void findByDownloadUrl(String str, IDatabaseHelper.IDatabaseListener iDatabaseListener) {
}
@Override // com.mbridge.msdk.foundation.download.database.IDatabaseHelper
public List<DownloadModel> getUnwantedModels(long j) {
return null;
}
@Override // com.mbridge.msdk.foundation.download.database.IDatabaseHelper
public void insert(DownloadModel downloadModel) {
}
@Override // com.mbridge.msdk.foundation.download.database.IDatabaseHelper
public Cursor rawQuery(String str, String[] strArr) {
return null;
}
@Override // com.mbridge.msdk.foundation.download.database.IDatabaseHelper
public void remove(String str) {
}
@Override // com.mbridge.msdk.foundation.download.database.IDatabaseHelper
public void remove(String str, String str2) {
}
@Override // com.mbridge.msdk.foundation.download.database.IDatabaseHelper
public void update(DownloadModel downloadModel, String str) {
}
@Override // com.mbridge.msdk.foundation.download.database.IDatabaseHelper
public void updateProgress(String str, String str2, DownloadModel downloadModel) {
}
@Override // com.mbridge.msdk.foundation.download.database.IDatabaseHelper
public void updateUnzipResource(String str, String str2, long j) {
}
};
}
}
}

View File

@@ -0,0 +1,10 @@
package com.mbridge.msdk.foundation.download.core;
import com.mbridge.msdk.foundation.download.DownloadResponse;
/* loaded from: classes4.dex */
public interface IDownloadTask {
public static final String TAG = "DownloadTask";
DownloadResponse run();
}

View File

@@ -0,0 +1,207 @@
package com.mbridge.msdk.foundation.download.core;
import android.text.TextUtils;
import com.mbridge.msdk.foundation.download.DownloadError;
import com.mbridge.msdk.foundation.download.DownloadMessage;
import com.mbridge.msdk.foundation.download.DownloadProgress;
import com.mbridge.msdk.foundation.download.DownloadResponse;
import com.mbridge.msdk.foundation.download.DownloadStatus;
import com.mbridge.msdk.foundation.download.core.DownloaderReporter;
import com.mbridge.msdk.foundation.download.database.DownloadModel;
import com.mbridge.msdk.foundation.download.database.IDatabaseHelper;
import com.mbridge.msdk.foundation.download.resource.MBResourceManager;
import com.mbridge.msdk.foundation.download.resource.stream.DownloadFileOutputStream;
import com.mbridge.msdk.foundation.download.utils.Objects;
import com.mbridge.msdk.foundation.download.utils.Utils;
import com.mbridge.msdk.foundation.tools.ah;
import com.mbridge.msdk.thrid.okhttp.Response;
import com.mbridge.msdk.thrid.okhttp.ResponseBody;
import com.mbridge.msdk.tracker.network.q;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
/* loaded from: classes4.dex */
class OkHTTPFileDownloadTask implements IDownloadTask {
private static final String CLOSE = "close";
private static final String CONNECTION = "Connection";
private static final String FORMAT_RANGE = "bytes=%d-";
private static final String RESPONSE_BODY_IS_NULL = "response body is null";
private static final String RESPONSE_CODE = "responseCode ";
private static final String RESPONSE_CONTENT_LENGTH_IS_NULL = "response content length is null";
private static final String RESPONSE_INPUTSTREAM_IS_NULL = "response inputStream is null";
private static final String RESPONSE_IS_NULL = "response is null";
private final IDatabaseHelper _databaseHelper;
private volatile DownloadMessage _downloadMessage;
private DownloadModel _downloadModel;
private final DownloadRequest _downloadRequest;
private DownloadResponse _downloadResponse;
private DownloaderReporter.Builder _downloaderReporter;
private String _etag = "";
private InputStream _inputStream;
private DownloadFileOutputStream _outputStream;
private ResponseBody _responseBody;
private q monitor;
private OkHTTPFileDownloadTask(DownloadRequest downloadRequest, DownloadModel downloadModel, IDatabaseHelper iDatabaseHelper, DownloadMessage downloadMessage, DownloaderReporter.Builder builder) {
this._downloadRequest = downloadRequest;
this._downloadModel = downloadModel;
this._databaseHelper = iDatabaseHelper;
this._downloadMessage = downloadMessage;
this._downloaderReporter = builder;
}
public static IDownloadTask create(DownloadRequest downloadRequest, DownloadModel downloadModel, IDatabaseHelper iDatabaseHelper, DownloadMessage downloadMessage, DownloaderReporter.Builder builder) {
if (Objects.isNull(builder)) {
builder = new DownloaderReporter.Builder(DownloadCommon.DOWNLOAD_REPORT_KEY);
}
return new OkHTTPFileDownloadTask(downloadRequest, downloadModel, iDatabaseHelper, downloadMessage, builder);
}
/* JADX WARN: Code restructure failed: missing block: B:50:0x0248, code lost:
if (r8.isCanceled() == false) goto L52;
*/
/* JADX WARN: Code restructure failed: missing block: B:51:0x024a, code lost:
r8.cancel();
*/
/* JADX WARN: Code restructure failed: missing block: B:52:0x024d, code lost:
reportDownloadMessage();
*/
/* JADX WARN: Code restructure failed: missing block: B:54:0x02a1, code lost:
return r20._downloadResponse;
*/
/* JADX WARN: Code restructure failed: missing block: B:66:0x029c, code lost:
if (r8.isCanceled() != false) goto L53;
*/
@Override // com.mbridge.msdk.foundation.download.core.IDownloadTask
/*
Code decompiled incorrectly, please refer to instructions dump.
To view partially-correct add '--show-bad-code' argument
*/
public com.mbridge.msdk.foundation.download.DownloadResponse run() {
/*
Method dump skipped, instructions count: 722
To view this dump add '--comments-level debug' option
*/
throw new UnsupportedOperationException("Method not decompiled: com.mbridge.msdk.foundation.download.core.OkHTTPFileDownloadTask.run():com.mbridge.msdk.foundation.download.DownloadResponse");
}
private DownloadResponse handlerRequestSuccessful(String str, String str2, String str3, Response response, int i) throws IOException, IllegalAccessException {
DownloadResponse downloadResponse = new DownloadResponse();
boolean z = !isSupportResume(i, this._downloadModel);
boolean z2 = (response == null || this._downloadRequest == null || i != 206 || response.body() == null || this._downloadRequest.getTotalBytes() <= 0 || response.body().contentLength() == this._downloadRequest.getTotalBytes() - this._downloadRequest.getDownloadedBytes()) ? false : true;
if (z && z2) {
this._downloadRequest.setDownloadedBytes(0L);
this._downloadRequest.setTotalBytes(0L);
if (Objects.isNotNull(this._databaseHelper)) {
this._databaseHelper.remove(str3, str2);
}
this._downloadModel = null;
MBResourceManager.getInstance().deleteFile(new File(this._downloadRequest.getCacheDirectoryPath() + this._downloadMessage.getSaveFileName()));
}
ResponseBody body = response.body();
this._responseBody = body;
if (Objects.isNull(body)) {
downloadResponse.setError(new IOException(RESPONSE_BODY_IS_NULL));
this._downloadRequest.setTotalBytes(0L);
this._downloadRequest.setDownloadedBytes(0L);
return downloadResponse;
}
long contentLength = this._responseBody.contentLength();
if (contentLength <= 0) {
downloadResponse.setError(new IOException(RESPONSE_CONTENT_LENGTH_IS_NULL));
return downloadResponse;
}
if (this._downloadRequest.getTotalBytes() == 0) {
this._downloadRequest.setTotalBytes(contentLength);
}
InputStream byteStream = this._responseBody.byteStream();
this._inputStream = byteStream;
if (Objects.isNull(byteStream)) {
downloadResponse.setError(new IOException(RESPONSE_INPUTSTREAM_IS_NULL));
return downloadResponse;
}
return handleInputStream(str, str2, str3, this._etag);
}
private void handlerException(String str, String str2, String str3, Exception exc) {
try {
if (Objects.isNotNull(this._databaseHelper) && Objects.isNotNull(this._downloadRequest)) {
if (!ah.a().a("r_f_s_d_e", true)) {
this._databaseHelper.remove(str3, str2);
MBResourceManager.getInstance().deleteFile(new File(this._downloadRequest.getCacheDirectoryPath() + this._downloadMessage.getSaveFileName()));
}
this._downloadRequest.setDownloadedBytes(0L);
this._downloadRequest.setTotalBytes(0L);
}
} catch (Exception e) {
GlobalComponent.getInstance().getLogger().log(IDownloadTask.TAG, e.getMessage());
}
this._downloadResponse.setError(exc);
}
private void reportDownloadMessage() {
boolean isSuccessful = this._downloadResponse.isSuccessful();
this._downloaderReporter.add("su", Boolean.toString(isSuccessful));
boolean isCancelled = this._downloadResponse.isCancelled();
this._downloaderReporter.add(DownloadCommon.DOWNLOAD_REPORT_CANCEL, Boolean.toString(isCancelled));
this._downloaderReporter.add(DownloadCommon.DOWNLOAD_REPORT_DOWNLOAD_RATE, String.valueOf(Utils.getDownloadRate(this._downloadRequest.getTotalBytes(), this._downloadRequest.getDownloadedBytes())));
if (!isSuccessful && !isCancelled) {
this._downloaderReporter.add(DownloadCommon.DOWNLOAD_REPORT_REASON, this._downloadResponse.getErrorMessage());
}
q qVar = this.monitor;
if (qVar != null) {
if (isSuccessful) {
qVar.b(1);
} else {
String errorMessage = this._downloadResponse.getErrorMessage();
DownloadError error = this._downloadResponse.getError();
Exception exception = error == null ? null : error.getException();
q qVar2 = this.monitor;
if (isCancelled) {
exception = new IOException("download request canceled");
}
qVar2.a(exception);
if (TextUtils.equals(errorMessage, "timeout")) {
this.monitor.b(3);
} else {
this.monitor.b(2);
}
}
}
this._downloaderReporter.build().report();
}
private boolean isSupportResume(int i, DownloadModel downloadModel) {
return i == 206 && !TextUtils.isEmpty(this._etag) && (downloadModel == null || TextUtils.equals(this._etag, downloadModel.getEtag()));
}
/* JADX WARN: Removed duplicated region for block: B:22:0x0119 */
/* JADX WARN: Removed duplicated region for block: B:26:0x0131 */
/* JADX WARN: Removed duplicated region for block: B:44:0x01c3 */
/* JADX WARN: Removed duplicated region for block: B:49:0x02ad */
/* JADX WARN: Removed duplicated region for block: B:52:0x0217 A[EXC_TOP_SPLITTER, SYNTHETIC] */
/* JADX WARN: Removed duplicated region for block: B:86:0x01bb A[SYNTHETIC] */
/*
Code decompiled incorrectly, please refer to instructions dump.
To view partially-correct add '--show-bad-code' argument
*/
private com.mbridge.msdk.foundation.download.DownloadResponse handleInputStream(java.lang.String r27, java.lang.String r28, java.lang.String r29, java.lang.String r30) throws java.io.IOException, java.lang.IllegalAccessException {
/*
Method dump skipped, instructions count: 689
To view this dump add '--comments-level debug' option
*/
throw new UnsupportedOperationException("Method not decompiled: com.mbridge.msdk.foundation.download.core.OkHTTPFileDownloadTask.handleInputStream(java.lang.String, java.lang.String, java.lang.String, java.lang.String):com.mbridge.msdk.foundation.download.DownloadResponse");
}
private void sendProgress(DownloadRequest downloadRequest, DownloadMessage downloadMessage, long j, long j2, int i) {
if (downloadRequest.getStatus() != DownloadStatus.CANCELLED) {
downloadRequest.handlerProcessEvent(downloadMessage, new DownloadProgress(j, j2, i));
}
}
}

View File

@@ -0,0 +1,32 @@
package com.mbridge.msdk.foundation.download.core;
import android.os.Process;
import java.util.concurrent.ThreadFactory;
/* loaded from: classes4.dex */
public class PriorityThreadFactory implements ThreadFactory {
private final int threadPriority;
public PriorityThreadFactory(int i) {
this.threadPriority = i;
}
@Override // java.util.concurrent.ThreadFactory
public Thread newThread(final Runnable runnable) {
Thread thread = new Thread(new Runnable() { // from class: com.mbridge.msdk.foundation.download.core.PriorityThreadFactory.1
@Override // java.lang.Runnable
public void run() {
try {
Process.setThreadPriority(PriorityThreadFactory.this.threadPriority);
} catch (Throwable unused) {
}
try {
runnable.run();
} catch (Exception unused2) {
}
}
});
thread.setName("mb_download_thread");
return thread;
}
}

View File

@@ -0,0 +1,36 @@
package com.mbridge.msdk.foundation.download.core;
import com.mbridge.msdk.foundation.download.DownloadPriority;
import com.mbridge.msdk.foundation.download.OnDownloadStateListener;
import com.mbridge.msdk.foundation.download.OnProgressStateListener;
/* loaded from: classes4.dex */
public interface RequestBuilder<T> {
DownloadRequest<T> build();
RequestBuilder<T> with(String str, String str2);
RequestBuilder<T> withConnectTimeout(long j);
RequestBuilder<T> withDirectoryPathExternal(String str);
RequestBuilder<T> withDirectoryPathInternal(String str);
RequestBuilder<T> withDownloadPriority(DownloadPriority downloadPriority);
RequestBuilder<T> withDownloadStateListener(OnDownloadStateListener onDownloadStateListener);
RequestBuilder<T> withHeader(String str, String str2);
RequestBuilder<T> withHttpRetryCounter(int i);
RequestBuilder<T> withProgressStateListener(OnProgressStateListener onProgressStateListener);
RequestBuilder<T> withReadTimeout(long j);
RequestBuilder<T> withTimeout(long j);
RequestBuilder<T> withUserAgent(String str);
RequestBuilder<T> withWriteTimeout(long j);
}

View File

@@ -0,0 +1,63 @@
package com.mbridge.msdk.foundation.download.core;
import android.os.Build;
import android.text.TextUtils;
import com.mbridge.msdk.foundation.download.DownloadResponse;
/* loaded from: classes4.dex */
class SynchronizeAvailableDirectorPath implements IDownloadTask {
private int cacheDirectorPathType;
private String cacheDirectoryPath;
private String cacheDirectoryPathExternal;
private String cacheDirectoryPathInternal;
private DownloadRequest downloadRequest;
public SynchronizeAvailableDirectorPath(DownloadRequest downloadRequest) {
this.downloadRequest = downloadRequest;
}
public static IDownloadTask create(DownloadRequest downloadRequest) {
return new SynchronizeAvailableDirectorPath(downloadRequest);
}
@Override // com.mbridge.msdk.foundation.download.core.IDownloadTask
public DownloadResponse run() {
String str;
DownloadRequest downloadRequest;
this.cacheDirectoryPathExternal = this.downloadRequest.getDirectoryPathExternal();
String directoryPathInternal = this.downloadRequest.getDirectoryPathInternal();
this.cacheDirectoryPathInternal = directoryPathInternal;
if (TextUtils.isEmpty(directoryPathInternal)) {
throw new RuntimeException("必须指定 cacheDirectoryPathInternal");
}
try {
try {
if (TextUtils.isEmpty(this.cacheDirectoryPathExternal)) {
this.cacheDirectoryPath = this.cacheDirectoryPathInternal;
this.cacheDirectorPathType = 0;
} else if (Build.VERSION.SDK_INT > 28) {
this.cacheDirectoryPath = this.cacheDirectoryPathInternal;
this.cacheDirectorPathType = 0;
} else {
GlobalComponent.getInstance().getContext();
this.cacheDirectoryPath = this.cacheDirectoryPathInternal;
this.cacheDirectorPathType = 0;
}
downloadRequest = this.downloadRequest;
str = this.cacheDirectoryPath;
} catch (Exception unused) {
str = this.cacheDirectoryPathInternal;
this.cacheDirectoryPath = str;
this.cacheDirectorPathType = 0;
downloadRequest = this.downloadRequest;
}
downloadRequest.setCacheDirectoryPath(str);
this.downloadRequest.setCacheDirectorPathType(this.cacheDirectorPathType);
return null;
} catch (Throwable th) {
this.downloadRequest.setCacheDirectoryPath(this.cacheDirectoryPath);
this.downloadRequest.setCacheDirectorPathType(this.cacheDirectorPathType);
throw th;
}
}
}

View File

@@ -0,0 +1,671 @@
package com.mbridge.msdk.foundation.download.database;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Handler;
import com.mbridge.msdk.MBridgeConstans;
import com.mbridge.msdk.foundation.download.core.GlobalComponent;
import com.mbridge.msdk.foundation.download.database.IDatabaseHelper;
import com.mbridge.msdk.foundation.download.utils.Objects;
import com.mbridge.msdk.foundation.tools.af;
import java.util.ArrayList;
import java.util.List;
/* loaded from: classes4.dex */
public class DatabaseHelper implements IDatabaseHelper {
private volatile SQLiteDatabase database;
private final IDatabaseOpenHelper databaseOpenHelper;
private final Handler handler;
private final String tableName = GlobalComponent.getInstance().getDatabaseTableName();
public DatabaseHelper(Context context, Handler handler, IDatabaseOpenHelper iDatabaseOpenHelper) {
this.handler = handler;
this.databaseOpenHelper = iDatabaseOpenHelper;
}
@Override // com.mbridge.msdk.foundation.download.database.IDatabaseHelper
public void find(final String str, final String str2, final IDatabaseHelper.IDatabaseListener iDatabaseListener) {
this.handler.post(new Runnable() { // from class: com.mbridge.msdk.foundation.download.database.DatabaseHelper.1
/* JADX WARN: Removed duplicated region for block: B:36:0x00b2 */
/* JADX WARN: Removed duplicated region for block: B:39:0x00b9 */
@Override // java.lang.Runnable
/*
Code decompiled incorrectly, please refer to instructions dump.
To view partially-correct add '--show-bad-code' argument
*/
public void run() {
/*
r6 = this;
com.mbridge.msdk.foundation.download.database.DatabaseHelper r0 = com.mbridge.msdk.foundation.download.database.DatabaseHelper.this
android.database.sqlite.SQLiteDatabase r0 = com.mbridge.msdk.foundation.download.database.DatabaseHelper.access$000(r0)
boolean r0 = com.mbridge.msdk.foundation.download.utils.Objects.isNull(r0)
if (r0 == 0) goto L19
com.mbridge.msdk.foundation.download.database.DatabaseHelper r0 = com.mbridge.msdk.foundation.download.database.DatabaseHelper.this
com.mbridge.msdk.foundation.download.database.IDatabaseOpenHelper r1 = com.mbridge.msdk.foundation.download.database.DatabaseHelper.access$100(r0)
android.database.sqlite.SQLiteDatabase r1 = r1.getWritableDatabase()
com.mbridge.msdk.foundation.download.database.DatabaseHelper.access$002(r0, r1)
L19:
com.mbridge.msdk.foundation.download.database.DatabaseHelper r0 = com.mbridge.msdk.foundation.download.database.DatabaseHelper.this
android.database.sqlite.SQLiteDatabase r0 = com.mbridge.msdk.foundation.download.database.DatabaseHelper.access$000(r0)
boolean r0 = com.mbridge.msdk.foundation.download.utils.Objects.isNull(r0)
r1 = 0
if (r0 != 0) goto Lbd
com.mbridge.msdk.foundation.download.database.DatabaseHelper r0 = com.mbridge.msdk.foundation.download.database.DatabaseHelper.this
android.database.sqlite.SQLiteDatabase r0 = com.mbridge.msdk.foundation.download.database.DatabaseHelper.access$000(r0)
boolean r0 = r0.isOpen()
if (r0 != 0) goto L34
goto Lbd
L34:
java.lang.StringBuilder r0 = new java.lang.StringBuilder // Catch: java.lang.Throwable -> L99 java.lang.Exception -> L9c
r0.<init>() // Catch: java.lang.Throwable -> L99 java.lang.Exception -> L9c
java.lang.String r2 = "SELECT * FROM "
r0.append(r2) // Catch: java.lang.Throwable -> L99 java.lang.Exception -> L9c
com.mbridge.msdk.foundation.download.database.DatabaseHelper r2 = com.mbridge.msdk.foundation.download.database.DatabaseHelper.this // Catch: java.lang.Throwable -> L99 java.lang.Exception -> L9c
java.lang.String r2 = com.mbridge.msdk.foundation.download.database.DatabaseHelper.access$200(r2) // Catch: java.lang.Throwable -> L99 java.lang.Exception -> L9c
r0.append(r2) // Catch: java.lang.Throwable -> L99 java.lang.Exception -> L9c
java.lang.String r2 = " WHERE "
r0.append(r2) // Catch: java.lang.Throwable -> L99 java.lang.Exception -> L9c
java.lang.String r2 = "download_id"
r0.append(r2) // Catch: java.lang.Throwable -> L99 java.lang.Exception -> L9c
java.lang.String r2 = " = ? AND "
r0.append(r2) // Catch: java.lang.Throwable -> L99 java.lang.Exception -> L9c
java.lang.String r2 = "director_path"
r0.append(r2) // Catch: java.lang.Throwable -> L99 java.lang.Exception -> L9c
java.lang.String r2 = " = ?"
r0.append(r2) // Catch: java.lang.Throwable -> L99 java.lang.Exception -> L9c
java.lang.String r0 = r0.toString() // Catch: java.lang.Throwable -> L99 java.lang.Exception -> L9c
com.mbridge.msdk.foundation.download.database.DatabaseHelper r2 = com.mbridge.msdk.foundation.download.database.DatabaseHelper.this // Catch: java.lang.Throwable -> L99 java.lang.Exception -> L9c
android.database.sqlite.SQLiteDatabase r2 = com.mbridge.msdk.foundation.download.database.DatabaseHelper.access$000(r2) // Catch: java.lang.Throwable -> L99 java.lang.Exception -> L9c
r3 = 2
java.lang.String[] r3 = new java.lang.String[r3] // Catch: java.lang.Throwable -> L99 java.lang.Exception -> L9c
java.lang.String r4 = r3 // Catch: java.lang.Throwable -> L99 java.lang.Exception -> L9c
r5 = 0
r3[r5] = r4 // Catch: java.lang.Throwable -> L99 java.lang.Exception -> L9c
java.lang.String r4 = r4 // Catch: java.lang.Throwable -> L99 java.lang.Exception -> L9c
r5 = 1
r3[r5] = r4 // Catch: java.lang.Throwable -> L99 java.lang.Exception -> L9c
android.database.Cursor r0 = r2.rawQuery(r0, r3) // Catch: java.lang.Throwable -> L99 java.lang.Exception -> L9c
if (r0 == 0) goto L8c
boolean r2 = r0.moveToFirst() // Catch: java.lang.Throwable -> L88 java.lang.Exception -> L8a
if (r2 == 0) goto L8c
com.mbridge.msdk.foundation.download.database.DownloadModel r1 = com.mbridge.msdk.foundation.download.database.DownloadModel.create(r0) // Catch: java.lang.Throwable -> L88 java.lang.Exception -> L8a
goto L8c
L88:
r2 = move-exception
goto Lb0
L8a:
r2 = move-exception
goto L9e
L8c:
if (r0 == 0) goto L91
r0.close()
L91:
com.mbridge.msdk.foundation.download.database.IDatabaseHelper$IDatabaseListener r0 = r2
if (r0 == 0) goto Laf
L95:
r0.onDatabase(r1)
goto Laf
L99:
r2 = move-exception
r0 = r1
goto Lb0
L9c:
r2 = move-exception
r0 = r1
L9e:
boolean r3 = com.mbridge.msdk.MBridgeConstans.DEBUG // Catch: java.lang.Throwable -> L88
if (r3 == 0) goto La5
r2.printStackTrace() // Catch: java.lang.Throwable -> L88
La5:
if (r0 == 0) goto Laa
r0.close()
Laa:
com.mbridge.msdk.foundation.download.database.IDatabaseHelper$IDatabaseListener r0 = r2
if (r0 == 0) goto Laf
goto L95
Laf:
return
Lb0:
if (r0 == 0) goto Lb5
r0.close()
Lb5:
com.mbridge.msdk.foundation.download.database.IDatabaseHelper$IDatabaseListener r0 = r2
if (r0 == 0) goto Lbc
r0.onDatabase(r1)
Lbc:
throw r2
Lbd:
com.mbridge.msdk.foundation.download.database.IDatabaseHelper$IDatabaseListener r0 = r2
boolean r0 = com.mbridge.msdk.foundation.download.utils.Objects.isNotNull(r0)
if (r0 == 0) goto Lca
com.mbridge.msdk.foundation.download.database.IDatabaseHelper$IDatabaseListener r0 = r2
r0.onDatabase(r1)
Lca:
return
*/
throw new UnsupportedOperationException("Method not decompiled: com.mbridge.msdk.foundation.download.database.DatabaseHelper.AnonymousClass1.run():void");
}
});
}
@Override // com.mbridge.msdk.foundation.download.database.IDatabaseHelper
public void findByDownloadUrl(final String str, final IDatabaseHelper.IDatabaseListener iDatabaseListener) {
this.handler.post(new Runnable() { // from class: com.mbridge.msdk.foundation.download.database.DatabaseHelper.2
/* JADX WARN: Removed duplicated region for block: B:36:0x00a3 */
/* JADX WARN: Removed duplicated region for block: B:39:0x00aa */
@Override // java.lang.Runnable
/*
Code decompiled incorrectly, please refer to instructions dump.
To view partially-correct add '--show-bad-code' argument
*/
public void run() {
/*
r6 = this;
com.mbridge.msdk.foundation.download.database.DatabaseHelper r0 = com.mbridge.msdk.foundation.download.database.DatabaseHelper.this
android.database.sqlite.SQLiteDatabase r0 = com.mbridge.msdk.foundation.download.database.DatabaseHelper.access$000(r0)
boolean r0 = com.mbridge.msdk.foundation.download.utils.Objects.isNull(r0)
if (r0 == 0) goto L19
com.mbridge.msdk.foundation.download.database.DatabaseHelper r0 = com.mbridge.msdk.foundation.download.database.DatabaseHelper.this
com.mbridge.msdk.foundation.download.database.IDatabaseOpenHelper r1 = com.mbridge.msdk.foundation.download.database.DatabaseHelper.access$100(r0)
android.database.sqlite.SQLiteDatabase r1 = r1.getWritableDatabase()
com.mbridge.msdk.foundation.download.database.DatabaseHelper.access$002(r0, r1)
L19:
com.mbridge.msdk.foundation.download.database.DatabaseHelper r0 = com.mbridge.msdk.foundation.download.database.DatabaseHelper.this
android.database.sqlite.SQLiteDatabase r0 = com.mbridge.msdk.foundation.download.database.DatabaseHelper.access$000(r0)
boolean r0 = com.mbridge.msdk.foundation.download.utils.Objects.isNull(r0)
r1 = 0
if (r0 != 0) goto Lae
com.mbridge.msdk.foundation.download.database.DatabaseHelper r0 = com.mbridge.msdk.foundation.download.database.DatabaseHelper.this
android.database.sqlite.SQLiteDatabase r0 = com.mbridge.msdk.foundation.download.database.DatabaseHelper.access$000(r0)
boolean r0 = r0.isOpen()
if (r0 != 0) goto L34
goto Lae
L34:
java.lang.StringBuilder r0 = new java.lang.StringBuilder // Catch: java.lang.Throwable -> L8a java.lang.Exception -> L8d
r0.<init>() // Catch: java.lang.Throwable -> L8a java.lang.Exception -> L8d
java.lang.String r2 = "SELECT * FROM "
r0.append(r2) // Catch: java.lang.Throwable -> L8a java.lang.Exception -> L8d
com.mbridge.msdk.foundation.download.database.DatabaseHelper r2 = com.mbridge.msdk.foundation.download.database.DatabaseHelper.this // Catch: java.lang.Throwable -> L8a java.lang.Exception -> L8d
java.lang.String r2 = com.mbridge.msdk.foundation.download.database.DatabaseHelper.access$200(r2) // Catch: java.lang.Throwable -> L8a java.lang.Exception -> L8d
r0.append(r2) // Catch: java.lang.Throwable -> L8a java.lang.Exception -> L8d
java.lang.String r2 = " WHERE "
r0.append(r2) // Catch: java.lang.Throwable -> L8a java.lang.Exception -> L8d
java.lang.String r2 = "download_url"
r0.append(r2) // Catch: java.lang.Throwable -> L8a java.lang.Exception -> L8d
java.lang.String r2 = " = ?"
r0.append(r2) // Catch: java.lang.Throwable -> L8a java.lang.Exception -> L8d
java.lang.String r0 = r0.toString() // Catch: java.lang.Throwable -> L8a java.lang.Exception -> L8d
com.mbridge.msdk.foundation.download.database.DatabaseHelper r2 = com.mbridge.msdk.foundation.download.database.DatabaseHelper.this // Catch: java.lang.Throwable -> L8a java.lang.Exception -> L8d
android.database.sqlite.SQLiteDatabase r2 = com.mbridge.msdk.foundation.download.database.DatabaseHelper.access$000(r2) // Catch: java.lang.Throwable -> L8a java.lang.Exception -> L8d
r3 = 1
java.lang.String[] r3 = new java.lang.String[r3] // Catch: java.lang.Throwable -> L8a java.lang.Exception -> L8d
java.lang.String r4 = r3 // Catch: java.lang.Throwable -> L8a java.lang.Exception -> L8d
r5 = 0
r3[r5] = r4 // Catch: java.lang.Throwable -> L8a java.lang.Exception -> L8d
android.database.Cursor r0 = r2.rawQuery(r0, r3) // Catch: java.lang.Throwable -> L8a java.lang.Exception -> L8d
if (r0 == 0) goto L7d
boolean r2 = r0.moveToFirst() // Catch: java.lang.Throwable -> L79 java.lang.Exception -> L7b
if (r2 == 0) goto L7d
com.mbridge.msdk.foundation.download.database.DownloadModel r1 = com.mbridge.msdk.foundation.download.database.DownloadModel.create(r0) // Catch: java.lang.Throwable -> L79 java.lang.Exception -> L7b
goto L7d
L79:
r2 = move-exception
goto La1
L7b:
r2 = move-exception
goto L8f
L7d:
if (r0 == 0) goto L82
r0.close()
L82:
com.mbridge.msdk.foundation.download.database.IDatabaseHelper$IDatabaseListener r0 = r2
if (r0 == 0) goto La0
L86:
r0.onDatabase(r1)
goto La0
L8a:
r2 = move-exception
r0 = r1
goto La1
L8d:
r2 = move-exception
r0 = r1
L8f:
boolean r3 = com.mbridge.msdk.MBridgeConstans.DEBUG // Catch: java.lang.Throwable -> L79
if (r3 == 0) goto L96
r2.printStackTrace() // Catch: java.lang.Throwable -> L79
L96:
if (r0 == 0) goto L9b
r0.close()
L9b:
com.mbridge.msdk.foundation.download.database.IDatabaseHelper$IDatabaseListener r0 = r2
if (r0 == 0) goto La0
goto L86
La0:
return
La1:
if (r0 == 0) goto La6
r0.close()
La6:
com.mbridge.msdk.foundation.download.database.IDatabaseHelper$IDatabaseListener r0 = r2
if (r0 == 0) goto Lad
r0.onDatabase(r1)
Lad:
throw r2
Lae:
com.mbridge.msdk.foundation.download.database.IDatabaseHelper$IDatabaseListener r0 = r2
boolean r0 = com.mbridge.msdk.foundation.download.utils.Objects.isNotNull(r0)
if (r0 == 0) goto Lbb
com.mbridge.msdk.foundation.download.database.IDatabaseHelper$IDatabaseListener r0 = r2
r0.onDatabase(r1)
Lbb:
return
*/
throw new UnsupportedOperationException("Method not decompiled: com.mbridge.msdk.foundation.download.database.DatabaseHelper.AnonymousClass2.run():void");
}
});
}
@Override // com.mbridge.msdk.foundation.download.database.IDatabaseHelper
public void insert(final DownloadModel downloadModel) {
this.handler.postAtFrontOfQueue(new Runnable() { // from class: com.mbridge.msdk.foundation.download.database.DatabaseHelper.3
@Override // java.lang.Runnable
public void run() {
if (Objects.isNull(DatabaseHelper.this.database)) {
DatabaseHelper databaseHelper = DatabaseHelper.this;
databaseHelper.database = databaseHelper.databaseOpenHelper.getWritableDatabase();
}
if (Objects.isNull(DatabaseHelper.this.database) || !DatabaseHelper.this.database.isOpen()) {
return;
}
try {
try {
try {
DatabaseHelper.this.database.beginTransaction();
DatabaseHelper.this.database.insert(DatabaseHelper.this.tableName, null, DownloadModel.create(downloadModel));
DatabaseHelper.this.database.setTransactionSuccessful();
if (DatabaseHelper.this.database.inTransaction()) {
DatabaseHelper.this.database.endTransaction();
}
} catch (Exception e) {
if (MBridgeConstans.DEBUG) {
e.printStackTrace();
}
if (DatabaseHelper.this.database.inTransaction()) {
DatabaseHelper.this.database.endTransaction();
}
}
} catch (Throwable th) {
af.b(IDatabaseHelper.TAG, th.getMessage());
}
} catch (Throwable th2) {
try {
if (DatabaseHelper.this.database.inTransaction()) {
DatabaseHelper.this.database.endTransaction();
}
} catch (Throwable th3) {
af.b(IDatabaseHelper.TAG, th3.getMessage());
}
throw th2;
}
}
});
}
@Override // com.mbridge.msdk.foundation.download.database.IDatabaseHelper
public void update(final DownloadModel downloadModel, final String str) {
this.handler.post(new Runnable() { // from class: com.mbridge.msdk.foundation.download.database.DatabaseHelper.4
@Override // java.lang.Runnable
public void run() {
if (Objects.isNull(DatabaseHelper.this.database)) {
DatabaseHelper databaseHelper = DatabaseHelper.this;
databaseHelper.database = databaseHelper.databaseOpenHelper.getWritableDatabase();
}
if (Objects.isNull(DatabaseHelper.this.database) || !DatabaseHelper.this.database.isOpen()) {
return;
}
try {
DatabaseHelper.this.database.update(DatabaseHelper.this.tableName, DownloadModel.create(downloadModel), "download_id = ? AND director_path = ?", new String[]{downloadModel.getDownloadId(), str});
} catch (Exception e) {
if (MBridgeConstans.DEBUG) {
e.printStackTrace();
}
}
}
});
}
@Override // com.mbridge.msdk.foundation.download.database.IDatabaseHelper
public void updateProgress(final String str, final String str2, final DownloadModel downloadModel) {
this.handler.post(new Runnable() { // from class: com.mbridge.msdk.foundation.download.database.DatabaseHelper.5
@Override // java.lang.Runnable
public void run() {
if (Objects.isNull(DatabaseHelper.this.database)) {
DatabaseHelper databaseHelper = DatabaseHelper.this;
databaseHelper.database = databaseHelper.databaseOpenHelper.getWritableDatabase();
}
if (Objects.isNull(DatabaseHelper.this.database) || !DatabaseHelper.this.database.isOpen()) {
return;
}
try {
DatabaseHelper.this.database.update(DatabaseHelper.this.tableName, DownloadModel.create(downloadModel), "download_id = ? AND director_path = ?", new String[]{str, str2});
} catch (Exception e) {
if (MBridgeConstans.DEBUG) {
e.printStackTrace();
}
}
}
});
}
@Override // com.mbridge.msdk.foundation.download.database.IDatabaseHelper
public void remove(final String str, final String str2) {
this.handler.post(new Runnable() { // from class: com.mbridge.msdk.foundation.download.database.DatabaseHelper.6
@Override // java.lang.Runnable
public void run() {
if (Objects.isNull(DatabaseHelper.this.database)) {
DatabaseHelper databaseHelper = DatabaseHelper.this;
databaseHelper.database = databaseHelper.databaseOpenHelper.getWritableDatabase();
}
if (Objects.isNull(DatabaseHelper.this.database) || !DatabaseHelper.this.database.isOpen()) {
return;
}
try {
DatabaseHelper.this.database.execSQL("DELETE FROM " + DatabaseHelper.this.tableName + " WHERE " + DownloadModel.DOWNLOAD_ID + " = ? AND " + DownloadModel.DIRECTORY_PATH + " = ?", new Object[]{str, str2});
} catch (Exception e) {
if (MBridgeConstans.DEBUG) {
e.printStackTrace();
}
}
}
});
}
@Override // com.mbridge.msdk.foundation.download.database.IDatabaseHelper
public void remove(final String str) {
this.handler.post(new Runnable() { // from class: com.mbridge.msdk.foundation.download.database.DatabaseHelper.7
@Override // java.lang.Runnable
public void run() {
if (Objects.isNull(DatabaseHelper.this.database)) {
DatabaseHelper databaseHelper = DatabaseHelper.this;
databaseHelper.database = databaseHelper.databaseOpenHelper.getWritableDatabase();
}
if (Objects.isNull(DatabaseHelper.this.database) || !DatabaseHelper.this.database.isOpen()) {
return;
}
try {
DatabaseHelper.this.database.execSQL("DELETE FROM " + DatabaseHelper.this.tableName + " WHERE " + DownloadModel.DOWNLOAD_ID + " = ?", new Object[]{str});
} catch (Exception e) {
if (MBridgeConstans.DEBUG) {
e.printStackTrace();
}
}
}
});
}
/* JADX WARN: Code restructure failed: missing block: B:20:0x0079, code lost:
if (r1 != null) goto L22;
*/
/* JADX WARN: Code restructure failed: missing block: B:21:0x007b, code lost:
r1.close();
*/
/* JADX WARN: Code restructure failed: missing block: B:22:0x008a, code lost:
return r0;
*/
/* JADX WARN: Code restructure failed: missing block: B:31:0x0087, code lost:
if (r1 != null) goto L22;
*/
@Override // com.mbridge.msdk.foundation.download.database.IDatabaseHelper
/*
Code decompiled incorrectly, please refer to instructions dump.
To view partially-correct add '--show-bad-code' argument
*/
public java.util.List<com.mbridge.msdk.foundation.download.database.DownloadModel> getUnwantedModels(long r6) {
/*
r5 = this;
java.util.ArrayList r0 = new java.util.ArrayList
r0.<init>()
r1 = 0
android.database.sqlite.SQLiteDatabase r2 = r5.database // Catch: java.lang.Throwable -> L17 java.lang.Exception -> L1a
boolean r2 = com.mbridge.msdk.foundation.download.utils.Objects.isNull(r2) // Catch: java.lang.Throwable -> L17 java.lang.Exception -> L1a
if (r2 == 0) goto L1c
com.mbridge.msdk.foundation.download.database.IDatabaseOpenHelper r2 = r5.databaseOpenHelper // Catch: java.lang.Throwable -> L17 java.lang.Exception -> L1a
android.database.sqlite.SQLiteDatabase r2 = r2.getWritableDatabase() // Catch: java.lang.Throwable -> L17 java.lang.Exception -> L1a
r5.database = r2 // Catch: java.lang.Throwable -> L17 java.lang.Exception -> L1a
goto L1c
L17:
r6 = move-exception
goto L8b
L1a:
r6 = move-exception
goto L80
L1c:
android.database.sqlite.SQLiteDatabase r2 = r5.database // Catch: java.lang.Throwable -> L17 java.lang.Exception -> L1a
boolean r2 = com.mbridge.msdk.foundation.download.utils.Objects.isNull(r2) // Catch: java.lang.Throwable -> L17 java.lang.Exception -> L1a
if (r2 != 0) goto L7f
android.database.sqlite.SQLiteDatabase r2 = r5.database // Catch: java.lang.Throwable -> L17 java.lang.Exception -> L1a
boolean r2 = r2.isOpen() // Catch: java.lang.Throwable -> L17 java.lang.Exception -> L1a
if (r2 != 0) goto L2d
goto L7f
L2d:
long r2 = java.lang.System.currentTimeMillis() // Catch: java.lang.Throwable -> L17 java.lang.Exception -> L1a
long r2 = r2 - r6
android.database.sqlite.SQLiteDatabase r6 = r5.database // Catch: java.lang.Throwable -> L17 java.lang.Exception -> L1a
java.lang.StringBuilder r7 = new java.lang.StringBuilder // Catch: java.lang.Throwable -> L17 java.lang.Exception -> L1a
r7.<init>() // Catch: java.lang.Throwable -> L17 java.lang.Exception -> L1a
java.lang.String r4 = "SELECT * FROM "
r7.append(r4) // Catch: java.lang.Throwable -> L17 java.lang.Exception -> L1a
java.lang.String r4 = r5.tableName // Catch: java.lang.Throwable -> L17 java.lang.Exception -> L1a
r7.append(r4) // Catch: java.lang.Throwable -> L17 java.lang.Exception -> L1a
java.lang.String r4 = " WHERE "
r7.append(r4) // Catch: java.lang.Throwable -> L17 java.lang.Exception -> L1a
java.lang.String r4 = "last_modified_time"
r7.append(r4) // Catch: java.lang.Throwable -> L17 java.lang.Exception -> L1a
java.lang.String r4 = " <= ?"
r7.append(r4) // Catch: java.lang.Throwable -> L17 java.lang.Exception -> L1a
java.lang.String r7 = r7.toString() // Catch: java.lang.Throwable -> L17 java.lang.Exception -> L1a
r4 = 1
java.lang.String[] r4 = new java.lang.String[r4] // Catch: java.lang.Throwable -> L17 java.lang.Exception -> L1a
java.lang.String r2 = java.lang.String.valueOf(r2) // Catch: java.lang.Throwable -> L17 java.lang.Exception -> L1a
r3 = 0
r4[r3] = r2 // Catch: java.lang.Throwable -> L17 java.lang.Exception -> L1a
android.database.Cursor r1 = r6.rawQuery(r7, r4) // Catch: java.lang.Throwable -> L17 java.lang.Exception -> L1a
if (r1 == 0) goto L79
boolean r6 = r1.moveToFirst() // Catch: java.lang.Throwable -> L17 java.lang.Exception -> L1a
if (r6 == 0) goto L79
L6c:
com.mbridge.msdk.foundation.download.database.DownloadModel r6 = com.mbridge.msdk.foundation.download.database.DownloadModel.create(r1) // Catch: java.lang.Throwable -> L17 java.lang.Exception -> L1a
r0.add(r6) // Catch: java.lang.Throwable -> L17 java.lang.Exception -> L1a
boolean r6 = r1.moveToNext() // Catch: java.lang.Throwable -> L17 java.lang.Exception -> L1a
if (r6 != 0) goto L6c
L79:
if (r1 == 0) goto L8a
L7b:
r1.close()
goto L8a
L7f:
return r0
L80:
boolean r7 = com.mbridge.msdk.MBridgeConstans.DEBUG // Catch: java.lang.Throwable -> L17
if (r7 == 0) goto L87
r6.printStackTrace() // Catch: java.lang.Throwable -> L17
L87:
if (r1 == 0) goto L8a
goto L7b
L8a:
return r0
L8b:
if (r1 == 0) goto L90
r1.close()
L90:
throw r6
*/
throw new UnsupportedOperationException("Method not decompiled: com.mbridge.msdk.foundation.download.database.DatabaseHelper.getUnwantedModels(long):java.util.List");
}
@Override // com.mbridge.msdk.foundation.download.database.IDatabaseHelper
public void updateUnzipResource(final String str, String str2, long j) {
this.handler.post(new Runnable() { // from class: com.mbridge.msdk.foundation.download.database.DatabaseHelper.8
@Override // java.lang.Runnable
public void run() {
if (Objects.isNull(DatabaseHelper.this.database)) {
DatabaseHelper databaseHelper = DatabaseHelper.this;
databaseHelper.database = databaseHelper.databaseOpenHelper.getWritableDatabase();
}
if (Objects.isNull(DatabaseHelper.this.database) || !DatabaseHelper.this.database.isOpen()) {
return;
}
try {
ContentValues contentValues = new ContentValues();
contentValues.put(DownloadModel.DOWNLOAD_ID, str);
DatabaseHelper.this.database.update(DatabaseHelper.this.tableName, contentValues, "download_id = ?", new String[]{str});
} catch (Exception e) {
if (MBridgeConstans.DEBUG) {
e.printStackTrace();
}
}
}
});
}
@Override // com.mbridge.msdk.foundation.download.database.IDatabaseHelper
public Cursor rawQuery(String str, String[] strArr) {
try {
try {
if (Objects.isNull(this.database)) {
this.database = this.databaseOpenHelper.getWritableDatabase();
}
if (!Objects.isNull(this.database) && this.database.isOpen()) {
this.database.beginTransaction();
Cursor rawQuery = this.database.rawQuery(str, strArr);
this.database.setTransactionSuccessful();
try {
if (this.database.inTransaction()) {
this.database.endTransaction();
}
} catch (Throwable th) {
if (MBridgeConstans.DEBUG) {
th.printStackTrace();
}
}
return rawQuery;
}
return null;
} finally {
try {
if (this.database.inTransaction()) {
this.database.endTransaction();
}
} catch (Throwable th2) {
if (MBridgeConstans.DEBUG) {
th2.printStackTrace();
}
}
}
} catch (Exception e) {
if (MBridgeConstans.DEBUG) {
e.printStackTrace();
}
try {
if (this.database.inTransaction()) {
this.database.endTransaction();
}
} catch (Throwable th3) {
if (MBridgeConstans.DEBUG) {
th3.printStackTrace();
}
}
return null;
}
}
@Override // com.mbridge.msdk.foundation.download.database.IDatabaseHelper
public List<DownloadModel> findAll() {
ArrayList arrayList = new ArrayList();
Cursor cursor = null;
try {
try {
if (Objects.isNull(this.database)) {
this.database = this.databaseOpenHelper.getWritableDatabase();
}
if (!Objects.isNull(this.database) && this.database.isOpen()) {
cursor = rawQuery("SELECT * FROM " + this.tableName, null);
if (cursor != null) {
while (cursor.moveToNext()) {
arrayList.add(DownloadModel.create(cursor));
}
}
if (cursor != null) {
cursor.close();
}
}
return arrayList;
} catch (Exception e) {
if (MBridgeConstans.DEBUG) {
e.printStackTrace();
}
return arrayList;
}
} catch (Throwable unused) {
if (cursor != null) {
cursor.close();
}
return arrayList;
}
}
@Override // com.mbridge.msdk.foundation.download.database.IDatabaseHelper
public void clear() {
this.handler.post(new Runnable() { // from class: com.mbridge.msdk.foundation.download.database.DatabaseHelper.9
@Override // java.lang.Runnable
public void run() {
if (Objects.isNull(DatabaseHelper.this.database)) {
DatabaseHelper databaseHelper = DatabaseHelper.this;
databaseHelper.database = databaseHelper.databaseOpenHelper.getWritableDatabase();
}
if (Objects.isNull(DatabaseHelper.this.database)) {
return;
}
try {
try {
if (DatabaseHelper.this.database.isOpen()) {
try {
DatabaseHelper.this.database.beginTransaction();
DatabaseHelper.this.database.delete(DatabaseHelper.this.tableName, null, null);
DatabaseHelper.this.database.setTransactionSuccessful();
if (DatabaseHelper.this.database.inTransaction()) {
DatabaseHelper.this.database.endTransaction();
}
} catch (Exception e) {
if (MBridgeConstans.DEBUG) {
e.printStackTrace();
}
if (DatabaseHelper.this.database.inTransaction()) {
DatabaseHelper.this.database.endTransaction();
}
}
}
} catch (Throwable th) {
try {
if (DatabaseHelper.this.database.inTransaction()) {
DatabaseHelper.this.database.endTransaction();
}
} catch (Throwable th2) {
af.b(IDatabaseHelper.TAG, th2.getMessage());
}
throw th;
}
} catch (Throwable th3) {
af.b(IDatabaseHelper.TAG, th3.getMessage());
}
}
});
}
}

View File

@@ -0,0 +1,239 @@
package com.mbridge.msdk.foundation.download.database;
import android.content.ContentValues;
import android.database.Cursor;
import com.mbridge.msdk.foundation.download.DownloadResourceType;
/* loaded from: classes4.dex */
public class DownloadModel {
public static final String CREATE_TABLE = "CREATE TABLE IF NOT EXISTS download_record( id INTEGER PRIMARY KEY AUTOINCREMENT,download_id TEXT,download_url TEXT, resource_url TEXT,etag TEXT, director_path TEXT, file_name TEXT, total_bytes INTEGER, downloaded_bytes INTEGER, last_modified_time INTEGER,download_rate INTEGER,usage_counter INTEGER,download_resource_type INTEGER,from_where INTEGER)";
public static final String DIRECTORY_PATH = "director_path";
public static final String DOWNLOADED_BYTES = "downloaded_bytes";
public static final String DOWNLOAD_ID = "download_id";
public static final String DOWNLOAD_RATE = "download_rate";
public static final String DOWNLOAD_RESOURCE_TYPE = "download_resource_type";
public static final String DOWNLOAD_URL = "download_url";
public static final String ETAG = "etag";
public static final String FILE_NAME = "file_name";
public static final String ID = "id";
public static final String LAST_MODIFIED_TIME = "last_modified_time";
public static final String RESOURCE_FROM = "from_where";
public static final String RESOURCE_URL = "resource_url";
public static final String TABLE_NAME = "download_record";
public static final String TOTAL_BYTES = "total_bytes";
public static final String USAGE_COUNTER = "usage_counter";
private String downloadId;
private int downloadRate;
private DownloadResourceType downloadResourceType;
private String downloadUrl;
private long downloadedBytes;
private String etag;
private int from;
private long lastModifiedTime;
private String resourceUrl;
private String saveDirectorPath;
private String saveFileName;
private long totalBytes;
private long unZipResourceByte;
private String unZipResourceDirectory;
private int usageCounter;
public String getDownloadId() {
return this.downloadId;
}
public int getDownloadRate() {
return this.downloadRate;
}
public DownloadResourceType getDownloadResourceType() {
return this.downloadResourceType;
}
public String getDownloadUrl() {
return this.downloadUrl;
}
public long getDownloadedBytes() {
return this.downloadedBytes;
}
public String getEtag() {
return this.etag;
}
public int getFrom() {
return this.from;
}
public long getLastModifiedTime() {
return this.lastModifiedTime;
}
public String getResourceUrl() {
return this.resourceUrl;
}
public String getSaveDirectorPath() {
return this.saveDirectorPath;
}
public String getSaveFileName() {
return this.saveFileName;
}
public long getTotalBytes() {
return this.totalBytes;
}
public long getUnZipResourceByte() {
return this.unZipResourceByte;
}
public String getUnZipResourceDirectory() {
return this.unZipResourceDirectory;
}
public int getUsageCounter() {
return this.usageCounter;
}
public void setDownloadId(String str) {
this.downloadId = str;
}
public void setDownloadRate(int i) {
this.downloadRate = i;
}
public void setDownloadResourceType(DownloadResourceType downloadResourceType) {
this.downloadResourceType = downloadResourceType;
}
public void setDownloadUrl(String str) {
this.downloadUrl = str;
}
public void setDownloadedBytes(long j) {
this.downloadedBytes = j;
}
public void setEtag(String str) {
this.etag = str;
}
public void setFrom(int i) {
this.from = i;
}
public void setLastModifiedTime(long j) {
this.lastModifiedTime = j;
}
public void setResourceUrl(String str) {
this.resourceUrl = str;
}
public void setSaveDirectorPath(String str) {
this.saveDirectorPath = str;
}
public void setSaveFileName(String str) {
this.saveFileName = str;
}
public void setTotalBytes(long j) {
this.totalBytes = j;
}
public void setUnZipResourceByte(long j) {
this.unZipResourceByte = j;
}
public void setUnZipResourceDirectory(String str) {
this.unZipResourceDirectory = str;
}
public void setUsageCounter(int i) {
this.usageCounter = i;
}
private DownloadModel() {
}
public static DownloadModel create(String str, String str2, String str3, String str4, String str5, String str6, long j, long j2, int i, int i2, DownloadResourceType downloadResourceType, int i3) {
DownloadModel downloadModel = new DownloadModel();
downloadModel.setDownloadId(str);
downloadModel.setDownloadUrl(str2);
downloadModel.setResourceUrl(str3);
downloadModel.setEtag(str4);
downloadModel.setSaveDirectorPath(str5);
downloadModel.setSaveFileName(str6);
downloadModel.setDownloadedBytes(j2);
downloadModel.setTotalBytes(j);
downloadModel.setLastModifiedTime(System.currentTimeMillis());
downloadModel.setUsageCounter(i2);
downloadModel.setDownloadRate(i);
downloadModel.setDownloadResourceType(downloadResourceType);
downloadModel.setUnZipResourceDirectory(null);
downloadModel.setUnZipResourceByte(0L);
downloadModel.setFrom(i3);
return downloadModel;
}
public static DownloadModel create(String str, String str2, String str3, String str4, String str5, String str6, long j, long j2, int i, int i2, DownloadResourceType downloadResourceType) {
DownloadModel downloadModel = new DownloadModel();
downloadModel.setDownloadId(str);
downloadModel.setDownloadUrl(str2);
downloadModel.setResourceUrl(str3);
downloadModel.setEtag(str4);
downloadModel.setSaveDirectorPath(str5);
downloadModel.setSaveFileName(str6);
downloadModel.setDownloadedBytes(j2);
downloadModel.setTotalBytes(j);
downloadModel.setLastModifiedTime(System.currentTimeMillis());
downloadModel.setUsageCounter(i2);
downloadModel.setDownloadRate(i);
downloadModel.setDownloadResourceType(downloadResourceType);
downloadModel.setUnZipResourceDirectory(null);
downloadModel.setUnZipResourceByte(0L);
downloadModel.setFrom(0);
return downloadModel;
}
public static DownloadModel create(Cursor cursor) {
DownloadModel downloadModel = new DownloadModel();
downloadModel.setDownloadId(cursor.getString(cursor.getColumnIndex(DOWNLOAD_ID)));
downloadModel.setDownloadUrl(cursor.getString(cursor.getColumnIndex(DOWNLOAD_URL)));
downloadModel.setResourceUrl(cursor.getString(cursor.getColumnIndex(RESOURCE_URL)));
downloadModel.setEtag(cursor.getString(cursor.getColumnIndex(ETAG)));
downloadModel.setSaveDirectorPath(cursor.getString(cursor.getColumnIndex(DIRECTORY_PATH)));
downloadModel.setSaveFileName(cursor.getString(cursor.getColumnIndex(FILE_NAME)));
downloadModel.setTotalBytes(cursor.getLong(cursor.getColumnIndex(TOTAL_BYTES)));
downloadModel.setDownloadedBytes(cursor.getLong(cursor.getColumnIndex(DOWNLOADED_BYTES)));
downloadModel.setLastModifiedTime(cursor.getLong(cursor.getColumnIndex(LAST_MODIFIED_TIME)));
downloadModel.setDownloadRate(cursor.getInt(cursor.getColumnIndex(DOWNLOAD_RATE)));
downloadModel.setUsageCounter(cursor.getInt(cursor.getColumnIndex(USAGE_COUNTER)));
downloadModel.setDownloadResourceType(DownloadResourceType.getDownloadResourceType(cursor.getInt(cursor.getColumnIndex(DOWNLOAD_RESOURCE_TYPE))));
downloadModel.setFrom(cursor.getInt(cursor.getColumnIndex(RESOURCE_FROM)));
return downloadModel;
}
public static ContentValues create(DownloadModel downloadModel) {
ContentValues contentValues = new ContentValues();
contentValues.put(DOWNLOAD_ID, downloadModel.getDownloadId());
contentValues.put(DOWNLOAD_URL, downloadModel.getDownloadUrl());
contentValues.put(RESOURCE_URL, downloadModel.getResourceUrl());
contentValues.put(ETAG, downloadModel.getEtag());
contentValues.put(DIRECTORY_PATH, downloadModel.getSaveDirectorPath());
contentValues.put(FILE_NAME, downloadModel.getSaveFileName());
contentValues.put(TOTAL_BYTES, Long.valueOf(downloadModel.getTotalBytes()));
contentValues.put(DOWNLOADED_BYTES, Long.valueOf(downloadModel.getDownloadedBytes()));
contentValues.put(LAST_MODIFIED_TIME, Long.valueOf(downloadModel.getLastModifiedTime()));
contentValues.put(DOWNLOAD_RATE, Integer.valueOf(downloadModel.getDownloadRate()));
contentValues.put(USAGE_COUNTER, Integer.valueOf(downloadModel.getUsageCounter()));
contentValues.put(DOWNLOAD_RESOURCE_TYPE, Integer.valueOf(downloadModel.getDownloadResourceType().resourceType));
contentValues.put(RESOURCE_FROM, Integer.valueOf(downloadModel.getFrom()));
return contentValues;
}
}

View File

@@ -0,0 +1,37 @@
package com.mbridge.msdk.foundation.download.database;
import android.database.Cursor;
import java.util.List;
/* loaded from: classes4.dex */
public interface IDatabaseHelper {
public static final String TAG = "DatabaseHelper";
public interface IDatabaseListener {
void onDatabase(DownloadModel downloadModel);
}
void clear();
void find(String str, String str2, IDatabaseListener iDatabaseListener);
List<DownloadModel> findAll();
void findByDownloadUrl(String str, IDatabaseListener iDatabaseListener);
List<DownloadModel> getUnwantedModels(long j);
void insert(DownloadModel downloadModel);
Cursor rawQuery(String str, String[] strArr);
void remove(String str);
void remove(String str, String str2);
void update(DownloadModel downloadModel, String str);
void updateProgress(String str, String str2, DownloadModel downloadModel);
void updateUnzipResource(String str, String str2, long j);
}

View File

@@ -0,0 +1,10 @@
package com.mbridge.msdk.foundation.download.database;
import android.database.sqlite.SQLiteDatabase;
/* loaded from: classes4.dex */
public interface IDatabaseOpenHelper {
SQLiteDatabase getReadableDatabase();
SQLiteDatabase getWritableDatabase();
}

View File

@@ -0,0 +1,130 @@
package com.mbridge.msdk.foundation.download.download;
import android.text.TextUtils;
import com.mbridge.msdk.MBridgeConstans;
import com.mbridge.msdk.foundation.download.download.H5DownLoadManager;
import com.mbridge.msdk.foundation.tools.af;
import java.util.Iterator;
import java.util.concurrent.ConcurrentMap;
import java.util.concurrent.CopyOnWriteArrayList;
/* loaded from: classes4.dex */
public class DownLoadH5SourceListener implements H5DownLoadManager.IOnDownLoadH5Source {
private static String TAG = "DownLoadH5SourceListener";
private CopyOnWriteArrayList<H5DownLoadManager.ZipDownloadListener> listeners;
private ConcurrentMap<String, DownLoadH5SourceListener> mResDownloadingMap;
private String mUrl;
private ResourceManager resourceManager;
@Override // com.mbridge.msdk.foundation.download.download.H5DownLoadManager.IOnDownLoadH5Source
public void onStart() {
}
public DownLoadH5SourceListener(ConcurrentMap<String, DownLoadH5SourceListener> concurrentMap, ResourceManager resourceManager, H5DownLoadManager.ZipDownloadListener zipDownloadListener, String str) {
CopyOnWriteArrayList<H5DownLoadManager.ZipDownloadListener> copyOnWriteArrayList = new CopyOnWriteArrayList<>();
this.listeners = copyOnWriteArrayList;
this.mResDownloadingMap = concurrentMap;
this.resourceManager = resourceManager;
copyOnWriteArrayList.add(zipDownloadListener);
this.mUrl = str;
}
@Override // com.mbridge.msdk.foundation.download.download.H5DownLoadManager.IOnDownLoadH5Source
public void onSuccess(String str, byte[] bArr, String str2) {
ConcurrentMap<String, DownLoadH5SourceListener> concurrentMap;
String str3 = "";
try {
concurrentMap = this.mResDownloadingMap;
} catch (Exception e) {
if (MBridgeConstans.DEBUG) {
e.printStackTrace();
}
try {
str3 = e.getMessage();
} catch (Throwable th) {
af.b(TAG, th.getMessage(), th);
}
}
if (concurrentMap == null) {
Iterator<H5DownLoadManager.ZipDownloadListener> it = this.listeners.iterator();
while (it.hasNext()) {
H5DownLoadManager.ZipDownloadListener next = it.next();
if (next != null) {
next.onFailed(str2, "mResDownloadingMap is null");
this.listeners.remove(next);
}
}
return;
}
if (concurrentMap.containsKey(str2)) {
this.mResDownloadingMap.remove(str2);
}
if (bArr == null || bArr.length <= 0) {
str3 = "response data is error";
} else {
String saveResFile = this.resourceManager.saveResFile(str2, bArr);
if (TextUtils.isEmpty(saveResFile)) {
Iterator<H5DownLoadManager.ZipDownloadListener> it2 = this.listeners.iterator();
while (it2.hasNext()) {
H5DownLoadManager.ZipDownloadListener next2 = it2.next();
if (next2 != null) {
next2.onSuccess(str2, "", false);
this.listeners.remove(next2);
}
}
return;
}
str3 = "data save failed:" + saveResFile;
}
Iterator<H5DownLoadManager.ZipDownloadListener> it3 = this.listeners.iterator();
while (it3.hasNext()) {
H5DownLoadManager.ZipDownloadListener next3 = it3.next();
if (next3 != null) {
next3.onFailed(str2, str3);
}
}
}
@Override // com.mbridge.msdk.foundation.download.download.H5DownLoadManager.IOnDownLoadH5Source
public void onFailed(String str) {
ConcurrentMap<String, DownLoadH5SourceListener> concurrentMap;
try {
concurrentMap = this.mResDownloadingMap;
} catch (Exception e) {
if (MBridgeConstans.DEBUG) {
e.printStackTrace();
}
try {
str = e.getMessage();
} catch (Throwable th) {
af.b(TAG, th.getMessage(), th);
}
}
if (concurrentMap == null) {
Iterator<H5DownLoadManager.ZipDownloadListener> it = this.listeners.iterator();
while (it.hasNext()) {
H5DownLoadManager.ZipDownloadListener next = it.next();
if (next != null) {
next.onFailed(this.mUrl, "mResDownloadingMap is null");
this.listeners.remove(next);
}
}
return;
}
if (concurrentMap.containsKey(this.mUrl)) {
this.mResDownloadingMap.remove(this.mUrl);
}
Iterator<H5DownLoadManager.ZipDownloadListener> it2 = this.listeners.iterator();
while (it2.hasNext()) {
H5DownLoadManager.ZipDownloadListener next2 = it2.next();
if (next2 != null) {
next2.onFailed(this.mUrl, str);
this.listeners.remove(next2);
}
}
}
public void setZipDownloadListener(H5DownLoadManager.ZipDownloadListener zipDownloadListener) {
this.listeners.add(zipDownloadListener);
}
}

View File

@@ -0,0 +1,6 @@
package com.mbridge.msdk.foundation.download.download;
/* loaded from: classes4.dex */
public interface DownLoadTaskSelfProgressListener {
void onProgress(long j, int i);
}

View File

@@ -0,0 +1,53 @@
package com.mbridge.msdk.foundation.download.download;
/* loaded from: classes4.dex */
public class DownLoadUtils {
private static final int DOWNLOAD_CONNECTION_TIME_OUT = 20000;
private static final int DOWNLOAD_READ_TIME_OUT = 30000;
public static final String END_TAG = "<mbridgeloadend></mbridgeloadend>";
private static final String TAG = "DownLoadUtils";
/* JADX WARN: Code restructure failed: missing block: B:11:0x001e, code lost:
r3.onFailed("url is error");
*/
/* JADX WARN: Code restructure failed: missing block: B:12:0x0023, code lost:
return;
*/
/*
Code decompiled incorrectly, please refer to instructions dump.
To view partially-correct add '--show-bad-code' argument
*/
public static void getSourceCodeFromNetUrl(final java.lang.String r2, final com.mbridge.msdk.foundation.download.download.H5DownLoadManager.IOnDownLoadH5Source r3, final boolean r4) {
/*
boolean r0 = com.mbridge.msdk.foundation.tools.ap.a(r2) // Catch: java.lang.Throwable -> L1a
if (r0 != 0) goto L1c
boolean r0 = android.webkit.URLUtil.isNetworkUrl(r2) // Catch: java.lang.Throwable -> L1a
if (r0 != 0) goto Ld
goto L1c
Ld:
com.mbridge.msdk.foundation.download.download.DownloadTask r0 = com.mbridge.msdk.foundation.download.download.DownloadTask.getInstance() // Catch: java.lang.Throwable -> L1a
com.mbridge.msdk.foundation.download.download.DownLoadUtils$1 r1 = new com.mbridge.msdk.foundation.download.download.DownLoadUtils$1 // Catch: java.lang.Throwable -> L1a
r1.<init>() // Catch: java.lang.Throwable -> L1a
r0.runTask(r1) // Catch: java.lang.Throwable -> L1a
goto L2b
L1a:
r2 = move-exception
goto L24
L1c:
if (r3 == 0) goto L23
java.lang.String r2 = "url is error"
r3.onFailed(r2) // Catch: java.lang.Throwable -> L1a
L23:
return
L24:
boolean r3 = com.mbridge.msdk.MBridgeConstans.DEBUG
if (r3 == 0) goto L2b
r2.printStackTrace()
L2b:
return
*/
throw new UnsupportedOperationException("Method not decompiled: com.mbridge.msdk.foundation.download.download.DownLoadUtils.getSourceCodeFromNetUrl(java.lang.String, com.mbridge.msdk.foundation.download.download.H5DownLoadManager$IOnDownLoadH5Source, boolean):void");
}
}

View File

@@ -0,0 +1,38 @@
package com.mbridge.msdk.foundation.download.download;
import com.mbridge.msdk.foundation.controller.c;
import com.mbridge.msdk.foundation.same.e.a;
import com.mbridge.msdk.foundation.same.e.b;
/* loaded from: classes4.dex */
public class DownloadTask {
private b mLoader;
public static class DownloadTaskHolder {
public static DownloadTask instance = new DownloadTask();
private DownloadTaskHolder() {
}
}
private DownloadTask() {
init();
}
private void init() {
if (c.m().c() != null) {
this.mLoader = new b(c.m().c());
}
}
public static DownloadTask getInstance() {
return DownloadTaskHolder.instance;
}
public void runTask(a aVar) {
b bVar = this.mLoader;
if (bVar != null) {
bVar.a(aVar);
}
}
}

View File

@@ -0,0 +1,606 @@
package com.mbridge.msdk.foundation.download.download;
import android.net.Uri;
import android.text.TextUtils;
import android.util.Patterns;
import android.webkit.URLUtil;
import androidx.work.WorkRequest;
import com.mbridge.msdk.MBridgeConstans;
import com.mbridge.msdk.c.g;
import com.mbridge.msdk.c.h;
import com.mbridge.msdk.foundation.controller.c;
import com.mbridge.msdk.foundation.download.DownloadError;
import com.mbridge.msdk.foundation.download.DownloadMessage;
import com.mbridge.msdk.foundation.download.DownloadPriority;
import com.mbridge.msdk.foundation.download.DownloadResourceType;
import com.mbridge.msdk.foundation.download.MBDownloadManager;
import com.mbridge.msdk.foundation.download.OnDownloadStateListener;
import com.mbridge.msdk.foundation.download.resource.MBResourceManager;
import com.mbridge.msdk.foundation.entity.CampaignEx;
import com.mbridge.msdk.foundation.same.b.e;
import com.mbridge.msdk.foundation.same.e.a;
import com.mbridge.msdk.foundation.same.report.d.d;
import com.mbridge.msdk.foundation.tools.SameMD5;
import com.mbridge.msdk.foundation.tools.af;
import com.mbridge.msdk.foundation.tools.an;
import com.mbridge.msdk.foundation.tools.ap;
import com.mbridge.msdk.foundation.tools.aq;
import com.mbridge.msdk.playercommon.exoplayer2.source.chunk.ChunkedTrackBlacklistUtil;
import java.io.IOException;
import java.net.URL;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap;
import java.util.concurrent.CopyOnWriteArrayList;
/* loaded from: classes4.dex */
public class H5DownLoadManager {
public static final String SP_ENDING_PAGE_SAVE_TIME = "ending_page_save_time";
public static final String SP_ENDING_PAGE_SOURCE = "ending_page_source";
private static final String TAG = "H5DownLoadManager";
private static volatile H5DownLoadManager sH5Manager;
private final String DOWN_TYPE = "down_type";
private final String LOCAL_RID = CampaignEx.JSON_KEY_LOCAL_REQUEST_ID;
private HTMLResourceManager htmlResourceManager;
private boolean isUseDownloadModule;
private CopyOnWriteArrayList<String> mResDownloadingList;
private ConcurrentMap<String, DownLoadH5SourceListener> mResDownloadingMap;
private ResourceManager resourceManager;
public interface H5ResDownloadListerInter {
void onFailed(String str, String str2);
void onSuccess(String str, String str2, boolean z);
}
public interface IH5SourceDownloadListener extends H5ResDownloadListerInter {
}
public interface IOnDownLoadH5Source {
void onFailed(String str);
void onStart();
void onSuccess(String str, byte[] bArr, String str2);
}
public interface ZipDownloadListener extends H5ResDownloadListerInter {
}
private H5DownLoadManager() {
this.isUseDownloadModule = false;
try {
this.resourceManager = ResourceManager.getinstance();
this.htmlResourceManager = HTMLResourceManager.getInstance();
this.mResDownloadingList = new CopyOnWriteArrayList<>();
this.mResDownloadingMap = new ConcurrentHashMap();
g b = h.a().b(c.m().k());
if (b != null) {
this.isUseDownloadModule = b.z(1);
}
} catch (Throwable th) {
af.b(TAG, th.getMessage(), th);
}
}
public static H5DownLoadManager getInstance() {
if (sH5Manager == null) {
synchronized (H5DownLoadManager.class) {
try {
if (sH5Manager == null) {
sH5Manager = new H5DownLoadManager();
}
} finally {
}
}
}
return sH5Manager;
}
public void download(com.mbridge.msdk.foundation.same.report.d.c cVar, String str) {
download(cVar, str, null);
}
public void download(com.mbridge.msdk.foundation.same.report.d.c cVar, String str, H5ResDownloadListerInter h5ResDownloadListerInter) {
if (this.isUseDownloadModule) {
downloadHTMLByDownloadModule(str, h5ResDownloadListerInter);
} else {
downloadHTML(cVar, str, h5ResDownloadListerInter);
}
}
private void downloadHTMLByDownloadModule(final String str, final H5ResDownloadListerInter h5ResDownloadListerInter) {
if (TextUtils.isEmpty(str)) {
if (h5ResDownloadListerInter != null) {
h5ResDownloadListerInter.onFailed("zip url is null", str);
return;
}
return;
}
try {
new URL(str);
String str2 = e.a(com.mbridge.msdk.foundation.same.b.c.MBRIDGE_700_HTML) + "/";
String md5 = SameMD5.getMD5(aq.b(str));
MBDownloadManager.getInstance().download(new DownloadMessage<>(new Object(), str, md5 + ".html", 100, DownloadResourceType.DOWNLOAD_RESOURCE_TYPE_HTML)).withTimeout(ChunkedTrackBlacklistUtil.DEFAULT_TRACK_BLACKLIST_MS).withReadTimeout(WorkRequest.DEFAULT_BACKOFF_DELAY_MILLIS).withConnectTimeout(20000L).withDownloadPriority(DownloadPriority.HIGH).withHttpRetryCounter(1).withDirectoryPathInternal(str2).withDownloadStateListener(new OnDownloadStateListener() { // from class: com.mbridge.msdk.foundation.download.download.H5DownLoadManager.1
@Override // com.mbridge.msdk.foundation.download.OnDownloadStateListener
public void onDownloadStart(DownloadMessage downloadMessage) {
af.a(H5DownLoadManager.TAG, "开始下载 html " + downloadMessage.getDownloadUrl() + " " + downloadMessage.getDownloadResourceType());
}
@Override // com.mbridge.msdk.foundation.download.OnDownloadStateListener
public void onDownloadComplete(DownloadMessage downloadMessage) {
af.a(H5DownLoadManager.TAG, "下载结束: " + downloadMessage.getDownloadUrl() + " " + downloadMessage.getDownloadResourceType() + " " + downloadMessage.getSaveFilePath());
H5ResDownloadListerInter h5ResDownloadListerInter2 = h5ResDownloadListerInter;
if (h5ResDownloadListerInter2 != null) {
h5ResDownloadListerInter2.onSuccess(str, "", false);
}
}
@Override // com.mbridge.msdk.foundation.download.OnDownloadStateListener
public void onCancelDownload(DownloadMessage downloadMessage) {
af.a(H5DownLoadManager.TAG, "下载取消: ");
H5ResDownloadListerInter h5ResDownloadListerInter2 = h5ResDownloadListerInter;
if (h5ResDownloadListerInter2 != null) {
h5ResDownloadListerInter2.onFailed(str, "task cancel");
}
}
@Override // com.mbridge.msdk.foundation.download.OnDownloadStateListener
public void onDownloadError(DownloadMessage downloadMessage, DownloadError downloadError) {
af.a(H5DownLoadManager.TAG, "下载结束失败: " + downloadError.getException().getMessage());
H5ResDownloadListerInter h5ResDownloadListerInter2 = h5ResDownloadListerInter;
if (h5ResDownloadListerInter2 != null) {
h5ResDownloadListerInter2.onFailed(str, downloadError.getException().getMessage());
}
}
}).build().start();
} catch (Exception unused) {
if (h5ResDownloadListerInter != null) {
h5ResDownloadListerInter.onFailed("zip url is unlawful", str);
}
}
}
private void downloadHTML(final com.mbridge.msdk.foundation.same.report.d.c cVar, final String str, final H5ResDownloadListerInter h5ResDownloadListerInter) {
try {
af.b(TAG, "download url:" + str);
final com.mbridge.msdk.foundation.same.report.d.e eVar = new com.mbridge.msdk.foundation.same.report.d.e();
eVar.a("scenes", "1");
eVar.a("url", str);
if (cVar != null) {
eVar.a("resource_type", Integer.valueOf(cVar.b()));
}
if (this.mResDownloadingList.contains(str)) {
return;
}
this.mResDownloadingList.add(str);
DownloadTask.getInstance().runTask(new a() { // from class: com.mbridge.msdk.foundation.download.download.H5DownLoadManager.2
@Override // com.mbridge.msdk.foundation.same.e.a
public void cancelTask() {
}
@Override // com.mbridge.msdk.foundation.same.e.a
public void pauseTask(boolean z) {
}
@Override // com.mbridge.msdk.foundation.same.e.a
public void runTask() {
if (!TextUtils.isEmpty(H5DownLoadManager.this.htmlResourceManager.getHtmlContentFromUrl(str))) {
eVar.a("cache", 2);
H5DownLoadManager.this.mResDownloadingList.remove(str);
H5ResDownloadListerInter h5ResDownloadListerInter2 = h5ResDownloadListerInter;
if (h5ResDownloadListerInter2 != null) {
h5ResDownloadListerInter2.onSuccess(str, "", true);
}
cVar.a("m_download_start", eVar);
d.a().a("m_download_start", cVar, (com.mbridge.msdk.foundation.same.report.d.a.a) null);
return;
}
DownLoadUtils.getSourceCodeFromNetUrl(str, new IOnDownLoadH5Source() { // from class: com.mbridge.msdk.foundation.download.download.H5DownLoadManager.2.1
@Override // com.mbridge.msdk.foundation.download.download.H5DownLoadManager.IOnDownLoadH5Source
public void onStart() {
}
@Override // com.mbridge.msdk.foundation.download.download.H5DownLoadManager.IOnDownLoadH5Source
public void onFailed(String str2) {
try {
H5DownLoadManager.this.mResDownloadingList.remove(str);
AnonymousClass2 anonymousClass2 = AnonymousClass2.this;
H5ResDownloadListerInter h5ResDownloadListerInter3 = h5ResDownloadListerInter;
if (h5ResDownloadListerInter3 != null) {
h5ResDownloadListerInter3.onFailed(str, str2);
}
} catch (Exception e) {
if (MBridgeConstans.DEBUG) {
e.printStackTrace();
}
AnonymousClass2 anonymousClass22 = AnonymousClass2.this;
H5ResDownloadListerInter h5ResDownloadListerInter4 = h5ResDownloadListerInter;
if (h5ResDownloadListerInter4 != null) {
h5ResDownloadListerInter4.onFailed(str, str2);
}
}
AnonymousClass2 anonymousClass23 = AnonymousClass2.this;
if (h5ResDownloadListerInter == null) {
eVar.a("result", 3);
AnonymousClass2 anonymousClass24 = AnonymousClass2.this;
cVar.a("m_download_end", eVar);
d.a().a("m_download_end", cVar, (com.mbridge.msdk.foundation.same.report.d.a.a) null);
}
}
@Override // com.mbridge.msdk.foundation.download.download.H5DownLoadManager.IOnDownLoadH5Source
public void onSuccess(String str2, byte[] bArr, String str3) {
try {
H5DownLoadManager.this.mResDownloadingList.remove(str3);
if (bArr == null || bArr.length <= 0) {
return;
}
if (H5DownLoadManager.this.htmlResourceManager.saveResHtmlFile(str3, bArr)) {
AnonymousClass2 anonymousClass2 = AnonymousClass2.this;
H5ResDownloadListerInter h5ResDownloadListerInter3 = h5ResDownloadListerInter;
if (h5ResDownloadListerInter3 != null) {
h5ResDownloadListerInter3.onSuccess(str3, "", false);
return;
}
eVar.a("result", 3);
AnonymousClass2 anonymousClass22 = AnonymousClass2.this;
cVar.a("m_download_end", eVar);
d.a().a("m_download_end", cVar, (com.mbridge.msdk.foundation.same.report.d.a.a) null);
return;
}
AnonymousClass2 anonymousClass23 = AnonymousClass2.this;
H5ResDownloadListerInter h5ResDownloadListerInter4 = h5ResDownloadListerInter;
if (h5ResDownloadListerInter4 != null) {
h5ResDownloadListerInter4.onFailed(str3, "save file failed");
return;
}
eVar.a("result", 3);
AnonymousClass2 anonymousClass24 = AnonymousClass2.this;
cVar.a("m_download_end", eVar);
d.a().a("m_download_end", cVar, (com.mbridge.msdk.foundation.same.report.d.a.a) null);
} catch (Exception e) {
if (MBridgeConstans.DEBUG) {
e.printStackTrace();
}
AnonymousClass2 anonymousClass25 = AnonymousClass2.this;
H5ResDownloadListerInter h5ResDownloadListerInter5 = h5ResDownloadListerInter;
if (h5ResDownloadListerInter5 != null) {
h5ResDownloadListerInter5.onFailed(str3, e.getMessage());
return;
}
eVar.a("result", 3);
AnonymousClass2 anonymousClass26 = AnonymousClass2.this;
cVar.a("m_download_end", eVar);
d.a().a("m_download_end", cVar, (com.mbridge.msdk.foundation.same.report.d.a.a) null);
}
}
}, true);
eVar.a("cache", 1);
cVar.a("m_download_start", eVar);
d.a().a("m_download_start", cVar, (com.mbridge.msdk.foundation.same.report.d.a.a) null);
}
});
} catch (Throwable th) {
if (MBridgeConstans.DEBUG) {
th.printStackTrace();
}
}
}
public void downloadH5Res(com.mbridge.msdk.foundation.same.report.d.c cVar, String str) {
downloadH5Res(cVar, str, null);
}
/* JADX WARN: Removed duplicated region for block: B:12:? A[RETURN, SYNTHETIC] */
/* JADX WARN: Removed duplicated region for block: B:9:0x0047 */
/*
Code decompiled incorrectly, please refer to instructions dump.
To view partially-correct add '--show-bad-code' argument
*/
public void downloadH5Res(com.mbridge.msdk.foundation.same.report.d.c r3, java.lang.String r4, com.mbridge.msdk.foundation.download.download.H5DownLoadManager.H5ResDownloadListerInter r5) {
/*
r2 = this;
com.mbridge.msdk.foundation.same.report.d.d r0 = com.mbridge.msdk.foundation.same.report.d.d.a()
com.mbridge.msdk.foundation.same.report.d.c r3 = r0.b(r3)
java.util.regex.Pattern r0 = android.util.Patterns.WEB_URL // Catch: java.lang.Exception -> L1b
java.util.regex.Matcher r0 = r0.matcher(r4) // Catch: java.lang.Exception -> L1b
boolean r0 = r0.matches() // Catch: java.lang.Exception -> L1b
if (r0 != 0) goto L1d
boolean r0 = android.webkit.URLUtil.isValidUrl(r4) // Catch: java.lang.Exception -> L1b
if (r0 == 0) goto L45
goto L1d
L1b:
r3 = move-exception
goto L42
L1d:
android.net.Uri r0 = android.net.Uri.parse(r4) // Catch: java.lang.Exception -> L1b
java.lang.String r0 = r0.getPath() // Catch: java.lang.Exception -> L1b
boolean r1 = android.text.TextUtils.isEmpty(r0) // Catch: java.lang.Exception -> L1b
if (r1 != 0) goto L45
java.lang.String r0 = r0.toLowerCase() // Catch: java.lang.Exception -> L1b
java.lang.String r1 = ".zip"
boolean r0 = r0.endsWith(r1) // Catch: java.lang.Exception -> L1b
if (r0 == 0) goto L3e
r0 = r5
com.mbridge.msdk.foundation.download.download.H5DownLoadManager$ZipDownloadListener r0 = (com.mbridge.msdk.foundation.download.download.H5DownLoadManager.ZipDownloadListener) r0 // Catch: java.lang.Exception -> L1b
r2.downloadZip(r3, r4, r0) // Catch: java.lang.Exception -> L1b
goto L41
L3e:
r2.download(r3, r4, r5) // Catch: java.lang.Exception -> L1b
L41:
return
L42:
r3.printStackTrace()
L45:
if (r5 == 0) goto L4c
java.lang.String r3 = "The URL does not contain a path "
r5.onFailed(r4, r3)
L4c:
return
*/
throw new UnsupportedOperationException("Method not decompiled: com.mbridge.msdk.foundation.download.download.H5DownLoadManager.downloadH5Res(com.mbridge.msdk.foundation.same.report.d.c, java.lang.String, com.mbridge.msdk.foundation.download.download.H5DownLoadManager$H5ResDownloadListerInter):void");
}
private void downloadZipByDownloadModule(final com.mbridge.msdk.foundation.same.report.d.c cVar, String str, final ZipDownloadListener zipDownloadListener) {
if (TextUtils.isEmpty(str)) {
if (zipDownloadListener != null) {
zipDownloadListener.onFailed(str, "zip url is null");
return;
}
return;
}
try {
new URL(str);
final com.mbridge.msdk.foundation.same.report.d.e eVar = new com.mbridge.msdk.foundation.same.report.d.e();
eVar.a("scenes", "1");
eVar.a("url", str);
if (cVar != null) {
eVar.a("resource_type", Integer.valueOf(cVar.b()));
}
String a = e.a(com.mbridge.msdk.foundation.same.b.c.MBRIDGE_700_RES);
String md5 = SameMD5.getMD5(aq.b(str));
String str2 = a + "/";
final String str3 = a + "/" + md5;
DownloadMessage<?> downloadMessage = new DownloadMessage<>(cVar, str, md5 + ".zip", 100, DownloadResourceType.DOWNLOAD_RESOURCE_TYPE_ZIP);
if (cVar != null) {
downloadMessage.setUseCronetDownload(cVar.n());
}
MBDownloadManager.getInstance().download(downloadMessage).withReadTimeout(WorkRequest.DEFAULT_BACKOFF_DELAY_MILLIS).withConnectTimeout(20000L).withDownloadPriority(DownloadPriority.HIGH).withHttpRetryCounter(1).withDirectoryPathInternal(str2).withTimeout(ChunkedTrackBlacklistUtil.DEFAULT_TRACK_BLACKLIST_MS).withDownloadStateListener(new OnDownloadStateListener() { // from class: com.mbridge.msdk.foundation.download.download.H5DownLoadManager.3
@Override // com.mbridge.msdk.foundation.download.OnDownloadStateListener
public void onDownloadStart(DownloadMessage downloadMessage2) {
af.a(H5DownLoadManager.TAG, "开始下载 zip " + downloadMessage2.getDownloadUrl() + " " + downloadMessage2.getDownloadResourceType());
}
@Override // com.mbridge.msdk.foundation.download.OnDownloadStateListener
public void onDownloadComplete(DownloadMessage downloadMessage2) {
af.a(H5DownLoadManager.TAG, "下载结束,开始解压缩文件: " + downloadMessage2.getDownloadUrl() + " " + downloadMessage2.getDownloadResourceType() + " " + downloadMessage2.getSaveFilePath());
try {
com.mbridge.msdk.foundation.same.report.d.e eVar2 = eVar;
if (eVar2 != null) {
eVar2.a("cache", Integer.valueOf(downloadMessage2.isCache() ? 1 : 2));
}
com.mbridge.msdk.foundation.same.report.d.c cVar2 = cVar;
if (cVar2 != null) {
cVar2.a("m_download_start", eVar);
}
d.a().a("m_download_start", cVar, (com.mbridge.msdk.foundation.same.report.d.a.a) null);
if (TextUtils.isEmpty(ResourceManager.getinstance().getResDirFromCampaign(downloadMessage2.getDownloadUrl()))) {
MBResourceManager.getInstance().unZip(downloadMessage2.getSaveFilePath(), str3);
}
String str4 = "";
try {
str4 = (String) downloadMessage2.getExtra("responseHeaders");
} catch (Throwable th) {
af.b(H5DownLoadManager.TAG, th.getMessage());
}
af.a(H5DownLoadManager.TAG, "下载结束,开始解压缩文件,文件解压成功: " + str3);
ZipDownloadListener zipDownloadListener2 = zipDownloadListener;
if (zipDownloadListener2 != null) {
zipDownloadListener2.onSuccess(downloadMessage2.getDownloadUrl(), str4, downloadMessage2.isCache());
}
} catch (IOException e) {
af.a(H5DownLoadManager.TAG, "下载结束,开始解压缩文件,文件解压失败: " + e.getMessage());
ZipDownloadListener zipDownloadListener3 = zipDownloadListener;
if (zipDownloadListener3 != null) {
zipDownloadListener3.onFailed(downloadMessage2.getDownloadUrl(), e.getMessage());
}
}
}
@Override // com.mbridge.msdk.foundation.download.OnDownloadStateListener
public void onCancelDownload(DownloadMessage downloadMessage2) {
af.a(H5DownLoadManager.TAG, "下载取消: " + downloadMessage2.getDownloadUrl() + " " + downloadMessage2.getDownloadResourceType());
com.mbridge.msdk.foundation.same.report.d.e eVar2 = eVar;
if (eVar2 != null) {
eVar2.a("cache", Integer.valueOf(downloadMessage2.isCache() ? 1 : 2));
}
com.mbridge.msdk.foundation.same.report.d.c cVar2 = cVar;
if (cVar2 != null) {
cVar2.a("m_download_start", eVar);
}
d.a().a("m_download_start", cVar, (com.mbridge.msdk.foundation.same.report.d.a.a) null);
if (TextUtils.isEmpty(ResourceManager.getinstance().getResDirFromCampaign(downloadMessage2.getDownloadUrl()))) {
ZipDownloadListener zipDownloadListener2 = zipDownloadListener;
if (zipDownloadListener2 != null) {
zipDownloadListener2.onFailed(downloadMessage2.getDownloadUrl(), "task cancel");
return;
}
return;
}
ZipDownloadListener zipDownloadListener3 = zipDownloadListener;
if (zipDownloadListener3 != null) {
zipDownloadListener3.onSuccess(downloadMessage2.getDownloadUrl(), "", downloadMessage2.isCache());
}
}
@Override // com.mbridge.msdk.foundation.download.OnDownloadStateListener
public void onDownloadError(DownloadMessage downloadMessage2, DownloadError downloadError) {
af.a(H5DownLoadManager.TAG, "下载错误: " + downloadMessage2.getDownloadUrl() + " " + downloadMessage2.getDownloadResourceType() + " " + downloadError.getException().getMessage());
com.mbridge.msdk.foundation.same.report.d.e eVar2 = eVar;
if (eVar2 != null) {
eVar2.a("cache", Integer.valueOf(downloadMessage2.isCache() ? 1 : 2));
}
com.mbridge.msdk.foundation.same.report.d.c cVar2 = cVar;
if (cVar2 != null) {
cVar2.a("m_download_start", eVar);
}
d.a().a("m_download_start", cVar, (com.mbridge.msdk.foundation.same.report.d.a.a) null);
if (TextUtils.isEmpty(ResourceManager.getinstance().getResDirFromCampaign(downloadMessage2.getDownloadUrl()))) {
ZipDownloadListener zipDownloadListener2 = zipDownloadListener;
if (zipDownloadListener2 != null) {
zipDownloadListener2.onFailed(downloadMessage2.getDownloadUrl(), downloadError.getException().getMessage());
return;
}
return;
}
ZipDownloadListener zipDownloadListener3 = zipDownloadListener;
if (zipDownloadListener3 != null) {
zipDownloadListener3.onSuccess(downloadMessage2.getDownloadUrl(), "", downloadMessage2.isCache());
}
}
}).build().start();
} catch (Exception unused) {
if (zipDownloadListener != null) {
zipDownloadListener.onFailed(str, "zip url is unlawful");
}
}
}
public void downloadZip(com.mbridge.msdk.foundation.same.report.d.c cVar, String str, ZipDownloadListener zipDownloadListener) {
if (this.isUseDownloadModule) {
downloadZipByDownloadModule(cVar, str, zipDownloadListener);
} else {
downloadZipByOldDownloadModule(cVar, str, zipDownloadListener);
}
}
private void downloadZipByOldDownloadModule(com.mbridge.msdk.foundation.same.report.d.c cVar, String str, ZipDownloadListener zipDownloadListener) {
com.mbridge.msdk.foundation.same.report.d.e eVar = new com.mbridge.msdk.foundation.same.report.d.e();
eVar.a("scenes", "1");
eVar.a("url", str);
if (cVar != null) {
eVar.a("resource_type", Integer.valueOf(cVar.b()));
}
try {
if (TextUtils.isEmpty(this.resourceManager.getResDirFromCampaign(str))) {
eVar.a("cache", 2);
if (this.mResDownloadingMap.containsKey(str)) {
DownLoadH5SourceListener downLoadH5SourceListener = this.mResDownloadingMap.get(str);
if (downLoadH5SourceListener != null) {
downLoadH5SourceListener.setZipDownloadListener(zipDownloadListener);
}
if (cVar == null || cVar.a()) {
return;
}
cVar.a("m_download_start", eVar);
d.a().a("m_download_start", cVar, (com.mbridge.msdk.foundation.same.report.d.a.a) null);
return;
}
DownLoadH5SourceListener downLoadH5SourceListener2 = new DownLoadH5SourceListener(this.mResDownloadingMap, this.resourceManager, zipDownloadListener, str);
this.mResDownloadingMap.put(str, downLoadH5SourceListener2);
DownLoadUtils.getSourceCodeFromNetUrl(str, downLoadH5SourceListener2, true);
} else {
eVar.a("cache", 1);
if (zipDownloadListener != null) {
zipDownloadListener.onSuccess(str, "", true);
}
}
if (cVar == null || cVar.a()) {
return;
}
cVar.a("m_download_start", eVar);
d.a().a("m_download_start", cVar, (com.mbridge.msdk.foundation.same.report.d.a.a) null);
} catch (Exception e) {
if (zipDownloadListener != null) {
zipDownloadListener.onFailed(str, "downloadzip failed");
}
if (MBridgeConstans.DEBUG) {
e.printStackTrace();
}
}
}
public void downloadH5Res(String str, H5ResDownloadListerInter h5ResDownloadListerInter) {
downloadH5Res(new com.mbridge.msdk.foundation.same.report.d.c(), str, h5ResDownloadListerInter);
}
public String getH5ResAddress(String str) {
try {
} catch (Exception e) {
e.printStackTrace();
}
if (!Patterns.WEB_URL.matcher(str).matches()) {
if (URLUtil.isValidUrl(str)) {
}
return str;
}
Uri parse = Uri.parse(str);
String path = parse.getPath();
if (TextUtils.isEmpty(path) || !TextUtils.isEmpty(parse.getQueryParameter("urlDebug"))) {
return str;
}
if (path.toLowerCase().endsWith(".zip")) {
return getResAddress(str);
}
return getHtmlAddress(str);
}
public String getResAddress(String str) {
ResourceManager resourceManager = this.resourceManager;
if (resourceManager != null) {
return resourceManager.getResDirFromCampaign(str);
}
return null;
}
private String getHtmlAddress(String str) {
HTMLResourceManager hTMLResourceManager = this.htmlResourceManager;
return hTMLResourceManager != null ? hTMLResourceManager.getHtmlPathFromUrl(str) : str;
}
private long getPreSaveTimeFromSp(String str) {
try {
Object a = an.a(c.m().c(), SP_ENDING_PAGE_SAVE_TIME + str, 0L);
if (a != null && (a instanceof Long)) {
return ((Long) a).longValue();
}
} catch (Exception e) {
e.printStackTrace();
}
return 0L;
}
public String getSourceContentFromSp(String str) {
try {
Object a = an.a(c.m().c(), SP_ENDING_PAGE_SOURCE + str, "");
if (a == null || !(a instanceof String)) {
return null;
}
String str2 = (String) a;
if (ap.b(str2)) {
return str2;
}
return null;
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
private void saveSourceContent(String str, String str2) {
try {
af.c(TAG, "sourceContent:" + str);
an.b(c.m().c(), SP_ENDING_PAGE_SOURCE + str2, str);
} catch (Exception e) {
e.printStackTrace();
}
}
private void updateEndingPageSaveTime(String str) {
try {
an.b(c.m().c(), SP_ENDING_PAGE_SAVE_TIME + str, Long.valueOf(System.currentTimeMillis()));
} catch (Exception e) {
e.printStackTrace();
}
}
}

View File

@@ -0,0 +1,122 @@
package com.mbridge.msdk.foundation.download.download;
import android.text.TextUtils;
import com.mbridge.msdk.MBridgeConstans;
import com.mbridge.msdk.c.g;
import com.mbridge.msdk.c.h;
import com.mbridge.msdk.foundation.same.b.c;
import com.mbridge.msdk.foundation.same.b.e;
import com.mbridge.msdk.foundation.same.d;
import com.mbridge.msdk.foundation.same.e.a;
import com.mbridge.msdk.foundation.tools.SameMD5;
import com.mbridge.msdk.foundation.tools.ad;
import com.mbridge.msdk.foundation.tools.af;
import com.mbridge.msdk.foundation.tools.aq;
import java.io.File;
/* loaded from: classes4.dex */
public class HTMLResourceManager {
public static final int EXPIRE_TIME = 259200000;
private static final String TAG = "HTMLResourceManager";
private String mFileSaveSDDir;
public static class ResourceManagerHolder {
public static HTMLResourceManager instance = new HTMLResourceManager();
private ResourceManagerHolder() {
}
}
private HTMLResourceManager() {
init();
}
public void init() {
this.mFileSaveSDDir = e.a(c.MBRIDGE_700_HTML);
}
public static HTMLResourceManager getInstance() {
return ResourceManagerHolder.instance;
}
public void cleanHtmlRes() {
try {
if (TextUtils.isEmpty(this.mFileSaveSDDir)) {
return;
}
DownloadTask.getInstance().runTask(new a() { // from class: com.mbridge.msdk.foundation.download.download.HTMLResourceManager.1
@Override // com.mbridge.msdk.foundation.same.e.a
public void cancelTask() {
}
@Override // com.mbridge.msdk.foundation.same.e.a
public void pauseTask(boolean z) {
}
@Override // com.mbridge.msdk.foundation.same.e.a
public void runTask() {
ad.a(HTMLResourceManager.this.mFileSaveSDDir);
}
});
} catch (Exception e) {
if (MBridgeConstans.DEBUG) {
e.printStackTrace();
}
}
}
public String getHtmlContentFromUrl(String str) {
try {
File file = new File(this.mFileSaveSDDir + "/" + SameMD5.getMD5(aq.b(str)) + ".html");
if (file.exists()) {
return ad.b(file);
}
return null;
} catch (Throwable th) {
if (!MBridgeConstans.DEBUG) {
return null;
}
th.printStackTrace();
return null;
}
}
public String getHtmlPathFromUrl(String str) {
try {
String str2 = this.mFileSaveSDDir + "/" + SameMD5.getMD5(aq.b(str)) + ".html";
File file = new File(str2);
if (!file.exists()) {
return null;
}
g b = h.a().b(com.mbridge.msdk.foundation.controller.c.m().k());
if (b != null && !TextUtils.isEmpty(b.W())) {
d.a(str, file);
}
return "file:////" + str2;
} catch (Throwable th) {
if (!MBridgeConstans.DEBUG) {
return null;
}
th.printStackTrace();
return null;
}
}
public boolean saveResHtmlFile(String str, byte[] bArr) {
try {
af.c(TAG, "saveResHtmlFile url:" + str);
if (bArr == null || bArr.length <= 0) {
return false;
}
String str2 = this.mFileSaveSDDir + "/" + SameMD5.getMD5(aq.b(str)) + ".html";
af.c(TAG, "saveResHtmlFile folderName:" + str2);
return ad.a(bArr, new File(str2));
} catch (Exception e) {
if (!MBridgeConstans.DEBUG) {
return false;
}
e.printStackTrace();
return false;
}
}
}

View File

@@ -0,0 +1,245 @@
package com.mbridge.msdk.foundation.download.download;
import android.text.TextUtils;
import com.mbridge.msdk.MBridgeConstans;
import com.mbridge.msdk.foundation.controller.c;
import com.mbridge.msdk.foundation.entity.CampaignEx;
import com.mbridge.msdk.foundation.same.b.e;
import com.mbridge.msdk.foundation.same.c.b;
import com.mbridge.msdk.foundation.tools.ad;
import java.io.File;
import java.util.Iterator;
import java.util.List;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.CopyOnWriteArrayList;
/* loaded from: classes4.dex */
public class ResDownloadCheckManager {
private static ConcurrentHashMap<String, Boolean> recordImageMap = new ConcurrentHashMap<>();
private ConcurrentHashMap<String, Boolean> campaignStateMap;
private ConcurrentHashMap<String, Boolean> preLoadSuccessedMap;
private ConcurrentHashMap<String, Boolean> recordVideoMap;
private ConcurrentHashMap<String, Boolean> recordZipMap;
public static final class Holder {
public static ResDownloadCheckManager instance = new ResDownloadCheckManager();
private Holder() {
}
}
private ResDownloadCheckManager() {
this.campaignStateMap = new ConcurrentHashMap<>();
this.preLoadSuccessedMap = new ConcurrentHashMap<>();
this.recordVideoMap = new ConcurrentHashMap<>();
this.recordZipMap = new ConcurrentHashMap<>();
}
public static ResDownloadCheckManager getInstance() {
return Holder.instance;
}
public boolean checkImageState(boolean z, CampaignEx.c cVar) {
List<CampaignEx.c.a> a;
List<String> list;
if (cVar != null && (a = cVar.a()) != null) {
for (CampaignEx.c.a aVar : a) {
if (aVar != null && (list = aVar.a) != null) {
Iterator<String> it = list.iterator();
while (it.hasNext()) {
if (!checkImageUrlState(z, it.next())) {
return false;
}
}
}
}
}
return true;
}
private boolean checkImageUrlState(boolean z, String str) {
boolean checkState = checkState(recordImageMap, str);
if (checkState || b.a(c.m().c()).b(str)) {
return true;
}
return checkState;
}
private boolean checkState(ConcurrentHashMap<String, Boolean> concurrentHashMap, String str) {
if (TextUtils.isEmpty(str)) {
return true;
}
if (concurrentHashMap != null) {
if (concurrentHashMap.containsKey(str)) {
return concurrentHashMap.get(str).booleanValue();
}
concurrentHashMap.put(str, Boolean.FALSE);
return false;
}
new ConcurrentHashMap().put(str, Boolean.FALSE);
return false;
}
public boolean checkPreLoadState(String str) {
if (!TextUtils.isEmpty(str) && this.preLoadSuccessedMap.containsKey(str)) {
return this.preLoadSuccessedMap.get(str).booleanValue();
}
return false;
}
private boolean checkZipState(boolean z, String str) {
boolean checkState = checkState(this.recordZipMap, str);
if (checkState || !z || TextUtils.isEmpty(H5DownLoadManager.getInstance().getH5ResAddress(str))) {
return checkState;
}
this.recordZipMap.put(str, Boolean.TRUE);
return true;
}
public boolean containsVideoKey(String str) {
if (this.recordVideoMap == null || TextUtils.isEmpty(str) || !this.recordVideoMap.containsKey(str)) {
return false;
}
return this.recordVideoMap.get(str).booleanValue();
}
public boolean containsZipKey(String str) {
if (this.recordZipMap == null || TextUtils.isEmpty(str) || !this.recordZipMap.containsKey(str)) {
return false;
}
return this.recordZipMap.get(str).booleanValue();
}
private boolean getIsEffectivePath(String str) {
File file = new File(e.a(com.mbridge.msdk.foundation.same.b.c.MBRIDGE_VC) + File.separator + ad.c(str));
try {
if (file.exists() && file.isFile()) {
return file.canRead();
}
return false;
} catch (Throwable th) {
if (!MBridgeConstans.DEBUG) {
return false;
}
th.printStackTrace();
return false;
}
}
public void removePreLoadState(String str) {
if (this.preLoadSuccessedMap.containsKey(str)) {
this.preLoadSuccessedMap.remove(str);
}
}
public void setCampaignList(CopyOnWriteArrayList<CampaignEx> copyOnWriteArrayList) {
if (copyOnWriteArrayList == null || copyOnWriteArrayList.size() == 0) {
return;
}
Iterator<CampaignEx> it = copyOnWriteArrayList.iterator();
while (it.hasNext()) {
CampaignEx next = it.next();
if (next != null) {
addUrlToMap(next);
updateCampaignState(next.getId(), false);
}
}
}
private void addUrlToMap(CampaignEx campaignEx) {
List<CampaignEx.c.a> a;
ConcurrentHashMap<String, Boolean> concurrentHashMap;
ConcurrentHashMap<String, Boolean> concurrentHashMap2;
if (campaignEx != null) {
String videoUrlEncode = campaignEx.getVideoUrlEncode();
if (!TextUtils.isEmpty(videoUrlEncode) && (concurrentHashMap2 = this.recordVideoMap) != null && !concurrentHashMap2.containsKey(videoUrlEncode)) {
this.recordVideoMap.put(videoUrlEncode, Boolean.FALSE);
}
String str = campaignEx.getendcard_url();
if (!TextUtils.isEmpty(str) && (concurrentHashMap = this.recordZipMap) != null && !concurrentHashMap.containsKey(str)) {
this.recordZipMap.put(str, Boolean.FALSE);
}
CampaignEx.c rewardTemplateMode = campaignEx.getRewardTemplateMode();
if (rewardTemplateMode == null || (a = rewardTemplateMode.a()) == null) {
return;
}
for (CampaignEx.c.a aVar : a) {
if (aVar != null) {
addImageUrlToMap(aVar.a);
}
}
}
}
private void updateCampaignState(String str, boolean z) {
if (this.campaignStateMap == null) {
this.campaignStateMap = new ConcurrentHashMap<>();
}
if (TextUtils.isEmpty(str)) {
return;
}
this.campaignStateMap.put(str, Boolean.valueOf(z));
}
private void addImageUrlToMap(List<String> list) {
ConcurrentHashMap<String, Boolean> concurrentHashMap;
if (list == null || list.size() == 0) {
return;
}
for (String str : list) {
if (!TextUtils.isEmpty(str) && (concurrentHashMap = recordImageMap) != null && !concurrentHashMap.containsKey(str)) {
boolean b = b.a(c.m().c()).b(str);
if (!TextUtils.isEmpty(str)) {
recordImageMap.put(str, Boolean.valueOf(b));
}
}
}
}
public void setCampaignList(CampaignEx campaignEx) {
if (campaignEx != null) {
addUrlToMap(campaignEx);
updateCampaignState(campaignEx.getId(), false);
}
}
public void setImageDownloadDone(String str, boolean z) {
if (recordImageMap == null) {
recordImageMap = new ConcurrentHashMap<>();
}
if (TextUtils.isEmpty(str)) {
return;
}
recordImageMap.put(str, Boolean.valueOf(z));
}
public void setTemplatePreLoadDone(String str, boolean z) {
if (this.preLoadSuccessedMap == null) {
this.preLoadSuccessedMap = new ConcurrentHashMap<>();
}
if (TextUtils.isEmpty(str)) {
return;
}
this.preLoadSuccessedMap.put(str, Boolean.valueOf(z));
}
public void setVideoDownloadDone(String str, boolean z) {
if (this.recordVideoMap == null) {
this.recordVideoMap = new ConcurrentHashMap<>();
}
if (TextUtils.isEmpty(str)) {
return;
}
this.recordVideoMap.put(str, Boolean.valueOf(z));
}
public void setZipDownloadDone(String str, boolean z) {
if (this.recordZipMap == null) {
this.recordZipMap = new ConcurrentHashMap<>();
}
if (TextUtils.isEmpty(str)) {
return;
}
this.recordZipMap.put(str, Boolean.valueOf(z));
}
}

View File

@@ -0,0 +1,161 @@
package com.mbridge.msdk.foundation.download.download;
import android.net.Uri;
import android.text.TextUtils;
import com.mbridge.msdk.MBridgeConstans;
import com.mbridge.msdk.c.g;
import com.mbridge.msdk.c.h;
import com.mbridge.msdk.foundation.same.b.c;
import com.mbridge.msdk.foundation.same.b.e;
import com.mbridge.msdk.foundation.same.d;
import com.mbridge.msdk.foundation.same.e.a;
import com.mbridge.msdk.foundation.tools.SameMD5;
import com.mbridge.msdk.foundation.tools.ac;
import com.mbridge.msdk.foundation.tools.ad;
import com.mbridge.msdk.foundation.tools.af;
import com.mbridge.msdk.foundation.tools.aq;
import com.vungle.ads.internal.model.AdPayload;
import java.io.File;
import java.util.List;
/* loaded from: classes4.dex */
public class ResourceManager {
public static final int EXPIRE_TIME = 259200000;
public static final String KEY_INDEX_HTML = "foldername";
public static final String KEY_MD5CHECK = "nc";
public static final String KEY_MD5FILENAME = "md5filename";
private static String TAG = "ResourceManager";
private String mFileSaveSDDir;
public static class ResourceManagerHolder {
public static ResourceManager instance = new ResourceManager();
private ResourceManagerHolder() {
}
}
private ResourceManager() {
init();
}
public void init() {
this.mFileSaveSDDir = e.a(c.MBRIDGE_700_RES);
}
public static ResourceManager getinstance() {
return ResourceManagerHolder.instance;
}
public void cleanZipRes() {
try {
if (TextUtils.isEmpty(this.mFileSaveSDDir)) {
return;
}
DownloadTask.getInstance().runTask(new a() { // from class: com.mbridge.msdk.foundation.download.download.ResourceManager.1
@Override // com.mbridge.msdk.foundation.same.e.a
public void cancelTask() {
}
@Override // com.mbridge.msdk.foundation.same.e.a
public void pauseTask(boolean z) {
}
@Override // com.mbridge.msdk.foundation.same.e.a
public void runTask() {
ad.a(ResourceManager.this.mFileSaveSDDir);
}
});
} catch (Exception e) {
if (MBridgeConstans.DEBUG) {
e.printStackTrace();
}
}
}
public String getResDirFromCampaign(String str) {
String str2;
String str3 = "";
try {
String str4 = this.mFileSaveSDDir + "/" + SameMD5.getMD5(aq.b(str));
List<String> queryParameters = Uri.parse(str).getQueryParameters(KEY_INDEX_HTML);
af.a(TAG, "check zip 下载情况url:" + str);
af.a(TAG, "check zip 下载情况indexHtml:" + queryParameters);
if (queryParameters == null || queryParameters.size() <= 0) {
return null;
}
String str5 = queryParameters.get(0);
if (TextUtils.isEmpty(str5)) {
return null;
}
String str6 = str4 + "/" + str5 + "/" + str5 + ".html";
if (!ad.d(str6)) {
return null;
}
g b = h.a().b(com.mbridge.msdk.foundation.controller.c.m().k());
if (b != null && !TextUtils.isEmpty(b.W())) {
d.a(str, new File(str6));
}
try {
str2 = str.substring(str.indexOf("?") + 1);
} catch (Exception unused) {
str2 = "";
}
if (!TextUtils.isEmpty(str2)) {
str3 = "?" + str2;
}
return AdPayload.FILE_SCHEME + str6 + str3;
} catch (Exception e) {
if (!MBridgeConstans.DEBUG) {
return null;
}
e.printStackTrace();
return null;
}
}
public synchronized String saveResFile(String str, byte[] bArr) {
String message;
String str2 = "unknow exception ";
if (bArr != null) {
try {
try {
if (bArr.length > 0) {
String str3 = this.mFileSaveSDDir + "/" + SameMD5.getMD5(aq.b(str)) + ".zip";
File file = new File(str3);
if (ad.a(bArr, file)) {
Uri parse = Uri.parse(str);
List<String> queryParameters = parse.getQueryParameters(KEY_MD5CHECK);
if (queryParameters != null && queryParameters.size() != 0) {
str2 = save(str, str3, file);
}
List<String> queryParameters2 = parse.getQueryParameters(KEY_MD5FILENAME);
if (queryParameters2 != null && queryParameters2.size() > 0) {
String str4 = queryParameters2.get(0);
if (!TextUtils.isEmpty(str4) && str4.equals(ac.a(file))) {
str2 = save(str, str3, file);
}
}
}
if (!TextUtils.isEmpty(str2)) {
ad.a(file);
}
}
} catch (Exception e) {
if (MBridgeConstans.DEBUG) {
e.printStackTrace();
}
message = e.getMessage();
}
} catch (Throwable th) {
throw th;
}
}
message = str2;
return message;
}
private String save(String str, String str2, File file) {
String b = ad.b(str2, this.mFileSaveSDDir + "/" + SameMD5.getMD5(aq.b(str)));
return TextUtils.isEmpty(b) ? ad.a(file) : b;
}
}

View File

@@ -0,0 +1,10 @@
package com.mbridge.msdk.foundation.download.resource;
import com.mbridge.msdk.foundation.download.database.IDatabaseHelper;
/* loaded from: classes4.dex */
interface IResourceStrategy {
String getResourceStrategyName();
void processResource(MBResourceManager mBResourceManager, IDatabaseHelper iDatabaseHelper, ResourceConfig resourceConfig);
}

View File

@@ -0,0 +1,132 @@
package com.mbridge.msdk.foundation.download.resource;
import android.text.TextUtils;
import com.mbridge.msdk.foundation.download.core.ExecutorManager;
import com.mbridge.msdk.foundation.download.core.GlobalComponent;
import com.mbridge.msdk.foundation.download.resource.stream.DownloadFileOutputStream;
import com.mbridge.msdk.foundation.download.resource.stream.FileDownloadRandomAccessDownloadFile;
import com.mbridge.msdk.foundation.download.utils.Objects;
import com.mbridge.msdk.foundation.download.utils.UnzipUtility;
import com.mbridge.msdk.foundation.tools.SameMD5;
import com.mbridge.msdk.foundation.tools.ad;
import java.io.File;
import java.io.IOException;
import java.math.BigInteger;
import java.net.URL;
import java.security.MessageDigest;
import java.util.Queue;
/* loaded from: classes4.dex */
public class MBResourceManager {
private static volatile MBResourceManager MBResourceManager;
private MBResourceManager() {
}
public void deleteFile(File file) {
if (file == null || !file.exists()) {
return;
}
if (file.isFile()) {
file.delete();
return;
}
File[] listFiles = file.listFiles();
if (listFiles != null) {
for (File file2 : listFiles) {
deleteFile(new File(file2.getAbsolutePath()));
}
}
file.delete();
}
public void deleteFile(String str) {
deleteFile(new File(str));
}
public void executeResourceStrategy(final ResourceConfig resourceConfig) {
final Queue<ResourceStrategy> resourceStrategyQueue;
if (resourceConfig == null || resourceConfig.getResourceStrategyQueue() == null || resourceConfig.getResourceStrategyQueue().isEmpty() || (resourceStrategyQueue = resourceConfig.getResourceStrategyQueue()) == null || resourceStrategyQueue.isEmpty()) {
return;
}
GlobalComponent.getInstance().getLogger().log("ResourceStrategy", "配置的资源管理策略数量: " + resourceStrategyQueue.size());
ExecutorManager.getInstance().getExecutorSupplier().getLruCacheThreadTasks().execute(new Runnable() { // from class: com.mbridge.msdk.foundation.download.resource.MBResourceManager.1
@Override // java.lang.Runnable
public void run() {
while (true) {
ResourceStrategy resourceStrategy = (ResourceStrategy) resourceStrategyQueue.poll();
if (resourceStrategy == null) {
return;
}
ResourceStrategyExecutor resourceStrategyExecutor = new ResourceStrategyExecutor(resourceStrategy);
GlobalComponent.getInstance().getLogger().log("ResourceStrategy", "执行策略: " + resourceStrategyExecutor.getResourceStrategyName());
MBResourceManager unused = MBResourceManager.MBResourceManager;
resourceStrategyExecutor.processResource(MBResourceManager.getInstance(), GlobalComponent.getInstance().getDatabaseHelper(), resourceConfig);
}
}
});
}
public static MBResourceManager getInstance() {
if (MBResourceManager == null) {
synchronized (MBResourceManager.class) {
try {
if (MBResourceManager == null) {
MBResourceManager = new MBResourceManager();
}
} finally {
}
}
}
return MBResourceManager;
}
public DownloadFileOutputStream getDownloadFileOutputStream(File file) throws IOException {
if (file == null) {
throw new IOException("file is null");
}
if (!file.getParentFile().exists()) {
file.getParentFile().mkdirs();
}
file.createNewFile();
return new FileDownloadRandomAccessDownloadFile(file);
}
public String getDownloadId(String str) {
try {
URL url = new URL(str);
String str2 = url.getProtocol() + "://" + url.getHost() + url.getPath();
MessageDigest messageDigest = MessageDigest.getInstance(SameMD5.TAG);
messageDigest.update(str2.getBytes("UTF-8"));
return new BigInteger(1, messageDigest.digest()).toString(16);
} catch (Exception unused) {
return str;
}
}
public long getFileSize(File file, String str, String str2) {
if (Objects.exists(file, str, str2)) {
try {
return file.length();
} catch (Exception unused) {
}
}
return 0L;
}
public void unZip(String str, String str2) throws IOException {
if (TextUtils.isEmpty(str) || TextUtils.isEmpty(str2)) {
throw new IOException("zipFilePath or destDirectory is null");
}
try {
try {
if (new UnzipUtility().unzip(str, str2) != 0) {
ad.b(str, str2);
}
} catch (Exception unused) {
}
} catch (Exception unused2) {
ad.b(str, str2);
}
}
}

View File

@@ -0,0 +1,106 @@
package com.mbridge.msdk.foundation.download.resource;
import com.mbridge.msdk.foundation.download.DownloadResourceType;
import java.util.ArrayDeque;
import java.util.HashMap;
import java.util.Map;
import java.util.Queue;
/* loaded from: classes4.dex */
public class ResourceConfig {
private long maxStorageSpace;
private Map<String, Long> maxStorageSpacePerResourceType;
private long maxStorageTime;
private Map<String, Long> maxStorageTimePerResourceType;
private Queue<ResourceStrategy> resourceStrategyQueue;
public long getMaxStorageSpace() {
return this.maxStorageSpace;
}
public Map<String, Long> getMaxStorageSpacePerResourceType() {
return this.maxStorageSpacePerResourceType;
}
public long getMaxStorageTime() {
return this.maxStorageTime;
}
public Map<String, Long> getMaxStorageTimePerResourceType() {
return this.maxStorageTimePerResourceType;
}
public Queue<ResourceStrategy> getResourceStrategyQueue() {
return this.resourceStrategyQueue;
}
private ResourceConfig(Builder builder) {
this.maxStorageSpace = builder.maxStorageSpace;
this.maxStorageTime = builder.maxStorageTime;
this.maxStorageSpacePerResourceType = builder.maxStorageSpacePerResourceType;
this.maxStorageTimePerResourceType = builder.maxStorageTimePerResourceType;
this.resourceStrategyQueue = builder.resourceStrategyQueue;
}
public long getMaxStorageSpace(DownloadResourceType downloadResourceType) {
Map<String, Long> map = this.maxStorageSpacePerResourceType;
if (map == null || !map.containsKey(downloadResourceType.name())) {
return 0L;
}
return this.maxStorageSpacePerResourceType.get(downloadResourceType.name()).longValue();
}
public long getMaxStorageTime(DownloadResourceType downloadResourceType) {
Map<String, Long> map = this.maxStorageTimePerResourceType;
if (map == null || !map.containsKey(downloadResourceType.name())) {
return 0L;
}
return this.maxStorageTimePerResourceType.get(downloadResourceType.name()).longValue();
}
public static class Builder {
private long maxStorageSpace;
private Map<String, Long> maxStorageSpacePerResourceType;
private long maxStorageTime;
private Map<String, Long> maxStorageTimePerResourceType;
private Queue<ResourceStrategy> resourceStrategyQueue;
public Builder setMaxStorageSpace(long j) {
this.maxStorageSpace = j;
return this;
}
public Builder setMaxStorageTime(long j) {
this.maxStorageTime = j;
return this;
}
public Builder addMaxStorageSpace(DownloadResourceType downloadResourceType, long j) {
if (this.maxStorageSpacePerResourceType == null) {
this.maxStorageSpacePerResourceType = new HashMap();
}
this.maxStorageSpacePerResourceType.put(downloadResourceType.name(), Long.valueOf(j));
return this;
}
public Builder addMaxStorageTime(DownloadResourceType downloadResourceType, long j) {
if (this.maxStorageTimePerResourceType == null) {
this.maxStorageTimePerResourceType = new HashMap();
}
this.maxStorageTimePerResourceType.put(downloadResourceType.name(), Long.valueOf(j));
return this;
}
public Builder addResourceStrategy(ResourceStrategy resourceStrategy) {
if (this.resourceStrategyQueue == null) {
this.resourceStrategyQueue = new ArrayDeque();
}
this.resourceStrategyQueue.add(resourceStrategy);
return this;
}
public ResourceConfig build() {
return new ResourceConfig(this);
}
}
}

View File

@@ -0,0 +1,6 @@
package com.mbridge.msdk.foundation.download.resource;
/* loaded from: classes4.dex */
public abstract class ResourceStrategy implements IResourceStrategy {
protected static final String TAG = "ResourceStrategy";
}

View File

@@ -0,0 +1,29 @@
package com.mbridge.msdk.foundation.download.resource;
import com.mbridge.msdk.foundation.download.database.IDatabaseHelper;
/* loaded from: classes4.dex */
class ResourceStrategyExecutor implements IResourceStrategy {
private ResourceStrategy resourceStrategy;
public ResourceStrategyExecutor(ResourceStrategy resourceStrategy) {
this.resourceStrategy = resourceStrategy;
}
@Override // com.mbridge.msdk.foundation.download.resource.IResourceStrategy
public String getResourceStrategyName() {
return this.resourceStrategy.getResourceStrategyName();
}
@Override // com.mbridge.msdk.foundation.download.resource.IResourceStrategy
public void processResource(MBResourceManager mBResourceManager, IDatabaseHelper iDatabaseHelper, ResourceConfig resourceConfig) {
ResourceStrategy resourceStrategy = this.resourceStrategy;
if (resourceStrategy != null) {
try {
resourceStrategy.processResource(mBResourceManager, iDatabaseHelper, resourceConfig);
} catch (Exception e) {
e.printStackTrace();
}
}
}
}

View File

@@ -0,0 +1,16 @@
package com.mbridge.msdk.foundation.download.resource.stream;
import java.io.IOException;
/* loaded from: classes4.dex */
public interface DownloadFileOutputStream {
void close() throws IOException;
void flushAndSync() throws IOException;
void seek(long j) throws IOException, IllegalAccessException;
void setLength(long j) throws IOException, IllegalAccessException;
void write(byte[] bArr, int i, int i2) throws IOException;
}

View File

@@ -0,0 +1,53 @@
package com.mbridge.msdk.foundation.download.resource.stream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileDescriptor;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.RandomAccessFile;
/* loaded from: classes4.dex */
public class FileDownloadRandomAccessDownloadFile implements DownloadFileOutputStream {
private final BufferedOutputStream bufferedOutputStream;
private final FileDescriptor fileDescriptor;
private final RandomAccessFile randomAccess;
public FileDownloadRandomAccessDownloadFile(File file) throws IOException {
RandomAccessFile randomAccessFile = new RandomAccessFile(file, "rw");
this.randomAccess = randomAccessFile;
this.fileDescriptor = randomAccessFile.getFD();
this.bufferedOutputStream = new BufferedOutputStream(new FileOutputStream(randomAccessFile.getFD()));
}
public static DownloadFileOutputStream create(File file) throws IOException {
return new FileDownloadRandomAccessDownloadFile(file);
}
@Override // com.mbridge.msdk.foundation.download.resource.stream.DownloadFileOutputStream
public void close() throws IOException {
this.bufferedOutputStream.close();
this.randomAccess.close();
}
@Override // com.mbridge.msdk.foundation.download.resource.stream.DownloadFileOutputStream
public void flushAndSync() throws IOException {
this.bufferedOutputStream.flush();
this.fileDescriptor.sync();
}
@Override // com.mbridge.msdk.foundation.download.resource.stream.DownloadFileOutputStream
public void seek(long j) throws IOException {
this.randomAccess.seek(j);
}
@Override // com.mbridge.msdk.foundation.download.resource.stream.DownloadFileOutputStream
public void setLength(long j) throws IOException {
this.randomAccess.setLength(j);
}
@Override // com.mbridge.msdk.foundation.download.resource.stream.DownloadFileOutputStream
public void write(byte[] bArr, int i, int i2) throws IOException {
this.bufferedOutputStream.write(bArr, i, i2);
}
}

View File

@@ -0,0 +1,8 @@
package com.mbridge.msdk.foundation.download.utils;
/* loaded from: classes4.dex */
public interface ILogger {
void log(String str, Exception exc);
void log(String str, String str2);
}

View File

@@ -0,0 +1,97 @@
package com.mbridge.msdk.foundation.download.utils;
import android.text.TextUtils;
import com.mbridge.msdk.foundation.download.resource.stream.DownloadFileOutputStream;
import com.mbridge.msdk.foundation.tools.af;
import com.mbridge.msdk.thrid.okhttp.Response;
import com.mbridge.msdk.thrid.okhttp.ResponseBody;
import java.io.File;
import java.io.FileFilter;
import java.io.InputStream;
import java.util.Arrays;
/* loaded from: classes4.dex */
public class Objects {
public static boolean isNull(Object obj) {
return obj == null;
}
public static void closeInputStream(InputStream inputStream) {
if (inputStream == null) {
return;
}
try {
inputStream.close();
} catch (Exception e) {
af.a("closeStream", e.getLocalizedMessage());
}
}
public static void closeOutputStream(DownloadFileOutputStream downloadFileOutputStream) {
if (downloadFileOutputStream == null) {
return;
}
try {
downloadFileOutputStream.close();
} catch (Exception e) {
af.a("closeStream", e.getLocalizedMessage());
}
}
public static void closeResponse(Response response) {
if (response == null) {
return;
}
try {
if (response.body() != null) {
response.body().close();
}
response.close();
} catch (Exception e) {
af.a("closeStream", e.getLocalizedMessage());
}
}
public static void closeResponseBody(ResponseBody responseBody) {
if (responseBody == null) {
return;
}
try {
responseBody.close();
} catch (Exception e) {
af.a("closeStream", e.getLocalizedMessage());
}
}
public static boolean exists(File file, String str, String str2) {
if (file == null || TextUtils.isEmpty(str)) {
return false;
}
boolean exists = file.exists();
return !exists ? doubleCheckExists(file, str, str2) : exists;
}
private static boolean doubleCheckExists(File file, final String str, final String str2) {
File[] fileArr;
try {
fileArr = file.getParentFile().listFiles(new FileFilter() { // from class: com.mbridge.msdk.foundation.download.utils.Objects.1
@Override // java.io.FileFilter
public boolean accept(File file2) {
return TextUtils.equals(file2.getAbsolutePath(), str + str2);
}
});
} catch (Exception e) {
af.a("doubleCheckExists", e.getLocalizedMessage());
fileArr = null;
}
return fileArr != null && file.length() > 0;
}
public static int hash(Object... objArr) {
return Arrays.hashCode(objArr);
}
public static boolean isNotNull(Object obj) {
return !isNull(obj);
}
}

View File

@@ -0,0 +1,89 @@
package com.mbridge.msdk.foundation.download.utils;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.zip.ZipInputStream;
/* loaded from: classes4.dex */
public class UnzipUtility {
private static final int BUFFER_SIZE = 4096;
private static final String TAG = "UnzipUtility";
private void extractFile(ZipInputStream zipInputStream, String str) throws IOException {
BufferedOutputStream bufferedOutputStream;
File file = new File(str);
if (!file.getParentFile().exists()) {
file.getParentFile().mkdirs();
}
BufferedOutputStream bufferedOutputStream2 = null;
try {
try {
bufferedOutputStream = new BufferedOutputStream(new FileOutputStream(file));
} catch (Throwable th) {
th = th;
}
} catch (IOException e) {
e = e;
}
try {
byte[] bArr = new byte[4096];
while (true) {
int read = zipInputStream.read(bArr);
if (read != -1) {
bufferedOutputStream.write(bArr, 0, read);
} else {
bufferedOutputStream.close();
return;
}
}
} catch (IOException e2) {
e = e2;
throw new IOException(e);
} catch (Throwable th2) {
th = th2;
bufferedOutputStream2 = bufferedOutputStream;
if (bufferedOutputStream2 != null) {
bufferedOutputStream2.close();
}
throw th;
}
}
/* JADX WARN: Code restructure failed: missing block: B:105:0x00fe, code lost:
r14.close();
*/
/* JADX WARN: Code restructure failed: missing block: B:107:0x0102, code lost:
r14 = move-exception;
*/
/* JADX WARN: Code restructure failed: missing block: B:108:0x0103, code lost:
com.mbridge.msdk.foundation.tools.af.b(com.mbridge.msdk.foundation.download.utils.UnzipUtility.TAG, r14.getMessage());
*/
/* JADX WARN: Code restructure failed: missing block: B:125:0x011b, code lost:
r14.close();
*/
/* JADX WARN: Code restructure failed: missing block: B:127:0x011f, code lost:
r14 = move-exception;
*/
/* JADX WARN: Code restructure failed: missing block: B:128:0x0120, code lost:
com.mbridge.msdk.foundation.tools.af.b(com.mbridge.msdk.foundation.download.utils.UnzipUtility.TAG, r14.getMessage());
*/
/*
Code decompiled incorrectly, please refer to instructions dump.
To view partially-correct add '--show-bad-code' argument
*/
public int unzip(java.lang.String r14, java.lang.String r15) throws java.io.IOException {
/*
Method dump skipped, instructions count: 414
To view this dump add '--comments-level debug' option
*/
throw new UnsupportedOperationException("Method not decompiled: com.mbridge.msdk.foundation.download.utils.UnzipUtility.unzip(java.lang.String, java.lang.String):int");
}
}

View File

@@ -0,0 +1,17 @@
package com.mbridge.msdk.foundation.download.utils;
/* loaded from: classes4.dex */
public final class Utils {
public static int getDownloadRate(long j, long j2) {
if (j == 0 || j2 == 0) {
return 0;
}
if (j == j2) {
return 100;
}
return (int) (((j2 * 1.0d) / (j * 1.0d)) * 100.0d);
}
private Utils() {
}
}