public override void OnBrowserCreated(CefBrowserWrapper browser) { browsers.Add(browser); if (parentBrowserId == null) { parentBrowserId = browser.BrowserId; } if (ParentProcessId == null || parentBrowserId == null) { return; } var browserId = browser.IsPopup ? parentBrowserId.Value : browser.BrowserId; var serviceName = RenderprocessClientFactory.GetServiceName(ParentProcessId.Value, browserId); var binding = BrowserProcessServiceHost.CreateBinding(); var channelFactory = new DuplexChannelFactory <IBrowserProcess>( this, binding, new EndpointAddress(serviceName) ); channelFactory.Open(); var browserProcess = channelFactory.CreateChannel(); var clientChannel = ((IClientChannel)browserProcess); try { clientChannel.Open(); if (!browser.IsPopup) { browserProcess.Connect(); } var javascriptObject = browserProcess.GetRegisteredJavascriptObjects(); if (javascriptObject.MemberObjects.Count > 0) { browser.JavascriptRootObject = javascriptObject; } browser.ChannelFactory = channelFactory; browser.BrowserProcess = browserProcess; } catch (Exception) { } }
public BrowserProcessServiceHost(JavascriptObjectRepository javascriptObjectRepository, int parentProcessId, int browserId, IJavascriptCallbackFactory callbackFactory) : base(typeof(BrowserProcessService), new Uri[0]) { JavascriptObjectRepository = javascriptObjectRepository; var serviceName = RenderprocessClientFactory.GetServiceName(parentProcessId, browserId); Description.ApplyServiceBehavior(() => new ServiceDebugBehavior(), p => p.IncludeExceptionDetailInFaults = true); var binding = CreateBinding(); var endPoint = AddServiceEndpoint( typeof(IBrowserProcess), binding, new Uri(serviceName) ); endPoint.Contract.ProtectionLevel = ProtectionLevel.None; endPoint.Behaviors.Add(new JavascriptCallbackEndpointBehavior(callbackFactory)); }
public override void OnBrowserCreated(CefBrowserWrapper browser) { browsers.Add(browser); if (parentBrowserId == null) { parentBrowserId = browser.BrowserId; } if (ParentProcessId == null || parentBrowserId == null) { return; } var browserId = browser.IsPopup ? parentBrowserId.Value : browser.BrowserId; var serviceName = RenderprocessClientFactory.GetServiceName(ParentProcessId.Value, browserId); var binding = BrowserProcessServiceHost.CreateBinding(); var channelFactory = new ChannelFactory <IBrowserProcess>( binding, new EndpointAddress(serviceName) ); channelFactory.Open(); var browserProcess = channelFactory.CreateChannel(); var clientChannel = ((IClientChannel)browserProcess); try { clientChannel.Open(); browser.ChannelFactory = channelFactory; browser.BrowserProcess = browserProcess; } catch (Exception) { } }