QQ浏览器 v12.2.3.7053版本的 MD5 值为:8285ab3059e5c8b521a264dfbc5c3685
以下内容为反编译后的 DefaultWebViewClientExtension.java 源代码,内容仅作参考
package com.tencent.mtt.businesscenter.page;
import android.os.Bundle;
import android.os.Handler;
import android.os.Looper;
import android.text.TextUtils;
import android.view.View;
import android.webkit.ValueCallback;
import android.widget.LinearLayout;
import com.tencent.common.featuretoggle.FeatureToggle;
import com.tencent.common.manifest.AppManifest;
import com.tencent.common.manifest.EventEmiter;
import com.tencent.common.manifest.EventMessage;
import com.tencent.common.manifest.annotation.CreateMethod;
import com.tencent.common.manifest.annotation.EventReceiver;
import com.tencent.common.threadpool.BrowserExecutorSupplier;
import com.tencent.common.utils.UrlUtils;
import com.tencent.mtt.R;
import com.tencent.mtt.base.functionwindow.IFunctionWndFactory;
import com.tencent.mtt.base.notification.facade.IMessageBubbleService;
import com.tencent.mtt.base.notification.facade.INotify;
import com.tencent.mtt.base.skin.MttResources;
import com.tencent.mtt.base.stat.utils.PlatformStatUtils;
import com.tencent.mtt.base.webview.QBWebView;
import com.tencent.mtt.base.webview.common.HitTestResult;
import com.tencent.mtt.base.webview.common.IWebBackForwardList;
import com.tencent.mtt.base.webview.common.QBWebViewClient;
import com.tencent.mtt.browser.plugin.facade.IPluginService;
import com.tencent.mtt.browser.security.SecurityManager;
import com.tencent.mtt.browser.security.datastruct.WebBehivorInfo;
import com.tencent.mtt.browser.window.IWebView;
import com.tencent.mtt.browser.window.IWebViewClient;
import com.tencent.mtt.browser.window.PageFrame;
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.browser.window.templayer.WebviewBackReportHelper;
import com.tencent.mtt.businesscenter.config.BusinessSettingKeys;
import com.tencent.mtt.businesscenter.facade.IFrameworkDelegate;
import com.tencent.mtt.businesscenter.facade.IWebPageStatService;
import com.tencent.mtt.businesscenter.facade.PageVideoExtension;
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.qbcontext.interfaces.window.PageMiscCallbackExtension;
import com.tencent.mtt.resource.UIResourceDimen;
import com.tencent.mtt.search.facade.ISearchService;
import com.tencent.mtt.setting.PublicSettingManager;
import com.tencent.mtt.uifw2.base.resource.QBResource;
import com.tencent.mtt.view.common.QBTextView;
import com.tencent.mtt.view.dialog.alert.NewQBAlertDialogBuilder;
import com.tencent.mtt.view.dialog.alert.QBAlertDialog;
import com.tencent.qqlive.module.videoreport.collect.EventCollector;
import com.tencent.smtt.export.external.interfaces.JsResult;
import com.tencent.thumbplayer.tplayer.plugins.report.TPReportKeys;
import com.xiaomi.mipush.sdk.PushMessageHelper;
import java.util.Set;
import qb.a.e;
import qb.a.f;
import qb.business.BuildConfig;
public class DefaultWebViewClientExtension extends QBWebViewClientExtension {
protected Handler f47023a;
private QBWebView g;
private QBWebviewWrapper h;
private DefaultWebViewClient i;
private IWebViewClient j;
private boolean k;
private int l;
public DefaultWebViewClientExtension(QBWebView qBWebView, QBWebviewWrapper qBWebviewWrapper, QBWebViewClient qBWebViewClient, IWebViewClient iWebViewClient) {
super(qBWebView, qBWebViewClient, null);
this.f47023a = new Handler(Looper.getMainLooper());
this.k = false;
this.l = -100;
this.g = qBWebView;
this.h = qBWebviewWrapper;
this.j = iWebViewClient;
if (qBWebViewClient instanceof DefaultWebViewClient) {
this.i = (DefaultWebViewClient) qBWebViewClient;
this.i.a(this);
}
EventEmiter.getDefault().register(INotify.EVENT_BUBBLE_CLOSED, this);
}
public String f(String str) {
QBWebView qBWebView = this.g;
String url = qBWebView != null ? qBWebView.getUrl() : null;
return url == null ? str : url;
}
private boolean g(String str) {
return !TextUtils.isEmpty(str) && UrlUtils.getHost(str).startsWith("bookshelf.html5.qq.com") && TextUtils.equals("1", UrlUtils.getUrlParamValue(str, "errorReport"));
}
public boolean n() {
if (!FeatureToggle.a(BuildConfig.FEATURE_TOGGLE_TOOLBOX_TRANS_869161873)) {
return true;
}
int i = PublicSettingManager.a().getInt("SHOW_TOOL_GUIDE_REMAIN_TIME", 3);
if (i <= 0) {
return false;
}
PublicSettingManager.a().setInt("SHOW_TOOL_GUIDE_REMAIN_TIME", i - 1);
Logs.c("DefaultWebViewClientExtension", "Remaining time = " + i);
return true;
}
@Override
public Object a(String str, Bundle bundle) {
PageMiscCallbackExtension[] pageMiscCallbackExtensionArr = (PageMiscCallbackExtension[]) AppManifest.getInstance().queryExtensions(PageMiscCallbackExtension.class, str);
if (pageMiscCallbackExtensionArr.length > 0) {
return pageMiscCallbackExtensionArr[0].onMiscCallBack(this.g, str, bundle);
}
return null;
}
@Override
public void a(int i) {
this.j.getBussinessProxy().c(this.h, i);
this.j.setPageState((byte) 1);
}
@Override
public void a(int i, int i2) {
this.j.getBussinessProxy().a(i, i2);
}
@Override
public void a(int i, int i2, int i3) {
}
@Override
public void a(int i, int i2, String str) {
this.j.getBussinessProxy().a(this.h, i, i2, str);
}
@Override
public void a(int i, int i2, String str, boolean z) {
this.j.getBussinessProxy().a(i, i2, str, z);
}
@Override
public void a(int i, String str) {
this.j.getBussinessProxy().a(i, str);
}
@Override
public void a(final int i, final String str, final String str2, final int i2) {
final boolean z;
this.l = i;
if (!this.h.isActive()) {
return;
}
boolean z2 = true;
if (i != -2 && i != -1) {
if (i == 1) {
this.k = false;
z = true;
if (z2) {
}
} else {
if (i != 3 && i != 4) {
z2 = true ^ this.k;
z = false;
if (z2) {
BrowserExecutorSupplier.forMainThreadTasks().execute(new Runnable() {
@Override
public void run() {
Bundle bundle = new Bundle(9);
bundle.putInt(TPReportKeys.Common.COMMON_STEP, i);
bundle.putString("source_lang", str);
bundle.putString("target_lang", str2);
bundle.putInt(PushMessageHelper.ERROR_TYPE, i2);
PageFrame s = WindowManager.a().s();
StringBuilder sb = new StringBuilder();
sb.append(s != null ? Integer.valueOf(s.hashCode()) : "");
sb.append(DefaultWebViewClientExtension.this.f(""));
bundle.putString("key", sb.toString());
EventEmiter.getDefault().emit(new EventMessage("TranslateNotify", bundle));
if (!z || DefaultWebViewClientExtension.this.g == null) {
return;
}
String url = DefaultWebViewClientExtension.this.g.getUrl();
if (TextUtils.isEmpty(url) || !DefaultWebViewClientExtension.this.n()) {
return;
}
PageToolBoxGuideBean pageToolBoxGuideBean = new PageToolBoxGuideBean();
pageToolBoxGuideBean.f56136a = IPluginService.PLUGIN_ADDON_DITC;
pageToolBoxGuideBean.f56137b = url;
pageToolBoxGuideBean.g = new Runnable() {
@Override
public void run() {
((IFrameworkDelegate) QBContext.getInstance().getService(IFrameworkDelegate.class)).doLoad(new UrlParams("qb://plugin/dict").b(1).c(31).a((Bundle) null));
}
};
pageToolBoxGuideBean.h = new PageToolBoxGuideBean.StatCallBack() {
@Override
public void a(int i3) {
IWebPageStatService iWebPageStatService;
String str3;
if (i3 == 1) {
iWebPageStatService = (IWebPageStatService) QBContext.getInstance().getService(IWebPageStatService.class);
str3 = "web_0103";
} else if (i3 == 2) {
iWebPageStatService = (IWebPageStatService) QBContext.getInstance().getService(IWebPageStatService.class);
str3 = "web_0104";
} else if (i3 == 3) {
iWebPageStatService = (IWebPageStatService) QBContext.getInstance().getService(IWebPageStatService.class);
str3 = "web_0105";
} else {
if (i3 != 4) {
return;
}
iWebPageStatService = (IWebPageStatService) QBContext.getInstance().getService(IWebPageStatService.class);
str3 = "web_0102";
}
iWebPageStatService.stat(str3);
}
};
pageToolBoxGuideBean.f56138c = "该网页可翻译为中文";
pageToolBoxGuideBean.a("https://res.imtt.qq.com/res_mtt/plugin/lottie/translate_guide_0814.json", "https://res.imtt.qq.com/res_mtt/plugin/lottie/translate_guide_0814_night.json", "https://static.res.qq.com/nav/lottie/translate_guide_0506_dark.json");
EventEmiter.getDefault().emit(new EventMessage(IPageToolBoxGuideService.EVENT_TOOL_GUIDE, pageToolBoxGuideBean));
}
});
return;
}
return;
}
z2 = true ^ this.k;
}
}
this.k = false;
z = false;
if (z2) {
}
}
@Override
public void a(String str) {
this.j.getBussinessProxy().a(str, this.h);
}
@Override
public void a(String str, int i) {
}
@Override
public void a(String str, String str2) {
}
@Override
public void a(String str, String str2, String str3, int i) {
this.j.getBussinessProxy().a(str, str2, str3, i);
}
@Override
public void a(String str, String str2, boolean z, String str3) {
PageVideoExtension pageVideoExtension = (PageVideoExtension) AppManifest.getInstance().queryExtension(PageVideoExtension.class, null);
if (pageVideoExtension != null) {
pageVideoExtension.handlePluginTag(this.g, str, str2, z, str3);
}
}
@Override
public void a(String str, boolean z, long j, String str2, int i) {
this.j.getBussinessProxy().a(str, z, j, str2, i);
}
@Override
public void a(Set<String> set, Set<String> set2) {
super.a(set, set2);
}
@Override
public void a(boolean z) {
if (this.f != null) {
this.f.b();
}
}
@Override
public boolean a() {
HitTestResult hitTestResult = this.g.getHitTestResult();
if (hitTestResult != null && hitTestResult.b() == 9) {
this.g.setTextFieldInLongPressStatus(true);
}
if (this.f != null) {
this.f.a(this.g.getView());
}
return true;
}
@Override
public boolean a(String str, JsResult jsResult) {
IWebBackForwardList copyQBBackForwardList;
QBWebView qBWebView = this.g;
if (qBWebView != null && (copyQBBackForwardList = qBWebView.copyQBBackForwardList()) != null) {
WebviewBackReportHelper.a().a(copyQBBackForwardList, 3);
}
if (!TextUtils.isEmpty(str)) {
WebBehivorInfo webBehivorInfo = new WebBehivorInfo();
webBehivorInfo.f44602a = str;
webBehivorInfo.f44603b = 2;
SecurityManager.a().a(webBehivorInfo);
}
jsResult.confirm();
return true;
}
@Override
public boolean a(String str, String[] strArr, ValueCallback<Boolean> valueCallback, boolean z) {
return this.j.getBussinessProxy().a(str, strArr, valueCallback, z);
}
@Override
public void b(int i, String str) {
this.j.onPreloadCallback(i, str, this.g);
}
@Override
public void b(String str, int i) {
ISearchService iSearchService;
super.b(str, i);
PageFrame s = WindowManager.a().s();
if (s == null) {
return;
}
IWebView currentWebView = s.getCurrentWebView();
IWebView webViewOffset = s.getWebViewOffset(-1);
if (currentWebView == null || webViewOffset == null || this.g == null) {
return;
}
boolean equals = TextUtils.equals(currentWebView.getUrl(), this.g.getUrl());
boolean z = !TextUtils.isEmpty(webViewOffset.getUrl()) && webViewOffset.getUrl().startsWith("qb://search");
boolean g = g(webViewOffset.getUrl());
if (!((equals && z) || g) || (iSearchService = (ISearchService) QBContext.getInstance().getService(ISearchService.class)) == null) {
return;
}
iSearchService.onLoadSearchResultPageFail(str, i, !currentWebView.canGoBack(), false);
}
@Override
public void c() {
this.j.getBussinessProxy().z();
}
@Override
public void d() {
IWebViewClient iWebViewClient = this.j;
QBWebView qBWebView = this.g;
DefaultWebViewClient defaultWebViewClient = this.i;
iWebViewClient.onPrefetchPageBackOrForwardChanged(qBWebView, defaultWebViewClient == null || defaultWebViewClient.a());
}
@Override
public boolean d(String str) {
return false;
}
@Override
public void e() {
this.j.onProgressChanged(this.h, -1);
this.j.onTransitionToCommitted(this.h);
DefaultWebViewClient defaultWebViewClient = this.i;
if (defaultWebViewClient != null) {
defaultWebViewClient.b();
}
}
@Override
public void e(String str) {
this.h.getAddressBarDataSource().a(true, false);
super.e(str);
}
@Override
public void h() {
this.j.getBussinessProxy().g(this.h);
}
@Override
public void i() {
EventEmiter.getDefault().unregister(INotify.EVENT_BUBBLE_CLOSED, this);
((INotify) QBContext.getInstance().getService(INotify.class)).closeBubble(IMessageBubbleService.MESSAGE_MODE_SHOW_TRANSLATE);
this.k = true;
}
@Override
public void j() {
QBWebView qBWebView = this.g;
if (qBWebView != null) {
String url = qBWebView.getUrl();
if (PublicSettingManager.a().getInt("toolbox_current_support_type", 0) != 0) {
PlatformStatUtils.a("ON_OLD_NOVEL_RECOGNITION");
return;
}
if (TextUtils.isEmpty(url)) {
return;
}
PageToolBoxGuideBean pageToolBoxGuideBean = new PageToolBoxGuideBean();
pageToolBoxGuideBean.f56136a = IPluginService.PLUGIN_TTS;
pageToolBoxGuideBean.f56137b = url;
pageToolBoxGuideBean.f56138c = "主播为你朗读当前网页";
pageToolBoxGuideBean.a("https://res.imtt.qq.com/res_mtt/plugin/lottie/tts_mode_guide_0927.json", "https://res.imtt.qq.com/res_mtt/plugin/lottie/tts_mode_guide_0927_night.json");
EventEmiter.getDefault().emit(new EventMessage(IPageToolBoxGuideService.EVENT_TOOL_GUIDE, pageToolBoxGuideBean));
PublicSettingManager.a().setInt("toolbox_current_support_type", 1);
}
}
@Override
public void k() {
}
@Override
public void l() {
}
@EventReceiver(createMethod = CreateMethod.NONE, eventName = INotify.EVENT_BUBBLE_CLOSED)
public void onTranslateBubbleClosed(EventMessage eventMessage) {
if ((eventMessage.arg instanceof Integer) && ((Integer) eventMessage.arg).intValue() == 6291456 && WindowManager.t() == this.h) {
if (this.l == 2) {
this.k = true;
}
if (this.l == 1) {
QBTextView qBTextView = new QBTextView(this.g.getContext());
LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(-2, -2);
layoutParams.gravity = 17;
qBTextView.setLayoutParams(layoutParams);
qBTextView.setLineSpacing(UIResourceDimen.a(5.0f), 1.0f);
qBTextView.setTextColor(QBResource.b(e.n));
qBTextView.setTextSize(MttResources.h(f.cZ));
qBTextView.setText(R.string.bqq);
if (PublicSettingManager.a().getBoolean(BusinessSettingKeys.f46815a, false)) {
return;
}
final QBAlertDialog a2 = new NewQBAlertDialogBuilder().d(R.string.a9o).e(R.string.ud).a(this.g.getContext());
a2.b(qBTextView);
a2.a(new View.OnClickListener() {
@Override
public void onClick(View view) {
EventCollector.getInstance().onViewClickedBefore(view);
if (view.getId() == 100) {
Bundle bundle = new Bundle();
bundle.putInt("ViewID", 46);
((IFrameworkDelegate) QBContext.getInstance().getService(IFrameworkDelegate.class)).doLoad(new UrlParams(IFunctionWndFactory.WND_SETTING).d(2).a(bundle).d(true));
}
a2.dismiss();
EventCollector.getInstance().onViewClicked(view);
}
});
a2.show();
PublicSettingManager.a().setBoolean(BusinessSettingKeys.f46815a, true);
}
}
}
}