protected override void OnHandleCreated(EventArgs e) { if (!this.DesignMode) { Xpcom.Initialize(); #if !NO_CUSTOM_PROMPT_SERVICE PromptServiceFactory.Register(); #endif WindowCreator.Register(); //CertificateDialogsFactory.Register(); //ToolTipTextProviderFactory.Register(); WebBrowser = Xpcom.CreateInstance<nsIWebBrowser>("@mozilla.org/embedding/browser/nsWebBrowser;1"); WebBrowserFocus = (nsIWebBrowserFocus)WebBrowser; BaseWindow = (nsIBaseWindow)WebBrowser; WebNav = (nsIWebNavigation)WebBrowser; WebBrowser.SetContainerWindow(this); //int type = ((this.ChromeFlags & (int)GeckoWindowFlags.OpenAsChrome) != 0) ? nsIDocShellTreeItemConstants.typeChromeWrapper : nsIDocShellTreeItemConstants.typeContentWrapper; //nsIDocShellTreeItem shellTreeItem = Xpcom.QueryInterface<nsIDocShellTreeItem>(WebBrowser); //if (shellTreeItem != null) // shellTreeItem.SetItemType(type); //else //{ // nsIDocShellTreeItem19 treeItem19 = Xpcom.QueryInterface<nsIDocShellTreeItem19>(WebBrowser); // if (treeItem19 != null) // treeItem19.SetItemType(type); //} BaseWindow.InitWindow(this.Handle, IntPtr.Zero, 0, 0, this.Width, this.Height); BaseWindow.Create(); Guid nsIWebProgressListenerGUID = typeof(nsIWebProgressListener).GUID; WebBrowser.AddWebBrowserListener(this, ref nsIWebProgressListenerGUID); nsIDOMEventTarget target = Xpcom.QueryInterface<nsIDOMWindow2>(WebBrowser.GetContentDOMWindow()).GetWindowRoot(); target.AddEventListener(new nsAString("submit"), this, true); target.AddEventListener(new nsAString("keydown"), this, true); target.AddEventListener(new nsAString("keyup"), this, true); target.AddEventListener(new nsAString("mousemove"), this, true); target.AddEventListener(new nsAString("mouseover"), this, true); target.AddEventListener(new nsAString("mouseout"), this, true); target.AddEventListener(new nsAString("mousedown"), this, true); target.AddEventListener(new nsAString("mouseup"), this, true); target.AddEventListener(new nsAString("click"), this, true); // history WebNav.GetSessionHistory().AddSHistoryListener(this); BaseWindow.SetVisibility(true); if ((this.ChromeFlags & (int)GeckoWindowFlags.OpenAsChrome) == 0) { // navigating to about:blank allows drag & drop to work properly before a page has been loaded into the browser Navigate("about:blank"); } // this fix prevents the browser from crashing if the first page loaded is invalid (missing file, invalid URL, etc) Document.Cookie = ""; } base.OnHandleCreated(e); }
protected override void OnHandleCreated(EventArgs e) { #if GTK if (Xpcom.IsMono) { base.OnHandleCreated(e); m_wrapper.Init(); } #endif if (!this.DesignMode) { Xpcom.Initialize(); #if !NO_CUSTOM_PROMPT_SERVICE PromptServiceFactory.Register(); #endif WindowCreator.Register(); LauncherDialogFactory.Register(); //CertificateDialogsFactory.Register(); //ToolTipTextProviderFactory.Register(); WebBrowser = Xpcom.CreateInstance<nsIWebBrowser>("@mozilla.org/embedding/browser/nsWebBrowser;1"); WebBrowserFocus = (nsIWebBrowserFocus)WebBrowser; BaseWindow = (nsIBaseWindow)WebBrowser; WebNav = (nsIWebNavigation)WebBrowser; WebBrowser.SetContainerWindowAttribute(this); //int type = ((this.ChromeFlags & (int)GeckoWindowFlags.OpenAsChrome) != 0) ? nsIDocShellTreeItemConstants.typeChromeWrapper : nsIDocShellTreeItemConstants.typeContentWrapper; //nsIDocShellTreeItem shellTreeItem = Xpcom.QueryInterface<nsIDocShellTreeItem>(WebBrowser); //if (shellTreeItem != null) // shellTreeItem.SetItemType(type); //else //{ // nsIDocShellTreeItem19 treeItem19 = Xpcom.QueryInterface<nsIDocShellTreeItem19>(WebBrowser); // if (treeItem19 != null) // treeItem19.SetItemType(type); //} #if GTK if (Xpcom.IsMono) BaseWindow.InitWindow(m_wrapper.BrowserWindow.Handle, IntPtr.Zero, 0, 0, this.Width, this.Height); else #endif BaseWindow.InitWindow(this.Handle, IntPtr.Zero, 0, 0, this.Width, this.Height); BaseWindow.Create(); Guid nsIWebProgressListenerGUID = typeof(nsIWebProgressListener).GUID; WebBrowser.AddWebBrowserListener(this, ref nsIWebProgressListenerGUID); nsIDOMEventTarget target = Xpcom.QueryInterface<nsIDOMWindow>(WebBrowser.GetContentDOMWindowAttribute()).GetWindowRootAttribute(); target.AddEventListener(new nsAString("submit"), this, true, true, 2); target.AddEventListener(new nsAString("keydown"), this, true, true, 2); target.AddEventListener(new nsAString("keyup"), this, true, true, 2); target.AddEventListener(new nsAString("keypress"), this, true, true, 2); target.AddEventListener(new nsAString("mousemove"), this, true, true, 2); target.AddEventListener(new nsAString("mouseover"), this, true, true, 2); target.AddEventListener(new nsAString("mouseout"), this, true, true, 2); target.AddEventListener(new nsAString("mousedown"), this, true, true, 2); target.AddEventListener(new nsAString("mouseup"), this, true, true, 2); target.AddEventListener(new nsAString("click"), this, true, true, 2); target.AddEventListener(new nsAString("dblclick"), this, true, true, 2); target.AddEventListener(new nsAString("compositionstart"), this, true, true, 2); target.AddEventListener(new nsAString("compositionend"), this, true, true, 2); target.AddEventListener(new nsAString("contextmenu"), this, true, true, 2); target.AddEventListener(new nsAString("DOMMouseScroll"), this, true, true, 2); target.AddEventListener(new nsAString("focus"), this, true, true, 2); // Load event added here rather than DOMDocument as DOMDocument recreated when navigating // ths losing attached listener. target.AddEventListener(new nsAString("load"), this, true, true, 2); target.AddEventListener(new nsAString("change"), this, true, true, 2); // history if (WebNav.GetSessionHistoryAttribute() != null) WebNav.GetSessionHistoryAttribute().AddSHistoryListener(this); BaseWindow.SetVisibilityAttribute(true); // this fix prevents the browser from crashing if the first page loaded is invalid (missing file, invalid URL, etc) Document.Cookie = ""; } base.OnHandleCreated(e); }