public BrowserProcessConfig CombinedConfig(BrowserProcessConfig fromScriptConfig) { var ConfigDefault = CallbackGetBrowserProcessConfigDefault?.Invoke(); fromScriptConfig = fromScriptConfig ?? ConfigDefault ?? new BrowserProcessConfig(); fromScriptConfig.ChromeExePath = IfEmptyReplaceWith(fromScriptConfig.ChromeExePath, ConfigDefault?.ChromeExePath); fromScriptConfig.UserDataDir = IfEmptyReplaceWith(fromScriptConfig.UserDataDir, ConfigDefault?.UserDataDir); fromScriptConfig.AddressTcpRangeBoundA = fromScriptConfig.AddressTcpRangeBoundA ?? ConfigDefault?.AddressTcpRangeBoundA; fromScriptConfig.AddressTcpRangeBoundB = fromScriptConfig.AddressTcpRangeBoundB ?? ConfigDefault?.AddressTcpRangeBoundB; return(fromScriptConfig); }
public IResultOrError <IBrowserProcess> GetProcessForScript( BrowserProcessConfig fromScriptConfig, Func <BrowserProcessConfig, IResultOrError <IBrowserProcess> > callbackProcessFromConfig) { var Config = CombinedConfig(fromScriptConfig); if (!(0 < Config?.ChromeExePath?.Length)) { throw new ArgumentException("no path to chrome.exe supplied.", "ChromeExePath"); } var Process = callbackProcessFromConfig(Config); var BeginTime = Bib3.Glob.StopwatchZaitMiliSictInt(); if (Process.Failed()) { return(Process); } for (;;) { System.Threading.Thread.Sleep(111); var Duration = Bib3.Glob.StopwatchZaitMiliSictInt() - BeginTime; if (GetProcessForScriptDelayMax < Duration) { break; } try { var BrowsersIds = Process?.Result?.GetBrowsersIds(); if (!(BrowsersIds?.Result).IsNullOrEmpty()) { break; // connection to process is already possible. } } catch { } } return(Process); }
public BrowserProcessCreation( IApp browserServiceInterface, BrowserProcessConfig browserProcessConfig, string url = null) { try { if (null == browserServiceInterface) { throw new NullReferenceException("Browser service interface not available."); } BrowserProcessOrError = browserServiceInterface.ReuseOrCreateProcess(browserProcessConfig); Thread.Sleep(1444); BrowserProcessErrorMessage = BrowserProcessOrError?.Error?.Message; BrowserProcess = BrowserProcessOrError?.Result; BrowserConnectionOrError = BrowserProcess?.ReuseOrOpenConnection(); BrowserConnectionErrorMessage = BrowserConnectionOrError?.Error?.Message; BrowserConnection = BrowserConnectionOrError?.Result; if (null != BrowserConnection && 0 < url?.Length) { Thread.Sleep(444); BrowserConnection.Document.Result.locationHref = url; } BrowserAddressTcp = BrowserConnection?.BrowserAddressTcp; } catch (Exception Exception) { this.Exception = Exception; } }
public IResultOrError <IBrowserProcess> CreateProcess(BrowserProcessConfig fromScriptConfig) => GetProcessForScript(fromScriptConfig, Base.CreateProcess);