正在查看: CallApp v2.226 应用的 MraidAdRenderer.java JAVA 源代码文件
本页面展示 JAVA 反编译生成的源代码文件,支持语法高亮显示。 仅供安全研究与技术分析使用,严禁用于任何非法用途。请遵守相关法律法规。
正在查看: CallApp v2.226 应用的 MraidAdRenderer.java JAVA 源代码文件
本页面展示 JAVA 反编译生成的源代码文件,支持语法高亮显示。 仅供安全研究与技术分析使用,严禁用于任何非法用途。请遵守相关法律法规。
package com.mobilefuse.sdk.mraid;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.Rect;
import android.net.Uri;
import android.os.Handler;
import android.os.Looper;
import android.util.Log;
import android.view.View;
import android.view.ViewGroup;
import android.webkit.RenderProcessGoneDetail;
import android.webkit.WebChromeClient;
import android.webkit.WebResourceRequest;
import android.webkit.WebResourceResponse;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.PopupWindow;
import android.widget.RelativeLayout;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.n;
import apk.tool.patcher.Premium;
import com.mbridge.msdk.playercommon.exoplayer2.C;
import com.mobilefuse.sdk.AdLifecycleEvent;
import com.mobilefuse.sdk.AdLifecycleEventListener;
import com.mobilefuse.sdk.AdRendererConfig;
import com.mobilefuse.sdk.AdRendererContainer;
import com.mobilefuse.sdk.AdRendererListener;
import com.mobilefuse.sdk.BaseAdRenderer;
import com.mobilefuse.sdk.CloseConfigResponse;
import com.mobilefuse.sdk.ExtendedAdType;
import com.mobilefuse.sdk.StabilityHelper;
import com.mobilefuse.sdk.Utils;
import com.mobilefuse.sdk.ad.rendering.ExtendedController;
import com.mobilefuse.sdk.ad.rendering.splashad.SplashAdController;
import com.mobilefuse.sdk.ad.view.CloseButton;
import com.mobilefuse.sdk.assetsmanager.MobileFuseAssetManager;
import com.mobilefuse.sdk.assetsmanager.ResultCallback;
import com.mobilefuse.sdk.config.ObservableConfig;
import com.mobilefuse.sdk.config.ObservableConfigKey;
import com.mobilefuse.sdk.device.GetLastKnownLocationDataKt;
import com.mobilefuse.sdk.device.LocationData;
import com.mobilefuse.sdk.identity.EidRequestBuilder;
import com.mobilefuse.sdk.internal.RtbLossReason;
import com.mobilefuse.sdk.logging.HttpRequestTracker;
import com.mobilefuse.sdk.mraid.MraidAdRenderer;
import com.mobilefuse.sdk.mraid.MraidAdRendererContainer;
import com.mobilefuse.sdk.omid.MraidOmidBridge;
import com.mobilefuse.sdk.omid.OmidFriendlyObstructionPurpose;
import com.mobilefuse.sdk.omid.OmidWebViewReleaser;
import com.mobilefuse.sdk.omid.viewtree.ViewTreeInspector;
import com.mobilefuse.sdk.rtb.ApiFramework;
import com.mobilefuse.sdk.telemetry.Telemetry;
import com.mobilefuse.sdk.utils.PositionUtils;
import com.mobilefuse.sdk.utils.WebViewUtils;
import com.mobilefuse.sdk.vast.VastAdRenderer;
import com.mobilefuse.sdk.video.AdmClickInfo;
import com.mobilefuse.sdk.video.AdmClickInfoProvider;
import com.smaato.sdk.core.SmaatoSdk;
import com.smaato.sdk.richmedia.mraid.bridge.MraidJsMethods;
import com.smaato.sdk.richmedia.mraid.dataprovider.MraidEnvironmentProperties;
import com.unity3d.ads.adplayer.AndroidWebViewClient;
import com.unity3d.services.ads.adunit.AdUnitActivity;
import java.io.ByteArrayInputStream;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import kotlin.Unit;
import org.json.JSONException;
import org.json.JSONObject;
public class MraidAdRenderer extends BaseAdRenderer<MraidOmidBridge> {
private static final boolean ALLOW_CLICKTHROUGH_WITHOUT_TAP_DEFAULT = false;
private static String CLICKTHROUGH_CONSTANT = "${CLICKTHROUGH}";
private static final long PROGRESS_BAR_SHOW_DELAY = 3000;
private static String WEB_VIEW_BASE_URL = "https://sdk-webview.mobilefuse.com";
public static boolean webViewCrashTestAllowed;
private boolean activityOrientationChanged;
private PopupWindow bannerExpandedWindow;
private RelativeLayout.LayoutParams bannerInlineLayoutParams;
private CloseButton closeBtn;
private boolean closingAd;
private boolean expanded;
private final Handler handler;
private Boolean isMraidBridgeLoaded;
@Nullable
private JsBridgeCallListener jsBridgeCallListener;
private double lastExposurePrcnt;
private int notModifiedActivityOrientation;
private int screenHeight;
private int screenWidth;
private boolean showingAd;
@Nullable
private ViewTreeInspector viewTreeInspector;
private WebView webView;
private RelativeLayout webViewContainer;
@NonNull
private WebViewLoadContentType webViewLoadContentType;
public class AnonymousClass5 implements ResultCallback {
final String val$admTag;
final String val$environmentSetup;
final String val$webViewInitCall;
public AnonymousClass5(String str, String str2, String str3) {
this.val$admTag = str;
this.val$webViewInitCall = str2;
this.val$environmentSetup = str3;
}
public void lambda$onResult$0(String str) {
try {
if (MraidAdRenderer.this.webView == null) {
return;
}
MraidAdRenderer.this.webView.loadDataWithBaseURL(MraidAdRenderer.WEB_VIEW_BASE_URL, str, "text/html", C.UTF8_NAME, null);
} catch (Throwable th) {
StabilityHelper.logException(this, th);
}
}
@Override
public void onResult(@Nullable Object obj) {
try {
final String str = this.val$admTag + this.val$webViewInitCall;
if (obj != null) {
str = obj.toString().replace("{ADM_CONTENT}", str).replace("{MRAID_ENV_CONFIG}", this.val$environmentSetup).replace("{MRAID_BRIDGE_INIT}", "<script>mraid.bridge.init(MRAID_ENV);</script>");
}
if (MraidAdRenderer.this.hasOmidBridge()) {
str = ((MraidOmidBridge) ((BaseAdRenderer) MraidAdRenderer.this).omidBridge).injectOmidScriptContentIntoAdm(str);
}
MraidAdRenderer.this.handler.post(new Runnable() {
@Override
public final void run() {
MraidAdRenderer.AnonymousClass5.this.lambda$onResult$0(str);
}
});
} catch (Throwable th) {
StabilityHelper.logException(this, th);
}
}
}
public interface JsBridgeCallListener {
Map<String, Boolean> getMraidSupportsList();
boolean onBridgeCall(Uri uri);
}
public enum MraidAdLifecycleEvent implements AdLifecycleEvent {
MRAID_CREATE_CALENDAR_EVENT
}
public enum MraidExtendedAdType implements ExtendedAdType {
INTERSTITIAL_TRANSPARENT,
SPLASH
}
public enum WebViewLoadContentType {
URL,
ADM
}
public MraidAdRenderer(Context context, AdRendererConfig adRendererConfig, AdRendererListener adRendererListener) throws Throwable {
super(context, adRendererConfig, adRendererListener);
this.webViewLoadContentType = WebViewLoadContentType.ADM;
this.handler = new Handler(Looper.getMainLooper());
this.notModifiedActivityOrientation = -1;
this.lastExposurePrcnt = -1.0d;
this.isMraidBridgeLoaded = Boolean.FALSE;
this.screenWidth = 0;
this.screenHeight = 0;
this.jsBridgeCallListener = null;
MraidFeatureDetection.initialize(context);
createContainer();
startActivityLifecycleChecking();
}
private void addCloseButton(boolean z) throws Throwable {
RelativeLayout.LayoutParams layoutParams;
CloseConfigResponse closeConfigResponse = this.config.getCloseConfigResponse();
String uiAdm = this.config.getUiAdm();
if (this.closeBtn == null) {
CloseButton closeButton = new CloseButton(this.context, 60, R.id.closeBtn, new d(this, 1), new d(this, 2), this.config.getCloseConfigResponse(), uiAdm);
this.closeBtn = closeButton;
closeButton.setOnVisibilityChange(new b(this, 0));
if (closeConfigResponse == null || this.closeBtn.getCloseConfigPx() == null) {
layoutParams = new RelativeLayout.LayoutParams(this.closeBtn.getInteractionSizePx(), this.closeBtn.getInteractionSizePx());
layoutParams.addRule(11);
layoutParams.addRule(10);
layoutParams.alignWithParent = true;
} else {
layoutParams = PositionUtils.addPositionRules(new RelativeLayout.LayoutParams((int) this.closeBtn.getCloseConfigPx().getWidth(), (int) this.closeBtn.getCloseConfigPx().getHeight()), closeConfigResponse);
layoutParams.alignWithParent = true;
}
this.webViewContainer.addView(this.closeBtn, layoutParams);
}
this.closeBtn.setTransparent(z);
ExtendedController extendedController = this.extendedController;
if (!(extendedController instanceof SplashAdController)) {
this.closeBtn.setThumbnailMode(this.config.isThumbnailSize());
} else {
((SplashAdController) extendedController).setExpandedCloseBtnTransparent(z);
this.closeBtn.setThumbnailMode(true);
}
}
private void bridge_NotifyReadyEvents() throws Throwable {
WebView webView = this.webView;
if (webView == null) {
return;
}
webView.evaluateJavascript("mraid.bridge.notifyReadyEvent();", null);
}
public void bridge_NotifySizeChangeEvent(int i, int i2) throws Throwable {
WebView webView = this.webView;
if (webView == null) {
return;
}
webView.evaluateJavascript(n.h(i, i2, "mraid.bridge.notifySizeChangeEvent(", ", ", ");"), null);
}
private void bridge_SetState(String str) throws Throwable {
WebView webView = this.webView;
if (webView == null) {
return;
}
webView.evaluateJavascript("mraid.bridge.setState(Mraid.State." + str + ");", null);
}
private void closeAd(boolean z) throws Throwable {
WebView webView;
Activity activity;
if (this.showingAd) {
if (this.config.isFullscreenAd() || z) {
this.showingAd = false;
}
dismissBannerExpandedWindow();
if (this.activityOrientationChanged) {
if (!this.config.isFullscreenAd() && (activity = this.renderingActivity) != null) {
activity.setRequestedOrientation(this.notModifiedActivityOrientation);
Utils.unlockOrientation(this.renderingActivity);
}
this.notModifiedActivityOrientation = -1;
this.activityOrientationChanged = false;
}
if (this.expanded) {
this.expanded = false;
this.closingAd = false;
if (!z) {
removeCloseButton();
bridge_SetState("DEFAULT");
this.webView.setLayoutParams(this.bannerInlineLayoutParams);
this.contentContainer.addView(this.webViewContainer, this.bannerInlineLayoutParams);
this.listener.onFullscreenChanged(false);
}
} else {
this.webView.stopLoading();
onAdClosed();
}
if (z && (webView = this.webView) != null) {
if (webView.getParent() != null) {
((ViewGroup) this.webView.getParent()).removeView(this.webView);
}
this.webView.loadUrl(AndroidWebViewClient.BLANK_PAGE);
}
ExtendedController extendedController = this.extendedController;
if (extendedController != null) {
extendedController.unbindContent();
this.extendedController = null;
}
}
}
public int convertPxToDp(int i) {
try {
return Utils.convertPxToDp(this.context, i);
} catch (Throwable th) {
StabilityHelper.logException(this, th);
return 0;
}
}
private void createContainer() throws Throwable {
this.webViewContainer = new RelativeLayout(this.context);
this.webViewContainer.setLayoutParams(new RelativeLayout.LayoutParams(-1, -1));
this.webViewContainer.setGravity(8388659);
MraidAdRendererContainer mraidAdRendererContainer = new MraidAdRendererContainer(this.context);
this.contentContainer = mraidAdRendererContainer;
mraidAdRendererContainer.setViewableChangeListener(new MraidAdRendererContainer.ViewableChangeListener() {
@Override
public void onViewableChange(int i, int i2, int i3, int i4, double d, Rect rect) throws Throwable {
if (MraidAdRenderer.this.expanded) {
d = 100.0d;
}
if (MraidAdRenderer.this.lastExposurePrcnt != d && d > 0.0d) {
MraidAdRenderer mraidAdRenderer = MraidAdRenderer.this;
mraidAdRenderer.setCurrentPosition(mraidAdRenderer.convertPxToDp(i3), MraidAdRenderer.this.convertPxToDp(i4), MraidAdRenderer.this.convertPxToDp(i), MraidAdRenderer.this.convertPxToDp(i2));
}
MraidAdRenderer.this.lastExposurePrcnt = d;
MraidAdRenderer mraidAdRenderer2 = MraidAdRenderer.this;
mraidAdRenderer2.dispatchAdmExposureChangeEvent(mraidAdRenderer2.lastExposurePrcnt, i, i2, rect);
}
});
ViewGroup.LayoutParams layoutParams = new ViewGroup.LayoutParams(-1, -1);
this.contentContainer.addView(this.webViewContainer);
this.contentContainer.setLayoutParams(layoutParams);
this.contentContainer.setAttachedToWindowCallback(new c(this, 1));
this.contentContainer.setDetachedFromWindowCallback(new c(this, 2));
if (this.config.isFullscreenAd() || this.config.isCloseButtonEnabled()) {
addCloseButton(false);
}
}
private void createExternalController() throws Throwable {
ExtendedAdType extendedAdType = this.extendedAdType;
MraidExtendedAdType mraidExtendedAdType = MraidExtendedAdType.SPLASH;
if (extendedAdType != mraidExtendedAdType || this.renderingActivity == null) {
return;
}
this.extendedController = new SplashAdController(this.renderingActivity, this.contentContainer, this.webView, this.omidBridge, new d(this, 0), new b(this, 1), new b(this, 2));
ObservableConfig observableConfig = this.observableConfig;
if (observableConfig != null) {
ObservableConfigKey observableConfigKey = ObservableConfigKey.POSITION;
if (observableConfig.hasValue(observableConfigKey) && this.extendedAdType == mraidExtendedAdType) {
((SplashAdController) this.extendedController).setAnchor(this.observableConfig.getIntValue(observableConfigKey, 3));
}
}
CloseButton closeButton = this.closeBtn;
if (closeButton != null) {
closeButton.setThumbnailMode(true);
}
}
private void createWebView() throws Throwable {
if (this.webView != null) {
return;
}
WebView webView = new WebView(this.context);
this.webView = webView;
WebSettings settings = webView.getSettings();
settings.setJavaScriptEnabled(true);
settings.setAllowContentAccess(true);
settings.setUseWideViewPort(false);
settings.setMixedContentMode(0);
settings.setMediaPlaybackRequiresUserGesture(false);
this.webView.setHorizontalScrollbarOverlay(false);
this.webView.setHorizontalScrollBarEnabled(false);
this.webView.setVerticalScrollbarOverlay(false);
this.webView.setVerticalScrollBarEnabled(false);
this.webView.setOverScrollMode(2);
this.webView.setLayerType(2, null);
if (isTransparentBackground()) {
this.webView.setBackgroundColor(0);
} else {
updateWebViewBackgroundColor();
}
this.webView.setWebViewClient(new WebViewClient() {
@Override
public void onLoadResource(WebView webView2, String str) {
try {
HttpRequestTracker.logHttpRequest(str);
} catch (Throwable th) {
StabilityHelper.logException(this, th);
}
super.onLoadResource(webView2, str);
}
@Override
public void onPageFinished(WebView webView2, String str) {
if (str != null) {
try {
if (str.equals(AndroidWebViewClient.BLANK_PAGE)) {
return;
}
} catch (Throwable th) {
StabilityHelper.logException(this, th);
}
}
MraidAdRenderer.this.onAdmLoaded();
if (((BaseAdRenderer) MraidAdRenderer.this).extendedController instanceof SplashAdController) {
((SplashAdController) ((BaseAdRenderer) MraidAdRenderer.this).extendedController).onWebViewPageFinished();
}
super.onPageFinished(webView2, str);
}
@Override
public boolean onRenderProcessGone(WebView webView2, RenderProcessGoneDetail renderProcessGoneDetail) {
try {
} catch (Throwable th) {
StabilityHelper.logException(this, th);
}
if (webView2 != MraidAdRenderer.this.webView) {
return true;
}
Log.w("Mraid Ad Renderer", "WebView Render Process has gone.");
MraidAdRenderer.this.onAdRuntimeError(RtbLossReason.INTERNAL_ERROR);
return true;
}
@Override
@Nullable
public WebResourceResponse shouldInterceptRequest(WebView webView2, String str) {
try {
Uri parse = Uri.parse(str);
WebResourceResponse handleBridgeCallFromFetch = MraidAdRenderer.this.handleBridgeCallFromFetch(parse);
return handleBridgeCallFromFetch != null ? handleBridgeCallFromFetch : WebViewUtils.shouldInterceptRequest(((BaseAdRenderer) MraidAdRenderer.this).context, parse);
} catch (Throwable th) {
StabilityHelper.logException(this, th);
return super.shouldInterceptRequest(webView2, str);
}
}
@Override
public boolean shouldOverrideUrlLoading(WebView webView2, String str) {
try {
return MraidAdRenderer.this.shouldOverrideUrl(str);
} catch (Throwable th) {
StabilityHelper.logException(this, th);
return true;
}
}
@Override
public boolean shouldOverrideUrlLoading(WebView webView2, WebResourceRequest webResourceRequest) {
try {
boolean z = webResourceRequest.hasGesture() && !webResourceRequest.isRedirect();
boolean booleanValue = ((BaseAdRenderer) MraidAdRenderer.this).observableConfig.getBooleanValue(ObservableConfigKey.ALLOW_CLICKTHROUGH_WITHOUT_TAP, false);
if (z || booleanValue) {
return MraidAdRenderer.this.shouldOverrideUrl(webResourceRequest.getUrl().toString());
}
return true;
} catch (Throwable th) {
StabilityHelper.logException(this, th);
return true;
}
}
@Override
public WebResourceResponse shouldInterceptRequest(WebView webView2, WebResourceRequest webResourceRequest) {
if (webResourceRequest == null) {
return null;
}
try {
WebResourceResponse handleBridgeCallFromFetch = MraidAdRenderer.this.handleBridgeCallFromFetch(webResourceRequest.getUrl());
return handleBridgeCallFromFetch != null ? handleBridgeCallFromFetch : WebViewUtils.shouldInterceptRequest(((BaseAdRenderer) MraidAdRenderer.this).context, webResourceRequest.getUrl());
} catch (Throwable th) {
StabilityHelper.logException(this, th);
return super.shouldInterceptRequest(webView2, webResourceRequest);
}
}
});
this.webView.setWebChromeClient(new WebChromeClient() {
@Override
@Nullable
public Bitmap getDefaultVideoPoster() {
try {
Bitmap defaultVideoPoster = super.getDefaultVideoPoster();
if (defaultVideoPoster != null) {
return defaultVideoPoster;
}
} catch (Throwable unused) {
}
try {
return Bitmap.createBitmap(1, 1, Bitmap.Config.ARGB_8888);
} catch (Throwable th) {
StabilityHelper.logException(this, th);
return null;
}
}
});
}
private void dismissBannerExpandedWindow() {
try {
PopupWindow popupWindow = this.bannerExpandedWindow;
this.bannerExpandedWindow = null;
if (popupWindow == null) {
return;
}
popupWindow.dismiss();
} catch (Throwable th) {
StabilityHelper.logException(this, th);
}
}
public void dispatchAdmExposureChangeEvent(double d, double d2, double d3, Rect rect) throws Throwable {
String h;
if (this.webView == null) {
return;
}
String format = String.format(Locale.US, "%.2f", Double.valueOf(d));
if (rect == null) {
h = "null";
} else {
StringBuilder sb = new StringBuilder("{ \"x\": ");
sb.append(convertPxToDp((int) d2));
sb.append(", \"y\": ");
sb.append(convertPxToDp((int) d3));
sb.append(", \"width\": ");
sb.append(convertPxToDp(rect.width()));
sb.append(", \"height\": ");
h = com.mobilefuse.sdk.assetsmanager.a.h(convertPxToDp(rect.height()), "}", sb);
}
this.webView.evaluateJavascript(com.mobilefuse.sdk.assetsmanager.a.o("mraid.bridge.setExposureChange(", format, ",", h, ",null);"), null);
boolean z = d > 50.0d;
this.webView.evaluateJavascript("mraid.bridge.setIsViewable(" + z + ");", null);
}
private long getCloseButtonShowDelay() {
try {
ObservableConfig observableConfig = this.observableConfig;
ObservableConfigKey observableConfigKey = ObservableConfigKey.FORCE_SKIP_SECONDS;
float f = -1.0f;
if (observableConfig.hasValue(observableConfigKey)) {
f = this.observableConfig.getFloatValue(observableConfigKey, -1.0f);
StringBuilder sb = new StringBuilder("MraidRenderer skipOffset:\n* use value from MFX bid response \"skipAdSeconds\"=");
sb.append(f);
sb.append("\n");
} else {
ObservableConfig observableConfig2 = this.observableConfig;
ObservableConfigKey observableConfigKey2 = ObservableConfigKey.MRAID_AD_SKIPOFFSET_SECONDS;
if (observableConfig2.hasValue(observableConfigKey2)) {
f = this.observableConfig.getFloatValue(observableConfigKey2, -1.0f);
StringBuilder sb2 = new StringBuilder("MraidRenderer skipOffset:\n* use SDK hardcoded \"skipAdSeconds\"=");
sb2.append(f);
sb2.append("\n");
}
}
if (f < VastAdRenderer.DEFAULT_END_CARD_CLOSE_SECONDS) {
f = 0.0f;
}
return ((long) f) * 1000;
} catch (Throwable th) {
StabilityHelper.logException(this, th);
return 0L;
}
}
public static List<ApiFramework> getSupportedApiFrameworks() {
ArrayList arrayList = new ArrayList();
arrayList.add(ApiFramework.MRAID1);
arrayList.add(ApiFramework.MRAID2);
arrayList.add(ApiFramework.MRAID3);
arrayList.add(ApiFramework.OMID1);
return arrayList;
}
public void handleBridgeCall(Uri uri) throws Throwable {
char c;
String host = uri.getHost();
if (this.closingAd) {
return;
}
try {
switch (host.hashCode()) {
case -1289167206:
if (host.equals(MraidJsMethods.EXPAND)) {
c = 1;
break;
}
c = 65535;
break;
case -860879067:
if (host.equals("eventListenerWasAdded")) {
c = '\t';
break;
}
c = 65535;
break;
case -840442113:
if (host.equals(MraidJsMethods.UNLOAD)) {
c = 6;
break;
}
c = 65535;
break;
case -229840711:
if (host.equals("initBridge")) {
c = 3;
break;
}
c = 65535;
break;
case -117299164:
if (host.equals("splashAdExpand")) {
c = '\b';
break;
}
c = 65535;
break;
case 3417674:
if (host.equals("open")) {
c = 0;
break;
}
c = 65535;
break;
case 94756344:
if (host.equals("close")) {
c = 2;
break;
}
c = 65535;
break;
case 133423073:
if (host.equals(com.vungle.ads.internal.presenter.e.SET_ORIENTATION_PROPERTIES)) {
c = 5;
break;
}
c = 65535;
break;
case 1457578463:
if (host.equals("splashAdTransition")) {
c = 7;
break;
}
c = 65535;
break;
case 1614272768:
if (host.equals(MraidJsMethods.USE_CUSTOM_CLOSE)) {
c = 4;
break;
}
c = 65535;
break;
default:
c = 65535;
break;
}
switch (c) {
case 0:
onClickThrough(this.context, uri.getQueryParameter("url"));
break;
case 1:
if (!this.config.isFullscreenAd() && !this.expanded) {
this.bannerInlineLayoutParams = (RelativeLayout.LayoutParams) this.webView.getLayoutParams();
this.contentContainer.removeView(this.webViewContainer);
this.webView.setLayoutParams(new RelativeLayout.LayoutParams(-1, -1));
boolean parseBoolean = Boolean.parseBoolean(uri.getQueryParameter("allowOrientationChange"));
String queryParameter = uri.getQueryParameter("forceOrientation");
if (this.renderingActivity != null && queryParameter != null) {
this.notModifiedActivityOrientation = this.context.getResources().getConfiguration().orientation;
this.activityOrientationChanged = true;
Utils.lockOrientationFromExpand(this.renderingActivity, parseBoolean, queryParameter);
}
View rootView = this.contentContainer.getRootView();
this.webView.setScaleX(1.0f);
this.webView.setScaleY(1.0f);
PopupWindow popupWindow = new PopupWindow((View) this.webViewContainer, -1, -1, true);
this.bannerExpandedWindow = popupWindow;
popupWindow.showAtLocation(rootView, 48, 0, 0);
bridge_SetState("EXPANDED");
this.expanded = true;
addCloseButton(uri.getBooleanQueryParameter(MraidJsMethods.USE_CUSTOM_CLOSE, false));
this.closeBtn.show();
this.listener.onFullscreenChanged(true);
bridge_NotifySizeChangeEvent(this.screenWidth, this.screenHeight);
setCurrentPosition(this.screenWidth, this.screenHeight, 0, 0);
break;
}
return;
case 2:
requestAdClose();
break;
case 3:
Boolean bool = Boolean.TRUE;
this.isMraidBridgeLoaded = bool;
startListeningLayoutChange();
String str = this.config.isFullscreenAd() ? "Mraid.PlacementType.INTERSTITIAL" : "Mraid.PlacementType.INLINE";
this.webView.evaluateJavascript("mraid.bridge.setPlacementType(" + str + ");", null);
setSupports();
setAdProperties(bool);
bridge_SetState("DEFAULT");
bridge_NotifyReadyEvents();
onAdImpression();
break;
case 4:
addCloseButton(uri.getBooleanQueryParameter("shouldUseCustomClose", false));
break;
case 5:
setOrientationProperties(uri);
break;
case 6:
if (!this.showingAd) {
onAdRuntimeError(RtbLossReason.INTERNAL_ERROR);
break;
} else {
requestAdClose();
break;
}
case 7:
ExtendedController extendedController = this.extendedController;
if (extendedController instanceof SplashAdController) {
((SplashAdController) extendedController).requestTransition();
break;
}
break;
case '\b':
if (this.extendedController instanceof SplashAdController) {
removeCloseBtnOmidFriendlyObstruction();
((SplashAdController) this.extendedController).requestExpand();
break;
}
break;
case '\t':
verifyEventAdded(uri);
break;
default:
JsBridgeCallListener jsBridgeCallListener = this.jsBridgeCallListener;
if (jsBridgeCallListener == null || !jsBridgeCallListener.onBridgeCall(uri)) {
Log.w("Mraid", "Unimplemented command called: ".concat(host));
break;
}
break;
}
} catch (Throwable th) {
StabilityHelper.logException(this, th);
AdRendererListener adRendererListener = this.listener;
if (adRendererListener != null) {
adRendererListener.onAdRuntimeError(RtbLossReason.INTERNAL_ERROR);
}
}
WebView webView = this.webView;
if (webView != null) {
webView.evaluateJavascript("mraid.bridge.nativeCallComplete();", null);
}
}
public WebResourceResponse handleBridgeCallFromFetch(Uri uri) {
if (uri == null) {
return null;
}
try {
String uri2 = uri.toString();
if (uri2 == null) {
return null;
}
String str = WEB_VIEW_BASE_URL + "/mraid/";
if (!uri2.startsWith(str)) {
return null;
}
final Uri parse = Uri.parse(uri2.replace(str, "mraid://"));
this.handler.post(new Runnable() {
@Override
public void run() {
try {
MraidAdRenderer.this.handleBridgeCall(parse);
} catch (Throwable th) {
StabilityHelper.logException(this, th);
}
}
});
return new WebResourceResponse("text/plain", "utf-8", new ByteArrayInputStream("".getBytes()));
} catch (Throwable th) {
StabilityHelper.logException(this, th);
return null;
}
}
public Unit lambda$addCloseButton$10(Boolean bool) {
updateCloseBtnAsOmidFriendlyObstruction();
return Unit.a;
}
public Unit lambda$addCloseButton$8() {
dispatchSkipAdAvailability();
return Unit.a;
}
public Unit lambda$addCloseButton$9() {
try {
requestAdClose();
} catch (Throwable th) {
StabilityHelper.logException(this, th);
}
return Unit.a;
}
public void lambda$createContainer$0() {
try {
ViewTreeInspector viewTreeInspector = this.viewTreeInspector;
if (viewTreeInspector != null) {
viewTreeInspector.startObstructionsChecking();
}
} catch (Throwable th) {
StabilityHelper.logException(this, th);
}
}
public void lambda$createContainer$1() {
try {
ViewTreeInspector viewTreeInspector = this.viewTreeInspector;
if (viewTreeInspector != null) {
viewTreeInspector.stopObstructionsChecking();
}
} catch (Throwable th) {
StabilityHelper.logException(this, th);
}
}
public Unit lambda$createExternalController$5() {
try {
requestAdClose();
} catch (Throwable th) {
StabilityHelper.logException(this, th);
}
return Unit.a;
}
public Unit lambda$createExternalController$6(Throwable th) {
try {
closeAd(true);
} catch (Throwable unused) {
StabilityHelper.logException(this, th);
}
return Unit.a;
}
public Unit lambda$createExternalController$7(Boolean bool) {
if (this.closeBtn != null) {
if (bool.booleanValue()) {
this.closeBtn.show();
} else {
this.closeBtn.hide();
}
}
return Unit.a;
}
public void lambda$onAdImpression$2(List list) throws Throwable {
T t = this.omidBridge;
if (t == 0) {
return;
}
((MraidOmidBridge) t).removeAllFriendlyObstructions();
Iterator it = list.iterator();
while (it.hasNext()) {
View view = (View) it.next();
if (view != this.closeBtn && !this.externalFriendlyObstructions.contains(view)) {
((MraidOmidBridge) this.omidBridge).addFriendlyObstruction(view, OmidFriendlyObstructionPurpose.NOT_VISIBLE, null);
}
}
updateCloseBtnAsOmidFriendlyObstruction();
addRegisteredExternalFriendlyObstructions();
}
public void lambda$preloadAdmImpl$4() {
try {
onAdPreloaded();
} catch (Throwable th) {
StabilityHelper.logException(this, th);
}
}
public void lambda$requestAdClose$11() throws Throwable {
closeAd(false);
}
public void lambda$signalOmidAdImpression$3() {
try {
if (hasOmidBridge()) {
((MraidOmidBridge) this.omidBridge).signalAdImpressionEvent();
}
} catch (Throwable th) {
StabilityHelper.logException(this, th);
}
}
private void loadAdmInWebView(String str) throws Throwable {
String str2;
try {
str2 = new JSONObject().put("version", MraidEnvironmentProperties.VERSION).put("sdk", "mfx").put(SmaatoSdk.KEY_SDK_VERSION, this.config.getSdkVersion()).put("appId", this.context.getPackageName()).put(EidRequestBuilder.REQUEST_FIELD_IFA, this.config.getAdvertisingId()).put("limitAdTracking", this.config.isLimitTrackingEnabled()).put("coppa", this.config.isSubjectToCoppa()).put("debug", this.config.isTestMode()).toString();
} catch (JSONException e) {
StabilityHelper.logException(this, e);
str2 = "{}";
}
MobileFuseAssetManager.INSTANCE.getSpecificAssetContent("ad_template.html", this.context, new AnonymousClass5(str, "", com.mobilefuse.sdk.assetsmanager.a.m("<script>window.MRAID_ENV = ", str2, ";</script>")));
}
private void onAdImpression() {
WebView webView;
try {
webView = this.webView;
} catch (Throwable th) {
StabilityHelper.logException(this, th);
}
if (webView == null) {
return;
}
if (hasOmidBridge()) {
((MraidOmidBridge) this.omidBridge).initAdSession(this.context, webView);
updateCloseBtnAsOmidFriendlyObstruction();
addRegisteredExternalFriendlyObstructions();
((MraidOmidBridge) this.omidBridge).startAdSession();
((MraidOmidBridge) this.omidBridge).signalAdLoadedEvent();
ViewTreeInspector viewTreeInspector = new ViewTreeInspector(webView, new a(this));
this.viewTreeInspector = viewTreeInspector;
viewTreeInspector.startObstructionsChecking();
signalOmidAdImpression();
}
try {
reportAdImpression();
} catch (Throwable th2) {
StabilityHelper.logException(this, th2);
}
}
public void onAdmLoaded() {
try {
if (this.webView == null) {
return;
}
ExtendedController extendedController = this.extendedController;
if (extendedController != null) {
extendedController.onAdmLoaded();
}
this.contentContainer.hideProgressBar();
} catch (Throwable th) {
StabilityHelper.logException(this, th);
}
}
private void onClickThrough(Context context, String str) {
String processClickMacro;
if (str != null) {
try {
if (!str.isEmpty() && context != null) {
if (str.contains(CLICKTHROUGH_CONSTANT) && (processClickMacro = processClickMacro()) != null) {
str = str.replace(CLICKTHROUGH_CONSTANT, processClickMacro);
}
Intent intent = new Intent("android.intent.action.VIEW", Uri.parse(str));
intent.addFlags(268435456);
if (intent.resolveActivity(context.getPackageManager()) != null) {
context.startActivity(intent);
this.listener.onAdClicked(str);
return;
}
return;
}
} catch (Throwable th) {
StabilityHelper.logException(this, th);
return;
}
}
String str2 = "onClickThrough called but URL or context are null" + str;
Log.e("Mraid", str2);
Telemetry.logException(this, new Throwable(str2));
}
@Nullable
private String processClickMacro() {
AdmClickInfo admClickInfo;
try {
AdmClickInfoProvider admClickInfoProvider = this.admClickInfoProvider;
if (admClickInfoProvider != null && (admClickInfo = admClickInfoProvider.getAdmClickInfo()) != null) {
sendEvents(admClickInfo.getClickTracking());
return admClickInfo.getClickThroughUrl();
}
} catch (Throwable th) {
StabilityHelper.logException(this, th);
}
return null;
}
private void removeCloseBtnOmidFriendlyObstruction() {
CloseButton closeButton;
try {
if (hasOmidBridge() && (closeButton = this.closeBtn) != null) {
((MraidOmidBridge) this.omidBridge).removeFriendlyObstruction(closeButton);
}
} catch (Throwable th) {
StabilityHelper.logException(this, th);
}
}
private void removeCloseButton() throws Throwable {
CloseButton closeButton = this.closeBtn;
if (closeButton == null) {
return;
}
try {
((ViewGroup) closeButton.getParent()).removeView(this.closeBtn);
} catch (Throwable unused) {
}
this.closeBtn.destroy();
this.closeBtn = null;
}
private void requestAdClose() throws Throwable {
this.closingAd = true;
if (this.expanded) {
bridge_SetState("DEFAULT");
} else if (this.config.isFullscreenAd()) {
bridge_SetState("HIDDEN");
}
ExtendedController extendedController = this.extendedController;
if (extendedController != null) {
extendedController.requestAdClose(new a(this));
} else {
closeAd(false);
}
}
private void requestAdPositionUpdate() throws Throwable {
((MraidAdRendererContainer) this.contentContainer).checkPosition();
}
private void sendEvents(List<String> list) {
AdClickTracker.sendEvents(list);
}
public void setAdProperties(Boolean bool) {
try {
if (this.isMraidBridgeLoaded.booleanValue()) {
setCurrentAppOrientation();
setScreenDimensions();
setMaxSizeAndPosition(bool);
}
} catch (Throwable th) {
StabilityHelper.logException(this, th);
}
}
private void setCurrentAppOrientation() throws Throwable {
if (this.webView == null) {
return;
}
try {
Activity activity = this.renderingActivity;
String str = activity != null ? activity.getResources().getConfiguration().orientation == 1 ? "portrait" : "landscape" : "none";
JSONObject jSONObject = new JSONObject();
jSONObject.put(AdUnitActivity.EXTRA_ORIENTATION, str);
jSONObject.put("locked", false);
String jSONObject2 = jSONObject.toString();
this.webView.evaluateJavascript("mraid.bridge.setCurrentAppOrientation(" + jSONObject2 + ");", null);
} catch (Throwable th) {
StabilityHelper.logException(this, th);
}
}
public void setCurrentPosition(int i, int i2, int i3, int i4) {
WebView webView = this.webView;
StringBuilder r = com.mobilefuse.sdk.assetsmanager.a.r(i3, i4, "mraid.bridge.setCurrentPosition({\"x\": ", ", \"y\": ", ", \"width\": ");
r.append(i);
r.append(", \"height\": ");
r.append(i2);
r.append("});");
webView.evaluateJavascript(r.toString(), null);
}
private void setLocation() {
LocationData lastKnownLocationData;
try {
if (this.config.isLimitTrackingEnabled() || (lastKnownLocationData = GetLastKnownLocationDataKt.getLastKnownLocationData()) == null) {
return;
}
this.webView.evaluateJavascript("mraid.bridge.setLocation({\"lat\": " + lastKnownLocationData.getLatitude() + ", \"lon\": " + lastKnownLocationData.getLongitude() + ", \"type\": 1, \"accuracy\": " + lastKnownLocationData.getAccuracy() + ", \"lastfix\": " + lastKnownLocationData.getLastFixSeconds() + "});", null);
} catch (Throwable th) {
StabilityHelper.logException(this, th);
}
}
private void setOrientationProperties(Uri uri) throws Throwable {
int i;
int i2 = 2;
if (this.renderingActivity == null) {
return;
}
boolean parseBoolean = Boolean.parseBoolean(uri.getQueryParameter("allowOrientationChange"));
String queryParameter = uri.getQueryParameter("forceOrientation");
if (this.expanded || this.config.isFullscreenAd()) {
if (parseBoolean) {
this.renderingActivity.setRequestedOrientation(-1);
return;
}
i = this.context.getResources().getConfiguration().orientation;
queryParameter.getClass();
switch (queryParameter) {
case "none":
i2 = i;
break;
case "portrait":
i2 = 1;
break;
case "landscape":
break;
default:
i2 = 0;
break;
}
Utils.setActivityOrientation(this.renderingActivity, i2);
}
}
private void setScreenDimensions() {
try {
if (this.webView == null) {
return;
}
int[] screenSizeAsPixels = Utils.getScreenSizeAsPixels(this.context);
this.screenWidth = convertPxToDp(screenSizeAsPixels[0]);
this.screenHeight = convertPxToDp(screenSizeAsPixels[1]);
this.webView.evaluateJavascript("mraid.bridge.setScreenSize({\"width\": " + this.screenWidth + ", \"height\": " + this.screenHeight + "});", null);
} catch (Throwable th) {
StabilityHelper.logException(this, th);
}
}
private void setSupports() throws Throwable {
Map<String, Boolean> mraidSupportsList;
if (this.webView == null) {
return;
}
try {
JSONObject jSONObject = new JSONObject();
jSONObject.put("sms", MraidFeatureDetection.getSmsSupport());
jSONObject.put("tel", MraidFeatureDetection.getTelSupport());
jSONObject.put("calendar", false);
jSONObject.put("storePicture", false);
jSONObject.put("inlineVideo", true);
jSONObject.put("ar", true);
jSONObject.put("barometricPressure", true);
jSONObject.put("vpaid", Premium.Premium());
jSONObject.put("location", MraidFeatureDetection.getLocationSupport());
JsBridgeCallListener jsBridgeCallListener = this.jsBridgeCallListener;
if (jsBridgeCallListener != null && (mraidSupportsList = jsBridgeCallListener.getMraidSupportsList()) != null) {
for (Map.Entry<String, Boolean> entry : mraidSupportsList.entrySet()) {
jSONObject.put(entry.getKey(), entry.getValue());
}
}
if (this.extendedAdType == MraidExtendedAdType.SPLASH) {
jSONObject.put("splashAd", true);
}
if (this.config.isFullscreenAd()) {
jSONObject.put("transparentBackground", true);
}
String jSONObject2 = jSONObject.toString();
this.webView.evaluateJavascript("mraid.bridge.setSupports(" + jSONObject2 + ");", null);
if (MraidFeatureDetection.getLocationSupport()) {
setLocation();
}
} catch (Throwable th) {
StabilityHelper.logException(this, th);
}
}
public boolean shouldOverrideUrl(String str) {
if (str == null) {
return true;
}
try {
Uri parse = Uri.parse(str);
String scheme = parse.getScheme();
if (scheme == null) {
return true;
}
if (scheme.equals("mraid")) {
handleBridgeCall(parse);
return true;
}
onClickThrough(this.context, str);
return true;
} catch (Throwable th) {
throw new RuntimeException(th);
}
}
private void signalOmidAdImpression() {
this.handler.postDelayed(new c(this, 0), 200L);
}
private void updateCloseBtnAsOmidFriendlyObstruction() {
CloseButton closeButton;
try {
if (hasOmidBridge() && (closeButton = this.closeBtn) != null) {
removeCloseBtnOmidFriendlyObstruction();
if (closeButton.isVisible()) {
((MraidOmidBridge) this.omidBridge).addFriendlyObstruction(closeButton, OmidFriendlyObstructionPurpose.CLOSE_AD, null);
}
}
} catch (Throwable th) {
StabilityHelper.logException(this, th);
}
}
private void updateWebViewBackgroundColor() throws Throwable {
WebView webView;
if (isTransparentBackground() || (webView = this.webView) == null) {
return;
}
webView.setBackgroundColor(this.adBackgroundColor);
this.webViewContainer.setBackgroundColor(this.adBackgroundColor);
this.contentContainer.setBackgroundColor(this.adBackgroundColor);
}
private void verifyEventAdded(android.net.Uri r4) {
throw new UnsupportedOperationException("Method not decompiled: com.mobilefuse.sdk.mraid.MraidAdRenderer.verifyEventAdded(android.net.Uri):void");
}
@Override
public void applyCurrentBackgroundColor() throws Throwable {
updateWebViewBackgroundColor();
}
@Override
public void destroy() throws Throwable {
try {
super.destroy();
ViewTreeInspector viewTreeInspector = this.viewTreeInspector;
if (viewTreeInspector != null) {
viewTreeInspector.stopObstructionsChecking();
this.viewTreeInspector = null;
}
WebView webView = this.webView;
if (webView != null) {
if (webView.getParent() != null) {
((ViewGroup) this.webView.getParent()).removeView(this.webView);
}
OmidWebViewReleaser.scheduleWebViewRelease(this.webView);
this.webView = null;
}
removeCloseButton();
Handler handler = this.handler;
if (handler != null) {
handler.removeCallbacksAndMessages(null);
}
dismissBannerExpandedWindow();
AdRendererContainer adRendererContainer = this.contentContainer;
if (adRendererContainer != null) {
((MraidAdRendererContainer) adRendererContainer).setViewableChangeListener(null);
if (this.contentContainer.getParent() != null) {
((ViewGroup) this.contentContainer.getParent()).removeView(this.contentContainer);
}
this.contentContainer = null;
}
ExtendedController extendedController = this.extendedController;
if (extendedController != null) {
extendedController.unbindContent();
this.extendedController = null;
}
} catch (Throwable th) {
StabilityHelper.logException(this, th);
}
}
@Override
public View getAdView() throws Throwable {
return this.contentContainer;
}
@Override
public View.OnLayoutChangeListener getOnLayoutChangeListener(Context context) throws Throwable {
return new View.OnLayoutChangeListener() {
@Override
public void onLayoutChange(View view, int i, int i2, int i3, int i4, int i5, int i6, int i7, int i8) {
if (i3 == i7 && i4 == i8) {
return;
}
try {
MraidAdRenderer.this.setAdProperties(Boolean.FALSE);
if (((BaseAdRenderer) MraidAdRenderer.this).extendedController != null) {
((BaseAdRenderer) MraidAdRenderer.this).extendedController.invalidateLayout();
}
} catch (Throwable th) {
StabilityHelper.logException(this, th);
}
}
};
}
@Override
public void onActivityPauseImpl() throws Throwable {
dispatchAdmExposureChangeEvent(0.0d, 0.0d, 0.0d, null);
ViewTreeInspector viewTreeInspector = this.viewTreeInspector;
if (viewTreeInspector != null) {
viewTreeInspector.stopObstructionsChecking();
}
}
@Override
public void onActivityResumeImpl() throws Throwable {
requestAdPositionUpdate();
ViewTreeInspector viewTreeInspector = this.viewTreeInspector;
if (viewTreeInspector != null) {
viewTreeInspector.startObstructionsChecking();
}
}
@Override
public boolean onAdCloseRequested() {
try {
if (!(this.extendedController instanceof SplashAdController)) {
return true;
}
requestAdClose();
return false;
} catch (Throwable th) {
StabilityHelper.logException(this, th);
return true;
}
}
@Override
public void preloadAdmImpl(String str) throws Throwable {
this.handler.postDelayed(new c(this, 3), 200L);
}
@Override
public void renderAdmImpl() throws Throwable {
CloseButton closeButton;
if (this.extendedAdType == MraidExtendedAdType.INTERSTITIAL_TRANSPARENT) {
this.contentContainer.showProgressBarWithDelay(PROGRESS_BAR_SHOW_DELAY);
}
if ((this.config.isFullscreenAd() || this.config.isCloseButtonEnabled()) && (closeButton = this.closeBtn) != null) {
closeButton.showWithDelay(getCloseButtonShowDelay());
}
createWebView();
createExternalController();
if (this.adm.indexOf("http") == 0) {
this.webViewLoadContentType = WebViewLoadContentType.URL;
this.webView.loadUrl(this.adm);
} else if (this.adm.indexOf("chrome://crash") == 0 && webViewCrashTestAllowed) {
this.webViewLoadContentType = WebViewLoadContentType.URL;
this.webView.loadUrl(this.adm);
} else {
this.webViewLoadContentType = WebViewLoadContentType.ADM;
loadAdmInWebView(this.adm);
}
ExtendedController extendedController = this.extendedController;
if (extendedController != null) {
extendedController.bindContent(this.contentContainer, this.renderingActivity);
}
this.webViewContainer.addView(this.webView, 0, new RelativeLayout.LayoutParams(-1, -1));
this.showingAd = true;
}
@Override
public void setAdLifecycleEventListener(AdLifecycleEventListener adLifecycleEventListener) throws Throwable {
super.setAdLifecycleEventListener(adLifecycleEventListener);
}
public void setJsBridgeCallListener(@Nullable JsBridgeCallListener jsBridgeCallListener) {
this.jsBridgeCallListener = jsBridgeCallListener;
}
public void setMaxSizeAndPosition(final Boolean bool) {
try {
this.webViewContainer.post(new Runnable() {
@Override
public void run() {
try {
if (MraidAdRenderer.this.webView == null) {
return;
}
MraidAdRenderer mraidAdRenderer = MraidAdRenderer.this;
int convertPxToDp = mraidAdRenderer.convertPxToDp(mraidAdRenderer.webView.getWidth());
MraidAdRenderer mraidAdRenderer2 = MraidAdRenderer.this;
int convertPxToDp2 = mraidAdRenderer2.convertPxToDp(mraidAdRenderer2.webView.getHeight());
int[] iArr = new int[2];
MraidAdRenderer.this.webView.getLocationOnScreen(iArr);
int convertPxToDp3 = MraidAdRenderer.this.convertPxToDp(iArr[0]);
int convertPxToDp4 = MraidAdRenderer.this.convertPxToDp(iArr[1]);
MraidAdRenderer.this.setCurrentPosition(convertPxToDp, convertPxToDp2, convertPxToDp3, convertPxToDp4);
if (bool.booleanValue()) {
MraidAdRenderer.this.webView.evaluateJavascript("mraid.bridge.setDefaultPosition({\"x\": " + convertPxToDp3 + ", \"y\": " + convertPxToDp4 + ", \"width\": " + convertPxToDp + ", \"height\": " + convertPxToDp2 + "});", null);
} else {
MraidAdRenderer.this.bridge_NotifySizeChangeEvent(convertPxToDp, convertPxToDp2);
}
int i = MraidAdRenderer.this.screenWidth;
int i2 = MraidAdRenderer.this.screenHeight;
if (((BaseAdRenderer) MraidAdRenderer.this).renderingActivity != null) {
Rect rect = new Rect();
((BaseAdRenderer) MraidAdRenderer.this).renderingActivity.getWindow().getDecorView().getWindowVisibleDisplayFrame(rect);
int convertPxToDp5 = MraidAdRenderer.this.convertPxToDp(rect.width());
i2 = MraidAdRenderer.this.convertPxToDp(rect.height());
i = convertPxToDp5;
}
MraidAdRenderer.this.webView.evaluateJavascript("mraid.bridge.setMaxSize({\"width\": " + i + ", \"height\": " + i2 + "});", null);
} catch (Throwable th) {
StabilityHelper.logException(this, th);
}
}
});
} catch (Throwable th) {
StabilityHelper.logException(this, th);
}
}
}