/// <summary> /// Asynchronously wait for the Chromium widget window to be created for the given ChromiumWebBrowser, /// and when created hook into its Windows message loop. /// </summary> /// <param name="nativeHost">The native window.</param> /// <param name="browserHandle">The browser window to intercept Windows messages for.</param> public virtual void Setup(IChromelyNativeHost nativeHost, IntPtr browserHandle) { _nativeHost = nativeHost; _framelessOption = _config.WindowOptions?.FramelessOption ?? new FramelessOption(); _browserHandle = browserHandle; try { bool foundWidget = false; while (!foundWidget) { var childHandles = GetAllChildHandles(_browserHandle); if (childHandles is not null && childHandles.Any()) { foundWidget = true; _dragWindowHandlers = childHandles .Concat(new[] { browserHandle }) .Select(h => new DragWindowHandler(h, _nativeHost, _framelessOption)) .ToArray(); } else { // Chrome hasn't yet set up its message-loop window. Thread.Sleep(10); } }
public DemoWindow(IChromelyNativeHost nativeHost, IChromelyConfiguration config, ChromelyHandlersResolver handlersResolver) : base(nativeHost, config, handlersResolver) { #region Events FrameLoadStart += DemoWindow_FrameLoadStart; FrameLoadEnd += DemoWindow_FrameLoadEnd; LoadingStateChanged += DemoWindow_LoadingStateChanged; JavascriptMessageReceived += DemoWindow_JavascriptMessageReceived; ConsoleMessage += DemoWindow_ConsoleMessage; AddressChanged += DemoWindow_AddressChanged; #endregion Events #region Handlers // Optionally set custom handlers here or register them in DI // If they have dependencies it is better to use the DI. // LifeSpanHandler = new CustomLifeSpanHandler(); // LoadHandler = new CustomLoadHandler(); // RequestHandler = new CustomRequestHandler(); // DisplayHandler = new CustomDisplayHandler(); // MenuHandler = new CustomMenuHandler(); // KeyboardHandler = new CustomKeyboardHandler(); // JsDialogHandler = new JsDialogHandler(); // DialogHandler = new CustomDialogHandler(); // DragHandler = new CustomDragHandler(); // DownloadHandler = new CustomDownloadHandler(); // FindHandler = new CustomFindHandler(); // ResourceRequestHandlerFactory = new CustomResourceRequestHandlerFactory(); // RenderProcessMessageHandler = new CustomRenderProcessMessageHandler(); #endregion }
public ChromiumBrowser(IChromelyNativeHost nativeHost, IChromelyConfiguration config, ChromelyHandlersResolver handlersResolver) { Browser = null; NativeHost = nativeHost; _config = config; _handlersResolver = handlersResolver; }
public Window(IChromelyNativeHost nativeHost, IChromelyConfiguration config, ChromelyHandlersResolver handlersResolver) : base(nativeHost, config, handlersResolver) { Created += OnBrowserCreated; }
/// <inheritdoc/> public WindowController(IChromelyWindow window, IChromelyNativeHost nativeHost, IChromelyConfiguration config, IChromelyRouteProvider routeProvider, IChromelyRequestHandler requestHandler, IChromelyRequestSchemeProvider requestSchemeProvider, ChromelyHandlersResolver handlersResolver) : base(window, nativeHost, config, routeProvider, requestHandler, handlersResolver) { // WindowController.NativeWindow _nativeHost.HostCreated += OnWindowCreated; _nativeHost.HostMoving += OnWindowMoving; _nativeHost.HostSizeChanged += OnWindowSizeChanged; _nativeHost.HostClose += OnWindowClose; _requestSchemeProvider = requestSchemeProvider; // Set CefBinariesDownloader var objList = _handlersResolver?.Invoke(typeof(ICefBinariesDownloader)); var tempLoader = objList?.FirstOrDefault() as ICefBinariesDownloader; if (tempLoader is not null) { _binariesDownloader = tempLoader; } }
protected HostBase(IChromelyNativeHost nativeHost, IChromelyContainer container, IChromelyConfiguration config, IChromelyRequestTaskRunner requestTaskRunner, IChromelyCommandTaskRunner commandTaskRunner) { _nativeHost = nativeHost; _container = container; _config = config; _requestTaskRunner = requestTaskRunner; _commandTaskRunner = commandTaskRunner; }
public Window(IChromelyNativeHost nativeHost, IChromelyConfiguration config, ChromelyHandlersResolver handlersResolver) : base(nativeHost, config) { _handlersResolver = handlersResolver; IsBrowserInitializedChanged += BrowserInitializedChanged; }
public DragWindowHandler(IntPtr handle, IChromelyNativeHost nativeHost, FramelessOption framelessOption) { _handle = handle; _nativeHost = nativeHost; _framelessOption = framelessOption ?? new FramelessOption(); _originalWndProc = GetWindowLongPtr(_handle, (int)GWL.WNDPROC); _wndProc = WndProc; _wndProcPtr = Marshal.GetFunctionPointerForDelegate(_wndProc); SetWindowLongPtr(_handle, (int)GWL.WNDPROC, _wndProcPtr); }
public ForwardMesssageHandler(IntPtr handle, IChromelyNativeHost nativeHost, FramelessOption framelessOption, bool isHost) { _handle = handle; _nativeHost = nativeHost; _framelessOption = framelessOption ?? new FramelessOption(); _isHost = isHost; _originalWndProc = GetWindowLongPtr(_handle, (int)WindowLongFlags.GWL_WNDPROC); _wndProc = WndProc; var wndProcPtr = Marshal.GetFunctionPointerForDelegate(_wndProc); SetWindowLongPtr(_handle, (int)WindowLongFlags.GWL_WNDPROC, wndProcPtr); }
public WindowSample(IChromelyNativeHost nativeHost, IChromelyConfiguration config, ChromelyHandlersResolver handlersResolver) : base(nativeHost, config, handlersResolver) { #region Events FrameLoadStart += DemoWindow_FrameLoadStart; FrameLoadEnd += DemoWindow_FrameLoadEnd; LoadingStateChanged += DemoWindow_LoadingStateChanged; ConsoleMessage += DemoWindow_ConsoleMessage; AddressChanged += DemoWindow_AddressChanged; #endregion Events }
public ChromelyWindowController(IChromelyWindow window, IChromelyNativeHost nativeHost, IChromelyConfiguration config, IChromelyRouteProvider routeProvider, IChromelyRequestHandler requestHandler, ChromelyHandlersResolver handlersResolver) { _window = window; _nativeHost = nativeHost; _config = config; _routeProvider = routeProvider; _requestHandler = requestHandler; _handlersResolver = handlersResolver; }
/// <summary> Doubleclick callback function. </summary> /// <param name="nativeHost"> The Chromely native host interface. </param> public void DblClickCallbackFunc(IChromelyNativeHost nativeHost) { // Toggle between normal (restore) and maximized var state = nativeHost.GetWindowState(); if (state == WindowState.Maximize) { nativeHost.SetWindowState(WindowState.Normal); } else { nativeHost.SetWindowState(WindowState.Maximize); } }
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(); }
/// <summary> /// Default callback function to determine if we're located within the drag region. /// </summary> /// <param name="nativeHost"> The Chromely native host interface. </param> /// <param name="point"> The click point. </param> /// <returns> True if in the drag region, false if not. </returns> public bool IsDraggableCallbackFunc(IChromelyNativeHost nativeHost, Point point) { var size = nativeHost.GetWindowClientSize(); var scale = nativeHost.GetWindowDpiScale(); var in_zone = false; foreach (var zone in DragZones) { if (zone.InZone(size, point, scale)) { in_zone = true; } } return(in_zone); }
public NativeWindow(IChromelyNativeHost nativeHost, IChromelyConfiguration config) { _config = config; _nativeHost = nativeHost; if (_nativeHost == null) { _nativeHost = NativeHostFactory.GetNativeHost(_config); } Handle = IntPtr.Zero; _nativeHost.Created += OnCreated; _nativeHost.Moving += OnMoving; _nativeHost.SizeChanged += OnSizeChanged; _nativeHost.Close += OnClose; }
public WindowController(IChromelyWindow window, IChromelyNativeHost nativeHost, IChromelyConfiguration config, IChromelyRouteProvider routeProvider, IChromelyRequestTaskRunner requestTaskRunner, IChromelyCommandTaskRunner commandTaskRunner, IChromelyRequestSchemeHandlerProvider requestSchemeHandlerProvider, ChromelyHandlersResolver handlersResolver) : base(window, nativeHost, config, routeProvider, requestTaskRunner, commandTaskRunner, handlersResolver) { // WindowController.NativeWindow _nativeHost.HostCreated += OnWindowCreated; _nativeHost.HostMoving += OnWindowMoving; _nativeHost.HostSizeChanged += OnWindowSizeChanged; _nativeHost.HostClose += OnWindowClose; _requestSchemeHandlerProvider = requestSchemeHandlerProvider; }
/// <inheritdoc/> public WindowController(IChromelyWindow window, IChromelyNativeHost nativeHost, IChromelyConfiguration config, IChromelyRouteProvider routeProvider, IChromelyRequestHandler requestHandler, IChromelyRequestSchemeProvider requestSchemeProvider, ICefDownloader binariesDownloader, ChromelyHandlersResolver handlersResolver) : base(window, nativeHost, config, routeProvider, requestHandler, handlersResolver) { // WindowController.NativeWindow _nativeHost.HostCreated += OnWindowCreated; _nativeHost.HostMoving += OnWindowMoving; _nativeHost.HostSizeChanged += OnWindowSizeChanged; _nativeHost.HostClose += OnWindowClose; _requestSchemeProvider = requestSchemeProvider; _binariesDownloader = binariesDownloader; }
protected virtual void Dispose(bool disposing) { if (_disposed) { return; } // If there are managed resources if (disposing) { } _nativeHost?.Dispose(); _window?.Dispose(); _nativeHost = null; _window = null; _disposed = true; }
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(); }
public WindowMessageInterceptor(IChromelyConfiguration config, IntPtr browserHandle, IChromelyNativeHost nativeHost) { _config = config; var framelessOption = _config?.WindowOptions?.FramelessOption ?? new FramelessOption(); var childHandles = GetAllChildHandles(browserHandle); _dragWindowHandlers = childHandles .Concat(new[] { browserHandle }) .Select(h => new DragWindowHandler(h, nativeHost, framelessOption, h == browserHandle)) .ToArray(); }
public RekoBrowserHostController(IChromelyWindow window, IChromelyNativeHost nativeHost, IChromelyConfiguration config, IChromelyRouteProvider routeProvider, IChromelyRequestTaskRunner requestTaskRunner, IChromelyCommandTaskRunner commandTaskRunner, IChromelyRequestSchemeProvider requestSchemeProvider, ChromelyHandlersResolver handlersResolver) : base(window, nativeHost, config, routeProvider, requestTaskRunner, commandTaskRunner, requestSchemeProvider, handlersResolver) { }
/// <summary> /// Initializes a new instance of the <see cref="ChromiumBrowser"/> class. /// </summary> public ChromiumBrowser(IChromelyNativeHost nativeHost, IChromelyConfiguration config) { NativeHost = nativeHost; _config = config; }
public void SetNativeHost(IChromelyNativeHost nativeHost) { _nativeHost = nativeHost; }
/// <summary> /// Initializes a new instance of the <see cref="ChromiumBrowser"/> class. /// </summary> public ChromiumBrowser(IChromelyNativeHost nativeHost, IChromelyConfiguration config) { NativeHost = nativeHost; _config = config; CefSharpSettings.LegacyJavascriptBindingEnabled = false; }
public ChromelyWindow(IChromelyNativeHost nativeHost, IChromelyContainer container, IChromelyConfiguration config, IChromelyRequestTaskRunner requestTaskRunner, IChromelyCommandTaskRunner commandTaskRunner) : base(nativeHost, container, config, requestTaskRunner, commandTaskRunner) { }
public RekoBrowserHost(IChromelyNativeHost nativeHost, IChromelyConfiguration config, ChromelyHandlersResolver handlersResolver) : base(nativeHost, config, handlersResolver) { }
/// <summary> /// Initializes a new instance of the <see cref="ChromiumBrowser"/> class. /// </summary> public ChromiumBrowser(IChromelyNativeHost nativeHost, IChromelyConfiguration config) { NativeHost = nativeHost; _config = config; JavascriptObjectRepository.Settings.LegacyBindingEnabled = false; }
public DefaulKeyboadHookHandler(IChromelyNativeHost nativeHost, IWindowOptions options) { _nativeHost = nativeHost; _options = options; }