Initial commit

This commit is contained in:
2025-05-13 19:24:51 +02:00
commit a950f49678
10604 changed files with 932663 additions and 0 deletions

View File

@@ -0,0 +1,106 @@
package com.unity3d.ads.cache;
import android.content.Context;
import android.os.Build;
import android.os.Environment;
import com.unity3d.ads.log.DeviceLog;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
/* loaded from: classes2.dex */
public class CacheDirectory {
private static final String TEST_FILE_NAME = "UnityAdsTest.txt";
private String _cacheDirName;
private boolean _initialized = false;
private File _cacheDirectory = null;
private CacheDirectoryType _type = null;
public CacheDirectory(String str) {
this._cacheDirName = str;
}
public File createCacheDirectory(File file, String str) {
if (file == null) {
return null;
}
File file2 = new File(file, str);
file2.mkdirs();
if (file2.isDirectory()) {
return file2;
}
return null;
}
public File getCacheDirectory(Context context) {
File file;
if (this._initialized) {
return this._cacheDirectory;
}
this._initialized = true;
if (Build.VERSION.SDK_INT > 18) {
if ("mounted".equals(Environment.getExternalStorageState())) {
try {
file = createCacheDirectory(context.getExternalCacheDir(), this._cacheDirName);
} catch (Exception e) {
DeviceLog.exception("Creating external cache directory failed", e);
file = null;
}
if (testCacheDirectory(file)) {
this._cacheDirectory = file;
this._type = CacheDirectoryType.EXTERNAL;
DeviceLog.debug("Unity Ads is using external cache directory: " + file.getAbsolutePath());
return this._cacheDirectory;
}
} else {
DeviceLog.debug("External media not mounted");
}
}
File filesDir = context.getFilesDir();
if (!testCacheDirectory(filesDir)) {
DeviceLog.error("Unity Ads failed to initialize cache directory");
return null;
}
this._cacheDirectory = filesDir;
this._type = CacheDirectoryType.INTERNAL;
DeviceLog.debug("Unity Ads is using internal cache directory: " + filesDir.getAbsolutePath());
return this._cacheDirectory;
}
public CacheDirectoryType getType() {
return this._type;
}
public boolean testCacheDirectory(File file) {
if (file != null && file.isDirectory()) {
try {
byte[] bytes = "test".getBytes("UTF-8");
byte[] bArr = new byte[bytes.length];
File file2 = new File(file, TEST_FILE_NAME);
FileOutputStream fileOutputStream = new FileOutputStream(file2);
fileOutputStream.write(bytes);
fileOutputStream.flush();
fileOutputStream.close();
FileInputStream fileInputStream = new FileInputStream(file2);
int read = fileInputStream.read(bArr, 0, bArr.length);
fileInputStream.close();
if (!file2.delete()) {
DeviceLog.debug("Failed to delete testfile " + file2.getAbsoluteFile());
return false;
}
if (read != bArr.length) {
DeviceLog.debug("Read buffer size mismatch");
return false;
}
if (new String(bArr, "UTF-8").equals("test")) {
return true;
}
DeviceLog.debug("Read buffer content mismatch");
return false;
} catch (Exception e) {
DeviceLog.debug("Unity Ads exception while testing cache directory " + file.getAbsolutePath() + ": " + e.getMessage());
}
}
return false;
}
}

View File

@@ -0,0 +1,7 @@
package com.unity3d.ads.cache;
/* loaded from: classes2.dex */
public enum CacheDirectoryType {
EXTERNAL,
INTERNAL
}

View File

@@ -0,0 +1,21 @@
package com.unity3d.ads.cache;
/* loaded from: classes2.dex */
public enum CacheError {
FILE_IO_ERROR,
FILE_NOT_FOUND,
FILE_ALREADY_CACHING,
NOT_CACHING,
JSON_ERROR,
NO_INTERNET,
MALFORMED_URL,
NETWORK_ERROR,
ILLEGAL_STATE,
INVALID_ARGUMENT,
UNSUPPORTED_ENCODING,
FILE_STATE_WRONG,
CACHE_DIRECTORY_NULL,
CACHE_DIRECTORY_TYPE_NULL,
CACHE_DIRECTORY_EXISTS,
CACHE_DIRECTORY_DOESNT_EXIST
}

View File

@@ -0,0 +1,10 @@
package com.unity3d.ads.cache;
/* loaded from: classes2.dex */
public enum CacheEvent {
DOWNLOAD_STARTED,
DOWNLOAD_PROGRESS,
DOWNLOAD_END,
DOWNLOAD_STOPPED,
DOWNLOAD_ERROR
}

View File

@@ -0,0 +1,109 @@
package com.unity3d.ads.cache;
import android.os.Bundle;
import android.os.Looper;
import android.os.Message;
import com.tencent.open.SocialConstants;
import com.unity3d.ads.log.DeviceLog;
import java.util.HashMap;
import java.util.List;
/* loaded from: classes2.dex */
public class CacheThread extends Thread {
public static final int MSG_DOWNLOAD = 1;
private static int _connectTimeout = 30000;
private static CacheThreadHandler _handler = null;
private static int _progressInterval = 0;
private static int _readTimeout = 30000;
private static boolean _ready = false;
private static final Object _readyLock = new Object();
public static void cancel() {
if (_ready) {
_handler.removeMessages(1);
_handler.setCancelStatus(true);
}
}
public static synchronized void download(String str, String str2, HashMap<String, List<String>> hashMap, boolean z) {
synchronized (CacheThread.class) {
if (!_ready) {
init();
}
Bundle bundle = new Bundle();
bundle.putString(SocialConstants.PARAM_SOURCE, str);
bundle.putString("target", str2);
bundle.putInt("connectTimeout", _connectTimeout);
bundle.putInt("readTimeout", _readTimeout);
bundle.putInt("progressInterval", _progressInterval);
bundle.putBoolean("append", z);
if (hashMap != null) {
for (String str3 : hashMap.keySet()) {
bundle.putStringArray(str3, (String[]) hashMap.get(str3).toArray(new String[hashMap.get(str3).size()]));
}
}
Message message = new Message();
message.what = 1;
message.setData(bundle);
_handler.setCancelStatus(false);
_handler.sendMessage(message);
}
}
public static int getConnectTimeout() {
return _connectTimeout;
}
public static int getProgressInterval() {
return _progressInterval;
}
public static int getReadTimeout() {
return _readTimeout;
}
private static void init() {
CacheThread cacheThread = new CacheThread();
cacheThread.setName("UnityAdsCacheThread");
cacheThread.start();
while (!_ready) {
try {
synchronized (_readyLock) {
_readyLock.wait();
}
} catch (InterruptedException unused) {
DeviceLog.debug("Couldn't synchronize thread");
}
}
}
public static boolean isActive() {
if (_ready) {
return _handler.isActive();
}
return false;
}
public static void setConnectTimeout(int i) {
_connectTimeout = i;
}
public static void setProgressInterval(int i) {
_progressInterval = i;
}
public static void setReadTimeout(int i) {
_readTimeout = i;
}
@Override // java.lang.Thread, java.lang.Runnable
public void run() {
Looper.prepare();
_handler = new CacheThreadHandler();
_ready = true;
synchronized (_readyLock) {
_readyLock.notify();
}
Looper.loop();
}
}

View File

@@ -0,0 +1,183 @@
package com.unity3d.ads.cache;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.os.SystemClock;
import com.tencent.open.SocialConstants;
import com.unity3d.ads.api.Request;
import com.unity3d.ads.log.DeviceLog;
import com.unity3d.ads.request.WebRequest;
import com.unity3d.ads.webview.WebViewApp;
import com.unity3d.ads.webview.WebViewEventCategory;
import java.io.File;
import java.net.MalformedURLException;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/* loaded from: classes2.dex */
class CacheThreadHandler extends Handler {
private WebRequest _currentRequest = null;
private boolean _canceled = false;
private boolean _active = false;
CacheThreadHandler() {
}
/* JADX WARN: Multi-variable type inference failed */
/* JADX WARN: Removed duplicated region for block: B:101:? A[SYNTHETIC] */
/* JADX WARN: Removed duplicated region for block: B:94:0x0319 A[EXC_TOP_SPLITTER, SYNTHETIC] */
/* JADX WARN: Type inference failed for: r0v16, types: [com.unity3d.ads.webview.WebViewApp] */
/* JADX WARN: Type inference failed for: r0v20, types: [com.unity3d.ads.webview.WebViewApp] */
/* JADX WARN: Type inference failed for: r0v24, types: [com.unity3d.ads.webview.WebViewApp] */
/* JADX WARN: Type inference failed for: r0v28, types: [com.unity3d.ads.webview.WebViewApp] */
/* JADX WARN: Type inference failed for: r0v32, types: [com.unity3d.ads.webview.WebViewApp] */
/* JADX WARN: Type inference failed for: r14v10, types: [com.unity3d.ads.request.WebRequest] */
/* JADX WARN: Type inference failed for: r14v11, types: [com.unity3d.ads.request.WebRequest] */
/* JADX WARN: Type inference failed for: r14v12, types: [com.unity3d.ads.request.WebRequest] */
/* JADX WARN: Type inference failed for: r14v13, types: [com.unity3d.ads.request.WebRequest] */
/* JADX WARN: Type inference failed for: r14v15, types: [com.unity3d.ads.request.WebRequest] */
/* JADX WARN: Type inference failed for: r14v2 */
/* JADX WARN: Type inference failed for: r14v3 */
/* JADX WARN: Type inference failed for: r14v30 */
/* JADX WARN: Type inference failed for: r14v4 */
/* JADX WARN: Type inference failed for: r14v47 */
/* JADX WARN: Type inference failed for: r14v49 */
/* JADX WARN: Type inference failed for: r14v5 */
/* JADX WARN: Type inference failed for: r14v51 */
/* JADX WARN: Type inference failed for: r14v53 */
/* JADX WARN: Type inference failed for: r14v55 */
/* JADX WARN: Type inference failed for: r14v56 */
/* JADX WARN: Type inference failed for: r14v6 */
/* JADX WARN: Type inference failed for: r14v9, types: [com.unity3d.ads.request.WebRequest] */
/* JADX WARN: Type inference failed for: r3v14, types: [java.lang.StringBuilder] */
/* JADX WARN: Type inference failed for: r4v0, types: [java.lang.String] */
/* JADX WARN: Type inference failed for: r4v13, types: [java.lang.Object[]] */
/* JADX WARN: Type inference failed for: r4v15, types: [java.lang.Object[]] */
/* JADX WARN: Type inference failed for: r4v17, types: [java.lang.Object[]] */
/* JADX WARN: Type inference failed for: r4v19, types: [java.lang.Object[]] */
/* JADX WARN: Type inference failed for: r4v22, types: [java.lang.Object[]] */
/* JADX WARN: Type inference failed for: r4v47, types: [java.lang.String] */
/* JADX WARN: Type inference failed for: r6v1 */
/* JADX WARN: Type inference failed for: r6v10, types: [boolean] */
/* JADX WARN: Type inference failed for: r6v11, types: [boolean] */
/* JADX WARN: Type inference failed for: r6v12, types: [boolean] */
/* JADX WARN: Type inference failed for: r6v13, types: [boolean] */
/* JADX WARN: Type inference failed for: r6v14 */
/* JADX WARN: Type inference failed for: r6v15, types: [boolean] */
/* JADX WARN: Type inference failed for: r6v2 */
/* JADX WARN: Type inference failed for: r6v3 */
/* JADX WARN: Type inference failed for: r6v37, types: [long] */
/* JADX WARN: Type inference failed for: r6v38 */
/* JADX WARN: Type inference failed for: r6v39 */
/* JADX WARN: Type inference failed for: r6v4 */
/* JADX WARN: Type inference failed for: r6v40 */
/* JADX WARN: Type inference failed for: r6v41 */
/* JADX WARN: Type inference failed for: r6v42 */
/* JADX WARN: Type inference failed for: r6v43 */
/* JADX WARN: Type inference failed for: r6v44 */
/* JADX WARN: Type inference failed for: r6v45 */
/* JADX WARN: Type inference failed for: r6v46 */
/* JADX WARN: Type inference failed for: r6v47 */
/* JADX WARN: Type inference failed for: r6v48 */
/* JADX WARN: Type inference failed for: r6v49 */
/* JADX WARN: Type inference failed for: r6v5 */
/* JADX WARN: Type inference failed for: r6v50 */
/* JADX WARN: Type inference failed for: r6v51 */
/* JADX WARN: Type inference failed for: r6v52 */
/* JADX WARN: Type inference failed for: r6v53 */
/* JADX WARN: Type inference failed for: r6v54 */
/* JADX WARN: Type inference failed for: r6v55 */
/* JADX WARN: Type inference failed for: r6v56 */
/* JADX WARN: Type inference failed for: r6v57 */
/* JADX WARN: Type inference failed for: r6v6 */
/* JADX WARN: Type inference failed for: r6v7 */
/* JADX WARN: Type inference failed for: r6v8 */
/*
Code decompiled incorrectly, please refer to instructions dump.
To view partially-correct code enable 'Show inconsistent code' option in preferences
*/
private void downloadFile(java.lang.String r24, java.lang.String r25, int r26, int r27, final int r28, java.util.HashMap<java.lang.String, java.util.List<java.lang.String>> r29, boolean r30) {
/*
Method dump skipped, instructions count: 829
To view this dump change 'Code comments level' option to 'DEBUG'
*/
throw new UnsupportedOperationException("Method not decompiled: com.unity3d.ads.cache.CacheThreadHandler.downloadFile(java.lang.String, java.lang.String, int, int, int, java.util.HashMap, boolean):void");
}
private WebRequest getWebRequest(String str, int i, int i2, HashMap<String, List<String>> hashMap) throws MalformedURLException {
HashMap hashMap2 = new HashMap();
if (hashMap != null) {
hashMap2.putAll(hashMap);
}
return new WebRequest(str, "GET", hashMap2, i, i2);
}
private void postProcessDownload(long j, String str, File file, long j2, long j3, boolean z, int i, Map<String, List<String>> map) {
long elapsedRealtime = SystemClock.elapsedRealtime() - j;
if (!file.setReadable(true, false)) {
DeviceLog.debug("Unity Ads cache: could not set file readable!");
}
if (z) {
DeviceLog.debug("Unity Ads cache: downloading of " + str + " stopped");
WebViewApp.getCurrentApp().sendEvent(WebViewEventCategory.CACHE, CacheEvent.DOWNLOAD_STOPPED, str, Long.valueOf(j2), Long.valueOf(j3), Long.valueOf(elapsedRealtime), Integer.valueOf(i), Request.getResponseHeadersMap(map));
return;
}
DeviceLog.debug("Unity Ads cache: File " + file.getName() + " of " + j2 + " bytes downloaded in " + elapsedRealtime + "ms");
WebViewApp.getCurrentApp().sendEvent(WebViewEventCategory.CACHE, CacheEvent.DOWNLOAD_END, str, Long.valueOf(j2), Long.valueOf(j3), Long.valueOf(elapsedRealtime), Integer.valueOf(i), Request.getResponseHeadersMap(map));
}
@Override // android.os.Handler
public void handleMessage(Message message) {
HashMap<String, List<String>> hashMap;
Bundle data = message.getData();
String string = data.getString(SocialConstants.PARAM_SOURCE);
data.remove(SocialConstants.PARAM_SOURCE);
String string2 = data.getString("target");
data.remove("target");
int i = data.getInt("connectTimeout");
data.remove("connectTimeout");
int i2 = data.getInt("readTimeout");
data.remove("readTimeout");
int i3 = data.getInt("progressInterval");
data.remove("progressInterval");
boolean z = data.getBoolean("append", false);
data.remove("append");
if (data.size() > 0) {
DeviceLog.debug("There are headers left in data, reading them");
HashMap<String, List<String>> hashMap2 = new HashMap<>();
for (String str : data.keySet()) {
hashMap2.put(str, Arrays.asList(data.getStringArray(str)));
}
hashMap = hashMap2;
} else {
hashMap = null;
}
File file = new File(string2);
if ((z && !file.exists()) || (!z && file.exists())) {
this._active = false;
WebViewApp.getCurrentApp().sendEvent(WebViewEventCategory.CACHE, CacheEvent.DOWNLOAD_ERROR, CacheError.FILE_STATE_WRONG, string, string2, Boolean.valueOf(z), Boolean.valueOf(file.exists()));
} else {
if (message.what != 1) {
return;
}
downloadFile(string, string2, i, i2, i3, hashMap, z);
}
}
public boolean isActive() {
return this._active;
}
public void setCancelStatus(boolean z) {
WebRequest webRequest;
this._canceled = z;
if (!z || (webRequest = this._currentRequest) == null) {
return;
}
this._active = false;
webRequest.cancel();
}
}