导航菜单

页面标题

页面副标题

St.John's v1.0.9 - FolioWebView.java 源代码

正在查看: St.John's v1.0.9 应用的 FolioWebView.java JAVA 源代码文件

本页面展示 JAVA 反编译生成的源代码文件,支持语法高亮显示。 仅供安全研究与技术分析使用,严禁用于任何非法用途。请遵守相关法律法规。


package com.folioreader.ui.view;

import android.content.Context;
import android.content.res.Resources;
import android.graphics.Rect;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.os.Build;
import android.os.Bundle;
import android.os.Handler;
import android.os.Looper;
import android.util.AttributeSet;
import android.util.DisplayMetrics;
import android.util.Log;
import android.view.ActionMode;
import android.view.ContextThemeWrapper;
import android.view.GestureDetector;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewGroup;
import android.webkit.ConsoleMessage;
import android.webkit.JavascriptInterface;
import android.webkit.ValueCallback;
import android.webkit.WebView;
import android.widget.ImageView;
import android.widget.PopupWindow;
import android.widget.TextView;
import android.widget.Toast;
import androidx.core.app.NotificationCompat;
import androidx.core.content.ContextCompat;
import androidx.core.view.GestureDetectorCompat;
import com.folioreader.Config;
import com.folioreader.Constants;
import com.folioreader.R;
import com.folioreader.model.DisplayUnit;
import com.folioreader.model.HighLight;
import com.folioreader.model.HighlightImpl;
import com.folioreader.model.sqlite.HighLightTable;
import com.folioreader.ui.activity.FolioActivity;
import com.folioreader.ui.activity.FolioActivityCallback;
import com.folioreader.ui.fragment.DictionaryFragment;
import com.folioreader.ui.fragment.FolioPageFragment;
import com.folioreader.util.AppUtil;
import com.folioreader.util.HighlightUtil;
import com.folioreader.util.UiUtil;
import dalvik.system.PathClassLoader;
import java.lang.ref.WeakReference;
import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import kotlin.Metadata;
import kotlin.TypeCastException;
import kotlin.jvm.JvmStatic;
import kotlin.jvm.internal.DefaultConstructorMarker;
import kotlin.jvm.internal.Intrinsics;
import kotlin.text.StringsKt;
import org.json.JSONObject;
import org.readium.r2.shared.Link;
import org.springframework.util.ReflectionUtils;

@Metadata(bv = {1, 0, 3}, d1 = {"\u0000À\u0001\n\u0002\u0018\u0002\n\u0002\u0018\u0002\n\u0000\n\u0002\u0018\u0002\n\u0002\b\u0002\n\u0002\u0018\u0002\n\u0002\b\u0002\n\u0002\u0010\b\n\u0002\b\u0002\n\u0002\u0018\u0002\n\u0002\b\u0004\n\u0002\u0010\u0007\n\u0000\n\u0002\u0010\u000b\n\u0000\n\u0002\u0018\u0002\n\u0000\n\u0002\u0018\u0002\n\u0000\n\u0002\u0018\u0002\n\u0000\n\u0002\u0018\u0002\n\u0002\b\u0004\n\u0002\u0018\u0002\n\u0000\n\u0002\u0018\u0002\n\u0002\b\u0002\n\u0002\u0018\u0002\n\u0000\n\u0002\u0018\u0002\n\u0002\b\u0005\n\u0002\u0018\u0002\n\u0000\n\u0002\u0018\u0002\n\u0000\n\u0002\u0018\u0002\n\u0002\b\u0002\n\u0002\u0018\u0002\n\u0000\n\u0002\u0018\u0002\n\u0000\n\u0002\u0018\u0002\n\u0000\n\u0002\u0018\u0002\n\u0002\b\u0003\n\u0002\u0018\u0002\n\u0000\n\u0002\u0010\u0002\n\u0002\b\u0007\n\u0002\u0010\u000e\n\u0002\b\u000f\n\u0002\u0018\u0002\n\u0002\b\u001f\n\u0002\u0018\u0002\n\u0002\b\u000b\u0018\u0000 {2\u00020\u0001:\u000b{|}~\u007f\u0080\u0001\u0081\u0001\u0082\u0001B\u000f\b\u0016\u0012\u0006\u0010\u0002\u001a\u00020\u0003¢\u0006\u0002\u0010\u0004B\u0017\b\u0016\u0012\u0006\u0010\u0002\u001a\u00020\u0003\u0012\u0006\u0010\u0005\u001a\u00020\u0006¢\u0006\u0002\u0010\u0007B\u001f\b\u0016\u0012\u0006\u0010\u0002\u001a\u00020\u0003\u0012\u0006\u0010\u0005\u001a\u00020\u0006\u0012\u0006\u0010\b\u001a\u00020\t¢\u0006\u0002\u0010\nJ\b\u0010?\u001a\u00020@H\u0002J\u0010\u0010A\u001a\u00020\u00132\u0006\u0010B\u001a\u00020\u0017H\u0002J\u0010\u0010C\u001a\u00020@2\u0006\u0010D\u001a\u00020/H\u0002J\u0010\u0010E\u001a\u00020\u00132\u0006\u0010B\u001a\u00020\u0017H\u0002J\u0012\u0010F\u001a\u00020@2\b\u0010G\u001a\u0004\u0018\u00010HH\u0007J\b\u0010I\u001a\u00020@H\u0016J\b\u0010J\u001a\u00020\u0013H\u0007J\u0010\u0010K\u001a\u00020\t2\u0006\u0010L\u001a\u00020HH\u0007J\b\u0010M\u001a\u00020HH\u0007J\u000e\u0010N\u001a\u00020\t2\u0006\u0010O\u001a\u00020\tJ\u000e\u0010P\u001a\u00020\t2\u0006\u0010O\u001a\u00020\tJ\u0010\u0010Q\u001a\u00020\t2\u0006\u0010L\u001a\u00020HH\u0007J\u0010\u0010R\u001a\u00020H2\u0006\u0010L\u001a\u00020HH\u0007J\b\u0010S\u001a\u00020@H\u0002J\u0006\u0010T\u001a\u00020@J\b\u0010U\u001a\u00020\u0013H\u0007J\u0018\u0010V\u001a\u00020@2\u0006\u0010W\u001a\u00020X2\u0006\u0010Y\u001a\u00020\u0013H\u0002J0\u0010Z\u001a\u00020@2\u0006\u0010[\u001a\u00020\u00132\u0006\u0010\\\u001a\u00020\t2\u0006\u0010]\u001a\u00020\t2\u0006\u0010^\u001a\u00020\t2\u0006\u0010_\u001a\u00020\tH\u0014J(\u0010`\u001a\u00020@2\u0006\u0010\\\u001a\u00020\t2\u0006\u0010]\u001a\u00020\t2\u0006\u0010a\u001a\u00020\t2\u0006\u0010b\u001a\u00020\tH\u0014J\u001a\u0010c\u001a\u00020@2\u0006\u0010G\u001a\u00020\t2\b\u0010d\u001a\u0004\u0018\u00010HH\u0007J\u0012\u0010e\u001a\u00020\u00132\b\u0010B\u001a\u0004\u0018\u00010\u0017H\u0016J\u0018\u0010f\u001a\u00020@2\u0006\u0010g\u001a\u00020\t2\u0006\u0010h\u001a\u00020\tH\u0016J\u000e\u0010i\u001a\u00020@2\u0006\u0010\u0018\u001a\u00020\u0019J\u000e\u0010j\u001a\u00020@2\u0006\u0010\u001d\u001a\u00020\tJ\u000e\u0010k\u001a\u00020@2\u0006\u0010,\u001a\u00020-J\u000e\u0010l\u001a\u00020@2\u0006\u0010m\u001a\u00020%J\u000e\u0010n\u001a\u00020@2\u0006\u0010m\u001a\u00020'J(\u0010o\u001a\u00020@2\u0006\u0010p\u001a\u00020\t2\u0006\u0010q\u001a\u00020\t2\u0006\u0010r\u001a\u00020\t2\u0006\u0010s\u001a\u00020\tH\u0007J\u0012\u0010t\u001a\u00020@2\b\u0010d\u001a\u0004\u0018\u00010HH\u0002J\b\u0010u\u001a\u00020@H\u0002J\u0010\u0010v\u001a\u00020\f2\u0006\u0010w\u001a\u00020xH\u0016J\u0018\u0010v\u001a\u00020\f2\u0006\u0010w\u001a\u00020x2\u0006\u0010y\u001a\u00020\tH\u0017J\b\u0010z\u001a\u00020@H\u0007R\u0010\u0010\u000b\u001a\u0004\u0018\u00010\fX\u0082\u000e¢\u0006\u0002\n\u0000R\u0011\u0010\r\u001a\u00020\t8F¢\u0006\u0006\u001a\u0004\b\u000e\u0010\u000fR\u000e\u0010\u0010\u001a\u00020\u0011X\u0082\u000e¢\u0006\u0002\n\u0000R\u000e\u0010\u0012\u001a\u00020\u0013X\u0082\u000e¢\u0006\u0002\n\u0000R\u0010\u0010\u0014\u001a\u0004\u0018\u00010\u0015X\u0082\u000e¢\u0006\u0002\n\u0000R\u0010\u0010\u0016\u001a\u0004\u0018\u00010\u0017X\u0082\u000e¢\u0006\u0002\n\u0000R\u000e\u0010\u0018\u001a\u00020\u0019X\u0082.¢\u0006\u0002\n\u0000R\u000e\u0010\u001a\u001a\u00020\u001bX\u0082.¢\u0006\u0002\n\u0000R\u000e\u0010\u001c\u001a\u00020\tX\u0082\u000e¢\u0006\u0002\n\u0000R\u000e\u0010\u001d\u001a\u00020\tX\u0082\u000e¢\u0006\u0002\n\u0000R\u000e\u0010\u001e\u001a\u00020\tX\u0082\u000e¢\u0006\u0002\n\u0000R\u0010\u0010\u001f\u001a\u0004\u0018\u00010 X\u0082\u000e¢\u0006\u0002\n\u0000R\u0010\u0010!\u001a\u0004\u0018\u00010\"X\u0082\u000e¢\u0006\u0002\n\u0000R\u000e\u0010#\u001a\u00020\tX\u0082\u000e¢\u0006\u0002\n\u0000R\u0010\u0010$\u001a\u0004\u0018\u00010%X\u0082\u000e¢\u0006\u0002\n\u0000R\u0010\u0010&\u001a\u0004\u0018\u00010'X\u0082\u000e¢\u0006\u0002\n\u0000R\u000e\u0010(\u001a\u00020\tX\u0082\u000e¢\u0006\u0002\n\u0000R\u000e\u0010)\u001a\u00020\tX\u0082\u000e¢\u0006\u0002\n\u0000R\u000e\u0010*\u001a\u00020\tX\u0082\u000e¢\u0006\u0002\n\u0000R\u000e\u0010+\u001a\u00020\u0011X\u0082\u000e¢\u0006\u0002\n\u0000R\u000e\u0010,\u001a\u00020-X\u0082.¢\u0006\u0002\n\u0000R\u000e\u0010.\u001a\u00020/X\u0082\u0004¢\u0006\u0002\n\u0000R\u000e\u00100\u001a\u000201X\u0082\u000e¢\u0006\u0002\n\u0000R\u000e\u00102\u001a\u00020/X\u0082\u000e¢\u0006\u0002\n\u0000R\u0014\u00103\u001a\b\u0018\u000104R\u00020\u0000X\u0082\u000e¢\u0006\u0002\n\u0000R\u0014\u00105\u001a\b\u0018\u000106R\u00020\u0000X\u0082\u000e¢\u0006\u0002\n\u0000R\u000e\u00107\u001a\u000208X\u0082.¢\u0006\u0002\n\u0000R\u000e\u00109\u001a\u00020:X\u0082.¢\u0006\u0002\n\u0000R\u0011\u0010;\u001a\u00020\t8F¢\u0006\u0006\u001a\u0004\b<\u0010\u000fR\u000e\u0010=\u001a\u00020>X\u0082.¢\u0006\u0002\n\u0000¨\u0006\u0083\u0001"}, d2 = {"Lcom/folioreader/ui/view/FolioWebView;", "Landroid/webkit/WebView;", "context", "Landroid/content/Context;", "(Landroid/content/Context;)V", "attrs", "Landroid/util/AttributeSet;", "(Landroid/content/Context;Landroid/util/AttributeSet;)V", "defStyleAttr", "", "(Landroid/content/Context;Landroid/util/AttributeSet;I)V", "actionMode", "Landroid/view/ActionMode;", "contentHeightVal", "getContentHeightVal", "()I", "density", "", "destroyed", "", "displayMetrics", "Landroid/util/DisplayMetrics;", "eventActionDown", "Landroid/view/MotionEvent;", "folioActivityCallback", "Lcom/folioreader/ui/activity/FolioActivityCallback;", "gestureDetector", "Landroidx/core/view/GestureDetectorCompat;", "handleHeight", "horizontalPageCount", "isScrollingCheckDuration", "isScrollingRunnable", "Ljava/lang/Runnable;", "lastScrollType", "Lcom/folioreader/ui/view/FolioWebView$LastScrollType;", "lastTouchAction", "mScrollListener", "Lcom/folioreader/ui/view/FolioWebView$ScrollListener;", "mSeekBarListener", "Lcom/folioreader/ui/view/FolioWebView$SeekBarListener;", "oldScrollX", "oldScrollY", "pageWidthCssDp", "pageWidthCssPixels", "parentFragment", "Lcom/folioreader/ui/fragment/FolioPageFragment;", "popupRect", "Landroid/graphics/Rect;", "popupWindow", "Landroid/widget/PopupWindow;", "selectionRect", "textSelectionCb", "Lcom/folioreader/ui/view/FolioWebView$TextSelectionCb;", "textSelectionCb2", "Lcom/folioreader/ui/view/FolioWebView$TextSelectionCb2;", "uiHandler", "Landroid/os/Handler;", "viewTextSelection", "Landroid/view/View;", "webViewHeight", "getWebViewHeight", "webViewPager", "Lcom/folioreader/ui/view/WebViewPager;", "applyThemeColorToHandles", "", "computeHorizontalScroll", NotificationCompat.CATEGORY_EVENT, "computeTextSelectionRect", "currentSelectionRect", "computeVerticalScroll", "deleteThisHighlight", Constants.CHAPTER_ID, "", "destroy", "dismissPopupWindow", "getBottomDistraction", "unitString", "getDirection", "getScrollXDpForPage", "page", "getScrollXPixelsForPage", "getTopDistraction", "getViewportRect", "init", "initViewTextSelection", "isPopupShowing", "onHighlightColorItemsClicked", "style", "Lcom/folioreader/model/HighlightImpl$HighlightStyle;", "isAlreadyCreated", "onLayout", "changed", "l", "t", "r", "b", "onScrollChanged", "oldl", "oldt", "onTextSelectionItemClicked", "selectedText", "onTouchEvent", "scrollTo", "x", "y", "setFolioActivityCallback", "setHorizontalPageCount", "setParentFragment", "setScrollListener", "listener", "setSeekBarListener", "setSelectionRect", "left", "top", "right", "bottom", "showDictDialog", "showTextSelectionPopup", "startActionMode", "callback", "Landroid/view/ActionMode$Callback;", Constants.TYPE, "toggleSystemUI", "Companion", "HorizontalGestureListener", "LastScrollType", "ScrollListener", "SeekBarListener", "TextSelectionCb", "TextSelectionCb2", "VerticalGestureListener", "folioreader_release"}, k = 1, mv = {1, 1, 13})
public final class FolioWebView extends WebView {

    public static final Companion INSTANCE = new Companion(null);
    private static final int IS_SCROLLING_CHECK_MAX_DURATION = 10000;
    private static final int IS_SCROLLING_CHECK_TIMER = 100;
    private static final String LOG_TAG;
    private HashMap _$_findViewCache;
    private ActionMode actionMode;
    private float density;
    private boolean destroyed;
    private DisplayMetrics displayMetrics;
    private MotionEvent eventActionDown;
    private FolioActivityCallback folioActivityCallback;
    private GestureDetectorCompat gestureDetector;
    private int handleHeight;
    private int horizontalPageCount;
    private int isScrollingCheckDuration;
    private Runnable isScrollingRunnable;
    private LastScrollType lastScrollType;
    private int lastTouchAction;
    private ScrollListener mScrollListener;
    private SeekBarListener mSeekBarListener;
    private int oldScrollX;
    private int oldScrollY;
    private int pageWidthCssDp;
    private float pageWidthCssPixels;
    private FolioPageFragment parentFragment;
    private final Rect popupRect;
    private PopupWindow popupWindow;
    private Rect selectionRect;
    private TextSelectionCb textSelectionCb;
    private TextSelectionCb2 textSelectionCb2;
    private Handler uiHandler;
    private View viewTextSelection;
    private WebViewPager webViewPager;

    @Metadata(bv = {1, 0, 3}, d1 = {"\u0000\f\n\u0002\u0018\u0002\n\u0002\u0010\u0010\n\u0002\b\u0004\b\u0082\u0001\u0018\u00002\b\u0012\u0004\u0012\u00020\u00000\u0001B\u0007\b\u0002¢\u0006\u0002\u0010\u0002j\u0002\b\u0003j\u0002\b\u0004¨\u0006\u0005"}, d2 = {"Lcom/folioreader/ui/view/FolioWebView$LastScrollType;", "", "(Ljava/lang/String;I)V", "USER", "PROGRAMMATIC", "folioreader_release"}, k = 1, mv = {1, 1, 13})
    private enum LastScrollType {
        USER,
        PROGRAMMATIC
    }

    @Metadata(bv = {1, 0, 3}, d1 = {"\u0000\u0016\n\u0002\u0018\u0002\n\u0002\u0010\u0000\n\u0000\n\u0002\u0010\u0002\n\u0000\n\u0002\u0010\b\n\u0000\bf\u0018\u00002\u00020\u0001J\u0010\u0010\u0002\u001a\u00020\u00032\u0006\u0010\u0004\u001a\u00020\u0005H&¨\u0006\u0006"}, d2 = {"Lcom/folioreader/ui/view/FolioWebView$ScrollListener;", "", "onScrollChange", "", "percent", "", "folioreader_release"}, k = 1, mv = {1, 1, 13})
    public interface ScrollListener {
        void onScrollChange(int percent);
    }

    @Metadata(bv = {1, 0, 3}, d1 = {"\u0000\u0010\n\u0002\u0018\u0002\n\u0002\u0010\u0000\n\u0000\n\u0002\u0010\u0002\n\u0000\bf\u0018\u00002\u00020\u0001J\b\u0010\u0002\u001a\u00020\u0003H&¨\u0006\u0004"}, d2 = {"Lcom/folioreader/ui/view/FolioWebView$SeekBarListener;", "", "fadeInSeekBarIfInvisible", "", "folioreader_release"}, k = 1, mv = {1, 1, 13})
    public interface SeekBarListener {
        void fadeInSeekBarIfInvisible();
    }

    @JvmStatic
    public static final boolean onWebViewConsoleMessage(ConsoleMessage consoleMessage, String str, String str2) {
        return INSTANCE.onWebViewConsoleMessage(consoleMessage, str, str2);
    }

    public void _$_clearFindViewByIdCache() {
        HashMap hashMap = this._$_findViewCache;
        if (hashMap != null) {
            hashMap.clear();
        }
    }

    public View _$_findCachedViewById(int i) {
        if (this._$_findViewCache == null) {
            this._$_findViewCache = new HashMap();
        }
        View view = (View) this._$_findViewCache.get(Integer.valueOf(i));
        if (view != null) {
            return view;
        }
        View findViewById = findViewById(i);
        this._$_findViewCache.put(Integer.valueOf(i), findViewById);
        return findViewById;
    }

    public static final FolioActivityCallback access$getFolioActivityCallback$p(FolioWebView folioWebView) {
        FolioActivityCallback folioActivityCallback = folioWebView.folioActivityCallback;
        if (folioActivityCallback == null) {
            Intrinsics.throwUninitializedPropertyAccessException("folioActivityCallback");
        }
        return folioActivityCallback;
    }

    public static final FolioPageFragment access$getParentFragment$p(FolioWebView folioWebView) {
        FolioPageFragment folioPageFragment = folioWebView.parentFragment;
        if (folioPageFragment == null) {
            Intrinsics.throwUninitializedPropertyAccessException("parentFragment");
        }
        return folioPageFragment;
    }

    public static final Handler access$getUiHandler$p(FolioWebView folioWebView) {
        Handler handler = folioWebView.uiHandler;
        if (handler == null) {
            Intrinsics.throwUninitializedPropertyAccessException("uiHandler");
        }
        return handler;
    }

    public static final View access$getViewTextSelection$p(FolioWebView folioWebView) {
        View view = folioWebView.viewTextSelection;
        if (view == null) {
            Intrinsics.throwUninitializedPropertyAccessException("viewTextSelection");
        }
        return view;
    }

    public static final WebViewPager access$getWebViewPager$p(FolioWebView folioWebView) {
        WebViewPager webViewPager = folioWebView.webViewPager;
        if (webViewPager == null) {
            Intrinsics.throwUninitializedPropertyAccessException("webViewPager");
        }
        return webViewPager;
    }

    @Metadata(bv = {1, 0, 3}, d1 = {"\u0000*\n\u0002\u0018\u0002\n\u0002\u0010\u0000\n\u0002\b\u0002\n\u0002\u0010\b\n\u0002\b\u0002\n\u0002\u0010\u000e\n\u0002\b\u0003\n\u0002\u0010\u000b\n\u0000\n\u0002\u0018\u0002\n\u0002\b\u0002\b\u0086\u0003\u0018\u00002\u00020\u0001B\u0007\b\u0002¢\u0006\u0002\u0010\u0002J \u0010\n\u001a\u00020\u000b2\u0006\u0010\f\u001a\u00020\r2\u0006\u0010\u0006\u001a\u00020\u00072\u0006\u0010\u000e\u001a\u00020\u0007H\u0007R\u000e\u0010\u0003\u001a\u00020\u0004X\u0082T¢\u0006\u0002\n\u0000R\u000e\u0010\u0005\u001a\u00020\u0004X\u0082T¢\u0006\u0002\n\u0000R\u0011\u0010\u0006\u001a\u00020\u0007¢\u0006\b\n\u0000\u001a\u0004\b\b\u0010\t¨\u0006\u000f"}, d2 = {"Lcom/folioreader/ui/view/FolioWebView$Companion;", "", "()V", "IS_SCROLLING_CHECK_MAX_DURATION", "", "IS_SCROLLING_CHECK_TIMER", "LOG_TAG", "", "getLOG_TAG", "()Ljava/lang/String;", "onWebViewConsoleMessage", "", "cm", "Landroid/webkit/ConsoleMessage;", NotificationCompat.CATEGORY_MESSAGE, "folioreader_release"}, k = 1, mv = {1, 1, 13})
    public static final class Companion {

        @Metadata(bv = {1, 0, 3}, k = 3, mv = {1, 1, 13})
        public final class WhenMappings {
            public static final int[] $EnumSwitchMapping$0;

            static {
                int[] iArr = new int[ConsoleMessage.MessageLevel.values().length];
                $EnumSwitchMapping$0 = iArr;
                iArr[ConsoleMessage.MessageLevel.LOG.ordinal()] = 1;
                iArr[ConsoleMessage.MessageLevel.DEBUG.ordinal()] = 2;
                iArr[ConsoleMessage.MessageLevel.TIP.ordinal()] = 3;
                iArr[ConsoleMessage.MessageLevel.WARNING.ordinal()] = 4;
                iArr[ConsoleMessage.MessageLevel.ERROR.ordinal()] = 5;
            }
        }

        private Companion() {
        }

        public Companion(DefaultConstructorMarker defaultConstructorMarker) {
            this();
        }

        public final String getLOG_TAG() {
            return FolioWebView.LOG_TAG;
        }

        @JvmStatic
        public final boolean onWebViewConsoleMessage(ConsoleMessage cm, String LOG_TAG, String msg) {
            Intrinsics.checkParameterIsNotNull(cm, "cm");
            Intrinsics.checkParameterIsNotNull(LOG_TAG, "LOG_TAG");
            Intrinsics.checkParameterIsNotNull(msg, NotificationCompat.CATEGORY_MESSAGE);
            ConsoleMessage.MessageLevel messageLevel = cm.messageLevel();
            if (messageLevel == null) {
                return false;
            }
            int i = WhenMappings.$EnumSwitchMapping$0[messageLevel.ordinal()];
            if (i == 1) {
                Log.v(LOG_TAG, msg);
                return true;
            }
            if (i == 2 || i == 3) {
                Log.d(LOG_TAG, msg);
                return true;
            }
            if (i == 4) {
                Log.w(LOG_TAG, msg);
                return true;
            }
            if (i != 5) {
                return false;
            }
            Log.e(LOG_TAG, msg);
            return true;
        }
    }

    static {
        Intrinsics.checkExpressionValueIsNotNull("FolioWebView", "FolioWebView::class.java.simpleName");
        LOG_TAG = "FolioWebView";
    }

    public final int getContentHeightVal() {
        return (int) Math.floor(getContentHeight() * getScale());
    }

    public final int getWebViewHeight() {
        return getMeasuredHeight();
    }

    @JavascriptInterface
    public final String getDirection() {
        FolioActivityCallback folioActivityCallback = this.folioActivityCallback;
        if (folioActivityCallback == null) {
            Intrinsics.throwUninitializedPropertyAccessException("folioActivityCallback");
        }
        return folioActivityCallback.getDirection().toString();
    }

    @JavascriptInterface
    public final int getTopDistraction(String unitString) {
        Intrinsics.checkParameterIsNotNull(unitString, "unitString");
        DisplayUnit valueOf = DisplayUnit.valueOf(unitString);
        FolioActivityCallback folioActivityCallback = this.folioActivityCallback;
        if (folioActivityCallback == null) {
            Intrinsics.throwUninitializedPropertyAccessException("folioActivityCallback");
        }
        return folioActivityCallback.getTopDistraction(valueOf);
    }

    @JavascriptInterface
    public final int getBottomDistraction(String unitString) {
        Intrinsics.checkParameterIsNotNull(unitString, "unitString");
        DisplayUnit valueOf = DisplayUnit.valueOf(unitString);
        FolioActivityCallback folioActivityCallback = this.folioActivityCallback;
        if (folioActivityCallback == null) {
            Intrinsics.throwUninitializedPropertyAccessException("folioActivityCallback");
        }
        return folioActivityCallback.getBottomDistraction(valueOf);
    }

    @JavascriptInterface
    public final String getViewportRect(String unitString) {
        Intrinsics.checkParameterIsNotNull(unitString, "unitString");
        DisplayUnit valueOf = DisplayUnit.valueOf(unitString);
        FolioActivityCallback folioActivityCallback = this.folioActivityCallback;
        if (folioActivityCallback == null) {
            Intrinsics.throwUninitializedPropertyAccessException("folioActivityCallback");
        }
        String rectToDOMRectJson = UiUtil.rectToDOMRectJson(folioActivityCallback.getViewportRect(valueOf));
        Intrinsics.checkExpressionValueIsNotNull(rectToDOMRectJson, "UiUtil.rectToDOMRectJson(rect)");
        return rectToDOMRectJson;
    }

    @JavascriptInterface
    public final void toggleSystemUI() {
        Handler handler = this.uiHandler;
        if (handler == null) {
            Intrinsics.throwUninitializedPropertyAccessException("uiHandler");
        }
        handler.post(new Runnable() {
            @Override
            public final void run() {
                FolioWebView.access$getFolioActivityCallback$p(FolioWebView.this).toggleSystemUI();
            }
        });
    }

    @JavascriptInterface
    public final boolean isPopupShowing() {
        return this.popupWindow.isShowing();
    }

    @Metadata(bv = {1, 0, 3}, d1 = {"\u0000\"\n\u0002\u0018\u0002\n\u0002\u0018\u0002\n\u0002\b\u0002\n\u0002\u0010\u000b\n\u0000\n\u0002\u0018\u0002\n\u0002\b\u0004\n\u0002\u0010\u0007\n\u0002\b\u0005\b\u0082\u0004\u0018\u00002\u00020\u0001B\u0005¢\u0006\u0002\u0010\u0002J\u0012\u0010\u0003\u001a\u00020\u00042\b\u0010\u0005\u001a\u0004\u0018\u00010\u0006H\u0016J,\u0010\u0007\u001a\u00020\u00042\b\u0010\b\u001a\u0004\u0018\u00010\u00062\b\u0010\t\u001a\u0004\u0018\u00010\u00062\u0006\u0010\n\u001a\u00020\u000b2\u0006\u0010\f\u001a\u00020\u000bH\u0016J,\u0010\r\u001a\u00020\u00042\b\u0010\b\u001a\u0004\u0018\u00010\u00062\b\u0010\t\u001a\u0004\u0018\u00010\u00062\u0006\u0010\u000e\u001a\u00020\u000b2\u0006\u0010\u000f\u001a\u00020\u000bH\u0016¨\u0006\u0010"}, d2 = {"Lcom/folioreader/ui/view/FolioWebView$HorizontalGestureListener;", "Landroid/view/GestureDetector$SimpleOnGestureListener;", "(Lcom/folioreader/ui/view/FolioWebView;)V", "onDown", "", NotificationCompat.CATEGORY_EVENT, "Landroid/view/MotionEvent;", "onFling", "e1", "e2", "velocityX", "", "velocityY", "onScroll", "distanceX", "distanceY", "folioreader_release"}, k = 1, mv = {1, 1, 13})
    private final class HorizontalGestureListener extends GestureDetector.SimpleOnGestureListener {
        public HorizontalGestureListener() {
        }

        @Override
        public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {
            FolioWebView.this.lastScrollType = LastScrollType.USER;
            return false;
        }

        @Override
        public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
            if (!FolioWebView.access$getWebViewPager$p(FolioWebView.this).getIsScrolling()) {
                FolioWebView.access$getUiHandler$p(FolioWebView.this).postDelayed(new Runnable() {
                    @Override
                    public final void run() {
                        FolioWebView folioWebView = FolioWebView.this;
                        FolioWebView folioWebView2 = FolioWebView.this;
                        WebViewPager access$getWebViewPager$p = FolioWebView.access$getWebViewPager$p(FolioWebView.this);
                        if (access$getWebViewPager$p == null) {
                            Intrinsics.throwNpe();
                        }
                        folioWebView.scrollTo(folioWebView2.getScrollXPixelsForPage(access$getWebViewPager$p.getCurrentItem()), 0);
                    }
                }, 100L);
            }
            FolioWebView.this.lastScrollType = LastScrollType.USER;
            return true;
        }

        @Override
        public boolean onDown(MotionEvent event) {
            FolioWebView.this.eventActionDown = MotionEvent.obtain(event);
            FolioWebView.super.onTouchEvent(event);
            return true;
        }
    }

    @JavascriptInterface
    public final boolean dismissPopupWindow() {
        String str = LOG_TAG;
        StringBuilder sb = new StringBuilder("-> dismissPopupWindow -> ");
        FolioPageFragment folioPageFragment = this.parentFragment;
        if (folioPageFragment == null) {
            Intrinsics.throwUninitializedPropertyAccessException("parentFragment");
        }
        Link spineItem = folioPageFragment.getSpineItem();
        sb.append(spineItem != null ? spineItem.getHref() : null);
        Log.d(str, sb.toString());
        boolean isShowing = this.popupWindow.isShowing();
        Looper mainLooper = Looper.getMainLooper();
        Intrinsics.checkExpressionValueIsNotNull(mainLooper, "Looper.getMainLooper()");
        if (Intrinsics.areEqual(mainLooper.getThread(), Thread.currentThread())) {
            this.popupWindow.dismiss();
        } else {
            Handler handler = this.uiHandler;
            if (handler == null) {
                Intrinsics.throwUninitializedPropertyAccessException("uiHandler");
            }
            handler.post(new Runnable() {
                @Override
                public final void run() {
                    PopupWindow popupWindow;
                    popupWindow = FolioWebView.this.popupWindow;
                    popupWindow.dismiss();
                }
            });
        }
        this.selectionRect = new Rect();
        Handler handler2 = this.uiHandler;
        if (handler2 == null) {
            Intrinsics.throwUninitializedPropertyAccessException("uiHandler");
        }
        handler2.removeCallbacks(this.isScrollingRunnable);
        this.isScrollingCheckDuration = 0;
        return isShowing;
    }

    @Override
    public void destroy() {
        super.destroy();
        Log.d(LOG_TAG, "-> destroy");
        dismissPopupWindow();
        this.destroyed = true;
    }

    @Metadata(bv = {1, 0, 3}, d1 = {"\u0000\"\n\u0002\u0018\u0002\n\u0002\u0018\u0002\n\u0002\b\u0002\n\u0002\u0010\u000b\n\u0000\n\u0002\u0018\u0002\n\u0002\b\u0002\n\u0002\u0010\u0007\n\u0002\b\u0005\b\u0082\u0004\u0018\u00002\u00020\u0001B\u0005¢\u0006\u0002\u0010\u0002J,\u0010\u0003\u001a\u00020\u00042\b\u0010\u0005\u001a\u0004\u0018\u00010\u00062\b\u0010\u0007\u001a\u0004\u0018\u00010\u00062\u0006\u0010\b\u001a\u00020\t2\u0006\u0010\n\u001a\u00020\tH\u0016J,\u0010\u000b\u001a\u00020\u00042\b\u0010\u0005\u001a\u0004\u0018\u00010\u00062\b\u0010\u0007\u001a\u0004\u0018\u00010\u00062\u0006\u0010\f\u001a\u00020\t2\u0006\u0010\r\u001a\u00020\tH\u0016¨\u0006\u000e"}, d2 = {"Lcom/folioreader/ui/view/FolioWebView$VerticalGestureListener;", "Landroid/view/GestureDetector$SimpleOnGestureListener;", "(Lcom/folioreader/ui/view/FolioWebView;)V", "onFling", "", "e1", "Landroid/view/MotionEvent;", "e2", "velocityX", "", "velocityY", "onScroll", "distanceX", "distanceY", "folioreader_release"}, k = 1, mv = {1, 1, 13})
    private final class VerticalGestureListener extends GestureDetector.SimpleOnGestureListener {
        public VerticalGestureListener() {
        }

        @Override
        public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {
            FolioWebView.this.lastScrollType = LastScrollType.USER;
            return false;
        }

        @Override
        public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
            FolioWebView.this.lastScrollType = LastScrollType.USER;
            return false;
        }
    }

    public FolioWebView(Context context) {
        super(context);
        Intrinsics.checkParameterIsNotNull(context, "context");
        this.selectionRect = new Rect();
        this.popupRect = new Rect();
        this.popupWindow = new PopupWindow();
    }

    public FolioWebView(Context context, AttributeSet attributeSet) {
        super(context, attributeSet);
        Intrinsics.checkParameterIsNotNull(context, "context");
        Intrinsics.checkParameterIsNotNull(attributeSet, "attrs");
        this.selectionRect = new Rect();
        this.popupRect = new Rect();
        this.popupWindow = new PopupWindow();
    }

    public FolioWebView(Context context, AttributeSet attributeSet, int i) {
        super(context, attributeSet, i);
        Intrinsics.checkParameterIsNotNull(context, "context");
        Intrinsics.checkParameterIsNotNull(attributeSet, "attrs");
        this.selectionRect = new Rect();
        this.popupRect = new Rect();
        this.popupWindow = new PopupWindow();
    }

    private final void init() {
        GestureDetectorCompat gestureDetectorCompat;
        Log.v(LOG_TAG, "-> init");
        this.uiHandler = new Handler();
        Resources resources = getResources();
        Intrinsics.checkExpressionValueIsNotNull(resources, "resources");
        DisplayMetrics displayMetrics = resources.getDisplayMetrics();
        this.displayMetrics = displayMetrics;
        if (displayMetrics == null) {
            Intrinsics.throwNpe();
        }
        this.density = displayMetrics.density;
        FolioActivityCallback folioActivityCallback = this.folioActivityCallback;
        if (folioActivityCallback == null) {
            Intrinsics.throwUninitializedPropertyAccessException("folioActivityCallback");
        }
        if (folioActivityCallback.getDirection() == Config.Direction.HORIZONTAL) {
            gestureDetectorCompat = new GestureDetectorCompat(getContext(), new HorizontalGestureListener());
        } else {
            gestureDetectorCompat = new GestureDetectorCompat(getContext(), new VerticalGestureListener());
        }
        this.gestureDetector = gestureDetectorCompat;
        initViewTextSelection();
    }

    public final void initViewTextSelection() {
        ContextThemeWrapper contextThemeWrapper;
        Log.v(LOG_TAG, "-> initViewTextSelection");
        Drawable drawable = ContextCompat.getDrawable(getContext(), R.drawable.abc_text_select_handle_middle_mtrl_dark);
        this.handleHeight = drawable != null ? drawable.getIntrinsicHeight() : (int) (24 * this.density);
        Config savedConfig = AppUtil.INSTANCE.getSavedConfig(getContext());
        if (savedConfig == null) {
            Intrinsics.throwNpe();
        }
        if (savedConfig.isNightMode()) {
            contextThemeWrapper = new ContextThemeWrapper(getContext(), R.style.FolioNightTheme);
        } else {
            contextThemeWrapper = new ContextThemeWrapper(getContext(), R.style.FolioDayTheme);
        }
        View inflate = LayoutInflater.from(contextThemeWrapper).inflate(R.layout.text_selection, (ViewGroup) null);
        Intrinsics.checkExpressionValueIsNotNull(inflate, "LayoutInflater.from(ctw)…out.text_selection, null)");
        this.viewTextSelection = inflate;
        if (inflate == null) {
            Intrinsics.throwUninitializedPropertyAccessException("viewTextSelection");
        }
        inflate.measure(0, 0);
        View view = this.viewTextSelection;
        if (view == null) {
            Intrinsics.throwUninitializedPropertyAccessException("viewTextSelection");
        }
        ((ImageView) view.findViewById(R.id.yellowHighlight)).setOnClickListener(new View.OnClickListener() {
            @Override
            public final void onClick(View view2) {
                Log.v(FolioWebView.INSTANCE.getLOG_TAG(), "-> onClick -> yellowHighlight");
                FolioWebView.this.onHighlightColorItemsClicked(HighlightImpl.HighlightStyle.Yellow, false);
            }
        });
        View view2 = this.viewTextSelection;
        if (view2 == null) {
            Intrinsics.throwUninitializedPropertyAccessException("viewTextSelection");
        }
        ((ImageView) view2.findViewById(R.id.greenHighlight)).setOnClickListener(new View.OnClickListener() {
            @Override
            public final void onClick(View view3) {
                Log.v(FolioWebView.INSTANCE.getLOG_TAG(), "-> onClick -> greenHighlight");
                FolioWebView.this.onHighlightColorItemsClicked(HighlightImpl.HighlightStyle.Green, false);
            }
        });
        View view3 = this.viewTextSelection;
        if (view3 == null) {
            Intrinsics.throwUninitializedPropertyAccessException("viewTextSelection");
        }
        ((ImageView) view3.findViewById(R.id.blueHighlight)).setOnClickListener(new View.OnClickListener() {
            @Override
            public final void onClick(View view4) {
                Log.v(FolioWebView.INSTANCE.getLOG_TAG(), "-> onClick -> blueHighlight");
                FolioWebView.this.onHighlightColorItemsClicked(HighlightImpl.HighlightStyle.Blue, false);
            }
        });
        View view4 = this.viewTextSelection;
        if (view4 == null) {
            Intrinsics.throwUninitializedPropertyAccessException("viewTextSelection");
        }
        ((ImageView) view4.findViewById(R.id.pinkHighlight)).setOnClickListener(new View.OnClickListener() {
            @Override
            public final void onClick(View view5) {
                Log.v(FolioWebView.INSTANCE.getLOG_TAG(), "-> onClick -> pinkHighlight");
                FolioWebView.this.onHighlightColorItemsClicked(HighlightImpl.HighlightStyle.Pink, false);
            }
        });
        View view5 = this.viewTextSelection;
        if (view5 == null) {
            Intrinsics.throwUninitializedPropertyAccessException("viewTextSelection");
        }
        ((ImageView) view5.findViewById(R.id.underlineHighlight)).setOnClickListener(new View.OnClickListener() {
            @Override
            public final void onClick(View view6) {
                Log.v(FolioWebView.INSTANCE.getLOG_TAG(), "-> onClick -> underlineHighlight");
                FolioWebView.this.onHighlightColorItemsClicked(HighlightImpl.HighlightStyle.Underline, false);
            }
        });
        View view6 = this.viewTextSelection;
        if (view6 == null) {
            Intrinsics.throwUninitializedPropertyAccessException("viewTextSelection");
        }
        ((ImageView) view6.findViewById(R.id.deleteHighlight)).setOnClickListener(new View.OnClickListener() {
            @Override
            public final void onClick(View view7) {
                Log.v(FolioWebView.INSTANCE.getLOG_TAG(), "-> onClick -> deleteHighlight");
                FolioWebView.this.dismissPopupWindow();
                FolioWebView.this.loadUrl("javascript:clearSelection()");
                FolioWebView.this.loadUrl("javascript:deleteThisHighlight()");
            }
        });
        View view7 = this.viewTextSelection;
        if (view7 == null) {
            Intrinsics.throwUninitializedPropertyAccessException("viewTextSelection");
        }
        ((TextView) view7.findViewById(R.id.copySelection)).setOnClickListener(new View.OnClickListener() {
            @Override
            public final void onClick(View view8) {
                FolioWebView.this.dismissPopupWindow();
                FolioWebView folioWebView = FolioWebView.this;
                StringBuilder sb = new StringBuilder("javascript:onTextSelectionItemClicked(");
                Intrinsics.checkExpressionValueIsNotNull(view8, "it");
                sb.append(view8.getId());
                sb.append(')');
                folioWebView.loadUrl(sb.toString());
            }
        });
        View view8 = this.viewTextSelection;
        if (view8 == null) {
            Intrinsics.throwUninitializedPropertyAccessException("viewTextSelection");
        }
        ((TextView) view8.findViewById(R.id.shareSelection)).setOnClickListener(new View.OnClickListener() {
            @Override
            public final void onClick(View view9) {
                FolioWebView.this.dismissPopupWindow();
                FolioWebView folioWebView = FolioWebView.this;
                StringBuilder sb = new StringBuilder("javascript:onTextSelectionItemClicked(");
                Intrinsics.checkExpressionValueIsNotNull(view9, "it");
                sb.append(view9.getId());
                sb.append(')');
                folioWebView.loadUrl(sb.toString());
            }
        });
        View view9 = this.viewTextSelection;
        if (view9 == null) {
            Intrinsics.throwUninitializedPropertyAccessException("viewTextSelection");
        }
        ((TextView) view9.findViewById(R.id.defineSelection)).setOnClickListener(new View.OnClickListener() {
            @Override
            public final void onClick(View view10) {
                FolioWebView.this.dismissPopupWindow();
                FolioWebView folioWebView = FolioWebView.this;
                StringBuilder sb = new StringBuilder("javascript:onTextSelectionItemClicked(");
                Intrinsics.checkExpressionValueIsNotNull(view10, "it");
                sb.append(view10.getId());
                sb.append(')');
                folioWebView.loadUrl(sb.toString());
            }
        });
    }

    @JavascriptInterface
    public final void onTextSelectionItemClicked(int id, final String selectedText) {
        Handler handler = this.uiHandler;
        if (handler == null) {
            Intrinsics.throwUninitializedPropertyAccessException("uiHandler");
        }
        handler.post(new Runnable() {
            @Override
            public final void run() {
                FolioWebView.this.loadUrl("javascript:clearSelection()");
            }
        });
        if (id == R.id.copySelection) {
            Log.v(LOG_TAG, "-> onTextSelectionItemClicked -> copySelection -> " + selectedText);
            UiUtil.copyToClipboard(getContext(), selectedText);
            Toast.makeText(getContext(), getContext().getString(R.string.copied), 0).show();
            return;
        }
        if (id == R.id.shareSelection) {
            Log.v(LOG_TAG, "-> onTextSelectionItemClicked -> shareSelection -> " + selectedText);
            UiUtil.share(getContext(), selectedText);
            return;
        }
        if (id == R.id.defineSelection) {
            Log.v(LOG_TAG, "-> onTextSelectionItemClicked -> defineSelection -> " + selectedText);
            Handler handler2 = this.uiHandler;
            if (handler2 == null) {
                Intrinsics.throwUninitializedPropertyAccessException("uiHandler");
            }
            handler2.post(new Runnable() {
                @Override
                public final void run() {
                    FolioWebView.this.showDictDialog(selectedText);
                }
            });
            return;
        }
        Log.w(LOG_TAG, "-> onTextSelectionItemClicked -> unknown id = " + id);
    }

    public final void showDictDialog(String selectedText) {
        String str;
        DictionaryFragment dictionaryFragment = new DictionaryFragment();
        Bundle bundle = new Bundle();
        if (selectedText == null) {
            str = null;
        } else {
            if (selectedText == null) {
                throw new TypeCastException("null cannot be cast to non-null type kotlin.CharSequence");
            }
            str = StringsKt.trim(selectedText).toString();
        }
        bundle.putString(Constants.SELECTED_WORD, str);
        dictionaryFragment.setArguments(bundle);
        FolioPageFragment folioPageFragment = this.parentFragment;
        if (folioPageFragment == null) {
            Intrinsics.throwUninitializedPropertyAccessException("parentFragment");
        }
        dictionaryFragment.show(folioPageFragment.getFragmentManager(), DictionaryFragment.class.getName());
    }

    public final void onHighlightColorItemsClicked(HighlightImpl.HighlightStyle style, boolean isAlreadyCreated) {
        FolioPageFragment folioPageFragment = this.parentFragment;
        if (folioPageFragment == null) {
            Intrinsics.throwUninitializedPropertyAccessException("parentFragment");
        }
        folioPageFragment.highlight(style, isAlreadyCreated);
        dismissPopupWindow();
    }

    @JavascriptInterface
    public final void deleteThisHighlight(String id) {
        Log.d(LOG_TAG, "-> deleteThisHighlight");
        String str = id;
        if (str == null || str.length() == 0) {
            return;
        }
        HighlightImpl highlightForRangy = HighLightTable.getHighlightForRangy(id);
        if (HighLightTable.deleteHighlight(id)) {
            FolioPageFragment folioPageFragment = this.parentFragment;
            if (folioPageFragment == null) {
                Intrinsics.throwUninitializedPropertyAccessException("parentFragment");
            }
            final String generateRangyString = HighlightUtil.generateRangyString(folioPageFragment.getPageName());
            Handler handler = this.uiHandler;
            if (handler == null) {
                Intrinsics.throwUninitializedPropertyAccessException("uiHandler");
            }
            handler.post(new Runnable() {
                @Override
                public final void run() {
                    FolioPageFragment access$getParentFragment$p = FolioWebView.access$getParentFragment$p(FolioWebView.this);
                    String str2 = generateRangyString;
                    Intrinsics.checkExpressionValueIsNotNull(str2, "rangy");
                    access$getParentFragment$p.loadRangy(str2);
                }
            });
            if (highlightForRangy != null) {
                HighlightUtil.sendHighlightBroadcastEvent(getContext(), highlightForRangy, HighLight.HighLightAction.DELETE);
            }
        }
    }

    public final void setParentFragment(FolioPageFragment parentFragment) {
        Intrinsics.checkParameterIsNotNull(parentFragment, "parentFragment");
        this.parentFragment = parentFragment;
    }

    public final void setFolioActivityCallback(FolioActivityCallback folioActivityCallback) {
        Intrinsics.checkParameterIsNotNull(folioActivityCallback, "folioActivityCallback");
        this.folioActivityCallback = folioActivityCallback;
        init();
    }

    @Override
    protected void onLayout(boolean changed, int l, int t, int r, int b) {
        super.onLayout(changed, l, t, r, b);
        int ceil = (int) Math.ceil(getMeasuredWidth() / this.density);
        this.pageWidthCssDp = ceil;
        this.pageWidthCssPixels = ceil * this.density;
    }

    public final void setScrollListener(ScrollListener listener) {
        Intrinsics.checkParameterIsNotNull(listener, "listener");
        this.mScrollListener = listener;
    }

    public final void setSeekBarListener(SeekBarListener listener) {
        Intrinsics.checkParameterIsNotNull(listener, "listener");
        this.mSeekBarListener = listener;
    }

    @Override
    public boolean onTouchEvent(MotionEvent event) {
        if (event == null) {
            return false;
        }
        this.lastTouchAction = event.getAction();
        FolioActivityCallback folioActivityCallback = this.folioActivityCallback;
        if (folioActivityCallback == null) {
            Intrinsics.throwUninitializedPropertyAccessException("folioActivityCallback");
        }
        if (folioActivityCallback.getDirection() == Config.Direction.HORIZONTAL) {
            return computeHorizontalScroll(event);
        }
        return computeVerticalScroll(event);
    }

    private final boolean computeVerticalScroll(MotionEvent event) {
        GestureDetectorCompat gestureDetectorCompat = this.gestureDetector;
        if (gestureDetectorCompat == null) {
            Intrinsics.throwUninitializedPropertyAccessException("gestureDetector");
        }
        gestureDetectorCompat.onTouchEvent(event);
        return super.onTouchEvent(event);
    }

    private final boolean computeHorizontalScroll(MotionEvent event) {
        if (this.webViewPager == null) {
            return super.onTouchEvent(event);
        }
        WebViewPager webViewPager = this.webViewPager;
        if (webViewPager == null) {
            Intrinsics.throwUninitializedPropertyAccessException("webViewPager");
        }
        webViewPager.dispatchTouchEvent(event);
        GestureDetectorCompat gestureDetectorCompat = this.gestureDetector;
        if (gestureDetectorCompat == null) {
            Intrinsics.throwUninitializedPropertyAccessException("gestureDetector");
        }
        if (gestureDetectorCompat.onTouchEvent(event)) {
            return true;
        }
        return super.onTouchEvent(event);
    }

    public final int getScrollXDpForPage(int page) {
        return page * this.pageWidthCssDp;
    }

    public final int getScrollXPixelsForPage(int page) {
        return (int) Math.ceil(page * this.pageWidthCssPixels);
    }

    public final void setHorizontalPageCount(int horizontalPageCount) {
        this.horizontalPageCount = horizontalPageCount;
        Handler handler = this.uiHandler;
        if (handler == null) {
            Intrinsics.throwUninitializedPropertyAccessException("uiHandler");
        }
        handler.post(new Runnable() {
            @Override
            public final void run() {
                int i;
                FolioWebView folioWebView = FolioWebView.this;
                Object parent = folioWebView.getParent();
                if (parent != null) {
                    View findViewById = ((View) parent).findViewById(R.id.webViewPager);
                    Intrinsics.checkExpressionValueIsNotNull(findViewById, "(parent as View).findViewById(R.id.webViewPager)");
                    folioWebView.webViewPager = (WebViewPager) findViewById;
                    WebViewPager access$getWebViewPager$p = FolioWebView.access$getWebViewPager$p(FolioWebView.this);
                    i = FolioWebView.this.horizontalPageCount;
                    access$getWebViewPager$p.setHorizontalPageCount(i);
                    return;
                }
                throw new TypeCastException("null cannot be cast to non-null type android.view.View");
            }
        });
    }

    @Override
    public void scrollTo(int x, int y) {
        super.scrollTo(x, y);
        this.lastScrollType = LastScrollType.PROGRAMMATIC;
    }

    @Override
    protected void onScrollChanged(int l, int t, int oldl, int oldt) {
        ScrollListener scrollListener = this.mScrollListener;
        if (scrollListener != null) {
            if (scrollListener == null) {
                Intrinsics.throwNpe();
            }
            scrollListener.onScrollChange(t);
        }
        super.onScrollChanged(l, t, oldl, oldt);
        if (this.lastScrollType == LastScrollType.USER) {
            FolioPageFragment folioPageFragment = this.parentFragment;
            if (folioPageFragment == null) {
                Intrinsics.throwUninitializedPropertyAccessException("parentFragment");
            }
            folioPageFragment.setSearchLocatorVisible(null);
        }
        this.lastScrollType = null;
    }

    @Metadata(bv = {1, 0, 3}, d1 = {"\u0000.\n\u0002\u0018\u0002\n\u0002\u0018\u0002\n\u0002\b\u0002\n\u0002\u0010\u000b\n\u0000\n\u0002\u0018\u0002\n\u0000\n\u0002\u0018\u0002\n\u0002\b\u0002\n\u0002\u0018\u0002\n\u0000\n\u0002\u0010\u0002\n\u0002\b\u0002\b\u0082\u0004\u0018\u00002\u00020\u0001B\u0005¢\u0006\u0002\u0010\u0002J\u0018\u0010\u0003\u001a\u00020\u00042\u0006\u0010\u0005\u001a\u00020\u00062\u0006\u0010\u0007\u001a\u00020\bH\u0016J\u0018\u0010\t\u001a\u00020\u00042\u0006\u0010\u0005\u001a\u00020\u00062\u0006\u0010\n\u001a\u00020\u000bH\u0016J\u0010\u0010\f\u001a\u00020\r2\u0006\u0010\u0005\u001a\u00020\u0006H\u0016J\u0018\u0010\u000e\u001a\u00020\u00042\u0006\u0010\u0005\u001a\u00020\u00062\u0006\u0010\n\u001a\u00020\u000bH\u0016¨\u0006\u000f"}, d2 = {"Lcom/folioreader/ui/view/FolioWebView$TextSelectionCb;", "Landroid/view/ActionMode$Callback;", "(Lcom/folioreader/ui/view/FolioWebView;)V", "onActionItemClicked", "", "mode", "Landroid/view/ActionMode;", "item", "Landroid/view/MenuItem;", "onCreateActionMode", "menu", "Landroid/view/Menu;", "onDestroyActionMode", "", "onPrepareActionMode", "folioreader_release"}, k = 1, mv = {1, 1, 13})
    private final class TextSelectionCb implements ActionMode.Callback {
        public TextSelectionCb() {
        }

        @Override
        public boolean onCreateActionMode(ActionMode mode, Menu menu) {
            Intrinsics.checkParameterIsNotNull(mode, "mode");
            Intrinsics.checkParameterIsNotNull(menu, "menu");
            Log.d(FolioWebView.INSTANCE.getLOG_TAG(), "-> onCreateActionMode");
            return true;
        }

        @Override
        public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
            Intrinsics.checkParameterIsNotNull(mode, "mode");
            Intrinsics.checkParameterIsNotNull(menu, "menu");
            Log.d(FolioWebView.INSTANCE.getLOG_TAG(), "-> onPrepareActionMode");
            FolioWebView.this.evaluateJavascript("javascript:getSelectionRect()", new ValueCallback<String>() {
                @Override
                public final void onReceiveValue(String str) {
                    JSONObject jSONObject = new JSONObject(str);
                    FolioWebView.this.setSelectionRect(jSONObject.getInt("left"), jSONObject.getInt("top"), jSONObject.getInt("right"), jSONObject.getInt("bottom"));
                }
            });
            return false;
        }

        @Override
        public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
            Intrinsics.checkParameterIsNotNull(mode, "mode");
            Intrinsics.checkParameterIsNotNull(item, "item");
            Log.d(FolioWebView.INSTANCE.getLOG_TAG(), "-> onActionItemClicked");
            return false;
        }

        @Override
        public void onDestroyActionMode(ActionMode mode) {
            Intrinsics.checkParameterIsNotNull(mode, "mode");
            Log.d(FolioWebView.INSTANCE.getLOG_TAG(), "-> onDestroyActionMode");
            FolioWebView.this.dismissPopupWindow();
        }
    }

    @Metadata(bv = {1, 0, 3}, d1 = {"\u0000<\n\u0002\u0018\u0002\n\u0002\u0018\u0002\n\u0002\b\u0002\n\u0002\u0010\u000b\n\u0000\n\u0002\u0018\u0002\n\u0000\n\u0002\u0018\u0002\n\u0002\b\u0002\n\u0002\u0018\u0002\n\u0000\n\u0002\u0010\u0002\n\u0002\b\u0002\n\u0002\u0018\u0002\n\u0000\n\u0002\u0018\u0002\n\u0002\b\u0002\b\u0083\u0004\u0018\u00002\u00020\u0001B\u0005¢\u0006\u0002\u0010\u0002J\u0018\u0010\u0003\u001a\u00020\u00042\u0006\u0010\u0005\u001a\u00020\u00062\u0006\u0010\u0007\u001a\u00020\bH\u0016J\u0018\u0010\t\u001a\u00020\u00042\u0006\u0010\u0005\u001a\u00020\u00062\u0006\u0010\n\u001a\u00020\u000bH\u0016J\u0010\u0010\f\u001a\u00020\r2\u0006\u0010\u0005\u001a\u00020\u0006H\u0016J \u0010\u000e\u001a\u00020\r2\u0006\u0010\u0005\u001a\u00020\u00062\u0006\u0010\u000f\u001a\u00020\u00102\u0006\u0010\u0011\u001a\u00020\u0012H\u0016J\u0018\u0010\u0013\u001a\u00020\u00042\u0006\u0010\u0005\u001a\u00020\u00062\u0006\u0010\n\u001a\u00020\u000bH\u0016¨\u0006\u0014"}, d2 = {"Lcom/folioreader/ui/view/FolioWebView$TextSelectionCb2;", "Landroid/view/ActionMode$Callback2;", "(Lcom/folioreader/ui/view/FolioWebView;)V", "onActionItemClicked", "", "mode", "Landroid/view/ActionMode;", "item", "Landroid/view/MenuItem;", "onCreateActionMode", "menu", "Landroid/view/Menu;", "onDestroyActionMode", "", "onGetContentRect", "view", "Landroid/view/View;", "outRect", "Landroid/graphics/Rect;", "onPrepareActionMode", "folioreader_release"}, k = 1, mv = {1, 1, 13})
    private final class TextSelectionCb2 extends ActionMode.Callback2 {
        public TextSelectionCb2() {
        }

        @Override
        public boolean onCreateActionMode(ActionMode mode, Menu menu) {
            Intrinsics.checkParameterIsNotNull(mode, "mode");
            Intrinsics.checkParameterIsNotNull(menu, "menu");
            Log.d(FolioWebView.INSTANCE.getLOG_TAG(), "-> onCreateActionMode");
            menu.clear();
            return true;
        }

        @Override
        public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
            Intrinsics.checkParameterIsNotNull(mode, "mode");
            Intrinsics.checkParameterIsNotNull(menu, "menu");
            Log.d(FolioWebView.INSTANCE.getLOG_TAG(), "-> onPrepareActionMode");
            return false;
        }

        @Override
        public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
            Intrinsics.checkParameterIsNotNull(mode, "mode");
            Intrinsics.checkParameterIsNotNull(item, "item");
            Log.d(FolioWebView.INSTANCE.getLOG_TAG(), "-> onActionItemClicked");
            return false;
        }

        @Override
        public void onDestroyActionMode(ActionMode mode) {
            Intrinsics.checkParameterIsNotNull(mode, "mode");
            Log.d(FolioWebView.INSTANCE.getLOG_TAG(), "-> onDestroyActionMode");
            FolioWebView.this.dismissPopupWindow();
        }

        @Override
        public void onGetContentRect(ActionMode mode, View view, Rect outRect) {
            Intrinsics.checkParameterIsNotNull(mode, "mode");
            Intrinsics.checkParameterIsNotNull(view, "view");
            Intrinsics.checkParameterIsNotNull(outRect, "outRect");
            Log.d(FolioWebView.INSTANCE.getLOG_TAG(), "-> onGetContentRect");
            FolioWebView.this.evaluateJavascript("javascript:getSelectionRect()", new ValueCallback<String>() {
                @Override
                public final void onReceiveValue(String str) {
                    JSONObject jSONObject = new JSONObject(str);
                    FolioWebView.this.setSelectionRect(jSONObject.getInt("left"), jSONObject.getInt("top"), jSONObject.getInt("right"), jSONObject.getInt("bottom"));
                }
            });
        }
    }

    @Override
    public ActionMode startActionMode(ActionMode.Callback callback) {
        Intrinsics.checkParameterIsNotNull(callback, "callback");
        Log.d(LOG_TAG, "-> startActionMode");
        TextSelectionCb textSelectionCb = new TextSelectionCb();
        this.textSelectionCb = textSelectionCb;
        ActionMode startActionMode = super.startActionMode(textSelectionCb);
        this.actionMode = startActionMode;
        if (startActionMode != null) {
            startActionMode.finish();
        }
        ActionMode actionMode = this.actionMode;
        if (actionMode != null) {
            return actionMode;
        }
        throw new TypeCastException("null cannot be cast to non-null type android.view.ActionMode");
    }

    @Override
    public ActionMode startActionMode(ActionMode.Callback callback, int type) {
        Intrinsics.checkParameterIsNotNull(callback, "callback");
        Log.d(LOG_TAG, "-> startActionMode");
        TextSelectionCb2 textSelectionCb2 = new TextSelectionCb2();
        this.textSelectionCb2 = textSelectionCb2;
        ActionMode startActionMode = super.startActionMode(textSelectionCb2, type);
        this.actionMode = startActionMode;
        if (startActionMode != null) {
            startActionMode.finish();
        }
        ActionMode actionMode = this.actionMode;
        if (actionMode != null) {
            return actionMode;
        }
        throw new TypeCastException("null cannot be cast to non-null type android.view.ActionMode");
    }

    private final void applyThemeColorToHandles() {
        Log.v(LOG_TAG, "-> applyThemeColorToHandles");
        if (Build.VERSION.SDK_INT < 23) {
            FolioActivityCallback folioActivityCallback = this.folioActivityCallback;
            if (folioActivityCallback == null) {
                Intrinsics.throwUninitializedPropertyAccessException("folioActivityCallback");
            }
            WeakReference<FolioActivity> activity = folioActivityCallback.getActivity();
            Intrinsics.checkExpressionValueIsNotNull(activity, "folioActivityCallback.activity");
            Field findField = ReflectionUtils.findField(FolioActivity.class, "mWindowManager");
            Intrinsics.checkExpressionValueIsNotNull(findField, "mWindowManagerField");
            findField.setAccessible(true);
            Object obj = findField.get(activity.get());
            Field findField2 = ReflectionUtils.findField(Class.forName("android.view.WindowManagerImpl"), "mGlobal");
            Intrinsics.checkExpressionValueIsNotNull(findField2, "mGlobalField");
            findField2.setAccessible(true);
            Object obj2 = findField2.get(obj);
            Field findField3 = ReflectionUtils.findField(Class.forName("android.view.WindowManagerGlobal"), "mViews");
            Intrinsics.checkExpressionValueIsNotNull(findField3, "mViewsField");
            findField3.setAccessible(true);
            Object obj3 = findField3.get(obj2);
            if (obj3 == null) {
                throw new TypeCastException("null cannot be cast to non-null type kotlin.collections.ArrayList<android.view.View> /* = java.util.ArrayList<android.view.View> */");
            }
            ArrayList arrayList = (ArrayList) obj3;
            Config savedConfig = AppUtil.INSTANCE.getSavedConfig(getContext());
            if (savedConfig == null) {
                Intrinsics.throwNpe();
            }
            Iterator it = arrayList.iterator();
            while (it.hasNext()) {
                View view = (View) it.next();
                Class<?> cls = Class.forName("com.android.org.chromium.content.browser.input.HandleView");
                if (cls.isInstance(view)) {
                    Field findField4 = ReflectionUtils.findField(cls, "mDrawable");
                    Intrinsics.checkExpressionValueIsNotNull(findField4, "mDrawableField");
                    findField4.setAccessible(true);
                    Object obj4 = findField4.get(view);
                    if (obj4 == null) {
                        throw new TypeCastException("null cannot be cast to non-null type android.graphics.drawable.BitmapDrawable");
                    }
                    UiUtil.setColorIntToDrawable(savedConfig.getThemeColor(), (BitmapDrawable) obj4);
                }
            }
            return;
        }
        FolioActivityCallback folioActivityCallback2 = this.folioActivityCallback;
        if (folioActivityCallback2 == null) {
            Intrinsics.throwUninitializedPropertyAccessException("folioActivityCallback");
        }
        WeakReference<FolioActivity> activity2 = folioActivityCallback2.getActivity();
        Intrinsics.checkExpressionValueIsNotNull(activity2, "folioActivityCallback.activity");
        Field findField5 = ReflectionUtils.findField(FolioActivity.class, "mWindowManager");
        Intrinsics.checkExpressionValueIsNotNull(findField5, "mWindowManagerField");
        findField5.setAccessible(true);
        Object obj5 = findField5.get(activity2.get());
        Field findField6 = ReflectionUtils.findField(Class.forName("android.view.WindowManagerImpl"), "mGlobal");
        Intrinsics.checkExpressionValueIsNotNull(findField6, "mGlobalField");
        findField6.setAccessible(true);
        Object obj6 = findField6.get(obj5);
        Field findField7 = ReflectionUtils.findField(Class.forName("android.view.WindowManagerGlobal"), "mViews");
        Intrinsics.checkExpressionValueIsNotNull(findField7, "mViewsField");
        findField7.setAccessible(true);
        Object obj7 = findField7.get(obj6);
        if (obj7 == null) {
            throw new TypeCastException("null cannot be cast to non-null type kotlin.collections.ArrayList<android.view.View> /* = java.util.ArrayList<android.view.View> */");
        }
        ArrayList arrayList2 = (ArrayList) obj7;
        Config savedConfig2 = AppUtil.INSTANCE.getSavedConfig(getContext());
        if (savedConfig2 == null) {
            Intrinsics.throwNpe();
        }
        Iterator it2 = arrayList2.iterator();
        while (it2.hasNext()) {
            View view2 = (View) it2.next();
            Class<?> cls2 = Class.forName("android.widget.PopupWindow$PopupDecorView");
            if (cls2.isInstance(view2)) {
                Field findField8 = ReflectionUtils.findField(cls2, "mChildren");
                Intrinsics.checkExpressionValueIsNotNull(findField8, "mChildrenField");
                findField8.setAccessible(true);
                Object obj8 = findField8.get(view2);
                if (obj8 == null) {
                    throw new TypeCastException("null cannot be cast to non-null type kotlin.Array<android.view.View>");
                }
                View[] viewArr = (View[]) obj8;
                FolioActivity folioActivity = activity2.get();
                Field findField9 = ReflectionUtils.findField(Class.forName("org.chromium.android_webview.PopupTouchHandleDrawable", true, new PathClassLoader("/system/app/Chrome/Chrome.apk", folioActivity != null ? folioActivity.getClassLoader() : null)), "mDrawable");
                Intrinsics.checkExpressionValueIsNotNull(findField9, "mDrawableField");
                findField9.setAccessible(true);
                Object obj9 = findField9.get(viewArr[0]);
                if (obj9 == null) {
                    throw new TypeCastException("null cannot be cast to non-null type android.graphics.drawable.Drawable");
                }
                UiUtil.setColorIntToDrawable(savedConfig2.getThemeColor(), (Drawable) obj9);
            }
        }
    }

    @JavascriptInterface
    public final void setSelectionRect(int left, int top, int right, int bottom) {
        Rect rect = new Rect();
        rect.left = (int) (left * this.density);
        rect.top = (int) (top * this.density);
        rect.right = (int) (right * this.density);
        rect.bottom = (int) (bottom * this.density);
        Log.d(LOG_TAG, "-> setSelectionRect -> " + rect);
        computeTextSelectionRect(rect);
        Handler handler = this.uiHandler;
        if (handler == null) {
            Intrinsics.throwUninitializedPropertyAccessException("uiHandler");
        }
        handler.post(new Runnable() {
            @Override
            public final void run() {
                FolioWebView.this.showTextSelectionPopup();
            }
        });
    }

    private final void computeTextSelectionRect(Rect currentSelectionRect) {
        int measuredHeight;
        String str = LOG_TAG;
        Log.v(str, "-> computeTextSelectionRect");
        FolioActivityCallback folioActivityCallback = this.folioActivityCallback;
        if (folioActivityCallback == null) {
            Intrinsics.throwUninitializedPropertyAccessException("folioActivityCallback");
        }
        Rect viewportRect = folioActivityCallback.getViewportRect(DisplayUnit.PX);
        Log.d(str, "-> viewportRect -> " + viewportRect);
        if (!Rect.intersects(viewportRect, currentSelectionRect)) {
            Log.i(str, "-> currentSelectionRect doesn't intersects viewportRect");
            Handler handler = this.uiHandler;
            if (handler == null) {
                Intrinsics.throwUninitializedPropertyAccessException("uiHandler");
            }
            handler.post(new Runnable() {
                @Override
                public final void run() {
                    PopupWindow popupWindow;
                    Runnable runnable;
                    popupWindow = FolioWebView.this.popupWindow;
                    popupWindow.dismiss();
                    Handler access$getUiHandler$p = FolioWebView.access$getUiHandler$p(FolioWebView.this);
                    runnable = FolioWebView.this.isScrollingRunnable;
                    access$getUiHandler$p.removeCallbacks(runnable);
                }
            });
            return;
        }
        Log.i(str, "-> currentSelectionRect intersects viewportRect");
        if (Intrinsics.areEqual(this.selectionRect, currentSelectionRect)) {
            Log.i(str, "-> setSelectionRect -> currentSelectionRect is equal to previous selectionRect so no need to computeTextSelectionRect and show popupWindow again");
            return;
        }
        Log.i(str, "-> setSelectionRect -> currentSelectionRect is not equal to previous selectionRect so computeTextSelectionRect and show popupWindow");
        this.selectionRect = currentSelectionRect;
        Rect rect = new Rect(viewportRect);
        rect.bottom = this.selectionRect.top - ((int) (8 * this.density));
        Rect rect2 = new Rect(viewportRect);
        rect2.top = this.selectionRect.bottom + this.handleHeight;
        this.popupRect.left = viewportRect.left;
        this.popupRect.top = rect2.top;
        Rect rect3 = this.popupRect;
        int i = rect3.left;
        View view = this.viewTextSelection;
        if (view == null) {
            Intrinsics.throwUninitializedPropertyAccessException("viewTextSelection");
        }
        rect3.right = i + view.getMeasuredWidth();
        Rect rect4 = this.popupRect;
        int i2 = rect4.top;
        View view2 = this.viewTextSelection;
        if (view2 == null) {
            Intrinsics.throwUninitializedPropertyAccessException("viewTextSelection");
        }
        rect4.bottom = i2 + view2.getMeasuredHeight();
        if (rect2.contains(this.popupRect)) {
            Log.i(str, "-> show below");
            measuredHeight = rect2.top;
        } else {
            this.popupRect.top = rect.top;
            Rect rect5 = this.popupRect;
            int i3 = rect5.top;
            View view3 = this.viewTextSelection;
            if (view3 == null) {
                Intrinsics.throwUninitializedPropertyAccessException("viewTextSelection");
            }
            rect5.bottom = i3 + view3.getMeasuredHeight();
            if (rect.contains(this.popupRect)) {
                Log.i(str, "-> show above");
                measuredHeight = rect.bottom - this.popupRect.height();
            } else {
                Log.i(str, "-> show in middle");
                View view4 = this.viewTextSelection;
                if (view4 == null) {
                    Intrinsics.throwUninitializedPropertyAccessException("viewTextSelection");
                }
                measuredHeight = this.selectionRect.top - ((view4.getMeasuredHeight() - this.selectionRect.height()) / 2);
            }
        }
        View view5 = this.viewTextSelection;
        if (view5 == null) {
            Intrinsics.throwUninitializedPropertyAccessException("viewTextSelection");
        }
        this.popupRect.offsetTo(this.selectionRect.left - ((view5.getMeasuredWidth() - this.selectionRect.width()) / 2), measuredHeight);
        if (this.popupRect.left < viewportRect.left) {
            this.popupRect.right += 0 - this.popupRect.left;
            this.popupRect.left = 0;
        }
        if (this.popupRect.right > viewportRect.right) {
            int i4 = this.popupRect.right - viewportRect.right;
            this.popupRect.left -= i4;
            this.popupRect.right -= i4;
        }
    }

    public final void showTextSelectionPopup() {
        String str = LOG_TAG;
        Log.v(str, "-> showTextSelectionPopup");
        Log.d(str, "-> showTextSelectionPopup -> To be laid out popupRect -> " + this.popupRect);
        this.popupWindow.dismiss();
        this.oldScrollX = getScrollX();
        this.oldScrollY = getScrollY();
        this.isScrollingRunnable = new Runnable() {
            @Override
            public final void run() {
                throw new UnsupportedOperationException("Method not decompiled: com.folioreader.ui.view.FolioWebView$showTextSelectionPopup$1.run():void");
            }
        };
        Handler handler = this.uiHandler;
        if (handler == null) {
            Intrinsics.throwUninitializedPropertyAccessException("uiHandler");
        }
        handler.removeCallbacks(this.isScrollingRunnable);
        this.isScrollingCheckDuration = 0;
        if (this.destroyed) {
            return;
        }
        Handler handler2 = this.uiHandler;
        if (handler2 == null) {
            Intrinsics.throwUninitializedPropertyAccessException("uiHandler");
        }
        handler2.postDelayed(this.isScrollingRunnable, 100);
    }
}