private IEngine CreateEngine() { string[] arguments = Environment.GetCommandLineArgs(); RenderingMode = RenderingMode.HardwareAccelerated; if (arguments.FirstOrDefault(arg => arg.ToLower().Contains("lightweight")) != null) { RenderingMode = RenderingMode.OffScreen; } if (arguments.FirstOrDefault(arg => arg.ToLower().Contains("enable-file-log")) != null) { LoggerProvider.Instance.Level = SourceLevels.Verbose; LoggerProvider.Instance.FileLoggingEnabled = true; string logFile = $"DotNetBrowser-WinForms-{Guid.NewGuid()}.log"; LoggerProvider.Instance.OutputFile = Path.GetFullPath(logFile); } try { IEngine engine = EngineFactory.Create(new EngineOptions.Builder { RenderingMode = RenderingMode, Schemes = { { Scheme.Http, new WinFormsInterceptRequestHandler() } } }.Build()); engine.Network.AuthenticateHandler = new DefaultAuthenticationHandler(this); engine.Permissions.RequestPermissionHandler = new Handler <RequestPermissionParameters, RequestPermissionResponse>(p => RequestPermissionResponse.Grant()); engine.Disposed += (sender, args) => { if (args.ExitCode != 0) { string message = $"The Chromium engine exit code was {args.ExitCode:x8}"; Trace.WriteLine(message); MessageBox.Show(message, "DotNetBrowser Warning", MessageBoxButtons.OK, MessageBoxIcon.Warning); } }; return(engine); } catch (Exception e) { Trace.WriteLine(e); MessageBox.Show(e.Message, "DotNetBrowser Initialization Error", MessageBoxButtons.OK, MessageBoxIcon.Error); return(null); } }
/// <summary> /// Grants a permission to display notifications on the website. /// </summary> private static RequestPermissionResponse OnRequestPermission(RequestPermissionParameters arg) => arg.Type == PermissionType.Notifications ? RequestPermissionResponse.Grant() : RequestPermissionResponse.Deny();