示例#1
0
 /// <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);
            }
        }
示例#3
0
        /// <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);
        }