예제 #1
0
 internal nsWebBrowserFocus(object webFocus)
 {
     _webFocus = webFocus as nsIWebBrowserFocus;
 }
        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);
        }
예제 #3
0
		public static nsIWebBrowserFocus GetProxy (Mono.WebBrowser.IWebBrowser control, nsIWebBrowserFocus obj)
		{
			object o = Base.GetProxyForObject (control, typeof(nsIWebBrowserFocus).GUID, obj);
			return o as nsIWebBrowserFocus;
		}
예제 #4
0
		internal nsWebBrowserFocus(object webFocus)
		{
			_webFocus = webFocus as nsIWebBrowserFocus;
		}
		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();
				//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<nsIDOMWindow2>(WebBrowser.GetContentDOMWindowAttribute()).GetWindowRootAttribute();
				
				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("keypress"), 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);
				target.AddEventListener(new nsAString("compositionstart"), this, true);
				target.AddEventListener(new nsAString("compositionend"), this, true);
				target.AddEventListener(new nsAString("contextmenu"), this, true);
				target.AddEventListener(new nsAString("DOMMouseScroll"), this, true);
				target.AddEventListener(new nsAString("focus"), this, true);
				// Load event added here rather than DOMDocument as DOMDocument recreated when navigating
				// this losing attached listener.
				target.AddEventListener(new nsAString("load"), this, true);
				
				// 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);
		}
예제 #6
0
        public static nsIWebBrowserFocus GetProxy(Mono.WebBrowser.IWebBrowser control, nsIWebBrowserFocus obj)
        {
            object o = Base.GetProxyForObject(control, typeof(nsIWebBrowserFocus).GUID, obj);

            return(o as nsIWebBrowserFocus);
        }
예제 #7
0
        public void Focus()
        {
            nsIWebBrowserFocus focus = (nsIWebBrowserFocus)this.window;

            focus.setFocusedWindow(this.window);
        }