public WebView() { Focusable = true; FocusVisualStyle = null; IsTabStop = true; Dispatcher.BeginInvoke((Action)(() => WebBrowser = this)); Loaded += OnLoaded; Unloaded += OnUnloaded; this.IsVisibleChanged += OnIsVisibleChanged; ToolTip = toolTip = new ToolTip(); toolTip.StaysOpen = true; toolTip.Visibility = Visibility.Collapsed; toolTip.Closed += OnTooltipClosed; BackCommand = new DelegateCommand(Back, CanGoBack); ForwardCommand = new DelegateCommand(Forward, CanGoForward); ReloadCommand = new DelegateCommand(Reload, CanReload); browserCore = new BrowserCore("about:blank"); browserCore.PropertyChanged += OnBrowserCorePropertyChanged; managedCefBrowserAdapter = new ManagedCefBrowserAdapter(this); managedCefBrowserAdapter.CreateOffscreenBrowser(BrowserSettings ?? new BrowserSettings()); disposables.Add(managedCefBrowserAdapter); disposables.Add(new DisposableEventWrapper(this, ActualHeightProperty, OnActualSizeChanged)); disposables.Add(new DisposableEventWrapper(this, ActualWidthProperty, OnActualSizeChanged)); }
// Get all propertys from https://github.com/chillitom/CefSharp/blob/master/CefSharp/BrowserCore.h void webView_PropertyChanged(object sender, PropertyChangedEventArgs e) { BrowserCore core = (BrowserCore)sender; switch (e.PropertyName) { case "IsBrowserInitialized": //core.IsBrowserInitialized break; case "Title": //core.Title break; case "Address": //core.Address break; case "CanGoBack": //core.CanGoBack break; case "CanGoForward": //core.CanGoForward; break; case "IsLoading": //core.IsLoading break; } }
private void Window_Loaded(object sender, RoutedEventArgs e) { timer.Start( ); try { if (App.Program.InputArgu != "") { BrowserCore.Navigate(App.Program.InputArgu); } else if (Url != "" && Url != null && Url != ".") { BrowserCore.Navigate(Url); } else if (!(Isnew == "false")) { string PathStart = File.ReadAllText(AppStartupPath + "\\DataBase\\Config.db"); if (PathStart == "") { File.WriteAllText(AppStartupPath + "\\DataBase\\Config.db", "about:blank"); BrowserCore.Navigate("about:blank"); } else { BrowserCore.Navigate(PathStart); } } } catch (Exception) { this.Close( ); } }
internal ZipResourceHandler(string assertPath, BrowserCore browser, string domain) { gcHandle = GCHandle.Alloc(this); this.domain = domain; this.browser = browser; this.basePath = assertPath; this.GetResponseHeaders += OnGetResponseHeaders; this.ProcessRequest += OnProcessRequest; this.ReadResponse += OnReadResponse; this.CanGetCookie += (_, e) => e.SetReturnValue(false); this.CanSetCookie += (_, e) => e.SetReturnValue(false); try { if (null == archive) { var zipFileToOpen = new FileStream(assertPath, FileMode.Open); archive = new ZipArchive(zipFileToOpen, ZipArchiveMode.Read); } } catch (Exception e) { archive = null; Console.WriteLine(e.ToString()); } }
public ChromiumLifeSpanHandler(BrowserCore browser) { this.browser = browser; this.OnAfterCreated += ChromiumLifeSpanHandler_OnAfterCreated; this.OnBeforeClose += ChromiumLifeSpanHandler_OnBeforeClose; this.OnBeforePopup += ChromiumLifeSpanHandler_OnBeforePopup; //this.DoClose += ChromiumLifeSpanHandler_DoClose; }
internal BrowserClient(BrowserCore browser) { this.browser = browser; this.lifeSpanHandler = new LifeSpanHandler(this); this.requestHandler = new RequestHandler(this); this.GetLifeSpanHandler += (s, e) => e.SetReturnValue(lifeSpanHandler); this.GetRequestHandler += (s, e) => e.SetReturnValue(requestHandler); }
public void DefaultUriProtocolTest() { BrowserCore core = new BrowserCore(); Assert.AreEqual("http", core.DefaultUriProtocol); core.DefaultUriProtocol = "https"; Assert.AreEqual("https", core.DefaultUriProtocol); }
internal static int RenderProcessMain() { try { var rp = new RenderProcess(); BrowserCore.RaiseRemoteProcessCreated(rp.processHandler); return(rp.RemoteMain()); } catch (CfxRemotingException) { return(-1); } }
protected override void OnHandleCreated(EventArgs e) { base.OnHandleCreated(e); WebBrowserCore = new BrowserCore(this, BrowserHostWindow.StartUrl); WebBrowserCore.BrowserCreated += BrowserCreated; var windowInfo = new CfxWindowInfo(); windowInfo.SetAsChild(Handle, 0, 0, Width, Height); WebBrowserCore.Create(windowInfo); }
private void Load(object sender, RoutedEventArgs e) { string str = UrlTextBox.Text; if (str == "about:blank") { BrowserCore.Navigate("about:blank"); return; } try { //处理str if (str.Substring(0, 4) != "http" && str.Substring(0, 4) != "file" && str.Substring(0, 4) != "ftp" && str.Contains(".")) { str = "http://" + str; } else if (!str.Contains(".") && !str.Contains("C:") && !str.Contains("D:")) { str = "https://www.baidu.com/#ie=UTF-8&wd=" + str; } else if (str.Contains(":\\")) { str = "file:///" + str; } //加载 try { BrowserCore.Navigate(str); } catch (UriFormatException) { if (str.Substring(0, 4) == "http") { try { BrowserCore.Navigate("http://" + str); UrlTextBox.Text = "http://" + str; } catch (Exception) { } return; } label1.Content = "URL错误"; } UrlTextBox.Text = str; } catch (ArgumentOutOfRangeException) { Console.WriteLine("OMH"); BrowserCore.Navigate("https://www.baidu.com/#ie=UTF-8&wd=" + UrlTextBox.Text); } }
private void Load(object sender, RoutedEventArgs e) { if (UrlTextBox.Text.ToLower().Contains("easy://")) { BrowserCore.PraseEasy(UrlTextBox.Text); } else { BrowserCore.Navigate(UrlTextBox.Text); } }
public void OnNewWindow(NewWindowEventArgs e) { if (BrowserCore.CefInstance.OnlyThis.IsChecked == false) { NewInstance.StartNewInstance(e.Url); } else { BrowserCore.Navigate(e.Url); } }
private void button_Click(object sender, RoutedEventArgs e) { OpenFileDialog ofd = new OpenFileDialog( ); bool? result = ofd.ShowDialog( ); if (result == true) { string js = File.ReadAllText(ofd.FileName); BrowserCore.RunJavaSript(js); } }
public MemResourceHandler(object path, BrowserCore wb, object domainName) { gcHandle = GCHandle.Alloc(this); this.wb = wb; this.domainName = domainName; this.CanGetCookie += (_, e) => e.SetReturnValue(false); this.CanSetCookie += (_, e) => e.SetReturnValue(false); this.GetResponseHeaders += OnGetResponseHeaders; this.ProcessRequest += OnProcessRequest; this.ReadResponse += OnReadResponse; }
internal FolderResourceHandler(string assertPath, BrowserCore browser, string domain) { gcHandle = GCHandle.Alloc(this); this.domain = domain; this.browser = browser; this.basePath = assertPath; this.GetResponseHeaders += OnGetResponseHeaders; this.ProcessRequest += OnProcessRequest; this.ReadResponse += OnReadResponse; this.CanGetCookie += (_, e) => e.SetReturnValue(false); this.CanSetCookie += (_, e) => e.SetReturnValue(false); }
internal void AddBrowserReference(BrowserCore browser) { for (int i = 0; i < browserReferences.Count; ++i) { if (browserReferences[i].Target == null) { browserReferences[i] = new WeakReference(browser); return; } } browserReferences.Add(new WeakReference(browser)); }
protected virtual void InitializeBrowserCore(string initialUrl) { if (IsDesignMode) { return; } browserCore = new BrowserCore(this, initialUrl); browserCore.RemoteCallbackInvokeMode = JSInvokeMode.Inherit; FormHandle = Handle; }
internal BrowserClient(BrowserCore browser) { this.browser = browser; lifeSpanHandler = new CfxLifeSpanHandler(); lifeSpanHandler.OnAfterCreated += (handler, e) => this.browser.OnBrowserCreated(e); lifeSpanHandler.OnBeforePopup += (handler, e) => { var windowinfo = e.WindowInfo; //fix: the popup window show on incorrect position }; this.GetLifeSpanHandler += (handler, e) => e.SetReturnValue(lifeSpanHandler); }
internal AssemblyResourceHandler(Assembly resourceAssembly, BrowserCore browser, string domain) { gcHandle = GCHandle.Alloc(this); this.domain = domain; this.browser = browser; this.resourceAssembly = resourceAssembly; this.GetResponseHeaders += OnGetResponseHeaders; this.ProcessRequest += OnProcessRequest; this.ReadResponse += OnReadResponse; this.CanGetCookie += (_, e) => e.SetReturnValue(false); this.CanSetCookie += (_, e) => e.SetReturnValue(false); }
static void Main() { if (Environment.OSVersion.Version.Major >= 6) { SetProcessDPIAware(); } Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); var result = Bootstrap.Load(settings => { settings.AcceptLanguageList = "zh-CN; en-US"; settings.LogSeverity = Chromium.CfxLogSeverity.Disable; }, commandline => { commandline.AppendSwitch("disable-web-security"); }); if (result) { Bootstrap.RegisterAssemblyResources(System.Reflection.Assembly.GetExecutingAssembly(), "WebUI"); Bootstrap.RegisterFolderResources(Application.StartupPath); var factory = new CfxSchemeHandlerFactory(); factory.Create += (_, args) => { if (args.SchemeName == "http" && args.Browser != null) { var wb = BrowserCore.GetBrowser(args.Browser.Identifier); var handler = new MemResourceHandler("", wb, ""); args.SetReturnValue(handler); } }; Bootstrap.RegisterCustomScheme("http", "memres.app.local", factory); var factoryZip = new CfxSchemeHandlerFactory(); factoryZip.Create += (_, args) => { if (args.SchemeName == "http" && args.Browser != null) { var wb = BrowserCore.GetBrowser(args.Browser.Identifier); var handler = new ZipResourceHandler(Application.StartupPath + "\\res.zip", wb, "zip.app.local"); args.SetReturnValue(handler); } }; Bootstrap.RegisterCustomScheme("http", "zip.app.local", factoryZip); Application.Run(new MainUI()); Application.Exit(); } }
private void Cwb_LoadError(object sender, LoadErrorEventArgs e) { Dispatcher.BeginInvoke((Action) delegate() { if (e.ErrorCode.ToString() == "NameNotResolved" || e.ErrorCode.ToString() == "AddressUnreachable") { BrowserCore.Navigate("https://www.baidu.com/s?wd=" + UrlTextBox.Text); } else if (e.ErrorCode.ToString() != "Aborted") { BrowserCore.Navigate(FilePath.AppPath + "\\Error.html?errorCode=" + e.ErrorCode + "&errorText=" + e.ErrorText + "&url=" + UrlTextBox.Text); } }); }
private void Window_Loaded(object sender, RoutedEventArgs e) { //throw new Exception( ); Dispatcher.BeginInvoke((Action) delegate() { try { BrowserCore.Navigate(FileApi.GetStartupPath(App.Program.arguments.isNew)); } catch (Exception ex) { Logger.Log(ex, logType: LogType.Debug, shutWhenFail: true); } }); }
public static void RegisterAssemblyResources(System.Reflection.Assembly assembly, string domainName = "res.app.local") { var factory = new CfxSchemeHandlerFactory(); var gchandle = GCHandle.Alloc(factory); factory.Create += (_, args) => { if (args.SchemeName == "http" && args.Browser != null) { var wb = BrowserCore.GetBrowser(args.Browser.Identifier); var handler = new ResourceHandler.AssemblyResourceHandler(assembly, wb, domainName); args.SetReturnValue(handler); } }; RegisterCustomScheme("http", domainName, factory); }
private void StatusBar_ContextMenu_Click(object sender, RoutedEventArgs e) { if (startusBar.Visibility == Visibility.Visible) { startusBar.Visibility = Visibility.Collapsed; OptionMenu.Visibility = Visibility.Collapsed; BrowserCore.GetInstance( ).wb.Margin = new Thickness(0, 37, 0, 0); HidestartusBar.Header = "显示状态栏"; } else { startusBar.Visibility = Visibility.Visible; OptionMenu.Visibility = Visibility.Visible; BrowserCore.GetInstance( ).wb.Margin = new Thickness(0, 37, 0, 35); HidestartusBar.Header = "隐藏状态栏"; } }
void RenderProcessHandler_OnContextCreated(object sender, CfrOnContextCreatedEventArgs e) { var wb = BrowserCore.GetBrowser(e.Browser.Identifier); if (wb != null) { if (e.Frame.IsMain) { SetProperties(e.Context, wb.GlobalObject); } else { JSObject obj; if (wb.frameGlobalObjects.TryGetValue(e.Frame.Name, out obj)) { SetProperties(e.Context, obj); } } wb.RaiseOnV8ContextCreated(e); } }
protected virtual void InitializeBrowserCore(string initialUrl) { if (IsDesignMode) { return; } browserCore = new BrowserCore(this, initialUrl); browserCore.RemoteCallbackInvokeMode = JSInvokeMode.Inherit; FormHandle = Handle; browserCore.OnBrowserMessage += BrowserCore_OnBrowserMessage; LoadHandler.OnLoadEnd += (_, args) => { if (args.Frame.IsMain) { HideInitialSplash(); } }; }
public WebBrowserFormImplement(Form form, BrowserCore browser) { parentForm = form; browserCore = browser; browser.RemoteBrowserCreated += (_, e) => { formV8Handler = new FormV8Handler(parentForm); #if XP CfrRuntime.RegisterExtension("nanui/form", Xzy.UI.Core.XP.Properties.Resources.nanui_formExtension, formV8Handler); #else CfrRuntime.RegisterExtension("nanui/form", Xzy.UI.Core.Properties.Resources.nanui_formExtension, formV8Handler); #endif }; browser.LoadHandler.OnLoadEnd += (_, e) => { if (e.Frame.IsMain) { foreach (var script in delayedScripts) { browserCore.ExecuteJavascript(script.Value); } } }; form.Move += (_, e) => { if (browserCore != null && browserCore.BrowserHost != null) { browserCore.BrowserHost.NotifyMoveOrResizeStarted(); } }; RegisterActivatedStateChangedHandler(); RegisterSizeChangedEventHandler(); }
internal static void Initialize() { if (initialized) { throw new CefException("ChromiumWebBrowser library already initialized."); } int retval = CfxRuntime.ExecuteProcess(); if (retval >= 0) { Environment.Exit(retval); } app = new CfxApp(); processHandler = new CfxBrowserProcessHandler(); app.GetBrowserProcessHandler += (s, e) => e.SetReturnValue(processHandler); app.OnBeforeCommandLineProcessing += (s, e) => BrowserCore.RaiseOnBeforeCommandLineProcessing(e); app.OnRegisterCustomSchemes += (s, e) => BrowserCore.RaiseOnRegisterCustomSchemes(e); var settings = new CfxSettings(); settings.MultiThreadedMessageLoop = true; settings.NoSandbox = true; BrowserCore.RaiseOnBeforeCfxInitialize(settings, processHandler); if (!CfxRuntime.Initialize(settings, app, RenderProcess.RenderProcessMain)) { throw new CefException("Failed to initialize CEF library."); } initialized = true; }
internal static void Setup(ChromeWidgetMessageInterceptor interceptor, BrowserCore browserCore, Func <Message, bool> forwardAction) { Task.Factory.StartNew(() => { try { while (true) { if (BrowserWidgetHandleFinder.TryFindHandle(browserCore.BrowserWindowHandle, out IntPtr chromeWidgetHostHandle)) { interceptor = new ChromeWidgetMessageInterceptor(browserCore.Owner, chromeWidgetHostHandle, forwardAction); break; } else { Thread.Sleep(50); } } } catch { } }); }
void RenderProcessHandler_OnBrowserCreated(object sender, CfrOnBrowserCreatedEventArgs e) { var id = e.Browser.Identifier; var wb = BrowserCore.GetBrowser(id); if (wb != null) { var rp = wb.remoteProcess; if (rp != null && rp != this.remoteProcess) { // A new process has been created for the browser. // The old process is still alive, but probably it gets // killed soon after this callback returns. // So we suspend all callbacks from the old process. // If there are currently executing callbacks, // this call will block until they are finished. // When this call returns, it should be safe to // continue execution and let the old process die. CfxRemoteCallbackManager.SuspendCallbacks(rp.RemoteProcessId); } wb.SetRemoteBrowser(e.Browser, remoteProcess); } }
public ChromiumDownloadHandler(BrowserCore browser) { this.browser = browser; }
public void SetUp() { browser_core = new BrowserCore(String.Empty); }
public WebView(string address) { browserCore = new BrowserCore(address); Application.ApplicationExit += OnApplicationExit; }