j.java 源代码


package com.moat.analytics.mobile.inm;

import android.annotation.TargetApi;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.Build;
import android.webkit.ValueCallback;
import android.webkit.WebView;
import androidx.annotation.NonNull;
import androidx.annotation.UiThread;
import androidx.localbroadcastmanager.content.LocalBroadcastManager;
import com.applovin.impl.sdk.utils.JsonUtils;
import com.moat.analytics.mobile.inm.s;
import com.moat.analytics.mobile.inm.w;
import com.umeng.analytics.pro.ai;
import java.lang.ref.WeakReference;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.WeakHashMap;
import java.util.concurrent.atomic.AtomicBoolean;
import org.json.JSONObject;

public class j {

    private int f19921a = 0;

    private boolean f19922b = false;

    private boolean f19923c = false;

    private final AtomicBoolean f19924d = new AtomicBoolean(false);

    private boolean f19925e = false;

    private boolean f19926f = false;

    private boolean f19927g = false;

    @NonNull
    private final WeakReference<WebView> f19928h;

    private final Map<b, String> f19929i;

    private final LinkedList<String> f19930j;

    private final long f19931k;

    private final String f19932l;

    private final List<String> f19933m;

    private final a f19934n;

    private final BroadcastReceiver f19935o;

    private final BroadcastReceiver f19936p;

    public enum a {
        WEBVIEW,
        NATIVE_DISPLAY,
        NATIVE_VIDEO
    }

    public j(WebView webView, a aVar) {
        BroadcastReceiver broadcastReceiver = new BroadcastReceiver() {
            @Override
            public void onReceive(Context context, Intent intent) {
                try {
                    j.this.d();
                } catch (Exception e6) {
                    m.a(e6);
                }
                if (System.currentTimeMillis() - j.this.f19931k > 30000) {
                    j.this.i();
                }
            }
        };
        this.f19935o = broadcastReceiver;
        BroadcastReceiver broadcastReceiver2 = new BroadcastReceiver() {
            @Override
            public void onReceive(Context context, Intent intent) {
                try {
                    j.this.e();
                } catch (Exception e6) {
                    m.a(e6);
                }
            }
        };
        this.f19936p = broadcastReceiver2;
        this.f19928h = new WeakReference<>(webView);
        this.f19934n = aVar;
        this.f19930j = new LinkedList<>();
        this.f19933m = new ArrayList();
        this.f19929i = new WeakHashMap();
        this.f19931k = System.currentTimeMillis();
        this.f19932l = String.format("javascript:(function(d,k){function l(){function d(a,b){var c=ipkn[b]||ipkn[kuea];if(c){var h=function(b){var c=b.b;c.ts=b.i;c.ticks=b.g;c.buffered=!0;a(c)};h(c.first);c.a.forEach(function(a){h(a)})}}function e(a){var b=a.a,c=a.c,h=a.b;a=a.f;var d=[];if(c)b[c]&&d.push(b[c].fn[0]);else for(key in b)if(b[key])for(var g=0,e=b[key].fn.length;g<e;g++)d.push(b[key].fn[g]);g=0;for(e=d.length;g<e;g++){var f=d[g];if('function'===typeof f)try{h?f(h):f()}catch(k){}a&&delete b[c]}}function f(a,b,c){'function'===typeof a&& (b===kuea&&c[b]?c[b].fn.push(a):c[b]={ts:+new Date,fn:[a]},c===yhgt&&d(a,b))}kuea=+new Date;iymv={};briz=!1;ewat=+new Date;bnkr=[];bjmk={};dptk={};uqaj={};ryup={};yhgt={};ipkn={};csif={};this.h=function(a){this.namespace=a.namespace;this.version=a.version;this.appName=a.appName;this.deviceOS=a.deviceOS;this.isNative=a.isNative;this.versionHash=a.versionHash;this.aqzx=a.aqzx;this.appId=a.appId;this.metadata=a};this.nvsj=function(a){briz||(f(a,ewat,iymv),briz=!0)};this.bpsy=function(a,b){var c=b||kuea; c!==kuea&&bjmk[c]||f(a,c,bjmk)};this.qmrv=function(a,b){var c=b||kuea;c!==kuea&&uqaj[c]||f(a,c,uqaj)};this.lgpr=function(a,b){f(a,b||kuea,yhgt)};this.hgen=function(a,b){f(a,b||kuea,csif)};this.xrnk=function(a){delete yhgt[a||kuea]};this.vgft=function(a){return dptk[a||kuea]||!1};this.lkpu=function(a){return ryup[a||kuea]||!1};this.crts=function(a){var b={a:iymv,b:a,c:ewat};briz?e(b):bnkr.push(a)};this.mqjh=function(a){var b=a||kuea;dptk[b]=!0;var c={a:bjmk,f:!0};b!==kuea&&(c.b=a,c.c=a);e(c)};this.egpw= function(a){var b=a||kuea;ryup[b]=!0;var c={a:uqaj,f:!0};b!==kuea&&(c.b=a,c.c=a);e(c)};this.sglu=function(a){var b=a.adKey||kuea,c={a:yhgt,b:a.event||a,g:1,i:+new Date,f:!1};b!==kuea&&(c.c=a.adKey);a=0<Object.keys(yhgt).length;if(!a||!this.isNative)if(ipkn[b]){var d=ipkn[b].a.slice(-1)[0]||ipkn[b].first;JSON.stringify(c.b)==JSON.stringify(d.b)?d.g+=1:(5<=ipkn[b].a.length&&ipkn[b].a.shift(),ipkn[b].a.push(c))}else ipkn[b]={first:c,a:[]};a&&e(c);return a};this.ucbx=function(a){e({c:a.adKey||kuea,a:csif, b:a.event,f:!1})}}'undefined'===typeof d.MoatMAK&&(d.MoatMAK=new l,d.MoatMAK.h(k),d.__zMoatInit__=!0)})(window,%s);", h());
        if (d("Initialize")) {
            IntentFilter intentFilter = new IntentFilter("UPDATE_METADATA");
            IntentFilter intentFilter2 = new IntentFilter("UPDATE_VIEW_INFO");
            LocalBroadcastManager.getInstance(s.c()).registerReceiver(broadcastReceiver, intentFilter);
            LocalBroadcastManager.getInstance(s.c()).registerReceiver(broadcastReceiver2, intentFilter2);
            d();
            i.a().a(s.c(), this);
            p.a(3, "JavaScriptBridge", this, "bridge initialization succeeded");
        }
    }

    static int b(j jVar) {
        int i6 = jVar.f19921a;
        jVar.f19921a = i6 + 1;
        return i6;
    }

    private void c() {
        Iterator<Map.Entry<b, String>> it = this.f19929i.entrySet().iterator();
        while (it.hasNext()) {
            b key = it.next().getKey();
            if (key.e()) {
                g(String.format("javascript: if(typeof MoatMAK !== 'undefined'){MoatMAK.mqjh(\"%s\");}", key.f19863e));
            }
        }
    }

    public void d() {
        try {
            if (w.a().f19999a == w.d.OFF) {
                return;
            }
            if (!this.f19923c) {
                p.a(3, "JavaScriptBridge", this, "Attempting to establish communication (setting environment variables).");
                this.f19923c = true;
            }
            g(this.f19932l);
        } catch (Exception e6) {
            p.a("JavaScriptBridge", this, "Attempt failed to establish communication (did not set environment variables).", e6);
        }
    }

    @TargetApi(19)
    public void e() {
        try {
            if (w.a().f19999a == w.d.OFF) {
                return;
            }
            if (this.f19927g) {
                p.a(3, "JavaScriptBridge", this, "Can't send info, already cleaned up");
                return;
            }
            if (f() && (!this.f19922b || g().getUrl() != null)) {
                if (g().getUrl() != null) {
                    this.f19922b = true;
                }
                Iterator<Map.Entry<b, String>> it = this.f19929i.entrySet().iterator();
                while (it.hasNext()) {
                    b key = it.next().getKey();
                    if (key == null || key.f() == null) {
                        p.a(3, "JavaScriptBridge", this, "Tracker has no subject");
                        if (key != null && key.f19864f) {
                        }
                        c(key);
                    }
                    if (key.e()) {
                        if (!this.f19924d.get()) {
                            g(String.format("javascript: if(typeof MoatMAK !== 'undefined'){MoatMAK.mqjh(\"%s\");}", key.f19863e));
                        }
                        g().evaluateJavascript(String.format("javascript: if(typeof MoatMAK !== 'undefined'){MoatMAK.sglu(%s);}", key.h()), new ValueCallback<String>() {
                            @Override
                            public void onReceiveValue(String str) {
                                String str2 = "null";
                                if (str != null && !str.equalsIgnoreCase("null") && !str.equalsIgnoreCase("false")) {
                                    if (str.equalsIgnoreCase("true")) {
                                        if (!j.this.f19926f) {
                                            j.this.f19926f = true;
                                            p.a(3, "JavaScriptBridge", j.this, "Javascript has found ad");
                                            j.this.a();
                                        }
                                        j.this.f19921a = 0;
                                        return;
                                    }
                                    p.a(3, "JavaScriptBridge", j.this, "Received unusual value from Javascript:".concat(str));
                                    return;
                                }
                                j jVar = j.this;
                                StringBuilder sb = new StringBuilder("Received value is:");
                                if (str != null) {
                                    str2 = "(String)".concat(str);
                                }
                                sb.append(str2);
                                p.a(3, "JavaScriptBridge", jVar, sb.toString());
                                if (j.this.f19921a >= 150) {
                                    p.a(3, "JavaScriptBridge", j.this, "Giving up on finding ad");
                                    j.this.b();
                                }
                                j.b(j.this);
                                if (str != null && str.equalsIgnoreCase("false") && !j.this.f19925e) {
                                    j.this.f19925e = true;
                                    p.a(3, "JavaScriptBridge", j.this, "Bridge connection established");
                                }
                            }
                        });
                    }
                }
                return;
            }
            StringBuilder sb = new StringBuilder("WebView became null");
            sb.append(g() == null ? "" : "based on null url");
            sb.append(", stopping tracking loop");
            p.a(3, "JavaScriptBridge", this, sb.toString());
            b();
        } catch (Exception e6) {
            m.a(e6);
            b();
        }
    }

    private WebView g() {
        return this.f19928h.get();
    }

    private String h() {
        try {
            s.a d6 = s.d();
            s.b e6 = s.e();
            HashMap hashMap = new HashMap();
            String a7 = d6.a();
            String b6 = d6.b();
            String c6 = d6.c();
            String num = Integer.toString(Build.VERSION.SDK_INT);
            String b7 = s.b();
            String str = "0";
            String str2 = this.f19934n == a.WEBVIEW ? "0" : "1";
            String str3 = e6.f19992e ? "1" : "0";
            String str4 = e6.f19991d ? "1" : "0";
            if (!((k) MoatAnalytics.getInstance()).b()) {
                str = "1";
            }
            hashMap.put("versionHash", "c334ae83accfebb8da23104450c896463c9cfab7");
            hashMap.put("appName", a7);
            hashMap.put("namespace", "INM");
            hashMap.put("version", "2.5.0");
            hashMap.put("deviceOS", num);
            hashMap.put("isNative", str2);
            hashMap.put(com.anythink.expressad.videocommon.e.b.f5542u, b6);
            hashMap.put("source", c6);
            hashMap.put(ai.P, e6.f19989b);
            hashMap.put("sim", e6.f19988a);
            hashMap.put("phone", String.valueOf(e6.f19990c));
            hashMap.put("buildFp", Build.FINGERPRINT);
            hashMap.put("buildModel", Build.MODEL);
            hashMap.put("buildMfg", Build.MANUFACTURER);
            hashMap.put("buildBrand", Build.BRAND);
            hashMap.put("buildProduct", Build.PRODUCT);
            hashMap.put("buildTags", Build.TAGS);
            hashMap.put("f1", str4);
            hashMap.put("f2", str3);
            hashMap.put("locationEnabled", str);
            if (b7 != null) {
                hashMap.put("aqzx", b7);
            }
            return new JSONObject(hashMap).toString();
        } catch (Exception unused) {
            return JsonUtils.EMPTY_JSON;
        }
    }

    public void i() {
        p.a(3, "JavaScriptBridge", this, "Stopping metadata reporting loop");
        i.a().a(this);
        LocalBroadcastManager.getInstance(s.c()).unregisterReceiver(this.f19935o);
    }

    protected void finalize() {
        try {
            super.finalize();
            p.a(3, "JavaScriptBridge", this, "finalize");
            b();
        } catch (Exception e6) {
            m.a(e6);
        }
    }

    private void d(b bVar) {
        p.a(3, "JavaScriptBridge", this, "Stopping view update loop");
        if (bVar != null) {
            i.a().a(bVar);
        }
    }

    private void f(String str) {
        if (this.f19924d.get()) {
            g(str);
        } else {
            e(str);
        }
    }

    public void b() {
        p.a(3, "JavaScriptBridge", this, "Cleaning up");
        this.f19927g = true;
        i();
        Iterator<Map.Entry<b, String>> it = this.f19929i.entrySet().iterator();
        while (it.hasNext()) {
            d(it.next().getKey());
        }
        this.f19929i.clear();
        LocalBroadcastManager.getInstance(s.c()).unregisterReceiver(this.f19936p);
    }

    public void c(b bVar) {
        m mVar = null;
        if (!this.f19927g) {
            try {
                if (d("stopTracking")) {
                    try {
                        p.a(3, "JavaScriptBridge", this, "Ending tracking on tracker" + bVar.f19863e);
                        g(String.format("javascript: if(typeof MoatMAK !== 'undefined'){MoatMAK.egpw(\"%s\");}", bVar.f19863e));
                    } catch (Exception e6) {
                        p.a("JavaScriptBridge", this, "Failed to end impression.", e6);
                    }
                }
            } catch (m e7) {
                mVar = e7;
            }
            if (this.f19934n == a.NATIVE_DISPLAY) {
                d(bVar);
            } else {
                b();
            }
            this.f19929i.remove(bVar);
        }
        if (mVar != null) {
            throw mVar;
        }
    }

    private void e(String str) {
        if (this.f19933m.size() >= 50) {
            this.f19933m.subList(0, 25).clear();
        }
        this.f19933m.add(str);
    }

    private boolean f() {
        return g() != null;
    }

    @UiThread
    private void g(String str) {
        if (this.f19927g) {
            p.a(3, "JavaScriptBridge", this, "Can't send, already cleaned up");
        } else if (f()) {
            p.b(2, "JavaScriptBridge", this, str);
            g().evaluateJavascript(str, null);
        }
    }

    public void a() {
        p.a(3, "JavaScriptBridge", this, "webViewReady");
        if (this.f19924d.compareAndSet(false, true)) {
            p.a(3, "JavaScriptBridge", this, "webViewReady first time");
            i();
            Iterator<String> it = this.f19933m.iterator();
            while (it.hasNext()) {
                g(it.next());
            }
            this.f19933m.clear();
        }
        c();
    }

    public void b(b bVar) {
        if (d("startTracking")) {
            p.a(3, "JavaScriptBridge", this, "Starting tracking on tracker" + bVar.f19863e);
            g(String.format("javascript: if(typeof MoatMAK !== 'undefined'){MoatMAK.mqjh(\"%s\");}", bVar.f19863e));
            i.a().a(s.c(), bVar);
        }
    }

    public void c(String str) {
        p.a(3, "JavaScriptBridge", this, "flushDispatchQueue");
        if (this.f19930j.size() >= 200) {
            LinkedList linkedList = new LinkedList();
            for (int i6 = 0; i6 < 10; i6++) {
                linkedList.addFirst(this.f19930j.removeFirst());
            }
            int min = Math.min(Math.min(this.f19930j.size() / 200, 10) + 200, this.f19930j.size());
            for (int i7 = 0; i7 < min; i7++) {
                this.f19930j.removeFirst();
            }
            Iterator it = linkedList.iterator();
            while (it.hasNext()) {
                this.f19930j.addFirst((String) it.next());
            }
        }
        if (!this.f19930j.isEmpty()) {
            StringBuilder sb = new StringBuilder();
            String str2 = "";
            int i8 = 1;
            while (!this.f19930j.isEmpty() && i8 < 200) {
                i8++;
                String removeFirst = this.f19930j.removeFirst();
                if (sb.length() + removeFirst.length() > 2000) {
                    break;
                }
                sb.append(str2);
                sb.append(removeFirst);
                str2 = ",";
            }
            g(String.format("javascript:%s.dispatchMany([%s])", str, sb.toString()));
        }
        this.f19930j.clear();
    }

    private boolean d(String str) {
        WebView g6 = g();
        if (g6 == null) {
            p.a(6, "JavaScriptBridge", this, "WebView is null. Can't ".concat(String.valueOf(str)));
            throw new m("WebView is null");
        }
        if (a(g6)) {
            return true;
        }
        p.a(6, "JavaScriptBridge", this, "JavaScript is not enabled in the given WebView. Can't ".concat(String.valueOf(str)));
        throw new m("JavaScript is not enabled in the WebView");
    }

    public void a(b bVar) {
        if (bVar != null) {
            p.a(3, "JavaScriptBridge", this, "adding tracker" + bVar.f19863e);
            this.f19929i.put(bVar, "");
        }
    }

    public void b(String str) {
        p.a(3, "JavaScriptBridge", this, "markUserInteractionEvent:".concat(String.valueOf(str)));
        f(String.format("javascript: if(typeof MoatMAK !== 'undefined'){MoatMAK.ucbx(%s);}", str));
    }

    public void a(String str) {
        f(String.format("javascript: if(typeof MoatMAK !== 'undefined'){MoatMAK.crts(%s);}", str));
    }

    @UiThread
    public void a(String str, JSONObject jSONObject) {
        if (this.f19927g) {
            p.a(3, "JavaScriptBridge", this, "Can't dispatch, already cleaned up");
            return;
        }
        String jSONObject2 = jSONObject.toString();
        if (this.f19924d.get() && f()) {
            g(String.format("javascript:%s.dispatchEvent(%s);", str, jSONObject2));
        } else {
            this.f19930j.add(jSONObject2);
        }
    }

    private boolean a(WebView webView) {
        return webView.getSettings().getJavaScriptEnabled();
    }
}