- 28,932 files - Full Java source code - Smali files - Resources Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
187 lines
9.1 KiB
Java
187 lines
9.1 KiB
Java
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() {
|
|
}
|
|
}
|
|
}
|