CefSharp.Wpf Initialization settings. Many of these and other settings can also configured using command-line switches. Intialize with default values ChromiumWebBrowser is the WPF web browser control TemplatePart Name constant for the Image used to represent the browser TemplatePart Name constant for the Image used to represent the popup overlayed on the browser View Rectangle used by Store the previous window state, used to determine if the Windows was previous and resume rendering The source The HwndSource RootVisual (Window) - We store a reference to unsubscribe event handlers The MonitorInfo based on the current hwnd The tooltip timer The tool tip The managed cef browser adapter The ignore URI change Initial address Used to stop multiple threads trying to load the initial Url multiple times. If the Address property is bound after the browser is initialized Has the underlying Cef Browser been created (slightly different to initialized in that the browser is initialized in an async fashion) The image that represents this browser instances The popup image Location of the control on the screen, relative to Top/Left Used to calculate GetScreenPoint We're unable to call PointToScreen directly due to treading restrictions and calling in a sync fashion on the UI thread was problematic. Browser initialization settings The request context (we deliberately use a private variable so we can throw an exception if user attempts to set after browser created) Keep a short term copy of IDragData, so when calling DoDragDrop, DragEnter is called, we can reuse the drag data provided from CEF Keep the current drag&drop effects to return the appropriate effects on drag over. A flag that indicates whether or not the designer is active NOTE: Needs to be static for OnApplicationExit This flag is set when the browser gets focus before the underlying CEF browser has been initialized. The class that coordinates the positioning of the dropdown if wanted. When enabled the browser will resize by 1px when it becomes visible to workaround the upstream issue Hack to work around upstream issue https://github.com/chromiumembedded/cef/issues/3427 Disabled by default Number of milliseconds to wait after resizing the browser when it first becomes visible. After the delay the browser will revert to it's original size. Hack to workaround upstream issue https://github.com/chromiumembedded/cef/issues/3427 Gets a value indicating whether this instance is disposed. if this instance is disposed; otherwise, . WPF Keyboard Handled forwards key events to the underlying browser Gets or sets the browser settings. The browser settings. Gets or sets the request context. The request context. Implement and control how the control is rendered The render Handler. Implement to handle events related to accessibility. The accessibility handler. Raised every time is called. You can access the underlying buffer, though it's preferable to either override or implement your own as there is no outwardly accessible locking (locking is done within the default implementations). It's important to note this event is fired on a CEF UI thread, which by default is not the same as your application UI thread Raised every time is called. It's important to note this event is fired on a CEF UI thread, which by default is not the same as your application UI thread Navigates to the previous page in the browser history. Will automatically be enabled/disabled depending on the browser state. The back command. Navigates to the next page in the browser history. Will automatically be enabled/disabled depending on the browser state. The forward command. Reloads the content of the current page. Will automatically be enabled/disabled depending on the browser state. The reload command. Prints the current browser contents. The print command. Increases the zoom level. The zoom in command. Decreases the zoom level. The zoom out command. Resets the zoom level to the default. (100%) The zoom reset command. Opens up a new program window (using the default text editor) where the source code of the currently displayed web page is shown. The view source command. Command which cleans up the Resources used by the ChromiumWebBrowser The cleanup command. Stops loading the current page. The stop command. Cut selected text to the clipboard. The cut command. Copy selected text to the clipboard. The copy command. Paste text from the clipboard. The paste command. Select all text. The select all command. Undo last action. The undo command. Redo last action. The redo command. The dpi scale factor, if the browser has already been initialized you must manually call IBrowserHost.NotifyScreenInfoChanged for the browser to be notified of the change. Initializes static members of the class. Handles Dispatcher Shutdown sender eventargs Handles the event. The sender. The instance containing the event data. Required for designer support - this method cannot be inlined as the designer will attempt to load libcef.dll and will subsequently throw an exception. Required for designer support - this method cannot be inlined as the designer will attempt to load libcef.dll and will subsequently throw an exception. To control how is called, this method will unsubscribe from , and . Initializes a new instance of the class. Cef::Initialize() failed Initializes a new instance of the class. Use this constructor to load the browser before it's attached to the Visual Tree. The underlying CefBrowser will be created with the specified . CEF requires positive values for and , if values less than 1 are specified then the default value of 1 will be used instead. You can subscribe to the event and attach the browser to its parent control when Loading is complete ( is false). HwndSource for the Window that will host the browser. address to be loaded when the browser is created. size //Obtain Hwnd from parent window var hwndSource = (HwndSource)PresentationSource.FromVisual(this); var browser = new ChromiumWebBrowser(hwndSource, "github.com", 1024, 768); browser.LoadingStateChanged += OnBrowserLoadingStateChanged; private void OnBrowserLoadingStateChanged(object sender, LoadingStateChangedEventArgs e) { if (e.IsLoading == false) { var b = (ChromiumWebBrowser)sender; b.LoadingStateChanged -= OnBrowserLoadingStateChanged; Dispatcher.InvokeAsync(() => { //Attach to visual tree ParentControl.Child = b; }); } } Initializes a new instance of the class. The specified will be loaded initially. Use this constructor if you are loading a Chrome Extension. address to be loaded when the browser is created. Constructor logic has been moved into this method Required for designer support - this method cannot be inlined as the designer will attempt to load libcef.dll and will subsequently throw an exception. Finalizes an instance of the class. Releases all resources used by the object If not in design mode; Releases unmanaged and - optionally - managed resources for the to release both managed and unmanaged resources; to release only unmanaged resources. Releases unmanaged and - optionally - managed resources for the to release both managed and unmanaged resources; to release only unmanaged resources. This method cannot be inlined as the designer will attempt to load libcef.dll and will subsequently throw an exception. Gets the ScreenInfo - currently used to get the DPI scale factor. ScreenInfo containing the current DPI scale factor Gets the ScreenInfo - currently used to get the DPI scale factor. ScreenInfo containing the current DPI scale factor Called to retrieve the view rectangle which is relative to screen coordinates. This method must always provide a non-empty rectangle. View Rectangle Called to retrieve the view rectangle which is relative to screen coordinates. This method must always provide a non-empty rectangle. View Rectangle Called to retrieve the translation from view coordinates to actual screen coordinates. x y screen x screen y Return true if the screen coordinates were provided. Called when the user starts dragging content in the web view. OS APIs that run a system message loop may be used within the StartDragging call. Don't call any of IBrowserHost::DragSource*Ended* methods after returning false. Call IBrowserHost.DragSourceEndedAt and DragSourceSystemDragEnded either synchronously or asynchronously to inform the web view that the drag operation has ended. Contextual information about the dragged content allowed operations is the drag start location in screen coordinates is the drag start location in screen coordinates Return true to handle the drag operation. Called when the web view wants to update the mouse cursor during a drag & drop operation. describes the allowed operation (none, move, copy, link). Called when an element has been rendered to the shared texture handle. This method is only called when is set to true The underlying implementation uses a pool to deliver frames. As a result, the handle may differ every frame depending on how many frames are in-progress. The handle's resource cannot be cached and cannot be accessed outside of this callback. It should be reopened each time this callback is executed and the contents should be copied to a texture owned by the client application. The contents of acceleratedPaintInfo will be released back to the pool after this callback returns. indicates whether the element is the view or the popup widget. contains the set of rectangles in pixel coordinates that need to be repainted contains the shared handle; on Windows it is a HANDLE to a texture that can be opened with D3D11 OpenSharedResource. Called when an element should be painted. Pixel values passed to this method are scaled relative to view coordinates based on the value of returned from . To override the default behaviour override this method or implement your own and assign to Called on the CEF UI Thread indicates whether the element is the view or the popup widget. contains the set of rectangles in pixel coordinates that need to be repainted The bitmap will be width * height *4 bytes in size and represents a BGRA image with an upper-left origin. The buffer should no be used outside the scope of this method, a copy should be taken. As the buffer is reused internally and potentially even freed. width height Sets the popup size and position. The popup rectangle (size and position). Sets the popup is open. if set to true [is open]. Sets the popup is open. if set to true [is open]. Sets the cursor. The handle. The type. custom cursor information Called when the IME composition range has changed. is the range of characters that have been selected is the bounds of each character in view coordinates. Called when an on-screen keyboard should be shown or hidden for the specified browser. the browser specifies what kind of keyboard should be opened. If , any existing keyboard for this browser should be hidden. Sets the address. The instance containing the event data. Sets the title. The instance containing the event data. Sets the tooltip text. The tooltip text. A flag that indicates whether the state of the control current supports the GoBack action (true) or not (false). true if this instance can go back; otherwise, false. In the WPF control, this property is implemented as a Dependency Property and fully supports data binding. The can go back property A flag that indicates whether the state of the control currently supports the GoForward action (true) or not (false). true if this instance can go forward; otherwise, false. In the WPF control, this property is implemented as a Dependency Property and fully supports data binding. The can go forward property The address (URL) which the browser control is currently displaying. Will automatically be updated as the user navigates to another page (e.g. by clicking on a link). The address. In the WPF control, this property is implemented as a Dependency Property and fully supports data binding. The address property Event called when the browser address has changed Handles the event. The sender. The instance containing the event data. Called when [address changed]. The old value. The new value. A flag that indicates whether the control is currently loading one or more web pages (true) or not (false). true if this instance is loading; otherwise, false. In the WPF control, this property is implemented as a Dependency Property and fully supports data binding. The is loading property A flag that indicates whether the WebBrowser is initialized (true) or not (false). true if this instance is browser initialized; otherwise, false. In the WPF control, this property is implemented as a Dependency Property and fully supports data binding. The is browser initialized property Event called after the underlying CEF browser instance has been created. Handles the event. The d. The instance containing the event data. Called when [is browser initialized changed]. if set to true [old value]. if set to true [new value]. The title of the web page being currently displayed. The title. This property is implemented as a Dependency Property and fully supports data binding. The title property Event handler that will get called when the browser title changes Handles the event. The d. The instance containing the event data. The zoom level at which the browser control is currently displaying. Can be set to 0 to clear the zoom level (resets to default zoom level). NOTE: For browsers that share the same render process (same origin) this property is only updated when the browser changes its visible state. If you have two browsers visible at the same time that share the same render process then zooming one will not update this property in the other (unless the control is hidden and then shown). You can isolate browser instances using a , they will then have their own render process regardless of the process policy. You can manually get the Zoom level using The zoom level. The zoom level property Handles the event. The sender. The instance containing the event data. Called when [zoom level changed]. The old value. The new value. Specifies the amount used to increase/decrease to ZoomLevel by By Default this value is 0.10 The zoom level increment. The zoom level increment property The CleanupElement Controls when the BrowserResources will be cleaned up. The ChromiumWebBrowser will register on Unloaded of the provided Element and dispose all resources when that handler is called. By default the cleanup element is the Window that contains the ChromiumWebBrowser. if you want cleanup to happen earlier provide another FrameworkElement. Be aware that this Control is not usable anymore after cleanup is done. The cleanup element. The cleanup element property Handles the event. The sender. The instance containing the event data. Called when [cleanup element changed]. The old value. The new value. Handles the event. The sender. The instance containing the event data. The text that will be displayed as a ToolTip The tooltip text. The tooltip text property Handles the change. dependency object. The instance containing property change data. Called when tooltip text was changed changed. old value new value Gets or sets the WebBrowser. The WebBrowser. The WebBrowser property Handles the event. The sender. The instance containing the event data. Handles the event. The sender. The instance containing the event data. Handles the event. The sender. The instance containing the event data. Handles the event. The sender. The instance containing the event data. PresentationSource changed handler. The sender. The instance containing the event data. Called when the underlying CefBrowser instance is hidden/shown Calls . This method can be overriden to keep the browser in a visible state even when it's not displayed on screen. if true the browser will be notified that it was hidden. Called when the Window Location Changes, the PresentationSource changes and the page loads. We manually track the position as CEF makes calls on a non-UI thread and calling Invoke in IRenderWebBrowser.GetScreenPoint makes it very easy to deadlock the browser. Returns screen coordinates of the browsers location Create the underlying CefBrowser instance with the specified . This method should only be used in instances where you need the browser to load before it's attached to the Visual Tree. HwndSource for the Window that will host the browser. initial size Returns false if browser already created, otherwise true. Create the underlying Browser instance, can be overriden to defer control creation The browser will only be created when size > Size(0,0). If you specify a positive size then the browser will be created, if the ActualWidth and ActualHeight properties are in reality still 0 then you'll likely end up with a browser that won't render. size of the current control, must be greater than Size(0, 0) bool to indicate if browser was created. If the browser has already been created then this will return false. Override this method to handle creation of WindowInfo. This method can be used to customise aspects of browser creation including configuration of settings such as (used for D3D11 shared texture rendering). Window handle for the HwndSource Window Info Runs the specific Action on the Dispatcher in an async fashion The action. The priority. Runs the specific Action on the Dispatcher in an sync fashion The action. The priority. Handles the event. The sender. The instance containing the event data. Handles the event. The sender. The instance containing the event data. Handles the event. The sender. The instance containing the event data. When overridden in a derived class, is invoked whenever application code or internal processes call . Converts a .NET Drag event to a CefSharp MouseEvent The instance containing the event data. MouseEvent. Sets the popup size and position implementation. The popup rectangle (size and position). Handles the event. The sender. The instance containing the event data. Handles the event. The sender. The instance containing the event data. Open or Close the tooltip at the current mouse position. ToolTip text, if null or empty tooltip will be closed. Handles the event. The sender. The instance containing the event data. Handles the event. The sender. The instance containing the event data. Invoked when an unhandled  attached event reaches an element in its route that is derived from this class. Implement this method to add class handling for this event. The that contains the event data. Invoked when an unhandled  attached event reaches an element in its route that is derived from this class. Implement this method to add class handling for this event. The that contains the event data. Handles the event. The instance containing the event data. Invoked when an unhandled  attached event reaches an element in its route that is derived from this class. Implement this method to add class handling for this event. The that contains the event data. Invoked when an unhandled  attached event reaches an element in its route that is derived from this class. Implement this method to add class handling for this event. The that contains the event data. Invoked when an unhandled  attached event reaches an element in its route that is derived from this class. Implement this method to add class handling for this event. The that contains the event data. This event data reports details about the mouse button that was pressed and the handled state. Invoked when an unhandled  routed event reaches an element in its route that is derived from this class. Implement this method to add class handling for this event. The that contains the event data. The event data reports that the mouse button was released. Invoked when an unhandled  attached event is raised on this element. Implement this method to add class handling for this event. The that contains the event data. Invoked when an unhandled  attached event reaches an element in its route that is derived from this class. Implement this method to add class handling for this event. The that contains event data. Handles the event. The instance containing the event data. Provides class handling for the routed event that occurs when a touch presses inside this element. The that contains the event data. Provides class handling for the routed event that occurs when a touch moves while inside this element. The that contains the event data. Provides class handling for the routed event that occurs when a touch is released inside this element. The that contains the event data. Handles a event. The instance containing the event data. Zooms the browser in. Zooms the browser out. Reset the browser's zoom level to default. Manually notify the browser the DPI of the parent window has changed. The tested/expected values for are 1.0, 1.25, 1.5, 2.0 as these correspond to 96, 120, 144, 192 DPI (referred to as 100%, 125%, 150%, 200% in the Windows GUI). new DPI Waits for the page rendering to be idle for . Rendering is considered to be idle when no events have occured for . This is useful for scenarios like taking a screen shot optional idleTime in miliseconds, default to 500ms optional timeout, if not specified defaults to thirty(30) seconds. optional CancellationToken Task that resolves when page rendering has been idle for Legacy keyboard handler uses WindowProc callback interceptor to forward keypress events the the browser. Use this method to revert to the previous keyboard handling behaviour The javascript object repository, one repository per ChromiumWebBrowser instance. Returns the current IBrowser Instance browser instance or null Resize hack for https://github.com/chromiumembedded/cef/issues/3427/osr-rendering-bug-when-minimizing-and Task Used as workaround for issue https://github.com/cefsharp/CefSharp/issues/3021 The browser initialized - boolean represented as 0 (false) and 1(true) as we use Interlocker to increment/reset The value for disposal, if it's 1 (one) then this instance is either disposed or in the process of getting disposed The browser Initial browser load task complection source Initial browser load action Get access to the core instance. Maybe null if the underlying CEF Browser has not yet been created or if this control has been disposed. Check before accessing. A flag that indicates if you can execute javascript in the main frame. Flag is set to true in IRenderProcessMessageHandler.OnContextCreated. and false in IRenderProcessMessageHandler.OnContextReleased Implement and assign to handle dialog events. The dialog handler. Implement and assign to handle events related to JavaScript Dialogs. The js dialog handler. Implement and assign to handle events related to key press. The keyboard handler. Implement and assign to handle events related to browser requests. The request handler. Implement and assign to handle events related to downloading files. The download handler. Implement and assign to handle events related to browser load status. The load handler. Implement and assign to handle events related to popups. The life span handler. Implement and assign to handle events related to browser display state. The display handler. Implement and assign to handle events related to the browser context menu The menu handler. Implement and assign to handle messages from the render process. The render process message handler. Implement to handle events related to find results. The find handler. Implement to handle audio events. Implement to handle frame events. Implement to handle events related to permission requests. The for this ChromiumWebBrowser. The focus handler. If you need customized focus handling behavior for WinForms, the suggested best practice would be to inherit from DefaultFocusHandler and try to avoid needing to override the logic in OnGotFocus. The implementation in DefaultFocusHandler relies on very detailed behavior of how WinForms and Windows interact during window activation. Implement and assign to handle events related to dragging. The drag handler. Implement and control the loading of resources The resource handler factory. Event handler that will get called when the resource load for a navigation fails or is canceled. It's important to note this event is fired on a CEF UI thread, which by default is not the same as your application UI thread. It is unwise to block on this thread for any length of time as your browser will become unresponsive and/or hang.. To access UI elements you'll need to Invoke/Dispatch onto the UI Thread. Event handler that will get called when the browser begins loading a frame. Multiple frames may be loading at the same time. Sub-frames may start or continue loading after the main frame load has ended. This method may not be called for a particular frame if the load request for that frame fails. For notification of overall browser load status use OnLoadingStateChange instead. It's important to note this event is fired on a CEF UI thread, which by default is not the same as your application UI thread. It is unwise to block on this thread for any length of time as your browser will become unresponsive and/or hang.. To access UI elements you'll need to Invoke/Dispatch onto the UI Thread. Whilst this may seem like a logical place to execute js, it's called before the DOM has been loaded, implement as it's called when the underlying V8Context is created Event handler that will get called when the browser is done loading a frame. Multiple frames may be loading at the same time. Sub-frames may start or continue loading after the main frame load has ended. This method will always be called for all frames irrespective of whether the request completes successfully. It's important to note this event is fired on a CEF UI thread, which by default is not the same as your application UI thread. It is unwise to block on this thread for any length of time as your browser will become unresponsive and/or hang.. To access UI elements you'll need to Invoke/Dispatch onto the UI Thread. Event handler that will get called when the Loading state has changed. This event will be fired twice. Once when loading is initiated either programmatically or by user action, and once when loading is terminated due to completion, cancellation of failure. It's important to note this event is fired on a CEF UI thread, which by default is not the same as your application UI thread. It is unwise to block on this thread for any length of time as your browser will become unresponsive and/or hang.. To access UI elements you'll need to Invoke/Dispatch onto the UI Thread. Event handler for receiving Javascript console messages being sent from web pages. It's important to note this event is fired on a CEF UI thread, which by default is not the same as your application UI thread. It is unwise to block on this thread for any length of time as your browser will become unresponsive and/or hang.. To access UI elements you'll need to Invoke/Dispatch onto the UI Thread. (The exception to this is when you're running with settings.MultiThreadedMessageLoop = false, then they'll be the same thread). Event handler for changes to the status message. It's important to note this event is fired on a CEF UI thread, which by default is not the same as your application UI thread. It is unwise to block on this thread for any length of time as your browser will become unresponsive and/or hang. To access UI elements you'll need to Invoke/Dispatch onto the UI Thread. (The exception to this is when you're running with settings.MultiThreadedMessageLoop = false, then they'll be the same thread). Event handler that will get called when the message that originates from CefSharp.PostMessage A flag that indicates whether the WebBrowser is initialized (true) or not (false). true if this instance is browser initialized; otherwise, false. Handles the event. The instance containing the event data. Handles the event. The instance containing the event data. Handles the event. The instance containing the event data. Handles the event. The instance containing the event data. Handles the event. The instance containing the event data. Gets or sets a value indicating whether this instance has parent. true if this instance has parent; otherwise, false. Used by CefSharp.Puppeteer to associate a single DevToolsContext with a ChromiumWebBrowser instance. Gets the browser adapter. The browser adapter. Sets the loading state change. The instance containing the event data. Called when [after browser created]. The browser. Sets the loading state change. The instance containing the event data. Sets the handler references to null. Where required also calls Dispose(). Check is browser is initialized true if browser is initialized Throw exception if browser not initialized. Thrown when an exception error condition occurs. Throw exception if disposed. Thrown when a supplied object has been disposed. DelegateCommand The command handler The can execute handler Occurs when changes occur that affect whether or not the command should execute. Initializes a new instance of the class. The command handler. The can execute handler. Defines the method to be called when the command is invoked. Data used by the command. If the command does not require data to be passed, this object can be set to null. Defines the method that determines whether the command can execute in its current state. Data used by the command. If the command does not require data to be passed, this object can be set to null. true if this command can be executed; otherwise, false. Raises the can execute changed. Provides a limited read-only Accessibility Handler implementation. To enable accessibility support use the --force-renderer-accessibility to enable for all browsers or call on a per browser basis to enable. By default accessibility is disabled by default. Having accessibility enabled can impact performance until accessibility is disabled. Called after renderer process sends accessibility location changes to the browser process. Updated location info. Called after renderer process sends accessibility tree changes to the browser process. Updated tree info. Default TabControl's AutomationPeer doesn’t know anything about the controls within it, since they’re loaded dynamically. The purpose of this class is to fix this behavior. Taken from https://www.colinsalmcorner.com/post/genericautomationpeer--helping-the-coded-ui-framework-find-your-custom-controls An Experimental ChromiumWebBrowser implementation that includes support for Stylus using the default WPF touch implementation. There are known performance problems with this default implementation, workarounds such as https://github.com/jaytwo/WmTouchDevice may need to be considered. .Net 4.7 supports the newer WM_Pointer implementation which should resolve the issue see https://github.com/dotnet/docs/blob/master/docs/framework/migration-guide/mitigation-pointer-based-touch-and-stylus-support.md Original PR https://github.com/cefsharp/CefSharp/pull/2745 Original Author https://github.com/GSonofNun Touch support was merged into ChromiumWebBrowser, only Style support still exists in this class Invoked when an unhandled attached event reaches an element in its route that is derived from this class. Implement this method to add class handling for this event. The that contains the event data. Invoked when an unhandled attached event reaches an element in its route that is derived from this class. Implement this method to add class handling for this event. The that contains the event data. Invoked when an unhandled attached event reaches an element in its route that is derived from this class. Implement this method to add class handling for this event. The that contains the event data. Handles a event. The instance containing the event data. The event type Experimental Extensions Html dropdown goes off screen when near bottom of page by default Calling this method to use the implementation to reopsition Popups and mouse. Issue https://github.com/cefsharp/CefSharp/issues/2820 browser Use a custom implemntation browser custom implementation of or defaults to if null. Called beforethe popup is created, can be used to cancel popup creation if required or modify . It's important to note that the methods of this interface are called on a CEF UI thread, which by default is not the same as your application UI thread. the ChromiumWebBrowser control The browser instance that launched this popup. The HTML frame that launched this popup. The URL of the popup content. (This may be empty/null) The name of the popup. (This may be empty/null) The value indicates where the user intended to open the popup (e.g. current tab, new tab, etc) The value will be true if the popup was opened via explicit user gesture (e.g. clicking a link) or false if the popup opened automatically (e.g. via the DomContentLoaded event). browser settings, defaults to source browsers To cancel creation of the popup return true otherwise return false. Called when the has been created. When called you must add the control to it's intended parent. popup host control url target frame name WindowInfo Called when the instance has been created. The reference will be valid until is called popup ChromiumWebBrowser control, maybe null if Browser is hosted in a native Popup window. DevTools by default will be hosted in a native popup window. browser Called when the is to be removed from it's parent. When called you must remove/dispose of the . popup ChromiumWebBrowser control browser Called to create a new instance of . Allows creation of a derived/custom implementation of . A custom instance of . WPF - EXPERIMENTAL LifeSpanHandler implementation that can be used to host a popup using a new instance. Default constructor optional delegate to create a custom instance. The will be called before the popup has been created and can be used to cancel popup creation if required or modify . Action to be invoked before popup is created. instance allowing you to chain method calls together The will be called when the has been created. When the is called you must add the control to it's intended parent. Action to be invoked when the Popup host has been created and is ready to be attached to it's parent. instance allowing you to chain method calls together The will be called when the has been created. The instance is valid until is called. provides low level access to the CEF Browser, you can access frames, view source, perform navigation (via frame) etc. Action to be invoked when the has been created. instance allowing you to chain method calls together The will be called when the is to be removed from it's parent. When the is called you must remove/dispose of the . Action to be invoked when the Popup is to be destroyed. instance allowing you to chain method calls together Create a new instance of the which can be used to create a WinForms specific implementation that simplifies the process of hosting a Popup as a Control/Tab. A which can be used to fluently create an . Call to create the actual instance after you have call etc. Fluent Builder LifeSpanHandlerBuilder When specified the delegate will be used to create the instance. Allowing users to create their own custom instance that extends The will be called before the popup has been created and can be used to cancel popup creation if required, modify and disable javascript. Action to be invoked before popup is created. instance allowing you to chain method calls together The will be called when the has been created. When the is called you must add the control to it's intended parent. Action to be invoked when the Popup is to be destroyed. instance allowing you to chain method calls together The will be called when the has been created. The instance is valid until is called. provides low level access to the CEF Browser, you can access frames, view source, perform navigation (via frame) etc. Action to be invoked when the has been created. instance allowing you to chain method calls together The will be called when the is to be removed from it's parent. When the is called you must remove/dispose of the . Action to be invoked when the Popup is to be destroyed. instance allowing you to chain method calls together Creates an implementation that can be used to host popups as tabs/controls. a instance Popup Creation options Popup creation is cancled, no further action will occur Popup creation will continue as per normal. Popup creation will continue with javascript disabled. A WPF Keyboard handler implementation that supports IME Constructor. The owner. Change composition range. The selection range. The character bounds. Setup the Ime Keyboard Handler specific hooks and events HwndSource. Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. Cancel composition. browser host The hwnd. Get the outermost element of the browser The browser The outermost element ContextMenuExecuteModel Menu Command Dictioanry Suggestions X Coordinate Y Coordinate Selection Text Misspelled Word Default constructor menu command dictioanry suggestion x coordinate y coordinate selection text misspelled word Implementation of that uses a to display the context menu. Open DevTools Id Close DevTools Id Converts .NET drag drop effects to CEF Drag Operations The drag drop effects. DragOperationsMask. Gets the drag effects. The mask. DragDropEffects. ImeHandler provides implementation when message WM_IME_COMPOSITION is received. Implement this interface to control transform the mouse position MonitorInfo is a wrapper class around MonitorFromWindow and GetMonitorInfo https://docs.microsoft.com/en-us/windows/desktop/api/winuser/nf-winuser-monitorfromwindow https://docs.microsoft.com/en-us/windows/desktop/api/winuser/nf-winuser-getmonitorinfoa Gets monitor information for the provided window handle window handle monitor info The size, in bytes, of the structure. Set this member to sizeof(MONITORINFOEX) (72) before calling the GetMonitorInfo function. Doing so lets the function determine the type of structure you are passing to it. A RECT structure that specifies the display monitor rectangle, expressed in virtual-screen coordinates. Note that if the monitor is not the primary display monitor, some of the rectangle's coordinates may be negative values. A RECT structure that specifies the work area rectangle of the display monitor that can be used by applications, expressed in virtual-screen coordinates. Windows uses this rectangle to maximize an application on the monitor. The rest of the area in rcMonitor contains system windows such as the task bar and side bars. Note that if the monitor is not the primary display monitor, some of the rectangle's coordinates may be negative values. The attributes of the display monitor. This member can be the following value: 1 : MONITORINFOF_PRIMARY A string that specifies the device name of the monitor being used. Most applications have no use for a display monitor name, and so can save some bytes by using a MONITORINFO structure. The x-offset. The y-offset. The original rect. The adjusted rect. If the popup is open or not. Updates the size and the position of the popup. The adjusted point. Resets the offsets and original-rect. If the popup is open or not. Adjusts the mouse-coordinates when the popup is visible. The original point. The transformed point if needed, else the original point. Checks if the given point is inside the original-rect. The point. Returns true if the point is inside the original rect, else return false. Checks if the given point is inside the adjusted rect. The point. Returns true if the point is inside the adjusted rect, else return false. The RECT structure defines the coordinates of the upper-left and lower-right corners of a rectangle. By convention, the right and bottom edges of the rectangle are normally considered exclusive. In other words, the pixel whose coordinates are ( right, bottom ) lies immediately outside of the the rectangle. For example, when RECT is passed to the FillRect function, the rectangle is filled up to, but not including, the right column and bottom row of pixels. This structure is identical to the RECTL structure. The x-coordinate of the upper-left corner of the rectangle. The y-coordinate of the upper-left corner of the rectangle. The x-coordinate of the lower-right corner of the rectangle. The y-coordinate of the lower-right corner of the rectangle. Enumeration for virtual keys taken from http://www.pinvoke.net/default.aspx/Enums/VirtualKeys.html Internal WpfExtension methods - unlikely you'd need to use these, they're left public on the off chance you do. Gets the modifiers. The instance containing the event data. CefEventFlags. Gets the modifiers. The instance containing the event data. CefEventFlags. Gets keyboard modifiers. CefEventFlags. Gets the modifiers. The instance containing the event data. CefEventFlags. Gets the drag data wrapper. The instance containing the event data. CefDragDataWrapper. Gets the link. The data. System.String. Reads a URL using a particular text encoding from drag-and-drop data. The drag-and-drop data. The data format name of the URL type. The text encoding of the URL type. A URL, or if does not contain a URL of the correct type. The owner browser instance The source hook The source The owner browser instance WindowProc callback interceptor. Handles Windows messages intended for the source hWnd, and passes them to the contained browser as needed. The source handle. The message. Additional message info. Even more message info. if set to true, the event has already been handled by someone else. IntPtr. Implement this interface to handle Offscreen Rendering (OSR). NOTE: Currently only OnPaint is implemented, at some point expand the API to include all of CefRenderHandler methods http://magpcss.org/ceforum/apidocs3/projects/(default)/CefRenderHandler.html Called when an element has been rendered to the shared texture handle. This method is only called when is set to true The underlying implementation uses a pool to deliver frames. As a result, the handle may differ every frame depending on how many frames are in-progress. The handle's resource cannot be cached and cannot be accessed outside of this callback. It should be reopened each time this callback is executed and the contents should be copied to a texture owned by the client application. The contents of acceleratedPaintInfo will be released back to the pool after this callback returns. indicates whether the element is the view or the popup widget. contains the set of rectangles in pixel coordinates that need to be repainted contains the shared handle; on Windows it is a HANDLE to a texture that can be opened with D3D11 OpenSharedResource. Called when an element should be painted. (Invoked from CefRenderHandler.OnPaint) This method is only called when is set to false. indicates whether the element is the view or the popup widget. contains the set of rectangles in pixel coordinates that need to be repainted The bitmap will be will be width * height *4 bytes in size and represents a BGRA image with an upper-left origin width height image used as parent for rendered bitmap Implement this interface to control how keys are forwarded to the browser WPF specific implementation, has reference to some of the commands and properties the exposes. Navigates to the previous page in the browser history. Will automatically be enabled/disabled depending on the browser state. The back command. Navigates to the next page in the browser history. Will automatically be enabled/disabled depending on the browser state. The forward command. Reloads the content of the current page. Will automatically be enabled/disabled depending on the browser state. The reload command. Prints the current browser contents. The print command. Increases the zoom level. The zoom in command. Decreases the zoom level. The zoom out command. Resets the zoom level to the default. (100%) The zoom reset command. Opens up a new program window (using the default text editor) where the source code of the currently displayed web page is shown. The view source command. Command which cleans up the Resources used by the ChromiumWebBrowser The cleanup command. Stops loading the current page. The stop command. Cut selected text to the clipboard. The cut command. Copy selected text to the clipboard. The copy command. Paste text from the clipboard. The paste command. Select all text. The select all command. Undo last action. The undo command. Redo last action. The redo command. Toggles the audio mute for the current browser. Gets the associated with this instance. The dispatcher. The zoom level at which the browser control is currently displaying. Can be set to 0 to clear the zoom level (resets to default zoom level). The zoom level. The increment at which the property will be incremented/decremented. The zoom level increment. The title of the web page being currently displayed. The title. This property is implemented as a Dependency Property and fully supports data binding. Raised every time is called. You can access the underlying buffer, though it's preferable to either override or implement your own as there is no outwardly accessible locking (locking is done within the default implementations). It's important to note this event is fired on a CEF UI thread, which by default is not the same as your application UI thread Raised every time is called. It's important to note this event is fired on a CEF UI thread, which by default is not the same as your application UI thread Event arguments for the Paint event handler. Is the OnPaint call for a Popup or the Main View contains the set of rectangles in pixel coordinates that need to be repainted Pointer to the unmanaged buffer that holds the bitmap. The buffer shouldn't be accessed outside the scope of event. A copy should be taken as the buffer is reused internally and may potentialy be freed. The bitmap will be width * height * 4 bytes in size and represents a BGRA image with an upper-left origin Width Height Gets or sets a value indicating whether the event is handled. Initializes a new instance of the class. is popup direct rectangle buffer width height Implements the basics of a The value for disposal, if it's 1 (one) then this instance is either disposed or in the process of getting disposed Gets a value indicating whether this instance is disposed. if this instance is disposed; otherwise, . Releases all resources used by the object Releases unmanaged and - optionally - managed resources for the to release both managed and unmanaged resources; to release only unmanaged resources. Called when an element should be painted. (Invoked from CefRenderHandler.OnPaint) This method is only called when is set to false. indicates whether the element is the view or the popup widget. contains the set of rectangles in pixel coordinates that need to be repainted The bitmap will be will be width * height *4 bytes in size and represents a BGRA image with an upper-left origin width height image used as parent for rendered bitmap AllocHGlobalWritableBitmapRenderHandler - creates/updates an WritableBitmap Uses to allocate memory for double buffering when the size matches or creates a new WritableBitmap when required. The value for disposal, if it's 1 (one) then this instance is either disposed or in the process of getting disposed Initializes a new instance of the class. The dpi x. The dpi y. if true then only the direct rectangle will be updated, otherwise the whole bitmap will be redrawn priority at which the bitmap will be updated on the UI thread Gets a value indicating whether this instance is disposed. if this instance is disposed; otherwise, . Releases all resources used by the object Releases unmanaged and - optionally - managed resources for the to release both managed and unmanaged resources; to release only unmanaged resources. Details of the bitmap to be rendered DirectWritableBitmapRenderHandler - directly copyies the buffer into writeableBitmap.BackBuffer. No additional copies or locking are used. Can only be used when CEF UI thread and WPF UI thread are the same (MultiThreadedMessageLoop = false) Initializes a new instance of the class. The dpi x. The dpi y. if true then only the direct rectangle will be updated, otherwise the whole bitmap will be redrawn priority at which the bitmap will be updated on the UI thread ByteArrayWritableBitmapRenderHandler - creates/updates an WritableBitmap For each OnPaint call a new byte[] is created and then updated. No locking is performed and memory is allocated for every OnPaint call, so will be very expensive memory wise. Initializes a new instance of the class. The dpi x. The dpi y. if true then only the direct rectangle will be updated, otherwise the whole bitmap will be redrawn priority at which the bitmap will be updated on the UI thread RenderHandler implemenetation that updates the image/bitmap in the event. Initially based on https://github.com/cefsharp/CefSharp/issues/2888#issuecomment-528864931 Default constructor ChromiumWebBrowser instance DPI X DPI Y Details of the bitmap to be rendered InteropBitmapRenderHandler - creates/updates an InteropBitmap Uses a MemoryMappedFile for double buffering when the size matches or creates a new InteropBitmap when required Initializes a new instance of the class. priority at which the bitmap will be updated on the UI thread WritableBitmapRenderHandler - creates/updates an WritableBitmap Uses a MemoryMappedFile for double buffering when the size matches or creates a new WritableBitmap when required Initializes a new instance of the class. The dpi x. The dpi y. if true then only the direct rectangle will be updated, otherwise the whole bitmap will be redrawn priority at which the bitmap will be updated on the UI thread When true if the Dirty Rect (rectangle that's to be updated) is smaller than the full width/height then only copy the Dirty Rect from the CEF native buffer to our own managed buffer. Set to true to improve performance when only a small portion of the screen is updated. Defaults to false currently. Event arguments for the VirtualKeyboardRequested Event. Input mode of a virtual keyboard. When the keyboard should be hidden Browser Initializes a new instance of the class. browser input mode Windows Message Enums Gratiosly based on http://www.pinvoke.net/default.aspx/Enums/WindowsMessages.html The WM_KEYDOWN message is posted to the window with the keyboard focus when a nonsystem key is pressed. A nonsystem key is a key that is pressed when the ALT key is not pressed. The WM_KEYUP message is posted to the window with the keyboard focus when a nonsystem key is released. A nonsystem key is a key that is pressed when the ALT key is not pressed, or a keyboard key that is pressed when a window has the keyboard focus. The WM_CHAR message is posted to the window with the keyboard focus when a WM_KEYDOWN message is translated by the TranslateMessage function. The WM_CHAR message contains the character code of the key that was pressed. The WM_SYSKEYDOWN message is posted to the window with the keyboard focus when the user presses the F10 key (which activates the menu bar) or holds down the ALT key and then presses another key. It also occurs when no window currently has the keyboard focus; in this case, the WM_SYSKEYDOWN message is sent to the active window. The window that receives the message can distinguish between these two contexts by checking the context code in the lParam parameter. The WM_SYSKEYUP message is posted to the window with the keyboard focus when the user releases a key that was pressed while the ALT key was held down. It also occurs when no window currently has the keyboard focus; in this case, the WM_SYSKEYUP message is sent to the active window. The window that receives the message can distinguish between these two contexts by checking the context code in the lParam parameter. The WM_SYSCHAR message is posted to the window with the keyboard focus when a WM_SYSKEYDOWN message is translated by the TranslateMessage function. It specifies the character code of a system character key that is, a character key that is pressed while the ALT key is down. Sent to an application when the IME gets a character of the conversion result. A window receives this message through its WindowProc function. Sent immediately before the IME generates the composition string as a result of a keystroke. A window receives this message through its WindowProc function. Sent to an application when the IME ends composition. A window receives this message through its WindowProc function. Sent to an application when the IME changes composition status as a result of a keystroke. A window receives this message through its WindowProc function. Sent to an application when a window is activated. A window receives this message through its WindowProc function.