Пример #1
0
        public virtual void Configure(IChromelyContainer container)
        {
            EnsureContainerValid(container);

            container.RegisterByTypeSingleton(typeof(IChromelyRequestTaskRunner), typeof(DefaultRequestTaskRunner));
            container.RegisterByTypeSingleton(typeof(IChromelyCommandTaskRunner), typeof(DefaultCommandTaskRunner));
        }
Пример #2
0
 public CefGlueApp(IChromelyContainer container, IChromelyConfiguration config)
 {
     _container             = container;
     _config                = config;
     _renderProcessHandler  = RenderProcessHandler;
     _browserProcessHandler = BrowserProcessHandler;
 }
Пример #3
0
        public override void RegisterEvents(IChromelyContainer container)
        {
            EnsureContainerValid(container);

            RegisterEventHandler(container, CefEventKey.FrameLoadEnd, new ChromelyEventHandler <FrameLoadEndEventArgs>(CefEventKey.FrameLoadEnd, Program.OnFrameLoaded));
            RegisterEventHandler(container, CefEventKey.BeforeClose, new ChromelyEventHandler <BeforeCloseEventArgs>(CefEventKey.BeforeClose, Program.OnBeforeClose));
        }
Пример #4
0
 protected void EnsureContainerValid(IChromelyContainer container)
 {
     if (container == null)
     {
         throw new Exception("Container cannot be null. Initialize method must be called first.");
     }
 }
Пример #5
0
 protected HostBase(IChromelyContainer container, IChromelyConfiguration config, IChromelyRequestTaskRunner requestTaskRunner, IChromelyCommandTaskRunner commandTaskRunner)
 {
     _container         = container;
     _config            = config;
     _requestTaskRunner = requestTaskRunner;
     _commandTaskRunner = commandTaskRunner;
 }
        /// <summary>
        /// The create methods.
        /// </summary>
        /// <param name="container">
        /// The container of <see cref="IChromelyContainer"/> object.
        /// </param>
        /// <returns>
        /// The <see cref="ChromelyConfiguration"/> object.
        /// </returns>
        public static ChromelyConfiguration Create(IChromelyContainer container = null)
        {
            if (container != null)
            {
                IoC.Container = container;
            }

            switch (ChromelyRuntime.Platform)
            {
            case ChromelyPlatform.MacOSX:
            //TODO: check and define requirements for Mac OS - for now use linux settings

            case ChromelyPlatform.Linux:
                return(Instance
                       .WithCustomSetting(CefSettingKeys.MultiThreadedMessageLoop, false)
                       .WithCustomSetting(CefSettingKeys.SingleProcess, true)
                       .WithCustomSetting(CefSettingKeys.NoSandbox, true)

                       .WithCommandLineArg("disable-extensions", "1")
                       .WithCommandLineArg("disable-gpu", "1")
                       .WithCommandLineArg("disable-gpu-compositing", "1")
                       .WithCommandLineArg("disable-smooth-scrolling", "1")
                       .WithCommandLineArg("no-sandbox", "1")
                       .WithCommandLineArg("no-zygote", "1"));

            case ChromelyPlatform.Windows:
                return(Instance);

            default:
                throw new PlatformNotSupportedException();
            }
        }
Пример #7
0
 private void RegisterControllers(IChromelyContainer container)
 {
     container.RegisterSingleton(typeof(ChromelyController), nameof(WindowController), typeof(WindowController));
     container.RegisterSingleton(typeof(ChromelyController), Guid.NewGuid().ToString(), typeof(DemoController));
     container.RegisterSingleton(typeof(ChromelyController), Guid.NewGuid().ToString(), typeof(ExecuteJavaScriptDemoController));
     container.RegisterSingleton(typeof(ChromelyController), Guid.NewGuid().ToString(), typeof(TmdbMoviesController));
     container.RegisterSingleton(typeof(ChromelyController), Guid.NewGuid().ToString(), typeof(TodoListController));
 }
Пример #8
0
 public override void Configure(IChromelyContainer container)
 {
     base.Configure(container);
     container.RegisterSingleton(typeof(ChromelyController), Guid.NewGuid().ToString(), typeof(DemoController));
     container.RegisterSingleton(typeof(ChromelyController), Guid.NewGuid().ToString(), typeof(ExecuteJavaScriptDemoController));
     container.RegisterSingleton(typeof(ChromelyController), Guid.NewGuid().ToString(), typeof(TmdbMoviesController));
     container.RegisterSingleton(typeof(ChromelyController), Guid.NewGuid().ToString(), typeof(TodoListController));
 }
Пример #9
0
        public override void Configure(IChromelyContainer container)
        {
            base.Configure(container);

            // Register controllers
            container.RegisterSingleton <ChromelyController, MbedController>(Guid.NewGuid().ToString());
            container.RegisterSingleton <ChromelyController, AnalysisController>(Guid.NewGuid().ToString());
            container.RegisterSingleton <ChromelyController, CalibrationController>(Guid.NewGuid().ToString());
        }
        public override void Configure(IChromelyContainer container)
        {
            base.Configure(container);
            base.Configuration.StartUrl = $"localhost:{WebApplication.Program.Port}";
#if DEBUG
#else
            base.Configuration.CefDownloadOptions.DownloadSilently = true;
#endif
        }
Пример #11
0
        public static ChromelyConfiguration Create(IChromelyContainer container = null)
        {
            if (container != null)
            {
                IoC.Container = container;
            }

            return(new ChromelyConfiguration());
        }
Пример #12
0
        private void RegisterEventHandler <TEventArgs>(
            IChromelyContainer container,
            CefEventKey key,
            Action <object, TEventArgs, IChromelyContainer> handler)
        {
            var service      = CefEventHandlerTypes.GetHandlerType(key);
            var eventHandler = new ChromelyEventHandler <TEventArgs>(key, (s, e) => handler(s, e, container));

            container.RegisterInstance(service, eventHandler.Key, eventHandler);
        }
Пример #13
0
 public static void RegisterCommnandRoutes(IChromelyContainer container, Dictionary <string, CommandRoute> newCommandDictionary)
 {
     if (newCommandDictionary != null && newCommandDictionary.Any())
     {
         foreach (var item in newCommandDictionary)
         {
             container.RegisterInstance(typeof(CommandRoute), item.Key, item.Value);
         }
     }
 }
Пример #14
0
        public AppBuilder UseContainer <T>(IChromelyContainer container = null) where T : IChromelyContainer
        {
            _container = container;
            if (_container == null)
            {
                _container = (T)Activator.CreateInstance(typeof(T));
            }

            return(this);
        }
Пример #15
0
        public override void RegisterEvents(IChromelyContainer container)
        {
            EnsureContainerValid(container);

            RegisterEventHandler(container, CefEventKey.FrameLoadStart, new ChromelyEventHandler <FrameLoadStartEventArgs>(CefEventKey.FrameLoadEnd, OnFrameLoadStart));
            RegisterEventHandler(container, CefEventKey.FrameLoadEnd, new ChromelyEventHandler <FrameLoadEndEventArgs>(CefEventKey.FrameLoadEnd, OnFrameLoadEnd));
            RegisterEventHandler(container, CefEventKey.ConsoleMessage, new ChromelyEventHandler <ConsoleMessageEventArgs>(CefEventKey.ConsoleMessage, OnConsoleMessage));
            RegisterEventHandler(container, CefEventKey.StatusMessage, new ChromelyEventHandler <StatusMessageEventArgs>(CefEventKey.FrameLoadEnd, OnStatusMessage));
            RegisterEventHandler(container, CefEventKey.BeforeClose, new ChromelyEventHandler <BeforeCloseEventArgs>(CefEventKey.FrameLoadEnd, OnBeforeClose));
        }
Пример #16
0
 /// <summary>
 /// Creates the CefGlue browser.
 /// </summary>
 /// <param name="owner"></param>
 /// <param name="container"></param>
 /// <param name="config"></param>
 /// <param name="commandTaskRunner"></param>
 /// <param name="browserMessageRouter"></param>
 /// <param name="settings"></param>
 public CefGlueBrowser(object owner, IChromelyContainer container, IChromelyConfiguration config, IChromelyCommandTaskRunner commandTaskRunner, CefMessageRouterBrowserSide browserMessageRouter, CefBrowserSettings settings)
 {
     Owner                 = owner;
     _container            = container;
     _config               = config;
     _commandTaskRunner    = commandTaskRunner;
     _browserMessageRouter = browserMessageRouter;
     _settings             = settings;
     StartUrl              = config.StartUrl;
 }
Пример #17
0
        public override void Configure(IChromelyContainer container)
        {
            base.Configure(container);

            container.RegisterInstance(typeof(IEventFactory), nameof(IEventFactory), new EventFactory());
            container.RegisterSingleton(
                typeof(ChromelyController),
                nameof(ConfigurationController),
                typeof(ConfigurationController));
        }
Пример #18
0
        public static ActionRoute GetActionRoute(IChromelyContainer container, RoutePath routePath)
        {
            object routeObj = container.GetInstance(typeof(ActionRoute), routePath.Key);
            if ((routeObj == null) || !(routeObj is ActionRoute))
            {
                throw new Exception($"No route found for method:{routePath.Method} route path:{routePath.Path}.");
            }

            return (ActionRoute)routeObj;
        }
Пример #19
0
 public override void Configure(IChromelyContainer container)
 {
     base.Configure(container);
     container.RegisterSingleton(typeof(ChromelyController), Guid.NewGuid().ToString(), typeof(MovieController));
     container.RegisterSingleton(typeof(ChromelyController), Guid.NewGuid().ToString(), typeof(ProductController));
     container.RegisterSingleton(typeof(ChromelyController), Guid.NewGuid().ToString(), typeof(ScreenTimeController));
     container.RegisterSingleton(typeof(ChromelyController), Guid.NewGuid().ToString(), typeof(OrderController));
     container.RegisterSingleton(typeof(ChromelyController), Guid.NewGuid().ToString(), typeof(SecurityController));
     container.RegisterSingleton(typeof(ChromelyController), Guid.NewGuid().ToString(), typeof(KijkwijzerController));
 }
        public static ActionRoute GetActionRoute(IChromelyContainer container, RoutePath routePath)
        {
            var route = container.GetInstance(typeof(ActionRoute), routePath.Key) as ActionRoute;

            if (route == null)
            {
                throw new Exception($"No route found for method:{routePath.Method} route path:{routePath.Path}.");
            }

            return(route);
        }
        public static bool IsActionRouteAsync(IChromelyContainer container, RoutePath routePath)
        {
            try
            {
                var route = container.GetInstance(typeof(ActionRoute), routePath.Key) as ActionRoute;
                return(route == null ? false : route.IsAsync);
            }
            catch {}

            return(false);
        }
Пример #22
0
        public static CommandRoute GetCommandRoute(IChromelyContainer container, string commandPath)
        {
            var key = CommandRoute.GetKeyFromPath(commandPath);
            object commandObj = container.GetInstance(typeof(CommandRoute), key);
            if ((commandObj == null) || !(commandObj is CommandRoute))
            {
                throw new Exception($"No route found for command with key:{key}.");
            }

            return (CommandRoute)commandObj;
        }
        public static CommandRoute GetCommandRoute(IChromelyContainer container, string commandPath)
        {
            var key     = CommandRoute.GetKeyFromPath(commandPath);
            var command = container.GetInstance(typeof(CommandRoute), key) as CommandRoute;

            if (command == null)
            {
                throw new Exception($"No route found for command with key:{key}.");
            }

            return(command);
        }
Пример #24
0
        public Window(IChromelyNativeHost nativeHost, IChromelyContainer container, IChromelyConfiguration config, IChromelyCommandTaskRunner commandTaskRunner, CefMessageRouterBrowserSide browserMessageRouter)
            : base(nativeHost, config)
        {
            _container            = container;
            _config               = config;
            _commandTaskRunner    = commandTaskRunner;
            _browserMessageRouter = browserMessageRouter;
            Browser               = new CefGlueBrowser(this, _container, config, _commandTaskRunner, _browserMessageRouter, new CefBrowserSettings());
            Browser.Created      += OnBrowserCreated;

            // Set event handler
            Browser.SetEventHandlers(_container);

            ShowWindow();
        }
Пример #25
0
        /// <summary>
        /// The create methods.
        /// </summary>
        /// <param name="container">
        /// The container of <see cref="IChromelyContainer"/> object.
        /// </param>
        /// <returns>
        /// The <see cref="ChromelyConfiguration"/> object.
        /// </returns>
        public static ChromelyConfiguration Create(IChromelyContainer container = null)
        {
            if (container != null)
            {
                IoC.Container = container;
            }

            EnsureExpectedWorkingDirectory();

            switch (ChromelyRuntime.Platform)
            {
            case ChromelyPlatform.MacOSX:
                Instance.Platform = ChromelyPlatform.MacOSX;
                return(Instance
                       .WithCustomSetting(CefSettingKeys.MultiThreadedMessageLoop, false)
                       .WithCustomSetting(CefSettingKeys.NoSandbox, true)

                       .WithCommandLineArg("disable-extensions", "1")
                       .WithCommandLineArg("disable-gpu", "1")
                       .WithCommandLineArg("disable-gpu-compositing", "1")
                       .WithCommandLineArg("disable-smooth-scrolling", "1")
                       .WithCommandLineArg("no-sandbox", "1")
                       .WithCommandLineArg("no-zygote", "1"));

            case ChromelyPlatform.Linux:
                Instance.Platform = ChromelyPlatform.Linux;
                return(Instance
                       .WithCustomSetting(CefSettingKeys.MultiThreadedMessageLoop, false)
                       .WithCustomSetting(CefSettingKeys.NoSandbox, true)

                       .WithCommandLineArg("disable-extensions", "1")
                       .WithCommandLineArg("disable-gpu", "1")
                       .WithCommandLineArg("disable-gpu-compositing", "1")
                       .WithCommandLineArg("disable-smooth-scrolling", "1")
                       .WithCommandLineArg("no-sandbox", "1")
                       .WithCommandLineArg("no-zygote", "1"));

            case ChromelyPlatform.Windows:
                Instance.Platform = ChromelyPlatform.Windows;
                // Temporary
                throw new Exception("Windows migration to .NET Core 3 is pending.\nCurrently only Linux and MacOS suppored.\n Please check back soon.");
            // return Instance;

            default:
                throw new PlatformNotSupportedException();
            }
        }
Пример #26
0
        public Window(IChromelyNativeHost nativeHost, IChromelyContainer container, IChromelyConfiguration config, IChromelyCommandTaskRunner commandTaskRunner, CefMessageRouterBrowserSide browserMessageRouter)
            : base(nativeHost, config)
        {
            _container            = container;
            _config               = config;
            _commandTaskRunner    = commandTaskRunner;
            _browserMessageRouter = browserMessageRouter;
            Browser               = CreateBrowser(new CefBrowserSettings());

            // Set event handler
            Browser.SetEventHandlers(_container);

            Browser.Created += OnBrowserCreated;

            // 'Created' event sometimes tries to attach interceptors too early, while all windows is not created yet,
            // so it's better to use 'FrameLoadStart'.
            Browser.FrameLoadStart += OnFrameLoadStart;

            ShowWindow();
        }
Пример #27
0
        public AppBuilder Build()
        {
            if (_stepCompleted != 2)
            {
                throw new Exception("Invalid order: step 2: UseApp must be completed before step 3.");
            }

            if (_chromelyApp == null)
            {
                throw new Exception($"ChromelyApp {nameof(_chromelyApp)} cannot be null.");
            }

            _chromelyApp.Initialize(_container, _appSettings, _config, _logger);
            _container = _chromelyApp.Container;
            _config    = _chromelyApp.Configuration;
            _chromelyApp.Configure(_container);
            _chromelyApp.RegisterEvents(_container);

            _stepCompleted = 3;
            return(this);
        }
Пример #28
0
        public virtual void Initialize(IChromelyContainer container, IChromelyConfiguration config, IChromelyLogger chromelyLogger)
        {
            EnsureExpectedWorkingDirectory();

            if (config == null)
            {
                var configurator = new ConfigurationHandler();
                config = configurator.Parse <DefaultConfiguration>();
            }

            if (config == null)
            {
                config = new DefaultConfiguration();
            }

            InitConfiguration(config);

            if (chromelyLogger == null)
            {
                chromelyLogger = new SimpleLogger();
            }

            var defaultLogger = new DefaultLogger();

            defaultLogger.Log = chromelyLogger;
            Logger.Instance   = defaultLogger;

            config.Platform = ChromelyRuntime.Platform;

            _container = container;
            if (_container == null)
            {
                _container = new SimpleContainer();
            }

            // Register all primary objects
            _container.RegisterInstance(typeof(IChromelyContainer), typeof(IChromelyContainer).Name, _container);
            _container.RegisterInstance(typeof(IChromelyConfiguration), typeof(IChromelyConfiguration).Name, config);
            _container.RegisterInstance(typeof(IChromelyLogger), typeof(IChromelyLogger).Name, chromelyLogger);
        }
        /// <summary>
        /// The create methods.
        /// </summary>
        /// <param name="container">
        /// The container of <see cref="IChromelyContainer"/> object.
        /// </param>
        /// <returns>
        /// The <see cref="ChromelyConfiguration"/> object.
        /// </returns>
        public static ChromelyConfiguration Create(IChromelyContainer container = null)
        {
            if (container != null)
            {
                IoC.Container = container;
            }

            //TODO: Use CefRuntime.Platform if available x-platform with a single reference
            switch (Environment.OSVersion.Platform)
            {
            case PlatformID.MacOSX:
            //TODO: check requirements for Mac OS - for now use linux settings
            case PlatformID.Unix:
            case (PlatformID)128:       // Framework (1.0 and 1.1) didn't include any PlatformID value for Unix, so Mono used the value 128.
                return(Instance
                       .WithCustomSetting(CefSettingKeys.MultiThreadedMessageLoop, false)
                       .WithCustomSetting(CefSettingKeys.SingleProcess, true)
                       .WithCustomSetting(CefSettingKeys.NoSandbox, true)

                       .WithCommandLineArg("disable-extensions", "1")
                       .WithCommandLineArg("disable-gpu", "1")
                       .WithCommandLineArg("disable-gpu-compositing", "1")
                       .WithCommandLineArg("disable-smooth-scrolling", "1")
                       .WithCommandLineArg("no-sandbox", "1")
                       .WithCommandLineArg("no-zygote", "1"));

            case PlatformID.Win32NT:
            case PlatformID.Win32S:
            case PlatformID.Win32Windows:
            case PlatformID.WinCE:
            case PlatformID.Xbox:
                return(Instance);

            default:
                throw new PlatformNotSupportedException();
            }
        }
Пример #30
0
 public DefaultCommandTaskRunner(IChromelyContainer container)
 {
     _container = container;
 }