import typing

import android.app
import android.content
import android.content.pm
import android.content.res
import android.graphics
import android.net
import android.net.http
import android.os
import android.print_
import android.util
import android.view
import android.view.accessibility
import android.view.autofill
import android.view.inputmethod
import android.view.textclassifier
import android.view.translation
import android.widget
import java
import java.chaquopy
import java.io
import java.lang
import java.lang.annotation
import java.security
import java.security.cert
import java.util
import java.util.concurrent
import java.util.function

class ClientCertRequest(java.lang.Object):
    def __init__(self) -> None: ...
    def cancel(self) -> None: ...
    def getHost(self) -> str: ...
    def getKeyTypes(self) -> java.chaquopy.JavaArray[java.lang.String] | None: ...
    def getPort(self) -> int: ...
    def getPrincipals(self) -> java.chaquopy.JavaArray[java.security.Principal] | None: ...
    def ignore(self) -> None: ...
    def proceed(self, arg1: java.security.PrivateKey, arg2: java.chaquopy.JavaArray[java.security.cert.X509Certificate], /) -> None: ...

class ConsoleMessage(java.lang.Object):
    def __init__(self, message: str | java.lang.String, sourceId: str | java.lang.String, lineNumber: int | java.jint | java.lang.Integer, msgLevel: ConsoleMessage.MessageLevel, /) -> None: ...
    def lineNumber(self) -> int: ...
    def message(self) -> str: ...
    def messageLevel(self) -> ConsoleMessage.MessageLevel: ...
    def sourceId(self) -> str: ...

    class MessageLevel(java.lang.Enum[ConsoleMessage.MessageLevel]):
        DEBUG: typing.ClassVar[ConsoleMessage.MessageLevel] = ...
        ERROR: typing.ClassVar[ConsoleMessage.MessageLevel] = ...
        LOG: typing.ClassVar[ConsoleMessage.MessageLevel] = ...
        TIP: typing.ClassVar[ConsoleMessage.MessageLevel] = ...
        WARNING: typing.ClassVar[ConsoleMessage.MessageLevel] = ...
        @staticmethod
        def valueOf(name: str | java.lang.String, /) -> ConsoleMessage.MessageLevel: ...
        @staticmethod
        def values() -> java.chaquopy.JavaArray[ConsoleMessage.MessageLevel]: ...

class CookieManager(java.lang.Object):
    def __init__(self) -> None: ...
    def acceptCookie(self) -> bool: ...
    def acceptThirdPartyCookies(self, arg1: WebView, /) -> bool: ...
    @staticmethod
    def allowFileSchemeCookies() -> bool: ...
    def clone(self) -> java.lang.Object: ...
    def flush(self) -> None: ...
    def getCookie(self, arg1: str | java.lang.String, /) -> str: ...
    @staticmethod
    def getInstance() -> CookieManager: ...
    def hasCookies(self) -> bool: ...
    def removeAllCookie(self) -> None: ...
    def removeAllCookies(self, arg1: ValueCallback[java.lang.Boolean], /) -> None: ...
    def removeExpiredCookie(self) -> None: ...
    def removeSessionCookie(self) -> None: ...
    def removeSessionCookies(self, arg1: ValueCallback[java.lang.Boolean], /) -> None: ...
    def setAcceptCookie(self, arg1: bool | java.jboolean | java.lang.Boolean, /) -> None: ...
    @staticmethod
    def setAcceptFileSchemeCookies(accept: bool | java.jboolean | java.lang.Boolean, /) -> None: ...
    def setAcceptThirdPartyCookies(self, arg1: WebView, arg2: bool | java.jboolean | java.lang.Boolean, /) -> None: ...
    @typing.overload
    def setCookie(self, arg1: str | java.lang.String, arg2: str | java.lang.String, /) -> None: ...
    @typing.overload
    def setCookie(self, arg1: str | java.lang.String, arg2: str | java.lang.String, arg3: ValueCallback[java.lang.Boolean], /) -> None: ...

class CookieSyncManager(java.lang.Runnable):
    @staticmethod
    def createInstance(context: android.content.Context, /) -> CookieSyncManager: ...
    @staticmethod
    def getInstance() -> CookieSyncManager: ...
    def resetSync(self) -> None: ...
    def run(self) -> None: ...
    def startSync(self) -> None: ...
    def stopSync(self) -> None: ...
    def sync(self) -> None: ...
    def syncFromRamToFlash(self) -> None: ...

class DateSorter(java.lang.Object):
    DAY_COUNT: typing.ClassVar[int] = ...
    def __init__(self, context: android.content.Context, /) -> None: ...
    def getBoundary(self, index: int | java.jint | java.lang.Integer, /) -> int: ...
    def getIndex(self, time: int | java.jlong | java.lang.Long, /) -> int: ...
    def getLabel(self, index: int | java.jint | java.lang.Integer, /) -> str: ...

class DownloadListener(java.lang.Object):
    def onDownloadStart(self, arg1: str | java.lang.String, arg2: str | java.lang.String, arg3: str | java.lang.String, arg4: str | java.lang.String, arg5: int | java.jlong | java.lang.Long, /) -> None: ...

class GeolocationPermissions(java.lang.Object):
    def allow(self, origin: str | java.lang.String, /) -> None: ...
    def clear(self, origin: str | java.lang.String, /) -> None: ...
    def clearAll(self) -> None: ...
    def getAllowed(self, origin: str | java.lang.String, callback: ValueCallback[java.lang.Boolean], /) -> None: ...
    @staticmethod
    def getInstance() -> GeolocationPermissions: ...
    def getOrigins(self, callback: ValueCallback[java.util.Set[java.lang.String]], /) -> None: ...

    class Callback(java.lang.Object):
        def invoke(self, arg1: str | java.lang.String, arg2: bool | java.jboolean | java.lang.Boolean, arg3: bool | java.jboolean | java.lang.Boolean, /) -> None: ...

class HttpAuthHandler(android.os.Handler):
    def cancel(self) -> None: ...
    def proceed(self, username: str | java.lang.String, password: str | java.lang.String, /) -> None: ...
    def useHttpAuthUsernamePassword(self) -> bool: ...

class JavascriptInterface(java.lang.annotation.Annotation): ...

class JsPromptResult(JsResult):
    def confirm(self, result: str | java.lang.String, /) -> None: ...

class JsResult(java.lang.Object):
    def cancel(self) -> None: ...
    def confirm(self) -> None: ...

class MimeTypeMap(java.lang.Object):
    def getExtensionFromMimeType(self, mimeType: str | java.lang.String, /) -> str | None: ...
    @staticmethod
    def getFileExtensionFromUrl(url: str | java.lang.String, /) -> str: ...
    def getMimeTypeFromExtension(self, extension: str | java.lang.String, /) -> str | None: ...
    @staticmethod
    def getSingleton() -> MimeTypeMap: ...
    def hasExtension(self, extension: str | java.lang.String, /) -> bool: ...
    def hasMimeType(self, mimeType: str | java.lang.String, /) -> bool: ...

class PermissionRequest(java.lang.Object):
    RESOURCE_AUDIO_CAPTURE: typing.ClassVar[str] = ...
    RESOURCE_MIDI_SYSEX: typing.ClassVar[str] = ...
    RESOURCE_PROTECTED_MEDIA_ID: typing.ClassVar[str] = ...
    RESOURCE_VIDEO_CAPTURE: typing.ClassVar[str] = ...
    def __init__(self) -> None: ...
    def deny(self) -> None: ...
    def getOrigin(self) -> android.net.Uri: ...
    def getResources(self) -> java.chaquopy.JavaArray[java.lang.String]: ...
    def grant(self, arg1: java.chaquopy.JavaArray[java.lang.String], /) -> None: ...

class PluginStub(java.lang.Object):
    def getEmbeddedView(self, arg1: int | java.jint | java.lang.Integer, arg2: android.content.Context, /) -> android.view.View: ...
    def getFullScreenView(self, arg1: int | java.jint | java.lang.Integer, arg2: android.content.Context, /) -> android.view.View: ...

class RenderProcessGoneDetail(java.lang.Object):
    def __init__(self) -> None: ...
    def didCrash(self) -> bool: ...
    def rendererPriorityAtExit(self) -> int: ...

class SafeBrowsingResponse(java.lang.Object):
    def __init__(self) -> None: ...
    def backToSafety(self, arg1: bool | java.jboolean | java.lang.Boolean, /) -> None: ...
    def proceed(self, arg1: bool | java.jboolean | java.lang.Boolean, /) -> None: ...
    def showInterstitial(self, arg1: bool | java.jboolean | java.lang.Boolean, /) -> None: ...

class ServiceWorkerClient(java.lang.Object):
    def __init__(self) -> None: ...
    def shouldInterceptRequest(self, request: WebResourceRequest, /) -> WebResourceResponse | None: ...

class ServiceWorkerController(java.lang.Object):
    def __init__(self) -> None: ...
    @staticmethod
    def getInstance() -> ServiceWorkerController: ...
    def getServiceWorkerWebSettings(self) -> ServiceWorkerWebSettings: ...
    def setServiceWorkerClient(self, arg1: ServiceWorkerClient, /) -> None: ...

class ServiceWorkerWebSettings(java.lang.Object):
    def __init__(self) -> None: ...
    def getAllowContentAccess(self) -> bool: ...
    def getAllowFileAccess(self) -> bool: ...
    def getBlockNetworkLoads(self) -> bool: ...
    def getCacheMode(self) -> int: ...
    def setAllowContentAccess(self, arg1: bool | java.jboolean | java.lang.Boolean, /) -> None: ...
    def setAllowFileAccess(self, arg1: bool | java.jboolean | java.lang.Boolean, /) -> None: ...
    def setBlockNetworkLoads(self, arg1: bool | java.jboolean | java.lang.Boolean, /) -> None: ...
    def setCacheMode(self, arg1: int | java.jint | java.lang.Integer, /) -> None: ...

class SslErrorHandler(android.os.Handler):
    def cancel(self) -> None: ...
    def proceed(self) -> None: ...

class TracingConfig(java.lang.Object):
    CATEGORIES_ALL: typing.ClassVar[int] = ...
    CATEGORIES_ANDROID_WEBVIEW: typing.ClassVar[int] = ...
    CATEGORIES_FRAME_VIEWER: typing.ClassVar[int] = ...
    CATEGORIES_INPUT_LATENCY: typing.ClassVar[int] = ...
    CATEGORIES_JAVASCRIPT_AND_RENDERING: typing.ClassVar[int] = ...
    CATEGORIES_NONE: typing.ClassVar[int] = ...
    CATEGORIES_RENDERING: typing.ClassVar[int] = ...
    CATEGORIES_WEB_DEVELOPER: typing.ClassVar[int] = ...
    RECORD_CONTINUOUSLY: typing.ClassVar[int] = ...
    RECORD_UNTIL_FULL: typing.ClassVar[int] = ...
    def getCustomIncludedCategories(self) -> java.util.List[java.lang.String]: ...
    def getPredefinedCategories(self) -> int: ...
    def getTracingMode(self) -> int: ...

    class Builder(java.lang.Object):
        def __init__(self) -> None: ...
        @typing.overload
        def addCategories(self, categories: java.util.Collection[java.lang.String], /) -> TracingConfig.Builder: ...
        @typing.overload
        def addCategories(self, *predefinedCategories: java.jint) -> TracingConfig.Builder: ...
        @typing.overload
        def addCategories(self, *categories: java.lang.String) -> TracingConfig.Builder: ...
        def build(self) -> TracingConfig: ...
        def setTracingMode(self, tracingMode: int | java.jint | java.lang.Integer, /) -> TracingConfig.Builder: ...

class TracingController(java.lang.Object):
    def __init__(self) -> None: ...
    @staticmethod
    def getInstance() -> TracingController: ...
    def isTracing(self) -> bool: ...
    def start(self, arg1: TracingConfig, /) -> None: ...
    def stop(self, arg1: java.io.OutputStream, arg2: java.util.concurrent.Executor, /) -> bool: ...

class URLUtil(java.lang.Object):
    def __init__(self) -> None: ...
    @staticmethod
    def composeSearchUrl(inQuery: str | java.lang.String, template: str | java.lang.String, queryPlaceHolder: str | java.lang.String, /) -> str: ...
    @staticmethod
    def decode(url: java.chaquopy.JavaArrayJByte, /) -> java.chaquopy.JavaArrayJByte: ...
    @staticmethod
    def guessFileName(url: str | java.lang.String, contentDisposition: str | java.lang.String, mimeType: str | java.lang.String, /) -> str: ...
    @staticmethod
    def guessUrl(inUrl: str | java.lang.String, /) -> str: ...
    @staticmethod
    def isAboutUrl(url: str | java.lang.String, /) -> bool: ...
    @staticmethod
    def isAssetUrl(url: str | java.lang.String, /) -> bool: ...
    @staticmethod
    def isContentUrl(url: str | java.lang.String, /) -> bool: ...
    @staticmethod
    def isCookielessProxyUrl(url: str | java.lang.String, /) -> bool: ...
    @staticmethod
    def isDataUrl(url: str | java.lang.String, /) -> bool: ...
    @staticmethod
    def isFileUrl(url: str | java.lang.String, /) -> bool: ...
    @staticmethod
    def isHttpUrl(url: str | java.lang.String, /) -> bool: ...
    @staticmethod
    def isHttpsUrl(url: str | java.lang.String, /) -> bool: ...
    @staticmethod
    def isJavaScriptUrl(url: str | java.lang.String, /) -> bool: ...
    @staticmethod
    def isNetworkUrl(url: str | java.lang.String, /) -> bool: ...
    @staticmethod
    def isValidUrl(url: str | java.lang.String, /) -> bool: ...
    @staticmethod
    def stripAnchor(url: str | java.lang.String, /) -> str: ...

_ValueCallback__T = typing.TypeVar('_ValueCallback__T')  # <T>
class ValueCallback(java.lang.Object, typing.Generic[_ValueCallback__T]):
    def onReceiveValue(self, arg1: _ValueCallback__T, /) -> None: ...

class WebBackForwardList(java.io.Serializable, java.lang.Cloneable):
    def __init__(self) -> None: ...
    def clone(self) -> WebBackForwardList: ...
    def getCurrentIndex(self) -> int: ...
    def getCurrentItem(self) -> WebHistoryItem | None: ...
    def getItemAtIndex(self, arg1: int | java.jint | java.lang.Integer, /) -> WebHistoryItem: ...
    def getSize(self) -> int: ...

class WebChromeClient(java.lang.Object):
    def __init__(self) -> None: ...
    def getDefaultVideoPoster(self) -> android.graphics.Bitmap | None: ...
    def getVideoLoadingProgressView(self) -> android.view.View | None: ...
    def getVisitedHistory(self, callback: ValueCallback[java.chaquopy.JavaArray[java.lang.String]], /) -> None: ...
    def onCloseWindow(self, window: WebView, /) -> None: ...
    @typing.overload
    def onConsoleMessage(self, consoleMessage: ConsoleMessage, /) -> bool: ...
    @typing.overload
    def onConsoleMessage(self, message: str | java.lang.String, lineNumber: int | java.jint | java.lang.Integer, sourceID: str | java.lang.String, /) -> None: ...
    def onCreateWindow(self, view: WebView, isDialog: bool | java.jboolean | java.lang.Boolean, isUserGesture: bool | java.jboolean | java.lang.Boolean, resultMsg: android.os.Message, /) -> bool: ...
    def onExceededDatabaseQuota(self, url: str | java.lang.String, databaseIdentifier: str | java.lang.String, quota: int | java.jlong | java.lang.Long, estimatedDatabaseSize: int | java.jlong | java.lang.Long, totalQuota: int | java.jlong | java.lang.Long, quotaUpdater: WebStorage.QuotaUpdater, /) -> None: ...
    def onGeolocationPermissionsHidePrompt(self) -> None: ...
    def onGeolocationPermissionsShowPrompt(self, origin: str | java.lang.String, callback: GeolocationPermissions.Callback, /) -> None: ...
    def onHideCustomView(self) -> None: ...
    def onJsAlert(self, view: WebView, url: str | java.lang.String, message: str | java.lang.String, result: JsResult, /) -> bool: ...
    def onJsBeforeUnload(self, view: WebView, url: str | java.lang.String, message: str | java.lang.String, result: JsResult, /) -> bool: ...
    def onJsConfirm(self, view: WebView, url: str | java.lang.String, message: str | java.lang.String, result: JsResult, /) -> bool: ...
    def onJsPrompt(self, view: WebView, url: str | java.lang.String, message: str | java.lang.String, defaultValue: str | java.lang.String, result: JsPromptResult, /) -> bool: ...
    def onJsTimeout(self) -> bool: ...
    def onPermissionRequest(self, request: PermissionRequest, /) -> None: ...
    def onPermissionRequestCanceled(self, request: PermissionRequest, /) -> None: ...
    def onProgressChanged(self, view: WebView, newProgress: int | java.jint | java.lang.Integer, /) -> None: ...
    def onReceivedIcon(self, view: WebView, icon: android.graphics.Bitmap, /) -> None: ...
    def onReceivedTitle(self, view: WebView, title: str | java.lang.String, /) -> None: ...
    def onReceivedTouchIconUrl(self, view: WebView, url: str | java.lang.String, precomposed: bool | java.jboolean | java.lang.Boolean, /) -> None: ...
    def onRequestFocus(self, view: WebView, /) -> None: ...
    @typing.overload
    def onShowCustomView(self, view: android.view.View, callback: WebChromeClient.CustomViewCallback, /) -> None: ...
    @typing.overload
    def onShowCustomView(self, view: android.view.View, requestedOrientation: int | java.jint | java.lang.Integer, callback: WebChromeClient.CustomViewCallback, /) -> None: ...
    def onShowFileChooser(self, webView: WebView, filePathCallback: ValueCallback[java.chaquopy.JavaArray[android.net.Uri]], fileChooserParams: WebChromeClient.FileChooserParams, /) -> bool: ...

    class FileChooserParams(java.lang.Object):
        MODE_OPEN: typing.ClassVar[int] = ...
        MODE_OPEN_MULTIPLE: typing.ClassVar[int] = ...
        MODE_SAVE: typing.ClassVar[int] = ...
        def __init__(self) -> None: ...
        def createIntent(self) -> android.content.Intent: ...
        def getAcceptTypes(self) -> java.chaquopy.JavaArray[java.lang.String]: ...
        def getFilenameHint(self) -> str: ...
        def getMode(self) -> int: ...
        def getTitle(self) -> java.lang.CharSequence: ...
        def isCaptureEnabled(self) -> bool: ...
        @staticmethod
        def parseResult(resultCode: int | java.jint | java.lang.Integer, data: android.content.Intent, /) -> java.chaquopy.JavaArray[android.net.Uri]: ...

    class CustomViewCallback(java.lang.Object):
        def onCustomViewHidden(self) -> None: ...

class WebHistoryItem(java.lang.Cloneable):
    def __init__(self) -> None: ...
    def clone(self) -> WebHistoryItem: ...
    def getFavicon(self) -> android.graphics.Bitmap | None: ...
    def getOriginalUrl(self) -> str: ...
    def getTitle(self) -> str: ...
    def getUrl(self) -> str: ...

class WebIconDatabase(java.lang.Object):
    def __init__(self) -> None: ...
    def close(self) -> None: ...
    @staticmethod
    def getInstance() -> WebIconDatabase: ...
    def open(self, arg1: str | java.lang.String, /) -> None: ...
    def releaseIconForPageUrl(self, arg1: str | java.lang.String, /) -> None: ...
    def removeAllIcons(self) -> None: ...
    def requestIconForPageUrl(self, arg1: str | java.lang.String, arg2: WebIconDatabase.IconListener, /) -> None: ...
    def retainIconForPageUrl(self, arg1: str | java.lang.String, /) -> None: ...

    class IconListener(java.lang.Object):
        def onReceivedIcon(self, arg1: str | java.lang.String, arg2: android.graphics.Bitmap, /) -> None: ...

class WebMessage(java.lang.Object):
    @typing.overload
    def __init__(self, data: str | java.lang.String, /) -> None: ...
    @typing.overload
    def __init__(self, data: str | java.lang.String, ports: java.chaquopy.JavaArray[WebMessagePort], /) -> None: ...
    def getData(self) -> str: ...
    def getPorts(self) -> java.chaquopy.JavaArray[WebMessagePort] | None: ...

class WebMessagePort(java.lang.Object):
    def close(self) -> None: ...
    def postMessage(self, arg1: WebMessage, /) -> None: ...
    @typing.overload
    def setWebMessageCallback(self, arg1: WebMessagePort.WebMessageCallback, /) -> None: ...
    @typing.overload
    def setWebMessageCallback(self, arg1: WebMessagePort.WebMessageCallback, arg2: android.os.Handler, /) -> None: ...

    class WebMessageCallback(java.lang.Object):
        def __init__(self) -> None: ...
        def onMessage(self, port: WebMessagePort, message: WebMessage, /) -> None: ...

class WebResourceError(java.lang.Object):
    def getDescription(self) -> java.lang.CharSequence: ...
    def getErrorCode(self) -> int: ...

class WebResourceRequest(java.lang.Object):
    def getMethod(self) -> str: ...
    def getRequestHeaders(self) -> java.util.Map[java.lang.String, java.lang.String]: ...
    def getUrl(self) -> android.net.Uri: ...
    def hasGesture(self) -> bool: ...
    def isForMainFrame(self) -> bool: ...
    def isRedirect(self) -> bool: ...

class WebResourceResponse(java.lang.Object):
    @typing.overload
    def __init__(self, mimeType: str | java.lang.String, encoding: str | java.lang.String, data: java.io.InputStream, /) -> None: ...
    @typing.overload
    def __init__(self, mimeType: str | java.lang.String, encoding: str | java.lang.String, statusCode: int | java.jint | java.lang.Integer, reasonPhrase: str | java.lang.String, responseHeaders: java.util.Map[java.lang.String, java.lang.String], data: java.io.InputStream, /) -> None: ...
    def getData(self) -> java.io.InputStream: ...
    def getEncoding(self) -> str: ...
    def getMimeType(self) -> str: ...
    def getReasonPhrase(self) -> str: ...
    def getResponseHeaders(self) -> java.util.Map[java.lang.String, java.lang.String]: ...
    def getStatusCode(self) -> int: ...
    def setData(self, data: java.io.InputStream, /) -> None: ...
    def setEncoding(self, encoding: str | java.lang.String, /) -> None: ...
    def setMimeType(self, mimeType: str | java.lang.String, /) -> None: ...
    def setResponseHeaders(self, headers: java.util.Map[java.lang.String, java.lang.String], /) -> None: ...
    def setStatusCodeAndReasonPhrase(self, statusCode: int | java.jint | java.lang.Integer, reasonPhrase: str | java.lang.String, /) -> None: ...

class WebSettings(java.lang.Object):
    FORCE_DARK_AUTO: typing.ClassVar[int] = ...
    FORCE_DARK_OFF: typing.ClassVar[int] = ...
    FORCE_DARK_ON: typing.ClassVar[int] = ...
    LOAD_CACHE_ELSE_NETWORK: typing.ClassVar[int] = ...
    LOAD_CACHE_ONLY: typing.ClassVar[int] = ...
    LOAD_DEFAULT: typing.ClassVar[int] = ...
    LOAD_NORMAL: typing.ClassVar[int] = ...
    LOAD_NO_CACHE: typing.ClassVar[int] = ...
    MENU_ITEM_NONE: typing.ClassVar[int] = ...
    MENU_ITEM_PROCESS_TEXT: typing.ClassVar[int] = ...
    MENU_ITEM_SHARE: typing.ClassVar[int] = ...
    MENU_ITEM_WEB_SEARCH: typing.ClassVar[int] = ...
    MIXED_CONTENT_ALWAYS_ALLOW: typing.ClassVar[int] = ...
    MIXED_CONTENT_COMPATIBILITY_MODE: typing.ClassVar[int] = ...
    MIXED_CONTENT_NEVER_ALLOW: typing.ClassVar[int] = ...
    def __init__(self) -> None: ...
    def enableSmoothTransition(self) -> bool: ...
    def getAllowContentAccess(self) -> bool: ...
    def getAllowFileAccess(self) -> bool: ...
    def getAllowFileAccessFromFileURLs(self) -> bool: ...
    def getAllowUniversalAccessFromFileURLs(self) -> bool: ...
    def getBlockNetworkImage(self) -> bool: ...
    def getBlockNetworkLoads(self) -> bool: ...
    def getBuiltInZoomControls(self) -> bool: ...
    def getCacheMode(self) -> int: ...
    def getCursiveFontFamily(self) -> str: ...
    def getDatabaseEnabled(self) -> bool: ...
    def getDatabasePath(self) -> str: ...
    def getDefaultFixedFontSize(self) -> int: ...
    def getDefaultFontSize(self) -> int: ...
    def getDefaultTextEncodingName(self) -> str: ...
    @staticmethod
    def getDefaultUserAgent(context: android.content.Context, /) -> str: ...
    def getDefaultZoom(self) -> WebSettings.ZoomDensity: ...
    def getDisabledActionModeMenuItems(self) -> int: ...
    def getDisplayZoomControls(self) -> bool: ...
    def getDomStorageEnabled(self) -> bool: ...
    def getFantasyFontFamily(self) -> str: ...
    def getFixedFontFamily(self) -> str: ...
    def getForceDark(self) -> int: ...
    def getJavaScriptCanOpenWindowsAutomatically(self) -> bool: ...
    def getJavaScriptEnabled(self) -> bool: ...
    def getLayoutAlgorithm(self) -> WebSettings.LayoutAlgorithm: ...
    def getLightTouchEnabled(self) -> bool: ...
    def getLoadWithOverviewMode(self) -> bool: ...
    def getLoadsImagesAutomatically(self) -> bool: ...
    def getMediaPlaybackRequiresUserGesture(self) -> bool: ...
    def getMinimumFontSize(self) -> int: ...
    def getMinimumLogicalFontSize(self) -> int: ...
    def getMixedContentMode(self) -> int: ...
    def getOffscreenPreRaster(self) -> bool: ...
    def getPluginState(self) -> WebSettings.PluginState: ...
    def getSafeBrowsingEnabled(self) -> bool: ...
    def getSansSerifFontFamily(self) -> str: ...
    def getSaveFormData(self) -> bool: ...
    def getSavePassword(self) -> bool: ...
    def getSerifFontFamily(self) -> str: ...
    def getStandardFontFamily(self) -> str: ...
    def getTextSize(self) -> WebSettings.TextSize: ...
    def getTextZoom(self) -> int: ...
    def getUseWideViewPort(self) -> bool: ...
    def getUserAgentString(self) -> str: ...
    def isAlgorithmicDarkeningAllowed(self) -> bool: ...
    def setAlgorithmicDarkeningAllowed(self, allow: bool | java.jboolean | java.lang.Boolean, /) -> None: ...
    def setAllowContentAccess(self, arg1: bool | java.jboolean | java.lang.Boolean, /) -> None: ...
    def setAllowFileAccess(self, arg1: bool | java.jboolean | java.lang.Boolean, /) -> None: ...
    def setAllowFileAccessFromFileURLs(self, arg1: bool | java.jboolean | java.lang.Boolean, /) -> None: ...
    def setAllowUniversalAccessFromFileURLs(self, arg1: bool | java.jboolean | java.lang.Boolean, /) -> None: ...
    def setBlockNetworkImage(self, arg1: bool | java.jboolean | java.lang.Boolean, /) -> None: ...
    def setBlockNetworkLoads(self, arg1: bool | java.jboolean | java.lang.Boolean, /) -> None: ...
    def setBuiltInZoomControls(self, arg1: bool | java.jboolean | java.lang.Boolean, /) -> None: ...
    def setCacheMode(self, arg1: int | java.jint | java.lang.Integer, /) -> None: ...
    def setCursiveFontFamily(self, arg1: str | java.lang.String, /) -> None: ...
    def setDatabaseEnabled(self, arg1: bool | java.jboolean | java.lang.Boolean, /) -> None: ...
    def setDatabasePath(self, arg1: str | java.lang.String, /) -> None: ...
    def setDefaultFixedFontSize(self, arg1: int | java.jint | java.lang.Integer, /) -> None: ...
    def setDefaultFontSize(self, arg1: int | java.jint | java.lang.Integer, /) -> None: ...
    def setDefaultTextEncodingName(self, arg1: str | java.lang.String, /) -> None: ...
    def setDefaultZoom(self, arg1: WebSettings.ZoomDensity, /) -> None: ...
    def setDisabledActionModeMenuItems(self, arg1: int | java.jint | java.lang.Integer, /) -> None: ...
    def setDisplayZoomControls(self, arg1: bool | java.jboolean | java.lang.Boolean, /) -> None: ...
    def setDomStorageEnabled(self, arg1: bool | java.jboolean | java.lang.Boolean, /) -> None: ...
    def setEnableSmoothTransition(self, arg1: bool | java.jboolean | java.lang.Boolean, /) -> None: ...
    def setFantasyFontFamily(self, arg1: str | java.lang.String, /) -> None: ...
    def setFixedFontFamily(self, arg1: str | java.lang.String, /) -> None: ...
    def setForceDark(self, forceDark: int | java.jint | java.lang.Integer, /) -> None: ...
    def setGeolocationDatabasePath(self, arg1: str | java.lang.String, /) -> None: ...
    def setGeolocationEnabled(self, arg1: bool | java.jboolean | java.lang.Boolean, /) -> None: ...
    def setJavaScriptCanOpenWindowsAutomatically(self, arg1: bool | java.jboolean | java.lang.Boolean, /) -> None: ...
    def setJavaScriptEnabled(self, arg1: bool | java.jboolean | java.lang.Boolean, /) -> None: ...
    def setLayoutAlgorithm(self, arg1: WebSettings.LayoutAlgorithm, /) -> None: ...
    def setLightTouchEnabled(self, arg1: bool | java.jboolean | java.lang.Boolean, /) -> None: ...
    def setLoadWithOverviewMode(self, arg1: bool | java.jboolean | java.lang.Boolean, /) -> None: ...
    def setLoadsImagesAutomatically(self, arg1: bool | java.jboolean | java.lang.Boolean, /) -> None: ...
    def setMediaPlaybackRequiresUserGesture(self, arg1: bool | java.jboolean | java.lang.Boolean, /) -> None: ...
    def setMinimumFontSize(self, arg1: int | java.jint | java.lang.Integer, /) -> None: ...
    def setMinimumLogicalFontSize(self, arg1: int | java.jint | java.lang.Integer, /) -> None: ...
    def setMixedContentMode(self, arg1: int | java.jint | java.lang.Integer, /) -> None: ...
    def setNeedInitialFocus(self, arg1: bool | java.jboolean | java.lang.Boolean, /) -> None: ...
    def setOffscreenPreRaster(self, arg1: bool | java.jboolean | java.lang.Boolean, /) -> None: ...
    def setPluginState(self, arg1: WebSettings.PluginState, /) -> None: ...
    def setRenderPriority(self, arg1: WebSettings.RenderPriority, /) -> None: ...
    def setSafeBrowsingEnabled(self, arg1: bool | java.jboolean | java.lang.Boolean, /) -> None: ...
    def setSansSerifFontFamily(self, arg1: str | java.lang.String, /) -> None: ...
    def setSaveFormData(self, arg1: bool | java.jboolean | java.lang.Boolean, /) -> None: ...
    def setSavePassword(self, arg1: bool | java.jboolean | java.lang.Boolean, /) -> None: ...
    def setSerifFontFamily(self, arg1: str | java.lang.String, /) -> None: ...
    def setStandardFontFamily(self, arg1: str | java.lang.String, /) -> None: ...
    def setSupportMultipleWindows(self, arg1: bool | java.jboolean | java.lang.Boolean, /) -> None: ...
    def setSupportZoom(self, arg1: bool | java.jboolean | java.lang.Boolean, /) -> None: ...
    def setTextSize(self, t: WebSettings.TextSize, /) -> None: ...
    def setTextZoom(self, arg1: int | java.jint | java.lang.Integer, /) -> None: ...
    def setUseWideViewPort(self, arg1: bool | java.jboolean | java.lang.Boolean, /) -> None: ...
    def setUserAgentString(self, arg1: str | java.lang.String, /) -> None: ...
    def supportMultipleWindows(self) -> bool: ...
    def supportZoom(self) -> bool: ...

    class ZoomDensity(java.lang.Enum[WebSettings.ZoomDensity]):
        CLOSE: typing.ClassVar[WebSettings.ZoomDensity] = ...
        FAR: typing.ClassVar[WebSettings.ZoomDensity] = ...
        MEDIUM: typing.ClassVar[WebSettings.ZoomDensity] = ...
        @staticmethod
        def valueOf(name: str | java.lang.String, /) -> WebSettings.ZoomDensity: ...
        @staticmethod
        def values() -> java.chaquopy.JavaArray[WebSettings.ZoomDensity]: ...

    class TextSize(java.lang.Enum[WebSettings.TextSize]):
        LARGER: typing.ClassVar[WebSettings.TextSize] = ...
        LARGEST: typing.ClassVar[WebSettings.TextSize] = ...
        NORMAL: typing.ClassVar[WebSettings.TextSize] = ...
        SMALLER: typing.ClassVar[WebSettings.TextSize] = ...
        SMALLEST: typing.ClassVar[WebSettings.TextSize] = ...
        @staticmethod
        def valueOf(name: str | java.lang.String, /) -> WebSettings.TextSize: ...
        @staticmethod
        def values() -> java.chaquopy.JavaArray[WebSettings.TextSize]: ...

    class RenderPriority(java.lang.Enum[WebSettings.RenderPriority]):
        HIGH: typing.ClassVar[WebSettings.RenderPriority] = ...
        LOW: typing.ClassVar[WebSettings.RenderPriority] = ...
        NORMAL: typing.ClassVar[WebSettings.RenderPriority] = ...
        @staticmethod
        def valueOf(name: str | java.lang.String, /) -> WebSettings.RenderPriority: ...
        @staticmethod
        def values() -> java.chaquopy.JavaArray[WebSettings.RenderPriority]: ...

    class PluginState(java.lang.Enum[WebSettings.PluginState]):
        OFF: typing.ClassVar[WebSettings.PluginState] = ...
        ON: typing.ClassVar[WebSettings.PluginState] = ...
        ON_DEMAND: typing.ClassVar[WebSettings.PluginState] = ...
        @staticmethod
        def valueOf(name: str | java.lang.String, /) -> WebSettings.PluginState: ...
        @staticmethod
        def values() -> java.chaquopy.JavaArray[WebSettings.PluginState]: ...

    class LayoutAlgorithm(java.lang.Enum[WebSettings.LayoutAlgorithm]):
        NARROW_COLUMNS: typing.ClassVar[WebSettings.LayoutAlgorithm] = ...
        NORMAL: typing.ClassVar[WebSettings.LayoutAlgorithm] = ...
        SINGLE_COLUMN: typing.ClassVar[WebSettings.LayoutAlgorithm] = ...
        TEXT_AUTOSIZING: typing.ClassVar[WebSettings.LayoutAlgorithm] = ...
        @staticmethod
        def valueOf(name: str | java.lang.String, /) -> WebSettings.LayoutAlgorithm: ...
        @staticmethod
        def values() -> java.chaquopy.JavaArray[WebSettings.LayoutAlgorithm]: ...

class WebStorage(java.lang.Object):
    def deleteAllData(self) -> None: ...
    def deleteOrigin(self, origin: str | java.lang.String, /) -> None: ...
    @staticmethod
    def getInstance() -> WebStorage: ...
    def getOrigins(self, callback: ValueCallback[java.util.Map], /) -> None: ...
    def getQuotaForOrigin(self, origin: str | java.lang.String, callback: ValueCallback[java.lang.Long], /) -> None: ...
    def getUsageForOrigin(self, origin: str | java.lang.String, callback: ValueCallback[java.lang.Long], /) -> None: ...
    def setQuotaForOrigin(self, origin: str | java.lang.String, quota: int | java.jlong | java.lang.Long, /) -> None: ...

    class QuotaUpdater(java.lang.Object):
        def updateQuota(self, arg1: int | java.jlong | java.lang.Long, /) -> None: ...

    class Origin(java.lang.Object):
        def getOrigin(self) -> str: ...
        def getQuota(self) -> int: ...
        def getUsage(self) -> int: ...

class WebView(android.view.ViewGroup.OnHierarchyChangeListener, android.view.ViewTreeObserver.OnGlobalFocusChangeListener, android.widget.AbsoluteLayout):
    RENDERER_PRIORITY_BOUND: typing.ClassVar[int] = ...
    RENDERER_PRIORITY_IMPORTANT: typing.ClassVar[int] = ...
    RENDERER_PRIORITY_WAIVED: typing.ClassVar[int] = ...
    SCHEME_GEO: typing.ClassVar[str] = ...
    SCHEME_MAILTO: typing.ClassVar[str] = ...
    SCHEME_TEL: typing.ClassVar[str] = ...
    @typing.overload
    def __init__(self, context: android.content.Context, /) -> None: ...
    @typing.overload
    def __init__(self, context: android.content.Context, attrs: android.util.AttributeSet, /) -> None: ...
    @typing.overload
    def __init__(self, context: android.content.Context, attrs: android.util.AttributeSet, defStyleAttr: int | java.jint | java.lang.Integer, /) -> None: ...
    @typing.overload
    def __init__(self, context: android.content.Context, attrs: android.util.AttributeSet, defStyleAttr: int | java.jint | java.lang.Integer, defStyleRes: int | java.jint | java.lang.Integer, /) -> None: ...
    @typing.overload
    def __init__(self, context: android.content.Context, attrs: android.util.AttributeSet, defStyleAttr: int | java.jint | java.lang.Integer, privateBrowsing: bool | java.jboolean | java.lang.Boolean, /) -> None: ...
    def addJavascriptInterface(self, object: java.lang.Object | int | bool | float | str, name: str | java.lang.String, /) -> None: ...
    def autofill(self, values: android.util.SparseArray[android.view.autofill.AutofillValue], /) -> None: ...
    def canGoBack(self) -> bool: ...
    def canGoBackOrForward(self, steps: int | java.jint | java.lang.Integer, /) -> bool: ...
    def canGoForward(self) -> bool: ...
    def canZoomIn(self) -> bool: ...
    def canZoomOut(self) -> bool: ...
    def capturePicture(self) -> android.graphics.Picture: ...
    def clearCache(self, includeDiskFiles: bool | java.jboolean | java.lang.Boolean, /) -> None: ...
    @staticmethod
    def clearClientCertPreferences(onCleared: java.lang.Runnable, /) -> None: ...
    def clearFormData(self) -> None: ...
    def clearHistory(self) -> None: ...
    def clearMatches(self) -> None: ...
    def clearSslPreferences(self) -> None: ...
    def clearView(self) -> None: ...
    def computeHorizontalScrollOffset(self) -> int: ...
    def computeHorizontalScrollRange(self) -> int: ...
    def computeScroll(self) -> None: ...
    def computeVerticalScrollExtent(self) -> int: ...
    def computeVerticalScrollOffset(self) -> int: ...
    def computeVerticalScrollRange(self) -> int: ...
    def copyBackForwardList(self) -> WebBackForwardList: ...
    @typing.overload
    def createPrintDocumentAdapter(self) -> android.print_.PrintDocumentAdapter: ...
    @typing.overload
    def createPrintDocumentAdapter(self, documentName: str | java.lang.String, /) -> android.print_.PrintDocumentAdapter: ...
    def createWebMessageChannel(self) -> java.chaquopy.JavaArray[WebMessagePort]: ...
    def destroy(self) -> None: ...
    @staticmethod
    def disableWebView() -> None: ...
    def dispatchCreateViewTranslationRequest(self, viewIds: java.util.Map[android.view.autofill.AutofillId, java.chaquopy.JavaArrayJLong], supportedFormats: java.chaquopy.JavaArrayJInt, capability: android.view.translation.TranslationCapability, requests: java.util.List[android.view.translation.ViewTranslationRequest], /) -> None: ...
    def dispatchDraw(self, canvas: android.graphics.Canvas, /) -> None: ...
    def dispatchKeyEvent(self, event: android.view.KeyEvent, /) -> bool: ...
    def documentHasImages(self, response: android.os.Message, /) -> None: ...
    @staticmethod
    def enableSlowWholeDocumentDraw() -> None: ...
    def evaluateJavascript(self, script: str | java.lang.String, resultCallback: ValueCallback[java.lang.String], /) -> None: ...
    @staticmethod
    def findAddress(addr: str | java.lang.String, /) -> str | None: ...
    def findAll(self, find: str | java.lang.String, /) -> int: ...
    def findAllAsync(self, find: str | java.lang.String, /) -> None: ...
    def findFocus(self) -> android.view.View: ...
    def findNext(self, forward: bool | java.jboolean | java.lang.Boolean, /) -> None: ...
    def flingScroll(self, vx: int | java.jint | java.lang.Integer, vy: int | java.jint | java.lang.Integer, /) -> None: ...
    def freeMemory(self) -> None: ...
    def getAccessibilityClassName(self) -> java.lang.CharSequence: ...
    def getAccessibilityNodeProvider(self) -> android.view.accessibility.AccessibilityNodeProvider: ...
    def getCertificate(self) -> android.net.http.SslCertificate | None: ...
    def getContentHeight(self) -> int: ...
    @staticmethod
    def getCurrentWebViewPackage() -> android.content.pm.PackageInfo | None: ...
    def getFavicon(self) -> android.graphics.Bitmap | None: ...
    def getHandler(self) -> android.os.Handler: ...
    def getHitTestResult(self) -> WebView.HitTestResult: ...
    def getHttpAuthUsernamePassword(self, host: str | java.lang.String, realm: str | java.lang.String, /) -> java.chaquopy.JavaArray[java.lang.String] | None: ...
    def getOriginalUrl(self) -> str | None: ...
    def getProgress(self) -> int: ...
    def getRendererPriorityWaivedWhenNotVisible(self) -> bool: ...
    def getRendererRequestedPriority(self) -> int: ...
    @staticmethod
    def getSafeBrowsingPrivacyPolicyUrl() -> android.net.Uri: ...
    def getScale(self) -> float: ...
    def getSettings(self) -> WebSettings: ...
    def getTextClassifier(self) -> android.view.textclassifier.TextClassifier: ...
    def getTitle(self) -> str | None: ...
    def getUrl(self) -> str | None: ...
    def getWebChromeClient(self) -> WebChromeClient | None: ...
    @staticmethod
    def getWebViewClassLoader() -> java.lang.ClassLoader: ...
    def getWebViewClient(self) -> WebViewClient: ...
    def getWebViewLooper(self) -> android.os.Looper: ...
    def getWebViewRenderProcess(self) -> WebViewRenderProcess | None: ...
    def getWebViewRenderProcessClient(self) -> WebViewRenderProcessClient | None: ...
    def goBack(self) -> None: ...
    def goBackOrForward(self, steps: int | java.jint | java.lang.Integer, /) -> None: ...
    def goForward(self) -> None: ...
    def invokeZoomPicker(self) -> None: ...
    def isPrivateBrowsingEnabled(self) -> bool: ...
    def isVisibleToUserForAutofill(self, virtualId: int | java.jint | java.lang.Integer, /) -> bool: ...
    def loadData(self, data: str | java.lang.String, mimeType: str | java.lang.String, encoding: str | java.lang.String, /) -> None: ...
    def loadDataWithBaseURL(self, baseUrl: str | java.lang.String, data: str | java.lang.String, mimeType: str | java.lang.String, encoding: str | java.lang.String, historyUrl: str | java.lang.String, /) -> None: ...
    @typing.overload
    def loadUrl(self, url: str | java.lang.String, /) -> None: ...
    @typing.overload
    def loadUrl(self, url: str | java.lang.String, additionalHttpHeaders: java.util.Map[java.lang.String, java.lang.String], /) -> None: ...
    def onApplyWindowInsets(self, insets: android.view.WindowInsets, /) -> android.view.WindowInsets: ...
    def onAttachedToWindow(self) -> None: ...
    def onCheckIsTextEditor(self) -> bool: ...
    def onChildViewAdded(self, parent: android.view.View, child: android.view.View, /) -> None: ...
    def onChildViewRemoved(self, p: android.view.View, child: android.view.View, /) -> None: ...
    def onConfigurationChanged(self, newConfig: android.content.res.Configuration, /) -> None: ...
    def onCreateInputConnection(self, outAttrs: android.view.inputmethod.EditorInfo, /) -> android.view.inputmethod.InputConnection: ...
    def onCreateVirtualViewTranslationRequests(self, virtualIds: java.chaquopy.JavaArrayJLong, supportedFormats: java.chaquopy.JavaArrayJInt, requestsCollector: java.util.function.Consumer[android.view.translation.ViewTranslationRequest], /) -> None: ...
    def onDragEvent(self, event: android.view.DragEvent, /) -> bool: ...
    def onDraw(self, canvas: android.graphics.Canvas, /) -> None: ...
    def onFinishTemporaryDetach(self) -> None: ...
    def onFocusChanged(self, focused: bool | java.jboolean | java.lang.Boolean, direction: int | java.jint | java.lang.Integer, previouslyFocusedRect: android.graphics.Rect, /) -> None: ...
    def onGenericMotionEvent(self, event: android.view.MotionEvent, /) -> bool: ...
    def onGlobalFocusChanged(self, oldFocus: android.view.View, newFocus: android.view.View, /) -> None: ...
    def onHoverEvent(self, event: android.view.MotionEvent, /) -> bool: ...
    def onKeyDown(self, keyCode: int | java.jint | java.lang.Integer, event: android.view.KeyEvent, /) -> bool: ...
    def onKeyMultiple(self, keyCode: int | java.jint | java.lang.Integer, repeatCount: int | java.jint | java.lang.Integer, event: android.view.KeyEvent, /) -> bool: ...
    def onKeyUp(self, keyCode: int | java.jint | java.lang.Integer, event: android.view.KeyEvent, /) -> bool: ...
    def onMeasure(self, widthMeasureSpec: int | java.jint | java.lang.Integer, heightMeasureSpec: int | java.jint | java.lang.Integer, /) -> None: ...
    def onOverScrolled(self, scrollX: int | java.jint | java.lang.Integer, scrollY: int | java.jint | java.lang.Integer, clampedX: bool | java.jboolean | java.lang.Boolean, clampedY: bool | java.jboolean | java.lang.Boolean, /) -> None: ...
    def onPause(self) -> None: ...
    def onProvideAutofillVirtualStructure(self, structure: android.view.ViewStructure, flags: int | java.jint | java.lang.Integer, /) -> None: ...
    def onProvideContentCaptureStructure(self, structure: android.view.ViewStructure, flags: int | java.jint | java.lang.Integer, /) -> None: ...
    def onProvideVirtualStructure(self, structure: android.view.ViewStructure, /) -> None: ...
    def onResolvePointerIcon(self, event: android.view.MotionEvent, pointerIndex: int | java.jint | java.lang.Integer, /) -> android.view.PointerIcon | None: ...
    def onResume(self) -> None: ...
    def onScrollChanged(self, l: int | java.jint | java.lang.Integer, t: int | java.jint | java.lang.Integer, oldl: int | java.jint | java.lang.Integer, oldt: int | java.jint | java.lang.Integer, /) -> None: ...
    def onSizeChanged(self, w: int | java.jint | java.lang.Integer, h: int | java.jint | java.lang.Integer, ow: int | java.jint | java.lang.Integer, oh: int | java.jint | java.lang.Integer, /) -> None: ...
    def onStartTemporaryDetach(self) -> None: ...
    def onTouchEvent(self, event: android.view.MotionEvent, /) -> bool: ...
    def onTrackballEvent(self, event: android.view.MotionEvent, /) -> bool: ...
    def onVirtualViewTranslationResponses(self, response: android.util.LongSparseArray[android.view.translation.ViewTranslationResponse], /) -> None: ...
    def onVisibilityChanged(self, changedView: android.view.View, visibility: int | java.jint | java.lang.Integer, /) -> None: ...
    def onWindowFocusChanged(self, hasWindowFocus: bool | java.jboolean | java.lang.Boolean, /) -> None: ...
    def onWindowVisibilityChanged(self, visibility: int | java.jint | java.lang.Integer, /) -> None: ...
    def overlayHorizontalScrollbar(self) -> bool: ...
    def overlayVerticalScrollbar(self) -> bool: ...
    def pageDown(self, bottom: bool | java.jboolean | java.lang.Boolean, /) -> bool: ...
    def pageUp(self, top: bool | java.jboolean | java.lang.Boolean, /) -> bool: ...
    def pauseTimers(self) -> None: ...
    def performLongClick(self) -> bool: ...
    def postUrl(self, url: str | java.lang.String, postData: java.chaquopy.JavaArrayJByte, /) -> None: ...
    def postVisualStateCallback(self, requestId: int | java.jlong | java.lang.Long, callback: WebView.VisualStateCallback, /) -> None: ...
    def postWebMessage(self, message: WebMessage, targetOrigin: android.net.Uri, /) -> None: ...
    def reload(self) -> None: ...
    def removeJavascriptInterface(self, name: str | java.lang.String, /) -> None: ...
    def requestChildRectangleOnScreen(self, child: android.view.View, rect: android.graphics.Rect, immediate: bool | java.jboolean | java.lang.Boolean, /) -> bool: ...
    def requestFocus(self, direction: int | java.jint | java.lang.Integer, previouslyFocusedRect: android.graphics.Rect, /) -> bool: ...
    def requestFocusNodeHref(self, hrefMsg: android.os.Message, /) -> None: ...
    def requestImageRef(self, msg: android.os.Message, /) -> None: ...
    def restoreState(self, inState: android.os.Bundle, /) -> WebBackForwardList | None: ...
    def resumeTimers(self) -> None: ...
    def savePassword(self, host: str | java.lang.String, username: str | java.lang.String, password: str | java.lang.String, /) -> None: ...
    def saveState(self, outState: android.os.Bundle, /) -> WebBackForwardList | None: ...
    @typing.overload
    def saveWebArchive(self, filename: str | java.lang.String, /) -> None: ...
    @typing.overload
    def saveWebArchive(self, basename: str | java.lang.String, autoname: bool | java.jboolean | java.lang.Boolean, callback: ValueCallback[java.lang.String], /) -> None: ...
    def setBackgroundColor(self, color: int | java.jint | java.lang.Integer, /) -> None: ...
    def setCertificate(self, certificate: android.net.http.SslCertificate, /) -> None: ...
    @staticmethod
    def setDataDirectorySuffix(suffix: str | java.lang.String, /) -> None: ...
    def setDownloadListener(self, listener: DownloadListener, /) -> None: ...
    def setFindListener(self, listener: WebView.FindListener, /) -> None: ...
    def setHorizontalScrollbarOverlay(self, overlay: bool | java.jboolean | java.lang.Boolean, /) -> None: ...
    def setHttpAuthUsernamePassword(self, host: str | java.lang.String, realm: str | java.lang.String, username: str | java.lang.String, password: str | java.lang.String, /) -> None: ...
    def setInitialScale(self, scaleInPercent: int | java.jint | java.lang.Integer, /) -> None: ...
    def setLayerType(self, layerType: int | java.jint | java.lang.Integer, paint: android.graphics.Paint, /) -> None: ...
    def setLayoutParams(self, params: android.view.ViewGroup.LayoutParams, /) -> None: ...
    def setMapTrackballToArrowKeys(self, setMap: bool | java.jboolean | java.lang.Boolean, /) -> None: ...
    def setNetworkAvailable(self, networkUp: bool | java.jboolean | java.lang.Boolean, /) -> None: ...
    def setOverScrollMode(self, mode: int | java.jint | java.lang.Integer, /) -> None: ...
    def setPictureListener(self, listener: WebView.PictureListener, /) -> None: ...
    def setRendererPriorityPolicy(self, rendererRequestedPriority: int | java.jint | java.lang.Integer, waivedWhenNotVisible: bool | java.jboolean | java.lang.Boolean, /) -> None: ...
    @staticmethod
    def setSafeBrowsingWhitelist(hosts: java.util.List[java.lang.String], callback: ValueCallback[java.lang.Boolean], /) -> None: ...
    def setScrollBarStyle(self, style: int | java.jint | java.lang.Integer, /) -> None: ...
    def setTextClassifier(self, textClassifier: android.view.textclassifier.TextClassifier, /) -> None: ...
    def setVerticalScrollbarOverlay(self, overlay: bool | java.jboolean | java.lang.Boolean, /) -> None: ...
    def setWebChromeClient(self, client: WebChromeClient, /) -> None: ...
    @staticmethod
    def setWebContentsDebuggingEnabled(enabled: bool | java.jboolean | java.lang.Boolean, /) -> None: ...
    def setWebViewClient(self, client: WebViewClient, /) -> None: ...
    @typing.overload
    def setWebViewRenderProcessClient(self, webViewRenderProcessClient: WebViewRenderProcessClient, /) -> None: ...
    @typing.overload
    def setWebViewRenderProcessClient(self, executor: java.util.concurrent.Executor, webViewRenderProcessClient: WebViewRenderProcessClient, /) -> None: ...
    def shouldDelayChildPressedState(self) -> bool: ...
    def showFindDialog(self, text: str | java.lang.String, showIme: bool | java.jboolean | java.lang.Boolean, /) -> bool: ...
    @staticmethod
    def startSafeBrowsing(context: android.content.Context, callback: ValueCallback[java.lang.Boolean], /) -> None: ...
    def stopLoading(self) -> None: ...
    def zoomBy(self, zoomFactor: float | java.jfloat | java.lang.Float, /) -> None: ...
    def zoomIn(self) -> bool: ...
    def zoomOut(self) -> bool: ...

    class WebViewTransport(java.lang.Object):
        def __init__(self, this_0: WebView, /) -> None: ...
        def getWebView(self) -> WebView: ...
        def setWebView(self, webview: WebView, /) -> None: ...

    class VisualStateCallback(java.lang.Object):
        def __init__(self) -> None: ...
        def onComplete(self, arg1: int | java.jlong | java.lang.Long, /) -> None: ...

    class PictureListener(java.lang.Object):
        def onNewPicture(self, arg1: WebView, arg2: android.graphics.Picture, /) -> None: ...

    class HitTestResult(java.lang.Object):
        ANCHOR_TYPE: typing.ClassVar[int] = ...
        EDIT_TEXT_TYPE: typing.ClassVar[int] = ...
        EMAIL_TYPE: typing.ClassVar[int] = ...
        GEO_TYPE: typing.ClassVar[int] = ...
        IMAGE_ANCHOR_TYPE: typing.ClassVar[int] = ...
        IMAGE_TYPE: typing.ClassVar[int] = ...
        PHONE_TYPE: typing.ClassVar[int] = ...
        SRC_ANCHOR_TYPE: typing.ClassVar[int] = ...
        SRC_IMAGE_ANCHOR_TYPE: typing.ClassVar[int] = ...
        UNKNOWN_TYPE: typing.ClassVar[int] = ...
        def getExtra(self) -> str: ...
        def getType(self) -> int: ...

    class FindListener(java.lang.Object):
        def onFindResultReceived(self, arg1: int | java.jint | java.lang.Integer, arg2: int | java.jint | java.lang.Integer, arg3: bool | java.jboolean | java.lang.Boolean, /) -> None: ...

class WebViewClient(java.lang.Object):
    ERROR_AUTHENTICATION: typing.ClassVar[int] = ...
    ERROR_BAD_URL: typing.ClassVar[int] = ...
    ERROR_CONNECT: typing.ClassVar[int] = ...
    ERROR_FAILED_SSL_HANDSHAKE: typing.ClassVar[int] = ...
    ERROR_FILE: typing.ClassVar[int] = ...
    ERROR_FILE_NOT_FOUND: typing.ClassVar[int] = ...
    ERROR_HOST_LOOKUP: typing.ClassVar[int] = ...
    ERROR_IO: typing.ClassVar[int] = ...
    ERROR_PROXY_AUTHENTICATION: typing.ClassVar[int] = ...
    ERROR_REDIRECT_LOOP: typing.ClassVar[int] = ...
    ERROR_TIMEOUT: typing.ClassVar[int] = ...
    ERROR_TOO_MANY_REQUESTS: typing.ClassVar[int] = ...
    ERROR_UNKNOWN: typing.ClassVar[int] = ...
    ERROR_UNSAFE_RESOURCE: typing.ClassVar[int] = ...
    ERROR_UNSUPPORTED_AUTH_SCHEME: typing.ClassVar[int] = ...
    ERROR_UNSUPPORTED_SCHEME: typing.ClassVar[int] = ...
    SAFE_BROWSING_THREAT_BILLING: typing.ClassVar[int] = ...
    SAFE_BROWSING_THREAT_MALWARE: typing.ClassVar[int] = ...
    SAFE_BROWSING_THREAT_PHISHING: typing.ClassVar[int] = ...
    SAFE_BROWSING_THREAT_UNKNOWN: typing.ClassVar[int] = ...
    SAFE_BROWSING_THREAT_UNWANTED_SOFTWARE: typing.ClassVar[int] = ...
    def __init__(self) -> None: ...
    def doUpdateVisitedHistory(self, view: WebView, url: str | java.lang.String, isReload: bool | java.jboolean | java.lang.Boolean, /) -> None: ...
    def onFormResubmission(self, view: WebView, dontResend: android.os.Message, resend: android.os.Message, /) -> None: ...
    def onLoadResource(self, view: WebView, url: str | java.lang.String, /) -> None: ...
    def onPageCommitVisible(self, view: WebView, url: str | java.lang.String, /) -> None: ...
    def onPageFinished(self, view: WebView, url: str | java.lang.String, /) -> None: ...
    def onPageStarted(self, view: WebView, url: str | java.lang.String, favicon: android.graphics.Bitmap, /) -> None: ...
    def onReceivedClientCertRequest(self, view: WebView, request: ClientCertRequest, /) -> None: ...
    @typing.overload
    def onReceivedError(self, view: WebView, request: WebResourceRequest, error: WebResourceError, /) -> None: ...
    @typing.overload
    def onReceivedError(self, view: WebView, errorCode: int | java.jint | java.lang.Integer, description: str | java.lang.String, failingUrl: str | java.lang.String, /) -> None: ...
    def onReceivedHttpAuthRequest(self, view: WebView, handler: HttpAuthHandler, host: str | java.lang.String, realm: str | java.lang.String, /) -> None: ...
    def onReceivedHttpError(self, view: WebView, request: WebResourceRequest, errorResponse: WebResourceResponse, /) -> None: ...
    def onReceivedLoginRequest(self, view: WebView, realm: str | java.lang.String, account: str | java.lang.String, args: str | java.lang.String, /) -> None: ...
    def onReceivedSslError(self, view: WebView, handler: SslErrorHandler, error: android.net.http.SslError, /) -> None: ...
    def onRenderProcessGone(self, view: WebView, detail: RenderProcessGoneDetail, /) -> bool: ...
    def onSafeBrowsingHit(self, view: WebView, request: WebResourceRequest, threatType: int | java.jint | java.lang.Integer, callback: SafeBrowsingResponse, /) -> None: ...
    def onScaleChanged(self, view: WebView, oldScale: float | java.jfloat | java.lang.Float, newScale: float | java.jfloat | java.lang.Float, /) -> None: ...
    def onTooManyRedirects(self, view: WebView, cancelMsg: android.os.Message, continueMsg: android.os.Message, /) -> None: ...
    def onUnhandledKeyEvent(self, view: WebView, event: android.view.KeyEvent, /) -> None: ...
    @typing.overload
    def shouldInterceptRequest(self, view: WebView, request: WebResourceRequest, /) -> WebResourceResponse | None: ...
    @typing.overload
    def shouldInterceptRequest(self, view: WebView, url: str | java.lang.String, /) -> WebResourceResponse | None: ...
    def shouldOverrideKeyEvent(self, view: WebView, event: android.view.KeyEvent, /) -> bool: ...
    @typing.overload
    def shouldOverrideUrlLoading(self, view: WebView, request: WebResourceRequest, /) -> bool: ...
    @typing.overload
    def shouldOverrideUrlLoading(self, view: WebView, url: str | java.lang.String, /) -> bool: ...

class WebViewDatabase(java.lang.Object):
    def __init__(self) -> None: ...
    def clearFormData(self) -> None: ...
    def clearHttpAuthUsernamePassword(self) -> None: ...
    def clearUsernamePassword(self) -> None: ...
    def getHttpAuthUsernamePassword(self, arg1: str | java.lang.String, arg2: str | java.lang.String, /) -> java.chaquopy.JavaArray[java.lang.String] | None: ...
    @staticmethod
    def getInstance(context: android.content.Context, /) -> WebViewDatabase: ...
    def hasFormData(self) -> bool: ...
    def hasHttpAuthUsernamePassword(self) -> bool: ...
    def hasUsernamePassword(self) -> bool: ...
    def setHttpAuthUsernamePassword(self, arg1: str | java.lang.String, arg2: str | java.lang.String, arg3: str | java.lang.String, arg4: str | java.lang.String, /) -> None: ...

class WebViewFragment(android.app.Fragment):
    def __init__(self) -> None: ...
    def getWebView(self) -> WebView: ...
    def onCreateView(self, inflater: android.view.LayoutInflater, container: android.view.ViewGroup, savedInstanceState: android.os.Bundle, /) -> android.view.View: ...
    def onDestroy(self) -> None: ...
    def onDestroyView(self) -> None: ...
    def onPause(self) -> None: ...
    def onResume(self) -> None: ...

class WebViewRenderProcess(java.lang.Object):
    def __init__(self) -> None: ...
    def terminate(self) -> bool: ...

class WebViewRenderProcessClient(java.lang.Object):
    def __init__(self) -> None: ...
    def onRenderProcessResponsive(self, arg1: WebView, arg2: WebViewRenderProcess, /) -> None: ...
    def onRenderProcessUnresponsive(self, arg1: WebView, arg2: WebViewRenderProcess, /) -> None: ...
