示例#1
0
        protected override void OnCreate(ref CreateWindowPacket packet)
        {
            //For Windows 7 and above, best to include relevant app.manifest entries as well
            CefSharpGlobal.Cef.EnableHighDPISupport();

            var codeBase       = Assembly.GetExecutingAssembly().CodeBase;
            var localFolder    = Path.GetDirectoryName(new Uri(codeBase).LocalPath);
            var localesDirPath = Path.Combine(localFolder, "locales");

            var settings = new CefSharpGlobal.CefSettings
            {
                LocalesDirPath           = localesDirPath,
                Locale                   = HostConfig.CefLocale,
                MultiThreadedMessageLoop = true,
                CachePath                = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "CefSharp\\Cache"),
                LogSeverity              = (CefSharpGlobal.LogSeverity)HostConfig.CefLogSeverity,
                LogFile                  = HostConfig.CefLogFile
            };

            RegisterSchemeHandlers(settings);

            //Perform dependency check to make sure all relevant resources are in our output directory.
            CefSharpGlobal.Cef.Initialize(settings, performDependencyCheck: HostConfig.CefPerformDependencyCheck, browserProcessHandler: null);

            m_browser = new ChromiumWebBrowser(Handle, HostConfig.CefStartUrl);
            m_browser.IsBrowserInitializedChanged += IsBrowserInitializedChanged;
            m_browser.MenuHandler = new CefSharpContextMenuHandler();

            m_browser.RequestHandler = new CefSharpRequestHandler();
            RegisterJsHandlers();

            base.OnCreate(ref packet);

            Log.Info("Cef browser successfully created.");
        }
示例#2
0
        private void RegisterSchemeHandlers(CefSharpGlobal.CefSettings settings)
        {
            // Register scheme handlers
            IEnumerable <object> schemeHandlerObjs = IoC.GetAllInstances(typeof(ChromelySchemeHandler));

            if (schemeHandlerObjs != null)
            {
                var schemeHandlers = schemeHandlerObjs.ToList();

                foreach (var item in schemeHandlers)
                {
                    if (item is ChromelySchemeHandler)
                    {
                        ChromelySchemeHandler handler = (ChromelySchemeHandler)item;
                        settings.RegisterScheme(new CefSharpGlobal.CefCustomScheme
                        {
                            SchemeName           = handler.SchemeName,
                            DomainName           = handler.DomainName,
                            IsSecure             = handler.IsSecure,
                            IsCorsEnabled        = handler.IsCorsEnabled,
                            SchemeHandlerFactory = (CefSharpGlobal.ISchemeHandlerFactory)handler.HandlerFactory
                        });
                    }
                }
            }
        }
示例#3
0
 public CefSharpBrowserHost(ChromelyConfiguration hostConfig)
 {
     HostConfig        = hostConfig;
     m_browser         = null;
     m_settings        = new CefSharpGlobal.CefSettings();
     ServiceAssemblies = new List <Assembly>();
 }
示例#4
0
        /// <summary>
        /// The update command line args.
        /// </summary>
        /// <param name="cefSettings">
        /// The cef settings.
        /// </param>
        /// <param name="commandLineArgs">
        /// The command line args.
        /// </param>
        public static void UpdateCommandLineArgs(this CefSharpGlobal.CefSettings cefSettings, Dictionary <string, string> commandLineArgs)
        {
            if ((cefSettings == null) ||
                (commandLineArgs == null) ||
                (cefSettings.CefCommandLineArgs == null))
            {
                return;
            }

            foreach (var commandArg in commandLineArgs)
            {
                cefSettings.CefCommandLineArgs.Add(commandArg.Key, commandArg.Value);
            }
        }
        public void SettingsUpdateTest()
        {
            var hostConfig = this.GetConfigWithDefaultValues();
            var settings   = new CefSharpGlobal.CefSettings
            {
                Locale = hostConfig.Locale,
                MultiThreadedMessageLoop = false,
                LogSeverity = (CefSharpGlobal.LogSeverity)hostConfig.LogSeverity,
                LogFile     = hostConfig.LogFile
            };

            // Update configuration settings
            settings.Update(hostConfig.CustomSettings);

            Assert.True(settings.MultiThreadedMessageLoop);
            Assert.True(settings.ExternalMessagePump);
            Assert.True(settings.WindowlessRenderingEnabled);
            Assert.True(settings.CommandLineArgsDisabled);
            Assert.True(settings.PackLoadingDisabled);
            Assert.True(settings.IgnoreCertificateErrors);
            Assert.True(settings.FocusedNodeChangedEnabled);

            Assert.Equal(nameof(CefSettingKeys.BrowserSubprocessPath), settings.BrowserSubprocessPath);
            Assert.Equal(nameof(CefSettingKeys.CachePath), settings.CachePath);
            Assert.Equal(nameof(CefSettingKeys.UserDataPath), settings.UserDataPath);
            Assert.Equal(nameof(CefSettingKeys.UserAgent), settings.UserAgent);
            Assert.Equal(nameof(CefSettingKeys.ProductVersion), settings.ProductVersion);
            Assert.Equal(nameof(CefSettingKeys.Locale), settings.Locale);
            Assert.Equal(nameof(CefSettingKeys.LogFile), settings.LogFile);
            Assert.Equal(CefSharpGlobal.LogSeverity.Error, (CefSharpGlobal.LogSeverity)settings.LogSeverity);
            Assert.Equal(nameof(CefSettingKeys.JavaScriptFlags), settings.JavascriptFlags);
            Assert.Equal(nameof(CefSettingKeys.ResourcesDirPath), settings.ResourcesDirPath);
            Assert.Equal(nameof(CefSettingKeys.LocalesDirPath), settings.LocalesDirPath);
            Assert.Equal(nameof(CefSettingKeys.AcceptLanguageList), settings.AcceptLanguageList);

            Assert.Equal(1025, settings.RemoteDebuggingPort);
            Assert.Equal(1000, settings.UncaughtExceptionStackSize);
        }
示例#6
0
        public static void Update(this CefSharpGlobal.CefSettings cefSettings, Dictionary <string, object> customSettings)
        {
            if ((cefSettings == null) && (customSettings == null))
            {
                return;
            }

            foreach (var setting in customSettings)
            {
                bool   boolResult = false;
                int    intResult  = 0;
                string strResult  = string.Empty;

                switch (setting.Key)
                {
                // Not supported in CefSharp
                case CefSettingKeys.SingleProcess:
                case CefSettingKeys.NoSandbox:
                    break;

                case CefSettingKeys.BrowserSubprocessPath:
                    if (setting.Value.TryParseString(out strResult))
                    {
                        cefSettings.BrowserSubprocessPath = strResult;
                    }
                    break;

                case CefSettingKeys.MultiThreadedMessageLoop:
                    if (setting.Value.TryParseBoolean(out boolResult))
                    {
                        cefSettings.MultiThreadedMessageLoop = boolResult;
                    }
                    break;

                case CefSettingKeys.ExternalMessagePump:
                    if (setting.Value.TryParseBoolean(out boolResult))
                    {
                        cefSettings.ExternalMessagePump = boolResult;
                    }
                    break;

                case CefSettingKeys.WindowlessRenderingEnabled:
                    if (setting.Value.TryParseBoolean(out boolResult))
                    {
                        cefSettings.WindowlessRenderingEnabled = boolResult;
                    }
                    break;

                case CefSettingKeys.CommandLineArgsDisabled:
                    if (setting.Value.TryParseBoolean(out boolResult))
                    {
                        cefSettings.CommandLineArgsDisabled = boolResult;
                    }
                    break;

                case CefSettingKeys.CachePath:
                    if (setting.Value.TryParseString(out strResult))
                    {
                        cefSettings.CachePath = strResult;
                    }
                    break;

                case CefSettingKeys.UserDataPath:
                    if (setting.Value.TryParseString(out strResult))
                    {
                        cefSettings.UserDataPath = strResult;
                    }
                    break;

                case CefSettingKeys.PersistSessionCookies:
                    if (setting.Value.TryParseBoolean(out boolResult))
                    {
                        cefSettings.PersistSessionCookies = boolResult;
                    }
                    break;

                case CefSettingKeys.PersistUserPreferences:
                    if (setting.Value.TryParseBoolean(out boolResult))
                    {
                        cefSettings.PersistUserPreferences = boolResult;
                    }
                    break;

                case CefSettingKeys.UserAgent:
                    if (setting.Value.TryParseString(out strResult))
                    {
                        cefSettings.UserAgent = strResult;
                    }
                    break;

                case CefSettingKeys.ProductVersion:
                    if (setting.Value.TryParseString(out strResult))
                    {
                        cefSettings.ProductVersion = strResult;
                    }
                    break;

                case CefSettingKeys.Locale:
                    if (setting.Value.TryParseString(out strResult))
                    {
                        cefSettings.Locale = strResult;
                    }
                    break;

                case CefSettingKeys.LogFile:
                    if (setting.Value.TryParseString(out strResult))
                    {
                        cefSettings.LogFile = strResult;
                    }
                    break;

                case CefSettingKeys.LogSeverity:
                    if (setting.Value.TryParseInteger(out intResult))
                    {
                        cefSettings.LogSeverity = (CefSharpGlobal.LogSeverity)intResult;
                    }
                    break;

                case CefSettingKeys.JavaScriptFlags:
                    if (setting.Value.TryParseString(out strResult))
                    {
                        cefSettings.JavascriptFlags = strResult;
                    }
                    break;

                case CefSettingKeys.ResourcesDirPath:
                    if (setting.Value.TryParseString(out strResult))
                    {
                        cefSettings.ResourcesDirPath = strResult;
                    }
                    break;

                case CefSettingKeys.LocalesDirPath:
                    if (setting.Value.TryParseString(out strResult))
                    {
                        cefSettings.LocalesDirPath = strResult;
                    }
                    break;

                case CefSettingKeys.PackLoadingDisabled:
                    if (setting.Value.TryParseBoolean(out boolResult))
                    {
                        cefSettings.PackLoadingDisabled = boolResult;
                    }
                    break;

                case CefSettingKeys.RemoteDebuggingPort:
                    if (setting.Value.TryParseInteger(out intResult))
                    {
                        cefSettings.RemoteDebuggingPort = intResult;
                    }
                    break;

                case CefSettingKeys.UncaughtExceptionStackSize:
                    if (setting.Value.TryParseInteger(out intResult))
                    {
                        cefSettings.UncaughtExceptionStackSize = intResult;
                    }
                    break;

                case CefSettingKeys.IgnoreCertificateErrors:
                    if (setting.Value.TryParseBoolean(out boolResult))
                    {
                        cefSettings.IgnoreCertificateErrors = boolResult;
                    }
                    break;

                // Not supported by CefSharp
                case CefSettingKeys.EnableNetSecurityExpiration:
                    break;

                case CefSettingKeys.AcceptLanguageList:
                    if (setting.Value.TryParseString(out strResult))
                    {
                        cefSettings.AcceptLanguageList = strResult;
                    }
                    break;

                case CefSettingKeys.FocusedNodeChangedEnabled:
                    if (setting.Value.TryParseBoolean(out boolResult))
                    {
                        cefSettings.FocusedNodeChangedEnabled = boolResult;
                    }
                    break;
                }
            }
        }