Diff for /chimera/GeckoUtils.h between versions 1.3 and 1.4

version 1.3, 2002/03/10 19:26:16 version 1.4, 2002/04/14 00:08:17
Line 38 Line 38
 #ifndef __GeckoUtils_h__  #ifndef __GeckoUtils_h__
 #define __GeckoUtils_h__  #define __GeckoUtils_h__
   
   #include "nsIDOMHTMLAnchorElement.h"
   #include "nsIDOMHTMLAreaElement.h"
   #include "nsIDOMHTMLLinkElement.h"
   #include "nsIDOMHTMLImageElement.h"
   #include "nsIDOMCharacterData.h"
   
 class GeckoUtils  class GeckoUtils
 {  {
 public:  public:
Line 100  public: Line 106  public:
     text.CompressWhitespace();      text.CompressWhitespace();
     aResult = text;      aResult = text;
   };    };
   
     static void GetEnclosingLinkElementAndHref(nsIDOMNode* aNode, nsIDOMElement** aLinkContent, nsString& aHref)
     {
       nsCOMPtr<nsIDOMElement> content(do_QueryInterface(aNode));
       nsAutoString localName;
       if (content)
         content->GetLocalName(localName);
   
       nsCOMPtr<nsIDOMElement> linkContent;
       ToLowerCase(localName);
       nsAutoString href;
       if (localName.Equals(NS_LITERAL_STRING("a")) ||
           localName.Equals(NS_LITERAL_STRING("area")) ||
           localName.Equals(NS_LITERAL_STRING("link"))) {
         PRBool hasAttr;
         content->HasAttribute(NS_LITERAL_STRING("href"), &hasAttr);
         if (hasAttr) {
           linkContent = content;
           nsCOMPtr<nsIDOMHTMLAnchorElement> anchor(do_QueryInterface(linkContent));
           if (anchor)
             anchor->GetHref(href);
           else {
             nsCOMPtr<nsIDOMHTMLAreaElement> area(do_QueryInterface(linkContent));
             if (area)
               area->GetHref(href);
             else {
               nsCOMPtr<nsIDOMHTMLLinkElement> link(do_QueryInterface(linkContent));
               if (link)
                 link->GetHref(href);
             }
           }
         }
       }
       else {
         nsCOMPtr<nsIDOMNode> curr = aNode;
         nsCOMPtr<nsIDOMNode> temp = curr;
         temp->GetParentNode(getter_AddRefs(curr));
         while (curr) {
           content = do_QueryInterface(curr);
           if (!content)
             break;
           content->GetLocalName(localName);
           ToLowerCase(localName);
           if (localName.Equals(NS_LITERAL_STRING("a"))) {
             PRBool hasAttr;
             content->HasAttribute(NS_LITERAL_STRING("href"), &hasAttr);
             if (hasAttr) {
               linkContent = content;
               nsCOMPtr<nsIDOMHTMLAnchorElement> anchor(do_QueryInterface(linkContent));
               if (anchor)
                 anchor->GetHref(href);
             }
             else
               linkContent = nsnull; // Links can't be nested.
             break;
           }
   
           temp = curr;
           temp->GetParentNode(getter_AddRefs(curr));
         }
       }
   
       *aLinkContent = linkContent;
       NS_IF_ADDREF(*aLinkContent);
   
       aHref = href;
     }
 };  };
   
   

Removed from v.1.3  
changed lines
  Added in v.1.4


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>