Пример #1
0
        public void EvaluateScript_JavascriptIncreasePriviligesCrossFrameAccess_ScriptExecutesAndReturnsExpectedResult()
        {
            string result;
            string aboutBlank;

            using (var page = new GeckoWebBrowser())
            {
                IntPtr unused = page.Handle;
                page.CreateWindow += (s, e) => { e.WebBrowser = browser; };
                using (AutoJSContext context = new AutoJSContext(page.Window.JSContext))
                {
                    Assert.IsTrue(context.EvaluateScript("window.open('http://www.google.com'); window.location.href", out aboutBlank));
                }
                browser.NavigateFinishedNotifier.BlockUntilNavigationFinished();

                using (AutoJSContext context = new AutoJSContext(browser.Window.JSContext))
                {
                    Assert.IsTrue(context.EvaluateScript("window.location.href", out result));
                    Assert.AreNotEqual(aboutBlank, result);

                    // cross frame access
                    Assert.IsFalse(context.EvaluateScript("opener.location.href", out result));
                    Assert.IsTrue(context.EvaluateTrustedScript("opener.location.href", out result));
                    Assert.AreEqual(aboutBlank, result);
                }

                page.Stop();
            }
        }
Пример #2
0
        private Size SetWidthAndHeight(GeckoWebBrowser browser)
        {
            try
            {
                if (_syncControl.InvokeRequired)
                {
                    return((Size)_syncControl.Invoke(new Func <GeckoWebBrowser, Size>(SetWidthAndHeight), browser));
                }
            }
            catch (Exception e)
            {
                //Debug.Fail("Reproduction of BL-524: Crash making thumbnail?");
                //otherwise, don't tell the user, just log and send exception if they're online
                Logger.WriteEvent("***Error making thumbnail, possible bl-524 reproduction, swallowed. " + e.Message);
                Analytics.ReportException(e);
                return(new Size(0, 0));               // this tells the caller we failed
            }

            Guard.AgainstNull(browser.Document.ActiveElement, "browser.Document.ActiveElement");
            var div = browser.Document.ActiveElement.EvaluateXPath("//div[contains(@class, 'bloom-page')]").GetNodes().FirstOrDefault() as GeckoElement;

            if (div == null)
            {
                var order = (ThumbnailOrder)browser.Tag;
                Logger.WriteEvent("HtmlThumNailer ({1}):  found no div with a class of bloom-Page ({0})", order.ThumbNailFilePath,
                                  Thread.CurrentThread.ManagedThreadId);
                throw new ApplicationException("thumbnails found no div with a class of bloom-Page");
            }
            browser.Height = div.ClientHeight;
            browser.Width  = div.ClientWidth;
            return(new Size(browser.Width, browser.Height));
        }
Пример #3
0
        private Size SetWidthAndHeight(GeckoWebBrowser browser)
        {
            try
            {
                if (_syncControl.InvokeRequired)
                {
                    return((Size)_syncControl.Invoke(new Func <GeckoWebBrowser, Size>(SetWidthAndHeight), browser));
                }
            }
            catch (Exception e)
            {
                NonFatalProblem.Report(ModalIf.None, PassiveIf.Alpha, "Could not make thumbnail", "Ref bl-524", e);
                return(new Size(0, 0));               // this tells the caller we failed
            }

            Guard.AgainstNull(browser.Document.ActiveElement, "browser.Document.ActiveElement");
            var div = browser.Document.ActiveElement.EvaluateXPath("//div[contains(@class, 'bloom-page')]").GetNodes().FirstOrDefault() as GeckoElement;

            if (div == null)
            {
                var order = (ThumbnailOrder)browser.Tag;
                Logger.WriteEvent("HtmlThumNailer ({1}):  found no div with a class of bloom-Page ({0})", order.ThumbNailFilePath,
                                  Thread.CurrentThread.ManagedThreadId);
                throw new ApplicationException("thumbnails found no div with a class of bloom-Page");
            }
            browser.Height = div.ClientHeight;
            browser.Width  = div.ClientWidth;
            // This is probably not needed...width zero came about in debugging incomplete code where a stylesheet
            // did not take effect..but it seems like a reasonable bit of defensive programming to keep.
            if (browser.Width == 0)
            {
                browser.Width = browser.Height / 2;               // arbitrary way of avoiding crash
            }
            return(new Size(browser.Width, browser.Height));
        }
Пример #4
0
        /// <summary>
        /// Create the UX.
        /// </summary>
        public LeanWinForm()
        {
            InitializeComponent();

            //Form Setup:
            CenterToScreen();
            WindowState = FormWindowState.Maximized;
            Text        = "QuantConnect Lean Algorithmic Trading Engine: v" + Globals.Version;

            //GECKO WEB BROWSER: Create the browser control
            // https://www.nuget.org/packages/GeckoFX/
            // -> If you don't have IE.
#if !__MonoCS__
            Gecko.Xpcom.Initialize();

            _geckoBrowser = new GeckoWebBrowser {
                Dock = DockStyle.Fill, Name = "browser"
            };
            splitPanel.Panel1.Controls.Add(_geckoBrowser);
#else
            // MONO WEB BROWSER: Create the browser control
            // Default shipped with VS and Mono. Works OK in Windows, and compiles in linux.
            _monoBrowser = new WebBrowser()
            {
                Dock = DockStyle.Fill, Name = "Browser"
            };
            splitPanel.Panel1.Controls.Add(_monoBrowser);
#endif

            _logging = new QueueLogHandler();
        }
Пример #5
0
        public static void NavigateTo(GeckoWebBrowser browser, CurrentWindow window)
        {
            try {
                string location = @"\html\index.html";
                switch (window)
                {
                case CurrentWindow.Dependent:
                    location = @"\html\dependent.html";
                    break;

                case CurrentWindow.EnterNumber:
                    location = @"\html\enter_number.html";
                    break;

                case CurrentWindow.Pay:
                    location = @"\html\pay.html";
                    break;

                case CurrentWindow.Encashment:
                    location = @"\html\encashment.html";
                    break;

                case CurrentWindow.MakeEncashment:
                    location = @"\html\make_encashment.html";
                    break;

                case CurrentWindow.BlockTerminal:
                    location = @"\html\terminal_blocked.html";
                    break;
                }
                browser.Navigate(Directory.GetCurrentDirectory() + location);
            } catch (Exception exception) {
                Log.Error("Cannot navigate to the page");
            }
        }
Пример #6
0
        /// <summary>
        /// 启动任务
        /// </summary>
        /// <param name="iCheerPrintArgs"></param>
        public void StartTask(CheerPrintArgs iCheerPrintArgs)
        {
            //如果浏览器环境没有初始化
            if (!Gecko.Xpcom.IsInitialized)
            {
                CheerLib.LogWriter.Error("{0}.StartTask Faild,Gecko.Xpcom.IsInitialized==false", this.GetType().FullName);

                this.RaiseStatusFinished(501);

                return;
            }

            Gecko.GeckoPreferences.User["gfx.direct2d.disabled"] = true;

            //准备数据目录、路径
            var dateTimeStr = DateTime.Now.ToString("yyyyMMddHHmmss");
            var pid         = Process.GetCurrentProcess().Id;

            this.mDataRoot = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "PdfData", string.Format("{0}_{1}", dateTimeStr, pid));

            if (!Directory.Exists(this.mDataRoot))
            {
                Directory.CreateDirectory(this.mDataRoot);
            }
            this.mHtmlPdfPath = Path.Combine(this.mDataRoot, "html_pdf.pdf");
            this.mPdfPath     = Path.Combine(this.mDataRoot, "pdf_pdf.pdf");

            //外部参数
            this.mCheerPrintArgs = iCheerPrintArgs;


            //创建浏览器对象
            this.mWebBrowser = new GeckoWebBrowser();
            this.components.Add(this.mWebBrowser);
            this.mWebBrowser.Size = new Size(this.mCheerPrintArgs.htmlWindowWidth, this.mCheerPrintArgs.htmlWindowHeight);

            this.mWebBrowser.ConsoleMessage    += MWebBrowser_ConsoleMessage;    //控制台消息
            this.mWebBrowser.DocumentCompleted += MWebBrowser_DocumentCompleted; //当文档加载完成


            var htmlPath = this.mCheerPrintArgs.htmlInputFilePath;

            if (!File.Exists(htmlPath))
            {
                this.RaiseStatusChanged(0, "Loading Html File Not Exsist!");

                CheerLib.LogWriter.Log("Not Exsist htmlPath=" + htmlPath);

                this.RaiseStatusFinished(501);
                return;
            }

            var htmlContent = File.ReadAllText(htmlPath, Encoding.UTF8);

            this.mWebBrowser.LoadHtml(htmlContent);  //浏览器访问html文件地址

            this.RaiseStatusChanged(0, "Loading Html...");

            //下一步到浏览器文档加载完成
        }
Пример #7
0
        private void geckoWebBrowser2_Navigating(object sender, GeckoNavigatingEventArgs e)
        {
            GeckoWebBrowser geckoWebBrowser2 = new GeckoWebBrowser();

            //throw new NotImplementedException();
            geckoWebBrowser1_Navigating(geckoWebBrowser2, e);
        }
Пример #8
0
        public static void Main(string[] args)
        {
            // Uncomment the follow line to enable CustomPrompt's
            GeckoWebBrowser.UseCustomPrompt();

            // If you want to further customize the GeckoFx PromptService then
            // you will need make a class that implements nsIPromptService2 and nsIPrompt interfaces and
            // set the PromptFactory.PromptServiceCreator delegate. for example:
            // PromptFactory.PromptServiceCreator = () => new MyPromptService();

#if GTK
            if (!Environment.GetEnvironmentVariable("LD_LIBRARY_PATH").Contains("/usr/lib/firefox/"))
            {
                throw new ApplicationException(String.Format("LD_LIBRARY_PATH must contain {0}", "/usr/lib/firefox/"));
            }

            Xpcom.Initialize("/usr/lib/firefox/");
#else
            Xpcom.Initialize(XULRunnerLocator.GetXULRunnerLocation());
#endif
            // Uncomment the follow line to enable CustomPrompt's
            // GeckoPreferences.User["browser.xul.error_pages.enabled"] = false;

            GeckoPreferences.User["gfx.font_rendering.graphite.enabled"] = true;

            Application.ApplicationExit += (sender, e) =>
            {
                Xpcom.Shutdown();
            };

            //Application.Idle += (s, e) => Console.WriteLine(SynchronizationContext.Current);
            Application.Run(new MyForm());
        }
        public HTTPBase(RenderingEngine RenderingEngine)
        {
            try
            {
                if (RenderingEngine == RenderingEngine.Gecko)
                {
                    if (!Xpcom.IsInitialized)
                    {
                        Xpcom.Initialize("Firefox");
                    }

                    Control = new GeckoWebBrowser();
                }
                else
                {
                    Control = new WebBrowser();
                }

                NewExtended();
            }
            catch (Exception ex)
            {
                Runtime.MessageCollector.AddExceptionStackTrace(Language.strHttpConnectionFailed, ex);
            }
        }
Пример #10
0
        void Browser_DocumentCompleted_Init(object sender, EventArgs e)
        {
            GeckoWebBrowser br = sender as GeckoWebBrowser;

            if (br.Url.ToString() == "about:blank")
            {
                return;
            }
            ShowClickMsg("开始加载全国的城市数据" + br.Url.ToString());
            Log.logger("开始加载全国的城市数据" + br.Url.ToString());


            foreach (Skybound.Gecko.GeckoElement a in br.Document.Links)
            {
                if (a.Parent != null &&
                    a.Parent.Parent != null &&
                    a.Parent.Parent.ClassName != null &&
                    a.Parent.Parent.ClassName == "cBox" &&
                    a.Parent.Parent.ClassName != null &&
                    a.Parent.Parent.Parent.ClassName != null &&
                    a.Parent.Parent.Parent.ClassName == "s_Box_1 hidden"
                    )
                {
                    if (!ListCItyUrl.ContainsKey(a.TextContent.Trim()))
                    {
                        ShowClickMsg(a.TextContent.Trim() + a.GetAttribute("href"));
                        ListCItyUrl.Add(a.TextContent.Trim(), a.GetAttribute("href"));
                    }
                }
            }
            //绑定到下拉框中啊
            IEUtil.CleanCookie();
            comboBox1.DataSource = ListCItyUrl.Keys.ToList();
            button1.Enabled      = true;
        }
Пример #11
0
        private void Window_Loaded(object sender, RoutedEventArgs e)
        {
            var host = new WindowsFormsHost();

            _Browser             = new GeckoWebBrowser();
            _Browser.Navigating += _Browser_Navigating;
            _Browser.Navigated  += _Browser_Navigated;
            ViewModel.AddObserver();

            host.Child = _Browser;
            webViewParent.Children.Add(host);
            if (!string.IsNullOrEmpty(ViewModel?.Url))
            {
                _Browser.Navigate(ViewModel.Url);
            }

            ViewModel.DownloaderLog.CollectionChanged += (_, __) =>
            {
                var l = ViewModel.DownloaderLog.LastOrDefault();
                if (l != null)
                {
                    downloaderLogListBox.ScrollIntoView(l);
                }
            };
        }
Пример #12
0
        private void InitializeComponent()
        {
//			System.Resources.ResourceManager resources = new System.Resources.ResourceManager(typeof(HtmlControl));
            //this.m_browser = new AxSHDocVw.AxWebBrowser();
            this.m_browser = new GeckoWebBrowser();
            //((System.ComponentModel.ISupportInitialize)(this.m_browser)).BeginInit();
            this.SuspendLayout();
            //
            // m_browser
            //
            this.m_browser.Dock = System.Windows.Forms.DockStyle.Fill;
            //this.m_browser.Enabled = true;
            //this.m_browser.OcxState = ((System.Windows.Forms.AxHost.State)(resources.GetObject("m_browser.OcxState")));
            this.m_browser.Size     = new System.Drawing.Size(320, 184);
            this.m_browser.TabIndex = 1;
            //
            // HtmlControl
            //
            this.Controls.AddRange(new System.Windows.Forms.Control[] {
                this.m_browser
            });
            this.Name = "HtmlControl";
            this.Size = new System.Drawing.Size(320, 184);
            //((System.ComponentModel.ISupportInitialize)(this.m_browser)).EndInit();
            this.ResumeLayout(false);
        }
Пример #13
0
        /// -----------------------------------------------------------------------------------
        /// <summary>
        /// Clean up any resources being used.
        /// </summary>
        /// <param name="disposing"><c>true</c> to release both managed and unmanaged
        /// resources; <c>false</c> to release only unmanaged resources.
        /// </param>
        /// -----------------------------------------------------------------------------------
        protected override void Dispose(bool disposing)
        {
            //Debug.WriteLineIf(!disposing, "****************** " + GetType().Name + " 'disposing' is false. ******************");
            // Must not be run more than once.
            if (IsDisposed)
            {
                return;
            }

            if (disposing)
            {
                if (m_browser != null)
                {
#if Old
                    SHDocVw.WebBrowser_V1 axDocumentV1 = m_browser.GetOcx() as SHDocVw.WebBrowser_V1;
                    if (axDocumentV1 != null)
                    {
                        axDocumentV1.BeforeNavigate -= new SHDocVw.DWebBrowserEvents_BeforeNavigateEventHandler(OnBeforeNavigate);
                    }
#endif
                    m_browser.Dispose();
                }
                if (components != null)
                {
                    components.Dispose();
                }
            }
            m_url     = null;
            m_browser = null;

            base.Dispose(disposing);
        }
Пример #14
0
        public PrintRoute(int sesID, int rourID)
        {
            InitializeComponent();

            sessionId = sesID;
            routeId   = rourID;
            db        = new DBWork();

            db.getPointBySession(sessionId);

            Gecko.Xpcom.Initialize("Firefox");
            WindowsFormsHost host = new WindowsFormsHost();

            browser = new GeckoWebBrowser();
            browser.DocumentCompleted += (sender, e) => { DrawRoutesOnMap(); };

            host.Child = browser;
            GridWeb.Children.Add(host);
            browser.Navigate(URL);

            setRoutes();
            //point Update
            PrintDialog printDlg = new PrintDialog();

            printDlg.PrintVisual(GridPanel, "GridPrinting");
        }
Пример #15
0
        private void geckoWebBrowser1_Navigating(object sender, Gecko.Events.GeckoNavigatingEventArgs e)
        {
            GeckoWebBrowser geckoWebBrowser2 = new GeckoWebBrowser();

            if (this.ActiveControl == geckoWebBrowser1)
            {
                textbox_navigate.Text    = geckoWebBrowser1.Url.AbsoluteUri;
                label_statusbrowser.Text = geckoWebBrowser1.StatusText;
                if (progressbar_browser.Value < 0)
                {
                    progressbar_browser.Value = 0;
                }
                else if (progressbar_browser.Value > 100)
                {
                    progressbar_browser.Value = 100;
                }
            }
            else if (this.ActiveControl == geckoWebBrowser2)
            {
                textbox_navigate.Text    = geckoWebBrowser2.Url.AbsoluteUri;
                label_statusbrowser.Text = geckoWebBrowser2.StatusText;
                if (progressbar_browser.Value < 0)
                {
                    progressbar_browser.Value = 0;
                }
                else if (progressbar_browser.Value > 100)
                {
                    progressbar_browser.Value = 100;
                }
            }
        }
Пример #16
0
        void ObjWebBrowser_DocumentCompleted(object sender, EventArgs e)
        {
            GeckoWebBrowser web_control = (GeckoWebBrowser)sender;

            Logging.Info("Browser page contents received at url {0}", web_control.Url.ToString());
            web_browser_host_control.ObjWebBrowser_LoadCompleted(this);
        }
Пример #17
0
        /// <summary>
        /// This code (and the two methods above) were taken from https://bitbucket.org/duanyao/moz-devtools-patch
        /// with thanks to Duane Yao.
        /// It starts up a server that allows FireFox to be used to inspect and debug the content of geckofx windows.
        /// See the ReadMe in remoteDebugging for instructions.
        /// Note that this should NOT be done in production. There are security issues.
        /// </summary>
        static void StartDebugServer()
        {
            GeckoPreferences.User["devtools.debugger.remote-enabled"] = true;

            // It seems these files MUST be in a subdirectory of the application directory. At least, I haven't figured out
            // how it can be anywhere else. Therefore the build copies the necessary files there.
            // If you try to change it, be aware that the chrome.manifest file contains the name of the parent folder;
            // if you rename the folder and don't change the name there, you get navigation errors in the code below and
            // remote debugging doesn't work.
            var chromeDir = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "remoteDebugging");

            registerChromeDir(chromeDir);
            var browser = new GeckoWebBrowser();

            browser.NavigationError += (s, e) =>
            {
                Console.WriteLine(">>>StartDebugServer error: " + e.ErrorCode.ToString("X"));
                browser.Dispose();
            };
            browser.DocumentCompleted += (s, e) =>
            {
                Console.WriteLine(">>>StartDebugServer complete");
                browser.Dispose();
            };
            browser.Navigate("chrome://remoteDebugging/content/moz-remote-debug.html");
        }
Пример #18
0
        private void Plays_Load(object sender, EventArgs e)
        {
            //Starts the Gecko browser
            Xpcom.Initialize("Firefox");
            geckoWebBrowser = new GeckoWebBrowser
            {
                Dock        = System.Windows.Forms.DockStyle.Bottom,
                Location    = new System.Drawing.Point(0, 0),
                MinimumSize = new System.Drawing.Size(479, 293),
                Name        = "geckoBrowser",
                Size        = new System.Drawing.Size(479, 293),
                MaximumSize = new System.Drawing.Size(479, 293),
                TabIndex    = 1
            };

            //Hides the browser for the end user
            this.Controls.Add(geckoWebBrowser);
            geckoWebBrowser.Hide();

            //Deletes the temp file
            File.Delete(AppDomain.CurrentDomain.BaseDirectory + "temporary.zip");

            //Starts the process
            Load0SiteAsync();
        }
Пример #19
0
        void ObjWebBrowser_StatusTextChanged(object sender, EventArgs e)
        {
            GeckoWebBrowser web_control = (GeckoWebBrowser)sender;

            StatusManager.Instance.UpdateStatus("WebBrowser", web_control.StatusText);
            //Logging.Info("Browser:{0}", web_control.StatusText);
        }
Пример #20
0
        private void BrowserLoad(object sender, EventArgs e)
        {
            Xpcom.Initialize("Firefox");

            nsICookieManager CookieMan;

            CookieMan = Xpcom.GetService <nsICookieManager>("@mozilla.org/cookiemanager;1");
            CookieMan = Xpcom.QueryInterface <nsICookieManager>(CookieMan);
            CookieMan.RemoveAll();

            GeckoPreferences.User["browser.xul.error_pages.enabled"] = false;
            GeckoPreferences.User["browser.download.manager.showAlertOnComplete"] = false;
            GeckoPreferences.User["security.warn_viewing_mixed"]       = false;
            GeckoPreferences.User["privacy.popups.showBrowserMessage"] = false;
            GeckoPreferences.User["browser.xul.error_pages.enabled"]   = true;

            browserPanel.Visible = false;

            browser = new GeckoWebBrowser()
            {
                Dock = DockStyle.Fill
            };
            browser.NoDefaultContextMenu = true;
            browser.Navigated           += BrowserNavigated;

            Controls.Add(browser);

            browser.Navigate(Url);
        }
Пример #21
0
        /// <summary>
        /// create browser
        /// </summary>
        /// <returns></returns>
        private static GeckoWebBrowser CreateBrowserInternal()
        {
            GeckoWebBrowser browser = new GeckoWebBrowser();

            browser.CreateControl();
            return(browser);
        }
Пример #22
0
        private void AdditionalDesignSettings()
        {
            this.Dock = DockStyle.Fill;

            UrlTextBox = new TextBox()
            {
                Width = UsrCntrlBrowser_Table_wrapper.Width, Font = new Font("Arial", 10f)
            };
            GoButton = new Button()
            {
                Text = "Go", Width = 45, FlatStyle = FlatStyle.Flat, Font = new Font("Arial", 9f)
            };
            BackButton = new Button()
            {
                Text = "<", Width = 25, FlatStyle = FlatStyle.Flat
            };
            geckoWebBrowser = new GeckoWebBrowser {
                Dock = DockStyle.Fill
            };
            Gecko.CertOverrideService.GetService().ValidityOverride += MdiMain_UsrControl_Browser_ValidityOverride;


            UsrCntrlBrowser_Table_wrapper.Controls.Add(UrlTextBox, 1, 0);
            UsrCntrlBrowser_Table_wrapper.Controls.Add(GoButton, 2, 0);
            UsrCntrlBrowser_Table_wrapper.Controls.Add(BackButton, 0, 0);
            UsrCntrlBrowser_Table_wrapper.Controls.Add(geckoWebBrowser, 0, 1);
            UsrCntrlBrowser_Table_wrapper.SetColumnSpan(geckoWebBrowser, 3);

            GoButton.Click                 += GoButton_Click;
            BackButton.Click               += BackButton_Click;
            UrlTextBox.KeyPress            += UrlTextBox_KeyPress;
            geckoWebBrowser.DomContextMenu += GeckoWebBrowser_DomContextMenu;
            //geckoWebBrowser.DomMouseOver += GeckoWebBrowser_DomMouseOver;
            //geckoWebBrowser.DomMouseOut += GeckoWebBrowser_DomMouseOut;
        }
Пример #23
0
        public void SpiderMonkeyEntryPointTests()
        {
            foreach (var entryPoint in EntryPoints())
            {
                var dummy = new GeckoWebBrowser();
                dummy.CreateControl();
                var dummyHandle = dummy.Handle;

                // Try us around the using because, AutoJSContext can throw exception caused by the junk arguments we pass to EntryPoints.
                try
                {
                    using (var cx = new AutoJSContext(GlobalJSContextHolder.BackstageJSContext))
                    {
                        entryPoint.Value(IntPtr.Zero);
                    }
                }
                catch (Exception e)
                {
                    if (e is EntryPointNotFoundException)
                    {
                        Assert.Fail(String.Format("{0} EntryPoint is wrong: {1}", entryPoint.Value, e.Message));
                    }
                }
                dummy.Dispose();
            }
        }
        public CSLProcessorOutputConsumer(string script_directory, string citations_javascript, BibliographyReadyDelegate brd, object user_argument)
        {
            WPFDoEvents.AssertThisCodeIsRunningInTheUIThread();

            this.citations_javascript = citations_javascript;
            this.brd           = brd;
            this.user_argument = user_argument;

            // Create the browser
            Logging.Info("Creating web browser for InCite CSL processing");
            web_browser = new GeckoWebBrowser();
            web_browser.CreateControl();

            // Add the name of the script to run
            script_directory = Path.GetFullPath(Path.Combine(script_directory, @"runengine.html"));
            script_directory = script_directory.Replace(@"\\", @"\");
            script_directory = script_directory.Replace(@"//", @"/");

            Uri uri = new Uri(script_directory);

            Logging.Info("CSLProcessorOutputConsumer is about to browse to {0}", uri);

            // This is the only way we can communicate from JavaScript to .NET!!
            web_browser.EnableConsoleMessageNotfication();
            web_browser.ConsoleMessage += web_browser_ConsoleMessage;

            // Kick off citeproc computation
            web_browser.Navigate(uri.ToString());
        }
Пример #25
0
        private static Image ReadBitmap(GeckoWebBrowser webBrowser, CaptureZone captureZone, IActiveDocument activeDocument)
        {
            webBrowser.Stop();

            var rectangle = captureZone.GetZone(activeDocument);

            if (rectangle.Width == 0 || rectangle.Height == 0)
            {
                throw new CaptureEngineException($"Selected zone is 0 area {rectangle}", CaptureEngineState.InvalidCaptureZone);
            }

            try
            {
                return(webBrowser.GetBitmap(
                           (uint)rectangle.X,
                           (uint)rectangle.Y,
                           (uint)rectangle.Width,
                           (uint)rectangle.Height));
            }
            catch (InvalidOperationException)
            {
                throw new CaptureEngineException("Out of memory. Result bitmap size is too large",
                                                 CaptureEngineState.InternalError);
            }
        }
Пример #26
0
        protected void AddTab()
        {
            var tabPage = new TabPage();

            tabPage.Text = "blank";
            var browser = new GeckoWebBrowser();

            browser.Dock            = DockStyle.Fill;
            tabPage.DockPadding.Top = 25;
            tabPage.Dock            = DockStyle.Fill;

            // add a handler showing how to view the DOM
//			browser.DocumentCompleted += (s, e) =>  TestQueryingOfDom(browser);

            // add a handler showing how to modify the DOM.
//			browser.DocumentCompleted += (s, e) => TestModifyingDom(browser);

            AddToolbarAndBrowserToTab(tabPage, browser);

            m_tabControl.TabPages.Add(tabPage);
            tabPage.Show();
            m_tabControl.SelectedTab = tabPage;

            // Uncomment this to stop links from navigating.
            // browser.DomClick += StopLinksNavigating;

            // Demo use of ReadyStateChange.
            browser.ReadyStateChange += (s, e) => this.Text = browser.Document.ReadyState;
        }
        protected virtual void Dispose(bool disposing)
        {
            Logging.Debug("CSLProcessorOutputConsumer::Dispose({0}) @{1}", disposing, dispose_count);

            WPFDoEvents.InvokeInUIThread(() =>
            {
                WPFDoEvents.SafeExec(() =>
                {
                    if (dispose_count == 0)
                    {
                        // Get rid of managed resources
                        web_browser?.Dispose();
                    }
                });

                WPFDoEvents.SafeExec(() =>
                {
                    web_browser = null;

                    brd           = null;
                    user_argument = null;
                });

                WPFDoEvents.SafeExec(() =>
                {
                    position_to_inline.Clear();
                    inline_to_positions.Clear();
                    position_to_text.Clear();
                    bibliography.Clear();
                    logs.Clear();
                });

                ++dispose_count;
            });
        }
Пример #28
0
        /// <summary>
        /// Constructor.
        /// </summary>
        public MGAHtmlHelpDialog(FdoCache cache, Mediator mediator, string sMorphemeForm) : base(cache, mediator, sMorphemeForm)
        {
#if __MonoCS__
            m_browser = new GeckoWebBrowser
            {
                Dock                 = DockStyle.Fill,
                Location             = new Point(0, 0),
                TabIndex             = 1,
                MinimumSize          = new Size(20, 20),
                NoDefaultContextMenu = true
            };
            splitContainerHorizontal.Panel2.Controls.Add(m_browser);
#else
            m_webBrowserInfo = new WebBrowser
            {
                Dock     = DockStyle.Fill,
                Location = new Point(0, 0),
                TabIndex = 1,
                IsWebBrowserContextMenuEnabled = false,
                MinimumSize = new Size(20, 20),
                Name        = "webBrowserInfo",
                WebBrowserShortcutsEnabled = false
            };

            splitContainerHorizontal.Panel2.Controls.Add(m_webBrowserInfo);
#endif
        }
Пример #29
0
        public frm_Main(ObservableCollection <LogEvent> LogEvents)
        {
            InitializeComponent();

            // Initialize Browser
            Xpcom.Initialize("Firefox");

            BrowserContainer browserContainer = new BrowserContainer()
            {
                Dock = DockStyle.Fill
            };

            this.splitContainerControl1.Panel2.Controls.Add(browserContainer);
            this.Browser = browserContainer.Browser;

            Browser.UseHttpActivityObserver   = true;
            Browser.ObserveHttpModifyRequest += Browser_ObserveHttpModifyRequest;
            Browser.DocumentCompleted        += Browser_DocumentCompleted;

            ResponseObserver responseObserver = new ResponseObserver();

            responseObserver.AuthResponseReceived   += ResponseObserver_AuthResponseReceived;
            responseObserver.SearchResponseReceived += ResponseObserver_SearchResponseReceived;;
            ObserverService.AddObserver(responseObserver);

            // Initialize Variables
            this.LogEvents       = LogEvents;
            this.countryWiseData = new Dictionary <string, List <ExportData> >();
        }
Пример #30
0
        //private static bool IsSingleInstance()
        //{
        //    _mutex = new Mutex(false, "RelayMutex");
        //    GC.KeepAlive(_mutex);
        //    try
        //    {
        //        return _mutex.WaitOne(0, false);
        //    }
        //    catch (AbandonedMutexException)
        //    {
        //        _mutex.ReleaseMutex();
        //        return _mutex.WaitOne(0, false);
        //    }
        //}

        protected override void OnStartup(System.Windows.StartupEventArgs e)
        {
            bool createdMutex;

            this.ShutdownMode = IsRelease == true ? ShutdownMode.OnExplicitShutdown : ShutdownMode.OnMainWindowClose;

            _mutex = new Mutex(true, "MyApplicationMutex", out createdMutex);

            GeckoWebBrowser.UseCustomPrompt();
            Xpcom.Initialize(System.AppDomain.CurrentDomain.BaseDirectory + "xulrunner");
            GeckoPreferences.Default["extensions.blocklist.enabled"] = false;
            RenderOptions.ProcessRenderMode = RenderMode.SoftwareOnly;

            if (!createdMutex)
            {
                _mutex = null;
                MessageBox.Show("The application is already running.");
                Application.Current.Shutdown();
                return;
            }
            else
            {
                ;
            }

            base.OnStartup(e);
        }
Пример #31
0
 public static byte[] CapturePng( GeckoWebBrowser browser )
 {
     // TODO req. mono.cairo
     //var src_context = Gdk.CairoHelper.Create(win);
     //var src_surface = src_context.Target;
     //var dst_surface = new Cairo.ImageSurface(Cairo.Format.ARGB32, win.Allocation.Width, win.Allocation.Height);
     //var dst_context = new Cairo.Context(dst_surface);
     //dst_context.SetSourceSurface(src_surface, 0, 0);
     //dst_context.Paint();
     //dst_surface.WriteToPng("screenshot.png");
     return null;
 }
 public static Bitmap CanvasGetBitmap(GeckoWebBrowser browser, uint width, uint height)
 {
     return CanvasGetBitmap(browser, 0, 0, width, height);
 }
 /// <summary>
 /// Capture whole WebBrowser window (Only on MS Windows Platform)
 /// </summary>
 /// <returns></returns>
 public static byte[] CapturePng(GeckoWebBrowser browser)
 {
     return WindowsCapturePng(browser.Handle);
 }
 /// <summary>
 /// Return a Bitmap Image of the current WebBrowsers Rendered page.
 /// </summary>
 /// <param name="xOffset"></param>
 /// <param name="yOffset"></param>
 /// <param name="width">Width of the bitmap</param>
 /// <param name="height">Height of the bitmap</param>
 /// <returns></returns>
 public static Bitmap GetBitmap(GeckoWebBrowser browser, uint xOffset, uint yOffset, uint width, uint height)
 {
     return CanvasGetBitmap(browser, xOffset, yOffset, width, height);
 }
 /// <summary>
 /// Get a bitmap of the current browsers Window.
 /// Works on Visible or InVisible windows.
 /// Not captures plugin (Flash,etc...) windows
 /// </summary>
 /// <param name="xOffset"></param>
 /// <param name="yOffset"></param>
 /// <param name="width">Width length of returned bitmap in pixels</param>
 /// <param name="height">Height length of returned bitmap in pixels</param>
 /// <returns></returns>
 /// <throws>ArgumentException if width or height is zero</throws>
 public static Bitmap CanvasGetBitmap(GeckoWebBrowser browser, uint xOffset, uint yOffset, uint width, uint height)
 {
     var bytes = ImageCreator.CanvasGetPngImage(browser, xOffset, yOffset, width, height);
     //var bytes = browser.CanvasGetPngImage(xOffset, yOffset, width, height);
     return (Bitmap)Image.FromStream(new System.IO.MemoryStream(bytes));
 }