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");
}
}