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);
}