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

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


package com.tencent.mtt.external.novel.pirate.rn;

import android.os.Bundle;
import android.text.TextUtils;
import android.webkit.ValueCallback;
import androidx.exifinterface.media.ExifInterface;
import com.tencent.common.manifest.EventEmiter;
import com.tencent.common.manifest.EventMessage;
import com.tencent.common.task.QBTask;
import com.tencent.common.utils.StringUtils;
import com.tencent.common.utils.UrlUtils;
import com.tencent.mtt.apkplugin.impl.IAPInjectService;
import com.tencent.mtt.base.nativeframework.NativePage;
import com.tencent.mtt.base.stat.StatManager;
import com.tencent.mtt.base.stat.utils.PlatformStatUtils;
import com.tencent.mtt.base.webview.QBWebView;
import com.tencent.mtt.base.wup.PreferenceData;
import com.tencent.mtt.browser.plugin.facade.IPluginService;
import com.tencent.mtt.browser.window.IWebView;
import com.tencent.mtt.browser.window.UrlParams;
import com.tencent.mtt.browser.window.WindowManager;
import com.tencent.mtt.browser.window.templayer.QBWebviewWrapper;
import com.tencent.mtt.businesscenter.facade.IFrameworkDelegate;
import com.tencent.mtt.businesscenter.facade.IWebPageStatService;
import com.tencent.mtt.external.novel.base.tools.NovelUtils;
import com.tencent.mtt.external.novel.pirate.hover.PirateNovelReaderModeMgr;
import com.tencent.mtt.external.novel.pirate.rn.data.PirateBookInfo;
import com.tencent.mtt.external.novel.pirate.rn.data.PirateCacheManager;
import com.tencent.mtt.external.novel.pirate.rn.data.PirateDecodeUtils;
import com.tencent.mtt.external.novel.pirate.rn.data.PirateJsCache;
import com.tencent.mtt.external.novel.pirate.rn.data.PirateJsError;
import com.tencent.mtt.external.novel.pirate.rn.data.PirateLocalDomainManager;
import com.tencent.mtt.external.novel.pirate.rn.data.PirateLocalStorageManager;
import com.tencent.mtt.external.novel.pirate.rn.data.PiratePageCycleListener;
import com.tencent.mtt.external.novel.pirate.rn.js.PirateJsData;
import com.tencent.mtt.external.pagetoolbox.facade.IPageToolBoxGuideService;
import com.tencent.mtt.external.pagetoolbox.facade.PageToolBoxGuideBean;
import com.tencent.mtt.log.access.Logs;
import com.tencent.mtt.qbcontext.core.QBContext;
import com.tencent.mtt.setting.PublicSettingManager;
import com.tencent.mtt.view.toast.MttToaster;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.Callable;
import java.util.regex.Pattern;

public class PirateDefaultJsCallback implements PirateJsViewCallback {

    private static String f55385b;

    private QBWebView f55386a;

    static {
        Logs.a("PirateNovel", new String[]{"PirateDefaultJsCallback"});
        f55385b = "";
    }

    public PirateDefaultJsCallback(QBWebView qBWebView) {
        this.f55386a = qBWebView;
    }

    private Bundle a(String str, String str2) {
        Bundle bundle = new Bundle();
        if (TextUtils.isEmpty(str2)) {
            bundle.putString("serialInfo", str);
        }
        return bundle;
    }

    private String a(boolean z, boolean z2, String str) {
        StringBuilder sb;
        String str2;
        if (!z) {
            sb = new StringBuilder();
            sb.append(str);
            str2 = "&ch=004667";
        } else if (z2) {
            sb = new StringBuilder();
            sb.append(str);
            str2 = "&ch=004590";
        } else {
            sb = new StringBuilder();
            sb.append(str);
            str2 = "&ch=004592";
        }
        sb.append(str2);
        return sb.toString();
    }

    private HashMap<String, String> a(PirateJsData pirateJsData, boolean z, String str, String str2) {
        HashMap<String, String> hashMap = new HashMap<>();
        if (TextUtils.isEmpty(str)) {
            hashMap.put("page_url", TextUtils.isEmpty(pirateJsData.f55635d) ? "" : pirateJsData.f55635d);
        } else {
            hashMap.put("page_url", str);
        }
        if (TextUtils.isEmpty(str2)) {
            hashMap.put("catalog_url", "");
        } else {
            hashMap.put("catalog_url", str2);
        }
        hashMap.put("apn_type", PirateUtils.a());
        hashMap.put("domain_in_whitelist", z ? ExifInterface.GPS_DIRECTION_TRUE : "F");
        Map<String, String> a2 = PirateCacheManager.a().a(hashMap.get("page_url"));
        if (a2 != null && !a2.isEmpty()) {
            hashMap.putAll(a2);
        }
        return hashMap;
    }

    private boolean a(PirateJsData pirateJsData, boolean z, String str) {
        return z && (PirateLocalStorageManager.a().a(pirateJsData.f55635d) || PirateLocalDomainManager.a().b(pirateJsData.f55635d) || (!TextUtils.isEmpty(str) && Pattern.matches(str, pirateJsData.f55635d)));
    }

    private boolean a(String str, boolean z) {
        return (TextUtils.isEmpty(str) || !z || this.f55386a == null) ? false : true;
    }

    public void b(final IWebView iWebView) {
        if (a(iWebView)) {
            return;
        }
        if (iWebView instanceof QBWebviewWrapper) {
            iWebView.canEnterReadMode(new ValueCallback<Boolean>() {
                @Override
                public void onReceiveValue(Boolean bool) {
                    if (bool == null || !bool.booleanValue()) {
                        MttToaster.show("当前网页不支持阅读模式", 0);
                    } else {
                        iWebView.enterReadMode(new ValueCallback<Boolean>() {
                            @Override
                            public void onReceiveValue(Boolean bool2) {
                            }
                        }, new Runnable() {
                            @Override
                            public void run() {
                                iWebView.back(false);
                            }
                        });
                    }
                }
            });
        } else {
            MttToaster.show("当前网页不支持阅读模式", 0);
        }
    }

    private void b(final String str) {
        if (!TextUtils.isEmpty(str) && StringUtils.b(PreferenceData.a("PIRATE_NOVEL_SHOWREADMODEGUID_SWITCH"), 0) == 2) {
            final IWebView u = WindowManager.a().u();
            PlatformStatUtils.a("PAGE_RECOGNIZED_IS_NOVEL_SITE");
            u.canEnterReadMode(new ValueCallback<Boolean>() {
                @Override
                public void onReceiveValue(Boolean bool) {
                    if (bool == null || !bool.booleanValue()) {
                        PlatformStatUtils.a("PAGE_RECOGNIZED_IS_NOVEL_SITE_CANNOT_READMODE");
                        Logs.c("PirateDefaultJsCallback", "showReadModeGuid onReceiveValue false");
                    } else {
                        PirateDefaultJsCallback.this.a(str, u);
                        PlatformStatUtils.a("PAGE_RECOGNIZED_IS_NOVEL_SITE_CAN_READMODE");
                    }
                }
            });
            Logs.c("PirateDefaultJsCallback", "showReadModeGuid url = " + str);
        }
    }

    private boolean c(PirateJsData pirateJsData, String str, PirateJsError pirateJsError) {
        String str2;
        NovelUtils.a(System.currentTimeMillis(), "startPush", pirateJsData.f55635d);
        if (pirateJsError != null) {
            return false;
        }
        boolean z = PublicSettingManager.a().getInt("novel_pirate_decode_read_on_off", 0) != 2;
        boolean b2 = NovelDecodeDomainManager.a().b(pirateJsData.f55635d);
        if (z) {
            if (TextUtils.isEmpty(str)) {
                HashMap hashMap = new HashMap();
                hashMap.put("page_url", TextUtils.isEmpty(pirateJsData.f55635d) ? "" : pirateJsData.f55635d);
                hashMap.put("catalog_url", "");
                hashMap.put("apn_type", PirateUtils.a());
                hashMap.put("domain_in_whitelist", b2 ? ExifInterface.GPS_DIRECTION_TRUE : "F");
                Map<String, String> a2 = PirateCacheManager.a().a((String) hashMap.get("page_url"));
                if (a2 != null && !a2.isEmpty()) {
                    hashMap.putAll(a2);
                }
                PirateNovelReport.a((HashMap<String, String>) hashMap);
                PirateUtils.a(10004, 0L, "", hashMap);
                str2 = "openContentPage failed jsValue = null";
            } else {
                String a3 = PirateDecodeUtils.a(str, "url");
                String a4 = PirateDecodeUtils.a(str, "catalogUrl");
                String a5 = PirateDecodeUtils.a(str, "exceptionMsg");
                String a6 = PirateDecodeUtils.a(str, "title");
                if (!TextUtils.isEmpty(a5)) {
                    HashMap<String, String> a7 = a(pirateJsData, b2, a3, a4);
                    PirateNovelReport.a(a7, a5);
                    PirateUtils.a(10004, 0L, a5, a7);
                    PirateNovelReport.a(10004, a3, a4, a6);
                    str2 = "openContentPage failed exceptionMsg = " + a5;
                }
            }
            Logs.c("PirateDefaultJsCallback", str2);
            return false;
        }
        if (TextUtils.equals(f55385b, pirateJsData.f55635d)) {
            str2 = "openContentPage call showReadModeGuid";
            Logs.c("PirateDefaultJsCallback", str2);
            return false;
        }
        f55385b = pirateJsData.f55635d;
        Logs.c("PirateDefaultJsCallback", "realOpenContentPage ...");
        return a(pirateJsData, str, b2);
    }

    private boolean c(String str) {
        return TextUtils.isEmpty(str) || TextUtils.equals(IAPInjectService.EP_NULL, str);
    }

    @Override
    public String a(final QBWebView qBWebView, final String str, String str2, String str3) {
        String b2 = PirateCacheManager.a().b(str);
        if (TextUtils.isEmpty(b2) && qBWebView != null) {
            QBTask.b((Callable) new Callable<Object>() {
                @Override
                public Object call() throws Exception {
                    qBWebView.loadUrl(str);
                    return null;
                }
            });
        }
        return b2;
    }

    @Override
    public void a() {
    }

    public void a(int i) {
        IWebPageStatService iWebPageStatService;
        String str;
        if (i == 1) {
            iWebPageStatService = (IWebPageStatService) QBContext.getInstance().getService(IWebPageStatService.class);
            str = "web_0107";
        } else if (i == 2) {
            ((IWebPageStatService) QBContext.getInstance().getService(IWebPageStatService.class)).stat("web_0108");
            StatManager.b().c("BZQBH1013_1");
            return;
        } else if (i == 3) {
            iWebPageStatService = (IWebPageStatService) QBContext.getInstance().getService(IWebPageStatService.class);
            str = "web_0109";
        } else {
            if (i != 4) {
                return;
            }
            iWebPageStatService = (IWebPageStatService) QBContext.getInstance().getService(IWebPageStatService.class);
            str = "web_0106";
        }
        iWebPageStatService.stat(str);
    }

    @Override
    public void a(QBWebView qBWebView, String str, String str2, String str3, int i) {
    }

    @Override
    public void a(PirateBookInfo pirateBookInfo, String str) {
    }

    @Override
    public void a(PirateJsData pirateJsData, String str, PirateJsError pirateJsError) {
        if (pirateJsError == null) {
            PirateCacheManager.a().a(pirateJsData.f55635d, str);
        }
    }

    @Override
    public void a(String str) {
        PirateLocalDomainManager.a().a(str);
    }

    public void a(String str, final IWebView iWebView) {
        PageToolBoxGuideBean pageToolBoxGuideBean = new PageToolBoxGuideBean();
        pageToolBoxGuideBean.f56136a = IPluginService.PLUGIN_READ_MODE;
        pageToolBoxGuideBean.f56137b = str;
        pageToolBoxGuideBean.f = "开启";
        pageToolBoxGuideBean.f56138c = "阅读模式可用";
        pageToolBoxGuideBean.g = new Runnable() {
            @Override
            public void run() {
                PirateDefaultJsCallback.this.b(iWebView);
            }
        };
        pageToolBoxGuideBean.h = new PageToolBoxGuideBean.StatCallBack() {
            @Override
            public void a(int i) {
                PirateDefaultJsCallback.this.a(i);
            }
        };
        pageToolBoxGuideBean.a("https://res.imtt.qq.com/res_mtt/plugin/lottie/read_mode_guide_0814.json", "https://res.imtt.qq.com/res_mtt/plugin/lottie/read_mode_guide_0814_night.json");
        EventEmiter.getDefault().emit(new EventMessage(IPageToolBoxGuideService.EVENT_TOOL_GUIDE, pageToolBoxGuideBean));
        Logs.c("PirateDefaultJsCallback", "showReadModeGuid onReceiveValue true");
    }

    public boolean a(IWebView iWebView) {
        if (iWebView != null && !(iWebView instanceof NativePage) && (iWebView instanceof QBWebviewWrapper)) {
            String url = iWebView.getUrl();
            if (!TextUtils.isEmpty(url)) {
                return url.contains("mtt_in_readmode=1");
            }
        }
        return false;
    }

    public boolean a(PirateJsData pirateJsData, String str, boolean z) {
        if (c(str)) {
            Logs.c("PirateDefaultJsCallback", "openRnReader failed jsValue = null");
            return false;
        }
        final String a2 = PirateDecodeUtils.a(str, "originalPageUrl");
        if (!TextUtils.isEmpty(a2)) {
            PirateSiteInfoStatistics.a(pirateJsData, str, z);
        }
        if (a(a2, NovelDecodeDomainManager.a().b(a2))) {
            QBTask.b((Callable) new Callable<Object>() {
                @Override
                public Object call() throws Exception {
                    if (PirateDefaultJsCallback.this.f55386a != null) {
                        PirateDefaultJsCallback.this.f55386a.evaluateJavascript("window.location.replace('" + a2 + "')", null);
                    }
                    return null;
                }
            });
            return false;
        }
        if (b(pirateJsData, str, z)) {
            return false;
        }
        boolean z2 = PublicSettingManager.a().getInt("novel_pirate_decode_read_on_off", 0) != 2;
        String a3 = a(z, z2, ((("qb://ext/novelreader?mode=pirate") + "&from=pirateDefault") + "&pageUrl=" + UrlUtils.encode(pirateJsData.f55635d)) + "&appStartTime=" + System.currentTimeMillis());
        if (a(pirateJsData, z2, NovelDecodeDomainManager.a().c(pirateJsData.f55635d))) {
            PirateJsCache.a().a(pirateJsData.f55635d, str);
            if (WindowManager.a().u() instanceof PirateRNNativePage) {
                return false;
            }
        }
        Logs.c("PirateDefaultJsCallback", "openRnReader isDecodeOpen = " + z2 + ", isWhiteList = " + z);
        if (z2 && !z) {
            PirateNovelReport.b(str);
        }
        if (!z2 || !z) {
            return false;
        }
        PirateNovelReaderModeMgr.a(PiratePageCycleListener.getInstance().f55601d != -1, "PIRATENOVEL_READER_MODE", "startupReaderMode", pirateJsData.f55635d, System.currentTimeMillis() - PiratePageCycleListener.getInstance().f55601d);
        if (PirateNovelReaderModeMgr.b()) {
            return PirateNovelReaderModeMgr.a().a(pirateJsData.f55635d, a3, a(str, a2));
        }
        ((IFrameworkDelegate) QBContext.getInstance().getService(IFrameworkDelegate.class)).doLoad(new UrlParams(a3).b(1).a(a(str, a2)).c(0));
        return true;
    }

    @Override
    public void b(PirateJsData pirateJsData, String str, PirateJsError pirateJsError) {
        Logs.c("PirateDefaultJsCallback", "openContentPage");
        PirateNovelReport.a(pirateJsError);
        if (c(pirateJsData, str, pirateJsError) || pirateJsData == null) {
            PlatformStatUtils.a("PIRATENOVEL_SUCC_DEEP_READMODE");
            return;
        }
        Logs.c("PirateDefaultJsCallback", "openContentPage showReadModeGuid " + pirateJsData.f55635d);
        b(pirateJsData.f55635d);
    }

    public boolean b(PirateJsData pirateJsData, String str, boolean z) {
        return PirateNovelReport.a(pirateJsData, str, z, "PirateDefaultJsCallback");
    }
}