protected override void ExecuteInTargetProcess(RemoteConnection connection) { var self = (CfrRenderProcessHandler)System.Runtime.InteropServices.GCHandle.FromIntPtr(gcHandlePtr).Target; if (self == null || self.CallbacksDisabled) { return; } var e = new CfrOnBrowserCreatedEventArgs(this); self.m_OnBrowserCreated?.Invoke(self, e); e.m_isInvalid = true; browser_release = e.m_browser_wrapped == null? 1 : 0; }
protected override void RemoteProcedure() { var self = (CfrRenderProcessHandler)System.Runtime.InteropServices.GCHandle.FromIntPtr(gcHandlePtr).Target; if (self == null || self.CallbacksDisabled) { return; } var e = new CfrOnBrowserCreatedEventArgs(this); e.connection = CfxRemoteCallContext.CurrentContext.connection; self.m_OnBrowserCreated?.Invoke(self, e); e.connection = null; browser_release = e.m_browser_wrapped == null? 1 : 0; }
void RenderProcessHandler_OnBrowserCreated(object sender, CfrOnBrowserCreatedEventArgs e) { var id = e.Browser.Identifier; var wb = HtmlUILauncher.GetBrowser(id); if (wb != null) { var rp = wb.RemoteProcess; if (rp != null && rp != this.remoteProcess) { // A new process has been created for the browser. // The old process is still alive, but probably it gets // killed soon after this callback returns. // So we suspend all callbacks from the old process. // If there are currently executing callbacks, // this call will block until they are finished. // When this call returns, it should be safe to // continue execution and let the old process die. CfxRemoteCallbackManager.SuspendCallbacks(rp.RemoteProcessId); } wb.SetRemoteBrowser(e.Browser, remoteProcess); } }
private void RenderProcessHandler_OnBrowserCreated(object sender, CfrOnBrowserCreatedEventArgs e) { OnNewBrowser?.Invoke(e); }