Add Discord community version (64-bit only)

- Added realracing3-community.apk (71.57 MB)
- Removed 32-bit support (armeabi-v7a)
- Only includes arm64-v8a libraries
- Decompiled source code included
- Added README-community.md with analysis
This commit is contained in:
2026-02-18 15:48:36 -08:00
parent c19eb3d7ff
commit c080f0d97f
26930 changed files with 2529574 additions and 0 deletions

View File

@@ -0,0 +1,186 @@
package com.unity3d.ads.adplayer;
import android.net.Uri;
import android.webkit.RenderProcessGoneDetail;
import android.webkit.WebResourceRequest;
import android.webkit.WebResourceResponse;
import android.webkit.WebView;
import androidx.annotation.RequiresApi;
import androidx.webkit.WebResourceErrorCompat;
import androidx.webkit.WebViewAssetLoader;
import androidx.webkit.WebViewClientCompat;
import androidx.webkit.WebViewFeature;
import com.unity3d.ads.adplayer.model.ErrorReason;
import com.unity3d.ads.adplayer.model.WebViewClientError;
import com.unity3d.ads.core.domain.GetCachedAsset;
import com.unity3d.ads.core.extensions.IntExtensionKt;
import com.unity3d.ads.core.extensions.ViewExtensionsKt;
import com.unity3d.services.UnityAdsConstants;
import java.util.List;
import kotlin.collections.CollectionsKt__CollectionsKt;
import kotlin.collections.CollectionsKt___CollectionsKt;
import kotlin.jvm.internal.DefaultConstructorMarker;
import kotlin.jvm.internal.Intrinsics;
import kotlin.jvm.internal.SourceDebugExtension;
import kotlinx.coroutines.CompletableDeferred;
import kotlinx.coroutines.CompletableDeferredKt;
import kotlinx.coroutines.Deferred;
import kotlinx.coroutines.flow.FlowKt;
import kotlinx.coroutines.flow.MutableStateFlow;
import kotlinx.coroutines.flow.StateFlow;
import kotlinx.coroutines.flow.StateFlowKt;
@SourceDebugExtension({"SMAP\nAndroidWebViewClient.kt\nKotlin\n*S Kotlin\n*F\n+ 1 AndroidWebViewClient.kt\ncom/unity3d/ads/adplayer/AndroidWebViewClient\n+ 2 StateFlow.kt\nkotlinx/coroutines/flow/StateFlowKt\n*L\n1#1,137:1\n230#2,5:138\n230#2,5:143\n230#2,5:148\n230#2,5:153\n*S KotlinDebug\n*F\n+ 1 AndroidWebViewClient.kt\ncom/unity3d/ads/adplayer/AndroidWebViewClient\n*L\n42#1:138,5\n63#1:143,5\n83#1:148,5\n119#1:153,5\n*E\n"})
/* loaded from: classes4.dex */
public final class AndroidWebViewClient extends WebViewClientCompat {
public static final String BLANK_PAGE = "about:blank";
public static final Companion Companion = new Companion(null);
private final MutableStateFlow _isRenderProcessGone;
private final CompletableDeferred _onLoadFinished;
private final WebViewAssetLoader adAssetLoader;
private final GetCachedAsset getCachedAsset;
private final StateFlow isRenderProcessGone;
private final MutableStateFlow loadErrors;
private final Deferred onLoadFinished;
private final WebViewAssetLoader webViewAssetLoader;
public final Deferred getOnLoadFinished() {
return this.onLoadFinished;
}
public final StateFlow isRenderProcessGone() {
return this.isRenderProcessGone;
}
public AndroidWebViewClient(GetWebViewCacheAssetLoader getWebViewAssetLoader, GetAdAssetLoader getAdAssetLoader, GetCachedAsset getCachedAsset) {
Intrinsics.checkNotNullParameter(getWebViewAssetLoader, "getWebViewAssetLoader");
Intrinsics.checkNotNullParameter(getAdAssetLoader, "getAdAssetLoader");
Intrinsics.checkNotNullParameter(getCachedAsset, "getCachedAsset");
this.getCachedAsset = getCachedAsset;
this.webViewAssetLoader = (WebViewAssetLoader) getWebViewAssetLoader.invoke();
this.adAssetLoader = (WebViewAssetLoader) getAdAssetLoader.invoke();
this.loadErrors = StateFlowKt.MutableStateFlow(CollectionsKt__CollectionsKt.emptyList());
CompletableDeferred CompletableDeferred$default = CompletableDeferredKt.CompletableDeferred$default(null, 1, null);
this._onLoadFinished = CompletableDeferred$default;
this.onLoadFinished = CompletableDeferred$default;
MutableStateFlow MutableStateFlow = StateFlowKt.MutableStateFlow(Boolean.FALSE);
this._isRenderProcessGone = MutableStateFlow;
this.isRenderProcessGone = FlowKt.asStateFlow(MutableStateFlow);
}
@Override // android.webkit.WebViewClient
public void onPageFinished(WebView view, String url) {
Object value;
List plus;
Intrinsics.checkNotNullParameter(view, "view");
Intrinsics.checkNotNullParameter(url, "url");
if (Intrinsics.areEqual(url, BLANK_PAGE)) {
MutableStateFlow mutableStateFlow = this.loadErrors;
do {
value = mutableStateFlow.getValue();
plus = CollectionsKt___CollectionsKt.plus((List) value, new WebViewClientError(url, ErrorReason.REASON_WEB_BLANK, null, 4, null));
} while (!mutableStateFlow.compareAndSet(value, plus));
}
super.onPageFinished(view, url);
this._onLoadFinished.complete(this.loadErrors.getValue());
}
@Override // androidx.webkit.WebViewClientCompat
@RequiresApi(21)
public void onReceivedError(WebView view, WebResourceRequest request, WebResourceErrorCompat error) {
ErrorReason errorReason;
Object value;
List plus;
Intrinsics.checkNotNullParameter(view, "view");
Intrinsics.checkNotNullParameter(request, "request");
Intrinsics.checkNotNullParameter(error, "error");
super.onReceivedError(view, request, error);
if (WebViewFeature.isFeatureSupported(WebViewFeature.WEB_RESOURCE_ERROR_GET_CODE)) {
errorReason = IntExtensionKt.webResourceToErrorReason(error.getErrorCode());
} else {
errorReason = ErrorReason.REASON_UNKNOWN;
}
MutableStateFlow mutableStateFlow = this.loadErrors;
do {
value = mutableStateFlow.getValue();
plus = CollectionsKt___CollectionsKt.plus((List) value, new WebViewClientError(request.getUrl().toString(), errorReason, null, 4, null));
} while (!mutableStateFlow.compareAndSet(value, plus));
}
@Override // androidx.webkit.WebViewClientCompat, android.webkit.WebViewClient, org.chromium.support_lib_boundary.WebViewClientBoundaryInterface
public void onReceivedHttpError(WebView view, WebResourceRequest request, WebResourceResponse errorResponse) {
Object value;
List plus;
Intrinsics.checkNotNullParameter(view, "view");
Intrinsics.checkNotNullParameter(request, "request");
Intrinsics.checkNotNullParameter(errorResponse, "errorResponse");
super.onReceivedHttpError(view, request, errorResponse);
WebViewClientError webViewClientError = new WebViewClientError(request.getUrl().toString(), ErrorReason.REASON_WEB_ERROR_RECEIVED_HTTP, Integer.valueOf(errorResponse.getStatusCode()));
MutableStateFlow mutableStateFlow = this.loadErrors;
do {
value = mutableStateFlow.getValue();
plus = CollectionsKt___CollectionsKt.plus((List) value, webViewClientError);
} while (!mutableStateFlow.compareAndSet(value, plus));
}
@Override // android.webkit.WebViewClient
public WebResourceResponse shouldInterceptRequest(WebView view, WebResourceRequest request) {
Intrinsics.checkNotNullParameter(view, "view");
Intrinsics.checkNotNullParameter(request, "request");
Uri url = request.getUrl();
if (url == null) {
return super.shouldInterceptRequest(view, request);
}
if (Intrinsics.areEqual(url.getLastPathSegment(), "favicon.ico")) {
return new WebResourceResponse("image/png", null, null);
}
if (Intrinsics.areEqual(url.getScheme(), UnityAdsConstants.Cache.CACHE_SCHEME)) {
GetCachedAsset getCachedAsset = this.getCachedAsset;
Uri url2 = request.getUrl();
Intrinsics.checkNotNullExpressionValue(url2, "request.url");
return getCachedAsset.invoke(url2);
}
String host = url.getHost();
if (host != null) {
int hashCode = host.hashCode();
if (hashCode != -598289184) {
if (hashCode == 380656434 && host.equals(UnityAdsConstants.DefaultUrls.WEBVIEW_DOMAIN)) {
return this.webViewAssetLoader.shouldInterceptRequest(url);
}
} else if (host.equals("cdn-creatives-cf-prd.acquire.unity3dusercontent.com")) {
return this.adAssetLoader.shouldInterceptRequest(url);
}
}
return super.shouldInterceptRequest(view, request);
}
@Override // android.webkit.WebViewClient
public boolean onRenderProcessGone(WebView view, RenderProcessGoneDetail detail) {
Object value;
List plus;
Intrinsics.checkNotNullParameter(view, "view");
Intrinsics.checkNotNullParameter(detail, "detail");
ViewExtensionsKt.removeViewFromParent(view);
view.destroy();
if (this._onLoadFinished.isCompleted()) {
this._isRenderProcessGone.setValue(Boolean.TRUE);
return true;
}
MutableStateFlow mutableStateFlow = this.loadErrors;
do {
value = mutableStateFlow.getValue();
plus = CollectionsKt___CollectionsKt.plus((List) value, new WebViewClientError(String.valueOf(view.getUrl()), ErrorReason.REASON_WEBVIEW_RENDER_PROCESS_GONE, null, 4, null));
} while (!mutableStateFlow.compareAndSet(value, plus));
this._onLoadFinished.complete(this.loadErrors.getValue());
return true;
}
public static final class Companion {
public /* synthetic */ Companion(DefaultConstructorMarker defaultConstructorMarker) {
this();
}
private Companion() {
}
}
}