예제 #1
0
        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);
            }
        }
예제 #2
0
 /// <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();