示例#1
0
        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));
        }
示例#2
0
        // 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;
            }
        }
示例#3
0
 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());
     }
 }
示例#5
0
 public ChromiumLifeSpanHandler(BrowserCore browser)
 {
     this.browser         = browser;
     this.OnAfterCreated += ChromiumLifeSpanHandler_OnAfterCreated;
     this.OnBeforeClose  += ChromiumLifeSpanHandler_OnBeforeClose;
     this.OnBeforePopup  += ChromiumLifeSpanHandler_OnBeforePopup;
     //this.DoClose += ChromiumLifeSpanHandler_DoClose;
 }
示例#6
0
 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);
 }
示例#7
0
        public void DefaultUriProtocolTest()
        {
            BrowserCore core = new BrowserCore();

            Assert.AreEqual("http", core.DefaultUriProtocol);
            core.DefaultUriProtocol = "https";
            Assert.AreEqual("https", core.DefaultUriProtocol);
        }
示例#8
0
 internal static int RenderProcessMain()
 {
     try {
         var rp = new RenderProcess();
         BrowserCore.RaiseRemoteProcessCreated(rp.processHandler);
         return(rp.RemoteMain());
     } catch (CfxRemotingException) {
         return(-1);
     }
 }
示例#9
0
        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);
        }
示例#10
0
        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);
            }
        }
示例#11
0
 private void Load(object sender, RoutedEventArgs e)
 {
     if (UrlTextBox.Text.ToLower().Contains("easy://"))
     {
         BrowserCore.PraseEasy(UrlTextBox.Text);
     }
     else
     {
         BrowserCore.Navigate(UrlTextBox.Text);
     }
 }
示例#12
0
 public void OnNewWindow(NewWindowEventArgs e)
 {
     if (BrowserCore.CefInstance.OnlyThis.IsChecked == false)
     {
         NewInstance.StartNewInstance(e.Url);
     }
     else
     {
         BrowserCore.Navigate(e.Url);
     }
 }
示例#13
0
        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);
            }
        }
示例#14
0
 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;
 }
示例#15
0
 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);
 }
示例#16
0
 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));
 }
示例#17
0
        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);
        }
示例#19
0
        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);
        }
示例#20
0
        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();
            }
        }
示例#21
0
 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);
         }
     });
 }
示例#22
0
 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);
         }
     });
 }
示例#23
0
        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);
        }
示例#24
0
 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 = "隐藏状态栏";
     }
 }
示例#25
0
        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);
            }
        }
示例#26
0
        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();
        }
示例#28
0
        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;
        }
示例#29
0
 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
         {
         }
     });
 }
示例#30
0
        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);
            }
        }
示例#31
0
 public ChromiumDownloadHandler(BrowserCore browser)
 {
     this.browser = browser;
 }
示例#32
0
 public void SetUp()
 {
     browser_core = new BrowserCore(String.Empty);
 }
示例#33
0
 public WebView(string address)
 {
     browserCore = new BrowserCore(address);
     Application.ApplicationExit += OnApplicationExit;
 }