private void ListenToContextMenuHandler(CfxContextMenuHandler contextMenuHandler) { contextMenuHandler.OnBeforeContextMenu += OnBeforeContextMenu; contextMenuHandler.OnContextMenuCommand += ContextMenuHandler_OnContextMenuCommand; }
public void Initialize() { Settings = new CfxBrowserSettings() { WindowlessFrameRate = InitSettings.Fps, Webgl = CfxState.Enabled, Plugins = CfxState.Enabled, ApplicationCache = CfxState.Enabled, Javascript = CfxState.Enabled, FileAccessFromFileUrls = CfxState.Enabled, UniversalAccessFromFileUrls = CfxState.Enabled, WebSecurity = CfxState.Disabled }; Globals.UpdateScripts(); TextureSize = (DefaultWidth, DefaultHeight); LifeSpanHandler = new CfxLifeSpanHandler(); LifeSpanHandler.OnAfterCreated += (sender, e) => { Browser = e.Browser; BrowserId = e.Browser.Identifier; Instances.UpdateGeneric(BrowserId, this); Browser.Host.WasResized(); _browserReadyFrame = true; //_invalidate = true; }; LifeSpanHandler.OnBeforePopup += (sender, e) => { if (BrowserSettings.AllowPopups) { Browser.MainFrame.LoadUrl(e.TargetUrl); e.SetReturnValue(true); } else { e.SetReturnValue(true); } }; RenderHandler = new CfxRenderHandler(); RenderHandler.GetViewRect += (sender, e) => { e.Rect.X = 0; e.Rect.Y = 0; e.Rect.Width = TextureSize.w; e.Rect.Height = TextureSize.h; e.SetReturnValue(true); }; RenderHandler.GetRootScreenRect += (sender, e) => { e.Rect.X = 0; e.Rect.Y = 0; e.Rect.Width = TextureSize.w; e.Rect.Height = TextureSize.h; e.SetReturnValue(true); }; //RenderHandler.OnPaint += (sender, args) => _paintFrame = true; RenderHandler.OnAcceleratedPaint += HandleAcceleratedRenderPaint; LoadHandler = new CfxLoadHandler(); LoadHandler.OnLoadStart += (sender, e) => { if (e.Browser.MainFrame.Url != _prevUrl) { IsDocumentReady = false; } _prevUrl = e.Browser.MainFrame.Url; }; LoadHandler.OnLoadError += (sender, e) => { LogError(e.ErrorCode.ToString() + Environment.NewLine + " " + e.ErrorText + Environment.NewLine + " " + e.FailedUrl); LastError = e.ErrorText; }; LoadHandler.OnLoadingStateChange += (sender, e) => CurrentUrl = Browser.MainFrame.Url; RequestHandler = new CfxRequestHandler(); RequestHandler.CanGetCookies += (sender, args) => { args.SetReturnValue(BrowserSettings.AllowGetCookies); }; RequestHandler.CanSetCookie += (sender, args) => { args.SetReturnValue(BrowserSettings.AllowSetCookies); }; RequestHandler.OnBeforeBrowse += HandleOnBeforeBrowse; RequestHandler.OnBeforeResourceLoad += HandleBeforeResourceLoad; RequestHandler.OnCertificateError += (sender, e) => LogError("Cert error: " + e.CertError.ToString()); RequestHandler.OnPluginCrashed += (sender, e) => LogError("Plugin Crashed: " + e.PluginPath); RequestHandler.OnRenderProcessTerminated += (sender, e) => LogError("Render Process Terminated: " + e.Status.ToString()); ContextMenuHandler = new CfxContextMenuHandler(); ContextMenuHandler.OnBeforeContextMenu += (sender, args) => args.Model.Clear(); DisplayHandler = new CfxDisplayHandler(); DisplayHandler.OnConsoleMessage += HandleConsoleMessage; DisplayHandler.OnLoadingProgressChange += (sender, args) => Progress = args.Progress; Client = new CfxClient(); Client.GetLifeSpanHandler += (sender, e) => e.SetReturnValue(LifeSpanHandler); Client.GetRenderHandler += (sender, e) => e.SetReturnValue(RenderHandler); Client.GetLoadHandler += (sender, e) => e.SetReturnValue(LoadHandler); Client.GetRequestHandler += (sender, e) => e.SetReturnValue(RequestHandler); Client.GetDisplayHandler += (sender, e) => e.SetReturnValue(DisplayHandler); Client.GetContextMenuHandler += (sender, args) => args.SetReturnValue(ContextMenuHandler); Visitor = new CfxStringVisitor(); Visitor.Visit += (sender, e) => { RootElement = HtmlToXElement(e.String); Dom = new XDocument(RootElement); }; CreateBrowser(); //_invalidate = true; }