Files
rr3-apk/decompiled-community/sources/com/vungle/ads/internal/ui/VungleWebClient.java
Daniel Elliott c080f0d97f 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
2026-02-18 15:48:36 -08:00

509 lines
22 KiB
Java

package com.vungle.ads.internal.ui;
import android.os.Build;
import android.os.Handler;
import android.webkit.RenderProcessGoneDetail;
import android.webkit.WebResourceError;
import android.webkit.WebResourceRequest;
import android.webkit.WebResourceResponse;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.webkit.WebViewRenderProcess;
import android.webkit.WebViewRenderProcessClient;
import androidx.annotation.RequiresApi;
import androidx.annotation.VisibleForTesting;
import com.facebook.gamingservices.cloudgaming.internal.SDKConstants;
import com.glu.plugins.gluanalytics.AnalyticsData;
import com.ironsource.ad;
import com.ironsource.v8;
import com.mbridge.msdk.newreward.player.view.hybrid.util.MRAIDCommunicatorUtil;
import com.vungle.ads.AnalyticsClient;
import com.vungle.ads.BuildConfig;
import com.vungle.ads.internal.ConfigManager;
import com.vungle.ads.internal.model.AdPayload;
import com.vungle.ads.internal.model.Placement;
import com.vungle.ads.internal.omsdk.WebViewObserver;
import com.vungle.ads.internal.platform.Platform;
import com.vungle.ads.internal.signals.SignalManager;
import com.vungle.ads.internal.ui.view.WebViewAPI;
import com.vungle.ads.internal.util.Logger;
import java.util.concurrent.ExecutorService;
import kotlin.jvm.internal.DefaultConstructorMarker;
import kotlin.jvm.internal.Intrinsics;
import kotlinx.serialization.json.JsonElement;
import kotlinx.serialization.json.JsonElementBuildersKt;
import kotlinx.serialization.json.JsonObject;
import kotlinx.serialization.json.JsonObjectBuilder;
/* loaded from: classes4.dex */
public final class VungleWebClient extends WebViewClient implements WebViewAPI {
public static final Companion Companion = new Companion(null);
private static final String TAG = "VungleWebClient";
private final AdPayload advertisement;
private boolean collectConsent;
private WebViewAPI.WebClientErrorHandler errorHandler;
private String gdprAccept;
private String gdprBody;
private String gdprDeny;
private String gdprTitle;
private Boolean isViewable;
private WebView loadedWebView;
private WebViewAPI.MraidDelegate mraidDelegate;
private final ExecutorService offloadExecutor;
private final Placement placement;
private final Platform platform;
private boolean ready;
private final SignalManager signalManager;
private WebViewObserver webViewObserver;
@VisibleForTesting
public static /* synthetic */ void getCollectConsent$vungle_ads_release$annotations() {
}
@VisibleForTesting
public static /* synthetic */ void getErrorHandler$vungle_ads_release$annotations() {
}
@VisibleForTesting
public static /* synthetic */ void getGdprAccept$vungle_ads_release$annotations() {
}
@VisibleForTesting
public static /* synthetic */ void getGdprBody$vungle_ads_release$annotations() {
}
@VisibleForTesting
public static /* synthetic */ void getGdprDeny$vungle_ads_release$annotations() {
}
@VisibleForTesting
public static /* synthetic */ void getGdprTitle$vungle_ads_release$annotations() {
}
@VisibleForTesting
public static /* synthetic */ void getLoadedWebView$vungle_ads_release$annotations() {
}
@VisibleForTesting
public static /* synthetic */ void getMraidDelegate$vungle_ads_release$annotations() {
}
@VisibleForTesting
public static /* synthetic */ void getReady$vungle_ads_release$annotations() {
}
@VisibleForTesting
public static /* synthetic */ void getWebViewObserver$vungle_ads_release$annotations() {
}
@VisibleForTesting
public static /* synthetic */ void isViewable$vungle_ads_release$annotations() {
}
public final boolean getCollectConsent$vungle_ads_release() {
return this.collectConsent;
}
public final WebViewAPI.WebClientErrorHandler getErrorHandler$vungle_ads_release() {
return this.errorHandler;
}
public final String getGdprAccept$vungle_ads_release() {
return this.gdprAccept;
}
public final String getGdprBody$vungle_ads_release() {
return this.gdprBody;
}
public final String getGdprDeny$vungle_ads_release() {
return this.gdprDeny;
}
public final String getGdprTitle$vungle_ads_release() {
return this.gdprTitle;
}
public final WebView getLoadedWebView$vungle_ads_release() {
return this.loadedWebView;
}
public final WebViewAPI.MraidDelegate getMraidDelegate$vungle_ads_release() {
return this.mraidDelegate;
}
public final boolean getReady$vungle_ads_release() {
return this.ready;
}
public final WebViewObserver getWebViewObserver$vungle_ads_release() {
return this.webViewObserver;
}
public final Boolean isViewable$vungle_ads_release() {
return this.isViewable;
}
public final void setCollectConsent$vungle_ads_release(boolean z) {
this.collectConsent = z;
}
@Override // com.vungle.ads.internal.ui.view.WebViewAPI
public void setConsentStatus(boolean z, String str, String str2, String str3, String str4) {
this.collectConsent = z;
this.gdprTitle = str;
this.gdprBody = str2;
this.gdprAccept = str3;
this.gdprDeny = str4;
}
@Override // com.vungle.ads.internal.ui.view.WebViewAPI
public void setErrorHandler(WebViewAPI.WebClientErrorHandler errorHandler) {
Intrinsics.checkNotNullParameter(errorHandler, "errorHandler");
this.errorHandler = errorHandler;
}
public final void setErrorHandler$vungle_ads_release(WebViewAPI.WebClientErrorHandler webClientErrorHandler) {
this.errorHandler = webClientErrorHandler;
}
public final void setGdprAccept$vungle_ads_release(String str) {
this.gdprAccept = str;
}
public final void setGdprBody$vungle_ads_release(String str) {
this.gdprBody = str;
}
public final void setGdprDeny$vungle_ads_release(String str) {
this.gdprDeny = str;
}
public final void setGdprTitle$vungle_ads_release(String str) {
this.gdprTitle = str;
}
public final void setLoadedWebView$vungle_ads_release(WebView webView) {
this.loadedWebView = webView;
}
@Override // com.vungle.ads.internal.ui.view.WebViewAPI
public void setMraidDelegate(WebViewAPI.MraidDelegate mraidDelegate) {
this.mraidDelegate = mraidDelegate;
}
public final void setMraidDelegate$vungle_ads_release(WebViewAPI.MraidDelegate mraidDelegate) {
this.mraidDelegate = mraidDelegate;
}
public final void setReady$vungle_ads_release(boolean z) {
this.ready = z;
}
public final void setViewable$vungle_ads_release(Boolean bool) {
this.isViewable = bool;
}
@Override // com.vungle.ads.internal.ui.view.WebViewAPI
public void setWebViewObserver(WebViewObserver webViewObserver) {
this.webViewObserver = webViewObserver;
}
public final void setWebViewObserver$vungle_ads_release(WebViewObserver webViewObserver) {
this.webViewObserver = webViewObserver;
}
public /* synthetic */ VungleWebClient(AdPayload adPayload, Placement placement, ExecutorService executorService, SignalManager signalManager, Platform platform, int i, DefaultConstructorMarker defaultConstructorMarker) {
this(adPayload, placement, executorService, (i & 8) != 0 ? null : signalManager, (i & 16) != 0 ? null : platform);
}
public VungleWebClient(AdPayload advertisement, Placement placement, ExecutorService offloadExecutor, SignalManager signalManager, Platform platform) {
Intrinsics.checkNotNullParameter(advertisement, "advertisement");
Intrinsics.checkNotNullParameter(placement, "placement");
Intrinsics.checkNotNullParameter(offloadExecutor, "offloadExecutor");
this.advertisement = advertisement;
this.placement = placement;
this.offloadExecutor = offloadExecutor;
this.signalManager = signalManager;
this.platform = platform;
}
public static final class Companion {
public /* synthetic */ Companion(DefaultConstructorMarker defaultConstructorMarker) {
this();
}
private Companion() {
}
}
/* JADX WARN: Code restructure failed: missing block: B:32:0x00c8, code lost:
if (r4 != false) goto L35;
*/
@Override // android.webkit.WebViewClient
/*
Code decompiled incorrectly, please refer to instructions dump.
To view partially-correct add '--show-bad-code' argument
*/
public boolean shouldOverrideUrlLoading(final android.webkit.WebView r11, java.lang.String r12) {
/*
Method dump skipped, instructions count: 255
To view this dump add '--comments-level debug' option
*/
throw new UnsupportedOperationException("Method not decompiled: com.vungle.ads.internal.ui.VungleWebClient.shouldOverrideUrlLoading(android.webkit.WebView, java.lang.String):boolean");
}
/* JADX INFO: Access modifiers changed from: private */
/* renamed from: shouldOverrideUrlLoading$lambda-4$lambda-3$lambda-2, reason: not valid java name */
public static final void m3982shouldOverrideUrlLoading$lambda4$lambda3$lambda2(WebViewAPI.MraidDelegate it, String command, JsonObject args, Handler handler, final VungleWebClient this$0, final WebView webView) {
Intrinsics.checkNotNullParameter(it, "$it");
Intrinsics.checkNotNullParameter(command, "$command");
Intrinsics.checkNotNullParameter(args, "$args");
Intrinsics.checkNotNullParameter(handler, "$handler");
Intrinsics.checkNotNullParameter(this$0, "this$0");
if (it.processCommand(command, args)) {
handler.post(new Runnable() { // from class: com.vungle.ads.internal.ui.VungleWebClient$$ExternalSyntheticLambda1
@Override // java.lang.Runnable
public final void run() {
VungleWebClient.m3983shouldOverrideUrlLoading$lambda4$lambda3$lambda2$lambda1(VungleWebClient.this, webView);
}
});
}
}
/* JADX INFO: Access modifiers changed from: private */
/* renamed from: shouldOverrideUrlLoading$lambda-4$lambda-3$lambda-2$lambda-1, reason: not valid java name */
public static final void m3983shouldOverrideUrlLoading$lambda4$lambda3$lambda2$lambda1(VungleWebClient this$0, WebView webView) {
Intrinsics.checkNotNullParameter(this$0, "this$0");
this$0.runJavascriptOnWebView(webView, "window.vungle.mraidBridge.notifyCommandComplete()");
}
@Override // android.webkit.WebViewClient
public void onPageFinished(WebView webView, String str) {
super.onPageFinished(webView, str);
if (webView == null) {
return;
}
this.loadedWebView = webView;
webView.setVisibility(0);
notifyPropertiesChange(true);
if (Build.VERSION.SDK_INT >= 29) {
webView.setWebViewRenderProcessClient(VungleWebClient$$ExternalSyntheticApiModelOutline0.m(new VungleWebViewRenderProcessClient(this.errorHandler)));
}
WebViewObserver webViewObserver = this.webViewObserver;
if (webViewObserver != null) {
webViewObserver.onPageFinished(webView);
}
}
public final void notifyDiskAvailableSize(long j) {
WebView webView = this.loadedWebView;
if (webView != null) {
runJavascriptOnWebView(webView, "window.vungle.mraidBridgeExt.notifyAvailableDiskSpace(" + j + ')');
}
}
@Override // com.vungle.ads.internal.ui.view.WebViewAPI
public void setAdVisibility(boolean z) {
this.isViewable = Boolean.valueOf(z);
notifyPropertiesChange(false);
}
@Override // android.webkit.WebViewClient
public void onReceivedError(WebView webView, int i, String description, String failingUrl) {
Intrinsics.checkNotNullParameter(description, "description");
Intrinsics.checkNotNullParameter(failingUrl, "failingUrl");
super.onReceivedError(webView, i, description, failingUrl);
}
@Override // android.webkit.WebViewClient
public void onReceivedHttpError(WebView webView, WebResourceRequest webResourceRequest, WebResourceResponse webResourceResponse) {
super.onReceivedHttpError(webView, webResourceRequest, webResourceResponse);
String valueOf = String.valueOf(webResourceResponse != null ? Integer.valueOf(webResourceResponse.getStatusCode()) : null);
String valueOf2 = String.valueOf(webResourceRequest != null ? webResourceRequest.getUrl() : null);
boolean z = false;
boolean z2 = webResourceRequest != null && webResourceRequest.isForMainFrame();
Logger.Companion.e(TAG, "Http Error desc " + valueOf + ' ' + z2 + " for URL " + valueOf2);
if (isCriticalAsset(valueOf2) && z2) {
z = true;
}
handleWebViewError(valueOf, valueOf2, z);
}
@Override // android.webkit.WebViewClient
public void onReceivedError(WebView webView, WebResourceRequest webResourceRequest, WebResourceError webResourceError) {
super.onReceivedError(webView, webResourceRequest, webResourceError);
String valueOf = String.valueOf(webResourceError != null ? webResourceError.getDescription() : null);
String valueOf2 = String.valueOf(webResourceRequest != null ? webResourceRequest.getUrl() : null);
boolean z = false;
boolean z2 = webResourceRequest != null && webResourceRequest.isForMainFrame();
Logger.Companion.e(TAG, "Error desc " + valueOf + ' ' + z2 + " for URL " + valueOf2);
if (isCriticalAsset(valueOf2) && z2) {
z = true;
}
handleWebViewError(valueOf, valueOf2, z);
}
@Override // android.webkit.WebViewClient
public boolean onRenderProcessGone(WebView webView, RenderProcessGoneDetail renderProcessGoneDetail) {
this.loadedWebView = null;
Logger.Companion companion = Logger.Companion;
StringBuilder sb = new StringBuilder();
sb.append("onRenderProcessGone url: ");
sb.append(webView != null ? webView.getUrl() : null);
sb.append(", did crash: ");
sb.append(renderProcessGoneDetail != null ? Boolean.valueOf(renderProcessGoneDetail.didCrash()) : null);
companion.w(TAG, sb.toString());
WebViewAPI.WebClientErrorHandler webClientErrorHandler = this.errorHandler;
if (webClientErrorHandler != null) {
return webClientErrorHandler.onWebRenderingProcessGone(webView, renderProcessGoneDetail != null ? Boolean.valueOf(renderProcessGoneDetail.didCrash()) : null);
}
return super.onRenderProcessGone(webView, renderProcessGoneDetail);
}
private final void handleWebViewError(String str, String str2, boolean z) {
String str3 = str2 + ' ' + str;
WebViewAPI.WebClientErrorHandler webClientErrorHandler = this.errorHandler;
if (webClientErrorHandler != null) {
webClientErrorHandler.onReceivedError(str3, z);
}
}
private final boolean isCriticalAsset(String str) {
if (str.length() > 0) {
return this.advertisement.isCriticalAsset(str);
}
return false;
}
private final void runJavascriptOnWebView(WebView webView, String str) {
if (webView != null) {
try {
if (!webView.isAttachedToWindow()) {
return;
}
} catch (Throwable th) {
AnalyticsClient.INSTANCE.logError$vungle_ads_release(313, "Evaluate js failed " + th.getLocalizedMessage(), this.placement.getReferenceId(), this.advertisement.getCreativeId(), this.advertisement.eventId());
return;
}
}
Logger.Companion.w(TAG, "mraid Injecting JS " + str);
if (webView != null) {
webView.evaluateJavascript(str, null);
}
}
@RequiresApi(29)
public static final class VungleWebViewRenderProcessClient extends WebViewRenderProcessClient {
private WebViewAPI.WebClientErrorHandler errorHandler;
public final WebViewAPI.WebClientErrorHandler getErrorHandler() {
return this.errorHandler;
}
public void onRenderProcessResponsive(WebView webView, WebViewRenderProcess webViewRenderProcess) {
Intrinsics.checkNotNullParameter(webView, "webView");
}
public final void setErrorHandler(WebViewAPI.WebClientErrorHandler webClientErrorHandler) {
this.errorHandler = webClientErrorHandler;
}
public VungleWebViewRenderProcessClient(WebViewAPI.WebClientErrorHandler webClientErrorHandler) {
this.errorHandler = webClientErrorHandler;
}
public void onRenderProcessUnresponsive(WebView webView, WebViewRenderProcess webViewRenderProcess) {
Intrinsics.checkNotNullParameter(webView, "webView");
Logger.Companion companion = Logger.Companion;
StringBuilder sb = new StringBuilder();
sb.append("onRenderProcessUnresponsive(Title = ");
sb.append(webView.getTitle());
sb.append(", URL = ");
sb.append(webView.getOriginalUrl());
sb.append(", (webViewRenderProcess != null) = ");
sb.append(webViewRenderProcess != null);
companion.w(VungleWebClient.TAG, sb.toString());
WebViewAPI.WebClientErrorHandler webClientErrorHandler = this.errorHandler;
if (webClientErrorHandler != null) {
webClientErrorHandler.onRenderProcessUnresponsive(webView, webViewRenderProcess);
}
}
}
@Override // com.vungle.ads.internal.ui.view.WebViewAPI
public void notifyPropertiesChange(boolean z) {
WebView webView = this.loadedWebView;
if (webView != null) {
JsonObjectBuilder jsonObjectBuilder = new JsonObjectBuilder();
JsonObjectBuilder jsonObjectBuilder2 = new JsonObjectBuilder();
JsonElementBuildersKt.put(jsonObjectBuilder2, "width", Integer.valueOf(webView.getWidth()));
JsonElementBuildersKt.put(jsonObjectBuilder2, "height", Integer.valueOf(webView.getHeight()));
JsonElement build = jsonObjectBuilder2.build();
JsonObjectBuilder jsonObjectBuilder3 = new JsonObjectBuilder();
JsonElementBuildersKt.put(jsonObjectBuilder3, "x", 0);
JsonElementBuildersKt.put(jsonObjectBuilder3, "y", 0);
JsonElementBuildersKt.put(jsonObjectBuilder3, "width", Integer.valueOf(webView.getWidth()));
JsonElementBuildersKt.put(jsonObjectBuilder3, "height", Integer.valueOf(webView.getHeight()));
JsonElement build2 = jsonObjectBuilder3.build();
JsonObjectBuilder jsonObjectBuilder4 = new JsonObjectBuilder();
Boolean bool = Boolean.FALSE;
JsonElementBuildersKt.put(jsonObjectBuilder4, "sms", bool);
JsonElementBuildersKt.put(jsonObjectBuilder4, "tel", bool);
JsonElementBuildersKt.put(jsonObjectBuilder4, "calendar", bool);
JsonElementBuildersKt.put(jsonObjectBuilder4, "storePicture", bool);
JsonElementBuildersKt.put(jsonObjectBuilder4, "inlineVideo", bool);
JsonElement build3 = jsonObjectBuilder4.build();
JsonElement jsonElement = build;
jsonObjectBuilder.put(SDKConstants.PARAM_CONTEXT_MAX_SIZE, jsonElement);
jsonObjectBuilder.put("screenSize", jsonElement);
JsonElement jsonElement2 = build2;
jsonObjectBuilder.put("defaultPosition", jsonElement2);
jsonObjectBuilder.put("currentPosition", jsonElement2);
jsonObjectBuilder.put("supports", build3);
JsonElementBuildersKt.put(jsonObjectBuilder, MRAIDCommunicatorUtil.KEY_PLACEMENTTYPE, this.advertisement.templateType());
Boolean bool2 = this.isViewable;
if (bool2 != null) {
JsonElementBuildersKt.put(jsonObjectBuilder, v8.h.o, Boolean.valueOf(bool2.booleanValue()));
}
JsonElementBuildersKt.put(jsonObjectBuilder, ad.y, "android");
JsonElementBuildersKt.put(jsonObjectBuilder, AnalyticsData.S_OS_VERSION, String.valueOf(Build.VERSION.SDK_INT));
JsonElementBuildersKt.put(jsonObjectBuilder, "incentivized", Boolean.valueOf(this.placement.isRewardedVideo()));
JsonElementBuildersKt.put(jsonObjectBuilder, "version", "1.0");
Platform platform = this.platform;
if (platform != null) {
JsonElementBuildersKt.put(jsonObjectBuilder, "isSilent", Boolean.valueOf(platform.isSilentModeEnabled()));
}
if (this.collectConsent) {
JsonElementBuildersKt.put(jsonObjectBuilder, "consentRequired", Boolean.TRUE);
JsonElementBuildersKt.put(jsonObjectBuilder, "consentTitleText", this.gdprTitle);
JsonElementBuildersKt.put(jsonObjectBuilder, "consentBodyText", this.gdprBody);
JsonElementBuildersKt.put(jsonObjectBuilder, "consentAcceptButtonText", this.gdprAccept);
JsonElementBuildersKt.put(jsonObjectBuilder, "consentDenyButtonText", this.gdprDeny);
} else {
JsonElementBuildersKt.put(jsonObjectBuilder, "consentRequired", bool);
}
if (!ConfigManager.INSTANCE.signalsDisabled()) {
SignalManager signalManager = this.signalManager;
String uuid = signalManager != null ? signalManager.getUuid() : null;
if (uuid != null && uuid.length() != 0) {
SignalManager signalManager2 = this.signalManager;
JsonElementBuildersKt.put(jsonObjectBuilder, "sessionId", signalManager2 != null ? signalManager2.getUuid() : null);
}
}
JsonElementBuildersKt.put(jsonObjectBuilder, "sdkVersion", BuildConfig.VERSION_NAME);
runJavascriptOnWebView(webView, "window.vungle.mraidBridge.notifyPropertiesChange(" + jsonObjectBuilder.build() + ',' + z + ')');
}
}
public final void notifySilentModeChange(boolean z) {
WebView webView = this.loadedWebView;
if (webView != null) {
JsonObjectBuilder jsonObjectBuilder = new JsonObjectBuilder();
JsonElementBuildersKt.put(jsonObjectBuilder, "isSilent", Boolean.valueOf(z));
runJavascriptOnWebView(webView, "window.vungle.mraidBridge.notifyPropertiesChange(" + jsonObjectBuilder.build() + ')');
}
}
}