Merge commit from 3.1a1 release branch
authorDave Townsend <dtownsend@oxymoronical.com>
Fri, 25 Jul 2008 12:43:43 -0400
changeset 16210 c1d7e318a27574c995631fec166ad42672475702
parent 16209 afc4ee509d9ca3bb4031015c3c22963dcb4b7e7f (current diff)
parent 16208 8fda6cca7d249d78779aa441879ee5e965709153 (diff)
child 16211 ad4d7873c58a19ff5934e1b9afcc0e795925e6f2
push idunknown
push userunknown
push dateunknown
milestone1.9.1a2pre
Merge commit from 3.1a1 release branch
browser/locales/en-US/chrome/help/accessibility.xhtml
browser/locales/en-US/chrome/help/cookies.xhtml
browser/locales/en-US/chrome/help/customization.xhtml
browser/locales/en-US/chrome/help/download_manager.xhtml
browser/locales/en-US/chrome/help/firebird-toc.rdf
browser/locales/en-US/chrome/help/firebirdhelp.rdf
browser/locales/en-US/chrome/help/firefox_welcome.xhtml
browser/locales/en-US/chrome/help/forieusers.xhtml
browser/locales/en-US/chrome/help/glossary.xhtml
browser/locales/en-US/chrome/help/menu_reference.xhtml
browser/locales/en-US/chrome/help/mouse_shortcuts.xhtml
browser/locales/en-US/chrome/help/platformStrings.dtd
browser/locales/en-US/chrome/help/popup.xhtml
browser/locales/en-US/chrome/help/prefs.xhtml
browser/locales/en-US/chrome/help/search-db.rdf
browser/locales/en-US/chrome/help/shortcuts.xhtml
browser/locales/en-US/chrome/help/tabbed_browsing.xhtml
browser/locales/en-US/chrome/help/using_firebird.xhtml
browser/locales/en-US/extra-jar.mn
gfx/cairo/cairo/src/cairo-debug.h
gfx/cairo/libpixman/src/pixman-combine.c
gfx/cairo/libpixman/src/pixman-remap.h
--- a/.hgtags
+++ b/.hgtags
@@ -1,4 +1,6 @@
 df7a3c8ffeeaba229067efee5a20e21dae0dd877 MOZILLA_1_9_a4_BASE
 4209e16b58411750ac73f761023e46b76b793e2c MOZILLA_1_9_a6_BASE
 66a5c7bce7ee86a820d3c0d54fa07cb719be751c MOZILLA_1_9_a7_BASE
 caeba7562e495a9f604984df0b48b6f99bec3e2e FENNEC_M4
+9d9941eacb14827fdab4716710042fdde84eb60d FIREFOX_3_1a1_RELEASE
+9d9941eacb14827fdab4716710042fdde84eb60d FIREFOX_3_1a1_BUILD1
--- a/accessible/public/msaa/ISimpleDOMDocument.idl
+++ b/accessible/public/msaa/ISimpleDOMDocument.idl
@@ -87,40 +87,32 @@ cpp_quote("// * See latest W3C CSS specs
 cpp_quote("//")
 cpp_quote("//")
 cpp_quote("///////////////////////////////////////////////////////////////////////////////////////////////////////")
 cpp_quote("")
 cpp_quote("")
 
 import "objidl.idl";
 import "oaidl.idl";
-        
-        
-const long DISPID_DOC_URL         = -5904;
-const long DISPID_DOC_TITLE       = -5905;
-const long DISPID_DOC_MIMETYPE    = -5906;
-const long DISPID_DOC_DOCTYPE     = -5907;
-const long DISPID_DOC_NAMESPACE   = -5908;
-const long DISPID_DOC_MEDIATYPES  = -5909;
 
 [object, uuid(0D68D6D0-D93D-4d08-A30D-F00DD1F45B24)]
 interface ISimpleDOMDocument : IUnknown
 {
-  [propget, id(DISPID_DOC_URL)] HRESULT URL(
+  [propget] HRESULT URL(
     [out, retval] BSTR * url
   );
-  [propget, id(DISPID_DOC_TITLE)] HRESULT title(
+  [propget] HRESULT title(
     [out, retval] BSTR * title
   );
-  [propget, id(DISPID_DOC_MIMETYPE)] HRESULT mimeType(
+  [propget] HRESULT mimeType(
     [out, retval] BSTR * mimeType
   );
-  [propget, id(DISPID_DOC_DOCTYPE)] HRESULT docType(
+  [propget] HRESULT docType(
     [out, retval] BSTR * docType
   );
-  [propget, id(DISPID_DOC_NAMESPACE)] HRESULT nameSpaceURIForID(
+  [propget] HRESULT nameSpaceURIForID(
     [in]  short nameSpaceID,
     [out, retval] BSTR * nameSpaceURI
   );
-  [propput, id(DISPID_DOC_MEDIATYPES)] HRESULT alternateViewMediaTypes(
+  [propput] HRESULT alternateViewMediaTypes(
     [in] BSTR * commaSeparatedMediaTypes
 	);
 }
--- a/accessible/public/msaa/ISimpleDOMNode.idl
+++ b/accessible/public/msaa/ISimpleDOMNode.idl
@@ -128,23 +128,19 @@ cpp_quote("// Returns the computed langu
 cpp_quote("//")
 cpp_quote("//")
 cpp_quote("///////////////////////////////////////////////////////////////////////////////////////////////////////")
 cpp_quote("")
 cpp_quote("")
 
 import "objidl.idl";
 import "oaidl.idl";
-        
-const long DISPID_NODE_NODEINFO   = -5900;
-const long DISPID_NODE_ATTRIBUTES = -5901;
-const long DISPID_NODE_ATTRIBUTESFORNAMES = -5902;
-const long DISPID_NODE_COMPSTYLE  = -5903;
-const long DISPID_NODE_COMPSTYLEFORPROPS = -5904;
-const long DISPID_NODE_LANGUAGE = -5905;
+
+import "ISimpleDOMText.idl";
+import "ISimpleDOMDocument.idl";
 
 [object, uuid(1814ceeb-49e2-407f-af99-fa755a7d2607)]
 interface ISimpleDOMNode : IUnknown
 {
   const unsigned short NODETYPE_ELEMENT = 1;
   const unsigned short NODETYPE_ATTRIBUTE = 2;
   const unsigned short NODETYPE_TEXT = 3;
   const unsigned short NODETYPE_CDATA_SECTION = 4;
@@ -152,49 +148,49 @@ interface ISimpleDOMNode : IUnknown
   const unsigned short NODETYPE_ENTITY = 6;
   const unsigned short NODETYPE_PROCESSING_INSTRUCTION = 7;
   const unsigned short NODETYPE_COMMENT = 8;
   const unsigned short NODETYPE_DOCUMENT = 9;
   const unsigned short NODETYPE_DOCUMENT_TYPE = 10;
   const unsigned short NODETYPE_DOCUMENT_FRAGMENT = 11;
   const unsigned short NODETYPE_NOTATION = 12;
 
-  [propget, id(DISPID_NODE_NODEINFO)] HRESULT nodeInfo(
+  [propget] HRESULT nodeInfo(
     [out] BSTR *nodeName,   // for performance returns NULL for text nodes (true nodeName would be "#text")
     [out] short *nameSpaceID,
     [out] BSTR *nodeValue,
     [out] unsigned int *numChildren,
     [out] unsigned int *uniqueID, // In Win32 accessible events we generate, the target's childID matches to this
     [out, retval] unsigned short *nodeType
   );
 
-  [propget, id(DISPID_NODE_ATTRIBUTES)] HRESULT attributes(  
+  [propget] HRESULT attributes(  
     [in] unsigned short maxAttribs,
     [out, size_is(maxAttribs), length_is(*numAttribs)] BSTR *attribNames, 
     [out, size_is(maxAttribs), length_is(*numAttribs)] short *nameSpaceID,  
     [out, size_is(maxAttribs), length_is(*numAttribs)] BSTR *attribValues,
     [out, retval] unsigned short *numAttribs
   );
 
-  [propget, id(DISPID_NODE_ATTRIBUTESFORNAMES)] HRESULT attributesForNames(  
+  [propget] HRESULT attributesForNames(  
     [in] unsigned short numAttribs,
     [in, size_is(numAttribs), length_is(numAttribs)] BSTR *attribNames, 
     [in, size_is(numAttribs), length_is(numAttribs)] short *nameSpaceID,  
     [out, retval, size_is(numAttribs), length_is(numAttribs)] BSTR *attribValues
   );
 
-  [propget, id(DISPID_NODE_COMPSTYLE)] HRESULT computedStyle(  
+  [propget] HRESULT computedStyle(  
     [in] unsigned short maxStyleProperties,
     [in] boolean useAlternateView,  // If TRUE, returns properites for media as set in nsIDOMDocument::set_alternateViewMediaTypes
     [out, size_is(maxStyleProperties), length_is(*numStyleProperties)] BSTR *styleProperties, 
     [out, size_is(maxStyleProperties), length_is(*numStyleProperties)] BSTR *styleValues,
     [out, retval] unsigned short *numStyleProperties
   );
 
-  [propget, id(DISPID_NODE_COMPSTYLEFORPROPS)] HRESULT computedStyleForProperties(  
+  [propget] HRESULT computedStyleForProperties(  
     [in] unsigned short numStyleProperties, 
     [in] boolean useAlternateView,  // If TRUE, returns properites for media as set in nsIDOMDocument::set_alternateViewMediaTypes
     [in, size_is(numStyleProperties), length_is(numStyleProperties)] BSTR *styleProperties, 
     [out, retval, size_is(numStyleProperties), length_is(numStyleProperties)] BSTR *styleValues
   );
 
   HRESULT scrollTo([in] boolean placeTopLeft);
 
@@ -205,12 +201,23 @@ interface ISimpleDOMNode : IUnknown
   [propget] HRESULT nextSibling([out, retval] ISimpleDOMNode **node);
   [propget] HRESULT childAt([in] unsigned childIndex, 
                             [out, retval] ISimpleDOMNode **node);
 
   [propget] HRESULT innerHTML([out, retval] BSTR *innerHTML);
 
   [propget, local] HRESULT localInterface([out][retval] void **localInterface);
 
-  [propget, id(DISPID_NODE_LANGUAGE)] HRESULT language([out, retval] BSTR *language);
+  [propget] HRESULT language([out, retval] BSTR *language);
 }
 
 
+[
+    uuid(a6245497-9c0b-4449-85a5-bd6ad07df8ea), 
+    helpstring("ISimpleDOM Type Library")
+] 
+library ISimpleDOM 
+{
+  interface ISimpleDOMNode;
+  interface ISimpleDOMText;
+  interface ISimpleDOMDocument;
+};
+
--- a/accessible/public/msaa/Makefile.in
+++ b/accessible/public/msaa/Makefile.in
@@ -93,17 +93,17 @@ OS_LIBS = \
 	$(NULL)
 
 $(MIDL_GENERATED_FILES): done_gen
 
 done_gen: ISimpleDOMNode.idl \
           ISimpleDOMDocument.idl \
           ISimpleDOMText.idl
 
-	$(MIDL) $(MIDL_FLAGS) -Oicf $(srcdir)/ISimpleDOMNode.idl
+	$(MIDL) $(MIDL_FLAGS) -I $(srcdir) -Oicf $(srcdir)/ISimpleDOMNode.idl
 	$(MIDL) $(MIDL_FLAGS) -Oicf $(srcdir)/ISimpleDOMDocument.idl
 	$(MIDL) $(MIDL_FLAGS) -Oicf $(srcdir)/ISimpleDOMText.idl
 	touch $@
 
 EXPORTS = \
 	ISimpleDOMNode.h \
 	ISimpleDOMNode_i.c \
 	ISimpleDOMDocument.h \
--- a/accessible/src/base/nsAccessNode.cpp
+++ b/accessible/src/base/nsAccessNode.cpp
@@ -186,18 +186,17 @@ NS_IMETHODIMP nsAccessNode::Init()
     do_QueryInterface(docAccessible);
   NS_ASSERTION(privateDocAccessible, "No private docaccessible for docaccessible");
   privateDocAccessible->CacheAccessNode(uniqueID, this);
 
   // Make sure an ancestor in real content is cached
   // so that nsDocAccessible::RefreshNodes() can find the anonymous subtree to release when
   // the root node goes away
   nsCOMPtr<nsIContent> content = do_QueryInterface(mDOMNode);
-  if (content && (content->IsNativeAnonymous() ||
-                  content->GetBindingParent())) {
+  if (content && content->IsInAnonymousSubtree()) {
     // Specific examples of where this is used: <input type="file"> and <xul:findbar>
     nsCOMPtr<nsIAccessible> parentAccessible;
     docAccessible->GetAccessibleInParentChain(mDOMNode, PR_TRUE, getter_AddRefs(parentAccessible));
     if (parentAccessible) {
       PRInt32 childCountUnused;
       parentAccessible->GetChildCount(&childCountUnused);
     }
   }
--- a/accessible/src/base/nsAccessibilityUtils.cpp
+++ b/accessible/src/base/nsAccessibilityUtils.cpp
@@ -787,29 +787,28 @@ nsAccUtils::FindNeighbourPointingToNode(
 
 nsIContent*
 nsAccUtils::FindNeighbourPointingToNode(nsIContent *aForNode, 
                                         nsIAtom **aRelationAttrs,
                                         PRUint32 aAttrNum,
                                         nsIAtom *aTagName,
                                         PRUint32 aAncestorLevelsToSearch)
 {
-  nsCOMPtr<nsIContent> binding;
   nsAutoString controlID;
   if (!nsAccUtils::GetID(aForNode, controlID)) {
-    binding = aForNode->GetBindingParent();
-    if (binding == aForNode)
+    if (!aForNode->IsInAnonymousSubtree())
       return nsnull;
 
     aForNode->GetAttr(kNameSpaceID_None, nsAccessibilityAtoms::anonid, controlID);
     if (controlID.IsEmpty())
       return nsnull;
   }
 
   // Look for label in subtrees of nearby ancestors
+  nsCOMPtr<nsIContent> binding(aForNode->GetBindingParent());
   PRUint32 count = 0;
   nsIContent *labelContent = nsnull;
   nsIContent *prevSearched = nsnull;
 
   while (!labelContent && ++count <= aAncestorLevelsToSearch &&
          (aForNode = aForNode->GetParent()) != nsnull) {
 
     if (aForNode == binding) {
--- a/accessible/src/base/nsDocAccessible.cpp
+++ b/accessible/src/base/nsDocAccessible.cpp
@@ -1755,19 +1755,18 @@ void nsDocAccessible::RefreshNodes(nsIDO
         children->GetLength(&childCount);
       nsCOMPtr<nsIDOMNode> possibleAnonNode;
       for (PRUint32 index = 0; index < childCount; index++) {
         nsCOMPtr<nsIAccessNode> childAccessNode;
         children->QueryElementAt(index, NS_GET_IID(nsIAccessNode),
                                  getter_AddRefs(childAccessNode));
         childAccessNode->GetDOMNode(getter_AddRefs(possibleAnonNode));
         nsCOMPtr<nsIContent> iterContent = do_QueryInterface(possibleAnonNode);
-        if (iterContent && (iterContent->IsNativeAnonymous() ||
-                            iterContent->GetBindingParent())) {
-          // GetBindingParent() check is a perf win -- make sure we don't
+        if (iterContent && iterContent->IsInAnonymousSubtree()) {
+          // IsInAnonymousSubtree() check is a perf win -- make sure we don't
           // shut down the same subtree twice since we'll reach non-anon content via
           // DOM traversal later in this method
           RefreshNodes(possibleAnonNode);
         }
       }
     }
   }
 
--- a/accessible/src/base/nsTextUtils.cpp
+++ b/accessible/src/base/nsTextUtils.cpp
@@ -84,17 +84,18 @@ static nsCSSTextAttrMapItem gCSSTextAttr
   { "color",             kAnyValue,       kCopyName,                  kCopyValue },
   { "font-family",       kAnyValue,       kCopyName,                  kCopyValue },
   { "font-size",         kAnyValue,       kCopyName,                  kCopyValue },
   { "font-style",        kAnyValue,       kCopyName,                  kCopyValue },
   { "font-weight",       kAnyValue,       kCopyName,                  kCopyValue },
   { "text-decoration",   "line-through",  "text-line-through-style",  "solid" },
   { "text-decoration",   "underline",     "text-underline-style",     "solid" },
   { "text-align",        kAnyValue,       kCopyName,                  kCopyValue },
-  { "text-indent",       kAnyValue,       kCopyName,                  kCopyValue }
+  { "text-indent",       kAnyValue,       kCopyName,                  kCopyValue },
+  { "vertical-align",    kAnyValue,       "text-position",            kCopyValue }
 };
 
 nsCSSTextAttr::nsCSSTextAttr(PRBool aIncludeDefAttrValue, nsIDOMElement *aElm,
                              nsIDOMElement *aRootElm) :
   mIndex(-1), mIncludeDefAttrValue(aIncludeDefAttrValue)
 {
   nsAccessNode::GetComputedStyleDeclaration(EmptyString(), aElm,
                                             getter_AddRefs(mStyleDecl));
--- a/accessible/src/html/nsHyperTextAccessible.cpp
+++ b/accessible/src/html/nsHyperTextAccessible.cpp
@@ -635,17 +635,19 @@ nsresult nsHyperTextAccessible::DOMPoint
   // Get accessible for this findNode, or if that node isn't accessible, use the
   // accessible for the next DOM node which has one (based on forward depth first search)
   nsCOMPtr<nsIAccessible> descendantAccessible;
   if (findNode) {
     nsCOMPtr<nsIContent> findContent = do_QueryInterface(findNode);
     if (findContent->IsNodeOfType(nsINode::eHTML) && 
         findContent->NodeInfo()->Equals(nsAccessibilityAtoms::br)) {
       nsIContent *parent = findContent->GetParent();
-      if (parent && parent->IsNativeAnonymous() && parent->GetChildCount() == 1) {
+      if (parent &&
+          parent->IsRootOfNativeAnonymousSubtree() &&
+          parent->GetChildCount() == 1) {
         // This <br> is the only node in a text control, therefore it is the hacky
         // "bogus node" used when there is no text in a control
         *aHyperTextOffset = 0;
         return NS_OK;
       }
     }
     descendantAccessible = GetFirstAvailableAccessible(findNode);
   }
@@ -879,16 +881,19 @@ BOUNDARY_LINE_START       From the line 
 BOUNDARY_LINE_END         From the line end before/at/after the offset to the next line start.
 */
 
 nsresult nsHyperTextAccessible::GetTextHelper(EGetTextType aType, nsAccessibleTextBoundary aBoundaryType,
                                               PRInt32 aOffset, PRInt32 *aStartOffset, PRInt32 *aEndOffset,
                                               nsAString &aText)
 {
   aText.Truncate();
+
+  NS_ENSURE_ARG_POINTER(aStartOffset);
+  NS_ENSURE_ARG_POINTER(aEndOffset);
   *aStartOffset = *aEndOffset = 0;
 
   nsCOMPtr<nsIPresShell> presShell = GetPresShell();
   if (!presShell) {
     return NS_ERROR_FAILURE;
   }
 
   if (aOffset == nsIAccessibleText::TEXT_OFFSET_END_OF_TEXT) {
@@ -916,16 +921,62 @@ nsresult nsHyperTextAccessible::GetTextH
         -- aOffset;  // We are at the start of a line
       }
     }
   }
   else if (aOffset < 0) {
     return NS_ERROR_FAILURE;
   }
 
+  nsSelectionAmount amount;
+  PRBool needsStart = PR_FALSE;
+  switch (aBoundaryType) {
+    case BOUNDARY_CHAR:
+      amount = eSelectCharacter;
+      if (aType == eGetAt)
+        aType = eGetAfter; // Avoid returning 2 characters
+      break;
+
+    case BOUNDARY_WORD_START:
+      needsStart = PR_TRUE;
+      amount = eSelectWord;
+      break;
+
+    case BOUNDARY_WORD_END:
+      amount = eSelectWord;
+      break;
+
+    case BOUNDARY_LINE_START:
+      // Newlines are considered at the end of a line. Since getting
+      // the BOUNDARY_LINE_START gets the text from the line-start to the next
+      // line-start, the newline is included at the end of the string.
+      needsStart = PR_TRUE;
+      amount = eSelectLine;
+      break;
+
+    case BOUNDARY_LINE_END:
+      // Newlines are considered at the end of a line. Since getting
+      // the BOUNDARY_END_START gets the text from the line-end to the next
+      //line-end, the newline is included at the beginning of the string.
+      amount = eSelectLine;
+      break;
+
+    case BOUNDARY_ATTRIBUTE_RANGE:
+    {
+      nsresult rv = GetTextAttributes(PR_FALSE, aOffset,
+                                      aStartOffset, aEndOffset, nsnull);
+      NS_ENSURE_SUCCESS(rv, rv);
+      
+      return GetText(*aStartOffset, *aEndOffset, aText);
+    }
+
+    default:  // Note, sentence support is deprecated and falls through to here
+      return NS_ERROR_INVALID_ARG;
+  }
+
   PRInt32 startOffset = aOffset + (aBoundaryType == BOUNDARY_LINE_END);  // Avoid getting the previous line
   PRInt32 endOffset = startOffset;
 
   // Convert offsets to frame-relative
   nsCOMPtr<nsIAccessible> startAcc;
   nsIFrame *startFrame = GetPosAndText(startOffset, endOffset, nsnull, nsnull,
                                        nsnull, getter_AddRefs(startAcc));
 
@@ -943,70 +994,16 @@ nsresult nsHyperTextAccessible::GetTextH
       return aOffset > textLength ? NS_ERROR_FAILURE : NS_OK;
     }
     else {
       // We're on the last continuation since we're on the last character
       startFrame = startFrame->GetLastContinuation();
     }
   }
 
-  nsSelectionAmount amount;
-  PRBool needsStart = PR_FALSE;
-  switch (aBoundaryType)
-  {
-  case BOUNDARY_CHAR:
-    amount = eSelectCharacter;
-    if (aType == eGetAt) {
-      aType = eGetAfter; // Avoid returning 2 characters
-    }
-    break;
-  case BOUNDARY_WORD_START:
-    needsStart = PR_TRUE;
-    amount = eSelectWord;
-    break;
-  case BOUNDARY_WORD_END:
-    amount = eSelectWord;
-    break;
-  case BOUNDARY_LINE_START:
-    // Newlines are considered at the end of a line,
-    // Since getting the BOUNDARY_LINE_START gets the text from the line-start
-    // to the next line-start, the newline is included at the end of the string
-    needsStart = PR_TRUE;
-    amount = eSelectLine;
-    break;
-  case BOUNDARY_LINE_END:
-    // Newlines are considered at the end of a line,
-    // Since getting the BOUNDARY_END_START gets the text from the line-end
-    // to the next line-end, the newline is included at the beginning of the string
-    amount = eSelectLine;
-    break;
-  case BOUNDARY_ATTRIBUTE_RANGE:
-    {
-      // XXX We should merge identically formatted frames
-      // XXX deal with static text case
-      // XXX deal with boundary type
-      nsIContent *textContent = startFrame->GetContent();
-      // If not text, then it's represented by an embedded object char 
-      // (length of 1)
-      // XXX did this mean to check for eTEXT?
-      // XXX This is completely wrong, needs to be reimplemented
-      PRInt32 textLength = textContent ? textContent->TextLength() : 1;
-      if (textLength < 0) {
-        return NS_ERROR_FAILURE;
-      }
-      *aStartOffset = aOffset - startOffset;
-      *aEndOffset = *aStartOffset + textLength;
-      startOffset = *aStartOffset;
-      endOffset = *aEndOffset;
-      return GetText(startOffset, endOffset, aText);
-    }
-  default:  // Note, sentence support is deprecated and falls through to here
-    return NS_ERROR_INVALID_ARG;
-  }
-
   PRInt32 finalStartOffset, finalEndOffset;
 
   // If aType == eGetAt we'll change both the start and end offset from
   // the original offset
   if (aType == eGetAfter) {
     finalStartOffset = aOffset;
   }
   else {
@@ -1115,53 +1112,56 @@ nsHyperTextAccessible::GetTextAttributes
 
   NS_ENSURE_ARG_POINTER(aStartOffset);
   *aStartOffset = 0;
 
   NS_ENSURE_ARG_POINTER(aEndOffset);
   nsresult rv = GetCharacterCount(aEndOffset);
   NS_ENSURE_SUCCESS(rv, rv);
 
-  NS_ENSURE_ARG_POINTER(aAttributes);
-  *aAttributes = nsnull;
+  if (aAttributes) {
+    *aAttributes = nsnull;
 
-  nsCOMPtr<nsIPersistentProperties> attributes =
-    do_CreateInstance(NS_PERSISTENTPROPERTIES_CONTRACTID);
-  NS_ENSURE_TRUE(attributes, NS_ERROR_OUT_OF_MEMORY);
+    nsCOMPtr<nsIPersistentProperties> attributes =
+      do_CreateInstance(NS_PERSISTENTPROPERTIES_CONTRACTID);
+    NS_ENSURE_TRUE(attributes, NS_ERROR_OUT_OF_MEMORY);
 
-  NS_ADDREF(*aAttributes = attributes);
+    NS_ADDREF(*aAttributes = attributes);
+  }
 
   if (!mDOMNode)
     return NS_ERROR_FAILURE;
 
   nsCOMPtr<nsIDOMNode> node;
   PRInt32 nodeOffset = 0;
   rv = HypertextOffsetToDOMPoint(aOffset, getter_AddRefs(node), &nodeOffset);
   NS_ENSURE_SUCCESS(rv, rv);
 
   // Set 'misspelled' text attribute.
   rv = GetSpellTextAttribute(node, nodeOffset, aStartOffset, aEndOffset,
-                             *aAttributes);
+                             aAttributes ? *aAttributes : nsnull);
   NS_ENSURE_SUCCESS(rv, rv);
 
   nsCOMPtr<nsIContent> content(do_QueryInterface(node));
   if (content && content->IsNodeOfType(nsINode::eELEMENT))
     node = do_QueryInterface(content->GetChildAt(nodeOffset));
 
   if (!node)
     return NS_OK;
 
   // Set 'lang' text attribute.
   rv =  GetLangTextAttributes(aIncludeDefAttrs, node,
-                              aStartOffset, aEndOffset, *aAttributes);
+                              aStartOffset, aEndOffset,
+                              aAttributes ? *aAttributes : nsnull);
   NS_ENSURE_SUCCESS(rv, rv);
 
   // Set CSS based text attributes.
   rv = GetCSSTextAttributes(aIncludeDefAttrs, node,
-                            aStartOffset, aEndOffset, *aAttributes);
+                            aStartOffset, aEndOffset,
+                            aAttributes ? *aAttributes : nsnull);
   return rv;
 }
 
 // nsIPersistentProperties
 // nsIAccessibleText::defaultTextAttributes
 NS_IMETHODIMP
 nsHyperTextAccessible::GetDefaultTextAttributes(nsIPersistentProperties **aAttributes)
 {
@@ -2224,18 +2224,20 @@ nsHyperTextAccessible::GetSpellTextAttri
                                           &endHTOffset);
       NS_ENSURE_SUCCESS(rv, rv);
 
       if (startHTOffset > *aHTStartOffset)
         *aHTStartOffset = startHTOffset;
       if (endHTOffset < *aHTEndOffset)
         *aHTEndOffset = endHTOffset;
 
-      nsAccUtils::SetAccAttr(aAttributes, nsAccessibilityAtoms::invalid,
-                             NS_LITERAL_STRING("spelling"));
+      if (aAttributes) {
+        nsAccUtils::SetAccAttr(aAttributes, nsAccessibilityAtoms::invalid,
+                               NS_LITERAL_STRING("spelling"));
+      }
 
       return NS_OK;
     }
   }
 
   return NS_OK;
 }
 
@@ -2254,23 +2256,25 @@ nsHyperTextAccessible::GetLangTextAttrib
 
   nsAutoString lang;
   nsAccUtils::GetLanguageFor(content, rootContent, lang);
 
   nsAutoString rootLang;
   nsresult rv = GetLanguage(rootLang);
   NS_ENSURE_SUCCESS(rv, rv);
 
-  // Expose 'language' text attribute if the DOM 'lang' attribute is
-  // presented and it's different from the 'lang' attribute on the root
-  // element or we should include default values of text attribute.
-  const nsAString& resultLang = lang.IsEmpty() ? rootLang : lang;
-  if (!resultLang.IsEmpty() && (aIncludeDefAttrs || lang != rootLang))
-    nsAccUtils::SetAccAttr(aAttributes, nsAccessibilityAtoms::language,
-                           resultLang);
+  if (aAttributes) {
+    // Expose 'language' text attribute if the DOM 'lang' attribute is
+    // presented and it's different from the 'lang' attribute on the root
+    // element or we should include default values of text attribute.
+    const nsAString& resultLang = lang.IsEmpty() ? rootLang : lang;
+    if (!resultLang.IsEmpty() && (aIncludeDefAttrs || lang != rootLang))
+      nsAccUtils::SetAccAttr(aAttributes, nsAccessibilityAtoms::language,
+                             resultLang);
+  }
 
   nsLangTextAttr textAttr(lang, rootContent);
   return GetRangeForTextAttr(aSourceNode, &textAttr,
                              aStartHTOffset, aEndHTOffset);
 }
 
 // nsHyperTextAccessible
 nsresult
@@ -2282,17 +2286,17 @@ nsHyperTextAccessible::GetCSSTextAttribu
 {
   nsCOMPtr<nsIDOMElement> sourceElm(nsAccUtils::GetDOMElementFor(aSourceNode));
   nsCOMPtr<nsIDOMElement> rootElm(nsAccUtils::GetDOMElementFor(mDOMNode));
 
   nsCSSTextAttr textAttr(aIncludeDefAttrs, sourceElm, rootElm);
   while (textAttr.iterate()) {
     nsCAutoString name;
     nsAutoString value, oldValue;
-    if (textAttr.get(name, value))
+    if (aAttributes && textAttr.get(name, value))
       aAttributes->SetStringProperty(name, value, oldValue);
 
     nsresult rv = GetRangeForTextAttr(aSourceNode, &textAttr,
                                       aStartHTOffset, aEndHTOffset);
     NS_ENSURE_SUCCESS(rv, rv);
   }
 
   return NS_OK;
--- a/accessible/src/html/nsHyperTextAccessible.h
+++ b/accessible/src/html/nsHyperTextAccessible.h
@@ -282,50 +282,50 @@ protected:
    * then we expose only range offsets where text is not misspelled. The method
    * is used by GetTextAttributes() method.
    *
    * @param aIncludeDefAttrs  [in] points whether text attributes having default
    *                          values of attributes should be included
    * @param aSourceNode       [in] the node we start to traverse from
    * @param aStartOffset      [in, out] the start offset
    * @param aEndOffset        [in, out] the end offset
-   * @param aAttributes       [out] result attributes
+   * @param aAttributes       [out, optional] result attributes
    */
   nsresult GetSpellTextAttribute(nsIDOMNode *aNode, PRInt32 aNodeOffset,
                                  PRInt32 *aStartOffset,
                                  PRInt32 *aEndOffset,
                                  nsIPersistentProperties *aAttributes);
 
   /**
    * Set 'lang' text attribute and return range offsets where attibute is
    * stretched. The method is used by GetTextAttributes() method.
    *
    * @param aIncludeDefAttrs  [in] points whether text attributes having default
    *                          values of attributes should be included
    * @param aSourceNode       [in] the node we start to traverse from
    * @param aStartOffset      [in, out] the start offset
    * @param aEndOffset        [in, out] the end offset
-   * @param aAttributes       [out] result attributes
+   * @param aAttributes       [out, optional] result attributes
    */
   nsresult GetLangTextAttributes(PRBool aIncludeDefAttrs,
                                  nsIDOMNode *aSourceNode,
                                  PRInt32 *aStartOffset,
                                  PRInt32 *aEndOffset,
                                  nsIPersistentProperties *aAttributes);
 
   /**
    * Set CSS based text attribute and return range offsets where attibutes are
    * stretched. The method is used by GetTextAttributes() method.
    *
    * @param aIncludeDefAttrs  [in] points whether text attributes having default
    *                          values of attributes should be included
    * @param aSourceNode       [in] the node we start to traverse from
    * @param aStartOffset      [in, out] the start offset
    * @param aEndOffset        [in, out] the end offset
-   * @param aAttributes       [out] result attributes
+   * @param aAttributes       [out, optional] result attributes
    */
   nsresult GetCSSTextAttributes(PRBool aIncludeDefAttrs,
                                 nsIDOMNode *aSourceNode,
                                 PRInt32 *aStartOffset,
                                 PRInt32 *aEndOffset,
                                 nsIPersistentProperties *aAttributes);
 
   /**
--- a/accessible/tests/mochitest/test_textattrs.html
+++ b/accessible/tests/mochitest/test_textattrs.html
@@ -62,60 +62,63 @@
       } catch (e) {
       }
 
       if (!attrs) {
         ok(false, "Can't get text attributes for " + aID);
         return;
       }
 
+      var errorMsg = " for " + aID + "at offset " + aOffset;
       is(startOffset.value, aStartOffset,
-         "Wrong start offset for " + aID);
+         "Wrong start offset" + errorMsg);
       is(endOffset.value, aEndOffset,
-          "Wrong end offset for " + aID);
+          "Wrong end offset" + errorMsg);
 
-      compareTextAttrs(aID, attrs, aAttrs);
+      compareTextAttrs(errorMsg, attrs, aAttrs);
 
       var defAttrs = null;
       try{
         defAttrs = accessible.defaultTextAttributes;
       } catch (e) {
       }
 
       if (!defAttrs) {
         ok(false, "Can't get default attributes for " + aID);
         return;
       }
 
-      compareTextAttrs(aID, defAttrs, aDefAttrs);
+      compareTextAttrs(errorMsg, defAttrs, aDefAttrs);
     }
 
-    function compareTextAttrs(aID, aAttrs, aExpectedAttrs)
+    function compareTextAttrs(aErrorMsg, aAttrs, aExpectedAttrs)
     {
       var enumerate = aAttrs.enumerate();
       while (enumerate.hasMoreElements()) {
         var prop = enumerate.getNext().
           QueryInterface(Components.interfaces.nsIPropertyElement);
 
         if (!(prop.key in aExpectedAttrs))
-          ok(false, "Unexpected attribute '" + prop.key + "' for " + aID);
+          ok(false,
+             "Unexpected attribute '" + prop.key + "'" + aErrorMsg);
         else
           is(prop.value, aExpectedAttrs[prop.key],
-             "Attribute '" + prop.key + "' has wrong value for " + aID);
+             "Attribute '" + prop.key + "' has wrong value" + aErrorMsg);
       }
 
       for (var name in aExpectedAttrs) {
         var value = "";
         try {
           value = aAttrs.getStringProperty(name);
         } catch(e) {
         }
 
         if (!value)
-          ok(false, "There is no expected attribute '" + name + "' for " + aID);
+          ok(false,
+             "There is no expected attribute '" + name + "'" + aErrorMsg);
       }
     }
 
     var gObserverService = null;
     var gA11yEventObserver = null;
 
     function testSpellTextAttrs()
     {
@@ -137,17 +140,17 @@
 
       // Add accessibility event listeners
       var gObserverService = Components.classes["@mozilla.org/observer-service;1"].
                             getService(nsIObserverService);
 
       gObserverService.addObserver(gA11yEventObserver, "accessible-event",
                                   false);
 
-      ID = "area7";
+      ID = "area8";
   
       var node = document.getElementById(ID);
       node.focus();
 
       var editor = node.QueryInterface(nsIDOMNSEditableElement).editor;
       var spellchecker = editor.getInlineSpellChecker(true);
       spellchecker.enableRealTimeSpell = true;
 
@@ -156,17 +159,18 @@
           var defAttrs = {
             "font-style": "normal",
             "text-align": "start",
             "font-size": "11px",
             "background-color": "rgb(255, 255, 255)",
             "font-weight": "400",
             "text-indent": "0px",
             "color": "rgb(0, 0, 0)",
-            "font-family": "Lucida Grande"
+            "font-family": "Lucida Grande",
+            "text-position": "baseline"
           };
 
           var attrs = { "background-color": "transparent" };
           var misspelledAttrs = {
             "background-color": "transparent",
             "invalid": "spelling"
           };
 
@@ -196,17 +200,18 @@
       var defAttrs = {
         "font-style": "normal",
         "text-align": "start",
         "font-size": "16px",
         "background-color": "transparent",
         "font-weight": "400",
         "text-indent": "0px",
         "color": "rgb(0, 0, 0)",
-        "font-family": "serif"
+        "font-family": "serif",
+        "text-position": "baseline"
       };
 
       var attrs = {};
       testTextAttrs(ID, 0, attrs, 0, 7, defAttrs);
 
       attrs = {"font-weight": "401"};
       testTextAttrs(ID, 7, attrs, 7, 11, defAttrs);
 
@@ -219,17 +224,18 @@
       defAttrs = {
         "font-style": "normal",
         "text-align": "start",
         "font-size": "16px",
         "background-color": "transparent",
         "font-weight": "400",
         "text-indent": "0px",
         "color": "rgb(0, 0, 0)",
-        "font-family": "serif"
+        "font-family": "serif",
+        "text-position": "baseline"
       };
 
       attrs = {};
       testTextAttrs(ID, 0, attrs, 0, 7, defAttrs);
 
       attrs = {"font-weight": "401"};
       testTextAttrs(ID, 7, attrs, 7, 12, defAttrs);
 
@@ -248,17 +254,18 @@
       defAttrs = {
         "font-style": "normal",
         "text-align": "start",
         "font-size": "16px",
         "background-color": "transparent",
         "font-weight": "400",
         "text-indent": "0px",
         "color": "rgb(0, 0, 0)",
-        "font-family": "serif"
+        "font-family": "serif",
+        "text-position": "baseline"
       };
 
       attrs = {"color": "rgb(0, 128, 0)"};
       testTextAttrs(ID, 0, attrs, 0, 6, defAttrs);
 
       attrs = {"color": "rgb(255, 0, 0)"};
       testTextAttrs(ID, 6, attrs, 6, 26, defAttrs);
 
@@ -271,17 +278,18 @@
       defAttrs = {
         "font-style": "normal",
         "text-align": "start",
         "font-size": "16px",
         "background-color": "transparent",
         "font-weight": "400",
         "text-indent": "0px",
         "color": "rgb(0, 0, 0)",
-        "font-family": "serif"
+        "font-family": "serif",
+        "text-position": "baseline"
       };
 
       attrs = {"color": "rgb(0, 128, 0)"};
       testTextAttrs(ID, 0, attrs, 0, 16, defAttrs);
 
       attrs = {"color": "rgb(255, 0, 0)"};
       testTextAttrs(ID, 16, attrs, 16, 33, defAttrs);
 
@@ -294,43 +302,84 @@
       defAttrs = {
         "font-style": "normal",
         "text-align": "start",
         "font-size": "16px",
         "background-color": "transparent",
         "font-weight": "400",
         "text-indent": "0px",
         "color": "rgb(0, 0, 0)",
-        "font-family": "serif"
+        "font-family": "serif",
+        "text-position": "baseline"
       };
 
       attrs = {"color": "rgb(0, 128, 0)"};
       testTextAttrs(ID, 0, attrs, 0, 5, defAttrs);
 
       attrs = {};
       testTextAttrs(ID, 7, attrs, 5, 8, defAttrs);
 
       attrs = {"color": "rgb(255, 0, 0)"};
       testTextAttrs(ID, 9, attrs, 8, 11, defAttrs);
 
       attrs = {};
       testTextAttrs(ID, 11, attrs, 11, 18, defAttrs);
 
       //////////////////////////////////////////////////////////////////////////
-      // area6
+      // area6 (CSS vertical-align property, bug 445938)
       ID = "area6";
       defAttrs = {
         "font-style": "normal",
         "text-align": "start",
         "font-size": "16px",
         "background-color": "transparent",
         "font-weight": "400",
         "text-indent": "0px",
         "color": "rgb(0, 0, 0)",
-        "font-family": "serif"
+        "font-family": "serif",
+        "text-position": "baseline"
+      };
+
+      attrs = {};
+      testTextAttrs(ID, 0, attrs, 0, 5, defAttrs);
+
+      attrs = {"text-position": "super", "font-size": "13px" };
+      testTextAttrs(ID, 5, attrs, 5, 13, defAttrs);
+
+      attrs = {};
+      testTextAttrs(ID, 13, attrs, 13, 27, defAttrs);
+
+      attrs = {"text-position": "super" };
+      testTextAttrs(ID, 27, attrs, 27, 35, defAttrs);
+
+      attrs = {};
+      testTextAttrs(ID, 35, attrs, 35, 39, defAttrs);
+
+      attrs = {"text-position": "sub", "font-size": "13px" };
+      testTextAttrs(ID, 39, attrs, 39, 50, defAttrs);
+
+      attrs = {};
+      testTextAttrs(ID, 50, attrs, 50, 55, defAttrs);
+
+      attrs = {"text-position": "sub" };
+      testTextAttrs(ID, 55, attrs, 55, 64, defAttrs);
+
+      //////////////////////////////////////////////////////////////////////////
+      // area7
+      ID = "area7";
+      defAttrs = {
+        "font-style": "normal",
+        "text-align": "start",
+        "font-size": "16px",
+        "background-color": "transparent",
+        "font-weight": "400",
+        "text-indent": "0px",
+        "color": "rgb(0, 0, 0)",
+        "font-family": "serif",
+        "text-position": "baseline"
       };
 
       attrs = {"language": "ru"};
       testTextAttrs(ID, 0, attrs, 0, 12, defAttrs);
 
       attrs = {"language": "en"};
       testTextAttrs(ID, 12, attrs, 12, 13, defAttrs);
 
@@ -398,23 +447,30 @@
       Green again
     </span>
   </p>
   <p id="area5">
     <span style="color: green">Green</span>
     <img src="moz.png" alt="image"/>
     <span style="color: red">Red</span>Normal
   </p>
-  <p lang="en" id="area6">
+  <p id="area6">
+    This <sup>sentence</sup> has the word 
+    <span style="vertical-align:super;">sentence</span> in 
+    <sub>superscript</sub> and 
+    <span style="vertical-align:sub;">subscript</span>
+  </p>
+
+  <p lang="en" id="area7">
     <span lang="ru">Привет</span>
     <span style="background-color: blue">Blue BG color</span>
     <span lang="de">Ich bin/Du bist</span>
     <span lang="en">
       Normal
       <span style="color: magenta">Magenta<b>Bold</b>Magenta</span>
     </span>
   </p>
 
-  <input id="area7" value="valid text inalid tixt"/>
+  <input id="area8" value="valid text inalid tixt"/>
 
   <p id="output"/>
 </body>
 </html>
--- a/browser/app/module.ver
+++ b/browser/app/module.ver
@@ -1,8 +1,8 @@
 WIN32_MODULE_COMPANYNAME=Mozilla Corporation
 WIN32_MODULE_COPYRIGHT=Firefox and Mozilla Developers, according to the MPL 1.1/GPL 2.0/LGPL 2.1 licenses, as applicable.
 WIN32_MODULE_PRODUCTVERSION=3,1,0,0
-WIN32_MODULE_PRODUCTVERSION_STRING=3.1a1
+WIN32_MODULE_PRODUCTVERSION_STRING=3.1a2pre
 WIN32_MODULE_TRADEMARKS=Firefox is a Trademark of The Mozilla Foundation.
 WIN32_MODULE_DESCRIPTION=Firefox
 WIN32_MODULE_PRODUCTNAME=Firefox
 WIN32_MODULE_NAME=Firefox
--- a/browser/components/places/content/treeView.js
+++ b/browser/components/places/content/treeView.js
@@ -934,16 +934,21 @@ PlacesTreeView.prototype = {
     this._ensureValidRow(aRow);
 
     var node = this._visibleElements[aRow].node;
     if (PlacesUtils.nodeIsContainer(node)) {
       // the root node is always expandable
       if (!node.parent)
         return true;
 
+      // Flat-lists may ignore expandQueries and other query options when
+      // they are asked to open a container.
+      if (this._flatList)
+        return true;
+
       // treat non-expandable childless queries as non-containers
       if (PlacesUtils.nodeIsQuery(node)) {
         var parent = node.parent;
         if((PlacesUtils.nodeIsQuery(parent) ||
             PlacesUtils.nodeIsFolder(parent)) &&
            !node.hasChildren)
           return asQuery(parent).queryOptions.expandQueries;
       }
--- a/browser/components/places/src/nsPlacesTransactionsService.js
+++ b/browser/components/places/src/nsPlacesTransactionsService.js
@@ -892,24 +892,36 @@ placesSortFolderByNameTransactions.proto
       else
         preSep.push(item);
     }
     if (preSep.length > 0) {
       preSep.sort(sortingMethod);
       newOrder = newOrder.concat(preSep);
     }
 
-    // set the nex indexs
-    for (var i = 0; i < count; ++i)
-      PlacesUtils.bookmarks.setItemIndex(newOrder[i].itemId, i);
+    // set the nex indexes
+    var callback = {
+      runBatched: function() {
+        for (var i = 0; i < newOrder.length; ++i) {
+          PlacesUtils.bookmarks.setItemIndex(newOrder[i].itemId, i);
+        }
+      }
+    };
+    PlacesUtils.bookmarks.runInBatchMode(callback, null);
   },
 
   undoTransaction: function PSSFBN_undoTransaction() {
-    for (item in this._oldOrder)
-      PlacesUtils.bookmarks.setItemIndex(item, this._oldOrder[item]);
+    var callback = {
+      _self: this,
+      runBatched: function() {
+        for (item in this._self._oldOrder)
+          PlacesUtils.bookmarks.setItemIndex(item, this._self._oldOrder[item]);
+      }
+    };
+    PlacesUtils.bookmarks.runInBatchMode(callback, null);
   }
 };
 
 function placesTagURITransaction(aURI, aTags) {
   this._uri = aURI;
   this._tags = aTags;
   this._unfiledItemId = -1;
   this.redoTransaction = this.doTransaction;
--- a/browser/components/preferences/main.xul
+++ b/browser/components/preferences/main.xul
@@ -158,16 +158,17 @@
         <hbox id="saveToRow">
           <radio id="saveTo" value="true"
                  label="&saveTo.label;"
                  accesskey="&saveTo.accesskey;"
                  aria-labelledby="saveTo downloadFolder"/>
           <filefield id="downloadFolder" flex="1"
                      preference="browser.download.folderList"
                      preference-editable="true"
+                     aria-labelledby="saveTo"
                      onsyncfrompreference="return gMainPane.displayDownloadDirPref();"
                      onsynctopreference="return gMainPane.getFolderListPref()"/>
           <button id="chooseFolder" oncommand="gMainPane.chooseFolder();"
 #ifdef XP_MACOSX
                   accesskey="&chooseFolderMac.accesskey;"
                   label="&chooseFolderMac.label;"
 #else
                   accesskey="&chooseFolderWin.accesskey;"
--- a/browser/config/version.txt
+++ b/browser/config/version.txt
@@ -1,1 +1,1 @@
-3.1a1
+3.1a2pre
deleted file mode 100644
--- a/browser/locales/en-US/chrome/help/accessibility.xhtml
+++ /dev/null
@@ -1,277 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
-  "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"[
-  <!ENTITY % brandDTD SYSTEM "chrome://branding/locale/brand.dtd" >
-  %brandDTD;
-  <!ENTITY % platformDTD SYSTEM
-    "chrome://browser/locale/help/platformStrings.dtd" >
-  %platformDTD;
-]>
-<!--
-Contributors:
-  Mark Pilgrim <pilgrim@gmail.com> (original author)
--->
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<title>Accessibility Features of &brandFullName;</title>
-<link rel="stylesheet" type="text/css"
-  href="chrome://help/skin/helpFileLayout.css"/>
-</head>
-
-<body>
-
-  <h1>Accessibility Features of &brandFullName;</h1>
-
-  <p>&brandShortName; includes many features to make the browser and web
-    content accessible to all users, including those who have low vision, no
-    vision, or limited ability to use a keyboard or mouse.</p>
-
-  <div class="contentsBox">In this section:
-    <ul>
-    <li><a href="#using_a_keyboard">Using a Keyboard</a></li>
-    <li><a href="#using_a_mouse">Using a Mouse</a></li>
-    <li><a href="#fonts_and_colors">Fonts and Colors</a></li>
-    <li><a href="#controlling_web_content">Controlling Web Content</a></li>
-    <li><a href="#compatibility_with_assistive_technologies">Compatibility
-      with Assistive Technologies</a></li>
-    <li><a href="#finding_help_online">Finding Help Online</a></li>
-    </ul>
-  </div>
-
-  <h2 id="using_a_keyboard">Using a Keyboard</h2>
-
-  <h3 id="keyboard_shortcuts">Keyboard Shortcuts</h3>
-
-  <p>A list of common keyboard shortcuts is available in
-    <a href="shortcuts.xhtml">&brandShortName; Keyboard Shortcuts</a>.
-    Online, you can find <a target="_blank"
-    href="http://www.mozilla.org/support/firefox/keyboard">a comparison
-    chart of keyboard shortcuts</a> implemented in &brandShortName;,
-    Microsoft Internet Explorer, and Opera.</p>
-
-  <h3 id="always_use_cursor_keys">Always use the cursor keys to navigate within
-    webpages</h3>
-
-  <p><a href="prefs.xhtml#accessibility">Always use the cursor keys to navigate
-    within webpages</a> allows you to move through web content as if
-    you were inside a read-only editor.
-    You can use the keyboard to select web content and copy it to the
-    clipboard.  You can enable this feature by selecting &pref.menuPath;,
-    opening the <em>General</em> tab in the <em>Advanced</em> panel,
-    and checking the <em>Always use the cursor keys to navigate within webpages
-    </em> &pref.singular;.</p>
-
-  <p>You can press <kbd>F7</kbd> at any time to turn this feature on or
-    off.  When you press <kbd>F7</kbd>, &brandShortName; will
-    ask if you really want to turn on this feature.  You can disable
-    this prompt by selecting <em>Don't show this dialog again.</em></p>
-
-  <h3 id="find_as_you_type">Search for text when I start typing</h3>
-
-  <p><a href="prefs.xhtml#accessibility">Search for text when I start typing</a>
-    allows you to quickly navigate to text or hyperlinks in a web page.  This
-    feature has two modes. Press <abbr title="forward slash"><kbd>/</kbd></abbr>
-    and start typing to search all text on the current page, or press
-    <abbr title="apostrophe"><kbd>'</kbd></abbr> before your string to search
-    hyperlinks only.  &brandShortName; will highlight matching text or hyperlinks
-    as you type.</p>
-
-  <p>The following keyboard shortcuts control this feature:</p>
-
-  <ul>
-    <li>Type more characters to narrow your search.  &brandShortName;
-      will highlight the next matching hyperlink or text or alert you
-      that nothing matched.</li>
-    <li>Press &accelKey;+<kbd>G</kbd> or <kbd>F3</kbd> to find the next
-      occurrence of your current search string.</li>
-    <li>Press &accelKey;+&shiftKey;+<kbd>G</kbd> or &shiftKey;+<kbd>F3</kbd>
-      to find the previous occurrence of your current search string.</li>
-    <li>Press <kbd>Backspace</kbd> to undo the last character you typed.
-      &brandShortName; will back up to the previously highlighted text.</li>
-    <li>Press <kbd>Esc</kbd> to cancel a search.  You can also cancel
-      a search by changing focus, scrolling the page with the mouse or
-      keyboard, or simply waiting for the timeout.</li>
-  </ul>
-
-  <p>You can change the default behavior of this feature by selecting
-    &pref.menuPath;, opening the <em>General</em> tab of the <em>Advanced</em>
-    panel, and checking the <em>Search for text when I start typing</em>
-    &pref.singular;.  If this option is checked, you can start typing at any
-    time to auto-start an inline search. By default auto-started searches look
-    for all text on the page. You can still explicitly press
-    <abbr title="apostrophe"><kbd>'</kbd></abbr> or
-    <abbr title="forward slash"><kbd>/</kbd></abbr> to start finding
-    in one mode or the other.</p>
-
-  <p>You can use this feature to get to buttons, text boxes and other
-    form controls.  Search for the text immediately before the form control
-    you want and press <kbd>Tab</kbd>. Pressing <kbd>Tab</kbd> automatically
-    exits the search and sets focus to the next form field or button
-    after the highlighted text.</p>
-
-  <h2 id="using_a_mouse">Using a Mouse</h2>
-
-  <h3 id="common_mouse_shortcuts">Common Mouse Shortcuts</h3>
-
-  <p>A list of common mouse shortcuts is available in
-    <a href="mouse_shortcuts.xhtml">&brandShortName; Mouse
-    Shortcuts</a>.</p>
-
-  <h2 id="fonts_and_colors">Fonts and Colors</h2>
-
-  <h3 id="overriding_page_fonts">Overriding Page Fonts</h3>
-
-  <p>Some web sites may display text in fonts that are difficult to read,
-    and other sites may rely on the browser's default fonts.  You can set
-    your default fonts by going to &pref.menuPath;, selecting the
-    <em>Content</em> panel, and selecting a default font and size in the
-    <em>Fonts &amp; Colors</em> section.</p>
-
-  <p>You can specify default fonts for different styles, including serif,
-    sans-serif, and monospace by clicking the <em>Advanced</em> button.
-    However, many web pages specify their own fonts, so your choices
-    will have no effect on such pages.  To override the fonts defined by
-    such pages, uncheck the <em>Allow pages to choose their own fonts, instead
-    of my selections above</em> &pref.singular;.</p>
-
-  <p>Note that some web pages may display incorrectly depending on your
-    choice of a default font.</p>
-
-  <h3 id="setting_a_minimum_font_size">Setting a Minimum Font Size</h3>
-
-  <p>Some web sites may display text which is too small to read
-    comfortably.  To make such pages easier to read, you can set a minimum
-    font size. On web pages that try to display text smaller than this
-    size, &brandShortName; will enlarge the text to your chosen size.</p>
-
-  <p>To set a minimum font size, go to &pref.menuPath;, select the
-    <em>Content</em> panel, and click the <em>Advanced</em> button in the
-    <em>Fonts &amp; Colors</em> section.  You can specify a minimum font
-    size from the dropdown menu.</p>
-
-  <p>Note that some web pages may display incorrectly depending on your
-    choice of a minimum font size.</p>
-
-  <h3 id="resizing_page_text">Resizing Page Text</h3>
-
-  <p>You can temporarily change the size of text on any web page in the
-    <span class="menuPath">View &gt; Text Size</span> menu.  The new
-    size will remain in effect until you close your browser window or
-    tab, even if you navigate to a different web site.</p>
-
-  <p>The following keyboard shortcuts control text size:</p>
-
-  <ul>
-    <li>Press &accelKey;+<kbd><abbr title="plus">+</abbr></kbd> to
-      increase the text size.  This zooms the text to 120% of its original
-      size, then 150%, 200%, 300%, 450%, 675%, 1013%, and 1519%.</li>
-    <li>Press &accelKey;+<kbd><abbr title="minus">-</abbr></kbd> to
-      decrease the text size.  This zooms the text to 90% of its original
-      size, then 50%, 33%, 22%, 15%, 10%, 7%, 4%, 3%, 2%, and 1%.</li>
-    <li>Press &accelKey;+<kbd>0</kbd> to reset the text size to the web
-      page's default size.</li>
-  </ul>
-
-  <p>Note that some web pages may display incorrectly if you increase or
-      decrease the text size.</p>
-
-  <h3 id="overriding_page_colors">Overriding Page Colors</h3>
-
-  <p>Some web sites may display text and background colors that are
-    difficult to read, and other sites may rely on the browser's default
-    colors.  You can set your default colors by going to &pref.menuPath;,
-    selecting the <em>Content</em> panel, and clicking the <em>Colors</em>
-    button in the <em>Fonts &amp; Colors</em> section.  You can set
-    default text and background colors, as well as default colors for
-    visited and unvisited hyperlinks.  You can also specify whether
-    hyperlinks should be underlined.</p>
-
-  <p>However, many web pages set their own colors, so your choices will
-    have no effect.  To override the colors defined by web pages, uncheck
-    the <em>Allow pages to choose their own colors, instead of my
-    selections above</em> &pref.singular;.</p>
-
-  <div class="noMac">
-
-    <h3 id="using_a_high_contrast_theme">Using a High Contrast Theme</h3>
-
-    <p>&brandShortName; automatically detects if you are using a High
-      Contrast theme and displays everything in your high contrast color
-      scheme.  This overrides all other other browser or web page
-      settings, and it affects the &brandShortName; interface itself (all
-      menus, windows, and dialog boxes) and the content of any web page
-      you visit.</p>
-
-    <p class="win">To use a High Contrast theme, go to
-      <span class="menuPath">Start Menu &gt; Control Panel &gt;
-      Accessibility Options &gt; Display</span> and check the
-      <em>Use High Contrast</em> &pref.singular;.</p>
-
-  </div>
-
-  <h2 id="controlling_web_content">Controlling Web Content</h2>
-
-  <h3 id="blocking_popup_windows">Blocking Pop-up Windows</h3>
-
-  <p>See <a href="popup.xhtml">Controlling Pop-ups</a> for information on
-    blocking pop-up windows.</p>
-
-  <h3 id="turning_off_java_applets">Turning Off Java Applets</h3>
-
-  <p>Some web pages provide a rich interactive experience with Java&trade;
-    applets.  However, some users that rely on keyboard navigation may
-    experience problems with some Java applets that automatically set
-    focus and do not provide a way to <q>break out</q> of the applet and
-    navigate to the rest of the web page.  If this is a problem for you,
-    you can disable Java by going to &pref.menuPath;, selecting the
-    <em>Content</em> and unchecking the <em>Enable Java</em>
-    &pref.singular;.</p>
-
-  <h3 id="restricting_javascript_behavior">Restricting JavaScript Behavior</h3>
-
-  <p>You can turn off JavaScript entirely by going to &pref.menuPath;,
-    selecting the <em>Content</em> panel, and unchecking <em>Enable
-    JavaScript</em>.  Some web pages rely on JavaScript and may not work
-    properly if JavaScript is disabled.</p>
-
-  <p>If you do not wish to disable JavaScript entirely, there are also a
-    number of advanced JavaScript settings to restrict the behavior of
-    scripts.  Immediately after the <em>Enable JavaScript</em> checkbox,
-    click the <em>Advanced</em> button to open the <em>Advanced JavaScript
-    Settings</em> window.  You can control whether scripts are allowed
-    to move or resize existing windows, raise or lower windows, disable or
-    replace context menus, hide the status bar, or change status bar
-    text.</p>
-
-  <h2 id="compatibility_with_assistive_technologies">Compatibility With
-    Assistive Technologies</h2>
-
-  <p>The latest information about compatibility with third-party assistive
-    technologies is online at
-    <a target="_blank" href="http://www.mozilla.org/access/compatibility">Access
-    Mozilla: Compatibility with assistive technologies</a>.</p>
-
-  <h2 id="finding_help_online">Finding Help Online</h2>
-
-  <div class="win">
-
-    <p>Freedom Scientific maintains a number of
-      <a target="_blank" href="http://www.freedomscientific.com/fs_support/User_Groups.asp">mailing
-      lists for JAWS users</a>.</p>
-
-    <p>GW Micro maintains a number of
-      <a target="_blank" href="http://www.gwmicro.com/Support/Email_Lists/">mailing
-      lists for Window Eyes users</a>.</p>
-  </div>
-
-  <p>You may <span class="win">also</span> post accessibility questions to the
-    <a target="_blank" href="http://forums.mozillazine.org/viewforum.php?f=38">&brandShortName;
-    Support forum</a>.</p>
-
-  <div class="contentsBox"><em>29 Aug 2006</em></div>
-
-  <p>Copyright &copy; &copyright.years; Contributors to the Mozilla Help Viewer
-    Project.</p>
-
-</body>
-</html>
deleted file mode 100644
--- a/browser/locales/en-US/chrome/help/cookies.xhtml
+++ /dev/null
@@ -1,170 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"[
-    <!ENTITY % brandDTD SYSTEM "chrome://branding/locale/brand.dtd" >
-    %brandDTD;
-    <!ENTITY % platformDTD SYSTEM "chrome://browser/locale/help/platformStrings.dtd" >
-    %platformDTD;
-]>
-<!--
-Contributors:
-  David Tenser <david.tenser@comhem.se> (original author)
-  Steffen Wilberg <steffen.wilberg@web.de>
--->
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-	<title>Managing Cookies</title>
-	<link rel="stylesheet" type="text/css" href="chrome://help/skin/helpFileLayout.css"/>
-</head>
-
-<body>
-<h1>Managing Cookies</h1>
-
-<p>This document explains what cookies are, how they are used, and how you can gain
-  control over the cookies stored on your computer by using the Cookie Manager in
-  &brandFullName;.</p>
-
-<div class="contentsBox">In this section:
-  <ul>
-    <li><a href="#what_is_a_cookie">What is a Cookie?</a></li>
-    <li><a href="#setting_up_cookie_rules">Setting Up Cookie Rules</a></li>
-    <li><a href="#accepting_and_blocking_cookies">Accepting and Blocking Cookies</a></li>
-    <li><a href="#cookies_exceptions">The Cookies Exceptions Window</a></li>
-    <li><a href="#view_cookies">The View Cookies Window</a></li>
-  </ul>
-</div>
-
-<h2 id="what_is_a_cookie">What is a Cookie?</h2>
-
-<p>A cookie is a file created by an Internet site to store information on your
-  computer, such as your preferences when visiting that site. When you visit a site
-  that uses cookies, the site might ask &brandShortName; to place one or more cookies
-  on your hard disk.</p>
-
-<p>Later, when you return to the site, &brandShortName; sends back the cookies that
-  belong to the site. This allows the site to present you with information customized
-  to fit your needs.</p>
-
-<p>Cookies can also store personally identifiable information. Personally identifiable
-  information is information that can be used to identify or contact you, such as
-  your name, e-mail address, home or work address, or telephone number. However, a
-  web site only has access to the personal information that you provide. For
-  example, a web site cannot determine your e-mail address unless you provide it. Also,
-  a web site cannot gain access to other information on your computer.</p>
-
-<p>When you use the default cookie settings, this activity is invisible to you,
-  and you won't know when a web site is setting a cookie or when &brandShortName;
-  is sending a web site its cookie. However, you can set your cookies
-  &pref.plural; so that you will be asked before a cookie is set. You can also
-  restrict the lifetime of cookies to your current &brandShortName; session.</p>
-
-<h2 id="setting_up_cookie_rules">Setting Up Cookie Rules</h2>
-
-<p>By default &brandShortName; accepts all cookies, including cookies which
-  would allow a site to recognize you effectively forever. If this doesn't suit
-  you, you can tell &brandShortName; to delete all cookies when you close
-  &brandShortName;:</p>
-
-<ol>
-  <li>Select &pref.menuPath; and open the <em>Privacy</em> panel.</li>
-  <li>Select the <em>I close &brandShortName;</em> &pref.singular; from the
-    <em>Keep until</em> menu.</li>
-</ol>
-
-<p>If you want to grant sites you trust the ability to store cookies permanently
-  (e.g., to allow you to log in automatically to a site), click <a
-  href="#cookies_exceptions"><em>Exceptions…</em></a>, enter the site address,
-  and click <em>Allow</em>.</p>
-
-<h3 id="all_the_settings">All the Settings</h3>
-
-<p>These are the &pref.plural; that affect how cookies are managed by
-  &brandShortName;:</p>
-
-<dl>
-  <dt>Accept cookies from sites</dt>
-  <dd><p>If you don't want any sites to store cookies on your computer, uncheck
-    this &pref.singular;. Note that some sites may not work properly when
-    cookies are disabled. If you want to grant certain sites the ability to
-    store cookies, open the <a href="#cookies_exceptions">Cookies Exceptions</a>
-    window by clicking <em>Exceptions…</em>, enter the site address, and click
-    <em>Allow</em> or <em>Allow for Session</em>.</p></dd>
-  <dt>Keep until</dt>
-  <dd>
-  <ul>
-    <li><em>they expire</em><br/>
-      If this &pref.singular; is selected, each cookie will be removed when the
-      site that set it has determined the cookie should expire.</li>
-    <li><em>I close &brandShortName;</em><br/>
-      If this &pref.singular; is selected, cookies will be removed when you
-      restart &brandShortName;.  Web sites requiring the use of cookies will
-      still work, but if you restart &brandShortName;, the web site will think
-      that you logged into the site for the first time again.</li>
-    <li><em>ask me every time</em><br/>
-      Display an alert every time a web site tries to store a cookie asking you
-      if you want that cookie stored.</li>
-  </ul>
-  </dd>
-</dl>
-
-<h2 id="accepting_and_blocking_cookies">Accepting and Blocking Cookies</h2>
-
-<p>If you've chosen <em>ask me every time</em> from the <em>Keep until</em>
-  menu, you'll see a dialog whenever a site tries to store a cookie on your
-  computer providing the following options:</p>
-
-<dl>
-  <dt>Allow</dt>
-  <dd>To allow this particular cookie, just click <em>Allow</em>. Use this if
-    you trust the site.</dd>
-  <dt>Allow for Session</dt>
-  <dd>If you want to allow this cookie for now, but have it deleted when you
-    exit &brandShortName;, click <em>Allow for Session</em>. Use this if the
-    site doesn't work without cookies, but you don't want to have a permanent
-    cookie stored for it.</dd>
-  <dt>Deny</dt>
-  <dd>If you don't want this cookie to be stored, click <em>Deny</em>. Use this
-    if you don't trust the site or suspect that it's compromising your privacy.</dd>
-  <dt>Use my choice for all cookies from this site</dt>
-  <dd>Select this checkbox before clicking any of the buttons if you want
-    &brandShortName; to remember your decision and not ask again. The site will
-    be added to the <a href="#cookies_exceptions">Cookie Exceptions</a> window,
-    where you can revert your choice should you wish to do so later.</dd>
-</dl>
-
-<h2 id="cookies_exceptions">The Cookies Exceptions Window</h2>
-
-<p>Access this window by clicking the <em>Exceptions…</em> button in cookies
-  &pref.plural;. Here you can make exceptions from your general cookies
-  &pref.plural; for specific sites. Using exceptions, you can allow all cookies,
-  reject all cookies, or allow all cookies but have them deleted when you exit
-  &brandShortName;, regardless of your other cookie settings.</p>
-
-<p>To add a site to this list, simply type the site's domain name in the field
-  labeled <em>Address of web site</em>. Then click <em>Block</em> to reject
-  cookies from the site, click <em>Allow</em> to allow cookies from the site,
-  or click <em>Allow for Session</em> to allow cookies from the site but have
-  them deleted when you exit &brandShortName;.</p>
-
-<p>To remove a site from this list, select it and click <em>Remove Site</em>. To
-  clear the list completely, click <em>Remove All Sites</em>. This will clear
-  the exceptions list so your general cookies &pref.plural; apply.</p>
-
-<h2 id="view_cookies">The View Cookies Window</h2>
-
-<p>Use the <em>View Cookies</em> window to view and remove cookies. To access it,
-  click the <em>View Cookies</em> button in cookies &pref.plural;.</p>
-
-<p>This window lists all cookies currently stored on your
-  computer, grouped by site. You can expand the sites and select a cookie to
-  display more information about it. You can also search for a site or a cookie
-  name by typing in the search bar.</p>
-
-<p>To remove a cookie from the list, select it and click <em>Remove Cookie</em>.
-  To remove a site's cookies, select the site and click <em>Remove
-  Cookie(s)</em>. To wipe all cookies, click <em>Remove All Cookies</em>.</p>
-
-<div class="contentsBox"><em>12 September 2006</em></div>
-<p>Copyright &copy; &copyright.years; Contributors to the Mozilla Help Viewer Project.</p>
-
-</body>
-</html>
deleted file mode 100644
--- a/browser/locales/en-US/chrome/help/customization.xhtml
+++ /dev/null
@@ -1,189 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"[
-    <!ENTITY % brandDTD SYSTEM "chrome://branding/locale/brand.dtd" >
-    %brandDTD;
-    <!ENTITY % platformDTD SYSTEM "chrome://browser/locale/help/platformStrings.dtd" >
-    %platformDTD;
-]>
-<!--
-Contributors:
-  Nilson Cain <nilson@gmail.com> (original author)
-  Steffen Wilberg <steffen.wilberg@web.de>
--->
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-   <title>Customizing &brandFullName;</title>
-   <link rel="stylesheet" type="text/css" href="chrome://help/skin/helpFileLayout.css"/>
-</head>
-
-<body>
-<h1>Customizing &brandFullName;</h1>
-
-<div class="contentsBox">In this section:
- <ul>
-   <li><a href="#toolbars">Toolbars</a></li>
-   <li><a href="#add_ons">Add-ons (extensions and themes)</a></li>
- </ul>
-</div>
-<h2 id="toolbars">Toolbars</h2>
-
-<p>This will tell you how to rearrange, hide, add, and remove toolbars in
-  &brandShortName;. For those who are unfamiliar with the terminology, a toolbar
-  is the (usually gray) box above the area that the web site is displayed.</p>
-
-<ul>
-  <li class="noMac"><strong>Menu Bar</strong>: This is the toolbar that contains
-    the browser menus (File, Edit, Help, etc.).</li>
-  <li><strong>Navigation Bar</strong>: This is the toolbar that contains the
-    Location Bar and the buttons used to navigate web sites.</li>
-  <li><strong>Bookmarks Toolbar</strong>: This is the toolbar that contains
-    your Bookmarks Toolbar Folder bookmarks.</li>
-
-</ul>
-
-<p>There are two basic methods of customizing the toolbars in
-  &brandShortName;:</p>
-
-<ul>
-  <li><a href="#rearranging_toolbar_items">Rearranging Toolbar Items</a></li>
-  <li><a href="#adding_removing_toolbars">Hiding, Adding, and Removing
-    Toolbars</a></li>
-</ul>
-
-<h3 id="rearranging_toolbar_items">Rearranging Toolbar Items</h3>
-
-<p>To rearrange the items (icons, buttons, text boxes, etc.) on your toolbar,
-  <span class="noMac">right-click</span><span class="mac">press &ctrlKey; and
-  click</span> on any part of the toolbar that is not a text box and select
-  <span class="menuPath">Customize…</span>. This will bring up the toolbar
-  customization dialog.</p>
-
-<p>Drag and drop any items you want to and from the toolbars <span class=
-  "noMac">(excluding the menu items)</span>. You can also rearrange icons
-  already on the toolbars by dragging and dropping them wherever you wish. When
-  the toolbars and items are arranged the way you want them, click
-  <em>Done</em>.</p>
-
-<h4 id="special_toolbar_items">Special Toolbar Items</h4>
-
-<p>There are a few special items that are available to you when customizing the
-  toolbar. They are as follows:</p>
-
-<ul>
-  <li><strong>Separators:</strong> These allow you to separate items on the
-    toolbars with a small vertical line.</li>
-  <li><strong>Spacers:</strong> These allow you to separate items on the
-    toolbars with a fixed-size space, usually around 20 pixels on most
-    themes.</li>
-  <li><strong>Flexible spacers:</strong> Spacers allow you to separate items
-    on the toolbars with a space.  These spacers automatically resize to fill
-    all of the empty space on the toolbar.  These are good for positioning
-    items on the right of a toolbar.</li>
-</ul>
-
-<h3 id="adding_removing_toolbars">Hiding, Adding, and Removing Toolbars</h3>
-
-<p>You can hide the Navigation Toolbar and the Bookmarks Toolbar if you do not
-  wish to keep them on your screen. <span class="noMac">You cannot hide the Menu
-  Bar because you cannot move the menu items (File, Edit, Help, etc.) to a
-  different toolbar, and they must stay on the screen at all times.</span></p>
-
-<p>To show or hide a toolbar, select <span class="menuPath">View &gt; Toolbars</span>
-  and click the name of the toolbar you want to show or hide.</p>
-
-<p>To add a custom toolbar, select <span class="menuPath">View &gt; Toolbars
-  &gt; Customize</span>. Click on <em>Add New Toolbar</em> (in the bottom of the
-  dialog). This will give you a dialog to enter a name. If you enter a name and
-  click <em>OK</em>, your new toolbar appears. Now you can drag and drop items
-  to it. To remove a custom toolbar, drag and drop all the items from it, and
-  click Done. You can also hide a custom toolbar as described in the previous
-  paragraph.</p>
-
-<h2 id="add_ons">Add-ons (extensions and themes)</h2>
-
-<p>Add-ons are small pieces of software which change or add to the appearance or
-  functionality of &brandShortName;. There are two kinds of add-ons: extensions
-  and themes.</p>
-
-<dl>
-  <dt>Extensions</dt>
-  <dd>Extensions add new functionality to &brandShortName;. They can add
-    anything from a toolbar button to a completely new feature. They allow the
-    application to be customized to fit the personal needs of each user while
-    minimizing the size and appearance of the application itself.</dd>
-
-  <dt>Themes</dt>
-  <dd>Themes modify &brandShortName;'s appearance. They allow you to change the
-    look and feel of &brandShortName; and personalize it to your tastes. A
-    theme can simply change button images, or it can change every piece of
-    &brandShortName; appearance.</dd>
-</dl>
-
-<h3 id="add_ons_installing">Getting and Installing Add-ons</h3>
-
-<p>You can download and install many add-ons from <a
-  href="https://addons.mozilla.org/firefox/" target="_blank">&brandShortName;
-  Add-ons</a>. Internet searches will find many other add-ons as well.</p>
-
-<p>When you click on a link to install an add-on, &brandShortName; displays a
-  dialog asking you for permission to install the add-on. You can choose to
-  allow the download and installation or to cancel the process.</p>
-
-<h2 id="add_ons_manager">Using the Add-ons manager</h2>
-<p>Add-ons are managed in the Add-ons manager. Select <span
-  class="menuPath">Tools &gt; Add-ons</span> to open it.</p>
-
-<h3 id="add_ons_updating">Updating Add-ons</h3>
-
-<p>By default, &brandShortName; will periodically check when a new version for
-  one of your installed add-ons is available. If any are available, it will
-  prompt you at the next start to install any updates. You can change this
-  behavior in the <a href="prefs.xhtml#advanced_update"><em>Update</em> tab</a>
-  of the <em>Advanced</em> panel of &pref.pluralCaps;.</p>
-
-<p>You can check for updates manually by selecting the <em>Extensions</em> or
-  <em>Themes</em> panel and clicking the <em>Find Updates</em> button. If
-  updates are available, the Add-ons manager displays an <em>Updates</em>
-  panel, where you can choose the updates you want to install. Click the
-  <em>Install Updates</em> button to update those add-ons.
-  You need to restart &brandShortName; for changes to take effect.</p>
-
-<h3 id="add_ons_uninstalling">Disabling, Enabling, and Uninstalling Add-ons</h3>
-
-<p>If you want to get rid of an extension, you can either disable it temporarily,
-  so it is easily available should you want to enable it again in the future,
-  or uninstall it. Themes can only be uninstalled since all themes except the
-  current one are disabled automatically.</p>
-  
-<p>To disable or enable an extension, select the extension of your choice and
-  click its <em>Disable</em> or <em>Enable</em> button. To remove an add-on from
-  &brandShortName;, select the add-on you wish to remove and click its
-  <em>Uninstall</em> button. You need to restart &brandShortName; for changes to
-  take effect.</p>
-
-<h3 id="add_ons_further">Further functionality</h3>
-
-<p>Further functionality such as <em>Visit Home Page</em> and <em>About</em> is
-  available by selecting the add-on of your choice, <span class="mac">pressing
-  &ctrlKey; and clicking on</span><span class="noMac">right-clicking</span> the
-  add-on and selecting the respective item from the context menu.</p>
-
-<h3 id="add_ons_specific">Tasks specific to extensions or themes</h3>
-<h4 id="add_ons_configuring_extensions">Configuring Extensions</h4>
-
-<p>Extensions often provide a dialog to configure their functionality. To open
-  the &pref.plural; dialog of an extension, select the Extensions panel, select
-  the extension of your choice, and click its <em>&pref.pluralCaps;</em> button,
-  or simply double-click the extension.</p>
-
-<h4 id="add_ons_switching_themes">Switching Themes</h4>
-
-<p>To switch between your installed themes, select the Themes panel, select the
-  theme of your choice, and click its <em>Use Theme</em> button. You need to
-  restart &brandShortName; for changes to take effect.</p>
-
-<div class="contentsBox"><em>12 September 2006</em></div>
-<p>Copyright &copy; &copyright.years; Contributors to the Mozilla Help Viewer Project.</p>
-
-</body>
-</html>
deleted file mode 100644
--- a/browser/locales/en-US/chrome/help/download_manager.xhtml
+++ /dev/null
@@ -1,96 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"[
-    <!ENTITY % brandDTD SYSTEM "chrome://branding/locale/brand.dtd" >
-    %brandDTD;
-    <!ENTITY % platformDTD SYSTEM "chrome://browser/locale/help/platformStrings.dtd" >
-    %platformDTD;
-]>
-<!--
-Contributors:
-  Nilson Cain <mybugs@bellsouth.net> (original author)
-  Jeff Walden <jwalden+code@mit.edu>
--->
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-   <title>Using &brandFullName;'s Download Manager</title>
-   <link rel="stylesheet" type="text/css" href="chrome://help/skin/helpFileLayout.css"/>
-</head>
-
-<body>
-<h1>Using &brandFullName;'s Download Manager</h1>
-
-<div class="contentsBox">In this section:
-  <ul>
-    <li><a href="#what_is_download_manager">What is the Download Manager?</a></li>
-    <li><a href="#do_with_download_manager">What can I do with the Download Manager?</a></li>
-    <li><a href="#download_manager_options">Download Manager &pref.pluralCaps;</a></li>
-  </ul>
-</div>
-<h2 id="what_is_download_manager">What is the Download Manager?</h2>
-
-<p>The Download Manager is a feature of &brandShortName; that allows you to
-  track and manage your past and current file downloads.  It is a convenient way
-  to escape the clutter of multiple downloading windows while still preserving
-  access to download statistics.</p>
-
-<p>The Download Manager will appear when you download files, when you select
-  <span class="menuPath">Tools &gt; Downloads</span>, and when you press
-  <span class="noUnix">&accelKey;+<kbd>J</kbd></span><span class="unix">&accelKey;+<kbd>Y</kbd></span>.</p>
-
-
-<h2 id="do_with_download_manager">What can I do with the Download Manager?</h2>
-
-<p>In addition to keeping information on all your downloads in one place, the
-  Download Manager keeps convenient download actions easily accessible for each
-  of your downloads.</p>
-
-<dl>
-  <dt>Pause</dt>
-  <dd>You can pause any downloads currently in progress by clicking the
-    <em>Pause</em> link beside the file entry.  This may be useful, for
-    example, if you need to open a small download started after a large 
-    download. Pausing downloads gives you the choice to decide which of your 
-    downloads are most important.  When you want to continue downloading those
-    files, simply use the <em>Resume</em> link to finish those downloads.</dd>
-
-  <dt>Cancel</dt>
-  <dd>If after starting a download you decide you no longer need that file, 
-    canceling the download is simple: just use the <em>Cancel</em> link beside
-    that file entry to cancel it and free up your connection for your browsing
-    and other downloads.</dd>
-
-  <dt>Open the File</dt>
-  <dd>When a download has finished, the <em>Open</em> link will appear
-    by the file entry. Use it to open the file.</dd>
-
-  <dt>Remove the File's Entry</dt>
-  <dd>If you do not wish to store information on a particular download, removing
-    the entry is as simple as the click of a mouse.  Simply use the
-    <em>Remove</em> link beside the file entry to delete it.</dd>
-
-  <dt>Retry a Download</dt>
-  <dd>If for any reason a download does not complete, it is easy to attempt the
-    download again.  To recover from a failed download and retry it, just use 
-    the <em>Retry</em> link next to the file entry and &brandShortName; will
-    restart the download for you.</dd>
-
-  <dt>Show Download Folder</dt>
-  <dd>If you have set &brandShortName; to save all downloads to a folder in
-    <a href="#download_manager_options">Download Manager &pref.pluralCaps;</a>,
-    you can open this folder by clicking the <em>Folder Name</em> at the
-    bottom of the Download Manager window.</dd>
-</dl>
-
-<h2 id="download_manager_options">Download Manager &pref.pluralCaps;</h2>
-
-<p>The &pref.plural; for the Download Manager are accessible by opening the
-  Downloads section of the <em>Main</em> panel in the &pref.pluralCaps; window.
-  They allow you to change several downloading &pref.plural;.  More information
-  regarding the various &pref.plural; is available in the <a
-  href="prefs.xhtml#downloads">&pref.pluralCaps; page</a>.</p>
-
-<div class="contentsBox"><em>12 September 2006</em></div>
-<p>Copyright &copy; &copyright.years; Contributors to the Mozilla Help Viewer Project.</p>
-
-</body>
-</html>
deleted file mode 100644
--- a/browser/locales/en-US/chrome/help/firebird-toc.rdf
+++ /dev/null
@@ -1,491 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<!DOCTYPE rdf:RDF [
-    <!ENTITY % brandDTD SYSTEM "chrome://branding/locale/brand.dtd">
-    %brandDTD;
-]>
-
-<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-         xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-         xmlns:nc="http://home.netscape.com/NC-rdf#">
-
-  <rdf:Description about="urn:root">
-    <nc:subheadings>
-      <rdf:Seq>
-        <rdf:li> <rdf:Description ID="firefox-help" nc:name="Welcome to &brandFullName; Help" nc:link="firefox_welcome.xhtml"/> </rdf:li>
-        <rdf:li> <rdf:Description ID="using-firebird" nc:name="Using &brandFullName;" nc:link="using_firebird.xhtml"/> </rdf:li>
-        <rdf:li> <rdf:Description ID="using-download-manager" nc:name="Using the Download Manager" nc:link="download_manager.xhtml"/> </rdf:li>
-        <rdf:li> <rdf:Description ID="customize-firebird" nc:name="Customization" nc:link="customization.xhtml"/> </rdf:li>
-        <rdf:li>
-          <rdf:Description ID="prefs-win" nc:name="Options" nc:link="prefs.xhtml" nc:platform="win os2">
-            <nc:subheadings rdf:resource="#prefs-tree"/>
-          </rdf:Description>
-        </rdf:li>
-        <rdf:li>
-          <rdf:Description ID="prefs-unix" nc:name="Preferences" nc:link="prefs.xhtml" nc:platform="unix mac">
-            <nc:subheadings rdf:resource="#prefs-tree"/>
-          </rdf:Description>
-        </rdf:li>
-        <rdf:li> <rdf:Description ID="popup-blocker" nc:name="Controlling Pop-ups" nc:link="popup.xhtml"/> </rdf:li>
-        <rdf:li> <rdf:Description ID="cookies" nc:name="Managing Cookies" nc:link="cookies.xhtml"/> </rdf:li>
-        <rdf:li> <rdf:Description ID="tabbed-browsing" nc:name="Tabbed Browsing" nc:link="tabbed_browsing.xhtml"/> </rdf:li>
-        <rdf:li> <rdf:Description ID="firebird-keyboard-shortcuts" nc:name="Keyboard Shortcuts" nc:link="shortcuts.xhtml"/> </rdf:li>
-        <rdf:li> <rdf:Description ID="firebird-mouse-shortcuts" nc:name="Mouse Shortcuts" nc:link="mouse_shortcuts.xhtml"/> </rdf:li>
-        <rdf:li> <rdf:Description ID="a11y" nc:name="Accessibility Features" nc:link="accessibility.xhtml"/> </rdf:li>
-        <rdf:li> <rdf:Description ID="menu" nc:name="Menu Reference" nc:link="menu_reference.xhtml"/> </rdf:li>
-        <rdf:li> <rdf:Description ID="ieusers" nc:name="Help for Internet Explorer Users" nc:link="forieusers.xhtml"/> </rdf:li>
-      </rdf:Seq>
-    </nc:subheadings>
-  </rdf:Description>
-
-  <rdf:Description about="#using-firebird">
-    <nc:subheadings>
-      <rdf:Seq>
-        <rdf:li> <rdf:Description ID="using-firebird-navigating-web-pages" nc:name="Navigating Web Pages" nc:link="using_firebird.xhtml#navigating_web_pages"/> </rdf:li>
-        <rdf:li> <rdf:Description ID="using-firebird-searching" nc:name="Searching" nc:link="using_firebird.xhtml#searching"/> </rdf:li>
-        <rdf:li> <rdf:Description ID="using-firebird-copying-saving-and-printing-pages" nc:name="Copying, Saving, and Printing Pages" nc:link="using_firebird.xhtml#copying_saving_and_printing_pages"/> </rdf:li>
-        <rdf:li> <rdf:Description ID="using-firebird-improving-speed-and-efficiency" nc:name="Improving Speed and Efficiency" nc:link="using_firebird.xhtml#improving_speed_and_efficiency"/> </rdf:li>
-      </rdf:Seq>
-    </nc:subheadings>
-  </rdf:Description>
-
-  <rdf:Description about="#using-download-manager">
-    <nc:subheadings>
-      <rdf:Seq>
-        <rdf:li> <rdf:Description ID="using-download-manager-whatis" nc:name="What is the Download Manager?" nc:link="download_manager.xhtml#what_is_download_manager"/> </rdf:li>
-        <rdf:li> <rdf:Description ID="using-download-manager-can-i-do" nc:name="What can I do with the Download Manager?" nc:link="download_manager.xhtml#do_with_download_manager"/> </rdf:li>
-        <rdf:li> <rdf:Description ID="using-download-manager-prefs-win" nc:name="Download Manager Options" nc:link="download_manager.xhtml#download_manager_options" nc:platform="win os2"/> </rdf:li>
-        <rdf:li> <rdf:Description ID="using-download-manager-prefs-unix" nc:name="Download Manager Preferences" nc:link="download_manager.xhtml#download_manager_options" nc:platform="unix mac"/> </rdf:li>
-      </rdf:Seq>
-    </nc:subheadings>
-  </rdf:Description>
-
-  <rdf:Description about="#using-firebird-navigating-web-pages">
-    <nc:subheadings>
-      <rdf:Seq>
-        <rdf:li><rdf:Description ID="using-firebird-viewing-your-home-page" nc:name="Viewing your Home Page" nc:link="using_firebird.xhtml#viewing_your_home_page"/> </rdf:li>
-        <rdf:li><rdf:Description ID="using-firebird-moving-to-another-page" nc:name="Moving to Another Page" nc:link="using_firebird.xhtml#moving_to_another_page"/> </rdf:li>
-        <rdf:li><rdf:Description ID="using-firebird-clicking-a-link" nc:name="Clicking a Link" nc:link="using_firebird.xhtml#clicking_a_link"/> </rdf:li>
-        <rdf:li><rdf:Description ID="using-firebird-retracing-your-steps" nc:name="Retracing Your Steps" nc:link="using_firebird.xhtml#retracing_your_steps"/> </rdf:li>
-        <rdf:li><rdf:Description ID="using-firebird-stopping-and-reloading" nc:name="Stopping and Reloading" nc:link="using_firebird.xhtml#stopping_and_reloading"/> </rdf:li>
-        <rdf:li><rdf:Description ID="using-firebird-tabbed-browsing" nc:name="Tabbed Browsing" nc:link="tabbed_browsing.xhtml"/> </rdf:li>
-        <rdf:li><rdf:Description ID="using-firebird-sidebar" nc:name="Using the Sidebar" nc:link="using_firebird.xhtml#using_the_sidebar"/> </rdf:li>
-      </rdf:Seq>
-    </nc:subheadings>
-  </rdf:Description>
-
-  <rdf:Description about="#using-firebird-searching">
-    <nc:subheadings>
-      <rdf:Seq>
-        <rdf:li><rdf:Description ID="use-firebird-searching-the-web" nc:name="Searching the Web" nc:link="using_firebird.xhtml#searching_the_web"/> </rdf:li>
-        <rdf:li><rdf:Description ID="use-firebird-searching-on-selected-words-in-a-web-page" nc:name="Searching the Web for Words Selected in a Web Page" nc:link="using_firebird.xhtml#searching_on_selected_words_in_a_web_page"/> </rdf:li>
-        <rdf:li><rdf:Description ID="use-firebird-searching-within-a-page" nc:name="Searching Within a Page" nc:link="using_firebird.xhtml#searching_within_a_page"/> </rdf:li>
-      </rdf:Seq>
-    </nc:subheadings>
-  </rdf:Description>
-
-  <rdf:Description about="#using-firebird-copying-saving-and-printing-pages">
-    <nc:subheadings>
-      <rdf:Seq>
-        <rdf:li><rdf:Description ID="using-firebird-copying-part-of-a-page" nc:name="Copying Part of a Page" nc:link="using_firebird.xhtml#copying_part_of_a_page"/> </rdf:li>
-        <rdf:li><rdf:Description ID="using-firebird-saving-all-or-part-of-a-page" nc:name="Saving a Page" nc:link="using_firebird.xhtml#saving_all_or_part_of_a_page"/> </rdf:li>
-        <rdf:li><rdf:Description ID="using-firebird-printing-a-page" nc:name="Printing a Page" nc:link="using_firebird.xhtml#printing_a_page"/> </rdf:li>
-        <rdf:li><rdf:Description ID="using-firebird-using-print-preview" nc:name="Using Print Preview" nc:link="using_firebird.xhtml#using_print_preview" nc:platform="win unix os2"/> </rdf:li>
-        <rdf:li><rdf:Description ID="using-firebird-using-page-setup" nc:name="Using Page Setup" nc:link="using_firebird.xhtml#using_page_setup"/> </rdf:li>
-      </rdf:Seq>
-    </nc:subheadings>
-  </rdf:Description>
-
-  <rdf:Description about="#using-firebird-improving-speed-and-efficiency">
-      <nc:subheadings>
-        <rdf:Seq>
-          <rdf:li> <rdf:Description ID="using-firebird-managing-different-file-types" nc:name="Managing Different File Types" nc:link="using_firebird.xhtml#managing_different_file_types"/> </rdf:li>
-          <rdf:li> <rdf:Description ID="using-firebird-making-firebird-default-browser" nc:name="Make Default Browser" nc:link="using_firebird.xhtml#making_firebird_your_default_browser"/> </rdf:li>
-          <rdf:li> <rdf:Description ID="using-firebird-cache-prefs-win" nc:name="Cache Options" nc:link="using_firebird.xhtml#changing_cache_settings" nc:platform="win os2"/> </rdf:li>
-          <rdf:li> <rdf:Description ID="using-firebird-cache-prefs-unix" nc:name="Cache Preferences" nc:link="using_firebird.xhtml#changing_cache_settings" nc:platform="mac unix"/> </rdf:li>
-        </rdf:Seq>
-      </nc:subheadings>
-  </rdf:Description>
-
-  <rdf:Description about="#customize-firebird">
-      <nc:subheadings>
-        <rdf:Seq>
-          <rdf:li> <rdf:Description ID="customize-toolbars" nc:name="Toolbars" nc:link="customization.xhtml#toolbars"/> </rdf:li>
-          <rdf:li> <rdf:Description ID="add-ons" nc:name="Add-ons (extensions and themes)" nc:link="customization.xhtml#add_ons"/> </rdf:li>
-        </rdf:Seq>
-      </nc:subheadings>
-  </rdf:Description>
-
-  <rdf:Description about="#customize-toolbars">
-      <nc:subheadings>
-        <rdf:Seq>
-          <rdf:li> <rdf:Description ID="customize-toolbar-rearrange" nc:name="Rearranging Toolbar Items" nc:link="customization.xhtml#rearranging_toolbar_items"/> </rdf:li>
-          <rdf:li> <rdf:Description ID="customize-toolbars-adding" nc:name="Hiding, Adding, and Removing Toolbars" nc:link="customization.xhtml#adding_removing_toolbars"/> </rdf:li>
-        </rdf:Seq>
-      </nc:subheadings>
-  </rdf:Description>
-
-  <rdf:Description about="#add-ons">
-      <nc:subheadings>
-        <rdf:Seq>
-          <rdf:li> <rdf:Description ID="add-ons-installing" nc:name="Getting and Installing Add-ons" nc:link="customization.xhtml#add_ons_installing"/> </rdf:li>
-          <rdf:li> <rdf:Description ID="add-ons-manager" nc:name="Using the Add-ons manager" nc:link="customization.xhtml#add_ons_manager"/> </rdf:li>
-        </rdf:Seq>
-      </nc:subheadings>
-  </rdf:Description>
-
-  <rdf:Description about="#popup-blocker">
-      <nc:subheadings>
-        <rdf:Seq>
-          <rdf:li> <rdf:Description ID="popup-blocker-what-are-popups" nc:name="What are Pop-ups?" nc:link="popup.xhtml#what_are_popups"/> </rdf:li>
-          <rdf:li> <rdf:Description ID="popup-blocker-prefs-win" nc:name="Pop-up Blocker Options" nc:link="popup.xhtml#popup_blocker_preferences" nc:platform="win os2"/> </rdf:li>
-          <rdf:li> <rdf:Description ID="popup-blocker-prefs-unix" nc:name="Pop-up Blocker Preferences" nc:link="popup.xhtml#popup_blocker_preferences" nc:platform="unix mac"/> </rdf:li>
-        </rdf:Seq>
-      </nc:subheadings>
-  </rdf:Description>
-
-  <rdf:Description about="#cookies">
-    <nc:subheadings>
-      <rdf:Seq>
-        <rdf:li><rdf:Description ID="cookies-what-is-a-cookie" nc:name="What is a Cookie?" nc:link="cookies.xhtml#what_is_a_cookie"/> </rdf:li>
-        <rdf:li><rdf:Description ID="cookies-setting-up-cookie-rules" nc:name="Setting Up Cookie Rules" nc:link="cookies.xhtml#setting_up_cookie_rules"/> </rdf:li>
-        <rdf:li><rdf:Description ID="cookies-all-the-settings" nc:name="Cookie Settings" nc:link="cookies.xhtml#all_the_settings"/> </rdf:li>
-        <rdf:li><rdf:Description ID="cookies-accepting-and-blocking-cookies" nc:name="Accepting and Blocking Cookies" nc:link="cookies.xhtml#accepting_and_blocking_cookies"/> </rdf:li>
-        <rdf:li><rdf:Description ID="cookies-exceptions" nc:name="The Cookies Exceptions Window" nc:link="cookies.xhtml#cookies_exceptions"/> </rdf:li>
-        <rdf:li><rdf:Description ID="cookies-view" nc:name="The View Cookies Window" nc:link="cookies.xhtml#view_cookies"/> </rdf:li>
-      </rdf:Seq>
-    </nc:subheadings>
-  </rdf:Description>
-
-  <rdf:Description about="#tabbed-browsing">
-    <nc:subheadings>
-      <rdf:Seq>
-        <rdf:li> <rdf:Description ID="tabbed-browsing-creating-loading-tabs" nc:name="Creating and Loading Tabs" nc:link="tabbed_browsing.xhtml#creating_loading_tabs"/> </rdf:li>
-        <rdf:li> <rdf:Description ID="tabbed-browsing-moving-tabs" nc:name="Moving Tabs Within a Window" nc:link="tabbed_browsing.xhtml#moving_tabs"/> </rdf:li>
-        <rdf:li> <rdf:Description ID="tabbed-browsing-closing-tabs" nc:name="Closing and Restoring Tabs" nc:link="tabbed_browsing.xhtml#closing_tabs"/> </rdf:li>
-        <rdf:li> <rdf:Description ID="tabbed-browsing-customizing" nc:name="Customizing Tabbed Browsing" nc:link="tabbed_browsing.xhtml#customizing"/> </rdf:li>
-        <rdf:li> <rdf:Description ID="tabbed-browsing-tips-tricks" nc:name="Tips and Tricks" nc:link="tabbed_browsing.xhtml#tips_tricks"/> </rdf:li>
-       </rdf:Seq>
-    </nc:subheadings>
-  </rdf:Description>
-
-  <rdf:Description about="#a11y">
-    <nc:subheadings>
-      <rdf:Seq>
-        <rdf:li> <rdf:Description ID="a11y-keyboard-navigation" nc:name="Using a Keyboard" nc:link="accessibility.xhtml#using_a_keyboard"/> </rdf:li>
-        <rdf:li> <rdf:Description ID="a11y-mouse-navigation" nc:name="Using a Mouse" nc:link="accessibility.xhtml#using_a_mouse"/> </rdf:li>
-        <rdf:li> <rdf:Description ID="a11y-fonts-and-colors" nc:name="Fonts and Colors" nc:link="accessibility.xhtml#fonts_and_colors"/> </rdf:li>
-        <rdf:li> <rdf:Description ID="a11y-web-content" nc:name="Controlling Web Content" nc:link="accessibility.xhtml#controlling_web_content"/> </rdf:li>
-        <rdf:li> <rdf:Description ID="a11y-compatibility" nc:name="Compatibility with Assistive Technologies" nc:link="accessibility.xhtml#compatibility_with_assistive_technologies"/> </rdf:li>
-        <rdf:li> <rdf:Description ID="a11y-online" nc:name="Finding Help Online" nc:link="accessibility.xhtml#finding_help_online"/> </rdf:li>
-      </rdf:Seq>
-    </nc:subheadings>
-  </rdf:Description>
-
-  <rdf:Description about="#a11y-keyboard-navigation">
-    <nc:subheadings>
-      <rdf:Seq>
-        <rdf:li> <rdf:Description ID="a11y-keyboard-shortcuts" nc:name="Keyboard Shortcuts" nc:link="accessibility.xhtml#keyboard_shortcuts"/> </rdf:li>
-        <rdf:li> <rdf:Description ID="a11y-caret-browsing" nc:name="Always Use the Cursor Keys to Navigate Within Webpages" nc:link="accessibility.xhtml#always_use_cursor_keys"/> </rdf:li>
-        <rdf:li> <rdf:Description ID="a11y-typeahead-find" nc:name="Search for Text When I Start Typing" nc:link="accessibility.xhtml#find_as_you_type"/> </rdf:li>
-      </rdf:Seq>
-    </nc:subheadings>
-  </rdf:Description>
-
-  <rdf:Description about="#a11y-mouse-navigation">
-    <nc:subheadings>
-      <rdf:Seq>
-        <rdf:li> <rdf:Description ID="a11y-mouse-shortcuts" nc:name="Common Mouse Shortcuts" nc:link="accessibility.xhtml#common_mouse_shortcuts"/> </rdf:li>
-      </rdf:Seq>
-    </nc:subheadings>
-  </rdf:Description>
-
-  <rdf:Description about="#a11y-fonts-and-colors">
-    <nc:subheadings>
-      <rdf:Seq>
-        <rdf:li> <rdf:Description ID="a11y-override-fonts" nc:name="Overriding Page Fonts" nc:link="accessibility.xhtml#overriding_page_fonts"/> </rdf:li>
-        <rdf:li> <rdf:Description ID="a11y-minimum-font-size" nc:name="Setting a Minimum Font Size" nc:link="accessibility.xhtml#setting_a_minimum_font_size"/> </rdf:li>
-        <rdf:li> <rdf:Description ID="a11y-text-zoom" nc:name="Resizing Page Text" nc:link="accessibility.xhtml#resizing_page_text"/> </rdf:li>
-        <rdf:li> <rdf:Description ID="a11y-override-colors" nc:name="Overriding Page Colors" nc:link="accessibility.xhtml#overriding_page_colors"/> </rdf:li>
-        <rdf:li> <rdf:Description ID="a11y-high-contrast" nc:name="Using a High Contrast Theme" nc:link="accessibility.xhtml#using_a_high_contrast_theme" nc:platform="win unix"/> </rdf:li>
-      </rdf:Seq>
-    </nc:subheadings>
-  </rdf:Description>
-
-  <rdf:Description about="#a11y-web-content">
-    <nc:subheadings>
-      <rdf:Seq>
-        <rdf:li> <rdf:Description ID="a11y-popup-windows" nc:name="Blocking Pop-up Windows" nc:link="accessibility.xhtml#blocking_popup_windows"/> </rdf:li>
-        <rdf:li> <rdf:Description ID="a11y-java" nc:name="Turning Off Java Applets" nc:link="accessibility.xhtml#turning_off_java_applets"/> </rdf:li>
-        <rdf:li> <rdf:Description ID="a11y-javascript" nc:name="Restricting JavaScript Behavior" nc:link="accessibility.xhtml#restricting_javascript_behavior"/> </rdf:li>
-      </rdf:Seq>
-    </nc:subheadings>
-  </rdf:Description>
-
-  <rdf:Description about="#menu">
-    <nc:subheadings>
-      <rdf:Seq>
-        <rdf:li> <rdf:Description ID="menu-firefox" nc:name="&brandShortName;" nc:link="menu_reference.xhtml#firefox" nc:platform="mac"/> </rdf:li>
-        <rdf:li> <rdf:Description ID="menu-file" nc:name="File" nc:link="menu_reference.xhtml#file"/> </rdf:li>
-        <rdf:li> <rdf:Description ID="menu-edit" nc:name="Edit" nc:link="menu_reference.xhtml#edit"/> </rdf:li>
-        <rdf:li> <rdf:Description ID="menu-view" nc:name="View" nc:link="menu_reference.xhtml#view"/> </rdf:li>
-        <rdf:li> <rdf:Description ID="menu-go" nc:name="History" nc:link="menu_reference.xhtml#go"/> </rdf:li>
-        <rdf:li> <rdf:Description ID="menu-bookmarks" nc:name="Bookmarks" nc:link="menu_reference.xhtml#bookmarks"/> </rdf:li>
-        <rdf:li> <rdf:Description ID="menu-tools" nc:name="Tools" nc:link="menu_reference.xhtml#tools"/> </rdf:li>
-        <rdf:li> <rdf:Description ID="menu-window" nc:name="Window" nc:link="menu_reference.xhtml#window" nc:platform="mac"/> </rdf:li>
-        <rdf:li> <rdf:Description ID="menu-help" nc:name="Help" nc:link="menu_reference.xhtml#help"/> </rdf:li>
-      </rdf:Seq>
-    </nc:subheadings>
-  </rdf:Description>
-
-  <rdf:Description about="#menu-firefox">
-    <nc:subheadings>
-      <rdf:Seq>
-        <rdf:li> <rdf:Description ID="menu-firefox-about" nc:name="About &brandFullName;" nc:link="menu_reference.xhtml#about_mac"/> </rdf:li>
-        <rdf:li> <rdf:Description ID="menu-firefox-preferences" nc:name="Preferences…" nc:link="menu_reference.xhtml#prefs_mac"/> </rdf:li>
-        <rdf:li> <rdf:Description ID="menu-firefox-quit" nc:name="Quit &brandShortName;" nc:link="menu_reference.xhtml#quit_mac"/> </rdf:li>
-      </rdf:Seq>
-    </nc:subheadings>
-  </rdf:Description>
-
-  <rdf:Description about="#menu-file">
-    <nc:subheadings>
-      <rdf:Seq>
-        <rdf:li> <rdf:Description ID="menu-file-new-window" nc:name="New Window" nc:link="menu_reference.xhtml#new_window"/> </rdf:li>
-        <rdf:li> <rdf:Description ID="menu-file-new-tab" nc:name="New Tab" nc:link="menu_reference.xhtml#new_tab"/> </rdf:li>
-        <rdf:li> <rdf:Description ID="menu-file-open-location" nc:name="Open Location…" nc:link="menu_reference.xhtml#open_location"/> </rdf:li>
-        <rdf:li> <rdf:Description ID="menu-file-open-file" nc:name="Open File…" nc:link="menu_reference.xhtml#open_file"/> </rdf:li>
-        <rdf:li> <rdf:Description ID="menu-file-close" nc:name="Close (Window)" nc:link="menu_reference.xhtml#close"/> </rdf:li>
-        <rdf:li> <rdf:Description ID="menu-file-close-tab" nc:name="Close Tab" nc:link="menu_reference.xhtml#close_tab"/> </rdf:li>
-        <rdf:li> <rdf:Description ID="menu-file-save-page-as" nc:name="Save Page As…" nc:link="menu_reference.xhtml#save_page_as"/> </rdf:li>
-        <rdf:li> <rdf:Description ID="menu-file-send-page" nc:name="Send Link…" nc:link="menu_reference.xhtml#send_page"/> </rdf:li>
-        <rdf:li> <rdf:Description ID="menu-file-page-setup" nc:name="Page Setup…" nc:link="menu_reference.xhtml#page_setup"/> </rdf:li>
-        <rdf:li> <rdf:Description ID="menu-file-print-preview" nc:name="Print Preview" nc:link="menu_reference.xhtml#print_preview" nc:platform="win unix os2"/> </rdf:li>
-        <rdf:li> <rdf:Description ID="menu-file-print" nc:name="Print…" nc:link="menu_reference.xhtml#print"/> </rdf:li>
-        <rdf:li> <rdf:Description ID="menu-file-import" nc:name="Import…" nc:link="menu_reference.xhtml#import"/> </rdf:li>
-        <rdf:li> <rdf:Description ID="menu-file-work-offline" nc:name="Work Offline" nc:link="menu_reference.xhtml#work_offline"/> </rdf:li>
-        <rdf:li> <rdf:Description ID="menu-file-exit-win" nc:name="Exit" nc:link="menu_reference.xhtml#exit" nc:platform="win os2"/> </rdf:li>
-        <rdf:li> <rdf:Description ID="menu-file-exit-unix" nc:name="Quit" nc:link="menu_reference.xhtml#exit" nc:platform="unix"/> </rdf:li>
-      </rdf:Seq>
-    </nc:subheadings>
-  </rdf:Description>
-
-  <rdf:Description about="#menu-edit">
-    <nc:subheadings>
-      <rdf:Seq>
-        <rdf:li> <rdf:Description ID="menu-view-undo" nc:name="Undo" nc:link="menu_reference.xhtml#undo"/> </rdf:li>
-        <rdf:li> <rdf:Description ID="menu-view-redo" nc:name="Redo" nc:link="menu_reference.xhtml#redo"/> </rdf:li>
-        <rdf:li> <rdf:Description ID="menu-view-cut" nc:name="Cut" nc:link="menu_reference.xhtml#cut"/> </rdf:li>
-        <rdf:li> <rdf:Description ID="menu-view-copy" nc:name="Copy" nc:link="menu_reference.xhtml#copy"/> </rdf:li>
-        <rdf:li> <rdf:Description ID="menu-view-paste" nc:name="Paste" nc:link="menu_reference.xhtml#paste"/> </rdf:li>
-        <rdf:li> <rdf:Description ID="menu-view-delete" nc:name="Delete" nc:link="menu_reference.xhtml#delete"/> </rdf:li>
-        <rdf:li> <rdf:Description ID="menu-view-select-all" nc:name="Select All" nc:link="menu_reference.xhtml#select_all"/> </rdf:li>
-        <rdf:li> <rdf:Description ID="menu-view-find-in-this-page" nc:name="Find in This Page…" nc:link="menu_reference.xhtml#find_in_this_page"/> </rdf:li>
-        <rdf:li> <rdf:Description ID="menu-view-find-again" nc:name="Find Again" nc:link="menu_reference.xhtml#find_again"/> </rdf:li>
-        <rdf:li> <rdf:Description ID="menu-view-preferences" nc:name="Preferences" nc:link="menu_reference.xhtml#prefs" nc:platform="unix"/> </rdf:li>
-      </rdf:Seq>
-    </nc:subheadings>
-  </rdf:Description>
-
-  <rdf:Description about="#menu-view">
-    <nc:subheadings>
-      <rdf:Seq>
-        <rdf:li> <rdf:Description ID="menu-view-toolbars" nc:name="Toolbars" nc:link="menu_reference.xhtml#toolbars"/> </rdf:li>
-        <rdf:li> <rdf:Description ID="menu-view-status-bar" nc:name="Status Bar" nc:link="menu_reference.xhtml#status_bar"/> </rdf:li>
-        <rdf:li> <rdf:Description ID="menu-view-sidebar" nc:name="Sidebar" nc:link="menu_reference.xhtml#sidebar"/> </rdf:li>
-        <rdf:li> <rdf:Description ID="menu-view-stop" nc:name="Stop" nc:link="menu_reference.xhtml#stop"/> </rdf:li>
-        <rdf:li> <rdf:Description ID="menu-view-reload" nc:name="Reload" nc:link="menu_reference.xhtml#reload"/> </rdf:li>
-        <rdf:li> <rdf:Description ID="menu-view-text-size" nc:name="Text Size" nc:link="menu_reference.xhtml#text_size"/> </rdf:li>
-        <rdf:li> <rdf:Description ID="menu-view-page-style" nc:name="Page Style" nc:link="menu_reference.xhtml#page_style"/> </rdf:li>
-        <rdf:li> <rdf:Description ID="menu-view-character-encoding" nc:name="Character Encoding" nc:link="menu_reference.xhtml#character_encoding"/> </rdf:li>
-        <rdf:li> <rdf:Description ID="menu-view-page-source" nc:name="Page Source" nc:link="menu_reference.xhtml#page_source"/> </rdf:li>
-        <rdf:li> <rdf:Description ID="menu-view-full-screen" nc:name="Full Screen" nc:link="menu_reference.xhtml#full_screen" nc:platform="win unix os2"/> </rdf:li>
-      </rdf:Seq>
-    </nc:subheadings>
-  </rdf:Description>
-
-  <rdf:Description about="#menu-view-toolbars">
-    <nc:subheadings>
-      <rdf:Seq>
-        <rdf:li> <rdf:Description ID="menu-view-toolbars-navigation" nc:name="Navigation Toolbar" nc:link="menu_reference.xhtml#navigation_toolbar"/> </rdf:li>
-        <rdf:li> <rdf:Description ID="menu-view-toolbars-bookmarks" nc:name="Bookmarks Toolbar" nc:link="menu_reference.xhtml#bookmarks_toolbar"/> </rdf:li>
-        <rdf:li> <rdf:Description ID="menu-view-toolbars-customize" nc:name="Customize" nc:link="menu_reference.xhtml#customize"/> </rdf:li>
-      </rdf:Seq>
-    </nc:subheadings>
-  </rdf:Description>
-
-  <rdf:Description about="#menu-view-sidebar">
-    <nc:subheadings>
-      <rdf:Seq>
-        <rdf:li> <rdf:Description ID="menu-view-sidebar-bookmarks" nc:name="Bookmarks" nc:link="menu_reference.xhtml#view_sidebar_bookmarks"/> </rdf:li>
-        <rdf:li> <rdf:Description ID="menu-view-sidebar-history" nc:name="History" nc:link="menu_reference.xhtml#view_sidebar_history"/> </rdf:li>
-      </rdf:Seq>
-    </nc:subheadings>
-  </rdf:Description>
-
-  <rdf:Description about="#menu-view-text-size">
-    <nc:subheadings>
-      <rdf:Seq>
-        <rdf:li> <rdf:Description ID="menu-view-text-size-increase" nc:name="Increase" nc:link="menu_reference.xhtml#increase_text_size"/> </rdf:li>
-        <rdf:li> <rdf:Description ID="menu-view-text-size-decrease" nc:name="Decrease" nc:link="menu_reference.xhtml#decrease_text_size"/> </rdf:li>
-        <rdf:li> <rdf:Description ID="menu-view-text-size-reset" nc:name="Normal" nc:link="menu_reference.xhtml#reset_text_size"/> </rdf:li>
-      </rdf:Seq>
-    </nc:subheadings>
-  </rdf:Description>
-
-  <rdf:Description about="#menu-view-page-style">
-    <nc:subheadings>
-      <rdf:Seq>
-        <rdf:li> <rdf:Description ID="menu-view-page-style-no-style" nc:name="No Style" nc:link="menu_reference.xhtml#no_style"/> </rdf:li>
-        <rdf:li> <rdf:Description ID="menu-view-page-style-basic-page-style" nc:name="Basic Page Style" nc:link="menu_reference.xhtml#basic_page_style"/> </rdf:li>
-      </rdf:Seq>
-    </nc:subheadings>
-  </rdf:Description>
-
-  <rdf:Description about="#menu-go">
-    <nc:subheadings>
-      <rdf:Seq>
-        <rdf:li> <rdf:Description ID="menu-go-back" nc:name="Back" nc:link="menu_reference.xhtml#back"/> </rdf:li>
-        <rdf:li> <rdf:Description ID="menu-go-forward" nc:name="Forward" nc:link="menu_reference.xhtml#forward"/> </rdf:li>
-        <rdf:li> <rdf:Description ID="menu-go-home" nc:name="Home" nc:link="menu_reference.xhtml#home"/> </rdf:li>
-        <rdf:li> <rdf:Description ID="menu-go-closed-tabs" nc:name="Recently Closed Tabs" nc:link="menu_reference.xhtml#closed_tabs"/> </rdf:li>
-        <rdf:li> <rdf:Description ID="menu-go-history" nc:name="Show in Sidebar" nc:link="menu_reference.xhtml#go_history"/> </rdf:li>
-      </rdf:Seq>
-    </nc:subheadings>
-  </rdf:Description>
-
-  <rdf:Description about="#menu-bookmarks">
-    <nc:subheadings>
-      <rdf:Seq>
-        <rdf:li> <rdf:Description ID="menu-bookmarks-add-to-bookmarks" nc:name="Bookmark This Page" nc:link="menu_reference.xhtml#add_to_bookmarks"/> </rdf:li>
-        <rdf:li> <rdf:Description ID="menu-bookmarks-subscribe" nc:name="Subscribe to This Page…" nc:link="menu_reference.xhtml#subscribe"/> </rdf:li>
-        <rdf:li> <rdf:Description ID="menu-bookmarks-bookmark-all-tabs" nc:name="Bookmark All Tabs…" nc:link="menu_reference.xhtml#bookmark_all_tabs"/> </rdf:li>
-        <rdf:li> <rdf:Description ID="menu-bookmarks-organize-bookmarks" nc:name="Organize Bookmarks…" nc:link="menu_reference.xhtml#organize_bookmarks"/> </rdf:li>
-      </rdf:Seq>
-    </nc:subheadings>
-  </rdf:Description>
-
-  <rdf:Description about="#menu-tools">
-    <nc:subheadings>
-      <rdf:Seq>
-        <rdf:li> <rdf:Description ID="menu-tools-web-search" nc:name="Web Search" nc:link="menu_reference.xhtml#web_search"/> </rdf:li>
-        <rdf:li> <rdf:Description ID="menu-tools-downloads" nc:name="Downloads" nc:link="menu_reference.xhtml#downloads"/> </rdf:li>
-        <rdf:li> <rdf:Description ID="menu-tools-add-ons" nc:name="Add-ons" nc:link="menu_reference.xhtml#add_ons"/> </rdf:li>
-        <rdf:li> <rdf:Description ID="menu-tools-javascript-console" nc:name="Error Console" nc:link="menu_reference.xhtml#javascript_console"/> </rdf:li>
-        <rdf:li> <rdf:Description ID="menu-tools-page-info" nc:name="Page Info" nc:link="menu_reference.xhtml#page_info"/> </rdf:li>
-        <rdf:li> <rdf:Description ID="menu-tools-clear-private-data" nc:name="Clear Private Data…" nc:link="menu_reference.xhtml#clear_private_data"/> </rdf:li>
-        <rdf:li> <rdf:Description ID="menu-tools-options" nc:name="Options" nc:link="menu_reference.xhtml#options" nc:platform="win os2"/> </rdf:li>
-      </rdf:Seq>
-    </nc:subheadings>
-  </rdf:Description>
-
-  <rdf:Description about="#menu-window">
-    <nc:subheadings>
-      <rdf:Seq>
-        <rdf:li> <rdf:Description ID="menu-window-minimize" nc:name="Minimize" nc:link="menu_reference.xhtml#minimize"/> </rdf:li>
-        <rdf:li> <rdf:Description ID="menu-window-zoom" nc:name="Zoom" nc:link="menu_reference.xhtml#zoom"/> </rdf:li>
-        <rdf:li> <rdf:Description ID="menu-window-open-windows" nc:name="(Open Windows)" nc:link="menu_reference.xhtml#open-windows"/> </rdf:li>
-      </rdf:Seq>
-    </nc:subheadings>
-  </rdf:Description>
-
-  <rdf:Description about="#menu-help">
-    <nc:subheadings>
-      <rdf:Seq>
-        <rdf:li> <rdf:Description ID="menu-help-help-contents" nc:name="Help Contents" nc:link="menu_reference.xhtml#help_contents" nc:platform="win unix os2"/> </rdf:li>
-        <rdf:li> <rdf:Description ID="menu-help-help-contents-mac" nc:name="&brandShortName; Help" nc:link="menu_reference.xhtml#help_contents" nc:platform="mac"/> </rdf:li>
-        <rdf:li> <rdf:Description ID="menu-help-for-ie-users" nc:name="For Internet Explorer Users" nc:link="menu_reference.xhtml#for_ie_users" nc:platform="win"/> </rdf:li>
-        <rdf:li> <rdf:Description ID="menu-help-relnotes" nc:name="Release Notes" nc:link="menu_reference.xhtml#relnotes"/> </rdf:li>
-        <rdf:li> <rdf:Description ID="menu-help-report-broken-web-site" nc:name="Report Broken Web Site…" nc:link="menu_reference.xhtml#reporter"/> </rdf:li>
-        <rdf:li> <rdf:Description ID="menu-help-report-web-forgery" nc:name="Report Web Forgery…" nc:link="menu_reference.xhtml#web_forgery"/> </rdf:li>
-        <rdf:li> <rdf:Description ID="menu-help-check-for-updates" nc:name="Check for Updates…" nc:link="menu_reference.xhtml#check_for_updates"/> </rdf:li>
-        <rdf:li> <rdf:Description ID="menu-help-about-mozilla-firebird" nc:name="About &brandFullName;" nc:link="menu_reference.xhtml#about_mozilla_firebird" nc:platform="win unix os2"/> </rdf:li>
-      </rdf:Seq>
-    </nc:subheadings>
-  </rdf:Description>
-
-  <rdf:Description about="#ieusers">
-    <nc:subheadings>
-      <rdf:Seq>
-        <rdf:li> <rdf:Description ID="ieusers-firebird-ie-terminology-differences" nc:name="Terminology Differences" nc:link="forieusers.xhtml#firebird_and_internet_explorer_terminology_differences"/> </rdf:li>
-        <rdf:li> <rdf:Description ID="ieusers-about-your-ie-settings" nc:name="About Your IE Favorites and Settings" nc:link="forieusers.xhtml#about_your_ie_settings"/> </rdf:li>
-        <rdf:li> <rdf:Description ID="ieusers-firebirds-features" nc:name="&brandFullName;'s Features" nc:link="forieusers.xhtml#firebirds_features"/> </rdf:li>
-        <rdf:li> <rdf:Description ID="ieusers-keyboard-shortcuts" nc:name="Keyboard Shortcuts" nc:link="forieusers.xhtml#keyboard_shortcuts"/> </rdf:li>
-      </rdf:Seq>
-    </nc:subheadings>
-  </rdf:Description>
-
-  <!-- The following nodes are intentionally linkable but not displayable -->
-  <Description rdf:ID="prefs-languages" nc:name="Languages" nc:link="prefs.xhtml#languages"/>
-  <Description rdf:ID="prefs-fonts-and-colors" nc:name="Fonts &amp; Colors" nc:link="prefs.xhtml#fonts_and_colors"/>
-  <Description rdf:ID="prefs-connection-settings" nc:name="Connection Settings" nc:link="prefs.xhtml#connection_settings"/>
-
-  <!-- The following nodes are trees used multiple times in the hierarchy
-       (for platform-specific reasons).  To display one of these trees,
-       include an nc:subheadings element with an rdf:ID attribute set to
-       "#" plus the value of the rdf:ID for the appropriate tree within
-       the appropriate rdf:Description element. -->
-
-  <Seq rdf:ID="prefs-tree">
-    <li><Description ID="prefs-main" nc:name="Main" nc:link="prefs.xhtml#main_options"/></li>
-    <li><Description ID="prefs-tabs" nc:name="Tabs" nc:link="prefs.xhtml#tabs_options"/></li>
-    <li><Description ID="prefs-content" nc:name="Content" nc:link="prefs.xhtml#content_options"/></li>
-    <li><Description ID="prefs-applications" nc:name="Applications" nc:link="prefs.xhtml#applications_options"/></li>
-    <li><Description ID="prefs-privacy" nc:name="Privacy" nc:link="prefs.xhtml#privacy_options"/></li>
-    <li><Description ID="prefs-security" nc:name="Security" nc:link="prefs.xhtml#security_options"/></li>
-    <li><Description ID="prefs-advanced" nc:name="Advanced" nc:link="prefs.xhtml#advanced_options"/></li>
-  </Seq>
-
-  <!-- The following are subnodes of trees used multiple times in the hierarchy. -->
-
-  <Description rdf:about="#prefs-main">
-    <nc:subheadings>
-      <Seq>
-        <li><Description rdf:ID="prefs-startup" nc:name="Startup" nc:link="prefs.xhtml#startup"/></li>
-        <li><Description rdf:ID="prefs-downloads" nc:name="Downloads" nc:link="prefs.xhtml#downloads"/></li>
-        <li><Description rdf:ID="prefs-system-defaults" nc:name="System Defaults" nc:link="prefs.xhtml#system_defaults"/></li>
-        <li><Description rdf:ID="prefs-addons" nc:name="Add-ons" nc:link="prefs.xhtml#addons"/></li>
-      </Seq>
-    </nc:subheadings>
-  </Description>
-  
-  <Description rdf:about="#prefs-content">
-    <nc:subheadings>
-      <Seq>
-        <li><Description rdf:ID="prefs-advanced-javascript" nc:name="Advanced Javascript Settings" nc:link="prefs.xhtml#advanced_javascript"/></li>
-        <li><Description rdf:ID="prefs-fonts-and-colors" nc:name="Fonts and Colors" nc:link="prefs.xhtml#fonts_and_colors"/></li>
-      </Seq>
-    </nc:subheadings>
-  </Description>
-  
-  <Description rdf:about="#prefs-privacy">
-    <nc:subheadings>
-      <rdf:Seq>
-        <li><Description rdf:ID="prefs-privacy-history" nc:name="History" nc:link="prefs.xhtml#privacy_history"/></li>
-        <li><Description rdf:ID="prefs-privacy-cookies" nc:name="Cookies" nc:link="prefs.xhtml#privacy_cookies"/></li>
-        <li><Description rdf:ID="prefs-clear-private-data" nc:name="Private Data" nc:link="prefs.xhtml#private_data"/></li>
-      </rdf:Seq>
-    </nc:subheadings>
-  </Description>
-  
-  <Description rdf:about="#prefs-security">
-    <nc:subheadings>
-      <Seq>
-        <li><Description rdf:ID="prefs-passwords" nc:name="Passwords" nc:link="prefs.xhtml#security_passwords"/></li>
-        <li><Description rdf:ID="prefs-warning-messages" nc:name="Warning Messages" nc:link="prefs.xhtml#warning_messages"/></li>
-      </Seq>
-    </nc:subheadings>
-  </Description>
-  
-  <Description rdf:about="#prefs-advanced">
-    <nc:subheadings>
-      <Seq>
-        <li><Description rdf:ID="prefs-advanced-general" nc:name="General" nc:link="prefs.xhtml#advanced_general"/></li>
-        <li><Description rdf:ID="prefs-advanced-network" nc:name="Network" nc:link="prefs.xhtml#advanced_network"/></li>
-        <li><Description rdf:ID="prefs-advanced-update" nc:name="Update" nc:link="prefs.xhtml#advanced_update"/></li>
-        <li><Description rdf:ID="prefs-advanced-encryption" nc:name="Encryption" nc:link="prefs.xhtml#advanced_encryption"/></li>
-      </Seq>
-    </nc:subheadings>
-  </Description>
-
-</rdf:RDF>
deleted file mode 100644
--- a/browser/locales/en-US/chrome/help/firebirdhelp.rdf
+++ /dev/null
@@ -1,32 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<!DOCTYPE window [
-    <!ENTITY % brandDTD SYSTEM "chrome://branding/locale/brand.dtd">
-    %brandDTD;
-]>
-
-<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-     xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-     xmlns:nc="http://home.netscape.com/NC-rdf#">
-
-    <!-- MOZILLA MASTER HELP DOCUMENT -->
-    <Description rdf:about="urn:root"
-            nc:title="&brandFullName; Help"
-            nc:defaulttopic="firefox-help"
-            nc:base="chrome://browser/locale/help/">
-        <nc:panellist>
-            <Seq>
-                <li>
-                    <Description nc:panelid="toc"
-                        nc:datasources="chrome://help/locale/help-toc.rdf firebird-toc.rdf"/>
-                </li>
-                <li>
-                    <Description nc:panelid="search"
-                        nc:datasources="search-db.rdf"
-                        nc:emptysearchtext="[No matching items found.]"
-                        nc:emptysearchlink="chrome://help/locale/welcome.xhtml#search_tips"/>
-                </li>
-            </Seq>
-        </nc:panellist>
-    </Description>
-</RDF>
deleted file mode 100644
--- a/browser/locales/en-US/chrome/help/firefox_welcome.xhtml
+++ /dev/null
@@ -1,42 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"[
-    <!ENTITY % brandDTD SYSTEM "chrome://branding/locale/brand.dtd" >
-    <!ENTITY % regionDTD SYSTEM "chrome://global-region/locale/region.dtd" >
-    <!ENTITY % platformDTD SYSTEM "chrome://browser/locale/help/platformStrings.dtd" >
-    %brandDTD;
-    %regionDTD;
-    %platformDTD;
-]>
-<!--
-Contributors:
-  R.J. Keller <rlk@trfenv.com> (original author)
-  Jeff Walden <jwalden+code@mit.edu>
-  Steffen Wilberg <steffen.wilberg@web.de>
--->
-
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-	<title>&brandFullName; Help</title>
-	<link rel="stylesheet" type="text/css" href="chrome://help/skin/helpFileLayout.css"/>
-</head>
-<body>
-
-<h1>Welcome to &brandFullName; Help</h1>
-<p>To display information about &brandFullName; in this window, click topics in
-  the <em>Contents</em> sidebar. Click the <span class="noMac">plus icon</span>
-  <span class="mac">triangle</span> next to a topic to see its subtopics.</p>
-
-<p>You can also use the <em>Search</em> bar to find specific
-  information within &brandShortName; Help.  For more information on using
-  &brandFullName; Help, see <a href="chrome://help/locale/welcome.xhtml">Using
-  the Help Window</a>.</p>
-
-<p>If you can't find what you need in built-in &brandShortName; Help, you can
-  find more help and support options online at <a
-  href="http://www.mozilla.org/support/firefox/" target="_blank">&brandShortName; Help</a>.</p>
-
-<div class="contentsBox"><em>09 July 2005</em></div>
-<p>Copyright &copy; &copyright.years; Contributors to the Mozilla Help Viewer Project.</p>
-
-</body>
-</html>
deleted file mode 100644
--- a/browser/locales/en-US/chrome/help/forieusers.xhtml
+++ /dev/null
@@ -1,115 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"[
-    <!ENTITY % brandDTD SYSTEM "chrome://branding/locale/brand.dtd" >
-    %brandDTD;
-    <!ENTITY % platformDTD SYSTEM "chrome://browser/locale/help/platformStrings.dtd" >
-    %platformDTD;
-]>
-
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-	<title>For Internet Explorer Users</title>
-	<link rel="stylesheet" type="text/css" href="chrome://help/skin/helpFileLayout.css"/>
-</head>
-
-<body>
-<h1>For Internet Explorer Users</h1>
-
-<p>If you've been using Microsoft&reg; Internet Explorer, you'll find that
-  it's easy to begin using &brandFullName;.</p>
-<p><strong>Note:</strong> This information applies to &brandFullName; for Windows and
-  Mac OS.</p>
-
-<div class="contentsBox">In this section:
-  <ul>
-    <li><a href="#firebird_and_internet_explorer_terminology_differences">
-      Terminology Differences</a></li>
-    <li><a href="#about_your_ie_settings">About Your IE Favorites and Settings</a></li>
-    <li><a href="#firebirds_features">&brandShortName;'s Features</a></li>
-    <li><a href="#keyboard_shortcuts">Keyboard Shortcuts</a></li>
-  </ul>
-</div>
-
-<h2 id="firebird_and_internet_explorer_terminology_differences">Terminology
-  Differences</h2>
-
-<table width="95%" border="1">
- <thead>
-  <tr>
-    <th>Internet Explorer</th>
-    <th>&brandShortName;</th>
-  </tr>
- </thead>
- <tbody>
-  <tr class="noMac">
-    <td>Internet Options</td>
-    <td>&pref.pluralCaps;</td>
-  </tr>
-  <tr class="noMac">
-    <td>Temporary Internet Files</td>
-    <td>Cache</td>
-  </tr>
-  <tr>
-    <td>Favorites</td>
-    <td>Bookmarks</td>
-  </tr>
-  <tr>
-    <td>Address Bar</td>
-    <td>Location Bar</td>
-  </tr>
-  <tr>
-    <td>Refresh</td>
-    <td>Reload</td>
-  </tr>
-  <tr>
-    <td><span class="noMac">Links Bar</span><span class="mac">Favorites Bar</span></td>
-    <td>Bookmarks Toolbar</td>
-  </tr>
-  <tr>
-    <td><span class="noMac">Copy Shortcut</span><span class="mac">Copy Link to Clipboard</span></td>
-    <td>Copy Link Location</td>
-  </tr>
-  <tr>
-    <td><span class="noMac">Save Target As</span><span class="mac">Download Link to Disk</span></td>
-    <td>Save Link As</td>
-  </tr>
- </tbody>
-</table>
-
-<h2 id="about_your_ie_settings">About Your IE Favorites and Settings</h2>
-
-<p>When you first install &brandShortName;, it will import your existing
-  Internet Explorer settings, including your Favorites, cookies, stored
-  passwords, and a variety of other data.  This saves you time customizing
-  &brandShortName; to fit your needs.</p>
-
-<h2 id="firebirds_features">&brandShortName;'s Features</h2>
-<ul>
-  <li><strong>Tabbed Browsing</strong>: Instead of opening a separate browser
-    window for each site you want to visit, you can open multiple sites within
-    the same window and tab between them. You can also set a group of tabs as
-    your home page.  For more information see <a
-    href="tabbed_browsing.xhtml">Tabbed Browsing</a>.</li>
-  <li><strong>Pop-up Window Controls</strong>: Lets you allow or suppress both
-    pop-up and pop-under windows.</li>
-  <li><strong>Cookie Manager</strong>: Lets you change what &brandShortName; will
-    do when accepting cookies.</li>
-  <li><strong>Download Manager</strong>: Organizes your downloads by storing
-    them in a single window to minimize clutter.  You have full access to
-    download statistics without using unnecessary multiple windows for each
-    download.</li>
-  <li><strong>Image Manager</strong>: Enables you to disable images from certain
-    web sites or disable them altogether. This is useful if you wish to decrease
-    the amount of time it takes for web sites to load.</li>
-</ul>
-
-<h2 id="keyboard_shortcuts">Keyboard Shortcuts</h2>
-<p>You will notice that Microsoft Internet Explorer and &brandShortName; share many of
-  the same shortcut keys. For a full list of shortcut keys, see the
-  <a href="shortcuts.xhtml">List of &brandShortName; Keyboard Shortcuts</a>.</p>
-
-<div class="contentsBox"><em>10 December 2004</em></div>
-<p>Copyright &copy; &copyright.years; Contributors to the Mozilla Help Viewer Project.</p>
-
-</body>
-</html>
deleted file mode 100644
--- a/browser/locales/en-US/chrome/help/glossary.xhtml
+++ /dev/null
@@ -1,293 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"[
-    <!ENTITY % brandDTD SYSTEM "chrome://branding/locale/brand.dtd" >
-    %brandDTD;
-    <!ENTITY % platformDTD SYSTEM "chrome://browser/locale/help/platformStrings.dtd" >
-    %platformDTD;
-]
->
-
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-	<title>Glossary</title>
-	<link rel="stylesheet" type="text/css" href="chrome://help/skin/helpFileLayout.css"/>
-</head>
-
-<body>
-
-<p>This glossary is provided for your information only; it is not meant to be relied
-  upon as a complete or authoritative description of the terms defined below or of
-  the privacy and/or security ramifications of the technologies described.</p>
-<hr/>
-
-<h1 id="glossary">Glossary</h1>
-
-<dl>
-
-<dt id="authentication">authentication</dt>
-<dd>The use of a password, certificate, personal identification number
-  (PIN), or other information to validate an identity over a computer
-  network.</dd>
-
-<dt id="bookmark">bookmark</dt>
-<dd>A stored web page address (<a href="#Uniform_Resource_Locator">URL</a>)
-  that you can go to easily by clicking a bookmark icon in the Bookmarks Toolbar
-  or choosing the bookmark's name from the Bookmarks menu.</dd>
-
-<dt id="Bookmarks_Toolbar">Bookmarks Toolbar</dt>
-<dd>The customizable toolbar that appears just below the Location Bar by
-  default in &brandShortName;. It contains buttons for your favorite bookmarks
-  (or folders containing groups of bookmarks) that you can add or remove.</dd>
-
-<dt id="cache">cache</dt>
-<dd>A collection of web page copies stored on your computer's hard disk or in
-  its random-access memory (RAM). &brandShortName; accumulates these copies as you
-  browse the Web. When you click a link or type a
-  <a href="#Uniform_Resource_Locator">URL</a> to fetch a particular web page for
-  which the cache already contains a copy, &brandShortName; compares the cached copy
-  to the original. If there have been no changes, &brandShortName; uses the cached
-  copy rather than refetching the original, saving processing and download time.</dd>
-
-<dt id="certificate">certificate</dt>
-<dd>The digital equivalent of an ID card. A certificate specifies the name of an
-  individual, company, or other entity and certifies that a public key, which
-  is included in the certificate, belongs to that entity. When you digitally
-  sign a message or other data, the digital signature for that message is
-  created with the aid of the private key that corresponds to the public key
-  in your certificate.</dd>
-
-<dt id="client">client</dt>
-<dd>Software (such as an Internet browser) that sends requests to and receives
-  information from a <a href="#server">server</a>, which is usually running
-  on a different computer. A computer on which client software runs is also
-  described as a client.</dd>
-
-<dt id="cookie">cookie</dt>
-<dd>A small bit of information stored on your computer by some web sites. When
-  you visit such a site, the site asks &brandShortName; to place one or more cookies
-  on your hard disk. Later, when you return to the site, &brandShortName; sends the
-  site the cookies that belong to it. Cookies help web sites keep track of
-  information about you, such as the contents of your shopping cart. You can set
-  your cookies options to control how cookies are used and how much information
-  you are willing to let web sites store on them.</dd>
-
-<dt id="cryptography">cryptography</dt>
-<dd>The art and practice of scrambling (encrypting) and unscrambling (decrypting)
-  information. For example, cryptographic techniques are used to scramble and unscramble
-  information flowing between commercial web sites and &brandShortName;.</dd>
-
-<dt id="decryption">decryption</dt>
-<dd>The process of unscrambling data that has been encrypted. See also
-  <a href="#encryption">encryption</a>.</dd>
-
-<dt id="digital_ID">digital ID</dt>
-<dd>See <a href="#certificate">certificate</a>.</dd>
-
-<dt id="encryption">encryption</dt>
-<dd>The process of scrambling information in a way that disguises its meaning.
-  For example, encrypted connections between computers make it very difficult
-  for third-parties to unscramble, or <em>decrypt,</em> information flowing
-  over the connection. Encrypted information can be decrypted only by someone
-  who possesses the appropriate key.</dd>
-
-<dt id="XML">Extensible Markup Language (XML)</dt>
-<dd>An open standard for describing data. Unlike HTML, XML allows the
-  developer of a web page to define special tags. For more information,
-  see the online W3C document <a href="http://www.w3.org/XML/">Extensible
-  Markup Language (XML)</a>.</dd>
-
-<dt id="feed">feed</dt>
-<dd>An <a href="#XML">XML</a> web page that contains a list of links to
-  other web pages.  Special programs can read feeds to create a list
-  of headlines from the links, automatically updating the list as it changes.
-  News web sites use feeds to quickly publish the latest headlines, and
-  personal online journals often use feeds to quickly notify visitors about
-  new entries.  See also <a href="#live_bookmark">Live Bookmark</a>.</dd>
-
-<dt id="File_Transfer_Protocol">File Transfer Protocol (FTP)</dt>
-<dd>A standard that allows users to transfer files from one computer to
-  another over a network. You can use &brandShortName; to fetch files
-  using FTP.</dd>
-
-<dt id="FIPS_PUBS_140-1">FIPS PUBS 140-1</dt>
-<dd>Federal Information Processing Standards Publications (FIPS PUBS) 140-1 is
-  a US government standard for implementations of cryptographic modules &mdash;
-  hardware or software that encrypts and decrypts data or performs other
-  cryptographic operations (such as creating or verifying digital signatures).
-  Many products sold to the US government must comply with one or more of the
-  FIPS standards.</dd>
-
-<dt id="home_page">home page</dt>
-<dd>The page &brandShortName; is set to display every time you launch it or when you
-  click the <em>Home</em> button. Also used to refer to the main page for a
-  web site from which you can explore the rest of the site.</dd>
-
-<dt id="Hypertext_Markup_Language">Hypertext Markup Language (HTML)</dt>
-<dd>The document format used for web pages. The HTML standard defines tags, or
-  codes, used to define the text layout, fonts, style, images, and other
-  elements that make up a web page.</dd>
-
-<dt id="Internet">Internet</dt>
-<dd>A worldwide network of millions of computers that communicate with each
-  other using standard protocols such as
-  <a href="#TCP_IP">TCP/IP</a>.
-  Originally developed for the US military in 1969, the Internet grew to include
-  educational and research institutions and, in the late 1990s, millions of
-  businesses, organizations, and individuals. Today the Internet is used for email,
-  browsing the <a href="#World_Wide_Web">World Wide Web</a>, instant messaging,
-  mailing lists and usegroups, and many other purposes.</dd>
-
-<dt id="Internet_protocol_address">Internet protocol address (IP address)</dt>
-<dd>The address of a computer on a
-  <a href="#TCP_IP">TCP/IP</a> network.
-  Every computer on the Internet has an IP address. <a href="#client">Clients</a>
-  have either a permanent IP address or one that is dynamically assigned to them
-  each time they connect with the network.</dd>
-
-<dt id="Java">Java</dt>
-<dd>A programming language developed by Sun Microsystems. A single Java program
-  can run on many different kinds of computers, thus avoiding the need for
-  programmers to create a separate version of each program for each kind of
-  computer. After Java is installed, &brandShortName; can automatically download
-  and run Java programs (also called applets).</dd>
-
-<dt id="JavaScript">JavaScript</dt>
-<dd>A scripting language commonly used to construct web pages. Programmers use
-  JavaScript to make web pages more interactive; JavaScript is often used to
-  dynamically validate forms and select buttons. JavaScript can be used with
-  Java, but it is technically a separate language. Java is not required for
-  JavaScript to work correctly.</dd>
-
-<dt id="live_bookmark">Live Bookmark</dt>
-<dd>A special type of bookmark that acts as a folder to contain the links in a
-  <a href="#feed">feed</a>.  You can create a Live Bookmark by visiting a site
-  with a feed, clicking on the Live Bookmark icon in the Location Bar, and
-  selecting the feed you wish to use.</dd>
-
-<dt id="location_bar">Location Bar</dt>
-<dd>The field (and associated buttons) near the top of a &brandShortName; window
-  where you can type a <a href="#Uniform_Resource_Locator">URL</a> or search terms.</dd>
-
-<dt id="master_password">master password</dt>
-<dd>A password used to protect saved passwords and other private data.
-  &brandShortName; will prompt you for your master password when you wish to
-  access this data. If you have multiple security devices, each security device
-  will require a separate master password.</dd>
-
-<dt id="navigation_toolbar">Navigation Toolbar</dt>
-<dd>The toolbar near the top of the &brandShortName; window that includes
-  the <em>Back</em> and <em>Forward</em> buttons.</dd>
-
-<dt id="Password_Manager">Password Manager</dt>
-<dd>The part of &brandShortName; that can help you remember some or all of
-  your names and passwords by storing them on your computer's hard disk and
-  entering them for you automatically when you visit such sites.</dd>
-
-<dt id="PKCS_11">PKCS #11</dt>
-<dd>The public-key cryptography standard that governs security devices such
-  as smart cards.</dd>
-
-<dt id="Plugin">Plugin</dt>
-<dd>Plugins add new capabilities to &brandShortName;, such as the ability to
-  play audio or video clips. Unlike other kinds of helper applications, a Plugin
-  installs itself into the Plugins directory within the main
-  &brandShortName; installation directory and typically can be opened within
-  &brandShortName; itself (internally). For example, an audio Plugin lets you
-  listen to audio files on a web page or in an e-mail message. Macromedia
-  Flash Player and Java are both examples of Plugin applications.</dd>
-
-<dt id="private_key">private key</dt>
-<dd>One of a pair of keys used in public-key cryptography. The private key is 
-kept secret and is used to decrypt data that has been encrypted with the 
-corresponding public key.</dd>
-
-<dt id="proxy">proxy</dt>
-<dd>An intermediary or &quot;go-between&quot; program that acts as both a
-  <a href="#server">server</a> and a <a href="#client">client</a> for
-  the purpose of making requests on behalf of other clients.</dd>
-
-<dt id="search_engine">search engine</dt>
-<dd>A web-based program that allows users to search for and retrieve
-  specific information from the World Wide Web. The search engine may
-  search the full text of web documents or a list of keywords; it may
-  also use librarians who review web documents and index them manually
-  for retrieval. Typically, the user types a word or phrase into a
-  search box, and the search engine displays links to relevant web
-  pages.</dd>
-
-<dt id="secure_site">secure site</dt>
-<dd>A site that uses <a href="#encryption">encryption</a> in connections
-  with &brandShortName; to prevent other malicious Internet users from
-  viewing transmitted data.  When you visit secure sites, &brandShortName;
-  displays a lock icon in the <a href="#Status_Bar">Status Bar</a> and the
-  <a href="#location_bar">Location Bar</a>.  &brandShortName; also
-  displays the site's domain name in the Status Bar (to prevent malicious
-  sites from stealing your data) and turns the background of the Location
-  Bar to yellow.</dd>
-<dd>Some sites may consist of both secure and insecure data; the insecure data
-  usually is non-private, although it isn't guaranteed to be so.  For such
-  sites &brandShortName; will display a lock icon with a slash through it in
-  the Status Bar and Location Bar and will <em>not</em> display the site's
-  domain name in the Status Bar so that you know that the current web page
-  isn't completely secure.</dd>
-
-<dt id="SSL">Secure Sockets Layer (SSL)</dt>
-<dd>A protocol that allows mutual authentication between a
-  <a href="#client">client</a> and a <a href="#server">server</a>
-  for the purpose of establishing an authenticated and encrypted
-  connection. SSL runs above TCP/IP and below HTTP, LDAP, IMAP, NNTP,
-  and other high-level network protocols. The new Internet Engineering
-  Task Force (IETF) standard called Transport Layer Security (TLS) is
-  based on SSL. See also <a href="#authentication">authentication</a>,
-  <a href="#encryption">encryption</a>.</dd>
-
-<dt id="server">server</dt>
-<dd>Software (such as software that serves up web pages) that receives
-  requests from and sends information to a <a href="#client">client</a>,
-  which is usually running on a different computer. A computer on which
-  server software runs is also described as a server.</dd>
-
-<dt id="Status_Bar">Status Bar</dt>
-<dd>The toolbar that appears at the bottom of any &brandShortName; window. It
-  shows status icons on the right.</dd>
-
-<dt id="TLS">TLS</dt>
-<dd>See <a href="#SSL">Secure Sockets Layer (SSL)</a>.</dd>
-
-<dt id="TCP_IP">Transmission Control Protocol/Internet Protocol (TCP/IP)</dt>
-<dd>A Unix protocol used to connect computers running a variety of operating systems.
-  TCP/IP is an essential Internet protocol and has become a global standard.</dd>
-
-<dt id="Uniform_Resource_Locator">Uniform Resource Locator (URL)</dt>
-<dd>The standardized address that tells &brandShortName; how to locate a file or
-  other resource on the Web (for example, <tt>http://www.mozilla.org</tt>).
-  Type URLs into &brandShortName;'s Location Bar to access web pages. URLs
-  are also used in the links on web pages go to other web pages. Also known
-  as an Internet or Web address.</dd>
-
-<dt id="web_page">web page</dt>
-<dd>A single document on the World Wide Web that is specified by a unique
-  address or URL.  A web page may contain text, hyperlinks, and graphics.</dd>
-
-<dt id="web_site">web site</dt>
-<dd>A group of related web pages linked by hyperlinks and managed by a single
-  company, organization, or individual. A web site may include text, graphics,
-  audio and video files, and links to other web sites.</dd>
-
-<dt id="World_Wide_Web">World Wide Web</dt>
-<dd>Also known as the Web. A portion of the Internet that is made up of web
-  pages stored by web <a href="#server">servers</a> and displayed by
-  <a href="#client">clients</a> called web browsers (such as
-  &brandShortName;).</dd>
-
-</dl>
-
-<p>
-[&nbsp;<a href="#glossary">Return to beginning of Glossary</a>&nbsp;]
-</p>
-
-<div class="contentsBox"><em>07 April 2005</em></div>
-<p>Copyright &copy; &copyright.years; Contributors to the Mozilla Help Viewer Project.</p>
-
-</body>
-</html>
deleted file mode 100644
--- a/browser/locales/en-US/chrome/help/menu_reference.xhtml
+++ /dev/null
@@ -1,432 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"[
-    <!ENTITY % brandDTD SYSTEM "chrome://branding/locale/brand.dtd" >
-    %brandDTD;
-    <!ENTITY % platformDTD SYSTEM "chrome://browser/locale/help/platformStrings.dtd" >
-    %platformDTD;
-]>
-<!--
-Contributors:
-  David Tenser <david.tenser@comhem.se> (original author)
-  R.J. Keller <rlk@trfenv.com>
-  Jeff Walden <jwalden+code@mit.edu>
-  Steffen Wilberg <steffen.wilberg@web.de>
--->
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-  <title>&brandFullName; Menu Reference</title>
-  <link rel="stylesheet" type="text/css" href="chrome://help/skin/helpFileLayout.css"/>
-</head>
-
-<body>
-
-<h1>&brandFullName; Menu Reference</h1>
-  <p>This menu reference describes each menu item in the main
-    &brandFullName; window.</p>
-
-  <div class="contentsBox">In this section:
-    <ul>
-      <li class="mac"><a href="#firefox">&brandShortName;</a></li>
-      <li><a href="#file">File</a></li>
-      <li><a href="#edit">Edit</a></li>
-      <li><a href="#view">View</a></li>
-      <li><a href="#go">History</a></li>
-      <li><a href="#bookmarks">Bookmarks</a></li>
-      <li><a href="#tools">Tools</a></li>
-      <li class="mac"><a href="#window">Window</a></li>
-      <li><a href="#help">Help</a></li>
-    </ul>
-  </div>
-
-<div class="mac">
-  <h2 id="firefox">&brandShortName;</h2>
-    <h3 id="about_mac">About &brandFullName;</h3>
-    <p>Displays a dialog box with information about &brandShortName;, including
-      the current version and a brief list of credits.</p>
-
-    <h3 id="prefs_mac">Preferences…</h3>
-    <p>Displays the <a href="prefs.xhtml">&pref.pluralCaps; window</a>,
-      where you can change many &pref.plural; in &brandShortName;.</p>
-
-    <h3 id="quit_mac">Quit &brandShortName;</h3>
-    <p>Closes all &brandShortName; windows, cancels any active downloads, and exits
-      &brandShortName; completely. If you happen to select this menu item with
-      more than one tab or window open, &brandShortName; will ask you to confirm
-      your choice to prevent accidental exits. You can switch off this warning
-      by deselecting the <em>Warn me when closing multiple tabs</em> checkbox in
-      the <em>Tabs</em> panel of &pref.menuPath;. &brandShortName; will also
-      warn you if you are currently downloading any files.</p>
-</div>
-
-<h2 id="file">File</h2>
-
-  <h3 id="new_window">New Window</h3>
-  <p>Opens a new &brandShortName; window.</p>
-
-  <h3 id="new_tab">New Tab</h3>
-  <p>Opens a new browser tab in the current &brandShortName; window.</p>
-
-  <h3 id="open_location">Open Location…</h3>
-  <p>Focuses on the &brandShortName; URL bar so you can type in a new location to
-    visit.</p>
-
-  <h3 id="open_file">Open File…</h3>
-  <p>Displays an Open File dialog where you can select a file from your
-    local disks or network. You can view many file types in &brandShortName;,
-    including HTML/XML files, image files, text files and more.</p>
-
-  <h3 id="close">Close (Window)</h3>
-  <p>Closes the current window.</p>
-
-  <h3 id="close_tab">Close Tab</h3>
-  <p>Closes the current tab and selects the rightmost tab. This menu item is
-    visible only if more than one browser tab is currently open.</p>
-
-  <h3 id="save_page_as">Save Page As…</h3>
-  <p>Saves the page you are currently browsing. You can choose to save the
-    whole page (complete with graphics), just the current HTML page, or the
-    page text only.</p>
-
-  <h3 id="send_page">Send Link…</h3>
-  <p>Opens an email composition window using your computer's default email program
-    so you can send a message with a link to the current page.</p>
-
-  <h3 id="page_setup">Page Setup…</h3>
-  <p>Displays a Page Setup dialog where you can specify printing settings such as
-    margins, headers and footers, and page orientation.</p>
-
-  <div class="noMac">
-    <h3 id="print_preview">Print Preview</h3>
-    <p>Displays a preview of how the current document will appear when printed. It
-      reflects the settings in the Page Setup dialog and the page author's
-      intentions.</p>
-  </div>
-
-  <h3 id="print">Print…</h3>
-  <p>Displays the Print dialog, where you can specify the number of printed copies,
-    etc. Click <em>OK</em> to print the page.</p>
-
-  <h3 id="import">Import…</h3>
-  <p>Opens the Import Wizard dialog, which allows you to import &pref.plural;, bookmarks,
-    history, passwords and other data from browsers like Microsoft Internet
-    Explorer, Netscape, Mozilla or Opera.</p>
-
-  <h3 id="work_offline">Work Offline</h3>
-  <p>Toggles between online and offline mode. Offline mode allows you to view
-    web pages you've previously visited without being connected to the
-    Internet.</p>
-
-<div class="noMac">
-  <h3 id="exit">
-    <span class="win">Exit</span>
-    <span class="noWin">Quit</span>
-  </h3>
-  <p>Closes all &brandShortName; windows, cancels any active downloads, and exits
-    &brandShortName; completely. If you happen to select this menu item with
-    more than one tab or window open, &brandShortName; will ask you to confirm
-    your choice to prevent accidental exits. You can switch off this warning
-    by deselecting the <em>Warn me when closing multiple tabs</em> checkbox in
-    the <em>Tabs</em> panel of &pref.menuPath;. &brandShortName; will also
-    warn you if you are currently downloading any files.</p>
-</div>
-
-<h2 id="edit">Edit</h2>
-
-  <h3 id="undo">Undo</h3>
-  <p>Undoes the last action in a text field. If you later decide you don't want to
-    undo an action, use the Redo command.</p>
-
-  <h3 id="redo">Redo</h3>
-  <p>Redoes the last Undo command.</p>
-
-  <h3 id="cut">Cut</h3>
-  <p>Cuts the selected text from a text field and stores it in the clipboard. Paste
-    the text elsewhere by using the Paste command.</p>
-
-  <h3 id="copy">Copy</h3>
-  <p>Copies the selected text to the clipboard. Paste the text in a text field by
-    using the Paste command.</p>
-
-  <h3 id="paste">Paste</h3>
-  <p>Pastes text stored in the clipboard into a text field.</p>
-
-  <h3 id="delete">Delete</h3>
-  <p>Deletes the selected text from a text field.</p>
-
-  <h3 id="select_all">Select All</h3>
-  <p>Selects all text and other items on the page.</p>
-
-  <h3 id="find_in_this_page">Find in This Page…</h3>
-  <p>Displays the Find Toolbar at the bottom of the browser window.  Enter the
-    text you wish to find in the toolbar, and as you type &brandShortName; will
-    automatically find and select the first occurrence of the entered text on
-    the page.  Click <em>Find Next</em> or <em>Find Previous</em> to find the
-    text at other locations in the page, and click <em>Highlight</em> to
-    highlight all occurrences of the text on the page.</p>
-
-  <h3 id="find_again">Find Again</h3>
-  <p>Searches for the next occurrence of the text specified when using the
-  <em>Find in This Page…</em> command.</p>
-
-  <h3 class="unix" id="prefs">&pref.pluralCaps;</h3>
-  <p class="unix">Displays the <a href="prefs.xhtml">&pref.pluralCaps; window</a>,
-    where you can change many &pref.plural; in &brandShortName;.</p>
-
-<h2 id="view">View</h2>
-
-  <h3 id="toolbars">Toolbars</h3>
-
-    <h4 id="navigation_toolbar">Navigation Toolbar</h4>
-    <p>Toggles the visibility of the navigation toolbar, which usually contains
-      standard navigation buttons (Back, Forward, Stop, etc.).</p>
-
-    <h4 id="bookmarks_toolbar">Bookmarks Toolbar</h4>
-    <p>Toggles the visibility of the bookmarks toolbar, which contains bookmarks
-      to various sites.</p>
-
-    <h4 id="customize">Customize…</h4>
-    <p>Displays the toolbar customization dialog.  You can drag and drop toolbar
-      buttons to or from the toolbars here. You can also <span
-      class="noMac">right-click</span><span class="mac">press &ctrlKey;,
-      click</span> on the navigation toolbar and select <em>Customize…</em>
-      to show this dialog.</p>
-
-  <h3 id="status_bar">Status Bar</h3>
-  <p>Toggles the visibility of the status bar, located at the bottom of the window.
-    The status bar displays useful information about the page but may not be
-    needed by everyone.</p>
-
-  <h3 id="sidebar">Sidebar</h3>
-  <p>The Sidebar can display your bookmarks or the browsing history.  You can
-    always close the Sidebar by clicking on the X in the upper-right
-    corner.</p>
-
-    <h4 id="view_sidebar_bookmarks">Bookmarks</h4>
-    <p>Displays the Bookmarks Sidebar, which keeps your bookmarks visible all
-      the time. This can be very useful if you use bookmarks often.</p>
-
-    <h4 id="view_sidebar_history">History</h4>
-    <p>Displays the History Sidebar, which keeps track of the sites you have
-      visited. To change how many days a site should be remembered, select
-      &pref.menuPath; and select the <em>Privacy</em> panel.</p>
-
-  <h3 id="stop">Stop</h3>
-  <p>Stops loading of the current page you're browsing. This is the same as
-    clicking on the <em>Stop</em> button on the toolbar.</p>
-
-  <h3 id="reload">Reload</h3>
-  <p>Gets the most up-to-date version of the current page.  This is the same
-    as clicking the <em>Reload</em> button on the toolbar.</p>
-
-  <h3 id="text_size">Text Size</h3>
-  <p>If the text on a web page is too small or too large, you can change it to
-    a more comfortable size.</p>
-
-    <h4 id="increase_text_size">Increase</h4>
-    <p>Displays the text on the web page one size larger. You can also do this
-      with the mouse (see <a href="mouse_shortcuts.xhtml">Mouse Shortcuts</a>
-      for instructions).</p>
-
-    <h4 id="decrease_text_size">Decrease</h4>
-    <p>Displays the text on the web page one size smaller. You can also do this
-      with the mouse (see <a href="mouse_shortcuts.xhtml">Mouse Shortcuts</a>
-      for instructions).</p>
-
-    <h4 id="reset_text_size">Normal</h4>
-    <p>Displays the text on the web page at its normal size.</p>
-
-  <h3 id="page_style">Page Style</h3>
-  <p>Allows you to select a style for the current web page. By default,
-    &quot;Basic Page Style&quot; is selected unless the author specifies a
-    different default.</p>
-
-    <h4 id="no_style">No Style</h4>
-    <p>Removes style formatting from the page.</p>
-
-    <h4 id="basic_page_style">Basic Page Style</h4>
-    <p>Displays the page with a general style specified by the author.</p>
-
-    <h4 id="alternate_style"></h4>
-    <p>If the author has specified additional page styles, &brandShortName;
-     will list them here for you to select.</p>
-
-  <h3 id="character_encoding">Character Encoding</h3>
-  <p>Allows you to manually change the character encoding on a web page.
-    &brandShortName; usually does this automatically.</p>
-
-  <h3 id="page_source">Page Source</h3>
-  <p>Displays the source code for the current document. <!--A future version of
-    &brandShortName; will be capable of launching an external program for
-    viewing the source.--></p>
-
-  <div class="noMac">
-    <h3 id="full_screen">Full Screen</h3>
-    <p>Displays the window in full screen. If you have the navigation toolbar
-      hidden, you can always restore the window anyway by pressing
-      <kbd>F11</kbd>.</p>
-  </div>
-<h2 id="go">History</h2>
-
-  <p>The History menu contains a list of the most recently visited web sites and
-    closed tabs.</p>
-
-  <h3 id="back">Back</h3>
-  <p>Navigates back one page in history. This is the same as clicking on the
-    <em>Back</em> button on the toolbar.</p>
-
-  <h3 id="forward">Forward</h3>
-  <p>Navigates forward one page in history. This is the same as clicking on
-    the <em>Forward</em> button on the toolbar.</p>
-
-  <h3 id="home">Home</h3>
-  <p>Displays your home page. This is the same as clicking on the
-    <em>Home</em> button on the navigation toolbar. To change the home page,
-    select &pref.menuPath; and open the <em>Main</em> panel.  You
-    can specify to use a blank page, the current page (or tab group), a
-    bookmark, or a manually entered address.</p>
-
-  <h3 id="closed_tabs">Recently Closed Tabs</h3>
-  <p>Allows you to restore a tab you closed recently in the current window by
-    selecting it from the list. See the <a href=
-    "tabbed_browsing.xhtml#closing_tabs">Closing and Restoring Tabs</a> topic
-    for more information.</p>
-
-  <h3 id="go_history">Show in Sidebar</h3>
-  <p>Displays the History Sidebar, which keeps track of the sites you have
-    visited. To change how many days a site should be remembered, select
-    &pref.menuPath; and select the <em>Privacy</em> panel.</p>
-
-<h2 id="bookmarks">Bookmarks</h2>
-
-  <p>This menu contains all your stored bookmarks.</p>
-
-  <h3 id="add_to_bookmarks">Bookmark This Page</h3>
-  <p>Adds the current page to your bookmarks. A dialog will be displayed,
-    allowing you to choose a title for the bookmark and specify where you
-    want it to be stored.</p>
-
-  <h3 id="subscribe">Subscribe to This Page…</h3>
-  <p>Shows a preview of the <a href="glossary.xhtml#feed">feed</a> offered by
-    the current site. From the preview page, you can subscribe to the feed using
-    a <a href="glossary.xhtml#live_bookmark">Live Bookmark</a>, a feed reader
-    on your computer, or a web service. If you have chosen to always subscribe
-    using a Live Bookmark or a feed reader in the
-    <a href="prefs.xhtml#applications_options">Applications panel</a> of
-    &pref.menuPath;, the preview page will be skipped.</p>
-
-  <h3 id="bookmark_all_tabs">Bookmark All Tabs…</h3>
-  <p>Adds all the tabs in the current window to a new bookmark folder. A dialog
-    will be displayed, allowing you to choose the name of the folder and specify
-    where you want it to be stored.</p>
-
-  <h3 id="organize_bookmarks">Organize Bookmarks…</h3>
-  <p>Displays the Bookmarks Manager, a window where you can modify your
-    bookmarks. You can sort, rename and change the properties for your
-    bookmarks as well as add, remove, and move them.</p>
-
-<h2 id="tools">Tools</h2>
-
-  <h3 id="web_search">Web Search</h3>
-  <p>Highlights the Web Search box. You can then type in the terms you
-    wish to find on the Web.</p>
-
-  <h3 id="downloads">Downloads</h3>
-  <p>Opens the Download Manager, where you can see the current, as well as
-    finished downloads.</p>
-
-  <h3 id="add_ons">Add-ons</h3>
-  <p>Opens the Add-ons manager, where you can view, install, configure, update,
-    and uninstall your extensions and themes. For more information, see the
-    <a href="customization.xhtml#add_ons">Add-ons</a> help topic.</p>
-
-  <h3 id="javascript_console">Error Console</h3>
-  <p>Opens the Error Console, which tracks problems with JavaScript code.
-    JavaScript is a scripting language commonly used to construct web pages.
-    Programmers use JavaScript to make web pages more interactive; JavaScript
-    is often used to dynamically validate forms and select buttons.</p>
-
-  <h3 id="page_info">Page Info</h3>
-  <p>Displays extensive information about the current web page, such as the
-    document type, encoding, size, and security information.  The dialog also
-    displays lists of the media and links used on the page.</p>
-
-  <h3 id="clear_private_data">Clear Private Data…</h3>
-  <p>Clears the items which are selected in the Clear Private Data dialog in
-    the <em>Privacy</em> panel of &pref.menuPath;.
-    Displays a confirmation dialog by default.</p>
-
-  <h3 class="win" id="options">&pref.pluralCaps;</h3>
-  <p class="win">Displays the <a href="prefs.xhtml">&pref.pluralCaps; window</a>,
-    where you can change many &pref.plural; in &brandShortName;.</p>
-
-<div class="mac">
-  <h2 id="window">Window</h2>
-
-    <h3 id="minimize">Minimize</h3>
-    <p>Minimizes the current window.</p>
-
-    <h3 id="zoom">Zoom</h3>
-    <p>Enlarges or restores the current window.</p>
-
-    <h3 id="open-windows">(Open Windows)</h3>
-    <p>Displays all the open windows by their title.</p>
-</div>
-
-<h2 id="help">Help</h2>
-
-  <h3 id="help_contents">
-    <span class="noMac">Help Contents</span>
-    <span class="mac">&brandShortName; Help</span>
-  </h3>
-  <p>Opens the &brandShortName; Help window, which contains useful information
-    that can help you browse the web.</p>
-
-  <div class="win">
-    <h3 id="for_ie_users">For Internet Explorer Users</h3>
-    <p>Opens this Help window displaying information that can
-      help Internet Explorer users transition to &brandShortName;.</p>
-  </div>
-
-  <h3 id="relnotes">Release Notes</h3>
-  <p>Provides information about installing, uninstalling and configuring
-    &brandShortName;, as well as other important information and late-breaking
-    notices. Requires an active Internet connection.</p>
-
-  <h3 id="reporter">Report Broken Web Site…</h3>
-  <p>Allows you to report web sites that do not work correctly in
-    &brandShortName; to the &brandShortName; developers.</p>
-
-  <h3 id="web_forgery">Report Web Forgery… / This isn't a web forgery…</h3>
-  <p><em>Report Web Forgery…</em> allows you to report what you believe are
-    forged or "phishing" sites. Phishing sites pretend to be sites you trust,
-    like your bank or online shopping or auction sites, to trick you into
-    submitting sensitive information (username/password, credit card information,
-    etc.) to them.</p>
-
-  <p>When displaying sites suspected for "phishing", the menu item is replaced
-    by <em>"This isn't a web forgery…"</em>, letting you report legitimate
-    sites which have been incorrectly marked as "phishing" sites.</p>
-
-  <p>Phishing Protection in &brandShortName; is powered by Google, and the
-    information you submit will be sent to Google and used to improve this
-    feature. Your report will be anonymous in accordance with Google's privacy
-    policy. Requires an active Internet connection.</p>
-
-  <h3 id="check_for_updates">Check for Updates…</h3>
-  <p>Displays a dialog which checks for updates to &brandShortName; and asks
-    you whether you want to download updates if any are available. After an
-    update has been downloaded, the dialog asks you to restart &brandShortName;
-    so that the update can be installed. Note that the name of this menu item
-    will change when an update is being downloaded or is ready to be installed.</p>
-
-  <div class="noMac">
-    <h3 id="about_mozilla_firebird">About &brandFullName;</h3>
-    <p>Displays a dialog box with information about &brandShortName;, including
-      the current version and a brief list of credits.</p>
-  </div>
-
-<div class="contentsBox"><em>29 September 2007</em></div>
-<p>Copyright &copy; &copyright.years; Contributors to the Mozilla Help Viewer Project.</p>
-
-</body>
-</html>
deleted file mode 100644
--- a/browser/locales/en-US/chrome/help/mouse_shortcuts.xhtml
+++ /dev/null
@@ -1,103 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"[
-    <!ENTITY % brandDTD SYSTEM "chrome://branding/locale/brand.dtd" >
-    %brandDTD;
-    <!ENTITY % platformDTD SYSTEM "chrome://browser/locale/help/platformStrings.dtd" >
-    %platformDTD;
-]>
-<!--
-Contributors:
-  David Tenser <david.tenser@comhem.se> (original author)
--->
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-  <title>&brandFullName; Mouse Shortcuts</title>
-  <link rel="stylesheet" type="text/css"
-    href="chrome://help/skin/helpFileLayout.css"/>
-</head>
-
-<body>
-
-<h1>&brandFullName; Mouse Shortcuts</h1>
-
-<p class="noMargin">This is a list of the most common mouse shortcuts in
-  &brandFullName;.</p>
-
-<table border="1">
-  <thead>
-    <tr>
-      <th>Command</th>
-      <th>Shortcut</th>
-    </tr>
-  </thead>
-  <tbody>
-    <tr>
-      <td>Back</td>
-      <td>
-        <span class="mac">&altKey;+Scroll Down</span>
-        <span class="noMac">&shiftKey;+Scroll Down</span>
-      </td>
-    </tr>
-    <tr>
-      <td>Close Tab</td>
-      <td>Middle-click on Tab</td>
-    </tr>
-    <tr>
-      <td>Decrease Text Size</td>
-      <td>&ctrlKey;+Scroll up</td>
-    </tr>
-    <tr>
-      <td>Forward</td>
-      <td>
-        <span class="mac">&altKey;+Scroll up</span>
-        <span class="noMac">&shiftKey;+Scroll up</span>
-      </td>
-    </tr>
-    <tr>
-      <td>Increase Text Size</td>
-      <td>&ctrlKey;+Scroll down</td>
-    </tr>
-    <tr>
-      <td>New Tab</td>
-      <td>Double-Click on Tab Bar</td>
-    </tr>
-    <tr>
-      <td>Open in Background Tab</td>
-      <td>&accelKey;+Left-click<br/>Middle-click</td>
-    </tr>
-    <tr>
-      <td>Open in Foreground Tab</td>
-      <td>&accelKey;+&shiftKey;+Left-click<br/>&shiftKey;+
-        Middle-click</td>
-    </tr>
-    <tr>
-      <td>Open in New Window</td>
-      <td>&shiftKey;+Left-click</td>
-    </tr>
-    <tr class="unix">
-      <td>Paste URL and Go</td>
-      <td>Middle-click on Tab</td>
-    </tr>
-    <tr>
-      <td>Reload (override cache)</td>
-      <td>&shiftKey;+Reload button</td>
-    </tr>
-    <tr>
-      <td>Save Page As</td>
-      <td>&altKey;+Left-click</td>
-    </tr>
-    <tr>
-      <td>Scroll line by line</td>
-      <td>
-        <span class="mac">&accelKey;+Scroll</span>
-        <span class="noMac">&altKey;+Scroll</span>
-      </td>
-    </tr>
-  </tbody>
-</table>
-
-<div class="contentsBox"><em>14 October 2005</em></div>
-<p>Copyright &copy; &copyright.years; Contributors to the Mozilla Help Viewer Project.</p>
-
-</body>
-</html>
deleted file mode 100644
--- a/browser/locales/en-US/chrome/help/platformStrings.dtd
+++ /dev/null
@@ -1,43 +0,0 @@
-<!-- LOCALIZATION NOTE : This file contains platform-specific strings which
-                         occur in large numbers throughout Help docs.
-                         Generally, for these strings it's less code to store
-                         them here than to hard-code the value of the entity
-                         in every place it's used, or using an entity is less
-                         confusing than typing a string like the jumbled messes
-                         used below for "preference" and derivatives.  Feel free
-                         to add more strings here as long as you run them by the
-                         Help module owner first (to prevent excessive use of
-                         such strings when other methods are preferable). -->
-
-<!-- Options -->
-
-<!ENTITY pref.menuPath     '<span class="win menuPath">Tools &gt; Options</span><span
-                              class="unix menuPath">Edit &gt; Preferences</span><span
-                              class="mac menuPath">&brandShortName; &gt; Preferences</span>' >
-<!ENTITY pref.singular     '<span class="win">option</span><span
-                             class="noWin">preference</span>' >
-<!ENTITY pref.plural       '<span class="win">options</span><span
-                             class="noWin">preferences</span>' >
-<!ENTITY pref.singularCaps '<span class="win">Option</span><span
-                             class="noWin">Preference</span>' >
-<!ENTITY pref.pluralCaps   '<span class="win">Options</span><span
-                             class="noWin">Preferences</span>' >
-
-<!-- Keys -->
-
-<!ENTITY ctrlKey            '<kbd>Ctrl</kbd>' >
-<!ENTITY accelKey           '<kbd class="noMac">Ctrl</kbd><kbd
-                             class="mac">Cmd</kbd>' >
-<!ENTITY altKey             '<kbd class="noMac">Alt</kbd><kbd
-                             class="mac">Opt</kbd>' >
-<!ENTITY shiftKey           '<kbd>Shift</kbd>' >
-<!ENTITY enterKey           '<kbd class="noMac">Enter</kbd><kbd
-                             class="mac">Return</kbd>' >
-
-<!-- Image Location Base URL -->
-
-<!ENTITY images.baseURL     'http://www.mozilla.org/projects/firefox/help/2.0'>
-
-<!-- Copyright years -->
-
-<!ENTITY copyright.years    '2003-2008'>
deleted file mode 100644
--- a/browser/locales/en-US/chrome/help/popup.xhtml
+++ /dev/null
@@ -1,95 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"[
-    <!ENTITY % brandDTD SYSTEM "chrome://branding/locale/brand.dtd" >
-    %brandDTD;
-    <!ENTITY % platformDTD SYSTEM "chrome://browser/locale/help/platformStrings.dtd" >
-    %platformDTD;
-]>
-<!--
-Contributors:
-  David Tenser <david.tenser@comhem.se> (original author)
-  Steffen Wilberg <steffen.wilberg@web.de>
--->
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-	<title>Controlling Pop-ups</title>
-	<link rel="stylesheet" type="text/css" href="chrome://help/skin/helpFileLayout.css"/>
-</head>
-
-<body>
-
-<h1>Controlling Pop-ups</h1>
-<p>This document explains all of the &pref.plural; available in &brandFullName;
-  for controlling pop-ups.</p>
-
-<div class="contentsBox">
-  In this section:
-  <ul>
-    <li><a href="#what_are_popups">What are Pop-ups?</a></li>
-    <li><a href="#popup_blocker_preferences">Pop-up Blocker &pref.pluralCaps;</a></li>
-  </ul>
-</div>
-
-<h2 id="what_are_popups">What are Pop-ups?</h2>
-<p>Pop-up windows, or pop-ups, are windows that appear automatically without your
-permission. They vary in size but usually don't cover the whole screen. Some pop-ups
-open on top of the current &brandShortName; window, while others appear
-underneath &brandShortName; (pop-unders).</p>
-
-<p>&brandShortName; allows you to control both pop-ups and popunders through the
-<a href="prefs.xhtml#content_options">Content panel</a> in &pref.pluralCaps;.
-Pop-up blocking is turned on by default, so you don't have to worry about enabling it
-to prevent pop-ups from appearing in &brandShortName;.</p>
-
-<p>When blocking a pop-up, &brandShortName; displays an information bar, as well
-as an icon <img src="chrome://browser/skin/Info.png" width="16" height="16"
-alt=""/> in the status bar. When you click either the <em>&pref.pluralCaps;</em>
-button in the information bar or the icon in the status bar, a menu is displayed
-with the following choices:</p>
-
-<ul>
-  <li>Allow/Block pop-ups for this site</li>
-  <li>Edit <a href="#popup_blocker_preferences">Pop-up Blocker
-    &pref.pluralCaps;…</a></li>
-  <li>Don't show this message (info message) when pop-ups are blocked</li>
-  <li>(show a blocked pop-up)</li>
-</ul>
-
-<p><strong>Blocking pop-ups may interfere with some web sites</strong>: Some web sites,
-including some banking sites, use pop-ups for important features. Blocking all pop-ups
-disables such features. To allow specific web sites to use pop-ups, while blocking
-all others, you can add specific web sites to the list of allowed sites.</p>
-
-<p><strong>Blocking pop-ups doesn't always work</strong>: Although &brandShortName; blocks most
-pop-ups, some web sites may show pop-ups using uncovered methods, even when blocked.</p>
-
-<h2 id="popup_blocker_preferences">Pop-up Blocker &pref.pluralCaps;</h2>
-
-<p>The Pop-up Blocker &pref.pluralCaps; are located in the <a
-  href="prefs.xhtml#content_options">Content panel</a> of &pref.menuPath;.</p>
-
-<p>From there, you can do the following things:</p>
-
-<ul>
-  <li><strong>Block pop-up windows</strong>: Deselect this &pref.singular; to
-    disable the pop-up blocker altogether.</li>
-  <li><strong>Exceptions dialog</strong>: This is a list of sites that you want to allow
-    to display pop-ups. The dialog has the following choices:
-  <ul>
-    <li><strong>Allow</strong>: Click this to add a web site to the exceptions list.</li>
-    <li><strong>Remove Site</strong>: Click this to remove a web site from the exceptions list.</li>
-    <li><strong>Remove All Sites</strong>: Click this to remove all of the web sites in
-      the exceptions list.</li>
-  </ul>
-  </li>
-</ul>
-
-<p><strong>Note</strong>: Blocking pop-ups may not always work and may interfere with
-some web sites. For more information about blocking pop-ups, see
-<a href="#what_are_popups">What are Pop-ups</a>.</p>
-
-<div class="contentsBox"><em>12 September 2005</em></div>
-<p>Copyright &copy; &copyright.years; Contributors to the Mozilla Help Viewer Project.</p>
-
-</body>
-</html>
deleted file mode 100644
--- a/browser/locales/en-US/chrome/help/prefs.xhtml
+++ /dev/null
@@ -1,697 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"[
-    <!ENTITY % brandDTD SYSTEM "chrome://branding/locale/brand.dtd" >
-    %brandDTD;
-    <!ENTITY % platformDTD SYSTEM "chrome://browser/locale/help/platformStrings.dtd" >
-    %platformDTD;
-]>
-<!--
-Contributors:
-  David Tenser <tenser@comhem.se> (original author)
-  Steffen Wilberg <steffen.wilberg@web.de>
-  Ryan Flint <rflint@dslr.net>
-  Jeff Walden <jwalden+code@mit.edu>
-  Myk Melez <myk@mozilla.org>
--->
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-  <title>&brandFullName; Options</title>
-  <link rel="stylesheet" type="text/css" href="chrome://help/skin/helpFileLayout.css"/>
-</head>
-
-<body>
-
-<h1>&brandFullName; &pref.pluralCaps;</h1>
-<p>This document explains all of the &pref.plural; available in the
-  &pref.pluralCaps; window of &brandFullName;.</p>
-
-<div class="contentsBox">In this section:
-  <ul>
-    <li><a href="#main_options">Main &pref.pluralCaps;</a></li>
-    <li><a href="#tabs_options">Tabs &pref.pluralCaps;</a></li>
-    <li><a href="#content_options">Content &pref.pluralCaps;</a></li>
-    <li><a href="#applications_options">Applications &pref.pluralCaps;</a></li>
-    <li><a href="#privacy_options">Privacy &pref.pluralCaps;</a></li>
-    <li><a href="#security_options">Security &pref.pluralCaps;</a></li>
-    <li><a href="#advanced_options">Advanced &pref.pluralCaps;</a></li>
-  </ul>
-</div>
-
-<h2 id="main_options">Main &pref.pluralCaps;</h2>
-
-  <h3 id="startup">Startup</h3>
-  <p>When you open &brandShortName;, by default your <a
-    href="glossary.xhtml#home_page">home page</a> is displayed.  Your home page
-    might be a commonly-visited web site, a search engine, or perhaps your email
-    account, but the choice is up to you.  You can change your home page or
-    choose to display a different page or set of pages on startup in this
-    section.</p>
-    
-  <p><em>When &brandShortName; starts</em><br/>
-    By default, when &brandShortName; starts it opens your home page (listed in
-    the textbox immediately below), which corresponds to the <em>Show my home
-    page</em> option.  Alternately, you can choose to display a blank page on
-    startup (perhaps to eliminate the time required to load that page from the
-    Internet) by selecting the <em>Show a blank page</em> option.</p>
-
-  <p>As a final alternative, you can have &brandShortName; reopen the windows and
-    tabs you had open the last time you ran &brandShortName;, effectively
-    restoring you to where you were when you last stopped browsing the Internet.
-    This can be a handy way of saving what you were doing when you close
-    &brandShortName;, perhaps to install an operating system update.  You can
-    choose this option by selecting <em>Show my windows and tabs from last
-    time</em>.</p>
-
-  <p><em>Home Page</em><br/>
-    If you've set &brandShortName; to show your home page when you start
-    &brandShortName;, you specify your home page by typing it here.  You can
-    also click any of the buttons below the textbox to choose a special home
-    page:</p>
-
-  <ul>
-    <li><em>Use Current Page</em> sets the currently-displayed page (or pages,
-      if you have multiple tabs open) as your home page</li>
-    <li><em>Use Bookmark</em> sets the selected bookmark (or if you select a
-      folder, the set of bookmarks in that folder) as your home page</li>
-    <li><em>Restore to Default</em> resets your home page to the default home
-      page</li>
-  </ul>
-
-  <h3 id="downloads">Downloads</h3>
-  <p>This section contains &pref.plural; determining how &brandShortName;
-    downloads files.</p>
-    
-  <p><em>Show the Downloads window when downloading a file</em><br/>
-    With this &pref.singular; selected, &brandShortName; will open the <a
-    href="download_manager.xhtml">Downloads window</a> when you start
-    downloading a file.</p>
-    
-  <p><em>Close it when all downloads are finished</em><br/>
-    Select this &pref.singular; to have &brandShortName; close the Downloads
-    window when all downloads currently in progress finish.</p>
-      
-  <p><em id="download_folder">Save files to</em><br/>
-    By default downloaded files are automatically saved to the Desktop,
-    eliminating the hassle of specifying a download location for every file you
-    download.  You can choose a different folder by clicking the <em><span
-    class="noMac">Browse…</span><span class="mac">Choose…</span></em>
-    button.</p>
-      
-  <p><em>Always ask me where to save files</em><br/>
-    With this &pref.singular; selected, &brandShortName; will ask you where
-    you would like to save every downloaded file (instead of using the default
-    location specified above).</p>
-  
-  <h3 id="system_defaults">System Defaults</h3>
-  <p><em>Always check to see if &brandShortName; is the default browser on
-    startup</em><br/>
-    Select this option if you want &brandShortName; to check whether it is the
-    default browser at startup.  This will ensure &brandShortName; is used
-    whenever an application tries to display a web page.  You can also click the
-    <em>Check Now</em> button to do a check right now.</p>
-
-  <h3 id="addons">Add-ons</h3>
-  <p><em>Manage Add-ons</em><br/>
-    To install or uninstall, update or configure add-ons, click the <em>Manage
-    Add-ons</em> button to open the Add-ons manager. This is also accessible
-    from <span class="menuPath">Tools &gt; Add-ons</span>. A detailed
-    description of add-ons and the Add-on manager is available <a href=
-    "customization.xhtml#add_ons">here</a>.</p>
-
-<h2 id="tabs_options">Tabs &pref.pluralCaps;</h2>
-<p><em>New pages should be opened in:</em><br/>
-  This &pref.singular; controls whether links from other applications or from
-  web pages which request to open them in new windows are opened in <em>a new
-  window</em> or <em>a new tab</em> in the most recent window.</p>
-
-<p><strong>Note:</strong> If you have chosen to open pages in new tabs,
-  &brandShortName; will ignore this &pref.singular; and will open a new window
-  from a link if the page author specified that the new window should have a
-  specific size, because some pages can only be displayed correctly at a
-  specific size.</p>
-  
-<p><em>Warn me when closing multiple tabs</em><br/>
-  When you close a window with multiple tabs, &brandShortName; will ask you
-  to confirm your choice. This prevents you from accidentally closing the
-  whole window when you intended to only close the current tab. Uncheck this
-  &pref.singular; to disable this warning and have &brandShortName;
-  automatically close the window.</p>
-
-<p><em>Warn me when opening multiple tabs might slow down
-  &brandShortName;</em><br/>
-  When you open a large number of tabs at once, &brandShortName; will ask you
-  to confirm your choice. This prevents you from accidentally slowing down
-  your system while the pages are loading.  Uncheck this &pref.singular; to
-  disable this warning.</p>
-  
-<p><em>Always show the tab bar</em><br/>
-  If you're only viewing one web page in a &brandShortName; window, the tab
-  bar is not normally shown. Check this &pref.singular; to always show the tab
-  bar, including when only the &brandShortName; window contains only one
-  page.</p>
-
-<p><em>When I open a link in a new tab, switch to it immediately</em><br/>
-  When you middle-click on a Web link (or hold down &accelKey; while clicking
-  with the left mouse button), the page will be opened in a new tab. That page
-  will not be displayed and will load in a background tab. Check this
-  &pref.singular; to load and display the page in a new foreground tab
-  instead.</p>
-
-
-<h2 id="content_options">Content &pref.pluralCaps;</h2>
-<p><em>Block Pop-up Windows</em><br/>
-  By default, &brandShortName; blocks annoying pop-up windows on web sites.
-  Unchecking this &pref.singular; will disable pop-up blocking.</p>
-
-<p>Some web sites make legitimate use of pop-up windows. Therefore, you can
-  allow these sites to open pop-ups anyway. To do so, click
-  <em>Exceptions…</em>, enter the site name, and click <em>Allow</em>.  To
-  remove a web site from the list, select it and then click <em>Remove
-  Site</em>. To clear the list completely, click <em>Remove All Sites</em>.</p>
-
-<p><em>Load images automatically</em><br/>
-  &brandShortName; displays images in web pages by default.  Uncheck this
-  &pref.singular; to disable images in web pages.</p>
-
-<p>If you enable loading images automatically, the <em>Exceptions…</em>
-  button lets you select sites from which images will not automatically load.
-  The <em>Exceptions…</em> button lets you specify web sites that you wish
-  to load (or not load) regardless of the setting of this preference. In the
-  exceptions list, enter the site from which you want to allow or block images
-  and click <em>Allow</em> to allow images, or click <em>Block</em> to block
-  the images.</p>
-  
-<p><em>Enable JavaScript</em><br/>
-  JavaScript is a scripting language commonly used to make web pages
-  interactive.  However, it also makes certain annoying behaviors much easier to
-  perform.  To disable JavaScript, uncheck this &pref.singular;.  However, note
-  that disabling JavaScript may cause some sites to not work properly.  For more
-  fine-grained control over what JavaScript can and cannot do, click
-  <em>Advanced…</em>.</p>
-    
-  <h4 id="advanced_javascript">Advanced JavaScript Settings</h4>
-  <dl>
-    <dt>Move or resize existing windows</dt>
-    <dd>Uncheck this &pref.singular; to disable moving and resizing windows
-      using scripts.</dd>
-
-    <dt>Raise or lower windows</dt>
-    <dd>Uncheck this &pref.singular; to make sure scripts cannot raise (bring
-      to the front) or lower (send to the back) windows.</dd>
-
-    <dt>Disable or replace context menus</dt>
-    <dd>Uncheck this &pref.singular; to prevent web pages from disabling or
-      changing the &brandShortName; context menu.</dd>
-
-    <dt>Hide the status bar</dt>
-    <dd>Uncheck this &pref.singular; to force the status bar to be displayed in
-      pop-up windows.</dd>
-
-    <dt>Change status bar text</dt>
-    <dd>Uncheck this &pref.singular; to disable changes to status bar text (such
-      as displaying scrolling text messages or preventing the link address from
-      being displayed while the mouse is over a link).</dd>
-  </dl>
-    
-  <p><em>Enable Java</em><br/>
-    Java is a popular programming language for the Web.  A single Java program
-    can run on many different kinds of computers, thus avoiding the need for
-    programmers to create a separate version of a program for each kind of
-    computer.  Uncheck this &pref.singular; to disable Java applets in
-    &brandShortName;.  Note that in order for Java applets to work, you must
-    install the Java plugin.</p>
-
-  <h3 id="fonts_and_colors">Fonts &amp; Colors</h3>
-  <p><em>Default font</em> and <em>Size</em><br/>
-    Web pages are usually displayed in the font and size specified here.
-    However, web pages can override these choices unless you specify otherwise
-    in the Fonts dialog.  Click the <em>Advanced…</em> button to access the
-    Fonts dialog and to change this and other fonts &pref.plural;.</p>
-
-    <h4 id="fonts_dialog">Fonts Dialog</h4>
-    <ol>
-      <li>From the <em>Fonts for</em> drop-down list, choose a language
-        group/script.  For instance, to set default fonts for the West
-        European languages/scripts (Latin), choose <em>Western</em>. For a
-        language/script not in the list, choose <em>Other Languages</em>.</li>
-      <li>Select whether proportional text should be serif (like &quot;Times
-        New Roman&quot;) or sans-serif (like &quot;Arial&quot;). Then specify
-        the font size you want for proportional text.</li>
-      <li>Specify the font to use for Serif, Sans-serif and Monospace fonts.
-        You can also change the size for <code>Monospace fonts</code>.</li>
-    </ol>
-
-    <p>You can also set the minimum web page font size.  This is useful to
-      prevent sites from use overly small fonts that are barely readable.</p>
-
-    <p><em>Allow pages to choose their own fonts, instead of my selections
-      above</em><br/>
-      By default &brandShortName; uses the fonts specified by the web page
-      author. Disabling this &pref.singular; will force all sites to use your
-      default fonts instead.</p>
-
-    <p><em>Character Encoding</em><br/>
-      The character encoding selected here will be used to display pages that
-      do not specify which encoding to use.</p>
-
-    <h4 id="colors_dialog">Colors Dialog</h4>
-    <p><strong>Text and Background</strong><br/>
-      Here you can change the default text and background color to be used on
-      web pages that haven't specified that information. Click on the color
-      samples to select colors.</p>
-
-    <p><em>Use system colors</em><br/>
-      Check this &pref.singular; to use the colors defined in your operating
-      system settings instead of the colors specified above.</p>
-
-    <p><strong>Link Colors</strong><br/>
-      Here you can change the default colors for Web links. Click on the color
-      samples to select colors.</p>
-
-    <p><em>Underline links</em><br/>
-      By default, links are underlined on web pages. Uncheck this &pref.singular;
-      to disable this. Note that many sites specify their own styling rules
-      and this &pref.singular; has no effect on those sites.</p>
-
-    <p><em>Allow pages to choose their own colors, instead of my selections
-      above</em><br/>
-      By default, &brandShortName; uses the colors specified by the web page
-      author. Disabling this &pref.singular; will force all sites to use your
-      default colors instead.</p>
-
-  <h3 id="languages">Languages</h3>
-  <p>Some web pages are offered in more than one language. Click the
-    <em>Choose…</em> button to specify your preferred language or
-    languages.</p>
-
-  <p><strong>Languages Dialog</strong><br/>
-    To add a language, click <em>Select a language to add…</em>, choose the
-    language, and click the <em>Add</em> button.  Remove a language by
-    selecting it in the list of active languages and clicking the
-    <em>Remove</em> button. You can also reorder languages using the <em>Move
-    Up</em> and <em>Move Down</em> buttons to determine the most preferred one
-    in case a page is provided in multiple languages .</p>
-
-<h2 id="applications_options">Applications &pref.pluralCaps;</h2>
-
-<p>The <em>Applications</em> panel lets you choose applications and other
-  handlers to handle different types of content (e.g. PDF documents).  It shows
-  you a list of content types and lets you select a handler for each type.</p>
-
-<p>You can choose a local application to handle any type.  For some types,
-  you can also choose a web application to handle the type, choose a feature
-  (like <a href="glossary.xhtml#live_bookmark">Live Bookmarks</a> for feeds)
-  or a <a href="glossary.xhtml#Plugin">plugin</a> in &brandShortName; to handle
-  the type, or save the type on your computer.</p>
-
-<p>To choose a handler for a type, select the type from the list. The current
-  handler for the type will turn into a menu. Open the menu and select the
-  handler you want to handle the type.</p>
-
-<ul>
-  <li><em>Choose an application</em><br/>
-    To choose a local or web application to handle a type, select the application
-    from the menu.  If you want a local application that is not in the menu
-    to handle the type, select <em>Choose Application…</em> from the menu
-    and point &brandShortName; to its location.</li>
-
-  <li><em>Choose a feature or plugin</em><br/>
-    If you want a feature or a plugin in &brandShortName; to handle the type,
-    and one is available, select it from the menu.</li>
-
-  <li><em>Save on your computer</em><br/>
-    If you want to save the type on your computer, and it is possible to do so,
-    select <em>Save File</em> from the menu.  If you have selected the <em>Save
-    files to</em> &pref.singular; in the <em>Main</em> panel, &brandShortName;
-    will save content of the type on your computer automatically.  Otherwise,
-    when you encounter the type, &brandShortName; will prompt you for a location
-    on your computer to save it to.</li>
-</ul>
-
-<p><strong>Note:</strong> When a plugin is available to handle a type, and you
-  choose another handler to handle that type, &brandShortName; will only use
-  your chosen handler when you access the type directly.  When the type is
-  embedded inside a web page, &brandShortName; will continue to use the plugin
-  to handle the type.</p>
-
-
-<h2 id="privacy_options">Privacy &pref.pluralCaps;</h2>
-
-  <h3 id="privacy_history">History</h3>
-  <p><em>Remember visited pages for the last … days</em><br/>
-    Here you can specify how long you want &brandShortName; to remember what
-    pages you have visited. The default is 9 days.</p>
-      
-  <p><em>Remember what I enter in forms and the search bar</em><br/>
-    When you enter information in web forms or the search bar in
-    &brandShortName;, that information is saved so that &brandShortName; can
-    give suggestions when you enter information in forms in the future. To stop
-    this behavior, uncheck this &pref.singular;.</p>
-      
-  <p><em>Remember what I've downloaded</em><br/>
-    This &pref.singular; controls whether or not past downloads show up in the
-    Downloads window.  The Downloads window (accessible from <span
-    class="menuPath">Tools</span> or by pressing <span
-    class="noUnix">&accelKey;+<kbd>J</kbd></span><span
-    class="unix">&accelKey;+<kbd>Y</kbd></span>) displays a list of your recent
-    downloads.  Downloads &pref.plural; are available in the <a
-    href="#main_options"><em>Main</em></a> panel.</p>
-
-  <h3 id="privacy_cookies">Cookies</h3>
-  <p>A cookie is a file created by a web site that stores information on your
-    computer, such as site-specific preferences when visiting that site.</p>
-
-  <p><em>Accept cookies from sites</em><br/>
-    By default cookies are enabled. Uncheck this &pref.singular; to disable the
-    use of cookies. Note that some sites may not work properly when cookies are
-    disabled.</p>
-      
-  <p><em>Keep until:</em></p>
-
-  <ul>
-    <li><em>they expire</em><br/>
-      This is the default &pref.singular;. When set, this allows websites to
-      specify how long a cookie will be stored by &brandShortName;. This makes
-      it possible for a site to remember your preferences and login information
-      across browser sessions.</li>
-    <li><em>I close &brandShortName;</em><br/>
-      With this &pref.singular; selected, &brandShortName; will remove all
-      stored cookies when closed.</li>
-    <li><em>ask me every time</em><br/>
-      With this &pref.singular; enabled, &brandShortName; will ask you how long
-      you would like to keep a cookie (or refuse it entirely) every time a web
-      site attempts to set one.</li>
-  </ul>
-
-  <p>To control which sites may or may not set cookies, click the
-    <em>Exceptions…</em> button.</p>
-      
-  <p>To display the Cookie Manager click <em>Show Cookies…</em>.</p>
-
-  <p>Learn more about cookies, the individual &pref.plural;, and how you can
-    gain control over what sites are allowed to store cookies on your computer
-    by reading about <a href="cookies.xhtml">Managing Cookies</a>.</p>
-      
-  <h3 id="private_data">Private Data</h3>
-  <p><em>Always clear my private data when I close &brandShortName;</em><br/>
-    You can choose to have &brandShortName; clear your private data when you
-    close it. To configure what data is cleared, click the <em>Settings…</em>
-    button.</p>
-    
-  <p><em>Ask me before clearing private data</em><br/>
-    With this &pref.singular; selected, &brandShortName; will ask you before
-    before automatically clearing the data specified by clicking
-    <em>Settings…</em>.</p>
-  
-  <p>If you wish to clear your private data right now, you can click the
-    <em>Clear Now…</em> button to do so.  To clear your private data from
-    outside the preferences dialog, either press &accelKey;+&shiftKey;+<kbd>Del</kbd>
-    or select <span class="menuPath">Tools &gt; Clear Private Data…</span>.</p>
-
-
-<h2 id="security_options">Security &pref.pluralCaps;</h2>
-<p><em>Warn me when sites try to install add-ons</em><br/>
-  &brandShortName; will always ask you to confirm installations of add-ons.
-  To prevent unrequested installation prompts which may lead to accidental
-  installations, &brandShortName; warns you when a web site tries to install
-  an add-on and blocks the installation prompt.  To allow installations from
-  a specific site, click <em>Exceptions…</em>, enter the site name, and click
-  <em>Allow</em>.  Uncheck this &pref.singular; to disable the warning for all
-  sites.</p>
-
-<p id="phishing"><em>Tell me if the site I'm visiting is a suspected forgery</em><br/>
-  Check this &pref.singular; if you want &brandShortName; to actively check
-  whether the site you are visiting may be an attempt to mislead you into
-  providing personal information (this is often referred to as <em>phishing</em>).<br/>
-  Note that the absence of a warning does not guarantee that a site is trustworthy.
-  If you come across a "phishing" site which is not marked as such, please report
-  it using <span class="menuPath">Help &gt; Report Web Forgery…</span>, as
-  explained in the <a href="menu_reference.xhtml#web_forgery">menu reference</a>.</p>
-
-<p><em>Check using a downloaded list of suspected sites</em><br/>
-  With this &pref.singular; selected, &brandShortName; will check the current
-  site against a frequently updated list stored on your computer.  No data about
-  the sites you visit is transferred to third-party anti-phishing providers
-  during normal browsing.  Since phishing techniques and sites evolve quickly,
-  this mode of protection may not be as effective as having an anti-phishing
-  provider check every site you visit.</p>
-
-<p><em>Check by asking … about each site I visit</em><br/>
-  With this &pref.singular; selected, &brandShortName; will send the address of
-  the current page over an encrypted connection to the selected third-party
-  anti-phishing provider in order to verify its identity. This method offers the
-  greatest protection, but information such as your IP address and browser
-  version may be transfered and stored by the selected provider. You will be
-  prompted to review and agree to the selected data provider's privacy policy
-  after selecting this &pref.singular;.</p>
-      
-  <h3 id="security_passwords">Passwords</h3>
-  <p><em>Remember passwords for sites</em><br/>
-    &brandShortName; can securely save passwords you enter in web forms to
-    make it easier to log on to web sites.  Clear this checkbox to prevent
-    &brandShortName; from remembering your passwords.</p>
-    
-    <p>Even with this &pref.singular; checked, however, you'll still be asked
-    whether to save passwords for a site when you first visit it.  If you select
-    <em>Never for This Site</em>, that site will be added to an exceptions list.
-    To access that list or to remove sites from it, click the
-    <em>Exceptions…</em> button.</p>
-
-  <p id="set_change_master_password"><em>Use a master password</em><br/>
-    &brandShortName; can protect sensitive information such as saved passwords
-    and certificates by encrypting them using a <a
-    href="glossary.xhtml#master_password">master password</a>.  If you create a
-    master password, each time you start &brandShortName;, it will ask you to enter
-    the password the first time it needs to access a certificate or stored
-    password. You can set, change, or remove the master password by
-    by checking or unchecking this &pref.singular; or by clicking the
-    <em>Change Master Password…</em> button.  If a master password is already
-    set, you will need to enter it in order to change or remove the master password.</p>
-
-  <p><em>Saved Passwords…</em><br/>
-    You can manage saved passwords and delete individual passwords by clicking
-    the <em>Saved Passwords</em> button.</p>
-  
-  <h3 id="warning_messages">Warning Messages</h3>
-  <p>Click the <em>Settings…</em> button to configure the security warnings
-    &brandShortName; displays while you browse the web.</p>
-    
-    <h4>Security Warnings Dialog</h4>
-    <!--XXX massive suck!  do these provide *any* value whatsoever? -->
-    <dl>
-      <dt>I am about to view an encrypted page</dt>
-      <dd>When this &pref.singular; is enabled, &brandShortName; will notify you
-        every time you are about to view an encrypted page.</dd>
-
-      <dt>I am about to view a page that uses low-grade encryption</dt>
-      <dd>With this &pref.singular; enabled, &brandShortName; will warn you when
-        you visit a page which uses low-grade encryption.</dd>
-
-      <dt>I leave an encrypted page for one that isn't encrypted</dt>
-      <dd>With this &pref.singular; enabled, &brandShortName; will warn you
-        every time you move from an encrypted page to an unencrypted page either
-        by selecting a link on the page, selecting a bookmark or typing a new
-        address into the location bar.</dd>
-
-      <dt>I submit information that's not encrypted</dt>
-      <dd>When this &pref.singular; is enabled, &brandShortName; will warn you
-        when you submit data via a form that's not encrypted.</dd>
-  
-      <dt>I'm about to view an encrypted page that contains some unencrypted
-        information</dt>
-      <dd>With this &pref.singular; enabled, &brandShortName; will warn you when
-        the page you're viewing contains a mixture of encrypted and
-        unencrypted content. If an encrypted page contains unencrypted data,
-        you should verify the identity of the page you're viewing prior to
-        entering sensitive data.</dd>
-    </dl>
-
-
-<h2 id="advanced_options">Advanced &pref.pluralCaps;</h2>
-<p>The advanced panel contains many &pref.plural; that are less likely to be
-  used by most people but are useful and sometimes critical &pref.plural; for
-  some people.</p>
-
-  <h3 id="advanced_general">General tab</h3>
-    <h4 id="accessibility">Accessibility</h4>
-    <p><em>Always use the cursor keys to navigate within pages</em><br/>
-      When this &pref.singular; is enabled, &brandShortName; will display a
-      movable cursor in web pages, allowing you to select text with the
-      keyboard.  You can toggle this mode by pressing <kbd>F7</kbd>.</p>
-
-    <p><em>Search for text when I start typing</em><br/>
-      When this &pref.singular; is enabled, &brandShortName; will find within
-      the current web page what you type as you type it. While you are finding
-      typed text in the page, the Find Toolbar will automatically display at the
-      bottom of the window to show information about what you've found.</p>
-
-    <h4 id="browsing">Browsing</h4>
-    <p><em>Use autoscrolling</em><br/>
-      Autoscrolling is a useful feature which allows you to scroll the page by
-      clicking the middle mouse button (usually the scroll wheel) and moving the
-      mouse up or down. Some people find this annoying, so autoscrolling can be
-      disabled with this &pref.singular;.</p>
-
-    <p><em>Use smooth scrolling</em><br/>
-      Smooth scrolling can be very useful if you read a lot of long pages.
-      Normally, when you press <kbd>Page Down</kbd>, the view jumps directly
-      down one page. With smooth scrolling, it slides down smoothly, so you can
-      see how much it scrolls. This makes it easier to resume reading from where
-      you were before.</p>
-        
-    <p><em>Check my spelling as I type</em><br/>
-      When this preference is enabled, &brandShortName; will check your spelling
-      and offer possible corrections as you type in web forms.  Note that you
-      may need to download a dictionary; to do so, <span
-      class="noMac">right-click</span><span class="mac">press &ctrlKey; and
-      click</span> on any text field, enable spellchecking if necessary, and
-      then use the provided <span class="menuPath">Languages</span> menu to
-      download a dictionary.</p>
-
-  <h3 id="advanced_network">Network tab</h3>
-
-    <h4 id="connection_settings">Connection</h4>
-    <p>Your organization or Internet service provider may offer or require you
-      to use a proxy.  A proxy acts as an intermediary between your computer and
-      the Internet.  It intercepts all requests to the Internet to see if it can
-      fulfill the request using its cache.  Proxies are used to improve
-      performance, filter requests, and hide your computer from the Internet to
-      improve security.  Proxies are often part of corporate firewalls.</p>
-
-    <h4>Connection Settings Dialog</h4>
-    <dl>
-      <dt>Direct connection to the Internet</dt>
-      <dd>This is the default &pref.singular;. Choose this if you don't want
-        to use a proxy.</dd>
-
-      <dt>Auto-detect proxy settings for this network</dt>
-      <dd>Choose this if you want &brandShortName; to automatically detect the
-        proxy settings for your network.</dd>
-
-      <dt>Manual proxy configuration</dt>
-      <dd>Choose this if you don't have a proxy location (URL). Ask your
-        system administrator for the names and port numbers of the servers
-        running proxy software for each network service and enter the
-        information in the appropriate fields.</dd>
-
-      <dt>Automatic proxy configuration URL</dt>
-      <dd>If your workplace has a proxy configuration file, ask the system
-        administrator for its URL and enter it here. Click <em>Reload</em> to
-        load the settings.</dd>
-    </dl>
-    
-    <h4 id="advanced_cache">Cache</h4>
-    <p>Pages you view are normally stored in a special cache folder for quicker
-      viewing the next time you visit the same page.  You can specify the amount
-      of disk space the cache can use here.  You can also immediately clear
-      the contents of the cache.</p>
-    
-    <p><em>Use up to … MB of space for the cache</em><br/>
-      Allows you to specify the maximum size, in megabytes, of the cache on
-      your computer.</p>
-    
-    <p><em>Clear Now</em><br/>
-      Immediately clears the current contents of the cache, freeing the disk
-      space used by the cache.</p>
-  
-  <h3 id="advanced_update">Update tab</h3>
-    <p>&brandShortName; can check whether updates to installed add-ons or to
-      &brandShortName; itself are available.</p>
-
-    <p><em>Automatically check for updates to:</em><br/>
-      By default &brandShortName; automatically checks for updates to itself, to
-      add-ons, and to search engines so you'll always know you have the most
-      up-to-date version. You can change this behavior by changing the
-      appropriate checkboxes here.</p>
-
-    <p><em>When updates to &brandShortName; are found,</em></p>
-
-    <dl>
-      <dt>Ask me what I want to do</dt>
-      <dd>Updates to &brandShortName; are installed automatically by default.
-        Select this &pref.singular; to manually control how and when updates are
-        installed.</dd>
-      <dt>Automatically download and install the update</dt>
-      <dd>When this &pref.singular; is selected, &brandShortName; updates will
-        be automatically downloaded and will be installed the next time
-        &brandShortName; is restarted.  The <em>Warn me if this will disable any
-        of my add-ons</em> &pref.singular; determines whether you will be warned
-        before the installation of an update which would require an incompatible
-        add-on to be disabled because no newer, compatible version exists.  The
-        warning will allow you to postpone installation of the update, though at
-        the expense of improvements included in it.<br/><br/>
-        If all extensions and themes are compatible or can be updated to be
-        compatible, the &brandShortName; update will be installed.  Upon restart
-        you will be asked to install any needed add-on updates so that you can
-        continue to use them.</dd>
-    </dl>
-
-    <p><em>Show Update History</em><br/>
-      &brandShortName; automatically records the updates you have installed.
-      You can view information about these updates by clicking this button.</p>
-
-    <p><strong>Note:</strong>  You must be running &brandShortName; as
-      <span class="win">an administrator</span><span class="noWin">root</span>
-      or as the user who originally installed &brandShortName;
-      to install &brandShortName; updates.</p>
-
-  <h3 id="advanced_encryption">Encryption tab</h3>
-
-    <h4 id="protocols">Protocols</h4>
-    <p><em>Use SSL 3.0</em><br/>
-      Specifies whether you want to send and receive secured information through
-      SSL3 (Secure Sockets Layer, Level 3), a standard protocol for
-      communicating securely with web sites.  Disabling it will prevent you from
-      visiting some sites.</p>
-
-    <p><em>Use TLS 1.0</em><br/>
-      Specifies whether you want to send and receive secured information through
-      TLS (Transport Layer Security), a security standard similar to SSL3
-      (Secure Sockets Layer).  Disabling it will prevent you from visiting some
-      sites.</p>
-
-    <h4 id="certificates">Certificates</h4>
-    <p><a href="glossary.xhtml#certificate">Certificates</a> help perform
-      encryption and decryption of connections to <a
-      href="glossary.xhtml#secure_site">secure sites</a>.</p>
-
-    <p><em>When a web site requires a certificate:</em><br/>
-      Some servers ask you to identify yourself with a personal certificate. In
-      order to do so, they ask &brandShortName; to generate one for you. When
-      you visit the site in the future, &brandShortName; selects the certificate
-      without asking you by default. If you wish to manually choose a
-      certificate (for example, if you have multiple certificates stored for
-      multiple web sites), select the <em>Ask me every time</em> &pref.singular;
-      and you'll be in complete control of what certificates are being sent to
-      web sites while browsing.</p>
-
-    <p><em>View Certificates</em><br/>
-      Click this button to view stored certificates, import new certificates,
-      and back up or delete old certificates in &brandShortName;.</p>
-
-    <p><em>Revocation Lists</em><br/>
-      &brandShortName; can use Certificate Revocation Lists (also known as
-      CRLs) to ensure that your certificates are always valid.  Click the
-      <em>Revocation Lists</em> button to manage the CRLs installed on your
-      computer.</p>
-
-    <p><em>Validation</em><br/>
-      &brandShortName; may ask an OCSP (Online Certificate Status Protocol)
-      server to confirm that a certificate is still valid. By default,
-      &brandShortName; validates a certificate if the certificate provides an
-      OCSP server. Alternately, you can choose an OCSP server against which to
-      validate all certificates. Click the <em>Validation</em> button to manage
-      these &pref.plural;. You will most likely only need to change this if your
-      Internet environment requires it.</p>
-
-    <p><em>Security Devices</em><br/>
-      Security devices can encrypt and decrypt connections and store
-      certificates and passwords.  If you need to use a security device other
-      than the one in &brandShortName;, click the <em>Security Devices</em>
-      button.</p>
-
-<div class="contentsBox"><em>09 October 2007</em></div>
-<p>Copyright &copy; &copyright.years; Contributors to the Mozilla Help Viewer Project.</p>
-
-</body>
-</html>
deleted file mode 100644
--- a/browser/locales/en-US/chrome/help/search-db.rdf
+++ /dev/null
@@ -1,88 +0,0 @@
-<?xml version="1.0"?>
-
-<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-     xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-     xmlns:nc="http://home.netscape.com/NC-rdf#">
-
-  <Description rdf:about="urn:root">
-    <nc:subheadings>
-      <Seq>
-        <!--
-          These nodes are used for searching purposes; they display in search results but do not
-          show up in the default listing displayed when the help viewer loads.
-          DO NOT CREATE NAME COLLISIONS BETWEEN THE ITEMS HERE AND THE ITEMS IN THE TOC!
-        -->
-        <li><Description nc:name="Accessibility Options" nc:link="prefs.xhtml#accessibility" nc:platform="win os2"/></li>
-        <li><Description nc:name="Accessibility Preferences" nc:link="prefs.xhtml#accessibility" nc:platform="unix mac"/></li>
-        <li><Description nc:name="Anti-Phishing Options" nc:link="prefs.xhtml#phishing" nc:platform="win os2"/></li>
-        <li><Description nc:name="Anti-Phishing Preferences" nc:link="prefs.xhtml#phishing" nc:platform="unix mac"/></li>
-        <li><Description nc:name="authentication (definition)" nc:link="glossary.xhtml#authentication"/></li>
-        <li><Description nc:name="Back Button" nc:link="using_firebird.xhtml#retracing_your_steps"/></li>
-        <li><Description nc:name="Block Pop-ups" nc:link="popup.xhtml"/></li>
-        <li><Description nc:name="bookmark (definition)" nc:link="glossary.xhtml#bookmark"/></li>
-        <li><Description nc:name="Bookmarks Toolbar (definition)" nc:link="glossary.xhtml#Bookmarks_Toolbar"/></li>
-        <li><Description nc:name="Browsing" nc:link="using_firebird.xhtml#navigating_web_pages"/></li>
-        <li><Description nc:name="cache (definition)" nc:link="glossary.xhtml#cache"/></li>
-        <li><Description nc:name="certificate (definition)" nc:link="glossary.xhtml#certificate"/></li>
-        <li><Description nc:name="Certificates" nc:link="prefs.xhtml#certificates"/></li>
-        <li><Description nc:name="Certificate Revocation Lists" nc:link="prefs.xhtml#certificates"/></li>
-        <li><Description nc:name="client (definition)" nc:link="glossary.xhtml#client"/></li>
-        <li><Description nc:name="Configuring Extensions" nc:link="customization.xhtml#add_ons_configuring_extensions"/></li>
-        <li><Description nc:name="cookie (definition)" nc:link="glossary.xhtml#cookie"/></li>
-        <li><Description nc:name="cryptography (definition)" nc:link="glossary.xhtml#cryptography"/></li>
-        <li><Description nc:name="decryption (definition)" nc:link="glossary.xhtml#decryption"/></li>
-        <li><Description nc:name="digital ID (definition)" nc:link="glossary.xhtml#digital_ID"/></li>
-        <li><Description nc:name="Disabling, Enabling, Uninstalling Add-ons" nc:link="customization.xhtml#add_ons_uninstalling"/></li>
-        <li><Description nc:name="encryption (definition)" nc:link="glossary.xhtml#encryption"/></li>
-        <li><Description nc:name="Extensible Markup Language (XML) (definition)" nc:link="glossary.xhtml#XML"/></li>
-        <li><Description nc:name="feed (definition)" nc:link="glossary.xhtml#feed"/></li>
-        <li><Description nc:name="File Transfer Protocol (FTP) (definition)" nc:link="glossary.xhtml#File_Transfer_Protocol"/></li>
-        <li><Description nc:name="FIPS PUBS 140-1 (definition)" nc:link="glossary.xhtml#FIPS_PUBS_140-1"/></li>
-        <li><Description nc:name="Forward Button" nc:link="using_firebird.xhtml#retracing_your_steps"/></li>
-        <li><Description nc:name="going back or forward" nc:link="using_firebird.xhtml#retracing_your_steps"/></li>
-        <li><Description nc:name="Home Button" nc:link="using_firebird.xhtml#viewing_your_home_page"/></li>
-        <li><Description nc:name="Home Page (definition)" nc:link="glossary.xhtml#home_page"/></li>
-        <li><Description nc:name="Hypertext Markup Language (HTML) (definition)" nc:link="glossary.xhtml#Hypertext_Markup_Language"/></li>
-        <li><Description nc:name="importing Internet Explorer Favorites" nc:link="forieusers.xhtml#about_your_ie_settings"/></li>
-        <li><Description nc:name="Internet (definition)" nc:link="glossary.xhtml#Internet"/></li>
-        <li><Description nc:name="Internet protocol (IP) address (definition)" nc:link="glossary.xhtml#Internet_protocol_address"/></li>
-        <li><Description nc:name="Java (definition)" nc:link="glossary.xhtml#Java"/></li>
-        <li><Description nc:name="JavaScript (definition)" nc:link="glossary.xhtml#JavaScript"/></li>
-        <li><Description nc:name="Languages" nc:link="prefs.xhtml#languages"/></li>
-        <li><Description nc:name="Live Bookmark (definition)" nc:link="glossary.xhtml#live_bookmark"/></li>
-        <li><Description nc:name="Location Bar (definition)" nc:link="glossary.xhtml#location_bar"/></li>
-        <li><Description nc:name="master password (definition)" nc:link="glossary.xhtml#master_password"/></li>
-        <li><Description nc:name="Navigation Toolbar (definition)" nc:link="glossary.xhtml#navigation_toolbar"/></li>
-        <li><Description nc:name="Password Manager (definition)" nc:link="glossary.xhtml#Password_Manager"/></li>
-        <li><Description nc:name="PKCS #11 (definition)" nc:link="glossary.xhtml#PKCS_11"/></li>
-        <li><Description nc:name="Plugin (definition)" nc:link="glossary.xhtml#Plugin"/></li>
-        <li><Description nc:name="Plugins" nc:link="using_firebird.xhtml#managing_different_file_types"/></li>
-        <li><Description nc:name="private key (definition)" nc:link="glossary.xhtml#private_key"/></li>
-        <li><Description nc:name="proxy (definition)" nc:link="glossary.xhtml#proxy"/></li>
-        <li><Description nc:name="recently visited web pages" nc:link="using_firebird.xhtml#moving_to_another_page"/></li>
-        <li><Description nc:name="Reload Button" nc:link="using_firebird.xhtml#stopping_and_reloading"/></li>
-        <li><Description nc:name="search engine (definition)" nc:link="glossary.xhtml#search_engine"/></li>
-        <li><Description nc:name="searching using the Location Bar" nc:link="using_firebird.xhtml#moving_to_another_page"/></li>
-        <li><Description nc:name="searching using the Search Bar" nc:link="using_firebird.xhtml#searching_the_web"/></li>
-        <li><Description nc:name="searching using text from the page" nc:link="using_firebird.xhtml#searching_on_selected_words_in_a_web_page"/></li>
-        <li><Description nc:name="secure site (definition)" nc:link="glossary.xhtml#secure_site"/></li>
-        <li><Description nc:name="Secure Sockets Layer (SSL) (definition)" nc:link="glossary.xhtml#SSL"/></li>
-        <li><Description nc:name="server (definition)" nc:link="glossary.xhtml#server"/></li>
-        <li><Description nc:name="Setting or Changing the Master Password" nc:link="prefs.xhtml#set_change_master_password"/></li>
-        <li><Description nc:name="Software Updates" nc:link="menu_reference.xhtml#check_for_updates"/></li>
-        <li><Description nc:name="Status Bar (definition)" nc:link="glossary.xhtml#Status_Bar"/></li>
-        <li><Description nc:name="Stop Button" nc:link="using_firebird.xhtml#stopping_and_reloading"/></li>
-        <li><Description nc:name="Switching Themes" nc:link="customization.xhtml#add_ons_switching_themes"/></li>
-        <li><Description nc:name="TLS (definition)" nc:link="glossary.xhtml#TLS"/></li>
-        <li><Description nc:name="TCP/IP (Transmission Control Protocol/Internet Protocol) (definition)" nc:link="glossary.xhtml#TCP_IP"/></li>
-        <li><Description nc:name="Uniform Resource Locator (URL) (definition)" nc:link="glossary.xhtml#Uniform_Resource_Locator"/></li>
-        <li><Description nc:name="Updating Add-ons" nc:link="customization.xhtml#add_ons_updating"/></li>
-        <li><Description nc:name="Verification" nc:link="prefs.xhtml#certificates"/></li>
-        <li><Description nc:name="Viewing HTML Source" nc:link="menu_reference.xhtml#page_source"/></li>
-        <li><Description nc:name="web page (definition)" nc:link="glossary.xhtml#web_page"/></li>
-        <li><Description nc:name="web site (definition)" nc:link="glossary.xhtml#web_site"/></li>
-        <li><Description nc:name="World Wide Web (definition)" nc:link="glossary.xhtml#World_Wide_Web"/></li>
-      </Seq>
-    </nc:subheadings>
-  </Description>
-</RDF>
deleted file mode 100644
--- a/browser/locales/en-US/chrome/help/shortcuts.xhtml
+++ /dev/null
@@ -1,383 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"[
-    <!ENTITY % brandDTD SYSTEM "chrome://branding/locale/brand.dtd" >
-    %brandDTD;
-    <!ENTITY % platformDTD SYSTEM "chrome://browser/locale/help/platformStrings.dtd" >
-    %platformDTD;
-]>
-<!--
-Contributors:
-  David Tenser <david.tenser@comhem.se> (original author)
-  R.J. Keller <rlk@trfenv.com>
-  Sean Umphlet <nosebleed@umphlet.com> (minor bugfixes)
-  Jeff Walden <jwalden+code@mit.edu>
-  Steffen Wilberg <steffen.wilberg@web.de>
--->
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-  <title>&brandFullName; Keyboard Shortcuts</title>
-  <link rel="stylesheet" type="text/css"
-    href="chrome://help/skin/helpFileLayout.css"/>
-</head>
-
-<body>
-
-<h1>&brandFullName; Keyboard Shortcuts</h1>
-
-<p>This is a list of the most common keyboard shortcuts in &brandFullName;.
-  <span class="unix">If you have enabled Emacs-style text editing shortcuts
-  in GNOME, they will also work in &brandShortName;.  When an Emacs text
-  editing shortcut conflicts with the default shortcuts (as occurs with
-  &accelKey;+<kbd>K</kbd>), the Emacs shortcut will take preference if
-  focus is inside a textbox (which would include the location bar and search
-  bar).  In such cases you should use the alternate keyboard shortcut
-  if one is listed below.</span></p>
-
-<table border="1">
-  <thead>
-    <tr>
-      <th>Command</th>
-      <th>Shortcut</th>
-    </tr>
-  </thead>
-  <tbody>
-    <tr>
-      <th colspan="2">Navigation</th>
-    </tr>
-    <tr>
-      <td>Back</td>
-      <td>
-        <span class="win">
-          &altKey;+<kbd>Left Arrow</kbd><br/>
-          <kbd>Backspace</kbd>
-        </span>
-        <span class="unix">
-          &altKey;+<kbd>Left Arrow</kbd><br/>
-          &accelKey;+<kbd>[</kbd>
-        </span>
-        <span class="mac">
-          &accelKey;+<kbd>[</kbd><br/>
-          &accelKey;+<kbd>Left Arrow</kbd><br/>
-          <kbd>Delete</kbd>
-        </span>
-      </td>
-    </tr>
-    <tr>
-      <td>Forward</td>
-      <td>
-        <span class="win">
-          &altKey;+<kbd>Right Arrow</kbd><br/>
-          &shiftKey;+<kbd>Backspace</kbd>
-        </span>
-        <span class="unix">
-          &altKey;+<kbd>Right Arrow</kbd><br/>
-          &accelKey;+<kbd>]</kbd>
-        </span>
-        <span class="mac">
-          &accelKey;+<kbd>]</kbd><br/>
-          &accelKey;+<kbd>Right Arrow</kbd><br/>
-          &shiftKey;+<kbd>Delete</kbd>
-        </span>
-      </td>
-    </tr>
-    <tr>
-      <td>Home</td>
-      <td>&altKey;+<kbd>Home</kbd></td>
-    </tr>
-    <tr>
-      <td>Open File</td>
-      <td>&accelKey;+<kbd>O</kbd></td>
-    </tr>
-    <tr>
-      <td>Reload</td>
-      <td><kbd>F5<br/></kbd>
-        &accelKey;+<kbd>R</kbd></td>
-    </tr>
-    <tr>
-      <td>Reload (override cache)</td>
-      <td><span class="noMac">&accelKey;+<kbd>F5</kbd><br/></span>
-        &accelKey;+&shiftKey;+<kbd>R</kbd></td>
-    </tr>
-    <tr>
-      <td>Stop</td>
-      <td><span class="mac">&accelKey;+<kbd>.</kbd><br/></span>
-        <kbd>Esc</kbd></td>
-    </tr>
-  </tbody>
-  <tbody>
-    <tr>
-      <th colspan="2">Current Page</th>
-    </tr>
-    <tr>
-      <td>Go to Bottom of Page</td>
-      <td><kbd>End</kbd></td>
-    </tr>
-    <tr>
-      <td>Go to Top of Page</td>
-      <td><kbd>Home</kbd></td>
-    </tr>
-    <tr>
-      <td>Move to Next Frame</td>
-      <td><kbd>F6</kbd></td>
-    </tr>
-    <tr>
-      <td>Move to Previous Frame</td>
-      <td>&shiftKey;+<kbd>F6</kbd></td>
-    </tr>
-    <tr class="noWin">
-      <td>Page Info</td>
-      <td>&accelKey;+<kbd>I</kbd></td>
-    </tr>
-    <tr>
-      <td>Page Source</td>
-      <td>&accelKey;+<kbd>U</kbd></td>
-    </tr>
-    <tr>
-      <td>Print</td>
-      <td>&accelKey;+<kbd>P</kbd></td>
-    </tr>
-    <tr>
-      <td>Save Page As</td>
-      <td>&accelKey;+<kbd>S</kbd></td>
-    </tr>
-    <tr>
-      <td>Text Size: Decrease</td>
-      <td>&accelKey;+<kbd>-</kbd></td>
-    </tr>
-    <tr>
-      <td>Text Size: Increase</td>
-      <td>&accelKey;+<kbd>+</kbd></td>
-    </tr>
-    <tr>
-      <td>Text Size: Restore</td>
-      <td>&accelKey;+<kbd>0</kbd></td>
-    </tr>
-  </tbody>
-  <tbody>
-    <tr>
-      <th colspan="2">Editing</th>
-    </tr>
-    <tr>
-      <td>Copy</td>
-      <td>&accelKey;+<kbd>C</kbd></td>
-    </tr>
-    <tr>
-      <td>Cut</td>
-      <td>&accelKey;+<kbd>X</kbd></td>
-    </tr>
-    <tr>
-      <td>Delete</td>
-      <td><kbd>Delete</kbd></td>
-    </tr>
-    <tr>
-      <td>Paste</td>
-      <td>&accelKey;+<kbd>V</kbd></td>
-    </tr>
-    <tr>
-      <td>Redo</td>
-      <td><span class="win">&accelKey;+<kbd>Y</kbd></span>
-        <span class="noWin">&accelKey;+&shiftKey;+<kbd>Z</kbd></span></td>
-    </tr>
-    <tr>
-      <td>Select All</td>
-      <td>&accelKey;+<kbd>A</kbd></td>
-    </tr>
-    <tr>
-      <td>Undo</td>
-      <td>&accelKey;+<kbd>Z</kbd></td>
-    </tr>
-  </tbody>
-  <tbody>
-    <tr>
-      <th colspan="2">Search</th>
-    </tr>
-    <tr>
-      <td>Find</td>
-      <td>&accelKey;+<kbd>F</kbd></td>
-    </tr>
-    <tr>
-      <td>Find Again</td>
-      <td><kbd>F3</kbd><br/>
-        &accelKey;+<kbd>G</kbd></td>
-    </tr>
-    <tr>
-      <td>Find As You Type Link</td>
-      <td><kbd>'</kbd></td>
-    </tr>
-    <tr>
-      <td>Find As You Type Text</td>
-      <td><kbd>/</kbd></td>
-    </tr>
-    <tr>
-      <td>Find Previous</td>
-      <td>&shiftKey;+<kbd>F3</kbd></td>
-    </tr>
-    <tr>
-      <td>Web Search</td>
-      <td>&accelKey;+<kbd>K</kbd>
-        <span class="win"><br/>&accelKey;+<kbd>E</kbd></span>
-        <span class="unix"><br/>&accelKey;+<kbd>J</kbd></span></td>
-    </tr>
-  </tbody>
-  <tbody id="windows_tabs">
-    <tr>
-      <th colspan="2">Windows &amp; Tabs</th>
-    </tr>
-    <tr>
-      <td>Close Tab</td>
-      <td>&accelKey;+<kbd>W</kbd>
-        <span class="noMac"><br/>&ctrlKey;+<kbd>F4</kbd></span></td>
-    </tr>
-    <tr>
-      <td>Close Window</td>
-      <td>&accelKey;+&shiftKey;+<kbd>W</kbd>
-        <span class="noMac"><br/>&altKey;+<kbd>F4</kbd></span></td>
-    </tr>
-    <!-- LOCALIZATION NOTE:
-         "Left"/"Up" and "Right"/"Down" might need special treatment
-         for bidi locales, as used in the following two entries.
-    -->
-    <tr>
-      <td>Move Tab Left<br/>
-        (when tab is focused)</td>
-      <td>&accelKey;+<kbd>Left Arrow</kbd><br/>
-          &accelKey;+<kbd>Up Arrow</kbd></td>
-    </tr>
-    <tr>
-      <td>Move Tab Right<br/>
-        (when tab is focused)</td>
-      <td>&accelKey;+<kbd>Right Arrow</kbd><br/>
-          &accelKey;+<kbd>Down Arrow</kbd></td>
-    </tr>
-    <tr>
-      <td>Move Tab to Beginning<br/>
-        (when tab is focused)</td>
-      <td>&accelKey;+<kbd>Home</kbd></td>
-    </tr>
-    <tr>
-      <td>Move Tab to End<br/>
-        (when tab is focused)</td>
-      <td>&accelKey;+<kbd>End</kbd></td>
-    </tr>
-    <tr>
-      <td>New Tab</td>
-      <td>&accelKey;+<kbd>T</kbd></td>
-    </tr>
-    <tr>
-      <td>New Window</td>
-      <td>&accelKey;+<kbd>N</kbd></td>
-    </tr>
-    <tr>
-      <td>Next Tab</td>
-      <td>&ctrlKey;+<kbd>Tab</kbd><br/>
-        <span class="mac">&accelKey;+&altKey;+Right Arrow<br/></span>
-        &ctrlKey;+<kbd>Page Down</kbd></td>
-    </tr>
-    <tr>
-      <td>Open Address in New Tab<br/>
-        (from Location Bar or Search Bar)</td>
-      <td>&altKey;+&enterKey;</td>
-    </tr>
-    <tr>
-      <td>Previous Tab</td>
-      <td>&ctrlKey;+&shiftKey;+<kbd>Tab</kbd><br/>
-        <span class="mac">&accelKey;+&altKey;+Left Arrow<br/></span>
-        &ctrlKey;+<kbd>Page Up</kbd></td>
-    </tr>
-    <tr>
-      <td>Restore Recently Closed Tab</td>
-      <td>&accelKey;+&shiftKey;+<kbd>T</kbd></td>
-    </tr>
-    <tr>
-      <td>Select Tab (1 to 8)</td>
-      <td><span class="noUnix">&accelKey;</span><span
-        class="unix">&altKey;</span>+(<kbd>1</kbd> to <kbd>8</kbd>)</td>
-    </tr>
-    <tr>
-      <td>Select Last Tab</td>
-      <td><span class="noUnix">&accelKey;</span><span
-        class="unix">&altKey;</span>+<kbd>9</kbd></td>
-    </tr>
-  </tbody>
-  <tbody>
-    <tr>
-      <th colspan="2">Tools</th>
-    </tr>
-    <tr class="noUnix">
-      <td>Bookmark All Tabs</td>
-      <td>&accelKey;+&shiftKey;+<kbd>D</kbd></td>
-    </tr>
-    <tr>
-      <td>Bookmark This Page</td>
-      <td>&accelKey;+<kbd>D</kbd></td>
-    </tr>
-    <tr>
-      <td>Bookmarks</td>
-      <td>&accelKey;+<kbd>B</kbd>
-        <span class="win"><br/>&accelKey;+<kbd>I</kbd></span></td>
-    </tr>
-    <tr>
-      <td>Caret Browsing</td>
-      <td><kbd>F7</kbd></td>
-    </tr>
-    <tr>
-      <td>Downloads</td>
-      <td><span class="noUnix">&accelKey;+<kbd>J</kbd></span>
-        <span class="unix">&accelKey;+<kbd>Y</kbd></span></td>
-    </tr>
-    <tr>
-      <td>History</td>
-      <td><span class="noMac">&accelKey;+<kbd>H</kbd></span>
-        <span class="mac">&accelKey;+&shiftKey;+<kbd>H</kbd></span></td>
-    </tr>
-    <tr>
-      <td>Clear Private Data</td>
-      <td>&accelKey;+&shiftKey;+<kbd>Del</kbd></td>
-    </tr>
-  </tbody>
-  <tbody>
-    <tr>
-      <th colspan="2">Miscellaneous</th>
-    </tr>
-    <tr>
-      <td>Complete .com Address</td>
-      <td>&accelKey;+&enterKey;</td>
-    </tr>
-    <tr>
-      <td>Complete .net Address</td>
-      <td>&shiftKey;+&enterKey;</td>
-    </tr>
-    <tr>
-      <td>Complete .org Address</td>
-      <td>&accelKey;+&shiftKey;+&enterKey;</td>
-    </tr>
-    <tr>
-      <td>Delete Selected Autocomplete Entry</td>
-      <td><span class="noMac"><kbd>Del</kbd></span>
-        <span class="mac">&shiftKey;+<kbd>Del</kbd></span></td>
-    </tr>
-    <tr class="noMac">
-      <td>Full Screen</td>
-      <td><kbd>F11</kbd></td>
-    </tr>
-    <tr>
-      <td>Select Location Bar</td>
-      <td><span class="noMac">&altKey;+<kbd>D</kbd><br/></span>
-        <kbd>F6</kbd><br />
-        &accelKey;+<kbd>L</kbd></td>
-    </tr>
-    <tr>
-      <td>Select or Manage Search Engines<br/>
-        (when Search Bar is focused)</td>
-      <td>&altKey;+<kbd>Up Arrow</kbd><br/>
-        &altKey;+<kbd>Down Arrow</kbd><span class="noMac"><br/>
-        <kbd>F4</kbd></span></td>
-    </tr>
-  </tbody>
-</table>
-
-<div class="contentsBox"><em>07 October 2007</em></div>
-<p>Copyright &copy; &copyright.years; Contributors to the Mozilla Help Viewer Project.</p>
-
-</body>
-</html>
deleted file mode 100644
--- a/browser/locales/en-US/chrome/help/tabbed_browsing.xhtml
+++ /dev/null
@@ -1,137 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"[
-    <!ENTITY % brandDTD SYSTEM "chrome://branding/locale/brand.dtd" >
-    %brandDTD;
-    <!ENTITY % platformDTD SYSTEM "chrome://browser/locale/help/platformStrings.dtd" >
-    %platformDTD;
-]>
-<!--
-Contributors:
-  Daniel Wang (original author)
-  Jeff Walden <jwalden+code@mit.edu> (minor editorial nits, XHTML conversion)
-  Steffen Wilberg <steffen.wilberg@web.de> (minor editorial nits)
--->
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-	<title>Tabbed Browsing</title>
-	<link rel="stylesheet" type="text/css" href="chrome://help/skin/helpFileLayout.css"/>
-</head>
-
-<body>
-<h1>Tabbed Browsing</h1>
-
-<p>Tabbed browsing lets you open tabs, each displaying a web page, within a
-  single &brandShortName; window.  You can open links in new tabs, where they
-  will load while you read the current page.  You don't have to use tabbed
-  browsing, but if you do you might find tabbed browsing is a better, faster
-  way to browse the Web.</p>
-
-<div class="contentsBox">In this section:
-  <ul>
-    <li><a href="#creating_loading_tabs">Creating and Loading Tabs</a></li>
-    <li><a href="#moving_tabs">Moving Tabs Within a Window</a></li>
-    <li><a href="#closing_tabs">Closing Tabs</a></li>
-    <li><a href="#customizing">Customizing Tabbed Browsing</a></li>
-    <li><a href="#tips_tricks">Tips and Tricks</a></li>
-  </ul>
-</div>
-
-<h2 id="creating_loading_tabs">Creating and Loading Tabs</h2>
-
-<p>To open a new tab, press &accelKey;+<kbd>T</kbd>, select <span
-  class="menuPath">File &gt; New Tab</span>, or double-click an empty space in
-  the Tab Bar.</p>
-
-<p>To load a link in a tab, you can do one of the following:</p>
-
-<ul>
-  <li>Middle-click the link. (If you have a mouse wheel, clicking the wheel is
-    equivalent to middle-clicking.)</li>
-  <li>Drag the link and drop it on an empty space in the Tab Bar. (If only one
-    web page is open, the Tab Bar may be hidden. See <a
-    href="#customizing">Customizing Tabbed Browsing</a> for information on how
-    to change this.)</li>
-  <li>Drag and drop the link onto a tab to open the link in that tab.</li>
-  <li><span class="noMac">Right-click</span><span class="mac">Press &ctrlKey;,
-    click on</span> the link, and choose <span
-    class="menuPath">Open Link in New Tab</span> from the context menu.</li>
-</ul>
-
-<p>To open a URL in the Location Bar in a new tab, enter the URL and press
-  &altKey;+&enterKey;.</p>
-
-<h2 id="moving_tabs">Moving Tabs Within a Window</h2>
-
-<p>Tabs are displayed in the order you open them, which may not always be what
-  you want.  To move a tab to a different location within a &brandShortName;
-  window, simply drag it there using your mouse.  While you are dragging the
-  tab, &brandShortName; displays a small indicator to show where the tab will be
-  moved.  Alternately, you can use <a
-  href="shortcuts.xhtml#windows_tabs">keyboard shortcuts</a> to move tabs within
-  a window if desired.</p>
-
-<h2 id="closing_tabs">Closing and Restoring Tabs</h2>
-
-<p>To close the current tab, press &accelKey;+<kbd>W</kbd>, click the Close Tab
-  button, middle-click the tab, or select <span class="menuPath">File &gt;
-  Close Tab</span>.  To close all tabs other than the current one, <span
-  class="noMac">right-click</span><span class="mac">press &ctrlKey;,
-  click</span> on the tab and choose <span class="menuPath">Close Other
-  Tabs</span>.</p>
-  
-<p>&brandShortName; windows keep a list of tabs you closed recently. You can
-  restore any tab by selecting it from <span class="menuPath">History &gt;
-  Recently Closed Tabs</span>. You can restore all tabs by selecting <span
-  class="menuPath">History &gt; Recently Closed Tabs &gt; Open All in Tabs
-  </span>. Press &accelKey;+&shiftKey;+<kbd>T</kbd> to open them one by one in
-  reverse order.</p>
-
-<h2 id="customizing">Customizing Tabbed Browsing</h2>
-  <p>To change tabbed browsing &pref.plural; select &pref.menuPath; and open the
-    <a href="prefs.xhtml#tabs_options"><em>Tabs</em> panel</a>.</p>
-
-<h2 id="tips_tricks">Tips and Tricks</h2>
-
-<dl>
-
-  <dt id="bookmarking_tabbed_browsing">Bookmarks and Tabbed Browsing</dt>
-  <dd>To bookmark a set of tabs:</dd>
-  <dd>
-    <ol>
-      <li><span class="noUnix">Press &accelKey;+&shiftKey;+<kbd>D</kbd> or
-        select</span><span class="unix">Select</span>
-        <span class="menuPath">Bookmarks &gt; Bookmark All Tabs</span> to add
-        all the tabs in the current window to a new bookmark folder.</li>
-      <li>To open bookmarks in tabs, open a bookmark folder menu and choose
-        <span class="menuPath">Open in Tabs</span>.  You can also middle-click
-        on the folder to open its contents in tabs.  The bookmarks will open in
-        existing tabs, not new ones.</li>
-    </ol>
-  </dd>
-
-  <dt id="home_page_as_tabs">Home Page as Tabs</dt>
-  <dd>Instead of using only one web page as your homepage, you can make your
-    home page a set of tabs. Select your favorite web sites and open them in
-    tabs in a single window. Select &pref.menuPath; and open the <a
-    href="prefs.xhtml#main_options"><em>Main</em> panel</a>.  Under
-    <em>Startup</em>, press the <em>Use Current Pages</em> button. Now
-    when you press the Home button, your favorite web sites will load with just
-    a click.</dd>
-
-  <dt>Adding a New Tab Toolbar Button</dt>
-  <dd>You can add a New Tab button on the toolbar to easily open new tabs by <a
-    href="customization.xhtml#rearranging_toolbar_items">customizing your
-    toolbars</a>.</dd>
-
-  <dt id="keyboard_shortcuts">Keyboard shortcuts</dt>
-  <dd>&brandShortName; has an extensive set of shortcuts related to tabbed
-    browsing; see the full list in <a
-    href="shortcuts.xhtml#windows_tabs">Keyboard Shortcuts</a>.</dd>
-
-</dl>
-
-<div class="contentsBox"><em>12 September 2006</em></div>
-<p>Copyright &copy; &copyright.years; Contributors to the Mozilla Help Viewer Project.</p>
-
-</body>
-</html>
deleted file mode 100644
--- a/browser/locales/en-US/chrome/help/using_firebird.xhtml
+++ /dev/null
@@ -1,558 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"[
-    <!ENTITY % brandDTD SYSTEM "chrome://branding/locale/brand.dtd" >
-    %brandDTD;
-    <!ENTITY % platformDTD SYSTEM "chrome://browser/locale/help/platformStrings.dtd" >
-    %platformDTD;
-]>
-<!--
-Contributors:
-  R.J. Keller <rlk@trfenv.com> (original author)
-  Nilson Cain <nilson@gmail.com>
-  Steffen Wilberg <steffen.wilberg@web.de>
--->
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-  <title>Using &brandFullName;</title>
-  <link rel="stylesheet" type="text/css"
-    href="chrome://help/skin/helpFileLayout.css"/>
-</head>
-
-<body>
-
-<h1>Using &brandFullName;</h1>
-<p>Welcome to &brandFullName;! &brandShortName; is an Internet browser that
-  you can use to visit web pages and search the Web.</p>
-
-<div class="contentsBox">In this section:
-  <ul>
-    <li><a href="#navigating_web_pages">Navigating Web Pages</a></li>
-    <li><a href="#searching">Searching</a></li>
-    <li><a href="#copying_saving_and_printing_pages">Copying, Saving, and
-      Printing Pages</a></li>
-    <li><a href="#improving_speed_and_efficiency">Improving Speed and
-      Efficiency</a></li>
-  </ul>
-</div>
-
-<h2 id="navigating_web_pages">Navigating Web Pages</h2>
-
-<h3 id="viewing_your_home_page">Viewing Your Home Page</h3>
-<p>When you start &brandShortName;, you will see your home page.  By default,
-  you will see &brandShortName;'s home page.</p>
-
-<div class="noMac"><p><strong>Tips</strong>:</p>
-<ul>
-  <li>To display more web content on the screen, you can use Full Screen mode.
-    Full Screen mode condenses the &brandShortName;'s Toolbars into one small
-    toolbar. To enable Full Screen mode, simply select
-    <span class="menuPath">View &gt; Full Screen</span> or press
-    <kbd>F11</kbd>.</li>
-  <li>To go to your home page quickly, press &altKey;+<kbd>Home</kbd>.</li>
-</ul></div>
-
-<h3><strong id="moving_to_another_page">Moving to Another Page</strong></h3>
-<p>You can move to a new web page by typing in its Internet address or URL
-  into the Location Bar. URLs normally begin with &quot;http://&quot; followed
-  by one or more names that identify the address. One example is
-  &quot;http://www.mozilla.org/&quot;.</p>
-
-<ol>
-  <li>Click the Location Bar to select the URL that is already there.</li>
-  <li>Type the URL of the page you want to visit. The URL you type replaces
-    any text already in the Location Bar.</li>
-  <li>Press &enterKey;.</li>
-</ol>
-
-<p><strong>Tip:</strong> To quickly select the URL of the Location Bar, press
-  &accelKey;+<kbd>L</kbd>.</p>
-
-<p><img src="&images.baseURL;/urlbar.png" alt=""/></p>
-
-<p><strong>Don't know a URL</strong>? Try typing something specific to the page
-  you want to visit, e.g. a name, into the Location Bar and hit &enterKey;.
-  This will take you to the top result in Google for that term.</p>
-
-<h3 id="clicking_a_link">Clicking a Link</h3>
-<p>Most web pages contain links you can click to move to other pages.</p>
-
-<ol>
-  <li>Move the mouse pointer until it changes to a pointing finger. This
-    happens whenever the pointer is over a link. Most links are underlined
-    text, but buttons and pictures can also be links.</li>
-  <li>Click the link once. While the network locates the link's page, status
-    messages will appear at the bottom of the window.</li>
-</ol>
-
-<h3 id="retracing_your_steps">Retracing Your Steps</h3>
-<p>There are several ways to revisit pages:</p>
-
-<ul>
-  <li>To go back or forward one page, click the <em>Back</em> or
-    <em>Forward</em> button.</li>
-  <li>To go back or forward more than one page, click the small triangles on
-    the <em>Back</em> and <em>Forward</em> buttons. You'll see a list of pages
-    you've recently visited; to return to a page, choose it from the list.</li>
-  <li>To see a list of any URLs you've typed into the Location Bar, click the
-    down arrow at the right end of the Location Bar. To view a page, choose it
-    from the list.<br/>
-    <img src="&images.baseURL;/urlbar.png" alt=""/></li>
-  <li>To choose from pages you've visited during the current session, open the
-    History menu and use the list in the bottom section of the menu.</li>
-  <li>To choose from pages you've visited during the past several sessions,
-    open the <em>History</em> menu and choose <em>Show in Sidebar</em>. You will see the
-    History Sidebar. The History Sidebar displays a list of folders.
-    Clicking the folders displays subfolders or titles of web pages.
-    You can click a page's title to view that page.</li>
-</ul>
-
-<h3 id="stopping_and_reloading">Stopping and Reloading</h3>
-<p>If a page is loading too slowly or you no longer wish to view a page,
-  click the <em>Stop</em> button.</p>
-
-<p>To reload the current page or to get the most up-to-date version, click
-  the <em>Reload</em> button or press &accelKey;+<kbd>R</kbd>.</p>
-
-<h3 id="tabbed_browsing">Tabbed Browsing</h3>
-<p>When you visit more than one web page at a time, you can use Tabbed
-  Browsing to navigate the Web faster and easier.</p>
-
-<p>Tabbed Browsing lets you open tabs, each displaying a web page, within a
-  single &brandShortName; window. You don't have to have several windows open
-  to visit several different web pages. This frees up space on your desktop.
-  You can open, close, and reload web pages conveniently in one place without
-  having to switch to another window.</p>
-
-<p>For more info, see <a href="tabbed_browsing.xhtml">Tabbed Browsing</a>.</p>
-
-<h3 id="using_the_sidebar">Using the Sidebar</h3>
-<p>The Sidebar is an area on the left side of the screen that you can use for
-  viewing bookmarks or history.  Extensions may add new ways to use the Sidebar
-  as well.</p>
-
-<p>To view an item in the Sidebar, select <span class="menuPath">View &gt;
-  Sidebar</span>. From there you can select the Sidebar tab you want.</p>
-
-<h2 id="searching">Searching</h2>
-
-<h3 id="searching_the_web">Searching the Web</h3>
-
-<p>Searching for web pages on a particular topic is as easy as typing a few
-  words into &brandShortName;'s Search Bar.<br/>
-  <img src="&images.baseURL;/searchbar.png" alt=""/></p>
-
-<p>For example, if you want to find information about baby dolls:</p>
-<ol>
-  <li>Click in the Search Bar.</li>
-  <li>Type the phrase <kbd>baby doll</kbd>. Your typing replaces any text
-    currently in the search bar.</li>
-  <li>Hit &enterKey; to search.</li>
-</ol>
-
-<p>Search results for "baby doll" appear in the &brandShortName; window.</p>
-
-<h4 id="selecting_the_search_engine">Selecting the Search Engine</h4>
-
-<p>You can switch the Search Engine by clicking on its icon and selecting the
-  Search Engine of your choice. Some Search Engines, like Google, search the
-  whole web; others, like Amazon.com, only search specific sites.</p>
-
-<h4 id="manage_search_engines">Manage Search Engines</h4>
-<p>Click on the icon of the Search Engine and select <em>Manage Search
-  Engines…</em> to add, reorder, remove, or restore the default Search Engines.
-  Select a Search Engine and click the appropriate button to to move
-  it around within the list or remove it. You can install new search engines by
-  clicking the <em>Get more search engines…</em> link.</p>
-
-<h3 id="searching_on_selected_words_in_a_web_page">Searching the Web for
-  Words Selected in a Web Page</h3>
-
-<p>&brandShortName; allows you to search the web for words you select within
-  a web page:</p>
-
-<ol>
-  <li>Select (highlight) any words in a web page.</li>
-  <li><span class="noMac">Right-click</span><span class="mac">Press &ctrlKey;,
-    click the mouse button,</span> and choose <em>Search [Search Engine] for
-    "[your selected words]"</em> from the pop-up menu.</li>
-</ol>
-
-<p>&brandShortName; opens a new tab and uses the currently selected Search
-  Engine to search for your selected words.</p>
-
-<h3 id="searching_within_a_page">Searching Within a Page</h3>
-
-<p>To find text within the page you are currently viewing in
-  &brandShortName;:</p>
-
-<ol>
-  <li>Press &accelKey;+<kbd>F</kbd> or select <span class="menuPath">Edit &gt;
-    Find in This Page…</span> to open the Find Toolbar at the bottom of
-    &brandShortName;.</li>
-  <li>Type the text you want to find. The search automatically begins as soon as
-    you type something into the search box.</li>
-  <li>The Find Toolbar offers the following choices:
-  <ul>
-    <li><strong>Next</strong>: find text in the page that is below the current
-      cursor position.</li>
-    <li><strong>Previous</strong>: find text that is above the current cursor
-      position.</li>
-    <li><strong>Highlight all</strong>: highlight occurrences of your search
-      string in the current page.</li>
-    <li><strong>Match case</strong>: limit the search to text that has the
-      same capitalization as your search string.</li>
-  </ul>
-  </li>
-</ol>
-
-<p>To find the same word or phrase again, press <kbd>F3</kbd> or select
-  <span class="menuPath">Edit &gt; Find Again</span>.</p>
-
-<p><strong>Tip</strong>: Enable the <em>Search for text when I start typing</em>
-  &pref.singular; in the <em>General</em> tab of the <em>Advanced</em> panel of
-  &pref.menuPath; to enable the <em>Quick Find</em> mode of the Find Toolbar.
-  When enabled, the <em>Quick Find</em> toolbar automatically opens and starts
-  searching as soon as you type something. Unlike the Find Toolbar, the
-  <em>Quick Find</em> toolbar will close automatically after a few seconds of
-  inactivity.</p>
-
-<h2 id="copying_saving_and_printing_pages">Copying, Saving, and Printing
-  Pages</h2>
-
-<h3 id="copying_part_of_a_page">Copying Part of a Page</h3>
-
-<p>To copy text from a page:</p>
-<ol>
-  <li>Select the text.</li>
-  <li>Select <span class="menuPath">Edit &gt; Copy</span> from the Menu
-    Bar.</li>
-</ol>
-
-<p>You can paste the text into other programs.</p>
-
-<p>To copy a link (URL) or an image link from a page:</p>
-
-<ol>
-  <li>Position the pointer over the link or image.</li>
-  <li><span class="noMac">Right-click</span><span class="mac">Press &ctrlKey;
-    and click on</span> the link or image to display a pop-up menu.</li>
-  <li>Choose Copy Link Location or Copy Image Location. If an image is also a
-    link, you can choose either menu item.</li>
-</ol>
-
-<p>You can paste the link into other programs or into &brandShortName;'s
-  Location Bar.</p>
-
-<h3 id="saving_all_or_part_of_a_page">Saving All or Part of a Page</h3>
-
-<p>To save an entire page in &brandShortName;:</p>
-
-<ol>
-  <li>Select <span class="menuPath">File &gt; Save Page As</span>. You will see
-    the Save As dialog box.</li>
-  <li>Choose a location for the saved page.</li>
-  <li>Choose a format for the page you want to save:
-  <ul>
-    <li><strong>Web Page, Complete</strong>: Save the whole web page along
-      with pictures. This choice allows you to view it as originally shown
-      with pictures, but it may not keep the HTML link structure of the
-      original page. &brandShortName; creates a new directory where the
-      page is saved to save pictures and other files necessary to show the
-      whole web page.</li>
-    <li><strong>Web Page, HTML Only</strong>: Save the original page
-      without pictures. This choice preserves the original HTML link
-      structure in one file.</li>
-    <li><strong>Text file</strong>: Save the original page as a text file.
-      This choice will not preserve the original HTML link structure, but
-      will allow you to see a text version of the web page in any text
-      editor.</li>
-  </ul>
-  </li>
-  <li>Type a file name for the page and click <em>Save</em>.</li>
-</ol>
-
-<p>To save a frame from within a web page:</p>
-
-<ol>
-  <li>Position the mouse pointer within the frame.</li>
-  <li><span class="mac">Press &ctrlKey; and click on</span><span
-    class="noMac">Right-click</span> the frame to display a pop-up menu.</li>
-  <li>Select <span class="menuPath">This Frame &gt; Save Frame As</span> from
-    the submenu. You will see the Save As dialog box.</li>
-  <li>Choose a location for the saved page.</li>
-  <li>Choose a format for the page you want to save.</li>
-  <li>Type a file name for the page and click <em>Save</em>.</li>
-</ol>
-
-<p>Saving a file onto your hard drive lets you view the page when you aren't
-  connected to the Internet.</p>
-
-<p>To save an image from a page:</p>
-<ol>
-  <li>Position the mouse pointer over the image.</li>
-  <li><span class="noMac">Right-click</span><span class="mac">Press &ctrlKey;
-    and click on</span> the image to display a pop-up menu.</li>
-  <li>Select <span class="menuPath">Save Image As</span>. You will see the
-    Save Image dialog box.</li>
-  <li>Choose a location for the saved image.</li>
-  <li>Type a file name for the image and click <em>Save</em>.</li>
-</ol>
-
-<p>To save a page without displaying it (which is useful for retrieving a
-  nonformatted page that isn't intended for viewing):</p>
-
-<ol>
-  <li>Position the mouse pointer over a link to the page.</li>
-  <li><span class="noMac">Right-click</span><span class="mac">Press &ctrlKey;
-    and click on</span> the link to display a pop-up menu.</li>
-  <li>Select <span class="menuPath">Save Link to Disk</span>. You will see the
-    Save As dialog box.</li>
-  <li>Choose a location for the saved page.</li>
-  <li>Type a file name for the page and click <em>Save</em>.</li>
-</ol>
-
-<p><strong>Important</strong>: Some links automatically download and save files
-  to your hard drive after you click them. The URLs for these links often
-  begin with &quot;ftp&quot; or end with a file-type extension such as
-  &quot;au&quot; or &quot;mpeg.&quot; These links might transmit software,
-  sound, or movie files and can launch helper applications that support the
-  files.</p>
-
-<p><strong>Tip</strong>: To set an image as your desktop background,
-  <span class="noMac">right-click</span><span class="mac">press &ctrlKey;,
-  click the mouse button</span> on an image and choose <em>Set As Desktop
-  Background…</em> from the pop-up menu.</p>
-
-<h3 id="printing_a_page">Printing a Page</h3>
-
-<p>To print the current page:</p>
-
-<ul>
-  <li>Select <span class="menuPath">File &gt; Print</span>.</li>
-</ul>
-
-<p>To print selected text:</p>
-<ul>
-  <li>Select the text in the current page.</li>
-  <li>Select <span class="menuPath">File &gt; Print</span>. The print dialog
-    box will appear.</li>
-  <li>Under <em>Print Range</em>, click <em>Selection</em>.</li>
-</ul>
-
-<p>The web page's author and the size of the printed page, not the size of the
-  onscreen window, determine placement of content on the printed page. Text is
-  wrapped and graphics are repositioned to accommodate paper size.</p>
-
-<h3 id="using_print_preview">Using Print Preview</h3>
-
-<p>To have an early look at how a page will look before it is printed, you can
-  use Print Preview:</p>
-
-<ul>
-  <li>Select <span class="menuPath">File &gt; Print Preview</span>.</li>
-</ul>
-
-<p>In Print Preview, you can do the following with pages you want to print:</p>
-<ul>
-  <li><strong>View a preview of each page</strong>: Click the
-    Next <img alt="" src="chrome://global/skin/arrow/arrow-rit-sharp.gif"/>,
-    Previous <img alt="" src="chrome://global/skin/arrow/arrow-lft-sharp.gif"/>,
-    First <img alt="" src="chrome://global/skin/arrow/arrow-lft-sharp-end.gif"/>,
-    or Last <img alt="" src="chrome://global/skin/arrow/arrow-rit-sharp-end.gif"/>
-    button to move between pages.</li>
-  <li><strong>Change the scale (size) of pages</strong>: In the <em>Scale</em>
-    drop-down menu, choose &quot;50%&quot; to make each page half the size of
-    the original page. To automatically resize pages so that they fit the width
-    of the paper, choose &quot;Shrink to Fit&quot;. You can also type in your
-    own percentage by choosing &quot;Custom…&quot;.</li>
-  <li><strong>Change the orientation of the page</strong>: Choose
-    <em>Portrait</em> <img alt="" src="chrome://global/skin/icons/Portrait.png"/>
-    to position the page with the shorter side facing up. Choose
-    <em>Landscape</em> <img alt="" src="chrome://global/skin/icons/Landscape.png"/>
-    to position the page sideways with the longer side facing up.</li>
-  <li><strong>Go to Page Setup</strong>: Click <em>Page Setup</em> to further
-    customize pages you want to print.</li>
-  <li><strong>Go to Print</strong>: Click <em>Print</em> to print the
-    pages.</li>
-</ul>
-
-<p class="noWin"><strong>Note</strong>: Some Print Preview functions are different or
-  unavailable on Mac OS and Linux.</p>
-
-<h3 id="using_page_setup">Using Page Setup</h3>
-<p class="noWin"><strong>Note</strong>: Some Page Setup functions are different or
-  unavailable on Mac OS and Linux.</p>
-
-<p>To customize how pages are printed in &brandShortName;, you can use Page Setup:</p>
-
-<ul>
-  <li>Select <span class="menuPath">File &gt; Page Setup</span>.</li>
-</ul>
-
-<p>In Page Setup, you can change the following settings for pages you want to
-  print:</p>
-
-<ul>
-  <li><strong>Format &amp; Options</strong>: Choose the orientation, scale, and other
-    options:
-    <ul>
-      <li><strong>Orientation</strong>:
-        <ul>
-          <li><strong>Portrait</strong>: Choose this <img alt=""
-            src="chrome://global/skin/icons/Portrait.png"/> to position the page
-            normally, with the shorter side facing up.</li>
-          <li><strong>Landscape</strong>: Choose this <img alt=""
-            src="chrome://global/skin/icons/Landscape.png"/> to position the page
-            sideways, with the longer side facing up.</li>
-        </ul>
-      </li>
-      <li><strong>Scale</strong>: Type in a percentage of the original size. For example,
-        type &quot;50&quot; to make each page half the size of the original page.
-        <ul>
-          <li><strong>Shrink To Fit Page Width</strong>: Select this to automatically
-            resize the page to the width of the paper.</li>
-        </ul>
-      </li>
-      <li><strong>Options</strong>:
-        <ul>
-          <li><strong>Print Background (colors and images)</strong>: Select this to
-            print background images and colors. If unselected only pictures and color in the
-            foreground (in front) are printed.</li>
-        </ul>
-      </li>
-    </ul>
-  </li>
-  <li><strong>Margins &amp; Header/Footer</strong>: Click this tab to set up margins,
-    headers, and footers:
-    <ul>
-      <li><strong>Margins:</strong>
-        <ul>
-          <li><strong>Top, Bottom, Left, Right</strong>: Type a margin in the given units
-            for the top, bottom, left, and right margins.</li>
-        </ul>
-      </li>
-      <li><strong>Headers &amp; Footers</strong>: Each drop-down list represents either
-        a header or a footer area. The top row of drop-down lists are for the left, center, and
-        right header areas. The bottom row are for the left, center, and right footer areas. In
-        each drop-down list, choose one of the following options:
-        <ul>
-          <li><strong>--blank--</strong>: Show nothing in this area.</li>
-          <li><strong>Title</strong>: Show the web page title.</li>
-          <li><strong>URL</strong>: Show the web page URL (URL's usually start with
-            &quot;http://&quot;).</li>
-          <li><strong>Date/Time</strong>: Show the date and time when the web page is
-            printed.</li>
-          <li><strong>Page #</strong>: Show the page number of each page.</li>
-          <li><strong>Page # of #</strong>: Show the page number along with the total number
-            of pages. For example, if you print a five page web page, &quot;3 of 5&quot; would
-            be shown on the third page.</li>
-          <li><strong>Custom</strong>: Type your own text. You can include any of the
-            following codes to print specific information:
-            <ul>
-              <li><strong>&amp;PT</strong>: Page Number with Total (Example: &quot;3 of
-                5&quot;)</li>
-              <li><strong>&amp;P</strong>: Page Number</li>
-              <li><strong>&amp;D</strong>: Date</li>
-              <li><strong>&amp;U</strong>: URL</li>
-              <li><strong>&amp;T</strong>: Page Title</li>
-            </ul>
-          </li>
-        </ul>
-      </li>
-    </ul>
-  </li>
-</ul>
-
-<p><strong>Tip</strong>: To see a preview of changes made to Page Setup, use
-  <a href="using_firebird.xhtml#using_print_preview">Print Preview</a>.</p>
-
-<h2 id="improving_speed_and_efficiency">Improving Speed and Efficiency</h2>
-
-<h3 id="managing_different_file_types">Managing Different File Types</h3>
-<p>&brandShortName; can handle many types of files. However, for some files such
-  as movies or music, &brandShortName; needs Plugins or external applications
-  that can handle those files. If &brandShortName; doesn't have the needed
-  Plugin or doesn't know what application to use to open the file, it can still
-  save the file to your hard disk. When saving files, you can keep track of them
-  using the Download Manager.</p>
-
-<p>Plugins extend &brandShortName;'s functionality and run within it.
-  Plugins like Sun Java, Macromedia Flash, and RealNetworks RealPlayer allow
-  &brandShortName; to show multimedia files and run small applications such as
-  movies, animations, and games. You can find common Plugins on the <a href=
-  "https://pfs.mozilla.org/plugins/" target="_blank">Plugins page</a>
-   at Mozilla Update.</p>
-
-<p>When files cannot be opened within &brandShortName;, you can choose to open
-  them with applications outside of &brandShortName;. For example, you can use
-  the media player of your choice to play MP3 files.</p>
-
-<p>You can specify how &brandShortName; handles files it can't display in the
-  <em>Download Actions</em> dialog. To open this dialog, select &pref.menuPath;,
-  open the <em>Content</em> panel, and click the <em>Manage…</em> button in
-  the <em>File Types</em> section. You can change the action for a file type or
-  remove it.
-  More information about this dialog is available in <a
-  href="prefs.xhtml#file_types">File Types &pref.plural;</a>.</p>
-
-<p>When you click on a file and &brandShortName; doesn't know how to handle it,
-  an <em>Opening</em> dialog box is displayed, offering these choices:</p>
-
-<ul>
-  <li><strong>Open with</strong>: &brandShortName; opens the file using the
-    default program in your system settings. You can also choose a different
-    program by selecting <em>Other…</em> in the drop-down list.</li>
-  <li><strong>Save to Disk</strong>: &brandShortName; allows you to select a
-    location to save the file. If you have selected <em>Save all files to (this
-    folder)</em> in the <em>Main</em> panel of &pref.pluralCaps;,
-    the file will automatically be saved to the default folder; otherwise
-    &brandShortName; will ask you where to save it.</li>
-  <li><strong>Do this automatically for files like this from now on</strong>:
-    When this is selected, &brandShortName; will automatically perform the
-    selected action the next time you download a file of this type.</li>
-</ul>
-
-<p><strong>Tip</strong>: You can clear your saved &pref.plural; for <em>Do this
-  automatically for files like this from now on</em> in the <em>Download
-  Actions</em> dialog.</p>
-
-<h3 id="making_firebird_your_default_browser">Making &brandShortName; Your
-  Default Browser</h3>
-
-<p>&brandShortName; displays web pages on the Internet and
-  on your computer. To easily open web pages, you can make &brandShortName;
-  your default browser.</p>
-
-<p>To make &brandShortName; your default web browser, select &pref.menuPath;
-  and click the <em>Check Now</em> button in the <em>Main</em> panel.</p>
-
-<h3 id="changing_cache_settings">Changing Cache Settings</h3>
-<p>&brandShortName; stores copies of frequently accessed pages in the cache.
-  By doing this &brandShortName; doesn't have to retrieve the page from the
-  network each time you view the web page.</p>
-
-<p>To set the size of the cache:</p>
-
-<ol>
-  <li>Select &pref.menuPath;.</li>
-  <li>Open the <em>Advanced</em> panel and click the <em>Network</em> tab.</li>
-  <li>Enter a number in the <em>Use up to</em> field to specify the size of the
-    cache. The default size is 50MB.</li>
-</ol>
-
-<p><strong>Important</strong>: A larger cache allows more data to be quickly
-  retrieved, but more of your hard disk space is used.</p>
-
-<p>When you quit &brandShortName;, it performs cache maintenance. If
-  maintenance takes longer than you wish, try reducing the size of the disk
-  cache.</p>
-
-<p>To reload a page at any time, click the <em>Reload</em> button in
-  &brandShortName;'s <em>Navigation Toolbar</em>. &brandShortName; then loads
-  and displays the latest version of the page.</p>
-
-<div class="contentsBox"><em>12 September 2006</em></div>
-<p>Copyright &copy; &copyright.years; Contributors to the Mozilla Help Viewer Project.</p>
-
-</body>
-</html>
deleted file mode 100644
--- a/browser/locales/en-US/extra-jar.mn
+++ /dev/null
@@ -1,4 +0,0 @@
-# this is an empty file
-# locales can ship "extra" files from here, to ship a custom set
-# of files for the help system
-# do not put any blank lines in this file
--- a/browser/locales/jar.mn
+++ b/browser/locales/jar.mn
@@ -63,41 +63,20 @@
     locale/browser/preferences/preferences.properties (%chrome/browser/preferences/preferences.properties)
     locale/browser/preferences/privacy.dtd            (%chrome/browser/preferences/privacy.dtd)
     locale/browser/preferences/security.dtd           (%chrome/browser/preferences/security.dtd)
     locale/browser/preferences/securityWarnings.dtd   (%chrome/browser/preferences/securityWarnings.dtd)
     locale/browser/preferences/tabs.dtd               (%chrome/browser/preferences/tabs.dtd)
     locale/browser/sidebar/sidebar.properties      (%chrome/browser/sidebar/sidebar.properties)
 % locale browser-region @AB_CD@ %locale/browser-region/
     locale/browser-region/region.properties        (%chrome/browser-region/region.properties)
-#ifdef MOZ_HELP_VIEWER
-    locale/browser/help/help.rdf                      (%chrome/help/firebirdhelp.rdf)
-    locale/browser/help/firebird-toc.rdf              (%chrome/help/firebird-toc.rdf)
-    locale/browser/help/search-db.rdf                 (%chrome/help/search-db.rdf)
-    locale/browser/help/accessibility.xhtml           (%chrome/help/accessibility.xhtml)
-    locale/browser/help/cookies.xhtml                 (%chrome/help/cookies.xhtml)
-    locale/browser/help/forieusers.xhtml              (%chrome/help/forieusers.xhtml)
-    locale/browser/help/menu_reference.xhtml          (%chrome/help/menu_reference.xhtml)
-    locale/browser/help/mouse_shortcuts.xhtml         (%chrome/help/mouse_shortcuts.xhtml)
-    locale/browser/help/popup.xhtml                   (%chrome/help/popup.xhtml)
-    locale/browser/help/prefs.xhtml                   (%chrome/help/prefs.xhtml)
-    locale/browser/help/shortcuts.xhtml               (%chrome/help/shortcuts.xhtml)
-    locale/browser/help/using_firebird.xhtml          (%chrome/help/using_firebird.xhtml)
-    locale/browser/help/customization.xhtml           (%chrome/help/customization.xhtml)
-    locale/browser/help/firefox_welcome.xhtml         (%chrome/help/firefox_welcome.xhtml)
-    locale/browser/help/download_manager.xhtml        (%chrome/help/download_manager.xhtml)
-    locale/browser/help/platformStrings.dtd           (%chrome/help/platformStrings.dtd)
-    locale/browser/help/tabbed_browsing.xhtml         (%chrome/help/tabbed_browsing.xhtml)
-    locale/browser/help/glossary.xhtml                (%chrome/help/glossary.xhtml)
-#endif
 # the following files are browser-specific overrides
 *   locale/browser/netError.dtd                (%chrome/overrides/netError.dtd)
 *   locale/browser/appstrings.properties       (%chrome/overrides/appstrings.properties)
 *   locale/browser/downloads/settingsChange.dtd  (%chrome/overrides/settingsChange.dtd)
 % override chrome://global/locale/netErrorApp.dtd chrome://browser/locale/netError.dtd
 % override chrome://global/locale/appstrings.properties chrome://browser/locale/appstrings.properties
 % override chrome://mozapps/locale/downloads/settingsChange.dtd chrome://browser/locale/downloads/settingsChange.dtd
 #ifdef MOZ_USE_GENERIC_BRANDING
 % locale branding @AB_CD@ %locale/branding/
     locale/branding/brand.dtd         (%chrome/branding/brand.dtd)
     locale/branding/brand.properties  (%chrome/branding/brand.properties)
 #endif
-#includesubst @LOCALE_SRCDIR@/extra-jar.mn
--- a/config/doxygen.cfg.in
+++ b/config/doxygen.cfg.in
@@ -1,24 +1,32 @@
-# Doxyfile 1.2.8.1
+# Doxyfile 1.5.5
 
 # This file describes the settings to be used by the documentation system
 # doxygen (www.doxygen.org) for a project
 #
 # All text after a hash (#) is considered a comment and will be ignored
 # The format is:
 #       TAG = value [value, ...]
 # For lists items can also be appended using:
 #       TAG += value [value, ...]
 # Values that contain spaces should be placed between quotes (" ")
 
 #---------------------------------------------------------------------------
-# General configuration options
+# Project related configuration options
 #---------------------------------------------------------------------------
 
+# This tag specifies the encoding used for all characters in the config file 
+# that follow. The default is UTF-8 which is also the encoding used for all 
+# text before the first occurrence of this tag. Doxygen uses libiconv (or the 
+# iconv built into libc) for the transcoding. See 
+# http://www.gnu.org/software/libiconv for the list of possible encodings.
+
+DOXYFILE_ENCODING      = UTF-8
+
 # The PROJECT_NAME tag is a single word (or a sequence of words surrounded 
 # by quotes) that should identify the project.
 
 PROJECT_NAME           = "Mozilla"
 
 # The PROJECT_NUMBER tag can be used to enter a project or revision number. 
 # This could be handy for archiving the generated documentation or 
 # if some version control system is used.
@@ -27,194 +35,367 @@ PROJECT_NUMBER         =
 
 # The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) 
 # base path where the generated documentation will be put. 
 # If a relative path is entered, it will be relative to the location 
 # where doxygen was started. If left blank the current directory will be used.
 
 OUTPUT_DIRECTORY       = @MOZ_DOC_OUTPUT_DIR@
 
+# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create 
+# 4096 sub-directories (in 2 levels) under the output directory of each output 
+# format and will distribute the generated files over these directories. 
+# Enabling this option can be useful when feeding doxygen a huge amount of 
+# source files, where putting all generated files in the same directory would 
+# otherwise cause performance problems for the file system.
+
+CREATE_SUBDIRS         = NO
+
 # The OUTPUT_LANGUAGE tag is used to specify the language in which all 
 # documentation generated by doxygen is written. Doxygen will use this 
 # information to generate all constant output in the proper language. 
 # The default language is English, other supported languages are: 
-# Brazilian, Chinese, Croatian, Czech, Danish, Dutch, Finnish, French, 
-# German, Hungarian, Italian, Japanese, Korean, Norwegian, Polish, 
-# Portuguese, Romanian, Russian, Slovak, Slovene, Spanish and Swedish.
+# Afrikaans, Arabic, Brazilian, Catalan, Chinese, Chinese-Traditional, 
+# Croatian, Czech, Danish, Dutch, Farsi, Finnish, French, German, Greek, 
+# Hungarian, Italian, Japanese, Japanese-en (Japanese with English messages), 
+# Korean, Korean-en, Lithuanian, Norwegian, Macedonian, Persian, Polish, 
+# Portuguese, Romanian, Russian, Serbian, Slovak, Slovene, Spanish, Swedish, 
+# and Ukrainian.
 
 OUTPUT_LANGUAGE        = English
 
-# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in 
-# documentation are documented, even if no documentation was available. 
-# Private class members and static file members will be hidden unless 
-# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES
-
-EXTRACT_ALL            = NO
-
-# If the EXTRACT_PRIVATE tag is set to YES all private members of a class 
-# will be included in the documentation.
-
-EXTRACT_PRIVATE        = NO
-
-# If the EXTRACT_STATIC tag is set to YES all static members of a file 
-# will be included in the documentation.
-
-EXTRACT_STATIC         = NO
-
-# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all 
-# undocumented members of documented classes, files or namespaces. 
-# If set to NO (the default) these members will be included in the 
-# various overviews, but no documentation section is generated. 
-# This option has no effect if EXTRACT_ALL is enabled.
-
-HIDE_UNDOC_MEMBERS     = NO
-
-# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all 
-# undocumented classes that are normally visible in the class hierarchy. 
-# If set to NO (the default) these class will be included in the various 
-# overviews. This option has no effect if EXTRACT_ALL is enabled.
-
-HIDE_UNDOC_CLASSES     = NO
-
 # If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will 
 # include brief member descriptions after the members that are listed in 
 # the file and class documentation (similar to JavaDoc). 
 # Set to NO to disable this.
 
 BRIEF_MEMBER_DESC      = YES
 
 # If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend 
 # the brief description of a member or function before the detailed description. 
 # Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the 
 # brief descriptions will be completely suppressed.
 
 REPEAT_BRIEF           = YES
 
+# This tag implements a quasi-intelligent brief description abbreviator 
+# that is used to form the text in various listings. Each string 
+# in this list, if found as the leading text of the brief description, will be 
+# stripped from the text and the result after processing the whole list, is 
+# used as the annotated text. Otherwise, the brief description is used as-is. 
+# If left blank, the following values are used ("$name" is automatically 
+# replaced with the name of the entity): "The $name class" "The $name widget" 
+# "The $name file" "is" "provides" "specifies" "contains" 
+# "represents" "a" "an" "the"
+
+ABBREVIATE_BRIEF       = 
+
 # If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then 
 # Doxygen will generate a detailed section even if there is only a brief 
 # description.
 
 ALWAYS_DETAILED_SEC    = NO
 
+# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all 
+# inherited members of a class in the documentation of that class as if those 
+# members were ordinary class members. Constructors, destructors and assignment 
+# operators of the base classes will not be shown.
+
+INLINE_INHERITED_MEMB  = NO
+
 # If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full 
 # path before files name in the file list and in the header files. If set 
 # to NO the shortest path that makes the file name unique will be used.
 
 FULL_PATH_NAMES        = NO
 
 # If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag 
-# can be used to strip a user defined part of the path. Stripping is 
+# can be used to strip a user-defined part of the path. Stripping is 
 # only done if one of the specified strings matches the left-hand part of 
-# the path. It is allowed to use relative paths in the argument list.
+# the path. The tag can be used to show relative paths in the file list. 
+# If left blank the directory from which doxygen is run is used as the 
+# path to strip.
 
 STRIP_FROM_PATH        = 
 
+# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of 
+# the path mentioned in the documentation of a class, which tells 
+# the reader which header file to include in order to use a class. 
+# If left blank only the name of the header file containing the class 
+# definition is used. Otherwise one should specify the include paths that 
+# are normally passed to the compiler using the -I flag.
+
+STRIP_FROM_INC_PATH    = 
+
+# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter 
+# (but less readable) file names. This can be useful is your file systems 
+# doesn't support long names like on DOS, Mac, or CD-ROM.
+
+SHORT_NAMES            = NO
+
+# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen 
+# will interpret the first line (until the first dot) of a JavaDoc-style 
+# comment as the brief description. If set to NO, the JavaDoc 
+# comments will behave just like regular Qt-style comments 
+# (thus requiring an explicit @brief command for a brief description.)
+
+JAVADOC_AUTOBRIEF      = YES
+
+# If the QT_AUTOBRIEF tag is set to YES then Doxygen will 
+# interpret the first line (until the first dot) of a Qt-style 
+# comment as the brief description. If set to NO, the comments 
+# will behave just like regular Qt-style comments (thus requiring 
+# an explicit \brief command for a brief description.)
+
+QT_AUTOBRIEF           = NO
+
+# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen 
+# treat a multi-line C++ special comment block (i.e. a block of //! or /// 
+# comments) as a brief description. This used to be the default behaviour. 
+# The new default is to treat a multi-line C++ comment block as a detailed 
+# description. Set this tag to YES if you prefer the old behaviour instead.
+
+MULTILINE_CPP_IS_BRIEF = NO
+
+# If the DETAILS_AT_TOP tag is set to YES then Doxygen 
+# will output the detailed description near the top, like JavaDoc.
+# If set to NO, the detailed description appears after the member 
+# documentation.
+
+DETAILS_AT_TOP         = NO
+
+# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented 
+# member inherits the documentation from any documented member that it 
+# re-implements.
+
+INHERIT_DOCS           = YES
+
+# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce 
+# a new page for each member. If set to NO, the documentation of a member will 
+# be part of the file/class/namespace that contains it.
+
+SEPARATE_MEMBER_PAGES  = NO
+
+# The TAB_SIZE tag can be used to set the number of spaces in a tab. 
+# Doxygen uses this value to replace tabs by spaces in code fragments.
+
+TAB_SIZE               = 4
+
+# This tag can be used to specify a number of aliases that acts 
+# as commands in the documentation. An alias has the form "name=value". 
+# For example adding "sideeffect=\par Side Effects:\n" will allow you to 
+# put the command \sideeffect (or @sideeffect) in the documentation, which 
+# will result in a user-defined paragraph with heading "Side Effects:". 
+# You can put \n's in the value part of an alias to insert newlines.
+
+ALIASES                = "status=\par Status:\n"
+
+# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C 
+# sources only. Doxygen will then generate output that is more tailored for C. 
+# For instance, some of the names that are used will be different. The list 
+# of all members will be omitted, etc.
+
+OPTIMIZE_OUTPUT_FOR_C  = NO
+
+# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java 
+# sources only. Doxygen will then generate output that is more tailored for 
+# Java. For instance, namespaces will be presented as packages, qualified 
+# scopes will look different, etc.
+
+OPTIMIZE_OUTPUT_JAVA   = NO
+
+# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran 
+# sources only. Doxygen will then generate output that is more tailored for 
+# Fortran.
+
+OPTIMIZE_FOR_FORTRAN   = NO
+
+# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL 
+# sources. Doxygen will then generate output that is tailored for 
+# VHDL.
+
+OPTIMIZE_OUTPUT_VHDL   = NO
+
+# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want 
+# to include (a tag file for) the STL sources as input, then you should 
+# set this tag to YES in order to let doxygen match functions declarations and 
+# definitions whose arguments contain STL classes (e.g. func(std::string); v.s. 
+# func(std::string) {}). This also make the inheritance and collaboration 
+# diagrams that involve STL classes more complete and accurate.
+
+BUILTIN_STL_SUPPORT    = NO
+
+# If you use Microsoft's C++/CLI language, you should set this option to YES to
+# enable parsing support.
+
+CPP_CLI_SUPPORT        = NO
+
+# Set the SIP_SUPPORT tag to YES if your project consists of sip sources only. 
+# Doxygen will parse them like normal C++ but will assume all classes use public 
+# instead of private inheritance when no explicit protection keyword is present.
+
+SIP_SUPPORT            = NO
+
+# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC 
+# tag is set to YES, then doxygen will reuse the documentation of the first 
+# member in the group (if any) for the other members of the group. By default 
+# all members of a group must be documented explicitly.
+
+DISTRIBUTE_GROUP_DOC   = YES
+
+# Set the SUBGROUPING tag to YES (the default) to allow class member groups of 
+# the same type (for instance a group of public functions) to be put as a 
+# subgroup of that type (e.g. under the Public Functions section). Set it to 
+# NO to prevent subgrouping. Alternatively, this can be done per class using 
+# the \nosubgrouping command.
+
+SUBGROUPING            = YES
+
+# When TYPEDEF_HIDES_STRUCT is enabled, a typedef of a struct, union, or enum 
+# is documented as struct, union, or enum with the name of the typedef. So 
+# typedef struct TypeS {} TypeT, will appear in the documentation as a struct 
+# with name TypeT. When disabled the typedef will appear as a member of a file, 
+# namespace, or class. And the struct will be named TypeS. This can typically 
+# be useful for C code in case the coding convention dictates that all compound 
+# types are typedef'ed and only the typedef is referenced, never the tag name.
+
+TYPEDEF_HIDES_STRUCT   = NO
+
+#---------------------------------------------------------------------------
+# Build related configuration options
+#---------------------------------------------------------------------------
+
+# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in 
+# documentation are documented, even if no documentation was available. 
+# Private class members and static file members will be hidden unless 
+# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES
+
+EXTRACT_ALL            = YES
+
+# If the EXTRACT_PRIVATE tag is set to YES all private members of a class 
+# will be included in the documentation.
+
+EXTRACT_PRIVATE        = NO
+
+# If the EXTRACT_STATIC tag is set to YES all static members of a file 
+# will be included in the documentation.
+
+EXTRACT_STATIC         = NO
+
+# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) 
+# defined locally in source files will be included in the documentation. 
+# If set to NO only classes defined in header files are included.
+
+EXTRACT_LOCAL_CLASSES  = YES
+
+# This flag is only useful for Objective-C code. When set to YES local 
+# methods, which are defined in the implementation section but not in 
+# the interface are included in the documentation. 
+# If set to NO (the default) only methods in the interface are included.
+
+EXTRACT_LOCAL_METHODS  = NO
+
+# If this flag is set to YES, the members of anonymous namespaces will be 
+# extracted and appear in the documentation as a namespace called 
+# 'anonymous_namespace{file}', where file will be replaced with the base 
+# name of the file that contains the anonymous namespace. By default 
+# anonymous namespace are hidden.
+
+EXTRACT_ANON_NSPACES   = NO
+
+# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all 
+# undocumented members of documented classes, files or namespaces. 
+# If set to NO (the default) these members will be included in the 
+# various overviews, but no documentation section is generated. 
+# This option has no effect if EXTRACT_ALL is enabled.
+
+HIDE_UNDOC_MEMBERS     = NO
+
+# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all 
+# undocumented classes that are normally visible in the class hierarchy. 
+# If set to NO (the default) these classes will be included in the various 
+# overviews. This option has no effect if EXTRACT_ALL is enabled.
+
+HIDE_UNDOC_CLASSES     = NO
+
+# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all 
+# friend (class|struct|union) declarations. 
+# If set to NO (the default) these declarations will be included in the 
+# documentation.
+
+HIDE_FRIEND_COMPOUNDS  = NO
+
+# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any 
+# documentation blocks found inside the body of a function. 
+# If set to NO (the default) these blocks will be appended to the 
+# function's detailed documentation block.
+
+HIDE_IN_BODY_DOCS      = NO
+
 # The INTERNAL_DOCS tag determines if documentation 
 # that is typed after a \internal command is included. If the tag is set 
 # to NO (the default) then the documentation will be excluded. 
 # Set it to YES to include the internal documentation.
 
 INTERNAL_DOCS          = NO
 
-# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will 
-# generate a class diagram (in Html and LaTeX) for classes with base or 
-# super classes. Setting the tag to NO turns the diagrams off.
-
-CLASS_DIAGRAMS         = YES
-
-# If the SOURCE_BROWSER tag is set to YES then a list of source files will 
-# be generated. Documented entities will be cross-referenced with these sources.
-
-SOURCE_BROWSER         = NO
-
-# Setting the INLINE_SOURCES tag to YES will include the body 
-# of functions and classes directly in the documentation.
-
-INLINE_SOURCES         = NO
-
-# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct 
-# doxygen to hide any special comment blocks from generated source code 
-# fragments. Normal C and C++ comments will always remain visible.
-
-STRIP_CODE_COMMENTS    = YES
-
 # If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate 
-# file names in lower case letters. If set to YES upper case letters are also 
+# file names in lower-case letters. If set to YES upper-case letters are also 
 # allowed. This is useful if you have classes or files whose names only differ 
 # in case and if your file system supports case sensitive file names. Windows 
-# users are adviced to set this option to NO.
+# and Mac users are advised to set this option to NO.
 
 CASE_SENSE_NAMES       = YES
 
-# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter 
-# (but less readable) file names. This can be useful is your file systems 
-# doesn't support long names like on DOS, Mac, or CD-ROM.
-
-SHORT_NAMES            = NO
-
 # If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen 
 # will show members with their full class and namespace scopes in the 
 # documentation. If set to YES the scope will be hidden.
 
 HIDE_SCOPE_NAMES       = NO
 
-# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen 
-# will generate a verbatim copy of the header file for each class for 
-# which an include is specified. Set to NO to disable this.
-
-VERBATIM_HEADERS       = YES
-
 # If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen 
-# will put list of the files that are included by a file in the documentation 
+# will put a list of the files that are included by a file in the documentation 
 # of that file.
 
 SHOW_INCLUDE_FILES     = YES
 
-# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen 
-# will interpret the first line (until the first dot) of a JavaDoc-style 
-# comment as the brief description. If set to NO, the JavaDoc 
-# comments  will behave just like the Qt-style comments (thus requiring an 
-# explict @brief command for a brief description.
-
-JAVADOC_AUTOBRIEF      = YES
-
-# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented 
-# member inherits the documentation from any documented member that it 
-# reimplements.
-
-INHERIT_DOCS           = YES
-
 # If the INLINE_INFO tag is set to YES (the default) then a tag [inline] 
 # is inserted in the documentation for inline members.
 
 INLINE_INFO            = YES
 
 # If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen 
 # will sort the (detailed) documentation of file and class members 
 # alphabetically by member name. If set to NO the members will appear in 
 # declaration order.
 
 SORT_MEMBER_DOCS       = YES
 
-# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC 
-# tag is set to YES, then doxygen will reuse the documentation of the first 
-# member in the group (if any) for the other members of the group. By default 
-# all members of a group must be documented explicitly.
+# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the 
+# brief documentation of file, namespace and class members alphabetically 
+# by member name. If set to NO (the default) the members will appear in 
+# declaration order.
 
-DISTRIBUTE_GROUP_DOC   = NO
+SORT_BRIEF_DOCS        = NO
+
+# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the 
+# hierarchy of group names into alphabetical order. If set to NO (the default) 
+# the group names will appear in their defined order.
 
-# The TAB_SIZE tag can be used to set the number of spaces in a tab. 
-# Doxygen uses this value to replace tabs by spaces in code fragments.
-
-TAB_SIZE               = 4
+SORT_GROUP_NAMES       = NO
 
-# The ENABLED_SECTIONS tag can be used to enable conditional 
-# documentation sections, marked by \if sectionname ... \endif.
+# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be 
+# sorted by fully-qualified names, including namespaces. If set to 
+# NO (the default), the class list will be sorted only by class name, 
+# not including the namespace part. 
+# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES.
+# Note: This option applies only to the class list, not to the 
+# alphabetical list.
 
-ENABLED_SECTIONS       = 
+SORT_BY_SCOPE_NAME     = NO
 
 # The GENERATE_TODOLIST tag can be used to enable (YES) or 
 # disable (NO) the todo list. This list is created by putting \todo 
 # commands in the documentation.
 
 GENERATE_TODOLIST      = YES
 
 # The GENERATE_TESTLIST tag can be used to enable (YES) or 
@@ -224,48 +405,59 @@ GENERATE_TODOLIST      = YES
 GENERATE_TESTLIST      = YES
 
 # The GENERATE_BUGLIST tag can be used to enable (YES) or 
 # disable (NO) the bug list. This list is created by putting \bug 
 # commands in the documentation.
 
 GENERATE_BUGLIST       = NO
 
-# This tag can be used to specify a number of aliases that acts 
-# as commands in the documentation. An alias has the form "name=value". 
-# For example adding "sideeffect=\par Side Effects:\n" will allow you to 
-# put the command \sideeffect (or @sideeffect) in the documentation, which 
-# will result in a user defined paragraph with heading "Side Effects:". 
-# You can put \n's in the value part of an alias to insert newlines.
+# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or 
+# disable (NO) the deprecated list. This list is created by putting 
+# \deprecated commands in the documentation.
 
-ALIASES                = "status=\par Status:\n"
+GENERATE_DEPRECATEDLIST= YES
+
+# The ENABLED_SECTIONS tag can be used to enable conditional 
+# documentation sections, marked by \if sectionname ... \endif.
+
+ENABLED_SECTIONS       = 
 
 # The MAX_INITIALIZER_LINES tag determines the maximum number of lines 
-# the initial value of a variable or define consist of for it to appear in 
+# the initial value of a variable or define consists of for it to appear in 
 # the documentation. If the initializer consists of more lines than specified 
 # here it will be hidden. Use a value of 0 to hide initializers completely. 
 # The appearance of the initializer of individual variables and defines in the 
 # documentation can be controlled using \showinitializer or \hideinitializer 
 # command in the documentation regardless of this setting.
 
 MAX_INITIALIZER_LINES  = 30
 
-# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources 
-# only. Doxygen will then generate output that is more tailored for C. 
-# For instance some of the names that are used will be different. The list 
-# of all members will be omitted, etc.
-
-OPTIMIZE_OUTPUT_FOR_C  = NO
-
 # Set the SHOW_USED_FILES tag to NO to disable the list of files generated 
 # at the bottom of the documentation of classes and structs. If set to YES the 
 # list will mention the files that were used to generate the documentation.
 
 SHOW_USED_FILES        = YES
 
+# If the sources in your project are distributed over multiple directories 
+# then setting the SHOW_DIRECTORIES tag to YES will show the directory hierarchy 
+# in the documentation. The default is NO.
+
+SHOW_DIRECTORIES       = NO
+
+# The FILE_VERSION_FILTER tag can be used to specify a program or script that 
+# doxygen should invoke to get the current version for each file (typically from 
+# the version control system). Doxygen will invoke the program by executing (via 
+# popen()) the command <command> <input-file>, where <command> is the value of 
+# the FILE_VERSION_FILTER tag, and <input-file> is the name of an input file 
+# provided by doxygen. Whatever the program writes to standard output 
+# is used as the file version. See the manual for examples.
+
+FILE_VERSION_FILTER    = 
+
 #---------------------------------------------------------------------------
 # configuration options related to warning and progress messages
 #---------------------------------------------------------------------------
 
 # The QUIET tag can be used to turn on/off the messages that are generated 
 # by doxygen. Possible values are YES and NO. If left blank NO is used.
 
 QUIET                  = NO
@@ -275,22 +467,39 @@ QUIET                  = NO
 # NO is used.
 
 WARNINGS               = YES
 
 # If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings 
 # for undocumented members. If EXTRACT_ALL is set to YES then this flag will 
 # automatically be disabled.
 
-WARN_IF_UNDOCUMENTED   = YES
+WARN_IF_UNDOCUMENTED   = NO
+
+# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for 
+# potential errors in the documentation, such as not documenting some 
+# parameters in a documented function, or documenting parameters that 
+# don't exist or using markup commands wrongly.
+
+WARN_IF_DOC_ERROR      = YES
+
+# This WARN_NO_PARAMDOC option can be abled to get warnings for 
+# functions that are documented, but have no documentation for their parameters 
+# or return value. If set to NO (the default) doxygen will only warn about 
+# wrong or incomplete parameter documentation, but not about the absence of 
+# documentation.
+
+WARN_NO_PARAMDOC       = NO
 
 # The WARN_FORMAT tag determines the format of the warning messages that 
 # doxygen can produce. The string should contain the $file, $line, and $text 
 # tags, which will be replaced by the file and line number from which the 
-# warning originated and the warning text.
+# warning originated and the warning text. Optionally the format may contain 
+# $version, which will be replaced by the version of the file (if it could 
+# be obtained via FILE_VERSION_FILTER)
 
 WARN_FORMAT            = 
 
 # The WARN_LOGFILE tag can be used to specify a file to which warning 
 # and error messages should be written. If left blank the output is written 
 # to stderr.
 
 WARN_LOGFILE           = 
@@ -301,76 +510,176 @@ WARN_LOGFILE           =
 
 # The INPUT tag can be used to specify the files and/or directories that contain 
 # documented source files. You may enter file names like "myfile.cpp" or 
 # directories like "/usr/src/myproject". Separate the files or directories 
 # with spaces.
 
 INPUT                  = @MOZ_DOC_INPUT_DIRS@
 
+# This tag can be used to specify the character encoding of the source files 
+# that doxygen parses. Internally doxygen uses the UTF-8 encoding, which is 
+# also the default input encoding. Doxygen uses libiconv (or the iconv built 
+# into libc) for the transcoding. See http://www.gnu.org/software/libiconv for 
+# the list of possible encodings.
+
+INPUT_ENCODING         = UTF-8
+
 # If the value of the INPUT tag contains directories, you can use the 
 # FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp 
 # and *.h) to filter out the source-files in the directories. If left 
-# blank all files are included.
+# blank the following patterns are tested: 
+# *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx 
+# *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.py *.f90
 
-FILE_PATTERNS          = *.idl *.cpp *.h
+FILE_PATTERNS          = *.idl \
+                         *.cpp \
+                         *.h
 
 # The RECURSIVE tag can be used to turn specify whether or not subdirectories 
 # should be searched for input files as well. Possible values are YES and NO. 
 # If left blank NO is used.
 
 RECURSIVE              = YES
 
 # The EXCLUDE tag can be used to specify files and/or directories that should 
 # excluded from the INPUT source files. This way you can easily exclude a 
 # subdirectory from a directory tree whose root is specified with the INPUT tag.
 
 EXCLUDE                = 
 
+# The EXCLUDE_SYMLINKS tag can be used select whether or not files or 
+# directories that are symbolic links (a Unix filesystem feature) are excluded 
+# from the input.
+
+EXCLUDE_SYMLINKS       = NO
+
 # If the value of the INPUT tag contains directories, you can use the 
 # EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude 
-# certain files from those directories.
+# certain files from those directories. Note that the wildcards are matched 
+# against the file with absolute path, so to exclude all test directories 
+# for example use the pattern */test/*
+
+EXCLUDE_PATTERNS       = nsI*.h mozI*.h imgI*.h
 
-EXCLUDE_PATTERNS       = nsI*.h
+# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names 
+# (namespaces, classes, functions, etc.) that should be excluded from the 
+# output. The symbol name can be a fully qualified name, a word, or if the 
+# wildcard * is used, a substring. Examples: ANamespace, AClass, 
+# AClass::ANamespace, ANamespace::*Test
+
+EXCLUDE_SYMBOLS        = nsCOMPtr_base
 
 # The EXAMPLE_PATH tag can be used to specify one or more files or 
 # directories that contain example code fragments that are included (see 
 # the \include command).
 
 EXAMPLE_PATH           = 
 
 # If the value of the EXAMPLE_PATH tag contains directories, you can use the 
 # EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp 
 # and *.h) to filter out the source-files in the directories. If left 
 # blank all files are included.
 
 EXAMPLE_PATTERNS       = 
 
+# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be 
+# searched for input files to be used with the \include or \dontinclude 
+# commands irrespective of the value of the RECURSIVE tag. 
+# Possible values are YES and NO. If left blank NO is used.
+
+EXAMPLE_RECURSIVE      = NO
+
 # The IMAGE_PATH tag can be used to specify one or more files or 
 # directories that contain image that are included in the documentation (see 
 # the \image command).
 
 IMAGE_PATH             = 
 
 # The INPUT_FILTER tag can be used to specify a program that doxygen should 
 # invoke to filter for each input file. Doxygen will invoke the filter program 
 # by executing (via popen()) the command <filter> <input-file>, where <filter> 
 # is the value of the INPUT_FILTER tag, and <input-file> is the name of an 
 # input file. Doxygen will then use the output that the filter program writes 
-# to standard output.
+# to standard output.  If FILTER_PATTERNS is specified, this tag will be 
+# ignored.
 
 INPUT_FILTER           = 
 
+# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern 
+# basis.  Doxygen will compare the file name with each pattern and apply the 
+# filter if there is a match.  The filters are a list of the form: 
+# pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further 
+# info on how filters are used. If FILTER_PATTERNS is empty, INPUT_FILTER 
+# is applied to all files.
+
+FILTER_PATTERNS        = 
+
 # If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using 
 # INPUT_FILTER) will be used to filter the input files when producing source 
-# files to browse.
+# files to browse (i.e. when SOURCE_BROWSER is set to YES).
 
 FILTER_SOURCE_FILES    = NO
 
 #---------------------------------------------------------------------------
+# configuration options related to source browsing
+#---------------------------------------------------------------------------
+
+# If the SOURCE_BROWSER tag is set to YES then a list of source files will 
+# be generated. Documented entities will be cross-referenced with these sources. 
+# Note: To get rid of all source code in the generated output, make sure also 
+# VERBATIM_HEADERS is set to NO.
+
+SOURCE_BROWSER         = NO
+
+# Setting the INLINE_SOURCES tag to YES will include the body 
+# of functions and classes directly in the documentation.
+
+INLINE_SOURCES         = NO
+
+# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct 
+# doxygen to hide any special comment blocks from generated source code 
+# fragments. Normal C and C++ comments will always remain visible.
+
+STRIP_CODE_COMMENTS    = YES
+
+# If the REFERENCED_BY_RELATION tag is set to YES (the default) 
+# then for each documented function all documented 
+# functions referencing it will be listed.
+
+REFERENCED_BY_RELATION = NO
+
+# If the REFERENCES_RELATION tag is set to YES (the default) 
+# then for each documented function all documented entities 
+# called/used by that function will be listed.
+
+REFERENCES_RELATION    = NO
+
+# If the REFERENCES_LINK_SOURCE tag is set to YES (the default)
+# and SOURCE_BROWSER tag is set to YES, then the hyperlinks from
+# functions in REFERENCES_RELATION and REFERENCED_BY_RELATION lists will
+# link to the source code.  Otherwise they will link to the documentstion.
+
+REFERENCES_LINK_SOURCE = NO
+
+# If the USE_HTAGS tag is set to YES then the references to source code 
+# will point to the HTML generated by the htags(1) tool instead of doxygen 
+# built-in source browser. The htags tool is part of GNU's global source 
+# tagging system (see http://www.gnu.org/software/global/global.html). You 
+# will need version 4.8.6 or higher.
+
+USE_HTAGS              = NO
+
+# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen 
+# will generate a verbatim copy of the header file for each class for 
+# which an include is specified. Set to NO to disable this.
+
+VERBATIM_HEADERS       = NO
+
+#---------------------------------------------------------------------------
 # configuration options related to the alphabetical class index
 #---------------------------------------------------------------------------
 
 # If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index 
 # of all compounds will be generated. Enable this if the project 
 # contains a lot of classes, structs, unions or interfaces.
 
 ALPHABETICAL_INDEX     = YES
@@ -381,79 +690,136 @@ ALPHABETICAL_INDEX     = YES
 
 COLS_IN_ALPHA_INDEX    = 5
 
 # In case all classes in a project start with a common prefix, all 
 # classes will be put under the same header in the alphabetical index. 
 # The IGNORE_PREFIX tag can be used to specify one or more prefixes that 
 # should be ignored while generating the index headers.
 
-IGNORE_PREFIX          = ns moz img in
+IGNORE_PREFIX          = nsI ns \
+                         mozI moz \
+                         imgI img
 
 #---------------------------------------------------------------------------
 # configuration options related to the HTML output
 #---------------------------------------------------------------------------
 
 # If the GENERATE_HTML tag is set to YES (the default) Doxygen will 
 # generate HTML output.
 
 GENERATE_HTML          = YES
 
 # The HTML_OUTPUT tag is used to specify where the HTML docs will be put. 
 # If a relative path is entered the value of OUTPUT_DIRECTORY will be 
 # put in front of it. If left blank `html' will be used as the default path.
 
 HTML_OUTPUT            = 
 
+# The HTML_FILE_EXTENSION tag can be used to specify the file extension for 
+# each generated HTML page (for example: .htm,.php,.asp). If it is left blank 
+# doxygen will generate files with .html extension.
+
+HTML_FILE_EXTENSION    = .html
+
 # The HTML_HEADER tag can be used to specify a personal HTML header for 
 # each generated HTML page. If it is left blank doxygen will generate a 
 # standard header.
 
 HTML_HEADER            = 
 
 # The HTML_FOOTER tag can be used to specify a personal HTML footer for 
 # each generated HTML page. If it is left blank doxygen will generate a 
 # standard footer.
 
 HTML_FOOTER            = 
 
-# The HTML_STYLESHEET tag can be used to specify a user defined cascading 
+# The HTML_STYLESHEET tag can be used to specify a user-defined cascading 
 # style sheet that is used by each HTML page. It can be used to 
 # fine-tune the look of the HTML output. If the tag is left blank doxygen 
-# will generate a default style sheet
+# will generate a default style sheet. Note that doxygen will try to copy 
+# the style sheet file to the HTML output directory, so don't put your own 
+# stylesheet in the HTML output directory as well, or it will be erased!
 
 HTML_STYLESHEET        = 
 
 # If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes, 
 # files or namespaces will be aligned in HTML using tables. If set to 
 # NO a bullet list will be used.
 
 HTML_ALIGN_MEMBERS     = YES
 
 # If the GENERATE_HTMLHELP tag is set to YES, additional index files 
 # will be generated that can be used as input for tools like the 
-# Microsoft HTML help workshop to generate a compressed HTML help file (.chm) 
+# Microsoft HTML help workshop to generate a compiled HTML help file (.chm) 
 # of the generated HTML documentation.
 
 GENERATE_HTMLHELP      = NO
 
+# If the GENERATE_DOCSET tag is set to YES, additional index files 
+# will be generated that can be used as input for Apple's Xcode 3 
+# integrated development environment, introduced with OSX 10.5 (Leopard). 
+# To create a documentation set, doxygen will generate a Makefile in the 
+# HTML output directory. Running make will produce the docset in that 
+# directory and running "make install" will install the docset in 
+# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find 
+# it at startup.
+
+GENERATE_DOCSET        = NO
+
+# When GENERATE_DOCSET tag is set to YES, this tag determines the name of the 
+# feed. A documentation feed provides an umbrella under which multiple 
+# documentation sets from a single provider (such as a company or product suite) 
+# can be grouped.
+
+DOCSET_FEEDNAME        = "Doxygen generated docs"
+
+# When GENERATE_DOCSET tag is set to YES, this tag specifies a string that 
+# should uniquely identify the documentation set bundle. This should be a 
+# reverse domain-name style string, e.g. com.mycompany.MyDocSet. Doxygen 
+# will append .docset to the name.
+
+DOCSET_BUNDLE_ID       = org.doxygen.Project
+
+# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML 
+# documentation will contain sections that can be hidden and shown after the 
+# page has loaded. For this to work a browser that supports 
+# JavaScript and DHTML is required (for instance Mozilla 1.0+, Firefox 
+# Netscape 6.0+, Internet explorer 5.0+, Konqueror, or Safari).
+
+HTML_DYNAMIC_SECTIONS  = NO
+
+# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can 
+# be used to specify the file name of the resulting .chm file. You 
+# can add a path in front of the file if the result should not be 
+# written to the html output directory.
+
+CHM_FILE               = 
+
+# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can 
+# be used to specify the location (absolute path including file name) of 
+# the HTML help compiler (hhc.exe). If non-empty doxygen will try to run 
+# the HTML help compiler on the generated index.hhp.
+
+HHC_LOCATION           = 
+
 # If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag 
 # controls if a separate .chi index file is generated (YES) or that 
 # it should be included in the master .chm file (NO).
 
 GENERATE_CHI           = NO
 
 # If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag 
 # controls whether a binary table of contents is generated (YES) or a 
 # normal table of contents (NO) in the .chm file.
 
 BINARY_TOC             = NO
 
 # The TOC_EXPAND flag can be set to YES to add extra items for group members 
-# to the contents of the Html help documentation and to the tree view.
+# to the contents of the HTML help documentation and to the tree view.
 
 TOC_EXPAND             = NO
 
 # The DISABLE_INDEX tag can be used to turn on/off the condensed index at 
 # top of each HTML page. The value NO (the default) enables the index and 
 # the value YES disables it.
 
 DISABLE_INDEX          = NO
@@ -461,18 +827,19 @@ DISABLE_INDEX          = NO
 # This tag can be used to set the number of enum values (range [1..20]) 
 # that doxygen will group on one line in the generated HTML documentation.
 
 ENUM_VALUES_PER_LINE   = 4
 
 # If the GENERATE_TREEVIEW tag is set to YES, a side panel will be
 # generated containing a tree-like index structure (just like the one that 
 # is generated for HTML Help). For this to work a browser that supports 
-# JavaScript and frames is required (for instance Netscape 4.0+ 
-# or Internet explorer 4.0+).
+# JavaScript, DHTML, CSS and frames is required (for instance Mozilla 1.0+, 
+# Netscape 6.0+, Internet explorer 5.0+, or Konqueror). Windows users are 
+# probably better off using the HTML help feature.
 
 GENERATE_TREEVIEW      = NO
 
 # If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be 
 # used to set the initial width (in pixels) of the frame in which the tree 
 # is shown.
 
 TREEVIEW_WIDTH         = 250
@@ -487,16 +854,27 @@ TREEVIEW_WIDTH         = 250
 GENERATE_LATEX         = NO
 
 # The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. 
 # If a relative path is entered the value of OUTPUT_DIRECTORY will be 
 # put in front of it. If left blank `latex' will be used as the default path.
 
 LATEX_OUTPUT           = 
 
+# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be 
+# invoked. If left blank `latex' will be used as the default command name.
+
+LATEX_CMD_NAME         = latex
+
+# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to 
+# generate index for LaTeX. If left blank `makeindex' will be used as the 
+# default command name.
+
+MAKEINDEX_CMD_NAME     = makeindex
+
 # If the COMPACT_LATEX tag is set to YES Doxygen generates more compact 
 # LaTeX documents. This may be useful for small projects and may help to 
 # save some trees in general.
 
 COMPACT_LATEX          = NO
 
 # The PAPER_TYPE tag can be used to set the paper type that is used 
 # by the printer. Possible values are: a4, a4wide, letter, legal and 
@@ -531,22 +909,28 @@ USE_PDFLATEX           = NO
 
 # If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode. 
 # command to the generated LaTeX files. This will instruct LaTeX to keep 
 # running if errors occur, instead of asking the user for help. 
 # This option is also used when generating formulas in HTML.
 
 LATEX_BATCHMODE        = NO
 
+# If LATEX_HIDE_INDICES is set to YES then doxygen will not 
+# include the index chapters (such as File Index, Compound Index, etc.) 
+# in the output.
+
+LATEX_HIDE_INDICES     = NO
+
 #---------------------------------------------------------------------------
 # configuration options related to the RTF output
 #---------------------------------------------------------------------------
 
 # If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output 
-# The RTF output is optimised for Word 97 and may not look very pretty with 
+# The RTF output is optimized for Word 97 and may not look very pretty with 
 # other RTF readers or editors.
 
 GENERATE_RTF           = NO
 
 # The RTF_OUTPUT tag is used to specify where the RTF docs will be put. 
 # If a relative path is entered the value of OUTPUT_DIRECTORY will be 
 # put in front of it. If left blank `rtf' will be used as the default path.
 
@@ -563,17 +947,17 @@ COMPACT_RTF            = NO
 # contain links (just like the HTML output) instead of page references. 
 # This makes the output suitable for online browsing using WORD or other 
 # programs which support those fields. 
 # Note: wordpad (write) and others do not support links.
 
 RTF_HYPERLINKS         = NO
 
 # Load stylesheet definitions from file. Syntax is similar to doxygen's 
-# config file, i.e. a series of assigments. You only have to provide 
+# config file, i.e. a series of assignments. You only have to provide 
 # replacements, missing definitions are set to their default value.
 
 RTF_STYLESHEET_FILE    = 
 
 # Set optional variables used in the generation of an rtf document. 
 # Syntax is similar to doxygen's config file.
 
 RTF_EXTENSIONS_FILE    = 
@@ -593,44 +977,124 @@ GENERATE_MAN           = NO
 
 MAN_OUTPUT             = 
 
 # The MAN_EXTENSION tag determines the extension that is added to 
 # the generated man pages (default is the subroutine's section .3)
 
 MAN_EXTENSION          = 
 
-# If the MAN_LINKS tag is set to YES and Doxygen generates man output,
-# then it will generate one additional man file for each entity
-# documented in the real man page(s). These additional files
-# only source the real man page, but without them the man command
+# If the MAN_LINKS tag is set to YES and Doxygen generates man output, 
+# then it will generate one additional man file for each entity 
+# documented in the real man page(s). These additional files 
+# only source the real man page, but without them the man command 
 # would be unable to find the correct page. The default is NO.
 
 MAN_LINKS              = NO
 
 #---------------------------------------------------------------------------
+# configuration options related to the XML output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_XML tag is set to YES Doxygen will 
+# generate an XML file that captures the structure of 
+# the code including all documentation.
+
+GENERATE_XML           = NO
+
+# The XML_OUTPUT tag is used to specify where the XML pages will be put. 
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
+# put in front of it. If left blank `xml' will be used as the default path.
+
+XML_OUTPUT             = xml
+
+# The XML_SCHEMA tag can be used to specify an XML schema, 
+# which can be used by a validating XML parser to check the 
+# syntax of the XML files.
+
+XML_SCHEMA             = 
+
+# The XML_DTD tag can be used to specify an XML DTD, 
+# which can be used by a validating XML parser to check the 
+# syntax of the XML files.
+
+XML_DTD                = 
+
+# If the XML_PROGRAMLISTING tag is set to YES Doxygen will 
+# dump the program listings (including syntax highlighting 
+# and cross-referencing information) to the XML output. Note that 
+# enabling this will significantly increase the size of the XML output.
+
+XML_PROGRAMLISTING     = YES
+
+#---------------------------------------------------------------------------
+# configuration options for the AutoGen Definitions output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will 
+# generate an AutoGen Definitions (see autogen.sf.net) file 
+# that captures the structure of the code including all 
+# documentation. Note that this feature is still experimental 
+# and incomplete at the moment.
+
+GENERATE_AUTOGEN_DEF   = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to the Perl module output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_PERLMOD tag is set to YES Doxygen will 
+# generate a Perl module file that captures the structure of 
+# the code including all documentation. Note that this 
+# feature is still experimental and incomplete at the 
+# moment.
+
+GENERATE_PERLMOD       = NO
+
+# If the PERLMOD_LATEX tag is set to YES Doxygen will generate 
+# the necessary Makefile rules, Perl scripts and LaTeX code to be able 
+# to generate PDF and DVI output from the Perl module output.
+
+PERLMOD_LATEX          = NO
+
+# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be 
+# nicely formatted so it can be parsed by a human reader.  This is useful 
+# if you want to understand what is going on.  On the other hand, if this 
+# tag is set to NO the size of the Perl module output will be much smaller 
+# and Perl will parse it just the same.
+
+PERLMOD_PRETTY         = YES
+
+# The names of the make variables in the generated doxyrules.make file 
+# are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. 
+# This is useful so different doxyrules.make files included by the same 
+# Makefile don't overwrite each other's variables.
+
+PERLMOD_MAKEVAR_PREFIX = 
+
+#---------------------------------------------------------------------------
 # Configuration options related to the preprocessor   
 #---------------------------------------------------------------------------
 
 # If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will 
 # evaluate all C-preprocessor directives found in the sources and include 
 # files.
 
-ENABLE_PREPROCESSING   = NO
+ENABLE_PREPROCESSING   = YES
 
 # If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro 
 # names in the source code. If set to NO (the default) only conditional 
 # compilation will be performed. Macro expansion can be done in a controlled 
 # way by setting EXPAND_ONLY_PREDEF to YES.
 
-MACRO_EXPANSION        = NO
+MACRO_EXPANSION        = YES
 
 # If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES 
 # then the macro expansion is limited to the macros specified with the 
-# PREDEFINED and EXPAND_AS_PREDEFINED tags.
+# PREDEFINED and EXPAND_AS_DEFINED tags.
 
 EXPAND_ONLY_PREDEF     = NO
 
 # If the SEARCH_INCLUDES tag is set to YES (the default) the includes files 
 # in the INCLUDE_PATH (see below) will be search if a #include is found.
 
 SEARCH_INCLUDES        = YES
 
@@ -640,169 +1104,257 @@ SEARCH_INCLUDES        = YES
 
 INCLUDE_PATH           = @MOZ_DOC_INCLUDE_DIRS@
 
 # You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard 
 # patterns (like *.h and *.hpp) to filter out the header-files in the 
 # directories. If left blank, the patterns specified with FILE_PATTERNS will 
 # be used.
 
-INCLUDE_FILE_PATTERNS  = 
+INCLUDE_FILE_PATTERNS  = *.h 
 
 # The PREDEFINED tag can be used to specify one or more macro names that 
 # are defined before the preprocessor is started (similar to the -D option of 
 # gcc). The argument of the tag is a list of macros of the form: name 
 # or name=definition (no spaces). If the definition and the = are 
-# omitted =1 is assumed.
+# omitted =1 is assumed. To prevent a macro definition from being 
+# undefined via #undef or recursively expanded use the := operator 
+# instead of the = operator.
 
 PREDEFINED             = 
 
-# If the MACRO_EXPANSION and EXPAND_PREDEF_ONLY tags are set to YES then 
+# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then 
 # this tag can be used to specify a list of macro names that should be expanded. 
 # The macro definition that is found in the sources will be used. 
 # Use the PREDEFINED tag if you want to use a different macro definition.
 
 EXPAND_AS_DEFINED      = 
 
+# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then 
+# doxygen's preprocessor will remove all function-like macros that are alone 
+# on a line, have an all uppercase name, and do not end with a semicolon. Such 
+# function macros are typically used for boiler-plate code, and will confuse 
+# the parser if not removed.
+
+SKIP_FUNCTION_MACROS   = YES
+
 #---------------------------------------------------------------------------
-# Configuration::addtions related to external references   
+# Configuration::additions related to external references   
 #---------------------------------------------------------------------------
 
-# The TAGFILES tag can be used to specify one or more tagfiles.
+# The TAGFILES option can be used to specify one or more tagfiles. 
+# Optionally an initial location of the external documentation 
+# can be added for each tagfile. The format of a tag file without 
+# this location is as follows: 
+#   TAGFILES = file1 file2 ... 
+# Adding location for the tag files is done as follows: 
+#   TAGFILES = file1=loc1 "file2 = loc2" ... 
+# where "loc1" and "loc2" can be relative or absolute paths or 
+# URLs. If a location is present for each tag, the installdox tool 
+# does not have to be run to correct the links.
+# Note that each tag file must have a unique name
+# (where the name does NOT include the path)
+# If a tag file is not located in the directory in which doxygen 
+# is run, you must also specify the path to the tagfile here.
 
 TAGFILES               = 
 
 # When a file name is specified after GENERATE_TAGFILE, doxygen will create 
 # a tag file that is based on the input files it reads.
 
 GENERATE_TAGFILE       = 
 
 # If the ALLEXTERNALS tag is set to YES all external classes will be listed 
 # in the class index. If set to NO only the inherited external classes 
 # will be listed.
 
 ALLEXTERNALS           = NO
 
+# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed 
+# in the modules index. If set to NO, only the current project's groups will 
+# be listed.
+
+EXTERNAL_GROUPS        = YES
+
 # The PERL_PATH should be the absolute path and name of the perl script 
 # interpreter (i.e. the result of `which perl').
 
 PERL_PATH              = 
 
 #---------------------------------------------------------------------------
 # Configuration options related to the dot tool   
 #---------------------------------------------------------------------------
 
+# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will 
+# generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base 
+# or super classes. Setting the tag to NO turns the diagrams off. Note that 
+# this option is superseded by the HAVE_DOT option below. This is only a 
+# fallback. It is recommended to install and use dot, since it yields more 
+# powerful graphs.
+
+CLASS_DIAGRAMS         = YES
+
+# You can define message sequence charts within doxygen comments using the \msc 
+# command. Doxygen will then run the mscgen tool (see 
+# http://www.mcternan.me.uk/mscgen/) to produce the chart and insert it in the 
+# documentation. The MSCGEN_PATH tag allows you to specify the directory where 
+# the mscgen tool resides. If left empty the tool is assumed to be found in the 
+# default search path.
+
+MSCGEN_PATH            = 
+
+# If set to YES, the inheritance and collaboration graphs will hide 
+# inheritance and usage relations if the target is undocumented 
+# or is not a class.
+
+HIDE_UNDOC_RELATIONS   = YES
+
 # If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is 
 # available from the path. This tool is part of Graphviz, a graph visualization 
 # toolkit from AT&T and Lucent Bell Labs. The other options in this section 
 # have no effect if this option is set to NO (the default)
 
-HAVE_DOT               = NO
+HAVE_DOT               = YES
 
 # If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen 
 # will generate a graph for each documented class showing the direct and 
 # indirect inheritance relations. Setting this tag to YES will force the 
 # the CLASS_DIAGRAMS tag to NO.
 
 CLASS_GRAPH            = YES
 
 # If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen 
 # will generate a graph for each documented class showing the direct and 
 # indirect implementation dependencies (inheritance, containment, and 
 # class references variables) of the class with other documented classes.
 
 COLLABORATION_GRAPH    = YES
 
+# If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen 
+# will generate a graph for groups, showing the direct groups dependencies
+
+GROUP_GRAPHS           = YES
+
+# If the UML_LOOK tag is set to YES doxygen will generate inheritance and 
+# collaboration diagrams in a style similar to the OMG's Unified Modeling 
+# Language.
+
+UML_LOOK               = NO
+
+# If set to YES, the inheritance and collaboration graphs will show the 
+# relations between templates and their instances.
+
+TEMPLATE_RELATIONS     = NO
+
 # If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT 
 # tags are set to YES then doxygen will generate a graph for each documented 
 # file showing the direct and indirect include dependencies of the file with 
 # other documented files.
 
 INCLUDE_GRAPH          = YES
 
 # If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and 
 # HAVE_DOT tags are set to YES then doxygen will generate a graph for each 
 # documented header file showing the documented files that directly or 
 # indirectly include this file.
 
 INCLUDED_BY_GRAPH      = YES
 
+# If the CALL_GRAPH and HAVE_DOT options are set to YES then 
+# doxygen will generate a call dependency graph for every global function 
+# or class method. Note that enabling this option will significantly increase 
+# the time of a run. So in most cases it will be better to enable call graphs 
+# for selected functions only using the \callgraph command.
+
+CALL_GRAPH             = NO
+
+# If the CALLER_GRAPH and HAVE_DOT tags are set to YES then 
+# doxygen will generate a caller dependency graph for every global function 
+# or class method. Note that enabling this option will significantly increase 
+# the time of a run. So in most cases it will be better to enable caller 
+# graphs for selected functions only using the \callergraph command.
+
+CALLER_GRAPH           = NO
+
 # If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen 
 # will graphical hierarchy of all classes instead of a textual one.
 
 GRAPHICAL_HIERARCHY    = YES
 
+# If the DIRECTORY_GRAPH, SHOW_DIRECTORIES and HAVE_DOT tags are set to YES 
+# then doxygen will show the dependencies a directory has on other directories 
+# in a graphical way. The dependency relations are determined by the #include
+# relations between the files in the directories.
+
+DIRECTORY_GRAPH        = YES
+
+# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images 
+# generated by dot. Possible values are png, jpg, or gif
+# If left blank png will be used.
+
+DOT_IMAGE_FORMAT       = png
+
 # The tag DOT_PATH can be used to specify the path where the dot tool can be 
-# found. If left blank, it is assumed the dot tool can be found on the path.
+# found. If left blank, it is assumed the dot tool can be found in the path.
 
 DOT_PATH               = 
 
-# The MAX_DOT_GRAPH_WIDTH tag can be used to set the maximum allowed width 
-# (in pixels) of the graphs generated by dot. If a graph becomes larger than 
-# this value, doxygen will try to truncate the graph, so that it fits within 
-# the specified constraint. Beware that most browsers cannot cope with very 
-# large images.
+# The DOTFILE_DIRS tag can be used to specify one or more directories that 
+# contain dot files that are included in the documentation (see the 
+# \dotfile command).
+
+DOTFILE_DIRS           = 
 
-MAX_DOT_GRAPH_WIDTH    = 1024
+# The MAX_DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of 
+# nodes that will be shown in the graph. If the number of nodes in a graph 
+# becomes larger than this value, doxygen will truncate the graph, which is 
+# visualized by representing a node as a red box. Note that doxygen if the 
+# number of direct children of the root node in a graph is already larger than 
+# DOT_GRAPH_MAX_NODES then the graph will not be shown at all. Also note 
+# that the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH.
+
+DOT_GRAPH_MAX_NODES    = 50
 
-# The MAX_DOT_GRAPH_HEIGHT tag can be used to set the maximum allows height 
-# (in pixels) of the graphs generated by dot. If a graph becomes larger than 
-# this value, doxygen will try to truncate the graph, so that it fits within 
-# the specified constraint. Beware that most browsers cannot cope with very 
-# large images.
+# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the 
+# graphs generated by dot. A depth value of 3 means that only nodes reachable 
+# from the root by following a path via at most 3 edges will be shown. Nodes 
+# that lay further from the root node will be omitted. Note that setting this 
+# option to 1 or 2 may greatly reduce the computation time needed for large 
+# code bases. Also note that the size of a graph can be further restricted by 
+# DOT_GRAPH_MAX_NODES. Using a depth of 0 means no depth restriction.
+
+MAX_DOT_GRAPH_DEPTH    = 3
 
-MAX_DOT_GRAPH_HEIGHT   = 1024
+# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent 
+# background. This is enabled by default, which results in a transparent 
+# background. Warning: Depending on the platform used, enabling this option 
+# may lead to badly anti-aliased labels on the edges of a graph (i.e. they 
+# become hard to read).
+
+DOT_TRANSPARENT        = YES
+
+# Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output 
+# files in one run (i.e. multiple -o and -T options on the command line). This 
+# makes dot run faster, but since only newer versions of dot (>1.8.10) 
+# support this, this feature is disabled by default.
+
+DOT_MULTI_TARGETS      = NO
 
 # If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will 
 # generate a legend page explaining the meaning of the various boxes and 
 # arrows in the dot generated graphs.
 
 GENERATE_LEGEND        = YES
 
 # If the DOT_CLEANUP tag is set to YES (the default) Doxygen will 
-# remove the intermedate dot files that are used to generate 
+# remove the intermediate dot files that are used to generate 
 # the various graphs.
 
 DOT_CLEANUP            = YES
 
 #---------------------------------------------------------------------------
-# Configuration::addtions related to the search engine   
+# Configuration::additions related to the search engine   
 #---------------------------------------------------------------------------
 
 # The SEARCHENGINE tag specifies whether or not a search engine should be 
 # used. If set to NO the values of all tags below this one will be ignored.
 
 SEARCHENGINE           = NO
-
-# The CGI_NAME tag should be the name of the CGI script that 
-# starts the search engine (doxysearch) with the correct parameters. 
-# A script with this name will be generated by doxygen.
-
-CGI_NAME               = 
-
-# The CGI_URL tag should be the absolute URL to the directory where the 
-# cgi binaries are located. See the documentation of your http daemon for 
-# details.
-
-CGI_URL                = 
-
-# The DOC_URL tag should be the absolute URL to the directory where the 
-# documentation is located. If left blank the absolute path to the 
-# documentation, with file:// prepended to it, will be used.
-
-DOC_URL                = 
-
-# The DOC_ABSPATH tag should be the absolute path to the directory where the 
-# documentation is located. If left blank the directory on the local machine 
-# will be used.
-
-DOC_ABSPATH            = 
-
-# The BIN_ABSPATH tag must point to the directory where the doxysearch binary 
-# is installed.
-
-BIN_ABSPATH            = 
-
-# The EXT_DOC_PATHS tag can be used to specify one or more paths to 
-# documentation generated for other projects. This allows doxysearch to search 
-# the documentation for these projects as well.
-
-EXT_DOC_PATHS          = 
--- a/config/milestone.txt
+++ b/config/milestone.txt
@@ -5,9 +5,9 @@
 #    x.x.x.x
 #    x.x.x+
 #
 # Referenced by milestone.pl.
 # Hopefully I'll be able to automate replacement of *all*
 # hardcoded milestones in the tree from these two files.
 #--------------------------------------------------------
 
-1.9.1a1
+1.9.1a2pre
--- a/config/system-headers
+++ b/config/system-headers
@@ -191,16 +191,17 @@ files.h
 Files.h
 FindDirectory.h
 Finder.h
 FinderRegistry.h
 FixMath.h
 float.h
 Folders.h
 fontconfig/fontconfig.h
+fontconfig/fcfreetype.h
 Font.h
 Fonts.h
 fp.h
 fpieee.h
 frame/log.h
 frame/req.h
 freetype/freetype.h
 freetype/ftcache.h
--- a/configure.in
+++ b/configure.in
@@ -6009,16 +6009,19 @@ dnl ====================================
 MOZ_ARG_ENABLE_BOOL(help-viewer,
 [  --enable-help-viewer        Enable help viewer],
     MOZ_HELP_VIEWER=1,
     MOZ_HELP_VIEWER= )
 if test -n "$MOZ_HELP_VIEWER"; then
      AC_DEFINE(MOZ_HELP_VIEWER)
 fi
 AC_SUBST(MOZ_HELP_VIEWER)
+if test "$MOZ_BUILD_APP" = "browser" -a $MOZ_HELP_VIEWER; then
+    AC_MSG_ERROR([Cannot build Firefox with --enable-help-viewer.])
+fi
 
 dnl ========================================================
 dnl = Enable safe browsing (anti-phishing)
 dnl ========================================================
 MOZ_ARG_ENABLE_BOOL(safe-browsing,
 [  --enable-safe-browsing        Enable safe browsing (anti-phishing) implementation],
     MOZ_SAFE_BROWSING=1,
     MOZ_SAFE_BROWSING= )
--- a/content/base/public/nsIContent.h
+++ b/content/base/public/nsIContent.h
@@ -141,17 +141,17 @@ public:
     return GetCurrentDoc();
   }
 
   /**
    * Get whether this content is C++-generated anonymous content
    * @see nsIAnonymousContentCreator
    * @return whether this content is anonymous
    */
-  PRBool IsNativeAnonymous() const
+  PRBool IsRootOfNativeAnonymousSubtree() const
   {
     return HasFlag(NODE_IS_ANONYMOUS);
   }
 
   /**
    * Makes this content anonymous
    * @see nsIAnonymousContentCreator
    */
@@ -172,29 +172,54 @@ public:
   PRBool IsInNativeAnonymousSubtree() const
   {
 #ifdef DEBUG
     if (HasFlag(NODE_IS_IN_ANONYMOUS_SUBTREE)) {
       return PR_TRUE;
     }
     nsIContent* content = GetBindingParent();
     while (content) {
-      if (content->IsNativeAnonymous()) {
+      if (content->IsRootOfNativeAnonymousSubtree()) {
         NS_ERROR("Element not marked to be in native anonymous subtree!");
         break;
       }
       content = content->GetBindingParent();
     }
     return PR_FALSE;
 #else
     return HasFlag(NODE_IS_IN_ANONYMOUS_SUBTREE);
 #endif
   }
 
   /**
+   * Returns true if and only if this node has a parent, but is not in
+   * its parent's child list.
+   */
+  PRBool IsRootOfAnonymousSubtree() const
+  {
+    NS_ASSERTION(!IsRootOfNativeAnonymousSubtree() ||
+                 (GetParent() && GetBindingParent() == GetParent()),
+                 "root of native anonymous subtree must have parent equal "
+                 "to binding parent");
+    nsIContent *bindingParent = GetBindingParent();
+    return bindingParent && bindingParent == GetParent();
+  }
+
+  /**
+   * Returns true if and only if there is NOT a path through child lists
+   * from the top of this node's parent chain back to this node.
+   */
+  PRBool IsInAnonymousSubtree() const
+  {
+    NS_ASSERTION(!IsInNativeAnonymousSubtree() || GetBindingParent(),
+                 "must have binding parent when in native anonymous subtree");
+    return GetBindingParent() != nsnull;
+  }
+
+  /**
    * Get the namespace that this element's tag is defined in
    * @return the namespace
    */
   PRInt32 GetNameSpaceID() const
   {
     return mNodeInfo->NamespaceID();
   }
 
@@ -558,19 +583,22 @@ public:
       editableAncestor = parent;
     // This is in another editable content, use the result of it.
     if (editableAncestor)
       return editableAncestor->GetDesiredIMEState();
     return IME_STATUS_ENABLE;
   }
 
   /**
-   * Gets content node with the binding responsible for our construction (and
-   * existence).  Used by anonymous content (XBL-generated). null for all
-   * explicit content.
+   * Gets content node with the binding (or native code, possibly on the
+   * frame) responsible for our construction (and existence).  Used by
+   * anonymous content (both XBL-generated and native-anonymous).
+   *
+   * null for all explicit content (i.e., content reachable from the top
+   * of its GetParent() chain via child lists).
    *
    * @return the binding parent
    */
   virtual nsIContent *GetBindingParent() const = 0;
 
   /**
    * Get the base URI for any relative URIs within this piece of
    * content. Generally, this is the document's base URI, but certain
--- a/content/base/src/nsContentUtils.cpp
+++ b/content/base/src/nsContentUtils.cpp
@@ -1885,17 +1885,17 @@ nsContentUtils::GenerateStateKey(nsICont
     KeyAppendInt(aID, aKey);
     return NS_OK;
   }
 
   // We must have content if we're not using a special state id
   NS_ENSURE_TRUE(aContent, NS_ERROR_FAILURE);
 
   // Don't capture state for anonymous content
-  if (aContent->IsNativeAnonymous() || aContent->GetBindingParent()) {
+  if (aContent->IsInAnonymousSubtree()) {
     return NS_OK;
   }
 
   nsCOMPtr<nsIDOMElement> element(do_QueryInterface(aContent));
   if (element && IsAutocompleteOff(element)) {
     return NS_OK;
   }
 
--- a/content/base/src/nsDocument.cpp
+++ b/content/base/src/nsDocument.cpp
@@ -2140,18 +2140,18 @@ nsDocument::ElementFromPoint(PRInt32 aX,
     return NS_OK;
   }
 
   // If we have an anonymous element (such as an internal div from a textbox),
   // or a node that isn't an element (such as a text frame node),
   // replace it with the first non-anonymous parent node of type element.
   while (ptContent &&
          !ptContent->IsNodeOfType(nsINode::eELEMENT) ||
-         ptContent->GetBindingParent() ||
-         ptContent->IsNativeAnonymous()) {
+         ptContent->IsInAnonymousSubtree()) {
+    // XXXldb: Faster to jump to GetBindingParent if non-null?
     ptContent = ptContent->GetParent();
   }
  
   if (ptContent)
     CallQueryInterface(ptContent, aReturn);
   return NS_OK;
 }
 
--- a/content/base/src/nsGenericDOMDataNode.cpp
+++ b/content/base/src/nsGenericDOMDataNode.cpp
@@ -587,36 +587,40 @@ nsGenericDOMDataNode::BindToTree(nsIDocu
   // only assert if our parent is _changing_ while we have a parent.
   NS_PRECONDITION(!GetParent() || aParent == GetParent(),
                   "Already have a parent.  Unbind first!");
   NS_PRECONDITION(!GetBindingParent() ||
                   aBindingParent == GetBindingParent() ||
                   (!aBindingParent && aParent &&
                    aParent->GetBindingParent() == GetBindingParent()),
                   "Already have a binding parent.  Unbind first!");
-  NS_PRECONDITION(aBindingParent != this || IsNativeAnonymous(),
-                  "Only native anonymous content should have itself as its "
+  NS_PRECONDITION(aBindingParent != this,
+                  "Content must not be its own binding parent");
+  NS_PRECONDITION(!IsRootOfNativeAnonymousSubtree() || 
+                  aBindingParent == aParent,
+                  "Native anonymous content must have its parent as its "
                   "own binding parent");
 
   if (!aBindingParent && aParent) {
     aBindingParent = aParent->GetBindingParent();
   }
 
   // First set the binding parent
   if (aBindingParent) {
     nsDataSlots *slots = GetDataSlots();
     NS_ENSURE_TRUE(slots, NS_ERROR_OUT_OF_MEMORY);
 
-    NS_ASSERTION(IsNativeAnonymous() || !HasFlag(NODE_IS_IN_ANONYMOUS_SUBTREE) ||
+    NS_ASSERTION(IsRootOfNativeAnonymousSubtree() ||
+                 !HasFlag(NODE_IS_IN_ANONYMOUS_SUBTREE) ||
                  aBindingParent->IsInNativeAnonymousSubtree(),
                  "Trying to re-bind content from native anonymous subtree to"
                  "non-native anonymous parent!");
     slots->mBindingParent = aBindingParent; // Weak, so no addref happens.
-    if (IsNativeAnonymous() ||
-        aBindingParent->IsInNativeAnonymousSubtree()) {
+    if (IsRootOfNativeAnonymousSubtree() ||
+        aParent->IsInNativeAnonymousSubtree()) {
       SetFlags(NODE_IS_IN_ANONYMOUS_SUBTREE);
     }
   }
 
   // Set parent
   if (aParent) {
     mParentPtrBits =
       reinterpret_cast<PtrBits>(aParent) | PARENT_BIT_PARENT_IS_CONTENT;
@@ -903,62 +907,75 @@ nsGenericDOMDataNode::CreateSlots()
   return new nsDataSlots(mFlagsOrSlots);
 }
 
 //----------------------------------------------------------------------
 
 // Implementation of the nsIDOMText interface
 
 nsresult
-nsGenericDOMDataNode::SplitText(PRUint32 aOffset, nsIDOMText** aReturn)
+nsGenericDOMDataNode::SplitData(PRUint32 aOffset, nsIContent** aReturn,
+                                PRBool aCloneAfterOriginal)
 {
+  *aReturn = nsnull;
   nsresult rv = NS_OK;
   nsAutoString cutText;
   PRUint32 length = TextLength();
 
   if (aOffset > length) {
     return NS_ERROR_DOM_INDEX_SIZE_ERR;
   }
 
-  rv = SubstringData(aOffset, length - aOffset, cutText);
+  PRUint32 cutStartOffset = aCloneAfterOriginal ? aOffset : 0;
+  PRUint32 cutLength = aCloneAfterOriginal ? length - aOffset : aOffset;
+  rv = SubstringData(cutStartOffset, cutLength, cutText);
   if (NS_FAILED(rv)) {
     return rv;
   }
 
-  rv = DeleteData(aOffset, length - aOffset);
+  rv = DeleteData(cutStartOffset, cutLength);
   if (NS_FAILED(rv)) {
     return rv;
   }
 
   /*
    * Use Clone for creating the new node so that the new node is of same class
    * as this node!
    */
 
   nsCOMPtr<nsIContent> newContent = CloneDataNode(mNodeInfo, PR_FALSE);
   if (!newContent) {
     return NS_ERROR_OUT_OF_MEMORY;
   }
 
   newContent->SetText(cutText, PR_TRUE);
 
-  nsIContent* parent = GetParent();
+  nsCOMPtr<nsINode> parent = GetNodeParent();
 
   if (parent) {
-    PRInt32 index = parent->IndexOf(this);
-
-    nsCOMPtr<nsIContent> content(do_QueryInterface(newContent));
-
-    parent->InsertChildAt(content, index+1, PR_TRUE);
+    PRInt32 insertionIndex = parent->IndexOf(this);
+    if (aCloneAfterOriginal) {
+      ++insertionIndex;
+    }
+    parent->InsertChildAt(newContent, insertionIndex, PR_TRUE);
   }
 
-  // No need to handle the case of document being the parent since text
-  // isn't allowed as direct child of documents
+  newContent.swap(*aReturn);
+  return rv;
+}
 
-  return CallQueryInterface(newContent, aReturn);
+nsresult
+nsGenericDOMDataNode::SplitText(PRUint32 aOffset, nsIDOMText** aReturn)
+{
+  nsCOMPtr<nsIContent> newChild;
+  nsresult rv = SplitData(aOffset, getter_AddRefs(newChild));
+  if (NS_SUCCEEDED(rv)) {
+    rv = CallQueryInterface(newChild, aReturn);
+  }
+  return rv;
 }
 
 //----------------------------------------------------------------------
 
 // Implementation of the nsGenericDOMDataNode nsIDOM3Text tearoff
 
 NS_IMPL_CYCLE_COLLECTION_CLASS(nsText3Tearoff)
 
--- a/content/base/src/nsGenericDOMDataNode.h
+++ b/content/base/src/nsGenericDOMDataNode.h
@@ -264,16 +264,19 @@ public:
       return NS_ERROR_OUT_OF_MEMORY;
     }
 
     NS_ADDREF(*aResult);
 
     return NS_OK;
   }
 
+  nsresult SplitData(PRUint32 aOffset, nsIContent** aReturn,
+                     PRBool aCloneAfterOriginal = PR_TRUE);
+
   //----------------------------------------
 
 #ifdef DEBUG
   void ToCString(nsAString& aBuf, PRInt32 aOffset, PRInt32 aLen) const;
 #endif
 
   NS_DECL_CYCLE_COLLECTION_CLASS(nsGenericDOMDataNode)
 
--- a/content/base/src/nsGenericElement.cpp
+++ b/content/base/src/nsGenericElement.cpp
@@ -430,28 +430,25 @@ nsIContent::UpdateEditableState()
 
   SetEditableFlag(parent && parent->HasFlag(NODE_IS_EDITABLE));
 }
 
 nsIContent*
 nsIContent::FindFirstNonNativeAnonymous() const
 {
   // This handles also nested native anonymous content.
-  nsIContent* content = GetBindingParent();
-  nsIContent* possibleResult = 
-    !IsNativeAnonymous() ? const_cast<nsIContent*>(this) : nsnull;
-  while (content) {
-    if (content->IsNativeAnonymous()) {
-      content = possibleResult = content->GetParent();
-    } else {
-      content = content->GetBindingParent();
+  for (const nsIContent *content = this; content;
+       content = content->GetBindingParent()) {
+    if (!content->IsInNativeAnonymousSubtree()) {
+      // Oops, this function signature allows casting const to
+      // non-const.  (Then again, so does GetChildAt(0)->GetParent().)
+      return const_cast<nsIContent*>(content);
     }
   }
-
-  return possibleResult;
+  return nsnull;
 }
 
 //----------------------------------------------------------------------
 
 nsChildContentList::~nsChildContentList()
 {
   MOZ_COUNT_DTOR(nsChildContentList);
 }
@@ -2086,21 +2083,21 @@ nsGenericElement::BindToTree(nsIDocument
   NS_PRECONDITION(!GetBindingParent() ||
                   aBindingParent == GetBindingParent() ||
                   (!aBindingParent && aParent &&
                    aParent->GetBindingParent() == GetBindingParent()),
                   "Already have a binding parent.  Unbind first!");
   NS_PRECONDITION(!aParent || !aDocument ||
                   !aParent->HasFlag(NODE_FORCE_XBL_BINDINGS),
                   "Parent in document but flagged as forcing XBL");
-  NS_PRECONDITION(aBindingParent != this || IsNativeAnonymous(),
-                  "Only native anonymous content should have itself as its "
-                  "own binding parent");
-  NS_PRECONDITION(!IsNativeAnonymous() || aBindingParent == this,
-                  "Native anonymous content must have itself as its "
+  NS_PRECONDITION(aBindingParent != this,
+                  "Content must not be its own binding parent");
+  NS_PRECONDITION(!IsRootOfNativeAnonymousSubtree() ||
+                  aBindingParent == aParent,
+                  "Native anonymous content must have its parent as its "
                   "own binding parent");
 
   if (!aBindingParent && aParent) {
     aBindingParent = aParent->GetBindingParent();
   }
 
 #ifdef MOZ_XUL
   // First set the binding parent
@@ -2116,23 +2113,23 @@ nsGenericElement::BindToTree(nsIDocument
 
       if (!slots) {
         return NS_ERROR_OUT_OF_MEMORY;
       }
 
       slots->mBindingParent = aBindingParent; // Weak, so no addref happens.
     }
   }
-  NS_ASSERTION(!aBindingParent || IsNativeAnonymous() ||
+  NS_ASSERTION(!aBindingParent || IsRootOfNativeAnonymousSubtree() ||
                !HasFlag(NODE_IS_IN_ANONYMOUS_SUBTREE) ||
                aBindingParent->IsInNativeAnonymousSubtree(),
                "Trying to re-bind content from native anonymous subtree to"
                "non-native anonymous parent!");
-  if (IsNativeAnonymous() ||
-      aBindingParent && aBindingParent->IsInNativeAnonymousSubtree()) {
+  if (IsRootOfNativeAnonymousSubtree() ||
+      aParent && aParent->IsInNativeAnonymousSubtree()) {
     SetFlags(NODE_IS_IN_ANONYMOUS_SUBTREE);
   }
 
   PRBool hadForceXBL = HasFlag(NODE_FORCE_XBL_BINDINGS);
 
   // Now set the parent and set the "Force attach xbl" flag if needed.
   if (aParent) {
     mParentPtrBits = reinterpret_cast<PtrBits>(aParent) | PARENT_BIT_PARENT_IS_CONTENT;
@@ -2297,33 +2294,33 @@ nsGenericElement::PreHandleEvent(nsEvent
 }
 
 static nsIContent*
 FindNativeAnonymousSubtreeOwner(nsIContent* aContent)
 {
   if (aContent->IsInNativeAnonymousSubtree()) {
     PRBool isNativeAnon = PR_FALSE;
     while (aContent && !isNativeAnon) {
-      isNativeAnon = aContent->IsNativeAnonymous();
+      isNativeAnon = aContent->IsRootOfNativeAnonymousSubtree();
       aContent = aContent->GetParent();
     }
   }
   return aContent;
 }
 
 nsresult
 nsGenericElement::doPreHandleEvent(nsIContent* aContent,
                                    nsEventChainPreVisitor& aVisitor)
 {
   //FIXME! Document how this event retargeting works, Bug 329124.
   aVisitor.mCanHandle = PR_TRUE;
 
   // Don't propagate mouseover and mouseout events when mouse is moving
   // inside native anonymous content.
-  PRBool isAnonForEvents = aContent->IsNativeAnonymous();
+  PRBool isAnonForEvents = aContent->IsRootOfNativeAnonymousSubtree();
   if ((aVisitor.mEvent->message == NS_MOUSE_ENTER_SYNTH ||
        aVisitor.mEvent->message == NS_MOUSE_EXIT_SYNTH) &&
       // This is an optimization - try to stop event propagation when
       // event has just possibly been retargeted.
       static_cast<nsISupports*>(aContent) == aVisitor.mEvent->target) {
      nsCOMPtr<nsIContent> relatedTarget =
        do_QueryInterface(static_cast<nsMouseEvent*>
                                     (aVisitor.mEvent)->relatedTarget);
--- a/content/base/src/nsRange.cpp
+++ b/content/base/src/nsRange.cpp
@@ -51,16 +51,17 @@
 #include "nsIContent.h"
 #include "nsIDocument.h"
 #include "nsIDOMText.h"
 #include "nsDOMError.h"
 #include "nsIContentIterator.h"
 #include "nsIDOMNodeList.h"
 #include "nsGkAtoms.h"
 #include "nsContentUtils.h"
+#include "nsGenericDOMDataNode.h"
 
 nsresult NS_NewContentIterator(nsIContentIterator** aInstancePtrResult);
 nsresult NS_NewContentSubtreeIterator(nsIContentIterator** aInstancePtrResult);
 
 /******************************************************
  * stack based utilty class for managing monitor
  ******************************************************/
 
@@ -1093,49 +1094,120 @@ CollapseRangeAfterDelete(nsIDOMRange *aR
     return NS_ERROR_FAILURE; // This should never happen!
 
   res = aRange->SelectNode(nodeToSelect);
   if (NS_FAILED(res)) return res;
 
   return aRange->Collapse(PR_FALSE);
 }
 
-nsresult nsRange::DeleteContents()
+/**
+ * Remove a node from the DOM entirely.
+ *
+ * @param aNode The node to remove.
+ */
+static nsresult
+RemoveNode(nsIDOMNode* aNode)
+{
+  nsCOMPtr<nsINode> node = do_QueryInterface(aNode);
+  nsCOMPtr<nsINode> parent = node->GetNodeParent();
+  return parent ? parent->RemoveChildAt(parent->IndexOf(node), PR_TRUE) : NS_OK;
+}
+
+/**
+ * Split a data node into two or three parts.
+ *
+ * @param aStartNode          The original node we are trying to split,
+ *                            and first of three.
+ * @param aStartIndex         The index at which to split the first and second
+ *                            parts.
+ * @param aEndIndex           The index at which to split the second and third
+ *                            parts.
+ * @param aMiddleNode         The second node of three.
+ * @param aEndNode            The third node of three.  May be null to indicate
+ *                            aEndIndex doesn't apply.
+ * @param aCloneAfterOriginal Set PR_FALSE if the original node should be the
+ *                            latter one after split.
+ */
+static nsresult SplitDataNode(nsIDOMCharacterData* aStartNode,
+                              PRUint32 aStartIndex,
+                              PRUint32 aEndIndex,
+                              nsIDOMCharacterData** aMiddleNode,
+                              nsIDOMCharacterData** aEndNode,
+                              PRBool aCloneAfterOriginal = PR_TRUE)
+{
+  nsresult rv;
+  nsCOMPtr<nsINode> node = do_QueryInterface(aStartNode);
+  NS_ENSURE_STATE(node && node->IsNodeOfType(nsINode::eDATA_NODE));
+  nsGenericDOMDataNode* dataNode = static_cast<nsGenericDOMDataNode*>(node.get());
+  // Split the main node, starting with the end.
+  if (aEndNode && aEndIndex > aStartIndex) {
+    nsCOMPtr<nsIContent> newData;
+    rv = dataNode->SplitData(aEndIndex, getter_AddRefs(newData),
+                             aCloneAfterOriginal);
+    NS_ENSURE_SUCCESS(rv, rv);
+    rv = CallQueryInterface(newData, aEndNode);
+    NS_ENSURE_SUCCESS(rv, rv);
+  }
+
+  nsCOMPtr<nsIContent> newData;
+  rv = dataNode->SplitData(aStartIndex, getter_AddRefs(newData),
+                           aCloneAfterOriginal);
+  NS_ENSURE_SUCCESS(rv, rv);
+  return CallQueryInterface(newData, aMiddleNode);
+}
+
+nsresult nsRange::CutContents(nsIDOMDocumentFragment** aFragment)
 { 
-  if(IsDetached())
+  if (IsDetached())
     return NS_ERROR_DOM_INVALID_STATE_ERR;
 
+  nsresult rv;
+
+  nsCOMPtr<nsIDocument> doc =
+    do_QueryInterface(mStartParent->GetOwnerDoc());
+  if (!doc) return NS_ERROR_UNEXPECTED;
+
+  // If aFragment isn't null, create a temporary fragment to hold our return.
+  nsCOMPtr<nsIDOMDocumentFragment> retval;
+  if (aFragment) {
+    rv = NS_NewDocumentFragment(getter_AddRefs(retval),
+                                doc->NodeInfoManager());
+    NS_ENSURE_SUCCESS(rv, rv);
+  }
+
   // Batch possible DOMSubtreeModified events.
   mozAutoSubtreeModified subtree(mRoot ? mRoot->GetOwnerDoc(): nsnull, nsnull);
 
   // Save the range end points locally to avoid interference
   // of Range gravity during our edits!
 
   nsCOMPtr<nsIDOMNode> startContainer = do_QueryInterface(mStartParent);
   PRInt32              startOffset = mStartOffset;
   nsCOMPtr<nsIDOMNode> endContainer = do_QueryInterface(mEndParent);
   PRInt32              endOffset = mEndOffset;
 
   // Create and initialize a subtree iterator that will give
   // us all the subtrees within the range.
 
   RangeSubtreeIterator iter;
 
-  nsresult res = iter.Init(this);
-  if (NS_FAILED(res)) return res;
+  rv = iter.Init(this);
+  if (NS_FAILED(rv)) return rv;
 
   if (iter.IsDone())
   {
     // There's nothing for us to delete.
     return CollapseRangeAfterDelete(this);
   }
 
   // We delete backwards to avoid iterator problems!
 
   iter.Last();
+  nsCOMPtr<nsIDOMNode> lastFragmentNode = nsnull;
 
   PRBool handled = PR_FALSE;
 
   // With the exception of text nodes that contain one of the range
   // end points, the subtree iterator should only give us back subtrees
   // that are completely contained between the range's end points.
 
   while (!iter.IsDone())
@@ -1161,86 +1233,151 @@ nsresult nsRange::DeleteContents()
     {
       PRUint32 dataLength = 0;
 
       if (node == startContainer)
       {
         if (node == endContainer)
         {
           // This range is completely contained within a single text node.
-          // Delete the data between startOffset and endOffset.
+          // Delete or extract the data between startOffset and endOffset.
 
           if (endOffset > startOffset)
           {
-            res = charData->DeleteData(startOffset, endOffset - startOffset);
-            if (NS_FAILED(res)) return res;
+            nsCOMPtr<nsIDOMCharacterData> cutNode;
+            nsCOMPtr<nsIDOMCharacterData> endNode;
+            rv = SplitDataNode(charData, startOffset, endOffset,
+                               getter_AddRefs(cutNode),
+                               getter_AddRefs(endNode));
+            NS_ENSURE_SUCCESS(rv, rv);
+            nsCOMPtr<nsIDOMNode> returnedNode;
+
+            if (retval) {
+              // Add to fragment.
+              rv = retval->InsertBefore(cutNode, lastFragmentNode,
+                                        getter_AddRefs(returnedNode));
+              NS_ENSURE_SUCCESS(rv, rv);
+              lastFragmentNode = returnedNode;
+            } else {
+              rv = RemoveNode(cutNode);
+              NS_ENSURE_SUCCESS(rv, rv);
+            }
           }
 
           handled = PR_TRUE;
         }
         else
         {
-          // Delete everything after startOffset.
+          // Delete or extract everything after startOffset.
 
-          res = charData->GetLength(&dataLength);
-          if (NS_FAILED(res)) return res;
+          rv = charData->GetLength(&dataLength);
+          NS_ENSURE_SUCCESS(rv, rv);
 
           if (dataLength > (PRUint32)startOffset)
           {
-            res = charData->DeleteData(startOffset, dataLength - startOffset);
-            if (NS_FAILED(res)) return res;
+            nsCOMPtr<nsIDOMCharacterData> cutNode;
+            rv = SplitDataNode(charData, startOffset, dataLength,
+                               getter_AddRefs(cutNode), nsnull);
+            NS_ENSURE_SUCCESS(rv, rv);
+
+            if (retval) {
+              // Add to fragment.
+              nsCOMPtr<nsIDOMNode> returnedNode;
+              rv = retval->InsertBefore(cutNode, lastFragmentNode,
+                                        getter_AddRefs(returnedNode));
+              NS_ENSURE_SUCCESS(rv, rv);
+              lastFragmentNode = returnedNode;
+            } else {
+              rv = RemoveNode(cutNode);
+              NS_ENSURE_SUCCESS(rv, rv);
+            }
           }
 
           handled = PR_TRUE;
         }
       }
       else if (node == endContainer)
       {
-        // Delete the data between 0 and endOffset.
+        // Delete or extract everything before endOffset.
 
         if (endOffset > 0)
         {
-          res = charData->DeleteData(0, endOffset);
-          if (NS_FAILED(res)) return res;
+          nsCOMPtr<nsIDOMCharacterData> cutNode;
+          /* The Range spec clearly states clones get cut and original nodes
+             remain behind, so use PR_FALSE as the last parameter.
+          */
+          rv = SplitDataNode(charData, endOffset, endOffset,
+                             getter_AddRefs(cutNode), nsnull, PR_FALSE);
+          NS_ENSURE_SUCCESS(rv, rv);
+
+          if (retval) {
+            // Add to fragment.
+            nsCOMPtr<nsIDOMNode> aReturnedNode;
+            rv = retval->InsertBefore(cutNode, lastFragmentNode,
+                                      getter_AddRefs(aReturnedNode));
+            NS_ENSURE_SUCCESS(rv, rv);
+            lastFragmentNode = aReturnedNode;
+          } else {
+            rv = RemoveNode(cutNode);
+            NS_ENSURE_SUCCESS(rv, rv);
+          }
         }
 
         handled = PR_TRUE;
       }       
     }
 
     if (!handled)
     {
       // node was not handled above, so it must be completely contained
       // within the range. Just remove it from the tree!
-
-      nsCOMPtr<nsIDOMNode> parent, tmpNode;
-
-      node->GetParentNode(getter_AddRefs(parent));
-
-      if (parent) {
-        res = parent->RemoveChild(node, getter_AddRefs(tmpNode));
-        if (NS_FAILED(res)) return res;
+      if (retval) {
+        // Add to fragment.
+        nsCOMPtr<nsIDOMNode> aReturnedNode;
+        rv = retval->InsertBefore(node, lastFragmentNode,
+                                  getter_AddRefs(aReturnedNode));
+        if (NS_FAILED(rv)) return rv;
+        lastFragmentNode = aReturnedNode;
+      } else {
+        rv = RemoveNode(node);
+        if (NS_FAILED(rv)) return rv;
       }
     }
   }
 
   // XXX_kin: At this point we should be checking for the case
   // XXX_kin: where we have 2 adjacent text nodes left, each
   // XXX_kin: containing one of the range end points. The spec
   // XXX_kin: says the 2 nodes should be merged in that case,
   // XXX_kin: and to use Normalize() to do the merging, but
   // XXX_kin: calling Normalize() on the common parent to accomplish
   // XXX_kin: this might also normalize nodes that are outside the
   // XXX_kin: range but under the common parent. Need to verify
   // XXX_kin: with the range commitee members that this was the
   // XXX_kin: desired behavior. For now we don't merge anything!
+  // XXX ajvincent Filed as https://bugzilla.mozilla.org/show_bug.cgi?id=401276
+
+  if (aFragment) {
+    NS_ADDREF(*aFragment = retval);
+  }
 
   return CollapseRangeAfterDelete(this);
 }
 
+nsresult nsRange::DeleteContents()
+{
+  return CutContents(nsnull);
+}
+
+nsresult nsRange::ExtractContents(nsIDOMDocumentFragment** aReturn)
+{
+  NS_ENSURE_ARG_POINTER(aReturn);
+  return CutContents(aReturn);
+}
+
 NS_IMETHODIMP
 nsRange::CompareBoundaryPoints(PRUint16 aHow, nsIDOMRange* aOtherRange,
                                PRInt16* aCmpRet)
 {
   nsCOMPtr<nsIRange> otherRange = do_QueryInterface(aOtherRange);
   NS_ENSURE_TRUE(otherRange, NS_ERROR_NULL_POINTER);
 
   if(mIsDetached || otherRange->IsDetached())
@@ -1285,36 +1422,17 @@ nsRange::CompareBoundaryPoints(PRUint16 
     return NS_ERROR_DOM_WRONG_DOCUMENT_ERR;
 
   *aCmpRet = nsContentUtils::ComparePoints(ourNode, ourOffset,
                                            otherNode, otherOffset);
 
   return NS_OK;
 }
 
-nsresult nsRange::ExtractContents(nsIDOMDocumentFragment** aReturn)
-{ 
-  if(mIsDetached)
-    return NS_ERROR_DOM_INVALID_STATE_ERR;
 
-  // Batch possible DOMSubtreeModified events.
-  mozAutoSubtreeModified subtree(mRoot ? mRoot->GetOwnerDoc(): nsnull, nsnull);
-
-  // XXX_kin: The spec says that nodes that are completely in the
-  // XXX_kin: range should be moved into the document fragment, not
-  // XXX_kin: copied. This method will have to be rewritten using
-  // XXX_kin: DeleteContents() as a template, with the charData cloning
-  // XXX_kin: code from CloneContents() merged in.
-
-  nsresult res = CloneContents(aReturn);
-  if (NS_FAILED(res))
-    return res;
-  res = DeleteContents();
-  return res; 
-}
 
 static nsresult
 CloneParentsBetween(nsIDOMNode *aAncestor,
                     nsIDOMNode *aNode,
                     nsIDOMNode **aClosestAncestor,
                     nsIDOMNode **aFarthestAncestor)
 {
   NS_ENSURE_ARG_POINTER((aAncestor && aNode && aClosestAncestor && aFarthestAncestor));
--- a/content/base/src/nsRange.h
+++ b/content/base/src/nsRange.h
@@ -114,16 +114,25 @@ public:
 
 private:
   // no copy's or assigns
   nsRange(const nsRange&);
   nsRange& operator=(const nsRange&);
 
   nsINode* IsValidBoundary(nsINode* aNode);
  
+  /**
+   * Cut or delete the range's contents.
+   *
+   * @param aFragment nsIDOMDocumentFragment containing the nodes.
+   *                  May be null to indicate the caller doesn't want a fragment.
+   */
+  nsresult CutContents(nsIDOMDocumentFragment** frag);
+
+
 public:
 /******************************************************************************
  *  Utility routine to detect if a content node starts before a range and/or 
  *  ends after a range.  If neither it is contained inside the range.
  *  
  *  XXX - callers responsibility to ensure node in same doc as range!
  *
  *****************************************************************************/
--- a/content/base/test/file_bug416317.xhtml
+++ b/content/base/test/file_bug416317.xhtml
@@ -254,42 +254,42 @@
       undefined,
     ];
 
     interfaceCheck(root, "Element");
     runTest( css, "Element", root, true );
     check( "Inside Element", root, true, false );
     cacheCheck( "Element", root );
     check( "Outside Element", root2, passed === 0 ? "autofail" : false, false );
-    runTest( ecss, "Syntax Error: Element", root, false );
+    runTest( ecss, "SyntaxError: Element", root, false );
     jqTests("Element", root3, "querySelectorAll");
 
     var root4 = root2.cloneNode(true);
     interfaceCheck(root4, "Disconnected Element");
     runTest( css, "Disconnected Element", root4, true );
     check( "Disconnected Element", root4, true, true );
     cacheCheck( "Disconnected Element", root4 );
-    runTest( ecss, "Syntax Error: Disconnected Element", root4, false );
+    runTest( ecss, "SyntaxError: Disconnected Element", root4, false );
     jqTests("Disconnected Element", root3.cloneNode(true), "querySelectorAll");
 
     var fragment = document.createDocumentFragment();
     fragment.appendChild( root2.cloneNode(true) );
 
     interfaceCheck(fragment, "Fragment");
     runTest( css, "Fragment", fragment, true );
     check( "Fragment", fragment, true, true );
-    runTest( ecss, "Syntax Error: Fragment", fragment, false );
+    runTest( ecss, "SyntaxError: Fragment", fragment, false );
     cacheCheck( "Fragment", fragment );
 
     root.parentNode.removeChild( root );
     
     interfaceCheck(document, "Document");
     runTest( css, "Document", document, true );
     check( "Document", document, true, false );
-    runTest( ecss, "Syntax Error: Document", document, false );
+    runTest( ecss, "SyntaxError: Document", document, false );
     jqTests("Document", document, "querySelectorAll");
     cacheCheck( "Document", document );
     
     done();
 
     function interfaceCheck(obj, type){
       var q = typeof obj.querySelector === "function";
       assert( q, type + " supports querySelector" );
--- a/content/canvas/src/Makefile.in
+++ b/content/canvas/src/Makefile.in
@@ -58,17 +58,16 @@ REQUIRES	= \
 		unicharutil \
 		webshell \
 		necko \
 		pref \
 		docshell \
 		xpconnect \
 		caps \
 		imglib2 \
-		cairo \
 		thebes \
 		view \
 		$(NULL)
 
 # XXX some platforms can't handle building
 # an empty .a/lib.  Remove this dummy.cpp
 # whenever w have a rendering context
 # that doesn't depend on any non-default
--- a/content/canvas/src/nsCanvasRenderingContext2D.cpp
+++ b/content/canvas/src/nsCanvasRenderingContext2D.cpp
@@ -90,17 +90,16 @@
 #include "nsIDocShellTreeItem.h"
 #include "nsIDocShellTreeNode.h"
 #include "nsIXPConnect.h"
 #include "jsapi.h"
 #include "jsnum.h"
 
 #include "nsTArray.h"
 
-#include "cairo.h"
 #include "imgIEncoder.h"
 
 #include "gfxContext.h"
 #include "gfxASurface.h"
 #include "gfxImageSurface.h"
 #include "gfxPlatform.h"
 #include "gfxFont.h"
 #include "gfxTextRunCache.h"
@@ -162,28 +161,23 @@ static PRBool FloatValidate (double f1, 
  **/
 #define NS_CANVASGRADIENT_PRIVATE_IID \
     { 0x491d39d8, 0x4058, 0x42bd, { 0xac, 0x76, 0x70, 0xd5, 0x62, 0x7f, 0x02, 0x10 } }
 class nsCanvasGradient : public nsIDOMCanvasGradient
 {
 public:
     NS_DECLARE_STATIC_IID_ACCESSOR(NS_CANVASGRADIENT_PRIVATE_IID)
 
-    nsCanvasGradient(cairo_pattern_t *cpat, nsICSSParser *cssparser)
-        : mPattern(cpat), mCSSParser(cssparser)
+    nsCanvasGradient(gfxPattern* pat, nsICSSParser* cssparser)
+        : mPattern(pat), mCSSParser(cssparser)
     {
     }
 
-    ~nsCanvasGradient() {
-        if (mPattern)
-            cairo_pattern_destroy(mPattern);
-    }
-
-    void Apply(cairo_t *cairo) {
-        cairo_set_source(cairo, mPattern);
+    void Apply(gfxContext* ctx) {
+        ctx->SetPattern(mPattern);
     }
 
     /* nsIDOMCanvasGradient */
     NS_IMETHOD AddColorStop (float offset,
                              const nsAString& colorstr)
     {
         nscolor color;
 
@@ -192,28 +186,25 @@ public:
 
         if (offset < 0.0 || offset > 1.0)
             return NS_ERROR_DOM_INDEX_SIZE_ERR;
 
         nsresult rv = mCSSParser->ParseColorString(nsString(colorstr), nsnull, 0, &color);
         if (NS_FAILED(rv))
             return NS_ERROR_DOM_SYNTAX_ERR;
 
-        cairo_pattern_add_color_stop_rgba (mPattern, (double) offset,
-                                           NS_GET_R(color) / 255.0,
-                                           NS_GET_G(color) / 255.0,
-                                           NS_GET_B(color) / 255.0,
-                                           NS_GET_A(color) / 255.0);
+        mPattern->AddColorStop(offset, gfxRGBA(color));
+
         return NS_OK;
     }
 
     NS_DECL_ISUPPORTS
 
 protected:
-    cairo_pattern_t *mPattern;
+    nsRefPtr<gfxPattern> mPattern;
     nsCOMPtr<nsICSSParser> mCSSParser;
 };
 
 NS_DEFINE_STATIC_IID_ACCESSOR(nsCanvasGradient, NS_CANVASGRADIENT_PRIVATE_IID)
 
 NS_IMPL_ADDREF(nsCanvasGradient)
 NS_IMPL_RELEASE(nsCanvasGradient)
 
@@ -229,43 +220,37 @@ NS_INTERFACE_MAP_END
  **/
 #define NS_CANVASPATTERN_PRIVATE_IID \
     { 0xb85c6c8a, 0x0624, 0x4530, { 0xb8, 0xee, 0xff, 0xdf, 0x42, 0xe8, 0x21, 0x6d } }
 class nsCanvasPattern : public nsIDOMCanvasPattern
 {
 public:
     NS_DECLARE_STATIC_IID_ACCESSOR(NS_CANVASPATTERN_PRIVATE_IID)
 
-    nsCanvasPattern(cairo_pattern_t *cpat,
+    nsCanvasPattern(gfxPattern* pat,
                     nsIPrincipal* principalForSecurityCheck,
                     PRBool forceWriteOnly)
-        : mPattern(cpat),
+        : mPattern(pat),
           mPrincipal(principalForSecurityCheck),
           mForceWriteOnly(forceWriteOnly)
     {
         NS_PRECONDITION(mPrincipal, "Must have a principal");
     }
 
-    ~nsCanvasPattern() {
-        if (mPattern)
-            cairo_pattern_destroy(mPattern);
-    }
-
-    void Apply(cairo_t *cairo) {
-        cairo_set_source(cairo, mPattern);
+    void Apply(gfxContext* ctx) {
+        ctx->SetPattern(mPattern);
     }
     
     nsIPrincipal* Principal() { return mPrincipal; }
     PRBool GetForceWriteOnly() { return mForceWriteOnly; }
 
     NS_DECL_ISUPPORTS
 
 protected:
-    cairo_pattern_t *mPattern;
-    PRUint8 *mData;
+    nsRefPtr<gfxPattern> mPattern;
     nsCOMPtr<nsIPrincipal> mPrincipal;
     PRPackedBool mForceWriteOnly;
 };
 
 NS_DEFINE_STATIC_IID_ACCESSOR(nsCanvasPattern, NS_CANVASPATTERN_PRIVATE_IID)
 
 NS_IMPL_ADDREF(nsCanvasPattern)
 NS_IMPL_RELEASE(nsCanvasPattern)
@@ -323,17 +308,17 @@ class nsCanvasRenderingContext2D :
     public nsIDOMCanvasRenderingContext2D,
     public nsICanvasRenderingContextInternal
 {
 public:
     nsCanvasRenderingContext2D();
     virtual ~nsCanvasRenderingContext2D();
 
     nsresult Redraw();
-    void SetCairoColor(nscolor c);
+    void SetThebesColor(nscolor c);
 
     // nsICanvasRenderingContextInternal
     NS_IMETHOD SetCanvasElement(nsICanvasElement* aParentCanvas);
     NS_IMETHOD SetDimensions(PRInt32 width, PRInt32 height);
     NS_IMETHOD Render(gfxContext *ctx);
     NS_IMETHOD GetInputStream(const char* aMimeType,
                               const PRUnichar* aEncoderOptions,
                               nsIInputStream **aStream);
@@ -342,35 +327,32 @@ public:
 
     // nsISupports interface
     NS_DECL_ISUPPORTS
 
     // nsIDOMCanvasRenderingContext2D interface
     NS_DECL_NSIDOMCANVASRENDERINGCONTEXT2D
 
 protected:
-    // destroy cairo/image stuff, in preparation for possibly recreating
+    // destroy thebes/image stuff, in preparation for possibly recreating
     void Destroy();
 
     // Some helpers.  Doesn't modify acolor on failure.
-    enum {
+    enum Style {
         STYLE_STROKE = 0,
         STYLE_FILL,
-        STYLE_SHADOW
-        //STYLE_MAX
+        STYLE_SHADOW,
+        STYLE_MAX
     };
 
-    // VC6 sucks
-#define STYLE_MAX 3
-
-    nsresult SetStyleFromVariant(nsIVariant* aStyle, PRInt32 aWhichStyle);
+    nsresult SetStyleFromVariant(nsIVariant* aStyle, Style aWhichStyle);
     void StyleColorToString(const nscolor& aColor, nsAString& aStr);
 
     void DirtyAllStyles();
-    void ApplyStyle(PRInt32 aWhichStyle);
+    void ApplyStyle(Style aWhichStyle);
     
     // If aPrincipal is not subsumed by this canvas element, then
     // we make the canvas write-only so bad guys can't extract the pixel
     // data.  If forceWriteOnly is set, we force write only to be set
     // and ignore aPrincipal.  (This is used for when the original data came
     // from a <canvas> that had write-only set.)
     void DoDrawImageSecurityCheck(nsIPrincipal* aPrincipal,
                                   PRBool forceWriteOnly);
@@ -382,23 +364,26 @@ protected:
 
     // the canvas element informs us when it's going away,
     // so these are not nsCOMPtrs
     nsICanvasElement* mCanvasElement;
 
     // our CSS parser, for colors and whatnot
     nsCOMPtr<nsICSSParser> mCSSParser;
 
-    // yay cairo
-    nsRefPtr<gfxContext> mThebesContext;
-    nsRefPtr<gfxASurface> mThebesSurface;
+    // yay thebes
+    nsRefPtr<gfxContext> mThebes;
+    nsRefPtr<gfxASurface> mSurface;
 
     PRUint32 mSaveCount;
-    cairo_t *mCairo;
-    cairo_surface_t *mSurface;
+
+    /**
+     * Draws a rectangle in the given style; used by FillRect and StrokeRect.
+     */
+    nsresult DrawRect(const gfxRect& rect, Style style);
 
     // text
     enum TextAlign {
         TEXT_ALIGN_START,
         TEXT_ALIGN_END,
         TEXT_ALIGN_LEFT,
         TEXT_ALIGN_RIGHT,
         TEXT_ALIGN_CENTER
@@ -428,17 +413,21 @@ protected:
     nsresult DrawOrMeasureText(const nsAString& text,
                                float x,
                                float y,
                                float maxWidth,
                                TextDrawOperation op,
                                float* aWidth);
  
     // style handling
-    PRInt32 mLastStyle;
+    /*
+     * The previous set style. Is equal to STYLE_MAX when there is no valid
+     * previous style.
+     */
+    Style mLastStyle;
     PRPackedBool mDirtyStyle[STYLE_MAX];
 
     // state stack handling
     class ContextState {
     public:
         ContextState() : globalAlpha(1.0),
                          textAlign(TEXT_ALIGN_START),
                          textBaseline(TEXT_BASELINE_ALPHABETIC) { }
@@ -452,28 +441,28 @@ protected:
         {
             for (int i = 0; i < STYLE_MAX; i++) {
                 colorStyles[i] = other.colorStyles[i];
                 gradientStyles[i] = other.gradientStyles[i];
                 patternStyles[i] = other.patternStyles[i];
             }
         }
 
-        inline void SetColorStyle(int whichStyle, nscolor color) {
+        inline void SetColorStyle(Style whichStyle, nscolor color) {
             colorStyles[whichStyle] = color;
             gradientStyles[whichStyle] = nsnull;
             patternStyles[whichStyle] = nsnull;
         }
 
-        inline void SetPatternStyle(int whichStyle, nsCanvasPattern* pat) {
+        inline void SetPatternStyle(Style whichStyle, nsCanvasPattern* pat) {
             gradientStyles[whichStyle] = nsnull;
             patternStyles[whichStyle] = pat;
         }
 
-        inline void SetGradientStyle(int whichStyle, nsCanvasGradient* grad) {
+        inline void SetGradientStyle(Style whichStyle, nsCanvasGradient* grad) {
             gradientStyles[whichStyle] = grad;
             patternStyles[whichStyle] = nsnull;
         }
 
         float globalAlpha;
 
         nsString font;
         nsRefPtr<gfxFontGroup> fontGroup;
@@ -494,23 +483,23 @@ protected:
     // stolen from nsJSUtils
     static PRBool ConvertJSValToUint32(PRUint32* aProp, JSContext* aContext,
                                        jsval aValue);
     static PRBool ConvertJSValToXPCObject(nsISupports** aSupports, REFNSIID aIID,
                                           JSContext* aContext, jsval aValue);
     static PRBool ConvertJSValToDouble(double* aProp, JSContext* aContext,
                                        jsval aValue);
 
-    // cairo helpers
-    nsresult CairoSurfaceFromElement(nsIDOMElement *imgElt,
-                                     PRBool forceCopy,
-                                     cairo_surface_t **aCairoSurface,
-                                     PRInt32 *widthOut, PRInt32 *heightOut,
-                                     nsIPrincipal **prinOut,
-                                     PRBool *forceWriteOnlyOut);
+    // thebes helpers
+    nsresult ThebesSurfaceFromElement(nsIDOMElement *imgElt,
+                                      PRBool forceCopy,
+                                      gfxASurface **aSurface,
+                                      PRInt32 *widthOut, PRInt32 *heightOut,
+                                      nsIPrincipal **prinOut,
+                                      PRBool *forceWriteOnlyOut);
 
     // other helpers
     void GetAppUnitsValues(PRUint32 *perDevPixel, PRUint32 *perCSSPixel) {
         // If we don't have a canvas element, we just return something generic.
         PRUint32 devPixel = 60;
         PRUint32 cssPixel = 60;
 
         nsCOMPtr<nsINode> elem = do_QueryInterface(mCanvasElement);
@@ -547,49 +536,45 @@ NS_INTERFACE_MAP_END
 
 /**
  ** CanvasRenderingContext2D impl
  **/
 
 nsresult
 NS_NewCanvasRenderingContext2D(nsIDOMCanvasRenderingContext2D** aResult)
 {
-    nsIDOMCanvasRenderingContext2D* ctx = new nsCanvasRenderingContext2D();
+    nsRefPtr<nsIDOMCanvasRenderingContext2D> ctx = new nsCanvasRenderingContext2D();
     if (!ctx)
         return NS_ERROR_OUT_OF_MEMORY;
 
-    NS_ADDREF(*aResult = ctx);
+    *aResult = ctx.forget().get();
     return NS_OK;
 }
 
 nsCanvasRenderingContext2D::nsCanvasRenderingContext2D()
     : mValid(PR_FALSE), mOpaque(PR_FALSE), mCanvasElement(nsnull),
-      mSaveCount(0), mCairo(nsnull), mSurface(nsnull), mStyleStack(20)
+      mSaveCount(0), mStyleStack(20)
 {
 }
 
 nsCanvasRenderingContext2D::~nsCanvasRenderingContext2D()
 {
     Destroy();
 }
 
 void
 nsCanvasRenderingContext2D::Destroy()
 {
     mSurface = nsnull;
-    mThebesSurface = nsnull;
-
-    mCairo = nsnull;
-    mThebesContext = nsnull;
-
+    mThebes = nsnull;
     mValid = PR_FALSE;
 }
 
 nsresult
-nsCanvasRenderingContext2D::SetStyleFromVariant(nsIVariant* aStyle, PRInt32 aWhichStyle)
+nsCanvasRenderingContext2D::SetStyleFromVariant(nsIVariant* aStyle, Style aWhichStyle)
 {
     nsresult rv;
     nscolor color;
 
     PRUint16 paramType;
     rv = aStyle->GetDataType(&paramType);
     NS_ENSURE_SUCCESS(rv, rv);
 
@@ -710,17 +695,17 @@ nsCanvasRenderingContext2D::DoDrawImageS
             return;
         }
     }
     
     mCanvasElement->SetWriteOnly();
 }
 
 void
-nsCanvasRenderingContext2D::ApplyStyle(PRInt32 aWhichStyle)
+nsCanvasRenderingContext2D::ApplyStyle(Style aWhichStyle)
 {
     if (mLastStyle == aWhichStyle &&
         !mDirtyStyle[aWhichStyle])
     {
         // nothing to do, this is already the set style
         return;
     }
 
@@ -729,107 +714,102 @@ nsCanvasRenderingContext2D::ApplyStyle(P
 
     nsCanvasPattern* pattern = CurrentState().patternStyles[aWhichStyle];
     if (pattern) {
         if (!mCanvasElement)
             return;
 
         DoDrawImageSecurityCheck(pattern->Principal(),
                                  pattern->GetForceWriteOnly());
-        pattern->Apply(mCairo);
+        pattern->Apply(mThebes);
         return;
     }
 
     if (CurrentState().gradientStyles[aWhichStyle]) {
-        CurrentState().gradientStyles[aWhichStyle]->Apply(mCairo);
+        CurrentState().gradientStyles[aWhichStyle]->Apply(mThebes);
         return;
     }
 
-    SetCairoColor(CurrentState().colorStyles[aWhichStyle]);
+    SetThebesColor(CurrentState().colorStyles[aWhichStyle]);
 }
 
 nsresult
 nsCanvasRenderingContext2D::Redraw()
 {
     if (!mCanvasElement)
-        return nsnull;
+        return NS_OK;
 
     return mCanvasElement->InvalidateFrame();
 }
 
 void
-nsCanvasRenderingContext2D::SetCairoColor(nscolor c)
+nsCanvasRenderingContext2D::SetThebesColor(nscolor c)
 {
-    double r = double(NS_GET_R(c) / 255.0);
-    double g = double(NS_GET_G(c) / 255.0);
-    double b = double(NS_GET_B(c) / 255.0);
-    double a = double(NS_GET_A(c) / 255.0) * CurrentState().globalAlpha;
-
-    cairo_set_source_rgba (mCairo, r, g, b, a);
+    gfxRGBA color(c);
+    color.a *= CurrentState().globalAlpha;
+
+    mThebes->SetColor(color);
 }
 
 NS_IMETHODIMP
 nsCanvasRenderingContext2D::SetDimensions(PRInt32 width, PRInt32 height)
 {
     Destroy();
 
     mWidth = width;
     mHeight = height;
 
     // Check that the dimensions are sane
     if (gfxASurface::CheckSurfaceSize(gfxIntSize(width, height), 0xffff)) {
         gfxASurface::gfxImageFormat format = gfxASurface::ImageFormatARGB32;
         if (mOpaque)
             format = gfxASurface::ImageFormatRGB24;
 
-        mThebesSurface = gfxPlatform::GetPlatform()->CreateOffscreenSurface
+        mSurface = gfxPlatform::GetPlatform()->CreateOffscreenSurface
             (gfxIntSize(width, height), format);
 
-        if (mThebesSurface->CairoStatus() == 0) {
-            mThebesContext = new gfxContext(mThebesSurface);
+        if (mSurface->CairoStatus() == 0) {
+            mThebes = new gfxContext(mSurface);
         }
     }
 
     /* Create dummy surfaces here */
-    if (mThebesSurface == nsnull || mThebesSurface->CairoStatus() != 0 ||
-        mThebesContext == nsnull || mThebesContext->HasError())
+    if (mSurface == nsnull || mSurface->CairoStatus() != 0 ||
+        mThebes == nsnull || mThebes->HasError())
     {
-        mThebesSurface = new gfxImageSurface(gfxIntSize(1,1), gfxASurface::ImageFormatARGB32);
-        mThebesContext = new gfxContext(mThebesSurface);
+        mSurface = new gfxImageSurface(gfxIntSize(1,1), gfxASurface::ImageFormatARGB32);
+        mThebes = new gfxContext(mSurface);
     } else {
         mValid = PR_TRUE;
     }
 
-    mSurface = mThebesSurface->CairoSurface();
-    mCairo = mThebesContext->GetCairo();
-
     // set up the initial canvas defaults
     mStyleStack.Clear();
     mSaveCount = 0;
 
     ContextState *state = mStyleStack.AppendElement();
     state->globalAlpha = 1.0;
     for (int i = 0; i < STYLE_MAX; i++)
         state->colorStyles[i] = NS_RGB(0,0,0);
-    mLastStyle = -1;
+    mLastStyle = STYLE_MAX;
 
     DirtyAllStyles();
 
-    cairo_set_operator(mCairo, CAIRO_OPERATOR_CLEAR);
-    cairo_new_path(mCairo);
-    cairo_rectangle(mCairo, 0, 0, mWidth, mHeight);
-    cairo_fill(mCairo);
-
-    cairo_set_line_width(mCairo, 1.0);
-    cairo_set_operator(mCairo, CAIRO_OPERATOR_OVER);
-    cairo_set_miter_limit(mCairo, 10.0);
-    cairo_set_line_cap(mCairo, CAIRO_LINE_CAP_BUTT);
-    cairo_set_line_join(mCairo, CAIRO_LINE_JOIN_MITER);
-
-    cairo_new_path(mCairo);
+    mThebes->SetOperator(gfxContext::OPERATOR_CLEAR);
+    mThebes->NewPath();
+    mThebes->Rectangle(gfxRect(0, 0, mWidth, mHeight));
+    mThebes->Fill();
+
+    mThebes->SetLineWidth(1.0);
+    mThebes->SetOperator(gfxContext::OPERATOR_OVER);
+    mThebes->SetMiterLimit(10.0);
+    mThebes->SetLineCap(gfxContext::LINE_CAP_BUTT);
+    mThebes->SetLineJoin(gfxContext::LINE_JOIN_MITER);
+
+    mThebes->NewPath();
 
     return NS_OK;
 }
 
 NS_IMETHODIMP
 nsCanvasRenderingContext2D::SetIsOpaque(PRBool isOpaque)
 {
     if (isOpaque == mOpaque)
@@ -847,25 +827,25 @@ nsCanvasRenderingContext2D::SetIsOpaque(
     return NS_OK;
 }
  
 NS_IMETHODIMP
 nsCanvasRenderingContext2D::Render(gfxContext *ctx)
 {
     nsresult rv = NS_OK;
 
-    if (!mValid || !mSurface || !mCairo ||
-        cairo_surface_status(mSurface) != CAIRO_STATUS_SUCCESS ||
-        cairo_status(mCairo) != CAIRO_STATUS_SUCCESS)
+    if (!mValid || !mSurface ||
+        mSurface->CairoStatus() ||
+        mThebes->HasError())
         return NS_ERROR_FAILURE;
 
-    if (!mThebesSurface)
+    if (!mSurface)
         return NS_ERROR_FAILURE;
 
-    nsRefPtr<gfxPattern> pat = new gfxPattern(mThebesSurface);
+    nsRefPtr<gfxPattern> pat = new gfxPattern(mSurface);
 
     gfxContext::GraphicsOperator op = ctx->CurrentOperator();
     if (mOpaque)
         ctx->SetOperator(gfxContext::OPERATOR_SOURCE);
 
     // XXX I don't want to use PixelSnapped here, but layout doesn't guarantee
     // pixel alignment for this stuff!
     ctx->NewPath();
@@ -879,18 +859,18 @@ nsCanvasRenderingContext2D::Render(gfxCo
 }
 
 NS_IMETHODIMP
 nsCanvasRenderingContext2D::GetInputStream(const char *aMimeType,
                                            const PRUnichar *aEncoderOptions,
                                            nsIInputStream **aStream)
 {
     if (!mValid || !mSurface ||
-        cairo_status(mCairo) != CAIRO_STATUS_SUCCESS ||
-        cairo_surface_status(mSurface) != CAIRO_STATUS_SUCCESS)
+        mSurface->CairoStatus() ||
+        mThebes->HasError())
         return NS_ERROR_FAILURE;
 
     nsresult rv;
     const char encoderPrefix[] = "@mozilla.org/image/encoder;2?type=";
     nsAutoArrayPtr<char> conid(new (std::nothrow) char[strlen(encoderPrefix) + strlen(aMimeType) + 1]);
 
     if (!conid)
         return NS_ERROR_OUT_OF_MEMORY;
@@ -901,29 +881,32 @@ nsCanvasRenderingContext2D::GetInputStre
     nsCOMPtr<imgIEncoder> encoder = do_CreateInstance(conid);
     if (!encoder)
         return NS_ERROR_FAILURE;
 
     nsAutoArrayPtr<PRUint8> imageBuffer(new (std::nothrow) PRUint8[mWidth * mHeight * 4]);
     if (!imageBuffer)
         return NS_ERROR_OUT_OF_MEMORY;
 
-    cairo_surface_t *imgsurf = cairo_image_surface_create_for_data (imageBuffer.get(),
-                                                                    CAIRO_FORMAT_ARGB32,
-                                                                    mWidth, mHeight, mWidth * 4);
-    if (!imgsurf || cairo_surface_status(imgsurf))
+    nsRefPtr<gfxImageSurface> imgsurf = new gfxImageSurface(imageBuffer.get(),
+                                                            gfxIntSize(mWidth, mHeight),
+                                                            mWidth * 4,
+                                                            gfxASurface::ImageFormatARGB32);
+
+    if (!imgsurf || imgsurf->CairoStatus())
         return NS_ERROR_FAILURE;
 
-    cairo_t *cr = cairo_create(imgsurf);
-    cairo_surface_destroy (imgsurf);
-
-    cairo_set_operator (cr, CAIRO_OPERATOR_SOURCE);
-    cairo_set_source_surface (cr, mSurface, 0, 0);
-    cairo_paint (cr);
-    cairo_destroy (cr);
+    nsRefPtr<gfxContext> ctx = new gfxContext(imgsurf);
+
+    if (!ctx || ctx->HasError())
+        return NS_ERROR_FAILURE;
+
+    ctx->SetOperator(gfxContext::OPERATOR_SOURCE);
+    ctx->SetSource(mSurface, gfxPoint(0, 0));
+    ctx->Paint();
 
     rv = encoder->InitFromData(imageBuffer.get(),
                                mWidth * mHeight * 4, mWidth, mHeight, mWidth * 4,
                                imgIEncoder::INPUT_FORMAT_HOSTARGB,
                                nsDependentString(aEncoderOptions));
     NS_ENSURE_SUCCESS(rv, rv);
 
     return CallQueryInterface(encoder, aStream);
@@ -962,94 +945,94 @@ nsCanvasRenderingContext2D::GetCanvas(ns
 // state
 //
 
 NS_IMETHODIMP
 nsCanvasRenderingContext2D::Save()
 {
     ContextState state = CurrentState();
     mStyleStack.AppendElement(state);
-    cairo_save (mCairo);
+    mThebes->Save();
     mSaveCount++;
     return NS_OK;
 }
 
 NS_IMETHODIMP
 nsCanvasRenderingContext2D::Restore()
 {
     if (mSaveCount == 0)
         return NS_OK;
     if (mSaveCount < 0)
         return NS_ERROR_DOM_INVALID_STATE_ERR;
 
     mStyleStack.RemoveElementAt(mSaveCount);
-    cairo_restore (mCairo);
-
-    mLastStyle = -1;
+    mThebes->Restore();
+
+    mLastStyle = STYLE_MAX;
     DirtyAllStyles();
 
     mSaveCount--;
     return NS_OK;
 }
 
 //
 // transformations
 //
 
 NS_IMETHODIMP
 nsCanvasRenderingContext2D::Scale(float x, float y)
 {
     if (!FloatValidate(x,y))
         return NS_ERROR_DOM_SYNTAX_ERR;
 
-    cairo_scale (mCairo, x, y);
+    mThebes->Scale(x, y);
     return NS_OK;
 }
 
 NS_IMETHODIMP
 nsCanvasRenderingContext2D::Rotate(float angle)
 {
     if (!FloatValidate(angle))
         return NS_ERROR_DOM_SYNTAX_ERR;
 
-    cairo_rotate (mCairo, angle);
+    mThebes->Rotate(angle);
     return NS_OK;
 }
 
 NS_IMETHODIMP
 nsCanvasRenderingContext2D::Translate(float x, float y)
 {
     if (!FloatValidate(x,y))
         return NS_ERROR_DOM_SYNTAX_ERR;
 
-    cairo_translate (mCairo, x, y);
+    mThebes->Translate(gfxPoint(x, y));
     return NS_OK;
 }
 
 NS_IMETHODIMP
 nsCanvasRenderingContext2D::Transform(float m11, float m12, float m21, float m22, float dx, float dy)
 {
     if (!FloatValidate(m11,m12,m21,m22,dx,dy))
         return NS_ERROR_DOM_SYNTAX_ERR;
 
-    cairo_matrix_t mat;
-    cairo_matrix_init (&mat, m11, m12, m21, m22, dx, dy);
-    cairo_transform (mCairo, &mat);
+    gfxMatrix matrix(m11, m12, m21, m22, dx, dy);
+    mThebes->Multiply(matrix);
+
     return NS_OK;
 }
 
 NS_IMETHODIMP
 nsCanvasRenderingContext2D::SetTransform(float m11, float m12, float m21, float m22, float dx, float dy)
 {
     if (!FloatValidate(m11,m12,m21,m22,dx,dy))
         return NS_ERROR_DOM_SYNTAX_ERR;
 
-    cairo_matrix_t mat;
-    cairo_matrix_init (&mat, m11, m12, m21, m22, dx, dy);
-    cairo_set_matrix (mCairo, &mat);
+    gfxMatrix matrix(m11, m12, m21, m22, dx, dy);
+    mThebes->SetMatrix(matrix);
+
     return NS_OK;
 }
 
 //
 // colors
 //
 
 NS_IMETHODIMP
@@ -1101,17 +1084,17 @@ nsCanvasRenderingContext2D::GetStrokeSty
     } else {
         nsString styleStr;
         StyleColorToString(CurrentState().colorStyles[STYLE_STROKE], styleStr);
 
         rv = var->SetAsDOMString(styleStr);
         NS_ENSURE_SUCCESS(rv, rv);
     }
 
-    NS_ADDREF(*aStyle = var);
+    *aStyle = var.forget().get();
     return NS_OK;
 }
 
 NS_IMETHODIMP
 nsCanvasRenderingContext2D::SetFillStyle(nsIVariant* aStyle)
 {
     return SetStyleFromVariant(aStyle, STYLE_FILL);
 }
@@ -1136,108 +1119,104 @@ nsCanvasRenderingContext2D::GetFillStyle
     } else {
         nsString styleStr;
         StyleColorToString(CurrentState().colorStyles[STYLE_FILL], styleStr);
 
         rv = var->SetAsDOMString(styleStr);
         NS_ENSURE_SUCCESS(rv, rv);
     }
 
-    NS_ADDREF(*aStyle = var);
+    *aStyle = var.forget().get();
     return NS_OK;
 }
 
 //
 // gradients and patterns
 //
 NS_IMETHODIMP
 nsCanvasRenderingContext2D::CreateLinearGradient(float x0, float y0, float x1, float y1,
                                                  nsIDOMCanvasGradient **_retval)
 {
     if (!FloatValidate(x0,y0,x1,y1))
         return NS_ERROR_DOM_SYNTAX_ERR;
 
-    cairo_pattern_t *gradpat = nsnull;
-    gradpat = cairo_pattern_create_linear ((double) x0, (double) y0, (double) x1, (double) y1);
-    nsCanvasGradient *grad = new nsCanvasGradient(gradpat, mCSSParser);
-    if (!grad) {
-        cairo_pattern_destroy(gradpat);
+    nsRefPtr<gfxPattern> gradpat = new gfxPattern(x0, y0, x1, y1);
+    if (!gradpat)
         return NS_ERROR_OUT_OF_MEMORY;
-    }
-
-    NS_ADDREF(*_retval = grad);
+
+    nsRefPtr<nsIDOMCanvasGradient> grad = new nsCanvasGradient(gradpat, mCSSParser);
+    if (!grad)
+        return NS_ERROR_OUT_OF_MEMORY;
+
+    *_retval = grad.forget().get();
     return NS_OK;
 }
 
 NS_IMETHODIMP
 nsCanvasRenderingContext2D::CreateRadialGradient(float x0, float y0, float r0, float x1, float y1, float r1,
                                                  nsIDOMCanvasGradient **_retval)
 {
     if (!FloatValidate(x0,y0,r0,x1,y1,r1))
         return NS_ERROR_DOM_SYNTAX_ERR;
 
-    cairo_pattern_t *gradpat = nsnull;
-    gradpat = cairo_pattern_create_radial ((double) x0, (double) y0, (double) r0,
-                                           (double) x1, (double) y1, (double) r1);
-    nsCanvasGradient *grad = new nsCanvasGradient(gradpat, mCSSParser);
-    if (!grad) {
-        cairo_pattern_destroy(gradpat);
+    nsRefPtr<gfxPattern> gradpat = new gfxPattern(x0, y0, r0, x1, y1, r1);
+    if (!gradpat)
         return NS_ERROR_OUT_OF_MEMORY;
-    }
-
-    NS_ADDREF(*_retval = grad);
+
+    nsRefPtr<nsIDOMCanvasGradient> grad = new nsCanvasGradient(gradpat, mCSSParser);
+    if (!grad)
+        return NS_ERROR_OUT_OF_MEMORY;
+
+    *_retval = grad.forget().get();
     return NS_OK;
 }
 
 NS_IMETHODIMP
 nsCanvasRenderingContext2D::CreatePattern(nsIDOMHTMLElement *image,
                                           const nsAString& repeat,
                                           nsIDOMCanvasPattern **_retval)
 {
     nsresult rv;
-    cairo_extend_t extend;
+    gfxPattern::GraphicsExtend extend;
 
     if (repeat.IsEmpty() || repeat.EqualsLiteral("repeat")) {
-        extend = CAIRO_EXTEND_REPEAT;
+        extend = gfxPattern::EXTEND_REPEAT;
     } else if (repeat.EqualsLiteral("repeat-x")) {
         // XX
-        extend = CAIRO_EXTEND_REPEAT;
+        extend = gfxPattern::EXTEND_REPEAT;
     } else if (repeat.EqualsLiteral("repeat-y")) {
         // XX
-        extend = CAIRO_EXTEND_REPEAT;
+        extend = gfxPattern::EXTEND_REPEAT;
     } else if (repeat.EqualsLiteral("no-repeat")) {
-        extend = CAIRO_EXTEND_NONE;
+        extend = gfxPattern::EXTEND_NONE;
     } else {
         // XXX ERRMSG we need to report an error to developers here! (bug 329026)
         return NS_ERROR_DOM_SYNTAX_ERR;
     }
 
-    cairo_surface_t *imgSurf = nsnull;
     PRInt32 imgWidth, imgHeight;
     nsCOMPtr<nsIPrincipal> principal;
     PRBool forceWriteOnly = PR_FALSE;
-    rv = CairoSurfaceFromElement(image, PR_TRUE,
-                                 &imgSurf, &imgWidth, &imgHeight,
-                                 getter_AddRefs(principal), &forceWriteOnly);
+    nsRefPtr<gfxASurface> imgsurf;
+    rv = ThebesSurfaceFromElement(image, PR_TRUE,
+                                  getter_AddRefs(imgsurf), &imgWidth, &imgHeight,
+                                  getter_AddRefs(principal), &forceWriteOnly);
     if (NS_FAILED(rv))
         return rv;
 
-    cairo_pattern_t *cairopat = cairo_pattern_create_for_surface(imgSurf);
-    cairo_surface_destroy(imgSurf);
-
-    cairo_pattern_set_extend (cairopat, extend);
-
-    nsCanvasPattern *pat = new nsCanvasPattern(cairopat, principal,
-                                               forceWriteOnly);
-    if (!pat) {
-        cairo_pattern_destroy(cairopat);
+    nsRefPtr<gfxPattern> thebespat = new gfxPattern(imgsurf);
+
+    thebespat->SetExtend(extend);
+
+    nsRefPtr<nsCanvasPattern> pat = new nsCanvasPattern(thebespat, principal,
+                                                        forceWriteOnly);
+    if (!pat)
         return NS_ERROR_OUT_OF_MEMORY;
-    }
-
-    NS_ADDREF(*_retval = pat);
+
+    *_retval = pat.forget().get();
     return NS_OK;
 }
 
 //
 // shadows
 //
 NS_IMETHODIMP
 nsCanvasRenderingContext2D::SetShadowOffsetX(float x)
@@ -1306,163 +1285,156 @@ nsCanvasRenderingContext2D::GetShadowCol
 //
 
 NS_IMETHODIMP
 nsCanvasRenderingContext2D::ClearRect(float x, float y, float w, float h)
 {
     if (!FloatValidate(x,y,w,h))
         return NS_ERROR_DOM_SYNTAX_ERR;
 
-    cairo_path_t *old_path = cairo_copy_path (mCairo);
-    cairo_save (mCairo);
-    cairo_set_operator (mCairo, CAIRO_OPERATOR_CLEAR);
-    cairo_new_path (mCairo);
-    cairo_rectangle (mCairo, x, y, w, h);
-    cairo_fill (mCairo);
-    cairo_restore (mCairo);
-    cairo_new_path (mCairo);
-    if (old_path->status == CAIRO_STATUS_SUCCESS && old_path->num_data != 0)
-        cairo_append_path (mCairo, old_path);
-    cairo_path_destroy (old_path);
+    nsRefPtr<gfxPath> path = mThebes->CopyPath();
+
+    mThebes->Save();
+    mThebes->SetOperator(gfxContext::OPERATOR_CLEAR);
+    mThebes->NewPath();
+    mThebes->Rectangle(gfxRect(x, y, w, h));
+    mThebes->Fill();
+    mThebes->Restore();
+
+    mThebes->NewPath();
+    mThebes->AppendPath(path);
+
+    return Redraw();
+}
+
+nsresult
+nsCanvasRenderingContext2D::DrawRect(const gfxRect& rect, Style style)
+{
+    if (!FloatValidate(rect.pos.x, rect.pos.y, rect.size.width, rect.size.height))
+        return NS_ERROR_DOM_SYNTAX_ERR;
+
+    nsRefPtr<gfxPath> path = mThebes->CopyPath();
+
+    mThebes->NewPath();
+    mThebes->Rectangle(rect);
+
+    ApplyStyle(style);
+    if (style == STYLE_FILL)
+        mThebes->Fill();
+    else // STYLE_STROKE
+        mThebes->Stroke();
+
+    mThebes->NewPath();
+    mThebes->AppendPath(path);
 
     return Redraw();
 }
 
 NS_IMETHODIMP
 nsCanvasRenderingContext2D::FillRect(float x, float y, float w, float h)
 {
-    if (!FloatValidate(x,y,w,h))
-        return NS_ERROR_DOM_SYNTAX_ERR;
-
-    cairo_path_t *old_path = cairo_copy_path (mCairo);
-    cairo_new_path (mCairo);
-    cairo_rectangle (mCairo, x, y, w, h);
-
-    ApplyStyle(STYLE_FILL);
-    cairo_fill (mCairo);
-    cairo_new_path (mCairo);
-    if (old_path->status == CAIRO_STATUS_SUCCESS && old_path->num_data != 0)
-        cairo_append_path (mCairo, old_path);
-    cairo_path_destroy (old_path);
-
-    return Redraw();
+    return DrawRect(gfxRect(x, y, w, h), STYLE_FILL);
 }
 
 NS_IMETHODIMP
 nsCanvasRenderingContext2D::StrokeRect(float x, float y, float w, float h)
 {
-    if (!FloatValidate(x,y,w,h))
-        return NS_ERROR_DOM_SYNTAX_ERR;
-
-    cairo_path_t *old_path = cairo_copy_path (mCairo);
-    cairo_new_path (mCairo);
-    cairo_rectangle (mCairo, x, y, w, h);
-
-    ApplyStyle(STYLE_STROKE);
-    cairo_stroke (mCairo);
-    cairo_new_path (mCairo);
-    if (old_path->status == CAIRO_STATUS_SUCCESS && old_path->num_data != 0)
-        cairo_append_path (mCairo, old_path);
-    cairo_path_destroy (old_path);
-
-    return Redraw();
+    return DrawRect(gfxRect(x, y, w, h), STYLE_STROKE);
 }
 
 //
 // path bits
 //
 
 NS_IMETHODIMP
 nsCanvasRenderingContext2D::BeginPath()
 {
-    cairo_new_path(mCairo);
+    mThebes->NewPath();
     return NS_OK;
 }
 
 NS_IMETHODIMP
 nsCanvasRenderingContext2D::ClosePath()
 {
-    cairo_close_path(mCairo);
+    mThebes->ClosePath();
     return NS_OK;
 }
 
 NS_IMETHODIMP
 nsCanvasRenderingContext2D::Fill()
 {
     ApplyStyle(STYLE_FILL);
-    cairo_fill_preserve(mCairo);
+    mThebes->Fill();
     return Redraw();
 }
 
 NS_IMETHODIMP
 nsCanvasRenderingContext2D::Stroke()
 {
     ApplyStyle(STYLE_STROKE);
-    cairo_stroke_preserve(mCairo);
+    mThebes->Stroke();
     return Redraw();
 }
 
 NS_IMETHODIMP
 nsCanvasRenderingContext2D::Clip()
 {
-    cairo_clip_preserve(mCairo);
+    mThebes->Clip();
     return Redraw();
 }
 
 NS_IMETHODIMP
 nsCanvasRenderingContext2D::MoveTo(float x, float y)
 {
     if (!FloatValidate(x,y))
         return NS_ERROR_DOM_SYNTAX_ERR;
 
-    cairo_move_to(mCairo, x, y);
+    mThebes->MoveTo(gfxPoint(x, y));
     return NS_OK;
 }
 
 NS_IMETHODIMP
 nsCanvasRenderingContext2D::LineTo(float x, float y)
 {
     if (!FloatValidate(x,y))
         return NS_ERROR_DOM_SYNTAX_ERR;
 
-    cairo_line_to(mCairo, x, y);
+    mThebes->LineTo(gfxPoint(x, y));
     return NS_OK;
 }
 
 NS_IMETHODIMP
 nsCanvasRenderingContext2D::QuadraticCurveTo(float cpx, float cpy, float x, float y)
 {
     if (!FloatValidate(cpx,cpy,x,y))
         return NS_ERROR_DOM_SYNTAX_ERR;
 
-    double cx, cy;
-
     // we will always have a current point, since beginPath forces
     // a moveto(0,0)
-    cairo_get_current_point(mCairo, &cx, &cy);
-    cairo_curve_to(mCairo,
-                   (cx + cpx * 2.0) / 3.0,
-                   (cy + cpy * 2.0) / 3.0,
-                   (cpx * 2.0 + x) / 3.0,
-                   (cpy * 2.0 + y) / 3.0,
-                   x,
-                   y);
+    gfxPoint c = mThebes->CurrentPoint();
+    gfxPoint p(x,y);
+    gfxPoint cp(cpx, cpy);
+
+    mThebes->CurveTo((c+cp*2)/3.0, (p+cp*2)/3.0, p);
 
     return NS_OK;
 }
 
 NS_IMETHODIMP
 nsCanvasRenderingContext2D::BezierCurveTo(float cp1x, float cp1y,
                                           float cp2x, float cp2y,
                                           float x, float y)
 {
     if (!FloatValidate(cp1x,cp1y,cp2x,cp2y,x,y))
         return NS_ERROR_DOM_SYNTAX_ERR;
 
-    cairo_curve_to(mCairo, cp1x, cp1y, cp2x, cp2y, x, y);
+    mThebes->CurveTo(gfxPoint(cp1x, cp1y),
+                     gfxPoint(cp2x, cp2y),
+                     gfxPoint(x, y));
+
     return NS_OK;
 }
 
 NS_IMETHODIMP
 nsCanvasRenderingContext2D::ArcTo(float x1, float y1, float x2, float y2, float radius)
 {
     if (!FloatValidate(x1,y1,x2,y2,radius))
         return NS_ERROR_DOM_SYNTAX_ERR;
@@ -1470,52 +1442,51 @@ nsCanvasRenderingContext2D::ArcTo(float 
     if (radius <= 0)
         return NS_ERROR_DOM_INDEX_SIZE_ERR;
 
     /* This is an adaptation of the cairo_arc_to patch from Behdad
      * Esfahbod; once that patch is accepted, we should remove this
      * and just call cairo_arc_to() directly.
      */
     
-    double x0, y0;
     double angle0, angle1, angle2, angled;
     double d0, d2;
     double sin_, cos_;
-    double xc, yc, dc;
+    double dc;
     int forward;
 
-    cairo_get_current_point(mCairo, &x0, &y0);
-
-    angle0 = atan2 (y0 - y1, x0 - x1); /* angle from (x1,y1) to (x0,y0) */
+    gfxPoint p0 = mThebes->CurrentPoint();
+
+    angle0 = atan2 (p0.y - y1, p0.x - x1); /* angle from (x1,y1) to (p0.x,p0.y) */
     angle2 = atan2 (y2 - y1, x2 - x1); /* angle from (x1,y1) to (x2,y2) */
     angle1 = (angle0 + angle2) / 2;    /* angle from (x1,y1) to (xc,yc) */
 
-    angled = angle2 - angle0;          /* the angle (x0,y0)--(x1,y1)--(x2,y2) */
+    angled = angle2 - angle0;          /* the angle (p0.x,p0.y)--(x1,y1)--(x2,y2) */
 
     /* Shall we go forward or backward? */
     if (angled > M_PI || (angled < 0 && angled > -M_PI)) {
         angle1 += M_PI;
         angled = 2 * M_PI - angled;
         forward = 1;
     } else {
         double tmp;
         tmp = angle0;
         angle0 = angle2;
         angle2 = tmp;
         forward = 0;
     }
 
-    angle0 += M_PI_2; /* angle from (xc,yc) to (x0,y0) */
+    angle0 += M_PI_2; /* angle from (xc,yc) to (p0.x,p0.y) */
     angle2 -= M_PI_2; /* angle from (xc,yc) to (x2,y2) */
-    angled /= 2;      /* the angle (x0,y0)--(x1,y1)--(xc,yc) */
-
-
-    /* distance from (x1,y1) to (x0,y0) */
-    d0 = sqrt ((x0-x1)*(x0-x1)+(y0-y1)*(y0-y1));
-    /* distance from (x2,y2) to (x0,y0) */
+    angled /= 2;      /* the angle (p0.x,p0.y)--(x1,y1)--(xc,yc) */
+
+
+    /* distance from (x1,y1) to (p0.x,p0.y) */
+    d0 = sqrt ((p0.x-x1)*(p0.x-x1)+(p0.y-y1)*(p0.y-y1));
+    /* distance from (x2,y2) to (p0.x,p0.y) */
     d2 = sqrt ((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1));
 
     dc = -1;
     sin_ = sin(angled);
     cos_ = cos(angled);
     if (fabs(cos_) >= 1e-5) { /* the arc may not fit */
         /* min distance of end-points from corner */
         double min_d = d0 < d2 ? d0 : d2;
@@ -1529,53 +1500,53 @@ nsCanvasRenderingContext2D::ArcTo(float 
         }
     }
 
     if (dc < 0)
         dc = radius / sin_; /* distance of (xc,yc) from (x1,y1) */
 
 
     /* find (cx,cy), the center of the arc */
-    xc = x1 + sin(angle1) * dc;