/// <summary> /// Initializes a new instance of the <see cref="CefGlueCustomHandlers"/> class. /// </summary> /// <param name="handlers"> /// The client params. /// </param> public CefGlueClient(CefGlueBrowser browser, CefMessageRouterBrowserSide browserMessageRouter, CefGlueCustomHandlers handlers) { CoreBrowser = browser; _browserMessageRouter = browserMessageRouter; _lifeSpanHandler = handlers.LifeSpanHandler; _loadHandler = handlers.LoadHandler; _requestHandler = handlers.RequestHandler; _displayHandler = handlers.DisplayHandler; _contextMenuHandler = handlers.ContextMenuHandler; _focusHandler = handlers.FocusHandler; _keyboardHandler = handlers.KeyboardHandler; _jsDialogHandler = handlers.JsDialogHandler; _dialogHandler = handlers.DialogHandler; _dragHandler = handlers.DragHandler; _downloadHandler = handlers.DownloadHandler; _findHandler = handlers.FindHandler; }
/// <summary> /// The set event handlers. /// </summary> /// <param name="browser"> /// The browser. /// </param> public static void SetEventHandlers(this CefGlueBrowser browser, IChromelyContainer container) { try { foreach (var enumKey in CefEventHandlerTypes.GetAllEventHandlerKeys()) { object instance = null; var service = CefEventHandlerTypes.GetHandlerType(enumKey); var keyStr = enumKey.EnumToString(); try { if (container.IsRegistered(service, keyStr)) { instance = container.GetInstance(service, keyStr); } } catch (Exception exception) { Logger.Instance.Log.Error(exception); } switch (enumKey) { case CefEventKey.None: break; case CefEventKey.FrameLoadStart: if (instance is ChromelyEventHandler <FrameLoadStartEventArgs> frameLoadStart) { browser.FrameLoadStart += frameLoadStart.Handler; } break; case CefEventKey.AddressChanged: if (instance is ChromelyEventHandler <AddressChangedEventArgs> addressChanged) { browser.AddressChanged += addressChanged.Handler; } break; case CefEventKey.TitleChanged: if (instance is ChromelyEventHandler <TitleChangedEventArgs> titleChanged) { browser.TitleChanged += titleChanged.Handler; } break; case CefEventKey.FrameLoadEnd: if (instance is ChromelyEventHandler <FrameLoadEndEventArgs> frameLoadEnd) { browser.FrameLoadEnd += frameLoadEnd.Handler; } break; case CefEventKey.LoadingStateChanged: if (instance is ChromelyEventHandler <LoadingStateChangedEventArgs> loadingStateChanged) { browser.LoadingStateChanged += loadingStateChanged.Handler; } break; case CefEventKey.ConsoleMessage: if (instance is ChromelyEventHandler <ConsoleMessageEventArgs> consoleMessage) { browser.ConsoleMessage += consoleMessage.Handler; } break; case CefEventKey.StatusMessage: if (instance is ChromelyEventHandler <StatusMessageEventArgs> statusMessage) { browser.StatusMessage += statusMessage.Handler; } break; case CefEventKey.LoadError: if (instance is ChromelyEventHandler <LoadErrorEventArgs> loadError) { browser.LoadError += loadError.Handler; } break; case CefEventKey.TooltipChanged: if (instance is ChromelyEventHandler <TooltipEventArgs> tooltipChanged) { browser.TooltipChanged += tooltipChanged.Handler; } break; case CefEventKey.BeforeClose: if (instance is ChromelyEventHandler <BeforeCloseEventArgs> beforeClose) { browser.BeforeClose += beforeClose.Handler; } break; case CefEventKey.BeforePopup: if (instance is ChromelyEventHandler <BeforePopupEventArgs> beforePopup) { browser.BeforePopup += beforePopup.Handler; } break; case CefEventKey.PluginCrashed: if (instance is ChromelyEventHandler <PluginCrashedEventArgs> pluginCrashed) { browser.PluginCrashed += pluginCrashed.Handler; } break; case CefEventKey.RenderProcessTerminated: if (instance is ChromelyEventHandler <RenderProcessTerminatedEventArgs> renderProcessTerminated) { browser.RenderProcessTerminated += renderProcessTerminated.Handler; } break; } } } catch (Exception exception) { Logger.Instance.Log.Error(exception); } }
/// <summary> /// The create. /// </summary> /// <param name="browser"> /// The browser. /// </param> /// <returns> /// The <see cref="CefGlueClientParams"/>. /// </returns> public static CefGlueClientParams Create(CefGlueBrowser browser) { var clientParams = new CefGlueClientParams { Browser = browser }; try { foreach (var enumKey in CefCustomHandlerFakeTypes.GetAllCustomHandlerKeys()) { object instance = null; var service = CefCustomHandlerFakeTypes.GetHandlerType(enumKey); var keyStr = enumKey.EnumToString(); try { if (IoC.IsRegistered(service, keyStr)) { instance = IoC.GetInstance(service, keyStr); } } catch (Exception exception) { Log.Error(exception); } switch (enumKey) { case CefHandlerKey.LifeSpanHandler: if (instance is CefLifeSpanHandler spanHandler) { clientParams.LifeSpanHandler = spanHandler; } else { clientParams.LifeSpanHandler = new CefGlueLifeSpanHandler(); } break; case CefHandlerKey.LoadHandler: if (instance is CefLoadHandler loadHandler) { clientParams.LoadHandler = loadHandler; } else { clientParams.LoadHandler = new CefGlueLoadHandler(); } break; case CefHandlerKey.RequestHandler: if (instance is CefRequestHandler requestHandler) { clientParams.RequestHandler = requestHandler; } else { clientParams.RequestHandler = new CefGlueRequestHandler(); } break; case CefHandlerKey.DisplayHandler: if (instance is CefDisplayHandler displayHandler) { clientParams.DisplayHandler = displayHandler; } else { clientParams.DisplayHandler = new CefGlueDisplayHandler(); } break; case CefHandlerKey.ContextMenuHandler: if (instance is CefContextMenuHandler menuHandler) { clientParams.ContextMenuHandler = menuHandler; } else { clientParams.ContextMenuHandler = new CefGlueContextMenuHandler(); } break; case CefHandlerKey.FocusHandler: if (instance is CefFocusHandler focusHandler) { clientParams.FocusHandler = focusHandler; } break; case CefHandlerKey.KeyboardHandler: if (instance is CefKeyboardHandler keyboardHandler) { clientParams.KeyboardHandler = keyboardHandler; } break; case CefHandlerKey.JsDialogHandler: if (instance is CefJSDialogHandler jsDialogHandler) { clientParams.JsDialogHandler = jsDialogHandler; } break; case CefHandlerKey.DialogHandler: if (instance is CefDialogHandler dialogHandler) { clientParams.DialogHandler = dialogHandler; } break; case CefHandlerKey.DragHandler: if (instance is CefDragHandler dragHandler) { clientParams.DragHandler = dragHandler; } break; case CefHandlerKey.DownloadHandler: if (instance is CefDownloadHandler downloadHandler) { clientParams.DownloadHandler = downloadHandler; } break; case CefHandlerKey.FindHandler: if (instance is CefFindHandler handler) { clientParams.FindHandler = handler; } break; } } } catch (Exception exception) { Log.Error(exception); } return(clientParams); }
public static CefGlueCustomHandlers Parse(IChromelyContainer container, IChromelyConfiguration config, IChromelyCommandTaskRunner commandTaskRunner, CefGlueBrowser browser) { var handlers = new CefGlueCustomHandlers(); try { // Set default handlers handlers.LifeSpanHandler = new CefGlueLifeSpanHandler(config, commandTaskRunner, browser); handlers.LoadHandler = new CefGlueLoadHandler(config, browser); handlers.RequestHandler = new CefGlueRequestHandler(config, commandTaskRunner, browser); handlers.DisplayHandler = new CefGlueDisplayHandler(config, browser); handlers.ContextMenuHandler = new CefGlueContextMenuHandler(config); // Update custom handlers var customHandlers = container.GetAllInstances(typeof(IChromelyCustomHandler)); if (customHandlers != null && customHandlers.Any()) { foreach (var handler in customHandlers) { if (handler is CefLifeSpanHandler spanHandler) { handlers.LifeSpanHandler = spanHandler; } if (handler is CefLoadHandler loadHandler) { handlers.LoadHandler = loadHandler; } if (handler is CefRequestHandler requestHandler) { handlers.RequestHandler = requestHandler; } if (handler is CefDisplayHandler displayHandler) { handlers.DisplayHandler = displayHandler; } if (handler is CefContextMenuHandler menuHandler) { handlers.ContextMenuHandler = menuHandler; } if (handler is CefFocusHandler focusHandler) { handlers.FocusHandler = focusHandler; } if (handler is CefKeyboardHandler keyboardHandler) { handlers.KeyboardHandler = keyboardHandler; } if (handler is CefJSDialogHandler jsDialogHandler) { handlers.JsDialogHandler = jsDialogHandler; } if (handler is CefDialogHandler dialogHandler) { handlers.DialogHandler = dialogHandler; } if (handler is CefDragHandler dragHandler) { handlers.DragHandler = dragHandler; } if (handler is CefDownloadHandler downloadHandler) { handlers.DownloadHandler = downloadHandler; } if (handler is CefFindHandler cefFinderhandler) { handlers.FindHandler = cefFinderhandler; } } } } catch (Exception exception) { Logger.Instance.Log.Error(exception); } return(handlers); }