QQ浏览器 v12.2.3.7053版本的 MD5 值为:8285ab3059e5c8b521a264dfbc5c3685

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


package com.tencent.mtt.base.task;

import android.net.ConnectivityManager;
import android.net.Network;
import android.net.NetworkInfo;
import android.os.Build;
import android.os.Handler;
import android.os.Looper;
import android.os.Message;
import android.text.TextUtils;
import com.tencent.basesupport.FLogger;
import com.tencent.common.connectivity.ConnectivityAdapterHolder;
import com.tencent.common.http.Apn;
import com.tencent.mm.ui.widget.dialog.MMTipsBar;
import com.tencent.mtt.ContextHolder;
import java.util.ArrayList;
import java.util.Iterator;

public class WalledGardenDetector implements Handler.Callback, WalledGardenTaskObserver {

    public ArrayList<WalledGardenMessage> f33229a;

    private String f33231c;

    private ArrayList<BaseWalledGardenTask> f33232d;
    private WalledGardenDetectListener f;
    private ArrayList<WalledGardenMessage> h;
    private int e = -1;
    private boolean g = false;

    private Handler f33230b = new Handler(Looper.getMainLooper(), this);

    public interface WalledGardenDetectListener {
        void a(String str, int i, String str2);
    }

    private int a(WalledGardenDetectTask walledGardenDetectTask) {
        if (walledGardenDetectTask.c() == 0) {
            return 40;
        }
        if (walledGardenDetectTask.c() == 2) {
            return 30;
        }
        return walledGardenDetectTask.c() == 1 ? 20 : 10;
    }

    private Network a() {
        Network[] allNetworks;
        FLogger.d("WalledGardenDetector", "getWiFiNetWork");
        ConnectivityManager b2 = b();
        Network network = null;
        if (b2 != null) {
            try {
                if (Build.VERSION.SDK_INT >= 21 && (allNetworks = b2.getAllNetworks()) != null) {
                    for (Network network2 : allNetworks) {
                        FLogger.d("WalledGardenDetector", "XXX-network : " + network2);
                        NetworkInfo networkInfo = b2.getNetworkInfo(network2);
                        if (networkInfo != null && networkInfo.getType() == 1) {
                            network = network2;
                        }
                    }
                }
            } catch (Exception unused) {
            }
        }
        FLogger.d("WalledGardenDetector", "XXX-selected network : " + network);
        return network;
    }

    private void a(Network network) {
        this.f33230b.removeMessages(102);
        this.f33230b.removeMessages(103);
        Message obtainMessage = this.f33230b.obtainMessage();
        obtainMessage.what = 102;
        obtainMessage.obj = network;
        obtainMessage.arg1 = 1;
        this.f33230b.sendMessageDelayed(obtainMessage, 1000L);
        this.f33230b.sendEmptyMessageDelayed(103, 15000L);
    }

    private void a(BaseWalledGardenTask baseWalledGardenTask, WalledGardenDetectTask walledGardenDetectTask) {
        int a2 = a(walledGardenDetectTask);
        FLogger.d("WalledGardenDetector", "seq=1;detect SSID=" + this.f33231c + ";status=" + a2 + ";tag=" + baseWalledGardenTask.f33207a);
        int i = this.e;
        if (a2 != i && a2 > i) {
            this.e = a2;
        }
        this.h.add(walledGardenDetectTask.e());
        FLogger.d("WalledGardenDetector", "seq=2;mPendingStatus=" + this.e + ";mCurrentTasks.size()=" + this.f33232d.size() + ";mHandler.hasMessages(MSG_RUN_DETECT_TASK)=" + this.f33230b.hasMessages(102));
        if (this.f33232d.size() != 0 || this.f33230b.hasMessages(102)) {
            int i2 = this.e;
            if (i2 != 40 && i2 != 20 && i2 != 30) {
                return;
            }
            this.f33230b.removeMessages(102);
            Iterator<BaseWalledGardenTask> it = this.f33232d.iterator();
            while (it.hasNext()) {
                it.next().a();
            }
            ArrayList<WalledGardenMessage> arrayList = new ArrayList<>();
            arrayList.addAll(this.h);
            this.f33229a = arrayList;
            WalledGardenDetectListener walledGardenDetectListener = this.f;
            if (walledGardenDetectListener != null) {
                walledGardenDetectListener.a(this.f33231c, this.e, walledGardenDetectTask.d());
            }
            this.f33231c = null;
            this.f33232d.clear();
        } else {
            this.f33230b.removeMessages(102);
            this.f33230b.removeMessages(103);
            ArrayList<WalledGardenMessage> arrayList2 = new ArrayList<>();
            arrayList2.addAll(this.h);
            this.f33229a = arrayList2;
            WalledGardenDetectListener walledGardenDetectListener2 = this.f;
            if (walledGardenDetectListener2 != null) {
                walledGardenDetectListener2.a(this.f33231c, this.e, walledGardenDetectTask.d());
            }
            this.f33231c = null;
        }
        this.f33230b.removeMessages(102);
        this.f33230b.removeMessages(103);
    }

    private void a(String str) {
        NetworkInfo activeNetworkInfo;
        FLogger.d("WalledGardenDetector", "doDetect.................." + str);
        this.f33231c = str;
        ArrayList<BaseWalledGardenTask> arrayList = this.f33232d;
        if (arrayList != null && arrayList.size() > 0) {
            Iterator<BaseWalledGardenTask> it = this.f33232d.iterator();
            while (it.hasNext()) {
                it.next().a();
            }
        }
        if (this.f33232d == null) {
            this.f33232d = new ArrayList<>();
        }
        if (this.h == null) {
            this.h = new ArrayList<>();
        }
        this.h.clear();
        this.e = -1;
        boolean z = (Build.VERSION.SDK_INT < 21 || (activeNetworkInfo = Apn.getActiveNetworkInfo(false)) == null || activeNetworkInfo.getType() == 1) ? false : true;
        FLogger.d("WalledGardenDetector", "doDetect() needNetworkRequest: " + z);
        if (z) {
            try {
                a(a());
                return;
            } catch (Throwable th) {
                FLogger.d("WalledGardenDetector", "seq=1;exception=" + th.getMessage());
            }
        }
        a((Network) null);
    }

    private ConnectivityManager b() {
        try {
            try {
                return (ConnectivityManager) ContextHolder.getAppContext().getSystemService("connectivity");
            } catch (Exception unused) {
                return (ConnectivityManager) ContextHolder.getAppContext().getSystemService("connectivity");
            }
        } catch (Exception unused2) {
            return null;
        }
    }

    private void b(BaseWalledGardenTask baseWalledGardenTask) {
        if (this.f33232d.contains(baseWalledGardenTask)) {
            this.f33232d.remove(baseWalledGardenTask);
            if (baseWalledGardenTask == null || !(baseWalledGardenTask instanceof WalledGardenDetectTask)) {
                return;
            }
            WalledGardenDetectTask walledGardenDetectTask = (WalledGardenDetectTask) baseWalledGardenTask;
            if (TextUtils.isEmpty(this.f33231c) || TextUtils.equals(this.f33231c, walledGardenDetectTask.f33227c)) {
                a(baseWalledGardenTask, walledGardenDetectTask);
            }
        }
    }

    @Override
    public void a(BaseWalledGardenTask baseWalledGardenTask) {
        Message obtainMessage = this.f33230b.obtainMessage();
        obtainMessage.what = 101;
        obtainMessage.obj = baseWalledGardenTask;
        this.f33230b.sendMessage(obtainMessage);
    }

    @Override
    public boolean handleMessage(Message message) {
        StringBuilder sb;
        String str;
        switch (message.what) {
            case 100:
                if (message.obj == null) {
                    return false;
                }
                a((String) message.obj);
                return false;
            case 101:
                b((BaseWalledGardenTask) message.obj);
                return false;
            case 102:
                Network network = message.obj != null ? (Network) message.obj : null;
                WalledGardenDetectTask walledGardenDetectTask = new WalledGardenDetectTask();
                walledGardenDetectTask.b(this.f33231c);
                walledGardenDetectTask.a(this);
                walledGardenDetectTask.a(network);
                int i = message.arg1;
                FLogger.d("WalledGardenDetector", "ID============================" + i);
                if (i % 2 == 1) {
                    sb = new StringBuilder();
                    str = "QB204_";
                } else {
                    walledGardenDetectTask.a("https://connect.rom.miui.com/generate_204");
                    sb = new StringBuilder();
                    str = "MIUI204_";
                }
                sb.append(str);
                sb.append(i);
                walledGardenDetectTask.f33207a = sb.toString();
                this.f33232d.add(walledGardenDetectTask);
                ConnectivityAdapterHolder.a(walledGardenDetectTask);
                if (i < 4) {
                    Message obtainMessage = this.f33230b.obtainMessage();
                    obtainMessage.what = 102;
                    obtainMessage.obj = network;
                    obtainMessage.arg1 = i + 1;
                    this.f33230b.sendMessageDelayed(obtainMessage, MMTipsBar.DURATION_SHORT);
                    return false;
                }
                break;
            case 103:
                this.f33230b.removeMessages(102);
                Iterator<BaseWalledGardenTask> it = this.f33232d.iterator();
                while (it.hasNext()) {
                    it.next().a();
                }
                ArrayList<WalledGardenMessage> arrayList = new ArrayList<>();
                arrayList.addAll(this.h);
                this.f33229a = arrayList;
                WalledGardenDetectListener walledGardenDetectListener = this.f;
                if (walledGardenDetectListener != null) {
                    walledGardenDetectListener.a(this.f33231c, 10, "");
                }
                this.f33231c = null;
                this.f33232d.clear();
                break;
            default:
                return false;
        }
        this.f33230b.removeMessages(102);
        return false;
    }
}