VidMate v4.2613版本的 MD5 值为:993482c79f779838c3f6749049d55510

以下内容为反编译后的 VungleWebClient.java 源代码,内容仅作参考


package com.vungle.warren.ui.view;

import android.net.Uri;
import android.os.Build;
import android.support.annotation.Nullable;
import android.text.TextUtils;
import android.util.Log;
import android.webkit.WebResourceError;
import android.webkit.WebResourceRequest;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import com.UCMobile.Apollo.codec.MediaFormat;
import com.google.gson.JsonObject;
import com.unity3d.ads.metadata.MediationMetaData;
import com.vungle.warren.DirectDownloadAdapter;
import com.vungle.warren.SDKDownloadClient;
import com.vungle.warren.model.Advertisement;
import com.vungle.warren.model.Placement;
import com.vungle.warren.ui.view.WebViewAPI;
import defpackage.aejc;
import java.util.Locale;

public class VungleWebClient extends WebViewClient implements WebViewAPI {
    public static final String TAG = "VungleWebClient";
    private WebViewAPI.MRAIDDelegate MRAIDDelegate;
    private Advertisement advertisement;
    private boolean collectConsent;
    private DirectDownloadAdapter directDownloadAdapter;
    private WebViewAPI.WebClientErrorListener errorListener;
    private String gdprAccept;
    private String gdprBody;
    private String gdprDeny;
    private String gdprTitle;
    private Boolean isViewable;
    private WebView loadedWebView;
    private Placement placement;
    private boolean ready = false;

    public VungleWebClient(Advertisement advertisement, Placement placement) {
        this.advertisement = advertisement;
        this.placement = placement;
    }

    @Override
    public void setConsentStatus(boolean z, @Nullable String str, @Nullable String str2, @Nullable String str3, @Nullable String str4) {
        this.collectConsent = z;
        this.gdprTitle = str;
        this.gdprBody = str2;
        this.gdprAccept = str3;
        this.gdprDeny = str4;
    }

    @Override
    public void setMRAIDDelegate(WebViewAPI.MRAIDDelegate mRAIDDelegate) {
        this.MRAIDDelegate = mRAIDDelegate;
    }

    @Override
    public boolean shouldOverrideUrlLoading(final WebView webView, String str) {
        Log.d(TAG, "MRAID Command " + str);
        if (TextUtils.isEmpty(str)) {
            Log.e(TAG, "Invalid URL ");
            return false;
        }
        Uri parse = Uri.parse(str);
        if (parse.getScheme() == null || !parse.getScheme().equals("mraid")) {
            return false;
        }
        String host = parse.getHost();
        if (host.equals("propertiesChangeCompleted") && !this.ready) {
            final JsonObject createMRAIDArgs = this.advertisement.createMRAIDArgs();
            if (this.directDownloadAdapter != null) {
                this.directDownloadAdapter.getSdkDownloadClient().setInstallStatusCheck(new SDKDownloadClient.InstallStatusCheck() {
                    @Override
                    public void isAppInstalled(boolean z, boolean z2) {
                        createMRAIDArgs.addProperty("isDirectDownload", (Boolean) true);
                        createMRAIDArgs.addProperty("isDisplayIAP", Boolean.valueOf(z2));
                        createMRAIDArgs.addProperty("isInstalled", Boolean.valueOf(z));
                        createMRAIDArgs.addProperty("locale", Locale.getDefault().toString());
                        createMRAIDArgs.addProperty(MediaFormat.KEY_LANGUAGE, Locale.getDefault().getLanguage());
                        webView.loadUrl("javascript:window.vungle.mraidBridge.notifyReadyEvent(" + createMRAIDArgs + ")");
                    }
                });
                this.directDownloadAdapter.getSdkDownloadClient().installStatusRequest();
            } else {
                webView.loadUrl("javascript:window.vungle.mraidBridge.notifyReadyEvent(" + createMRAIDArgs + ")");
            }
            this.ready = true;
        } else if (this.MRAIDDelegate != null) {
            JsonObject jsonObject = new JsonObject();
            for (String str2 : parse.getQueryParameterNames()) {
                jsonObject.addProperty(str2, parse.getQueryParameter(str2));
            }
            if (this.MRAIDDelegate.processCommand(host, jsonObject)) {
                webView.loadUrl("javascript:window.vungle.mraidBridge.notifyCommandComplete()");
            }
        }
        return true;
    }

    @Override
    public void onPageFinished(WebView webView, String str) {
        super.onPageFinished(webView, str);
        switch (this.advertisement.getAdType()) {
            case 0:
                webView.loadUrl("javascript:function actionClicked(action){Android.performAction(action);};");
                return;
            case 1:
                this.loadedWebView = webView;
                this.loadedWebView.setVisibility(0);
                notifyPropertiesChange(true);
                return;
            default:
                throw new IllegalArgumentException("Unknown Client Type!");
        }
    }

    @Override
    public void notifyPropertiesChange(boolean z) {
        if (this.loadedWebView != null) {
            JsonObject jsonObject = new JsonObject();
            JsonObject jsonObject2 = new JsonObject();
            jsonObject2.addProperty("width", Integer.valueOf(this.loadedWebView.getWidth()));
            jsonObject2.addProperty("height", Integer.valueOf(this.loadedWebView.getHeight()));
            JsonObject jsonObject3 = new JsonObject();
            jsonObject3.addProperty("x", (Number) 0);
            jsonObject3.addProperty("y", (Number) 0);
            jsonObject3.addProperty("width", Integer.valueOf(this.loadedWebView.getWidth()));
            jsonObject3.addProperty("height", Integer.valueOf(this.loadedWebView.getHeight()));
            JsonObject jsonObject4 = new JsonObject();
            jsonObject4.addProperty("sms", (Boolean) false);
            jsonObject4.addProperty("tel", (Boolean) false);
            jsonObject4.addProperty("calendar", (Boolean) false);
            jsonObject4.addProperty("storePicture", (Boolean) false);
            jsonObject4.addProperty("inlineVideo", (Boolean) false);
            jsonObject.add("maxSize", jsonObject2);
            jsonObject.add("screenSize", jsonObject2);
            jsonObject.add("defaultPosition", jsonObject3);
            jsonObject.add("currentPosition", jsonObject3);
            jsonObject.add("supports", jsonObject4);
            jsonObject.addProperty("placementType", this.advertisement.getTemplateType());
            if (this.isViewable != null) {
                jsonObject.addProperty("isViewable", this.isViewable);
            }
            jsonObject.addProperty("os", aejc.ANDROID_CLIENT_TYPE);
            jsonObject.addProperty("osVersion", Integer.toString(Build.VERSION.SDK_INT));
            jsonObject.addProperty("incentivized", Boolean.valueOf(this.placement.isIncentivized()));
            jsonObject.addProperty("enableBackImmediately", Boolean.valueOf(this.advertisement.getShowCloseDelay(this.placement.isIncentivized()) == 0));
            jsonObject.addProperty(MediationMetaData.KEY_VERSION, "1.0");
            if (this.collectConsent) {
                jsonObject.addProperty("consentRequired", (Boolean) true);
                jsonObject.addProperty("consentTitleText", this.gdprTitle);
                jsonObject.addProperty("consentBodyText", this.gdprBody);
                jsonObject.addProperty("consentAcceptButtonText", this.gdprAccept);
                jsonObject.addProperty("consentDenyButtonText", this.gdprDeny);
            } else {
                jsonObject.addProperty("consentRequired", (Boolean) false);
            }
            Log.d(TAG, "loadJsjavascript:window.vungle.mraidBridge.notifyPropertiesChange(" + jsonObject + "," + z + ")");
            this.loadedWebView.loadUrl("javascript:window.vungle.mraidBridge.notifyPropertiesChange(" + jsonObject + "," + z + ")");
        }
    }

    @Override
    public void setAdVisibility(boolean z) {
        this.isViewable = Boolean.valueOf(z);
        notifyPropertiesChange(false);
    }

    @Override
    public void setDownloadAdapter(DirectDownloadAdapter directDownloadAdapter) {
        this.directDownloadAdapter = directDownloadAdapter;
    }

    @Override
    public void setErrorListener(WebViewAPI.WebClientErrorListener webClientErrorListener) {
        this.errorListener = webClientErrorListener;
    }

    @Override
    public void onReceivedError(WebView webView, int i, String str, String str2) {
        super.onReceivedError(webView, i, str, str2);
        if (Build.VERSION.SDK_INT < 23) {
            Log.e(TAG, "Error desc " + str);
            Log.e(TAG, "Error for URL " + str2);
            String str3 = str2 + " " + str;
            if (this.errorListener != null) {
                this.errorListener.onReceivedError(str3);
            }
        }
    }

    @Override
    public void onReceivedError(WebView webView, WebResourceRequest webResourceRequest, WebResourceError webResourceError) {
        super.onReceivedError(webView, webResourceRequest, webResourceError);
        if (Build.VERSION.SDK_INT >= 23) {
            Log.e(TAG, "Error desc " + webResourceError.getDescription().toString());
            Log.e(TAG, "Error for URL " + webResourceRequest.getUrl().toString());
            String str = webResourceRequest.getUrl().toString() + " " + webResourceError.getDescription().toString();
            if (this.errorListener != null) {
                this.errorListener.onReceivedError(str);
            }
        }
    }
}