Exemplo n.º 1
0
        public App(RenderDelegate appDelegate)
            : base(typeof (CefApp))
        {
            _delegate = appDelegate;
            _browserProcessHandler = new BrowserProcessHandler(appDelegate);
            _renderProcessHandler = new RenderProcessHandler(appDelegate);
            _resourceBundleHandler = new ResourceBundleHandler(appDelegate);

            _getResourceBundleHandlerCallback = OnGetResourceBundleHandler;
            _getRenderProcessHandlerCallback = GetRenderProcessHandler;
            _getBrowserProcessHandlerCallback = OnGetBrowserProcessHandler;

            _beforeCommandLineProcessingCallback = OnBeforeCommandLineProcessing;
            _registerCustomSchemeCallback = OnRegisterCustomScheme;

            MarshalToNative(new CefApp {
                Base = DedicatedBase,
                OnBeforeCommandLineProcessing =
                    Marshal.GetFunctionPointerForDelegate(_beforeCommandLineProcessingCallback),
                CefCallbackGetRenderProcessHandler =
                    Marshal.GetFunctionPointerForDelegate(_getRenderProcessHandlerCallback),
                OnRegisterCustomSchemes =
                    Marshal.GetFunctionPointerForDelegate(_registerCustomSchemeCallback),
                CefCallbackGetBrowserProcessHandler =
                    Marshal.GetFunctionPointerForDelegate(_getBrowserProcessHandlerCallback),
                CefCallbackGetResourceBundleHandler =
                    Marshal.GetFunctionPointerForDelegate(_getResourceBundleHandlerCallback)
            });
        }
        internal int RenderProcessStartup()
        {
            var remoteProcessId = CfxRemoteCallContext.CurrentContext.ProcessId;

            _CfrApp = new CfrApp();
            _RenderProcessHandler             = new RenderProcessHandler(_CfrApp, remoteProcessId);
            _RenderProcessHandler.OnNewFrame += (e) =>
            {
                _TaskContextCreatedEventArgs.TrySetResult(new ChromiumFxWebView(e.Browser, Logger));
            };
            _CfrApp.GetRenderProcessHandler += (s, e) =>
            {
                try
                {
                    e.SetReturnValue(_RenderProcessHandler);
                }
                catch (Exception ex)
                {
                    Logger?.Error($"Exception raised during GetRenderProcessHandler SetReturnValue {ex.Message}, loading task is {_TaskContextCreatedEventArgs.Task.Status}");
                    throw;
                }
            };

            return(CfrRuntime.ExecuteProcess(_CfrApp));
        }
Exemplo n.º 3
0
 private RenderProcess()
 {
     RemoteProcessId = CfxRemoteCallContext.CurrentContext.ProcessId;
     app = new CfrApp();
     processHandler = new RenderProcessHandler(this);
     app.GetRenderProcessHandler += (s, e) => e.SetReturnValue(processHandler);
 }