Ejemplo n.º 1
0
        /// <summary>
        /// Creates wrapper for nsIDOMNode object
        /// </summary>
        /// <param name="domObject"></param>
        /// <returns></returns>
        internal static GeckoNode CreateDomNodeWrapper(mozIDOMWindowProxy window, nsIDOMNode domObject)
        {
            // if null -> return null
            if (domObject == null)
            {
                return(null);
            }
            var nodeType = (NodeType) new WebIDL.Node((mozIDOMWindowProxy)window, (nsISupports)domObject).NodeType;

            // by nodeType we can find proper wrapper faster, than perform QueryInterface
            switch (nodeType)
            {
            case NodeType.Element:
                /* /* nsIDOMHTMLElement*/ nsIDOMElement htmlElement = Xpcom.QueryInterface </* /* nsIDOMHTMLElement*/ nsIDOMElement>(domObject);
                if (htmlElement != null)
                {
                    return(GeckoHtmlElement.Create(window, htmlElement));
                }
                nsIDOMElement element = Xpcom.QueryInterface <nsIDOMElement>(domObject);
                if (element != null)
                {
                    return(GeckoElement.CreateDomElementWrapper(window, element));
                }
                break;

            case NodeType.Attribute:
#if PORTFF60
                nsIDOMAttr attr = Xpcom.QueryInterface <nsIDOMAttr>(domObject);
                if (attr != null)
                {
                    return(GeckoAttribute.CreateAttributeWrapper(attr));
                }
#endif
                break;

            case NodeType.Comment:
                nsIDOMComment comment = Xpcom.QueryInterface <nsIDOMComment>(domObject);
                if (comment != null)
                {
                    return(GeckoComment.CreateCommentWrapper(window, comment));
                }
                break;

            case NodeType.DocumentFragment:
                nsIDOMDocumentFragment fragment = Xpcom.QueryInterface <nsIDOMDocumentFragment>(domObject);
                if (fragment != null)
                {
                    return(DOM.DocumentFragment.CreateDocumentFragmentWrapper(window, fragment));
                }
                break;
            }
            // if we don't handle this type - just create GeckoNode
            return(new GeckoNode(window, domObject));
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Creates wrapper for nsIDOMNode object
        /// </summary>
        /// <param name="domObject"></param>
        /// <returns></returns>
        internal static GeckoNode CreateDomNodeWrapper(nsIDOMNode domObject)
        {
            // if null -> return null
            if (domObject == null)
            {
                return(null);
            }
            var nodeType = (NodeType)domObject.GetNodeTypeAttribute();

            // by nodeType we can find proper wrapper faster, than perform QueryInterface
            switch (nodeType)
            {
            case NodeType.Element:
                nsIDOMHTMLElement htmlElement = Xpcom.QueryInterface <nsIDOMHTMLElement>(domObject);
                if (htmlElement != null)
                {
                    return(GeckoHtmlElement.Create(htmlElement));
                }
                nsIDOMElement element = Xpcom.QueryInterface <nsIDOMElement>(domObject);
                if (element != null)
                {
                    return(GeckoElement.CreateDomElementWrapper(element));
                }
                break;

            case NodeType.Attribute:
                nsIDOMAttr attr = Xpcom.QueryInterface <nsIDOMAttr>(domObject);
                if (attr != null)
                {
                    return(GeckoAttribute.CreateAttributeWrapper(attr));
                }
                break;

            case NodeType.Comment:
                nsIDOMComment comment = Xpcom.QueryInterface <nsIDOMComment>(domObject);
                if (comment != null)
                {
                    return(GeckoComment.CreateCommentWrapper(comment));
                }
                break;

            case NodeType.DocumentFragment:
                nsIDOMDocumentFragment fragment = Xpcom.QueryInterface <nsIDOMDocumentFragment>(domObject);
                if (fragment != null)
                {
                    return(DOM.DocumentFragment.CreateDocumentFragmentWrapper(fragment));
                }
                break;
            }
            // if we don't handle this type - just create GeckoNode
            return(new GeckoNode(domObject));
        }
Ejemplo n.º 3
0
        void wb_Navigating(object sender, GeckoNavigatingEventArgs e)
        {
            if (wb.Document != null)
            {
                GeckoElementCollection ec = wb.Document.GetElementsByTagName("INPUT");
                if (ec != null && ec.Count > 0)
                {
                    StringBuilder sb = new StringBuilder();
                    foreach (GeckoElement el in ec)
                    {
                        IEnumerator els = el.Attributes.GetEnumerator();
                        while (els.MoveNext())
                        {
                            GeckoAttribute at = (GeckoAttribute)els.Current;
                            sb.Append(at.Name + " " + at.Value + Environment.NewLine);
                            // type password
                            if (at.Name.ToUpper().Equals("TYPE") && at.Value.ToUpper().Equals("PASSWORD"))
                            {
                                posted = true;
                            }
                        }
                    }
                    Logger.__SpecialLogger("Navigate document text: " + sb.ToString());
                }
            }
            if (loginSuccess)
            {
                wb.Stop();
                MessageBox.Show("Navigating " + BbQuery.BbLoginString);
                //wb.Hide();

                btnCancel_Click(sender, new EventArgs());
                btnCancel.Text = "Logged in";
                return;
            }
            if (wb.IsBusy)
            {
                return;
            }

            loginCookie = wb.Document.Cookie;
            if (loginCookie != null && loginCookie.ToUpper().Contains("SESSION_ID"))
            {
                Logger.__SpecialLogger(authUrl + " login cookie at navigating " + wb.Url.AbsoluteUri + " cookie: " + loginCookie);
                UpdateCookies(loginCookie);
                object[] args = new object[2];
                args[0] = BbQuery.cc;
                args[1] = dt;
                bw.RunWorkerAsync(args);
                while (bw.IsBusy)
                {
                    Application.DoEvents();
                    Thread.Sleep(100);
                }
                loginSuccess = checkLoginStatus(dt);

                if (loginSuccess)
                {
                    wb.Stop();
                    MessageBox.Show("Navigating " + BbQuery.BbLoginString);
                    // wb.Hide();

                    btnCancel_Click(sender, new EventArgs());
                    btnCancel.Text = "Logged in";
                }
            }
        }