// Copyright 2013 The Flutter Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. import 'package:pigeon/pigeon.dart'; @ConfigurePigeon( PigeonOptions( copyrightHeader: 'pigeons/copyright.txt', dartOut: 'lib/src/android_webkit.g.dart', kotlinOut: 'android/src/main/java/io/flutter/plugins/webviewflutter/AndroidWebkitLibrary.g.kt', kotlinOptions: KotlinOptions( package: 'io.flutter.plugins.webviewflutter', errorClassName: 'AndroidWebKitError', ), ), ) /// Mode of how to select files for a file chooser. /// /// See https://developer.android.com/reference/android/webkit/WebChromeClient.FileChooserParams. enum FileChooserMode { /// Open single file and requires that the file exists before allowing the /// user to pick it. /// /// See https://developer.android.com/reference/android/webkit/WebChromeClient.FileChooserParams#MODE_OPEN. open, /// Similar to [open] but allows multiple files to be selected. /// /// See https://developer.android.com/reference/android/webkit/WebChromeClient.FileChooserParams#MODE_OPEN_MULTIPLE. openMultiple, /// Allows picking a nonexistent file and saving it. /// /// See https://developer.android.com/reference/android/webkit/WebChromeClient.FileChooserParams#MODE_SAVE. save, /// Indicates a `FileChooserMode` with an unknown mode. /// /// This does not represent an actual value provided by the platform and only /// indicates a value was provided that isn't currently supported. unknown, } /// Indicates the type of message logged to the console. /// /// See https://developer.android.com/reference/android/webkit/ConsoleMessage.MessageLevel. enum ConsoleMessageLevel { /// Indicates a message is logged for debugging. /// /// See https://developer.android.com/reference/android/webkit/ConsoleMessage.MessageLevel#DEBUG. debug, /// Indicates a message is provided as an error. /// /// See https://developer.android.com/reference/android/webkit/ConsoleMessage.MessageLevel#ERROR. error, /// Indicates a message is provided as a basic log message. /// /// See https://developer.android.com/reference/android/webkit/ConsoleMessage.MessageLevel#LOG. log, /// Indicates a message is provided as a tip. /// /// See https://developer.android.com/reference/android/webkit/ConsoleMessage.MessageLevel#TIP. tip, /// Indicates a message is provided as a warning. /// /// See https://developer.android.com/reference/android/webkit/ConsoleMessage.MessageLevel#WARNING. warning, /// Indicates a message with an unknown level. /// /// This does not represent an actual value provided by the platform and only /// indicates a value was provided that isn't currently supported. unknown, } /// The over-scroll mode for a view. /// /// See https://developer.android.com/reference/android/view/View#OVER_SCROLL_ALWAYS. enum OverScrollMode { /// Always allow a user to over-scroll this view, provided it is a view that /// can scroll. always, /// Allow a user to over-scroll this view only if the content is large enough /// to meaningfully scroll, provided it is a view that can scroll. ifContentScrolls, /// Never allow a user to over-scroll this view. never, /// The type is not recognized by this wrapper. unknown, } /// Type of error for a SslCertificate. /// /// See https://developer.android.com/reference/android/net/http/SslError#SSL_DATE_INVALID. enum SslErrorType { /// The date of the certificate is invalid. dateInvalid, /// The certificate has expired. expired, /// Hostname mismatch. idMismatch, /// A generic error occurred. invalid, /// The certificate is not yet valid. notYetValid, /// The certificate authority is not trusted. untrusted, /// The type is not recognized by this wrapper. unknown, } /// Options for mixed content mode support. /// /// See https://developer.android.com/reference/android/webkit/WebSettings#MIXED_CONTENT_ALWAYS_ALLOW enum MixedContentMode { /// The WebView will allow a secure origin to load content from any other /// origin, even if that origin is insecure. alwaysAllow, /// The WebView will attempt to be compatible with the approach of a modern /// web browser with regard to mixed content. compatibilityMode, /// The WebView will not allow a secure origin to load content from an /// insecure origin. neverAllow, } /// Encompasses parameters to the `WebViewClient.shouldInterceptRequest` method. /// /// See https://developer.android.com/reference/android/webkit/WebResourceRequest. @ProxyApi( kotlinOptions: KotlinProxyApiOptions( fullClassName: 'android.webkit.WebResourceRequest', ), ) abstract class WebResourceRequest { /// The URL for which the resource request was made. late String url; /// Whether the request was made in order to fetch the main frame's document. late bool isForMainFrame; /// Whether the request was a result of a server-side redirect. late bool isRedirect; /// Whether a gesture (such as a click) was associated with the request. late bool hasGesture; /// The method associated with the request, for example "GET". late String method; /// The headers associated with the request. late Map? requestHeaders; } /// Encapsulates a resource response. /// /// See https://developer.android.com/reference/android/webkit/WebResourceResponse. @ProxyApi( kotlinOptions: KotlinProxyApiOptions( fullClassName: 'android.webkit.WebResourceResponse', ), ) abstract class WebResourceResponse { /// The resource response's status code. late int statusCode; } /// Encapsulates information about errors that occurred during loading of web /// resources. /// /// See https://developer.android.com/reference/android/webkit/WebResourceError. @ProxyApi( kotlinOptions: KotlinProxyApiOptions( fullClassName: 'android.webkit.WebResourceError', ), ) abstract class WebResourceError { /// The error code of the error. late int errorCode; /// The string describing the error. late String description; } /// Encapsulates information about errors that occurred during loading of web /// resources. /// /// See https://developer.android.com/reference/androidx/webkit/WebResourceErrorCompat. @ProxyApi( kotlinOptions: KotlinProxyApiOptions( fullClassName: 'androidx.webkit.WebResourceErrorCompat', ), ) abstract class WebResourceErrorCompat { /// The error code of the error. late int errorCode; /// The string describing the error. late String description; } /// Represents a position on a web page. /// /// This is a custom class created for convenience of the wrapper. @ProxyApi() abstract class WebViewPoint { late int x; late int y; } /// Represents a JavaScript console message from WebCore. /// /// See https://developer.android.com/reference/android/webkit/ConsoleMessage @ProxyApi( kotlinOptions: KotlinProxyApiOptions( fullClassName: 'android.webkit.ConsoleMessage', ), ) abstract class ConsoleMessage { late int lineNumber; late String message; late ConsoleMessageLevel level; late String sourceId; } /// Manages the cookies used by an application's `WebView` instances. /// /// See https://developer.android.com/reference/android/webkit/CookieManager. @ProxyApi( kotlinOptions: KotlinProxyApiOptions( fullClassName: 'android.webkit.CookieManager', ), ) abstract class CookieManager { @static late CookieManager instance; /// Sets a single cookie (key-value pair) for the given URL. void setCookie(String url, String value); /// Removes all cookies. @async bool removeAllCookies(); /// Sets whether the `WebView` should allow third party cookies to be set. void setAcceptThirdPartyCookies(WebView webView, bool accept); } /// A View that displays web pages. /// /// See https://developer.android.com/reference/android/webkit/WebView. @ProxyApi( kotlinOptions: KotlinProxyApiOptions(fullClassName: 'android.webkit.WebView'), ) abstract class WebView extends View { WebView(); /// This is called in response to an internal scroll in this view (i.e., the /// view scrolled its own contents). late void Function(int left, int top, int oldLeft, int oldTop)? onScrollChanged; /// The WebSettings object used to control the settings for this WebView. @attached late WebSettings settings; /// Loads the given data into this WebView using a 'data' scheme URL. void loadData(String data, String? mimeType, String? encoding); /// Loads the given data into this WebView, using baseUrl as the base URL for /// the content. void loadDataWithBaseUrl( String? baseUrl, String data, String? mimeType, String? encoding, String? historyUrl, ); /// Loads the given URL. void loadUrl(String url, Map headers); /// Loads the URL with postData using "POST" method into this WebView. void postUrl(String url, Uint8List data); /// Gets the URL for the current page. String? getUrl(); /// Gets whether this WebView has a back history item. bool canGoBack(); /// Gets whether this WebView has a forward history item. bool canGoForward(); /// Goes back in the history of this WebView. void goBack(); /// Goes forward in the history of this WebView. void goForward(); /// Reloads the current URL. void reload(); /// Clears the resource cache. void clearCache(bool includeDiskFiles); /// Asynchronously evaluates JavaScript in the context of the currently /// displayed page. @async String? evaluateJavascript(String javascriptString); /// Gets the title for the current page. String? getTitle(); /// Enables debugging of web contents (HTML / CSS / JavaScript) loaded into /// any WebViews of this application. @static void setWebContentsDebuggingEnabled(bool enabled); /// Sets the WebViewClient that will receive various notifications and /// requests. void setWebViewClient(WebViewClient? client); /// Injects the supplied Java object into this WebView. void addJavaScriptChannel(JavaScriptChannel channel); /// Removes a previously injected Java object from this WebView. void removeJavaScriptChannel(String name); /// Registers the interface to be used when content can not be handled by the /// rendering engine, and should be downloaded instead. void setDownloadListener(DownloadListener? listener); /// Sets the chrome handler. void setWebChromeClient(WebChromeClient? client); /// Sets the background color for this view. void setBackgroundColor(int color); /// Destroys the internal state of this WebView. void destroy(); } /// Manages settings state for a `WebView`. /// /// See https://developer.android.com/reference/android/webkit/WebSettings. @ProxyApi( kotlinOptions: KotlinProxyApiOptions( fullClassName: 'android.webkit.WebSettings', ), ) abstract class WebSettings { /// Sets whether the DOM storage API is enabled. void setDomStorageEnabled(bool flag); /// Tells JavaScript to open windows automatically. void setJavaScriptCanOpenWindowsAutomatically(bool flag); /// Sets whether the WebView whether supports multiple windows. void setSupportMultipleWindows(bool support); /// Tells the WebView to enable JavaScript execution. void setJavaScriptEnabled(bool flag); /// Sets the WebView's user-agent string. void setUserAgentString(String? userAgentString); /// Sets whether the WebView requires a user gesture to play media. void setMediaPlaybackRequiresUserGesture(bool require); /// Sets whether the WebView should support zooming using its on-screen zoom /// controls and gestures. void setSupportZoom(bool support); /// Sets whether the WebView loads pages in overview mode, that is, zooms out /// the content to fit on screen by width. void setLoadWithOverviewMode(bool overview); /// Sets whether the WebView should enable support for the "viewport" HTML /// meta tag or should use a wide viewport. void setUseWideViewPort(bool use); /// Sets whether the WebView should display on-screen zoom controls when using /// the built-in zoom mechanisms. void setDisplayZoomControls(bool enabled); /// Sets whether the WebView should display on-screen zoom controls when using /// the built-in zoom mechanisms. void setBuiltInZoomControls(bool enabled); /// Enables or disables file access within WebView. void setAllowFileAccess(bool enabled); /// Enables or disables content URL access within WebView. void setAllowContentAccess(bool enabled); /// Sets whether Geolocation is enabled within WebView. void setGeolocationEnabled(bool enabled); /// Sets the text zoom of the page in percent. void setTextZoom(int textZoom); /// Gets the WebView's user-agent string. String getUserAgentString(); /// Configures the WebView's behavior when handling mixed content. void setMixedContentMode(MixedContentMode mode); } /// A JavaScript interface for exposing Javascript callbacks to Dart. /// /// This is a custom class for the wrapper that is annotated with /// [JavascriptInterface](https://developer.android.com/reference/android/webkit/JavascriptInterface). @ProxyApi() abstract class JavaScriptChannel { // ignore: avoid_unused_constructor_parameters JavaScriptChannel(); late final String channelName; /// Handles callbacks messages from JavaScript. late void Function(String message) postMessage; } /// Receives various notifications and requests from a `WebView`. /// /// See https://developer.android.com/reference/android/webkit/WebViewClient. @ProxyApi( kotlinOptions: KotlinProxyApiOptions( fullClassName: 'android.webkit.WebViewClient', ), ) abstract class WebViewClient { WebViewClient(); /// Notify the host application that a page has started loading. late void Function(WebView webView, String url)? onPageStarted; /// Notify the host application that a page has finished loading. late void Function(WebView webView, String url)? onPageFinished; /// Notify the host application that an HTTP error has been received from the /// server while loading a resource. late void Function( WebView webView, WebResourceRequest request, WebResourceResponse response, )? onReceivedHttpError; /// Report web resource loading error to the host application. late void Function( WebView webView, WebResourceRequest request, WebResourceError error, )? onReceivedRequestError; /// Report web resource loading error to the host application. late void Function( WebView webView, WebResourceRequest request, WebResourceErrorCompat error, )? onReceivedRequestErrorCompat; /// Give the host application a chance to take control when a URL is about to /// be loaded in the current WebView. late void Function(WebView webView, WebResourceRequest request)? requestLoading; /// Give the host application a chance to take control when a URL is about to /// be loaded in the current WebView. late void Function(WebView webView, String url)? urlLoading; /// Notify the host application to update its visited links database. late void Function(WebView webView, String url, bool isReload)? doUpdateVisitedHistory; /// Notifies the host application that the WebView received an HTTP /// authentication request. late void Function( WebView webView, HttpAuthHandler handler, String host, String realm, )? onReceivedHttpAuthRequest; /// Ask the host application if the browser should resend data as the /// requested page was a result of a POST. void Function(WebView view, AndroidMessage dontResend, AndroidMessage resend)? onFormResubmission; /// Notify the host application that the WebView will load the resource /// specified by the given url. void Function(WebView view, String url)? onLoadResource; /// Notify the host application that WebView content left over from previous /// page navigations will no longer be drawn. void Function(WebView view, String url)? onPageCommitVisible; /// Notify the host application to handle a SSL client certificate request. void Function(WebView view, ClientCertRequest request)? onReceivedClientCertRequest; /// Notify the host application that a request to automatically log in the /// user has been processed. void Function(WebView view, String realm, String? account, String args)? onReceivedLoginRequest; /// Notifies the host application that an SSL error occurred while loading a /// resource. void Function(WebView view, SslErrorHandler handler, SslError error)? onReceivedSslError; /// Notify the host application that the scale applied to the WebView has /// changed. void Function(WebView view, double oldScale, double newScale)? onScaleChanged; /// Sets the required synchronous return value for the Java method, /// `WebViewClient.shouldOverrideUrlLoading(...)`. /// /// The Java method, `WebViewClient.shouldOverrideUrlLoading(...)`, requires /// a boolean to be returned and this method sets the returned value for all /// calls to the Java method. /// /// Setting this to true causes the current [WebView] to abort loading any URL /// received by [requestLoading] or [urlLoading], while setting this to false /// causes the [WebView] to continue loading a URL as usual. /// /// Defaults to false. void setSynchronousReturnValueForShouldOverrideUrlLoading(bool value); } /// Handles notifications that a file should be downloaded. /// /// See https://developer.android.com/reference/android/webkit/DownloadListener. @ProxyApi( kotlinOptions: KotlinProxyApiOptions( fullClassName: 'android.webkit.DownloadListener', ), ) abstract class DownloadListener { DownloadListener(); /// Notify the host application that a file should be downloaded. late void Function( String url, String userAgent, String contentDisposition, String mimetype, int contentLength, ) onDownloadStart; } /// Handles notification of JavaScript dialogs, favicons, titles, and the /// progress. /// /// See https://developer.android.com/reference/android/webkit/WebChromeClient. @ProxyApi( kotlinOptions: KotlinProxyApiOptions( fullClassName: 'io.flutter.plugins.webviewflutter.WebChromeClientProxyApi.WebChromeClientImpl', ), ) abstract class WebChromeClient { WebChromeClient(); /// Tell the host application the current progress of loading a page. late void Function(WebView webView, int progress)? onProgressChanged; /// Tell the client to show a file chooser. @async late List Function(WebView webView, FileChooserParams params) onShowFileChooser; /// Notify the host application that web content is requesting permission to /// access the specified resources and the permission currently isn't granted /// or denied. late void Function(PermissionRequest request)? onPermissionRequest; /// Callback to Dart function `WebChromeClient.onShowCustomView`. late void Function(View view, CustomViewCallback callback)? onShowCustomView; /// Notify the host application that the current page has entered full screen /// mode. late void Function()? onHideCustomView; /// Notify the host application that web content from the specified origin is /// attempting to use the Geolocation API, but no permission state is /// currently set for that origin. late void Function(String origin, GeolocationPermissionsCallback callback)? onGeolocationPermissionsShowPrompt; /// Notify the host application that a request for Geolocation permissions, /// made with a previous call to `onGeolocationPermissionsShowPrompt` has been /// canceled. late void Function()? onGeolocationPermissionsHidePrompt; /// Report a JavaScript console message to the host application. late void Function(ConsoleMessage message)? onConsoleMessage; /// Notify the host application that the web page wants to display a /// JavaScript `alert()` dialog. @async late void Function(WebView webView, String url, String message)? onJsAlert; /// Notify the host application that the web page wants to display a /// JavaScript `confirm()` dialog. @async late bool Function(WebView webView, String url, String message) onJsConfirm; /// Notify the host application that the web page wants to display a /// JavaScript `prompt()` dialog. @async late String? Function( WebView webView, String url, String message, String defaultValue, )? onJsPrompt; /// Sets the required synchronous return value for the Java method, /// `WebChromeClient.onShowFileChooser(...)`. /// /// The Java method, `WebChromeClient.onShowFileChooser(...)`, requires /// a boolean to be returned and this method sets the returned value for all /// calls to the Java method. /// /// Setting this to true indicates that all file chooser requests should be /// handled by `onShowFileChooser` and the returned list of Strings will be /// returned to the WebView. Otherwise, the client will use the default /// handling and the returned value in `onShowFileChooser` will be ignored. /// /// Requires `onShowFileChooser` to be nonnull. /// /// Defaults to false. void setSynchronousReturnValueForOnShowFileChooser(bool value); /// Sets the required synchronous return value for the Java method, /// `WebChromeClient.onConsoleMessage(...)`. /// /// The Java method, `WebChromeClient.onConsoleMessage(...)`, requires /// a boolean to be returned and this method sets the returned value for all /// calls to the Java method. /// /// Setting this to true indicates that the client is handling all console /// messages. /// /// Requires `onConsoleMessage` to be nonnull. /// /// Defaults to false. void setSynchronousReturnValueForOnConsoleMessage(bool value); /// Sets the required synchronous return value for the Java method, /// `WebChromeClient.onJsAlert(...)`. /// /// The Java method, `WebChromeClient.onJsAlert(...)`, requires a boolean to /// be returned and this method sets the returned value for all calls to the /// Java method. /// /// Setting this to true indicates that the client is handling all console /// messages. /// /// Requires `onJsAlert` to be nonnull. /// /// Defaults to false. void setSynchronousReturnValueForOnJsAlert(bool value); /// Sets the required synchronous return value for the Java method, /// `WebChromeClient.onJsConfirm(...)`. /// /// The Java method, `WebChromeClient.onJsConfirm(...)`, requires a boolean to /// be returned and this method sets the returned value for all calls to the /// Java method. /// /// Setting this to true indicates that the client is handling all console /// messages. /// /// Requires `onJsConfirm` to be nonnull. /// /// Defaults to false. void setSynchronousReturnValueForOnJsConfirm(bool value); /// Sets the required synchronous return value for the Java method, /// `WebChromeClient.onJsPrompt(...)`. /// /// The Java method, `WebChromeClient.onJsPrompt(...)`, requires a boolean to /// be returned and this method sets the returned value for all calls to the /// Java method. /// /// Setting this to true indicates that the client is handling all console /// messages. /// /// Requires `onJsPrompt` to be nonnull. /// /// Defaults to false. void setSynchronousReturnValueForOnJsPrompt(bool value); } /// Provides access to the assets registered as part of the App bundle. /// /// Convenience class for accessing Flutter asset resources. @ProxyApi( kotlinOptions: KotlinProxyApiOptions( fullClassName: 'io.flutter.plugins.webviewflutter.FlutterAssetManager', ), ) abstract class FlutterAssetManager { /// The global instance of the `FlutterAssetManager`. @static late FlutterAssetManager instance; /// Returns a String array of all the assets at the given path. /// /// Throws an IOException in case I/O operations were interrupted. List list(String path); /// Gets the relative file path to the Flutter asset with the given name, including the file's /// extension, e.g., "myImage.jpg". /// /// The returned file path is relative to the Android app's standard asset's /// directory. Therefore, the returned path is appropriate to pass to /// Android's AssetManager, but the path is not appropriate to load as an /// absolute path. String getAssetFilePathByName(String name); } /// This class is used to manage the JavaScript storage APIs provided by the /// WebView. /// /// See https://developer.android.com/reference/android/webkit/WebStorage. @ProxyApi( kotlinOptions: KotlinProxyApiOptions( fullClassName: 'android.webkit.WebStorage', ), ) abstract class WebStorage { @static late WebStorage instance; /// Clears all storage currently being used by the JavaScript storage APIs. void deleteAllData(); } /// Parameters used in the `WebChromeClient.onShowFileChooser` method. /// /// See https://developer.android.com/reference/android/webkit/WebChromeClient.FileChooserParams. @ProxyApi( kotlinOptions: KotlinProxyApiOptions( fullClassName: 'android.webkit.WebChromeClient.FileChooserParams', ), ) abstract class FileChooserParams { /// Preference for a live media captured value (e.g. Camera, Microphone). late bool isCaptureEnabled; /// An array of acceptable MIME types. late List acceptTypes; /// File chooser mode. late FileChooserMode mode; /// File name of a default selection if specified, or null. late String? filenameHint; } /// This class defines a permission request and is used when web content /// requests access to protected resources. /// /// See https://developer.android.com/reference/android/webkit/PermissionRequest. @ProxyApi( kotlinOptions: KotlinProxyApiOptions( fullClassName: 'android.webkit.PermissionRequest', ), ) abstract class PermissionRequest { late List resources; /// Call this method to grant origin the permission to access the given /// resources. void grant(List resources); /// Call this method to deny the request. void deny(); } /// A callback interface used by the host application to notify the current page /// that its custom view has been dismissed. /// /// See https://developer.android.com/reference/android/webkit/WebChromeClient.CustomViewCallback. @ProxyApi( kotlinOptions: KotlinProxyApiOptions( fullClassName: 'android.webkit.WebChromeClient.CustomViewCallback', ), ) abstract class CustomViewCallback { /// Invoked when the host application dismisses the custom view. void onCustomViewHidden(); } /// This class represents the basic building block for user interface /// components. /// /// See https://developer.android.com/reference/android/view/View. @ProxyApi( kotlinOptions: KotlinProxyApiOptions(fullClassName: 'android.view.View'), ) abstract class View { /// Set the scrolled position of your view. void scrollTo(int x, int y); /// Move the scrolled position of your view. void scrollBy(int x, int y); /// Return the scrolled position of this view. WebViewPoint getScrollPosition(); /// Define whether the vertical scrollbar should be drawn or not. /// /// The scrollbar is not drawn by default. void setVerticalScrollBarEnabled(bool enabled); /// Define whether the horizontal scrollbar should be drawn or not. /// /// The scrollbar is not drawn by default. void setHorizontalScrollBarEnabled(bool enabled); /// Set the over-scroll mode for this view. void setOverScrollMode(OverScrollMode mode); } /// A callback interface used by the host application to set the Geolocation /// permission state for an origin. /// /// See https://developer.android.com/reference/android/webkit/GeolocationPermissions.Callback. @ProxyApi( kotlinOptions: KotlinProxyApiOptions( fullClassName: 'android.webkit.GeolocationPermissions.Callback', ), ) abstract class GeolocationPermissionsCallback { /// Sets the Geolocation permission state for the supplied origin. void invoke(String origin, bool allow, bool retain); } /// Represents a request for HTTP authentication. /// /// See https://developer.android.com/reference/android/webkit/HttpAuthHandler. @ProxyApi( kotlinOptions: KotlinProxyApiOptions( fullClassName: 'android.webkit.HttpAuthHandler', ), ) abstract class HttpAuthHandler { /// Gets whether the credentials stored for the current host (i.e. the host /// for which `WebViewClient.onReceivedHttpAuthRequest` was called) are /// suitable for use. bool useHttpAuthUsernamePassword(); /// Instructs the WebView to cancel the authentication request.. void cancel(); /// Instructs the WebView to proceed with the authentication with the given /// credentials. void proceed(String username, String password); } /// Defines a message containing a description and arbitrary data object that /// can be sent to a `Handler`. /// /// See https://developer.android.com/reference/android/os/Message. @ProxyApi( kotlinOptions: KotlinProxyApiOptions(fullClassName: 'android.os.Message'), ) abstract class AndroidMessage { /// Sends this message to the Android native `Handler` specified by /// getTarget(). /// /// Throws a null pointer exception if this field has not been set. void sendToTarget(); } /// Defines a message containing a description and arbitrary data object that /// can be sent to a `Handler`. /// /// See https://developer.android.com/reference/android/webkit/ClientCertRequest. @ProxyApi( kotlinOptions: KotlinProxyApiOptions( fullClassName: 'android.webkit.ClientCertRequest', ), ) abstract class ClientCertRequest { /// Cancel this request. void cancel(); /// Ignore the request for now. void ignore(); /// Proceed with the specified private key and client certificate chain. void proceed(PrivateKey privateKey, List chain); } /// A private key. /// /// The purpose of this interface is to group (and provide type safety for) all /// private key interfaces. /// /// See https://developer.android.com/reference/java/security/PrivateKey. @ProxyApi( kotlinOptions: KotlinProxyApiOptions( fullClassName: 'java.security.PrivateKey', ), ) abstract class PrivateKey {} /// Abstract class for X.509 certificates. /// /// This provides a standard way to access all the attributes of an X.509 /// certificate. /// /// See https://developer.android.com/reference/java/security/cert/X509Certificate. @ProxyApi( kotlinOptions: KotlinProxyApiOptions( fullClassName: 'java.security.cert.X509Certificate', ), ) abstract class X509Certificate extends Certificate {} /// Represents a request for handling an SSL error. /// /// See https://developer.android.com/reference/android/webkit/SslErrorHandler. @ProxyApi( kotlinOptions: KotlinProxyApiOptions( fullClassName: 'android.webkit.SslErrorHandler', ), ) abstract class SslErrorHandler { /// Instructs the WebView that encountered the SSL certificate error to /// terminate communication with the server. void cancel(); /// Instructs the WebView that encountered the SSL certificate error to ignore /// the error and continue communicating with the server. void proceed(); } /// This class represents a set of one or more SSL errors and the associated SSL /// certificate. /// /// See https://developer.android.com/reference/android/net/http/SslError. @ProxyApi( kotlinOptions: KotlinProxyApiOptions( fullClassName: 'android.net.http.SslError', ), ) abstract class SslError { /// Gets the SSL certificate associated with this object. late SslCertificate certificate; /// Gets the URL associated with this object. late String url; /// Gets the most severe SSL error in this object's set of errors. SslErrorType getPrimaryError(); /// Determines whether this object includes the supplied error. bool hasError(SslErrorType error); } /// A distinguished name helper class. /// /// A 3-tuple of: /// the most specific common name (CN) /// the most specific organization (O) /// the most specific organizational unit (OU) @ProxyApi( kotlinOptions: KotlinProxyApiOptions( fullClassName: 'android.net.http.SslCertificate.DName', ), ) abstract class SslCertificateDName { /// The most specific Common-name (CN) component of this name. String getCName(); /// The distinguished name (normally includes CN, O, and OU names). String getDName(); /// The most specific Organization (O) component of this name. String getOName(); /// The most specific Organizational Unit (OU) component of this name. String getUName(); } /// SSL certificate info (certificate details) class. /// /// See https://developer.android.com/reference/android/net/http/SslCertificate. @ProxyApi( kotlinOptions: KotlinProxyApiOptions( fullClassName: 'android.net.http.SslCertificate', ), ) abstract class SslCertificate { /// Issued-by distinguished name or null if none has been set. SslCertificateDName? getIssuedBy(); /// Issued-to distinguished name or null if none has been set. SslCertificateDName? getIssuedTo(); /// Not-after date from the certificate validity period or null if none has been /// set. int? getValidNotAfterMsSinceEpoch(); /// Not-before date from the certificate validity period or null if none has /// been set. int? getValidNotBeforeMsSinceEpoch(); /// The X509Certificate used to create this SslCertificate or null if no /// certificate was provided. /// /// Always returns null on Android versions below Q. X509Certificate? getX509Certificate(); } /// Abstract class for managing a variety of identity certificates. /// /// See https://developer.android.com/reference/java/security/cert/Certificate. @ProxyApi( kotlinOptions: KotlinProxyApiOptions( fullClassName: 'java.security.cert.Certificate', ), ) abstract class Certificate { /// The encoded form of this certificate. Uint8List getEncoded(); } /// Compatibility version of `WebSettings`. /// /// See https://developer.android.com/reference/kotlin/androidx/webkit/WebSettingsCompat. @ProxyApi( kotlinOptions: KotlinProxyApiOptions( fullClassName: 'androidx.webkit.WebSettingsCompat', ), ) abstract class WebSettingsCompat { @static void setPaymentRequestEnabled(WebSettings webSettings, bool enabled); } /// Utility class for checking which WebView Support Library features are supported on the device. /// /// See https://developer.android.com/reference/kotlin/androidx/webkit/WebViewFeature. @ProxyApi( kotlinOptions: KotlinProxyApiOptions( fullClassName: 'androidx.webkit.WebViewFeature', ), ) abstract class WebViewFeature { @static bool isFeatureSupported(String feature); }