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