static bool CanReuseProcess( this IBrowserProcess process, Interface.BrowserProcessConfig browserProcessConfig = null) { try { if (null == process) { return(false); } if (null != browserProcessConfig) { if (process?.Config?.ConfigMatchForReuse(browserProcessConfig) ?? false) { return(false); } } { var Connection = process?.ReuseConnection()?.Result; if (null != Connection) { return(true); } } var SetBrowserId = process?.GetBrowsersIds(); if (SetBrowserId.Failed()) { return(false); } foreach (var BrowserId in (SetBrowserId?.Result).EmptyIfNull()) { if (!(BrowserId?.ConnectionOffered ?? false)) { continue; } using (var Connection = process?.OpenConnection(BrowserId)?.Result) { if (Connection?.IsOpen ?? false) { return(true); } } } } catch { } return(false); }
static public IResultOrError <IBrowserProcess> ReuseOrCreateProcess( this IApp app, Interface.BrowserProcessConfig browserProcessConfig = null) { var Process = app?.ReuseProcess(browserProcessConfig); if (!(Process?.Result).CanReuseProcess(browserProcessConfig)) { Process?.Result?.Kill(); Process = app?.CreateProcess(browserProcessConfig); } return(Process); }
static public Interface.BrowserProcessConfig BrowserProcessConfigDefaultCreate( Interface.BrowserProcessConfig @default, string userDataDir) { @default = @default ?? new Interface.BrowserProcessConfig(); @default.UserDataDir = userDataDir; @default.ChromeExePath = @default.ChromeExePath ?? WindowsGoogleChromeStatic.ChromeExePathFromSystem; if ([email protected] && [email protected]) { @default.AddressTcpRangeBoundA = ExeConfig.RemoteControlAddressTcpDefaultBoundA; } return(@default); }