// Copyright © 2014 The CefSharp Authors. All rights reserved. // // Use of this source code is governed by a BSD-style license that can be found in the LICENSE file. using System; using System.Security.Cryptography.X509Certificates; namespace CefSharp { /// /// Implement this interface to handle events related to browser requests. /// The methods of this class will be called on the thread indicated. /// public interface IRequestHandler { /// /// Called before browser navigation. /// If the navigation is allowed and /// will be called. If the navigation is canceled will be called with an ErrorCode /// value of . /// /// the ChromiumWebBrowser control /// the browser object /// The frame the request is coming from /// the request object - cannot be modified in this callback /// The value will be true if the browser navigated via explicit user gesture /// (e.g. clicking a link) or false if it navigated automatically (e.g. via the DomContentLoaded event). /// has the request been redirected /// Return true to cancel the navigation or false to allow the navigation to proceed. bool OnBeforeBrowse(IWebBrowser chromiumWebBrowser, IBrowser browser, IFrame frame, IRequest request, bool userGesture, bool isRedirect); /// /// Called on the UI thread before OnBeforeBrowse in certain limited cases /// where navigating a new or different browser might be desirable. This /// includes user-initiated navigation that might open in a special way (e.g. /// links clicked via middle-click or ctrl + left-click) and certain types of /// cross-origin navigation initiated from the renderer process (e.g. /// navigating the top-level frame to/from a file URL). /// /// the ChromiumWebBrowser control /// the browser object /// The frame object /// target url /// The value indicates where the user intended to navigate the browser based /// on standard Chromium behaviors (e.g. current tab, new tab, etc). /// The value will be true if the browser navigated via explicit user gesture /// (e.g. clicking a link) or false if it navigated automatically (e.g. via the DomContentLoaded event). /// Return true to cancel the navigation or false to allow the navigation /// to proceed in the source browser's top-level frame. bool OnOpenUrlFromTab(IWebBrowser chromiumWebBrowser, IBrowser browser, IFrame frame, string targetUrl, WindowOpenDisposition targetDisposition, bool userGesture); /// /// Called on the CEF IO thread before a resource request is initiated. /// /// the ChromiumWebBrowser control /// represent the source browser of the request /// represent the source frame of the request /// represents the request contents and cannot be modified in this callback /// will be true if the resource request is a navigation /// will be true if the resource request is a download /// is the origin (scheme + domain) of the page that initiated the request /// to true to disable default handling of the request, in which case it will need to be handled via or it will be canceled /// To allow the resource load to proceed with default handling return null. To specify a handler for the resource return a object. If this callback returns null the same method will be called on the associated , if any IResourceRequestHandler GetResourceRequestHandler(IWebBrowser chromiumWebBrowser, IBrowser browser, IFrame frame, IRequest request, bool isNavigation, bool isDownload, string requestInitiator, ref bool disableDefaultHandling); /// /// Called when the browser needs credentials from the user. /// /// The ChromiumWebBrowser control /// the browser object /// is the origin making this authentication request /// indicates whether the host is a proxy server /// hostname /// port number /// realm /// scheme /// Callback interface used for asynchronous continuation of authentication requests. /// Return true to continue the request and call when the authentication information is available. Return false to cancel the request. bool GetAuthCredentials(IWebBrowser chromiumWebBrowser, IBrowser browser, string originUrl, bool isProxy, string host, int port, string realm, string scheme, IAuthCallback callback); /// /// Called when JavaScript requests a specific storage quota size via the webkitStorageInfo.requestQuota function. /// For async processing return true and execute at a later time to /// grant or deny the request or to cancel. /// /// The ChromiumWebBrowser control /// the browser object /// the origin of the page making the request /// is the requested quota size in bytes /// Callback interface used for asynchronous continuation of url requests. /// Return false to cancel the request immediately. Return true to continue the request /// and call either in this method or at a later time to /// grant or deny the request. bool OnQuotaRequest(IWebBrowser chromiumWebBrowser, IBrowser browser, string originUrl, Int64 newSize, IRequestCallback callback); /// /// Called to handle requests for URLs with an invalid SSL certificate. /// Return true and call either /// in this method or at a later time to continue or cancel the request. /// If CefSettings.IgnoreCertificateErrors is set all invalid certificates /// will be accepted without calling this method. /// /// the ChromiumWebBrowser control /// the browser object /// the error code for this invalid certificate /// the url of the request for the invalid certificate /// ssl certificate information /// Callback interface used for asynchronous continuation of url requests. /// If empty the error cannot be recovered from and the request will be canceled automatically. /// Return false to cancel the request immediately. Return true and use to /// execute in an async fashion. bool OnCertificateError(IWebBrowser chromiumWebBrowser, IBrowser browser, CefErrorCode errorCode, string requestUrl, ISslInfo sslInfo, IRequestCallback callback); /// /// Called when the browser needs user to select Client Certificate for authentication requests (eg. PKI authentication). /// /// The ChromiumWebBrowser control /// the browser object /// indicates whether the host is a proxy server /// hostname /// port number /// List of Client certificates for selection /// Callback interface used for asynchronous continuation of client certificate selection for authentication requests. /// Return true to continue the request and call ISelectClientCertificateCallback.Select() with the selected certificate for authentication. /// Return false to use the default behavior where the browser selects the first certificate from the list. bool OnSelectClientCertificate(IWebBrowser chromiumWebBrowser, IBrowser browser, bool isProxy, string host, int port, X509Certificate2Collection certificates, ISelectClientCertificateCallback callback); /// /// Called when a plugin has crashed /// /// the ChromiumWebBrowser control /// the browser object /// path of the plugin that crashed void OnPluginCrashed(IWebBrowser chromiumWebBrowser, IBrowser browser, string pluginPath); /// /// Called on the CEF UI thread when the render view associated /// with browser is ready to receive/handle IPC messages in the render /// process. /// /// The ChromiumWebBrowser control /// the browser object void OnRenderViewReady(IWebBrowser chromiumWebBrowser, IBrowser browser); /// /// Called when the render process terminates unexpectedly. /// /// The ChromiumWebBrowser control /// the browser object /// indicates how the process terminated. void OnRenderProcessTerminated(IWebBrowser chromiumWebBrowser, IBrowser browser, CefTerminationStatus status); } }