예제 #1
0
파일: Navigation.cs 프로젝트: nlhepler/mono
		protected override  void Dispose (bool disposing)
		{
			if (!disposed) {
				if (disposing) {
					this.navigation = null;
				}
			}
			base.Dispose(disposing);
		}		
예제 #2
0
 protected override void Dispose(bool disposing)
 {
     if (!disposed)
     {
         if (disposing)
         {
             this.navigation = null;
         }
     }
     base.Dispose(disposing);
 }
        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 Dispose(bool disposing)
        {
            if (!Environment.HasShutdownStarted && !AppDomain.CurrentDomain.IsFinalizingForUnload())
            {
                // make sure the object is still alove before we call a method on it
                if (Xpcom.QueryInterface<nsIWebNavigation>(WebNav) != null)
                {
                    WebNav.Stop(nsIWebNavigationConstants.STOP_ALL);
                }
                WebNav = null;

                if (Xpcom.QueryInterface<nsIBaseWindow>(BaseWindow) != null)
                {
                    BaseWindow.Destroy();
                }
                BaseWindow = null;
            }

            base.Dispose(disposing);
        }
예제 #5
0
 internal GeckoSessionHistory(nsIWebNavigation webNav)
 {
     WebNav  = webNav;
     History = webNav.GetSessionHistory();
 }
예제 #6
0
 internal GeckoSessionHistory(nsIWebNavigation webNav)
 {
     this.WebNav  = webNav;
     this.History = webNav.GetSessionHistoryAttribute();
 }
예제 #7
0
        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);
        }
예제 #8
0
        public static nsIWebNavigation GetProxy(Mono.WebBrowser.IWebBrowser control, nsIWebNavigation obj)
        {
            object o = Base.GetProxyForObject(control, typeof(nsIWebNavigation).GUID, obj);

            return(o as nsIWebNavigation);
        }
        protected override void Dispose(bool disposing)
        {
            // If GC thread is calling Dispose
            if (!disposing)
            {
                Debug.WriteLine("Warning: GeckoWebBrowser control not disposed.");
                if (!IsHandleCreated)
                    return;
                Invoke(new BaseTypes.Action(Cleanup), new object[] { });
                base.Dispose(disposing);
                return;
            }


            //var count = Gecko.Interop.ComDebug.GetRefCount(WebBrowser);
            if (NavigateFinishedNotifier != null)
                NavigateFinishedNotifier.Dispose();

            if (!Environment.HasShutdownStarted && !AppDomain.CurrentDomain.IsFinalizingForUnload())
            {
                // make sure the object is still alive before we call a method on it
                if (WebNav != null)
                {
                    var webNav = Xpcom.QueryInterface<nsIWebNavigation>(WebNav);
                    if (webNav != null)
                    {
                        webNav.Stop((int)nsIWebNavigationConsts.STOP_ALL);
                        Marshal.ReleaseComObject(webNav);
                    }
                    WebNav = null;
                }
                Cleanup();
            }

#if GTK			
			if (m_wrapper != null)
				m_wrapper.Dispose();
#endif
            //count = Gecko.Interop.ComDebug.GetRefCount(WebBrowser);            
            base.Dispose(disposing);
        }
예제 #10
0
 public Navigation(WebBrowser control, nsIWebNavigation webNav) : base(control)
 {
     this.navigation = webNav;
 }
예제 #11
0
        protected override void Dispose(bool disposing)
        {
            // make sure the object is still alove before we call a method on it
            if (Xpcom.QueryInterface<nsIWebNavigation>(WebNav) != null)
            {
                WebNav.Stop(nsIWebNavigationConstants.STOP_ALL);
            }
            WebNav = null;

            if (Xpcom.QueryInterface<nsIBaseWindow>(BaseWindow) != null)
            {
                BaseWindow.Destroy();
            }
            BaseWindow = null;

            base.Dispose(disposing);
        }
예제 #12
0
파일: Navigation.cs 프로젝트: nlhepler/mono
		public Navigation (WebBrowser control, nsIWebNavigation webNav) : base (control)
		{
			this.navigation = webNav;
		}
예제 #13
0
        public void Open(string url)
        {
            nsIWebNavigation webnav = (nsIWebNavigation)this.window;

            webnav.loadURI(url, (uint)LoadFlags.None, null, null, null);
        }
예제 #14
0
		public static nsIWebNavigation GetProxy (Mono.WebBrowser.IWebBrowser control, nsIWebNavigation obj)
		{
			object o = Base.GetProxyForObject (control, typeof(nsIWebNavigation).GUID, obj);
			return o as nsIWebNavigation;
		}