package com.zhongqu.vrviewer.x5host;

import android.content.Context;
import android.util.Log;
import androidx.annotation.Nullable;
import com.tencent.smtt.sdk.QbSdk;
import com.tencent.smtt.sdk.WebView;

/**
 * 与 {@code 3.0referenceDoc/publicDemo} 中内核验证方式对齐，便于 Logcat 过滤与对照官方 Demo。
 *
 * <ul>
 *   <li>{@code MainActivity}：{@link com.tencent.smtt.sdk.QbSdk.PreInitCallback#onViewInitFinished(boolean)} 打
 *       「是否使用X5内核」+ boolean
 *   <li>{@code WebActivity}：{@code loadUrl} 之后 {@link QbSdk#getTbsVersion(Context)} + {@link
 *       WebView#getIsX5Core()}，Log tag 为 {@code webactivity}
 * </ul>
 */
public final class X5PublicDemoVerify {

    /** 与 publicDemo MainActivity 中 {@code Log.e(TAG, ...)} 的 TAG 一致。 */
    public static final String LOG_TAG_MAIN_ACTIVITY = "MainActivity";

    /** 与 publicDemo WebActivity 中 {@code Log.e("webactivity", ...)} 一致。 */
    public static final String LOG_TAG_WEB_ACTIVITY = "webactivity";

    private X5PublicDemoVerify() {}

    /** 对齐 publicDemo MainActivity.PreInitCallback.onViewInitFinished 日志。 */
    public static void logPreInitViewFinished(boolean isX5Code) {
        Log.e(LOG_TAG_MAIN_ACTIVITY, "是否使用X5内核" + isX5Code);
    }

    /** 对齐 publicDemo WebActivity：loadUrl 之后立刻打 getTbsVersion。 */
    public static void logAfterLoadUrlLikeWebActivity(Context context, WebView webView) {
        int tbsVersion = QbSdk.getTbsVersion(context);
        Log.e(LOG_TAG_WEB_ACTIVITY, "QbSdk.getTbsVersion: " + tbsVersion);
    }

    /**
     * 与 publicDemo WebActivity 里 Toast 使用数据一致：{@code "内核版本：" + getTbsVersion + getIsX5Core}（无
     * 中间分隔符）；此处同时给出可读拆分。
     */
    public static String describeRuntimeLikeWebActivityToast(Context context, WebView webView) {
        int tbsVersion = QbSdk.getTbsVersion(context);
        boolean isX5Core = webView.getIsX5Core();
        String toastSame = "内核版本：" + tbsVersion + isX5Core;
        return "WebActivity等价 Toast 拼接:「" + toastSame + "」拆分 getTbsVersion=" + tbsVersion + " getIsX5Core=" + isX5Core;
    }

    public static String describePreInitViewFinished(@Nullable Boolean isX5CodeOrNull) {
        if (isX5CodeOrNull == null) {
            return "PreInit.onViewInitFinished:未回调(应对照「" + LOG_TAG_MAIN_ACTIVITY + "」是否使用X5内核)";
        }
        return "PreInit.onViewInitFinished:isX5Code=" + isX5CodeOrNull;
    }
}
