diff --git a/accessible/windows/ia2/ia2Accessible.cpp b/accessible/windows/ia2/ia2Accessible.cpp
index 97cd0d788..c72719b51 100644
--- a/accessible/windows/ia2/ia2Accessible.cpp
+++ b/accessible/windows/ia2/ia2Accessible.cpp
@@ -63,6 +63,8 @@ ia2Accessible::QueryInterface(REFIID iid, void** ppv)
 STDMETHODIMP
 ia2Accessible::get_nRelations(long* aNRelations)
 {
+  A11Y_TRYBLOCK_BEGIN
+
   if (!aNRelations)
     return E_INVALIDARG;
   *aNRelations = 0;
@@ -82,12 +84,16 @@ ia2Accessible::get_nRelations(long* aNRelations)
       (*aNRelations)++;
   }
   return S_OK;
+
+  A11Y_TRYBLOCK_END
 }
 
 STDMETHODIMP
 ia2Accessible::get_relation(long aRelationIndex,
                             IAccessibleRelation** aRelation)
 {
+  A11Y_TRYBLOCK_BEGIN
+
   if (!aRelation || aRelationIndex < 0)
     return E_INVALIDARG;
   *aRelation = nullptr;
@@ -118,6 +124,8 @@ ia2Accessible::get_relation(long aRelationIndex,
   }
 
   return E_INVALIDARG;
+
+  A11Y_TRYBLOCK_END
 }
 
 STDMETHODIMP
@@ -125,6 +133,8 @@ ia2Accessible::get_relations(long aMaxRelations,
                              IAccessibleRelation** aRelation,
                              long *aNRelations)
 {
+  A11Y_TRYBLOCK_BEGIN
+
   if (!aRelation || !aNRelations || aMaxRelations <= 0)
     return E_INVALIDARG;
   *aNRelations = 0;
@@ -150,11 +160,15 @@ ia2Accessible::get_relations(long aMaxRelations,
     }
   }
   return S_OK;
+
+  A11Y_TRYBLOCK_END
 }
 
 STDMETHODIMP
 ia2Accessible::role(long* aRole)
 {
+  A11Y_TRYBLOCK_BEGIN
+
   if (!aRole)
     return E_INVALIDARG;
   *aRole = 0;
@@ -190,11 +204,15 @@ ia2Accessible::role(long* aRole)
   }
 
   return S_OK;
+
+  A11Y_TRYBLOCK_END
 }
 
 STDMETHODIMP
 ia2Accessible::scrollTo(enum IA2ScrollType aScrollType)
 {
+  A11Y_TRYBLOCK_BEGIN
+
   AccessibleWrap* acc = static_cast<AccessibleWrap*>(this);
   if (acc->IsDefunct())
     return CO_E_OBJNOTCONNECTED;
@@ -204,12 +222,16 @@ ia2Accessible::scrollTo(enum IA2ScrollType aScrollType)
                         aScrollType);
 
   return S_OK;
+
+  A11Y_TRYBLOCK_END
 }
 
 STDMETHODIMP
 ia2Accessible::scrollToPoint(enum IA2CoordinateType aCoordType,
                               long aX, long aY)
 {
+  A11Y_TRYBLOCK_BEGIN
+
   AccessibleWrap* acc = static_cast<AccessibleWrap*>(this);
   if (acc->IsDefunct())
     return CO_E_OBJNOTCONNECTED;
@@ -222,6 +244,8 @@ ia2Accessible::scrollToPoint(enum IA2CoordinateType aCoordType,
   acc->ScrollToPoint(geckoCoordType, aX, aY);
 
   return S_OK;
+
+  A11Y_TRYBLOCK_END
 }
 
 STDMETHODIMP
@@ -229,6 +253,8 @@ ia2Accessible::get_groupPosition(long* aGroupLevel,
                                  long* aSimilarItemsInGroup,
                                  long* aPositionInGroup)
 {
+  A11Y_TRYBLOCK_BEGIN
+
   if (!aGroupLevel || !aSimilarItemsInGroup || !aPositionInGroup)
     return E_INVALIDARG;
 
@@ -253,11 +279,15 @@ ia2Accessible::get_groupPosition(long* aGroupLevel,
   *aPositionInGroup = groupPos.posInSet;
 
   return S_OK;
+
+  A11Y_TRYBLOCK_END
 }
 
 STDMETHODIMP
 ia2Accessible::get_states(AccessibleStates* aStates)
 {
+  A11Y_TRYBLOCK_BEGIN
+
   if (!aStates)
     return E_INVALIDARG;
   *aStates = 0;
@@ -317,36 +347,50 @@ ia2Accessible::get_states(AccessibleStates* aStates)
     *aStates |= IA2_STATE_PINNED;
 
   return S_OK;
+
+  A11Y_TRYBLOCK_END
 }
 
 STDMETHODIMP
 ia2Accessible::get_extendedRole(BSTR* aExtendedRole)
 {
+  A11Y_TRYBLOCK_BEGIN
+
   if (!aExtendedRole)
     return E_INVALIDARG;
 
   *aExtendedRole = nullptr;
   return E_NOTIMPL;
+
+  A11Y_TRYBLOCK_END
 }
 
 STDMETHODIMP
 ia2Accessible::get_localizedExtendedRole(BSTR* aLocalizedExtendedRole)
 {
+  A11Y_TRYBLOCK_BEGIN
+
   if (!aLocalizedExtendedRole)
     return E_INVALIDARG;
 
   *aLocalizedExtendedRole = nullptr;
   return E_NOTIMPL;
+
+  A11Y_TRYBLOCK_END
 }
 
 STDMETHODIMP
 ia2Accessible::get_nExtendedStates(long* aNExtendedStates)
 {
+  A11Y_TRYBLOCK_BEGIN
+
   if (!aNExtendedStates)
     return E_INVALIDARG;
 
   *aNExtendedStates = 0;
   return E_NOTIMPL;
+
+  A11Y_TRYBLOCK_END
 }
 
 STDMETHODIMP
@@ -354,12 +398,16 @@ ia2Accessible::get_extendedStates(long aMaxExtendedStates,
                                   BSTR** aExtendedStates,
                                   long* aNExtendedStates)
 {
+  A11Y_TRYBLOCK_BEGIN
+
   if (!aExtendedStates || !aNExtendedStates)
     return E_INVALIDARG;
 
   *aExtendedStates = nullptr;
   *aNExtendedStates = 0;
   return E_NOTIMPL;
+
+  A11Y_TRYBLOCK_END
 }
 
 STDMETHODIMP
@@ -367,28 +415,38 @@ ia2Accessible::get_localizedExtendedStates(long aMaxLocalizedExtendedStates,
                                            BSTR** aLocalizedExtendedStates,
                                            long* aNLocalizedExtendedStates)
 {
+  A11Y_TRYBLOCK_BEGIN
+
   if (!aLocalizedExtendedStates || !aNLocalizedExtendedStates)
     return E_INVALIDARG;
 
   *aLocalizedExtendedStates = nullptr;
   *aNLocalizedExtendedStates = 0;
   return E_NOTIMPL;
+
+  A11Y_TRYBLOCK_END
 }
 
 STDMETHODIMP
 ia2Accessible::get_uniqueID(long* aUniqueID)
 {
+  A11Y_TRYBLOCK_BEGIN
+
   if (!aUniqueID)
     return E_INVALIDARG;
 
   AccessibleWrap* acc = static_cast<AccessibleWrap*>(this);
   *aUniqueID = AccessibleWrap::GetChildIDFor(acc);
   return S_OK;
+
+  A11Y_TRYBLOCK_END
 }
 
 STDMETHODIMP
 ia2Accessible::get_windowHandle(HWND* aWindowHandle)
 {
+  A11Y_TRYBLOCK_BEGIN
+
   if (!aWindowHandle)
     return E_INVALIDARG;
   *aWindowHandle = 0;
@@ -399,11 +457,15 @@ ia2Accessible::get_windowHandle(HWND* aWindowHandle)
 
   *aWindowHandle = AccessibleWrap::GetHWNDFor(acc);
   return S_OK;
+
+  A11Y_TRYBLOCK_END
 }
 
 STDMETHODIMP
 ia2Accessible::get_indexInParent(long* aIndexInParent)
 {
+  A11Y_TRYBLOCK_BEGIN
+
   if (!aIndexInParent)
     return E_INVALIDARG;
   *aIndexInParent = -1;
@@ -419,11 +481,15 @@ ia2Accessible::get_indexInParent(long* aIndexInParent)
     return S_FALSE;
 
   return S_OK;
+
+  A11Y_TRYBLOCK_END
 }
 
 STDMETHODIMP
 ia2Accessible::get_locale(IA2Locale* aLocale)
 {
+  A11Y_TRYBLOCK_BEGIN
+
   if (!aLocale)
     return E_INVALIDARG;
 
@@ -466,11 +532,15 @@ ia2Accessible::get_locale(IA2Locale* aLocale)
   // country abbreviations or if there are more than one subcode.
   aLocale->variant = ::SysAllocString(lang.get());
   return S_OK;
+
+  A11Y_TRYBLOCK_END
 }
 
 STDMETHODIMP
 ia2Accessible::get_attributes(BSTR* aAttributes)
 {
+  A11Y_TRYBLOCK_BEGIN
+
   if (!aAttributes)
     return E_INVALIDARG;
   *aAttributes = nullptr;
@@ -488,6 +558,8 @@ ia2Accessible::get_attributes(BSTR* aAttributes)
 
   MOZ_ASSERT(!acc->IsProxy());
   return E_UNEXPECTED;
+
+  A11Y_TRYBLOCK_END
 }
 
 ////////////////////////////////////////////////////////////////////////////////
@@ -496,16 +568,22 @@ ia2Accessible::get_attributes(BSTR* aAttributes)
 STDMETHODIMP
 ia2Accessible::get_attribute(BSTR name, VARIANT* aAttribute)
 {
+  A11Y_TRYBLOCK_BEGIN
+
   if (!aAttribute)
     return E_INVALIDARG;
 
   return E_NOTIMPL;
+
+  A11Y_TRYBLOCK_END
 }
 
 STDMETHODIMP
 ia2Accessible::get_accessibleWithCaret(IUnknown** aAccessible,
                                        long* aCaretOffset)
 {
+  A11Y_TRYBLOCK_BEGIN
+
   if (!aAccessible || !aCaretOffset)
     return E_INVALIDARG;
 
@@ -533,6 +611,8 @@ ia2Accessible::get_accessibleWithCaret(IUnknown** aAccessible,
   (*aAccessible)->AddRef();
   *aCaretOffset = caretOffset;
   return S_OK;
+
+  A11Y_TRYBLOCK_END
 }
 
 STDMETHODIMP
@@ -541,6 +621,8 @@ ia2Accessible::get_relationTargetsOfType(BSTR aType,
                                          IUnknown*** aTargets,
                                          long* aNTargets)
 {
+  A11Y_TRYBLOCK_BEGIN
+
   if (!aTargets || !aNTargets || aMaxTargets < 0)
     return E_INVALIDARG;
   *aNTargets = 0;
@@ -581,12 +663,16 @@ ia2Accessible::get_relationTargetsOfType(BSTR aType,
   }
 
   return S_OK;
+
+  A11Y_TRYBLOCK_END
 }
 
 STDMETHODIMP
 ia2Accessible::get_selectionRanges(IA2Range** aRanges,
                                    long *aNRanges)
 {
+  A11Y_TRYBLOCK_BEGIN
+
   if (!aRanges || !aNRanges)
     return E_INVALIDARG;
 
@@ -628,6 +714,8 @@ ia2Accessible::get_selectionRanges(IA2Range** aRanges,
   }
 
   return S_OK;
+
+  A11Y_TRYBLOCK_END
 }
 
 
diff --git a/accessible/windows/ia2/ia2AccessibleAction.cpp b/accessible/windows/ia2/ia2AccessibleAction.cpp
index ffd19f049..0710b753f 100644
--- a/accessible/windows/ia2/ia2AccessibleAction.cpp
+++ b/accessible/windows/ia2/ia2AccessibleAction.cpp
@@ -39,6 +39,8 @@ ia2AccessibleAction::QueryInterface(REFIID iid, void** ppv)
 STDMETHODIMP
 ia2AccessibleAction::nActions(long* aActionCount)
 {
+  A11Y_TRYBLOCK_BEGIN
+
   if (!aActionCount)
     return E_INVALIDARG;
 
@@ -50,22 +52,30 @@ ia2AccessibleAction::nActions(long* aActionCount)
 
   *aActionCount = acc->ActionCount();
   return S_OK;
+
+  A11Y_TRYBLOCK_END
 }
 
 STDMETHODIMP
 ia2AccessibleAction::doAction(long aActionIndex)
 {
+  A11Y_TRYBLOCK_BEGIN
+
   AccessibleWrap* acc = static_cast<AccessibleWrap*>(this);
   if (acc->IsDefunct())
     return CO_E_OBJNOTCONNECTED;
 
   uint8_t index = static_cast<uint8_t>(aActionIndex);
   return acc->DoAction(index) ? S_OK : E_INVALIDARG;
+
+  A11Y_TRYBLOCK_END
 }
 
 STDMETHODIMP
 ia2AccessibleAction::get_description(long aActionIndex, BSTR *aDescription)
 {
+  A11Y_TRYBLOCK_BEGIN
+
   if (!aDescription)
     return E_INVALIDARG;
   *aDescription = nullptr;
@@ -83,6 +93,8 @@ ia2AccessibleAction::get_description(long aActionIndex, BSTR *aDescription)
   *aDescription = ::SysAllocStringLen(description.get(),
                                       description.Length());
   return *aDescription ? S_OK : E_OUTOFMEMORY;
+
+  A11Y_TRYBLOCK_END
 }
 
 STDMETHODIMP
@@ -90,6 +102,8 @@ ia2AccessibleAction::get_keyBinding(long aActionIndex, long aNumMaxBinding,
                                   BSTR **aKeyBinding,
                                   long *aNumBinding)
 {
+  A11Y_TRYBLOCK_BEGIN
+
   if (!aKeyBinding)
     return E_INVALIDARG;
   *aKeyBinding = nullptr;
@@ -129,11 +143,15 @@ ia2AccessibleAction::get_keyBinding(long aActionIndex, long aNumMaxBinding,
 
   *aNumBinding = 1;
   return S_OK;
+
+  A11Y_TRYBLOCK_END
 }
 
 STDMETHODIMP
 ia2AccessibleAction::get_name(long aActionIndex, BSTR *aName)
 {
+  A11Y_TRYBLOCK_BEGIN
+
   if (!aName)
     return E_INVALIDARG;
 
@@ -151,14 +169,20 @@ ia2AccessibleAction::get_name(long aActionIndex, BSTR *aName)
 
   *aName = ::SysAllocStringLen(name.get(), name.Length());
   return *aName ? S_OK : E_OUTOFMEMORY;
+
+  A11Y_TRYBLOCK_END
 }
 
 STDMETHODIMP
 ia2AccessibleAction::get_localizedName(long aActionIndex, BSTR *aLocalizedName)
 {
+  A11Y_TRYBLOCK_BEGIN
+
   if (!aLocalizedName)
     return E_INVALIDARG;
 
   *aLocalizedName = nullptr;
   return E_NOTIMPL;
+
+  A11Y_TRYBLOCK_END
 }
diff --git a/accessible/windows/ia2/ia2AccessibleComponent.cpp b/accessible/windows/ia2/ia2AccessibleComponent.cpp
index 2c9cd0ab4..f32c09d1e 100644
--- a/accessible/windows/ia2/ia2AccessibleComponent.cpp
+++ b/accessible/windows/ia2/ia2AccessibleComponent.cpp
@@ -41,6 +41,8 @@ ia2AccessibleComponent::QueryInterface(REFIID iid, void** ppv)
 STDMETHODIMP
 ia2AccessibleComponent::get_locationInParent(long* aX, long* aY)
 {
+  A11Y_TRYBLOCK_BEGIN
+
   if (!aX || !aY)
     return E_INVALIDARG;
 
@@ -73,11 +75,15 @@ ia2AccessibleComponent::get_locationInParent(long* aX, long* aY)
   *aX = rect.x - parentRect.x;
   *aY = rect.y - parentRect.y;
   return S_OK;
+
+  A11Y_TRYBLOCK_END
 }
 
 STDMETHODIMP
 ia2AccessibleComponent::get_foreground(IA2Color* aForeground)
 {
+  A11Y_TRYBLOCK_BEGIN
+
   if (!aForeground)
     return E_INVALIDARG;
 
@@ -92,11 +98,15 @@ ia2AccessibleComponent::get_foreground(IA2Color* aForeground)
     *aForeground = frame->StyleColor()->mColor;
 
   return S_OK;
+
+  A11Y_TRYBLOCK_END
 }
 
 STDMETHODIMP
 ia2AccessibleComponent::get_background(IA2Color* aBackground)
 {
+  A11Y_TRYBLOCK_BEGIN
+
   if (!aBackground)
     return E_INVALIDARG;
 
@@ -111,5 +121,7 @@ ia2AccessibleComponent::get_background(IA2Color* aBackground)
     *aBackground = frame->StyleBackground()->mBackgroundColor;
 
   return S_OK;
+
+  A11Y_TRYBLOCK_END
 }
 
diff --git a/accessible/windows/ia2/ia2AccessibleEditableText.cpp b/accessible/windows/ia2/ia2AccessibleEditableText.cpp
index 0b433bf6d..361d6a130 100644
--- a/accessible/windows/ia2/ia2AccessibleEditableText.cpp
+++ b/accessible/windows/ia2/ia2AccessibleEditableText.cpp
@@ -22,6 +22,8 @@ using namespace mozilla::a11y;
 STDMETHODIMP
 ia2AccessibleEditableText::copyText(long aStartOffset, long aEndOffset)
 {
+  A11Y_TRYBLOCK_BEGIN
+
   MOZ_ASSERT(!HyperTextProxyFor(this));
 
   HyperTextAccessible* textAcc = static_cast<HyperTextAccessibleWrap*>(this);
@@ -33,11 +35,15 @@ ia2AccessibleEditableText::copyText(long aStartOffset, long aEndOffset)
 
   textAcc->CopyText(aStartOffset, aEndOffset);
   return S_OK;
+
+  A11Y_TRYBLOCK_END
 }
 
 STDMETHODIMP
 ia2AccessibleEditableText::deleteText(long aStartOffset, long aEndOffset)
 {
+  A11Y_TRYBLOCK_BEGIN
+
   MOZ_ASSERT(!HyperTextProxyFor(this));
 
   HyperTextAccessible* textAcc = static_cast<HyperTextAccessibleWrap*>(this);
@@ -49,11 +55,15 @@ ia2AccessibleEditableText::deleteText(long aStartOffset, long aEndOffset)
 
   textAcc->DeleteText(aStartOffset, aEndOffset);
   return S_OK;
+
+  A11Y_TRYBLOCK_END
 }
 
 STDMETHODIMP
 ia2AccessibleEditableText::insertText(long aOffset, BSTR *aText)
 {
+  A11Y_TRYBLOCK_BEGIN
+
   uint32_t length = ::SysStringLen(*aText);
   nsAutoString text(*aText, length);
   MOZ_ASSERT(!HyperTextProxyFor(this));
@@ -67,11 +77,15 @@ ia2AccessibleEditableText::insertText(long aOffset, BSTR *aText)
 
   textAcc->InsertText(text, aOffset);
   return S_OK;
+
+  A11Y_TRYBLOCK_END
 }
 
 STDMETHODIMP
 ia2AccessibleEditableText::cutText(long aStartOffset, long aEndOffset)
 {
+  A11Y_TRYBLOCK_BEGIN
+
   MOZ_ASSERT(!HyperTextProxyFor(this));
 
   HyperTextAccessible* textAcc = static_cast<HyperTextAccessibleWrap*>(this);
@@ -83,11 +97,15 @@ ia2AccessibleEditableText::cutText(long aStartOffset, long aEndOffset)
 
   textAcc->CutText(aStartOffset, aEndOffset);
   return S_OK;
+
+  A11Y_TRYBLOCK_END
 }
 
 STDMETHODIMP
 ia2AccessibleEditableText::pasteText(long aOffset)
 {
+  A11Y_TRYBLOCK_BEGIN
+
   MOZ_ASSERT(!HyperTextProxyFor(this));
 
   HyperTextAccessible* textAcc = static_cast<HyperTextAccessibleWrap*>(this);
@@ -99,12 +117,16 @@ ia2AccessibleEditableText::pasteText(long aOffset)
 
   textAcc->PasteText(aOffset);
   return S_OK;
+
+  A11Y_TRYBLOCK_END
 }
 
 STDMETHODIMP
 ia2AccessibleEditableText::replaceText(long aStartOffset, long aEndOffset,
                                        BSTR *aText)
 {
+  A11Y_TRYBLOCK_BEGIN
+
   HyperTextAccessible* textAcc = static_cast<HyperTextAccessibleWrap*>(this);
   if (textAcc->IsDefunct())
     return CO_E_OBJNOTCONNECTED;
@@ -119,6 +141,8 @@ ia2AccessibleEditableText::replaceText(long aStartOffset, long aEndOffset,
   textAcc->InsertText(text, aStartOffset);
 
   return S_OK;
+
+  A11Y_TRYBLOCK_END
 }
 
 STDMETHODIMP
diff --git a/accessible/windows/ia2/ia2AccessibleHyperlink.cpp b/accessible/windows/ia2/ia2AccessibleHyperlink.cpp
index d36c0ef25..c6d564103 100644
--- a/accessible/windows/ia2/ia2AccessibleHyperlink.cpp
+++ b/accessible/windows/ia2/ia2AccessibleHyperlink.cpp
@@ -45,6 +45,8 @@ ia2AccessibleHyperlink::QueryInterface(REFIID iid, void** ppv)
 STDMETHODIMP
 ia2AccessibleHyperlink::get_anchor(long aIndex, VARIANT* aAnchor)
 {
+  A11Y_TRYBLOCK_BEGIN
+
   if (!aAnchor)
     return E_INVALIDARG;
 
@@ -75,11 +77,15 @@ ia2AccessibleHyperlink::get_anchor(long aIndex, VARIANT* aAnchor)
   aAnchor->punkVal = static_cast<IUnknown*>(instancePtr);
   aAnchor->vt = VT_UNKNOWN;
   return S_OK;
+
+  A11Y_TRYBLOCK_END
 }
 
 STDMETHODIMP
 ia2AccessibleHyperlink::get_anchorTarget(long aIndex, VARIANT* aAnchorTarget)
 {
+  A11Y_TRYBLOCK_BEGIN
+
   if (!aAnchorTarget) {
     return E_INVALIDARG;
   }
@@ -118,11 +124,15 @@ ia2AccessibleHyperlink::get_anchorTarget(long aIndex, VARIANT* aAnchorTarget)
   aAnchorTarget->bstrVal = ::SysAllocStringLen(stringURI.get(),
                                                stringURI.Length());
   return aAnchorTarget->bstrVal ? S_OK : E_OUTOFMEMORY;
+
+  A11Y_TRYBLOCK_END
 }
 
 STDMETHODIMP
 ia2AccessibleHyperlink::get_startIndex(long* aIndex)
 {
+  A11Y_TRYBLOCK_BEGIN
+
   if (!aIndex)
     return E_INVALIDARG;
 
@@ -139,11 +149,15 @@ ia2AccessibleHyperlink::get_startIndex(long* aIndex)
 
   *aIndex = thisObj->StartOffset();
   return S_OK;
+
+  A11Y_TRYBLOCK_END
 }
 
 STDMETHODIMP
 ia2AccessibleHyperlink::get_endIndex(long* aIndex)
 {
+  A11Y_TRYBLOCK_BEGIN
+
   if (!aIndex)
     return E_INVALIDARG;
 
@@ -160,11 +174,15 @@ ia2AccessibleHyperlink::get_endIndex(long* aIndex)
 
   *aIndex = thisObj->EndOffset();
   return S_OK;
+
+  A11Y_TRYBLOCK_END
 }
 
 STDMETHODIMP
 ia2AccessibleHyperlink::get_valid(boolean* aValid)
 {
+  A11Y_TRYBLOCK_BEGIN
+
   if (!aValid)
     return E_INVALIDARG;
 
@@ -181,5 +199,7 @@ ia2AccessibleHyperlink::get_valid(boolean* aValid)
 
   *aValid = thisObj->IsLinkValid();
   return S_OK;
+
+  A11Y_TRYBLOCK_END
 }
 
diff --git a/accessible/windows/ia2/ia2AccessibleHypertext.cpp b/accessible/windows/ia2/ia2AccessibleHypertext.cpp
index 555bde686..f4b3bdaf2 100644
--- a/accessible/windows/ia2/ia2AccessibleHypertext.cpp
+++ b/accessible/windows/ia2/ia2AccessibleHypertext.cpp
@@ -19,6 +19,8 @@ using namespace mozilla::a11y;
 STDMETHODIMP
 ia2AccessibleHypertext::get_nHyperlinks(long* aHyperlinkCount)
 {
+  A11Y_TRYBLOCK_BEGIN
+
   if (!aHyperlinkCount)
     return E_INVALIDARG;
 
@@ -32,12 +34,16 @@ ia2AccessibleHypertext::get_nHyperlinks(long* aHyperlinkCount)
 
   *aHyperlinkCount = hyperText->LinkCount();
   return S_OK;
+
+  A11Y_TRYBLOCK_END
 }
 
 STDMETHODIMP
 ia2AccessibleHypertext::get_hyperlink(long aLinkIndex,
                                       IAccessibleHyperlink** aHyperlink)
 {
+  A11Y_TRYBLOCK_BEGIN
+
   if (!aHyperlink)
     return E_INVALIDARG;
 
@@ -59,11 +65,15 @@ ia2AccessibleHypertext::get_hyperlink(long aLinkIndex,
     static_cast<IAccessibleHyperlink*>(hyperLink);
   (*aHyperlink)->AddRef();
   return S_OK;
+
+  A11Y_TRYBLOCK_END
 }
 
 STDMETHODIMP
 ia2AccessibleHypertext::get_hyperlinkIndex(long aCharIndex, long* aHyperlinkIndex)
 {
+  A11Y_TRYBLOCK_BEGIN
+
   if (!aHyperlinkIndex)
     return E_INVALIDARG;
 
@@ -77,5 +87,7 @@ ia2AccessibleHypertext::get_hyperlinkIndex(long aCharIndex, long* aHyperlinkInde
 
   *aHyperlinkIndex = hyperAcc->LinkIndexAtOffset(aCharIndex);
   return S_OK;
+
+  A11Y_TRYBLOCK_END
 }
 
diff --git a/accessible/windows/ia2/ia2AccessibleImage.cpp b/accessible/windows/ia2/ia2AccessibleImage.cpp
index 7dc7f765c..989fde925 100644
--- a/accessible/windows/ia2/ia2AccessibleImage.cpp
+++ b/accessible/windows/ia2/ia2AccessibleImage.cpp
@@ -43,6 +43,8 @@ ia2AccessibleImage::QueryInterface(REFIID iid, void** ppv)
 STDMETHODIMP
 ia2AccessibleImage::get_description(BSTR* aDescription)
 {
+  A11Y_TRYBLOCK_BEGIN
+
   if (!aDescription)
     return E_INVALIDARG;
 
@@ -59,6 +61,8 @@ ia2AccessibleImage::get_description(BSTR* aDescription)
 
   *aDescription = ::SysAllocStringLen(description.get(), description.Length());
   return *aDescription ? S_OK : E_OUTOFMEMORY;
+
+  A11Y_TRYBLOCK_END
 }
 
 STDMETHODIMP
@@ -66,6 +70,8 @@ ia2AccessibleImage::get_imagePosition(enum IA2CoordinateType aCoordType,
                                       long* aX,
                                       long* aY)
 {
+  A11Y_TRYBLOCK_BEGIN
+
   if (!aX || !aY)
     return E_INVALIDARG;
 
@@ -84,11 +90,15 @@ ia2AccessibleImage::get_imagePosition(enum IA2CoordinateType aCoordType,
   *aX = pos.x;
   *aY = pos.y;
   return S_OK;
+
+  A11Y_TRYBLOCK_END
 }
 
 STDMETHODIMP
 ia2AccessibleImage::get_imageSize(long* aHeight, long* aWidth)
 {
+  A11Y_TRYBLOCK_BEGIN
+
   if (!aHeight || !aWidth)
     return E_INVALIDARG;
 
@@ -103,5 +113,7 @@ ia2AccessibleImage::get_imageSize(long* aHeight, long* aWidth)
   *aHeight = size.width;
   *aWidth = size.height;
   return S_OK;
+
+  A11Y_TRYBLOCK_END
 }
 
diff --git a/accessible/windows/ia2/ia2AccessibleRelation.cpp b/accessible/windows/ia2/ia2AccessibleRelation.cpp
index 67435ee52..cc6fd83c8 100644
--- a/accessible/windows/ia2/ia2AccessibleRelation.cpp
+++ b/accessible/windows/ia2/ia2AccessibleRelation.cpp
@@ -34,6 +34,8 @@ IMPL_IUNKNOWN_QUERY_TAIL
 STDMETHODIMP
 ia2AccessibleRelation::get_relationType(BSTR* aRelationType)
 {
+  A11Y_TRYBLOCK_BEGIN
+
   if (!aRelationType)
     return E_INVALIDARG;
 
@@ -49,31 +51,43 @@ ia2AccessibleRelation::get_relationType(BSTR* aRelationType)
   }
 
   return *aRelationType ? S_OK : E_OUTOFMEMORY;
+
+  A11Y_TRYBLOCK_END
 }
 
 STDMETHODIMP
 ia2AccessibleRelation::get_localizedRelationType(BSTR *aLocalizedRelationType)
 {
+  A11Y_TRYBLOCK_BEGIN
+
   if (!aLocalizedRelationType)
     return E_INVALIDARG;
 
   *aLocalizedRelationType = nullptr;
   return E_NOTIMPL;
+
+  A11Y_TRYBLOCK_END
 }
 
 STDMETHODIMP
 ia2AccessibleRelation::get_nTargets(long *aNTargets)
 {
+  A11Y_TRYBLOCK_BEGIN
+
  if (!aNTargets)
    return E_INVALIDARG;
 
  *aNTargets = mTargets.Length();
   return S_OK;
+
+  A11Y_TRYBLOCK_END
 }
 
 STDMETHODIMP
 ia2AccessibleRelation::get_target(long aTargetIndex, IUnknown **aTarget)
 {
+  A11Y_TRYBLOCK_BEGIN
+
   if (aTargetIndex < 0 || (uint32_t)aTargetIndex >= mTargets.Length() || !aTarget)
     return E_INVALIDARG;
 
@@ -83,12 +97,16 @@ ia2AccessibleRelation::get_target(long aTargetIndex, IUnknown **aTarget)
   (*aTarget)->AddRef();
 
   return S_OK;
+
+  A11Y_TRYBLOCK_END
 }
 
 STDMETHODIMP
 ia2AccessibleRelation::get_targets(long aMaxTargets, IUnknown **aTargets,
                                    long *aNTargets)
 {
+  A11Y_TRYBLOCK_BEGIN
+
   if (!aNTargets || !aTargets)
     return E_INVALIDARG;
 
@@ -102,4 +120,6 @@ ia2AccessibleRelation::get_targets(long aMaxTargets, IUnknown **aTargets,
 
   *aNTargets = maxTargets;
   return S_OK;
+
+  A11Y_TRYBLOCK_END
 }
diff --git a/accessible/windows/ia2/ia2AccessibleTable.cpp b/accessible/windows/ia2/ia2AccessibleTable.cpp
index a99f72def..6ac6bbab4 100644
--- a/accessible/windows/ia2/ia2AccessibleTable.cpp
+++ b/accessible/windows/ia2/ia2AccessibleTable.cpp
@@ -60,6 +60,8 @@ ia2AccessibleTable::get_accessibleAt(long aRowIdx, long aColIdx,
 STDMETHODIMP
 ia2AccessibleTable::get_caption(IUnknown** aAccessible)
 {
+  A11Y_TRYBLOCK_BEGIN
+
   if (!aAccessible)
     return E_INVALIDARG;
 
@@ -73,12 +75,16 @@ ia2AccessibleTable::get_caption(IUnknown** aAccessible)
 
   (*aAccessible = static_cast<IAccessible*>(caption))->AddRef();
   return S_OK;
+
+  A11Y_TRYBLOCK_END
 }
 
 STDMETHODIMP
 ia2AccessibleTable::get_childIndex(long aRowIdx, long aColIdx,
                                    long* aChildIdx)
 {
+  A11Y_TRYBLOCK_BEGIN
+
   if (!aChildIdx)
     return E_INVALIDARG;
 
@@ -93,11 +99,15 @@ ia2AccessibleTable::get_childIndex(long aRowIdx, long aColIdx,
 
   *aChildIdx = mTable->CellIndexAt(aRowIdx, aColIdx);
   return S_OK;
+
+  A11Y_TRYBLOCK_END
 }
 
 STDMETHODIMP
 ia2AccessibleTable::get_columnDescription(long aColIdx, BSTR* aDescription)
 {
+  A11Y_TRYBLOCK_BEGIN
+
   if (!aDescription)
     return E_INVALIDARG;
 
@@ -115,12 +125,16 @@ ia2AccessibleTable::get_columnDescription(long aColIdx, BSTR* aDescription)
 
   *aDescription = ::SysAllocStringLen(descr.get(), descr.Length());
   return *aDescription ? S_OK : E_OUTOFMEMORY;
+
+  A11Y_TRYBLOCK_END
 }
 
 STDMETHODIMP
 ia2AccessibleTable::get_columnExtentAt(long aRowIdx, long aColIdx,
                                       long* aSpan)
 {
+  A11Y_TRYBLOCK_BEGIN
+
   if (!aSpan)
     return E_INVALIDARG;
 
@@ -135,23 +149,31 @@ ia2AccessibleTable::get_columnExtentAt(long aRowIdx, long aColIdx,
 
   *aSpan = mTable->ColExtentAt(aRowIdx, aColIdx);
   return S_OK;
+
+  A11Y_TRYBLOCK_END
 }
 
 STDMETHODIMP
 ia2AccessibleTable::get_columnHeader(IAccessibleTable** aAccessibleTable,
                                     long* aStartingRowIndex)
 {
+  A11Y_TRYBLOCK_BEGIN
+
   if (!aAccessibleTable || !aStartingRowIndex)
     return E_INVALIDARG;
 
   *aAccessibleTable = nullptr;
   *aStartingRowIndex = -1;
   return E_NOTIMPL;
+
+  A11Y_TRYBLOCK_END
 }
 
 STDMETHODIMP
 ia2AccessibleTable::get_columnIndex(long aCellIdx, long* aColIdx)
 {
+  A11Y_TRYBLOCK_BEGIN
+
   if (!aColIdx)
     return E_INVALIDARG;
 
@@ -165,11 +187,15 @@ ia2AccessibleTable::get_columnIndex(long aCellIdx, long* aColIdx)
 
   *aColIdx = mTable->ColIndexAt(aCellIdx);
   return S_OK;
+
+  A11Y_TRYBLOCK_END
 }
 
 STDMETHODIMP
 ia2AccessibleTable::get_nColumns(long* aColCount)
 {
+  A11Y_TRYBLOCK_BEGIN
+
   if (!aColCount)
     return E_INVALIDARG;
 
@@ -179,11 +205,15 @@ ia2AccessibleTable::get_nColumns(long* aColCount)
 
   *aColCount = mTable->ColCount();
   return S_OK;
+
+  A11Y_TRYBLOCK_END
 }
 
 STDMETHODIMP
 ia2AccessibleTable::get_nRows(long* aRowCount)
 {
+  A11Y_TRYBLOCK_BEGIN
+
   if (!aRowCount)
     return E_INVALIDARG;
 
@@ -193,6 +223,8 @@ ia2AccessibleTable::get_nRows(long* aRowCount)
 
   *aRowCount = mTable->RowCount();
   return S_OK;
+
+  A11Y_TRYBLOCK_END
 }
 
 STDMETHODIMP
@@ -204,6 +236,8 @@ ia2AccessibleTable::get_nSelectedChildren(long* aChildCount)
 STDMETHODIMP
 ia2AccessibleTable::get_nSelectedColumns(long* aColCount)
 {
+  A11Y_TRYBLOCK_BEGIN
+
   if (!aColCount)
     return E_INVALIDARG;
 
@@ -213,11 +247,15 @@ ia2AccessibleTable::get_nSelectedColumns(long* aColCount)
 
   *aColCount = mTable->SelectedColCount();
   return S_OK;
+
+  A11Y_TRYBLOCK_END
 }
 
 STDMETHODIMP
 ia2AccessibleTable::get_nSelectedRows(long* aRowCount)
 {
+  A11Y_TRYBLOCK_BEGIN
+
   if (!aRowCount)
     return E_INVALIDARG;
 
@@ -228,11 +266,15 @@ ia2AccessibleTable::get_nSelectedRows(long* aRowCount)
   *aRowCount = mTable->SelectedRowCount();
 
   return S_OK;
+
+  A11Y_TRYBLOCK_END
 }
 
 STDMETHODIMP
 ia2AccessibleTable::get_rowDescription(long aRowIdx, BSTR* aDescription)
 {
+  A11Y_TRYBLOCK_BEGIN
+
   if (!aDescription)
     return E_INVALIDARG;
 
@@ -250,11 +292,15 @@ ia2AccessibleTable::get_rowDescription(long aRowIdx, BSTR* aDescription)
 
   *aDescription = ::SysAllocStringLen(descr.get(), descr.Length());
   return *aDescription ? S_OK : E_OUTOFMEMORY;
+
+  A11Y_TRYBLOCK_END
 }
 
 STDMETHODIMP
 ia2AccessibleTable::get_rowExtentAt(long aRowIdx, long aColIdx, long* aSpan)
 {
+  A11Y_TRYBLOCK_BEGIN
+
   if (!aSpan)
     return E_INVALIDARG;
 
@@ -269,23 +315,31 @@ ia2AccessibleTable::get_rowExtentAt(long aRowIdx, long aColIdx, long* aSpan)
 
   *aSpan = mTable->RowExtentAt(aRowIdx, aColIdx);
   return S_OK;
+
+  A11Y_TRYBLOCK_END
 }
 
 STDMETHODIMP
 ia2AccessibleTable::get_rowHeader(IAccessibleTable** aAccessibleTable,
                                   long* aStartingColumnIndex)
 {
+  A11Y_TRYBLOCK_BEGIN
+
   if (!aAccessibleTable || !aStartingColumnIndex)
     return E_INVALIDARG;
 
   *aAccessibleTable = nullptr;
   *aStartingColumnIndex = -1;
   return E_NOTIMPL;
+
+  A11Y_TRYBLOCK_END
 }
 
 STDMETHODIMP
 ia2AccessibleTable::get_rowIndex(long aCellIdx, long* aRowIdx)
 {
+  A11Y_TRYBLOCK_BEGIN
+
   if (!aRowIdx)
     return E_INVALIDARG;
 
@@ -299,12 +353,16 @@ ia2AccessibleTable::get_rowIndex(long aCellIdx, long* aRowIdx)
 
   *aRowIdx = mTable->RowIndexAt(aCellIdx);
   return S_OK;
+
+  A11Y_TRYBLOCK_END
 }
 
 STDMETHODIMP
 ia2AccessibleTable::get_selectedChildren(long aMaxChildren, long** aChildren,
                                          long* aNChildren)
 {
+  A11Y_TRYBLOCK_BEGIN
+
   if (!aChildren || !aNChildren)
     return E_INVALIDARG;
 
@@ -326,24 +384,36 @@ ia2AccessibleTable::get_selectedChildren(long aMaxChildren, long** aChildren,
     (*aChildren)[i] = cellIndices[i];
 
   return S_OK;
+
+  A11Y_TRYBLOCK_END
 }
 
 STDMETHODIMP
 ia2AccessibleTable::get_selectedColumns(long aMaxColumns, long** aColumns,
                                         long* aNColumns)
 {
+  A11Y_TRYBLOCK_BEGIN
+
   return get_selectedColumns(aColumns, aNColumns);
+
+  A11Y_TRYBLOCK_END
 }
 
 STDMETHODIMP
 ia2AccessibleTable::get_selectedRows(long aMaxRows, long** aRows, long* aNRows)
 {
+  A11Y_TRYBLOCK_BEGIN
+
   return get_selectedRows(aRows, aNRows);
+
+  A11Y_TRYBLOCK_END
 }
 
 STDMETHODIMP
 ia2AccessibleTable::get_summary(IUnknown** aAccessible)
 {
+  A11Y_TRYBLOCK_BEGIN
+
   if (!aAccessible)
     return E_INVALIDARG;
 
@@ -354,11 +424,15 @@ ia2AccessibleTable::get_summary(IUnknown** aAccessible)
 
   *aAccessible = nullptr;
   return S_FALSE;
+
+  A11Y_TRYBLOCK_END
 }
 
 STDMETHODIMP
 ia2AccessibleTable::get_isColumnSelected(long aColIdx, boolean* aIsSelected)
 {
+  A11Y_TRYBLOCK_BEGIN
+
   if (!aIsSelected)
     return E_INVALIDARG;
 
@@ -371,11 +445,15 @@ ia2AccessibleTable::get_isColumnSelected(long aColIdx, boolean* aIsSelected)
 
   *aIsSelected = mTable->IsColSelected(aColIdx);
   return S_OK;
+
+  A11Y_TRYBLOCK_END
 }
 
 STDMETHODIMP
 ia2AccessibleTable::get_isRowSelected(long aRowIdx, boolean* aIsSelected)
 {
+  A11Y_TRYBLOCK_BEGIN
+
   if (!aIsSelected)
     return E_INVALIDARG;
 
@@ -388,12 +466,16 @@ ia2AccessibleTable::get_isRowSelected(long aRowIdx, boolean* aIsSelected)
 
   *aIsSelected = mTable->IsRowSelected(aRowIdx);
   return S_OK;
+
+  A11Y_TRYBLOCK_END
 }
 
 STDMETHODIMP
 ia2AccessibleTable::get_isSelected(long aRowIdx, long aColIdx,
                                    boolean* aIsSelected)
 {
+  A11Y_TRYBLOCK_BEGIN
+
   if (!aIsSelected)
     return E_INVALIDARG;
 
@@ -408,11 +490,15 @@ ia2AccessibleTable::get_isSelected(long aRowIdx, long aColIdx,
 
   *aIsSelected = mTable->IsCellSelected(aRowIdx, aColIdx);
   return S_OK;
+
+  A11Y_TRYBLOCK_END
 }
 
 STDMETHODIMP
 ia2AccessibleTable::selectRow(long aRowIdx)
 {
+  A11Y_TRYBLOCK_BEGIN
+
   if (!mTable)
     return CO_E_OBJNOTCONNECTED;
 
@@ -421,11 +507,15 @@ ia2AccessibleTable::selectRow(long aRowIdx)
 
   mTable->SelectRow(aRowIdx);
   return S_OK;
+
+  A11Y_TRYBLOCK_END
 }
 
 STDMETHODIMP
 ia2AccessibleTable::selectColumn(long aColIdx)
 {
+  A11Y_TRYBLOCK_BEGIN
+
   if (!mTable)
     return CO_E_OBJNOTCONNECTED;
 
@@ -434,11 +524,15 @@ ia2AccessibleTable::selectColumn(long aColIdx)
 
   mTable->SelectCol(aColIdx);
   return S_OK;
+
+  A11Y_TRYBLOCK_END
 }
 
 STDMETHODIMP
 ia2AccessibleTable::unselectRow(long aRowIdx)
 {
+  A11Y_TRYBLOCK_BEGIN
+
   if (!mTable)
     return CO_E_OBJNOTCONNECTED;
 
@@ -447,11 +541,15 @@ ia2AccessibleTable::unselectRow(long aRowIdx)
 
   mTable->UnselectRow(aRowIdx);
   return S_OK;
+
+  A11Y_TRYBLOCK_END
 }
 
 STDMETHODIMP
 ia2AccessibleTable::unselectColumn(long aColIdx)
 {
+  A11Y_TRYBLOCK_BEGIN
+
   if (!mTable)
     return CO_E_OBJNOTCONNECTED;
 
@@ -460,6 +558,8 @@ ia2AccessibleTable::unselectColumn(long aColIdx)
 
   mTable->UnselectCol(aColIdx);
   return S_OK;
+
+  A11Y_TRYBLOCK_END
 }
 
 STDMETHODIMP
@@ -469,6 +569,8 @@ ia2AccessibleTable::get_rowColumnExtentsAtIndex(long aCellIdx, long* aRowIdx,
                                                 long* aColExtents,
                                                 boolean* aIsSelected)
 {
+  A11Y_TRYBLOCK_BEGIN
+
   if (!aRowIdx || !aColIdx || !aRowExtents || !aColExtents || !aIsSelected)
     return E_INVALIDARG;
 
@@ -493,6 +595,8 @@ ia2AccessibleTable::get_rowColumnExtentsAtIndex(long aCellIdx, long* aRowIdx,
   *aIsSelected = mTable->IsCellSelected(rowIdx, colIdx);
 
   return S_OK;
+
+  A11Y_TRYBLOCK_END
 }
 
 STDMETHODIMP
@@ -507,6 +611,8 @@ ia2AccessibleTable::get_modelChange(IA2TableModelChange* aModelChange)
 STDMETHODIMP
 ia2AccessibleTable::get_cellAt(long aRowIdx, long aColIdx, IUnknown** aCell)
 {
+  A11Y_TRYBLOCK_BEGIN
+
   if (!aCell)
     return E_INVALIDARG;
 
@@ -522,11 +628,15 @@ ia2AccessibleTable::get_cellAt(long aRowIdx, long aColIdx, IUnknown** aCell)
 
   (*aCell = static_cast<IAccessible*>(cell))->AddRef();
   return S_OK;
+
+  A11Y_TRYBLOCK_END
 }
 
 STDMETHODIMP
 ia2AccessibleTable::get_nSelectedCells(long* aCellCount)
 {
+  A11Y_TRYBLOCK_BEGIN
+
   if (!aCellCount)
     return E_INVALIDARG;
 
@@ -536,11 +646,15 @@ ia2AccessibleTable::get_nSelectedCells(long* aCellCount)
 
   *aCellCount = mTable->SelectedCellCount();
   return S_OK;
+
+  A11Y_TRYBLOCK_END
 }
 
 STDMETHODIMP
 ia2AccessibleTable::get_selectedCells(IUnknown*** aCells, long* aNSelectedCells)
 {
+  A11Y_TRYBLOCK_BEGIN
+
   if (!aCells || !aNSelectedCells)
     return E_INVALIDARG;
 
@@ -568,11 +682,15 @@ ia2AccessibleTable::get_selectedCells(IUnknown*** aCells, long* aNSelectedCells)
 
   *aNSelectedCells = cells.Length();
   return S_OK;
+
+  A11Y_TRYBLOCK_END
 }
 
 STDMETHODIMP
 ia2AccessibleTable::get_selectedColumns(long** aColumns, long* aNColumns)
 {
+  A11Y_TRYBLOCK_BEGIN
+
   if (!aColumns || !aNColumns)
     return E_INVALIDARG;
 
@@ -594,11 +712,15 @@ ia2AccessibleTable::get_selectedColumns(long** aColumns, long* aNColumns)
     (*aColumns)[i] = colIndices[i];
 
   return S_OK;
+
+  A11Y_TRYBLOCK_END
 }
 
 STDMETHODIMP
 ia2AccessibleTable::get_selectedRows(long** aRows, long* aNRows)
 {
+  A11Y_TRYBLOCK_BEGIN
+
   if (!aRows || !aNRows)
     return E_INVALIDARG;
 
@@ -620,4 +742,6 @@ ia2AccessibleTable::get_selectedRows(long** aRows, long* aNRows)
     (*aRows)[i] = rowIndices[i];
 
   return S_OK;
+
+  A11Y_TRYBLOCK_END
 }
diff --git a/accessible/windows/ia2/ia2AccessibleTableCell.cpp b/accessible/windows/ia2/ia2AccessibleTableCell.cpp
index 19cfc55da..e625a7049 100644
--- a/accessible/windows/ia2/ia2AccessibleTableCell.cpp
+++ b/accessible/windows/ia2/ia2AccessibleTableCell.cpp
@@ -46,6 +46,8 @@ ia2AccessibleTableCell::QueryInterface(REFIID iid, void** ppv)
 STDMETHODIMP
 ia2AccessibleTableCell::get_table(IUnknown** aTable)
 {
+  A11Y_TRYBLOCK_BEGIN
+
   if (!aTable)
     return E_INVALIDARG;
 
@@ -61,11 +63,15 @@ ia2AccessibleTableCell::get_table(IUnknown** aTable)
   *aTable = static_cast<IAccessible*>(wrap);
   (*aTable)->AddRef();
   return S_OK;
+
+  A11Y_TRYBLOCK_END
 }
 
 STDMETHODIMP
 ia2AccessibleTableCell::get_columnExtent(long* aSpan)
 {
+  A11Y_TRYBLOCK_BEGIN
+
   if (!aSpan)
     return E_INVALIDARG;
 
@@ -76,12 +82,16 @@ ia2AccessibleTableCell::get_columnExtent(long* aSpan)
   *aSpan = mTableCell->ColExtent();
 
   return S_OK;
+
+  A11Y_TRYBLOCK_END
 }
 
 STDMETHODIMP
 ia2AccessibleTableCell::get_columnHeaderCells(IUnknown*** aCellAccessibles,
                                               long* aNColumnHeaderCells)
 {
+  A11Y_TRYBLOCK_BEGIN
+
   if (!aCellAccessibles || !aNColumnHeaderCells)
     return E_INVALIDARG;
 
@@ -108,11 +118,15 @@ ia2AccessibleTableCell::get_columnHeaderCells(IUnknown*** aCellAccessibles,
   }
 
   return S_OK;
+
+  A11Y_TRYBLOCK_END
 }
 
 STDMETHODIMP
 ia2AccessibleTableCell::get_columnIndex(long* aColIdx)
 {
+  A11Y_TRYBLOCK_BEGIN
+
   if (!aColIdx)
     return E_INVALIDARG;
 
@@ -122,11 +136,15 @@ ia2AccessibleTableCell::get_columnIndex(long* aColIdx)
 
   *aColIdx = mTableCell->ColIdx();
   return S_OK;
+
+  A11Y_TRYBLOCK_END
 }
 
 STDMETHODIMP
 ia2AccessibleTableCell::get_rowExtent(long* aSpan)
 {
+  A11Y_TRYBLOCK_BEGIN
+
   if (!aSpan)
     return E_INVALIDARG;
 
@@ -136,12 +154,16 @@ ia2AccessibleTableCell::get_rowExtent(long* aSpan)
 
   *aSpan = mTableCell->RowExtent();
   return S_OK;
+
+  A11Y_TRYBLOCK_END
 }
 
 STDMETHODIMP
 ia2AccessibleTableCell::get_rowHeaderCells(IUnknown*** aCellAccessibles,
                                            long* aNRowHeaderCells)
 {
+  A11Y_TRYBLOCK_BEGIN
+
   if (!aCellAccessibles || !aNRowHeaderCells)
     return E_INVALIDARG;
 
@@ -167,11 +189,15 @@ ia2AccessibleTableCell::get_rowHeaderCells(IUnknown*** aCellAccessibles,
   }
 
   return S_OK;
+
+  A11Y_TRYBLOCK_END
 }
 
 STDMETHODIMP
 ia2AccessibleTableCell::get_rowIndex(long* aRowIdx)
 {
+  A11Y_TRYBLOCK_BEGIN
+
   if (!aRowIdx)
     return E_INVALIDARG;
 
@@ -181,6 +207,8 @@ ia2AccessibleTableCell::get_rowIndex(long* aRowIdx)
 
   *aRowIdx = mTableCell->RowIdx();
   return S_OK;
+
+  A11Y_TRYBLOCK_END
 }
 
 STDMETHODIMP
@@ -189,6 +217,8 @@ ia2AccessibleTableCell::get_rowColumnExtents(long* aRowIdx, long* aColIdx,
                                              long* aColExtents,
                                              boolean* aIsSelected)
 {
+  A11Y_TRYBLOCK_BEGIN
+
   if (!aRowIdx || !aColIdx || !aRowExtents || !aColExtents || !aIsSelected)
     return E_INVALIDARG;
 
@@ -204,11 +234,15 @@ ia2AccessibleTableCell::get_rowColumnExtents(long* aRowIdx, long* aColIdx,
   *aIsSelected = mTableCell->Selected();
 
   return S_OK;
+
+  A11Y_TRYBLOCK_END
 }
 
 STDMETHODIMP
 ia2AccessibleTableCell::get_isSelected(boolean* aIsSelected)
 {
+  A11Y_TRYBLOCK_BEGIN
+
   if (!aIsSelected)
     return E_INVALIDARG;
 
@@ -218,4 +252,6 @@ ia2AccessibleTableCell::get_isSelected(boolean* aIsSelected)
 
   *aIsSelected = mTableCell->Selected();
   return S_OK;
+
+  A11Y_TRYBLOCK_END
 }
diff --git a/accessible/windows/ia2/ia2AccessibleText.cpp b/accessible/windows/ia2/ia2AccessibleText.cpp
index 86b3abdf6..7ac766f30 100644
--- a/accessible/windows/ia2/ia2AccessibleText.cpp
+++ b/accessible/windows/ia2/ia2AccessibleText.cpp
@@ -28,6 +28,8 @@ bool ia2AccessibleText::sLastTextChangeWasInsert = false;
 STDMETHODIMP
 ia2AccessibleText::addSelection(long aStartOffset, long aEndOffset)
 {
+  A11Y_TRYBLOCK_BEGIN
+
   MOZ_ASSERT(!HyperTextProxyFor(this));
 
   HyperTextAccessible* textAcc = static_cast<HyperTextAccessibleWrap*>(this);
@@ -36,12 +38,16 @@ ia2AccessibleText::addSelection(long aStartOffset, long aEndOffset)
 
   return textAcc->AddToSelection(aStartOffset, aEndOffset) ?
     S_OK : E_INVALIDARG;
+
+  A11Y_TRYBLOCK_END
 }
 
 STDMETHODIMP
 ia2AccessibleText::get_attributes(long aOffset, long *aStartOffset,
                                   long *aEndOffset, BSTR *aTextAttributes)
 {
+  A11Y_TRYBLOCK_BEGIN
+
   if (!aStartOffset || !aEndOffset || !aTextAttributes)
     return E_INVALIDARG;
 
@@ -68,11 +74,15 @@ ia2AccessibleText::get_attributes(long aOffset, long *aStartOffset,
   *aEndOffset = endOffset;
 
   return S_OK;
+
+  A11Y_TRYBLOCK_END
 }
 
 STDMETHODIMP
 ia2AccessibleText::get_caretOffset(long *aOffset)
 {
+  A11Y_TRYBLOCK_BEGIN
+
   if (!aOffset)
     return E_INVALIDARG;
 
@@ -87,6 +97,8 @@ ia2AccessibleText::get_caretOffset(long *aOffset)
   *aOffset = textAcc->CaretOffset();
 
   return *aOffset != -1 ? S_OK : S_FALSE;
+
+  A11Y_TRYBLOCK_END
 }
 
 STDMETHODIMP
@@ -95,6 +107,8 @@ ia2AccessibleText::get_characterExtents(long aOffset,
                                         long* aX, long* aY,
                                         long* aWidth, long* aHeight)
 {
+  A11Y_TRYBLOCK_BEGIN
+
   if (!aX || !aY || !aWidth || !aHeight)
     return E_INVALIDARG;
   *aX = *aY = *aWidth = *aHeight = 0;
@@ -115,11 +129,15 @@ ia2AccessibleText::get_characterExtents(long aOffset,
   *aWidth = rect.width;
   *aHeight = rect.height;
   return S_OK;
+
+  A11Y_TRYBLOCK_END
 }
 
 STDMETHODIMP
 ia2AccessibleText::get_nSelections(long* aNSelections)
 {
+  A11Y_TRYBLOCK_BEGIN
+
   if (!aNSelections)
     return E_INVALIDARG;
   *aNSelections = 0;
@@ -133,6 +151,8 @@ ia2AccessibleText::get_nSelections(long* aNSelections)
   *aNSelections = textAcc->SelectionCount();
 
   return S_OK;
+
+  A11Y_TRYBLOCK_END
 }
 
 STDMETHODIMP
@@ -140,6 +160,8 @@ ia2AccessibleText::get_offsetAtPoint(long aX, long aY,
                                      enum IA2CoordinateType aCoordType,
                                      long* aOffset)
 {
+  A11Y_TRYBLOCK_BEGIN
+
   if (!aOffset)
     return E_INVALIDARG;
   *aOffset = 0;
@@ -157,12 +179,16 @@ ia2AccessibleText::get_offsetAtPoint(long aX, long aY,
   *aOffset = textAcc->OffsetAtPoint(aX, aY, geckoCoordType);
 
   return *aOffset == -1 ? S_FALSE : S_OK;
+
+  A11Y_TRYBLOCK_END
 }
 
 STDMETHODIMP
 ia2AccessibleText::get_selection(long aSelectionIndex, long* aStartOffset,
                                  long* aEndOffset)
 {
+  A11Y_TRYBLOCK_BEGIN
+
   if (!aStartOffset || !aEndOffset)
     return E_INVALIDARG;
   *aStartOffset = *aEndOffset = 0;
@@ -181,11 +207,15 @@ ia2AccessibleText::get_selection(long aSelectionIndex, long* aStartOffset,
   *aStartOffset = startOffset;
   *aEndOffset = endOffset;
   return S_OK;
+
+  A11Y_TRYBLOCK_END
 }
 
 STDMETHODIMP
 ia2AccessibleText::get_text(long aStartOffset, long aEndOffset, BSTR* aText)
 {
+  A11Y_TRYBLOCK_BEGIN
+
   if (!aText)
     return E_INVALIDARG;
 
@@ -209,6 +239,8 @@ ia2AccessibleText::get_text(long aStartOffset, long aEndOffset, BSTR* aText)
 
   *aText = ::SysAllocStringLen(text.get(), text.Length());
   return *aText ? S_OK : E_OUTOFMEMORY;
+
+  A11Y_TRYBLOCK_END
 }
 
 STDMETHODIMP
@@ -217,6 +249,8 @@ ia2AccessibleText::get_textBeforeOffset(long aOffset,
                                         long* aStartOffset, long* aEndOffset,
                                         BSTR* aText)
 {
+  A11Y_TRYBLOCK_BEGIN
+
   if (!aStartOffset || !aEndOffset || !aText)
     return E_INVALIDARG;
 
@@ -253,6 +287,8 @@ ia2AccessibleText::get_textBeforeOffset(long aOffset,
 
   *aText = ::SysAllocStringLen(text.get(), text.Length());
   return *aText ? S_OK : E_OUTOFMEMORY;
+
+  A11Y_TRYBLOCK_END
 }
 
 STDMETHODIMP
@@ -261,6 +297,8 @@ ia2AccessibleText::get_textAfterOffset(long aOffset,
                                        long* aStartOffset, long* aEndOffset,
                                        BSTR* aText)
 {
+  A11Y_TRYBLOCK_BEGIN
+
   if (!aStartOffset || !aEndOffset || !aText)
     return E_INVALIDARG;
 
@@ -297,6 +335,8 @@ ia2AccessibleText::get_textAfterOffset(long aOffset,
 
   *aText = ::SysAllocStringLen(text.get(), text.Length());
   return *aText ? S_OK : E_OUTOFMEMORY;
+
+  A11Y_TRYBLOCK_END
 }
 
 STDMETHODIMP
@@ -305,6 +345,8 @@ ia2AccessibleText::get_textAtOffset(long aOffset,
                                     long* aStartOffset, long* aEndOffset,
                                     BSTR* aText)
 {
+  A11Y_TRYBLOCK_BEGIN
+
   if (!aStartOffset || !aEndOffset || !aText)
     return E_INVALIDARG;
 
@@ -339,11 +381,15 @@ ia2AccessibleText::get_textAtOffset(long aOffset,
 
   *aText = ::SysAllocStringLen(text.get(), text.Length());
   return *aText ? S_OK : E_OUTOFMEMORY;
+
+  A11Y_TRYBLOCK_END
 }
 
 STDMETHODIMP
 ia2AccessibleText::removeSelection(long aSelectionIndex)
 {
+  A11Y_TRYBLOCK_BEGIN
+
   MOZ_ASSERT(!HyperTextProxyFor(this));
 
   HyperTextAccessible* textAcc = static_cast<HyperTextAccessibleWrap*>(this);
@@ -352,11 +398,15 @@ ia2AccessibleText::removeSelection(long aSelectionIndex)
 
   return textAcc->RemoveFromSelection(aSelectionIndex) ?
     S_OK : E_INVALIDARG;
+
+  A11Y_TRYBLOCK_END
 }
 
 STDMETHODIMP
 ia2AccessibleText::setCaretOffset(long aOffset)
 {
+  A11Y_TRYBLOCK_BEGIN
+
   MOZ_ASSERT(!HyperTextProxyFor(this));
 
   HyperTextAccessible* textAcc = static_cast<HyperTextAccessibleWrap*>(this);
@@ -368,12 +418,16 @@ ia2AccessibleText::setCaretOffset(long aOffset)
 
   textAcc->SetCaretOffset(aOffset);
   return S_OK;
+
+  A11Y_TRYBLOCK_END
 }
 
 STDMETHODIMP
 ia2AccessibleText::setSelection(long aSelectionIndex, long aStartOffset,
                                 long aEndOffset)
 {
+  A11Y_TRYBLOCK_BEGIN
+
   MOZ_ASSERT(!HyperTextProxyFor(this));
 
   HyperTextAccessible* textAcc = static_cast<HyperTextAccessibleWrap*>(this);
@@ -382,11 +436,15 @@ ia2AccessibleText::setSelection(long aSelectionIndex, long aStartOffset,
 
   return textAcc->SetSelectionBoundsAt(aSelectionIndex, aStartOffset, aEndOffset) ?
     S_OK : E_INVALIDARG;
+
+  A11Y_TRYBLOCK_END
 }
 
 STDMETHODIMP
 ia2AccessibleText::get_nCharacters(long* aNCharacters)
 {
+  A11Y_TRYBLOCK_BEGIN
+
   if (!aNCharacters)
     return E_INVALIDARG;
   *aNCharacters = 0;
@@ -399,12 +457,16 @@ ia2AccessibleText::get_nCharacters(long* aNCharacters)
 
   *aNCharacters  = textAcc->CharacterCount();
   return S_OK;
+
+  A11Y_TRYBLOCK_END
 }
 
 STDMETHODIMP
 ia2AccessibleText::scrollSubstringTo(long aStartIndex, long aEndIndex,
                                      enum IA2ScrollType aScrollType)
 {
+  A11Y_TRYBLOCK_BEGIN
+
   MOZ_ASSERT(!HyperTextProxyFor(this));
 
   HyperTextAccessible* textAcc = static_cast<HyperTextAccessibleWrap*>(this);
@@ -416,6 +478,8 @@ ia2AccessibleText::scrollSubstringTo(long aStartIndex, long aEndIndex,
 
   textAcc->ScrollSubstringTo(aStartIndex, aEndIndex, aScrollType);
   return S_OK;
+
+  A11Y_TRYBLOCK_END
 }
 
 STDMETHODIMP
@@ -423,6 +487,8 @@ ia2AccessibleText::scrollSubstringToPoint(long aStartIndex, long aEndIndex,
                                           enum IA2CoordinateType aCoordType,
                                           long aX, long aY)
 {
+  A11Y_TRYBLOCK_BEGIN
+
   uint32_t geckoCoordType = (aCoordType == IA2_COORDTYPE_SCREEN_RELATIVE) ?
     nsIAccessibleCoordinateType::COORDTYPE_SCREEN_RELATIVE :
     nsIAccessibleCoordinateType::COORDTYPE_PARENT_RELATIVE;
@@ -439,18 +505,28 @@ ia2AccessibleText::scrollSubstringToPoint(long aStartIndex, long aEndIndex,
   textAcc->ScrollSubstringToPoint(aStartIndex, aEndIndex,
                                   geckoCoordType, aX, aY);
   return S_OK;
+
+  A11Y_TRYBLOCK_END
 }
 
 STDMETHODIMP
 ia2AccessibleText::get_newText(IA2TextSegment *aNewText)
 {
+  A11Y_TRYBLOCK_BEGIN
+
   return GetModifiedText(true, aNewText);
+
+  A11Y_TRYBLOCK_END
 }
 
 STDMETHODIMP
 ia2AccessibleText::get_oldText(IA2TextSegment *aOldText)
 {
+  A11Y_TRYBLOCK_BEGIN
+
   return GetModifiedText(false, aOldText);
+
+  A11Y_TRYBLOCK_END
 }
 
 // ia2AccessibleText
diff --git a/accessible/windows/ia2/ia2AccessibleValue.cpp b/accessible/windows/ia2/ia2AccessibleValue.cpp
index 44d2c31fb..e33442295 100644
--- a/accessible/windows/ia2/ia2AccessibleValue.cpp
+++ b/accessible/windows/ia2/ia2AccessibleValue.cpp
@@ -46,6 +46,8 @@ ia2AccessibleValue::QueryInterface(REFIID iid, void** ppv)
 STDMETHODIMP
 ia2AccessibleValue::get_currentValue(VARIANT* aCurrentValue)
 {
+  A11Y_TRYBLOCK_BEGIN
+
   if (!aCurrentValue)
     return E_INVALIDARG;
 
@@ -66,11 +68,15 @@ ia2AccessibleValue::get_currentValue(VARIANT* aCurrentValue)
   aCurrentValue->vt = VT_R8;
   aCurrentValue->dblVal = currentValue;
   return S_OK;
+
+  A11Y_TRYBLOCK_END
 }
 
 STDMETHODIMP
 ia2AccessibleValue::setCurrentValue(VARIANT aValue)
 {
+  A11Y_TRYBLOCK_BEGIN
+
   if (aValue.vt != VT_R8)
     return E_INVALIDARG;
 
@@ -81,11 +87,15 @@ ia2AccessibleValue::setCurrentValue(VARIANT aValue)
     return CO_E_OBJNOTCONNECTED;
 
   return valueAcc->SetCurValue(aValue.dblVal) ? S_OK : E_FAIL;
+
+  A11Y_TRYBLOCK_END
 }
 
 STDMETHODIMP
 ia2AccessibleValue::get_maximumValue(VARIANT* aMaximumValue)
 {
+  A11Y_TRYBLOCK_BEGIN
+
   if (!aMaximumValue)
     return E_INVALIDARG;
 
@@ -106,11 +116,15 @@ ia2AccessibleValue::get_maximumValue(VARIANT* aMaximumValue)
   aMaximumValue->vt = VT_R8;
   aMaximumValue->dblVal = maximumValue;
   return S_OK;
+
+  A11Y_TRYBLOCK_END
 }
 
 STDMETHODIMP
 ia2AccessibleValue::get_minimumValue(VARIANT* aMinimumValue)
 {
+  A11Y_TRYBLOCK_BEGIN
+
   if (!aMinimumValue)
     return E_INVALIDARG;
 
@@ -131,5 +145,7 @@ ia2AccessibleValue::get_minimumValue(VARIANT* aMinimumValue)
   aMinimumValue->vt = VT_R8;
   aMinimumValue->dblVal = minimumValue;
   return S_OK;
+
+  A11Y_TRYBLOCK_END
 }
 
diff --git a/accessible/windows/msaa/AccessibleWrap.cpp b/accessible/windows/msaa/AccessibleWrap.cpp
index 426270814..6112c370a 100644
--- a/accessible/windows/msaa/AccessibleWrap.cpp
+++ b/accessible/windows/msaa/AccessibleWrap.cpp
@@ -110,6 +110,8 @@ AccessibleWrap::Shutdown()
 STDMETHODIMP
 AccessibleWrap::QueryInterface(REFIID iid, void** ppv)
 {
+  A11Y_TRYBLOCK_BEGIN
+
   if (!ppv)
     return E_INVALIDARG;
 
@@ -163,6 +165,8 @@ AccessibleWrap::QueryInterface(REFIID iid, void** ppv)
 
   (reinterpret_cast<IUnknown*>(*ppv))->AddRef();
   return S_OK;
+
+  A11Y_TRYBLOCK_END
 }
 
 //-----------------------------------------------------
@@ -172,6 +176,8 @@ AccessibleWrap::QueryInterface(REFIID iid, void** ppv)
 STDMETHODIMP
 AccessibleWrap::get_accParent( IDispatch __RPC_FAR *__RPC_FAR *ppdispParent)
 {
+  A11Y_TRYBLOCK_BEGIN
+
   if (!ppdispParent)
     return E_INVALIDARG;
 
@@ -202,11 +208,15 @@ AccessibleWrap::get_accParent( IDispatch __RPC_FAR *__RPC_FAR *ppdispParent)
 
   *ppdispParent = NativeAccessible(xpParentAcc);
   return S_OK;
+
+  A11Y_TRYBLOCK_END
 }
 
 STDMETHODIMP
 AccessibleWrap::get_accChildCount( long __RPC_FAR *pcountChildren)
 {
+  A11Y_TRYBLOCK_BEGIN
+
   if (!pcountChildren)
     return E_INVALIDARG;
 
@@ -220,6 +230,8 @@ AccessibleWrap::get_accChildCount( long __RPC_FAR *pcountChildren)
 
   *pcountChildren = ChildCount();
   return S_OK;
+
+  A11Y_TRYBLOCK_END
 }
 
 STDMETHODIMP
@@ -227,6 +239,8 @@ AccessibleWrap::get_accChild(
       /* [in] */ VARIANT varChild,
       /* [retval][out] */ IDispatch __RPC_FAR *__RPC_FAR *ppdispChild)
 {
+  A11Y_TRYBLOCK_BEGIN
+
   if (!ppdispChild)
     return E_INVALIDARG;
 
@@ -251,6 +265,8 @@ AccessibleWrap::get_accChild(
 
   child.forget(ppdispChild);
   return S_OK;
+
+  A11Y_TRYBLOCK_END
 }
 
 /**
@@ -315,6 +331,8 @@ AccessibleWrap::get_accName(
       /* [optional][in] */ VARIANT varChild,
       /* [retval][out] */ BSTR __RPC_FAR *pszName)
 {
+  A11Y_TRYBLOCK_BEGIN
+
   if (!pszName || varChild.vt != VT_I4)
     return E_INVALIDARG;
 
@@ -343,6 +361,8 @@ AccessibleWrap::get_accName(
   if (!*pszName)
     return E_OUTOFMEMORY;
   return S_OK;
+
+  A11Y_TRYBLOCK_END
 }
 
 
@@ -351,6 +371,8 @@ AccessibleWrap::get_accValue(
       /* [optional][in] */ VARIANT varChild,
       /* [retval][out] */ BSTR __RPC_FAR *pszValue)
 {
+  A11Y_TRYBLOCK_BEGIN
+
   if (!pszValue)
     return E_INVALIDARG;
 
@@ -379,12 +401,16 @@ AccessibleWrap::get_accValue(
   if (!*pszValue)
     return E_OUTOFMEMORY;
   return S_OK;
+
+  A11Y_TRYBLOCK_END
 }
 
 STDMETHODIMP
 AccessibleWrap::get_accDescription(VARIANT varChild,
                                    BSTR __RPC_FAR *pszDescription)
 {
+  A11Y_TRYBLOCK_BEGIN
+
   if (!pszDescription)
     return E_INVALIDARG;
 
@@ -406,6 +432,8 @@ AccessibleWrap::get_accDescription(VARIANT varChild,
   *pszDescription = ::SysAllocStringLen(description.get(),
                                         description.Length());
   return *pszDescription ? S_OK : E_OUTOFMEMORY;
+
+  A11Y_TRYBLOCK_END
 }
 
 STDMETHODIMP
@@ -413,6 +441,8 @@ AccessibleWrap::get_accRole(
       /* [optional][in] */ VARIANT varChild,
       /* [retval][out] */ VARIANT __RPC_FAR *pvarRole)
 {
+  A11Y_TRYBLOCK_BEGIN
+
   if (!pvarRole)
     return E_INVALIDARG;
 
@@ -502,6 +532,8 @@ AccessibleWrap::get_accRole(
   }
 
   return E_FAIL;
+
+  A11Y_TRYBLOCK_END
 }
 
 STDMETHODIMP
@@ -509,6 +541,8 @@ AccessibleWrap::get_accState(
       /* [optional][in] */ VARIANT varChild,
       /* [retval][out] */ VARIANT __RPC_FAR *pvarState)
 {
+  A11Y_TRYBLOCK_BEGIN
+
   if (!pvarState)
     return E_INVALIDARG;
 
@@ -540,6 +574,8 @@ AccessibleWrap::get_accState(
   nsAccUtils::To32States(state, &msaaState, nullptr);
   pvarState->lVal = msaaState;
   return S_OK;
+
+  A11Y_TRYBLOCK_END
 }
 
 
@@ -548,11 +584,15 @@ AccessibleWrap::get_accHelp(
       /* [optional][in] */ VARIANT varChild,
       /* [retval][out] */ BSTR __RPC_FAR *pszHelp)
 {
+  A11Y_TRYBLOCK_BEGIN
+
   if (!pszHelp)
     return E_INVALIDARG;
 
   *pszHelp = nullptr;
   return S_FALSE;
+
+  A11Y_TRYBLOCK_END
 }
 
 STDMETHODIMP
@@ -561,12 +601,16 @@ AccessibleWrap::get_accHelpTopic(
       /* [optional][in] */ VARIANT varChild,
       /* [retval][out] */ long __RPC_FAR *pidTopic)
 {
+  A11Y_TRYBLOCK_BEGIN
+
   if (!pszHelpFile || !pidTopic)
     return E_INVALIDARG;
 
   *pszHelpFile = nullptr;
   *pidTopic = 0;
   return S_FALSE;
+
+  A11Y_TRYBLOCK_END
 }
 
 STDMETHODIMP
@@ -574,6 +618,8 @@ AccessibleWrap::get_accKeyboardShortcut(
       /* [optional][in] */ VARIANT varChild,
       /* [retval][out] */ BSTR __RPC_FAR *pszKeyboardShortcut)
 {
+  A11Y_TRYBLOCK_BEGIN
+
   if (!pszKeyboardShortcut)
     return E_INVALIDARG;
   *pszKeyboardShortcut = nullptr;
@@ -599,12 +645,16 @@ AccessibleWrap::get_accKeyboardShortcut(
   *pszKeyboardShortcut = ::SysAllocStringLen(shortcut.get(),
                                              shortcut.Length());
   return *pszKeyboardShortcut ? S_OK : E_OUTOFMEMORY;
+
+  A11Y_TRYBLOCK_END
 }
 
 STDMETHODIMP
 AccessibleWrap::get_accFocus(
       /* [retval][out] */ VARIANT __RPC_FAR *pvarChild)
 {
+  A11Y_TRYBLOCK_BEGIN
+
   if (!pvarChild)
     return E_INVALIDARG;
 
@@ -635,6 +685,8 @@ AccessibleWrap::get_accFocus(
   }
 
   return S_OK;
+
+  A11Y_TRYBLOCK_END
 }
 
 /**
@@ -671,6 +723,8 @@ private:
 STDMETHODIMP
 AccessibleEnumerator::QueryInterface(REFIID iid, void ** ppvObject)
 {
+  A11Y_TRYBLOCK_BEGIN
+
   if (iid == IID_IEnumVARIANT) {
     *ppvObject = static_cast<IEnumVARIANT*>(this);
     AddRef();
@@ -684,11 +738,15 @@ AccessibleEnumerator::QueryInterface(REFIID iid, void ** ppvObject)
 
   *ppvObject = nullptr;
   return E_NOINTERFACE;
+
+  A11Y_TRYBLOCK_END
 }
 
 STDMETHODIMP
 AccessibleEnumerator::Next(unsigned long celt, VARIANT FAR* rgvar, unsigned long FAR* pceltFetched)
 {
+  A11Y_TRYBLOCK_BEGIN
+
   uint32_t length = mArray.Length();
   HRESULT hr = S_OK;
 
@@ -708,21 +766,29 @@ AccessibleEnumerator::Next(unsigned long celt, VARIANT FAR* rgvar, unsigned long
     *pceltFetched = celt;
 
   return hr;
+
+  A11Y_TRYBLOCK_END
 }
 
 STDMETHODIMP
 AccessibleEnumerator::Clone(IEnumVARIANT FAR* FAR* ppenum)
 {
+  A11Y_TRYBLOCK_BEGIN
+
   *ppenum = new AccessibleEnumerator(*this);
   if (!*ppenum)
     return E_OUTOFMEMORY;
   NS_ADDREF(*ppenum);
   return S_OK;
+
+  A11Y_TRYBLOCK_END
 }
 
 STDMETHODIMP
 AccessibleEnumerator::Skip(unsigned long celt)
 {
+  A11Y_TRYBLOCK_BEGIN
+
   uint32_t length = mArray.Length();
   // Check if we can skip the requested number of elements
   if (celt > length - mCurIndex) {
@@ -731,6 +797,8 @@ AccessibleEnumerator::Skip(unsigned long celt)
   }
   mCurIndex += celt;
   return S_OK;
+
+  A11Y_TRYBLOCK_END
 }
 
 /**
@@ -753,6 +821,8 @@ AccessibleEnumerator::Skip(unsigned long celt)
 STDMETHODIMP
 AccessibleWrap::get_accSelection(VARIANT __RPC_FAR *pvarChildren)
 {
+  A11Y_TRYBLOCK_BEGIN
+
   if (!pvarChildren)
     return E_INVALIDARG;
 
@@ -772,6 +842,8 @@ AccessibleWrap::get_accSelection(VARIANT __RPC_FAR *pvarChildren)
     NS_ADDREF(pvarChildren->punkVal = pEnum);
   }
   return S_OK;
+
+  A11Y_TRYBLOCK_END
 }
 
 STDMETHODIMP
@@ -779,6 +851,8 @@ AccessibleWrap::get_accDefaultAction(
       /* [optional][in] */ VARIANT varChild,
       /* [retval][out] */ BSTR __RPC_FAR *pszDefaultAction)
 {
+  A11Y_TRYBLOCK_BEGIN
+
   if (!pszDefaultAction)
     return E_INVALIDARG;
 
@@ -800,6 +874,8 @@ AccessibleWrap::get_accDefaultAction(
   *pszDefaultAction = ::SysAllocStringLen(defaultAction.get(),
                                           defaultAction.Length());
   return *pszDefaultAction ? S_OK : E_OUTOFMEMORY;
+
+  A11Y_TRYBLOCK_END
 }
 
 STDMETHODIMP
@@ -807,6 +883,8 @@ AccessibleWrap::accSelect(
       /* [in] */ long flagsSelect,
       /* [optional][in] */ VARIANT varChild)
 {
+  A11Y_TRYBLOCK_BEGIN
+
   RefPtr<IAccessible> accessible;
   HRESULT hr = ResolveChild(varChild, getter_AddRefs(accessible));
   if (FAILED(hr)) {
@@ -848,6 +926,8 @@ AccessibleWrap::accSelect(
   }
 
   return E_FAIL;
+
+  A11Y_TRYBLOCK_END
 }
 
 STDMETHODIMP
@@ -858,6 +938,8 @@ AccessibleWrap::accLocation(
       /* [out] */ long __RPC_FAR *pcyHeight,
       /* [optional][in] */ VARIANT varChild)
 {
+  A11Y_TRYBLOCK_BEGIN
+
   if (!pxLeft || !pyTop || !pcxWidth || !pcyHeight)
     return E_INVALIDARG;
 
@@ -884,6 +966,8 @@ AccessibleWrap::accLocation(
   *pcxWidth = rect.width;
   *pcyHeight = rect.height;
   return S_OK;
+
+  A11Y_TRYBLOCK_END
 }
 
 STDMETHODIMP
@@ -892,6 +976,8 @@ AccessibleWrap::accNavigate(
       /* [optional][in] */ VARIANT varStart,
       /* [retval][out] */ VARIANT __RPC_FAR *pvarEndUpAt)
 {
+  A11Y_TRYBLOCK_BEGIN
+
   if (!pvarEndUpAt)
     return E_INVALIDARG;
 
@@ -974,6 +1060,8 @@ AccessibleWrap::accNavigate(
   pvarEndUpAt->pdispVal = NativeAccessible(navAccessible);
   pvarEndUpAt->vt = VT_DISPATCH;
   return S_OK;
+
+  A11Y_TRYBLOCK_END
 }
 
 STDMETHODIMP
@@ -982,6 +1070,8 @@ AccessibleWrap::accHitTest(
       /* [in] */ long yTop,
       /* [retval][out] */ VARIANT __RPC_FAR *pvarChild)
 {
+  A11Y_TRYBLOCK_BEGIN
+
   if (!pvarChild)
     return E_INVALIDARG;
 
@@ -1008,12 +1098,16 @@ AccessibleWrap::accHitTest(
     return S_FALSE;
   }
   return S_OK;
+
+  A11Y_TRYBLOCK_END
 }
 
 STDMETHODIMP
 AccessibleWrap::accDoDefaultAction(
       /* [optional][in] */ VARIANT varChild)
 {
+  A11Y_TRYBLOCK_BEGIN
+
   RefPtr<IAccessible> accessible;
   HRESULT hr = ResolveChild(varChild, getter_AddRefs(accessible));
   if (FAILED(hr)) {
@@ -1025,6 +1119,8 @@ AccessibleWrap::accDoDefaultAction(
   }
 
   return DoAction(0) ? S_OK : E_INVALIDARG;
+
+  A11Y_TRYBLOCK_END
 }
 
 STDMETHODIMP
diff --git a/accessible/windows/msaa/ApplicationAccessibleWrap.cpp b/accessible/windows/msaa/ApplicationAccessibleWrap.cpp
index ec9d511e4..b78a8dd55 100644
--- a/accessible/windows/msaa/ApplicationAccessibleWrap.cpp
+++ b/accessible/windows/msaa/ApplicationAccessibleWrap.cpp
@@ -69,6 +69,8 @@ ApplicationAccessibleWrap::QueryInterface(REFIID iid, void** ppv)
 STDMETHODIMP
 ApplicationAccessibleWrap::get_appName(BSTR* aName)
 {
+  A11Y_TRYBLOCK_BEGIN
+
   if (!aName)
     return E_INVALIDARG;
 
@@ -84,11 +86,15 @@ ApplicationAccessibleWrap::get_appName(BSTR* aName)
 
   *aName = ::SysAllocStringLen(name.get(), name.Length());
   return *aName ? S_OK : E_OUTOFMEMORY;
+
+  A11Y_TRYBLOCK_END
 }
 
 STDMETHODIMP
 ApplicationAccessibleWrap::get_appVersion(BSTR* aVersion)
 {
+  A11Y_TRYBLOCK_BEGIN
+
   if (!aVersion)
     return E_INVALIDARG;
 
@@ -104,11 +110,15 @@ ApplicationAccessibleWrap::get_appVersion(BSTR* aVersion)
 
   *aVersion = ::SysAllocStringLen(version.get(), version.Length());
   return *aVersion ? S_OK : E_OUTOFMEMORY;
+
+  A11Y_TRYBLOCK_END
 }
 
 STDMETHODIMP
 ApplicationAccessibleWrap::get_toolkitName(BSTR* aName)
 {
+  A11Y_TRYBLOCK_BEGIN
+
   if (!aName)
     return E_INVALIDARG;
 
@@ -122,11 +132,15 @@ ApplicationAccessibleWrap::get_toolkitName(BSTR* aName)
 
   *aName = ::SysAllocStringLen(name.get(), name.Length());
   return *aName ? S_OK : E_OUTOFMEMORY;
+
+  A11Y_TRYBLOCK_END
 }
 
 STDMETHODIMP
 ApplicationAccessibleWrap::get_toolkitVersion(BSTR* aVersion)
 {
+  A11Y_TRYBLOCK_BEGIN
+
   if (!aVersion)
     return E_INVALIDARG;
 
@@ -142,5 +156,7 @@ ApplicationAccessibleWrap::get_toolkitVersion(BSTR* aVersion)
 
   *aVersion = ::SysAllocStringLen(version.get(), version.Length());
   return *aVersion ? S_OK : E_OUTOFMEMORY;
+
+  A11Y_TRYBLOCK_END
 }
 
diff --git a/accessible/windows/msaa/DocAccessibleWrap.cpp b/accessible/windows/msaa/DocAccessibleWrap.cpp
index 895fe9192..6fb89816d 100644
--- a/accessible/windows/msaa/DocAccessibleWrap.cpp
+++ b/accessible/windows/msaa/DocAccessibleWrap.cpp
@@ -65,6 +65,8 @@ DocAccessibleWrap::get_accParent(
 STDMETHODIMP
 DocAccessibleWrap::get_accValue(VARIANT aVarChild, BSTR __RPC_FAR* aValue)
 {
+  A11Y_TRYBLOCK_BEGIN
+
   if (!aValue)
     return E_INVALIDARG;
   *aValue = nullptr;
@@ -88,6 +90,8 @@ DocAccessibleWrap::get_accValue(VARIANT aVarChild, BSTR __RPC_FAR* aValue)
 
   *aValue = ::SysAllocStringLen(url.get(), url.Length());
   return *aValue ? S_OK : E_OUTOFMEMORY;
+
+  A11Y_TRYBLOCK_END
 }
 
 ////////////////////////////////////////////////////////////////////////////////
diff --git a/accessible/windows/msaa/EnumVariant.cpp b/accessible/windows/msaa/EnumVariant.cpp
index 2344208a3..86c81a105 100644
--- a/accessible/windows/msaa/EnumVariant.cpp
+++ b/accessible/windows/msaa/EnumVariant.cpp
@@ -21,6 +21,8 @@ STDMETHODIMP
 ChildrenEnumVariant::Next(ULONG aCount, VARIANT FAR* aItems,
                           ULONG FAR* aCountFetched)
 {
+  A11Y_TRYBLOCK_BEGIN
+
   if (!aItems || !aCountFetched)
     return E_INVALIDARG;
 
@@ -53,11 +55,15 @@ ChildrenEnumVariant::Next(ULONG aCount, VARIANT FAR* aItems,
   (*aCountFetched) = countFetched;
 
   return countFetched < aCount ? S_FALSE : S_OK;
+
+  A11Y_TRYBLOCK_END
 }
 
 STDMETHODIMP
 ChildrenEnumVariant::Skip(ULONG aCount)
 {
+  A11Y_TRYBLOCK_BEGIN
+
   if (mAnchorAcc->IsDefunct() || mAnchorAcc->GetChildAt(mCurIndex) != mCurAcc)
     return CO_E_OBJNOTCONNECTED;
 
@@ -65,11 +71,15 @@ ChildrenEnumVariant::Skip(ULONG aCount)
   mCurAcc = mAnchorAcc->GetChildAt(mCurIndex);
 
   return mCurAcc ? S_OK : S_FALSE;
+
+  A11Y_TRYBLOCK_END
 }
 
 STDMETHODIMP
 ChildrenEnumVariant::Reset()
 {
+  A11Y_TRYBLOCK_BEGIN
+
   if (mAnchorAcc->IsDefunct())
     return CO_E_OBJNOTCONNECTED;
 
@@ -77,11 +87,15 @@ ChildrenEnumVariant::Reset()
   mCurAcc = mAnchorAcc->GetChildAt(0);
 
   return S_OK;
+
+  A11Y_TRYBLOCK_END
 }
 
 STDMETHODIMP
 ChildrenEnumVariant::Clone(IEnumVARIANT** aEnumVariant)
 {
+  A11Y_TRYBLOCK_BEGIN
+
   if (!aEnumVariant)
     return E_INVALIDARG;
 
@@ -89,4 +103,6 @@ ChildrenEnumVariant::Clone(IEnumVARIANT** aEnumVariant)
   (*aEnumVariant)->AddRef();
 
   return S_OK;
+
+  A11Y_TRYBLOCK_END
 }
diff --git a/accessible/windows/msaa/IUnknownImpl.cpp b/accessible/windows/msaa/IUnknownImpl.cpp
index c5e614b60..5114ddcc0 100644
--- a/accessible/windows/msaa/IUnknownImpl.cpp
+++ b/accessible/windows/msaa/IUnknownImpl.cpp
@@ -33,5 +33,22 @@ GetHRESULT(nsresult aResult)
   }
 }
 
+int
+FilterExceptions(unsigned int aCode, EXCEPTION_POINTERS* aExceptionInfo)
+{
+  if (aCode == EXCEPTION_ACCESS_VIOLATION) {
+#ifdef MOZ_CRASHREPORTER
+    // MSAA swallows crashes (because it is COM-based) but we still need to
+    // learn about those crashes so we can fix them. Make sure to pass them to
+    // the crash reporter.
+    CrashReporter::WriteMinidumpForException(aExceptionInfo);
+#endif
+  } else {
+    NS_NOTREACHED("We should only be catching crash exceptions");
+  }
+
+  return EXCEPTION_CONTINUE_SEARCH;
+}
+
 } // namespace a11y
 } // namespace mozilla
diff --git a/accessible/windows/msaa/IUnknownImpl.h b/accessible/windows/msaa/IUnknownImpl.h
index d939a4dfa..dbf6c1374 100644
--- a/accessible/windows/msaa/IUnknownImpl.h
+++ b/accessible/windows/msaa/IUnknownImpl.h
@@ -79,6 +79,7 @@ virtual HRESULT STDMETHODCALLTYPE QueryInterface(REFIID, void**);              \
 STDMETHODIMP                                                                   \
 Class::QueryInterface(REFIID aIID, void** aInstancePtr)                        \
 {                                                                              \
+  A11Y_TRYBLOCK_BEGIN                                                          \
   if (!aInstancePtr)                                                           \
     return E_INVALIDARG;                                                       \
   *aInstancePtr = nullptr;                                                     \
@@ -87,14 +88,17 @@ Class::QueryInterface(REFIID aIID, void** aInstancePtr)                        \
 
 #define IMPL_IUNKNOWN_QUERY_TAIL                                               \
   return hr;                                                                   \
+  A11Y_TRYBLOCK_END                                                            \
 }
 
 #define IMPL_IUNKNOWN_QUERY_TAIL_AGGREGATED(Member)                            \
   return Member->QueryInterface(aIID, aInstancePtr);                           \
+  A11Y_TRYBLOCK_END                                                            \
 }
 
 #define IMPL_IUNKNOWN_QUERY_TAIL_INHERITED(BaseClass)                          \
   return BaseClass::QueryInterface(aIID, aInstancePtr);                        \
+  A11Y_TRYBLOCK_END                                                            \
 }
 
 #define IMPL_IUNKNOWN_QUERY_IFACE(Iface)                                       \
@@ -154,6 +158,21 @@ Class::QueryInterface(REFIID aIID, void** aInstancePtr)                        \
   IMPL_IUNKNOWN_QUERY_CLASS(Super2);                                           \
   IMPL_IUNKNOWN_QUERY_TAIL_INHERITED(Super0)
 
+
+/**
+ * Wrap every method body by these macroses to pass exception to the crash
+ * reporter.
+ */
+#define A11Y_TRYBLOCK_BEGIN                                                    \
+  MOZ_SEH_TRY {
+
+#define A11Y_TRYBLOCK_END                                                      \
+  } MOZ_SEH_EXCEPT(mozilla::a11y::FilterExceptions(::GetExceptionCode(),       \
+                                                   GetExceptionInformation())) \
+  { }                                                                          \
+  return E_FAIL;
+
+
 namespace mozilla {
 namespace a11y {
 
@@ -162,6 +181,11 @@ namespace a11y {
  */
 HRESULT GetHRESULT(nsresult aResult);
 
+/**
+ * Used to pass an exception to the crash reporter.
+ */
+int FilterExceptions(unsigned int aCode, EXCEPTION_POINTERS* aExceptionInfo);
+
 } // namespace a11y;
 } //namespace mozilla;
 
diff --git a/accessible/windows/sdn/sdnAccessible.cpp b/accessible/windows/sdn/sdnAccessible.cpp
index d90631c8f..909b0779c 100644
--- a/accessible/windows/sdn/sdnAccessible.cpp
+++ b/accessible/windows/sdn/sdnAccessible.cpp
@@ -28,6 +28,8 @@ using namespace mozilla::a11y;
 STDMETHODIMP
 sdnAccessible::QueryInterface(REFIID aREFIID, void** aInstancePtr)
 {
+  A11Y_TRYBLOCK_BEGIN
+
   if (!aInstancePtr)
     return E_FAIL;
   *aInstancePtr = nullptr;
@@ -51,6 +53,8 @@ sdnAccessible::QueryInterface(REFIID aREFIID, void** aInstancePtr)
   }
 
   return E_NOINTERFACE;
+
+  A11Y_TRYBLOCK_END
 }
 
 STDMETHODIMP
@@ -61,6 +65,8 @@ sdnAccessible::get_nodeInfo(BSTR __RPC_FAR* aNodeName,
                             unsigned int __RPC_FAR* aUniqueID,
                             unsigned short __RPC_FAR* aNodeType)
 {
+  A11Y_TRYBLOCK_BEGIN
+
   if (!aNodeName || !aNameSpaceID || !aNodeValue || !aNumChildren ||
       !aUniqueID || !aNodeType)
     return E_INVALIDARG;
@@ -108,6 +114,8 @@ sdnAccessible::get_nodeInfo(BSTR __RPC_FAR* aNodeName,
   *aNumChildren = mNode->GetChildCount();
 
   return S_OK;
+
+  A11Y_TRYBLOCK_END
 }
 
 STDMETHODIMP
@@ -117,6 +125,8 @@ sdnAccessible::get_attributes(unsigned  short aMaxAttribs,
                               BSTR __RPC_FAR* aAttribValues,
                               unsigned short __RPC_FAR* aNumAttribs)
 {
+  A11Y_TRYBLOCK_BEGIN
+
   if (!aAttribNames || !aNameSpaceIDs || !aAttribValues || !aNumAttribs)
     return E_INVALIDARG;
 
@@ -149,6 +159,8 @@ sdnAccessible::get_attributes(unsigned  short aMaxAttribs,
   }
 
   return S_OK;
+
+  A11Y_TRYBLOCK_END
 }
 
 STDMETHODIMP
@@ -157,6 +169,8 @@ sdnAccessible::get_attributesForNames(unsigned short aMaxAttribs,
                                       short __RPC_FAR* aNameSpaceID,
                                       BSTR __RPC_FAR* aAttribValues)
 {
+  A11Y_TRYBLOCK_BEGIN
+
   if (!aAttribNames || !aNameSpaceID || !aAttribValues)
     return E_INVALIDARG;
 
@@ -193,6 +207,8 @@ sdnAccessible::get_attributesForNames(unsigned short aMaxAttribs,
   }
 
   return S_OK;
+
+  A11Y_TRYBLOCK_END
 }
 
 STDMETHODIMP
@@ -202,6 +218,8 @@ sdnAccessible::get_computedStyle(unsigned short aMaxStyleProperties,
                                  BSTR __RPC_FAR* aStyleValues,
                                  unsigned short __RPC_FAR* aNumStyleProperties)
 {
+  A11Y_TRYBLOCK_BEGIN
+
   if (!aStyleProperties || aStyleValues || !aNumStyleProperties)
     return E_INVALIDARG;
 
@@ -239,6 +257,8 @@ sdnAccessible::get_computedStyle(unsigned short aMaxStyleProperties,
   *aNumStyleProperties = static_cast<unsigned short>(realIndex);
 
   return S_OK;
+
+  A11Y_TRYBLOCK_END
 }
 
 STDMETHODIMP
@@ -247,6 +267,8 @@ sdnAccessible::get_computedStyleForProperties(unsigned short aNumStyleProperties
                                               BSTR __RPC_FAR* aStyleProperties,
                                               BSTR __RPC_FAR* aStyleValues)
 {
+  A11Y_TRYBLOCK_BEGIN
+
   if (!aStyleProperties || !aStyleValues)
     return E_INVALIDARG;
 
@@ -269,11 +291,15 @@ sdnAccessible::get_computedStyleForProperties(unsigned short aNumStyleProperties
   }
 
   return S_OK;
+
+  A11Y_TRYBLOCK_END
 }
 
 STDMETHODIMP
 sdnAccessible::scrollTo(boolean aScrollTopLeft)
 {
+  A11Y_TRYBLOCK_BEGIN
+
   DocAccessible* document = GetDocument();
   if (!document) // that's IsDefunct check
     return CO_E_OBJNOTCONNECTED;
@@ -287,11 +313,15 @@ sdnAccessible::scrollTo(boolean aScrollTopLeft)
 
   nsCoreUtils::ScrollTo(document->PresShell(), mNode->AsContent(), scrollType);
   return S_OK;
+
+  A11Y_TRYBLOCK_END
 }
 
 STDMETHODIMP
 sdnAccessible::get_parentNode(ISimpleDOMNode __RPC_FAR *__RPC_FAR* aNode)
 {
+  A11Y_TRYBLOCK_BEGIN
+
   if (!aNode)
     return E_INVALIDARG;
   *aNode = nullptr;
@@ -306,11 +336,15 @@ sdnAccessible::get_parentNode(ISimpleDOMNode __RPC_FAR *__RPC_FAR* aNode)
   }
 
   return S_OK;
+
+  A11Y_TRYBLOCK_END
 }
 
 STDMETHODIMP
 sdnAccessible::get_firstChild(ISimpleDOMNode __RPC_FAR *__RPC_FAR* aNode)
 {
+  A11Y_TRYBLOCK_BEGIN
+
   if (!aNode)
     return E_INVALIDARG;
   *aNode = nullptr;
@@ -325,11 +359,15 @@ sdnAccessible::get_firstChild(ISimpleDOMNode __RPC_FAR *__RPC_FAR* aNode)
   }
 
   return S_OK;
+
+  A11Y_TRYBLOCK_END
 }
 
 STDMETHODIMP
 sdnAccessible::get_lastChild(ISimpleDOMNode __RPC_FAR *__RPC_FAR* aNode)
 {
+  A11Y_TRYBLOCK_BEGIN
+
   if (!aNode)
     return E_INVALIDARG;
   *aNode = nullptr;
@@ -344,11 +382,15 @@ sdnAccessible::get_lastChild(ISimpleDOMNode __RPC_FAR *__RPC_FAR* aNode)
   }
 
   return S_OK;
+
+  A11Y_TRYBLOCK_END
 }
 
 STDMETHODIMP
 sdnAccessible::get_previousSibling(ISimpleDOMNode __RPC_FAR *__RPC_FAR* aNode)
 {
+  A11Y_TRYBLOCK_BEGIN
+
   if (!aNode)
     return E_INVALIDARG;
   *aNode = nullptr;
@@ -363,11 +405,15 @@ sdnAccessible::get_previousSibling(ISimpleDOMNode __RPC_FAR *__RPC_FAR* aNode)
   }
 
   return S_OK;
+
+  A11Y_TRYBLOCK_END
 }
 
 STDMETHODIMP
 sdnAccessible::get_nextSibling(ISimpleDOMNode __RPC_FAR *__RPC_FAR* aNode)
 {
+  A11Y_TRYBLOCK_BEGIN
+
   if (!aNode)
     return E_INVALIDARG;
   *aNode = nullptr;
@@ -382,12 +428,16 @@ sdnAccessible::get_nextSibling(ISimpleDOMNode __RPC_FAR *__RPC_FAR* aNode)
   }
 
   return S_OK;
+
+  A11Y_TRYBLOCK_END
 }
 
 STDMETHODIMP
 sdnAccessible::get_childAt(unsigned aChildIndex,
                            ISimpleDOMNode __RPC_FAR *__RPC_FAR* aNode)
 {
+  A11Y_TRYBLOCK_BEGIN
+
   if (!aNode)
     return E_INVALIDARG;
   *aNode = nullptr;
@@ -403,11 +453,15 @@ sdnAccessible::get_childAt(unsigned aChildIndex,
 
 
   return S_OK;
+
+  A11Y_TRYBLOCK_END
 }
 
 STDMETHODIMP
 sdnAccessible::get_innerHTML(BSTR __RPC_FAR* aInnerHTML)
 {
+  A11Y_TRYBLOCK_BEGIN
+
   if (!aInnerHTML)
     return E_INVALIDARG;
   *aInnerHTML = nullptr;
@@ -428,11 +482,15 @@ sdnAccessible::get_innerHTML(BSTR __RPC_FAR* aInnerHTML)
     return E_OUTOFMEMORY;
 
   return S_OK;
+
+  A11Y_TRYBLOCK_END
 }
 
 STDMETHODIMP
 sdnAccessible::get_localInterface(void __RPC_FAR *__RPC_FAR* aLocalInterface)
 {
+  A11Y_TRYBLOCK_BEGIN
+
   if (!aLocalInterface)
     return E_INVALIDARG;
   *aLocalInterface = nullptr;
@@ -444,11 +502,15 @@ sdnAccessible::get_localInterface(void __RPC_FAR *__RPC_FAR* aLocalInterface)
   AddRef();
 
   return S_OK;
+
+  A11Y_TRYBLOCK_END
 }
 
 STDMETHODIMP
 sdnAccessible::get_language(BSTR __RPC_FAR* aLanguage)
 {
+  A11Y_TRYBLOCK_BEGIN
+
   if (!aLanguage)
     return E_INVALIDARG;
   *aLanguage = nullptr;
@@ -472,4 +534,6 @@ sdnAccessible::get_language(BSTR __RPC_FAR* aLanguage)
    return E_OUTOFMEMORY;
 
   return S_OK;
+
+  A11Y_TRYBLOCK_END
 }
diff --git a/accessible/windows/sdn/sdnDocAccessible.cpp b/accessible/windows/sdn/sdnDocAccessible.cpp
index a1c5be872..07b39e66f 100644
--- a/accessible/windows/sdn/sdnDocAccessible.cpp
+++ b/accessible/windows/sdn/sdnDocAccessible.cpp
@@ -24,6 +24,8 @@ IMPL_IUNKNOWN_QUERY_TAIL_AGGREGATED(mAccessible)
 STDMETHODIMP
 sdnDocAccessible::get_URL(BSTR __RPC_FAR* aURL)
 {
+  A11Y_TRYBLOCK_BEGIN
+
   if (!aURL)
     return E_INVALIDARG;
   *aURL = nullptr;
@@ -38,11 +40,15 @@ sdnDocAccessible::get_URL(BSTR __RPC_FAR* aURL)
 
   *aURL = ::SysAllocStringLen(URL.get(), URL.Length());
   return *aURL ? S_OK : E_OUTOFMEMORY;
+
+  A11Y_TRYBLOCK_END
 }
 
 STDMETHODIMP
 sdnDocAccessible::get_title(BSTR __RPC_FAR* aTitle)
 {
+  A11Y_TRYBLOCK_BEGIN
+
   if (!aTitle)
     return E_INVALIDARG;
   *aTitle = nullptr;
@@ -54,11 +60,15 @@ sdnDocAccessible::get_title(BSTR __RPC_FAR* aTitle)
   mAccessible->Title(title);
   *aTitle = ::SysAllocStringLen(title.get(), title.Length());
   return *aTitle ? S_OK : E_OUTOFMEMORY;
+
+  A11Y_TRYBLOCK_END
 }
 
 STDMETHODIMP
 sdnDocAccessible::get_mimeType(BSTR __RPC_FAR* aMimeType)
 {
+  A11Y_TRYBLOCK_BEGIN
+
   if (!aMimeType)
     return E_INVALIDARG;
   *aMimeType = nullptr;
@@ -73,11 +83,15 @@ sdnDocAccessible::get_mimeType(BSTR __RPC_FAR* aMimeType)
 
   *aMimeType = ::SysAllocStringLen(mimeType.get(), mimeType.Length());
   return *aMimeType ? S_OK : E_OUTOFMEMORY;
+
+  A11Y_TRYBLOCK_END
 }
 
 STDMETHODIMP
 sdnDocAccessible::get_docType(BSTR __RPC_FAR* aDocType)
 {
+  A11Y_TRYBLOCK_BEGIN
+
   if (!aDocType)
     return E_INVALIDARG;
   *aDocType = nullptr;
@@ -92,12 +106,16 @@ sdnDocAccessible::get_docType(BSTR __RPC_FAR* aDocType)
 
   *aDocType = ::SysAllocStringLen(docType.get(), docType.Length());
   return *aDocType ? S_OK : E_OUTOFMEMORY;
+
+  A11Y_TRYBLOCK_END
 }
 
 STDMETHODIMP
 sdnDocAccessible::get_nameSpaceURIForID(short aNameSpaceID,
                                         BSTR __RPC_FAR* aNameSpaceURI)
 {
+  A11Y_TRYBLOCK_BEGIN
+
   if (!aNameSpaceURI)
     return E_INVALIDARG;
   *aNameSpaceURI = nullptr;
@@ -120,14 +138,20 @@ sdnDocAccessible::get_nameSpaceURIForID(short aNameSpaceID,
                                        nameSpaceURI.Length());
 
   return *aNameSpaceURI ? S_OK : E_OUTOFMEMORY;
+
+  A11Y_TRYBLOCK_END
 }
 
 STDMETHODIMP
 sdnDocAccessible::put_alternateViewMediaTypes(BSTR __RPC_FAR* aCommaSeparatedMediaTypes)
 {
+  A11Y_TRYBLOCK_BEGIN
+
   if (!aCommaSeparatedMediaTypes)
     return E_INVALIDARG;
   *aCommaSeparatedMediaTypes = nullptr;
 
   return mAccessible->IsDefunct() ? CO_E_OBJNOTCONNECTED : E_NOTIMPL;
+
+  A11Y_TRYBLOCK_END
 }
diff --git a/accessible/windows/sdn/sdnTextAccessible.cpp b/accessible/windows/sdn/sdnTextAccessible.cpp
index b6f580ba3..b51caf44e 100644
--- a/accessible/windows/sdn/sdnTextAccessible.cpp
+++ b/accessible/windows/sdn/sdnTextAccessible.cpp
@@ -33,6 +33,8 @@ IMPL_IUNKNOWN_QUERY_TAIL_AGGREGATED(mAccessible)
 STDMETHODIMP
 sdnTextAccessible::get_domText(BSTR __RPC_FAR* aText)
 {
+  A11Y_TRYBLOCK_BEGIN
+
   if (!aText)
     return E_INVALIDARG;
   *aText = nullptr;
@@ -49,6 +51,8 @@ sdnTextAccessible::get_domText(BSTR __RPC_FAR* aText)
 
   *aText = ::SysAllocStringLen(nodeValue.get(), nodeValue.Length());
   return *aText ? S_OK : E_OUTOFMEMORY;
+
+  A11Y_TRYBLOCK_END
 }
 
 STDMETHODIMP
@@ -59,6 +63,8 @@ sdnTextAccessible::get_clippedSubstringBounds(unsigned int aStartIndex,
                                               int __RPC_FAR* aWidth,
                                               int __RPC_FAR* aHeight)
 {
+  A11Y_TRYBLOCK_BEGIN
+
   nscoord x = 0, y = 0, width = 0, height = 0;
   HRESULT rv = get_unclippedSubstringBounds(aStartIndex, aEndIndex,
                                             &x, &y, &width, &height);
@@ -80,6 +86,8 @@ sdnTextAccessible::get_clippedSubstringBounds(unsigned int aStartIndex,
   *aWidth = clippedRect.width;
   *aHeight = clippedRect.height;
   return S_OK;
+
+  A11Y_TRYBLOCK_END
 }
 
 STDMETHODIMP
@@ -90,6 +98,8 @@ sdnTextAccessible::get_unclippedSubstringBounds(unsigned int aStartIndex,
                                                 int __RPC_FAR* aWidth,
                                                 int __RPC_FAR* aHeight)
 {
+  A11Y_TRYBLOCK_BEGIN
+
   if (!aX || !aY || !aWidth || !aHeight)
     return E_INVALIDARG;
   *aX = *aY = *aWidth = *aHeight = 0;
@@ -125,12 +135,16 @@ sdnTextAccessible::get_unclippedSubstringBounds(unsigned int aStartIndex,
   *aHeight = presContext->AppUnitsToDevPixels(sum.height);
 
   return S_OK;
+
+  A11Y_TRYBLOCK_END
 }
 
 STDMETHODIMP
 sdnTextAccessible::scrollToSubstring(unsigned int aStartIndex,
                                      unsigned int aEndIndex)
 {
+  A11Y_TRYBLOCK_BEGIN
+
   if (mAccessible->IsDefunct())
     return CO_E_OBJNOTCONNECTED;
 
@@ -145,11 +159,15 @@ sdnTextAccessible::scrollToSubstring(unsigned int aStartIndex,
     nsCoreUtils::ScrollSubstringTo(mAccessible->GetFrame(), range,
                                    nsIAccessibleScrollType::SCROLL_TYPE_ANYWHERE);
   return GetHRESULT(rv);
+
+  A11Y_TRYBLOCK_END
 }
 
 STDMETHODIMP
 sdnTextAccessible::get_fontFamily(BSTR __RPC_FAR* aFontFamily)
 {
+  A11Y_TRYBLOCK_BEGIN
+
   if (!aFontFamily)
     return E_INVALIDARG;
   *aFontFamily = nullptr;
@@ -171,6 +189,8 @@ sdnTextAccessible::get_fontFamily(BSTR __RPC_FAR* aFontFamily)
 
   *aFontFamily = ::SysAllocStringLen(name.get(), name.Length());
   return *aFontFamily ? S_OK : E_OUTOFMEMORY;
+
+  A11Y_TRYBLOCK_END
 }
 
 nsIFrame*
diff --git a/accessible/windows/uia/uiaRawElmProvider.cpp b/accessible/windows/uia/uiaRawElmProvider.cpp
index 3121661e1..54e54766d 100644
--- a/accessible/windows/uia/uiaRawElmProvider.cpp
+++ b/accessible/windows/uia/uiaRawElmProvider.cpp
@@ -28,18 +28,24 @@ STDMETHODIMP
 uiaRawElmProvider::GetObjectForChild(long aIdChild,
                                      __RPC__deref_out_opt IAccessibleEx** aAccEx)
 {
+  A11Y_TRYBLOCK_BEGIN
+
   if (!aAccEx)
     return E_INVALIDARG;
 
   *aAccEx = nullptr;
 
   return mAcc->IsDefunct() ? CO_E_OBJNOTCONNECTED : S_OK;
+
+  A11Y_TRYBLOCK_END
 }
 
 STDMETHODIMP
 uiaRawElmProvider::GetIAccessiblePair(__RPC__deref_out_opt IAccessible** aAcc,
                                       __RPC__out long* aIdChild)
 {
+  A11Y_TRYBLOCK_BEGIN
+
   if (!aAcc || !aIdChild)
     return E_INVALIDARG;
 
@@ -54,11 +60,15 @@ uiaRawElmProvider::GetIAccessiblePair(__RPC__deref_out_opt IAccessible** aAcc,
   mAcc->AddRef();
 
   return S_OK;
+
+  A11Y_TRYBLOCK_END
 }
 
 STDMETHODIMP
 uiaRawElmProvider::GetRuntimeId(__RPC__deref_out_opt SAFEARRAY** aRuntimeIds)
 {
+  A11Y_TRYBLOCK_BEGIN
+
   if (!aRuntimeIds)
     return E_INVALIDARG;
 
@@ -71,12 +81,16 @@ uiaRawElmProvider::GetRuntimeId(__RPC__deref_out_opt SAFEARRAY** aRuntimeIds)
     SafeArrayPutElement(*aRuntimeIds, &i, (void*)&(ids[i]));
 
   return S_OK;
+
+  A11Y_TRYBLOCK_END
 }
 
 STDMETHODIMP
 uiaRawElmProvider::ConvertReturnedElement(__RPC__in_opt IRawElementProviderSimple* aRawElmProvider,
                                           __RPC__deref_out_opt IAccessibleEx** aAccEx)
 {
+  A11Y_TRYBLOCK_BEGIN
+
   if (!aRawElmProvider || !aAccEx)
     return E_INVALIDARG;
 
@@ -88,6 +102,8 @@ uiaRawElmProvider::ConvertReturnedElement(__RPC__in_opt IRawElementProviderSimpl
     *aAccEx = static_cast<IAccessibleEx*>(instancePtr);
 
   return hr;
+
+  A11Y_TRYBLOCK_END
 }
 
 ////////////////////////////////////////////////////////////////////////////////
@@ -96,29 +112,39 @@ uiaRawElmProvider::ConvertReturnedElement(__RPC__in_opt IRawElementProviderSimpl
 STDMETHODIMP
 uiaRawElmProvider::get_ProviderOptions(__RPC__out enum ProviderOptions* aOptions)
 {
+  A11Y_TRYBLOCK_BEGIN
+
   if (!aOptions)
     return E_INVALIDARG;
 
   // This method is not used with IAccessibleEx implementations.
   *aOptions = ProviderOptions_ServerSideProvider;
   return S_OK;
+
+  A11Y_TRYBLOCK_END
 }
 
 STDMETHODIMP
 uiaRawElmProvider::GetPatternProvider(PATTERNID aPatternId,
                                       __RPC__deref_out_opt IUnknown** aPatternProvider)
 {
+  A11Y_TRYBLOCK_BEGIN
+
   if (!aPatternProvider)
     return E_INVALIDARG;
 
   *aPatternProvider = nullptr;
   return S_OK;
+
+  A11Y_TRYBLOCK_END
 }
 
 STDMETHODIMP
 uiaRawElmProvider::GetPropertyValue(PROPERTYID aPropertyId,
                                     __RPC__out VARIANT* aPropertyValue)
 {
+  A11Y_TRYBLOCK_BEGIN
+
   if (!aPropertyValue)
     return E_INVALIDARG;
 
@@ -200,15 +226,21 @@ uiaRawElmProvider::GetPropertyValue(PROPERTYID aPropertyId,
   }
 
   return S_OK;
+
+  A11Y_TRYBLOCK_END
 }
 
 STDMETHODIMP
 uiaRawElmProvider::get_HostRawElementProvider(__RPC__deref_out_opt IRawElementProviderSimple** aRawElmProvider)
 {
+  A11Y_TRYBLOCK_BEGIN
+
   if (!aRawElmProvider)
     return E_INVALIDARG;
 
   // This method is not used with IAccessibleEx implementations.
   *aRawElmProvider = nullptr;
   return S_OK;
+
+  A11Y_TRYBLOCK_END
 }
diff --git a/browser/app/basilisk.exe.manifest b/browser/app/basilisk.exe.manifest
index 079e15b58..bf5aac416 100644
--- a/browser/app/basilisk.exe.manifest
+++ b/browser/app/basilisk.exe.manifest
@@ -37,6 +37,7 @@
       <supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}"/>
       <supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}"/>
       <supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"/>
+      <supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}"/>
     </application>
   </compatibility>
 </assembly>
diff --git a/browser/base/content/browser-media.js b/browser/base/content/browser-media.js
index bd5c5b227..d500d166f 100644
--- a/browser/base/content/browser-media.js
+++ b/browser/base/content/browser-media.js
@@ -203,16 +203,29 @@ let gDecoderDoctorHandler = {
   getLabelForNotificationBox(type) {
     if (type == "adobe-cdm-not-found" &&
         AppConstants.platform == "win") {
+      if (AppConstants.isPlatformAndVersionAtMost("win", "5.9")) {
+        // We supply our own Learn More button so we don't need to populate the message here.
+        return gNavigatorBundle.getFormattedString("emeNotifications.drmContentDisabled.message", [""]);
+      }
       return gNavigatorBundle.getString("decoder.noCodecs.message");
     }
     if (type == "adobe-cdm-not-activated" &&
         AppConstants.platform == "win") {
+      if (AppConstants.isPlatformAndVersionAtMost("win", "5.9")) {
+        return gNavigatorBundle.getString("decoder.noCodecsXP.message");
+      }
+      if (!AppConstants.isPlatformAndVersionAtLeast("win", "6.1")) {
+        return gNavigatorBundle.getString("decoder.noCodecsVista.message");
+      }
       return gNavigatorBundle.getString("decoder.noCodecs.message");
     }
     if (type == "platform-decoder-not-found") {
-      if (AppConstants.platform == "win") {
+      if (AppConstants.isPlatformAndVersionAtLeast("win", "6.1")) {
         return gNavigatorBundle.getString("decoder.noHWAcceleration.message");
       }
+      if (AppConstants.isPlatformAndVersionAtLeast("win", "6")) {
+        return gNavigatorBundle.getString("decoder.noHWAccelerationVista.message");
+      }
       if (AppConstants.platform == "linux") {
         return gNavigatorBundle.getString("decoder.noCodecsLinux.message");
       }
diff --git a/browser/base/content/browser.js b/browser/base/content/browser.js
index 696a2871a..83221fe7a 100755
--- a/browser/base/content/browser.js
+++ b/browser/base/content/browser.js
@@ -87,6 +87,11 @@ XPCOMUtils.defineLazyGetter(this, "gCustomizeMode", function() {
   return new scope.CustomizeMode(window);
 });
 
+XPCOMUtils.defineLazyGetter(window, "gShowPageResizers", function () {
+  // Only show resizers on Windows 2000 and XP
+  return AppConstants.isPlatformAndVersionAtMost("win", "5.9");
+});
+
 XPCOMUtils.defineLazyGetter(this, "gPrefService", function() {
   return Services.prefs;
 });
@@ -3351,6 +3356,8 @@ var PrintPreviewListener = {
     this._chromeState.notificationsOpen = !notificationBox.notificationsHidden;
     notificationBox.notificationsHidden = true;
 
+    gBrowser.updateWindowResizers();
+
     this._chromeState.findOpen = gFindBarInitialized && !gFindBar.hidden;
     if (gFindBarInitialized)
       gFindBar.close();
@@ -5182,6 +5189,7 @@ function setToolbarVisibility(toolbar, isVisible, persist=true) {
 
   PlacesToolbarHelper.init();
   BookmarkingUI.onToolbarVisibilityChange();
+  gBrowser.updateWindowResizers();
   if (isVisible)
     ToolbarIconColor.inferFromText();
 }
diff --git a/browser/base/content/browser.xul b/browser/base/content/browser.xul
index 485471ee3..f85aee63f 100644
--- a/browser/base/content/browser.xul
+++ b/browser/base/content/browser.xul
@@ -546,7 +546,9 @@
 #ifdef MENUBAR_CAN_AUTOHIDE
              toolbarname="&menubarCmd.label;"
              accesskey="&menubarCmd.accesskey;"
+#if defined(MOZ_WIDGET_GTK)
              autohide="true"
+#endif
 #endif
              context="toolbar-context-menu">
       <toolbaritem id="menubar-items" align="center">
diff --git a/browser/base/content/tabbrowser.xml b/browser/base/content/tabbrowser.xml
index b27846835..a541d534e 100644
--- a/browser/base/content/tabbrowser.xml
+++ b/browser/base/content/tabbrowser.xml
@@ -214,6 +214,18 @@
         ]]></body>
       </method>
 
+      <method name="updateWindowResizers">
+        <body><![CDATA[
+          if (!window.gShowPageResizers)
+            return;
+
+          var show = window.windowState == window.STATE_NORMAL;
+          for (let i = 0; i < this.browsers.length; i++) {
+            this.browsers[i].showWindowResizer = show;
+          }
+        ]]></body>
+      </method>
+
       <method name="_setCloseKeyState">
         <parameter name="aEnabled"/>
         <body><![CDATA[
@@ -1958,6 +1970,10 @@
               b.QueryInterface(Ci.nsIFrameLoaderOwner).presetOpenerWindow(aParams.opener);
             }
 
+            if (window.gShowPageResizers && window.windowState == window.STATE_NORMAL) {
+              b.setAttribute("showresizer", "true");
+            }
+
             if (!aParams.isPreloadBrowser && this.hasAttribute("autocompletepopup")) {
               b.setAttribute("autocompletepopup", this.getAttribute("autocompletepopup"));
             }
@@ -4804,6 +4820,7 @@
           this.appendChild(this._autoScrollPopup);
           this.mCurrentBrowser.setAttribute("autoscrollpopup", this._autoScrollPopup.id);
           this.mCurrentBrowser.droppedLinkHandler = handleDroppedLink;
+          this.updateWindowResizers();
 
           // Hook up the event listeners to the first browser
           var tabListener = this.mTabProgressListener(this.mCurrentTab, this.mCurrentBrowser, true, false);
@@ -5822,6 +5839,8 @@
                 this._handleTabSelect();
                 this.mTabstripWidth = width;
               }
+
+              this.tabbrowser.updateWindowResizers();
               break;
             case "mouseout":
               // If the "related target" (the node to which the pointer went) is not
diff --git a/browser/base/content/win6BrowserOverlay.xul b/browser/base/content/win6BrowserOverlay.xul
new file mode 100644
index 000000000..a69e3f6bd
--- /dev/null
+++ b/browser/base/content/win6BrowserOverlay.xul
@@ -0,0 +1,12 @@
+<?xml version="1.0"?>
+
+<!-- -*- Mode: HTML -*- -->
+<!-- This Source Code Form is subject to the terms of the Mozilla Public
+   - License, v. 2.0. If a copy of the MPL was not distributed with this
+   - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
+
+<overlay id="win6-browser-overlay"
+         xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
+  <toolbar id="toolbar-menubar"
+           autohide="true"/>
+</overlay>
diff --git a/browser/base/jar.mn b/browser/base/jar.mn
index c58265351..29286d0d8 100644
--- a/browser/base/jar.mn
+++ b/browser/base/jar.mn
@@ -8,6 +8,9 @@ browser.jar:
 %  overlay chrome://mozapps/content/update/updates.xul chrome://browser/content/softwareUpdateOverlay.xul
 %  overlay chrome://global/content/console.xul chrome://browser/content/jsConsoleOverlay.xul
 #endif
+#ifdef XP_WIN
+%  overlay chrome://browser/content/browser.xul chrome://browser/content/win6BrowserOverlay.xul os=WINNT osversion>=6
+#endif
 %  overlay chrome://global/content/viewSource.xul chrome://browser/content/viewSourceOverlay.xul
 %  overlay chrome://global/content/viewPartialSource.xul chrome://browser/content/viewSourceOverlay.xul
 
@@ -183,6 +186,9 @@ browser.jar:
 *       content/browser/webrtcIndicator.xul           (content/webrtcIndicator.xul)
         content/browser/webrtcIndicator.js            (content/webrtcIndicator.js)
 #endif
+#ifdef XP_WIN
+        content/browser/win6BrowserOverlay.xul        (content/win6BrowserOverlay.xul)
+#endif
 # the following files are browser-specific overrides
 *       content/browser/license.html                  (/toolkit/content/license.html)
 % override chrome://global/content/license.html chrome://browser/content/license.html
diff --git a/browser/branding/unofficial/basilisk.VisualElementsManifest.xml b/browser/branding/unofficial/basilisk.VisualElementsManifest.xml
new file mode 100644
index 000000000..5046ee7da
--- /dev/null
+++ b/browser/branding/unofficial/basilisk.VisualElementsManifest.xml
@@ -0,0 +1,8 @@
+<Application xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'>
+  <VisualElements
+      ShowNameOnSquare150x150Logo='on'
+      Square150x150Logo='browser\VisualElements\VisualElements_150.png'
+      Square70x70Logo='browser\VisualElements\VisualElements_70.png'
+      ForegroundText='light'
+      BackgroundColor='#304D7E'/>
+</Application>
diff --git a/browser/components/customizableui/CustomizableUI.jsm b/browser/components/customizableui/CustomizableUI.jsm
index cb0f519b2..3e92b4225 100644
--- a/browser/components/customizableui/CustomizableUI.jsm
+++ b/browser/components/customizableui/CustomizableUI.jsm
@@ -253,14 +253,24 @@ var CustomizableUIInternal = {
       defaultCollapsed: false,
     }, true);
 
-    if (AppConstants.MENUBAR_CAN_AUTOHIDE) {
+    if (AppConstants.platform != "macosx") {
       this.registerArea(CustomizableUI.AREA_MENUBAR, {
         legacy: true,
         type: CustomizableUI.TYPE_TOOLBAR,
         defaultPlacements: [
           "menubar-items",
         ],
-        defaultCollapsed: true,
+        get defaultCollapsed() {
+          if (AppConstants.MENUBAR_CAN_AUTOHIDE) {
+            if (AppConstants.platform == "linux") {
+              return true;
+            }
+            // This is duplicated logic from /browser/base/jar.mn
+            // for win6BrowserOverlay.xul.
+            return AppConstants.isPlatformAndVersionAtLeast("win", 6);
+          }
+          return false;
+        }
       }, true);
     }
 
diff --git a/browser/components/shell/nsWindowsShellService.cpp b/browser/components/shell/nsWindowsShellService.cpp
index 879b0c7f0..cb13c0910 100644
--- a/browser/components/shell/nsWindowsShellService.cpp
+++ b/browser/components/shell/nsWindowsShellService.cpp
@@ -648,6 +648,11 @@ nsWindowsShellService::LaunchControlPanelDefaultsSelectionUI()
 nsresult
 nsWindowsShellService::LaunchControlPanelDefaultPrograms()
 {
+  // This Default Programs feature is Win7+ only.
+  if (!IsWin7OrLater()) {
+    return NS_ERROR_FAILURE;
+  }
+
   // Build the path control.exe path safely
   WCHAR controlEXEPath[MAX_PATH + 1] = { '\0' };
   if (!GetSystemDirectoryW(controlEXEPath, MAX_PATH)) {
diff --git a/browser/components/webextensions/extension-win-panel.css b/browser/components/webextensions/extension-win-panel.css
index 9da6da14c..ddafe3ea5 100644
--- a/browser/components/webextensions/extension-win-panel.css
+++ b/browser/components/webextensions/extension-win-panel.css
@@ -1,4 +1,6 @@
-@media (-moz-os-version: windows-win7) {
+@media (-moz-os-version: windows-xp),
+       (-moz-os-version: windows-vista),
+       (-moz-os-version: windows-win7) {
   body {
     border-radius: 4px;
   }
diff --git a/browser/config/mozconfigs/win32/common-opt b/browser/config/mozconfigs/win32/common-opt
index 816c8926a..d43a9878b 100644
--- a/browser/config/mozconfigs/win32/common-opt
+++ b/browser/config/mozconfigs/win32/common-opt
@@ -4,6 +4,7 @@
 
 ac_add_options --enable-update-channel=${MOZ_UPDATE_CHANNEL}
 ac_add_options --enable-jemalloc
+ac_add_options --enable-require-all-d3dc-versions
 
 if [ -f /c/builds/gapi.data ]; then
   _gapi_keyfile=c:/builds/gapi.data
diff --git a/browser/config/mozconfigs/win32/debug b/browser/config/mozconfigs/win32/debug
index 815276d0f..6beee93c2 100644
--- a/browser/config/mozconfigs/win32/debug
+++ b/browser/config/mozconfigs/win32/debug
@@ -6,6 +6,7 @@ ac_add_options --enable-debug
 ac_add_options --enable-dmd
 ac_add_options --enable-profiling  # needed for --enable-dmd to work on Windows
 ac_add_options --enable-verify-mar
+ac_add_options --enable-require-all-d3dc-versions
 
 # Needed to enable breakpad in application.ini
 export MOZILLA_OFFICIAL=1
diff --git a/browser/installer/Makefile.in b/browser/installer/Makefile.in
index 4a934fe45..772d17209 100644
--- a/browser/installer/Makefile.in
+++ b/browser/installer/Makefile.in
@@ -57,6 +57,9 @@ DEFINES += -DMOZ_ANGLE_RENDERER=$(MOZ_ANGLE_RENDERER)
 ifdef MOZ_D3DCOMPILER_VISTA_DLL
 DEFINES += -DMOZ_D3DCOMPILER_VISTA_DLL=$(MOZ_D3DCOMPILER_VISTA_DLL)
 endif
+ifdef MOZ_D3DCOMPILER_XP_DLL
+DEFINES += -DMOZ_D3DCOMPILER_XP_DLL=$(MOZ_D3DCOMPILER_XP_DLL)
+endif
 endif
 
 DEFINES += -DMOZ_CHILD_PROCESS_NAME=$(MOZ_CHILD_PROCESS_NAME)
diff --git a/browser/installer/allowed-dupes.mn b/browser/installer/allowed-dupes.mn
index 7baa6ebed..366842598 100644
--- a/browser/installer/allowed-dupes.mn
+++ b/browser/installer/allowed-dupes.mn
@@ -171,7 +171,7 @@ chrome/toolkit/skin/classic/global/dialog.css
 chrome/toolkit/skin/classic/global/dropmarker.css
 chrome/toolkit/skin/classic/global/global.css
 chrome/toolkit/skin/classic/global/groupbox.css
-chrome/toolkit/skin/classic/global/icons/close-win7.png
+chrome/toolkit/skin/classic/global/icons/close-XPVista7.png
 chrome/toolkit/skin/classic/global/icons/tabprompts-bgtexture.png
 chrome/toolkit/skin/classic/global/listbox.css
 chrome/toolkit/skin/classic/global/media/clicktoplay-bgtexture.png
@@ -196,6 +196,7 @@ chrome/toolkit/skin/classic/global/toolbarbutton.css
 chrome/toolkit/skin/classic/global/tree.css
 chrome/toolkit/skin/classic/global/wizard.css
 chrome/toolkit/skin/classic/mozapps/downloads/buttons.png
+chrome/toolkit/skin/classic/mozapps/downloads/downloadButtons-XP.png
 chrome/toolkit/skin/classic/mozapps/downloads/downloadButtons.png
 chrome/toolkit/skin/classic/mozapps/extensions/category-dictionaries.png
 chrome/toolkit/skin/classic/mozapps/extensions/category-experiments.png
@@ -208,6 +209,7 @@ chrome/toolkit/skin/classic/mozapps/extensions/localeGeneric.png
 chrome/toolkit/skin/classic/mozapps/extensions/category-extensions.png
 chrome/toolkit/skin/classic/mozapps/extensions/extensionGeneric.png
 chrome/toolkit/skin/classic/mozapps/update/buttons.png
+chrome/toolkit/skin/classic/mozapps/update/downloadButtons-XP.png
 chrome/toolkit/skin/classic/mozapps/update/downloadButtons.png
 chrome/toolkit/skin/classic/mozapps/xpinstall/xpinstallItemGeneric.png
 
diff --git a/browser/installer/package-manifest.in b/browser/installer/package-manifest.in
index 5540feed9..ac86ec073 100644
--- a/browser/installer/package-manifest.in
+++ b/browser/installer/package-manifest.in
@@ -605,6 +605,10 @@
 #ifdef MOZ_D3DCOMPILER_VISTA_DLL
 @BINPATH@/@MOZ_D3DCOMPILER_VISTA_DLL@
 #endif
+
+#ifdef MOZ_D3DCOMPILER_XP_DLL
+@BINPATH@/@MOZ_D3DCOMPILER_XP_DLL@
+#endif
 #endif # MOZ_ANGLE_RENDERER
 
 ; [Browser Chrome Files]
@@ -735,10 +739,7 @@
 #endif
 @BINPATH@/@DLL_PREFIX@softokn3@DLL_SUFFIX@
 #endif
-@RESPATH@/chrome/pippki@JAREXT@
-@RESPATH@/chrome/pippki.manifest
 @RESPATH@/components/pipnss.xpt
-@RESPATH@/components/pippki.xpt
 
 ; For process sandboxing
 #if defined(MOZ_SANDBOX)
diff --git a/browser/installer/windows/nsis/defines.nsi.in b/browser/installer/windows/nsis/defines.nsi.in
index 5ad9b7966..d0f0c443a 100644
--- a/browser/installer/windows/nsis/defines.nsi.in
+++ b/browser/installer/windows/nsis/defines.nsi.in
@@ -63,7 +63,7 @@
 !define MinSupportedVer "Microsoft Windows 7 x64"
 #else
 !define ARCH "x86"
-!define MinSupportedVer "Microsoft Windows 7"
+!define MinSupportedVer "Microsoft Windows XP SP2"
 #endif
 
 !define MinSupportedCPU "SSE2"
diff --git a/browser/locales/en-US/chrome/browser/browser.properties b/browser/locales/en-US/chrome/browser/browser.properties
index 31f61632b..088d662a9 100644
--- a/browser/locales/en-US/chrome/browser/browser.properties
+++ b/browser/locales/en-US/chrome/browser/browser.properties
@@ -734,8 +734,11 @@ pendingCrashReports.alwaysSend = Always Send
 decoder.noCodecs.button = Learn how
 decoder.noCodecs.accesskey = L
 decoder.noCodecs.message = To play video, you may need to install Microsoft’s Media Feature Pack.
+decoder.noCodecsVista.message = To play video, you may need to install Microsoft’s Platform Update Supplement for Windows Vista.
+decoder.noCodecsXP.message = To play video, you may need to enable Adobe’s Primetime Content Decryption Module.
 decoder.noCodecsLinux.message = To play video, you may need to install the required video codecs.
 decoder.noHWAcceleration.message = To improve video quality, you may need to install Microsoft’s Media Feature Pack.
+decoder.noHWAccelerationVista.message = To improve video quality, you may need to install Microsoft’s Platform Update Supplement for Windows Vista.
 decoder.noPulseAudio.message = To play audio, you may need to install the required PulseAudio software.
 decoder.unsupportedLibavcodec.message = libavcodec may be vulnerable or is not supported, and should be updated to play video.
 
diff --git a/browser/themes/windows/Info-XP.png b/browser/themes/windows/Info-XP.png
new file mode 100644
index 0000000000000000000000000000000000000000..c20f66ce624a4be9e4c1f5a050d6b66113b72245
GIT binary patch
literal 590
zcmV-U0<ryxP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV0006NNkl<Zc-o~?
zO=uHA7=5$5Ns8LqLewGz6oRA{M7#vBdK0vuhzLaiFOpgc>P5wi6a@-`7ZK5>coNa0
z0;+iNqC&w|8fp;*YeI@h<J!c{cC$Y-e&23wfFefv;PJkh-S=i5%L=6w)&j9DR~poG
zdrZ?@v;yDjgb`b0Ju{b2<wbh9pp1Bct$QTQQVOkNvFLyTg!bce8P@j(K0WtP`S4|h
zjNa|Ws`>cGA&eKYsD7P^Ds&xqrW%!5{4Wy8oiJY>5=Pvf$D0TJD3}ejf~wJt&2fdH
zvroY=K*(fzkRjzS5=bCWfafdtJO`l?70s-G$1efR0EA{X3P@5ZB?Yl6XzwSnA%7dO
znP~{S4!LeUoSt3S?`&!YL?)0)@#*179uHHKNL;xHe4B@dWz;Pg@805?z7bYB-KSys
z>M~?AglBd4Cfsrf4kenW&!PBg7RCE7P&s%EN!R54kuX3?L1ZI`M1kDdnVy18=34GN
zaOVc}Cy&tRPQe_=@jf%l6;_PRDv{dNDj4e2FqYaop^sjM?n^B755V?)5ZXB)GKExp
z8$LZ;*As0})VZx(L~!H;95SoXOAreSu%dupQ3d?zEl4?pXTa^<jXEu?d$-`0DCF=-
zIJpaO#;)@|b3$y{JFf5-?6BuBSbm74_jA>=O00|b_x<yCe%#T~M>0apa%a9aae{dD
cXs!18H)KdlCzDRUdjJ3c07*qoM6N<$g3g@{=l}o!

literal 0
HcmV?d00001

diff --git a/browser/themes/windows/Privacy-16-XP.png b/browser/themes/windows/Privacy-16-XP.png
new file mode 100644
index 0000000000000000000000000000000000000000..335febbb3c86a2fc3e93dedd5fbb289f85de2104
GIT binary patch
literal 799
zcmV+)1K|9LP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV0008!Nkl<ZIE|%~
z%WD&16vfXsGnq_G)0CuXOp~THRnfK<pG8GM1r!8DPy_@8bni|C0o{lj{Tl>9K-8U}
zfQtC4Hj3KTYO2=skxtr7Oq$F)GxL1{8Wq8nXLawnaDdDC5ylw)N5ZEEC)wh37WWHR
zNYkA9qWD@{17fVBMF)UV$ylaqhO;8m?))9VUAx;o)m+BL<d$lsa(=KsoLjj<n&z4H
zfTPC!Oc!R>^!g{O<?@9O6LJUuavzK2^QYoba_;QadNS@;<`(^vkv4u{)#^xBy1N6x
zpdYoG4%4*37@(>qs-<t3D`*8(r4zvbNvNiq5(0F5uDf08OZ6Vg_(TRx<1t@k2)6;9
ziRGxP7Cz(_p(q~QhJa+cEhP{y6$%oJj#j@28XZ{R!##bk-W5zmspK7dX$(Z%+0(N!
zxog*2Xu6G&mpRCVud{?Sh6N$CA(2d^cMrt^hDl|iree}Z=$`sg`F1p#J^`dKn}5j7
z7rd-2cW$z*2K0LIdH=wc9nD{rOYd)aCU>N!dM|`TFl#GH3%ZgWhc%-Ta2)YnGPPcH
zoO;bNEl}nn7Hd~6Lpe<d2?@T&P$r$)H(k(Zv1HsNBRBT4N27ySv;H8a7c6+L3xVh0
zQG!e+1^}3yEyHnKxUL7EPegaj#FOWRd#&-_{X%Da8Oo*no#B`H=*GeDcBwT21`$PB
zK}d4IC`F4z5lKbCTm#0^0<y15xygLv)Rs6P06^dJX9sR&`^BYN=cTTMay-)J>(Ery
zdpuv90%ZtFcCS$h@a2l7$O^kYBik2;wyvuJKLY?@^Y(2HfHN<$<ClFr*+dzuTedy|
z0Fs{!@thsj4d>0)9UB(o=|8I69HP}@cw0OH$}%P0Q15{N0m%;lFfDtS;78NP-b}!C
zJy1$O2m#j&AXG<B_#s5W0^xXY<QE#?2m!|t{9*mRjlcg40I*#V(ZB?f!Kd)3^l$wB
d68T@8zXP{ZUtGI$JdFSV002ovPDHLkV1m?maN+;}

literal 0
HcmV?d00001

diff --git a/browser/themes/windows/Toolbar-XP.png b/browser/themes/windows/Toolbar-XP.png
new file mode 100644
index 0000000000000000000000000000000000000000..dff60911f9aeadf997c613acd4912871fc507f4b
GIT binary patch
literal 19638
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

literal 0
HcmV?d00001

diff --git a/browser/themes/windows/Toolbar-aero.png b/browser/themes/windows/Toolbar-aero.png
new file mode 100644
index 0000000000000000000000000000000000000000..b191ce2aab92d64fd77f21b7645d5f14be40d097
GIT binary patch
literal 18276
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
Hu0mjfSt)K2

literal 0
HcmV?d00001

diff --git a/browser/themes/windows/Toolbar-aero@2x.png b/browser/themes/windows/Toolbar-aero@2x.png
new file mode 100644
index 0000000000000000000000000000000000000000..033d87dff53cb9b747f0ceb2a90f5b11f02e097b
GIT binary patch
literal 47581
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
LsmN4FnFjrT<>H-A

literal 0
HcmV?d00001

diff --git a/browser/themes/windows/Toolbar-lunaSilver.png b/browser/themes/windows/Toolbar-lunaSilver.png
new file mode 100644
index 0000000000000000000000000000000000000000..30c425c26b347190b99477699ec6bafd1016fc98
GIT binary patch
literal 19034
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
RyQcsE002ovPDHLkV1ni<!Sw(D

literal 0
HcmV?d00001

diff --git a/browser/themes/windows/actionicon-tab-XPVista7.png b/browser/themes/windows/actionicon-tab-XPVista7.png
new file mode 100644
index 0000000000000000000000000000000000000000..8437c7655a799dde24f3d78575cbdd1e44f91b45
GIT binary patch
literal 421
zcmV;W0b2fvP)<h;3K|Lk000e1NJLTq000mG000&U1^@s6$*LTD0004ONkl<Zc-p1Y
z(MrN#7zW^h*ikoNo_7l!Wk*5R)=2~fRYb9xNn&QJCaPnVB2FEeq6lU=E2P6b%E`XI
zPgELP^)G=3=fC%T!5`!RVB|28^B-TRvGZhY7?bM|lN%OvM(-#?*-39Yz(@0mc%}tP
zu?x4Q7f19io_z$&Dz<^JRQXKjJ0Pq2uP76aSBAEMGpP*8+!GVZ+6GRqG?4CFOfYL5
z*y3f6a9IRVX)+PS5@2U;I<R?^S`kDIqNzHQAZD?%IvUtGNUZIJGM&(M884^GgtGgg
zY=^oukmjQWI&_6P)aBN9Z=~%L1$KgWu26@%bO$rxyz>i$zW9)Udg%QJy>Z588!$~X
zf(LJ?`-fM|icSMM9y~MZI{gG4wHWD618vk`)V2)Zg9kOy10%|MzYi>-8qye54Z~QT
z{1*avfhqhfpgg0(xD((81B1s06=hvgsmp!z`!t}TqDvZe=??s8@t^!(%N<S~@TAsA
P00000NkvXXu0mjf@6)vz

literal 0
HcmV?d00001

diff --git a/browser/themes/windows/browser-aero.css b/browser/themes/windows/browser-aero.css
index dbac6bb7a..28599af7a 100644
--- a/browser/themes/windows/browser-aero.css
+++ b/browser/themes/windows/browser-aero.css
@@ -445,7 +445,7 @@
     }
 
     /* The borders on the glass frame are ours, and inside #browser, and on
-     * win7 we want to make sure they are "glassy", so we can't use
+     * vista and win7 we want to make sure they are "glassy", so we can't use
      * #browser as the exclude-glass container. We use #appcontent instead. */
     #browser {
       -moz-appearance: none;
@@ -458,7 +458,7 @@
 
   @media (-moz-os-version: windows-win8) {
     /* Artificially draw window borders that are covered by lwtheme, see bug 591930.
-     * Borders for win7 are below, win10 doesn't need them. */
+     * Borders for vista/win7 are below, win10 doesn't need them. */
     #main-window[sizemode="normal"] > #tab-view-deck > #browser-panel:-moz-lwtheme {
       border-top: 1px solid @toolbarShadowColor@;
     }
@@ -473,9 +473,11 @@
      * On aero, the menubar fog disappears for inactive windows, and renders gray
      * illegible.
      */
-    @media not all and (-moz-os-version: windows-win7) {
-      #toolbar-menubar:not(:-moz-lwtheme):-moz-window-inactive {
-        color: ThreeDShadow;
+    @media not all and (-moz-os-version: windows-vista) {
+      @media not all and (-moz-os-version: windows-win7) {
+        #toolbar-menubar:not(:-moz-lwtheme):-moz-window-inactive {
+          color: ThreeDShadow;
+        }
       }
     }
   }
@@ -485,8 +487,9 @@
     color: white;
   }
 
-  /* Show borders on win7 and win8, but not on win10 and later: */
-  @media (-moz-os-version: windows-win7),
+  /* Show borders on vista through win8, but not on win10 and later: */
+  @media (-moz-os-version: windows-vista),
+         (-moz-os-version: windows-win7),
          (-moz-os-version: windows-win8) {
     /* Vertical toolbar border */
     #main-window:not([customizing])[sizemode=normal] #navigator-toolbox > toolbar:not(#toolbar-menubar):not(#TabsToolbar):not(:-moz-lwtheme),
diff --git a/browser/themes/windows/browser.css b/browser/themes/windows/browser.css
index a0cdabfb2..15e776da1 100644
--- a/browser/themes/windows/browser.css
+++ b/browser/themes/windows/browser.css
@@ -131,7 +131,8 @@ toolbar:-moz-lwtheme {
 }
 
 @media (-moz-windows-default-theme) {
-  @media (-moz-os-version: windows-win7) {
+  @media (-moz-os-version: windows-vista),
+         (-moz-os-version: windows-win7) {
     #navigator-toolbox::after {
       border-bottom-color: #aabccf;
     }
@@ -159,7 +160,9 @@ toolbar:-moz-lwtheme {
   background-image: linear-gradient(@toolbarHighlight@, @toolbarHighlight@);
 }
 
-@media (-moz-os-version: windows-win7) {
+@media (-moz-os-version: windows-xp),
+       (-moz-os-version: windows-vista),
+       (-moz-os-version: windows-win7) {
   #nav-bar {
     background-image: linear-gradient(@toolbarHighlight@, transparent) !important;
   }
@@ -315,6 +318,64 @@ toolbar:-moz-lwtheme {
   }
 }
 
+/* Render a window top border for lwthemes on WinXP modern themes: */
+@media (-moz-windows-theme: luna-blue) {
+  #main-window[tabsintitlebar][sizemode="normal"] > #tab-view-deck > #browser-panel:-moz-lwtheme {
+    background-image: linear-gradient(to bottom,
+        rgb(8, 49, 216) 0, rgb(8, 49, 216) 1px,
+        rgb(15, 77, 227) 1px, rgb(15, 77, 227) 2px,
+        rgb(22, 106, 238) 2px, rgb(22, 106, 238) 3px,
+        rgb(8, 85, 221) 3px, rgb(8, 85, 221) 4px,
+        transparent 4px);
+  }
+
+  #main-window[tabsintitlebar][sizemode="normal"] > #tab-view-deck > #browser-panel:-moz-lwtheme:-moz-window-inactive {
+    background-image: linear-gradient(to bottom,
+        rgb(91, 104, 205) 0, rgb(91, 104, 205) 1px,
+        rgb(116, 128, 220) 1px, rgb(116, 128, 220) 2px,
+        rgb(117, 140, 221) 2px, rgb(117, 140, 221) 4px,
+        transparent 4px);
+  }
+}
+
+@media (-moz-windows-theme: luna-silver) {
+  #main-window[tabsintitlebar][sizemode="normal"] > #tab-view-deck > #browser-panel:-moz-lwtheme {
+    background-image: linear-gradient(to bottom,
+        rgb(102,102,126) 0, rgb(102,102,126) 1px,
+        rgb(168,167,191) 1px, rgb(168,167,191) 2px,
+        white 2px, white 3px,
+        rgb(188,188,207) 3px, rgb(188,188,207) 4px,
+        transparent 4px);
+  }
+
+  #main-window[tabsintitlebar][sizemode="normal"] > #tab-view-deck > #browser-panel:-moz-lwtheme:-moz-window-inactive {
+    background-image: linear-gradient(to bottom,
+        rgb(186,186,197) 0, rgb(186,186,197) 1px,
+        rgb(236,238,245) 1px, rgb(236,238,245) 2px,
+        white 2px, white 3px,
+        rgb(215,215,227) 3px, rgb(215,215,227) 4px,
+        transparent 4px);
+  }
+}
+
+@media (-moz-windows-theme: luna-olive) {
+  #main-window[tabsintitlebar][sizemode="normal"] > #tab-view-deck > #browser-panel:-moz-lwtheme {
+    background-image: linear-gradient(to bottom,
+        rgb(139,161,105) 0, rgb(139,161,105) 1px,
+        rgb(171, 189, 133) 1px, rgb(171, 189, 133) 2px,
+        rgb(164,178,127) 2px, rgb(164,178,127) 3px,
+        transparent 3px);
+  }
+
+  #main-window[tabsintitlebar][sizemode="normal"] > #tab-view-deck > #browser-panel:-moz-lwtheme:-moz-window-inactive {
+    background-image: linear-gradient(to bottom,
+        rgb(207, 214, 188) 0, rgb(207, 214, 188) 1px,
+        rgb(224, 226, 200) 1px, rgb(224, 226, 200) 2px,
+        rgb(214, 216, 190) 2px, rgb(214, 216, 190) 3px,
+        transparent 3px);
+  }
+}
+
 #TabsToolbar:not([collapsed="true"]) + #nav-bar {
   /* Move up into the TabsToolbar for the inner highlight at the top of the nav-bar */
   margin-top: calc(-1 * var(--navbar-tab-toolbar-highlight-overlap));
@@ -345,6 +406,12 @@ toolbar:-moz-lwtheme {
   background-color: -moz-dialog;
 }
 
+@media (-moz-os-version: windows-xp) and (-moz-windows-default-theme) {
+  #main-window[tabsintitlebar][sizemode="normal"] #toolbar-menubar {
+    margin-top: 4px;
+  }
+}
+
 /* ::::: titlebar ::::: */
 
 #main-window[sizemode="normal"] > #titlebar {
@@ -365,7 +432,7 @@ toolbar:-moz-lwtheme {
  * click and hover mouse events to work properly for the button in the restored
  * window state. Otherwise, elements in the navigator-toolbox, like the menubar,
  * can swallow those events. It will also place the buttons above the fog on
- * Windows 7 with Aero Glass.
+ * themes with Aero Glass.
  */
 #titlebar-buttonbox {
   z-index: 1;
@@ -375,6 +442,12 @@ toolbar:-moz-lwtheme {
   margin-left: 22px; /* space needed for Aero Snap */
 }
 
+@media (-moz-os-version: windows-xp) {
+  .titlebar-placeholder[type="caption-buttons"] {
+    margin-left: 10px; /* less space needed on XP because there's no Aero Snap */
+  }
+}
+
 /* titlebar command buttons */
 
 #titlebar-min {
@@ -597,6 +670,13 @@ menuitem.bookmark-item {
 
 %include ../shared/toolbarbuttons.inc.css
 
+@media (-moz-windows-theme: luna-silver) and (max-resolution: 1dppx) {
+  :-moz-any(@primaryToolbarButtons@),
+  #bookmarks-menu-button.toolbarbutton-1 > .toolbarbutton-menubutton-dropmarker > .dropmarker-icon {
+    list-style-image: url("chrome://browser/skin/Toolbar-lunaSilver.png");
+  }
+}
+
 #main-window:not([customizing]) .toolbarbutton-1[disabled=true] > .toolbarbutton-icon,
 #main-window:not([customizing]) .toolbarbutton-1[disabled=true] > .toolbarbutton-menu-dropmarker,
 #main-window:not([customizing]) .toolbarbutton-1[disabled=true] > .toolbarbutton-menubutton-dropmarker,
@@ -700,7 +780,10 @@ toolbar[brighttext] .toolbarbutton-1 > .toolbarbutton-menubutton-dropmarker {
   max-width: 32px;
 }
 
-@media (-moz-os-version: windows-win7) {
+@media (-moz-os-version: windows-xp),
+       (-moz-os-version: windows-vista),
+       (-moz-os-version: windows-win7) {
+  /* < Win8 */
   :root {
     --toolbarbutton-hover-background: linear-gradient(hsla(0,0%,100%,.6), hsla(0,0%,100%,.1));
     --toolbarbutton-hover-bordercolor: hsla(210,54%,20%,.15) hsla(210,54%,20%,.2) hsla(210,54%,20%,.25);
@@ -1018,7 +1101,9 @@ toolbar[brighttext] #close-button {
   list-style-image: url(chrome://browser/skin/caption-buttons.svg#close-white);
 }
 
-@media (-moz-os-version: windows-win7) {
+@media (-moz-os-version: windows-xp),
+       (-moz-os-version: windows-vista),
+       (-moz-os-version: windows-win7) {
   #window-controls {
     margin-inline-start: 4px;
   }
@@ -1074,7 +1159,8 @@ toolbar[brighttext] #close-button {
   }
 }
 
-@media (-moz-os-version: windows-win7) {
+@media (-moz-os-version: windows-vista),
+       (-moz-os-version: windows-win7) {
   #window-controls {
     -moz-box-align: start;
   }
@@ -1118,7 +1204,8 @@ toolbar[brighttext] #close-button {
 }
 
 @media (-moz-windows-default-theme) {
-  @media (-moz-os-version: windows-win7),
+  @media (-moz-os-version: windows-vista),
+         (-moz-os-version: windows-win7),
          (-moz-os-version: windows-win8) {
     #main-window:not(:-moz-lwtheme) {
       --urlbar-border-color: hsla(210,54%,20%,.25) hsla(210,54%,20%,.27) hsla(210,54%,20%,.3);
@@ -1155,7 +1242,8 @@ toolbar[brighttext] #close-button {
     border-radius: 1px;
   }
 
-  @media (-moz-os-version: windows-win7),
+  @media (-moz-os-version: windows-vista),
+         (-moz-os-version: windows-win7),
          (-moz-os-version: windows-win8) {
     #urlbar:not(:-moz-lwtheme),
     .searchbar-textbox:not(:-moz-lwtheme) {
@@ -1178,9 +1266,11 @@ toolbar[brighttext] #close-button {
     }
   }
 
-  #urlbar:not(:-moz-lwtheme)[focused],
-  .searchbar-textbox:not(:-moz-lwtheme)[focused] {
-    border-color: Highlight;
+  @media not all and (-moz-os-version: windows-xp) {
+    #urlbar:not(:-moz-lwtheme)[focused],
+    .searchbar-textbox:not(:-moz-lwtheme)[focused] {
+      border-color: Highlight;
+    }
   }
 }
 
@@ -1933,7 +2023,9 @@ html|span.ac-emphasize-text-url {
   }
 }
 
-@media (-moz-os-version: windows-win7) {
+@media (-moz-os-version: windows-xp),
+       (-moz-os-version: windows-vista),
+       (-moz-os-version: windows-win7) {
   #sidebar-header > .close-icon {
     padding-top: 4px;
     padding-bottom: 4px;
@@ -1954,28 +2046,39 @@ html|span.ac-emphasize-text-url {
   margin-bottom: calc(-1 * var(--tab-toolbar-navbar-overlap)); /* overlap the nav-bar's top border */
 }
 
+@media (-moz-os-version: windows-xp) and (-moz-windows-default-theme) {
+  #main-window[sizemode=normal] #TabsToolbar {
+    padding-left: 2px;
+    padding-right: 2px;
+  }
+}
+
 %include ../shared/tabs.inc.css
 
 /* Remove border between tab strip and navigation toolbar on Windows 10+ */
-@media not all and (-moz-os-version: windows-win7) {
-  @media not all and (-moz-os-version: windows-win8) {
-    @media (-moz-windows-default-theme) {
-      .tab-background-end[selected=true]::after,
-      .tab-background-start[selected=true]::after {
-        content: none;
-      }
-
-      #TabsToolbar {
-        --tab-stroke-background-size: 0 0;
-      }
-
-      :root {
-        --tab-toolbar-navbar-overlap: 0px;
-      }
-
-      #nav-bar {
-        border-top-style: none !important;
-        box-shadow: none;
+@media not all and (-moz-os-version: windows-xp) {
+  @media not all and (-moz-os-version: windows-vista) {
+    @media not all and (-moz-os-version: windows-win7) {
+      @media not all and (-moz-os-version: windows-win8) {
+        @media (-moz-windows-default-theme) {
+          .tab-background-end[selected=true]::after,
+          .tab-background-start[selected=true]::after {
+            content: none;
+          }
+
+          #TabsToolbar {
+            --tab-stroke-background-size: 0 0;
+          }
+
+          :root {
+            --tab-toolbar-navbar-overlap: 0px;
+          }
+
+          #nav-bar {
+            border-top-style: none !important;
+            box-shadow: none;
+          }
+        }
       }
     }
   }
@@ -2460,6 +2563,22 @@ notification.pluginVulnerable > .notification-inner > .messageCloseButton {
   position: relative;
 }
 
+@media (-moz-os-version: windows-xp) {
+  @media not all and (-moz-windows-classic) {
+    #private-browsing-indicator-titlebar > .private-browsing-indicator {
+      background-image: url("chrome://browser/skin/privatebrowsing-mask-titlebar-XPVista7-tall.png");
+      height: 28px;
+    }
+
+    #main-window[sizemode="maximized"] > #titlebar > #titlebar-content > #titlebar-buttonbox-container > #private-browsing-indicator-titlebar > .private-browsing-indicator {
+      top: -5px;
+    }
+    #main-window[sizemode="normal"] > #titlebar > #titlebar-content > #titlebar-buttonbox-container > #private-browsing-indicator-titlebar > .private-browsing-indicator {
+      top: -1px;
+    }
+  }
+}
+
 @media (-moz-windows-classic) {
   /**
    * We have to use top instead of background-position in this case, otherwise
@@ -2471,7 +2590,8 @@ notification.pluginVulnerable > .notification-inner > .messageCloseButton {
   }
 }
 
-@media (-moz-os-version: windows-win7) {
+@media (-moz-os-version: windows-vista),
+       (-moz-os-version: windows-win7) {
   @media (-moz-windows-glass) {
     #main-window[sizemode="normal"] > #titlebar > #titlebar-content > #titlebar-buttonbox-container > #private-browsing-indicator-titlebar > .private-browsing-indicator {
       top: 1px;
@@ -2488,7 +2608,7 @@ notification.pluginVulnerable > .notification-inner > .messageCloseButton {
   @media (-moz-windows-default-theme) {
     @media not all and (-moz-windows-compositor) {
       #main-window[sizemode="normal"] > #titlebar > #titlebar-content > #titlebar-buttonbox-container > #private-browsing-indicator-titlebar > .private-browsing-indicator {
-        background-image: url("chrome://browser/skin/privatebrowsing-mask-titlebar-win7-tall.png");
+        background-image: url("chrome://browser/skin/privatebrowsing-mask-titlebar-XPVista7-tall.png");
         height: 28px;
       }
     }
@@ -2521,14 +2641,19 @@ notification.pluginVulnerable > .notification-inner > .messageCloseButton {
   margin-top: -4px;
 }
 
+
+@media not all and (-moz-os-version: windows-xp) {
 %include browser-aero.css
+}
 
 .browser-extension-panel > .panel-arrowcontainer > .panel-arrowcontent {
   padding: 0;
   overflow: hidden;
 }
 
-@media (-moz-os-version: windows-win7) {
+@media (-moz-os-version: windows-xp),
+       (-moz-os-version: windows-vista),
+       (-moz-os-version: windows-win7) {
   .cui-widget-panelview[id^=PanelUI-webext-] {
     border-radius: 4px;
   }
diff --git a/browser/themes/windows/customizableui/panelUI.css b/browser/themes/windows/customizableui/panelUI.css
index 189a163f3..92080d599 100644
--- a/browser/themes/windows/customizableui/panelUI.css
+++ b/browser/themes/windows/customizableui/panelUI.css
@@ -131,17 +131,21 @@ menu.subviewbutton > .menu-right:-moz-locale-dir(rtl) {
 }
 
 /* Win8 and beyond. */
-@media not all and (-moz-os-version: windows-win7) {
-  panelview .toolbarbutton-1,
-  .subviewbutton,
-  .widget-overflow-list .toolbarbutton-1,
-  .panelUI-grid .toolbarbutton-1 > .toolbarbutton-menubutton-button,
-  #BMB_bookmarksPopup menupopup[placespopup=true] > hbox,
-  #edit-controls@inAnyPanel@,
-  #zoom-controls@inAnyPanel@,
-  #edit-controls@inAnyPanel@ > toolbarbutton,
-  #zoom-controls@inAnyPanel@ > toolbarbutton {
-    border-radius: 0;
+@media not all and (-moz-os-version: windows-xp) {
+  @media not all and (-moz-os-version: windows-vista) {
+    @media not all and (-moz-os-version: windows-win7) {
+      panelview .toolbarbutton-1,
+      .subviewbutton,
+      .widget-overflow-list .toolbarbutton-1,
+      .panelUI-grid .toolbarbutton-1 > .toolbarbutton-menubutton-button,
+      #BMB_bookmarksPopup menupopup[placespopup=true] > hbox,
+      #edit-controls@inAnyPanel@,
+      #zoom-controls@inAnyPanel@,
+      #edit-controls@inAnyPanel@ > toolbarbutton,
+      #zoom-controls@inAnyPanel@ > toolbarbutton {
+        border-radius: 0;
+      }
+    }
   }
 }
 
diff --git a/browser/themes/windows/devedition.css b/browser/themes/windows/devedition.css
index bdf4bb80e..2dc72eeeb 100644
--- a/browser/themes/windows/devedition.css
+++ b/browser/themes/windows/devedition.css
@@ -16,7 +16,7 @@
 
 /* The window background is white due to no accentcolor in the lightweight
    theme. It can't be changed to transparent when there is no compositor
-   (Win 7 in classic / basic theme), or else dragging and focus become
+   (Win XP or 7 in classic / basic theme), or else dragging and focus become
    broken. So instead just show the normal titlebar in that case, and override
    the window color as transparent when the compositor is available. */
 @media not all and (-moz-windows-compositor) {
@@ -116,7 +116,9 @@
   }
 }
 
-@media (-moz-os-version: windows-win7),
+@media (-moz-os-version: windows-xp),
+       (-moz-os-version: windows-vista),
+       (-moz-os-version: windows-win7),
        (-moz-os-version: windows-win8) {
   :root {
     --space-above-tabbar: 15px;
@@ -259,7 +261,8 @@
   color: var(--chrome-color);
 }
 
-@media (-moz-os-version: windows-win7),
+@media (-moz-os-version: windows-vista),
+       (-moz-os-version: windows-win7),
        (-moz-os-version: windows-win8) {
   /* And then we add them back on toolbars so that they don't look borderless: */
   #main-window:not([customizing])[sizemode=normal] #navigator-toolbox::after,
diff --git a/browser/themes/windows/downloads/allDownloadsViewOverlay.css b/browser/themes/windows/downloads/allDownloadsViewOverlay.css
index 0ee83f669..e288f1e90 100644
--- a/browser/themes/windows/downloads/allDownloadsViewOverlay.css
+++ b/browser/themes/windows/downloads/allDownloadsViewOverlay.css
@@ -18,30 +18,32 @@
 
 /*** Highlighted list items ***/
 
-@media (-moz-windows-default-theme) {
-  /*
-  -moz-appearance: menuitem is almost right, but the hover effect is not
-  transparent and is lighter than desired.
-
-  Copied from the autocomplete richlistbox styling in
-  toolkit/themes/windows/global/autocomplete.css
-
-  This styling should be kept in sync with the style from the above file.
-  */
-  @itemFocused@ {
-    color: inherit;
-    background-color: transparent;
-    /* four gradients for the bevel highlights on each edge, one for blue background */
-    background-image:
-      linear-gradient(to bottom, rgba(255,255,255,0.9) 3px, transparent 3px),
-      linear-gradient(to right, rgba(255,255,255,0.5) 3px, transparent 3px),
-      linear-gradient(to left, rgba(255,255,255,0.5) 3px, transparent 3px),
-      linear-gradient(to top, rgba(255,255,255,0.4) 3px, transparent 3px),
-      linear-gradient(to bottom, rgba(163,196,247,0.3), rgba(122,180,246,0.3));
-    background-clip: content-box;
-    border-radius: 6px;
-    outline: 1px solid rgb(124,163,206);
-    -moz-outline-radius: 3px;
-    outline-offset: -2px;
+@media not all and (-moz-os-version: windows-xp) {
+  @media (-moz-windows-default-theme) {
+    /*
+    -moz-appearance: menuitem is almost right, but the hover effect is not
+    transparent and is lighter than desired.
+
+    Copied from the autocomplete richlistbox styling in
+    toolkit/themes/windows/global/autocomplete.css
+
+    This styling should be kept in sync with the style from the above file.
+    */
+    @itemFocused@ {
+      color: inherit;
+      background-color: transparent;
+      /* four gradients for the bevel highlights on each edge, one for blue background */
+      background-image:
+        linear-gradient(to bottom, rgba(255,255,255,0.9) 3px, transparent 3px),
+        linear-gradient(to right, rgba(255,255,255,0.5) 3px, transparent 3px),
+        linear-gradient(to left, rgba(255,255,255,0.5) 3px, transparent 3px),
+        linear-gradient(to top, rgba(255,255,255,0.4) 3px, transparent 3px),
+        linear-gradient(to bottom, rgba(163,196,247,0.3), rgba(122,180,246,0.3));
+      background-clip: content-box;
+      border-radius: 6px;
+      outline: 1px solid rgb(124,163,206);
+      -moz-outline-radius: 3px;
+      outline-offset: -2px;
+    }
   }
 }
diff --git a/browser/themes/windows/downloads/download-glow-XPVista7.png b/browser/themes/windows/downloads/download-glow-XPVista7.png
new file mode 100644
index 0000000000000000000000000000000000000000..e7415e83d8bbad00fcde9fb3926a2e51638eb6be
GIT binary patch
literal 494
zcmV<K0TKR*P)<h;3K|Lk000e1NJLTq000sI000sQ1^@s6R?d!B0005CNkl<Zc-p;_
zM@s`i7>47?LeyvyO=bnf`ais@fQn}Y5kZVu6-yvk5*yf1?1&W*1Y)l-fFf3c*bAN%
z?-FCVyw0q$I3ddB;=ltR?>jvEEz7F@Isk%xq6+i?&{D`RL<b@w>ddmE;OrU%=U61z
z9Fb+-Wt~z<5QT&lbU<U7gT}h}g~fre{C2R8-BBzGH;qBpaR^=K5ks137Pu%voP@sX
zn1g14iz3Bo#B{qkXr@RcNn}wu74@8O&`cIF{0WS{pIK8ii`d>%4wgwhk6zxw`}QG(
zW|$vBaxDnWvqD|i4V~QyL*F?E%UH+mgyhshon^jYGH#>d;f3m`@~L-i!y5E$J222!
zF%DdE(2RE5(AKXaTAc7!jIWf+8~u=_Rm^Nx$J(85#=cXKp&LJ3gLMYm#!H=JPXv%6
z3w&iYv%8gsrma^pa1LSQmU73CX3~EKqkYrUIDcT`CH`fpR>!_bnq6LD@CtFG_Y%V3
zB}lW=)4F_I0w7uGZ<1nLI5d$Kmq!@7f<%k!xqZ!D%t;i=lH2Ih<84b%l*i6>cM*Uj
k<py4sNJ;-DLG>T!6E#)Fsb_e4WdHyG07*qoM6N<$f?KWM^Z)<=

literal 0
HcmV?d00001

diff --git a/browser/themes/windows/downloads/download-glow-menuPanel-XPVista7.png b/browser/themes/windows/downloads/download-glow-menuPanel-XPVista7.png
new file mode 100644
index 0000000000000000000000000000000000000000..7ff7e6a0330012061e5cf4477c196fdc766cecf0
GIT binary patch
literal 893
zcmV-@1A_dCP)<h;3K|Lk000e1NJLTq001BW001Be1^@s6b9#F80009-Nkl<Zc-q}p
zZAepL6n@|PvF~)LTWeFNb5W^6X2lAFe)&%V2_Y291R;?KAq;_jWq}A-Aeo`51_+o%
zp-_>UM5dTvVUlH<Io0KN=02MD?R{ZV?drVOI|F*)z;<|cpXZ!&2j@T_5(pu<83l*{
zL`X2-ih}~eF(ib<0AYyBzTI=IV|e*G$0&^0_lCt&UiXYGT3OswVB?vPVu0=(bzNn3
zF-A(R1c3~2ZdXLNeY^yJNtMz8J`^FlX^j>@iVkQ1vI^jJe%Gyym?R|{@ToB@gVg~-
zo4jWb0!Y)mwDb-jM1p(}!VSIwgb)d#-0kRqh{_Pyjt+1ngmVAK5dd73;L5h613*Lv
zz_$GhxPLMNxPDg=34s$pfu4ufGZ2MC2{u6A=$sNzwD7l^qJR&30<acvI2b~oUUX^>
z7PmCI8FeE5G3C#s<to7J2p4RCk|}|{sPhBoaq`>Cc~>>S-7#__BY({R(yHYglBrd)
zkX;mH<-D#z><QAC$_X^U$bc+V50F0}A;5W7Xt3g7{TGs$YmW!56<u?6Kpkd;49hbi
z6+|3)J%IW#J6L+seD1U@dIV>u|J;bIrL99zH(xp$IMq&*&qQ#=SLWWAXIOGh9gdvF
z*)Qv@WO3zBKSq_cPt|fNtr;@1poufCg@KAp>)G@J#&1MC&`xN%)i!J@d1kL$Rcd32
z3F+eV{nc6fa?=tGM0`xhQfjGw@!4>tb*vtnh=VkXnQ%+utZTlnIy*iuEy>`(*{@=@
z;@EqyMh%xAj@<PswR?Rg#ESPe<Rs;t*smv*k8foyH#fc>GZfw*s##TN<MB9%2?646
zz`7TDn(~tKY}SYwoV8223(SxD?7IBM!CH?jG=Xn|FRpMec0I^XIiC_6Mk=2O#$giu
z<n5#`xBlH7k6fGl+XP=+=~;Z)oPVeQi<6m82J<qCd_FLxKU33Rg-xXRO#ChWbD^{K
z;?aTxQz)r?O8RNWhpFq+Ohjg7Z<Uh`IYKdVK)_*fwRfql{Zi@$i(W%!J}v4t6ba*-
zky%|<Wp~l6hfRkNaN#m<b4%gzGAvFicZfeu#UliV!7n#~V;P791Ga`GUr5F;SaFjB
T^M-f{00000NkvXXu0mjf!Qqx%

literal 0
HcmV?d00001

diff --git a/browser/themes/windows/downloads/indicator.css b/browser/themes/windows/downloads/indicator.css
index 7f921f8de..627265088 100644
--- a/browser/themes/windows/downloads/indicator.css
+++ b/browser/themes/windows/downloads/indicator.css
@@ -166,9 +166,13 @@ toolbar[brighttext] #downloads-button:not([counter])[attention="success"] > #dow
   font-size: 9px;
   line-height: 9px;
   text-align: center;
+}
 
-  /* Bug 812345 added this... */
-  margin-bottom: -1px;
+@media not all and (-moz-os-version: windows-xp) {
+  #downloads-indicator-counter {
+    /* Bug 812345 added this... */
+    margin-bottom: -1px;
+  }
 }
 
 toolbar[brighttext] #downloads-indicator-counter {
diff --git a/browser/themes/windows/feeds/feedIcon-XP.png b/browser/themes/windows/feeds/feedIcon-XP.png
new file mode 100644
index 0000000000000000000000000000000000000000..d0cafb1d4a1ade383553ed3855a6cc91e32059b0
GIT binary patch
literal 1770
zcmV<G1{L{<P)<h;3K|Lk000e1NJLTq001BW001Be1^@s6b9#F8000KDNkl<Zc-pO3
zUu+ab82|0=-SzI;YfHgWT96{p79c7Df(n8P1Th+oXkv)LpeFL77@tgh)%ZxF@xdn{
z5h9ofm>81+qKFC-P-#ok7ObTlZJ~efu6MV8X8d+$w!>a%^ntJU>+H<z?)RJT-^?1E
zb9C-**<w}B+?AM9yD?gxoDI_iI1}*a!90S0?TKqn0Qcx8S~<rYeUBRF)Q9R9vxV!U
zgPBw5ar@8<-{)EZ6zSc}xcpZ0mhz@$pQM^vnyge649fz*<%2{(D|VG~Y6+?(ICQHc
zS~2FiiVU@$tq3^qYzOZ6BnEnhx=(jbe7NUK{s@3f#Hy^>RYA(5HMIb^e25@lB1p&;
zOA^zNp)q}}?*kV<MlhoWV%2ffEv#AGcq6w1z&S#1BvDtpF;bBdH?!gd*yJ#{olzu|
z6~L8CI5k1v3y%wn>ArA*KMn@NC#x)KCZlMqFJB2{8vqPNe4iVZ3GNn1`At-9-3w-C
z1QC`=!yE5|JKPQT=4G(l4FtmZ)K$3Uy7gheC&vH<-@}!aks1I#;t`mJT!C8zFJ=ML
zf*G$CK+QrZA>~7GuAhh9{~PSSGk`OR=|uDK-N!`>#$;cRGT<vGL?V(|5KK0v6SKS)
zWlh@zoc^;YUOkTDl~zIg4%&r&L%UDKmms0~FbPIPrV7`A^gkpzca22D!zgqfgOffF
zEz0x+`l&2pq7N}9`+-DsUQ3oE`!>;N5@u>PB2|sBW-dasb{QhI%TX$23pXP&s~P$B
z!zi?WJ>_@$3j$G-QA8jYtO>{f@f4WIX>Q*V0qG95Df>qdo4XdV`RfpC+#usaiB)wk
zD%S3SnV5<EAN%RqtX8i4&s9bkqAei+ox^H^5Ee0K_x&soy?PSyrl(Q1Xsez#EhJaG
z2E&RX_xtC7B%xOf9;%FC7pOu*&=b=OWx_c)H!e_Gb|Sv)C0LaW2qba;4sfS{+}Tg1
zG9Q73SwM*U&;(@gIRKXysM*;nYJfL>4c>4UoWV;%A-8iOi{#tBf|ngY;(=F1j3^P7
zV7Z&f|M{g1IH_E<jNp~HfUA<K%B^9Q!AjK&fFeBs5P^#*{(TbmmE&NAF({$2Q#6?e
zR=r6imIv-2OS}T-Ru{SK*D2)&Q!XgU0+V~5-bldjoOW|opyJW@P_h1f#E6s>1_PXw
z{DS<2FUVs3Ixwr}BeCp7T1-qXN+{I;yN!Uh0O3DkAlCRe${%?b@x|M~gVX{?kpeS+
z>0s#Ic=Iz9tlQ*0o~L{-w`Lx4f#-rS6@<h4x4<f&4Qo~tqID076;l-qtuDEGx45^^
z`R&w-@_!wqn$UuH%d@&pG;c$`;~1Dd0V8C7O~91F;pi=vYP>trgJRcr$o}*ZGABMD
zMMuLAmCvGJ+lkn`HLBb)dc27I<s)GE5lx_RJ<9HT0`Qm)LV?@fC6sy&aOW5hS&%*b
zF>>cV1E=j;TcQ#1rQ2baRf?AyjKl6dgF<&JpoIu*P-hB-(jc5VKoFp-REcm*Qk9#$
zxGzM~UtMhRR;d6o#fn!>l*G+Cm{s+<9_TdG7SKUR14%OP$~Q1$`vC#E7G)O9C$SHO
zj&H&%T(lX8CIL^Fm<ap;Cw)O%Dm4eOx)nfB=mO|0U@{HWeh_bY4#|gJhc#n?4{;q|
z@;nR(--+FiWe4>N8&)G$ze=0dD^j&o1e8Q(FV&~15-XcD7{q``kFo_%A`orrr>5B3
zX(~#6XTo)&-d|y0Vn%V(9wsnrv3OqZiab;Yv~R#Mjf9Gb(|<m!;GQMIf-=xNQ3XTu
zGaAKs$O2&(xWSo#%IgV~O0lO^A2<o_P)Arn%>tF@65eQEXx>WIDW$>A2>mQ~)q%t?
zsO1!7NBo<~?3(~kpOoj@4oefOG;&9KOO9*zNDHYC7?v9j%^UG*NluYu9@BGOZ_n$m
zYM#?zMlI<l0#JH_5fEcRG#jc_V+2K@boUdk;mYqGm<<eEWn*iP@^=9IXpRnKPPy4h
z@e)HTB1n@P0ST>Kv@BS$0uOyj>6R30_j&ZoGqk69H-G}cHPaK$p~0S8-S%h>%yAJM
zQuWI;=$}4hs*)O3=n;50=b1W)x(sfHq4yu2J~4o^07eJ}13+T$V~Lj+R9iddH&m>w
zN=0j6LOiI?bn==*nOvXswE`A=glJMEvhOjBWii%9D?drf4_w1303C#0L!Hl4gnB|l
z@Wmp=@2)UHL9P5cAx+2_;<RcQzOphxQYnuR4BTDe1Xq!m3_j2Q1x$Itru%q<&Hw-a
M07*qoM6N<$f|^$=U;qFB

literal 0
HcmV?d00001

diff --git a/browser/themes/windows/feeds/feedIcon16-XP.png b/browser/themes/windows/feeds/feedIcon16-XP.png
new file mode 100644
index 0000000000000000000000000000000000000000..dd7821f8dcf3f562a34af52cb6d810b1ebee391e
GIT binary patch
literal 762
zcmV<W0tNkvP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV0008PNkl<Zc-oDV
zJxmlq6vzL&x4XA+#{nmD2ZBa13gR~^i3DO{XF_a9tSr=om{?qlN@HOum5qfVnxKW1
zmVU-qh%tot1qRGXFd-oTf&h0Mw|6@`<C_-*OLy}!A3OV>-@N}DWAt3C(J+i|x27Ux
zhAsThBRwDa>E&KX*>CBe6I~ZlPNE(N3Q$22pin~hJt$wt8lcA_&*Q*bg<bCUWX5K~
zmfqQ^u0y2d5-$ugQxLz?@TZ0#7JsrBDN!gWsapxdRB+-YaFel=#n_|_%Yhj#gBeZ0
zu5E$4w-d#wLF7jsL(G5whd-bYFdz}K4e+5Ap=Vy*fML0?;tjC3oq%0)2;p6)N$eQb
zKHY~m_LNDOA_yR*ppcsa!Qwb%ehJ0Ncfjx?INRG%diXr7txbrwU4!YAAxA<81QZ3e
zOcP4A$8VL?H^6P~g0*Eg5OSb$zYr`<kk|l>a12(}9wIsdwYCU<<||QX5g-0aVUxgZ
z?9^R$!Jqz&{P06wygJa!JGo6~QQCT$^70Wy`VOHfB$yzatOZPyT`(inuqt-IsXqys
zouLG#A!dg)0nZyw1YY`u-joQ6FnL!$kKBhlSb25@nU`1L&wYbg5=W%%I_$)L1lc*{
zhVC(Tc;_it)y+^sA49GS2yfkM2|+(+U-uCH7ZRyN>G5tDhK0iT8=f=5Q4;B3F>>Uu
zKpxSKo2a_@9<eibp}b|}2B{SVwlS1E$Q4+acnbhz^HG4ESQmg^Sl0@eAwoU?De{~s
ze|7{$$cC*2q@eLA0C26a6GUw4iy;dIDwHRXxp{a$p7Z%YJBo!g=f`v_Y0f8WCv~DZ
zky1zm1qpo{Z<p^&_Binf6un@N*=G(2Y6bT<ib(naic3KzJE{6C;^^16%1xH14BG^x
s<m9MevuqWI*!UKB65fL9BkLdh0TDa0yK$KRsQ>@~07*qoM6N<$g8BDR%m4rY

literal 0
HcmV?d00001

diff --git a/browser/themes/windows/jar.mn b/browser/themes/windows/jar.mn
index 410148645..d39a46b2e 100644
--- a/browser/themes/windows/jar.mn
+++ b/browser/themes/windows/jar.mn
@@ -11,17 +11,21 @@ browser.jar:
 * skin/classic/browser/syncedtabs/sidebar.css     (syncedtabs/sidebar.css)
   skin/classic/browser/actionicon-tab.png
   skin/classic/browser/actionicon-tab@2x.png
-  skin/classic/browser/actionicon-tab-win7.png
+  skin/classic/browser/actionicon-tab-XPVista7.png
 * skin/classic/browser/browser.css
 * skin/classic/browser/devedition.css
 * skin/classic/browser/browser-lightweightTheme.css
   skin/classic/browser/caption-buttons.svg
   skin/classic/browser/click-to-play-warning-stripes.png
   skin/classic/browser/Info.png
+  skin/classic/browser/Info-XP.png
   skin/classic/browser/keyhole-forward-mask.svg
   skin/classic/browser/livemark-folder.png
+  skin/classic/browser/livemark-folder-XP.png
   skin/classic/browser/menu-back.png
+  skin/classic/browser/menu-back-XP.png
   skin/classic/browser/menu-forward.png
+  skin/classic/browser/menu-forward-XP.png
   skin/classic/browser/menuPanel-customize.png
   skin/classic/browser/menuPanel-customize@2x.png
   skin/classic/browser/menuPanel-exit.png
@@ -32,33 +36,36 @@ browser.jar:
   skin/classic/browser/monitor_16-10.png
   skin/classic/browser/pageInfo.css
   skin/classic/browser/pageInfo.png
+  skin/classic/browser/pageInfo-XP.png
   skin/classic/browser/privatebrowsing-mask-tabstrip.png
-  skin/classic/browser/privatebrowsing-mask-tabstrip-win7.png
+  skin/classic/browser/privatebrowsing-mask-tabstrip-XPVista7.png
   skin/classic/browser/privatebrowsing-mask-titlebar.png
-  skin/classic/browser/privatebrowsing-mask-titlebar-win7.png
-  skin/classic/browser/privatebrowsing-mask-titlebar-win7-tall.png
+  skin/classic/browser/privatebrowsing-mask-titlebar-XPVista7.png
+  skin/classic/browser/privatebrowsing-mask-titlebar-XPVista7-tall.png
   skin/classic/browser/reload-stop-go.png
   skin/classic/browser/reload-stop-go@2x.png
-  skin/classic/browser/reload-stop-go-win7.png
-  skin/classic/browser/reload-stop-go-win7@2x.png
+  skin/classic/browser/reload-stop-go-XPVista7.png
+  skin/classic/browser/reload-stop-go-XPVista7@2x.png
   skin/classic/browser/searchbar.css
   skin/classic/browser/setDesktopBackground.css
   skin/classic/browser/slowStartup-16.png
   skin/classic/browser/Toolbar.png
   skin/classic/browser/Toolbar@2x.png
-  skin/classic/browser/Toolbar-win7.png
-  skin/classic/browser/Toolbar-win7@2x.png
+  skin/classic/browser/Toolbar-aero.png
+  skin/classic/browser/Toolbar-aero@2x.png
   skin/classic/browser/Toolbar-inverted.png
   skin/classic/browser/Toolbar-inverted@2x.png
+  skin/classic/browser/Toolbar-lunaSilver.png
   skin/classic/browser/Toolbar-win8.png
   skin/classic/browser/Toolbar-win8@2x.png
-  skin/classic/browser/toolbarbutton-dropdown-arrow-win7.png
+  skin/classic/browser/Toolbar-XP.png
+  skin/classic/browser/toolbarbutton-dropdown-arrow-XPVista7.png
   skin/classic/browser/toolbarbutton-dropdown-arrow-inverted.png
   skin/classic/browser/urlbar-popup-blocked.png
   skin/classic/browser/urlbar-history-dropmarker.png
   skin/classic/browser/urlbar-history-dropmarker@2x.png
-  skin/classic/browser/urlbar-history-dropmarker-win7.png
-  skin/classic/browser/urlbar-history-dropmarker-win7@2x.png
+  skin/classic/browser/urlbar-history-dropmarker-XPVista7.png
+  skin/classic/browser/urlbar-history-dropmarker-XPVista7@2x.png
   skin/classic/browser/webRTC-indicator.css
 * skin/classic/browser/controlcenter/panel.css                 (controlcenter/panel.css)
   skin/classic/browser/customizableui/background-noise-toolbar.png  (customizableui/background-noise-toolbar.png)
@@ -71,40 +78,57 @@ browser.jar:
 * skin/classic/browser/customizableui/panelUI.css       (customizableui/panelUI.css)
 * skin/classic/browser/downloads/allDownloadsViewOverlay.css   (downloads/allDownloadsViewOverlay.css)
   skin/classic/browser/downloads/download-glow-menuPanel.png   (downloads/download-glow-menuPanel.png)
-  skin/classic/browser/downloads/download-glow-menuPanel-win7.png   (downloads/download-glow-menuPanel-win7.png)
+  skin/classic/browser/downloads/download-glow-menuPanel-XPVista7.png   (downloads/download-glow-menuPanel-XPVista7.png)
   skin/classic/browser/downloads/download-notification-finish.png (downloads/download-notification-finish.png)
   skin/classic/browser/downloads/download-notification-start.png (downloads/download-notification-start.png)
 * skin/classic/browser/downloads/downloads.css                 (downloads/downloads.css)
   skin/classic/browser/feeds/feedIcon.png                      (feeds/feedIcon.png)
   skin/classic/browser/feeds/feedIcon16.png                    (feeds/feedIcon16.png)
+  skin/classic/browser/feeds/feedIcon-XP.png                   (feeds/feedIcon-XP.png)
+  skin/classic/browser/feeds/feedIcon16-XP.png                 (feeds/feedIcon16-XP.png)
   skin/classic/browser/feeds/subscribe.css                     (feeds/subscribe.css)
   skin/classic/browser/feeds/subscribe-ui.css                  (feeds/subscribe-ui.css)
 * skin/classic/browser/newtab/newTab.css                       (newtab/newTab.css)
   skin/classic/browser/places/autocomplete-star.png            (places/autocomplete-star.png)
   skin/classic/browser/places/autocomplete-star@2x.png         (places/autocomplete-star@2x.png)
-  skin/classic/browser/places/autocomplete-star-win7.png       (places/autocomplete-star-win7.png)
+  skin/classic/browser/places/autocomplete-star-XPVista7.png   (places/autocomplete-star-XPVista7.png)
   skin/classic/browser/places/places.css                       (places/places.css)
 * skin/classic/browser/places/organizer.css                    (places/organizer.css)
   skin/classic/browser/places/query.png                        (places/query.png)
+  skin/classic/browser/places/query-XP.png                     (places/query-XP.png)
   skin/classic/browser/places/bookmarksMenu.png                (places/bookmarksMenu.png)
+  skin/classic/browser/places/bookmarksMenu-XP.png             (places/bookmarksMenu-XP.png)
   skin/classic/browser/places/bookmarksToolbar.png             (places/bookmarksToolbar.png)
+  skin/classic/browser/places/bookmarksToolbar-XP.png          (places/bookmarksToolbar-XP.png)
   skin/classic/browser/places/bookmarksToolbar-menuPanel.png   (places/bookmarksToolbar-menuPanel.png)
+  skin/classic/browser/places/bookmarksToolbar-menuPanel-XP.png (places/bookmarksToolbar-menuPanel-XP.png)
   skin/classic/browser/places/bookmarks-notification-finish.png (places/bookmarks-notification-finish.png)
   skin/classic/browser/places/calendar.png                     (places/calendar.png)
+  skin/classic/browser/places/calendar-XP.png                  (places/calendar-XP.png)
   skin/classic/browser/places/toolbarDropMarker.png            (places/toolbarDropMarker.png)
+  skin/classic/browser/places/toolbarDropMarker-XP.png         (places/toolbarDropMarker-XP.png)
   skin/classic/browser/places/editBookmarkOverlay.css          (places/editBookmarkOverlay.css)
   skin/classic/browser/places/libraryToolbar.png               (places/libraryToolbar.png)
+  skin/classic/browser/places/libraryToolbar-XP.png            (places/libraryToolbar-XP.png)
   skin/classic/browser/places/starred48.png                    (places/starred48.png)
+  skin/classic/browser/places/starred48-XP.png                 (places/starred48-XP.png)
   skin/classic/browser/places/unstarred48.png                  (places/unstarred48.png)
   skin/classic/browser/places/tag.png                          (places/tag.png)
+  skin/classic/browser/places/tag-XP.png                       (places/tag-XP.png)
   skin/classic/browser/places/history.png                      (places/history.png)
+  skin/classic/browser/places/history-XP.png                   (places/history-XP.png)
   skin/classic/browser/places/allBookmarks.png                 (places/allBookmarks.png)
+  skin/classic/browser/places/allBookmarks-XP.png              (places/allBookmarks-XP.png)
   skin/classic/browser/places/unsortedBookmarks.png            (places/unsortedBookmarks.png)
+  skin/classic/browser/places/unsortedBookmarks-XP.png         (places/unsortedBookmarks-XP.png)
   skin/classic/browser/places/downloads.png                    (places/downloads.png)
   skin/classic/browser/places/livemark-item.png                (places/livemark-item.png)
   skin/classic/browser/preferences/alwaysAsk.png               (preferences/alwaysAsk.png)
+  skin/classic/browser/preferences/alwaysAsk-XP.png            (preferences/alwaysAsk-XP.png)
   skin/classic/browser/preferences/application.png             (preferences/application.png)
+  skin/classic/browser/preferences/application-XP.png          (preferences/application-XP.png)
   skin/classic/browser/preferences/saveFile.png                (preferences/saveFile.png)
+  skin/classic/browser/preferences/saveFile-XP.png             (preferences/saveFile-XP.png)
   skin/classic/browser/preferences/preferences.css             (preferences/preferences.css)
 * skin/classic/browser/preferences/in-content/preferences.css  (preferences/in-content/preferences.css)
 * skin/classic/browser/preferences/in-content/dialog.css       (preferences/in-content/dialog.css)
@@ -112,13 +136,13 @@ browser.jar:
   skin/classic/browser/social/services-16.png                  (social/services-16.png)
   skin/classic/browser/social/services-64.png                  (social/services-64.png)
   skin/classic/browser/tabbrowser/newtab.svg                   (tabbrowser/newtab.svg)
-  skin/classic/browser/tabbrowser/newtab-win7.svg              (tabbrowser/newtab-win7.svg)
+  skin/classic/browser/tabbrowser/newtab-XPVista7.svg          (tabbrowser/newtab-XPVista7.svg)
   skin/classic/browser/tabbrowser/newtab-inverted.svg          (tabbrowser/newtab-inverted.svg)
-  skin/classic/browser/tabbrowser/newtab-inverted-win7.svg     (tabbrowser/newtab-inverted-win7.svg)
+  skin/classic/browser/tabbrowser/newtab-inverted-XPVista7.svg (tabbrowser/newtab-inverted-XPVista7.svg)
   skin/classic/browser/tabbrowser/tab-active-middle.png        (tabbrowser/tab-active-middle.png)
   skin/classic/browser/tabbrowser/tab-active-middle@2x.png     (tabbrowser/tab-active-middle@2x.png)
   skin/classic/browser/tabbrowser/tab-arrow-left.svg           (tabbrowser/tab-arrow-left.svg)
-  skin/classic/browser/tabbrowser/tab-arrow-left-win7.svg      (tabbrowser/tab-arrow-left-win7.svg)
+  skin/classic/browser/tabbrowser/tab-arrow-left-XPVista7.svg  (tabbrowser/tab-arrow-left-XPVista7.svg)
   skin/classic/browser/tabbrowser/tab-arrow-left-inverted.svg  (tabbrowser/tab-arrow-left-inverted.svg)
   skin/classic/browser/tabbrowser/tab-background-start.png     (tabbrowser/tab-background-start.png)
   skin/classic/browser/tabbrowser/tab-background-start@2x.png  (tabbrowser/tab-background-start@2x.png)
@@ -150,8 +174,8 @@ browser.jar:
   skin/classic/browser/sync-desktopIcon.svg  (../shared/sync-desktopIcon.svg)
   skin/classic/browser/sync-horizontalbar.png
   skin/classic/browser/sync-horizontalbar@2x.png
-  skin/classic/browser/sync-horizontalbar-win7.png
-  skin/classic/browser/sync-horizontalbar-win7@2x.png
+  skin/classic/browser/sync-horizontalbar-XPVista7.png
+  skin/classic/browser/sync-horizontalbar-XPVista7@2x.png
   skin/classic/browser/sync-mobileIcon.svg  (../shared/sync-mobileIcon.svg)
   skin/classic/browser/sync-notification-24.png
   skin/classic/browser/syncSetup.css
@@ -159,16 +183,16 @@ browser.jar:
   skin/classic/browser/syncQuota.css
   skin/classic/browser/syncProgress-horizontalbar.png
   skin/classic/browser/syncProgress-horizontalbar@2x.png
-  skin/classic/browser/syncProgress-horizontalbar-win7.png
-  skin/classic/browser/syncProgress-horizontalbar-win7@2x.png
+  skin/classic/browser/syncProgress-horizontalbar-XPVista7.png
+  skin/classic/browser/syncProgress-horizontalbar-XPVista7@2x.png
   skin/classic/browser/syncProgress-menuPanel.png
   skin/classic/browser/syncProgress-menuPanel@2x.png
   skin/classic/browser/syncProgress-toolbar.png
   skin/classic/browser/syncProgress-toolbar@2x.png
   skin/classic/browser/syncProgress-toolbar-inverted.png
   skin/classic/browser/syncProgress-toolbar-inverted@2x.png
-  skin/classic/browser/syncProgress-toolbar-win7.png
-  skin/classic/browser/syncProgress-toolbar-win7@2x.png
+  skin/classic/browser/syncProgress-toolbar-XPVista7.png
+  skin/classic/browser/syncProgress-toolbar-XPVista7@2x.png
 
 [extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}] chrome.jar:
 % override chrome://browser/skin/page-livemarks.png                   chrome://browser/skin/feeds/feedIcon16.png
@@ -178,31 +202,58 @@ browser.jar:
 % override chrome://browser/skin/feeds/videoFeedIcon16.png            chrome://browser/skin/feeds/feedIcon16.png
 
 % override chrome://browser/skin/aboutSessionRestore-window-icon.png  chrome://browser/skin/preferences/application.png                 os!=WINNT
+% override chrome://browser/skin/aboutSessionRestore-window-icon.png  chrome://browser/skin/preferences/application.png                 os=WINNT osversion<6
 
-% override chrome://browser/skin/actionicon-tab.png                   chrome://browser/skin/actionicon-tab-win7.png                 os=WINNT osversion<=6.1
-% override chrome://browser/skin/privatebrowsing-mask-tabstrip.png    chrome://browser/skin/privatebrowsing-mask-tabstrip-win7.png  os=WINNT osversion<=6.1
-% override chrome://browser/skin/privatebrowsing-mask-titlebar.png    chrome://browser/skin/privatebrowsing-mask-titlebar-win7.png  os=WINNT osversion<=6.1
-% override chrome://browser/skin/reload-stop-go.png                   chrome://browser/skin/reload-stop-go-win7.png                 os=WINNT osversion<=6.1
-% override chrome://browser/skin/reload-stop-go@2x.png                chrome://browser/skin/reload-stop-go-win7@2x.png              os=WINNT osversion<=6.1
-% override chrome://browser/skin/sync-horizontalbar.png               chrome://browser/skin/sync-horizontalbar-win7.png             os=WINNT osversion<=6.1
-% override chrome://browser/skin/sync-horizontalbar@2x.png            chrome://browser/skin/sync-horizontalbar-win7@2x.png          os=WINNT osversion<=6.1
-% override chrome://browser/skin/syncProgress-horizontalbar.png       chrome://browser/skin/syncProgress-horizontalbar-win7.png     os=WINNT osversion<=6.1
-% override chrome://browser/skin/syncProgress-horizontalbar@2x.png    chrome://browser/skin/syncProgress-horizontalbar-win7@2x.png  os=WINNT osversion<=6.1
-% override chrome://browser/skin/syncProgress-toolbar.png             chrome://browser/skin/syncProgress-toolbar-win7.png           os=WINNT osversion<=6.1
-% override chrome://browser/skin/syncProgress-toolbar@2x.png          chrome://browser/skin/syncProgress-toolbar-win7@2x.png        os=WINNT osversion<=6.1
-% override chrome://browser/skin/toolbarbutton-dropdown-arrow.png     chrome://browser/skin/toolbarbutton-dropdown-arrow-win7.png   os=WINNT osversion<=6.1
-% override chrome://browser/skin/urlbar-history-dropmarker.png        chrome://browser/skin/urlbar-history-dropmarker-win7.png      os=WINNT osversion<=6.1
-% override chrome://browser/skin/urlbar-history-dropmarker@2x.png     chrome://browser/skin/urlbar-history-dropmarker-win7@2x.png   os=WINNT osversion<=6.1
-% override chrome://browser/skin/downloads/download-glow-menuPanel.png  chrome://browser/skin/downloads/download-glow-menuPanel-win7.png os=WINNT osversion<=6.1
-% override chrome://browser/skin/places/autocomplete-star.png         chrome://browser/skin/places/autocomplete-star-win7.png       os=WINNT osversion<=6.1
-% override chrome://browser/skin/tabbrowser/newtab.svg                chrome://browser/skin/tabbrowser/newtab-win7.svg              os=WINNT osversion<=6.1
-% override chrome://browser/skin/tabbrowser/newtab-inverted.svg       chrome://browser/skin/tabbrowser/newtab-inverted-win7.svg     os=WINNT osversion<=6.1
-% override chrome://browser/skin/tabbrowser/tab-arrow-left.svg        chrome://browser/skin/tabbrowser/tab-arrow-left-win7.svg      os=WINNT osversion<=6.1
+% override chrome://browser/skin/Info.png                             chrome://browser/skin/Info-XP.png                                 os=WINNT osversion<6
+% override chrome://browser/skin/livemark-folder.png                  chrome://browser/skin/livemark-folder-XP.png                      os=WINNT osversion<6
+% override chrome://browser/skin/menu-back.png                        chrome://browser/skin/menu-back-XP.png                            os=WINNT osversion<6
+% override chrome://browser/skin/menu-forward.png                     chrome://browser/skin/menu-forward-XP.png                         os=WINNT osversion<6
+% override chrome://browser/skin/pageInfo.png                         chrome://browser/skin/pageInfo-XP.png                             os=WINNT osversion<6
+% override chrome://browser/skin/feeds/feedIcon.png                   chrome://browser/skin/feeds/feedIcon-XP.png                       os=WINNT osversion<6
+% override chrome://browser/skin/feeds/feedIcon16.png                 chrome://browser/skin/feeds/feedIcon16-XP.png                     os=WINNT osversion<6
+% override chrome://browser/skin/places/query.png                     chrome://browser/skin/places/query-XP.png                         os=WINNT osversion<6
+% override chrome://browser/skin/places/bookmarksMenu.png             chrome://browser/skin/places/bookmarksMenu-XP.png                 os=WINNT osversion<6
+% override chrome://browser/skin/places/bookmarksToolbar.png          chrome://browser/skin/places/bookmarksToolbar-XP.png              os=WINNT osversion<6
+% override chrome://browser/skin/places/bookmarksToolbar-menuPanel.png  chrome://browser/skin/places/bookmarksToolbar-menuPanel-XP.png  os=WINNT osversion<6
+% override chrome://browser/skin/places/calendar.png                  chrome://browser/skin/places/calendar-XP.png                      os=WINNT osversion<6
+% override chrome://browser/skin/places/toolbarDropMarker.png         chrome://browser/skin/places/toolbarDropMarker-XP.png             os=WINNT osversion<6
+% override chrome://browser/skin/places/libraryToolbar.png            chrome://browser/skin/places/libraryToolbar-XP.png                os=WINNT osversion<6
+% override chrome://browser/skin/places/starred48.png                 chrome://browser/skin/places/starred48-XP.png                     os=WINNT osversion<6
+% override chrome://browser/skin/places/tag.png                       chrome://browser/skin/places/tag-XP.png                           os=WINNT osversion<6
+% override chrome://browser/skin/places/history.png                   chrome://browser/skin/places/history-XP.png                       os=WINNT osversion<6
+% override chrome://browser/skin/places/allBookmarks.png              chrome://browser/skin/places/allBookmarks-XP.png                  os=WINNT osversion<6
+% override chrome://browser/skin/places/unsortedBookmarks.png         chrome://browser/skin/places/unsortedBookmarks-XP.png             os=WINNT osversion<6
+% override chrome://browser/skin/preferences/alwaysAsk.png            chrome://browser/skin/preferences/alwaysAsk-XP.png                os=WINNT osversion<6
+% override chrome://browser/skin/preferences/application.png          chrome://browser/skin/preferences/application-XP.png              os=WINNT osversion<6
+% override chrome://browser/skin/preferences/saveFile.png             chrome://browser/skin/preferences/saveFile-XP.png                 os=WINNT osversion<6
 
-% override chrome://browser/skin/Toolbar@2x.png                       chrome://browser/skin/Toolbar-win7@2x.png                         os=WINNT osversion=6.1
+% override chrome://browser/skin/actionicon-tab.png                   chrome://browser/skin/actionicon-tab-XPVista7.png                 os=WINNT osversion<=6.1
+% override chrome://browser/skin/privatebrowsing-mask-tabstrip.png    chrome://browser/skin/privatebrowsing-mask-tabstrip-XPVista7.png  os=WINNT osversion<=6.1
+% override chrome://browser/skin/privatebrowsing-mask-titlebar.png    chrome://browser/skin/privatebrowsing-mask-titlebar-XPVista7.png  os=WINNT osversion<=6.1
+% override chrome://browser/skin/reload-stop-go.png                   chrome://browser/skin/reload-stop-go-XPVista7.png                 os=WINNT osversion<=6.1
+% override chrome://browser/skin/reload-stop-go@2x.png                chrome://browser/skin/reload-stop-go-XPVista7@2x.png              os=WINNT osversion<=6.1
+% override chrome://browser/skin/sync-horizontalbar.png               chrome://browser/skin/sync-horizontalbar-XPVista7.png             os=WINNT osversion<=6.1
+% override chrome://browser/skin/sync-horizontalbar@2x.png            chrome://browser/skin/sync-horizontalbar-XPVista7@2x.png          os=WINNT osversion<=6.1
+% override chrome://browser/skin/syncProgress-horizontalbar.png       chrome://browser/skin/syncProgress-horizontalbar-XPVista7.png     os=WINNT osversion<=6.1
+% override chrome://browser/skin/syncProgress-horizontalbar@2x.png    chrome://browser/skin/syncProgress-horizontalbar-XPVista7@2x.png  os=WINNT osversion<=6.1
+% override chrome://browser/skin/syncProgress-toolbar.png             chrome://browser/skin/syncProgress-toolbar-XPVista7.png           os=WINNT osversion<=6.1
+% override chrome://browser/skin/syncProgress-toolbar@2x.png          chrome://browser/skin/syncProgress-toolbar-XPVista7@2x.png        os=WINNT osversion<=6.1
+% override chrome://browser/skin/toolbarbutton-dropdown-arrow.png     chrome://browser/skin/toolbarbutton-dropdown-arrow-XPVista7.png   os=WINNT osversion<=6.1
+% override chrome://browser/skin/urlbar-history-dropmarker.png        chrome://browser/skin/urlbar-history-dropmarker-XPVista7.png      os=WINNT osversion<=6.1
+% override chrome://browser/skin/urlbar-history-dropmarker@2x.png     chrome://browser/skin/urlbar-history-dropmarker-XPVista7@2x.png   os=WINNT osversion<=6.1
+% override chrome://browser/skin/downloads/download-glow-menuPanel.png  chrome://browser/skin/downloads/download-glow-menuPanel-XPVista7.png os=WINNT osversion<=6.1
+% override chrome://browser/skin/places/autocomplete-star.png         chrome://browser/skin/places/autocomplete-star-XPVista7.png       os=WINNT osversion<=6.1
+% override chrome://browser/skin/tabbrowser/newtab.svg                chrome://browser/skin/tabbrowser/newtab-XPVista7.svg              os=WINNT osversion<=6.1
+% override chrome://browser/skin/tabbrowser/newtab-inverted.svg       chrome://browser/skin/tabbrowser/newtab-inverted-XPVista7.svg     os=WINNT osversion<=6.1
+% override chrome://browser/skin/tabbrowser/tab-arrow-left.svg        chrome://browser/skin/tabbrowser/tab-arrow-left-XPVista7.svg      os=WINNT osversion<=6.1
+
+% override chrome://browser/skin/Toolbar@2x.png                       chrome://browser/skin/Toolbar-aero@2x.png                         os=WINNT osversion=6
+% override chrome://browser/skin/Toolbar@2x.png                       chrome://browser/skin/Toolbar-aero@2x.png                         os=WINNT osversion=6.1
 % override chrome://browser/skin/Toolbar@2x.png                       chrome://browser/skin/Toolbar-win8@2x.png                         os=WINNT osversion=6.2
 % override chrome://browser/skin/Toolbar@2x.png                       chrome://browser/skin/Toolbar-win8@2x.png                         os=WINNT osversion=6.3
-% override chrome://browser/skin/Toolbar.png                          chrome://browser/skin/Toolbar-win7.png                            os=WINNT osversion=6.1
+% override chrome://browser/skin/Toolbar.png                          chrome://browser/skin/Toolbar-XP.png                              os=WINNT osversion<6
+% override chrome://browser/skin/Toolbar.png                          chrome://browser/skin/Toolbar-aero.png                            os=WINNT osversion=6
+% override chrome://browser/skin/Toolbar.png                          chrome://browser/skin/Toolbar-aero.png                            os=WINNT osversion=6.1
 % override chrome://browser/skin/Toolbar.png                          chrome://browser/skin/Toolbar-win8.png                            os=WINNT osversion=6.2
 % override chrome://browser/skin/Toolbar.png                          chrome://browser/skin/Toolbar-win8.png                            os=WINNT osversion=6.3
 
diff --git a/browser/themes/windows/livemark-folder-XP.png b/browser/themes/windows/livemark-folder-XP.png
new file mode 100644
index 0000000000000000000000000000000000000000..00aa0364d3e5003c0d531ba68ad2ed11b1a5f451
GIT binary patch
literal 667
zcmV;M0%ZM(P)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV0007FNkl<Zc-p0r
z4`fzR7{-6+es^tcZL78awc4_6$x5@zXhn+<+bCL!sDuD2NTLKKD1;;xmWE2C#Hd7A
zQnGB?rio_zw%WJt+qUoAbI+T5cTFjx9-i|YJnwV7&ru@6|G@3K*FsTA=85E#cgb3D
z`3XuXyCgg9Vtjb!%!c}c--a`)ZlVS{_mw8bQ=e;_jx17k3^Ah+L7YOmUp(@b<)@dg
zY3dl_4^V?I_xJk7*6<IAxy~ndcE;3H?KqDU%R{gbP$CkjKd<;81_V%o=s5kauUET9
zTU0Cu>-B}^r)PJPQ(Q@2#d^v%?ItU~GzyG}fKoWI0<;z!t$na2GH7-mZlS)RkgSQv
zyuWpv&#yYbp9MPyb`}Zf&mrRBX&=WJ3u3^g5UWX=a@_I*tlIm4#yzd*p4+^+a{=F*
zMr;ZK`qN;hF`nSsa8->+D%8OzS4d2NlU+vr!BeblF6aBJ%k(|FOU<smAQ~}~SRbqi
zjx`pMIf&BN9cyRn(bH_KoT2O5NoM^lme)3uInv40P&d{aLn2yVaOTUN3HP*ql4QJx
z@zFTx+t0DBv54OLH_(L*RFt}met0|okoe)F5(L<=f^n?(9lQh|Z(n8b;Z26#Jx8x@
zrYh$vi7!3)+0|rD^hfKOu+U)E6#+~lYFV?nsgAU7-At`m3AwrCX29gw2-9vJOPwIV
z1MvfIxPluT)*At}7ywn*hEa#e(8Hn0wA`TBj3UHPTiUR511O0hHuy?~>S}KtN=|wu
zgb+YQR{^DdRVPpukd^JmRiHpRuxMfW?+`!(sUNo8Vg->lBsu^9002ovPDHLkV1mkk
BK`H<M

literal 0
HcmV?d00001

diff --git a/browser/themes/windows/menu-back-XP.png b/browser/themes/windows/menu-back-XP.png
new file mode 100644
index 0000000000000000000000000000000000000000..ecb8ccd1a48561a91b7886d5ec05f37ca12e681a
GIT binary patch
literal 341
zcmV-b0jmCqP)<h;3K|Lk000e1NJLTq000mG000mO0{{R3C@l|D0001%P)t-s|Ns9?
zO;AoxP>6_#jEsy-O;1iwP*PJ?YHM$8Zg7#3m3Vo3s;jJ#k&}~?m5YmumY0~BnVFlM
zot>SYm6esCp`oOtrI(qV#>U3BxV^c$zrVr9#Kz3W$<EKv)z;YC+1c6I+T7aQ-rL*T
z-QM5d-{9cj;o;-x;^N}t<?Q6<?dj_6>Fe_E@bd8S_VV)d^!4`k_V*xtO^W~k02y>r
zPE!C>RBCLyyT8A`zskzY%+1Zs&(F}%()s&8tq}hJ0031<L_t&-(_>)32}D>>`C`fv
z%*cFE4MPQfB)*WUftoN9UqDG;MG%S4E3d1_hs5WW)6?cbHjrIfN1Y4BN)8z<Sxz!U
nG^N;3MI^<UP(8!Sh~3iwQRfBTVncG700000NkvXXu0mjf@)fbz

literal 0
HcmV?d00001

diff --git a/browser/themes/windows/menu-forward-XP.png b/browser/themes/windows/menu-forward-XP.png
new file mode 100644
index 0000000000000000000000000000000000000000..a7460dc27d04ba17ebecedf67f256b7d2699e4aa
GIT binary patch
literal 342
zcmV-c0jd6pP)<h;3K|Lk000e1NJLTq000mG000mO0{{R3C@l|D0001%P)t-s|Ns9?
zO;AoxP>6_#jEsy-O;1iwP*PJ?YHM$8Zg7#3m3Vo3s;jJ#k&}~?m5YmumY0~BnVFlM
zot>SYm6esCp`oOtrI(qV#>U3BxV^c$zrVr9#Kz3W$<EKv)z;YC+1c6I+T7aQ-rL*T
z-QM5d-{9cj;o;-x;^N}t<?Q6<?dj_6>Fe_E@bd8S_VV)d^!4`k_V*xtO^W~k02y>r
zPE!C>RBCLyyT8A`zskzY%+1Zs&(F}%()s&8tq}hJ0034=L_t(|+Lg#P5`aJu0Kvr%
zcXxOD|K~_=s~}*qX?TzK@N-ccATX<Y@{zd1)jLS+?rbb1M!lCh5^X&Sl?G+pQi*yw
oUo!IJ#bibgY#0+jF#>${08dl}-XsGpO#lD@07*qoM6N<$f-1VPLjV8(

literal 0
HcmV?d00001

diff --git a/browser/themes/windows/pageInfo-XP.png b/browser/themes/windows/pageInfo-XP.png
new file mode 100644
index 0000000000000000000000000000000000000000..bbf25723791213e734f898765595a002db4765c9
GIT binary patch
literal 7739
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

literal 0
HcmV?d00001

diff --git a/browser/themes/windows/places/allBookmarks-XP.png b/browser/themes/windows/places/allBookmarks-XP.png
new file mode 100644
index 0000000000000000000000000000000000000000..f7903cc5f05fef8bb85caedfea04cf39bb8bf1ce
GIT binary patch
literal 504
zcmV<U0SEqxP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV0005MNkl<Zc-oDV
zJ!@295QWd(8-uQem@P~QlAu^f)D#PXXd!8>EY;G|!u$&xK?{FDYHc*Cogfw#qS0iN
zg%A=5`PzK4qzU)TOy&+ZVIjF}1`adt<(!APFT9DFA+M)TCSG`Zhci~Yy^G1uFO!}k
z{Knh({Rbm>_PpLTJoS44uU}2Z9DqDLHZ~f=`-v%t8H5T|MV1Ljf|<{xpNal~T6jAF
zXg1p(5Zrrs38sKZ0+rNz1)@DrCZHIW<~QMW5}>L9FgIxc-~h`Nv(Q2r1)WtXdW6ND
z)C4TTR|YPF5iS5~U{(eYhAcOFm;^@aL#R~J{2U+><p2tiiNt>@ft$Am(c7D%es>6I
z>JX~S!gJ~!NU_1S8~qr$Gk9#cI@}lf|7R7m(=7;D29VgIIkSePg&jP4eEZn+?PC+m
zi+d0SNG<sVW<jR_)#|zUHvM-sdSC4#7-55mp1uJ|h~yB(h3a{H`p`gYeIJc~8yLP`
zi+eFaDImfO05I3sh=7P;cl!Watre&OD&00vfkY4yR`06j>O7Zjz!1aeBI44bAAu|h
u@7FIsI|1=D-+CK&;m7x1=u+{FQPd$l&{Z<>@3QFt0000<MNUMnLSTYRw%QH=

literal 0
HcmV?d00001

diff --git a/browser/themes/windows/places/autocomplete-star-XPVista7.png b/browser/themes/windows/places/autocomplete-star-XPVista7.png
new file mode 100644
index 0000000000000000000000000000000000000000..af694e91c35631cb071a501c641ba77ba4e9009a
GIT binary patch
literal 813
zcmV+|1JeA7P)<h;3K|Lk000e1NJLTq001BW000mO1^@s6cL04^00006VoOIv0RI60
z0RN!9r;`8x010qNS#tmY3ljhU3ljkVnw%H_000McNliru-v<c~91{Kp{OAAx0=h{=
zK~zY`os>&RR8bhmf8V)xX1p^#?hK<1S(;^~Wsgl%8y6u_QKS&k!r&70fC{QbK}hAM
zS_DBMR0i21iGsQW2}K3bCR+BwqD2Kk4L&o}oX2UA#^^W?{Z@zb{lD}7edh&P!gky{
zw&Qj%$Ix0|)mmT7rjab>>pbBluXQq!jQ4+8GuYYqZkFb2fo>oPG>AygOgfcm0iVC9
zP5DC@g<<8h0%zy20mo82j%E_64Bf9z1|nM~Hz^s2G}(?@GmGwPfrgZ+?ON;VyZ~&+
zUFfp{=agmtKOW@|Dv!@PZ#!;z9_I6b6Vr}Y0VlQAk+eHtJMJE!9#{p`h~X_ULlr11
zI7OHo86ZCJ6`hC;0v~|)K=;7SohGmWr~#^h;v9^>fKR|j;F*LEzZ}9_R4g6~<*`5+
z*~^m&lCe>AY!qXBDEi|{{Xib3nIfuMHmzv$6qUx6uQ0bcfHF|NLcGPLf1J&AZNLE_
zHV5-j;GnwH6zXiOv(AVR&$m(u@#ZzwsS7(oT_W-V*gs2%7_e7FUYR1&ueH8D9@oA{
zJ!7p}XMUQK=1q0h=}V2lP7xUd5Ru1P>mxurVB}%GZvy<EnTYh>*d1zLP@<mZLaz!M
zkJ@(yJ4B>^%54^T2t3H6`z{fAlJ*QmB-+>4SD35%XEf>;k=_jHvOECFGX4YO+NjD^
zJ&u`8vp5fcsu=-n$Mwf3n3tL~6~m@tWGaBS!ggF^h7ZUB=1-d*0*0qUYORel0DpmJ
znV230U?|2`Mm)FOz2WArmQeHZGV`7i{s3SUczvd-oT0NtDeH{@SAg}vM&KGSHj(oJ
z|9@0-a<H^KXnsz}aAnAR*4j{XYiq6b2KWZZi$euH?%R>O7oPuiz7HkpE6ao4pXmUJ
riH`3BmqjF1(x$cU0FDFOQj7iqe6P{#|3mU@00000NkvXXu0mjfW^-z!

literal 0
HcmV?d00001

diff --git a/browser/themes/windows/places/bookmarksMenu-XP.png b/browser/themes/windows/places/bookmarksMenu-XP.png
new file mode 100644
index 0000000000000000000000000000000000000000..8f0c8bf5832e647849e43818a1037acfe7582991
GIT binary patch
literal 334
zcmV-U0kQsxP)<h;3K|Lk000e1NJLTq000mG000mO0{{R3C@l|D0001fP)t-s|NsBo
z<nhPCuS$~FZo89xZnB)BqOPi$xV*f_!mrrUz1rN{+~o1{^6vBV@ALEU^z`xc_3`!e
z@%8re_Vx4j_4M}k^Z57m`1tkt`S<zx`1$(x`TF?!`S|+!_xt<#`}_L){QCU+`TYC(
z{QUa-{rvs?{Qmy^{{H^||Nq~>%18hJ00VSVPE!DXvUk37M*si-d`Uz>RCwBL%i9iu
zFc3x2k+x#J0f<Gk>ZoFe|NlV?=b;H<O)?KVIkcUje3-2Fu%dj1?2uTBtSBWRh)58G
zpHls1wCfR=U(Yx5=gW-Xjk$K+%|GrQ;bKgSNsHi`bK{&l#fMO9U6o}OuSO`eE-*PF
g9Fpab*(9R{e}LKzWsLVXQ~&?~07*qoM6N<$g3f)ymH+?%

literal 0
HcmV?d00001

diff --git a/browser/themes/windows/places/bookmarksToolbar-XP.png b/browser/themes/windows/places/bookmarksToolbar-XP.png
new file mode 100644
index 0000000000000000000000000000000000000000..9e988de201adc50018d34bdf8c27764e890ec8da
GIT binary patch
literal 229
zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbL!O@L2`>;M1%fy^71_5#tTPw#--
zNxk)O_OeA2+p1?zYFo8#)yzZNuO8aF3Mh5!%0r0CUwbCD0X1`%1o;IsD5cfc*Uva}
z=FBx+uQhf+VP8)d$B>F!t*5pN9x&ixaXcX{<@o1cwJ3**z1NP1XHVW(^CrUO;5y%V
z&x+RF-5JGTvu9cRrI5!ASu71q@|u77oY~o@H?gNBYQ4Fa`hxjE0@t~Ey*1N;1~YiN
L`njxgN@xNA62oYM

literal 0
HcmV?d00001

diff --git a/browser/themes/windows/places/bookmarksToolbar-menuPanel-XP.png b/browser/themes/windows/places/bookmarksToolbar-menuPanel-XP.png
new file mode 100644
index 0000000000000000000000000000000000000000..0e4247adb5318f350e9279843ce72ebdf6d087c2
GIT binary patch
literal 689
zcmV;i0#5yjP)<h;3K|Lk000e1NJLTq001BW001Be1^@s6b9#F80007bNkl<Zc-rk&
z-D(p-7|k14Ku|@HprTLUop*f!@d307%}?7j+x<y)vzu)8f0J~R)M|@(={xA9H+th6
zh=5o?R9Fx}kRs#xK&5nMw;Q0LKn4z3<~!#*XJ%)Tlon$#&dgZd(8|E_oKWTh)VGXO
z>jtdV3r`i~L0(*djyquSbbl@&FD`)PjaWR{FN|os$HL?(VI~~`UVH%48?tD!R~X*t
zF|Fh^bZ_xIlNK650Cz~MDg;_J_`lW_^D1xy&xe>RtS2x23^)U7TnJ7)Wm4OI{!feN
z7nm!ohZi5faAFoDPcq?e?=p9|!|Z5`(;OVurS`S|H%QWNVeU6-#362OFL((8^dlBP
zcpN_7uN@{#x5H1e(SNzAS%ZdZ-aW3z+&$Dr;JgC&02<N?d%}wkpxY4yyBuh1HOrrr
zW*n_<@C;gEPx9gfZ9Als&A}N=ncQ(cuhgaMMa{vzDVy$BXoWrDB?!<9m^a)Jq8Dtl
zwJrVQO09Y2By(`eYqD_wO=dsx5^R~zTqMpy*B`M;Lwo<Ax_Lg!9JR~fd;mAM7rev)
zuw}VWEstS^x3dB~tTpd|liw#Z014wsE=c&OCM{(JK<y$pC-;FDC)P08kH(pxYlSQJ
z<*4R<rEv+kaCA=TIN!m|?WKtV(AL=~W}%BiCF%B?zs5^ISZ%g{R-3IKcy@tvRKtyV
z*9()}UaByF>C!4QL8ls=bag`=!!%XEr^80Tsu||Kp_bqkq~PZELLWYW(s5yu<br-g
z@C8Gk!kT7rH6h@|2f+KKRn7(Q;sdP9MoNdHb;=+Q@)G<hRmzoyx;zh%S7|X8<E)H7
XLpU}}+*NIe00000NkvXXu0mjfAI&{<

literal 0
HcmV?d00001

diff --git a/browser/themes/windows/places/calendar-XP.png b/browser/themes/windows/places/calendar-XP.png
new file mode 100644
index 0000000000000000000000000000000000000000..7645af5cd121c1f3c8a34954d97a97c9a8d8e37f
GIT binary patch
literal 559
zcmV+~0?_@5P)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV0005@Nkl<Zc-o~>
zJ!n%=6#fz(LdDrXh=>lY4hC#1R2`~N%%Y<>b#ZfWa1jJ`C<-DO6tviG*<5rGhepr_
zI*37`f;fqUCkP_7HhG$N?>+bQopbw|6xyNmgTwi9Zocn)_q|v6GW~$D1(>Bcln>qa
z@!=b{3lTCLANhvuqWSKib~V6{1h5X1uXdp}z65mBQ2)C?Y63R~lS^k%+x->-I($`o
z5dtq+J!;nnGVTGABH_L6!+8!OAIRLocisw)m{Z4`80O_J^Y4WDXNS4<m-)%eJZC_W
zh#*+}rKPC9kC9GY1~D+-j4^Px0_TB`pJVL1SAikG+Mp|voNR)|L=}z$e{*S8MY8dA
z<tdB@tg#S8&IPCPUTwN{e6*w+Wyx^4Bw`gE9Xb@mBnB=da7sdKzEuJFUTpbe^HU4^
z?+5;&v4~^U{0g~&Cg?@YZ&bfHqx@ge#q+U;y1Bia;Bo1u&YcaqNSyj&Yn?1B*G(rz
z2VsS~Y<}Ui%=LG^xM)(lF}Co=*Y&4ef3bj}YMB3N#c0PdL`yEef_3UDMla7jQc-6m
z!Lz|T%G)a)OzpX*204g(A5vtD)5Eb-M?|3f?8FG{+LJ$jMYn532TC9x47}%HAa7xI
xdJg0~h@=R9t&?Z?Z0_0XjG0x~kAe($f>q&0m{{%*6{G+F002ovPDHLkV1gZM1iSzM

literal 0
HcmV?d00001

diff --git a/browser/themes/windows/places/history-XP.png b/browser/themes/windows/places/history-XP.png
new file mode 100644
index 0000000000000000000000000000000000000000..fcc89bbbf0b6d30d0f33c6dc209b4ff172fe908e
GIT binary patch
literal 821
zcmV-51Iqk~P)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV0008~Nkl<Zc-m!C
z-%Aux6#nj=ot+uob=-ArlZvuMGb^B=iYg!|=q-wXUV@5%DuRmgy_X=PdefJ{e?S5w
z0;HEnqBN2!k|@c<64F)ohwjYWxpz8qaee8)+{>MF&v(xE-E&wJMX1|@$Nh#<(UFD*
z=X5&NxX-q&LhScEf3i|t9`!u$DP!#Qotsx=J!TEy{=>euWYX+u-?HgKQ#$1eAt2Q%
zINjmgK&4VG&HR}iAYX6Kt*f(j03Do8H}-Gq*m_b*2|<BwO9pAn#ELHv$Owz`3*agS
zV)*%MdZ<>bU5P=AMmKMmrg?YA_Kx#@AkdI;v2*t>tY4qUy?c+a|JVs^-qMC#J`bXS
zYPo`p>vomOWn<*c=u1wV54UgLcu7iyRJIx2JGa9y4AgC6{5^zFP!Yqn?k=RWEfAr^
zy4H1<sQSa41UuupO{qXBbaZt<5v7p8B%NbZGDHmS2O$M2bar(@G7iUfQpsfU3@5es
z3MxI5%Ysv8Nqng)$W?K9!i@iEL6>U+j$@KOEr><7EqgDwEvpbxHZzLFQ-mI^1;qAh
z_yw53G^mIaY%>8vhT2cs6}Y}e%WA^a@`(nOo6EVFo|?jkcjEwKVDyn`Kk?Tw32Kf>
zk|5_r91%H`&=nA8iHp~+W6yz47=Hc?D>Wa74(`_g0$gVlp_t_KG-Gj-EY1}X`ck8k
z%DR$TEkx&zZX7y#9Lwb;<eM9?RPwM?ENZ<d`532Vuu`p7Ir0DT?K@0^!y=wUS8GDA
zqBEa6dkVgg`1tuNIB5_Bel-lmASYfUGrwn_(2k|Kc}#qn0HdJRjDtenMSE)#TALlr
zmsT+Hb{ysTIdI0YuuzO+MszFpKI&_89H)QNh7BhLWs#hrDVrs=C6rPKV4$>61PenL
zM0c+EcgXiW-OBZ0(jbXMqK7){f@9lm5D1W_T5Se^a}Lk<ON)!e0jXp!O{5;C|Hhfl
zM=Z-aZ6&RJiG*1Ipw;$0Z<KaD&bMz|UK{6sU6Z>976_6w00000NkvXXu0mjfRQ7?;

literal 0
HcmV?d00001

diff --git a/browser/themes/windows/places/libraryToolbar-XP.png b/browser/themes/windows/places/libraryToolbar-XP.png
new file mode 100644
index 0000000000000000000000000000000000000000..75b390ff664ae3de2abc8cd00d997356437629bf
GIT binary patch
literal 2037
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
TN+M?B00000NkvXXu0mjf92M$-

literal 0
HcmV?d00001

diff --git a/browser/themes/windows/places/organizer.css b/browser/themes/windows/places/organizer.css
index 9ae4c8370..4de603b9f 100644
--- a/browser/themes/windows/places/organizer.css
+++ b/browser/themes/windows/places/organizer.css
@@ -20,6 +20,13 @@
   list-style-image: url("chrome://browser/skin/Toolbar.png");
 }
 
+@media (-moz-windows-theme: luna-silver) {
+  #back-button,
+  #forward-button {
+    list-style-image: url("chrome://browser/skin/Toolbar-lunaSilver.png");
+  }
+}
+
 #back-button {
   -moz-image-region: rect(0, 54px, 18px, 36px);
 }
@@ -112,6 +119,11 @@
   -moz-image-region: rect(16px, 48px, 32px, 32px);
 }
 
+/* Root View */
+#placesView {
+  border-top: 1px solid ThreeDDarkShadow;
+}
+
 /* Info box */
 #detailsDeck {
   border-top: 1px solid ThreeDShadow;
@@ -139,28 +151,35 @@
   padding-inline-end: 9px;
 }
 
-@media not all and (-moz-windows-classic) {
-  #placesToolbox {
-    -moz-appearance: none;
-    background-color: transparent;
+
+@media not all and (-moz-os-version: windows-xp) {
+  #placesView {
+    border-top: none;
   }
 
-  #placesToolbar {
-    -moz-appearance: none;
-    background-color: -moz-Dialog;
-    color: -moz-dialogText;
+  @media not all and (-moz-windows-classic) {
+    #placesToolbox {
+      -moz-appearance: none;
+      background-color: transparent;
+    }
+
+    #placesToolbar {
+      -moz-appearance: none;
+      background-color: -moz-Dialog;
+      color: -moz-dialogText;
+    }
   }
-}
 
-@media (-moz-windows-default-theme) {
-  #placesView > splitter {
-    border: 0;
-    border-inline-end: 1px solid #A9B7C9;
-    min-width: 0;
-    width: 3px;
-    background-color: transparent;
-    margin-inline-start: -3px;
-    position: relative;
+  @media (-moz-windows-default-theme) {
+    #placesView > splitter {
+      border: 0;
+      border-inline-end: 1px solid #A9B7C9;
+      min-width: 0;
+      width: 3px;
+      background-color: transparent;
+      margin-inline-start: -3px;
+      position: relative;
+    }
   }
 }
 
@@ -174,7 +193,8 @@
   }
 }
 
-@media (-moz-windows-default-theme) and (-moz-os-version: windows-win7) {
+@media (-moz-windows-default-theme) and (-moz-os-version: windows-vista),
+       (-moz-windows-default-theme) and (-moz-os-version: windows-win7) {
   #placesView,
   #infoPane,
   #placesList,
diff --git a/browser/themes/windows/places/places.css b/browser/themes/windows/places/places.css
index 769cfcc25..4ec8f6555 100644
--- a/browser/themes/windows/places/places.css
+++ b/browser/themes/windows/places/places.css
@@ -24,17 +24,21 @@
   cursor: default;
 }
 
+/* Style Places sidebars as Vista media collection */
 @media (-moz-windows-default-theme) {
-  .sidebar-placesTree {
-    background-color: transparent;
-    border-top: none;
-  }
+  @media not all and (-moz-os-version: windows-xp) {
+    .sidebar-placesTree {
+      background-color: transparent;
+      border-top: none;
+    }
 
-  .sidebar-placesTreechildren::-moz-tree-cell-text(leaf, hover) {
-    text-decoration: none;
+    .sidebar-placesTreechildren::-moz-tree-cell-text(leaf, hover) {
+      text-decoration: none;
+    }
   }
 
-  @media (-moz-os-version: windows-win7) {
+  @media (-moz-os-version: windows-vista),
+         (-moz-os-version: windows-win7) {
     #bookmarksPanel,
     #history-panel,
     #tabs-panel {
diff --git a/browser/themes/windows/places/query-XP.png b/browser/themes/windows/places/query-XP.png
new file mode 100644
index 0000000000000000000000000000000000000000..9e79fc79159ca845c4ab1788c8c9eeb85760c4ea
GIT binary patch
literal 612
zcmV-q0-ODbP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV0006jNkl<ZILoDz
z!AsOp5XV37w{LZ^k~D~jASo%L!W7doDJ!}O1O%N7PeFf;$DmW4qHdiE!4<>YB*ZQe
z1xTv6t45ld?*4vnW&+$@T@eU+Ffh!#`Mfu8zR#H%|FitVXX5~a8j`1~lG&S#qEs>R
z=_kPRSC4xS2Dp@O(h!CQ?{sAff21aP;!rB{Vr+US^8O95dJw=3zW(;%NG5%;-beL&
z+cDg(UyeJ#xt(|%q_j~AU%X1_d2p!(2bilAfU#>LR`p#OrjU6#HPho&0uG49NVIY<
z2q7>$I?AWd(-_dv)=ppVEpQP4zAi!~;8kLrE1%}T0iwpc><C|H^Yr)M$IKWR&yh%$
z+kJNdAW>9eyu=9xsO=P1dY;LzaPQ^~+RmRv0gD{(bCbm7Jtb326t5C$dQ~8((a_jT
zVP%=)Cr^{8vY20{p|P3GxOP%rLrf55qa>`A1TBM(9ByD@YMS}{3W_neut3lC9=59w
zRRtt$i?SXIzheP|k7L6u6qY#Ea)$i;EN0MowVT$~b8L$31E{c>7_l0OD7oxg=6=l3
z-g%Agu1-=>gkY?13qOlW%15;T6QP(0#i0CJU1O=R$d%4+F1L3uyOtn;ni0fEM~=Gv
zQdS8R6Tvw+)_jyl0|U5pJ<A&bA30Kh0x7^nj!>P{jw-!_$?Qb#g7>~oR7s~I;-Iic
yl>i1{Mr8)7nwZ&l2Q&c<Wpn@diw)QUw*CT5?mKvc3A%Ft0000<MNUMnLSTY(E*1;`

literal 0
HcmV?d00001

diff --git a/browser/themes/windows/places/starred48-XP.png b/browser/themes/windows/places/starred48-XP.png
new file mode 100644
index 0000000000000000000000000000000000000000..1cb7bc57d34fbe404e327f9871b174d33b0067c3
GIT binary patch
literal 1848
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

literal 0
HcmV?d00001

diff --git a/browser/themes/windows/places/tag-XP.png b/browser/themes/windows/places/tag-XP.png
new file mode 100644
index 0000000000000000000000000000000000000000..4b4a13e662c4b9d1187454ca80ea8bcfed0216e1
GIT binary patch
literal 480
zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbMfr2wB0*Z=?jr-Q+SmHQ{G+COzQ
z5FMDcZvU)x2NrDHzi{LJ<y#J{+kRl(jsshF@87!n!1g@{cI`c|XWs!JICSC+5UjoO
zZQYe`TW@^ZcH`UrJKy);{dVf%_tOu*U40Hj-ygjB{^0HRr|-T$egFOC$8WDbet-A*
z`=>A8zkK`t_1kwK*m~#R&U^oM-TSxi!T<da{_O{n5C0u`^zX=HAo_pu*}qdy|DAgF
z@B9lO`hWHHzpJnR-+KG+*1P|=-~E5^;opM~{~vz%_v|we{eScI|C?|B&Njc%0{Tw7
zB*-tA!J%ObI@rJe3pUU-ZO#Xvwn?5Yjv*DdQqTKxH#rD2Jd|ubarTPKF42<B|NpO6
z`o3oOXHo540ehz>$~`msAkCCCD@}SzKu`1CYEH?5ips*iWVX-S9u%wHdbrHHI`dX*
zW%Iqn?*gkkD_AFFy_pi4-L=W-!A`-@;Nu5{9HtbQ2|n{m_hxW;sFGv$vt(kD(sHZH
ryNoKYKF<9nBezbqu0C?j?|S(gO2O0eKQqn;x{krq)z4*}Q$iB}nZhiX

literal 0
HcmV?d00001

diff --git a/browser/themes/windows/places/toolbarDropMarker-XP.png b/browser/themes/windows/places/toolbarDropMarker-XP.png
new file mode 100644
index 0000000000000000000000000000000000000000..9173b7a7a3c93f57d4d7b71b2e6b948157fe0fd5
GIT binary patch
literal 219
zcmeAS@N?(olHy`uVBq!ia0vp^oIotZ!3-q##j#WYDW?FR5LaE#b^rhW2a=5GXJpFG
zt9z`Uf8-^D<0i&{y+9ErvsFy~dsr;j3i<7n2;CzeyI(2cpmNP+t&F3_#iyM5Zl*4N
z@K4)g3(z$7k|4ie1_t9zCr{pbb}vL0DCFqr;uyjaz4gRF&ISVpmV>dXi#Wc;uWVr{
zuJhsi*S0YxMP;SlZ_Xw6UTqA$)b=PXDqzEx2BtRu(=)VcvugiYF~lXjmebtfw)-#8
OFa}RoKbLh*2~7Zcrcv+!

literal 0
HcmV?d00001

diff --git a/browser/themes/windows/places/unsortedBookmarks-XP.png b/browser/themes/windows/places/unsortedBookmarks-XP.png
new file mode 100644
index 0000000000000000000000000000000000000000..cf73f946494c886a8e62672ce521d76088cbf5b0
GIT binary patch
literal 712
zcmV;(0yq7MP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV0007yNkl<Zc-o!M
z$xjnu9LDkQENykFEl{^Y+jL`7KqC=}B*w&O@Sq8bAtCVs@yNg6k(-G(FX+W1iC1D2
z5+o>q3A>sIRtpp;7NK+*+Rls!DbCqX@*Lj7`^)nPhG9@N`Md^0GcW`z7zS3w-lygF
zjC?NrSOO4jIDF02-0h=C#H?TeLq^y0X!(4Vr?IumclA~`npCL^4rGghD9D(Jm|W?Z
zb2jxXoYT_jld|<#udAj-D6I+!qQ%ymQ#D5+mu4$6h}qGES1(`G*E;8C%Sv;If`FqU
zKv^&h+Gi5;V<b1S7&uvuD@66{4Uf9I=K#!o+U!=9@=F&vR#pdE6tc6BS;OU(aRnvR
z<t<W~<3y9R19O-s2%`9~vh^w7-j9>|*$=5H$V6Z-wx3;ge`HvS1gUI&2G9<N#A1D~
zue?qxXxIV|m>K#6g(&1VK~Do3vy)jY{(D$#3hweV=l}jOH)!_<{G?L}^n!|V0<dN&
zs4AMOg9LU(Loe)+++HVC83yRUe8A;8&2BQzYGeVQUtwo)m*KY}!$TrFkt|-1h1_<8
z<W8J(ZqLySDdh9kJ4@_OE;L+bW_pCp*mq)!t8An%A$e{?X#>;qDzTLv)>3wI*a!sc
zh{t26K8}pOmVpkp`!u2`apPtu>}Py*fW^fxgza_!bVn`j@O`ef+@UBK3=&^Ybjm<`
zI2>ep;vI>^ZvaBowMZ5l;}ahMXuRCS*|X&g4)g<1QsN|3bpfDF2C4<oia%7l9}cXp
zMDcn9)L(1{V0&wWtzYXjHeI7g*Kz>Wa`9nSTIOPHd5N#{QvfK+aVmTv%tXlwz~O;>
u1~aP&o(lIt{>f8Nw=p|9Fz{xK|Mdq}D*o)JFD%ah0000<MNUMnLSTYUH$%(-

literal 0
HcmV?d00001

diff --git a/browser/themes/windows/preferences/alwaysAsk-XP.png b/browser/themes/windows/preferences/alwaysAsk-XP.png
new file mode 100644
index 0000000000000000000000000000000000000000..8693211ac154658791285a7f2016c584e827a063
GIT binary patch
literal 408
zcmV;J0cZY+P)<h;3K|Lk000e1NJLTq000mG000mO0{{R3C@l|D00027P)t-s|NsAn
zkD{BXzN@~?0cXq)Z_hS{*EfgQP?p_cpx}J3=6<o}hL56&wbhrv?3=>wp2O~^$nmev
z@U_wKx6jzT*73d7_rTZp!Pxb~*!RQP_r}}z$J_VH-S^7f_|D(>&fxgY;Q7zt_R{0|
z)8qNq<@wj;`q$?A+vxh-==$L5`rzvO;OqL}>-*&G`{eHX<?j3G@cZfT{OR%h>hk*S
z^ZfAj{qgnv^!NSu`ThF){b;m!H~;_u1awkPQviRz-<c0I#Q*>Rl1W5CR2Ufrz(GpG
zP!Isnmof-30o9d);0?V0U8F#>5$vXgA86D5nG%Kx0BeQm2iw8-6UV<6sQNu~8bA7(
zK-Eiq?XTC~5y*O*vkW~EsC(A_wtLNvK(Bk=cAu4nKyF#{keP|VmOY!PvJjm9-z%rQ
z0AXFAjTcyjYIF8wY=D5ij13^*@Z10dRt<na0l)*a08{~JMLMYf0000<MNUMnLSTY)
C5bGZR

literal 0
HcmV?d00001

diff --git a/browser/themes/windows/preferences/application-XP.png b/browser/themes/windows/preferences/application-XP.png
new file mode 100644
index 0000000000000000000000000000000000000000..7d279ff849e433bc6ea090f6cc19cb61e8737253
GIT binary patch
literal 388
zcmV-~0ek+5P)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV0003?Nkl<Zc-p0t
zF-rqM5QX2KYb??j2`Yl1Vi8SeYpsI+Lk)s|#NI-z{Re7qVJ)PvurpvMNh}N|xt%Aw
zlXWj*5zW9dv&Xz|-W;qUiD|;D9kq_LnciiV4JH=l!+F@*uFofC^R!7@a#-0Bv|FqA
zOLSj8VJdrfELRusTU6^CsIObx-#m}ijhS;C3?8xHxllm=?Fs*hx#~7-srQP9>q9i#
z{fUL|b{UH$qH%T$3jnp+7HR-U!U^DrkVS~x-<{@M2<H&$p_2f!kxF`@fzS&Dlmrnb
zXs$!TDd!ypsK|e$HaZpLjw<p_oIeJ`*yo53TTuW>g|GmTbPqr=p%y`0Bds7}f^DY|
z1?ptA`)xaA838gt8-&GGkfx>c(^&)*M6NKIW=t%>6+@1Y1OP|&jk<|2Mkn!SnzYgg
iV3u~Th$&*~=llga{5SNkaimKC0000<MNUMnLSTXzbEPl<

literal 0
HcmV?d00001

diff --git a/browser/themes/windows/preferences/saveFile-XP.png b/browser/themes/windows/preferences/saveFile-XP.png
new file mode 100644
index 0000000000000000000000000000000000000000..e115eaa9fd3ad66c65b6d8b26135a8cef1cb4690
GIT binary patch
literal 740
zcmV<A0vr8_P)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00083Nkl<Zc-o~?
zUr19?9RBXTXS=)JyKOEvjW(MYD5?lpqzJ93R*8jC8E8QksDuFl8P!V`6~0Ln?P(#<
zOOHW5^%RsZJqCdhnL72lE!4T)?QXlLbFZ+neCvbno_qNH`+n#A4o4})PH3AVR9|(#
z(1=A7U!Np7`~?E+3`6H};&i0Ee-r&+tve<d85z0T)ZG5apcUYG9=<AP*<oItE&oqG
zeMO7KBDCxp;)`F#qtWPnD}ldy@1fq_Gx$EwLy{!4w<&lW!#@ZgIgh2KC1kVf(6sbn
zR+!`2N2;j_G&mIn;VvHr-}})#;X*0By*qtTLC?Jw3_Xv4;|M&S>UsbbJb-}D=ie<5
z5rqP9^Vm52K@TF`C(FTUCb_m>h25V=fA=-krU2RL^#ceI0F7>UrC2Nx{8$9~>u;f$
zqj>r58EV^hS-}}?4a;x6IM*?RaIg=VOa=~7wgYH36*M_rP9_Tw2r&Ci$MLE$^weC(
zr>WFd@U$0w2S;%<bQ!v?gJaG%y99=PL~(i>wR{B@;zjtY2!u*IvKnx<Wel4e6tAaW
z;KG4XoNBs)TrRiOQaTOMZiB3NTZr4^Yqi-N$mjE*l)!}K07@kuSHpKe;K0R>8<w42
zu~l6ZMYhjCQ7T&r2jW%LRk&OQB$G+gX&WOAmyk-OSi%y_87P=14KOu%u!C1fsbo+|
zsz59jV@X^Hg+i#StFzW%z>NnFC-El+1_qEwBoL3sO*IBjL1iKc&@|05u>LH$hG9V9
z0Yb<&2KM+63<fdtafaCindGwTE6L<?byrs>R8?hx=BRG6MC(u!5@cB_SC?fO^9#$E
zo0~&N=YIT5d|u&(hldA6hvzo2$u2e^rYy<`lNKn2!AO6TV?aSqZ{%}p6V`M7AN&IK
WQw|Xz%HO&G0000<MNUMnLSTYna!5S@

literal 0
HcmV?d00001

diff --git a/browser/themes/windows/privatebrowsing-mask-tabstrip-XPVista7.png b/browser/themes/windows/privatebrowsing-mask-tabstrip-XPVista7.png
new file mode 100644
index 0000000000000000000000000000000000000000..bd5d46a76a8def4a3d8db31aed36126f5b7b062b
GIT binary patch
literal 949
zcmV;m14{gfP)<h;3K|Lk000e1NJLTq001xm001Be1^@s6RMh(%000AgNkl<Zc-rli
zNl#Nz7(n%BAOy-(h{_Cz3llfSonfOJSH`#kV$eho5K0v&ipZplwzL2(5&=OI1cg`2
zBtU0qX-f$}fljt`1YO|$NJuIvr7!8?hWL_`H22=-JLmP~_1ymp=j-6$;5-hHm8Kx5
zm_j*Cp87hI{h*NAG*U+G6ft6XVjKV$Z~`}QJn_y~Wwzh1h~Y{&sgn~u8A5*VRWX4B
z-~vwIR+Y(u2#VLcpC8>Y3J2j!I0A0q2(DfOXi+Q))Z!WdZr}*6-rhD;dNfD+0Ug8{
za0FLy_8yQSCh*0NfF5)RTTTyPqW}?sGvIiJ1ENsC6(K<eMhs8Xkvc7CP5eGZi)6_>
zX^j6m!%X5&dajisS`){n*eR2Ovgj@eH+`N@W*#`67*HC?mh#etguhf!d7>{x)9aN<
z-AnIo4lMI)#9P}Ev)!rRbBlOtL;2;7#pf|>`Bbxf$F6g^V2^ks-fFnfzx*nVw=_(j
z-FSf_$jk)CfCbPZSTdc^WZSp?+4qLzliDKbTQQ!ruM?SUd0}rA0Slm^O)fg*FC{2I
z^=;F#hhzZvuiyLj9rqr5_J%|M@1A@_yZbPtN=0TS&38b%l$*9d_z4PN%H%_<CXgAR
z6Z)s|_1f$U3{CZ|&UJ&z;yMyFsI9L0JG_mYV1}k3p?+ncbX*VXqCu54H>7%*%uI0f
z5x_zL^Mt=ZzzlQgP)7V&Wv#r%Q9lcBlf(KzzF^}hptoRDpA%fEE(mK{ti9f=lnrXl
zus+^AZ+-*;BxWK<9{~|8X?N;8;V-ophi2RF4r@Fg3(K0rX;4}nHl6F}7l6mgtyfx{
zu;+QU?lyOW9>o!pnF)>o3jm74nKH%5ngxW&usEu<Wd&7e-Y5MK1T3HgZFZqUWT=Ym
zpL?0cRcuO(j^mOG{Yr}%J?F>QbyA}<Kdx@IfYK}{JFmoNKsX9WnIp(TkK{<o5;zK?
zMQAdu?7BCl24~B?kGia&a!qb<^>Sa~__lGy>awic-2#@#oOh{43+o-pGkmhMz%k$f
zKx5qKR1u|3{y3yYnH|JX!`r1bVQiu^dG_!zdlK59fOP=<0}DyWlMFxuF~)a5G1`PX
zhBL)yJAlHHb|lRbI0KG80+=Y^CxJ7_(MLcS3P?l;F$NsZZa`sZv%D>i5a0|rdItOj
Xfp>l0?Pb^300000NkvXXu0mjfJ{+=N

literal 0
HcmV?d00001

diff --git a/browser/themes/windows/privatebrowsing-mask-titlebar-XPVista7-tall.png b/browser/themes/windows/privatebrowsing-mask-titlebar-XPVista7-tall.png
new file mode 100644
index 0000000000000000000000000000000000000000..4a723c54e2316e978062be38a7be8eaa1a0d11f2
GIT binary patch
literal 940
zcmV;d15^BoP)<h;3K|Lk000e1NJLTq001xm001Be1^@s6RMh(%000AXNkl<Zc-rlg
z$xl;J6o(1_1yoX*5x@cn=*F-yu3Q@3nvl3aOi+RVG8+L@W(zb*feJ04fCvJp@M?uJ
zccO(-+8}dVOItdDF7O_cCWS!Wdj`^H<R-t(x#!&TeH}bp&;I_tCrZM7?^1Pf2v1C<
z028nQqbu`~0)>Ii(vB-)j7kBfGl73bpa3<uqaiA#fV9A6F-D<~7idF6lnHr(CL|!j
zs1#uOj|2jcK>RF5r2rFQfqefaDKBmoBa)&Zo~SuSC}1(ZjOF>UWv*dH4358!<c}Vx
z`?F;%#_(8U^r+xTV2h+RcA8IQ4=|m$0KoS>7Os>;wJMm`yOsP3@y4daV6ka;9U`7e
z_cWX%FAQ#)8>^q&vaH+faEFzPH)^hRDWApi6axj5s~~aW0(t(8Qf}M~hL>Ew2HEPY
zZfDo@YwxJYdzTH8PPP8Hdo*i-H;C*4CUOF?Xb>l`Tt28VJAoYAKldzKj@{#ct=fZk
z@*#~G-oW2QR=|%f<zAY`@RIA>AQN>jZUanr!H6~^qDphmyGT`bgR`nzG}@h@I+e*@
zeUrPIOe<1lUaZn|=Z|QiF6mJj;SD0YfQghqD;mN}4qDD<iSz(7_fcakPv}rWEt6g^
z=RO?RbP9B2e%{KU*U90o>}uPB`2Er!X_$o??k=(dxv04X4dJCC^uuJ`t*&L)pM~+e
z)uvl8S<UEA>#SL{4u@W8w!)ojZ~g7AWq5<gu3S<AzDOWu3L}yXdaYdAzhnj=GLe7M
z?7%G1J-~D-0?&gxr?MHfOKTFH^)Td2*Md>pvuHY8Uzh4_*$n1VY0%s0(-VlE#E2%}
zw^5Q7T&c!b(}o{vvtv!Fv$5{HTTh{tDN|@Kl<gTqTD{t2H?CM50=CGI9#*BvBe#Q`
zKn`ktgNDfDW!Rwb!MXB<B(GvsvR8>Ji_V&ZIwxuZOY^BwKt0K;NCiDrp?%|I-_Q9Q
z0jh+&!1)FlCu$O-Qh*6p01h-|(d%Vw#^_i0`l%3L0VZGrMqGi^fO0|2g??cZL&)bu
zPGIf~FaQfM5fzB5z1#LE-KSPj8PYq>3LpOVDuOR?M_@NF01Gpbn+|LqL=KoT6I;_$
z{7MC>v<gKUt$N-aLA&RH0a#o=eWDWaFhr5W<KW`Tc)BAVXXosk{`n1(UhvtS<;6z;
O0000<MNUMnLSTY#G_!92

literal 0
HcmV?d00001

diff --git a/browser/themes/windows/privatebrowsing-mask-titlebar-XPVista7.png b/browser/themes/windows/privatebrowsing-mask-titlebar-XPVista7.png
new file mode 100644
index 0000000000000000000000000000000000000000..835912b534b2d16ac01a52c44ff6f3548ac0032c
GIT binary patch
literal 860
zcmV-i1Ec(jP)<h;3K|Lk000e1NJLTq001Ze000yS1^@s6|3-hi0009cNkl<Zc-qy`
z+fR~V90&0J4X4gTQ&USkVt1~KwywHsb=l_DjkZ}%QS-<$vF0HhC^|t!5uKr?nY!{-
zO7IB02#Ops&p-&s(YmnbcR`5D@yd;K@x6Gz&-*^#&*0kW>1ht_MmIiqM}~z`zy!Ac
z16YF|2C`*XD5WM?U|qaG%FA33wWrR^SI2S{XVaQ8E$K`Xee>_T6dkG9e0PReR2$bP
z@29NJ1_A8C1=&(8KoG89I$j~!rl<2&%=^RY*=G6v0dBTC4IZ~tpfT3o<|%16yVvH~
zYlrrImkZ9YCfR<=J)!yyMWFgbTikgS*DEKo1tuRb76B<zEKsUqxQg9X<ME00_sPGa
z8rw4C?{%h&&e6AaxP!<RGWmejF<p3n)+!b#RV0o=IjOgK2R%o>P8^4B&qW}o!T(G(
z_1y+{5ZMA#P(a!6<`ImI&@e+u3PYbCPS-R%;O&?;EiNy_q_Mgf5BqnXMbI^+WQKmY
zX2t+LKB}<<1w=nP&d*xG0;Q7FshDe*nmlN1?W5k(bazk<U0F0+$uFEdfF3ef`uVW*
zdaDx78gd3U<RjW6=;2%Fh-`uB43LBKGncVIX-@jE*!D=c<%K{jKO9b@+Ul_Fxm@1P
zZg9IzYMTSj&c56BShxju5ZMBg4@lzReHqIbk(5NWD)9-e4F)e0<+T17z9qVYOg>;G
zdgw(Zk-SY1E|rs6+FiNPaUQWE+_1<-H?8OUJ>29hPhn~6<A;`s?o|2#qY*HD2_u?n
z5?5Z7@J@%Zm(4$QHuo-Wbh4ie?G=PKs38L-QwEdH>auLx-6D?EOigC!t4Q2SZGg!i
zn6`*rCd{Ns@r#JYjl8frO@0_%^D>IP20brz0V|GdQ9+*<_FD5Cy~9Wxmt69Ge_%y)
zr-FydPzsp-0?VS>6ddyWTn{=3g@6T_e89rkMo~-Rgt&_=p6x+@(NzWvU;&dCn8kW3
zD5gfTRLu!v5_a;JuN}8$MOP8n1_M}_xqK?v00_xp=JrtwNcEz^@FrDJIAi@Pg0|Pe
m02VNT4RGF2pbU{vyskfVIUEteAA!IC0000<MNUMnLSTZ~^p(5-

literal 0
HcmV?d00001

diff --git a/browser/themes/windows/reload-stop-go-XPVista7.png b/browser/themes/windows/reload-stop-go-XPVista7.png
new file mode 100644
index 0000000000000000000000000000000000000000..3ef32c3ce696eb2cc2d49b64b70d486fd837ffcb
GIT binary patch
literal 1944
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

literal 0
HcmV?d00001

diff --git a/browser/themes/windows/reload-stop-go-XPVista7@2x.png b/browser/themes/windows/reload-stop-go-XPVista7@2x.png
new file mode 100644
index 0000000000000000000000000000000000000000..38b27bf0cd4499bedab1ee01c8b1c38268955a0e
GIT binary patch
literal 3661
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

literal 0
HcmV?d00001

diff --git a/browser/themes/windows/sync-horizontalbar-XPVista7.png b/browser/themes/windows/sync-horizontalbar-XPVista7.png
new file mode 100644
index 0000000000000000000000000000000000000000..2c97ce6dbd09f99c175722c3e9b5129e8f246c28
GIT binary patch
literal 719
zcmV;=0x<oFP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV0007(Nkl<ZILob5
zYe-XJ7?vm?5Q!iPDC$=r0TBT~{_S5`w0Wy`vvzj2>D;+(o$Xw9Hs@}x=G>fChFF<p
zf=E&gFiI*CsVIuTjF6zDew7GQ)3^6n&LK$weem#oeDC`_@AqE5qN4w`j-Mh*wR%hH
z#Oa2IMjQLSw$Akx_b+%iinjHC6##%O&B=}oD@Q>Hw}KQ+gWDemC7c*W+d7TTe4xTW
zzSHOk?H>gy^rWSp_k$8|hhWR4CAj_PAk%pzgv4T#ott8$Fp!M6sMQfQtDbM(K~UbD
z7)hf*2Y8#3AVpF$j<bH~8yGrlB<VvWBg~1B6bPYKAe^3Q<ZR6g=qwEp_30|vrNrS{
z-@xsO50k;#dTwUq$>??f*fsj>MVj+Pa=zwvP<>Alj#ys6N{Qn_C<P*-Dc<%93HuQx
z+2N6P+&BEL(Y8d}<@=ss5>#IsElsQlFhb53%K+z#Lf6%s;ex{MEKIfg`YoEpI;g%@
zR-VfnNJgHM@sbup5KUwZYjr9ZOIA6B5Xip-=JN*H8~CIa4s!&HlfO_%Dz7x`TRxi|
zt{zs7Eftya1U|1Q$6JS3DGHuo3s@-c?9pmdS-!nGVywK{xcgX5t=7tj3#t!?B8{<R
zHZSn}<!enHC*}CSc~FJ)7HYP<%A`f15<N-JW80>zthne>nwNsuIr+!%gGYwKDJ;Ix
zKiGqYMcNwz(#d~&{B-PKjmgH<a|*bX81Oh$Y5<2j0O^ZeS>$Y9J<5Cf2k-PcT++uk
zZ^wf)uk1CE%(Pl{FGlq=CV&wm(AnL47k$gt`VXauGl)$_lA`R4FllGSoQ;ve&Poe5
zTKG;lT=$Mt8aDpR=Te8sjNlPIgoI!bn&shA*H1ZPl1&<qrBMI?002ovPDHLkV1gn`
BRYw2-

literal 0
HcmV?d00001

diff --git a/browser/themes/windows/sync-horizontalbar-XPVista7@2x.png b/browser/themes/windows/sync-horizontalbar-XPVista7@2x.png
new file mode 100644
index 0000000000000000000000000000000000000000..ee117ab73c0695b01c14e521e893aed301a7f855
GIT binary patch
literal 1702
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

literal 0
HcmV?d00001

diff --git a/browser/themes/windows/syncProgress-horizontalbar-XPVista7.png b/browser/themes/windows/syncProgress-horizontalbar-XPVista7.png
new file mode 100644
index 0000000000000000000000000000000000000000..48cd110559d45a13d8428e2a18391cddbe556acd
GIT binary patch
literal 11892
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

literal 0
HcmV?d00001

diff --git a/browser/themes/windows/syncProgress-horizontalbar-XPVista7@2x.png b/browser/themes/windows/syncProgress-horizontalbar-XPVista7@2x.png
new file mode 100644
index 0000000000000000000000000000000000000000..741dd2ed44d2aada4c73646180358de098d304d8
GIT binary patch
literal 27608
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
W6kzz>Z1nyapdh0nT_*_+{{H|O=!~lX

literal 0
HcmV?d00001

diff --git a/browser/themes/windows/syncProgress-toolbar-XPVista7.png b/browser/themes/windows/syncProgress-toolbar-XPVista7.png
new file mode 100644
index 0000000000000000000000000000000000000000..49e224f0d9c0e3f596566ef86d27281caeeafc86
GIT binary patch
literal 13293
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
G|Nj7-Q*>Ye

literal 0
HcmV?d00001

diff --git a/browser/themes/windows/syncProgress-toolbar-XPVista7@2x.png b/browser/themes/windows/syncProgress-toolbar-XPVista7@2x.png
new file mode 100644
index 0000000000000000000000000000000000000000..fd203872564dc72b89b85431b205a7a3e2689b1f
GIT binary patch
literal 33662
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
Rn-hW344$rjF6*2UngH`@yYB!1

literal 0
HcmV?d00001

diff --git a/browser/themes/windows/tabbrowser/newtab-XPVista7.svg b/browser/themes/windows/tabbrowser/newtab-XPVista7.svg
new file mode 100644
index 000000000..3f431c9db
--- /dev/null
+++ b/browser/themes/windows/tabbrowser/newtab-XPVista7.svg
@@ -0,0 +1,16 @@
+<!-- This Source Code Form is subject to the terms of the Mozilla Public
+   - License, v. 2.0. If a copy of the MPL was not distributed with this
+   - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
+<svg width="16" height="18" xmlns="http://www.w3.org/2000/svg">
+  <defs>
+    <linearGradient id="gradient" x1="0%" x2="0%" y1="0%" y2="100%">
+      <stop offset="0%" stop-color="#1c2835"/>
+      <stop offset="60%" stop-color="#606e7b"/>
+      <stop offset="100%" stop-color="#465765"/>
+    </linearGradient>
+  </defs>
+  <g fill="url(#gradient)">
+    <rect width="10" height="2" x="3" y="8"/>
+    <rect width="2" height="10" x="7" y="4"/>
+  </g>
+</svg>
diff --git a/browser/themes/windows/tabbrowser/newtab-inverted-XPVista7.svg b/browser/themes/windows/tabbrowser/newtab-inverted-XPVista7.svg
new file mode 100644
index 000000000..10ffbc745
--- /dev/null
+++ b/browser/themes/windows/tabbrowser/newtab-inverted-XPVista7.svg
@@ -0,0 +1,13 @@
+<!-- This Source Code Form is subject to the terms of the Mozilla Public
+   - License, v. 2.0. If a copy of the MPL was not distributed with this
+   - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
+<svg width="16" height="18" xmlns="http://www.w3.org/2000/svg">
+  <g stroke="#666" stroke-width="2" fill="none">
+    <rect x="7" y="4" width="2" height="10" rx="0.25" ry="0.25"/>
+    <rect x="3" y="8" width="10" height="2" rx="0.25" ry="0.25"/>
+  </g>
+  <g fill="#fff">
+    <rect width="2" height="10" x="7" y="4"/>
+    <rect width="10" height="2" x="3" y="8"/>
+  </g>
+</svg>
diff --git a/browser/themes/windows/tabbrowser/tab-arrow-left-XPVista7.svg b/browser/themes/windows/tabbrowser/tab-arrow-left-XPVista7.svg
new file mode 100644
index 000000000..41bb5ab13
--- /dev/null
+++ b/browser/themes/windows/tabbrowser/tab-arrow-left-XPVista7.svg
@@ -0,0 +1,13 @@
+<!-- This Source Code Form is subject to the terms of the Mozilla Public
+   - License, v. 2.0. If a copy of the MPL was not distributed with this
+   - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
+<svg width="15" height="17" xmlns="http://www.w3.org/2000/svg">
+  <defs>
+    <linearGradient id="gradient" x1="0%" x2="0%" y1="0%" y2="100%">
+      <stop offset="0%" stop-color="#1c2835"/>
+      <stop offset="60%" stop-color="#606e7b"/>
+      <stop offset="100%" stop-color="#465765"/>
+    </linearGradient>
+  </defs>
+  <path d="M11 4L9.5 2.5l-5.875 6 5.875 6L11 13 6.625 8.5z" fill="url(#gradient)"/>
+</svg>
diff --git a/browser/themes/windows/toolbarbutton-dropdown-arrow-XPVista7.png b/browser/themes/windows/toolbarbutton-dropdown-arrow-XPVista7.png
new file mode 100644
index 0000000000000000000000000000000000000000..5f892f532efdb3742322674f4ee9b4adbb5cd93a
GIT binary patch
literal 208
zcmeAS@N?(olHy`uVBq!ia0vp^oIuRZ!3-qdx=sfP*a!H8xc<ig3=AwP`W8Ua-Xp+0
zAY9$p#=$#?O+<!WRGvpll}B3D(k;l!GuX~IGCHH+nquq<pi#UfL4LsuQpT3<kxyQI
z`0(M|x6ix}4+15OJzX3_IAmE5H1akm@UR@n7W{rc%(ub(D(jP1uk$SLORk*v_N?5b
lS?A*<Rnpf=bci|}<oEn7{-tB`9)F;A22WQ%mvv4FO#r*qOW6Pb

literal 0
HcmV?d00001

diff --git a/browser/themes/windows/urlbar-history-dropmarker-XPVista7.png b/browser/themes/windows/urlbar-history-dropmarker-XPVista7.png
new file mode 100644
index 0000000000000000000000000000000000000000..b03338822c37e8924e33ce1f09cd242374560b63
GIT binary patch
literal 479
zcmV<50U-W~P)<h;3K|Lk000e1NJLTq001EX000gM1^@s6p&oUN0004|Nkl<Zc-rmM
z-z!657zc1O(ONbMla<IRSLYAdJ=d=N3I2oq0WuX)By%eiQ9?A>Y@DtAvSu5boz2+F
zBFco5)#H2A)`{(Gt|+QcZ|6Nv?|IJqKF?c2L_h97iQkpP{PMbCX>BXNb8t+%cGnl%
z`$x36x+x%zWvq_|$OFj`fYr@j8XylOLjYFHM6-LyE%;7jbe>34G?^(9pFP1S?b)4X
z#HpdC$8v81l3^_Tp>BpZ0m(2HkK-}-)NAFuy!g>%=C<gJPm}G~8+v&ax(f?;ZDi{q
z2vh<G%0g`GRIDC?KqYXXl-5LTB+3uE{NcCw)y+o&;^_2;pQG{10lZg8&#-glngsz!
zA_vUp^KO}pupj_Q<bWwvm}(p6F$W?%63Eg?_<|fR-#F$~rHV;EA2$L?43#Uq=CPm=
zNMfjLcZl0=J@SP7p%@)F+#bwzlv}ucF02F&2rP2d-!$q|0tW<^N-e4ow|~Q8%O+Ck
z{z|RYHXUFf1^P;{nh`exDbQDQPpIzhANnvhRMX=v6JD)2R-<v)sr}AnRrlv^%y;DN
VGcn#d^zQ%w002ovPDHLkV1kje+hqU%

literal 0
HcmV?d00001

diff --git a/browser/themes/windows/urlbar-history-dropmarker-XPVista7@2x.png b/browser/themes/windows/urlbar-history-dropmarker-XPVista7@2x.png
new file mode 100644
index 0000000000000000000000000000000000000000..bff2997f85317e6a59ba98ddba282e6db722cdc9
GIT binary patch
literal 788
zcmV+v1MB>WP)<h;3K|Lk000e1NJLTq002S&000~a1^@s6)zE2g0008pNkl<Zc-rmO
z-A__+9LMpWW3vm(jC_c!R^g>v_pU#{^#}Mbxc-H%o%XOEU9#G`Xe+Ip^9gwn&`3lO
z5jcp5M?g~Wp<HWv<Hq>*!JWB9o;XjJ=e@n|<g<CkkKbW>dU|?#dU|?F`|xSR0KSn4
z8%@~VD!6EPY>Ke;g`qajZv*&%G;*@rV#yl72c!|~3JngAnQbob;rwEh0^ztKzF>qV
zou0zr@TidqnWul5;Sflr0-Wx)3}no32&7U0gk7PrDQEX$Btffuj*{suS<0VT2y>-T
ztMeYK=(hc5H;@V?_-D8I^+q?43MIg9MdLPCjoZ6mFaKlN{13@8+xwJQ-z4YE+*@`=
zx2*d$U<Xp@%-yDbz6R_-3Sn2INr&6y55*4n+>Yc2vA$WLxj;CL--+`~q?_YACO80+
zDGj2#O|McWH~^9<4cPrpR_9DtB*9a9Yp>cvz~Agrm|H7aou0d_N;gKfyMSaULe<^I
z7s)Ol8H#{i2~E$=53O$Gsve1WDob{^_YsrW_0PE>Ac-XJUVfGs0+I;362sTr=v$2B
z@wFFy5UI>IdHo>{*XB7Uv1=bQM#uwI!GYvm<I}hi@<3H^AhIidL^_w_snS_TWaIlT
zg`%s+lMc@vCbO&W*E^vEB;puk?_PQm?SvALh-1L6f*hVX3vPt+G5G69aBCTwnx1*U
z6lQvtv;c`vyxZ`2*#aa&*{*Oz>b?cSd@7qieGqGzEt>TO{kU!oOkr2vtkeMyRKX95
zcN-oq)d3Gw!4KF~5pINzB`#US4RLZLf{~RY9EmojvX%j^1ByU`BT&72u{YEKMIgZu
zU{`}|uCIMuGEGrjtN87>&orvJKhg&z&}_H9H`oUxz^+E&W~jxRV+>cNqx=TSG^*+4
zaxKKb0h;aB_XKJo1`fckhT%B0<IS^`X<Xy;rFPJK_d?G?JG3%AJv}`=?fL`R^?mX=
Sd%`aO0000<MNUMnLSTYR#e4k#

literal 0
HcmV?d00001

diff --git a/browser/themes/windows/windowsShared.inc b/browser/themes/windows/windowsShared.inc
index 199a62292..0cb2ab163 100644
--- a/browser/themes/windows/windowsShared.inc
+++ b/browser/themes/windows/windowsShared.inc
@@ -8,4 +8,6 @@
 %define fgTabTexture linear-gradient(transparent 2px, @toolbarHighlight@ 2px, @toolbarHighlight@)
 %define fgTabBackgroundColor -moz-dialog
 %define fgTabTextureLWT @fgTabTexture@
+
+% Aero-only defines
 %define customToolbarColor hsl(210,75%,92%)
diff --git a/build/moz.configure/old.configure b/build/moz.configure/old.configure
index ffdea81b0..4c76c3f3b 100644
--- a/build/moz.configure/old.configure
+++ b/build/moz.configure/old.configure
@@ -220,6 +220,7 @@ def old_configure_options(*options):
     '--enable-readline',
     '--enable-reflow-perf',
     '--enable-release',
+    '--enable-require-all-d3dc-versions',
     '--enable-safe-browsing',
     '--enable-sandbox',
     '--enable-signmar',
diff --git a/dom/ipc/ContentProcess.cpp b/dom/ipc/ContentProcess.cpp
index 2413d8808..66125f332 100644
--- a/dom/ipc/ContentProcess.cpp
+++ b/dom/ipc/ContentProcess.cpp
@@ -8,6 +8,10 @@
 
 #include "ContentProcess.h"
 
+#if defined(XP_WIN) && defined(MOZ_CONTENT_SANDBOX)
+#include "mozilla/WindowsVersion.h"
+#endif
+
 #if defined(XP_MACOSX) && defined(MOZ_CONTENT_SANDBOX)
 #include <stdlib.h>
 #endif
@@ -29,8 +33,9 @@ static bool
 IsSandboxTempDirRequired()
 {
   // On Windows, a sandbox-writable temp directory is only used
-  // when sandbox pref level >= 1.
-  return Preferences::GetInt("security.sandbox.content.level") >= 1;
+  // for Vista or later with sandbox pref level >= 1.
+  return (IsVistaOrLater() &&
+    (Preferences::GetInt("security.sandbox.content.level") >= 1));
 }
 
 static void
diff --git a/dom/media/DecoderDoctorDiagnostics.cpp b/dom/media/DecoderDoctorDiagnostics.cpp
index 778e8c4c5..91c2d8dfb 100644
--- a/dom/media/DecoderDoctorDiagnostics.cpp
+++ b/dom/media/DecoderDoctorDiagnostics.cpp
@@ -576,9 +576,16 @@ DecoderDoctorDocumentWatcher::SynthesizeAnalysis()
       // going through expected decoders from most to least desirable.
 #if defined(XP_WIN)
       if (!formatsRequiringWMF.IsEmpty()) {
-        DD_INFO("DecoderDoctorDocumentWatcher[%p, doc=%p]::SynthesizeAnalysis() - unplayable formats: %s -> Cannot play media because WMF was not found",
-                this, mDocument, NS_ConvertUTF16toUTF8(formatsRequiringWMF).get());
-        ReportAnalysis(mDocument, sMediaWMFNeeded, false, formatsRequiringWMF);
+        if (IsVistaOrLater()) {
+          DD_INFO("DecoderDoctorDocumentWatcher[%p, doc=%p]::SynthesizeAnalysis() - unplayable formats: %s -> Cannot play media because WMF was not found",
+                  this, mDocument, NS_ConvertUTF16toUTF8(formatsRequiringWMF).get());
+          ReportAnalysis(mDocument, sMediaWMFNeeded, false, formatsRequiringWMF);
+        } else {
+          DD_INFO("DecoderDoctorDocumentWatcher[%p, doc=%p]::SynthesizeAnalysis() - unplayable formats: %s -> Cannot play media before Windows Vista",
+                  this, mDocument, NS_ConvertUTF16toUTF8(formatsRequiringWMF).get());
+          ReportAnalysis(mDocument, sMediaUnsupportedBeforeWindowsVista,
+                         false, formatsRequiringWMF);
+        }
         return;
       }
 #endif
diff --git a/dom/media/MediaManager.cpp b/dom/media/MediaManager.cpp
index 97a6855d9..96e2c23e0 100644
--- a/dom/media/MediaManager.cpp
+++ b/dom/media/MediaManager.cpp
@@ -1853,18 +1853,20 @@ MediaManager::GetNonE10sParent()
 MediaManager::StartupInit()
 {
 #ifdef WIN32
-  // Bug 1107702 - Some Windows versions fail in GetAdaptersInfo (and others)
-  // if the first(?) call occurs after the process size is over 2GB (kb/2588507).
-  // Attempt to 'prime' the pump by making a call at startup.
-  unsigned long out_buf_len = sizeof(IP_ADAPTER_INFO);
-  PIP_ADAPTER_INFO pAdapterInfo = (IP_ADAPTER_INFO *) moz_xmalloc(out_buf_len);
-  if (GetAdaptersInfo(pAdapterInfo, &out_buf_len) == ERROR_BUFFER_OVERFLOW) {
-    free(pAdapterInfo);
-    pAdapterInfo = (IP_ADAPTER_INFO *) moz_xmalloc(out_buf_len);
-    GetAdaptersInfo(pAdapterInfo, &out_buf_len);
-  }
-  if (pAdapterInfo) {
-    free(pAdapterInfo);
+  if (IsVistaOrLater() && !IsWin8OrLater()) {
+    // Bug 1107702 - Older Windows fail in GetAdaptersInfo (and others) if the
+    // first(?) call occurs after the process size is over 2GB (kb/2588507).
+    // Attempt to 'prime' the pump by making a call at startup.
+    unsigned long out_buf_len = sizeof(IP_ADAPTER_INFO);
+    PIP_ADAPTER_INFO pAdapterInfo = (IP_ADAPTER_INFO *) moz_xmalloc(out_buf_len);
+    if (GetAdaptersInfo(pAdapterInfo, &out_buf_len) == ERROR_BUFFER_OVERFLOW) {
+      free(pAdapterInfo);
+      pAdapterInfo = (IP_ADAPTER_INFO *) moz_xmalloc(out_buf_len);
+      GetAdaptersInfo(pAdapterInfo, &out_buf_len);
+    }
+    if (pAdapterInfo) {
+      free(pAdapterInfo);
+    }
   }
 #endif
 }
@@ -2128,11 +2130,19 @@ if (privileged) {
       case MediaSourceEnum::Application:
       case MediaSourceEnum::Window:
         // Deny screensharing request if support is disabled, or
-        // the requesting document is not from a host on the whitelist
+        // the requesting document is not from a host on the whitelist, or
+        // we're on WinXP until proved that it works
         if (!Preferences::GetBool(((videoType == MediaSourceEnum::Browser)?
                                    "media.getusermedia.browser.enabled" :
                                    "media.getusermedia.screensharing.enabled"),
                                   false) ||
+#if defined(XP_WIN)
+            (
+              // Allow tab sharing for all platforms including XP
+              (videoType != MediaSourceEnum::Browser) &&
+              !Preferences::GetBool("media.getusermedia.screensharing.allow_on_old_platforms",
+                                    false) && !IsVistaOrLater()) ||
+#endif
             (!privileged && !HostIsHttps(*docURI))) {
           RefPtr<MediaStreamError> error =
               new MediaStreamError(aWindow,
diff --git a/dom/media/eme/MediaKeySystemAccess.cpp b/dom/media/eme/MediaKeySystemAccess.cpp
index 4cff464e7..7007d3a03 100644
--- a/dom/media/eme/MediaKeySystemAccess.cpp
+++ b/dom/media/eme/MediaKeySystemAccess.cpp
@@ -140,12 +140,26 @@ MediaKeySystemAccess::GetKeySystemStatus(const nsAString& aKeySystem,
         aOutMessage = NS_LITERAL_CSTRING("Adobe EME disabled");
         return MediaKeySystemStatus::Cdm_disabled;
       }
+#ifdef XP_WIN
+      // Win Vista and later only.
+      if (!IsVistaOrLater()) {
+        aOutMessage = NS_LITERAL_CSTRING("Minimum Windows version (Vista) not met for Adobe EME");
+        return MediaKeySystemStatus::Cdm_not_supported;
+      }
+#endif
       return EnsureCDMInstalled(aKeySystem, aOutMessage);
     }
   }
 
   if (IsWidevineKeySystem(aKeySystem)) {
     if (Preferences::GetBool("media.gmp-widevinecdm.visible", false)) {
+#ifdef XP_WIN
+      // Win Vista and later only.
+      if (!IsVistaOrLater()) {
+        aOutMessage = NS_LITERAL_CSTRING("Minimum Windows version (Vista) not met for Widevine EME");
+        return MediaKeySystemStatus::Cdm_not_supported;
+      }
+#endif
       if (!Preferences::GetBool("media.gmp-widevinecdm.enabled", false)) {
         aOutMessage = NS_LITERAL_CSTRING("Widevine EME disabled");
         return MediaKeySystemStatus::Cdm_disabled;
diff --git a/dom/media/fmp4/MP4Decoder.cpp b/dom/media/fmp4/MP4Decoder.cpp
index fdd6f2c7e..4cf07ddbd 100644
--- a/dom/media/fmp4/MP4Decoder.cpp
+++ b/dom/media/fmp4/MP4Decoder.cpp
@@ -52,6 +52,14 @@ IsWhitelistedH264Codec(const nsAString& aCodec)
     return false;
   }
 
+#ifdef XP_WIN
+  // Disable 4k video on windows vista since it performs poorly.
+  if (!IsWin7OrLater() &&
+      level >= H264_LEVEL_5) {
+    return false;
+  }
+#endif
+
   // Just assume what we can play on all platforms the codecs/formats that
   // WMF can play, since we don't have documentation about what other
   // platforms can play... According to the WMF documentation:
diff --git a/dom/media/gtest/MockMediaDecoderOwner.h b/dom/media/gtest/MockMediaDecoderOwner.h
index 324f18141..1009ca30a 100644
--- a/dom/media/gtest/MockMediaDecoderOwner.h
+++ b/dom/media/gtest/MockMediaDecoderOwner.h
@@ -34,8 +34,10 @@ public:
   void DownloadProgressed() override {}
   void UpdateReadyState() override {}
   void FirstFrameLoaded() override {}
+#ifdef MOZ_EME
   void DispatchEncrypted(const nsTArray<uint8_t>& aInitData,
                          const nsAString& aInitDataType) override {}
+#endif
   bool IsActive() const override { return true; }
   bool IsHidden() const override { return false; }
   void DownloadSuspended() override {}
diff --git a/dom/media/gtest/TestGMPCrossOrigin.cpp b/dom/media/gtest/TestGMPCrossOrigin.cpp
index 33ac98388..036282153 100644
--- a/dom/media/gtest/TestGMPCrossOrigin.cpp
+++ b/dom/media/gtest/TestGMPCrossOrigin.cpp
@@ -1521,6 +1521,11 @@ TEST(GeckoMediaPlugins, GMPPluginVoucher) {
 
 #if defined(XP_WIN)
 TEST(GeckoMediaPlugins, GMPOutputProtection) {
+  // Output Protection is not available pre-Vista.
+  if (!IsVistaOrLater()) {
+    return;
+  }
+
   RefPtr<GMPStorageTest> runner = new GMPStorageTest();
   runner->DoTest(&GMPStorageTest::TestOutputProtection);
 }
diff --git a/dom/media/platforms/PDMFactory.cpp b/dom/media/platforms/PDMFactory.cpp
index c1e58fdc2..a72d910f5 100644
--- a/dom/media/platforms/PDMFactory.cpp
+++ b/dom/media/platforms/PDMFactory.cpp
@@ -47,6 +47,10 @@
 #include "MP4Decoder.h"
 #include "mozilla/dom/RemoteVideoDecoder.h"
 
+#ifdef XP_WIN
+#include "mozilla/WindowsVersion.h"
+#endif
+
 #include "mp4_demuxer/H264.h"
 
 namespace mozilla {
@@ -363,7 +367,16 @@ PDMFactory::CreatePDMs()
   }
 #endif
 #ifdef XP_WIN
-  if (MediaPrefs::PDMWMFEnabled()) {
+  if (MediaPrefs::PDMWMFEnabled() && IsVistaOrLater() && !IsWin7AndPre2000Compatible()) {
+    // *Only* use WMF on Vista and later, as if Firefox is run in Windows 95
+    // compatibility mode on Windows 7 (it does happen!) we may crash trying
+    // to startup WMF. So we need to detect the OS version here, as in
+    // compatibility mode IsVistaOrLater() and friends behave as if we're on
+    // the emulated version of Windows. See bug 1279171.
+    // Additionally, we don't want to start the RemoteDecoderModule if we
+    // expect it's not going to work (i.e. on Windows older than Vista).
+    // IsWin7AndPre2000Compatible() uses GetVersionEx as the user specified OS version can
+    // be reflected when compatibility mode is in effect.
     m = new WMFDecoderModule();
     RefPtr<PlatformDecoderModule> remote = new dom::RemoteDecoderModule(m);
     StartupPDM(remote);
diff --git a/dom/media/platforms/wmf/WMF.h b/dom/media/platforms/wmf/WMF.h
index 6988ef083..5ede0d361 100644
--- a/dom/media/platforms/wmf/WMF.h
+++ b/dom/media/platforms/wmf/WMF.h
@@ -7,6 +7,18 @@
 #ifndef WMF_H_
 #define WMF_H_
 
+#if WINVER < _WIN32_WINNT_WIN7
+#error \
+You must include WMF.h before including mozilla headers, \
+otherwise mozconfig.h will be included \
+and that sets WINVER to WinXP, \
+which makes Windows Media Foundation unavailable.
+#endif
+
+#pragma push_macro("WINVER")
+#undef WINVER
+#define WINVER _WIN32_WINNT_WIN7
+
 #include <windows.h>
 #include <mfapi.h>
 #include <mfidl.h>
@@ -23,7 +35,7 @@
 #include <codecapi.h>
 
 // The Windows headers helpfully declare min and max macros, which don't
-// compile in the presence of std::min and std::max and unified builds.
+// compile in the prescence of std::min and std::max and unified builds.
 // So undef them here.
 #ifdef min
 #undef min
@@ -85,4 +97,8 @@ HRESULT MFCreateDXGISurfaceBuffer(REFIID riid,
 } // end namespace wmf
 } // end namespace mozilla
 
+
+
+#pragma pop_macro("WINVER")
+
 #endif
diff --git a/dom/media/platforms/wmf/WMFUtils.cpp b/dom/media/platforms/wmf/WMFUtils.cpp
index 055012d0f..8aec8a8af 100644
--- a/dom/media/platforms/wmf/WMFUtils.cpp
+++ b/dom/media/platforms/wmf/WMFUtils.cpp
@@ -205,17 +205,31 @@ LoadDLLs()
 HRESULT
 MFStartup()
 {
+  if (!IsVistaOrLater() || IsWin7AndPre2000Compatible()) {
+    // *Only* use WMF on Vista and later, as if Firefox is run in Windows 95
+    // compatibility mode on Windows 7 (it does happen!) we may crash trying
+    // to startup WMF. So we need to detect the OS version here, as in
+    // compatibility mode IsVistaOrLater() and friends behave as if we're on
+    // the emulated version of Windows. See bug 1279171.
+    // Using GetVersionEx API which takes compatibility mode into account.
+    return E_FAIL;
+  }
+
   HRESULT hr = LoadDLLs();
   if (FAILED(hr)) {
     return hr;
   }
 
+  const int MF_VISTA_VERSION = (0x0001 << 16 | MF_API_VERSION);
   const int MF_WIN7_VERSION = (0x0002 << 16 | MF_API_VERSION);
 
   // decltype is unusable for functions having default parameters
   DECL_FUNCTION_PTR(MFStartup, ULONG, DWORD);
   ENSURE_FUNCTION_PTR_(MFStartup, Mfplat.dll)
-  return MFStartupPtr(MF_WIN7_VERSION, MFSTARTUP_FULL);
+  if (!IsWin7OrLater())
+    return MFStartupPtr(MF_VISTA_VERSION, MFSTARTUP_FULL);
+  else
+    return MFStartupPtr(MF_WIN7_VERSION, MFSTARTUP_FULL);
 }
 
 HRESULT
diff --git a/dom/media/webrtc/MediaEngineWebRTC.cpp b/dom/media/webrtc/MediaEngineWebRTC.cpp
index 1a2dc9a04..522f23f61 100644
--- a/dom/media/webrtc/MediaEngineWebRTC.cpp
+++ b/dom/media/webrtc/MediaEngineWebRTC.cpp
@@ -268,7 +268,11 @@ MediaEngineWebRTC::EnumerateVideoDevices(dom::MediaSourceEnum aMediaSource,
 bool
 MediaEngineWebRTC::SupportsDuplex()
 {
+#ifndef XP_WIN
   return mFullDuplex;
+#else
+  return IsVistaOrLater() && mFullDuplex;
+#endif
 }
 
 void
diff --git a/dom/plugins/ipc/hangui/plugin-hang-ui.exe.manifest b/dom/plugins/ipc/hangui/plugin-hang-ui.exe.manifest
index f5b7345f9..8d6149c58 100644
--- a/dom/plugins/ipc/hangui/plugin-hang-ui.exe.manifest
+++ b/dom/plugins/ipc/hangui/plugin-hang-ui.exe.manifest
@@ -32,6 +32,7 @@
       <supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}"/>
       <supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}"/>
       <supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"/>
+      <supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}"/>
     </application>
   </compatibility>
 </assembly>
diff --git a/gfx/angle/Makefile.in b/gfx/angle/Makefile.in
index 0394b352b..da63a55ca 100755
--- a/gfx/angle/Makefile.in
+++ b/gfx/angle/Makefile.in
@@ -9,6 +9,10 @@ ifdef MOZ_D3DCOMPILER_VISTA_DLL_PATH
 	cp -fp "$(MOZ_D3DCOMPILER_VISTA_DLL_PATH)" "$(DIST)/bin"
 endif
 
+ifdef MOZ_D3DCOMPILER_XP_CAB
+	expand '$(MOZ_D3DCOMPILER_XP_CAB)' -F:$(MOZ_D3DCOMPILER_XP_DLL) '$(DIST)/bin'
+endif
+
 endif
 
 include $(topsrcdir)/config/rules.mk
diff --git a/gfx/angle/moz.build b/gfx/angle/moz.build
index 2a40e0ac6..1da8356a5 100755
--- a/gfx/angle/moz.build
+++ b/gfx/angle/moz.build
@@ -139,6 +139,9 @@ if CONFIG['GNU_CXX']:
             '-Wno-shadow-local',
         ]
 
+if CONFIG['MOZ_DIRECTX_SDK_PATH'] and not CONFIG['MOZ_HAS_WINSDK_WITH_D3D']:
+    LOCAL_INCLUDES += ['%' + '%s/include/' % CONFIG['MOZ_DIRECTX_SDK_PATH']]
+
 DEFINES['_CRT_SECURE_NO_DEPRECATE'] = True
 DEFINES['_HAS_EXCEPTIONS'] = 0
 
diff --git a/gfx/angle/src/libANGLE/moz.build b/gfx/angle/src/libANGLE/moz.build
index e127ccce1..0a2a4437f 100755
--- a/gfx/angle/src/libANGLE/moz.build
+++ b/gfx/angle/src/libANGLE/moz.build
@@ -353,6 +353,9 @@ if CONFIG['GNU_CXX']:
             '-Wno-shadow-local',
         ]
 
+if CONFIG['MOZ_DIRECTX_SDK_PATH'] and not CONFIG['MOZ_HAS_WINSDK_WITH_D3D']:
+    LOCAL_INCLUDES += ['%' + '%s/include/' % CONFIG['MOZ_DIRECTX_SDK_PATH']]
+
 DEFINES['_CRT_SECURE_NO_DEPRECATE'] = True
 DEFINES['_HAS_EXCEPTIONS'] = 0
 
@@ -385,6 +388,11 @@ DEFINES['ANGLE_DEFAULT_D3D11'] = "0"
 
 if CONFIG['MOZ_HAS_WINSDK_WITH_D3D']:
   OS_LIBS += [ 'd3d9', 'dxguid' ]
+else:
+  EXTRA_DSO_LDOPTS += [
+    '\'%s/lib/%s/d3d9.lib\'' % (CONFIG['MOZ_DIRECTX_SDK_PATH'], CONFIG['MOZ_D3D_CPU_SUFFIX']),
+    '\'%s/lib/%s/dxguid.lib\'' % (CONFIG['MOZ_DIRECTX_SDK_PATH'], CONFIG['MOZ_D3D_CPU_SUFFIX']),
+  ]
 
 Library('libANGLE')
 
diff --git a/gfx/angle/src/libEGL/moz.build b/gfx/angle/src/libEGL/moz.build
index c1e33c86e..8e99d44ff 100755
--- a/gfx/angle/src/libEGL/moz.build
+++ b/gfx/angle/src/libEGL/moz.build
@@ -32,6 +32,9 @@ if CONFIG['GNU_CXX']:
             '-Wno-shadow-local',
         ]
 
+if CONFIG['MOZ_DIRECTX_SDK_PATH'] and not CONFIG['MOZ_HAS_WINSDK_WITH_D3D']:
+    LOCAL_INCLUDES += ['%' + '%s/include/' % CONFIG['MOZ_DIRECTX_SDK_PATH']]
+
 DEFINES['_CRT_SECURE_NO_DEPRECATE'] = True
 DEFINES['_HAS_EXCEPTIONS'] = 0
 
@@ -64,6 +67,11 @@ DEFINES['ANGLE_ENABLE_KEYEDMUTEX'] = "1"
 
 if CONFIG['MOZ_HAS_WINSDK_WITH_D3D']:
   OS_LIBS += [ 'd3d9', 'dxguid' ]
+else:
+  EXTRA_DSO_LDOPTS += [
+    '\'%s/lib/%s/d3d9.lib\'' % (CONFIG['MOZ_DIRECTX_SDK_PATH'], CONFIG['MOZ_D3D_CPU_SUFFIX']),
+    '\'%s/lib/%s/dxguid.lib\'' % (CONFIG['MOZ_DIRECTX_SDK_PATH'], CONFIG['MOZ_D3D_CPU_SUFFIX']),
+  ]
 
 
 GeckoSharedLibrary('libEGL', linkage=None)
diff --git a/gfx/angle/src/libGLESv2/moz.build b/gfx/angle/src/libGLESv2/moz.build
index 08c60c213..1d40b3b67 100755
--- a/gfx/angle/src/libGLESv2/moz.build
+++ b/gfx/angle/src/libGLESv2/moz.build
@@ -39,6 +39,9 @@ if CONFIG['GNU_CXX']:
             '-Wno-shadow-local',
         ]
 
+if CONFIG['MOZ_DIRECTX_SDK_PATH'] and not CONFIG['MOZ_HAS_WINSDK_WITH_D3D']:
+    LOCAL_INCLUDES += ['%' + '%s/include/' % CONFIG['MOZ_DIRECTX_SDK_PATH']]
+
 DEFINES['_CRT_SECURE_NO_DEPRECATE'] = True
 DEFINES['_HAS_EXCEPTIONS'] = 0
 
@@ -70,6 +73,11 @@ DEFINES['ANGLE_ENABLE_KEYEDMUTEX'] = "1"
 
 if CONFIG['MOZ_HAS_WINSDK_WITH_D3D']:
   OS_LIBS += [ 'd3d9', 'dxguid' ]
+else:
+  EXTRA_DSO_LDOPTS += [
+    '\'%s/lib/%s/d3d9.lib\'' % (CONFIG['MOZ_DIRECTX_SDK_PATH'], CONFIG['MOZ_D3D_CPU_SUFFIX']),
+    '\'%s/lib/%s/dxguid.lib\'' % (CONFIG['MOZ_DIRECTX_SDK_PATH'], CONFIG['MOZ_D3D_CPU_SUFFIX']),
+  ]
 
 GeckoSharedLibrary('libGLESv2', linkage=None)
 
diff --git a/gfx/cairo/cairo/src/cairo-hash.c b/gfx/cairo/cairo/src/cairo-hash.c
index 81a48a235..a5fa8dd9a 100644
--- a/gfx/cairo/cairo/src/cairo-hash.c
+++ b/gfx/cairo/cairo/src/cairo-hash.c
@@ -59,21 +59,20 @@
 #define ENTRY_IS_DEAD(entry) ((entry) == DEAD_ENTRY)
 #define ENTRY_IS_LIVE(entry) ((entry) >  DEAD_ENTRY)
 
-/* We expect keys will not be destroyed frequently, so our table does not
- * contain any explicit shrinking code nor any chain-coalescing code for
- * entries randomly deleted by memory pressure (except during rehashing, of
- * course). These assumptions are potentially bad, but they make the
- * implementation straightforward.
- *
- * Revisit later if evidence appears that we're using excessive memory from
- * a mostly-dead table.
- *
- * This table is open-addressed with double hashing. Each table size is a
- * prime chosen to be a little more than double the high water mark for a
- * given arrangement, so the tables should remain < 50% full. The table
- * size makes for the "first" hash modulus; a second prime (2 less than the
- * first prime) serves as the "second" hash modulus, which is co-prime and
- * thus guarantees a complete permutation of table indices.
+/*
+ * This table is open-addressed with double hashing. Each table size
+ * is a prime and it makes for the "first" hash modulus; a second
+ * prime (2 less than the first prime) serves as the "second" hash
+ * modulus, which is smaller and thus guarantees a complete
+ * permutation of table indices.
+ *
+ * Hash tables are rehashed in order to keep between 12.5% and 50%
+ * entries in the hash table alive and at least 25% free. When table
+ * size is changed, the new table has about 25% live elements.
+ *
+ * The free entries guarantee an expected constant-time lookup.
+ * Doubling/halving the table in the described fashion guarantees
+ * amortized O(1) insertion/removal.
  *
  * This structure, and accompanying table, is borrowed/modified from the
  * file xserver/render/glyph.c in the freedesktop.org x server, with
@@ -124,6 +123,7 @@ struct _cairo_hash_table {
     cairo_hash_entry_t **entries;
 
     unsigned long live_entries;
+    unsigned long free_entries;
     unsigned long iterating;   /* Iterating, no insert, no resize */
 };
 
@@ -167,6 +167,7 @@ _cairo_hash_table_create (cairo_hash_keys_equal_func_t keys_equal)
     }
 
     hash_table->live_entries = 0;
+    hash_table->free_entries = hash_table->arrangement->size;
     hash_table->iterating = 0;
 
     return hash_table;
@@ -236,44 +237,54 @@ _cairo_hash_table_lookup_unique_key (cairo_hash_table_t *hash_table,
 }
 
 /**
- * _cairo_hash_table_resize:
+ * _cairo_hash_table_manage:
  * @hash_table: a hash table
  *
  * Resize the hash table if the number of entries has gotten much
  * bigger or smaller than the ideal number of entries for the current
- * size.
+ * size and guarantee some free entries to be used as lookup
+ * termination points.
  *
  * Return value: %CAIRO_STATUS_SUCCESS if successful or
  * %CAIRO_STATUS_NO_MEMORY if out of memory.
  **/
 static cairo_status_t
-_cairo_hash_table_resize (cairo_hash_table_t *hash_table)
+_cairo_hash_table_manage (cairo_hash_table_t *hash_table)
 {
     cairo_hash_table_t tmp;
     unsigned long new_size, i;
 
-    /* This keeps the hash table between 25% and 50% full. */
-    unsigned long high = hash_table->arrangement->high_water_mark;
-    unsigned long low = high >> 2;
-
-    if (hash_table->live_entries >= low && hash_table->live_entries <= high)
-	return CAIRO_STATUS_SUCCESS;
+    /* Keep between 12.5% and 50% entries in the hash table alive and
+     * at least 25% free. */
+     unsigned long live_high = hash_table->arrangement->size >> 1;
+     unsigned long live_low = live_high >> 2;
+     unsigned long free_low = live_high >> 1;
 
     tmp = *hash_table;
 
-    if (hash_table->live_entries > high)
+    if (hash_table->live_entries > live_high)
     {
 	tmp.arrangement = hash_table->arrangement + 1;
 	/* This code is being abused if we can't make a table big enough. */
 	assert (tmp.arrangement - hash_table_arrangements <
 		NUM_HASH_TABLE_ARRANGEMENTS);
     }
-    else /* hash_table->live_entries < low */
+    else if (hash_table->live_entries < live_low)
     {
 	/* Can't shrink if we're at the smallest size */
 	if (hash_table->arrangement == &hash_table_arrangements[0])
-	    return CAIRO_STATUS_SUCCESS;
-	tmp.arrangement = hash_table->arrangement - 1;
+        tmp.arrangement = hash_table->arrangement;
+    else
+        tmp.arrangement = hash_table->arrangement - 1;
+    }
+
+    if (tmp.arrangement == hash_table->arrangement &&
+        hash_table->free_entries > free_low)
+    {
+    /* The number of live entries is within the desired bounds
+     * (we're not going to resize the table) and we have enough
+     * free entries. Do nothing. */
+        return CAIRO_STATUS_SUCCESS;
     }
 
     new_size = tmp.arrangement->size;
@@ -291,6 +302,7 @@ _cairo_hash_table_resize (cairo_hash_table_t *hash_table)
     free (hash_table->entries);
     hash_table->entries = tmp.entries;
     hash_table->arrangement = tmp.arrangement;
+    hash_table->free_entries = new_size - hash_table->live_entries;
 
     return CAIRO_STATUS_SUCCESS;
 }
@@ -340,6 +352,7 @@ _cairo_hash_table_lookup (cairo_hash_table_t *hash_table,
 	    return NULL;
     } while (++i < table_size);
 
+    ASSERT_NOT_REACHED;
     return NULL;
 }
 
@@ -421,21 +434,23 @@ cairo_status_t
 _cairo_hash_table_insert (cairo_hash_table_t *hash_table,
 			  cairo_hash_entry_t *key_and_value)
 {
+    cairo_hash_entry_t **entry;
     cairo_status_t status;
 
     /* Insert is illegal while an iterator is running. */
     assert (hash_table->iterating == 0);
 
-    hash_table->live_entries++;
-    status = _cairo_hash_table_resize (hash_table);
-    if (unlikely (status)) {
-	/* abort the insert... */
-	hash_table->live_entries--;
+    status = _cairo_hash_table_manage (hash_table);
+    if (unlikely (status))
 	return status;
-    }
 
-    *_cairo_hash_table_lookup_unique_key (hash_table,
-					  key_and_value) = key_and_value;
+    entry = _cairo_hash_table_lookup_unique_key (hash_table, key_and_value);
+
+    if (ENTRY_IS_FREE (*entry))
+        hash_table->free_entries--;
+
+    *entry = key_and_value;
+    hash_table->live_entries++;
 
     return CAIRO_STATUS_SUCCESS;
 }
@@ -496,7 +511,7 @@ _cairo_hash_table_remove (cairo_hash_table_t *hash_table,
 	 * memory to shrink the hash table. It does leave the table in a
 	 * consistent state, and we've already succeeded in removing the
 	 * entry, so we don't examine the failure status of this call. */
-	_cairo_hash_table_resize (hash_table);
+	_cairo_hash_table_manage (hash_table);
     }
 }
 
@@ -537,6 +552,6 @@ _cairo_hash_table_foreach (cairo_hash_table_t	      *hash_table,
     if (--hash_table->iterating == 0) {
 	/* Should we fail to shrink the hash table, it is left unaltered,
 	 * and we don't need to propagate the error status. */
-	_cairo_hash_table_resize (hash_table);
+	_cairo_hash_table_manage (hash_table);
     }
 }
diff --git a/gfx/cairo/cairo/src/cairo-mutex-impl-private.h b/gfx/cairo/cairo/src/cairo-mutex-impl-private.h
index 6c67f6ebb..25223f3ea 100644
--- a/gfx/cairo/cairo/src/cairo-mutex-impl-private.h
+++ b/gfx/cairo/cairo/src/cairo-mutex-impl-private.h
@@ -36,7 +36,6 @@
  *	Carl D. Worth <cworth@cworth.org>
  *	Mathias Hasselmann <mathias.hasselmann@gmx.de>
  *	Behdad Esfahbod <behdad@behdad.org>
- *  Mark Straver <moonchild@palemoon.org>
  */
 
 #ifndef CAIRO_MUTEX_IMPL_PRIVATE_H
@@ -179,24 +178,24 @@
 #elif defined(_WIN32) /******************************************************/
 
 #define WIN32_LEAN_AND_MEAN
-/* We require Windows 7 features */
-#if !defined(WINVER) || (WINVER < 0x0601)
-# define WINVER 0x0601
+/* We require Windows 2000 features such as ETO_PDY */
+#if !defined(WINVER) || (WINVER < 0x0500)
+# define WINVER 0x0500
 #endif
-#if !defined(_WIN32_WINNT) || (_WIN32_WINNT < 0x0601)
-# define _WIN32_WINNT 0x0601
+#if !defined(_WIN32_WINNT) || (_WIN32_WINNT < 0x0500)
+# define _WIN32_WINNT 0x0500
 #endif
 
 # include <windows.h>
 
-  typedef SRWLOCK cairo_mutex_impl_t;
+  typedef CRITICAL_SECTION cairo_mutex_impl_t;
 
 # define CAIRO_MUTEX_IMPL_WIN32 1
-# define CAIRO_MUTEX_IMPL_LOCK(mutex) AcquireSRWLockExclusive (&(mutex))
-# define CAIRO_MUTEX_IMPL_UNLOCK(mutex) ReleaseSRWLockExclusive (&(mutex))
-# define CAIRO_MUTEX_IMPL_INIT(mutex) InitializeSRWLock (&(mutex))
-# define CAIRO_MUTEX_IMPL_FINI(mutex) CAIRO_MUTEX_IMPL_NOOP
-# define CAIRO_MUTEX_IMPL_NIL_INITIALIZER SRWLOCK_INIT
+# define CAIRO_MUTEX_IMPL_LOCK(mutex) EnterCriticalSection (&(mutex))
+# define CAIRO_MUTEX_IMPL_UNLOCK(mutex) LeaveCriticalSection (&(mutex))
+# define CAIRO_MUTEX_IMPL_INIT(mutex) InitializeCriticalSection (&(mutex))
+# define CAIRO_MUTEX_IMPL_FINI(mutex) DeleteCriticalSection (&(mutex))
+# define CAIRO_MUTEX_IMPL_NIL_INITIALIZER { NULL, 0, 0, NULL, NULL, 0 }
 
 #elif defined __OS2__ /******************************************************/
 
diff --git a/gfx/gl/moz.build b/gfx/gl/moz.build
index 6f43a495d..596612bb8 100644
--- a/gfx/gl/moz.build
+++ b/gfx/gl/moz.build
@@ -150,6 +150,8 @@ FINAL_LIBRARY = 'xul'
 
 if CONFIG['MOZ_D3DCOMPILER_VISTA_DLL']:
     DEFINES['MOZ_D3DCOMPILER_VISTA_DLL'] = CONFIG['MOZ_D3DCOMPILER_VISTA_DLL']
+if CONFIG['MOZ_D3DCOMPILER_XP_DLL']:
+    DEFINES['MOZ_D3DCOMPILER_XP_DLL'] = CONFIG['MOZ_D3DCOMPILER_XP_DLL']
 
 CXXFLAGS += CONFIG['MOZ_CAIRO_CFLAGS']
 CXXFLAGS += CONFIG['TK_CFLAGS']
diff --git a/gfx/thebes/gfxGDIFont.cpp b/gfx/thebes/gfxGDIFont.cpp
index d6e98105c..e6ceeaf6d 100644
--- a/gfx/thebes/gfxGDIFont.cpp
+++ b/gfx/thebes/gfxGDIFont.cpp
@@ -461,7 +461,8 @@ gfxGDIFont::FillLogFont(LOGFONTW& aLogFont, gfxFloat aSize,
         weight = mNeedsBold ? 700 : fe->Weight();
     }
 
-    fe->FillLogFont(&aLogFont, weight, aSize);
+    fe->FillLogFont(&aLogFont, weight, aSize, 
+                    (mAntialiasOption == kAntialiasSubpixel) ? true : false);
 
     // If GDI synthetic italic is wanted, force the lfItalic field to true
     if (aUseGDIFakeItalic) {
diff --git a/gfx/thebes/gfxGDIFontList.cpp b/gfx/thebes/gfxGDIFontList.cpp
index cc047ef38..d80c49356 100644
--- a/gfx/thebes/gfxGDIFontList.cpp
+++ b/gfx/thebes/gfxGDIFontList.cpp
@@ -37,6 +37,11 @@ using namespace mozilla;
 
 #define ROUND(x) floor((x) + 0.5)
 
+
+#ifndef CLEARTYPE_QUALITY
+#define CLEARTYPE_QUALITY 5
+#endif
+
 #define LOG_FONTLIST(args) MOZ_LOG(gfxPlatform::GetLog(eGfxLog_fontlist), \
                                LogLevel::Debug, args)
 #define LOG_FONTLIST_ENABLED() MOZ_LOG_TEST( \
@@ -217,7 +222,16 @@ GDIFontEntry::IsSymbolFont()
 gfxFont *
 GDIFontEntry::CreateFontInstance(const gfxFontStyle* aFontStyle, bool aNeedsBold)
 {
-    return new gfxGDIFont(this, aFontStyle, aNeedsBold);
+    bool isXP = !IsVistaOrLater();
+
+    bool useClearType = isXP && !aFontStyle->systemFont &&
+        (gfxWindowsPlatform::GetPlatform()->UseClearTypeAlways() ||
+         (mIsDataUserFont &&
+          gfxWindowsPlatform::GetPlatform()->UseClearTypeForDownloadableFonts()));
+
+    return new gfxGDIFont(this, aFontStyle, aNeedsBold, 
+                          (useClearType ? gfxFont::kAntialiasSubpixel
+                                        : gfxFont::kAntialiasDefault));
 }
 
 nsresult
@@ -249,7 +263,8 @@ GDIFontEntry::CopyFontTable(uint32_t aTableTag, nsTArray<uint8_t>& aBuffer)
 
 void
 GDIFontEntry::FillLogFont(LOGFONTW *aLogFont,
-                          uint16_t aWeight, gfxFloat aSize)
+                          uint16_t aWeight, gfxFloat aSize,
+                          bool aUseCleartype)
 {
     memcpy(aLogFont, &mLogFont, sizeof(LOGFONTW));
 
@@ -275,6 +290,8 @@ GDIFontEntry::FillLogFont(LOGFONTW *aLogFont,
     if (mIsDataUserFont) {
         aLogFont->lfItalic = 0;
     }
+
+    aLogFont->lfQuality = (aUseCleartype ? CLEARTYPE_QUALITY : DEFAULT_QUALITY);
 }
 
 #define MISSING_GLYPH 0x1F // glyph index returned for missing characters
@@ -862,8 +879,15 @@ gfxGDIFontList::MakePlatformFont(const nsAString& aFontName,
         gfxWindowsFontType(isCFF ? GFX_FONT_TYPE_PS_OPENTYPE : GFX_FONT_TYPE_TRUETYPE) /*type*/,
         aStyle, w, aStretch, winUserFontData, false);
 
-    if (fe) {
-      fe->mIsDataUserFont = true;
+    if (!fe)
+        return fe;
+
+    fe->mIsDataUserFont = true;
+
+    // Uniscribe doesn't place CFF fonts loaded privately
+    // via AddFontMemResourceEx on XP/Vista
+    if (isCFF && !IsWin7OrLater()) {
+        fe->mForceGDI = true;
     }
 
     return fe;
diff --git a/gfx/thebes/gfxGDIFontList.h b/gfx/thebes/gfxGDIFontList.h
index 60fb292e8..ffb513d64 100644
--- a/gfx/thebes/gfxGDIFontList.h
+++ b/gfx/thebes/gfxGDIFontList.h
@@ -112,7 +112,8 @@ public:
 
     virtual bool IsSymbolFont();
 
-    void FillLogFont(LOGFONTW *aLogFont, uint16_t aWeight, gfxFloat aSize);
+    void FillLogFont(LOGFONTW *aLogFont, uint16_t aWeight, gfxFloat aSize,
+                     bool aUseCleartype);
 
     static gfxWindowsFontType DetermineFontType(const NEWTEXTMETRICW& metrics, 
                                                 DWORD fontType)
diff --git a/gfx/thebes/gfxWindowsPlatform.cpp b/gfx/thebes/gfxWindowsPlatform.cpp
index af4d932a9..94b9be139 100755
--- a/gfx/thebes/gfxWindowsPlatform.cpp
+++ b/gfx/thebes/gfxWindowsPlatform.cpp
@@ -146,6 +146,9 @@ public:
 
 NS_IMPL_ISUPPORTS(GfxD2DVramReporter, nsIMemoryReporter)
 
+#define GFX_USE_CLEARTYPE_ALWAYS "gfx.font_rendering.cleartype.always_use_for_content"
+#define GFX_DOWNLOADABLE_FONTS_USE_CLEARTYPE "gfx.font_rendering.cleartype.use_for_downloadable_fonts"
+
 #define GFX_CLEARTYPE_PARAMS           "gfx.font_rendering.cleartype_params."
 #define GFX_CLEARTYPE_PARAMS_GAMMA     "gfx.font_rendering.cleartype_params.gamma"
 #define GFX_CLEARTYPE_PARAMS_CONTRAST  "gfx.font_rendering.cleartype_params.enhanced_contrast"
@@ -191,6 +194,10 @@ public:
         HMODULE gdi32Handle;
         PFND3DKMTQS queryD3DKMTStatistics = nullptr;
 
+        // GPU memory reporting is not available before Windows 7
+        if (!IsWin7OrLater())
+            return NS_OK;
+
         if ((gdi32Handle = LoadLibrary(TEXT("gdi32.dll"))))
             queryD3DKMTStatistics = (PFND3DKMTQS)GetProcAddress(gdi32Handle, "D3DKMTQueryStatistics");
 
@@ -313,6 +320,9 @@ NS_IMPL_ISUPPORTS(D3DSharedTexturesReporter, nsIMemoryReporter)
 gfxWindowsPlatform::gfxWindowsPlatform()
   : mRenderMode(RENDER_GDI)
 {
+  mUseClearTypeForDownloadableFonts = UNINITIALIZED_VALUE;
+  mUseClearTypeAlways = UNINITIALIZED_VALUE;
+
   /*
    * Initialize COM
    */
@@ -392,6 +402,10 @@ gfxWindowsPlatform::CanUseHardwareVideoDecoding()
 bool
 gfxWindowsPlatform::InitDWriteSupport()
 {
+  if (!IsVistaOrLater()) {
+    return false;
+  }
+
   // DWrite is only supported on Windows 7 with the platform update and higher.
   // We check this by seeing if D2D1 support is available.
   if (!Factory::SupportsD2D1()) {
@@ -983,6 +997,26 @@ gfxWindowsPlatform::GetPlatformCMSOutputProfile(void* &mem, size_t &mem_size)
 #endif // _WIN32
 }
 
+bool
+gfxWindowsPlatform::UseClearTypeForDownloadableFonts()
+{
+    if (mUseClearTypeForDownloadableFonts == UNINITIALIZED_VALUE) {
+        mUseClearTypeForDownloadableFonts = Preferences::GetBool(GFX_DOWNLOADABLE_FONTS_USE_CLEARTYPE, true);
+    }
+
+    return mUseClearTypeForDownloadableFonts;
+}
+
+bool
+gfxWindowsPlatform::UseClearTypeAlways()
+{
+    if (mUseClearTypeAlways == UNINITIALIZED_VALUE) {
+        mUseClearTypeAlways = Preferences::GetBool(GFX_USE_CLEARTYPE_ALWAYS, false);
+    }
+
+    return mUseClearTypeAlways;
+}
+
 void
 gfxWindowsPlatform::GetDLLVersion(char16ptr_t aDLLPath, nsAString& aVersion)
 {
@@ -1126,7 +1160,14 @@ gfxWindowsPlatform::FontsPrefsChanged(const char *aPref)
 
     gfxPlatform::FontsPrefsChanged(aPref);
 
-    if (aPref && !strncmp(GFX_CLEARTYPE_PARAMS, aPref, strlen(GFX_CLEARTYPE_PARAMS))) {
+    if (!aPref) {
+        mUseClearTypeForDownloadableFonts = UNINITIALIZED_VALUE;
+        mUseClearTypeAlways = UNINITIALIZED_VALUE;
+    } else if (!strcmp(GFX_DOWNLOADABLE_FONTS_USE_CLEARTYPE, aPref)) {
+        mUseClearTypeForDownloadableFonts = UNINITIALIZED_VALUE;
+    } else if (!strcmp(GFX_USE_CLEARTYPE_ALWAYS, aPref)) {
+        mUseClearTypeAlways = UNINITIALIZED_VALUE;
+    } else if (!strncmp(GFX_CLEARTYPE_PARAMS, aPref, strlen(GFX_CLEARTYPE_PARAMS))) {
         SetupClearTypeParams();
     } else {
         clearTextFontCaches = false;
@@ -1374,13 +1415,17 @@ gfxWindowsPlatform::InitializeD3D9Config()
     return;
   }
 
-  d3d9.SetDefaultFromPref(
-    gfxPrefs::GetLayersAllowD3D9FallbackPrefName(),
-    true,
-    gfxPrefs::GetLayersAllowD3D9FallbackPrefDefault());
+  if (!IsVistaOrLater()) {
+    d3d9.EnableByDefault();
+  } else {
+    d3d9.SetDefaultFromPref(
+      gfxPrefs::GetLayersAllowD3D9FallbackPrefName(),
+      true,
+      gfxPrefs::GetLayersAllowD3D9FallbackPrefDefault());
 
-  if (!d3d9.IsEnabled() && gfxPrefs::LayersPreferD3D9()) {
-    d3d9.UserEnable("Direct3D9 enabled via layers.prefer-d3d9");
+    if (!d3d9.IsEnabled() && gfxPrefs::LayersPreferD3D9()) {
+      d3d9.UserEnable("Direct3D9 enabled via layers.prefer-d3d9");
+    }
   }
 
   nsCString message;
@@ -1551,6 +1596,11 @@ gfxWindowsPlatform::InitializeD2DConfig()
                           NS_LITERAL_CSTRING("FEATURE_FAILURE_D2D_D3D11_COMP"));
     return;
   }
+  if (!IsVistaOrLater()) {
+    d2d1.DisableByDefault(FeatureStatus::Unavailable, "Direct2D is not available on Windows XP",
+                          NS_LITERAL_CSTRING("FEATURE_FAILURE_D2D_XP"));
+    return;
+  }
 
   d2d1.SetDefaultFromPref(
     gfxPrefs::GetDirect2DDisabledPrefName(),
@@ -1642,12 +1692,14 @@ gfxWindowsPlatform::InitGPUProcessSupport()
       "Not using GPU Process since D3D11 is unavailable",
       NS_LITERAL_CSTRING("FEATURE_FAILURE_NO_D3D11"));
   } else if (!IsWin7SP1OrLater()) {
-    // On Windows 7 Pre-SP1, DXGI 1.2 is not available and remote presentation
-    // for D3D11 will not work. Rather than take a regression and use D3D9, we
-    // revert back to in-process rendering.
+    // For Windows XP, we simply don't care enough to support this
+    // configuration. On Windows Vista and 7 Pre-SP1, DXGI 1.2 is not
+    // available and remote presentation for D3D11 will not work. Rather
+    // than take a regression and use D3D9, we revert back to in-process
+    // rendering.
     gpuProc.Disable(
       FeatureStatus::Unavailable,
-      "Windows 7 Pre-SP1 cannot use the GPU process",
+      "Windows XP, Vista, and 7 Pre-SP1 cannot use the GPU process",
       NS_LITERAL_CSTRING("FEATURE_FAILURE_OLD_WINDOWS"));
   } else if (!IsWin8OrLater()) {
     // Windows 7 SP1 can have DXGI 1.2 only via the Platform Update, so we
@@ -1670,10 +1722,14 @@ gfxWindowsPlatform::InitGPUProcessSupport()
 bool
 gfxWindowsPlatform::DwmCompositionEnabled()
 {
-  MOZ_ASSERT(WinUtils::dwmIsCompositionEnabledPtr);
+  if (!IsVistaOrLater()) {
+    return false;
+  }
+
+  //MOZ_ASSERT(WinUtils::dwmIsCompositionEnabledPtr);
   BOOL dwmEnabled = false;
 
-  if (FAILED(WinUtils::dwmIsCompositionEnabledPtr(&dwmEnabled))) {
+  if (!WinUtils::dwmIsCompositionEnabledPtr || FAILED(WinUtils::dwmIsCompositionEnabledPtr(&dwmEnabled))) {
     return false;
   }
 
diff --git a/gfx/thebes/gfxWindowsPlatform.h b/gfx/thebes/gfxWindowsPlatform.h
index f77d9a87a..8db7cf575 100644
--- a/gfx/thebes/gfxWindowsPlatform.h
+++ b/gfx/thebes/gfxWindowsPlatform.h
@@ -184,6 +184,11 @@ public:
 
     mozilla::gfx::BackendType GetContentBackendFor(mozilla::layers::LayersBackend aLayers) override;
 
+    // ClearType is not always enabled even when available (e.g. Windows XP)
+    // if either of these prefs are enabled and apply, use ClearType rendering
+    bool UseClearTypeForDownloadableFonts();
+    bool UseClearTypeAlways();
+
     static void GetDLLVersion(char16ptr_t aDLLPath, nsAString& aVersion);
 
     // returns ClearType tuning information for each display
@@ -242,6 +247,9 @@ protected:
 protected:
     RenderMode mRenderMode;
 
+    int8_t mUseClearTypeForDownloadableFonts;
+    int8_t mUseClearTypeAlways;
+
 private:
     void Init();
     void InitAcceleration() override;
diff --git a/hal/windows/WindowsBattery.cpp b/hal/windows/WindowsBattery.cpp
index 520330242..c1b9a31e6 100644
--- a/hal/windows/WindowsBattery.cpp
+++ b/hal/windows/WindowsBattery.cpp
@@ -5,20 +5,45 @@
 
 #include "Hal.h"
 #include "HalImpl.h"
+#include "nsITimer.h"
 #include "mozilla/Preferences.h"
 #include "mozilla/dom/battery/Constants.h"
+#include "nsComponentManagerUtils.h"
 
 #include <windows.h>
+#include "mozilla/WindowsVersion.h"
 
 using namespace mozilla::dom::battery;
 
 namespace mozilla {
 namespace hal_impl {
 
+static nsCOMPtr<nsITimer> sUpdateTimer;
+
+/* Power Event API is Vista or later */
+static decltype(RegisterPowerSettingNotification)* sRegisterPowerSettingNotification = nullptr;
+static decltype(UnregisterPowerSettingNotification)* sUnregisterPowerSettingNotification = nullptr;
 static HPOWERNOTIFY sPowerHandle = nullptr;
 static HPOWERNOTIFY sCapacityHandle = nullptr;
 static HWND sHWnd = nullptr;
 
+static void
+UpdateHandler(nsITimer* aTimer, void* aClosure) {
+  NS_ASSERTION(!IsVistaOrLater(),
+               "We shouldn't call this function for Vista or later version!");
+
+  static hal::BatteryInformation sLastInfo;
+  hal::BatteryInformation currentInfo;
+
+  hal_impl::GetCurrentBatteryInformation(&currentInfo);
+  if (sLastInfo.level() != currentInfo.level() ||
+      sLastInfo.charging() != currentInfo.charging() ||
+      sLastInfo.remainingTime() != currentInfo.remainingTime()) {
+    hal::NotifyBatteryChange(currentInfo);
+    sLastInfo = currentInfo;
+  }
+}
+
 static
 LRESULT CALLBACK
 BatteryWindowProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) {
@@ -38,56 +63,94 @@ BatteryWindowProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) {
 void
 EnableBatteryNotifications()
 {
-  // Create custom window to watch battery event
-  // If we can get Gecko's window handle, this is unnecessary.
-
-  if (sHWnd == nullptr) {
-    WNDCLASSW wc;
-    HMODULE hSelf = GetModuleHandle(nullptr);
-
-    if (!GetClassInfoW(hSelf, L"MozillaBatteryClass", &wc)) {
-      ZeroMemory(&wc, sizeof(WNDCLASSW));
-      wc.hInstance = hSelf;
-      wc.lpfnWndProc = BatteryWindowProc;
-      wc.lpszClassName = L"MozillaBatteryClass";
-      RegisterClassW(&wc);
+  if (IsVistaOrLater()) {
+    // RegisterPowerSettingNotification is from Vista or later.
+    // Use this API if available.
+    HMODULE hUser32 = GetModuleHandleW(L"USER32.DLL");
+    if (!sRegisterPowerSettingNotification)
+      sRegisterPowerSettingNotification = (decltype(RegisterPowerSettingNotification)*)
+        GetProcAddress(hUser32, "RegisterPowerSettingNotification");
+    if (!sUnregisterPowerSettingNotification)
+      sUnregisterPowerSettingNotification = (decltype(UnregisterPowerSettingNotification)*)
+        GetProcAddress(hUser32, "UnregisterPowerSettingNotification");
+
+    if (!sRegisterPowerSettingNotification ||
+        !sUnregisterPowerSettingNotification) {
+      NS_ASSERTION(false, "Canot find PowerSettingNotification functions.");
+      return;
     }
 
-    sHWnd = CreateWindowW(L"MozillaBatteryClass", L"Battery Watcher",
-                          0, 0, 0, 0, 0,
-                          nullptr, nullptr, hSelf, nullptr);
-  }
+    // Create custom window to watch battery event
+    // If we can get Gecko's window handle, this is unnecessary.
 
-  if (sHWnd == nullptr) {
-    return;
-  }
+    if (sHWnd == nullptr) {
+      WNDCLASSW wc;
+      HMODULE hSelf = GetModuleHandle(nullptr);
+
+      if (!GetClassInfoW(hSelf, L"MozillaBatteryClass", &wc)) {
+        ZeroMemory(&wc, sizeof(WNDCLASSW));
+        wc.hInstance = hSelf;
+        wc.lpfnWndProc = BatteryWindowProc;
+        wc.lpszClassName = L"MozillaBatteryClass";
+        RegisterClassW(&wc);
+      }
 
-  sPowerHandle =
-    RegisterPowerSettingNotification(sHWnd,
-                                     &GUID_ACDC_POWER_SOURCE,
-                                     DEVICE_NOTIFY_WINDOW_HANDLE);
-  sCapacityHandle =
-    RegisterPowerSettingNotification(sHWnd,
-                                     &GUID_BATTERY_PERCENTAGE_REMAINING,
-                                     DEVICE_NOTIFY_WINDOW_HANDLE);
+      sHWnd = CreateWindowW(L"MozillaBatteryClass", L"Battery Watcher",
+                            0, 0, 0, 0, 0,
+                            nullptr, nullptr, hSelf, nullptr);
+    }
+
+    if (sHWnd == nullptr) {
+      return;
+    }
+
+    sPowerHandle =
+      sRegisterPowerSettingNotification(sHWnd,
+                                        &GUID_ACDC_POWER_SOURCE,
+                                        DEVICE_NOTIFY_WINDOW_HANDLE);
+    sCapacityHandle =
+      sRegisterPowerSettingNotification(sHWnd,
+                                        &GUID_BATTERY_PERCENTAGE_REMAINING,
+                                        DEVICE_NOTIFY_WINDOW_HANDLE);
+  } else
+  {
+    // for Windows XP.  If we remove Windows XP support,
+    // we should remove timer-based power notification
+    sUpdateTimer = do_CreateInstance(NS_TIMER_CONTRACTID);
+    if (sUpdateTimer) {
+      sUpdateTimer->InitWithFuncCallback(UpdateHandler,
+                                         nullptr,
+                                         Preferences::GetInt("dom.battery.timer",
+                                                             30000 /* 30s */),
+                                         nsITimer::TYPE_REPEATING_SLACK);
+    } 
+  }
 }
 
 void
 DisableBatteryNotifications()
 {
-  if (sPowerHandle) {
-    UnregisterPowerSettingNotification(sPowerHandle);
-    sPowerHandle = nullptr;
-  }
+  if (IsVistaOrLater()) {
+    if (sPowerHandle) {
+      sUnregisterPowerSettingNotification(sPowerHandle);
+      sPowerHandle = nullptr;
+    }
 
-  if (sCapacityHandle) {
-    UnregisterPowerSettingNotification(sCapacityHandle);
-    sCapacityHandle = nullptr;
-  }
+    if (sCapacityHandle) {
+      sUnregisterPowerSettingNotification(sCapacityHandle);
+      sCapacityHandle = nullptr;
+    }
 
-  if (sHWnd) {
-    DestroyWindow(sHWnd);
-    sHWnd = nullptr;
+    if (sHWnd) {
+      DestroyWindow(sHWnd);
+      sHWnd = nullptr;
+    }
+  } else
+  {
+    if (sUpdateTimer) {
+      sUpdateTimer->Cancel();
+      sUpdateTimer = nullptr;
+    }
   }
 }
 
diff --git a/image/decoders/icon/win/nsIconChannel.cpp b/image/decoders/icon/win/nsIconChannel.cpp
index 04680627a..9ddcbbc48 100644
--- a/image/decoders/icon/win/nsIconChannel.cpp
+++ b/image/decoders/icon/win/nsIconChannel.cpp
@@ -29,6 +29,11 @@
 #include "nsContentSecurityManager.h"
 #include "nsContentUtils.h"
 
+#ifdef _WIN32_WINNT
+#undef _WIN32_WINNT
+#endif
+#define _WIN32_WINNT 0x0600
+
 // we need windows.h to read out registry information...
 #include <windows.h>
 #include <shellapi.h>
@@ -411,27 +416,41 @@ nsIconChannel::GetStockHIcon(nsIMozIconURI* aIconURI,
 {
   nsresult rv = NS_OK;
 
-  uint32_t desiredImageSize;
-  aIconURI->GetImageSize(&desiredImageSize);
-  nsAutoCString stockIcon;
-  aIconURI->GetStockIcon(stockIcon);
-
-  SHSTOCKICONID stockIconID = GetStockIconIDForName(stockIcon);
-  if (stockIconID == SIID_INVALID) {
-    return NS_ERROR_NOT_AVAILABLE;
-  }
+  // We can only do this on Vista or above
+  HMODULE hShellDLL = ::LoadLibraryW(L"shell32.dll");
+  decltype(SHGetStockIconInfo)* pSHGetStockIconInfo =
+    (decltype(SHGetStockIconInfo)*) ::GetProcAddress(hShellDLL,
+                                                    "SHGetStockIconInfo");
+
+  if (pSHGetStockIconInfo) {
+    uint32_t desiredImageSize;
+    aIconURI->GetImageSize(&desiredImageSize);
+    nsAutoCString stockIcon;
+    aIconURI->GetStockIcon(stockIcon);
+
+    SHSTOCKICONID stockIconID = GetStockIconIDForName(stockIcon);
+    if (stockIconID == SIID_INVALID) {
+      return NS_ERROR_NOT_AVAILABLE;
+    }
 
-  UINT infoFlags = SHGSI_ICON;
-  infoFlags |= GetSizeInfoFlag(desiredImageSize);
+    UINT infoFlags = SHGSI_ICON;
+    infoFlags |= GetSizeInfoFlag(desiredImageSize);
 
-  SHSTOCKICONINFO sii = {0};
-  sii.cbSize = sizeof(sii);
-  HRESULT hr = SHGetStockIconInfo(stockIconID, infoFlags, &sii);
+    SHSTOCKICONINFO sii = {0};
+    sii.cbSize = sizeof(sii);
+    HRESULT hr = pSHGetStockIconInfo(stockIconID, infoFlags, &sii);
 
-  if (SUCCEEDED(hr)) {
-    *hIcon = sii.hIcon;
+    if (SUCCEEDED(hr)) {
+      *hIcon = sii.hIcon;
+    } else {
+      rv = NS_ERROR_FAILURE;
+    }
   } else {
-    rv = NS_ERROR_FAILURE;
+    rv = NS_ERROR_NOT_AVAILABLE;
+  }
+
+  if (hShellDLL) {
+    ::FreeLibrary(hShellDLL);
   }
 
   return rv;
diff --git a/ipc/app/plugin-container.exe.manifest b/ipc/app/plugin-container.exe.manifest
index 303109523..d61ddec1a 100644
--- a/ipc/app/plugin-container.exe.manifest
+++ b/ipc/app/plugin-container.exe.manifest
@@ -37,6 +37,7 @@
       <supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}"/>
       <supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}"/>
       <supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"/>
+      <supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}"/>
     </application>
   </compatibility>
 </assembly>
diff --git a/ipc/chromium/src/base/process_util_win.cc b/ipc/chromium/src/base/process_util_win.cc
index f22f7216f..12fbc23a5 100644
--- a/ipc/chromium/src/base/process_util_win.cc
+++ b/ipc/chromium/src/base/process_util_win.cc
@@ -297,6 +297,43 @@ bool LaunchApp(const std::wstring& cmdline,
   startup_info.wShowWindow = start_hidden ? SW_HIDE : SW_SHOW;
 
   LPPROC_THREAD_ATTRIBUTE_LIST lpAttributeList = NULL;
+  // Don't even bother trying pre-Vista...
+  if (mozilla::IsVistaOrLater()) {
+    // setup our handle array first - if we end up with no handles that can
+    // be inherited we can avoid trying to do the ThreadAttributeList dance...
+    HANDLE handlesToInherit[2];
+    int handleCount = 0;
+    HANDLE stdOut = ::GetStdHandle(STD_OUTPUT_HANDLE);
+    HANDLE stdErr = ::GetStdHandle(STD_ERROR_HANDLE);
+
+    if (IsInheritableHandle(stdOut))
+      handlesToInherit[handleCount++] = stdOut;
+    if (stdErr != stdOut && IsInheritableHandle(stdErr))
+      handlesToInherit[handleCount++] = stdErr;
+
+    if (handleCount) {
+      lpAttributeList = CreateThreadAttributeList(handlesToInherit, handleCount);
+      if (lpAttributeList) {
+        // it's safe to inherit handles, so arrange for that...
+        startup_info.cb = sizeof(startup_info_ex);
+        startup_info.dwFlags |= STARTF_USESTDHANDLES;
+        startup_info.hStdOutput = stdOut;
+        startup_info.hStdError = stdErr;
+        startup_info.hStdInput = INVALID_HANDLE_VALUE;
+        startup_info_ex.lpAttributeList = lpAttributeList;
+        dwCreationFlags |= EXTENDED_STARTUPINFO_PRESENT;
+        bInheritHandles = TRUE;
+      }
+    }
+  } else if (PR_GetEnv("MOZ_WIN_INHERIT_STD_HANDLES_PRE_VISTA")) {
+    // Even if we can't limit what gets inherited, we sometimes want to inherit
+    // stdout/err for testing purposes.
+    startup_info.dwFlags |= STARTF_USESTDHANDLES;
+    startup_info.hStdOutput = ::GetStdHandle(STD_OUTPUT_HANDLE);
+    startup_info.hStdError = ::GetStdHandle(STD_ERROR_HANDLE);
+    startup_info.hStdInput = INVALID_HANDLE_VALUE;
+    bInheritHandles = TRUE;
+  }
 
   PROCESS_INFORMATION process_info;
   BOOL createdOK = CreateProcess(NULL,
diff --git a/ipc/glue/WindowsMessageLoop.cpp b/ipc/glue/WindowsMessageLoop.cpp
index 8f3471efc..8057ee25d 100644
--- a/ipc/glue/WindowsMessageLoop.cpp
+++ b/ipc/glue/WindowsMessageLoop.cpp
@@ -1034,7 +1034,7 @@ MessageChannel::WaitForSyncNotify(bool aHandleWindowsMessages)
   MOZ_ASSERT(gUIThreadId, "InitUIThread was not called!");
 
 #if defined(ACCESSIBILITY)
-  if (mFlags & REQUIRE_A11Y_REENTRY) {
+  if (IsVistaOrLater() && (mFlags & REQUIRE_A11Y_REENTRY)) {
     MOZ_ASSERT(!(mFlags & REQUIRE_DEFERRED_MESSAGE_PROTECTION));
     return WaitForSyncNotifyWithA11yReentry();
   }
diff --git a/ipc/mscom/MainThreadRuntime.cpp b/ipc/mscom/MainThreadRuntime.cpp
index a061eaf54..d86317966 100644
--- a/ipc/mscom/MainThreadRuntime.cpp
+++ b/ipc/mscom/MainThreadRuntime.cpp
@@ -44,6 +44,13 @@ MainThreadRuntime::MainThreadRuntime()
     return;
   }
 
+  // Windows XP doesn't support setting of the COM exception policy, so we'll
+  // just stop here in that case.
+  if (!IsVistaOrLater()) {
+    mInitResult = S_OK;
+    return;
+  }
+
   // We are required to initialize security in order to configure global options.
   mInitResult = InitializeSecurity();
   MOZ_ASSERT(SUCCEEDED(mInitResult));
@@ -60,8 +67,11 @@ MainThreadRuntime::MainThreadRuntime()
     return;
   }
 
-  // Use the strictest policy available.
-  ULONG_PTR exceptionSetting = COMGLB_EXCEPTION_DONOT_HANDLE_ANY;
+  // Windows 7 has a policy that is even more strict. We should use that one
+  // whenever possible.
+  ULONG_PTR exceptionSetting = IsWin7OrLater() ?
+                               COMGLB_EXCEPTION_DONOT_HANDLE_ANY :
+                               COMGLB_EXCEPTION_DONOT_HANDLE;
   mInitResult = globalOpts->Set(COMGLB_EXCEPTION_HANDLING, exceptionSetting);
   MOZ_ASSERT(SUCCEEDED(mInitResult));
 }
diff --git a/js/src/frontend/Parser.cpp b/js/src/frontend/Parser.cpp
index 623379f61..4cef4d2da 100644
--- a/js/src/frontend/Parser.cpp
+++ b/js/src/frontend/Parser.cpp
@@ -1395,8 +1395,10 @@ Parser<ParseHandler>::propagateFreeNamesAndMarkClosedOverBindings(ParseContext::
     if (handler.canSkipLazyClosedOverBindings()) {
         // Scopes are nullptr-delimited in the LazyScript closed over bindings
         // array.
-        while (JSAtom* name = handler.nextLazyClosedOverBinding())
-            scope.lookupDeclaredName(name)->value()->setClosedOver();
+        while (JSAtom* name = handler.nextLazyClosedOverBinding()) {
+            DeclaredNamePtr p = scope.lookupDeclaredName(name);
+            if(p) p->value()->setClosedOver();
+        }
         return true;
     }
 
diff --git a/js/src/jit/MacroAssembler.cpp b/js/src/jit/MacroAssembler.cpp
index 9dbbe7624..f633b9b7b 100644
--- a/js/src/jit/MacroAssembler.cpp
+++ b/js/src/jit/MacroAssembler.cpp
@@ -2214,12 +2214,6 @@ MacroAssembler::finish()
     }
 
     MacroAssemblerSpecific::finish();
-
-    MOZ_RELEASE_ASSERT(size() <= MaxCodeBytesPerProcess,
-                       "AssemblerBuffer should ensure we don't exceed MaxCodeBytesPerProcess");
-
-    if (bytesNeeded() > MaxCodeBytesPerProcess)
-        setOOM();
 }
 
 void
diff --git a/js/src/jit/ProcessExecutableMemory.cpp b/js/src/jit/ProcessExecutableMemory.cpp
index 301541541..71c2ab0dc 100644
--- a/js/src/jit/ProcessExecutableMemory.cpp
+++ b/js/src/jit/ProcessExecutableMemory.cpp
@@ -385,6 +385,14 @@ class PageBitSet
 #endif
 };
 
+// Limit on the number of bytes of executable memory to prevent JIT spraying
+// attacks.
+#if JS_BITS_PER_WORD == 32
+static const size_t MaxCodeBytesPerProcess = 128 * 1024 * 1024;
+#else
+static const size_t MaxCodeBytesPerProcess = 1 * 1024 * 1024 * 1024;
+#endif
+
 // Per-process executable memory allocator. It reserves a block of memory of
 // MaxCodeBytesPerProcess bytes, then allocates/deallocates pages from that.
 //
diff --git a/js/src/jit/ProcessExecutableMemory.h b/js/src/jit/ProcessExecutableMemory.h
index a0e2fab98..078ce7cb7 100644
--- a/js/src/jit/ProcessExecutableMemory.h
+++ b/js/src/jit/ProcessExecutableMemory.h
@@ -17,14 +17,6 @@ namespace jit {
 // alignment though.
 static const size_t ExecutableCodePageSize = 64 * 1024;
 
-// Limit on the number of bytes of executable memory to prevent JIT spraying
-// attacks.
-#if JS_BITS_PER_WORD == 32
-static const size_t MaxCodeBytesPerProcess = 128 * 1024 * 1024;
-#else
-static const size_t MaxCodeBytesPerProcess = 1 * 1024 * 1024 * 1024;
-#endif
-
 enum class ProtectionSetting {
     Protected, // Not readable, writable, or executable.
     Writable,
diff --git a/js/src/jit/shared/IonAssemblerBuffer.h b/js/src/jit/shared/IonAssemblerBuffer.h
index 3a6552696..cc20e26d2 100644
--- a/js/src/jit/shared/IonAssemblerBuffer.h
+++ b/js/src/jit/shared/IonAssemblerBuffer.h
@@ -181,10 +181,6 @@ class AssemblerBuffer
 
   protected:
     virtual Slice* newSlice(LifoAlloc& a) {
-        if (size() > MaxCodeBytesPerProcess - sizeof(Slice)) {
-            fail_oom();
-            return nullptr;
-        }
         Slice* tmp = static_cast<Slice*>(a.alloc(sizeof(Slice)));
         if (!tmp) {
             fail_oom();
diff --git a/js/src/jit/x86-shared/AssemblerBuffer-x86-shared.h b/js/src/jit/x86-shared/AssemblerBuffer-x86-shared.h
index fe678fc7d..8cb557784 100644
--- a/js/src/jit/x86-shared/AssemblerBuffer-x86-shared.h
+++ b/js/src/jit/x86-shared/AssemblerBuffer-x86-shared.h
@@ -68,33 +68,6 @@ namespace js {
 
 namespace jit {
 
-    // AllocPolicy for AssemblerBuffer. OOMs when trying to allocate more than
-    // MaxCodeBytesPerProcess bytes. Use private inheritance to make sure we
-    // explicitly have to expose SystemAllocPolicy methods.
-    class AssemblerBufferAllocPolicy : private SystemAllocPolicy
-    {
-      public:
-        using SystemAllocPolicy::checkSimulatedOOM;
-        using SystemAllocPolicy::reportAllocOverflow;
-        using SystemAllocPolicy::free_;
-
-        template <typename T> T* pod_realloc(T* p, size_t oldSize, size_t newSize) {
-            static_assert(sizeof(T) == 1,
-                          "AssemblerBufferAllocPolicy should only be used with byte vectors");
-            MOZ_ASSERT(oldSize <= MaxCodeBytesPerProcess);
-            if (MOZ_UNLIKELY(newSize > MaxCodeBytesPerProcess))
-                return nullptr;
-            return SystemAllocPolicy::pod_realloc<T>(p, oldSize, newSize);
-        }
-        template <typename T> T* pod_malloc(size_t numElems) {
-            static_assert(sizeof(T) == 1,
-                          "AssemblerBufferAllocPolicy should only be used with byte vectors");
-            if (MOZ_UNLIKELY(numElems > MaxCodeBytesPerProcess))
-                return nullptr;
-            return SystemAllocPolicy::pod_malloc<T>(numElems);
-        }
-    };
-
     class AssemblerBuffer
     {
         template<size_t size, typename T>
@@ -120,9 +93,6 @@ namespace jit {
 
         void ensureSpace(size_t space)
         {
-            // This should only be called with small |space| values to ensure
-            // we don't overflow below.
-            MOZ_ASSERT(space <= 16);
             if (MOZ_UNLIKELY(!m_buffer.reserve(m_buffer.length() + space)))
                 oomDetected();
         }
@@ -198,7 +168,7 @@ namespace jit {
             m_buffer.clear();
         }
 
-        PageProtectingVector<unsigned char, 256, AssemblerBufferAllocPolicy> m_buffer;
+        PageProtectingVector<unsigned char, 256, SystemAllocPolicy> m_buffer;
         bool m_oom;
     };
 
diff --git a/js/src/jsutil.cpp b/js/src/jsutil.cpp
index 705d21975..bb9f33df9 100644
--- a/js/src/jsutil.cpp
+++ b/js/src/jsutil.cpp
@@ -39,7 +39,7 @@ mozilla::Atomic<AutoEnterOOMUnsafeRegion*> AutoEnterOOMUnsafeRegion::owner_;
 namespace oom {
 
 JS_PUBLIC_DATA(uint32_t) targetThread = 0;
-MOZ_THREAD_LOCAL(uint32_t) threadType;
+JS_PUBLIC_DATA(MOZ_THREAD_LOCAL(uint32_t)) threadType;
 JS_PUBLIC_DATA(uint64_t) maxAllocations = UINT64_MAX;
 JS_PUBLIC_DATA(uint64_t) counter = 0;
 JS_PUBLIC_DATA(bool) failAlways = true;
diff --git a/js/src/old-configure.in b/js/src/old-configure.in
index 7432ab9e2..c8ec5aba9 100644
--- a/js/src/old-configure.in
+++ b/js/src/old-configure.in
@@ -143,7 +143,8 @@ MOZ_TOOL_VARIABLES
 dnl Special win32 checks
 dnl ========================================================
 
-WINVER=601
+# Target the Windows 8.1 SDK by default
+WINVER=502
 
 case "$target" in
 *-mingw*)
@@ -721,7 +722,12 @@ case "$target" in
         IMPORT_LIB_SUFFIX=lib
         MKSHLIB='$(LD) -NOLOGO -DLL -OUT:$@ -PDB:$(LINK_PDBFILE) $(DSO_LDOPTS)'
         MKCSHLIB='$(LD) -NOLOGO -DLL -OUT:$@ -PDB:$(LINK_PDBFILE) $(DSO_LDOPTS)'
-        WIN32_SUBSYSTEM_VERSION=6.01
+        dnl Set subsystem version 5 for Windows XP.
+        if test "$CPU_ARCH" = "x86"; then
+            WIN32_SUBSYSTEM_VERSION=5.01
+        else
+            WIN32_SUBSYSTEM_VERSION=5.02
+        fi
         WIN32_CONSOLE_EXE_LDFLAGS=-SUBSYSTEM:CONSOLE,$WIN32_SUBSYSTEM_VERSION
         WIN32_GUI_EXE_LDFLAGS=-SUBSYSTEM:WINDOWS,$WIN32_SUBSYSTEM_VERSION
         DSO_LDOPTS=-SUBSYSTEM:WINDOWS,$WIN32_SUBSYSTEM_VERSION
diff --git a/js/src/threading/windows/ConditionVariable.cpp b/js/src/threading/windows/ConditionVariable.cpp
index 92e0249b7..868c35141 100644
--- a/js/src/threading/windows/ConditionVariable.cpp
+++ b/js/src/threading/windows/ConditionVariable.cpp
@@ -28,34 +28,342 @@
   _InterlockedIncrement((volatile long*)(addend))
 #endif
 
+// Windows XP and Server 2003 don't support condition variables natively. The
+// NativeImports class is responsible for detecting native support and
+// retrieving the appropriate function pointers. It gets instantiated once,
+// using a static initializer.
+class ConditionVariableNativeImports
+{
+public:
+  ConditionVariableNativeImports() {
+    HMODULE kernel32_dll = GetModuleHandle("kernel32.dll");
+    MOZ_RELEASE_ASSERT(kernel32_dll != NULL);
+
+#define LOAD_SYMBOL(symbol) loadSymbol(kernel32_dll, #symbol, symbol)
+    supported_ = LOAD_SYMBOL(InitializeConditionVariable) &&
+                 LOAD_SYMBOL(WakeConditionVariable) &&
+                 LOAD_SYMBOL(WakeAllConditionVariable) &&
+                 LOAD_SYMBOL(SleepConditionVariableCS);
+#undef LOAD_SYMBOL
+  }
+
+  inline bool supported() const {
+    return supported_;
+  }
+
+  void(WINAPI* InitializeConditionVariable)(CONDITION_VARIABLE* ConditionVariable);
+  void(WINAPI* WakeAllConditionVariable)(PCONDITION_VARIABLE ConditionVariable);
+  void(WINAPI* WakeConditionVariable)(CONDITION_VARIABLE* ConditionVariable);
+  BOOL(WINAPI* SleepConditionVariableCS)(CONDITION_VARIABLE* ConditionVariable,
+                                         CRITICAL_SECTION* CriticalSection,
+                                         DWORD dwMilliseconds);
+
+private:
+  template <typename T>
+  inline bool loadSymbol(HMODULE module, const char* name, T& fn) {
+    FARPROC ptr = GetProcAddress(module, name);
+    if (!ptr)
+      return false;
+
+    fn = reinterpret_cast<T>(ptr);
+    return true;
+  }
+
+  bool supported_;
+};
+
+static ConditionVariableNativeImports sNativeImports;
+
 // Wrapper for native condition variable APIs.
-struct js::ConditionVariable::PlatformData
+struct ConditionVariableNative
 {
+  inline void initialize() {
+    sNativeImports.InitializeConditionVariable(&cv_);
+  }
+
+  inline void destroy() {
+    // Native condition variables don't require cleanup.
+  }
+
+  inline void notify_one() { sNativeImports.WakeConditionVariable(&cv_); }
+
+  inline void notify_all() { sNativeImports.WakeAllConditionVariable(&cv_); }
+
+  inline bool wait(CRITICAL_SECTION* cs, DWORD msec) {
+    return sNativeImports.SleepConditionVariableCS(&cv_, cs, msec);
+  }
+
+private:
   CONDITION_VARIABLE cv_;
 };
 
+// Fallback condition variable support for Windows XP and Server 2003. Given the
+// difficulty of testing on these antiquated platforms and their rapidly
+// diminishing market share, this implementation trades performance for
+// predictable behavior.
+struct ConditionVariableFallback
+{
+  static const uint32_t WAKEUP_MODE_NONE = 0;
+  static const uint32_t WAKEUP_MODE_ONE = 0x40000000;
+  static const uint32_t WAKEUP_MODE_ALL = 0x80000000;
+
+  static const uint32_t WAKEUP_MODE_MASK = WAKEUP_MODE_ONE | WAKEUP_MODE_ALL;
+  static const uint32_t SLEEPERS_COUNT_MASK = ~WAKEUP_MODE_MASK;
+
+  void initialize()
+  {
+    // Initialize the state variable to 0 sleepers, no wakeup.
+    sleepersCountAndWakeupMode_ = 0 | WAKEUP_MODE_NONE;
+
+    // Create a semaphore that prevents threads from entering sleep,
+    // or waking other threads while a wakeup is ongoing.
+    sleepWakeupSemaphore_ = CreateSemaphoreW(NULL, 1, 1, NULL);
+    MOZ_RELEASE_ASSERT(sleepWakeupSemaphore_);
+
+    // Use an auto-reset event for waking up a single sleeper.
+    wakeOneEvent_ = CreateEventW(NULL, FALSE, FALSE, NULL);
+    MOZ_RELEASE_ASSERT(wakeOneEvent_);
+
+    // Use a manual-reset event for waking up all sleepers.
+    wakeAllEvent_ = CreateEventW(NULL, TRUE, FALSE, NULL);
+    MOZ_RELEASE_ASSERT(wakeAllEvent_);
+  }
+
+  void destroy()
+  {
+    BOOL r;
+
+    MOZ_RELEASE_ASSERT(sleepersCountAndWakeupMode_ == (0 | WAKEUP_MODE_NONE));
+
+    r = CloseHandle(sleepWakeupSemaphore_);
+    MOZ_RELEASE_ASSERT(r);
+
+    r = CloseHandle(wakeOneEvent_);
+    MOZ_RELEASE_ASSERT(r);
+
+    r = CloseHandle(wakeAllEvent_);
+    MOZ_RELEASE_ASSERT(r);
+  }
+
+private:
+  void wakeup(uint32_t wakeupMode, HANDLE wakeEvent)
+  {
+    // Ensure that only one thread at a time can wake up others.
+    BOOL result = WaitForSingleObject(sleepWakeupSemaphore_, INFINITE);
+    MOZ_RELEASE_ASSERT(result == WAIT_OBJECT_0);
+
+    // Atomically set the wakeup mode and retrieve the number of sleepers.
+    uint32_t wcwm = InterlockedExchangeAdd(&sleepersCountAndWakeupMode_,
+                                           wakeupMode);
+    uint32_t sleepersCount = wcwm & SLEEPERS_COUNT_MASK;
+    MOZ_RELEASE_ASSERT((wcwm & WAKEUP_MODE_MASK) == WAKEUP_MODE_NONE);
+
+    if (sleepersCount > 0) {
+      // If there are any sleepers, set the wake event. The (last) woken
+      // up thread is responsible for releasing the semaphore.
+      BOOL success = SetEvent(wakeEvent);
+      MOZ_RELEASE_ASSERT(success);
+
+    } else {
+      // If there are no sleepers, set the wakeup mode back to 'none'
+      // and release the semaphore ourselves.
+      sleepersCountAndWakeupMode_ = 0 | WAKEUP_MODE_NONE;
+
+      BOOL success = ReleaseSemaphore(sleepWakeupSemaphore_, 1, NULL);
+      MOZ_RELEASE_ASSERT(success);
+    }
+  }
+
+public:
+  void notify_one() { wakeup(WAKEUP_MODE_ONE, wakeOneEvent_); }
+
+  void notify_all() { wakeup(WAKEUP_MODE_ALL, wakeAllEvent_); }
+
+  bool wait(CRITICAL_SECTION* userLock, DWORD msec)
+  {
+    // Make sure that we can't enter sleep when there are other threads
+    // that still need to wake up on either of the wake events being set.
+    DWORD result = WaitForSingleObject(sleepWakeupSemaphore_, INFINITE);
+    MOZ_RELEASE_ASSERT(result == WAIT_OBJECT_0);
+
+    // Register ourselves as a sleeper. Use an atomic operation, because
+    // if another thread times out at the same time, it will decrement the
+    // sleepers count without acquiring the semaphore.
+    uint32_t wcwm = InterlockedIncrement(&sleepersCountAndWakeupMode_);
+    MOZ_RELEASE_ASSERT((wcwm & WAKEUP_MODE_MASK) == WAKEUP_MODE_NONE);
+
+    // Now that that this thread has been enlisted as a sleeper, it is safe
+    // again for other threads to do a wakeup.
+    BOOL success = ReleaseSemaphore(sleepWakeupSemaphore_, 1, NULL);
+    MOZ_RELEASE_ASSERT(success);
+
+    // Release the caller's mutex.
+    LeaveCriticalSection(userLock);
+
+    // Wait for either event to become signaled, which happens when
+    // notify_one() or notify_all() is called, or for a timeout.
+    HANDLE handles[2] = { wakeOneEvent_, wakeAllEvent_ };
+    DWORD waitResult = WaitForMultipleObjects(2, handles, FALSE, msec);
+    MOZ_RELEASE_ASSERT(waitResult == WAIT_OBJECT_0 ||
+                       waitResult == WAIT_OBJECT_0 + 1 ||
+                       (waitResult == WAIT_TIMEOUT && msec != INFINITE));
+
+    // Atomically decrease the sleepers count and retrieve the wakeup mode
+    // and new sleepers count.
+    // If the wait returned because wakeOneEvent_ was set, we are certain
+    // that the wakeup mode will be WAKEUP_MODE_ONE. In that case,
+    // atomically reset the wakeup mode to 'none', because if another
+    // thread's sleep times out at same time and it finds that it was the
+    // last sleeper, it decides whether or not to reset the wakeOneEvent_
+    // based on the current wakeup mode.
+    uint32_t sub;
+    if (waitResult == WAIT_OBJECT_0)
+      sub = 1 | WAKEUP_MODE_ONE;
+    else
+      sub = 1;
+    // Note that InterlockedExchangeAdd returns the old value, but it's
+    // easier to work with the new value.
+    wcwm = InterlockedExchangeAdd(&sleepersCountAndWakeupMode_, -sub) - sub;
+
+    uint32_t wakeupMode = wcwm & WAKEUP_MODE_MASK;
+    uint32_t sleepersCount = wcwm & SLEEPERS_COUNT_MASK;
+
+    bool releaseSleepWakeupSemaphore = false;
+
+    if (waitResult == WAIT_OBJECT_0) {
+      // The wake-one event is an auto-reset event so if we're woken by
+      // it, it should already have been reset. We also already removed
+      // the WAKEUP_MODE_ONE bit so the wakeup mode should now be 'none'
+      // again.
+      MOZ_RELEASE_ASSERT(wakeupMode == WAKEUP_MODE_NONE);
+
+      // The signaling thread has acquired the enter-wakeup semaphore and
+      // expects the woken (this) thread to release it again.
+      releaseSleepWakeupSemaphore = true;
+
+    } else if (waitResult == WAIT_TIMEOUT && wakeupMode == WAKEUP_MODE_ONE &&
+               sleepersCount == 0) {
+      // In theory a race condition is possible where the last sleeper
+      // times out right at the moment that another thread signals it.
+      // If that just happened we now have a dangling signal event and
+      // mode, but no threads to be woken up by it, and we need to clean
+      // that up.
+      BOOL success = ResetEvent(wakeOneEvent_);
+      MOZ_RELEASE_ASSERT(success);
+
+      // This is safe - we are certain there are no other sleepers that
+      // could wake up right now, and the semaphore ensures that no
+      // non-sleeping threads are messing with
+      // sleepersCountAndWakeupMode_.
+      sleepersCountAndWakeupMode_ = 0 | WAKEUP_MODE_NONE;
+
+      // The signaling thread has acquired the sleep-wakeup semaphore and
+      // expects the woken thread to release it. But since there are no
+      // sleeping threads left this thread will do it instead.
+      releaseSleepWakeupSemaphore = true;
+
+    } else if (wakeupMode == WAKEUP_MODE_ALL && sleepersCount == 0) {
+      // If this was the last thread waking up in response to a
+      // notify_all, clear the wakeup mode and reset the wake-all event.
+      // A race condition similar to the case described above could
+      // occur, so waitResult could be WAIT_TIMEOUT, but that doesn't
+      // matter for the actions that need to be taken.
+      MOZ_RELEASE_ASSERT(waitResult = WAIT_OBJECT_0 + 1 ||
+                         waitResult == WAIT_TIMEOUT);
+
+      BOOL success = ResetEvent(wakeAllEvent_);
+      MOZ_RELEASE_ASSERT(success);
+
+      sleepersCountAndWakeupMode_ = 0 | WAKEUP_MODE_NONE;
+
+      // The broadcasting thread has acquired the enter-wakeup semaphore
+      // and expects the last thread that wakes up to release it.
+      releaseSleepWakeupSemaphore = true;
+
+    } else if ((waitResult == WAIT_TIMEOUT && msec != INFINITE) ||
+               (waitResult == WAIT_OBJECT_0 + 1 &&
+                wakeupMode == WAKEUP_MODE_ALL)) {
+      // Either:
+      //   * The wait timed out but found no active notify_one or notify_all
+      //     the moment it decreased the wait count.
+      //   * A notify_all woke up this thread but there are more threads
+      //     that need to be woken up by the wake-all event.
+      // These are ordinary conditions in which we don't have to do
+      // anything.
+
+    } else {
+      MOZ_CRASH("invalid wakeup condition");
+    }
+
+    // Release the enter-wakeup semaphore if the wakeup condition requires
+    // us to do it.
+    if (releaseSleepWakeupSemaphore) {
+      BOOL success = ReleaseSemaphore(sleepWakeupSemaphore_, 1, NULL);
+      MOZ_RELEASE_ASSERT(success);
+    }
+
+    // Reacquire the user mutex.
+    EnterCriticalSection(userLock);
+
+    // Return true if woken up, false when timed out.
+    if (waitResult == WAIT_TIMEOUT) {
+      SetLastError(ERROR_TIMEOUT);
+      return false;
+    }
+    return true;
+  }
+
+private:
+  uint32_t sleepersCountAndWakeupMode_;
+  HANDLE sleepWakeupSemaphore_;
+  HANDLE wakeOneEvent_;
+  HANDLE wakeAllEvent_;
+};
+
+struct js::ConditionVariable::PlatformData
+{
+  union
+  {
+    ConditionVariableNative native;
+    ConditionVariableFallback fallback;
+  };
+};
+
 js::ConditionVariable::ConditionVariable()
 {
-  InitializeConditionVariable(&platformData()->cv_);
+  if (sNativeImports.supported())
+    platformData()->native.initialize();
+  else
+    platformData()->fallback.initialize();
 }
 
 void
 js::ConditionVariable::notify_one()
 {
-  WakeConditionVariable(&platformData()->cv_);
+  if (sNativeImports.supported())
+    platformData()->native.notify_one();
+  else
+    platformData()->fallback.notify_one();
 }
 
 void
 js::ConditionVariable::notify_all()
 {
-  WakeAllConditionVariable(&platformData()->cv_);
+  if (sNativeImports.supported())
+    platformData()->native.notify_all();
+  else
+    platformData()->fallback.notify_all();
 }
 
 void
 js::ConditionVariable::wait(UniqueLock<Mutex>& lock)
 {
-  SRWLOCK* srwlock = &lock.lock.platformData()->lock;
-  bool r = SleepConditionVariableSRW(&platformData()->cv_, srwlock, INFINITE, 0);
+  CRITICAL_SECTION* cs = &lock.lock.platformData()->criticalSection;
+  bool r;
+  if (sNativeImports.supported())
+    r = platformData()->native.wait(cs, INFINITE);
+  else
+    r = platformData()->fallback.wait(cs, INFINITE);
   MOZ_RELEASE_ASSERT(r);
 }
 
@@ -70,7 +378,7 @@ js::CVStatus
 js::ConditionVariable::wait_for(UniqueLock<Mutex>& lock,
                                 const mozilla::TimeDuration& rel_time)
 {
-  SRWLOCK* srwlock = &lock.lock.platformData()->lock;
+  CRITICAL_SECTION* cs = &lock.lock.platformData()->criticalSection;
 
   // Note that DWORD is unsigned, so we have to be careful to clamp at 0.
   // If rel_time is Forever, then ToMilliseconds is +inf, which evaluates as
@@ -82,7 +390,11 @@ js::ConditionVariable::wait_for(UniqueLock<Mutex>& lock,
                  ? INFINITE
                  : static_cast<DWORD>(msecd);
 
-  BOOL r = SleepConditionVariableSRW(&platformData()->cv_, srwlock, msec, 0);
+  BOOL r;
+  if (sNativeImports.supported())
+    r = platformData()->native.wait(cs, msec);
+  else
+    r = platformData()->fallback.wait(cs, msec);
   if (r)
     return CVStatus::NoTimeout;
   MOZ_RELEASE_ASSERT(GetLastError() == ERROR_TIMEOUT);
@@ -91,7 +403,10 @@ js::ConditionVariable::wait_for(UniqueLock<Mutex>& lock,
 
 js::ConditionVariable::~ConditionVariable()
 {
-  // Native condition variables don't require cleanup.
+  if (sNativeImports.supported())
+    platformData()->native.destroy();
+  else
+    platformData()->fallback.destroy();
 }
 
 inline js::ConditionVariable::PlatformData*
diff --git a/js/src/threading/windows/MutexImpl.cpp b/js/src/threading/windows/MutexImpl.cpp
index e838459b5..385d1c8de 100644
--- a/js/src/threading/windows/MutexImpl.cpp
+++ b/js/src/threading/windows/MutexImpl.cpp
@@ -13,6 +13,35 @@
 #include "threading/Mutex.h"
 #include "threading/windows/MutexPlatformData.h"
 
+namespace {
+
+// We build with a toolkit that supports WinXP, so we have to probe
+// for modern features at runtime. This is necessary because Vista and
+// later automatically allocate and subsequently leak a debug info
+// object for each critical section that we allocate unless we tell it
+// not to. In order to tell it not to, we need the extra flags field
+// provided by the Ex version of InitializeCriticalSection.
+struct MutexNativeImports
+{
+  using InitializeCriticalSectionExT = BOOL (WINAPI*)(CRITICAL_SECTION*, DWORD, DWORD);
+  InitializeCriticalSectionExT InitializeCriticalSectionEx;
+
+  MutexNativeImports() {
+    HMODULE kernel32_dll = GetModuleHandle("kernel32.dll");
+    MOZ_RELEASE_ASSERT(kernel32_dll != NULL);
+    InitializeCriticalSectionEx = reinterpret_cast<InitializeCriticalSectionExT>(
+      GetProcAddress(kernel32_dll, "InitializeCriticalSectionEx"));
+  }
+
+  bool hasInitializeCriticalSectionEx() const {
+    return InitializeCriticalSectionEx;
+  }
+};
+
+static MutexNativeImports NativeImports;
+
+} // (anonymous namespace)
+
 js::detail::MutexImpl::MutexImpl()
 {
   AutoEnterOOMUnsafeRegion oom;
@@ -20,7 +49,18 @@ js::detail::MutexImpl::MutexImpl()
   if (!platformData_)
     oom.crash("js::Mutex::Mutex");
 
-  InitializeSRWLock(&platformData()->lock);
+  // This number was adopted from NSPR.
+  const static DWORD LockSpinCount = 1500;
+  BOOL r;
+  if (NativeImports.hasInitializeCriticalSectionEx()) {
+    r = NativeImports.InitializeCriticalSectionEx(&platformData()->criticalSection,
+                                                  LockSpinCount,
+                                                  CRITICAL_SECTION_NO_DEBUG_INFO);
+  } else {
+    r = InitializeCriticalSectionAndSpinCount(&platformData()->criticalSection,
+                                              LockSpinCount);
+  }
+  MOZ_RELEASE_ASSERT(r);
 }
 
 js::detail::MutexImpl::~MutexImpl()
@@ -28,17 +68,18 @@ js::detail::MutexImpl::~MutexImpl()
   if (!platformData_)
     return;
 
+  DeleteCriticalSection(&platformData()->criticalSection);
   js_delete(platformData());
 }
 
 void
 js::detail::MutexImpl::lock()
 {
-  AcquireSRWLockExclusive(&platformData()->lock);
+  EnterCriticalSection(&platformData()->criticalSection);
 }
 
 void
 js::detail::MutexImpl::unlock()
 {
-  ReleaseSRWLockExclusive(&platformData()->lock);
+  LeaveCriticalSection(&platformData()->criticalSection);
 }
diff --git a/js/src/threading/windows/MutexPlatformData.h b/js/src/threading/windows/MutexPlatformData.h
index 1d741c5d0..fbe7fc80d 100644
--- a/js/src/threading/windows/MutexPlatformData.h
+++ b/js/src/threading/windows/MutexPlatformData.h
@@ -13,7 +13,7 @@
 
 struct js::detail::MutexImpl::PlatformData
 {
-  SRWLOCK lock;
+  CRITICAL_SECTION criticalSection;
 };
 
 #endif // platform_win_MutexPlatformData_h
diff --git a/js/src/vm/Stopwatch.h b/js/src/vm/Stopwatch.h
index 38a3eb801..a1b8bbbcb 100644
--- a/js/src/vm/Stopwatch.h
+++ b/js/src/vm/Stopwatch.h
@@ -301,9 +301,9 @@ struct PerformanceMonitoring {
 
 #if WINVER >= 0x0600
 struct cpuid_t {
-    uint16_t group_;
-    uint8_t number_;
-    cpuid_t(uint16_t group, uint8_t number)
+    WORD group_;
+    BYTE number_;
+    cpuid_t(WORD group, BYTE number)
         : group_(group),
           number_(number)
     { }
diff --git a/js/xpconnect/shell/xpcshell.exe.manifest b/js/xpconnect/shell/xpcshell.exe.manifest
index c35b77af4..db2aa0861 100644
--- a/js/xpconnect/shell/xpcshell.exe.manifest
+++ b/js/xpconnect/shell/xpcshell.exe.manifest
@@ -25,6 +25,7 @@
       <supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}"/>
       <supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}"/>
       <supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"/>
+      <supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}"/>
     </application>
   </compatibility>
 </assembly>
diff --git a/layout/style/nsMediaFeatures.cpp b/layout/style/nsMediaFeatures.cpp
index 5a54d5455..052ce58e8 100644
--- a/layout/style/nsMediaFeatures.cpp
+++ b/layout/style/nsMediaFeatures.cpp
@@ -70,6 +70,8 @@ struct OperatingSystemVersionInfo {
 
 // Os version identities used in the -moz-os-version media query.
 const OperatingSystemVersionInfo osVersionStrings[] = {
+  { LookAndFeel::eOperatingSystemVersion_WindowsXP,     L"windows-xp" },
+  { LookAndFeel::eOperatingSystemVersion_WindowsVista,  L"windows-vista" },
   { LookAndFeel::eOperatingSystemVersion_Windows7,      L"windows-win7" },
   { LookAndFeel::eOperatingSystemVersion_Windows8,      L"windows-win8" },
   { LookAndFeel::eOperatingSystemVersion_Windows10,     L"windows-win10" }
diff --git a/layout/style/test/chrome/bug418986-2.js b/layout/style/test/chrome/bug418986-2.js
index b083f48ee..4336f4abd 100644
--- a/layout/style/test/chrome/bug418986-2.js
+++ b/layout/style/test/chrome/bug418986-2.js
@@ -53,6 +53,8 @@ var suppressed_toggles = [
 
 // Possible values for '-moz-os-version'
 var windows_versions = [
+  "windows-xp",
+  "windows-vista",
   "windows-win7",
   "windows-win8",
   "windows-win10",
diff --git a/layout/style/test/test_media_queries.html b/layout/style/test/test_media_queries.html
index d503fad0b..479306a55 100644
--- a/layout/style/test/test_media_queries.html
+++ b/layout/style/test/test_media_queries.html
@@ -713,6 +713,8 @@ function run() {
   expression_should_not_be_parseable("-moz-windows-theme: ");
 
   // os version media queries (currently windows only)
+  expression_should_be_parseable("-moz-os-version: windows-xp");
+  expression_should_be_parseable("-moz-os-version: windows-vista");
   expression_should_be_parseable("-moz-os-version: windows-win7");
   expression_should_be_parseable("-moz-os-version: windows-win8");
   expression_should_be_parseable("-moz-os-version: windows-win10");
diff --git a/media/mtransport/third_party/nrappkit/src/util/util.c b/media/mtransport/third_party/nrappkit/src/util/util.c
index 1e2801259..31a245f45 100644
--- a/media/mtransport/third_party/nrappkit/src/util/util.c
+++ b/media/mtransport/third_party/nrappkit/src/util/util.c
@@ -506,7 +506,7 @@ strlcat(dst, src, siz)
 
 #endif  /* LINUX or WIN32 */
 
-#if defined(USE_OWN_INET_NTOP) || (defined(WIN32) && WINVER < 0x0600)
+#if defined(USE_OWN_INET_NTOP) || defined(WIN32)
 #include <errno.h>
 #ifdef WIN32
 #include <Ws2ipdef.h>
@@ -775,5 +775,18 @@ int gettimeofday(struct timeval *tv, void *tz)
     return 0;
   }
 
+#if _MSC_VER < 1900
+int snprintf(char *buffer, size_t n, const char *format, ...)
+{
+  va_list argp;
+  int ret;
+  va_start(argp, format);
+  ret = _vscprintf(format, argp);
+  vsnprintf_s(buffer, n, _TRUNCATE, format, argp);
+  va_end(argp);
+  return ret;
+}
+#endif
+
 #endif
 
diff --git a/media/mtransport/third_party/nrappkit/src/util/util.h b/media/mtransport/third_party/nrappkit/src/util/util.h
index 975baa4aa..869b72863 100644
--- a/media/mtransport/third_party/nrappkit/src/util/util.h
+++ b/media/mtransport/third_party/nrappkit/src/util/util.h
@@ -64,7 +64,8 @@ int nr_write_pid_file(char *pid_filename);
 int nr_reg_uint4_fetch_and_check(NR_registry key, UINT4 min, UINT4 max, int log_fac, int die, UINT4 *val);
 int nr_reg_uint8_fetch_and_check(NR_registry key, UINT8 min, UINT8 max, int log_fac, int die, UINT8 *val);
 
-#if defined(WIN32) && WINVER < 0x0600
+#ifdef WIN32
+int snprintf(char *buffer, size_t n, const char *format, ...);
 const char *inet_ntop(int af, const void *src, char *dst, size_t size);
 int inet_pton(int af, const char *src, void *dst);
 #endif
diff --git a/memory/mozjemalloc/jemalloc.c b/memory/mozjemalloc/jemalloc.c
index 7950b43e8..66ed9908f 100644
--- a/memory/mozjemalloc/jemalloc.c
+++ b/memory/mozjemalloc/jemalloc.c
@@ -209,6 +209,9 @@
 
 #ifdef MOZ_MEMORY_WINDOWS
 
+/* Some defines from the CRT internal headers that we need here. */
+#define _CRT_SPINCOUNT 5000
+#define __crtInitCritSecAndSpinCount InitializeCriticalSectionAndSpinCount
 #include <io.h>
 #include <windows.h>
 #include <intrin.h>
@@ -597,8 +600,8 @@ void *_mmap(void *addr, size_t length, int prot, int flags,
  * issues in some cases.
  */
 #if defined(MOZ_MEMORY_WINDOWS)
-#define malloc_mutex_t SRWLOCK
-#define malloc_spinlock_t SRWLOCK
+#define malloc_mutex_t CRITICAL_SECTION
+#define malloc_spinlock_t CRITICAL_SECTION
 #elif defined(MOZ_MEMORY_DARWIN)
 typedef struct {
 	OSSpinLock	lock;
@@ -1563,7 +1566,8 @@ static bool
 malloc_mutex_init(malloc_mutex_t *mutex)
 {
 #if defined(MOZ_MEMORY_WINDOWS)
-    InitializeSRWLock(mutex);
+	if (! __crtInitCritSecAndSpinCount(mutex, _CRT_SPINCOUNT))
+		return (true);
 #elif defined(MOZ_MEMORY_DARWIN)
 	mutex->lock = OS_SPINLOCK_INIT;
 #elif defined(MOZ_MEMORY_LINUX) && !defined(MOZ_MEMORY_ANDROID)
@@ -1592,7 +1596,7 @@ malloc_mutex_lock(malloc_mutex_t *mutex)
 {
 
 #if defined(MOZ_MEMORY_WINDOWS)
-	AcquireSRWLockExclusive(mutex);
+	EnterCriticalSection(mutex);
 #elif defined(MOZ_MEMORY_DARWIN)
 	OSSpinLockLock(&mutex->lock);
 #elif defined(MOZ_MEMORY)
@@ -1607,7 +1611,7 @@ malloc_mutex_unlock(malloc_mutex_t *mutex)
 {
 
 #if defined(MOZ_MEMORY_WINDOWS)
-	ReleaseSRWLockExclusive(mutex);
+	LeaveCriticalSection(mutex);
 #elif defined(MOZ_MEMORY_DARWIN)
 	OSSpinLockUnlock(&mutex->lock);
 #elif defined(MOZ_MEMORY)
@@ -1624,7 +1628,8 @@ static bool
 malloc_spin_init(malloc_spinlock_t *lock)
 {
 #if defined(MOZ_MEMORY_WINDOWS)
-	InitializeSRWLock(lock);
+	if (! __crtInitCritSecAndSpinCount(lock, _CRT_SPINCOUNT))
+		return (true);
 #elif defined(MOZ_MEMORY_DARWIN)
 	lock->lock = OS_SPINLOCK_INIT;
 #elif defined(MOZ_MEMORY_LINUX) && !defined(MOZ_MEMORY_ANDROID)
@@ -1651,7 +1656,7 @@ malloc_spin_lock(malloc_spinlock_t *lock)
 {
 
 #if defined(MOZ_MEMORY_WINDOWS)
-	AcquireSRWLockExclusive(lock);
+	EnterCriticalSection(lock);
 #elif defined(MOZ_MEMORY_DARWIN)
 	OSSpinLockLock(&lock->lock);
 #elif defined(MOZ_MEMORY)
@@ -1665,7 +1670,7 @@ static inline void
 malloc_spin_unlock(malloc_spinlock_t *lock)
 {
 #if defined(MOZ_MEMORY_WINDOWS)
-	ReleaseSRWLockExclusive(lock);
+	LeaveCriticalSection(lock);
 #elif defined(MOZ_MEMORY_DARWIN)
 	OSSpinLockUnlock(&lock->lock);
 #elif defined(MOZ_MEMORY)
diff --git a/mfbt/ThreadLocal.h b/mfbt/ThreadLocal.h
index 391e748ad..880e67735 100644
--- a/mfbt/ThreadLocal.h
+++ b/mfbt/ThreadLocal.h
@@ -9,7 +9,20 @@
 #ifndef mozilla_ThreadLocal_h
 #define mozilla_ThreadLocal_h
 
-#if !defined(XP_WIN)
+#if defined(XP_WIN)
+// This file will get included in any file that wants to add a profiler mark.
+// In order to not bring <windows.h> together we could include windef.h and
+// winbase.h which are sufficient to get the prototypes for the Tls* functions.
+// # include <windef.h>
+// # include <winbase.h>
+// Unfortunately, even including these headers causes us to add a bunch of ugly
+// stuff to our namespace e.g #define CreateEvent CreateEventW
+extern "C" {
+__declspec(dllimport) void* __stdcall TlsGetValue(unsigned long);
+__declspec(dllimport) int __stdcall TlsSetValue(unsigned long, void*);
+__declspec(dllimport) unsigned long __stdcall TlsAlloc();
+}
+#else
 #  include <pthread.h>
 #  include <signal.h>
 #endif
@@ -31,7 +44,7 @@ typedef sig_atomic_t sig_safe_t;
 
 namespace detail {
 
-#if defined(HAVE_THREAD_TLS_KEYWORD) || defined(XP_WIN) || defined(XP_MACOSX)
+#if defined(HAVE_THREAD_TLS_KEYWORD)
 #define MOZ_HAS_THREAD_LOCAL
 #endif
 
@@ -78,7 +91,11 @@ template<typename T>
 class ThreadLocal
 {
 #ifndef MOZ_HAS_THREAD_LOCAL
+#if defined(XP_WIN)
+  typedef unsigned long key_t;
+#else
   typedef pthread_key_t key_t;
+#endif
 
   // Integral types narrower than void* must be extended to avoid
   // warnings from valgrind on some platforms.  This helper type
@@ -144,7 +161,12 @@ ThreadLocal<T>::init()
   return true;
 #else
   if (!initialized()) {
+#ifdef XP_WIN
+    mKey = TlsAlloc();
+    mInited = mKey != 0xFFFFFFFFUL; // TLS_OUT_OF_INDEXES
+#else
     mInited = !pthread_key_create(&mKey, nullptr);
+#endif
   }
   return mInited;
 #endif
@@ -159,7 +181,11 @@ ThreadLocal<T>::get() const
 #else
   MOZ_ASSERT(initialized());
   void* h;
+#ifdef XP_WIN
+  h = TlsGetValue(mKey);
+#else
   h = pthread_getspecific(mKey);
+#endif
   return static_cast<T>(reinterpret_cast<typename Helper<T>::Type>(h));
 #endif
 }
@@ -173,7 +199,11 @@ ThreadLocal<T>::set(const T aValue)
 #else
   MOZ_ASSERT(initialized());
   void* h = reinterpret_cast<void*>(static_cast<typename Helper<T>::Type>(aValue));
+#ifdef XP_WIN
+  bool succeeded = TlsSetValue(mKey, h);
+#else
   bool succeeded = !pthread_setspecific(mKey, h);
+#endif
   if (!succeeded) {
     MOZ_CRASH();
   }
@@ -181,11 +211,7 @@ ThreadLocal<T>::set(const T aValue)
 }
 
 #ifdef MOZ_HAS_THREAD_LOCAL
-#if defined(XP_WIN) || defined(XP_MACOSX)
-#define MOZ_THREAD_LOCAL(TYPE) thread_local mozilla::detail::ThreadLocal<TYPE>
-#else
 #define MOZ_THREAD_LOCAL(TYPE) __thread mozilla::detail::ThreadLocal<TYPE>
-#endif
 #else
 #define MOZ_THREAD_LOCAL(TYPE) mozilla::detail::ThreadLocal<TYPE>
 #endif
diff --git a/mfbt/WindowsVersion.h b/mfbt/WindowsVersion.h
index 4d0cb374b..4a73fb3ff 100644
--- a/mfbt/WindowsVersion.h
+++ b/mfbt/WindowsVersion.h
@@ -84,11 +84,82 @@ IsWindowsBuildOrLater(uint32_t aBuild)
   return false;
 }
 
-// Although many of the older versions are not supported, we should keep
-// these entries for completeness (since they don't take any resources of
-// note), and to cater to corner cases for applications running e.g. in
-// Windows' compatibility mode.
+inline bool
+IsWindows10BuildOrLater(uint32_t aBuild)
+{
+  static uint32_t minBuild = 0;
+  static uint32_t maxBuild = UINT32_MAX;
+
+  if (minBuild >= aBuild) {
+    return true;
+  }
+
+  if (aBuild >= maxBuild) {
+    return false;
+  }
+
+  OSVERSIONINFOEX info;
+  ZeroMemory(&info, sizeof(OSVERSIONINFOEX));
+  info.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEX);
+  info.dwMajorVersion = 10;
+  info.dwBuildNumber = aBuild;
 
+  DWORDLONG conditionMask = 0;
+  VER_SET_CONDITION(conditionMask, VER_MAJORVERSION, VER_GREATER_EQUAL);
+  VER_SET_CONDITION(conditionMask, VER_MINORVERSION, VER_GREATER_EQUAL);
+  VER_SET_CONDITION(conditionMask, VER_BUILDNUMBER, VER_GREATER_EQUAL);
+  VER_SET_CONDITION(conditionMask, VER_SERVICEPACKMAJOR, VER_GREATER_EQUAL);
+  VER_SET_CONDITION(conditionMask, VER_SERVICEPACKMINOR, VER_GREATER_EQUAL);
+
+  if (VerifyVersionInfo(&info, VER_MAJORVERSION | VER_MINORVERSION |
+                        VER_BUILDNUMBER | VER_SERVICEPACKMAJOR |
+                        VER_SERVICEPACKMINOR, conditionMask)) {
+    minBuild = aBuild;
+    return true;
+  }
+
+  maxBuild = aBuild;
+  return false;
+}
+
+#if 0//defined(_M_X64) || defined(_M_AMD64)
+// We support only Win7 or later on Win64.
+MOZ_ALWAYS_INLINE bool
+IsXPSP3OrLater()
+{
+  return true;
+}
+
+MOZ_ALWAYS_INLINE bool
+IsWin2003OrLater()
+{
+  return true;
+}
+
+MOZ_ALWAYS_INLINE bool
+IsWin2003SP2OrLater()
+{
+  return true;
+}
+
+MOZ_ALWAYS_INLINE bool
+IsVistaOrLater()
+{
+  return true;
+}
+
+MOZ_ALWAYS_INLINE bool
+IsVistaSP1OrLater()
+{
+  return true;
+}
+
+MOZ_ALWAYS_INLINE bool
+IsWin7OrLater()
+{
+  return true;
+}
+#else
 MOZ_ALWAYS_INLINE bool
 IsXPSP3OrLater()
 {
@@ -124,6 +195,7 @@ IsWin7OrLater()
 {
   return IsWindowsVersionOrLater(0x06010000ul);
 }
+#endif
 
 MOZ_ALWAYS_INLINE bool
 IsWin7SP1OrLater()
@@ -149,6 +221,12 @@ IsWin10OrLater()
   return IsWindowsVersionOrLater(0x0a000000ul);
 }
 
+MOZ_ALWAYS_INLINE bool
+IsWin10CreatorsUpdateOrLater()
+{
+  return IsWindows10BuildOrLater(15063);
+}
+
 MOZ_ALWAYS_INLINE bool
 IsNotWin7PreRTM()
 {
@@ -156,6 +234,41 @@ IsNotWin7PreRTM()
          IsWindowsBuildOrLater(7600);
 }
 
+MOZ_ALWAYS_INLINE bool
+IsWin7AndPre2000Compatible() {
+  /*
+   * See Bug 1279171.
+   * We'd like to avoid using WMF on specific OS version when compatibility
+   * mode is in effect. The purpose of this function is to check if FF runs on
+   * Win7 OS with application compatibility mode being set to 95/98/ME.
+   * Those compatibility mode options (95/98/ME) can only display and
+   * be selected for 32-bit application.
+   * If the compatibility mode is in effect, the GetVersionEx function will
+   * report the OS as it identifies itself, which may not be the OS that is
+   * installed.
+   * Note : 1) We only target for Win7 build number greater than 7600.
+   *        2) GetVersionEx may be altered or unavailable for release after
+   *           Win8.1. Set pragma to avoid build warning as error.
+   */
+  bool isWin7 = IsNotWin7PreRTM() && !IsWin8OrLater();
+  if (!isWin7) {
+    return false;
+  }
+
+  OSVERSIONINFOEX info;
+  ZeroMemory(&info, sizeof(OSVERSIONINFOEX));
+
+  info.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEX);
+#pragma warning(push)
+#pragma warning(disable:4996)
+  bool success = GetVersionEx((LPOSVERSIONINFO) &info);
+#pragma warning(pop)
+  if (!success) {
+    return false;
+  }
+  return info.dwMajorVersion < 5;
+}
+
 } // namespace mozilla
 
 #endif /* mozilla_WindowsVersion_h */
diff --git a/modules/libpref/init/all.js b/modules/libpref/init/all.js
index 903665ff8..80bdef37f 100644
--- a/modules/libpref/init/all.js
+++ b/modules/libpref/init/all.js
@@ -558,7 +558,7 @@ pref("media.getusermedia.screensharing.allowed_domains", "webex.com,*.webex.com,
  // includes Mozilla's test domain: mozilla.github.io (not intended for release)
 pref("media.getusermedia.screensharing.allowed_domains", "mozilla.github.io,webex.com,*.webex.com,ciscospark.com,*.ciscospark.com,projectsquared.com,*.projectsquared.com,*.room.co,room.co,beta.talky.io,talky.io,*.clearslide.com,appear.in,*.appear.in,tokbox.com,*.tokbox.com,*.sso.francetelecom.fr,*.si.francetelecom.fr,*.sso.infra.ftgroup,*.multimedia-conference.orange-business.com,*.espacecollaboration.orange-business.com,free.gotomeeting.com,g2m.me,*.g2m.me,*.mypurecloud.com,*.mypurecloud.com.au,spreed.me,*.spreed.me,*.spreed.com,air.mozilla.org,*.circuit.com,*.yourcircuit.com,circuit.siemens.com,yourcircuit.siemens.com,circuitsandbox.net,*.unify.com,tandi.circuitsandbox.net,*.ericsson.net,*.cct.ericsson.net,*.opentok.com,*.conf.meetecho.com,meet.jit.si,*.meet.jit.si,web.stage.speakeasyapp.net,web.speakeasyapp.net,*.hipchat.me,*.beta-wspbx.com,*.wspbx.com,*.unifiedcloudit.com,*.smartboxuc.com,*.smartbox-uc.com,*.panterranetworks.com,pexipdemo.com,*.pexipdemo.com,pex.me,*.pex.me,*.rd.pexip.com,1click.io,*.1click.io,*.fuze.com,*.fuzemeeting.com,*.thinkingphones.com,gotomeeting.com,*.gotomeeting.com,gotowebinar.com,*.gotowebinar.com,gototraining.com,*.gototraining.com,citrix.com,*.citrix.com,expertcity.com,*.expertcity.com,citrixonline.com,*.citrixonline.com,g2m.me,*.g2m.me,gotomeet.me,*.gotomeet.me,gotomeet.at,*.gotomeet.at,miriadaxdes.miriadax.net,certificacion.miriadax.net,miriadax.net,*.wire.com,sylaps.com,*.sylaps.com,bluejeans.com,*.bluejeans.com,*.a.bluejeans.com,*.bbcollab.com");
 #endif
-// OS/X 10.6 has screen/window sharing off by default due to various issues - Caveat emptor
+// OS/X 10.6 and XP have screen/window sharing off by default due to various issues - Caveat emptor
 pref("media.getusermedia.screensharing.allow_on_old_platforms", false);
 
 pref("media.getusermedia.audiocapture.enabled", false);
@@ -3364,6 +3364,14 @@ pref("font.name.sans-serif.x-math", "Arial");
 pref("font.name.monospace.x-math", "Courier New");
 pref("font.name.cursive.x-math", "Comic Sans MS");
 
+// cleartype settings - false implies default system settings
+
+// use cleartype rendering for downloadable fonts (win xp only)
+pref("gfx.font_rendering.cleartype.use_for_downloadable_fonts", true);
+
+// use cleartype rendering for all fonts always (win xp only)
+pref("gfx.font_rendering.cleartype.always_use_for_content", false);
+
 // ClearType tuning parameters for directwrite/d2d.
 //
 // Allows overriding of underlying registry values in:
diff --git a/mozglue/build/WindowsDllBlocklist.cpp b/mozglue/build/WindowsDllBlocklist.cpp
index 9b63d6673..a3c662723 100644
--- a/mozglue/build/WindowsDllBlocklist.cpp
+++ b/mozglue/build/WindowsDllBlocklist.cpp
@@ -67,6 +67,7 @@ struct DllBlockInfo {
   enum {
     FLAGS_DEFAULT = 0,
     BLOCK_WIN8PLUS_ONLY = 1,
+    BLOCK_XP_ONLY = 2,
     USE_TIMESTAMP = 4,
   } flags;
 };
@@ -155,6 +156,9 @@ static DllBlockInfo sWindowsDllBlocklist[] = {
   // Topcrash with Conduit SearchProtect, bug 944542
   { "spvc32.dll", ALL_VERSIONS },
 
+  // XP topcrash with F-Secure, bug 970362
+  { "fs_ccf_ni_umh32.dll", MAKE_VERSION(1, 42, 101, 0), DllBlockInfo::BLOCK_XP_ONLY },
+
   // Topcrash with V-bates, bug 1002748 and bug 1023239
   { "libinject.dll", UNVERSIONED },
   { "libinject2.dll", 0x537DDC93, DllBlockInfo::USE_TIMESTAMP },
@@ -672,6 +676,11 @@ patched_LdrLoadDll (PWCHAR filePath, PULONG flags, PUNICODE_STRING moduleFileNam
       goto continue_loading;
     }
 
+    if ((info->flags == DllBlockInfo::BLOCK_XP_ONLY) &&
+        IsWin2003OrLater()) {
+      goto continue_loading;
+    }
+
     unsigned long long fVersion = ALL_VERSIONS;
 
     if (info->maxVersion != ALL_VERSIONS) {
@@ -740,7 +749,7 @@ continue_loading:
       return STATUS_DLL_NOT_FOUND;
     }
 
-    if (!CheckASLR(full_fname.get())) {
+    if (IsVistaOrLater() && !CheckASLR(full_fname.get())) {
       printf_stderr("LdrLoadDll: Blocking load of '%s'.  XPCOM components must support ASLR.\n", dllName);
       return STATUS_DLL_NOT_FOUND;
     }
diff --git a/mozglue/misc/TimeStamp_windows.cpp b/mozglue/misc/TimeStamp_windows.cpp
index 683c2209a..cd519affd 100644
--- a/mozglue/misc/TimeStamp_windows.cpp
+++ b/mozglue/misc/TimeStamp_windows.cpp
@@ -5,7 +5,7 @@
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 // Implement TimeStamp::Now() with QueryPerformanceCounter() controlled with
-// values of GetTickCount64().
+// values of GetTickCount().
 
 #include "mozilla/MathAlgorithms.h"
 #include "mozilla/TimeStamp.h"
@@ -69,7 +69,7 @@ static const DWORD kDefaultTimeIncrement = 156001;
  * further just referred as [mt], meaning milli-ticks.
  *
  * This is needed to preserve maximum precision of the performance frequency
- * representation.  GetTickCount64 values in milliseconds are multiplied with
+ * representation.  GetTickCount values in milliseconds are multiplied with
  * frequency per second.  Therefor we need to multiply QPC value by 1000 to
  * have the same units to allow simple arithmentic with both QPC and GTC.
  */
@@ -156,8 +156,41 @@ static CRITICAL_SECTION sTimeStampLock;
 // Kept in [mt]
 static ULONGLONG sFaultIntoleranceCheckpoint = 0;
 
+// Used only when GetTickCount64 is not available on the platform.
+// Last result of GetTickCount call.
+//
+// Kept in [ms]
+static DWORD sLastGTCResult = 0;
+
+// Higher part of the 64-bit value of MozGetTickCount64,
+// incremented atomically.
+static DWORD sLastGTCRollover = 0;
+
 namespace mozilla {
 
+typedef ULONGLONG (WINAPI* GetTickCount64_t)();
+static GetTickCount64_t sGetTickCount64 = nullptr;
+
+// Function protecting GetTickCount result from rolling over,
+// result is in [ms]
+static ULONGLONG WINAPI
+MozGetTickCount64()
+{
+  DWORD GTC = ::GetTickCount();
+
+  // Cheaper then CMPXCHG8B
+  AutoCriticalSection lock(&sTimeStampLock);
+
+  // Pull the rollover counter forward only if new value of GTC goes way
+  // down under the last saved result
+  if ((sLastGTCResult > GTC) && ((sLastGTCResult - GTC) > (1UL << 30))) {
+    ++sLastGTCRollover;
+  }
+
+  sLastGTCResult = GTC;
+  return ULONGLONG(sLastGTCRollover) << 32 | sLastGTCResult;
+}
+
 // Result is in [mt]
 static inline ULONGLONG
 PerformanceCounter()
@@ -322,7 +355,7 @@ TimeStampValue::CheckQPC(const TimeStampValue& aOther) const
   if (duration < sHardFailureLimit) {
     // Interval between the two time stamps is very short, consider
     // QPC as unstable and record a failure.
-    uint64_t now = ms2mt(GetTickCount64());
+    uint64_t now = ms2mt(sGetTickCount64());
 
     AutoCriticalSection lock(&sTimeStampLock);
 
@@ -452,6 +485,17 @@ TimeStamp::Startup()
 
   gInitialized = true;
 
+  // Decide which implementation to use for the high-performance timer.
+
+  HMODULE kernelDLL = GetModuleHandleW(L"kernel32.dll");
+  sGetTickCount64 = reinterpret_cast<GetTickCount64_t>(
+    GetProcAddress(kernelDLL, "GetTickCount64"));
+  if (!sGetTickCount64) {
+    // If the platform does not support the GetTickCount64 (Windows XP doesn't),
+    // then use our fallback implementation based on GetTickCount.
+    sGetTickCount64 = MozGetTickCount64;
+  }
+
   InitializeCriticalSectionAndSpinCount(&sTimeStampLock, kLockSpinCount);
 
   sHasStableTSC = HasStableTSC();
@@ -460,10 +504,10 @@ TimeStamp::Startup()
   LARGE_INTEGER freq;
   sUseQPC = ::QueryPerformanceFrequency(&freq);
   if (!sUseQPC) {
-    // No Performance Counter.  Fall back to use GetTickCount64.
+    // No Performance Counter.  Fall back to use GetTickCount.
     InitResolution();
 
-    LOG(("TimeStamp: using GetTickCount64"));
+    LOG(("TimeStamp: using GetTickCount"));
     return;
   }
 
@@ -490,7 +534,7 @@ TimeStamp::Now(bool aHighResolution)
 
   // Both values are in [mt] units.
   ULONGLONG QPC = useQPC ? PerformanceCounter() : uint64_t(0);
-  ULONGLONG GTC = ms2mt(GetTickCount64());
+  ULONGLONG GTC = ms2mt(sGetTickCount64());
   return TimeStamp(TimeStampValue(GTC, QPC, useQPC));
 }
 
diff --git a/netwerk/base/nsSocketTransport2.cpp b/netwerk/base/nsSocketTransport2.cpp
index 184757d33..1bfd1fc91 100644
--- a/netwerk/base/nsSocketTransport2.cpp
+++ b/netwerk/base/nsSocketTransport2.cpp
@@ -40,6 +40,7 @@
 #include "xpcpublic.h"
 
 #if defined(XP_WIN)
+#include "mozilla/WindowsVersion.h"
 #include "ShutdownLayer.h"
 #endif
 
@@ -1723,6 +1724,21 @@ nsSocketTransport::OnSocketConnected()
         NS_ASSERTION(mFDref == 1, "wrong socket ref count");
         SetSocketName(mFD);
         mFDconnected = true;
+
+#ifdef XP_WIN
+        if (!IsWin2003OrLater()) { // windows xp
+            PRSocketOptionData opt;
+            opt.option = PR_SockOpt_RecvBufferSize;
+            if (PR_GetSocketOption(mFD, &opt) == PR_SUCCESS) {
+                SOCKET_LOG(("%p checking rwin on xp originally=%u\n",
+                            this, opt.value.recv_buffer_size));
+                if (opt.value.recv_buffer_size < 65535) {
+                    opt.value.recv_buffer_size = 65535;
+                    PR_SetSocketOption(mFD, &opt);
+                }
+            }
+        }
+#endif
     }
 
     // Ensure keepalive is configured correctly if previously enabled.
diff --git a/netwerk/base/nsSocketTransportService2.cpp b/netwerk/base/nsSocketTransportService2.cpp
index 068bf0eca..d2f20651e 100644
--- a/netwerk/base/nsSocketTransportService2.cpp
+++ b/netwerk/base/nsSocketTransportService2.cpp
@@ -28,6 +28,10 @@
 #include "nsIWidget.h"
 #include "mozilla/dom/FlyWebService.h"
 
+#if defined(XP_WIN)
+#include "mozilla/WindowsVersion.h"
+#endif
+
 namespace mozilla {
 namespace net {
 
@@ -1200,7 +1204,12 @@ nsSocketTransportService::UpdateSendBufferPref(nsIPrefBranch *pref)
     }
 
 #if defined(XP_WIN)
-    mSendBufferSize = 131072 * 4;
+    // If the pref is not set but this is windows set it depending on windows version
+    if (!IsWin2003OrLater()) { // windows xp
+        mSendBufferSize = 131072;
+    } else { // vista or later
+        mSendBufferSize = 131072 * 4;
+    }
 #endif
 }
 
diff --git a/netwerk/base/security-prefs.js b/netwerk/base/security-prefs.js
index 329a4c6b7..d1b56ce35 100644
--- a/netwerk/base/security-prefs.js
+++ b/netwerk/base/security-prefs.js
@@ -3,7 +3,7 @@
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 pref("security.tls.version.min", 1);
-pref("security.tls.version.max", 3);
+pref("security.tls.version.max", 4);
 pref("security.tls.version.fallback-limit", 3);
 pref("security.tls.insecure_fallback_hosts", "");
 pref("security.tls.unrestricted_rc4_fallback", false);
diff --git a/netwerk/test/TestUDPSocket.cpp b/netwerk/test/TestUDPSocket.cpp
index 0ec43a650..9236d2ea3 100644
--- a/netwerk/test/TestUDPSocket.cpp
+++ b/netwerk/test/TestUDPSocket.cpp
@@ -13,6 +13,9 @@
 #include "nsIScriptSecurityManager.h"
 #include "nsITimer.h"
 #include "mozilla/net/DNS.h"
+#ifdef XP_WIN
+#include "mozilla/WindowsVersion.h"
+#endif
 #include "prerror.h"
 
 #define REQUEST  0x68656c6f
@@ -331,6 +334,16 @@ main(int32_t argc, char *argv[])
   }
   RefPtr<MulticastTimerCallback> timerCb = new MulticastTimerCallback();
 
+  // The following multicast tests using multiple sockets require a firewall
+  // exception on Windows XP (the earliest version of Windows we now support)
+  // before they pass. For now, we'll skip them here. Later versions of Windows
+  // (Win2003 and onward) don't seem to have this issue.
+#ifdef XP_WIN
+  if (!mozilla::IsWin2003OrLater()) {   // i.e. if it is WinXP
+    goto close;
+  }
+#endif
+
   // Join multicast group
   printf("Joining multicast group\n");
   phase = TEST_MULTICAST;
diff --git a/netwerk/wifi/moz.build b/netwerk/wifi/moz.build
index e3edb0842..b6ddd2139 100644
--- a/netwerk/wifi/moz.build
+++ b/netwerk/wifi/moz.build
@@ -45,6 +45,7 @@ elif CONFIG['OS_ARCH'] == 'WINNT':
         'nsWifiScannerWin.cpp',
         'win_wifiScanner.cpp',
         'win_wlanLibrary.cpp',
+        'win_xp_wifiScanner.cpp'
     ]
 elif CONFIG['OS_ARCH'] == 'SunOS':
     CXXFLAGS += CONFIG['GLIB_CFLAGS']
diff --git a/netwerk/wifi/nsWifiMonitor.h b/netwerk/wifi/nsWifiMonitor.h
index 665798efc..3783d38bd 100644
--- a/netwerk/wifi/nsWifiMonitor.h
+++ b/netwerk/wifi/nsWifiMonitor.h
@@ -76,7 +76,7 @@ class nsWifiMonitor final : nsIRunnable, nsIWifiMonitor, nsIObserver
   mozilla::ReentrantMonitor mReentrantMonitor;
 
 #ifdef XP_WIN
-  nsAutoPtr<WinWifiScanner> mWinWifiScanner;
+  nsAutoPtr<WindowsWifiScannerInterface> mWinWifiScanner;
 #endif
 };
 #else
diff --git a/netwerk/wifi/nsWifiScannerWin.cpp b/netwerk/wifi/nsWifiScannerWin.cpp
index 6089c45c6..ef18706e4 100644
--- a/netwerk/wifi/nsWifiScannerWin.cpp
+++ b/netwerk/wifi/nsWifiScannerWin.cpp
@@ -12,6 +12,8 @@
 #include "nsServiceManagerUtils.h"
 #include "nsWifiAccessPoint.h"
 #include "win_wifiScanner.h"
+#include "win_xp_wifiScanner.h"
+#include "mozilla/WindowsVersion.h"
 
 using namespace mozilla;
 
@@ -29,7 +31,14 @@ nsresult
 nsWifiMonitor::DoScan()
 {
     if (!mWinWifiScanner) {
-      mWinWifiScanner = new WinWifiScanner();
+      if (IsWin2003OrLater()) {
+        mWinWifiScanner = new WinWifiScanner();
+        LOG(("Using Windows 2003+ wifi scanner."));
+      } else {
+        mWinWifiScanner = new WinXPWifiScanner();
+        LOG(("Using Windows XP wifi scanner."));
+      }
+
       if (!mWinWifiScanner) {
         // TODO: Probably return OOM error
         return NS_ERROR_FAILURE;
diff --git a/netwerk/wifi/win_wifiScanner.h b/netwerk/wifi/win_wifiScanner.h
index 79b1bf132..b43c23899 100644
--- a/netwerk/wifi/win_wifiScanner.h
+++ b/netwerk/wifi/win_wifiScanner.h
@@ -11,10 +11,19 @@
 
 class nsWifiAccessPoint;
 
-class WinWifiScanner final {
+// This class allows the wifi monitor to use WinWifiScanner and WinXPWifiScanner interchangeably.
+class WindowsWifiScannerInterface {
+public:
+  virtual ~WindowsWifiScannerInterface() {}
+
+  virtual nsresult GetAccessPointsFromWLAN(nsCOMArray<nsWifiAccessPoint> &accessPoints) = 0;
+};
+
+
+class WinWifiScanner : public WindowsWifiScannerInterface {
  public:
   WinWifiScanner();
-  ~WinWifiScanner();
+  virtual ~WinWifiScanner();
 
   /**
    * GetAccessPointsFromWLAN
diff --git a/netwerk/wifi/win_xp_wifiScanner.cpp b/netwerk/wifi/win_xp_wifiScanner.cpp
new file mode 100644
index 000000000..4dcd34034
--- /dev/null
+++ b/netwerk/wifi/win_xp_wifiScanner.cpp
@@ -0,0 +1,399 @@
+// Copyright (c) 2010 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Windows Vista uses the Native Wifi (WLAN) API for accessing WiFi cards. See
+// http://msdn.microsoft.com/en-us/library/ms705945(VS.85).aspx. Windows XP
+// Service Pack 3 (and Windows XP Service Pack 2, if upgraded with a hot fix)
+// also support a limited version of the WLAN API. See
+// http://msdn.microsoft.com/en-us/library/bb204766.aspx. The WLAN API uses
+// wlanapi.h, which is not part of the SDK used by Gears, so is replicated
+// locally using data from the MSDN.
+//\
+// Windows XP from Service Pack 2 onwards supports the Wireless Zero
+// Configuration (WZC) programming interface. See
+// http://msdn.microsoft.com/en-us/library/ms706587(VS.85).aspx.
+//
+// The MSDN recommends that one use the WLAN API where available, and WZC
+// otherwise.
+//
+// However, it seems that WZC fails for some wireless cards. Also, WLAN seems
+// not to work on XP SP3. So we use WLAN on Vista, and use NDIS directly
+// otherwise.
+
+// MOZILLA NOTE:
+// This code is ported from chromium:
+// https://chromium.googlesource.com/chromium/src/+/master/content/browser/geolocation/wifi_data_provider_win.cc
+// Based on changeset 42c5878
+
+#include "win_xp_wifiScanner.h"
+#include "nsWifiAccessPoint.h"
+#include <windows.h>
+#include <winioctl.h>
+#include <wlanapi.h>
+#include <string>
+#include <vector>
+
+// Taken from ndis.h for WinCE.
+#define NDIS_STATUS_INVALID_LENGTH   ((NDIS_STATUS)0xC0010014L)
+#define NDIS_STATUS_BUFFER_TOO_SHORT ((NDIS_STATUS)0xC0010016L)
+
+namespace {
+// The limits on the size of the buffer used for the OID query.
+const int kInitialBufferSize = 2 << 12;  // Good for about 50 APs.
+const int kMaximumBufferSize = 2 << 20;  // 2MB
+
+// Length for generic string buffers passed to Win32 APIs.
+const int kStringLength = 512;
+
+// WlanOpenHandle
+typedef DWORD (WINAPI* WlanOpenHandleFunction)(DWORD dwClientVersion,
+                                               PVOID pReserved,
+                                               PDWORD pdwNegotiatedVersion,
+                                               PHANDLE phClientHandle);
+
+// WlanEnumInterfaces
+typedef DWORD (WINAPI* WlanEnumInterfacesFunction)(
+    HANDLE hClientHandle,
+    PVOID pReserved,
+    PWLAN_INTERFACE_INFO_LIST* ppInterfaceList);
+
+// WlanGetNetworkBssList
+typedef DWORD (WINAPI* WlanGetNetworkBssListFunction)(
+    HANDLE hClientHandle,
+    const GUID* pInterfaceGuid,
+    const  PDOT11_SSID pDot11Ssid,
+    DOT11_BSS_TYPE dot11BssType,
+    BOOL bSecurityEnabled,
+    PVOID pReserved,
+    PWLAN_BSS_LIST* ppWlanBssList
+);
+
+// WlanFreeMemory
+typedef VOID (WINAPI* WlanFreeMemoryFunction)(PVOID pMemory);
+
+// WlanCloseHandle
+typedef DWORD (WINAPI* WlanCloseHandleFunction)(HANDLE hClientHandle,
+                                                PVOID pReserved);
+
+// Extracts data for an access point and converts to Gears format.
+bool UndefineDosDevice(const std::string& device_name);
+bool DefineDosDeviceIfNotExists(const std::string& device_name);
+HANDLE GetFileHandle(const std::string& device_name);
+// Makes the OID query and returns a Win32 error code.
+int PerformQuery(HANDLE adapter_handle, std::vector<char>& buffer, DWORD* bytes_out);
+bool ResizeBuffer(size_t requested_size, std::vector<char>& buffer);
+// Gets the system directory and appends a trailing slash if not already
+// present.
+bool GetSystemDirectory(std::string* path);
+
+bool ConvertToAccessPointData(const NDIS_WLAN_BSSID& data, nsWifiAccessPoint* access_point_data);
+int GetDataFromBssIdList(const NDIS_802_11_BSSID_LIST& bss_id_list,
+                         int list_size,
+                         nsCOMArray<nsWifiAccessPoint>& outData);
+} // namespace
+
+class WindowsNdisApi
+{
+public:
+  virtual ~WindowsNdisApi();
+  static WindowsNdisApi* Create();
+  virtual bool GetAccessPointData(nsCOMArray<nsWifiAccessPoint>& outData);
+
+private:
+  static bool GetInterfacesNDIS(std::vector<std::string>& interface_service_names_out);
+  // Swaps in content of the vector passed
+  explicit WindowsNdisApi(std::vector<std::string>* interface_service_names);
+  bool GetInterfaceDataNDIS(HANDLE adapter_handle, nsCOMArray<nsWifiAccessPoint>& outData);
+  // NDIS variables.
+  std::vector<std::string> interface_service_names_;
+  std::vector<char> _buffer;
+};
+
+// WindowsNdisApi
+WindowsNdisApi::WindowsNdisApi(
+    std::vector<std::string>* interface_service_names)
+    : _buffer(kInitialBufferSize) {
+  interface_service_names_.swap(*interface_service_names);
+}
+
+WindowsNdisApi::~WindowsNdisApi() {
+}
+
+WindowsNdisApi* WindowsNdisApi::Create() {
+  std::vector<std::string> interface_service_names;
+  if (GetInterfacesNDIS(interface_service_names)) {
+    return new WindowsNdisApi(&interface_service_names);
+  }
+  return NULL;
+}
+
+bool WindowsNdisApi::GetAccessPointData(nsCOMArray<nsWifiAccessPoint>& outData) {
+  int interfaces_failed = 0;
+  int interfaces_succeeded = 0;
+
+  for (int i = 0; i < static_cast<int>(interface_service_names_.size()); ++i) {
+    // First, check that we have a DOS device for this adapter.
+    if (!DefineDosDeviceIfNotExists(interface_service_names_[i])) {
+      continue;
+    }
+
+    // Get the handle to the device. This will fail if the named device is not
+    // valid.
+    HANDLE adapter_handle = GetFileHandle(interface_service_names_[i]);
+    if (adapter_handle == INVALID_HANDLE_VALUE) {
+      continue;
+    }
+
+    // Get the data.
+    if (GetInterfaceDataNDIS(adapter_handle, outData)) {
+      ++interfaces_succeeded;
+    } else {
+      ++interfaces_failed;
+    }
+
+    // Clean up.
+    CloseHandle(adapter_handle);
+    UndefineDosDevice(interface_service_names_[i]);
+  }
+
+  // Return true if at least one interface succeeded, or at the very least none
+  // failed.
+  return interfaces_succeeded > 0 || interfaces_failed == 0;
+}
+
+bool WindowsNdisApi::GetInterfacesNDIS(std::vector<std::string>& interface_service_names_out) {
+  HKEY network_cards_key = NULL;
+  if (RegOpenKeyEx(
+      HKEY_LOCAL_MACHINE,
+      "Software\\Microsoft\\Windows NT\\CurrentVersion\\NetworkCards",
+      0,
+      KEY_READ,
+      &network_cards_key) != ERROR_SUCCESS) {
+    return false;
+  }
+  if (!network_cards_key) {
+    return false;
+  }
+
+  for (int i = 0; ; ++i) {
+    TCHAR name[kStringLength];
+    DWORD name_size = kStringLength;
+    FILETIME time;
+    if (RegEnumKeyEx(network_cards_key,
+                     i,
+                     name,
+                     &name_size,
+                     NULL,
+                     NULL,
+                     NULL,
+                     &time) != ERROR_SUCCESS) {
+      break;
+    }
+    HKEY hardware_key = NULL;
+    if (RegOpenKeyEx(network_cards_key, name, 0, KEY_READ, &hardware_key) !=
+        ERROR_SUCCESS) {
+      break;
+    }
+    if (!hardware_key) {
+      return false;
+    }
+
+    TCHAR service_name[kStringLength];
+    DWORD service_name_size = kStringLength;
+    DWORD type = 0;
+    if (RegQueryValueEx(hardware_key,
+                        "ServiceName",
+                        NULL,
+                        &type,
+                        reinterpret_cast<LPBYTE>(service_name),
+                        &service_name_size) == ERROR_SUCCESS) {
+      interface_service_names_out.push_back(service_name);
+    }
+    RegCloseKey(hardware_key);
+  }
+
+  RegCloseKey(network_cards_key);
+  return true;
+}
+
+bool WindowsNdisApi::GetInterfaceDataNDIS(HANDLE adapter_handle,
+                                          nsCOMArray<nsWifiAccessPoint>& outData) {
+  DWORD bytes_out;
+  int result;
+
+  while (true) {
+    bytes_out = 0;
+    result = PerformQuery(adapter_handle, _buffer, &bytes_out);
+    if (result == ERROR_GEN_FAILURE ||  // Returned by some Intel cards.
+        result == ERROR_INSUFFICIENT_BUFFER ||
+        result == ERROR_MORE_DATA ||
+        result == NDIS_STATUS_INVALID_LENGTH ||
+        result == NDIS_STATUS_BUFFER_TOO_SHORT) {
+      // The buffer we supplied is too small, so increase it. bytes_out should
+      // provide the required buffer size, but this is not always the case.
+      size_t newSize;
+      if (bytes_out > static_cast<DWORD>(_buffer.size())) {
+        newSize = bytes_out;
+      } else {
+        newSize = _buffer.size() * 2;
+      }
+      if (!ResizeBuffer(newSize, _buffer)) {
+        return false;
+      }
+    } else {
+      // The buffer is not too small.
+      break;
+    }
+  }
+
+  if (result == ERROR_SUCCESS) {
+    NDIS_802_11_BSSID_LIST* bssid_list =
+        reinterpret_cast<NDIS_802_11_BSSID_LIST*>(&_buffer[0]);
+    GetDataFromBssIdList(*bssid_list, _buffer.size(), outData);
+  }
+
+  return true;
+}
+
+namespace {
+#define uint8 unsigned char
+
+bool ConvertToAccessPointData(const NDIS_WLAN_BSSID& data, nsWifiAccessPoint* access_point_data)
+{
+  access_point_data->setMac(data.MacAddress);
+  access_point_data->setSignal(data.Rssi);
+  // Note that _NDIS_802_11_SSID::Ssid::Ssid is not null-terminated.
+  const unsigned char* ssid = data.Ssid.Ssid;
+  size_t len = data.Ssid.SsidLength;
+  access_point_data->setSSID(reinterpret_cast<const char*>(ssid), len);
+  return true;
+}
+
+int GetDataFromBssIdList(const NDIS_802_11_BSSID_LIST& bss_id_list,
+                         int list_size,
+                         nsCOMArray<nsWifiAccessPoint>& outData)
+{
+  // Walk through the BSS IDs.
+  int found = 0;
+  const uint8* iterator = reinterpret_cast<const uint8*>(&bss_id_list.Bssid[0]);
+  const uint8* end_of_buffer =
+      reinterpret_cast<const uint8*>(&bss_id_list) + list_size;
+  for (int i = 0; i < static_cast<int>(bss_id_list.NumberOfItems); ++i) {
+    const NDIS_WLAN_BSSID *bss_id =
+        reinterpret_cast<const NDIS_WLAN_BSSID*>(iterator);
+    // Check that the length of this BSS ID is reasonable.
+    if (bss_id->Length < sizeof(NDIS_WLAN_BSSID) ||
+        iterator + bss_id->Length > end_of_buffer) {
+      break;
+    }
+    nsWifiAccessPoint* ap = new nsWifiAccessPoint();
+    if (ConvertToAccessPointData(*bss_id, ap)) {
+      outData.AppendObject(ap);
+      ++found;
+    }
+    // Move to the next BSS ID.
+    iterator += bss_id->Length;
+  }
+  return found;
+}
+
+
+bool UndefineDosDevice(const std::string& device_name) {
+  // We remove only the mapping we use, that is \Device\<device_name>.
+  std::string target_path = "\\Device\\" + device_name;
+  return DefineDosDevice(
+      DDD_RAW_TARGET_PATH | DDD_REMOVE_DEFINITION | DDD_EXACT_MATCH_ON_REMOVE,
+      device_name.c_str(),
+      target_path.c_str()) == TRUE;
+}
+
+bool DefineDosDeviceIfNotExists(const std::string& device_name) {
+  // We create a DOS device name for the device at \Device\<device_name>.
+  std::string target_path = "\\Device\\" + device_name;
+
+  TCHAR target[kStringLength];
+  if (QueryDosDevice(device_name.c_str(), target, kStringLength) > 0 &&
+      target_path.compare(target) == 0) {
+    // Device already exists.
+    return true;
+  }
+
+  if (GetLastError() != ERROR_FILE_NOT_FOUND) {
+    return false;
+  }
+
+  if (!DefineDosDevice(DDD_RAW_TARGET_PATH,
+                       device_name.c_str(),
+                       target_path.c_str())) {
+    return false;
+  }
+
+  // Check that the device is really there.
+  return QueryDosDevice(device_name.c_str(), target, kStringLength) > 0 &&
+      target_path.compare(target) == 0;
+}
+
+HANDLE GetFileHandle(const std::string& device_name) {
+  // We access a device with DOS path \Device\<device_name> at
+  // \\.\<device_name>.
+  std::string formatted_device_name = "\\\\.\\" + device_name;
+
+  return CreateFile(formatted_device_name.c_str(),
+                    GENERIC_READ,
+                    FILE_SHARE_READ | FILE_SHARE_WRITE,  // share mode
+                    0,  // security attributes
+                    OPEN_EXISTING,
+                    0,  // flags and attributes
+                    INVALID_HANDLE_VALUE);
+}
+
+int PerformQuery(HANDLE adapter_handle,
+                 std::vector<char>& buffer,
+                 DWORD* bytes_out) {
+  DWORD oid = OID_802_11_BSSID_LIST;
+  if (!DeviceIoControl(adapter_handle,
+                       IOCTL_NDIS_QUERY_GLOBAL_STATS,
+                       &oid,
+                       sizeof(oid),
+                       &buffer[0],
+                       buffer.size(),
+                       bytes_out,
+                       NULL)) {
+    return GetLastError();
+  }
+  return ERROR_SUCCESS;
+}
+
+bool ResizeBuffer(size_t requested_size, std::vector<char>& buffer) {
+  if (requested_size > kMaximumBufferSize) {
+    buffer.resize(kInitialBufferSize);
+    return false;
+  }
+
+  buffer.resize(requested_size);
+  return true;
+}
+
+} // namespace
+
+
+nsresult
+WinXPWifiScanner::GetAccessPointsFromWLAN(nsCOMArray<nsWifiAccessPoint> &accessPoints)
+{
+  if (!mImplementation) {
+    mImplementation = WindowsNdisApi::Create();
+    if (!mImplementation) {
+      return NS_ERROR_FAILURE;
+    }
+  }
+
+  accessPoints.Clear();
+  bool isOk = mImplementation->GetAccessPointData(accessPoints);
+  if (!isOk) {
+    mImplementation = 0;
+    return NS_ERROR_FAILURE;
+  }
+
+  return NS_OK;
+}
diff --git a/netwerk/wifi/win_xp_wifiScanner.h b/netwerk/wifi/win_xp_wifiScanner.h
new file mode 100644
index 000000000..33ae4cae4
--- /dev/null
+++ b/netwerk/wifi/win_xp_wifiScanner.h
@@ -0,0 +1,25 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+* License, v. 2.0. If a copy of the MPL was not distributed with this
+* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+#ifndef WINXPWIFISCANNER_H_
+#define WINXPWIFISCANNER_H_
+
+#include "nsAutoPtr.h"
+#include "nsCOMArray.h"
+#include "win_wifiScanner.h"
+
+class nsWifiAccessPoint;
+class WindowsNdisApi;
+
+// This class is wrapper into the Chromium WindowNdisApi class for scanning wifis
+// on Windows XP. When Firefox drops XP support, this code can go.
+class WinXPWifiScanner : public WindowsWifiScannerInterface {
+public:
+  nsresult GetAccessPointsFromWLAN(nsCOMArray<nsWifiAccessPoint> &accessPoints);
+  virtual ~WinXPWifiScanner() {}
+private:
+  nsAutoPtr<WindowsNdisApi> mImplementation;
+};
+
+#endif
\ No newline at end of file
diff --git a/old-configure.in b/old-configure.in
index d8a6d01f0..6d099418d 100644
--- a/old-configure.in
+++ b/old-configure.in
@@ -212,7 +212,7 @@ dnl ========================================================
 dnl Special win32 checks
 dnl ========================================================
 
-WINVER=601
+WINVER=502
 
 case "$target" in
 *-mingw*)
@@ -1013,7 +1013,12 @@ case "$target" in
         IMPORT_LIB_SUFFIX=lib
         MKSHLIB='$(LD) -NOLOGO -DLL -OUT:$@ -PDB:$(LINK_PDBFILE) $(DSO_LDOPTS)'
         MKCSHLIB='$(LD) -NOLOGO -DLL -OUT:$@ -PDB:$(LINK_PDBFILE) $(DSO_LDOPTS)'
-        WIN32_SUBSYSTEM_VERSION=6.01
+        dnl Set subsystem version 5 for Windows XP.
+        if test "$CPU_ARCH" = "x86"; then
+            WIN32_SUBSYSTEM_VERSION=5.01
+        else
+            WIN32_SUBSYSTEM_VERSION=5.02
+        fi
         WIN32_CONSOLE_EXE_LDFLAGS=-SUBSYSTEM:CONSOLE,$WIN32_SUBSYSTEM_VERSION
         WIN32_GUI_EXE_LDFLAGS=-SUBSYSTEM:WINDOWS,$WIN32_SUBSYSTEM_VERSION
         DSO_LDOPTS=-SUBSYSTEM:WINDOWS,$WIN32_SUBSYSTEM_VERSION
@@ -2109,7 +2114,7 @@ MOZ_ARG_WITH_BOOL(system-nss,
     _USE_SYSTEM_NSS=1 )
 
 if test -n "$_USE_SYSTEM_NSS"; then
-    AM_PATH_NSS(3.28.6, [MOZ_SYSTEM_NSS=1], [AC_MSG_ERROR([you don't have NSS installed or your version is too old])])
+    AM_PATH_NSS(3.35, [MOZ_SYSTEM_NSS=1], [AC_MSG_ERROR([you don't have NSS installed or your version is too old])])
 fi
 
 if test -n "$MOZ_SYSTEM_NSS"; then
@@ -3342,6 +3347,9 @@ MOZ_D3D_CPU_SUFFIX=
 MOZ_HAS_WINSDK_WITH_D3D=
 MOZ_D3DCOMPILER_VISTA_DLL=
 MOZ_D3DCOMPILER_VISTA_DLL_PATH=
+MOZ_DIRECTX_SDK_PATH=
+MOZ_D3DCOMPILER_XP_DLL=
+MOZ_D3DCOMPILER_XP_CAB=
 
 if test "$COMPILE_ENVIRONMENT" ; then
 case "$target_os" in
@@ -3360,6 +3368,11 @@ x86_64)
   ;;
 esac
 
+MOZ_ARG_ENABLE_BOOL(require-all-d3dc-versions,
+[  --enable-require-all-d3dc-versions Require all versions of the D3D compiler needed for supported Windows systems.],
+    MOZ_REQUIRE_ALL_D3DCS=1,
+    MOZ_REQUIRE_ALL_D3DCS=)
+
 # This is potentially set in external mozconfig files; if it's set,
 # then the build exposes the "webgl" context name, which is reserved
 # for conformant implementations.
@@ -3417,19 +3430,89 @@ if test -n "$MOZ_ANGLE_RENDERER"; then
     MOZ_CHECK_HEADER(d3d10.h, MOZ_HAS_WINSDK_WITH_D3D=1)
   fi
 
+  ######################################
+  # Find _43 for use by XP.
+
+  if test "$HAVE_64BIT_BUILD"; then
+    AC_MSG_RESULT([We are building a 64-bit binary, skip checking d3dcompiler_43.])
+  else
+    # Get the SDK path from the registry.
+    # First try to get the June 2010 SDK
+    MOZ_DIRECTX_SDK_REG_KEY=`reg query 'HKLM\Software\Microsoft\DirectX' //s | grep 'Microsoft DirectX SDK (June 2010)' | head -n 1`
+    if test -z "$MOZ_DIRECTX_SDK_REG_KEY" ; then
+      # Otherwise just take whatever comes first
+      MOZ_DIRECTX_SDK_REG_KEY=`reg query 'HKLM\Software\Microsoft\DirectX' //s | grep 'Microsoft DirectX SDK' | head -n 1`
+    fi
+    MOZ_DIRECTX_SDK_PATH=`reg query "$MOZ_DIRECTX_SDK_REG_KEY" //v InstallPath | grep REG_SZ | sed 's/.*\([[a-zA-Z]]\)\\:\\\\/\\1\\:\\\\/' | sed 's,\\\\,/,g'`
+
+    if test -n "$MOZ_DIRECTX_SDK_PATH" &&
+       test -f "$MOZ_DIRECTX_SDK_PATH"/lib/$MOZ_D3D_CPU_SUFFIX/dxguid.lib ; then
+      AC_MSG_RESULT([Found DirectX SDK via registry, using $MOZ_DIRECTX_SDK_PATH])
+    else
+      AC_MSG_RESULT([DirectX SDK not found.])
+      MOZ_DIRECTX_SDK_PATH=
+    fi
+
+    # Check that our DirectX SDK is acceptable.
+    if test -n "$MOZ_DIRECTX_SDK_PATH"; then
+      if test -n "`echo $MOZ_DIRECTX_SDK_REG_KEY | grep 'February 2010'`" ; then
+        AC_MSG_RESULT([Found the February 2010 DirectX SDK, which is unacceptable to ANGLE.])
+        MOZ_DIRECTX_SDK_PATH=
+      fi
+    fi
+
+    if test -n "$MOZ_DIRECTX_SDK_PATH"; then
+      # Find a D3D compiler DLL in the DirectX SDK, if we didn't find one already.
+      # Get the SDK numeric version (e.g. 43) by looking at the dependencies of d3dx9.lib
+      MOZ_D3DX9_VERSION=`dumpbin //headers "$MOZ_DIRECTX_SDK_PATH"/lib/$MOZ_D3D_CPU_SUFFIX/d3dx9.lib | egrep d3dx9_[[0-9]][[0-9]]\.dll | head -n1 | sed 's/.*\([[0-9]][[0-9]]\).*/\\1/g'`
+
+      if test -n "$MOZ_D3DX9_VERSION" ; then
+        MOZ_D3DCOMPILER_XP_CAB=`find "$MOZ_DIRECTX_SDK_PATH"/Redist -name *D3DCompiler_${MOZ_D3DX9_VERSION}_${MOZ_D3D_CPU_SUFFIX}.cab | head -n1`
+
+        if test -n "$MOZ_D3DCOMPILER_XP_CAB"; then
+          MOZ_D3DCOMPILER_XP_DLL=D3DCompiler_$MOZ_D3DX9_VERSION.dll
+        else
+          AC_MSG_RESULT([Couldn't find a CAB containing the D3D compiler DLL.])
+          AC_MSG_ERROR([DirectX SDK at "$MOZ_DIRECTX_SDK_PATH" appears broken.])
+          MOZ_DIRECTX_SDK_PATH=
+        fi
+      else
+        AC_MSG_RESULT([Couldn't determine the D3DX9 version for the DirectX SDK.])
+        MOZ_DIRECTX_SDK_PATH=
+      fi
+    else
+      AC_MSG_RESULT([Couldn't find an acceptable DirectX SDK for ANGLE, needed for d3dcompiler_43.])
+    fi
+  fi
+
   ######################################
   # Check that we found what we needed.
   MOZ_FOUND_A_D3D_COMPILER=
+  MOZ_FOUND_BOTH_D3D_COMPILERS=1
 
   if test -n "$MOZ_D3DCOMPILER_VISTA_DLL"; then
     MOZ_FOUND_A_D3D_COMPILER=1
     AC_MSG_RESULT([Found d3dcompiler DLL for Vista+: $MOZ_D3DCOMPILER_VISTA_DLL])
+  else
+    MOZ_FOUND_BOTH_D3D_COMPILERS=
+  fi
+
+  if test -n "$MOZ_D3DCOMPILER_XP_DLL"; then
+    MOZ_FOUND_A_D3D_COMPILER=1
+    AC_MSG_RESULT([Found d3dcompiler DLL for XP: $MOZ_D3DCOMPILER_XP_DLL])
+  else
+    MOZ_FOUND_BOTH_D3D_COMPILERS=
   fi
 
   if test -z "$CROSS_COMPILE"; then
     if test -z "MOZ_FOUND_A_D3D_COMPILER"; then
       AC_MSG_ERROR([Couldn't find an acceptable D3D compiler DLL.])
     fi
+
+    if test -n "$MOZ_REQUIRE_ALL_D3DCS" -a -z "$MOZ_FOUND_BOTH_D3D_COMPILERS"; then
+      AC_MSG_ERROR([Both D3D compilers _43 and _46+ are required by --enable-require-d3d-compilers.])
+      AC_MSG_ERROR([  Install Windows SDK 8.0+, as well as DirectX SDK (June 2010 version or newer), or reconfigure without this flag.])
+    fi
   fi
 fi # MOZ_ANGLE_RENDERER
 
@@ -5259,6 +5342,9 @@ AC_SUBST(MOZ_D3D_CPU_SUFFIX)
 AC_SUBST(MOZ_HAS_WINSDK_WITH_D3D)
 AC_SUBST(MOZ_D3DCOMPILER_VISTA_DLL)
 AC_SUBST(MOZ_D3DCOMPILER_VISTA_DLL_PATH)
+AC_SUBST(MOZ_DIRECTX_SDK_PATH)
+AC_SUBST(MOZ_D3DCOMPILER_XP_DLL)
+AC_SUBST(MOZ_D3DCOMPILER_XP_CAB)
 
 AC_SUBST(MOZ_ANDROID_APPLICATION_CLASS)
 AC_SUBST(MOZ_ANDROID_BROWSER_INTENT_CLASS)
diff --git a/toolkit/components/alerts/nsAlertsService.cpp b/toolkit/components/alerts/nsAlertsService.cpp
index dd67ad983..35418dd17 100644
--- a/toolkit/components/alerts/nsAlertsService.cpp
+++ b/toolkit/components/alerts/nsAlertsService.cpp
@@ -22,10 +22,6 @@
 #include "nsIFaviconService.h"
 #endif // MOZ_PLACES
 
-#ifdef XP_WIN
-#include <shellapi.h>
-#endif
-
 using namespace mozilla;
 
 using mozilla::dom::ContentChild;
@@ -158,12 +154,23 @@ bool nsAlertsService::ShouldShowAlert()
   bool result = true;
 
 #ifdef XP_WIN
-  QUERY_USER_NOTIFICATION_STATE qstate;
-  if (SUCCEEDED(SHQueryUserNotificationState(&qstate))) {
-    if (qstate != QUNS_ACCEPTS_NOTIFICATIONS) {
-       result = false;
+  HMODULE shellDLL = ::LoadLibraryW(L"shell32.dll");
+  if (!shellDLL)
+    return result;
+
+  SHQueryUserNotificationStatePtr pSHQueryUserNotificationState =
+    (SHQueryUserNotificationStatePtr) ::GetProcAddress(shellDLL, "SHQueryUserNotificationState");
+
+  if (pSHQueryUserNotificationState) {
+    MOZ_QUERY_USER_NOTIFICATION_STATE qstate;
+    if (SUCCEEDED(pSHQueryUserNotificationState(&qstate))) {
+      if (qstate != QUNS_ACCEPTS_NOTIFICATIONS) {
+         result = false;
+      }
     }
   }
+
+  ::FreeLibrary(shellDLL);
 #endif
 
   return result;
diff --git a/toolkit/components/alerts/nsAlertsService.h b/toolkit/components/alerts/nsAlertsService.h
index d2b2e1e6c..3f23eaabf 100644
--- a/toolkit/components/alerts/nsAlertsService.h
+++ b/toolkit/components/alerts/nsAlertsService.h
@@ -10,6 +10,23 @@
 #include "nsCOMPtr.h"
 #include "nsXULAlerts.h"
 
+#ifdef XP_WIN
+typedef enum tagMOZ_QUERY_USER_NOTIFICATION_STATE {
+    QUNS_NOT_PRESENT = 1,
+    QUNS_BUSY = 2,
+    QUNS_RUNNING_D3D_FULL_SCREEN = 3,
+    QUNS_PRESENTATION_MODE = 4,
+    QUNS_ACCEPTS_NOTIFICATIONS = 5,
+    QUNS_QUIET_TIME = 6,
+    QUNS_IMMERSIVE = 7
+} MOZ_QUERY_USER_NOTIFICATION_STATE;
+
+extern "C" {
+// This function is Windows Vista or later
+typedef HRESULT (__stdcall *SHQueryUserNotificationStatePtr)(MOZ_QUERY_USER_NOTIFICATION_STATE *pquns);
+}
+#endif // defined(XP_WIN)
+
 class nsAlertsService : public nsIAlertsService,
                         public nsIAlertsDoNotDisturb
 {
diff --git a/toolkit/components/maintenanceservice/maintenanceservice.exe.manifest b/toolkit/components/maintenanceservice/maintenanceservice.exe.manifest
index e6bfba8ca..cb317c47d 100644
--- a/toolkit/components/maintenanceservice/maintenanceservice.exe.manifest
+++ b/toolkit/components/maintenanceservice/maintenanceservice.exe.manifest
@@ -20,6 +20,7 @@
       <supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}"/>
       <supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}"/>
       <supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"/>
+      <supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}"/>
     </application>
   </compatibility>
 </assembly>
diff --git a/toolkit/crashreporter/client/crashreporter.exe.manifest b/toolkit/crashreporter/client/crashreporter.exe.manifest
index e6b2ceefb..f8587bfad 100644
--- a/toolkit/crashreporter/client/crashreporter.exe.manifest
+++ b/toolkit/crashreporter/client/crashreporter.exe.manifest
@@ -32,6 +32,7 @@
       <supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}"/>
       <supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}"/>
       <supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"/>
+      <supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}"/>
     </application>
   </compatibility>
 </assembly>
diff --git a/toolkit/library/libxul.mk b/toolkit/library/libxul.mk
index 9e7e8beee..d918d9c84 100644
--- a/toolkit/library/libxul.mk
+++ b/toolkit/library/libxul.mk
@@ -16,6 +16,16 @@ EXTRA_DEPS += symverscript
 endif
 endif
 
+ifdef MOZ_WEBRTC
+ifeq (WINNT,$(OS_TARGET))
+ifndef MOZ_HAS_WINSDK_WITH_D3D
+OS_LDFLAGS += \
+  -LIBPATH:'$(MOZ_DIRECTX_SDK_PATH)/lib/$(MOZ_D3D_CPU_SUFFIX)' \
+  $(NULL)
+endif
+endif
+endif
+
 # Generate GDB pretty printer-autoload files only on Linux. OSX's GDB is
 # too old to support Python pretty-printers; if this changes, we could make
 # this 'ifdef GNU_CC'.
diff --git a/toolkit/mozapps/update/updater/updater.exe.comctl32.manifest b/toolkit/mozapps/update/updater/updater.exe.comctl32.manifest
index 6bb850199..9a6cdb565 100644
--- a/toolkit/mozapps/update/updater/updater.exe.comctl32.manifest
+++ b/toolkit/mozapps/update/updater/updater.exe.comctl32.manifest
@@ -32,6 +32,7 @@
       <supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}"/>
       <supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}"/>
       <supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"/>
+      <supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}"/>
     </application>
   </compatibility>
 </assembly>
diff --git a/toolkit/mozapps/update/updater/updater.exe.manifest b/toolkit/mozapps/update/updater/updater.exe.manifest
index 619b4abfe..cd229c954 100644
--- a/toolkit/mozapps/update/updater/updater.exe.manifest
+++ b/toolkit/mozapps/update/updater/updater.exe.manifest
@@ -20,6 +20,7 @@
       <supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}"/>
       <supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}"/>
       <supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"/>
+      <supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}"/>
     </application>
   </compatibility>
 </assembly>
diff --git a/toolkit/themes/windows/global/dirListing/folder-XP.png b/toolkit/themes/windows/global/dirListing/folder-XP.png
new file mode 100644
index 0000000000000000000000000000000000000000..102de5196014905f59909a9a0cb012c050e88ce3
GIT binary patch
literal 446
zcmV;v0YUzWP)<h;3K|Lk000e1NJLTq000mG000mO0{{R3C@l|D0000PbVXQnQ*UN;
zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBUyw@^$}MgRZ*?95-bgBj(xMdij?-o8_|
zgBi=8GSQ_r)2KStsyf-OJl?QA-?TyEwM662Yvayz<+w%l*>n8qpZ?2T{?=Rm;A{WZ
zTmRl-|K4N&-(vsYWB=f5|KM!@;%oopa{uUX|LA%D>2Lq(aR2Os|LueS?t1_3eE;xz
z|L~0e@r?iVhyV46|MrLf_K5%XnE&^f|NEi;{^bAu<^TVt|Np1||E~Z4yZ`^d|Nqth
z|LXt$_W%F+jt+$D00006bW%=J04AB4nW$<b>g@mk0E<aPK~xwS1;If|#6T1U!1_Op
z4kE%_L6>v?n}}{ag$f#z?q?MMfZCqG*9=hC8@#XY0~pSQmybu_b4ZA1_u#Fr2>`0b
zyzP|=MO<D-e$QHMwbgU`$;jH#DM=j<897d6nqB6$XXMx?=%l(ba{e`}tj>9tk(CLi
o$;wFjvQ#CVn5iBB-~<5h4_p{g+AqC$(f|Me07*qoM6N<$f_vfdTmS$7

literal 0
HcmV?d00001

diff --git a/toolkit/themes/windows/global/dirListing/local-XP.png b/toolkit/themes/windows/global/dirListing/local-XP.png
new file mode 100644
index 0000000000000000000000000000000000000000..99191f3a52643b28fc085d96ded3bfc143b58d3e
GIT binary patch
literal 688
zcmV;h0#E&kP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV0000PbVXQnQ*UN;
zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBU!Qb|NXRCwB?Q_F7CP!K(~ukARt^RSw<
zh(sg;iK?YSq6kq{0=@us-xaIo50F^#5R2|uW|hyOKY)aUga~cZ)=5BZ6XMwMgPB`O
zm36K(_u8JBGjq-zD_NFdktKL*wOVi1);B+<SstpYqO#<IVY3uS$l^Fd6h)X$r}P{n
zn4F_`{PkVC-F_<ps>^qt?d-h7k3$ufWnuH7Bhixth-N?-0h0h2{t9t&a)Qa^0zoi(
zL4_5SHfv?2cHeazJm0S1$)lU(S$qW$OhMHF!!Y1^9u!5OR9e1EVR@CdTBTCGr3n)=
z3QnnImgU+Qh))SdG?=2QYOr0eO1TXNSS=RIW}FE8Jf=z^DBwyUPP_)xiL9b17z_qf
zC`Qh-4GLLj4c6R(OHM$ew{PDgxQ+q(1YN%}*5Gm!px^JyE*MBREUs}+IIg!Egn1nG
zVpNv|w6Y-u^9QMHm#;Yp0*uFFnaFE28o@Ml*pBx=6iby2UC$v5LkgCc0xQSdRmnR^
z6e*r<+Y*pLOw*+JKX9D#hEO0p-|wSPm|-{^{u625QW7E|HF*YRtTgymLZWOsB1zKB
zvhwJ3Is{TcqtQUK*_3C!R>b=cpXMfScXw9`+3WSVn^et^*+SDKPj)arro&Y=x(y-3
zoYihuP_Nf<@cDrJnk}Z2i?iYIba{Jw3%>7DB9H2rfG$W#i@00=tFsP=N2lm^yLh_w
z7{3Q!&Xm2qy;o+g^jhe4fd_=z%2=pt#d!!)vh2nb_RXTvWjH<GR~G#nRV=vv3NQe+
W2@|N-=SkoI0000<MNUMnLSTXlaWq!|

literal 0
HcmV?d00001

diff --git a/toolkit/themes/windows/global/dirListing/remote-XP.png b/toolkit/themes/windows/global/dirListing/remote-XP.png
new file mode 100644
index 0000000000000000000000000000000000000000..4febb764bd8bfb05550289e9dbeff8b68a81afc5
GIT binary patch
literal 558
zcmV+}0@3}6P)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV0000PbVXQnQ*UN;
zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBUz&`Cr=RCwB)Q$0%qK@fd=7Y{!pC;<_%
z2$(|b1hKd9tFRV({RL`eW$7<CTd}bbE7Obq1RFJ0+KBNZ$z}I0x9iNV2__Ly7iM?g
z?#!Dvdvn4VgZ=$8gMW;@y)}_(g7x*;Z=H;B6DKkd(0rhQqmz=ow*>Wc*n-p3%U@+)
zT%2p|TME)t<HgHDtSlqf4~($&0oec;Ad3><O#xToIbxM|6U2$Ot0sjhtJF*i@NtcT
z6WUV_lqrdf8{Gs+tnK9hIV!rZlLZvWPmu9}hIT4!GMOT(bPy<Fz0FLZKu$FZ=<z<C
ziO~04b|z&XsovTZFq@LDu4+t&pTR6YA~Mf&r8P^JvOy|36iDUjswjt9GIIt@ARIyb
zg`izQ)g7+R43TG<w8GgpV}g9-{R4f8P6b3T7Tv*6Ds8l_nfDIEHc%5Q!k+(yAXWm!
z^XQL_EZl62`whbI!e*+x2b&D9uVtJ2^mH#TTS8P1Ng#H17dje=p13aiY;Zmw!1rrT
zK6Qej$IIulD3#*Sm_a1T>tR<TN%zFz($cua^YfD!9qqUK=jRCJa)d$wC>9^Xq+wbF
wtrB=_Zy%edr<)%u&*i3YaIhho_(OmJ0FMs*TL49VYybcN07*qoM6N<$f?<XAuK)l5

literal 0
HcmV?d00001

diff --git a/toolkit/themes/windows/global/dirListing/up-XP.png b/toolkit/themes/windows/global/dirListing/up-XP.png
new file mode 100644
index 0000000000000000000000000000000000000000..851502d47db2aa380cac1353b80a90e9b62f7e00
GIT binary patch
literal 607
zcmV-l0-*hgP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV0000PbVXQnQ*UN;
zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBU!0ZBwbRCwBqliy2JK@`WobG>#+YS$38
z)C5UHh?agpFBv|C5(Pa*FX2nQNB=?3(Oc-gCPF;~fov=FkU|(?2qF6*vJtgQyTzvM
z@140boile+ue#*GnIHF_&-a`;Gb4;KI83|pWMsm?B-!6U-~aF+9p~>Nle{)V<Gll^
zNO#;j(*F47()*zkz0u^ra4)<L4;!Dq;8(UV`SIb`1r{)U6Z896KR<`u>Kxvd)Z+8{
z)_DK$NgVGwid;T}t)FF73KE<7KiA#BeVMEf5@_p*qH`#Qr}HnzV`HNh{*lYT_a(fD
zgNF3s726X{0ZCThg$H%%7`cR8>IL4U*6jN7-5x9OY4-QFrxp0Vx<GyPz%snLb>5Cs
zsTC+Cp-3QdriN$du0j;EaDCt4^o1!38s(Zcql@h<1}rb2*Dey=AX6~LN9@Klz9sIE
z04<<aXcyT4{Ko^KxhB6L14VO9%xf^~8btz<(ytZ6xjRfz=ja^)O5e8v9JC5%U8%`I
zmdMIYQiO$U76zsCF|4O~(MHxuH7|i#S1E1PP$7|4w~{p9-98&yGsCRQ2|!k0s<pkb
zLuDB3?+TR$ssd(RO?!f(J5YAe>Q$IMV{pyuVAgFkNI;W7cLc%~ZdaZTA-Z{__TSF&
ta!_VP;?b$rkLmv{E)M&gTeZIe3;=Q30g4lb3~m4b002ovPDHLkV1hO&83F(R

literal 0
HcmV?d00001

diff --git a/toolkit/themes/windows/global/global.css b/toolkit/themes/windows/global/global.css
index aaddef882..20a190684 100644
--- a/toolkit/themes/windows/global/global.css
+++ b/toolkit/themes/windows/global/global.css
@@ -350,7 +350,9 @@ popupnotificationcontent {
   width: 20px;
 }
 
-@media (-moz-os-version: windows-win7) {
+@media (-moz-os-version: windows-xp),
+       (-moz-os-version: windows-vista),
+       (-moz-os-version: windows-win7) {
   .close-icon {
     -moz-image-region: rect(0, 16px, 16px, 0);
   }
@@ -384,7 +386,9 @@ popupnotificationcontent {
     -moz-image-region: rect(0, 120px, 40px, 80px);
   }
 
-  @media (-moz-os-version: windows-win7) {
+  @media (-moz-os-version: windows-xp),
+         (-moz-os-version: windows-vista),
+         (-moz-os-version: windows-win7) {
     .close-icon {
       -moz-image-region: rect(0, 32px, 32px, 0);
     }
diff --git a/toolkit/themes/windows/global/icons/Landscape-XP.png b/toolkit/themes/windows/global/icons/Landscape-XP.png
new file mode 100644
index 0000000000000000000000000000000000000000..cc43abdf313832534405357b93885ca075e98ff7
GIT binary patch
literal 801
zcmV++1K#|JP)<h;3K|Lk000e1NJLTq000;O000;W1^@s6;CDUv0000PbVXQnQ*UN;
zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBU!!%0LzRCwCdRlRE!K@gw2+q^_#G?>;j
z;zt@$8$}J;sD+|nk=DYfjg5bXAP9m)(aOI-QL#v+h4@E^iGsld4KE*F?(Xf(th;x+
z_vYPuAyo<&hTEOl`~Bu?cOzpA?B<Aeo#4g%Qaau;!-P~aF(D9QW%cA~yRDcAxYn0D
z%W08oSY6%vl4g4P$-^0L5~wl7YUbj>WDt9Z&G9&4ub?hBtStYA$Im{W)!F77yS&jy
zz)0Hy2fzSc6NtIiF&sX91lntz>v!)woljbOu05Zd)d4GJ#$IsuGdILkpv3*6k)cRC
zkRCq;#i5gzO}h3zvZE#-A3^YtgajRWFf^4oo90T;8gz=Vo&zkNn1<z}=dRql_2}d6
z*}35|Mb2dzvT3BEP6>-OhZ2_nu&_q(={vyk$~tVt$KXtB>B3aL_`wEpNx3$aKN}Aq
z2}-;Fx`C#<C)qm&lehvmzrBW>6yz@B6Qcls#?RZ?q;jn%BOnh30+2)v<l2q>2S(xk
zgR78c1e-hzoj8K_62QBcZ=HFxBtY&>i}ZY30zYqSw;n1b)M{d+drp+Cx3%VgFj5yA
zMKrQ4aR5O8CFpim%buzv@dTlrBxr~x0J7*Hxds7>q7h8w=2?lYu;@hEYIEvOQBB~z
zuOkq3s?UV!eupf9VRW}ctaP?j0_Xt+BmpQpCwME<CBKk3dj+DhjZF*AkYRs*djL%%
zf<{VF987H^AgTZr6-DJ?!`q&N=IyeT>w1{(!3#BDBQHC{c7v%?goBD~`a6eB!xkdo
za3lCGG8A_hM_T)0|Fe4}!o}xx8=dM3iTs)(aaK&VpM4Zg-?AP57j0^+O8xw`k-d60
zAEPe%o;LRGWLY*;ftXq!Jd7%DwaWxkb^T^Z9DQB*q3b8pUP@E0rFMG#cCZh6dpY|5
fAN}1X_$R;svdwfRJb~3A00000NkvXXu0mjf@GNvt

literal 0
HcmV?d00001

diff --git a/toolkit/themes/windows/global/icons/Portrait-XP.png b/toolkit/themes/windows/global/icons/Portrait-XP.png
new file mode 100644
index 0000000000000000000000000000000000000000..ce36e84132ef1bb8b55700ff6b7f389af8b75d6f
GIT binary patch
literal 837
zcmV-L1G@Z)P)<h;3K|Lk000e1NJLTq000;O000;W1^@s6;CDUv0000PbVXQnQ*UN;
zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBU!=Sf6CR7l5-mQRZmR}{s6udAlVag+?Y
zRCkJQM6yW;O0rQAC4vjLF8sI9jUPi00)a3S5CuPhAqg(bCN4z$2qON8IO?F%Izvx&
zb-jD9i>lZ4s_80IP`v6_)H(N_bMJkfni&8$|9LZ9>f5|{F%^$^4`vJpgH%OO@4*0+
zd{pr9<L0AbRvh{D`dOvpO2fnURMWFR?M~vC2AGw%8c6kf?cIBRS$X(Fk!}0|oc><~
z>V;`=jlk7Fs<kM3?EP*ZgHPk1FJ1iYe$rn!_51RLqMJZ{4IY6S6|hDGUde}Jh6leT
zUmYG>c=Gsf=iCVkde0(|Dg%wdqo~8`6}%|L(DQi&FAg1Hhb6}^pS$tz`3uX(Z{NC-
z&m_QX0%8$p9K9$gkYYUlBs_Qt@76xE+1t<e{nZ~2j9%Px&K-?2No#zY02w9N1e|j9
z6-lyfJA3>ZXP(_<Bq<{g>|BHoONW6yz^fT1`&y0&G-M&s^EW#dxq9s+!%W!FdB#1*
zU={wl`6s|)OBH#%wn!5bC=3b^n?r04ujSs(EoG0in(Q2N$OzAt(#!}nm>UQJs01k$
z`UxaS2SK<3Z~zV3du#e2TJMR0IZ(~gRsugBJ5g%_g@~g_B@kPbi9zl_q(}hQQl`~M
zQtKWA&5|Yd#vJsVqm`h@Hp?!ZHa3#QPxVB+l7OnUdyuVfAZ8OYr%i1b9g$DEJOS0O
zn5<@X2C<P-dQXZV9)t>J9R!l+jS_5_tTl*_0F~wt?4G8kh?W_|lIRSgMl)8vl;fsL
zA}i-nAv5$25o>e0hG`oPrcRSp{aB5@pQ;Xxnk*jMqRm4|3`8XF$iNWQrkOL&gCL0l
zruFnuz?E8Q%Pg8FWszMAr97@mdwpE4&NT@gHIW!>+X|zkL!#Gj*Rwk-_j|s`t(Hy6
zvTUvdGgK8bt;n@dQ?xQCOM33<^Z$xgf|cd-OU}6iKyOC1xt2c-_O-n)X6gz+Fg7R%
P00000NkvXXu0mjfqMmmk

literal 0
HcmV?d00001

diff --git a/toolkit/themes/windows/global/icons/Print-preview-XP.png b/toolkit/themes/windows/global/icons/Print-preview-XP.png
new file mode 100644
index 0000000000000000000000000000000000000000..6f4736737feb37c804685830cc5274e17a82b5a4
GIT binary patch
literal 715
zcmV;+0yO=JP)<h;3K|Lk000e1NJLTq001BW000mO1^@s6cL04^00006VoOIv00000
z008+zyMF)x010qNS#tmY07w7;07w8v$!k6U000Sga6xAP001BW000mGSiGuk0006g
zNkl<ZNXM;{KWh|07{-5dJBb!@ViAnm$aRWbp@k@doup1JvC&2=KY;iN5>beaX(ajy
z(xgeHg{_SWk|4P<K?vUM?fkcxon&`&5%+Z9V0Lfb=lMPFJ1as6tZ(jYoj)tD7NeYe
zIF|V^&ql*Sjz@(oa+Miv<+)39AGW^?mR4Ua?eZU&1UQqq`Fpo|^M5+H@o8}P$ARB?
z{BU*g_1cr|^nQJFXKSu2@1*CB;Afj45}+6tp=lTZ<H30lA+Ud7_;}%FzdIOiJbLhA
z@y*+(-xB=7?cQvqv{euZV6@Jf2aN;kBSa8_i`@<j`@0m^dRO@V>nk8mf^QQ<0_dU+
zpeyFuMVNm7GS_dw-d<pB<?|8f1o$>VVh2<d36%ov<Nokx!D+~~tr;}o+XhJhGc{Tl
z0j!IKE<^woAc#gnbsV5gkn#?g%rn{Cmga>8---V>0A@~X`(Ff!0LDq{1KJBrrDZmN
zwxG(rwNa#IR>D_Tn;;Uv8Y@j|m5-*$yeLhz11G@xIzfW3&Avqt3E-WRdV;x1ZFBK6
zQh;xaKo{!t$kgAB&2gR76`OQSI0A6iOWQP0`_f!H&;dka1gW+L)j}r%_>iSmDO(Xp
z$<rKx(C9#_t=)kZIubxBE3A)2sxot179HM=0G)<eo|{w4&)+lcig&;xkpkgCW)M6`
z56(hXK6@7rcbKgStSsLb(-_wPLI|Cg&))ru&eZES`z2O2p(d`K0000YdQ@0+Q*UN;
xcVTj6004N}b4<xkN>%X8O-xS>N=;0u1OP9b1=Ow#sZ9U?002ovPDHLkV1lBVF+2bO

literal 0
HcmV?d00001

diff --git a/toolkit/themes/windows/global/icons/Question-XP.png b/toolkit/themes/windows/global/icons/Question-XP.png
new file mode 100644
index 0000000000000000000000000000000000000000..c10004078bf4a9ab2ef06c178dcb7bf18030c944
GIT binary patch
literal 1693
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

literal 0
HcmV?d00001

diff --git a/toolkit/themes/windows/global/icons/Search-close-XP.png b/toolkit/themes/windows/global/icons/Search-close-XP.png
new file mode 100644
index 0000000000000000000000000000000000000000..39d800e1ae0765f7a5153b3001ffb17062d8da66
GIT binary patch
literal 586
zcmeAS@N?(olHy`uVBq!ia0vp^20$#p!3-qR3wWA=6lZ})WHFHT0Ash4*>)hovI56+
zAPrW{5S_K+E0D7~z$e7@)TvYd|NrNW*u)pMPS9zVc=0QV{AV)Zr?h(BYj?geEV{<$
zw~Q}%4Nz9VZJvPlVxSs{>_<Q~lIeG(ldb|)%EVj%s?=$HsoVHOzvjL{`E8&s0sE=4
zAxDk!F9A&kvVq0|xj-|4B0!tTGn2{Z{7j%`wUQveU<QU}80f|T>(;G%2?pZx^5y|`
zFeZ7syQoER%-9O#9QJf^4AD4$c2XpNlYu}>x!}`D!HiRX8^|fNtN;H${ifZOZ&%ID
zCVOt1sW0on_+Ms*X29wzS7*si^L}-D(%YRZDNFvaXY>mg)@0~xcxB_VK6+zqp&{d$
z(@o*GY|CB##C?Az^ik^d=UE&r`8W2*Rd0N`?7g{DzJZ@Qv&(}Ib@DC=);!UI8)hF9
zYkVOr_|c_+zr!LSR#%DdMR1RVzZJK};{F%?T(_TIV=RdJ$u493>gGh&Ra2^>HtzL!
zk?-4OY2RD_jN5YwfAd<2GEty+l&V4^N`mv#O3D+9QW+R3ZWa5S^!Ez=aK_iipV!OR
cXC(`R{v6gT>v&fB0#!43y85}Sb4q9e0CD{2%>V!Z

literal 0
HcmV?d00001

diff --git a/toolkit/themes/windows/global/icons/Search-glass-XP.png b/toolkit/themes/windows/global/icons/Search-glass-XP.png
new file mode 100644
index 0000000000000000000000000000000000000000..9eb0e259f23befe254f16d25a0c5e357d82b11ec
GIT binary patch
literal 1448
zcmV;Z1y}lsP)<h;3K|Lk000e1NJLTq001xm000mO1^@s6P_F#300009a7bBm0000;
z0000;07l7cJ^%m!33hNnX8-^IFaQ7m5CB_hsPzB<00v@9M??Ss00000`9r&Z000FA
zNkl<ZNXMO4YfKbp6x~FB`KKu+)!$93)Jhr)O0{c6TN{hzwG`Jj#26k?SQgr?hM<Dr
zf<R5DC|X!uUMXTNwX75$Xpl$PU7)QF@i9K5r6oj(LZP<VcHPr^XGSUOK$iYEIrGhT
zZ}yx!XTKR80NqsBW&K`H5C|f{qcX4c)Ac<?QkqRq5C|f{qcX3b_4oDlO^NVTTl55h
zAQC((^IHG3X38JWEow?6NR{n3arEX0P7MDeGq3qR?@uQ_*>pIOAmyL9gfA~WK;_`y
zGV_}6^Zs-OmPe!~5~PGYJ5sC9!rbhXnb&-u_op<FSM1Oer2gT@c>DyoGVVj&b;1?M
zuys8I?{l42e~Q_zCrI6cV;J)S?hzk8|B2v+jDnLx;C-&s62D?ix}G3aoa#b%Z!Zpa
z^dQOZL{f!<jn)?MKG$g)*j?Hz*g9`R`qPK|e<`BtuK~wz0gZPQKG<>xT&LBanpG_n
zIQsD;86WsV5iRrq<s$IaWrcUvUIy1`8F=emvtZ1xMpai2PIdRnqEl>6q}4cKs#Dlt
zsR7q%8YtM;A~xI_RVGj3kKF*8e*?}x1lmUxK7QqQaGh5F7E7&ICJrl;C-M6)0@b&v
zX9yHUh0EO!!F5^&R=$@drq;A7lPB?8s+`!?=tAyk7xtV}IIW@;T&HPZk8s+<ndjK>
z<XL<dP4Xhei3TWh$Ji5aomT(W?O%I1^BfzVJc~a`#ycoZE-2je$P2F1GVu2MpL#g+
z92=fIi{IPs#sRk*Hn+moHW#=~(?DU_8L{E^s62g+3s0Oy|3aHIK$$!4kAds7`qQ)P
z#j^fkdHNg|o;ZuXPMd>JxM|=KxK7K!>h%^ewYF8BKF5V8&Y~N8dT@sR6U^4;HgKJ$
zfuizO!S1{(8{o`yY%Z(feJVRH-2>NY^_zAy2!*Gv$_6;|92=J^-lwv?Qv%m%8i?L5
zd{k5?8{o`yY<Ti4p7v$VDmx0UoA}`y-zcE#*o=Mk8!TVoh-*~y3H&@XisD1(CBnoh
zbn$=!x?UD%sn;8~!FqaF^9i)y8-_XexI}n%3OTE`%HZp{!E5U0g{;NLd(Ub<f&Gs2
zcqcYnBIx}ML=ljeX@R-8265(MRGu5ax7WteNty3_FplQ_0hCm<NrcJo0mVQR0V(lD
z7|bOIH<*!6C%~b;5jZIGj$cPm-F*X@yBj6Kr1yYoAc}zSS3|I9wGnfJS7Ad=1JZ15
zD5T66{%`@7gU7JekRuWN-UF(5G<^Vf&N}3pEr>Ri+DmO01cFHLsLbo<&wo`s4u|5*
zrq_{dFk)$JmOZQBJAoh)JSy}0xi|4s@tqkjVNci#SQZ?DpoJ0kwFx@}f=KYF%xk|l
z@qfhMEz+YrGZ{H1i#L$Z1%L5ZO|M`_{5oukH3ro0FTN^b4%RPv8E-6H?49m2W5R%+
zct_@kNKfDC(?uVN_&?(9@hcD$v)QLxY7MC0UwqnY^RZw-sBd<VAtF!%lf-A6J|pp!
z@iUnIB=L!{8%cbA!2SN>mn;nN%?gT+4@A6d;1hGMuO%;jV)9Xy2?2{IBp8x?wJFOd
zCLfkRqyELg%Y5cH=RKSJtQVsb0u?VCm}9Jo+-1)8W~A@*>Y{80I(c+65io0INo0~C
z(Hj@D*{cgHFwn^}qyE|R6C%Tcmw1C0gnDNO#Tw}3(aprbzp>vT7khj<$^ZZWB6?I<
zbW?9;ba!ELWdHzp+H*|FPfAtr%uP&B4N6T+sRRHooCVab45>{30000<MNUMnLSTaC
Cm8fR`

literal 0
HcmV?d00001

diff --git a/toolkit/themes/windows/global/icons/Warning-XP.png b/toolkit/themes/windows/global/icons/Warning-XP.png
new file mode 100644
index 0000000000000000000000000000000000000000..c0ec9b519fb887d7ca546d3769e053057e89d87b
GIT binary patch
literal 1269
zcmV<R1Pc3!P)<h;3K|Lk000e1NJLTq001BW001Be1^@s6b9#F80000PbVXQnQ*UN;
zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBU$mq|oHR9J=W)_qJHbsWd>YY$2(AeFX2
z=LUlT1$mAT#)D%<B?1u>ok16)<Bw@JHy@I^%@~OxGvJgkoe+t_GC`)Bq60Tz(~W0j
z@-$#P3bep@C@U@HQ8)AP*Q-!U3l0b3AG_pry*6#W?>6_lD+PesNE<r*{}T`s6SHbp
zvOK7updeZ(6tc75u%u|3UeQ_yut>lw?LUX0<|}6v2?)BYfVjB0RXP2ExA$O6G;YrZ
zV@9<DrC*3E$q=*uDu8Y*45^x(@W-EXViF<7V6zWSN_o3E91gYIwqihheEc0N_*fD<
z*7F!{O*!J$v;%HWJ7P}likiGF{Um_9-T|D}lF<G+l{@~>*c(uEd*e)^Wipw?T6KVj
zhsQrkdvz;yDP!9a^*|(kSBcQmDnfFS2<gW~%=200186+wqTV0P5wBN(V|V$(>e;c)
zQ1l5Q@esq)(-RVj1WE5YVNNN8O6G-vWa~UKkG<9btg>v+&oqPEF*_>2<sStguffO1
zhar749J2}mW=2J5yXc101WxFx0s;a8R`j`4{GhCM2d0Nam>IG|SDhX6&3%1+;pgXv
zBhpCB4BKI5#10ev?kG9VuOu_g)+&Im&h@I)4ESMcfWN@a&5arE@9&S(*}<3|ydTpy
zwCvDZ<&Mn#oab3A)|~}}hlelg>qPtLq2@?T%K4a-+3Lt`5&w)6NF2h#!cb8p!Bjtg
zfkx(p(o9i53E<vsfO-8{Ke<M>4Vs?&bb57C673Nf7>KB-D2%oVFxh9TM<NI7-H|Kh
zEG)|v19&{1k@sH^Qs<5e4=dUuFwt#;iLSqO>s&g+XMTZ$`yR!_Z#IkQLMM70P@5}O
z?|p<8|JwkE*7Fak)!kyK+O44Our}iD?TxGxp-^{P8|t!VVn>_ZaP}RJc3IM^4Pcd|
zZOTw~24nm>596&o=23Os%D}Ftyzu=gf2i85blR8b<l|cYW~9W^p(_TEd%A&7_S$-O
zUDgigL)mO;WW1RKweaxz%Mx6@;LIE|T8)jhY(?QwOYO2WH?=HH1<+U0w^WR```~6H
z*R&=slueeX_|6gC<pSnddCdfEaElc>ik)#{4{dT;GCLO+mjx$Z<2@m-*^ZkHq`uC=
zSiN5HDH~LMYenA6HElk)c@r*vWNmU;E)6iR%5s$}TU?;1<rurF_jHVyxd>@b#GEuC
z#(uTXGZEce>Wu7tw9&F;cGAb$jBnoJ9U7_+!RRmM7^ybHXtlXsjb2j$ml;m36AbBr
zaON}fOvR5i2vDBES0{wC#LESUYQJ<<E9yiTuAmK!RG49;($JH!k%)+hU@k=IDLXMz
zWyVC$GZil{bwtiVHgmT$2+(esFHwiO&O2hbjE$kvMap!B%V@oF8Vx^?{{qQ7k(C;T
zzMm|a*OrDajlWT5j-n*CcA)jr09NX=)Pd?xS?DQbL3UvoMf2D?#d`9^N{q>fj(j%q
z53@96p1|lAARGVfSn9oFFH*V3_E32rE|#!1l6O-%&jnMv$Skg@0PWeyBZP$gIuQ^S
fMknD$x)<;lGmSJrPzo;k00000NkvXXu0mjf%l2LL

literal 0
HcmV?d00001

diff --git a/toolkit/themes/windows/global/icons/autoscroll-XP.png b/toolkit/themes/windows/global/icons/autoscroll-XP.png
new file mode 100644
index 0000000000000000000000000000000000000000..6aac3d98e9e5b8ae9db35c05b9473eb352a3387f
GIT binary patch
literal 2305
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
bOsNC_FPsI`t_-P700000NkvXXu0mjf3POZ~

literal 0
HcmV?d00001

diff --git a/toolkit/themes/windows/global/icons/blacklist_favicon-XP.png b/toolkit/themes/windows/global/icons/blacklist_favicon-XP.png
new file mode 100644
index 0000000000000000000000000000000000000000..74af56f577c90e98cf5d3f872249f661a9ccf692
GIT binary patch
literal 603
zcmV-h0;K(kP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV0000PbVXQnQ*UN;
zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBUz{YgYYRCwB?QqM~kVGw@y+i&|!3JSc0
z9W46?B$O_JhpaFx5QJ_W#Y2Z8h)!LEyb0yMkO#p;BO}3MK|jEwibO#jihj_y-{yY1
z@B7Z%%<O*p8Hfi5W_M<ndFGjCCh*?lFct_vJk&o?JKH-+c@FO^U@d&<WOBe5ejAN7
z=kHnEc-X!9V@3h8@tcjX^XM`9@)^QM3PBEJ9ml2savU3@xy1E2v1hh^M^&N0sCn@9
zJKWX=a|#d+k0Knrib`L<(zI*uU{;sWT$*Es49s1csnOXLKt6gOz;kgleizZiy*+bA
zmq*lbx(9!sJOVLKPla|BeHyE?SGn{5#qHL4`#x$TV_NLm0aQ3<Q5n2)pz231T>}v@
z0AY6oTQCUw2H@VmMsn+hkmOFJokVD2Kl$_pqVpFxC(U;Oczq<wOYETqT140>maeUn
zAsqqj42o6RwYMzRb(~oLweJYq%L@!hdo>{4t>sm{JWzvlWvOIEZ2&R?A4zj@4(ZI)
zzQy(FNhI^Lx`mQJF@gXD#MkB>lE+iXKYc`v)fU0TvJY>NzIu+vvsr+O?ky4Zlz$HN
z#v$3`Hm>UrQD1~I9UTZNA$<I&6tyKT;alq6#n@MsK~|3+Y&$n?GZxboM<Py11GWSc
p%0*}BiqD<uy0gRJF!oP?0RRY>e>MV(GqL~x002ovPDHLkV1jwY3Qhn3

literal 0
HcmV?d00001

diff --git a/toolkit/themes/windows/global/icons/blacklist_large-XP.png b/toolkit/themes/windows/global/icons/blacklist_large-XP.png
new file mode 100644
index 0000000000000000000000000000000000000000..96ff341c0abaa7fc265ea712bd80252e6f49a498
GIT binary patch
literal 3587
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
JPDHLkV1mbq#H9cL

literal 0
HcmV?d00001

diff --git a/toolkit/themes/windows/global/icons/close-XPVista7.png b/toolkit/themes/windows/global/icons/close-XPVista7.png
new file mode 100644
index 0000000000000000000000000000000000000000..ea6ada49e63e0df53ea3c2edcc83844de0572f03
GIT binary patch
literal 931
zcmV;U16=%xP)<h;3K|Lk000e1NJLTq001xm000mO1^@s6P_F#300006VoOIv0RI60
z0RN!9r;`8x010qNS#tmY3ljhU3ljkVnw%H_000McNliru-v<#25;o7^h%5jA129QM
zK~zY`?N-lg6L}Q>d^4#{oiW><7f&{A5p#*9P4OUjQL5~rAf$yB7xuc#3Jt4<lnhaV
z5-RM)L&Sik|3P~dJgpG%DCv4zNROLH192zweV;w-WSBOcj0?i<!7seS`}uvJ_r7o5
z0AJ64d(@W-w4cpB0<a0-OoXWepnCJon?g|dYby1x{D1oJq3}fk{C4e{J2^37L<J;(
zPOs-Iy?Qksls~_C(Vd)_Fk)(S1R>Gs^_(BxzaIyH*hz!w#pSu_#pTlU;<6c#nVxJe
zEbwF^VSt2{&0=<M53yttBta6fWD>J`d$6)ufW$Y6#88zJV`GL=3RCGcmbSMMw=B>D
z9JeeiZEs^LorY2hiLo)?e+U36IZ{AM{=&iy^TNUnla#zC%Y|0fOZMAB0U(ju-9;>!
zL@b#^YIhg#bR+>X)PMHQ9gxJlZ6j`)h?^$nZTpyx0skQY4}babIkmu}yhorGR0==W
zq5%B9x(aFyYK_#+4pKWiK7X*fI+Q>l06?NqEP^7S2<A&A%$G_&-zXM+yHEhRmE~5Y
zc(*3h07L*0p+=>6w|4ux>xZELyi5A+HV)R-{G|Ql*Vf>++rC{`0i2^FG`6;UJ3slY
zEjUL<(H&4q@#(YrN6{{V^z>Q%qf&~ahHF412iSdLKriITE>dKu0Q6#<?A{Q7^Ovre
ztyXK3+J$!eG41wa)Gk`B*5>(3SInpm80XGmrd}UPV5VM&VOfzKh?^!Z2cFS@E*Fc4
zpFJDh0ns`yT0^wP6Z>B6iG8m&;6>|v)C|nLc;P4ATwh0Xef=1Suo)Q0GY=jN?n1-1
z(Xefw&v+k!kpLDl>3xbuwS2#pTe)?ZTe)>uE#I$EG!`=H{iqK7QK<kTXl`tv-|3*=
z>7co>0eHHo4jjCE35wutxeTY<h12cgZMh7J{G&SoK%Elk3;+v2d+_E-DgaXex=JbM
zGyw0eUUdN&pSky(%<I?37Fm66&K)-lLq#kylK4w&=lf=JJZy*^rPQCnfmKS;lQ|;-
zKPKt;gBVVIA*-is=*OS5c6zRhQS?dcK7s1jzrg>?`5WDUy#JFe7?S`1002ovPDHLk
FV1j4NuF(Jh

literal 0
HcmV?d00001

diff --git a/toolkit/themes/windows/global/icons/close-XPVista7@2x.png b/toolkit/themes/windows/global/icons/close-XPVista7@2x.png
new file mode 100644
index 0000000000000000000000000000000000000000..c25a64a4b08ef76dea0d771c4b1974173d674083
GIT binary patch
literal 2031
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
N002ovPDHLkV1lY6*x3L8

literal 0
HcmV?d00001

diff --git a/toolkit/themes/windows/global/icons/close-inverted-XPVista7.png b/toolkit/themes/windows/global/icons/close-inverted-XPVista7.png
new file mode 100644
index 0000000000000000000000000000000000000000..68596a3076a050d5171f466e870a31da06e06335
GIT binary patch
literal 855
zcmV-d1E~CoP)<h;3K|Lk000e1NJLTq001xm000mO1^@s6P_F#300006VoOIv0RI60
z0RN!9r;`8x010qNS#tmY3ljhU3ljkVnw%H_000McNliru-v<#25;MPwe4_vW0^~_V
zK~zY`?Uq4H8&MF)f18apnwTmU6niYuAV@(y#FOAj=qE6m)I!fa^<+peh=?E_dM*YO
zzd<}%0(z+sTWLj!m0o%fJsD82U9)d`=w?}yjcY;h;)BOBGjC@9|2H!`3y<qzmv&!)
zHe#`P;63of<EQ~Fz1rDHIh7wGk^l04cYK_>R|22M#wzVCExK1g0m@fb#z>*i?9_kk
z@2|ACwCFzV_6SOZ^3|2`_VBP7z*qMIk#P|@5s^-ZuG7+uHwxSy2<V6qipA*5=kbNZ
zhzKHrFC3;XpC=THfe23nfx24`G&Sj(rqMAlz{v74{!j?92>U}JMwXZ97#Kj)Gy+Xc
zw!hB>%Zl~fw}5v7`!zOPh$A9APo+SF$oe|Ia2Q`WOk{l>ESrdcNJIa=>1jlS;cOOv
zFo-`GWH_6>VH1ac9f3shb;2R;JHQj4OiXzZ_%Shom?mPHMAp`btgYGd(Zoa@07n22
zp_oo1N+C)yJUh$q?5r&p(`ox$Ljs$dpSIk9#wQa~g+gJwApz?p*XQRP#p5<;8+<%Y
z<^0?}*XRO_iwlaGjD5}qpUGfcTzF^T?DV9PNv95K^_g_);Oz9Ia$9p%w}^mJH?}zJ
z$}Iy95~5Vy1&9@+HhXSO{45%c?$zp}(deGDu^VMTZ)>ABm#YKNo6DhxLY^7$2ZIbb
z%BZ@B(rNsyt=<^`zB|jNrkwV@dZ2e@#RgqUBq${kH%K(<fvSFRW(H-NDAS~v%~H%}
zZF$i82;52_zp*jztocHruw5llwcVD1UkeMM6s2U6>vEava+y*x36{+(14pZ?h*Ip%
z&0$<#Vq9LbJ2!_Y_0LvApl)h(b@#LbFMw~=n(ylF@dGb`pJ%5hWj6v}M@K7we#g0I
z3~p`R7-YF<w9>5Wy5=#+M1()4X}l?wngRSSO<V@P)HZgl&L!~T9e)L`1(sYU^x|*R
hypumJ{*UXS)?eGVMJa<f`&<A3002ovPDHLkV1mF{gGvAZ

literal 0
HcmV?d00001

diff --git a/toolkit/themes/windows/global/icons/close-inverted-XPVista7@2x.png b/toolkit/themes/windows/global/icons/close-inverted-XPVista7@2x.png
new file mode 100644
index 0000000000000000000000000000000000000000..eec52e6d1341a998de3dbbd05e147267f57c853c
GIT binary patch
literal 1865
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
D2V;O;

literal 0
HcmV?d00001

diff --git a/toolkit/themes/windows/global/icons/error-16-XP.png b/toolkit/themes/windows/global/icons/error-16-XP.png
new file mode 100644
index 0000000000000000000000000000000000000000..936d2abeb9cdd5f94d483dfa10464514aa16b3b3
GIT binary patch
literal 722
zcmV;@0xkWCP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV0000PbVXQnQ*UN;
zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBU!bV)=(RCwBKQ%y`0K@@&Fv%6qQmbQi%
zN~JYzjHtw-UeH9jn9ze4NCXo}Obi#fNFrW5XpBb_<3T;B2fauyf?POyKm&RqVv5R-
zVn~FhKVX5hyEEPO&C)I#+Lugr=6&yb^WOJnCCjp4zulH)ub+@EpDf2fk|4v_)S79|
zKI1&MKUQ)l7(wE3O?!Ma5V(HW?*~Pe0T5@nR&zO6$Y!5@N~P|-<UCuI;I5*?&b73R
zwYRp0Svn1RHVY<WAe95Dssi<TVZk($uU1wry<=?6Nid8zUubTg?Fa_L|CW|)qH}}0
zT(KyHc~womPp7-ya-Jaqh<ZG?PKH9^?D8@+^z=Z-<|cT$yMZGnQi**GeOg~17^M;%
zDHcz()z#f`Dwv2wHbRQx-CkdZ^B7pMAN~FI_t@yD<D14dL?!cv@%Kid5G6yheDP3Y
zqc@Lz3$ebHNfn}-oJ5S5MLkGqpqJ9KL?c8ZoI??pC^t1Z313}FDkgjaW97CK9Ipw`
zB<pz4Q8eZfj6=1R%EXG8q6#rTk~7UenL=T&G!*QNtL%!MMxQ?(cZAJh>`xr2E#ecO
z?{~0N3X8zre11<bR9#qSBH{SPHEp*g!&tnp>!<87F7E6+*fLE!^UUC&9WaIDRqR=;
zkL5&P5EC&Q7(2)LBfPvI4JnEZHW2crO;HA@B-MOC6%%cK*7b?!j9n4(xiK=Vs;?um
ze9c2hP4X6!=L}=~1!Dtv+_s;%3%5Ec9sADtv|(9IIGw0azJR0*zP?|af0$uxB*FPZ
zbQhtPVFhqi{DHd{AGoZlp_}#f?YI}p(Kw}5oc{t005e1;+xf8d8UO$Q07*qoM6N<$
Eg1~h|)&Kwi

literal 0
HcmV?d00001

diff --git a/toolkit/themes/windows/global/icons/error-64-XP.png b/toolkit/themes/windows/global/icons/error-64-XP.png
new file mode 100644
index 0000000000000000000000000000000000000000..75a00c4903bdcf5458612e6366893264d9c25641
GIT binary patch
literal 3914
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
Y0TUwybbsItlmGw#07*qoM6N<$g3dN}#{d8T

literal 0
HcmV?d00001

diff --git a/toolkit/themes/windows/global/icons/folder-item-XP.png b/toolkit/themes/windows/global/icons/folder-item-XP.png
new file mode 100644
index 0000000000000000000000000000000000000000..26cda98c9b4419e9797d383bf761cd6a1b96fb18
GIT binary patch
literal 1602
zcmV-I2EF--P)<h;3K|Lk000e1NJLTq001BW001xu1^@s6aIAQ50000PbVXQnQ*UN;
zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBU%<Vi$9RCwCNSWiq`MHv6ypM~Y`uCP>T
zqam$OiGMEk;7LOd9*lUyMiLIR>Ol`ACWK%UgBn8#=Y|-oF*OE>r#9lj#wsTD&|Z}E
zU~FwIp>+j>754A@H-6u|H*e?dZWnw!<0P{)J8x!wzxjRN%=_Lbj4`0}{+Ta_<4y7B
zbWH=xwxL)kLUtz)JKI_Q{P*APEbDsg+Qo|>T!jdeE-C~*J~sHe`0p^v4DPPy;rg8{
zJpM?V^Tx@kw+9C&6JLGv^(9vNnfJT;#Y^yDck^4>9dpKUm@ZGQD2mhC7CW<+&Yynj
z>8>j9c<;w$0<>~UjCtT#w`>MYjR5Jb5<L54O8w}w_oiPPd1vy)=U>R<<15rZ)zx(H
zul3^e6UR^Lin9UCTK55%dO*GY{e|(=fu^$vcCW4iB)bewB?AR){9_{#O;w=1Ii{Tb
zWNP}&lT(v|fEH6PCp#J&R)6}uro<1V8e>@8y><CS)iX_3fAtBF&B+@CI0t5mS7-3)
zr4|0XJJ~?p9~R>ZdFyEJz`LMo9r)aFXJB6Db=#X2OJ)I|L}9>;HMsfXhkZT)ayS9Z
zORvrp4W8+XL#|NbZH8$n=!`L6Il}=(YX`@?;es)L8NfuH$)p%L2NLcA!(e3-khlB5
zLIKQ*)&OnEBs8|#VB-9`V+Le23~Y2P55PcB%Ow#|!2?Euj7y-Rf0$t6*dPH~kq3+m
z<A4TJ!P4VEu%?P48-)M?iv|#=Q$k$BlbHp;nXiKF5uugkz%nHT^0@-gVseN?C1ulb
zvtPFrXv8chhvU%7OT2W=K=KQ7*kxaEJe90%aBO#*`vgqG#GOzN+%01)=*f;nU`4Kg
zOGKE%a{m)4(vOq#h#>)BF(e@o;BvD1;M_bF1YD)@Sg;GYKs1kyWJnFJfSZ}@3w|5!
zx+(%reQ?T7#a`yBT3fgaHeD6C0(Q{uOxliI1q&3Xz{gf8P!F8%jtT<Y%vJ{HE_x=g
z17N|r)P{YlOc2N2-Ga{=9dQtqv)H0>t3m;6bj&}|tDD^O9}NCm-iC^MCMe#Spy0W|
zG<<|6z=N)Q5*D-9UVZuWp59>8SJYctV}D$^@Ljj3hX?3MqbR{rRopIOY@5EOh}SW`
zx#CzPNr>I>F=rTeeLk)Q3w&ikLm7S7M4%*9$tUoCC4IjW>^C0Rw*t4mJ#jFzRl1Gw
zKtqjq05Bdf@s-?j`1nH2cwpZI?)>n|FSg|z4Kp?n4}?vT#RFkeWbr`Q6j?kFT7jtI
zfv_pEcpx-^DC2=JDbjc#tO+8E2SO<jWjqi{fvDnvuqm>5AZ&^(9+;b(I~<S4AJXtE
z*{1t}Vi9t=9PI4uKsK9&d_KQznr8akxpN!;&HVs^kB*LZmYoZ2i*CBPxe2SQt8nPh
zq0agF`OZ_PPTg2sT)dY~r+L5G*;()+slFQV1v$Y@%p2q5<Mjz>{`~;+Gby3#I%F~#
z=<n}`k&%)1^XJd^lHX%qqy9)xL!!MiGc!l{2aZ|(c8uXS?8L+bk=TOjfI3LP=Jx|E
zkYy!QRfXo}W*8nGZpTTx1%Zx^j>iTD1|D5rUaq;qp`oE8xPT)I3ky}xR#sM)rKq@A
zrGUspU}<TI*OSR4$bl=iC5|0C7Rvt9)6)r`06APGD3$2t(9_ccg+jqM3zk~>ZD{S|
z5R>l*(A#BTQIc;Y5(zH9Xd`n(L4f?Fd_#g;O$MfwicEmQNyYyt2yiF&?+5aE-axEm
za3UnvD-SMe4+AXD8(o$|2CD^5CHX|~ZRqR?kmeW4l0T(VDLz)OoU9%=m3tvTW|15=
zu*HRnwCnCm;C|rZJh&eL0+vlB#)$u-jrs}2s|eHsmk+2)AD{^Z0U4}vtjLC81bu)X
zi+JqP@ktI+YfIK5AlhggnTN6fr8+5AsQ|SJpO8<&^|7(BJ>Cx#*ChoqdmUFJ{Vm@Q
zka6h-RNKv|Npa>znlw)5Um9-yH}L?ERR0lR0M7S*xs0ku+5i9m07*qoM6N<$g3tK;
AVgLXD

literal 0
HcmV?d00001

diff --git a/toolkit/themes/windows/global/icons/information-16-XP.png b/toolkit/themes/windows/global/icons/information-16-XP.png
new file mode 100644
index 0000000000000000000000000000000000000000..aa8ce6e88a88276f2d05665c58765fcda6d4942a
GIT binary patch
literal 769
zcmV+c1OEJpP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV0000PbVXQnQ*UN;
zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBU!qe(<TRCwBalTSz#Q5?sA@6DT?QCD|X
z#cVY}Aq44^Y!spWxoFfOBCKfhW*wvrscs#Fgl>^Yf)sV|P(mJ}Lli_vb<-lKphJ*}
ztLv`rtgAE5%zJNoZ_zPpY2e5E_xpX`_cy=aL%#1rsZR^n?g|<8y8$8Onu}?tkV%#D
zLw^Hm+K!!UI?+F%H^<{tHLAFe06FH`#_Xrhsn??;D_>qslms9g(pq~4N9wzieOXHf
zzFq(f+i*{-ger|f_U-7zugP0im}lqZKG||;JwNoYuKPwJy<h@nHXyP0AW>aB>zl{}
zS<6AeCJ;S3aLz}%Au>B9E~i*J7|rqHbw@5IGIPs-To-)CiWV)yMdKSzagALEY;y%7
z@!qbAmX4l4L9C<qs%42OwFA+}=WynJ3aHp1Xgg=hJqW2fMD}0m7b>1&Mb#@S8smq(
zbqiErpdkk33WvnON_dfs!OLqgpe_plssMvyLAa^C9fiVsFex+YfJ6-NTtHGf<={FL
z#^0Gcsv{xNRN#Op1vM1b6fM#~KoFVh0V0Ad=|Zj|0$h*(Q}Z$`f~6RlCo4{T>{+?A
zXD%$uzbO@LsfcRZCDcXU(l8fL#>FTUt!8Xy<x-e4Z_WHZHKia@43-XZWPd2|DFa2S
z+q?h^-_;-Qr+sG670Z~O8Na)co#$Az&X$V73k?Av(JA_YZU&1Sy?hpyXCB`ZeZYfG
ztloEVxTWiMQXGThc%W!xNB&X;QB?q}!R(tmli81BJv#uRrX;fW^iWgB^_#j8!`%18
zr8EG9)N*hNOEC9g_)+fblK~O8TJkZe;fBuIwzJ8q#sh~aiPm62#w>3Z=BH<}-=2-R
z`Jd1K`x=7-glZ6}s25Z0)Afw-TP)@GTYv!o)Cg4Or8a!100000NkvXXu0mjfBT!#j

literal 0
HcmV?d00001

diff --git a/toolkit/themes/windows/global/icons/information-24-XP.png b/toolkit/themes/windows/global/icons/information-24-XP.png
new file mode 100644
index 0000000000000000000000000000000000000000..7fa782d58c8a7371747fc8ea9f6d31c4e1f065d5
GIT binary patch
literal 1244
zcmV<21S9*2P)<h;3K|Lk000e1NJLTq000;O000;W1^@s6;CDUv0000PbVXQnQ*UN;
zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBU$en~_@R7l6ImP=?<R~W~C=iECpnV3vW
zov1ZNd<3yIP)OI(l~zlk3Q`5FkV3nwF?8QTDYTn54W)D`2$o7K7V9Pky2-Y+6spBk
z)A)!{Ckd08OlI!md|wxLW-@6NDfDnZIQQP~{r{hbQB|Ha28PFTz<yvKFbM1hdVm5j
z1zba!#4z#u*sCR;GR%_#ygqX2XhAb4y`G*oa$BA!)7gQa^05{~APOU@OC`#)4=B$s
zT?Nix|MK9uX9gG;9`6H2I`iw#<okD-wvINc0W7a5%PUHy3aH{)LniCf*<qpdnDU+5
zT3fDtfiimit3&sm7+_#{yc_szWB>M{uC2X<ky0!=%F9YEhP0KYQLGlvfGF6MPe<Aj
z-TjSPsd5(O!y8|})(m1Ble`Jv-Ppf<sJpM1rIKTAHe{*j2tp-QtMdJuj$coA@ae%U
zRs}@yP)rn2t|;^lVthM<=tye?7GU7?_^BYj>65PBEi5iX6ds0zfq)1>=m6NWEl(<)
z;n3c8tc56c2_Pa^aRe(NslJzSVRiV0cdndj1{ip6ybU<9VaHBWF2yW74#5dV63LjP
zH4`@@0DhVZ&@d)tw5elMFzRslc=??c)f0Q({xJvO@A4{d74q8-m{f+v*_Fh30#EXY
zQi=>`E-V0`#)1LQXkAA^!C*i_{GMG@=B5t#e*1plqP-Pm_jYdDOmRLSuDJv`RS+SL
z1<xqCw6?IKk+s(6S{JFe%waNJpt=vhS7p$oGL+{6j3^kO;ZI=42Doy1>l$vq^ub-!
z_x{a!48}$Hxy?vnW)Q%7B7-irNDF8UNu&JnKsfmM1FBJi#f?XC;;hmCW(D<%oWsj@
zp{lz9d?%WXf;wO(=}sdbMafu2Tuk7EOv<jND-A_$s3%hcUMd5Q9splN3qiTI36VOk
zX04$pRt>7)TH7Jg+8dBM<_4q|qN)V|e;pD;<qAf8j7c2p+NBO+5KVjlm^fZ_+>#4w
zz=B&|0MRJ`yBwQKaiv&yl=QyAiY7}`arNIx0GE7s|HMHs7{cO15V@ADWRc0RJdd^B
zs<KL*stQg}(d4z2GSZ^cAV$4fS1y7w31DxYJA5(gYPX~EB1UPcVpSv-VgaYE7`Qb$
zMg)tcGCPImXRoU2L~}1Hh4!PB`5B?HfLe@P<ml-TGHKf+jte5<s6pqX3Zvkv0YPC#
zRQ3GrOUFvh0DpdS<eX8)%8#ZK-0DVQB)r&bIQdGB$Hj<yj{+>h`-eBsnN}pOCqmMi
zrN4g0`s>D~e>m1WeEh~lRYx_ft}o5q8tUxXfw6|PQSKMu<8K!UqxmLtGAT<K2_6Px
zJmN5>bmtcgsk26P^r<IW|IzRIP)1bZ;r8dY*=#P4xCjwhyCoQd^*k^>mHGRuEX;`Y
z+sA;>>C4COJ@ZW7dE~+=-~{3hWY%?)Ztup=v}3&#5{HDf3c>O`VPz5PwOs|yPhUR%
z>@#^yki!>psP0GEhcSaBd&}Be1xx}H)0dC`w_C;kIsOKcWz7ZiX2uc#0000<MNUMn
GLSTaW{YjMo

literal 0
HcmV?d00001

diff --git a/toolkit/themes/windows/global/icons/information-32-XP.png b/toolkit/themes/windows/global/icons/information-32-XP.png
new file mode 100644
index 0000000000000000000000000000000000000000..5120db685e34f511dd3f9b9031eb6dfe8898a0f0
GIT binary patch
literal 1609
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
Hu0mjfm}Ck<

literal 0
HcmV?d00001

diff --git a/toolkit/themes/windows/global/icons/question-16-XP.png b/toolkit/themes/windows/global/icons/question-16-XP.png
new file mode 100644
index 0000000000000000000000000000000000000000..0c8eafda08acf20c21eeef8ae63cc6630590084b
GIT binary patch
literal 854
zcmV-c1F8IpP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV0000PbVXQnQ*UN;
zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBU!_(?=TRCwBaQ(Z_?Q5^rBbMM`z&TTfe
zrDoZOiVr<#D<YKY$*{m8EXsnQ=s^;sgdPfd@S#A$Fom!T3JNJB-zv$EvX@Yzs36g>
zWOHlNeK<FFzfR{46^hY?%Q^7>|33b|a}HsQA>C)T=B_t6TpK_Lk;6WJaxvgd*GK*(
za8~TED?ZrNVkvRERmow~839R#W6M83e)7KV?p*ltsxK`8p(b-#!}U&AZS(nH+yW)O
zgn~>Jk^s!bMaV)XY-Sa~;qJa){Z}t&N+M$5#8sxU6K(hMYcDr?JQ0-V#Bi<Nf}NYK
zpaR8|U&hVh2!>_^<m_uX&WOdqCp*N&)szEAiTl8gD}!$WK?MR-JU^R-(gGXCXH_H=
zhUzU60*eX`_k<CV2}~w4rn~A+#irjrriOY!^_h!tZWF4CqHG3RRwjlflQ`KMKtoRe
zBa;c_WlJc_<Mc@d;JMf<Pd9NFR1_pjc4h0xUU?}F2^xH1psv#oRR?sL!R^wpEtg<P
z1^gie661wr9M<BhDq^y3q+*66AEMm>MF!C{FpiXyD*rW<J5_Wy=Avkw1)YOo{O~2Y
zhz`P?N+zpWFxv}7a7Im5Kt#@LuoLhc09ny-uEvfcXBOIDhH!s4giI6VBD`oEoR-=!
zs>DNnB|JB8gkd;Xb&+Fc*j?(t^a8`fkp*N>2C8!bP3J3*D;h{>@sOA5ni30t9~~8l
zm;xIO#;S1#?E`+?c<SMV8U(}LiU8%k(dn^qrX^-mr{JG>bZa^2(JAPf3nS3VO#<9o
zMVN^pxdP@hDv==OCmwY0E1;(c<ml`N&%2I0&;>p}<(X)3*(i?IxNxM}1-pf$T%-h;
z1n*c^zZ{x+@%L3GM6_?OZ!508)M{}QP>w*Y+m2X5$LQxM1kr@#;&05pzug=9`lN;9
zqG=zKWG$@8tvJ?fE84Y36?2@_xGh>FyyzL92!4BZSB}gK{P#7k6$o(>G0Vlbl&MPr
g-sel#_eX#M0Kal~wlU;xA^-pY07*qoM6N<$g5Uvyf&c&j

literal 0
HcmV?d00001

diff --git a/toolkit/themes/windows/global/icons/question-64-XP.png b/toolkit/themes/windows/global/icons/question-64-XP.png
new file mode 100644
index 0000000000000000000000000000000000000000..a1a51b8d8f580a7c97b449aed9ae60207a6a5373
GIT binary patch
literal 4204
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
CHRGfJ

literal 0
HcmV?d00001

diff --git a/toolkit/themes/windows/global/icons/sslWarning-XP.png b/toolkit/themes/windows/global/icons/sslWarning-XP.png
new file mode 100644
index 0000000000000000000000000000000000000000..09946986fe60ca1be972cfaf5d52456e6bcbdd74
GIT binary patch
literal 3860
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
W#0^3KvQ)kR0000<MNUMnLSTZxVtYLR

literal 0
HcmV?d00001

diff --git a/toolkit/themes/windows/global/icons/warning-16-XP.png b/toolkit/themes/windows/global/icons/warning-16-XP.png
new file mode 100644
index 0000000000000000000000000000000000000000..a21574370bd91df3d6a14cf2625ef2150fec5797
GIT binary patch
literal 563
zcmV-30?hr1P)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV0000PbVXQnQ*UN;
zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBUz)k#D_RCwBA{Qv(y10{e3L@X=e#3m<T
z?5lGB`=?(I4gGEz0r~&X6@V-U8^F$vsasZ8qF>qUufXr`KLj@QN~Byp_jVRGTbOXT
z%s|12FX76iw+zo;{$S8BW$6Nn31d^p2y({81`ZTKc>~$~|3rT}gv5d!$Z+NOcZOr@
z{<U8^@xH2f(QgzlU~@r$ye_MQl*ktb78Vu;CMG5Z#(%#UR1H}xfpV%?z3}qEZ!l(K
zXJb${mFs6^dBwoP{*Qs3?Jol-$A5;uzyC4_OMYW8a}e$axf)*>)XS(dDE$5Tli}a*
ze+)tbf5G_QuYW-P9|k2o2Jbo9EUvf=5KuN1FZloSDOmI0Uw;|6fI$Po5Ci@(aB+QR
z(6tooMb-z2Mpgy}87;nk5y@`?AjL3Hm;DY*gEYefSmUqGvU2W}>sP<cLUw_HqCS7Z
zpD(Y$HiHcL_~Ac8Vx<%qgT%n%K!ce7e`U}xV24L5*Z?^#u6iDxPY|a9F(}ZuSpP7H
zi!gyP%nLAsB;|hctEn)i!M*V6>6aS}rx`CZ!on9yH%8w8)7LLUg`o=m{QA!D=*9oH
z@Pq`E0J($%J&N!EP!9Y7)ccQ-(%i_zKp_AKFaSm&&EITn=Kufz002ovPDHLkV1l}z
B`_ljb

literal 0
HcmV?d00001

diff --git a/toolkit/themes/windows/global/icons/warning-64-XP.png b/toolkit/themes/windows/global/icons/warning-64-XP.png
new file mode 100644
index 0000000000000000000000000000000000000000..832f348867e0fa15331010f1a2acd570fe70e874
GIT binary patch
literal 3525
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

literal 0
HcmV?d00001

diff --git a/toolkit/themes/windows/global/icons/warning-large-XP.png b/toolkit/themes/windows/global/icons/warning-large-XP.png
new file mode 100644
index 0000000000000000000000000000000000000000..0ec8e79f68f4cc5427b15d3db5b62405aad76b2b
GIT binary patch
literal 2125
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
DNmvBI

literal 0
HcmV?d00001

diff --git a/toolkit/themes/windows/global/icons/windowControls-XP.png b/toolkit/themes/windows/global/icons/windowControls-XP.png
new file mode 100644
index 0000000000000000000000000000000000000000..d90efb05b2d50fabc745c6dc2dfaa98f93686130
GIT binary patch
literal 2060
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

literal 0
HcmV?d00001

diff --git a/toolkit/themes/windows/global/jar.mn b/toolkit/themes/windows/global/jar.mn
index 8c5d5de5a..b5937f660 100644
--- a/toolkit/themes/windows/global/jar.mn
+++ b/toolkit/themes/windows/global/jar.mn
@@ -45,10 +45,10 @@ toolkit.jar:
   skin/classic/global/icons/autocomplete-search.svg        (icons/autocomplete-search.svg)
   skin/classic/global/icons/blacklist_favicon.png          (icons/blacklist_favicon.png)
   skin/classic/global/icons/blacklist_large.png            (icons/blacklist_large.png)
-  skin/classic/global/icons/close-win7.png                 (icons/close-win7.png)
-  skin/classic/global/icons/close-win7@2x.png              (icons/close-win7@2x.png)
-  skin/classic/global/icons/close-inverted-win7.png        (icons/close-inverted-win7.png)
-  skin/classic/global/icons/close-inverted-win7@2x.png     (icons/close-inverted-win7@2x.png)
+  skin/classic/global/icons/close-XPVista7.png             (icons/close-XPVista7.png)
+  skin/classic/global/icons/close-XPVista7@2x.png          (icons/close-XPVista7@2x.png)
+  skin/classic/global/icons/close-inverted-XPVista7.png    (icons/close-inverted-XPVista7.png)
+  skin/classic/global/icons/close-inverted-XPVista7@2x.png (icons/close-inverted-XPVista7@2x.png)
   skin/classic/global/icons/find.png                       (icons/find.png)
   skin/classic/global/icons/resizer.png                    (icons/resizer.png)
   skin/classic/global/icons/sslWarning.png                 (icons/sslWarning.png)
@@ -56,26 +56,92 @@ toolkit.jar:
 * skin/classic/global/in-content/info-pages.css            (in-content/info-pages.css)
   skin/classic/global/toolbar/spring.png                   (toolbar/spring.png)
 
-  skin/classic/global/icons/autoscroll.png                 (icons/autoscroll.png)
-  skin/classic/global/tree/twisty.svg                      (tree/twisty.svg)
-  skin/classic/global/tree/twisty-preWin10.svg             (tree/twisty-preWin10.svg)
+  skin/classic/global/dirListing/folder-XP.png                   (dirListing/folder-XP.png)
+  skin/classic/global/dirListing/local-XP.png                    (dirListing/local-XP.png)
+  skin/classic/global/dirListing/remote-XP.png                   (dirListing/remote-XP.png)
+  skin/classic/global/dirListing/up-XP.png                       (dirListing/up-XP.png)
+  skin/classic/global/icons/autoscroll.png                       (icons/autoscroll.png)
+  skin/classic/global/icons/autoscroll-XP.png                    (icons/autoscroll-XP.png)
+  skin/classic/global/icons/blacklist_favicon-XP.png             (icons/blacklist_favicon-XP.png)
+  skin/classic/global/icons/blacklist_large-XP.png               (icons/blacklist_large-XP.png)
+  skin/classic/global/icons/Error-XP.png                         (icons/Error-XP.png)
+  skin/classic/global/icons/error-16-XP.png                      (icons/error-16-XP.png)
+  skin/classic/global/icons/error-64-XP.png                      (icons/error-64-XP.png)
+  skin/classic/global/icons/folder-item-XP.png                   (icons/folder-item-XP.png)
+  skin/classic/global/icons/information-16-XP.png                (icons/information-16-XP.png)
+  skin/classic/global/icons/information-24-XP.png                (icons/information-24-XP.png)
+  skin/classic/global/icons/information-32-XP.png                (icons/information-32-XP.png)
+  skin/classic/global/icons/Print-preview-XP.png                 (icons/Print-preview-XP.png)
+  skin/classic/global/icons/Portrait-XP.png                      (icons/Portrait-XP.png)
+  skin/classic/global/icons/Landscape-XP.png                     (icons/Landscape-XP.png)
+  skin/classic/global/icons/Question-XP.png                      (icons/Question-XP.png)
+  skin/classic/global/icons/question-16-XP.png                   (icons/question-16-XP.png)
+  skin/classic/global/icons/question-64-XP.png                   (icons/question-64-XP.png)
+  skin/classic/global/icons/Search-close-XP.png                  (icons/Search-close-XP.png)
+  skin/classic/global/icons/Search-glass-XP.png                  (icons/Search-glass-XP.png)
+  skin/classic/global/icons/sslWarning-XP.png                    (icons/sslWarning-XP.png)
+  skin/classic/global/icons/Warning-XP.png                       (icons/Warning-XP.png)
+  skin/classic/global/icons/warning-large-XP.png                 (icons/warning-large-XP.png)
+  skin/classic/global/icons/warning-16-XP.png                    (icons/warning-16-XP.png)
+  skin/classic/global/icons/warning-64-XP.png                    (icons/warning-64-XP.png)
+  skin/classic/global/icons/windowControls-XP.png                (icons/windowControls-XP.png)
+  skin/classic/global/toolbar/spring-XP.png                      (toolbar/spring-XP.png)
+  skin/classic/global/tree/sort-asc-XP.png                       (tree/sort-asc-XP.png)
+  skin/classic/global/tree/sort-dsc-XP.png                       (tree/sort-dsc-XP.png)
+  skin/classic/global/tree/twisty.svg                            (tree/twisty.svg)
+  skin/classic/global/tree/twisty-XP.svg                         (tree/twisty-XP.svg)
+  skin/classic/global/tree/twisty-Vista78.svg                    (tree/twisty-Vista78.svg)
 
 #ifdef MOZ_PHOENIX
 [browser/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}] chrome.jar:
 #elif MOZ_SEPARATE_MANIFEST_FOR_THEME_OVERRIDES
 [extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}] chrome.jar:
 #endif
+% override chrome://global/skin/dirListing/folder.png             chrome://global/skin/dirListing/folder-XP.png            osversion<6
+% override chrome://global/skin/dirListing/local.png              chrome://global/skin/dirListing/local-XP.png             osversion<6
+% override chrome://global/skin/dirListing/remote.png             chrome://global/skin/dirListing/remote-XP.png            osversion<6
+% override chrome://global/skin/dirListing/up.png                 chrome://global/skin/dirListing/up-XP.png                osversion<6
+% override chrome://global/skin/icons/autoscroll.png              chrome://global/skin/icons/autoscroll-XP.png             osversion<6
+% override chrome://global/skin/icons/blacklist_favicon.png       chrome://global/skin/icons/blacklist_favicon-XP.png      osversion<6
+% override chrome://global/skin/icons/blacklist_large.png         chrome://global/skin/icons/blacklist_large-XP.png        osversion<6
+% override chrome://global/skin/icons/Error.png                   chrome://global/skin/icons/Error-XP.png                  osversion<6
+% override chrome://global/skin/icons/error-16.png                chrome://global/skin/icons/error-16-XP.png               osversion<6
+% override chrome://global/skin/icons/error-64.png                chrome://global/skin/icons/error-64-XP.png               osversion<6
+% override chrome://global/skin/icons/folder-item.png             chrome://global/skin/icons/folder-item-XP.png            osversion<6
+% override chrome://global/skin/icons/information-16.png          chrome://global/skin/icons/information-16-XP.png         osversion<6
+% override chrome://global/skin/icons/information-24.png          chrome://global/skin/icons/information-24-XP.png         osversion<6
+% override chrome://global/skin/icons/information-32.png          chrome://global/skin/icons/information-32-XP.png         osversion<6
+% override chrome://global/skin/icons/Print-preview.png           chrome://global/skin/icons/Print-preview-XP.png          osversion<6
+% override chrome://global/skin/icons/Portrait.png                chrome://global/skin/icons/Portrait-XP.png               osversion<6
+% override chrome://global/skin/icons/Landscape.png               chrome://global/skin/icons/Landscape-XP.png              osversion<6
+% override chrome://global/skin/icons/Question.png                chrome://global/skin/icons/Question-XP.png               osversion<6
+% override chrome://global/skin/icons/question-16.png             chrome://global/skin/icons/question-16-XP.png            osversion<6
+% override chrome://global/skin/icons/question-64.png             chrome://global/skin/icons/question-64-XP.png            osversion<6
+% override chrome://global/skin/icons/Search-close.png            chrome://global/skin/icons/Search-close-XP.png           osversion<6
+% override chrome://global/skin/icons/Search-glass.png            chrome://global/skin/icons/Search-glass-XP.png           osversion<6
+% override chrome://global/skin/icons/sslWarning.png              chrome://global/skin/icons/sslWarning-XP.png             osversion<6
+% override chrome://global/skin/icons/Warning.png                 chrome://global/skin/icons/Warning-XP.png                osversion<6
+% override chrome://global/skin/icons/warning-large.png           chrome://global/skin/icons/warning-large-XP.png          osversion<6
+% override chrome://global/skin/icons/warning-16.png              chrome://global/skin/icons/warning-16-XP.png             osversion<6
+% override chrome://global/skin/icons/warning-64.png              chrome://global/skin/icons/warning-64-XP.png             osversion<6
+% override chrome://global/skin/icons/windowControls.png          chrome://global/skin/icons/windowControls-XP.png         osversion<6
+% override chrome://global/skin/toolbar/spring.png                chrome://global/skin/toolbar/spring-XP.png               osversion<6
+% override chrome://global/skin/tree/sort-asc.png                 chrome://global/skin/tree/sort-asc-XP.png                osversion<6
+% override chrome://global/skin/tree/sort-dsc.png                 chrome://global/skin/tree/sort-dsc-XP.png                osversion<6
 
-% override chrome://global/skin/icons/close.png                   chrome://global/skin/icons/close-win7.png            osversion<=6.1
-% override chrome://global/skin/icons/close@2x.png                chrome://global/skin/icons/close-win7@2x.png         osversion<=6.1
-% override chrome://global/skin/icons/close-inverted.png          chrome://global/skin/icons/close-inverted-win7.png   osversion<=6.1
-% override chrome://global/skin/icons/close-inverted@2x.png       chrome://global/skin/icons/close-inverted-win7@2x.png osversion<=6.1
+% override chrome://global/skin/icons/close.png                   chrome://global/skin/icons/close-XPVista7.png            osversion<=6.1
+% override chrome://global/skin/icons/close@2x.png                chrome://global/skin/icons/close-XPVista7@2x.png         osversion<=6.1
+% override chrome://global/skin/icons/close-inverted.png          chrome://global/skin/icons/close-inverted-XPVista7.png   osversion<=6.1
+% override chrome://global/skin/icons/close-inverted@2x.png       chrome://global/skin/icons/close-inverted-XPVista7@2x.png osversion<=6.1
 
-% override chrome://global/skin/tree/twisty.svg#clsd              chrome://global/skin/tree/twisty-preWin10.svg#clsd           osversion<=6.3
-% override chrome://global/skin/tree/twisty.svg#clsd-rtl          chrome://global/skin/tree/twisty-preWin10.svg#clsd-rtl       osversion<=6.3
-% override chrome://global/skin/tree/twisty.svg#clsd-hover        chrome://global/skin/tree/twisty-preWin10.svg#clsd-hover     osversion<=6.3
-% override chrome://global/skin/tree/twisty.svg#clsd-hover-rtl    chrome://global/skin/tree/twisty-preWin10.svg#clsd-hover-rtl osversion<=6.3
-% override chrome://global/skin/tree/twisty.svg#open              chrome://global/skin/tree/twisty-preWin10.svg#open           osversion<=6.3
-% override chrome://global/skin/tree/twisty.svg#open-rtl          chrome://global/skin/tree/twisty-preWin10.svg#open-rtl       osversion<=6.3
-% override chrome://global/skin/tree/twisty.svg#open-hover        chrome://global/skin/tree/twisty-preWin10.svg#open-hover     osversion<=6.3
-% override chrome://global/skin/tree/twisty.svg#open-hover-rtl    chrome://global/skin/tree/twisty-preWin10.svg#open-hover-rtl osversion<=6.3
+% override chrome://global/skin/tree/twisty.svg#clsd              chrome://global/skin/tree/twisty-Vista78.svg#clsd           osversion<=6.3
+% override chrome://global/skin/tree/twisty.svg#clsd-rtl          chrome://global/skin/tree/twisty-Vista78.svg#clsd-rtl       osversion<=6.3
+% override chrome://global/skin/tree/twisty.svg#clsd-hover        chrome://global/skin/tree/twisty-Vista78.svg#clsd-hover     osversion<=6.3
+% override chrome://global/skin/tree/twisty.svg#clsd-hover-rtl    chrome://global/skin/tree/twisty-Vista78.svg#clsd-hover-rtl osversion<=6.3
+% override chrome://global/skin/tree/twisty.svg#open              chrome://global/skin/tree/twisty-Vista78.svg#open           osversion<=6.3
+% override chrome://global/skin/tree/twisty.svg#open-rtl          chrome://global/skin/tree/twisty-Vista78.svg#open-rtl       osversion<=6.3
+% override chrome://global/skin/tree/twisty.svg#open-hover        chrome://global/skin/tree/twisty-Vista78.svg#open-hover     osversion<=6.3
+% override chrome://global/skin/tree/twisty.svg#open-hover-rtl    chrome://global/skin/tree/twisty-Vista78.svg#open-hover-rtl osversion<=6.3
+# to be sure osversion<6 has always higher precedence than osversion<=6.3 we override twisty-Vista78.svg instead of twisty.svg
+% override chrome://global/skin/tree/twisty-Vista78.svg#clsd      chrome://global/skin/tree/twisty-XP.svg#clsd                osversion<6
+% override chrome://global/skin/tree/twisty-Vista78.svg#open      chrome://global/skin/tree/twisty-XP.svg#open                osversion<6
diff --git a/toolkit/themes/windows/global/listbox.css b/toolkit/themes/windows/global/listbox.css
index ddea3f8fa..fd60b1693 100644
--- a/toolkit/themes/windows/global/listbox.css
+++ b/toolkit/themes/windows/global/listbox.css
@@ -144,67 +144,70 @@ listheader[sortable="true"]:hover:active {
 }
 
 @media (-moz-windows-default-theme) {
-  listitem {
-    --listitem-selectedColor: rgb(217,217,217);
-    --listitem-selectedBorder: var(--listitem-selectedColor);
-    --listitem-selectedBottomBorder: rgb(204,204,204);
-    --listitem-selectedBackground: var(--listitem-selectedColor);
-    --listitem-selectedImage: none;
-    --listitem-selectedCurrentBorder: rgb(123,195,255);
-    --listitem-selectedFocusColor: rgb(205,232,255);
-    --listitem-selectedFocusBorder: var(--listitem-selectedFocusColor);
-    --listitem-selectedFocusBottomBorder: rgb(165,214,255);
-    --listitem-selectedFocusBackground: var(--listitem-selectedFocusColor);
-    --listitem-selectedFocusImage: none;
-    --listitem-selectedFocusCurrentBorder: var(--listitem-selectedFocusColor);
-    --listitem-selectedFocusCurrentBottomBorder: var(--listitem-selectedFocusBottomBorder);
-    --listitem-selectedFocusCurrentBackground: var(--listitem-selectedFocusColor);
-
-    color: -moz-FieldText;
-    margin-inline-start: 1px;
-    margin-inline-end: 1px;
-    padding-top: 1px;
-    padding-bottom: 1px;
-    border-width: 1px;
-    background-repeat: no-repeat;
-    background-size: 100% 100%;
-  }
+  @media not all and (-moz-os-version: windows-xp) {
+    listitem {
+      --listitem-selectedColor: rgb(217,217,217);
+      --listitem-selectedBorder: var(--listitem-selectedColor);
+      --listitem-selectedBottomBorder: rgb(204,204,204);
+      --listitem-selectedBackground: var(--listitem-selectedColor);
+      --listitem-selectedImage: none;
+      --listitem-selectedCurrentBorder: rgb(123,195,255);
+      --listitem-selectedFocusColor: rgb(205,232,255);
+      --listitem-selectedFocusBorder: var(--listitem-selectedFocusColor);
+      --listitem-selectedFocusBottomBorder: rgb(165,214,255);
+      --listitem-selectedFocusBackground: var(--listitem-selectedFocusColor);
+      --listitem-selectedFocusImage: none;
+      --listitem-selectedFocusCurrentBorder: var(--listitem-selectedFocusColor);
+      --listitem-selectedFocusCurrentBottomBorder: var(--listitem-selectedFocusBottomBorder);
+      --listitem-selectedFocusCurrentBackground: var(--listitem-selectedFocusColor);
+
+      color: -moz-FieldText;
+      margin-inline-start: 1px;
+      margin-inline-end: 1px;
+      padding-top: 1px;
+      padding-bottom: 1px;
+      border-width: 1px;
+      background-repeat: no-repeat;
+      background-size: 100% 100%;
+    }
 
-  listitem[selected="true"] {
-    border-top-color: var(--listitem-selectedBorder);
-    border-right-color: var(--listitem-selectedBorder);
-    border-left-color: var(--listitem-selectedBorder);
-    border-bottom-color: var(--listitem-selectedBottomBorder);
-    background-image: var(--listitem-selectedImage);
-    background-color: var(--listitem-selectedBackground);
-    color: -moz-DialogText;
-  }
+    listitem[selected="true"] {
+      border-top-color: var(--listitem-selectedBorder);
+      border-right-color: var(--listitem-selectedBorder);
+      border-left-color: var(--listitem-selectedBorder);
+      border-bottom-color: var(--listitem-selectedBottomBorder);
+      background-image: var(--listitem-selectedImage);
+      background-color: var(--listitem-selectedBackground);
+      color: -moz-DialogText;
+    }
 
-  listbox:focus > listitem[selected="true"] {
-    border-top-color: var(--listitem-selectedFocusBorder);
-    border-right-color: var(--listitem-selectedFocusBorder);
-    border-left-color: var(--listitem-selectedFocusBorder);
-    border-bottom-color: var(--listitem-selectedFocusBottomBorder);
-    background-image: var(--listitem-selectedFocusImage);
-    background-color: var(--listitem-selectedFocusBackground);
-    color: -moz-DialogText;
-  }
+    listbox:focus > listitem[selected="true"] {
+      border-top-color: var(--listitem-selectedFocusBorder);
+      border-right-color: var(--listitem-selectedFocusBorder);
+      border-left-color: var(--listitem-selectedFocusBorder);
+      border-bottom-color: var(--listitem-selectedFocusBottomBorder);
+      background-image: var(--listitem-selectedFocusImage);
+      background-color: var(--listitem-selectedFocusBackground);
+      color: -moz-DialogText;
+    }
 
-  listbox:focus > listitem[current="true"] {
-    border-color: var(--listitem-selectedCurrentBorder);
-    outline: none;
-  }
+    listbox:focus > listitem[current="true"] {
+      border-color: var(--listitem-selectedCurrentBorder);
+      outline: none;
+    }
 
-  listbox:focus > listitem[selected="true"][current="true"] {
-    border-top-color: var(--listitem-selectedFocusCurrentBorder);
-    border-right-color: var(--listitem-selectedFocusCurrentBorder);
-    border-left-color: var(--listitem-selectedFocusCurrentBorder);
-    border-bottom-color: var(--listitem-selectedFocusCurrentBottomBorder);
-    background-color: var(--listitem-selectedFocusCurrentBackground);
-    outline: none;
+    listbox:focus > listitem[selected="true"][current="true"] {
+      border-top-color: var(--listitem-selectedFocusCurrentBorder);
+      border-right-color: var(--listitem-selectedFocusCurrentBorder);
+      border-left-color: var(--listitem-selectedFocusCurrentBorder);
+      border-bottom-color: var(--listitem-selectedFocusCurrentBottomBorder);
+      background-color: var(--listitem-selectedFocusCurrentBackground);
+      outline: none;
+    }
   }
 
-  @media (-moz-os-version: windows-win7) {
+  @media (-moz-os-version: windows-vista),
+         (-moz-os-version: windows-win7) {
     listitem {
       --listitem-selectedBottomBorder: var(--listitem-selectedColor);
       --listitem-selectedBackground: rgba(190,190,190,.15);
diff --git a/toolkit/themes/windows/global/menu.css b/toolkit/themes/windows/global/menu.css
index c22aedd7a..2a228251d 100644
--- a/toolkit/themes/windows/global/menu.css
+++ b/toolkit/themes/windows/global/menu.css
@@ -148,13 +148,15 @@ menubar > menu:-moz-lwtheme[_moz-menuactive="true"]:not([disabled="true"]) {
 }
 
 @media (-moz-windows-default-theme) {
-  menubar > menu:-moz-lwtheme {
-    -moz-appearance: menuitem;
-  }
-
-  menubar > menu:-moz-lwtheme[_moz-menuactive="true"]:not([disabled="true"]) {
-    color: inherit !important;
-    text-shadow: inherit;
+  @media not all and (-moz-os-version: windows-xp) {
+    menubar > menu:-moz-lwtheme {
+      -moz-appearance: menuitem;
+    }
+
+    menubar > menu:-moz-lwtheme[_moz-menuactive="true"]:not([disabled="true"]) {
+      color: inherit !important;
+      text-shadow: inherit;
+    }
   }
 }
 
diff --git a/toolkit/themes/windows/global/menulist.css b/toolkit/themes/windows/global/menulist.css
index de24dbdde..9480bffda 100644
--- a/toolkit/themes/windows/global/menulist.css
+++ b/toolkit/themes/windows/global/menulist.css
@@ -82,6 +82,12 @@ menulist:-moz-focusring:not([open="true"]) > .menulist-label-box {
   border: 1px dotted ThreeDDarkShadow;
 }
 
+@media (-moz-os-version: windows-xp) {
+  menulist:-moz-focusring:not([open="true"]) > .menulist-label-box {
+    border: 1px dotted #F5DB95;
+  }
+}
+
 /* ..... disabled state ..... */
 
 menulist[disabled="true"] {
@@ -107,29 +113,31 @@ html|*.menulist-editable-input {
 }
 
 @media (-moz-windows-default-theme) {
-  .menulist-label-box {
-    background-color: transparent !important;
-    color: inherit !important;
-  }
-
-  .menulist-label {
-    margin-top: -1px !important;
-    margin-bottom: -1px !important;
-    margin-inline-start: 0 !important;
-  }
-
-  .menulist-description {
-    margin-inline-start: 1ex !important;
-  }
-
-  menulist:not([editable="true"]) > .menulist-dropmarker {
-    margin-top: -2px;
-    margin-inline-start: 3px;
-    margin-inline-end: -3px;
-  }
-
-  .menulist-icon {
-    margin-top: -1px;
-    margin-bottom: -1px;
+  @media not all and (-moz-os-version: windows-xp) {
+    .menulist-label-box {
+      background-color: transparent !important;
+      color: inherit !important;
+    }
+
+    .menulist-label {
+      margin-top: -1px !important;
+      margin-bottom: -1px !important;
+      margin-inline-start: 0 !important;
+    }
+
+    .menulist-description {
+      margin-inline-start: 1ex !important;
+    }
+
+    menulist:not([editable="true"]) > .menulist-dropmarker {
+      margin-top: -2px;
+      margin-inline-start: 3px;
+      margin-inline-end: -3px;
+    }
+
+    .menulist-icon {
+      margin-top: -1px;
+      margin-bottom: -1px;
+    }
   }
 }
diff --git a/toolkit/themes/windows/global/popup.css b/toolkit/themes/windows/global/popup.css
index e5c3c4500..010e85a93 100644
--- a/toolkit/themes/windows/global/popup.css
+++ b/toolkit/themes/windows/global/popup.css
@@ -58,7 +58,9 @@ panel[type="arrow"][side="right"] {
 }
 
 %ifdef XP_WIN
-@media (-moz-os-version: windows-win7) {
+@media (-moz-os-version: windows-xp),
+       (-moz-os-version: windows-vista),
+       (-moz-os-version: windows-win7) {
 %endif
 .panel-arrowcontent {
   border-radius: 4px;
diff --git a/toolkit/themes/windows/global/textbox.css b/toolkit/themes/windows/global/textbox.css
index 7b136a0ea..78ca7f320 100644
--- a/toolkit/themes/windows/global/textbox.css
+++ b/toolkit/themes/windows/global/textbox.css
@@ -37,8 +37,10 @@ html|*.textbox-textarea {
 }
 
 @media (-moz-windows-default-theme) {
-  textbox html|*.textbox-input::placeholder {
-    font-style: italic;
+  @media not all and (-moz-os-version: windows-xp) {
+    textbox html|*.textbox-input::placeholder {
+      font-style: italic;
+    }
   }
 }
 
diff --git a/toolkit/themes/windows/global/toolbar/spring-XP.png b/toolkit/themes/windows/global/toolbar/spring-XP.png
new file mode 100644
index 0000000000000000000000000000000000000000..e20f602c22ca95f82b8e05b37e1f6986cc9b8904
GIT binary patch
literal 440
zcmV;p0Z0CcP)<h;3K|Lk000e1NJLTq001BW001Be1ONa4*>kdg0000PbVXQnQ*UN;
zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBUzT1iAfR7l6|luJ$mK@f&Nl5s;~oP@YD
zdK4c-MC0_1D-361uF$*g#JE5tG4USiPEZpfXap=5!!#g|8G;KJ%<7-2)YtV_SK1TS
z`@A*lH-J9@T-2_ri__;$$$V8y?Ld|&Nw**i3s(TlFLZ!0zZ_iKjDP?;11JY#$Ylf=
z6n4tOSx_)9D_GbyEroR*l!6`O(+1$QLL?B@H54mEKqwj*#nB)X=$khs7CfO8<V}8j
zTD0fGQ-lVI_I-GaL<7-*FFeF?a%|H#9X0BpPmiH%w}&|01^3sTu+-s$uVjdITT}zH
zl_bM<+$tbpE4Ba-K9Ax8yz)t3iRIE0;KrV)fr$YPjZQ|`)Q8#)Pm7BS?|e@V5gPVb
zVX|-HP$iq-_TbhYsjSzC61Q>_o7l8z0H^FY<}H7fXU;}`WitY13+Gr!LriN2xT`KJ
izfZwa{RfZg2EY%x55H%xZDd>k0000<MNUMnLSTZ}z_erl

literal 0
HcmV?d00001

diff --git a/toolkit/themes/windows/global/toolbarbutton.css b/toolkit/themes/windows/global/toolbarbutton.css
index ac3c7ba4a..e96e529cf 100644
--- a/toolkit/themes/windows/global/toolbarbutton.css
+++ b/toolkit/themes/windows/global/toolbarbutton.css
@@ -84,11 +84,17 @@ toolbarbutton[checked="true"]:not([disabled="true"]) {
     text-shadow: none;
   }
 
-  toolbarbutton:-moz-lwtheme:not([disabled="true"]) {
+  toolbarbutton:-moz-lwtheme:not(:hover):not([checked="true"]):not([open="true"]):not([disabled="true"]) {
     color: inherit;
     text-shadow: inherit;
   }
 
+  @media not all and (-moz-os-version: windows-xp) {
+    toolbarbutton:-moz-lwtheme:not([disabled="true"]) {
+      color: inherit;
+      text-shadow: inherit;
+    }
+  }
 }
 
 @media not all and (-moz-windows-default-theme) {
diff --git a/toolkit/themes/windows/global/tree.css b/toolkit/themes/windows/global/tree.css
index 2b4957c6c..130096824 100644
--- a/toolkit/themes/windows/global/tree.css
+++ b/toolkit/themes/windows/global/tree.css
@@ -310,7 +310,7 @@ treecol:not([hideheader="true"]) > .treecol-sortdirection[sortDirection="descend
 /* ::::: twisty :::::  */
 
 treechildren::-moz-tree-twisty {
-  padding-inline-end: 1px;
+  padding-inline-end: 4px;
   padding-top: 1px;
   width: 9px; /* The image's width is 9 pixels */
   list-style-image: url("chrome://global/skin/tree/twisty.svg#clsd");
@@ -320,32 +320,8 @@ treechildren::-moz-tree-twisty(open) {
   list-style-image: url("chrome://global/skin/tree/twisty.svg#open");
 }
 
-treechildren::-moz-tree-twisty(hover) {
-  list-style-image: url("chrome://global/skin/tree/twisty.svg#clsd-hover");
-}
-
-treechildren::-moz-tree-twisty(hover, open) {
-  list-style-image: url("chrome://global/skin/tree/twisty.svg#open-hover");
-}
-
-treechildren:-moz-locale-dir(rtl)::-moz-tree-twisty {
-  list-style-image: url("chrome://global/skin/tree/twisty.svg#clsd-rtl");
-}
-
-treechildren:-moz-locale-dir(rtl)::-moz-tree-twisty(open) {
-  list-style-image: url("chrome://global/skin/tree/twisty.svg#open-rtl");
-}
-
-treechildren:-moz-locale-dir(rtl)::-moz-tree-twisty(hover) {
-  list-style-image: url("chrome://global/skin/tree/twisty.svg#clsd-hover-rtl");
-}
-
-treechildren:-moz-locale-dir(rtl)::-moz-tree-twisty(hover, open) {
-  list-style-image: url("chrome://global/skin/tree/twisty.svg#open-hover-rtl");
-}
-
 treechildren::-moz-tree-indentation {
-  width: 12px;
+  width: 18px;
 }
 
 /* ::::: gridline style ::::: */
@@ -394,196 +370,233 @@ treechildren::-moz-tree-cell-text(active, selected, editing) {
 }
 
 %ifdef XP_WIN
-@media (-moz-windows-default-theme) {
-  treechildren {
-    --treechildren-outline: none;
-    --treechildren-2ndBorderColor: rgba(255,255,255,.4);
-    --treechildren-selectedColor: rgb(217,217,217);
-    --treechildren-focusColor: rgb(123,195,255);
-    --treechildren-selectedFocusColor: rgb(205,232,255);
-    --treechildren-currentColor: rgb(125,162,206);
-    --treechildren-hoverColor: rgb(229,243,255);
-    --treechildren-selectedBorder: var(--treechildren-selectedColor);
-    --treechildren-selectedBottomBorder: rgb(204,204,204);
-    --treechildren-selectedImage: linear-gradient(rgb(217,217,217), rgb(217,217,217));
-    --treechildren-selectedBackground: transparent;
-    --treechildren-currentFocusBorder: var(--treechildren-focusColor);
-    --treechildren-currentFocusBottomBorder: var(--treechildren-focusColor);
-    --treechildren-selectedFocusBorder: var(--treechildren-selectedFocusColor);
-    --treechildren-selectedFocusBottomBorder: rgb(165,214,255);
-    --treechildren-selectedFocusImage: none;
-    --treechildren-selectedFocusBackground: var(--treechildren-selectedFocusColor);
-    --treechildren-selectedFocusCurrentBorder: var(--treechildren-focusColor);
-    --treechildren-selectedFocusCurrentBottomBorder: var(--treechildren-focusColor);
-    --treechildren-selectedFocusCurrentImage: linear-gradient(rgb(205,232,255), rgb(205,232,255));
-    --treechildren-hoverBorder: var(--treechildren-hoverColor);
-    --treechildren-hoverBottomBorder: var(--treechildren-hoverColor);
-    --treechildren-hoverImage: linear-gradient(rgb(229,243,255), rgb(229,243,255));
-    --treechildren-hoverCurrentBorder: var(--treechildren-currentColor);
-    --treechildren-hoverCurrentBottomBorder: var(--treechildren-currentColor);
-    --treechildren-hoverCurrentImage: linear-gradient(rgba(131,183,249,.16), rgba(131,183,249,.16));
-    --treechildren-hoverSelectedBorder: var(--treechildren-focusColor);
-    --treechildren-hoverSelectedBottomBorder: var(--treechildren-focusColor);
-    --treechildren-hoverSelectedImage: linear-gradient(rgb(205,232,255), rgb(205,232,255));
-  }
+@media not all and (-moz-os-version: windows-xp) {
+  /* ::::: twisty :::::  */
 
-  treechildren:not(.autocomplete-treebody)::-moz-tree-row {
-    height: 1.8em;
-    color: -moz-FieldText;
-    margin-inline-start: 1px;
-    margin-inline-end: 1px;
-    border-width: 1px;
-    border-color: transparent;
-    background-repeat: no-repeat;
-    background-size: 100% 100%;
+  treechildren::-moz-tree-indentation {
+    width: 12px;
   }
 
-  treechildren:not(.autocomplete-treebody)::-moz-tree-row(selected) {
-    -moz-border-top-colors: var(--treechildren-selectedBorder);
-    -moz-border-right-colors: var(--treechildren-selectedBorder);
-    -moz-border-left-colors: var(--treechildren-selectedBorder);
-    -moz-border-bottom-colors: var(--treechildren-selectedBottomBorder);
-    background-image: var(--treechildren-selectedImage);
-    background-color: var(--treechildren-selectedBackground);
-    outline: var(--treechildren-outline);
+  treechildren::-moz-tree-twisty {
+    padding-inline-end: 1px;
   }
 
-  treechildren:not(.autocomplete-treebody)::-moz-tree-row(current, focus) {
-    border-style: solid;
-    -moz-border-top-colors: var(--treechildren-currentFocusBorder);
-    -moz-border-right-colors: var(--treechildren-currentFocusBorder);
-    -moz-border-left-colors: var(--treechildren-currentFocusBorder);
-    -moz-border-bottom-colors: var(--treechildren-currentFocusBottomBorder);
-    outline: var(--treechildren-outline);
+  treechildren::-moz-tree-twisty(hover) {
+    list-style-image: url("chrome://global/skin/tree/twisty.svg#clsd-hover");
   }
 
-  treechildren:not(.autocomplete-treebody)::-moz-tree-row(selected, focus),
-  treechildren::-moz-tree-row(dropOn) {
-    -moz-border-top-colors: var(--treechildren-selectedFocusBorder);
-    -moz-border-right-colors: var(--treechildren-selectedFocusBorder);
-    -moz-border-left-colors: var(--treechildren-selectedFocusBorder);
-    -moz-border-bottom-colors: var(--treechildren-selectedFocusBottomBorder);
-    background-image: var(--treechildren-selectedFocusImage);
-    background-color: var(--treechildren-selectedFocusBackground);
+  treechildren::-moz-tree-twisty(hover, open) {
+    list-style-image: url("chrome://global/skin/tree/twisty.svg#open-hover");
   }
 
-  treechildren:not(.autocomplete-treebody)::-moz-tree-row(selected, current, focus) {
-    border-style: solid;
-    -moz-border-top-colors: var(--treechildren-selectedFocusCurrentBorder);
-    -moz-border-right-colors: var(--treechildren-selectedFocusCurrentBorder);
-    -moz-border-left-colors: var(--treechildren-selectedFocusCurrentBorder);
-    -moz-border-bottom-colors: var(--treechildren-selectedFocusCurrentBottomBorder);
-    background-image: var(--treechildren-selectedFocusCurrentImage);
+  treechildren:-moz-locale-dir(rtl)::-moz-tree-twisty {
+    list-style-image: url("chrome://global/skin/tree/twisty.svg#clsd-rtl");
   }
 
-  treechildren:not(.autocomplete-treebody)::-moz-tree-row(hover) {
-    -moz-border-top-colors: var(--treechildren-hoverBorder);
-    -moz-border-right-colors: var(--treechildren-hoverBorder);
-    -moz-border-left-colors: var(--treechildren-hoverBorder);
-    -moz-border-bottom-colors: var(--treechildren-hoverBottomBorder);
-    background-image: var(--treechildren-hoverImage);
-    outline: var(--treechildren-outline);
+  treechildren:-moz-locale-dir(rtl)::-moz-tree-twisty(open) {
+    list-style-image: url("chrome://global/skin/tree/twisty.svg#open-rtl");
   }
 
-  treechildren:not(.autocomplete-treebody)::-moz-tree-row(hover, current) {
-    -moz-border-top-colors: var(--treechildren-hoverCurrentBorder);
-    -moz-border-right-colors: var(--treechildren-hoverCurrentBorder);
-    -moz-border-left-colors: var(--treechildren-hoverCurrentBorder);
-    -moz-border-bottom-colors: var(--treechildren-hoverCurrentBottomBorder);
-    background-image: var(--treechildren-hoverCurrentImage);
+  treechildren:-moz-locale-dir(rtl)::-moz-tree-twisty(hover) {
+    list-style-image: url("chrome://global/skin/tree/twisty.svg#clsd-hover-rtl");
   }
 
-  treechildren:not(.autocomplete-treebody)::-moz-tree-row(hover, selected) {
-    -moz-border-top-colors: var(--treechildren-hoverSelectedBorder);
-    -moz-border-right-colors: var(--treechildren-hoverSelectedBorder);
-    -moz-border-left-colors: var(--treechildren-hoverSelectedBorder);
-    -moz-border-bottom-colors: var(--treechildren-hoverSelectedBottomBorder);
-    background-image: var(--treechildren-hoverSelectedImage);
+  treechildren:-moz-locale-dir(rtl)::-moz-tree-twisty(hover, open) {
+    list-style-image: url("chrome://global/skin/tree/twisty.svg#open-hover-rtl");
   }
 
-  tree[disabled="true"] > treechildren::-moz-tree-row {
-    background: none;
-    -moz-border-top-colors: transparent;
-    -moz-border-right-colors: transparent;
-    -moz-border-left-colors: transparent;
-    -moz-border-bottom-colors: transparent;
-  }
+  @media (-moz-windows-default-theme) {
+    treechildren {
+      --treechildren-outline: none;
+      --treechildren-2ndBorderColor: rgba(255,255,255,.4);
+      --treechildren-selectedColor: rgb(217,217,217);
+      --treechildren-focusColor: rgb(123,195,255);
+      --treechildren-selectedFocusColor: rgb(205,232,255);
+      --treechildren-currentColor: rgb(125,162,206);
+      --treechildren-hoverColor: rgb(229,243,255);
+      --treechildren-selectedBorder: var(--treechildren-selectedColor);
+      --treechildren-selectedBottomBorder: rgb(204,204,204);
+      --treechildren-selectedImage: linear-gradient(rgb(217,217,217), rgb(217,217,217));
+      --treechildren-selectedBackground: transparent;
+      --treechildren-currentFocusBorder: var(--treechildren-focusColor);
+      --treechildren-currentFocusBottomBorder: var(--treechildren-focusColor);
+      --treechildren-selectedFocusBorder: var(--treechildren-selectedFocusColor);
+      --treechildren-selectedFocusBottomBorder: rgb(165,214,255);
+      --treechildren-selectedFocusImage: none;
+      --treechildren-selectedFocusBackground: var(--treechildren-selectedFocusColor);
+      --treechildren-selectedFocusCurrentBorder: var(--treechildren-focusColor);
+      --treechildren-selectedFocusCurrentBottomBorder: var(--treechildren-focusColor);
+      --treechildren-selectedFocusCurrentImage: linear-gradient(rgb(205,232,255), rgb(205,232,255));
+      --treechildren-hoverBorder: var(--treechildren-hoverColor);
+      --treechildren-hoverBottomBorder: var(--treechildren-hoverColor);
+      --treechildren-hoverImage: linear-gradient(rgb(229,243,255), rgb(229,243,255));
+      --treechildren-hoverCurrentBorder: var(--treechildren-currentColor);
+      --treechildren-hoverCurrentBottomBorder: var(--treechildren-currentColor);
+      --treechildren-hoverCurrentImage: linear-gradient(rgba(131,183,249,.16), rgba(131,183,249,.16));
+      --treechildren-hoverSelectedBorder: var(--treechildren-focusColor);
+      --treechildren-hoverSelectedBottomBorder: var(--treechildren-focusColor);
+      --treechildren-hoverSelectedImage: linear-gradient(rgb(205,232,255), rgb(205,232,255));
+    }
 
-  treechildren::-moz-tree-cell(dropOn) {
-    background-image: none;
-    background-color: transparent;
-    border-radius: 0;
-  }
+    treechildren:not(.autocomplete-treebody)::-moz-tree-row {
+      height: 1.8em;
+      color: -moz-FieldText;
+      margin-inline-start: 1px;
+      margin-inline-end: 1px;
+      border-width: 1px;
+      border-color: transparent;
+      background-repeat: no-repeat;
+      background-size: 100% 100%;
+    }
 
-  treechildren::-moz-tree-cell-text(primary, dropOn) {
-    color: -moz-FieldText;
-  }
+    treechildren:not(.autocomplete-treebody)::-moz-tree-row(selected) {
+      -moz-border-top-colors: var(--treechildren-selectedBorder);
+      -moz-border-right-colors: var(--treechildren-selectedBorder);
+      -moz-border-left-colors: var(--treechildren-selectedBorder);
+      -moz-border-bottom-colors: var(--treechildren-selectedBottomBorder);
+      background-image: var(--treechildren-selectedImage);
+      background-color: var(--treechildren-selectedBackground);
+      outline: var(--treechildren-outline);
+    }
 
-  treechildren:not(.autocomplete-treebody)::-moz-tree-cell-text {
-    padding-bottom: initial;
-    border-color: transparent;
-    background-color: transparent;
-  }
+    treechildren:not(.autocomplete-treebody)::-moz-tree-row(current, focus) {
+      border-style: solid;
+      -moz-border-top-colors: var(--treechildren-currentFocusBorder);
+      -moz-border-right-colors: var(--treechildren-currentFocusBorder);
+      -moz-border-left-colors: var(--treechildren-currentFocusBorder);
+      -moz-border-bottom-colors: var(--treechildren-currentFocusBottomBorder);
+      outline: var(--treechildren-outline);
+    }
 
-  treechildren:not(.autocomplete-treebody)::-moz-tree-cell-text(selected, focus) {
-    color: -moz-DialogText;
-  }
+    treechildren:not(.autocomplete-treebody)::-moz-tree-row(selected, focus),
+    treechildren::-moz-tree-row(dropOn) {
+      -moz-border-top-colors: var(--treechildren-selectedFocusBorder);
+      -moz-border-right-colors: var(--treechildren-selectedFocusBorder);
+      -moz-border-left-colors: var(--treechildren-selectedFocusBorder);
+      -moz-border-bottom-colors: var(--treechildren-selectedFocusBottomBorder);
+      background-image: var(--treechildren-selectedFocusImage);
+      background-color: var(--treechildren-selectedFocusBackground);
+    }
 
-  @media (-moz-os-version: windows-win7) {
-    treechildren {
-      --treechildren-outline: 1px solid var(--treechildren-2ndBorderColor);
-      --treechildren-2ndBottomBorderColor: rgba(255,255,255,.6);
-      --treechildren-selectedBorder: var(--treechildren-selectedColor) var(--treechildren-2ndBorderColor);
-      --treechildren-selectedBottomBorder: var(--treechildren-selectedColor) var(--treechildren-2ndBottomBorderColor);
-      --treechildren-selectedImage: linear-gradient(rgba(190,190,190,.1), rgba(190,190,190,.4));
-      --treechildren-currentFocusBorder: var(--treechildren-currentColor) var(--treechildren-2ndBorderColor);
-      --treechildren-currentFocusBottomBorder: var(--treechildren-currentColor) var(--treechildren-2ndBottomBorderColor);
-      --treechildren-selectedFocusBorder: rgb(132,172,221) var(--treechildren-2ndBorderColor);
-      --treechildren-selectedFocusBottomBorder: var(--treechildren-currentColor) var(--treechildren-2ndBottomBorderColor);
-      --treechildren-selectedFocusImage: linear-gradient(rgba(131,183,249,.16), rgba(131,183,249,.375));
-      --treechildren-selectedFocusBackground: transparent;
-      --treechildren-selectedFocusCurrentBorder: var(--treechildren-currentColor) var(--treechildren-2ndBorderColor);
-      --treechildren-selectedFocusCurrentBottomBorder: var(--treechildren-currentColor) var(--treechildren-2ndBottomBorderColor);
-      --treechildren-selectedFocusCurrentImage: linear-gradient(rgba(131,183,249,.28), rgba(131,183,249,.5));
-      --treechildren-hoverBorder: rgb(184,214,251) var(--treechildren-2ndBorderColor);
-      --treechildren-hoverBottomBorder: rgb(184,214,251) var(--treechildren-2ndBottomBorderColor);
-      --treechildren-hoverImage: linear-gradient(rgba(131,183,249,.05), rgba(131,183,249,.16));
-      --treechildren-hoverCurrentBorder: var(--treechildren-currentColor) var(--treechildren-2ndBorderColor);
-      --treechildren-hoverCurrentBottomBorder: var(--treechildren-currentColor) var(--treechildren-2ndBottomBorderColor);
-      --treechildren-hoverCurrentImage: linear-gradient(rgba(131,183,249,.05), rgba(131,183,249,.16));
-      --treechildren-hoverSelectedBorder: var(--treechildren-currentColor) var(--treechildren-2ndBorderColor);
-      --treechildren-hoverSelectedBottomBorder: var(--treechildren-currentColor) var(--treechildren-2ndBottomBorderColor);
-      --treechildren-hoverSelectedImage: linear-gradient(rgba(131,183,249,.28), rgba(131,183,249,.5));
+    treechildren:not(.autocomplete-treebody)::-moz-tree-row(selected, current, focus) {
+      border-style: solid;
+      -moz-border-top-colors: var(--treechildren-selectedFocusCurrentBorder);
+      -moz-border-right-colors: var(--treechildren-selectedFocusCurrentBorder);
+      -moz-border-left-colors: var(--treechildren-selectedFocusCurrentBorder);
+      -moz-border-bottom-colors: var(--treechildren-selectedFocusCurrentBottomBorder);
+      background-image: var(--treechildren-selectedFocusCurrentImage);
     }
 
-    treechildren:not(.autocomplete-treebody)::-moz-tree-row {
-      border-width: 2px;
-      border-radius: 3px;
-      -moz-outline-radius: 3px;
+    treechildren:not(.autocomplete-treebody)::-moz-tree-row(hover) {
+      -moz-border-top-colors: var(--treechildren-hoverBorder);
+      -moz-border-right-colors: var(--treechildren-hoverBorder);
+      -moz-border-left-colors: var(--treechildren-hoverBorder);
+      -moz-border-bottom-colors: var(--treechildren-hoverBottomBorder);
+      background-image: var(--treechildren-hoverImage);
+      outline: var(--treechildren-outline);
     }
-  }
 
-  @media (-moz-os-version: windows-win8) {
-    treechildren {
-      --treechildren-outline: 1px solid var(--treechildren-2ndBorderColor);
-      --treechildren-selectedBorder: var(--treechildren-selectedColor);
-      --treechildren-selectedBottomBorder: var(--treechildren-selectedColor);
-      --treechildren-selectedImage: linear-gradient(rgba(190,190,190,.4), rgba(190,190,190,.4));
-      --treechildren-currentFocusBorder: var(--treechildren-currentColor);
-      --treechildren-currentFocusBottomBorder: var(--treechildren-currentColor);
-      --treechildren-selectedFocusBorder: rgb(132,172,221) var(--treechildren-2ndBorderColor);
-      --treechildren-selectedFocusBottomBorder: var(--treechildren-currentColor);
-      --treechildren-selectedFocusImage: linear-gradient(rgba(131,183,249,.375), rgba(131,183,249,.375));
-      --treechildren-selectedFocusBackground: transparent;
-      --treechildren-selectedFocusCurrentBorder: var(--treechildren-currentColor);
-      --treechildren-selectedFocusCurrentBottomBorder: var(--treechildren-currentColor);
-      --treechildren-selectedFocusCurrentImage: linear-gradient(rgba(131,183,249,.5), rgba(131,183,249,.5));
-      --treechildren-hoverBorder: rgb(184,214,251);
-      --treechildren-hoverBottomBorder: rgb(184,214,251);
-      --treechildren-hoverImage: linear-gradient(rgba(131,183,249,.16), rgba(131,183,249,.16));
-      --treechildren-hoverSelectedBorder: var(--treechildren-currentColor);
-      --treechildren-hoverSelectedBottomBorder: var(--treechildren-currentColor);
-      --treechildren-hoverSelectedImage: linear-gradient(rgba(131,183,249,.5), rgba(131,183,249,.5));
+    treechildren:not(.autocomplete-treebody)::-moz-tree-row(hover, current) {
+      -moz-border-top-colors: var(--treechildren-hoverCurrentBorder);
+      -moz-border-right-colors: var(--treechildren-hoverCurrentBorder);
+      -moz-border-left-colors: var(--treechildren-hoverCurrentBorder);
+      -moz-border-bottom-colors: var(--treechildren-hoverCurrentBottomBorder);
+      background-image: var(--treechildren-hoverCurrentImage);
+    }
+
+    treechildren:not(.autocomplete-treebody)::-moz-tree-row(hover, selected) {
+      -moz-border-top-colors: var(--treechildren-hoverSelectedBorder);
+      -moz-border-right-colors: var(--treechildren-hoverSelectedBorder);
+      -moz-border-left-colors: var(--treechildren-hoverSelectedBorder);
+      -moz-border-bottom-colors: var(--treechildren-hoverSelectedBottomBorder);
+      background-image: var(--treechildren-hoverSelectedImage);
+    }
+
+    tree[disabled="true"] > treechildren::-moz-tree-row {
+      background: none;
+      -moz-border-top-colors: transparent;
+      -moz-border-right-colors: transparent;
+      -moz-border-left-colors: transparent;
+      -moz-border-bottom-colors: transparent;
+    }
+
+    treechildren::-moz-tree-cell(dropOn) {
+      background-image: none;
+      background-color: transparent;
+      border-radius: 0;
+    }
+
+    treechildren::-moz-tree-cell-text(primary, dropOn) {
+      color: -moz-FieldText;
+    }
+
+    treechildren:not(.autocomplete-treebody)::-moz-tree-cell-text {
+      padding-bottom: initial;
+      border-color: transparent;
+      background-color: transparent;
+    }
+
+    treechildren:not(.autocomplete-treebody)::-moz-tree-cell-text(selected, focus) {
+      color: -moz-DialogText;
+    }
+
+    @media (-moz-os-version: windows-vista),
+           (-moz-os-version: windows-win7) {
+      treechildren {
+        --treechildren-outline: 1px solid var(--treechildren-2ndBorderColor);
+        --treechildren-2ndBottomBorderColor: rgba(255,255,255,.6);
+        --treechildren-selectedBorder: var(--treechildren-selectedColor) var(--treechildren-2ndBorderColor);
+        --treechildren-selectedBottomBorder: var(--treechildren-selectedColor) var(--treechildren-2ndBottomBorderColor);
+        --treechildren-selectedImage: linear-gradient(rgba(190,190,190,.1), rgba(190,190,190,.4));
+        --treechildren-currentFocusBorder: var(--treechildren-currentColor) var(--treechildren-2ndBorderColor);
+        --treechildren-currentFocusBottomBorder: var(--treechildren-currentColor) var(--treechildren-2ndBottomBorderColor);
+        --treechildren-selectedFocusBorder: rgb(132,172,221) var(--treechildren-2ndBorderColor);
+        --treechildren-selectedFocusBottomBorder: var(--treechildren-currentColor) var(--treechildren-2ndBottomBorderColor);
+        --treechildren-selectedFocusImage: linear-gradient(rgba(131,183,249,.16), rgba(131,183,249,.375));
+        --treechildren-selectedFocusBackground: transparent;
+        --treechildren-selectedFocusCurrentBorder: var(--treechildren-currentColor) var(--treechildren-2ndBorderColor);
+        --treechildren-selectedFocusCurrentBottomBorder: var(--treechildren-currentColor) var(--treechildren-2ndBottomBorderColor);
+        --treechildren-selectedFocusCurrentImage: linear-gradient(rgba(131,183,249,.28), rgba(131,183,249,.5));
+        --treechildren-hoverBorder: rgb(184,214,251) var(--treechildren-2ndBorderColor);
+        --treechildren-hoverBottomBorder: rgb(184,214,251) var(--treechildren-2ndBottomBorderColor);
+        --treechildren-hoverImage: linear-gradient(rgba(131,183,249,.05), rgba(131,183,249,.16));
+        --treechildren-hoverCurrentBorder: var(--treechildren-currentColor) var(--treechildren-2ndBorderColor);
+        --treechildren-hoverCurrentBottomBorder: var(--treechildren-currentColor) var(--treechildren-2ndBottomBorderColor);
+        --treechildren-hoverCurrentImage: linear-gradient(rgba(131,183,249,.05), rgba(131,183,249,.16));
+        --treechildren-hoverSelectedBorder: var(--treechildren-currentColor) var(--treechildren-2ndBorderColor);
+        --treechildren-hoverSelectedBottomBorder: var(--treechildren-currentColor) var(--treechildren-2ndBottomBorderColor);
+        --treechildren-hoverSelectedImage: linear-gradient(rgba(131,183,249,.28), rgba(131,183,249,.5));
+      }
+
+      treechildren:not(.autocomplete-treebody)::-moz-tree-row {
+        border-width: 2px;
+        border-radius: 3px;
+        -moz-outline-radius: 3px;
+      }
+    }
+
+    @media (-moz-os-version: windows-win8) {
+      treechildren {
+        --treechildren-outline: 1px solid var(--treechildren-2ndBorderColor);
+        --treechildren-selectedBorder: var(--treechildren-selectedColor);
+        --treechildren-selectedBottomBorder: var(--treechildren-selectedColor);
+        --treechildren-selectedImage: linear-gradient(rgba(190,190,190,.4), rgba(190,190,190,.4));
+        --treechildren-currentFocusBorder: var(--treechildren-currentColor);
+        --treechildren-currentFocusBottomBorder: var(--treechildren-currentColor);
+        --treechildren-selectedFocusBorder: rgb(132,172,221) var(--treechildren-2ndBorderColor);
+        --treechildren-selectedFocusBottomBorder: var(--treechildren-currentColor);
+        --treechildren-selectedFocusImage: linear-gradient(rgba(131,183,249,.375), rgba(131,183,249,.375));
+        --treechildren-selectedFocusBackground: transparent;
+        --treechildren-selectedFocusCurrentBorder: var(--treechildren-currentColor);
+        --treechildren-selectedFocusCurrentBottomBorder: var(--treechildren-currentColor);
+        --treechildren-selectedFocusCurrentImage: linear-gradient(rgba(131,183,249,.5), rgba(131,183,249,.5));
+        --treechildren-hoverBorder: rgb(184,214,251);
+        --treechildren-hoverBottomBorder: rgb(184,214,251);
+        --treechildren-hoverImage: linear-gradient(rgba(131,183,249,.16), rgba(131,183,249,.16));
+        --treechildren-hoverSelectedBorder: var(--treechildren-currentColor);
+        --treechildren-hoverSelectedBottomBorder: var(--treechildren-currentColor);
+        --treechildren-hoverSelectedImage: linear-gradient(rgba(131,183,249,.5), rgba(131,183,249,.5));
+      }
     }
   }
 }
diff --git a/toolkit/themes/windows/global/tree/sort-asc-XP.png b/toolkit/themes/windows/global/tree/sort-asc-XP.png
new file mode 100644
index 0000000000000000000000000000000000000000..64d077a8f4bb335a605184f844f3f7d725ec69a1
GIT binary patch
literal 161
zcmeAS@N?(olHy`uVBq!ia0vp^oIuRV!3HF!2OrA@Qj#UE5hcO-X(i=}MX3yqDfvmM
z3ZA)%>8U}fi7AzZCsS>Jikv-N978H@CDr_WWyWk|QS;zHy>xZ8n?ggkp`y0Mmiqty
z>;M02%v3lK(xTURCcP=LaSg-GtO*v6XNejcre0)lXkcW}&(RlnS?anGXdHv5tDnm{
Hr-UW|?oT!D

literal 0
HcmV?d00001

diff --git a/toolkit/themes/windows/global/tree/sort-dsc-XP.png b/toolkit/themes/windows/global/tree/sort-dsc-XP.png
new file mode 100644
index 0000000000000000000000000000000000000000..9c4a82587c4dee2c7ced6347841399f637b16cdd
GIT binary patch
literal 155
zcmeAS@N?(olHy`uVBq!ia0vp^oIuRV!3HF!2OrA@Qj#UE5hcO-X(i=}MX3yqDfvmM
z3ZA)%>8U}fi7AzZCsS>Jiflby978H@CB^J6x>m1{aDaVAj;xGCBg1m02{ytWjdK?(
zhlMH>s;Q~5sm*BEJ6TwH7t;)0pBpL{<}wH*Fnl}4!)wy`Y(3B*22WQ%mvv4FO#qJv
BE`0z1

literal 0
HcmV?d00001

diff --git a/toolkit/themes/windows/global/tree/twisty-Vista78.svg b/toolkit/themes/windows/global/tree/twisty-Vista78.svg
new file mode 100644
index 000000000..0a6908634
--- /dev/null
+++ b/toolkit/themes/windows/global/tree/twisty-Vista78.svg
@@ -0,0 +1,39 @@
+<?xml version="1.0"?>
+<!-- This Source Code Form is subject to the terms of the Mozilla Public
+   - License, v. 2.0. If a copy of the MPL was not distributed with this
+   - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="9" height="9">
+  <style>
+    use:not(:target) {
+      display: none;
+    }
+    use {
+      stroke: #74747b;
+      stroke-opacity: 0.85;
+      fill: none;
+    }
+    use[id^="open"] {
+      stroke: #636363;
+      stroke-opacity: 1;
+    }
+    use[id*="-hover"] {
+      stroke: #1cc4f7;
+      stroke-opacity: 1;
+      fill: #c0e8f9;
+    }
+  </style>
+  <defs>
+    <path id="clsd-shape" d="m 2.5,0.5 4,4 -4,4 z"/>
+    <path id="open-shape" d="M 7.5,3 7.5,7.5 3,7.5 3,6.5 6.5,3 Z"/>
+    <path id="clsd-rtl-shape" d="m 6.5,0.5 -4,4 4,4 z"/>
+    <path id="open-rtl-shape" d="m 1.5,3 0,4.5 4.5,0 0,-1 L 2.5,3 Z"/>
+  </defs>
+  <use id="clsd" xlink:href="#clsd-shape"/>
+  <use id="clsd-hover" xlink:href="#clsd-shape"/>
+  <use id="open" xlink:href="#open-shape"/>
+  <use id="open-hover" xlink:href="#open-shape"/>
+  <use id="clsd-rtl" xlink:href="#clsd-rtl-shape"/>
+  <use id="clsd-hover-rtl" xlink:href="#clsd-rtl-shape"/>
+  <use id="open-rtl" xlink:href="#open-rtl-shape"/>
+  <use id="open-hover-rtl" xlink:href="#open-rtl-shape"/>
+</svg>
diff --git a/toolkit/themes/windows/global/tree/twisty-XP.svg b/toolkit/themes/windows/global/tree/twisty-XP.svg
new file mode 100644
index 000000000..66219d513
--- /dev/null
+++ b/toolkit/themes/windows/global/tree/twisty-XP.svg
@@ -0,0 +1,33 @@
+<?xml version="1.0"?>
+<!-- This Source Code Form is subject to the terms of the Mozilla Public
+   - License, v. 2.0. If a copy of the MPL was not distributed with this
+   - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="9" height="9">
+  <style>
+    use:not(:target) {
+      display: none;
+    }
+    use {
+      stroke: #000000;
+      stroke-width: 1;
+    }
+  </style>
+  <defs>
+    <linearGradient id="linearGradient1">
+      <stop style="stop-color: #ffffff;" offset="0"/>
+      <stop style="stop-color: #e0e0e0;" offset="1"/>
+    </linearGradient>
+    <linearGradient id="linearGradient2">
+      <stop style="stop-color: #c9c9c9;" offset="0"/>
+      <stop style="stop-color: #f8f8f8;" offset="1"/>
+    </linearGradient>
+    <linearGradient id="gradient1" xlink:href="#linearGradient1" gradientUnits="userSpaceOnUse" x1="4.5" y1="2" x2="4.5" y2="7"/>
+    <linearGradient id="gradient2" xlink:href="#linearGradient2" gradientUnits="userSpaceOnUse" x1="4.5" y1="6" x2="4.5" y2="3"/>
+    <path id="clsd-shape" d="m 2,4.5 5,0 M 4.5,2 l 0,5"/>
+    <path id="open-shape" d="m 2,4.5 5,0"/>
+  </defs>
+  <rect style="fill: url(#gradient1); stroke: #5d5cc2; stroke-linejoin: round; stroke-opacity: 0.8" width="8" height="8" x="0.5" y="0.5"/>
+  <rect style="fill: url(#gradient2);" width="5" height="5" x="2" y="2"/>
+  <use id="clsd" xlink:href="#clsd-shape"/>
+  <use id="open" xlink:href="#open-shape"/>
+</svg>
diff --git a/toolkit/themes/windows/mozapps/downloads/downloadButtons-XP.png b/toolkit/themes/windows/mozapps/downloads/downloadButtons-XP.png
new file mode 100644
index 0000000000000000000000000000000000000000..d36385ce535cc71aeb76224137340dac5fd529fb
GIT binary patch
literal 3243
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
QdOS(o)`RNS-g1lo4?q}V0ssI2

literal 0
HcmV?d00001

diff --git a/toolkit/themes/windows/mozapps/downloads/downloadIcon-XP.png b/toolkit/themes/windows/mozapps/downloads/downloadIcon-XP.png
new file mode 100644
index 0000000000000000000000000000000000000000..8225b6c2dc45bea483c282471269f4829ab7aa8c
GIT binary patch
literal 1376
zcmV-m1)utfP)<h;3K|Lk000e1NJLTq000;O000;W1^@s6;CDUv0000PbVXQnQ*UN;
zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBU%0!c(cR7l6IR#|M6RTTdIb+&&x`_f{i
z3k4h6q%AZQml6nSVl<d4A#r(<1QPVg4MXCKZ`KEm(KJC{NpPaZP<b&*!h<BB6^SGm
zQjj)~mhPSD%s>C?Id^6XBm^GxBq#TuyL{g{-#PcTlJEO?koA1<NW_STO0HzxGhbRR
zp}cGxH@;k5d(e3m53!ID2s8N5i#@1R)?iu{*nR~UPMFXmZkV<_kU(l=aQN`yeernq
z{pOaoW?fgroMi(Qx2Sw;jkfka-6jaCwh7xaaruWLUdz2bt@~lu_k6gX3lLVRI6qe^
zEqpRIHulXr0fEbjME;lk2VUP52<9<+dj+yAA)kvuR!zKG=*RsCj=y{!ZWX9nRoJ!z
zi$?esCVo5p>*~tvZX&VddL|p&JGORg>1xK}l8N#0(>QbHEIdDquC}DuP_-+RQALb4
zk+5y<*oa)d1<`06x*jACp(&O@bIYa<TJE~L23?tKHt9ph&cQIA+Idh+Zu>L~*$Rno
z(=6Ab7a4HDWek7#s95{)y(uv+E-u1#Jv23?Q+0yNjSM!W(}{>ID?)e20Xz>lI`|np
zy@IwUVlYJpCM<{Lu+Xx*R@*oCeng-y;_*0w!Jv@Jh{iQm1tJVGO$&B5MGdNv1chcK
zsYWo|y%)!Je1U5hW?(b0V-c7QDk*NBO5)w;KgOP(1Ejr0`@K4WEu<o6nV`(f%;?Ev
z{^0h(9o<I6pf&__;#a7V!hr}nvX3E)cKmed6x3u5{ML99NB50lSNDGSo&;_b_LY^D
z8iA(b_Uw(NLgB=BoIx^?%y)!BVUhCEGVsrIEdwUeR0YosjNqNV&#^YCi^z|SjAGB$
zmuOu<AfS-~8s_HaP%IYf&988=JLxOKMNXyCEt@ngB=m2J0@F85{CU|&Iu$}H0TIy)
zgCkTM7j8H3Oy3AatWx2D<&_FZ1(eHWLBtub)J?H8cR+#(S`vwrp{lBgn!R;H5DQDd
z+<ch;G}2Z>i2T{UR|tfzZW&mmU|EvY)m0HR>(8}dsXV%P^u7cbn+bXhBZ}EM-sU42
zmqaF1b40>n5hZmVN^3P|0LO6z7<W$~5TK@zP_0%)^qfgeIwARXH5`d`M@g597cYuP
zb`AH#;ahKun=d*_P}hOETNs#~zj=;<?;e>f7zk3krh3(QJok7uV_?IERsl$Ii&kwI
zM_(i0Zqe%BG*3ZL%Tp%qIw;qGqmLRou3f(Y!$@vZC0S8_KJym}h3`eWkw}CV47&bN
z;jvgu{N{OG*KzXXNem1OU}9ndy}iA-a^(v8`}>j2X4h-MWLA}>QazPk!lFZ=m}c#L
zVNeE3r_;#ga>(cN;yax(5T;k7P>_Y@vMdW{skk0}eSNhKr8WM2>Czu8>oV<8^NOlb
zucpMJR2RLWHS5Z5R%?<x%=kTG$v6|nrf{Ik1lr!-j!Y)AuIJrRvMb7+V&89U*woaN
zIM20UY}K+Vw>;0u4h;>7&GYl~SXfwCPnYY$+6Sqt*%OI`ILsrjapqj3QmG`)oI7`}
zPQ|TUxg{Mr^43?Kn|HqvPc+kkU_Dypp0VMLh#M{1kg+lH8rRP>E4Vp*71t-veyuu=
zb$n^z>XVzhTDOF$ij5lFF|Y3TGr92~uN#wSijC!^$-fy}I&|m|BM$Q47xEnbADbor
io&19Iuzy?rtNjbdv51<;=w!_R0000<MNUMnLSTX+$c>x;

literal 0
HcmV?d00001

diff --git a/toolkit/themes/windows/mozapps/jar.mn b/toolkit/themes/windows/mozapps/jar.mn
index 0d77a4e79..53c69eb5b 100644
--- a/toolkit/themes/windows/mozapps/jar.mn
+++ b/toolkit/themes/windows/mozapps/jar.mn
@@ -22,8 +22,16 @@ toolkit.jar:
   skin/classic/mozapps/extensions/localeGeneric.png          (webextensions/localeGeneric.png)
   skin/classic/mozapps/extensions/heart.png                  (webextensions/heart.png)
 * skin/classic/mozapps/extensions/newaddon.css               (webextensions/newaddon.css)
+  skin/classic/mozapps/extensions/category-discover-XP.png   (webextensions/category-discover-XP.png)
+  skin/classic/mozapps/extensions/category-plugins-XP.png    (webextensions/category-plugins-XP.png)
+  skin/classic/mozapps/extensions/category-recent-XP.png     (webextensions/category-recent-XP.png)
+  skin/classic/mozapps/extensions/category-available-XP.png  (webextensions/category-available-XP.png)
+  skin/classic/mozapps/extensions/extensionGeneric-16-XP.png (webextensions/extensionGeneric-16-XP.png)
+  skin/classic/mozapps/extensions/themeGeneric-XP.png        (webextensions/themeGeneric-XP.png)
+  skin/classic/mozapps/extensions/themeGeneric-16-XP.png     (webextensions/themeGeneric-16-XP.png)
+  skin/classic/mozapps/extensions/localeGeneric-XP.png       (webextensions/localeGeneric-XP.png)
 #else
-  skin/classic/mozapps/extensions/about.css                  (extensions/about.css)
+ skin/classic/mozapps/extensions/about.css                  (extensions/about.css)
   skin/classic/mozapps/extensions/blocklist.css              (extensions/blocklist.css)
 * skin/classic/mozapps/extensions/extensions.css             (extensions/extensions.css)
 * skin/classic/mozapps/extensions/selectAddons.css           (extensions/selectAddons.css)
@@ -78,9 +86,33 @@ toolkit.jar:
   skin/classic/mozapps/profile/profileicon.png               (profile/profileicon.png)
   skin/classic/mozapps/update/updates.css                    (update/updates.css)
   skin/classic/mozapps/viewsource/viewsource.css             (viewsource/viewsource.css)
+  skin/classic/mozapps/downloads/downloadButtons-XP.png      (downloads/downloadButtons-XP.png)
+  skin/classic/mozapps/downloads/downloadIcon-XP.png         (downloads/downloadIcon-XP.png)
+  skin/classic/mozapps/plugins/pluginGeneric-XP.png          (plugins/pluginGeneric-XP.png)
+  skin/classic/mozapps/plugins/pluginBlocked-XP.png          (plugins/pluginBlocked-XP.png)
+  skin/classic/mozapps/plugins/pluginGeneric-16-XP.png       (plugins/pluginGeneric-16-XP.png)
+  skin/classic/mozapps/profile/profileicon-XP.png            (profile/profileicon-XP.png)
+  skin/classic/mozapps/update/downloadButtons-XP.png         (update/downloadButtons-XP.png)
 
 #ifdef MOZ_PHOENIX
 [browser/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}] chrome.jar:
 #elif MOZ_SEPARATE_MANIFEST_FOR_THEME_OVERRIDES
 [extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}] chrome.jar:
 #endif
+% override chrome://mozapps/skin/downloads/downloadButtons.png            chrome://mozapps/skin/downloads/downloadButtons-XP.png        osversion<6
+% override chrome://mozapps/skin/downloads/downloadIcon.png               chrome://mozapps/skin/downloads/downloadIcon-XP.png           osversion<6
+#ifdef MOZ_WEBEXTENSIONS
+% override chrome://mozapps/skin/extensions/category-discover.png         chrome://mozapps/skin/extensions/category-discover-XP.png     osversion<6
+% override chrome://mozapps/skin/extensions/category-plugins.png          chrome://mozapps/skin/extensions/category-plugins-XP.png      osversion<6
+% override chrome://mozapps/skin/extensions/category-recent.png           chrome://mozapps/skin/extensions/category-recent-XP.png       osversion<6
+% override chrome://mozapps/skin/extensions/category-available.png        chrome://mozapps/skin/extensions/category-available-XP.png    osversion<6
+% override chrome://mozapps/skin/extensions/extensionGeneric-16.png       chrome://mozapps/skin/extensions/extensionGeneric-16-XP.png   osversion<6
+% override chrome://mozapps/skin/extensions/themeGeneric.png              chrome://mozapps/skin/extensions/themeGeneric-XP.png          osversion<6
+% override chrome://mozapps/skin/extensions/themeGeneric-16.png           chrome://mozapps/skin/extensions/themeGeneric-16-XP.png       osversion<6
+% override chrome://mozapps/skin/extensions/localeGeneric.png             chrome://mozapps/skin/extensions/localeGeneric-XP.png         osversion<6
+#endif
+% override chrome://mozapps/skin/plugins/pluginGeneric.png                chrome://mozapps/skin/plugins/pluginGeneric-XP.png            osversion<6
+% override chrome://mozapps/skin/plugins/pluginBlocked.png                chrome://mozapps/skin/plugins/pluginBlocked-XP.png            osversion<6
+% override chrome://mozapps/skin/plugins/pluginGeneric-16.png             chrome://mozapps/skin/plugins/pluginGeneric-16-XP.png         osversion<6
+% override chrome://mozapps/skin/profile/profileicon.png                  chrome://mozapps/skin/profile/profileicon-XP.png              osversion<6
+% override chrome://mozapps/skin/update/downloadButtons.png               chrome://mozapps/skin/update/downloadButtons-XP.png           osversion<6
diff --git a/toolkit/themes/windows/mozapps/plugins/pluginBlocked-XP.png b/toolkit/themes/windows/mozapps/plugins/pluginBlocked-XP.png
new file mode 100644
index 0000000000000000000000000000000000000000..954036c1f099c58165878f5ab9349f0f9b705d3e
GIT binary patch
literal 1230
zcmV;<1Tp)GP)<h;3K|Lk000e1NJLTq001BW001Be1^@s6b9#F80000PbVXQnQ*UN;
zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBU$a7jc#RCwCNS4(VERT%!xy)$=aI`7({
zV{FtQD5(Y&1qy=3VL=zf2N)%~FtRamr7nfI5sW4T5*HdbR^kJJMiYV?Fwux&L>7uE
zJ{GMeD3vLtbg1pjeH{P)+<Waj?sR69q<?dAUjLl$JOAt43MnNPQ#35HEINUZKe+tM
zxu!~g?c4K=J$-o#q})JLDKzb*mdqUMeR1ajZ~tkhG_^%K&PJLF2=SGk%JTkDvoo`|
z_16+uNSyNAem$8<OWT6b)lVLywF31Ay#0MzBHhhnPiHHwZKCN=+ZL#o3$O0lM%}Qo
z&WU3Pr!olVmJomqYoZ8erqm5Df~P<G6k0rqP*0A)b(qDAFsG-|n2+#1*T1xTS4RZ2
zNOZG*qu5PLVPxon$s|xJK~~C;W`%W>t}r6dQz;nftkMZ5Qm9N#LWDxT#UAL`0tkm6
zbcsaJwQ4P#s{~x0g;<hDeCcw?xmk5vmQ-O7A{wjF=^`E8XN!^C({UDPVPhGCm%ccG
z*`Iy{%rZjR9@X=F=JY8DvH&+82kDePKhEcHixuD6pK99z6GLy_C8804Zcw~9j>?5U
zfwSM&=oq?&H0zKoq?0njpseBP0JY<75zr#Bf<KN3fl7c5uajO&9X%HJryJTPAR>|b
z{c(QqA!L3%hsy7xC{`@wj1UY8%IK~Atk<><$-4G~P}2tlB>f4*R@{NE{*@e*$ZLZ4
zlu0$ibrBqg(z6%w)$2fo2ziHs&Y|oxO*NOQGO27_)i#0258vt4;;!lV5cr3vL#4YW
zxwk1DO>a((QkLg7?OCMGuxd=MuxzJ${iEC4Bf#K#Vm@dci#%*u6jgL<PAk=@;#ow1
zEW$*ba+z3Cu#t6iBE+;!>OF8WitMls)Pt*{WUH1fY(~$+k0WvS8g=v1ci*5m{5~c=
zKB!z`N*CO$0xx$$z&Cpk_zllKkNl43YV^|^3#vtLz6E1@Um<Y20o-zAXN4&6=9>l^
zz^kS2g`K$WktYJdZKs1ur~<AIoPD0#_GHVKGq-hnAh@k{@)l4ebHG)D)2T?TbW8fT
z%evi&x6B%!7sgFw*W4EfZaFOobg#Ibk{tZJ^_{u%MiuGR;A-p#QUExcU0G}aaKczl
z-Fa$r(tD~y0WL9A5Y~Zns$Koz43ewYW9`^<Qx{x1{dFL?$K9xRyVl@-D&b1I4xICR
z{N1-(#=zL&4+6n0mq5hBXiC7dfZYJjgf1ODj6dFZy(##}-rX2Iaxf6QnFT_1w|5C}
zd9AK+RX!hm?PW}joJIbr9mw1};6BHvzQov}_b@vA5o{p?!R=ZCj1?FIyb)H9NC3DW
zaOaO6!Ec`&S}@uJz}0tFD;G%BsJu1<Z&qa50G~g<i3`-@MeT|;`!{p~YVxZ6S8$dq
z9>%{r!vAs>LM1Yrh`;aqygq!5{sA)imG^1@_hv&KnEZJ}Qlan_XM+6oKSX*Y%G@(n
sU@5L5VO~S<Y7(dhuW`X*$v*-N0L<n!sx8+FZ2$lO07*qoM6N<$f`L;<c>n+a

literal 0
HcmV?d00001

diff --git a/toolkit/themes/windows/mozapps/plugins/pluginGeneric-16-XP.png b/toolkit/themes/windows/mozapps/plugins/pluginGeneric-16-XP.png
new file mode 100644
index 0000000000000000000000000000000000000000..d6dffb29b4f853a6f34a709ae5fb116d5b63a6a7
GIT binary patch
literal 544
zcmV+*0^j|KP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV0005!Nkl<ZIE|%~
z!Acu(5XOJAyWQBNwJSz3P+cU4ScJYtDU{YjpTVOS?;bq$;-SYrM_;0EP(AbzRBF(I
z+9tu>ng8^V-CzvTLkIrw&G4UZzWHFp-T9wL9u|&{etsSf{e7z?U-$Prdym!XkXpgv
z;b6y1KV4p)_FAnb!{LZmy_W!dKRKhWt*opUaUAa*9ISnrQP60lJ0XPL=H>=PA++0p
z@m&l+p0A@CvAXK0N-ENL3p^xfbkEPP==Xn+WzV_2{X@IG2Ef(T1&fQ%xW4{Po_ERf
z<xbrf)nH-aX*bI<%!Gb_z<6wA*%Dc{#CUA<`vc5`EX!y%)9##!Q6!x_Um?%m%sIWa
zwK0>AMl8<}93Ou}B*H9U7EleS8md<1Mo}n5QBs!5?(WA~f+R@+a1Xc#qDT<|2!sG;
z5CXUhAj~N+Gu)+`Xq2T<mP%PFs&!sY@r;R`*B`c{XrYpCsD`THKGx|<@Pwt_yX~oh
z(XZ2{JE-cku`J6OTu(MrL=x_9&YDvKwJ4r^43%uV_w=5b6GKG|Na86$Fp`PX^3k2m
z6th4G0SFK#y_JcvxTm-`fCP8NU4aO90}MzIF+>7U)Wkg&sE#R4U#z8zy`H<pz`yQW
iL}Dv$Pfo13x%dm)Enl3KWP#TJ0000<MNUMnLSTYl1pv1I

literal 0
HcmV?d00001

diff --git a/toolkit/themes/windows/mozapps/plugins/pluginGeneric-XP.png b/toolkit/themes/windows/mozapps/plugins/pluginGeneric-XP.png
new file mode 100644
index 0000000000000000000000000000000000000000..3e6d43c9ac1f12558eeb14aaab7a653655eab907
GIT binary patch
literal 895
zcmV-_1AzRAP)<h;3K|Lk000e1NJLTq001BW001Be1^@s6b9#F80009<Nkl<ZScUDE
z&x@Ny7{@=)JI^F(%)Ziep;_3{gO)<G1*4Y=Rk0qt^dRb8y!0>FqfmPAwpjWXNbeqd
z@~GYyid*&~9vWz%i_mOblWb-l5AT~a&5t(GS9)<^m@xD3e7^I{JkL83Gvjr(<h9cO
z7XaugMtgftzV3EMH)FKxfH@~WZ*1s;-QBJG`TAGK$D^Ae*av_liTskL`e1i=>-$0k
zK>u!<`Zq@-MFgA+Uz+uA0QUjR`rmDA_<9J68K{QOq5lc+N&&Jg3+~)`@&)h%z`?<<
z)M{nYw2B#YyC<BS47qZp3BaRA2UM#i(zJ?5w%+RvXf}7o?!LW!d+VFEBA}|D0*FM;
zo!g{ZeS=D+Ous+Cdr*z2>ev?VtEi?_DrKA-P%i(8_X%bRz(-3t%NCq-9|KgYk;|9Q
z)9XbBgUH#lRW4kpF&YI<PqRDRYQ2T3o3rsga(wIo-do05ngy!*w)dWg4}YWGeu~JD
zdR-A2(r!QH@bEF-d%X7?9zI@Zv%mj4s*0+f+1u-;D@Wkoy}#b^-XkJ(I!CnIokaq<
zdesBG)MjT#5fOlEz>h0MKvi$3D$Y5)_X{KBy&v!Hr8ZM`*B7!DO*-d39RF^$T68)c
zj*gD#^?KB5H8wXlX*3!*=T^1>-d|aOYH}?`ND|oIZgBBp1Lv6Qst_YI8V#Dw1|cxl
zW6V16?#cr8_kTKHDwW7egkc6|MhFHNF=lfyMnW*mvN1*@gg}f&j4_8tLWsl|>$h%w
zwwi!asYInxVO*nf2dG-^+$N4ij1VGb0keomf=C1s%%;UGE_e$sVYcHJ;b!yjY{!uh
zLO#YxRG!a;Nn}<Q09H7B?FbYN4<W82zzT<(tsx-0*~P+N83D=K84<ZOPPHQ8W`>Ad
z${DgO0trz1FW~vRqcqE$6(B(Qd66j&9<y>-&KXMu<Pj(yzAOUMl~Be4La<4ND+)d%
zK*)>Dq9gEQCk4X+{Ol3TehUn+EDZ~XPy8<vU_bz#4Tq<Q$g;26KZOH4%Ndh}$+JAq
zO%K$8?R;GP)LFls0)GJQd_1)r{KEf&DG_BBoY%i-mWvon!{-D{iJ(CEv<Pel_%}q&
Vd(oPJa2x;t002ovPDHLkV1jJFp_Tvu

literal 0
HcmV?d00001

diff --git a/toolkit/themes/windows/mozapps/profile/profileicon-XP.png b/toolkit/themes/windows/mozapps/profile/profileicon-XP.png
new file mode 100644
index 0000000000000000000000000000000000000000..0854ee17748e2cc0b271d6b9cf4132b5847d8646
GIT binary patch
literal 826
zcmV-A1I7G_P)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00007bV*G`2h<A@
z1P=u&^|kH*000SaNLh0L08StP08StQ7JZrC00004XF*Lt006O%3;baP0008XNkl<Z
zc-noFUr1A77{;HSv;QvjxaoFaqFHH%Hk%efWE5B!-Io*;8rVgI1Q7%gNOxX#Azc+j
zbde<mS$9R6ky$2^rn9Eobk4asw{v#>>};oRrZQ!8;NigG`90_5`QA^1|2$8+F0xv^
z;hB<3IU_OdR@bBc{+%Ap&JQo|c3#h@YNwJ)7buG2U`mQi2E7h{X8mc8f9Xcgz{g%<
zQ#bu|F5GwL>Y0p+r&dR)T@oZl165}-8ZhgbgD6Urk)~QqTI&0BDC*f{sN4WaQaWsQ
ztHx~9BN~n(9_Jt#Q!p_GNTLi`lJ$FSB@c+zkv~9`nwY`@OpQ;IFd5}dE*x(;g@&Vb
zu<tHH1~N2hrTh?EdO2@^l2Vx2UtYvw2{;c{q48J~^g11^RvY%$?t`_|fd0{MZ^we+
zubcg8a|8IK5ayG7aam;v>gubY6<5I}lSpzL(n=Z@vl*0D8zR5@uvz4`3C4dfUYnR4
zopd@KNF_xq2NtmsTt;jq3N99h&+C`x;>rxMX7ZlGk3i7twql3^-C?m<Xg<NMgNfA`
z7QJ&Ah`ZCC3_F16^hn+S9JyDxcHqLp;+m5+^Mid*xd=Ip6)Y`;Fp_bBK75~6bk-A*
z@Z2Cczi(#;nyTuG=k1r;POGXBL%a#C=j<@jY1sGFV&d^IL|#HUTW|KV?ru3ae3mf6
z)&x{@cl(vL^EZvgVk8B?U}EuVcm@$EjW?g?G36_Sjxs?OWbm?7#(Q4BBiO>$1a6n>
zHp4j9;jA*M39PdjzBP&LhlnDJ1d$Xg2_kt%vL#j$ec1|#L?cU~aH5)~caZ=Uf}jwy
zv;q7BSE4}#{GSqQW4-UQ@b=5ZHrllIh8|~?yVb%}mQb`oOIBAExJZg$4J6k>KUY)X
zi5V<UkkK<Q2ocD48?&8M5LFXdH}*u%4!8ki#pMEj0iCE&PkY{*I{*Lx07*qoM6N<$
Eg3di`Q2+n{

literal 0
HcmV?d00001

diff --git a/toolkit/themes/windows/mozapps/update/downloadButtons-XP.png b/toolkit/themes/windows/mozapps/update/downloadButtons-XP.png
new file mode 100644
index 0000000000000000000000000000000000000000..d36385ce535cc71aeb76224137340dac5fd529fb
GIT binary patch
literal 3243
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
QdOS(o)`RNS-g1lo4?q}V0ssI2

literal 0
HcmV?d00001

diff --git a/toolkit/themes/windows/mozapps/webextensions/category-available-XP.png b/toolkit/themes/windows/mozapps/webextensions/category-available-XP.png
new file mode 100644
index 0000000000000000000000000000000000000000..d1b737ab053238e964be204f9a83618e66b059ae
GIT binary patch
literal 1671
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
RA!q;q002ovPDHLkV1jy~C2s%#

literal 0
HcmV?d00001

diff --git a/toolkit/themes/windows/mozapps/webextensions/category-discover-XP.png b/toolkit/themes/windows/mozapps/webextensions/category-discover-XP.png
new file mode 100644
index 0000000000000000000000000000000000000000..a6f5b49b37f13cf890f82309ea9aff678916ec71
GIT binary patch
literal 1324
zcmV+{1=IS8P)<h;3K|Lk000e1NJLTq001BW001Be1^@s6b9#F8000E@Nkl<ZSi{Aa
z%a0XB7{z~e=Uy0?2Qzc$&J1r55CvkCM2+zgi~)BNO=RW5uw!eCG44(H58SyhZu~FY
zx)EH63K|qND2&4l6PVjw-@`>!-zPFNiH}Zhs=KPY&iT$c-BmZZJDWN7oS*c=C-<SM
zm?>(4s-h~~xcn!JU$nz!=Bu;G<M7FSoOtyyL`$L+MCoZ`x!LKc@joA%CZMVS!_`ZH
zn*RF)%qju{7HEm-e?UM@h855fk+MVXUnOv_yxp%r1{aOg$2XsW4ZQ`EZ`A$B^Sc;t
zjduD5!9|lYM?W6*wL8Y0%aOG&J^UjCT>aw2{OE@#UU&j{A`ut>Hxs6gf)*o$0PbAe
z$lT#!AEHk$Jildp$5_$YGmD!*2z+++3Rj=J&-B5qcwL6T%?&M_mFvoLHxBUb@#6^~
z)VO<lh2=XdC(nQK)ujz(Ak=EF9eVm0yY>cJtySh)tGxf>UY@?*;P)R^Xx}gX7W~!4
zoqTX=A9MM+`S~_SPCiAb)n4DQ1=}Yk-kE4FaQD|M+<PFM{x=Wo=KgoT@O8Y)<o*#t
zL;Jv=y*bBQC-!n{sSOSUsL|%&v1w*^ExZlGwhSro`Fp2BbJxz-wr=0b&D(3V3+?-z
zJG6%r*Ctu|sZDHa2mG0zXE}Fd@6i2=%LR>wF*QH`%;)c&Zmh3>+tfs}Ifvfm#_wxP
zPc-P11JnYXSy*80d*$0=34r6*XE?KefyL##76j5W4l54?X)m#DaysDb2Y!4cflzCl
znw;Go%GGbUwYZiiO$2ILGs8JnpJwS&1mM{06xVLvPwcGH)xki`C{}MW(R`Uu8+m1r
zz>ozKGtCQQ)6FzkO_Zd;aLm%gnDf$1i<f3v>6+A+fW6xXj5M}0wqu5=x%u<!TCk(l
z+TR%6!r0-neDKj(dP?dV(RF0NJ|Ng|T@F%~j5nLR*CjAB?~hyY6GZ{;hP#1#IyddM
zX1Htj+_dL<u+K0PR{ywtU|j-U12e~icEQyM7;1{E;^t}cptvN!V2WS_5!@UNlE<t=
z!p+zJ4tU;bxf_l{uE_c-H{1kQPpvDMp(dTm>3POHk%%hm6Nq_#=k5dS6*B|ZwDHh1
zW~QKu=KCtbn!$rvXG}!bC!pepSjTH~!%PWon0EcuT%}tk)YmtV7f<p>*?<L61QAI#
z3@K0rDg$d5(0anB*^*vxcOypGhyp^45$jBvWbLi8B4b%%F(qhT7b@afdGFvxaH9}=
z^o}Tm5Xu-SqY$GYQHUZG`8u^}yex%S2<;+L7Lj%oiZW6bN?8h}C^4pA8I^WvM0G+4
zwMQv15~EQ@>ByP_X8H9~M72*D(-h7sq*dTTC&Wnw10-dj4wOR#LI?ra5@RHmG0Scp
zuPaL|6R13v9x`H<Q{VMHWN?5|4Pa{sA$r~k)d%btEu&EOWWY4}Y(3SR8ECq8x1MlX
zU+9wm-8D+o0Y-rbfIf`Ccr1l7CSZ5PG|MVoxhrDi0J<555!6sTwGY|qWediEl|BMl
z{yH#Tsv@OeuBaI9f|(&1umV>xjO@P{1jQ|VNjuni>8=qlqarm1)GHeXLuh~gu|(O9
zT_6=q4N*s{*H3c*%@8H616lImovlDxF+J}k0xT~+psKuYSKOn(4q!Jh2W<NX|GXNo
i2HXLD1C{}CcmE4NOgbv2M#T&O0000<MNUMnLSTZ?_I5u2

literal 0
HcmV?d00001

diff --git a/toolkit/themes/windows/mozapps/webextensions/category-plugins-XP.png b/toolkit/themes/windows/mozapps/webextensions/category-plugins-XP.png
new file mode 100644
index 0000000000000000000000000000000000000000..5c4d8bf471825d8960b8d35f6060ba620b7b0adc
GIT binary patch
literal 886
zcmV-+1Bv{JP)<h;3K|Lk000e1NJLTq001BW001Be1^@s6b9#F80009$Nkl<ZSi|j=
z+e=hY6viDNf~chI#ebkDUqXA(umKenFPJ9U6k4g2IpJMMv_jJy@kCQFASRY%NTz0!
zm7<n;?ILBb5lJfA6bTh%5X9H|#xr0wGn}ad5j61Q?6cO|`}@wBz4q|~;P*H2`)}Z%
zFrX+)*(XoV_f%EQy%ij%PR(~o?BJUGLB^P44Qn|^M+37T6lDPx%MuzImcVgi<Lt64
z&oN`nv4&&L`6C0>)k|ptNP7Apva?4~R5Xpk!f6~jG>VLjA-M7!GsYZiSj#!Cyin(}
zfx5bP7X_R-<G|6Q&rn+W0+p4oo!7&Mr?G$k2$&}vGq$#db2wM68TZ+M#j^ZTz=aDA
zSgnhwtzE#06LZch?-gYp_4V(aaO|$eX5(M7Ojdk0peP@4_UtF*=1!ul?72L}E1WyG
z=)Cftan=wmH9~-91Lx1LY!~F|zaTNuj<~p<UtpXy#9NKk`q@<%tJ#3f_O(<1NlCfu
zc5%jisS!?VHqg}c?WO=yQ}YJ-`7^SshY%m%>%8)wabIeLA<YI_THt7I2IPv?R-mm7
zXm1BPI)Khjpt~FB?FIV!0K0v4%oua5VJ+uyF4y2%!m?%qX7ebDiyul)lPT%%DHIe;
z!fc)p#-+u^ke4?mt@i*qIU~~d_i*6AFfucTuy5Z0_U`SMw{Qn(X?KvC+K1$1JCc&b
zrB(wJuc(;8@#CwMmp_%>o<>Q@6EXBy%sj%eV^d;e0!NOF%WfZ)gXli8vWDeM7=+0*
zAO`xeXU}cy-hIm{o{(@uy8%AA-r{j_UA`EY(p@|z=DKzR{Ll3kkBYjc-2gY7-r|vw
z9q^$GCUh4!8n1dcAU}h!Uf9M~(_4Jku6BxSQ#A~p3~UgB+2?wTM?_qqNU*Bm(ZEI_
zgoljY;yZV?Q6xmw@Ms`F2;&K-w|IE?Wr~EU8g32v3!4Qak5|3L!@@36#Heccdor*^
zi00X@x43E`TGjCP_6DN(VbNP$H4x?P4R8-^5<*R;ey?A(-w{_0gsK`IH{m)VNZ297
z3W+)qtF9TOY8c#}glkODWuUNCCj!+qe-L+j6ssl->YmUO!_VU6JE<>}40#l&fdBvi
M07*qoM6N<$g7*)s5C8xG

literal 0
HcmV?d00001

diff --git a/toolkit/themes/windows/mozapps/webextensions/category-recent-XP.png b/toolkit/themes/windows/mozapps/webextensions/category-recent-XP.png
new file mode 100644
index 0000000000000000000000000000000000000000..7ecfc7d4c86e1b5569271ae2a90d4465e64bcfe1
GIT binary patch
literal 1642
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

literal 0
HcmV?d00001

diff --git a/toolkit/themes/windows/mozapps/webextensions/extensionGeneric-16-XP.png b/toolkit/themes/windows/mozapps/webextensions/extensionGeneric-16-XP.png
new file mode 100644
index 0000000000000000000000000000000000000000..36e7689a3088f8fe350da770235af2f8c65727de
GIT binary patch
literal 398
zcmV;90df9`P)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00041Nkl<ZILl-B
z|NlP&C77TB=|aZ+e$&kVi)S<LC(8hk=FVe9{~i0Z{*z@u#C*s7H3yRZdrUJR&IPh1
zjQisjdi+mV;`KjerSJdJUD5x`4o3cuUGMPUahlqHqb`a68jbw_xgr?$V>JMzdGWQr
z|1&Q){qH_o@W1wW{Qvxe{{NHr*#8gTZt&k{lk$Iu)nfnUYS{i`H2`EYKFv<+#Q$5Z
z=KU{M&y3vwkh5`Vwp$_kUw10kf2B5-{{pFu2m@eI1qv{bpK;j?(##XfSOC()5z62I
zHvkq@pwI>d7%pckcd-1&8VjIA0*Yr)RDnVpn`V<0Z2vVTv0!%rG6qEzx}QNdgEZ^S
zVFl9|VStQ5@r=#SAR43@<Ps3Z84I990*Yslvq3f?%YpbH&BjaF{!3TlFaVUoK#2ro
s1IU>$zk+BGA0!Ua4CL=8DlZVi0IuM8fT+!pg8%>k07*qoM6N<$f@qn!bpQYW

literal 0
HcmV?d00001

diff --git a/toolkit/themes/windows/mozapps/webextensions/localeGeneric-XP.png b/toolkit/themes/windows/mozapps/webextensions/localeGeneric-XP.png
new file mode 100644
index 0000000000000000000000000000000000000000..4d9ac5ad895281ec1fc1154d24270bad38e21be9
GIT binary patch
literal 2410
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

literal 0
HcmV?d00001

diff --git a/toolkit/themes/windows/mozapps/webextensions/themeGeneric-16-XP.png b/toolkit/themes/windows/mozapps/webextensions/themeGeneric-16-XP.png
new file mode 100644
index 0000000000000000000000000000000000000000..16d77a4a25a3b94e40e36387430a7c1007de43bc
GIT binary patch
literal 842
zcmV-Q1GW5#P)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV0009KNkl<ZILoDy
zYe*AN7>2jRET}L{x=5rb<*%&hA{9naAr%xwBnxuVtU%04t%;>&ST66*HJx*4m*KT+
ztF5i+mP2c{+@*4<Im1hHYgp)<^VZwZav)KEI`F_b-{E~e4(Fo)p!^Siy||PlT*EF=
zZhH7wzl$Syxs}HV%N9ni`|wXe?4`2#x3WZ0GR6A_W1Gd+-8cHf@@)!gxdIJW!|;rs
zZ)cTiS<#8LEB+9~GavYgrTP~m&N2L2Lx7_Q_6`=BGLNCD;2dltz?Wg5Le|k487B;J
z3rOdMQn{h&cM_8X*VlV+nl?dK5(@3j-FR=%p~o?duE7y>6F0ZoXgD5SzIaBE&6Y+C
zJI66K?n19xjG+N5oI}lM5gtHm+BRq_3ejZMgR5gfpyi>yLyuQx7tSO-q0b1O%8b`1
z$i}X!fgv&&?=oWW$!J7daRgd2kE3_sJLF~+5~MUR#W83!TcEW7%sjPVM!+pq#f*}T
zRapyFm?xwMgP<)wix0QA<5j&9T@K)N&oD%7?T~j4K-~i<J_FZ^TIy#6G4c2PHTvGc
z>Gxao8c1$kgef;1^_*n1+JHCxKnp?92_#imktwl4-VNLk=wG{k;bKbNo+`Onp;YT^
zRV8u=v-x=Qu@7&pq<bIGOvsnnaVY&APIF8UbpV$OHPSx@C^z<k=x#F4k#na^*3dpS
zsUe+J-II83av@7HfM~7>=^_iNj1!2uDovgfW}n!+zci%~T-pxC^f|Ri%aNN#!OT&y
zqY@vT<cQ6k&&|LyLPmAh*Mm{_{M=zaZ9{1B=`cHwakz4}md0z1zpu35D5HGY^f`{D
z%6&@0f@UXZi4yvpNz9K3sVR@%;M%v=XYFk5d|F+Wq<snr*^TT|m+MaDiTnHbYRANp
zv&C23qdbpFrS1&$*_#|5tOyP8IY*&TRuKXTD?>sLCuCI`CkjOENEK*6XO^`Ftq-SD
z=XrU~5d`@z3h`a!6+l7@2upwCO{IExdoT0fvV3*$UT@!kjTDN<5>odhc+Coa0%sqv
UljM;(GXMYp07*qoM6N<$f~sGL)c^nh

literal 0
HcmV?d00001

diff --git a/toolkit/themes/windows/mozapps/webextensions/themeGeneric-XP.png b/toolkit/themes/windows/mozapps/webextensions/themeGeneric-XP.png
new file mode 100644
index 0000000000000000000000000000000000000000..be645f76df92c954c143576eba8a9e43da0499fa
GIT binary patch
literal 2185
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
LNkvXXu0mjf@jWHj

literal 0
HcmV?d00001

diff --git a/toolkit/xre/nsAppRunner.cpp b/toolkit/xre/nsAppRunner.cpp
index 3493cd837..00802db4f 100644
--- a/toolkit/xre/nsAppRunner.cpp
+++ b/toolkit/xre/nsAppRunner.cpp
@@ -98,6 +98,7 @@
 #include <intrin.h>
 #include <math.h>
 #include "cairo/cairo-features.h"
+#include "mozilla/WindowsVersion.h"
 #include "mozilla/mscom/MainThreadRuntime.h"
 #include "mozilla/widget/AudioSession.h"
 
@@ -2843,7 +2844,10 @@ XREMain::XRE_mainInit(bool* aExitFlag)
     // manual font file I/O on _all_ system fonts.  To avoid this, load the
     // dwrite library and create a factory as early as possible so that the
     // FntCache service is ready by the time it's needed.
-    CreateThread(nullptr, 0, &InitDwriteBG, nullptr, 0, nullptr);
+
+    if (IsVistaOrLater()) {
+      CreateThread(nullptr, 0, &InitDwriteBG, nullptr, 0, nullptr);
+    }
   }
 #endif
 
@@ -4273,7 +4277,7 @@ enum {
   kE10sDisabledForAddons = 7,
   kE10sForceDisabled = 8,
   // kE10sDisabledForXPAcceleration = 9, removed in bug 1296353
-  // kE10sDisabledForOperatingSystem = 10, removed due to xp-eol
+  kE10sDisabledForOperatingSystem = 10,
 };
 
 const char* kAccessibilityLastRunDatePref = "accessibility.lastLoadDate";
diff --git a/toolkit/xre/nsEmbedFunctions.cpp b/toolkit/xre/nsEmbedFunctions.cpp
index 4a612e495..12ccd9378 100644
--- a/toolkit/xre/nsEmbedFunctions.cpp
+++ b/toolkit/xre/nsEmbedFunctions.cpp
@@ -24,7 +24,6 @@
 
 #ifdef XP_WIN
 #include <process.h>
-#include <shobjidl.h>
 #include "mozilla/ipc/WindowsMessageLoop.h"
 #endif
 
@@ -120,6 +119,10 @@ using mozilla::startup::sChildProcessType;
 
 static NS_DEFINE_CID(kAppShellCID, NS_APPSHELL_CID);
 
+#ifdef XP_WIN
+static const wchar_t kShellLibraryName[] =  L"shell32.dll";
+#endif
+
 nsresult
 XRE_LockProfileDirectory(nsIFile* aDirectory,
                          nsISupports* *aLockObject)
@@ -243,9 +246,26 @@ XRE_SetProcessType(const char* aProcessTypeString)
 void
 SetTaskbarGroupId(const nsString& aId)
 {
-    if (FAILED(SetCurrentProcessExplicitAppUserModelID(aId.get()))) {
+    typedef HRESULT (WINAPI * SetCurrentProcessExplicitAppUserModelIDPtr)(PCWSTR AppID);
+
+    SetCurrentProcessExplicitAppUserModelIDPtr funcAppUserModelID = nullptr;
+
+    HMODULE hDLL = ::LoadLibraryW(kShellLibraryName);
+
+    funcAppUserModelID = (SetCurrentProcessExplicitAppUserModelIDPtr)
+                          GetProcAddress(hDLL, "SetCurrentProcessExplicitAppUserModelID");
+
+    if (!funcAppUserModelID) {
+        ::FreeLibrary(hDLL);
+        return;
+    }
+
+    if (FAILED(funcAppUserModelID(aId.get()))) {
         NS_WARNING("SetCurrentProcessExplicitAppUserModelID failed for child process.");
     }
+
+    if (hDLL)
+        ::FreeLibrary(hDLL);
 }
 #endif
 
diff --git a/toolkit/xre/nsXREDirProvider.cpp b/toolkit/xre/nsXREDirProvider.cpp
index 09168319f..2fbd324b7 100644
--- a/toolkit/xre/nsXREDirProvider.cpp
+++ b/toolkit/xre/nsXREDirProvider.cpp
@@ -48,6 +48,7 @@
 #ifdef XP_WIN
 #include <windows.h>
 #include <shlobj.h>
+#include "mozilla/WindowsVersion.h"
 #endif
 #ifdef XP_MACOSX
 #include "nsILocalFileMac.h"
@@ -761,12 +762,15 @@ nsXREDirProvider::LoadContentProcessTempDir()
 static bool
 IsContentSandboxDisabled()
 {
-  bool isSandboxDisabled = false;
   if (!BrowserTabsRemoteAutostart()) {
     return false;
   }
-#if defined(XP_WIN) || defined(XP_MACOSX)
-  isSandboxDisabled = Preferences::GetInt("security.sandbox.content.level") < 1;
+#if defined(XP_WIN)
+  const bool isSandboxDisabled = !mozilla::IsVistaOrLater() ||
+    (Preferences::GetInt("security.sandbox.content.level") < 1);
+#elif defined(XP_MACOSX)
+  const bool isSandboxDisabled =
+    Preferences::GetInt("security.sandbox.content.level") < 1;
 #endif
   return isSandboxDisabled;
 }
diff --git a/toolkit/xre/test/win/TestDllInterceptor.cpp b/toolkit/xre/test/win/TestDllInterceptor.cpp
index 57d68ea77..dff71817f 100644
--- a/toolkit/xre/test/win/TestDllInterceptor.cpp
+++ b/toolkit/xre/test/win/TestDllInterceptor.cpp
@@ -2,6 +2,11 @@
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
+#if _WIN32_WINNT < 0x0600
+#undef _WIN32_WINNT
+#define _WIN32_WINNT 0x0600
+#endif
+
 #include <shlobj.h>
 #include <stdio.h>
 
diff --git a/widget/GfxInfoBase.cpp b/widget/GfxInfoBase.cpp
index c937f5099..953c8c902 100644
--- a/widget/GfxInfoBase.cpp
+++ b/widget/GfxInfoBase.cpp
@@ -241,7 +241,13 @@ RemovePrefForDriverVersion()
 static OperatingSystem
 BlacklistOSToOperatingSystem(const nsAString& os)
 {
-  if (os.EqualsLiteral("WINNT 6.1"))
+  if (os.EqualsLiteral("WINNT 5.1"))
+    return OperatingSystem::WindowsXP;
+  else if (os.EqualsLiteral("WINNT 5.2"))
+    return OperatingSystem::WindowsServer2003;
+  else if (os.EqualsLiteral("WINNT 6.0"))
+    return OperatingSystem::WindowsVista;
+  else if (os.EqualsLiteral("WINNT 6.1"))
     return OperatingSystem::Windows7;
   else if (os.EqualsLiteral("WINNT 6.2"))
     return OperatingSystem::Windows8;
diff --git a/widget/LookAndFeel.h b/widget/LookAndFeel.h
index cf84b3308..e2502c559 100644
--- a/widget/LookAndFeel.h
+++ b/widget/LookAndFeel.h
@@ -440,7 +440,9 @@ public:
    * Operating system versions.
    */
   enum OperatingSystemVersion {
-    eOperatingSystemVersion_Windows7 = 2,
+    eOperatingSystemVersion_WindowsXP = 0,
+    eOperatingSystemVersion_WindowsVista,
+    eOperatingSystemVersion_Windows7,
     eOperatingSystemVersion_Windows8,
     eOperatingSystemVersion_Windows10,
     eOperatingSystemVersion_Unknown
diff --git a/widget/windows/GfxInfo.cpp b/widget/windows/GfxInfo.cpp
index 8a429ad32..5c80703a4 100644
--- a/widget/windows/GfxInfo.cpp
+++ b/widget/windows/GfxInfo.cpp
@@ -235,6 +235,9 @@ ParseIDFromDeviceID(const nsAString &key, const char *prefix, int length)
 // based on http://msdn.microsoft.com/en-us/library/ms724834(VS.85).aspx
 enum {
   kWindowsUnknown = 0,
+  kWindowsXP = 0x50001,
+  kWindowsServer2003 = 0x50002,
+  kWindowsVista = 0x60000,
   kWindows7 = 0x60001,
   kWindows8 = 0x60002,
   kWindows8_1 = 0x60003,
@@ -725,6 +728,12 @@ static OperatingSystem
 WindowsVersionToOperatingSystem(int32_t aWindowsVersion)
 {
   switch(aWindowsVersion) {
+    case kWindowsXP:
+      return OperatingSystem::WindowsXP;
+    case kWindowsServer2003:
+      return OperatingSystem::WindowsServer2003;
+    case kWindowsVista:
+      return OperatingSystem::WindowsVista;
     case kWindows7:
       return OperatingSystem::Windows7;
     case kWindows8:
@@ -753,6 +762,11 @@ GfxInfo::GetGfxDriverInfo()
     /*
      * NVIDIA entries
      */
+    APPEND_TO_DRIVER_BLOCKLIST(OperatingSystem::WindowsXP,
+      (nsAString&) GfxDriverInfo::GetDeviceVendor(VendorNVIDIA), GfxDriverInfo::allDevices,
+      GfxDriverInfo::allFeatures, nsIGfxInfo::FEATURE_BLOCKED_DRIVER_VERSION,
+      DRIVER_LESS_THAN_OR_EQUAL, V(6,14,11,8745), "FEATURE_FAILURE_NV_XP", "nVidia driver > 187.45" );
+
     /*
      * The last 5 digit of the NVIDIA driver version maps to the version that
      * NVIDIA uses. The minor version (15, 16, 17) corresponds roughtly to the
@@ -763,17 +777,33 @@ GfxInfo::GetGfxDriverInfo()
      * 187.45 (late October 2009) and earlier contain a bug which can cause us
      * to crash on shutdown.
      */
+    APPEND_TO_DRIVER_BLOCKLIST(OperatingSystem::WindowsVista,
+      (nsAString&) GfxDriverInfo::GetDeviceVendor(VendorNVIDIA), GfxDriverInfo::allDevices,
+      GfxDriverInfo::allFeatures, nsIGfxInfo::FEATURE_BLOCKED_DRIVER_VERSION,
+      DRIVER_LESS_THAN_OR_EQUAL, V(8,15,11,8745),
+      "FEATURE_FAILURE_NV_VISTA_15", "nVidia driver > 187.45" );
     APPEND_TO_DRIVER_BLOCKLIST(OperatingSystem::Windows7,
       (nsAString&) GfxDriverInfo::GetDeviceVendor(VendorNVIDIA), GfxDriverInfo::allDevices,
       GfxDriverInfo::allFeatures, nsIGfxInfo::FEATURE_BLOCKED_DRIVER_VERSION,
       DRIVER_LESS_THAN_OR_EQUAL, V(8,15,11,8745),
       "FEATURE_FAILURE_NV_W7_15", "nVidia driver > 187.45" );
+    APPEND_TO_DRIVER_BLOCKLIST_RANGE(OperatingSystem::WindowsVista,
+      (nsAString&) GfxDriverInfo::GetDeviceVendor(VendorNVIDIA), GfxDriverInfo::allDevices,
+      GfxDriverInfo::allFeatures, nsIGfxInfo::FEATURE_BLOCKED_DRIVER_VERSION,
+      DRIVER_BETWEEN_INCLUSIVE_START, V(8,16,10,0000), V(8,16,11,8745),
+      "FEATURE_FAILURE_NV_VISTA_16", "nVidia driver > 187.45" );
     APPEND_TO_DRIVER_BLOCKLIST_RANGE(OperatingSystem::Windows7,
       (nsAString&) GfxDriverInfo::GetDeviceVendor(VendorNVIDIA), GfxDriverInfo::allDevices,
       GfxDriverInfo::allFeatures, nsIGfxInfo::FEATURE_BLOCKED_DRIVER_VERSION,
       DRIVER_BETWEEN_INCLUSIVE_START, V(8,16,10,0000), V(8,16,11,8745),
       "FEATURE_FAILURE_NV_W7_16", "nVidia driver > 187.45" );
     // Telemetry doesn't show any driver in this range so it might not even be required.
+    APPEND_TO_DRIVER_BLOCKLIST_RANGE(OperatingSystem::WindowsVista,
+      (nsAString&) GfxDriverInfo::GetDeviceVendor(VendorNVIDIA), GfxDriverInfo::allDevices,
+      GfxDriverInfo::allFeatures, nsIGfxInfo::FEATURE_BLOCKED_DRIVER_VERSION,
+      DRIVER_BETWEEN_INCLUSIVE_START, V(8,17,10,0000), V(8,17,11,8745),
+      "FEATURE_FAILURE_NV_VISTA_17", "nVidia driver > 187.45" );
+    // Telemetry doesn't show any driver in this range so it might not even be required.
     APPEND_TO_DRIVER_BLOCKLIST_RANGE(OperatingSystem::Windows7,
       (nsAString&) GfxDriverInfo::GetDeviceVendor(VendorNVIDIA), GfxDriverInfo::allDevices,
       GfxDriverInfo::allFeatures, nsIGfxInfo::FEATURE_BLOCKED_DRIVER_VERSION,
@@ -871,6 +901,13 @@ GfxInfo::GetGfxDriverInfo()
         nsIGfxInfo::FEATURE_DIRECT2D, nsIGfxInfo::FEATURE_BLOCKED_DRIVER_VERSION,                                               \
         DRIVER_BUILD_ID_LESS_THAN, driverVer, ruleId )
 
+    IMPLEMENT_INTEL_DRIVER_BLOCKLIST_D2D(OperatingSystem::WindowsVista, IntelGMA500,   1006, "FEATURE_FAILURE_594877_1");
+    IMPLEMENT_INTEL_DRIVER_BLOCKLIST_D2D(OperatingSystem::WindowsVista, IntelGMA900,   GfxDriverInfo::allDriverVersions, "FEATURE_FAILURE_594877_2");
+    IMPLEMENT_INTEL_DRIVER_BLOCKLIST_D2D(OperatingSystem::WindowsVista, IntelGMA950,   1504, "FEATURE_FAILURE_594877_3");
+    IMPLEMENT_INTEL_DRIVER_BLOCKLIST_D2D(OperatingSystem::WindowsVista, IntelGMA3150,  2124, "FEATURE_FAILURE_594877_4");
+    IMPLEMENT_INTEL_DRIVER_BLOCKLIST_D2D(OperatingSystem::WindowsVista, IntelGMAX3000, 1666, "FEATURE_FAILURE_594877_5");
+    IMPLEMENT_INTEL_DRIVER_BLOCKLIST_D2D(OperatingSystem::WindowsVista, IntelHDGraphicsToSandyBridge, 2202, "FEATURE_FAILURE_594877_6");
+
     IMPLEMENT_INTEL_DRIVER_BLOCKLIST_D2D(OperatingSystem::Windows7, IntelGMA500,   2026, "FEATURE_FAILURE_594877_7");
     IMPLEMENT_INTEL_DRIVER_BLOCKLIST_D2D(OperatingSystem::Windows7, IntelGMA900,   GfxDriverInfo::allDriverVersions, "FEATURE_FAILURE_594877_8");
     IMPLEMENT_INTEL_DRIVER_BLOCKLIST_D2D(OperatingSystem::Windows7, IntelGMA950,   1930, "FEATURE_FAILURE_594877_9");
@@ -887,6 +924,31 @@ GfxInfo::GetGfxDriverInfo()
       nsIGfxInfo::FEATURE_DIRECT2D, nsIGfxInfo::FEATURE_BLOCKED_DEVICE,
       DRIVER_LESS_THAN, GfxDriverInfo::allDriverVersions, "FEATURE_FAILURE_1180379");
 
+    IMPLEMENT_INTEL_DRIVER_BLOCKLIST(OperatingSystem::WindowsXP, IntelGMA500,   V(3,0,20,3200), "FEATURE_FAILURE_INTEL_1");
+    IMPLEMENT_INTEL_DRIVER_BLOCKLIST(OperatingSystem::WindowsXP, IntelGMA900,   V(6,14,10,4764), "FEATURE_FAILURE_INTEL_2");
+    IMPLEMENT_INTEL_DRIVER_BLOCKLIST(OperatingSystem::WindowsXP, IntelGMA950,   V(6,14,10,4926), "FEATURE_FAILURE_INTEL_3");
+    IMPLEMENT_INTEL_DRIVER_BLOCKLIST(OperatingSystem::WindowsXP, IntelGMA3150,  V(6,14,10,5134), "FEATURE_FAILURE_INTEL_4");
+    IMPLEMENT_INTEL_DRIVER_BLOCKLIST(OperatingSystem::WindowsXP, IntelGMAX3000, V(6,14,10,5218), "FEATURE_FAILURE_INTEL_5");
+    IMPLEMENT_INTEL_DRIVER_BLOCKLIST(OperatingSystem::WindowsXP, IntelGMAX4500HD, V(6,14,10,4969), "FEATURE_FAILURE_INTEL_6");
+    IMPLEMENT_INTEL_DRIVER_BLOCKLIST(OperatingSystem::WindowsXP, IntelHDGraphicsToSandyBridge, V(6,14,10,4969), "FEATURE_FAILURE_INTEL_7");
+
+    // StrechRect seems to suffer from precision issues which leads to artifacting
+    // during content drawing starting with at least version 6.14.10.5082
+    // and going until 6.14.10.5218. See bug 919454 and bug 949275 for more info.
+    APPEND_TO_DRIVER_BLOCKLIST_RANGE(OperatingSystem::WindowsXP,
+      const_cast<nsAString&>(GfxDriverInfo::GetDeviceVendor(VendorIntel)),
+      const_cast<GfxDeviceFamily*>(GfxDriverInfo::GetDeviceFamily(IntelGMAX4500HD)),
+      GfxDriverInfo::allFeatures, nsIGfxInfo::FEATURE_BLOCKED_DRIVER_VERSION,
+      DRIVER_BETWEEN_EXCLUSIVE, V(6,14,10,5076), V(6,14,10,5218), "FEATURE_FAILURE_INTEL_8", "6.14.10.5218");
+
+    IMPLEMENT_INTEL_DRIVER_BLOCKLIST(OperatingSystem::WindowsVista, IntelGMA500,   V(3,0,20,3200), "FEATURE_FAILURE_INTEL_9");
+    IMPLEMENT_INTEL_DRIVER_BLOCKLIST(OperatingSystem::WindowsVista, IntelGMA900,   GfxDriverInfo::allDriverVersions, "FEATURE_FAILURE_INTEL_10");
+    IMPLEMENT_INTEL_DRIVER_BLOCKLIST(OperatingSystem::WindowsVista, IntelGMA950,   V(7,14,10,1504), "FEATURE_FAILURE_INTEL_11");
+    IMPLEMENT_INTEL_DRIVER_BLOCKLIST(OperatingSystem::WindowsVista, IntelGMA3150,  V(7,14,10,1910), "FEATURE_FAILURE_INTEL_12");
+    IMPLEMENT_INTEL_DRIVER_BLOCKLIST(OperatingSystem::WindowsVista, IntelGMAX3000, V(7,15,10,1666), "FEATURE_FAILURE_INTEL_13");
+    IMPLEMENT_INTEL_DRIVER_BLOCKLIST(OperatingSystem::WindowsVista, IntelGMAX4500HD, V(7,15,10,1666), "FEATURE_FAILURE_INTEL_14");
+    IMPLEMENT_INTEL_DRIVER_BLOCKLIST(OperatingSystem::WindowsVista, IntelHDGraphicsToSandyBridge, V(7,15,10,1666), "FEATURE_FAILURE_INTEL_15");
+
     IMPLEMENT_INTEL_DRIVER_BLOCKLIST(OperatingSystem::Windows7, IntelGMA500,   V(5,0,0,2026), "FEATURE_FAILURE_INTEL_16");
     IMPLEMENT_INTEL_DRIVER_BLOCKLIST(OperatingSystem::Windows7, IntelGMA900,   GfxDriverInfo::allDriverVersions, "FEATURE_FAILURE_INTEL_17");
     IMPLEMENT_INTEL_DRIVER_BLOCKLIST(OperatingSystem::Windows7, IntelGMA950,   V(8,15,10,1930), "FEATURE_FAILURE_INTEL_18");
@@ -1140,6 +1202,23 @@ GfxInfo::GetFeatureStatusImpl(int32_t aFeature,
       return NS_OK;
     }
 
+    // special-case the WinXP test slaves: they have out-of-date drivers, but we still want to
+    // whitelist them, actually we do know that this combination of device and driver version
+    // works well.
+    if (mWindowsVersion == kWindowsXP &&
+        adapterVendorID.Equals(GfxDriverInfo::GetDeviceVendor(VendorNVIDIA), nsCaseInsensitiveStringComparator()) &&
+        adapterDeviceID.LowerCaseEqualsLiteral("0x0861") && // GeForce 9400
+        driverVersion == V(6,14,11,7756))
+    {
+      *aStatus = FEATURE_STATUS_OK;
+      return NS_OK;
+    }
+
+    // Windows Server 2003 should be just like Windows XP for present purpose, but still has a different version number.
+    // OTOH Windows Server 2008 R1 and R2 already have the same version numbers as Vista and Seven respectively
+    if (os == OperatingSystem::WindowsServer2003)
+      os = OperatingSystem::WindowsXP;
+
     if (mHasDriverVersionMismatch) {
       *aStatus = nsIGfxInfo::FEATURE_BLOCKED_MISMATCHED_VERSION;
       return NS_OK;
diff --git a/widget/windows/KeyboardLayout.cpp b/widget/windows/KeyboardLayout.cpp
index 9166d97d7..06257625c 100644
--- a/widget/windows/KeyboardLayout.cpp
+++ b/widget/windows/KeyboardLayout.cpp
@@ -1360,6 +1360,34 @@ NativeKey::InitWithKeyChar()
         break;
       }
 
+      if (!CanComputeVirtualKeyCodeFromScanCode()) {
+        // The right control key and the right alt key are extended keys.
+        // Therefore, we never get VK_RCONTRL and VK_RMENU for the result of
+        // MapVirtualKeyEx() on WinXP or WinServer2003.
+        //
+        // If VK_SHIFT, VK_CONTROL or VK_MENU key message is caused by well
+        // known scan code, we should decide it as Right key.  Otherwise,
+        // decide it as Left key.
+        switch (mOriginalVirtualKeyCode) {
+          case VK_CONTROL:
+            mVirtualKeyCode =
+              mIsExtended && mScanCode == 0x1D ? VK_RCONTROL : VK_LCONTROL;
+            break;
+          case VK_MENU:
+            mVirtualKeyCode =
+              mIsExtended && mScanCode == 0x38 ? VK_RMENU : VK_LMENU;
+            break;
+          case VK_SHIFT:
+            // Neither left shift nor right shift is an extended key,
+            // let's use VK_LSHIFT for unknown mapping.
+            mVirtualKeyCode = VK_LSHIFT;
+            break;
+          default:
+            MOZ_CRASH("Unsupported mOriginalVirtualKeyCode");
+        }
+        break;
+      }
+
       NS_ASSERTION(!mVirtualKeyCode,
                    "mVirtualKeyCode has been computed already");
 
@@ -1416,6 +1444,11 @@ NativeKey::InitWithKeyChar()
       //       scancode, we cannot compute virtual keycode.  I.e., with such
       //       applications, we cannot generate proper KeyboardEvent.code value.
 
+      // We cannot compute the virtual key code from WM_CHAR message on WinXP
+      // if it's caused by an extended key.
+      if (!CanComputeVirtualKeyCodeFromScanCode()) {
+        break;
+      }
       mVirtualKeyCode = mOriginalVirtualKeyCode =
         ComputeVirtualKeyCodeFromScanCodeEx();
       NS_ASSERTION(mVirtualKeyCode, "Failed to compute virtual keycode");
@@ -1833,6 +1866,18 @@ NativeKey::GetKeyLocation() const
   }
 }
 
+bool
+NativeKey::CanComputeVirtualKeyCodeFromScanCode() const
+{
+  // Vista or later supports ScanCodeEx.
+  if (IsVistaOrLater()) {
+    return true;
+  }
+  // Otherwise, MapVirtualKeyEx() can compute virtual keycode only with
+  // non-extended key.
+  return !mIsExtended;
+}
+
 uint8_t
 NativeKey::ComputeVirtualKeyCodeFromScanCode() const
 {
@@ -1846,6 +1891,12 @@ NativeKey::ComputeVirtualKeyCodeFromScanCodeEx() const
   // MapVirtualKeyEx() has been improved for supporting extended keys since
   // Vista.  When we call it for mapping a scancode of an extended key and
   // a virtual keycode, we need to add 0xE000 to the scancode.
+  // On the other hand, neither WinXP nor WinServer2003 doesn't support 0xE000.
+  // Therefore, we have no way to get virtual keycode from scan code of
+  // extended keys.
+  if (NS_WARN_IF(!CanComputeVirtualKeyCodeFromScanCode())) {
+    return 0;
+  }
   return static_cast<uint8_t>(
            ::MapVirtualKeyEx(GetScanCodeWithExtendedFlag(), MAPVK_VSC_TO_VK_EX,
                              mKeyboardLayout));
@@ -1856,7 +1907,8 @@ NativeKey::ComputeScanCodeExFromVirtualKeyCode(UINT aVirtualKeyCode) const
 {
   return static_cast<uint16_t>(
            ::MapVirtualKeyEx(aVirtualKeyCode,
-                             MAPVK_VK_TO_VSC_EX,
+                             IsVistaOrLater() ? MAPVK_VK_TO_VSC_EX :
+                                                MAPVK_VK_TO_VSC,
                              mKeyboardLayout));
 }
 
@@ -4176,7 +4228,8 @@ KeyboardLayout::LoadLayout(HKL aLayout)
 
   if (MOZ_LOG_TEST(sKeyboardLayoutLogger, LogLevel::Verbose)) {
     static const UINT kExtendedScanCode[] = { 0x0000, 0xE000 };
-    static const UINT kMapType = MAPVK_VSC_TO_VK_EX;
+    static const UINT kMapType =
+      IsVistaOrLater() ? MAPVK_VSC_TO_VK_EX : MAPVK_VSC_TO_VK;
     MOZ_LOG(sKeyboardLayoutLogger, LogLevel::Verbose,
       ("Logging virtual keycode values for scancode (0x%p)...",
        mKeyboardLayout));
@@ -4188,6 +4241,11 @@ KeyboardLayout::LoadLayout(HKL aLayout)
         MOZ_LOG(sKeyboardLayoutLogger, LogLevel::Verbose,
           ("0x%04X, %s", scanCode, kVirtualKeyName[virtualKeyCode]));
       }
+      // XP and Server 2003 don't support 0xE0 prefix of the scancode.
+      // Therefore, we don't need to continue on them.
+      if (!IsVistaOrLater()) {
+        break;
+      }
     }
   }
 }
diff --git a/widget/windows/KeyboardLayout.h b/widget/windows/KeyboardLayout.h
index 70aacc80e..dd2ac0bfc 100644
--- a/widget/windows/KeyboardLayout.h
+++ b/widget/windows/KeyboardLayout.h
@@ -559,6 +559,11 @@ private:
    */
   bool GetFollowingCharMessage(MSG& aCharMsg);
 
+  /**
+   * Whether the key event can compute virtual keycode from the scancode value.
+   */
+  bool CanComputeVirtualKeyCodeFromScanCode() const;
+
   /**
    * Wraps MapVirtualKeyEx() with MAPVK_VSC_TO_VK.
    */
diff --git a/widget/windows/TSFTextStore.cpp b/widget/windows/TSFTextStore.cpp
index 7224126b8..fb0505aa3 100644
--- a/widget/windows/TSFTextStore.cpp
+++ b/widget/windows/TSFTextStore.cpp
@@ -5762,7 +5762,8 @@ TSFTextStore::Initialize()
     return;
   }
 
-  bool enableTsf = Preferences::GetBool(kPrefNameEnableTSF, false);
+  bool enableTsf =
+    IsVistaOrLater() && Preferences::GetBool(kPrefNameEnableTSF, false);
   MOZ_LOG(sTextStoreLog, LogLevel::Info,
     ("  TSFTextStore::Initialize(), TSF is %s",
      enableTsf ? "enabled" : "disabled"));
diff --git a/widget/windows/TaskbarPreview.cpp b/widget/windows/TaskbarPreview.cpp
index 6c15df2e0..c897af021 100644
--- a/widget/windows/TaskbarPreview.cpp
+++ b/widget/windows/TaskbarPreview.cpp
@@ -28,9 +28,7 @@
 #include "mozilla/Telemetry.h"
 
 // Defined in dwmapi in a header that needs a higher numbered _WINNT #define
-#ifndef DWM_SIT_DISPLAYFRAME
 #define DWM_SIT_DISPLAYFRAME 0x1
-#endif
 
 namespace mozilla {
 namespace widget {
diff --git a/widget/windows/WinMouseScrollHandler.cpp b/widget/windows/WinMouseScrollHandler.cpp
index e157b1be2..10937ba51 100644
--- a/widget/windows/WinMouseScrollHandler.cpp
+++ b/widget/windows/WinMouseScrollHandler.cpp
@@ -992,7 +992,10 @@ MouseScrollHandler::SystemSettings::InitScrollChars()
                                      &mScrollChars, 0)) {
     MOZ_LOG(gMouseScrollLog, LogLevel::Info,
       ("MouseScroll::SystemSettings::InitScrollChars(): ::SystemParametersInfo("
-       "SPI_GETWHEELSCROLLCHARS) failed, this is unexpected on Vista or later"));
+       "SPI_GETWHEELSCROLLCHARS) failed, %s",
+       IsVistaOrLater() ?
+         "this is unexpected on Vista or later" :
+         "but on XP or earlier, this is not a problem"));
     // XXX Should we use DefaultScrollChars()?
     mScrollChars = 1;
   }
@@ -1078,7 +1081,7 @@ bool
 MouseScrollHandler::SystemSettings::IsOverridingSystemScrollSpeedAllowed()
 {
   return mScrollLines == DefaultScrollLines() &&
-         mScrollChars == DefaultScrollChars();
+         (!IsVistaOrLater() || mScrollChars == DefaultScrollChars());
 }
 
 /******************************************************************************
diff --git a/widget/windows/WinTaskbar.cpp b/widget/windows/WinTaskbar.cpp
index 530cfd5b9..698b7ec0e 100644
--- a/widget/windows/WinTaskbar.cpp
+++ b/widget/windows/WinTaskbar.cpp
@@ -34,6 +34,8 @@
 #include <propkey.h>
 #include <shellapi.h>
 
+const wchar_t kShellLibraryName[] =  L"shell32.dll";
+
 static NS_DEFINE_CID(kJumpListBuilderCID, NS_WIN_JUMPLISTBUILDER_CID);
 
 namespace {
@@ -75,14 +77,30 @@ SetWindowAppUserModelProp(mozIDOMWindow *aParent,
   if (!toplevelHWND)
     return NS_ERROR_INVALID_ARG;
 
-  RefPtr<IPropertyStore> pPropStore;
-  if (FAILED(SHGetPropertyStoreForWindow(toplevelHWND, IID_IPropertyStore,
-                                         getter_AddRefs(pPropStore)))) {
+  typedef HRESULT (WINAPI * SHGetPropertyStoreForWindowPtr)
+                    (HWND hwnd, REFIID riid, void** ppv);
+  SHGetPropertyStoreForWindowPtr funcGetProStore = nullptr;
+
+  HMODULE hDLL = ::LoadLibraryW(kShellLibraryName);
+  funcGetProStore = (SHGetPropertyStoreForWindowPtr)
+    GetProcAddress(hDLL, "SHGetPropertyStoreForWindow");
+
+  if (!funcGetProStore) {
+    FreeLibrary(hDLL);
+    return NS_ERROR_NO_INTERFACE;
+  }
+
+  IPropertyStore* pPropStore;
+  if (FAILED(funcGetProStore(toplevelHWND,
+                             IID_PPV_ARGS(&pPropStore)))) {
+    FreeLibrary(hDLL);
     return NS_ERROR_INVALID_ARG;
   }
 
   PROPVARIANT pv;
   if (FAILED(InitPropVariantFromString(aIdentifier.get(), &pv))) {
+    pPropStore->Release();
+    FreeLibrary(hDLL);
     return NS_ERROR_UNEXPECTED;
   }
 
@@ -93,6 +111,8 @@ SetWindowAppUserModelProp(mozIDOMWindow *aParent,
   }
 
   PropVariantClear(&pv);
+  pPropStore->Release();
+  FreeLibrary(hDLL);
 
   return rv;
 }
@@ -319,18 +339,40 @@ WinTaskbar::GetDefaultGroupId(nsAString & aDefaultGroupId) {
 // (static) Called from AppShell
 bool
 WinTaskbar::RegisterAppUserModelID() {
+  if (!IsWin7OrLater())
+    return false;
+
+  SetCurrentProcessExplicitAppUserModelIDPtr funcAppUserModelID = nullptr;
+  bool retVal = false;
+
   nsAutoString uid;
   if (!GetAppUserModelID(uid))
     return false;
 
-  return SUCCEEDED(SetCurrentProcessExplicitAppUserModelID(uid.get()));
+  HMODULE hDLL = ::LoadLibraryW(kShellLibraryName);
+
+  funcAppUserModelID = (SetCurrentProcessExplicitAppUserModelIDPtr)
+                        GetProcAddress(hDLL, "SetCurrentProcessExplicitAppUserModelID");
+
+  if (!funcAppUserModelID) {
+    ::FreeLibrary(hDLL);
+    return false;
+  }
+
+  if (SUCCEEDED(funcAppUserModelID(uid.get())))
+    retVal = true;
+
+  if (hDLL)
+    ::FreeLibrary(hDLL);
+
+  return retVal;
 }
 
 NS_IMETHODIMP
 WinTaskbar::GetAvailable(bool *aAvailable) {
   // ITaskbarList4::HrInit() may fail with shell extensions like blackbox
   // installed. Initialize early to return available=false in those cases.
-  *aAvailable = Initialize();
+  *aAvailable = IsWin7OrLater() && Initialize();
 
   return NS_OK;
 }
diff --git a/widget/windows/WinUtils.cpp b/widget/windows/WinUtils.cpp
index 0a57ad439..183c679ad 100644
--- a/widget/windows/WinUtils.cpp
+++ b/widget/windows/WinUtils.cpp
@@ -462,7 +462,7 @@ static NtTestAlertPtr sNtTestAlert = nullptr;
 void
 WinUtils::Initialize()
 {
-  if (!sDwmDll) {
+  if (!sDwmDll && IsVistaOrLater()) {
     sDwmDll = ::LoadLibraryW(kDwmLibraryName);
 
     if (sDwmDll) {
@@ -601,7 +601,7 @@ WinUtils::SystemScaleFactor()
   return systemScale;
 }
 
-#if WINVER < 0x603
+#ifndef WM_POINTERDEVICECHANGE
 typedef enum {
   MDT_EFFECTIVE_DPI = 0,
   MDT_ANGULAR_DPI = 1,
@@ -628,14 +628,16 @@ GETPROCESSDPIAWARENESSPROC sGetProcessDpiAwareness;
 static bool
 SlowIsPerMonitorDPIAware()
 {
-  // Intentionally leak the handle.
-  HMODULE shcore =
-    LoadLibraryEx(L"shcore", NULL, LOAD_LIBRARY_SEARCH_SYSTEM32);
-  if (shcore) {
-    sGetDpiForMonitor =
-      (GETDPIFORMONITORPROC) GetProcAddress(shcore, "GetDpiForMonitor");
-    sGetProcessDpiAwareness =
-      (GETPROCESSDPIAWARENESSPROC) GetProcAddress(shcore, "GetProcessDpiAwareness");
+  if (IsVistaOrLater()) {
+    // Intentionally leak the handle.
+    HMODULE shcore =
+      LoadLibraryEx(L"shcore", NULL, LOAD_LIBRARY_SEARCH_SYSTEM32);
+    if (shcore) {
+      sGetDpiForMonitor =
+        (GETDPIFORMONITORPROC) GetProcAddress(shcore, "GetDpiForMonitor");
+      sGetProcessDpiAwareness =
+        (GETPROCESSDPIAWARENESSPROC) GetProcAddress(shcore, "GetProcessDpiAwareness");
+    }
   }
   PROCESS_DPI_AWARENESS dpiAwareness;
   return sGetDpiForMonitor && sGetProcessDpiAwareness &&
@@ -758,7 +760,7 @@ static DWORD
 GetWaitFlags()
 {
   DWORD result = MWMO_INPUTAVAILABLE;
-  if (XRE_IsContentProcess()) {
+  if (IsVistaOrLater() && XRE_IsContentProcess()) {
     result |= MWMO_ALERTABLE;
   }
   return result;
@@ -1876,7 +1878,7 @@ WinUtils::IsTouchDeviceSupportPresent()
 uint32_t
 WinUtils::GetMaxTouchPoints()
 {
-  if (IsTouchDeviceSupportPresent()) {
+  if (IsWin7OrLater() && IsTouchDeviceSupportPresent()) {
     return GetSystemMetrics(SM_MAXIMUMTOUCHES);
   }
   return 0;
@@ -1891,6 +1893,11 @@ typedef DWORD (WINAPI * GetFinalPathNameByHandlePtr)(HANDLE hFile,
 bool
 WinUtils::ResolveJunctionPointsAndSymLinks(std::wstring& aPath)
 {
+  // Users folder was introduced with Vista.
+  if (!IsVistaOrLater()) {
+    return true;
+  }
+
   wchar_t path[MAX_PATH] = { 0 };
 
   nsAutoHandle handle(
@@ -2018,19 +2025,21 @@ WinUtils::GetAppInitDLLs(nsAString& aOutput)
   }
   nsAutoRegKey key(hkey);
   LONG status;
-  const wchar_t kLoadAppInitDLLs[] = L"LoadAppInit_DLLs";
-  DWORD loadAppInitDLLs = 0;
-  DWORD loadAppInitDLLsLen = sizeof(loadAppInitDLLs);
-  status = RegQueryValueExW(hkey, kLoadAppInitDLLs, nullptr,
-                            nullptr, (LPBYTE)&loadAppInitDLLs,
-                            &loadAppInitDLLsLen);
-  if (status != ERROR_SUCCESS) {
-    return false;
-  }
-  if (!loadAppInitDLLs) {
-    // If loadAppInitDLLs is zero then AppInit_DLLs is disabled.
-    // In this case we'll return true along with an empty output string.
-    return true;
+  if (IsVistaOrLater()) {
+    const wchar_t kLoadAppInitDLLs[] = L"LoadAppInit_DLLs";
+    DWORD loadAppInitDLLs = 0;
+    DWORD loadAppInitDLLsLen = sizeof(loadAppInitDLLs);
+    status = RegQueryValueExW(hkey, kLoadAppInitDLLs, nullptr,
+                              nullptr, (LPBYTE)&loadAppInitDLLs,
+                              &loadAppInitDLLsLen);
+    if (status != ERROR_SUCCESS) {
+      return false;
+    }
+    if (!loadAppInitDLLs) {
+      // If loadAppInitDLLs is zero then AppInit_DLLs is disabled.
+      // In this case we'll return true along with an empty output string.
+      return true;
+    }
   }
   DWORD numBytes = 0;
   const wchar_t kAppInitDLLs[] = L"AppInit_DLLs";
diff --git a/widget/windows/WindowsUIUtils.cpp b/widget/windows/WindowsUIUtils.cpp
index 1c270b5ec..223511859 100644
--- a/widget/windows/WindowsUIUtils.cpp
+++ b/widget/windows/WindowsUIUtils.cpp
@@ -5,8 +5,7 @@
 
 #include <windows.h>
 #include <winsdkver.h>
-#include <wrl.h>
-
+#include "mozwrlbase.h"
 #include "nsServiceManagerUtils.h"
 
 #include "WindowsUIUtils.h"
@@ -180,3 +179,4 @@ WindowsUIUtils::UpdateTabletModeState()
 
   return NS_OK;
 }
+
diff --git a/widget/windows/mozwrlbase.h b/widget/windows/mozwrlbase.h
new file mode 100644
index 000000000..d82be8f04
--- /dev/null
+++ b/widget/windows/mozwrlbase.h
@@ -0,0 +1,77 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+#pragma once
+
+/*
+ * Includes <wrl.h> and it's children. Defines imports needed by
+ * corewrappers.h in the case where windows.h has already been
+ * included w/WINVER < 0x600. Also ups WINVER/_WIN32_WINNT prior
+ * to including wrl.h. Mozilla's build currently has WINVER set to
+ * 0x502 for XP support.
+ */
+
+#if _WIN32_WINNT < 0x600
+
+#include <windows.h>
+
+VOID
+WINAPI
+ReleaseSRWLockExclusive(
+    _Inout_ PSRWLOCK SRWLock
+    );
+
+VOID
+WINAPI
+ReleaseSRWLockShared(
+    _Inout_ PSRWLOCK SRWLock
+    );
+
+BOOL
+WINAPI
+InitializeCriticalSectionEx(
+    _Out_ LPCRITICAL_SECTION lpCriticalSection,
+    _In_ DWORD dwSpinCount,
+    _In_ DWORD Flags
+    );
+
+VOID
+WINAPI
+InitializeSRWLock(
+    _Out_ PSRWLOCK SRWLock
+    );
+
+VOID
+WINAPI
+AcquireSRWLockExclusive(
+    _Inout_ PSRWLOCK SRWLock
+    );
+
+BOOLEAN
+WINAPI
+TryAcquireSRWLockExclusive(
+    _Inout_ PSRWLOCK SRWLock
+    );
+
+BOOLEAN
+WINAPI
+TryAcquireSRWLockShared(
+    _Inout_ PSRWLOCK SRWLock
+    );
+
+VOID
+WINAPI
+AcquireSRWLockShared(
+    _Inout_ PSRWLOCK SRWLock
+    );
+
+#undef WINVER
+#undef _WIN32_WINNT
+#define WINVER 0x600
+#define _WIN32_WINNT 0x600
+
+#endif // _WIN32_WINNT < 0x600
+
+#include <wrl.h>
diff --git a/widget/windows/nsDataObj.cpp b/widget/windows/nsDataObj.cpp
index 977a87c08..64a455bce 100644
--- a/widget/windows/nsDataObj.cpp
+++ b/widget/windows/nsDataObj.cpp
@@ -1219,7 +1219,8 @@ nsDataObj :: GetFileContentsInternetShortcut ( FORMATETC& aFE, STGMEDIUM& aSTG )
   const char *shortcutFormatStr;
   int totalLen;
   nsCString path;
-  if (!Preferences::GetBool(kShellIconPref, true)) {
+  if (!Preferences::GetBool(kShellIconPref, true) ||
+      !IsVistaOrLater()) {
     shortcutFormatStr = "[InternetShortcut]\r\nURL=%s\r\n";
     const int formatLen = strlen(shortcutFormatStr) - 2;  // don't include %s
     totalLen = formatLen + asciiUrl.Length();  // don't include null character
diff --git a/widget/windows/nsFilePicker.cpp b/widget/windows/nsFilePicker.cpp
index 4e942968a..53857cf5e 100644
--- a/widget/windows/nsFilePicker.cpp
+++ b/widget/windows/nsFilePicker.cpp
@@ -28,6 +28,7 @@
 #include "nsPIDOMWindow.h"
 #include "GeckoProfiler.h"
 
+using mozilla::IsVistaOrLater;
 using mozilla::IsWin8OrLater;
 using mozilla::MakeUnique;
 using mozilla::mscom::EnsureMTA;
@@ -218,6 +219,191 @@ STDMETHODIMP nsFilePicker::QueryInterface(REFIID refiid, void** ppvResult)
   return E_NOINTERFACE;
 }
 
+/*
+ * XP picker callbacks
+ */
+
+// Show - Display the file dialog
+int CALLBACK
+BrowseCallbackProc(HWND hwnd, UINT uMsg, LPARAM lParam, LPARAM lpData)
+{
+  if (uMsg == BFFM_INITIALIZED)
+  {
+    char16_t * filePath = (char16_t *) lpData;
+    if (filePath)
+      ::SendMessageW(hwnd, BFFM_SETSELECTIONW,
+                     TRUE /* true because lpData is a path string */,
+                     lpData);
+  }
+  return 0;
+}
+
+static void
+EnsureWindowVisible(HWND hwnd) 
+{
+  // Obtain the monitor which has the largest area of intersection 
+  // with the window, or nullptr if there is no intersection.
+  HMONITOR monitor = MonitorFromWindow(hwnd, MONITOR_DEFAULTTONULL);
+  if (!monitor) {
+    // The window is not visible, we should reposition it to the same place as its parent
+    HWND parentHwnd = GetParent(hwnd);
+    RECT parentRect;
+    GetWindowRect(parentHwnd, &parentRect);
+    SetWindowPos(hwnd, nullptr, parentRect.left, parentRect.top, 0, 0,
+                 SWP_NOACTIVATE | SWP_NOSIZE | SWP_NOZORDER);
+  }
+}
+
+// Callback hook which will ensure that the window is visible. Currently
+// only in use on os <= XP.
+UINT_PTR CALLBACK
+nsFilePicker::FilePickerHook(HWND hwnd,
+                             UINT msg,
+                             WPARAM wParam,
+                             LPARAM lParam) 
+{
+  switch(msg) {
+    case WM_NOTIFY:
+      {
+        LPOFNOTIFYW lpofn = (LPOFNOTIFYW) lParam;
+        if (!lpofn || !lpofn->lpOFN) {
+          return 0;
+        }
+        
+        if (CDN_INITDONE == lpofn->hdr.code) {
+          // The Window will be automatically moved to the last position after
+          // CDN_INITDONE.  We post a message to ensure the window will be visible
+          // so it will be done after the automatic last position window move.
+          PostMessage(hwnd, MOZ_WM_ENSUREVISIBLE, 0, 0);
+        }
+      }
+      break;
+    case MOZ_WM_ENSUREVISIBLE:
+      EnsureWindowVisible(GetParent(hwnd));
+      break;
+    case WM_INITDIALOG:
+      {
+        OPENFILENAMEW* pofn = reinterpret_cast<OPENFILENAMEW*>(lParam);
+        SetProp(hwnd, kDialogPtrProp, (HANDLE)pofn->lCustData);
+        nsFilePicker* picker = reinterpret_cast<nsFilePicker*>(pofn->lCustData);
+        if (picker) {
+          picker->SetDialogHandle(hwnd);
+          SetTimer(hwnd, kDialogTimerID, kDialogTimerTimeout, nullptr);
+        }
+      }
+      break;
+    case WM_TIMER:
+      {
+        // Check to see if our parent has been torn down, if so, we close too.
+        if (wParam == kDialogTimerID) {
+          nsFilePicker* picker = 
+            reinterpret_cast<nsFilePicker*>(GetProp(hwnd, kDialogPtrProp));
+          if (picker && picker->ClosePickerIfNeeded(true)) {
+            KillTimer(hwnd, kDialogTimerID);
+          }
+        }
+      }
+      break;
+  }
+  return 0;
+}
+
+
+// Callback hook which will dynamically allocate a buffer large enough
+// for the file picker dialog.  Currently only in use on  os <= XP.
+UINT_PTR CALLBACK
+nsFilePicker::MultiFilePickerHook(HWND hwnd,
+                                  UINT msg,
+                                  WPARAM wParam,
+                                  LPARAM lParam)
+{
+  switch (msg) {
+    case WM_INITDIALOG:
+      {
+        // Finds the child drop down of a File Picker dialog and sets the 
+        // maximum amount of text it can hold when typed in manually.
+        // A wParam of 0 mean 0x7FFFFFFE characters.
+        HWND comboBox = FindWindowEx(GetParent(hwnd), nullptr, 
+                                     L"ComboBoxEx32", nullptr );
+        if(comboBox)
+          SendMessage(comboBox, CB_LIMITTEXT, 0, 0);
+        // Store our nsFilePicker ptr for future use
+        OPENFILENAMEW* pofn = reinterpret_cast<OPENFILENAMEW*>(lParam);
+        SetProp(hwnd, kDialogPtrProp, (HANDLE)pofn->lCustData);
+        nsFilePicker* picker =
+          reinterpret_cast<nsFilePicker*>(pofn->lCustData);
+        if (picker) {
+          picker->SetDialogHandle(hwnd);
+          SetTimer(hwnd, kDialogTimerID, kDialogTimerTimeout, nullptr);
+        }
+      }
+      break;
+    case WM_NOTIFY:
+      {
+        LPOFNOTIFYW lpofn = (LPOFNOTIFYW) lParam;
+        if (!lpofn || !lpofn->lpOFN) {
+          return 0;
+        }
+        // CDN_SELCHANGE is sent when the selection in the list box of the file
+        // selection dialog changes
+        if (lpofn->hdr.code == CDN_SELCHANGE) {
+          HWND parentHWND = GetParent(hwnd);
+
+          // Get the required size for the selected files buffer
+          UINT newBufLength = 0; 
+          int requiredBufLength = CommDlg_OpenSave_GetSpecW(parentHWND, 
+                                                            nullptr, 0);
+          if(requiredBufLength >= 0)
+            newBufLength += requiredBufLength;
+          else
+            newBufLength += MAX_PATH;
+
+          // If the user selects multiple files, the buffer contains the 
+          // current directory followed by the file names of the selected 
+          // files. So make room for the directory path.  If the user
+          // selects a single file, it is no harm to add extra space.
+          requiredBufLength = CommDlg_OpenSave_GetFolderPathW(parentHWND, 
+                                                              nullptr, 0);
+          if(requiredBufLength >= 0)
+            newBufLength += requiredBufLength;
+          else
+            newBufLength += MAX_PATH;
+
+          // Check if lpstrFile and nMaxFile are large enough
+          if (newBufLength > lpofn->lpOFN->nMaxFile) {
+            if (lpofn->lpOFN->lpstrFile)
+              delete[] lpofn->lpOFN->lpstrFile;
+
+            // We allocate FILE_BUFFER_SIZE more bytes than is needed so that
+            // if the user selects a file and holds down shift and down to 
+            // select  additional items, we will not continuously reallocate
+            newBufLength += FILE_BUFFER_SIZE;
+
+            wchar_t* filesBuffer = new wchar_t[newBufLength];
+            ZeroMemory(filesBuffer, newBufLength * sizeof(wchar_t));
+
+            lpofn->lpOFN->lpstrFile = filesBuffer;
+            lpofn->lpOFN->nMaxFile  = newBufLength;
+          }
+        }
+      }
+      break;
+    case WM_TIMER:
+      {
+        // Check to see if our parent has been torn down, if so, we close too.
+        if (wParam == kDialogTimerID) {
+          nsFilePicker* picker =
+            reinterpret_cast<nsFilePicker*>(GetProp(hwnd, kDialogPtrProp));
+          if (picker && picker->ClosePickerIfNeeded(true)) {
+            KillTimer(hwnd, kDialogTimerID);
+          }
+        }
+      }
+      break;
+  }
+
+  return FilePickerHook(hwnd, msg, wParam, lParam);
+}
 
 /*
  * Vista+ callbacks
@@ -290,18 +476,25 @@ nsFilePicker::OnOverwrite(IFileDialog *pfd,
  */
 
 bool
-nsFilePicker::ClosePickerIfNeeded()
+nsFilePicker::ClosePickerIfNeeded(bool aIsXPDialog)
 {
   if (!mParentWidget || !mDlgWnd)
     return false;
 
   nsWindow *win = static_cast<nsWindow *>(mParentWidget.get());
-  if (IsWindow(mDlgWnd) && IsWindowVisible(mDlgWnd) && win->DestroyCalled()) {
+  // Note, the xp callbacks hand us an inner window, so we have to step up
+  // one to get the actual dialog.
+  HWND dlgWnd;
+  if (aIsXPDialog)
+    dlgWnd = GetParent(mDlgWnd);
+  else
+    dlgWnd = mDlgWnd;
+  if (IsWindow(dlgWnd) && IsWindowVisible(dlgWnd) && win->DestroyCalled()) {
     wchar_t className[64];
     // Make sure we have the right window
-    if (GetClassNameW(mDlgWnd, className, mozilla::ArrayLength(className)) &&
+    if (GetClassNameW(dlgWnd, className, mozilla::ArrayLength(className)) &&
         !wcscmp(className, L"#32770") &&
-        DestroyWindow(mDlgWnd)) {
+        DestroyWindow(dlgWnd)) {
       mDlgWnd = nullptr;
       return true;
     }
@@ -313,7 +506,7 @@ void
 nsFilePicker::PickerCallbackTimerFunc(nsITimer *aTimer, void *aCtx)
 {
   nsFilePicker* picker = (nsFilePicker*)aCtx;
-  if (picker->ClosePickerIfNeeded()) {
+  if (picker->ClosePickerIfNeeded(false)) {
     aTimer->Cancel();
   }
 }
@@ -330,15 +523,62 @@ nsFilePicker::SetDialogHandle(HWND aWnd)
  * Folder picker invocation
  */
 
+// Open the older XP style folder picker dialog. We end up in this call
+// on XP systems or when platform is built without the longhorn SDK.
+bool
+nsFilePicker::ShowXPFolderPicker(const nsString& aInitialDir)
+{
+  bool result = false;
+
+  auto dirBuffer = MakeUnique<wchar_t[]>(FILE_BUFFER_SIZE);
+  wcsncpy(dirBuffer.get(), aInitialDir.get(), FILE_BUFFER_SIZE);
+  dirBuffer[FILE_BUFFER_SIZE-1] = '\0';
+
+  AutoDestroyTmpWindow adtw((HWND)(mParentWidget.get() ?
+    mParentWidget->GetNativeData(NS_NATIVE_TMP_WINDOW) : nullptr));
+
+  BROWSEINFOW browserInfo = {0};
+  browserInfo.pidlRoot       = nullptr;
+  browserInfo.pszDisplayName = dirBuffer.get();
+  browserInfo.lpszTitle      = mTitle.get();
+  browserInfo.ulFlags        = BIF_USENEWUI | BIF_RETURNONLYFSDIRS;
+  browserInfo.hwndOwner      = adtw.get(); 
+  browserInfo.iImage         = 0;
+  browserInfo.lParam         = reinterpret_cast<LPARAM>(this);
+
+  if (!aInitialDir.IsEmpty()) {
+    // the dialog is modal so that |initialDir.get()| will be valid in 
+    // BrowserCallbackProc. Thus, we don't need to clone it.
+    browserInfo.lParam = (LPARAM) aInitialDir.get();
+    browserInfo.lpfn   = &BrowseCallbackProc;
+  } else {
+    browserInfo.lParam = 0;
+    browserInfo.lpfn   = nullptr;
+  }
+
+  LPITEMIDLIST list = ::SHBrowseForFolderW(&browserInfo);
+  if (list) {
+    result = ::SHGetPathFromIDListW(list, dirBuffer.get());
+    if (result)
+      mUnicodeFile.Assign(static_cast<const wchar_t*>(dirBuffer.get()));
+    // free PIDL
+    CoTaskMemFree(list);
+  }
+
+  return result;
+}
+
 /*
- * Show a folder picker.
- *
+ * Show a folder picker post Windows XP
+ * 
  * @param aInitialDir   The initial directory, the last used directory will be
  *                      used if left blank.
+ * @param aWasInitError Out parameter will hold true if there was an error
+ *                      before the folder picker is shown.
  * @return true if a file was selected successfully.
 */
 bool
-nsFilePicker::ShowFolderPicker(const nsString& aInitialDir)
+nsFilePicker::ShowFolderPicker(const nsString& aInitialDir, bool &aWasInitError)
 {
   if (!IsWin8OrLater()) {
     // Some Windows 7 users are experiencing a race condition when some dlls
@@ -353,8 +593,10 @@ nsFilePicker::ShowFolderPicker(const nsString& aInitialDir)
   if (FAILED(CoCreateInstance(CLSID_FileOpenDialog, nullptr, CLSCTX_INPROC,
                               IID_IFileOpenDialog,
                               getter_AddRefs(dialog)))) {
+    aWasInitError = true;
     return false;
   }
+  aWasInitError = false;
 
   // hook up event callbacks
   dialog->Advise(this, &mFDECookie);
@@ -416,15 +658,233 @@ nsFilePicker::ShowFolderPicker(const nsString& aInitialDir)
  * File open and save picker invocation
  */
 
+/* static */ bool
+nsFilePicker::GetFileNameWrapper(OPENFILENAMEW* ofn, PickerType aType)
+{
+  MOZ_SEH_TRY {
+    if (aType == PICKER_TYPE_OPEN)
+      return ::GetOpenFileNameW(ofn);
+    else if (aType == PICKER_TYPE_SAVE)
+      return ::GetSaveFileNameW(ofn);
+  } MOZ_SEH_EXCEPT(true) {
+    NS_ERROR("nsFilePicker GetFileName win32 call generated an exception! This is bad!");
+  }
+  return false;
+}
+
+bool
+nsFilePicker::FilePickerWrapper(OPENFILENAMEW* ofn, PickerType aType)
+{
+  if (!ofn)
+    return false;
+  AutoWidgetPickerState awps(mParentWidget);
+  return GetFileNameWrapper(ofn, aType);
+}
+
+bool
+nsFilePicker::ShowXPFilePicker(const nsString& aInitialDir)
+{
+  OPENFILENAMEW ofn = {0};
+  ofn.lStructSize = sizeof(ofn);
+  nsString filterBuffer = mFilterList;
+                                
+  auto fileBuffer = MakeUnique<wchar_t[]>(FILE_BUFFER_SIZE);
+  wcsncpy(fileBuffer.get(),  mDefaultFilePath.get(), FILE_BUFFER_SIZE);
+  fileBuffer[FILE_BUFFER_SIZE-1] = '\0'; // null terminate in case copy truncated
+
+  if (!aInitialDir.IsEmpty()) {
+    ofn.lpstrInitialDir = aInitialDir.get();
+  }
+
+  AutoDestroyTmpWindow adtw((HWND) (mParentWidget.get() ?
+    mParentWidget->GetNativeData(NS_NATIVE_TMP_WINDOW) : nullptr));
+
+  ofn.lpstrTitle   = (LPCWSTR)mTitle.get();
+  ofn.lpstrFilter  = (LPCWSTR)filterBuffer.get();
+  ofn.nFilterIndex = mSelectedType;
+  ofn.lpstrFile    = fileBuffer.get();
+  ofn.nMaxFile     = FILE_BUFFER_SIZE;
+  ofn.hwndOwner    = adtw.get();
+  ofn.lCustData    = reinterpret_cast<LPARAM>(this);
+  ofn.Flags = OFN_SHAREAWARE | OFN_LONGNAMES | OFN_OVERWRITEPROMPT |
+              OFN_HIDEREADONLY | OFN_PATHMUSTEXIST | OFN_ENABLESIZING | 
+              OFN_EXPLORER;
+
+  // Windows Vista and up won't allow you to use the new looking dialogs with
+  // a hook procedure.  The hook procedure fixes a problem on XP dialogs for
+  // file picker visibility.  Vista and up automatically ensures the file 
+  // picker is always visible.
+  if (!IsVistaOrLater()) {
+    ofn.lpfnHook = FilePickerHook;
+    ofn.Flags |= OFN_ENABLEHOOK;
+  }
+
+  // Handle add to recent docs settings
+  if (IsPrivacyModeEnabled() || !mAddToRecentDocs) {
+    ofn.Flags |= OFN_DONTADDTORECENT;
+  }
+
+  NS_NAMED_LITERAL_STRING(htmExt, "html");
+
+  if (!mDefaultExtension.IsEmpty()) {
+    ofn.lpstrDefExt = mDefaultExtension.get();
+  } else if (IsDefaultPathHtml()) {
+    // Get file extension from suggested filename to detect if we are
+    // saving an html file.
+    // This is supposed to append ".htm" if user doesn't supply an
+    // extension but the behavior is sort of weird:
+    // - Often appends ".html" even if you have an extension
+    // - It obeys your extension if you put quotes around name
+    ofn.lpstrDefExt = htmExt.get();
+  }
+
+  // When possible, instead of using OFN_NOCHANGEDIR to ensure the current
+  // working directory will not change from this call, we will retrieve the
+  // current working directory before the call and restore it after the 
+  // call.  This flag causes problems on Windows XP for paths that are
+  // selected like  C:test.txt where the user is currently at C:\somepath
+  // In which case expected result should be C:\somepath\test.txt
+  AutoRestoreWorkingPath restoreWorkingPath;
+  // If we can't get the current working directory, the best case is to
+  // use the OFN_NOCHANGEDIR flag
+  if (!restoreWorkingPath.HasWorkingPath()) {
+    ofn.Flags |= OFN_NOCHANGEDIR;
+  }
+
+  bool result = false;
+
+  switch(mMode) {
+    case modeOpen:
+      // FILE MUST EXIST!
+      ofn.Flags |= OFN_FILEMUSTEXIST;
+      result = FilePickerWrapper(&ofn, PICKER_TYPE_OPEN);
+      break;
+
+    case modeOpenMultiple:
+      ofn.Flags |= OFN_FILEMUSTEXIST | OFN_ALLOWMULTISELECT;
+
+      // The hook set here ensures that the buffer returned will always be
+      // large enough to hold all selected files.  The hook may modify the
+      // value of ofn.lpstrFile and deallocate the old buffer that it pointed
+      // to (fileBuffer). The hook assumes that the passed in value is heap 
+      // allocated and that the returned value should be freed by the caller.
+      // If the hook changes the buffer, it will deallocate the old buffer.
+      // This fix would be nice to have in Vista and up, but it would force
+      // the file picker to use the old style dialogs because hooks are not
+      // allowed in the new file picker UI.  We need to eventually move to
+      // the new Common File Dialogs for Vista and up.
+      if (!IsVistaOrLater()) {
+        ofn.lpfnHook = MultiFilePickerHook;
+        fileBuffer.release();
+        result = FilePickerWrapper(&ofn, PICKER_TYPE_OPEN);
+        fileBuffer.reset(ofn.lpstrFile);
+      } else {
+        result = FilePickerWrapper(&ofn, PICKER_TYPE_OPEN);
+      }
+      break;
+
+    case modeSave:
+      {
+        ofn.Flags |= OFN_NOREADONLYRETURN;
+
+        // Don't follow shortcuts when saving a shortcut, this can be used
+        // to trick users (bug 271732)
+        if (IsDefaultPathLink())
+          ofn.Flags |= OFN_NODEREFERENCELINKS;
+
+        result = FilePickerWrapper(&ofn, PICKER_TYPE_SAVE);
+        if (!result) {
+          // Error, find out what kind.
+          if (GetLastError() == ERROR_INVALID_PARAMETER ||
+              CommDlgExtendedError() == FNERR_INVALIDFILENAME) {
+            // Probably the default file name is too long or contains illegal
+            // characters. Try again, without a starting file name.
+            ofn.lpstrFile[0] = L'\0';
+            result = FilePickerWrapper(&ofn, PICKER_TYPE_SAVE);
+          }
+        }
+      }
+      break;
+
+    default:
+      NS_NOTREACHED("unsupported file picker mode");
+      return false;
+  }
+
+  if (!result)
+    return false;
+
+  // Remember what filter type the user selected
+  mSelectedType = (int16_t)ofn.nFilterIndex;
+
+  // Single file selection, we're done
+  if (mMode != modeOpenMultiple) {
+    GetQualifiedPath(fileBuffer.get(), mUnicodeFile);
+    return true;
+  }
+
+  // Set user-selected location of file or directory.  From msdn's "Open and
+  // Save As Dialog Boxes" section:
+  // If you specify OFN_EXPLORER, the directory and file name strings are '\0'
+  // separated, with an extra '\0' character after the last file name. This
+  // format enables the Explorer-style dialog boxes to return long file names
+  // that include spaces. 
+  wchar_t *current = fileBuffer.get();
+  
+  nsAutoString dirName(current);
+  // Sometimes dirName contains a trailing slash and sometimes it doesn't:
+  if (current[dirName.Length() - 1] != '\\')
+    dirName.Append((char16_t)'\\');
+  
+  while (current && *current && *(current + wcslen(current) + 1)) {
+    current = current + wcslen(current) + 1;
+    
+    nsCOMPtr<nsIFile> file = do_CreateInstance("@mozilla.org/file/local;1");
+    NS_ENSURE_TRUE(file, false);
+
+    // Only prepend the directory if the path specified is a relative path
+    nsAutoString path;
+    if (PathIsRelativeW(current)) {
+      path = dirName + nsDependentString(current);
+    } else {
+      path = current;
+    }
+
+    nsAutoString canonicalizedPath;
+    GetQualifiedPath(path.get(), canonicalizedPath);
+    if (NS_FAILED(file->InitWithPath(canonicalizedPath)) ||
+        !mFiles.AppendObject(file))
+      return false;
+  }
+  
+  // Handle the case where the user selected just one file. From msdn: If you
+  // specify OFN_ALLOWMULTISELECT and the user selects only one file the
+  // lpstrFile string does not have a separator between the path and file name.
+  if (current && *current && (current == fileBuffer.get())) {
+    nsCOMPtr<nsIFile> file = do_CreateInstance("@mozilla.org/file/local;1");
+    NS_ENSURE_TRUE(file, false);
+    
+    nsAutoString canonicalizedPath;
+    GetQualifiedPath(current, canonicalizedPath);
+    if (NS_FAILED(file->InitWithPath(canonicalizedPath)) ||
+        !mFiles.AppendObject(file))
+      return false;
+  }
+
+  return true;
+}
+
 /*
- * Show a file picker.
- *
+ * Show a file picker post Windows XP
+ * 
  * @param aInitialDir   The initial directory, the last used directory will be
  *                      used if left blank.
+ * @param aWasInitError Out parameter will hold true if there was an error
+ *                      before the file picker is shown.
  * @return true if a file was selected successfully.
 */
 bool
-nsFilePicker::ShowFilePicker(const nsString& aInitialDir)
+nsFilePicker::ShowFilePicker(const nsString& aInitialDir, bool &aWasInitError)
 {
   PROFILER_LABEL_FUNC(js::ProfileEntry::Category::OTHER);
 
@@ -442,15 +902,18 @@ nsFilePicker::ShowFilePicker(const nsString& aInitialDir)
     if (FAILED(CoCreateInstance(CLSID_FileOpenDialog, nullptr, CLSCTX_INPROC,
                                 IID_IFileOpenDialog,
                                 getter_AddRefs(dialog)))) {
+      aWasInitError = true;
       return false;
     }
   } else {
     if (FAILED(CoCreateInstance(CLSID_FileSaveDialog, nullptr, CLSCTX_INPROC,
                                 IID_IFileSaveDialog,
                                 getter_AddRefs(dialog)))) {
+      aWasInitError = true;
       return false;
     }
   }
+  aWasInitError = false;
 
   // hook up event callbacks
   dialog->Advise(this, &mFDECookie);
@@ -617,11 +1080,22 @@ nsFilePicker::ShowW(int16_t *aReturnVal)
   // with our context set temporarily to system-dpi-aware
   WinUtils::AutoSystemDpiAware dpiAwareness;
 
-  bool result = false;
+  // Launch the XP file/folder picker on XP and as a fallback on Vista+. 
+  // The CoCreateInstance call to CLSID_FileOpenDialog fails with "(0x80040111)
+  // ClassFactory cannot supply requested class" when the checkbox for
+  // Disable Visual Themes is on in the compatability tab within the shortcut
+  // properties.
+  bool result = false, wasInitError = true;
   if (mMode == modeGetFolder) {
-    result = ShowFolderPicker(initialDir);
+    if (IsVistaOrLater())
+      result = ShowFolderPicker(initialDir, wasInitError);
+    if (!result && wasInitError)
+      result = ShowXPFolderPicker(initialDir);
   } else {
-    result = ShowFilePicker(initialDir);
+    if (IsVistaOrLater())
+      result = ShowFilePicker(initialDir, wasInitError);
+    if (!result && wasInitError)
+      result = ShowXPFilePicker(initialDir);
   }
 
   // exit, and return returnCancel in aReturnVal
@@ -773,10 +1247,48 @@ nsFilePicker::InitNative(nsIWidget *aParent,
   mTitle.Assign(aTitle);
 }
 
+void 
+nsFilePicker::GetQualifiedPath(const wchar_t *aInPath, nsString &aOutPath)
+{
+  // Prefer a qualified path over a non qualified path.
+  // Things like c:file.txt would be accepted in Win XP but would later
+  // fail to open from the download manager.
+  wchar_t qualifiedFileBuffer[MAX_PATH];
+  if (PathSearchAndQualifyW(aInPath, qualifiedFileBuffer, MAX_PATH)) {
+    aOutPath.Assign(qualifiedFileBuffer);
+  } else {
+    aOutPath.Assign(aInPath);
+  }
+}
+
+void
+nsFilePicker::AppendXPFilter(const nsAString& aTitle, const nsAString& aFilter)
+{
+  mFilterList.Append(aTitle);
+  mFilterList.Append(char16_t('\0'));
+
+  if (aFilter.EqualsLiteral("..apps"))
+    mFilterList.AppendLiteral("*.exe;*.com");
+  else
+  {
+    nsAutoString filter(aFilter);
+    filter.StripWhitespace();
+    if (filter.EqualsLiteral("*"))
+      filter.AppendLiteral(".*");
+    mFilterList.Append(filter);
+  }
+
+  mFilterList.Append(char16_t('\0'));
+}
+
 NS_IMETHODIMP
 nsFilePicker::AppendFilter(const nsAString& aTitle, const nsAString& aFilter)
 {
-  mComFilterList.Append(aTitle, aFilter);
+  if (IsVistaOrLater()) {
+    mComFilterList.Append(aTitle, aFilter);
+  } else {
+    AppendXPFilter(aTitle, aFilter);
+  }
   return NS_OK;
 }
 
diff --git a/widget/windows/nsFilePicker.h b/widget/windows/nsFilePicker.h
index 740f07a7d..90d8c15bc 100644
--- a/widget/windows/nsFilePicker.h
+++ b/widget/windows/nsFilePicker.h
@@ -9,6 +9,17 @@
 
 #include <windows.h>
 
+// For Vista IFileDialog interfaces which aren't exposed
+// unless _WIN32_WINNT >= _WIN32_WINNT_LONGHORN.
+#if _WIN32_WINNT < _WIN32_WINNT_LONGHORN
+#define _WIN32_WINNT_bak _WIN32_WINNT
+#undef _WIN32_WINNT
+#define _WIN32_WINNT _WIN32_WINNT_LONGHORN
+#define _WIN32_IE_bak _WIN32_IE
+#undef _WIN32_IE
+#define _WIN32_IE _WIN32_IE_IE70
+#endif
+
 #include "nsIFile.h"
 #include "nsITimer.h"
 #include "nsISimpleEnumerator.h"
@@ -76,19 +87,32 @@ public:
   HRESULT STDMETHODCALLTYPE OnOverwrite(IFileDialog *pfd, IShellItem *psi, FDE_OVERWRITE_RESPONSE *pResponse);
 
 protected:
+  enum PickerType {
+    PICKER_TYPE_OPEN,
+    PICKER_TYPE_SAVE,
+  };
+
   /* method from nsBaseFilePicker */
   virtual void InitNative(nsIWidget *aParent,
                           const nsAString& aTitle);
+  static void GetQualifiedPath(const wchar_t *aInPath, nsString &aOutPath);
   void GetFilterListArray(nsString& aFilterList);
-  bool ShowFolderPicker(const nsString& aInitialDir);
-  bool ShowFilePicker(const nsString& aInitialDir);
+  static bool GetFileNameWrapper(OPENFILENAMEW* ofn, PickerType aType);
+  bool FilePickerWrapper(OPENFILENAMEW* ofn, PickerType aType);
+  bool ShowXPFolderPicker(const nsString& aInitialDir);
+  bool ShowXPFilePicker(const nsString& aInitialDir);
+  bool ShowFolderPicker(const nsString& aInitialDir, bool &aWasInitError);
+  bool ShowFilePicker(const nsString& aInitialDir, bool &aWasInitError);
+  void AppendXPFilter(const nsAString& aTitle, const nsAString& aFilter);
   void RememberLastUsedDirectory();
   bool IsPrivacyModeEnabled();
   bool IsDefaultPathLink();
   bool IsDefaultPathHtml();
   void SetDialogHandle(HWND aWnd);
-  bool ClosePickerIfNeeded();
+  bool ClosePickerIfNeeded(bool aIsXPDialog);
   static void PickerCallbackTimerFunc(nsITimer *aTimer, void *aPicker);
+  static UINT_PTR CALLBACK MultiFilePickerHook(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam);
+  static UINT_PTR CALLBACK FilePickerHook(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam);
 
   nsCOMPtr<nsILoadContext> mLoadContext;
   nsCOMPtr<nsIWidget>    mParentWidget;
@@ -130,4 +154,11 @@ protected:
   DWORD                  mFDECookie;
 };
 
+#if defined(_WIN32_WINNT_bak)
+#undef _WIN32_WINNT
+#define _WIN32_WINNT _WIN32_WINNT_bak
+#undef _WIN32_IE
+#define _WIN32_IE _WIN32_IE_bak
+#endif
+
 #endif // nsFilePicker_h__
diff --git a/widget/windows/nsLookAndFeel.cpp b/widget/windows/nsLookAndFeel.cpp
index 06eee3771..e649802b1 100644
--- a/widget/windows/nsLookAndFeel.cpp
+++ b/widget/windows/nsLookAndFeel.cpp
@@ -32,8 +32,12 @@ nsLookAndFeel::GetOperatingSystemVersion()
     version = eOperatingSystemVersion_Windows10;
   } else if (IsWin8OrLater()) {
     version = eOperatingSystemVersion_Windows8;
-  } else {
+  } else if (IsWin7OrLater()) {
     version = eOperatingSystemVersion_Windows7;
+  } else if (IsVistaOrLater()) {
+    version = eOperatingSystemVersion_WindowsVista;
+  } else {
+    version = eOperatingSystemVersion_WindowsXP;
   }
 
   return version;
@@ -179,7 +183,8 @@ nsLookAndFeel::NativeGetColor(ColorID aID, nscolor &aColor)
       idx = COLOR_HIGHLIGHT;
       break;
     case eColorID__moz_menubarhovertext:
-      if (!IsAppThemed()) {
+      if (!IsVistaOrLater() || !IsAppThemed())
+      {
         idx = nsUXThemeData::sFlatMenus ?
                 COLOR_HIGHLIGHTTEXT :
                 COLOR_MENUTEXT;
@@ -187,7 +192,8 @@ nsLookAndFeel::NativeGetColor(ColorID aID, nscolor &aColor)
       }
       // Fall through
     case eColorID__moz_menuhovertext:
-      if (IsAppThemed()) {
+      if (IsVistaOrLater() && IsAppThemed())
+      {
         res = ::GetColorFromTheme(eUXMenu,
                                   MENU_POPUPITEM, MPI_HOT, TMT_TEXTCOLOR, aColor);
         if (NS_SUCCEEDED(res))
@@ -279,7 +285,7 @@ nsLookAndFeel::NativeGetColor(ColorID aID, nscolor &aColor)
       aColor = NS_RGB(0, 0, 0);
       return NS_OK;
     case eColorID__moz_win_mediatext:
-      if (IsAppThemed()) {
+      if (IsVistaOrLater() && IsAppThemed()) {
         res = ::GetColorFromTheme(eUXMediaToolbar,
                                   TP_BUTTON, TS_NORMAL, TMT_TEXTCOLOR, aColor);
         if (NS_SUCCEEDED(res))
@@ -289,7 +295,8 @@ nsLookAndFeel::NativeGetColor(ColorID aID, nscolor &aColor)
       idx = COLOR_WINDOWTEXT;
       break;
     case eColorID__moz_win_communicationstext:
-      if (IsAppThemed()) {
+      if (IsVistaOrLater() && IsAppThemed())
+      {
         res = ::GetColorFromTheme(eUXCommunicationsToolbar,
                                   TP_BUTTON, TS_NORMAL, TMT_TEXTCOLOR, aColor);
         if (NS_SUCCEEDED(res))
diff --git a/widget/windows/nsLookAndFeel.h b/widget/windows/nsLookAndFeel.h
index a77808322..ecc1e8304 100644
--- a/widget/windows/nsLookAndFeel.h
+++ b/widget/windows/nsLookAndFeel.h
@@ -5,7 +5,6 @@
 
 #ifndef __nsLookAndFeel
 #define __nsLookAndFeel
-
 #include "nsXPLookAndFeel.h"
 #include "nsIWindowsRegKey.h"
 
@@ -30,6 +29,20 @@
 #define SM_CONVERTIBLESLATEMODE 0x00002003
 #define SM_SYSTEMDOCKED         0x00002004
 #endif
+#ifndef WM_GESTURE
+typedef enum _AR_STATE
+{
+  AR_ENABLED        = 0x0,
+  AR_DISABLED       = 0x1,
+  AR_SUPPRESSED     = 0x2,
+  AR_REMOTESESSION  = 0x4,
+  AR_MULTIMON       = 0x8,
+  AR_NOSENSOR       = 0x10,
+  AR_NOT_SUPPORTED  = 0x20,
+  AR_DOCKED         = 0x40,
+  AR_LAPTOP         = 0x80
+} AR_STATE, *PAR_STATE;
+#endif
 
 class nsLookAndFeel: public nsXPLookAndFeel {
   static OperatingSystemVersion GetOperatingSystemVersion();
diff --git a/widget/windows/nsNativeThemeWin.cpp b/widget/windows/nsNativeThemeWin.cpp
index 8950dcf90..4ff6b0af9 100644
--- a/widget/windows/nsNativeThemeWin.cpp
+++ b/widget/windows/nsNativeThemeWin.cpp
@@ -39,6 +39,7 @@
 #include "nsUXThemeConstants.h"
 #include <algorithm>
 
+using mozilla::IsVistaOrLater;
 using namespace mozilla;
 using namespace mozilla::widget;
 
@@ -300,6 +301,10 @@ DrawThemeBGRTLAware(HANDLE aTheme, HDC aHdc, int aPart, int aState,
  *  aero basic max          0        2        1        2
  *  aero basic close        1        2        1        2
  *
+ *  xp theme min            0        2        0        2
+ *  xp theme max            0        2        1        2
+ *  xp theme close          1        2        2        2
+ *
  *  'cold' button padding - generic button padding, should
  *  be handled in css.
  *                       left      top    right   bottom
@@ -310,11 +315,16 @@ DrawThemeBGRTLAware(HANDLE aTheme, HDC aHdc, int aPart, int aState,
  *  aero basic min          0        0        1        0
  *  aero basic max          1        0        0        0
  *  aero basic close        0        0        0        0
+ *
+ *  xp theme min            0        0        1        0
+ *  xp theme max            1        0        0        0
+ *  xp theme close          0        0        0        0
  */
 
 enum CaptionDesktopTheme {
   CAPTION_CLASSIC = 0,
   CAPTION_BASIC,
+  CAPTION_XPTHEME,
 };
 
 enum CaptionButton {
@@ -348,6 +358,8 @@ AddPaddingRect(LayoutDeviceIntSize* aSize, CaptionButton button) {
   RECT offset;
   if (!IsAppThemed())
     offset = buttonData[CAPTION_CLASSIC].hotPadding[button];
+  else if (!IsVistaOrLater())
+    offset = buttonData[CAPTION_XPTHEME].hotPadding[button];
   else
     offset = buttonData[CAPTION_BASIC].hotPadding[button];
   aSize->width += offset.left + offset.right;
@@ -361,6 +373,8 @@ OffsetBackgroundRect(RECT& rect, CaptionButton button) {
   RECT offset;
   if (!IsAppThemed())
     offset = buttonData[CAPTION_CLASSIC].hotPadding[button];
+  else if (!IsVistaOrLater())
+    offset = buttonData[CAPTION_XPTHEME].hotPadding[button];
   else
     offset = buttonData[CAPTION_BASIC].hotPadding[button];
   rect.left += offset.left;
@@ -405,7 +419,9 @@ OffsetBackgroundRect(RECT& rect, CaptionButton button) {
 static const double kProgressDeterminateTimeSpan = 3.0;
 static const double kProgressIndeterminateTimeSpan = 5.0;
 // The width of the overlay used to animate the horizontal progress bar (Vista and later).
-static const int32_t kProgressHorizontalOverlaySize = 120;
+static const int32_t kProgressHorizontalVistaOverlaySize = 120;
+// The width of the overlay used for the horizontal indeterminate progress bars on XP.
+static const int32_t kProgressHorizontalXPOverlaySize = 55;
 // The height of the overlay used to animate the vertical progress bar (Vista and later).
 static const int32_t kProgressVerticalOverlaySize = 45;
 // The height of the overlay used for the vertical indeterminate progress bar (Vista and later).
@@ -419,8 +435,18 @@ static const int32_t kProgressClassicOverlaySize = 40;
  */
 static int32_t
 GetProgressOverlayStyle(bool aIsVertical)
-{
-  return aIsVertical ? PP_MOVEOVERLAYVERT : PP_MOVEOVERLAY;
+{ 
+  if (aIsVertical) {
+    if (IsVistaOrLater()) {
+      return PP_MOVEOVERLAYVERT;
+    }
+    return PP_CHUNKVERT;
+  } else {
+    if (IsVistaOrLater()) {
+      return PP_MOVEOVERLAY;
+    }
+    return PP_CHUNK;
+  }
 }
 
 /*
@@ -431,11 +457,14 @@ GetProgressOverlayStyle(bool aIsVertical)
 static int32_t
 GetProgressOverlaySize(bool aIsVertical, bool aIsIndeterminate)
 {
-  if (aIsVertical) {
-    return aIsIndeterminate ? kProgressVerticalIndeterminateOverlaySize
-                            : kProgressVerticalOverlaySize;
+  if (IsVistaOrLater()) {
+    if (aIsVertical) {
+      return aIsIndeterminate ? kProgressVerticalIndeterminateOverlaySize
+                              : kProgressVerticalOverlaySize;
+    }
+    return kProgressHorizontalVistaOverlaySize;
   }
-  return kProgressHorizontalOverlaySize;
+  return kProgressHorizontalXPOverlaySize;
 }
 
 /*
@@ -524,6 +553,87 @@ nsNativeThemeWin::CalculateProgressOverlayRect(nsIFrame* aFrame,
   return overlayRect;
 }
 
+/*
+ * DrawChunkProgressMeter - renders an xp style chunked progress meter. Called
+ * by DrawProgressMeter.
+ *
+ * @param aTheme       progress theme handle
+ * @param aHdc         hdc returned by gfxWindowsNativeDrawing
+ * @param aPart        the PP_X progress part
+ * @param aState       the theme state
+ * @param aFrame       the elements frame
+ * @param aWidgetRect  bounding rect for the widget
+ * @param aClipRect    dirty rect that needs drawing.
+ * @param aAppUnits    app units per device pixel
+ * @param aIsIndeterm  is an indeterminate progress?
+ * @param aIsVertical  render a vertical progress?
+ * @param aIsRtl       direction is rtl
+ */
+static void
+DrawChunkProgressMeter(HTHEME aTheme, HDC aHdc, int aPart,
+                       int aState, nsIFrame* aFrame, RECT* aWidgetRect,
+                       RECT* aClipRect, gfxFloat aAppUnits, bool aIsIndeterm,
+                       bool aIsVertical, bool aIsRtl)
+{
+  NS_ASSERTION(aTheme, "Bad theme.");
+  NS_ASSERTION(aHdc, "Bad hdc.");
+  NS_ASSERTION(aWidgetRect, "Bad rect.");
+  NS_ASSERTION(aClipRect, "Bad clip rect.");
+  NS_ASSERTION(aFrame, "Bad frame.");
+
+  // For horizontal meters, the theme lib paints the right graphic but doesn't
+  // paint the chunks, so we do that manually. For vertical meters, the theme
+  // library draws everything correctly.
+  if (aIsVertical) {
+    DrawThemeBackground(aTheme, aHdc, aPart, aState, aWidgetRect, aClipRect);
+    return;
+  }
+
+  // query for the proper chunk metrics
+  int chunkSize, spaceSize;
+  if (FAILED(GetThemeMetric(aTheme, aHdc, aPart, aState,
+                            TMT_PROGRESSCHUNKSIZE, &chunkSize)) ||
+      FAILED(GetThemeMetric(aTheme, aHdc, aPart, aState,
+                            TMT_PROGRESSSPACESIZE, &spaceSize))) {
+    DrawThemeBackground(aTheme, aHdc, aPart, aState, aWidgetRect, aClipRect);
+    return;
+  }
+
+  // render chunks
+  if (!aIsRtl || aIsIndeterm) {
+    for (int chunk = aWidgetRect->left; chunk <= aWidgetRect->right;
+         chunk += (chunkSize+spaceSize)) {
+      if (!aIsIndeterm && ((chunk + chunkSize) > aWidgetRect->right)) {
+        // aWidgetRect->right represents the end of the meter. Partial blocks
+        // don't get rendered with one exception, so exit here if we don't have
+        // a full chunk to draw.
+        // The above is true *except* when the meter is at 100% fill, in which
+        // case Windows renders any remaining partial block. Query the parent
+        // frame to find out if we're at 100%.
+        if (!IsProgressMeterFilled(aFrame)) {
+          break;
+        }
+      }
+      RECT bounds =
+        { chunk, aWidgetRect->top, chunk + chunkSize, aWidgetRect->bottom };
+      DrawThemeBackground(aTheme, aHdc, aPart, aState, &bounds, aClipRect);
+    }
+  } else {
+    // rtl needs to grow in the opposite direction to look right.
+    for (int chunk = aWidgetRect->right; chunk >= aWidgetRect->left;
+         chunk -= (chunkSize+spaceSize)) {
+      if ((chunk - chunkSize) < aWidgetRect->left) {
+        if (!IsProgressMeterFilled(aFrame)) {
+          break;
+        }
+      }
+      RECT bounds =
+        { chunk - chunkSize, aWidgetRect->top, chunk, aWidgetRect->bottom };
+      DrawThemeBackground(aTheme, aHdc, aPart, aState, &bounds, aClipRect);
+    }
+  }
+}
+
 /*
  * DrawProgressMeter - render an appropriate progress meter based on progress
  * meter style, orientation, and os. Note, this does not render the underlying
@@ -543,7 +653,8 @@ void
 nsNativeThemeWin::DrawThemedProgressMeter(nsIFrame* aFrame, int aWidgetType,
                                           HANDLE aTheme, HDC aHdc,
                                           int aPart, int aState,
-                                          RECT* aWidgetRect, RECT* aClipRect)
+                                          RECT* aWidgetRect, RECT* aClipRect,
+                                          gfxFloat aAppUnits)
 {
   if (!aFrame || !aTheme || !aHdc)
     return;
@@ -554,6 +665,12 @@ nsNativeThemeWin::DrawThemedProgressMeter(nsIFrame* aFrame, int aWidgetType,
   RECT adjWidgetRect, adjClipRect;
   adjWidgetRect = *aWidgetRect;
   adjClipRect = *aClipRect;
+  if (!IsVistaOrLater()) {
+    // Adjust clipping out by one pixel. XP progress meters are inset,
+    // Vista+ are not.
+    InflateRect(&adjWidgetRect, 1, 1);
+    InflateRect(&adjClipRect, 1, 1);
+  }
 
   nsIFrame* parentFrame = aFrame->GetParent();
   if (!parentFrame) {
@@ -568,13 +685,20 @@ nsNativeThemeWin::DrawThemedProgressMeter(nsIFrame* aFrame, int aWidgetType,
   bool indeterminate = IsIndeterminateProgress(parentFrame, eventStates);
   bool animate = indeterminate;
 
-  // Vista and up progress meter is fill style, rendered here. We render
-  // the pulse overlay in the follow up section below.
-  DrawThemeBackground(aTheme, aHdc, aPart, aState,
-                      &adjWidgetRect, &adjClipRect);
-  if (!IsProgressMeterFilled(aFrame)) {
-    animate = true;
-  }
+  if (IsVistaOrLater()) {
+    // Vista and up progress meter is fill style, rendered here. We render
+    // the pulse overlay in the follow up section below.
+    DrawThemeBackground(aTheme, aHdc, aPart, aState,
+                        &adjWidgetRect, &adjClipRect);
+    if (!IsProgressMeterFilled(aFrame)) {
+      animate = true;
+    }
+  } else if (!indeterminate) {
+    // XP progress meters are 'chunk' style.
+    DrawChunkProgressMeter(aTheme, aHdc, aPart, aState, aFrame,
+                           &adjWidgetRect, &adjClipRect, aAppUnits,
+                           indeterminate, vertical, IsFrameRTL(aFrame));
+  }    
 
   if (animate) {
     // Indeterminate rendering
@@ -582,8 +706,14 @@ nsNativeThemeWin::DrawThemedProgressMeter(nsIFrame* aFrame, int aWidgetType,
     RECT overlayRect =
       CalculateProgressOverlayRect(aFrame, &adjWidgetRect, vertical,
                                    indeterminate, false);
-    DrawThemeBackground(aTheme, aHdc, overlayPart, aState, &overlayRect,
-                        &adjClipRect);
+    if (IsVistaOrLater()) {
+      DrawThemeBackground(aTheme, aHdc, overlayPart, aState, &overlayRect,
+                          &adjClipRect);
+    } else {
+      DrawChunkProgressMeter(aTheme, aHdc, overlayPart, aState, aFrame,
+                             &overlayRect, &adjClipRect, aAppUnits,
+                             indeterminate, vertical, IsFrameRTL(aFrame));
+    }
 
     if (!QueueAnimatedContentForRefresh(aFrame->GetContent(), 60)) {
       NS_WARNING("unable to animate progress widget!");
@@ -594,6 +724,15 @@ nsNativeThemeWin::DrawThemedProgressMeter(nsIFrame* aFrame, int aWidgetType,
 HANDLE
 nsNativeThemeWin::GetTheme(uint8_t aWidgetType)
 { 
+  if (!IsVistaOrLater()) {
+    // On XP or earlier, render dropdowns as textfields;
+    // doing it the right way works fine with the MS themes,
+    // but breaks on a lot of custom themes (presumably because MS
+    // apps do the textfield border business as well).
+    if (aWidgetType == NS_THEME_MENULIST)
+      aWidgetType = NS_THEME_TEXTFIELD;
+  }
+
   switch (aWidgetType) {
     case NS_THEME_BUTTON:
     case NS_THEME_RADIO:
@@ -606,7 +745,9 @@ nsNativeThemeWin::GetTheme(uint8_t aWidgetType)
     case NS_THEME_FOCUS_OUTLINE:
       return nsUXThemeData::GetTheme(eUXEdit);
     case NS_THEME_TOOLTIP:
-      return nsUXThemeData::GetTheme(eUXTooltip);
+      // XP/2K3 should force a classic treatment of tooltips
+      return !IsVistaOrLater() ?
+        nullptr : nsUXThemeData::GetTheme(eUXTooltip);
     case NS_THEME_TOOLBOX:
       return nsUXThemeData::GetTheme(eUXRebar);
     case NS_THEME_WIN_MEDIA_TOOLBOX:
@@ -733,6 +874,12 @@ nsresult
 nsNativeThemeWin::GetThemePartAndState(nsIFrame* aFrame, uint8_t aWidgetType, 
                                        int32_t& aPart, int32_t& aState)
 {
+  if (!IsVistaOrLater()) {
+    // See GetTheme
+    if (aWidgetType == NS_THEME_MENULIST)
+      aWidgetType = NS_THEME_TEXTFIELD;
+  }
+
   switch (aWidgetType) {
     case NS_THEME_BUTTON: {
       aPart = BP_BUTTON;
@@ -805,43 +952,63 @@ nsNativeThemeWin::GetThemePartAndState(nsIFrame* aFrame, uint8_t aWidgetType,
     case NS_THEME_TEXTFIELD_MULTILINE: {
       EventStates eventState = GetContentState(aFrame, aWidgetType);
 
-      /* Note: the NOSCROLL type has a rounded corner in each corner.  The more
-       * specific HSCROLL, VSCROLL, HVSCROLL types have side and/or top/bottom
-       * edges rendered as straight horizontal lines with sharp corners to
-       * accommodate a scrollbar.  However, the scrollbar gets rendered on top
-       * of this for us, so we don't care, and can just use NOSCROLL here.
-       */
-      aPart = TFP_EDITBORDER_NOSCROLL;
+      if (IsVistaOrLater()) {
+        /* Note: the NOSCROLL type has a rounded corner in each
+         * corner.  The more specific HSCROLL, VSCROLL, HVSCROLL types
+         * have side and/or top/bottom edges rendered as straight
+         * horizontal lines with sharp corners to accommodate a
+         * scrollbar.  However, the scrollbar gets rendered on top of
+         * this for us, so we don't care, and can just use NOSCROLL
+         * here.
+         */
+        aPart = TFP_EDITBORDER_NOSCROLL;
 
-      if (!aFrame) {
-        aState = TFS_EDITBORDER_NORMAL;
-      } else if (IsDisabled(aFrame, eventState)) {
-        aState = TFS_EDITBORDER_DISABLED;
-      } else if (IsReadOnly(aFrame)) {
-        /* no special read-only state */
-        aState = TFS_EDITBORDER_NORMAL;
-      } else {
-        nsIContent* content = aFrame->GetContent();
+        if (!aFrame) {
+          aState = TFS_EDITBORDER_NORMAL;
+        } else if (IsDisabled(aFrame, eventState)) {
+          aState = TFS_EDITBORDER_DISABLED;
+        } else if (IsReadOnly(aFrame)) {
+          /* no special read-only state */
+          aState = TFS_EDITBORDER_NORMAL;
+        } else {
+          nsIContent* content = aFrame->GetContent();
 
-        /* XUL textboxes don't get focused themselves, because they have child
-         * html:input.. but we can check the XUL focused attributes on them
-         */
-        if (content && content->IsXULElement() && IsFocused(aFrame))
-          aState = TFS_EDITBORDER_FOCUSED;
-        else if (eventState.HasAtLeastOneOfStates(NS_EVENT_STATE_ACTIVE | NS_EVENT_STATE_FOCUS))
-          aState = TFS_EDITBORDER_FOCUSED;
-        else if (eventState.HasState(NS_EVENT_STATE_HOVER))
-          aState = TFS_EDITBORDER_HOVER;
+          /* XUL textboxes don't get focused themselves, because they have child
+           * html:input.. but we can check the XUL focused attributes on them
+           */
+          if (content && content->IsXULElement() && IsFocused(aFrame))
+            aState = TFS_EDITBORDER_FOCUSED;
+          else if (eventState.HasAtLeastOneOfStates(NS_EVENT_STATE_ACTIVE | NS_EVENT_STATE_FOCUS))
+            aState = TFS_EDITBORDER_FOCUSED;
+          else if (eventState.HasState(NS_EVENT_STATE_HOVER))
+            aState = TFS_EDITBORDER_HOVER;
+          else
+            aState = TFS_EDITBORDER_NORMAL;
+        }
+      } else {
+        aPart = TFP_TEXTFIELD;
+        
+        if (!aFrame)
+          aState = TS_NORMAL;
+        else if (IsDisabled(aFrame, eventState))
+          aState = TS_DISABLED;
+        else if (IsReadOnly(aFrame))
+          aState = TFS_READONLY;
         else
-          aState = TFS_EDITBORDER_NORMAL;
+          aState = StandardGetState(aFrame, aWidgetType, true);
       }
 
       return NS_OK;
     }
     case NS_THEME_FOCUS_OUTLINE: {
-      // XXX the EDITBORDER values don't respect DTBG_OMITCONTENT
-      aPart = TFP_TEXTFIELD; //TFP_EDITBORDER_NOSCROLL;
-      aState = TS_FOCUSED; //TFS_EDITBORDER_FOCUSED;
+      if (IsVistaOrLater()) {
+        // XXX the EDITBORDER values don't respect DTBG_OMITCONTENT
+        aPart = TFP_TEXTFIELD; //TFP_EDITBORDER_NOSCROLL;
+        aState = TS_FOCUSED; //TFS_EDITBORDER_FOCUSED;
+      } else {
+        aPart = TFP_TEXTFIELD;
+        aState = TS_FOCUSED;
+      }
       return NS_OK;
     }
     case NS_THEME_TOOLTIP: {
@@ -865,9 +1032,11 @@ nsNativeThemeWin::GetThemePartAndState(nsIFrame* aFrame, uint8_t aWidgetType,
       nsIFrame* parentFrame = aFrame->GetParent();
       if (aWidgetType == NS_THEME_PROGRESSCHUNK_VERTICAL ||
           IsVerticalProgress(parentFrame)) {
-        aPart = PP_FILLVERT;
+        aPart = IsVistaOrLater() ?
+          PP_FILLVERT : PP_CHUNKVERT;
       } else {
-        aPart = PP_FILL;
+        aPart = IsVistaOrLater() ?
+          PP_FILL : PP_CHUNK;
       }
 
       aState = PBBVS_NORMAL;
@@ -931,7 +1100,8 @@ nsNativeThemeWin::GetThemePartAndState(nsIFrame* aFrame, uint8_t aWidgetType,
           aState += TS_ACTIVE;
         else if (eventState.HasState(NS_EVENT_STATE_HOVER))
           aState += TS_HOVER;
-        else if (parentState.HasState(NS_EVENT_STATE_HOVER))
+        else if (IsVistaOrLater() &&
+                 parentState.HasState(NS_EVENT_STATE_HOVER))
           aState = (aWidgetType - NS_THEME_SCROLLBARBUTTON_UP) + SP_BUTTON_IMPLICIT_HOVER_BASE;
         else
           aState += TS_NORMAL;
@@ -1034,7 +1204,14 @@ nsNativeThemeWin::GetThemePartAndState(nsIFrame* aFrame, uint8_t aWidgetType,
     case NS_THEME_SCROLLBAR:
     case NS_THEME_SCROLLBAR_SMALL: {
       aState = 0;
-      aPart = RP_BACKGROUND;
+      if (IsVistaOrLater()) {
+        // On vista, they have a part
+        aPart = RP_BACKGROUND;
+      } else {
+        // Otherwise, they don't.  (But I bet
+        // RP_BACKGROUND would work here, too);
+        aPart = 0;
+      }
       return NS_OK;
     }
     case NS_THEME_TOOLBAR: {
@@ -1159,7 +1336,8 @@ nsNativeThemeWin::GetThemePartAndState(nsIFrame* aFrame, uint8_t aWidgetType,
         aFrame = parentFrame;
 
       EventStates eventState = GetContentState(aFrame, aWidgetType);
-      aPart = CBP_DROPMARKER_VISTA;
+      aPart = IsVistaOrLater() ?
+        CBP_DROPMARKER_VISTA : CBP_DROPMARKER;
 
       // For HTML controls with author styling, we should fall
       // back to the old dropmarker style to avoid clashes with
@@ -1179,25 +1357,28 @@ nsNativeThemeWin::GetThemePartAndState(nsIFrame* aFrame, uint8_t aWidgetType,
       else
         isOpen = IsOpenButton(aFrame);
 
-      if (isHTML || IsMenuListEditable(aFrame)) {
-        if (isOpen) {
-          /* Hover is propagated, but we need to know whether we're hovering
-           * just the combobox frame, not the dropdown frame. But, we can't get
-           * that information, since hover is on the content node, and they
-           * share the same content node.  So, instead, we cheat -- if the
-           * dropdown is open, we always show the hover state.  This looks fine
-           * in practice.
+      if (IsVistaOrLater()) {
+        if (isHTML || IsMenuListEditable(aFrame)) {
+          if (isOpen) {
+            /* Hover is propagated, but we need to know whether we're
+             * hovering just the combobox frame, not the dropdown frame.
+             * But, we can't get that information, since hover is on the
+             * content node, and they share the same content node.  So,
+             * instead, we cheat -- if the dropdown is open, we always
+             * show the hover state.  This looks fine in practice.
+             */
+            aState = TS_HOVER;
+            return NS_OK;
+          }
+        } else {
+          /* On Vista, the dropdown indicator on a menulist button in  
+           * chrome is not given a hover effect. When the frame isn't
+           * isn't HTML content, we cheat and force the dropdown state
+           * to be normal. (Bug 430434)
            */
-          aState = TS_HOVER;
+          aState = TS_NORMAL;
           return NS_OK;
         }
-      } else {
-        /* The dropdown indicator on a menulist button in chrome is not given a
-         * hover effect. When the frame isn't isn't HTML content, we cheat and
-         * force the dropdown state to be normal. (Bug 430434)
-         */
-        aState = TS_NORMAL;
-        return NS_OK;
       }
 
       aState = TS_NORMAL;
@@ -1698,7 +1879,7 @@ RENDER_AGAIN:
   else if (aWidgetType == NS_THEME_PROGRESSCHUNK ||
            aWidgetType == NS_THEME_PROGRESSCHUNK_VERTICAL) {
     DrawThemedProgressMeter(aFrame, aWidgetType, theme, hdc, part, state,
-                            &widgetRect, &clipRect);
+                            &widgetRect, &clipRect, p2a);
   }
   else if (aWidgetType == NS_THEME_FOCUS_OUTLINE) {
     // Inflate 'widgetRect' with the focus outline size.
@@ -1964,39 +2145,41 @@ nsNativeThemeWin::GetWidgetPadding(nsDeviceContext* aContext,
     return ok;
   }
 
-  if (aWidgetType == NS_THEME_NUMBER_INPUT ||
-      aWidgetType == NS_THEME_TEXTFIELD ||
-      aWidgetType == NS_THEME_TEXTFIELD_MULTILINE ||
-      aWidgetType == NS_THEME_MENULIST)
-  {
-    // If we have author-specified padding for these elements, don't do the
-    // fixups below.
-    if (aFrame->PresContext()->HasAuthorSpecifiedRules(aFrame, NS_AUTHOR_SPECIFIED_PADDING))
-      return false;
-  }
+  if (IsVistaOrLater()) {
+    if (aWidgetType == NS_THEME_NUMBER_INPUT ||
+        aWidgetType == NS_THEME_TEXTFIELD ||
+        aWidgetType == NS_THEME_TEXTFIELD_MULTILINE ||
+        aWidgetType == NS_THEME_MENULIST)
+    {
+      /* If we have author-specified padding for these elements, don't do the fixups below */
+      if (aFrame->PresContext()->HasAuthorSpecifiedRules(aFrame, NS_AUTHOR_SPECIFIED_PADDING))
+        return false;
+    }
 
-  /* textfields need extra pixels on all sides, otherwise they wrap their
-   * content too tightly.  The actual border is drawn 1px inside the specified
-   * rectangle, so Gecko will end up making the contents look too small.
-   * Instead, we add 2px padding for the contents and fix this. (Used to be 1px
-   * added, see bug 430212)
-   */
-  if (aWidgetType == NS_THEME_NUMBER_INPUT ||
-      aWidgetType == NS_THEME_TEXTFIELD ||
-      aWidgetType == NS_THEME_TEXTFIELD_MULTILINE) {
-    aResult->top = aResult->bottom = 2;
-    aResult->left = aResult->right = 2;
-    ScaleForFrameDPI(aResult, aFrame);
-    return ok;
-  } else if (IsHTMLContent(aFrame) && aWidgetType == NS_THEME_MENULIST) {
-    /* For content menulist controls, we need an extra pixel so that we have
-     * room to draw our focus rectangle stuff. Otherwise, the focus rect might
-     * overlap the control's border.
+    /* textfields need extra pixels on all sides, otherwise they
+     * wrap their content too tightly.  The actual border is drawn 1px
+     * inside the specified rectangle, so Gecko will end up making the
+     * contents look too small.  Instead, we add 2px padding for the
+     * contents and fix this. (Used to be 1px added, see bug 430212)
      */
-    aResult->top = aResult->bottom = 1;
-    aResult->left = aResult->right = 1;
-    ScaleForFrameDPI(aResult, aFrame);
-    return ok;
+    if (aWidgetType == NS_THEME_NUMBER_INPUT ||
+        aWidgetType == NS_THEME_TEXTFIELD ||
+        aWidgetType == NS_THEME_TEXTFIELD_MULTILINE) {
+      aResult->top = aResult->bottom = 2;
+      aResult->left = aResult->right = 2;
+      ScaleForFrameDPI(aResult, aFrame);
+      return ok;
+    } else if (IsHTMLContent(aFrame) && aWidgetType == NS_THEME_MENULIST) {
+      /* For content menulist controls, we need an extra pixel so
+       * that we have room to draw our focus rectangle stuff.
+       * Otherwise, the focus rect might overlap the control's
+       * border.
+       */
+      aResult->top = aResult->bottom = 1;
+      aResult->left = aResult->right = 1;
+      ScaleForFrameDPI(aResult, aFrame);
+      return ok;
+    }
   }
 
   int32_t right, left, top, bottom;
@@ -2061,21 +2244,23 @@ nsNativeThemeWin::GetWidgetOverflow(nsDeviceContext* aContext,
    * a border only shows up if the widget is being hovered.
    */
 #if 0
-  /* We explicitly draw dropdown buttons in HTML content 1px bigger up, right,
-   * and bottom so that they overlap the dropdown's border like they're
-   * supposed to.
-   */
-  if (aWidgetType == NS_THEME_MENULIST_BUTTON &&
-      IsHTMLContent(aFrame) &&
-      !IsWidgetStyled(aFrame->GetParent()->PresContext(),
-                      aFrame->GetParent(),
-                      NS_THEME_MENULIST))
-  {
-    int32_t p2a = aContext->AppUnitsPerDevPixel();
-    /* Note: no overflow on the left */
-    nsMargin m(p2a, p2a, p2a, 0);
-    aOverflowRect->Inflate (m);
-    return true;
+  if (IsVistaOrLater()) {
+    /* We explicitly draw dropdown buttons in HTML content 1px bigger
+     * up, right, and bottom so that they overlap the dropdown's border
+     * like they're supposed to.
+     */
+    if (aWidgetType == NS_THEME_MENULIST_BUTTON &&
+        IsHTMLContent(aFrame) &&
+        !IsWidgetStyled(aFrame->GetParent()->PresContext(),
+                        aFrame->GetParent(),
+                        NS_THEME_MENULIST))
+    {
+      int32_t p2a = aContext->AppUnitsPerDevPixel();
+      /* Note: no overflow on the left */
+      nsMargin m(p2a, p2a, p2a, 0);
+      aOverflowRect->Inflate (m);
+      return true;
+    }
   }
 #endif
 
@@ -2199,18 +2384,22 @@ nsNativeThemeWin::GetMinimumWidgetSize(nsPresContext* aPresContext, nsIFrame* aF
     case NS_THEME_SCALETHUMB_VERTICAL:
     {
       *aIsOverridable = false;
-      // On Vista, GetThemePartAndState returns odd values for
+      // on Vista, GetThemePartAndState returns odd values for
       // scale thumbs, so use a hardcoded size instead.
-      if (aWidgetType == NS_THEME_SCALETHUMB_HORIZONTAL ||
-          (aWidgetType == NS_THEME_RANGE_THUMB && IsRangeHorizontal(aFrame))) {
-        aResult->width = 12;
-        aResult->height = 20;
-      } else {
-        aResult->width = 20;
-        aResult->height = 12;
+      if (IsVistaOrLater()) {
+        if (aWidgetType == NS_THEME_SCALETHUMB_HORIZONTAL ||
+            (aWidgetType == NS_THEME_RANGE_THUMB && IsRangeHorizontal(aFrame))) {
+          aResult->width = 12;
+          aResult->height = 20;
+        }
+        else {
+          aResult->width = 20;
+          aResult->height = 12;
+        }
+        ScaleForFrameDPI(aResult, aFrame);
+        return rv;
       }
-      ScaleForFrameDPI(aResult, aFrame);
-      return rv;
+      break;
     }
 
     case NS_THEME_SCROLLBAR:
@@ -2249,6 +2438,11 @@ nsNativeThemeWin::GetMinimumWidgetSize(nsPresContext* aPresContext, nsIFrame* aF
       // stores that info in nsUXThemeData.
       aResult->width = nsUXThemeData::sCommandButtons[CMDBUTTONIDX_RESTORE].cx;
       aResult->height = nsUXThemeData::sCommandButtons[CMDBUTTONIDX_RESTORE].cy;
+      // For XP, subtract 4 from system metrics dimensions.
+      if (!IsVistaOrLater()) {
+        aResult->width -= 4;
+        aResult->height -= 4;
+      }
       AddPaddingRect(aResult, CAPTIONBUTTON_RESTORE);
       *aIsOverridable = false;
       return rv;
@@ -2256,6 +2450,10 @@ nsNativeThemeWin::GetMinimumWidgetSize(nsPresContext* aPresContext, nsIFrame* aF
     case NS_THEME_WINDOW_BUTTON_MINIMIZE:
       aResult->width = nsUXThemeData::sCommandButtons[CMDBUTTONIDX_MINIMIZE].cx;
       aResult->height = nsUXThemeData::sCommandButtons[CMDBUTTONIDX_MINIMIZE].cy;
+      if (!IsVistaOrLater()) {
+        aResult->width -= 4;
+        aResult->height -= 4;
+      }
       AddPaddingRect(aResult, CAPTIONBUTTON_MINIMIZE);
       *aIsOverridable = false;
       return rv;
@@ -2263,6 +2461,10 @@ nsNativeThemeWin::GetMinimumWidgetSize(nsPresContext* aPresContext, nsIFrame* aF
     case NS_THEME_WINDOW_BUTTON_CLOSE:
       aResult->width = nsUXThemeData::sCommandButtons[CMDBUTTONIDX_CLOSE].cx;
       aResult->height = nsUXThemeData::sCommandButtons[CMDBUTTONIDX_CLOSE].cy;
+      if (!IsVistaOrLater()) {
+        aResult->width -= 4;
+        aResult->height -= 4;
+      }
       AddPaddingRect(aResult, CAPTIONBUTTON_CLOSE);
       *aIsOverridable = false;
       return rv;
@@ -2392,9 +2594,18 @@ nsNativeThemeWin::WidgetStateChanged(nsIFrame* aFrame, uint8_t aWidgetType,
     return NS_OK;
   }
 
+  // On Vista, the scrollbar buttons need to change state when the track has/doesn't have hover
+  if (!IsVistaOrLater() &&
+      (aWidgetType == NS_THEME_SCROLLBAR_VERTICAL || 
+      aWidgetType == NS_THEME_SCROLLBAR_HORIZONTAL)) {
+    *aShouldRepaint = false;
+    return NS_OK;
+  }
+
   // We need to repaint the dropdown arrow in vista HTML combobox controls when
   // the control is closed to get rid of the hover effect.
-  if ((aWidgetType == NS_THEME_MENULIST || aWidgetType == NS_THEME_MENULIST_BUTTON) &&
+  if (IsVistaOrLater() &&
+      (aWidgetType == NS_THEME_MENULIST || aWidgetType == NS_THEME_MENULIST_BUTTON) &&
       IsHTMLContent(aFrame))
   {
     *aShouldRepaint = true;
diff --git a/widget/windows/nsNativeThemeWin.h b/widget/windows/nsNativeThemeWin.h
index 32b82b1e1..f20649444 100644
--- a/widget/windows/nsNativeThemeWin.h
+++ b/widget/windows/nsNativeThemeWin.h
@@ -117,7 +117,8 @@ protected:
   void DrawThemedProgressMeter(nsIFrame* aFrame, int aWidgetType,
                                HANDLE aTheme, HDC aHdc,
                                int aPart, int aState,
-                               RECT* aWidgetRect, RECT* aClipRect);
+                               RECT* aWidgetRect, RECT* aClipRect,
+                               gfxFloat aAppUnits);
 
 private:
   TimeStamp mProgressDeterminateTimeStamp;
diff --git a/widget/windows/nsUXThemeConstants.h b/widget/windows/nsUXThemeConstants.h
index ba7afde82..731dcedf2 100644
--- a/widget/windows/nsUXThemeConstants.h
+++ b/widget/windows/nsUXThemeConstants.h
@@ -67,7 +67,7 @@
 #define SP_GRIPPERHOR      8
 #define SP_GRIPPERVERT     9
 
-// Implicit hover state.
+// Vista only; implict hover state.
 // BASE + 0 = UP, + 1 = DOWN, etc.
 #define SP_BUTTON_IMPLICIT_HOVER_BASE   17
 
diff --git a/widget/windows/nsUXThemeData.cpp b/widget/windows/nsUXThemeData.cpp
index 4d9ac9570..bcbd32484 100644
--- a/widget/windows/nsUXThemeData.cpp
+++ b/widget/windows/nsUXThemeData.cpp
@@ -143,8 +143,10 @@ nsUXThemeData::InitTitlebarInfo()
   sCommandButtons[3].cx = sCommandButtons[0].cx * 3;
   sCommandButtons[3].cy = sCommandButtons[0].cy;
 
-  // Trigger a refresh on the next layout.
-  sTitlebarInfoPopulatedAero = sTitlebarInfoPopulatedThemed = false;
+  // Use system metrics for pre-vista, otherwise trigger a
+  // refresh on the next layout.
+  sTitlebarInfoPopulatedAero = sTitlebarInfoPopulatedThemed =
+    !IsVistaOrLater();
 }
 
 // static
@@ -304,7 +306,7 @@ void
 nsUXThemeData::UpdateNativeThemeInfo()
 {
   // Trigger a refresh of themed button metrics if needed
-  sTitlebarInfoPopulatedThemed = false;
+  sTitlebarInfoPopulatedThemed = !IsVistaOrLater();
 
   sIsDefaultWindowsTheme = false;
   sThemeId = LookAndFeel::eWindowsTheme_Generic;
diff --git a/widget/windows/nsWinGesture.h b/widget/windows/nsWinGesture.h
index fdd1588b6..f5561166a 100644
--- a/widget/windows/nsWinGesture.h
+++ b/widget/windows/nsWinGesture.h
@@ -17,6 +17,155 @@
 #include "mozilla/EventForwards.h"
 #include "mozilla/TouchEvents.h"
 
+// Desktop builds target apis for 502. Win8 Metro builds target 602.
+#if WINVER < 0x0601
+
+DECLARE_HANDLE(HGESTUREINFO);
+
+/*
+ * Gesture flags - GESTUREINFO.dwFlags
+ */
+#define GF_BEGIN                        0x00000001
+#define GF_INERTIA                      0x00000002
+#define GF_END                          0x00000004
+
+/*
+ * Gesture configuration structure
+ *   - Used in SetGestureConfig and GetGestureConfig
+ *   - Note that any setting not included in either GESTURECONFIG.dwWant or
+ *     GESTURECONFIG.dwBlock will use the parent window's preferences or
+ *     system defaults.
+ */
+typedef struct tagGESTURECONFIG {
+    DWORD dwID;                     // gesture ID
+    DWORD dwWant;                   // settings related to gesture ID that are to be turned on
+    DWORD dwBlock;                  // settings related to gesture ID that are to be turned off
+} GESTURECONFIG, *PGESTURECONFIG;
+
+/*
+ * Gesture information structure
+ *   - Pass the HGESTUREINFO received in the WM_GESTURE message lParam into the
+ *     GetGestureInfo function to retrieve this information.
+ *   - If cbExtraArgs is non-zero, pass the HGESTUREINFO received in the WM_GESTURE
+ *     message lParam into the GetGestureExtraArgs function to retrieve extended
+ *     argument information.
+ */
+typedef struct tagGESTUREINFO {
+    UINT cbSize;                    // size, in bytes, of this structure (including variable length Args field)
+    DWORD dwFlags;                  // see GF_* flags
+    DWORD dwID;                     // gesture ID, see GID_* defines
+    HWND hwndTarget;                // handle to window targeted by this gesture
+    POINTS ptsLocation;             // current location of this gesture
+    DWORD dwInstanceID;             // internally used
+    DWORD dwSequenceID;             // internally used
+    ULONGLONG ullArguments;         // arguments for gestures whose arguments fit in 8 BYTES
+    UINT cbExtraArgs;               // size, in bytes, of extra arguments, if any, that accompany this gesture
+} GESTUREINFO, *PGESTUREINFO;
+typedef GESTUREINFO const * PCGESTUREINFO;
+
+/*
+ * Gesture notification structure
+ *   - The WM_GESTURENOTIFY message lParam contains a pointer to this structure.
+ *   - The WM_GESTURENOTIFY message notifies a window that gesture recognition is
+ *     in progress and a gesture will be generated if one is recognized under the
+ *     current gesture settings.
+ */
+typedef struct tagGESTURENOTIFYSTRUCT {
+    UINT cbSize;                    // size, in bytes, of this structure
+    DWORD dwFlags;                  // unused
+    HWND hwndTarget;                // handle to window targeted by the gesture
+    POINTS ptsLocation;             // starting location
+    DWORD dwInstanceID;             // internally used
+} GESTURENOTIFYSTRUCT, *PGESTURENOTIFYSTRUCT;
+
+
+/*
+ * Gesture argument helpers
+ *   - Angle should be a double in the range of -2pi to +2pi
+ *   - Argument should be an unsigned 16-bit value
+ */
+#define GID_ROTATE_ANGLE_TO_ARGUMENT(_arg_)     ((USHORT)((((_arg_) + 2.0 * 3.14159265) / (4.0 * 3.14159265)) * 65535.0))
+#define GID_ROTATE_ANGLE_FROM_ARGUMENT(_arg_)   ((((double)(_arg_) / 65535.0) * 4.0 * 3.14159265) - 2.0 * 3.14159265)
+
+/*
+ * Gesture configuration flags
+ */
+#define GC_ALLGESTURES                              0x00000001
+
+#define GC_ZOOM                                     0x00000001
+
+#define GC_PAN                                      0x00000001
+#define GC_PAN_WITH_SINGLE_FINGER_VERTICALLY        0x00000002
+#define GC_PAN_WITH_SINGLE_FINGER_HORIZONTALLY      0x00000004
+#define GC_PAN_WITH_GUTTER                          0x00000008
+#define GC_PAN_WITH_INERTIA                         0x00000010
+
+#define GC_ROTATE                                   0x00000001
+
+#define GC_TWOFINGERTAP                             0x00000001
+
+#define GC_PRESSANDTAP                              0x00000001
+
+/*
+ * Gesture IDs
+ */
+#define GID_BEGIN                       1
+#define GID_END                         2
+#define GID_ZOOM                        3
+#define GID_PAN                         4
+#define GID_ROTATE                      5
+#define GID_TWOFINGERTAP                6
+#define GID_PRESSANDTAP                 7
+
+// Maximum number of gestures that can be included
+// in a single call to SetGestureConfig / GetGestureConfig
+#define GESTURECONFIGMAXCOUNT           256
+
+// If specified, GetGestureConfig returns consolidated configuration
+// for the specified window and it's parent window chain
+#define GCF_INCLUDE_ANCESTORS           0x00000001
+
+// Window events we need to respond to or receive
+#define WM_GESTURE                         0x0119
+#define WM_GESTURENOTIFY                   0x011A
+
+typedef struct _TOUCHINPUT {
+  LONG      x;
+  LONG      y;
+  HANDLE    hSource;
+  DWORD     dwID;
+  DWORD     dwFlags;
+  DWORD     dwMask;
+  DWORD     dwTime;
+  ULONG_PTR dwExtraInfo;
+  DWORD     cxContact;
+  DWORD     cyContact;
+} TOUCHINPUT, *PTOUCHINPUT;
+
+typedef HANDLE HTOUCHINPUT;
+
+#define WM_TOUCH 0x0240
+
+#define TOUCHEVENTF_MOVE       0x0001
+#define TOUCHEVENTF_DOWN       0x0002
+#define TOUCHEVENTF_UP         0x0004
+#define TOUCHEVENTF_INRANGE    0x0008
+#define TOUCHEVENTF_PRIMARY    0x0010
+#define TOUCHEVENTF_NOCOALESCE 0x0020
+#define TOUCHEVENTF_PEN        0x0040
+#define TOUCHEVENTF_PALM       0x0080
+
+#define TOUCHINPUTMASKF_TIMEFROMSYSTEM 0x0001
+#define TOUCHINPUTMASKF_EXTRAINFO      0x0002
+#define TOUCHINPUTMASKF_CONTACTAREA    0x0004
+
+#define TOUCH_COORD_TO_PIXEL(C) (C/100)
+
+#define TWF_FINETOUCH          0x0001
+#define TWF_WANTPALM           0x0002
+
+#endif // WINVER < 0x0602
+
 // WM_TABLET_QUERYSYSTEMGESTURESTATUS return values
 #define TABLET_ROTATE_GESTURE_ENABLE    0x02000000
 
@@ -56,7 +205,7 @@ public:
   bool GetTouchInputInfo(HTOUCHINPUT hTouchInput, uint32_t cInputs, PTOUCHINPUT pInputs);
   bool CloseTouchInputHandle(HTOUCHINPUT hTouchInput);
   bool IsAvailable();
-
+  
   // Simple gesture process
   bool ProcessGestureMessage(HWND hWnd, WPARAM wParam, LPARAM lParam, mozilla::WidgetSimpleGestureEvent& evt);
 
@@ -67,7 +216,7 @@ public:
   void UpdatePanFeedbackX(HWND hWnd, int32_t scrollOverflow, bool& endFeedback);
   void UpdatePanFeedbackY(HWND hWnd, int32_t scrollOverflow, bool& endFeedback);
   void PanFeedbackFinalize(HWND hWnd, bool endFeedback);
-
+  
 public:
   // Helpers
   bool GetGestureInfo(HGESTUREINFO hGestureInfo, PGESTUREINFO pGestureInfo);
@@ -135,3 +284,5 @@ private:
 };
 
 #endif /* WinGesture_h__ */
+
+
diff --git a/widget/windows/nsWindow.cpp b/widget/windows/nsWindow.cpp
index b2bb59bd3..a8923f78e 100644
--- a/widget/windows/nsWindow.cpp
+++ b/widget/windows/nsWindow.cpp
@@ -266,7 +266,8 @@ LONG            nsWindow::sLastMouseDownTime      = 0L;
 LONG            nsWindow::sLastClickCount         = 0L;
 BYTE            nsWindow::sLastMouseButton        = 0;
 
-bool            nsWindow::sHaveInitializedPrefs   = false;
+// Trim heap on minimize. (initialized, but still true.)
+int             nsWindow::sTrimOnMinimize         = 2;
 
 TriStateBool nsWindow::sHasBogusPopupsDropShadowOnMultiMonitor = TRI_UNKNOWN;
 
@@ -782,7 +783,7 @@ nsWindow::Create(nsIWidget* aParent,
       parent = nullptr;
     }
 
-    if (!IsWin8OrLater() &&
+    if (IsVistaOrLater() && !IsWin8OrLater() &&
         HasBogusPopupsDropShadowOnMultiMonitor()) {
       extendedStyle |= WS_EX_COMPOSITED;
     }
@@ -907,13 +908,20 @@ nsWindow::Create(nsIWidget* aParent,
   mDefaultIMC.Init(this);
   IMEHandler::InitInputContext(this, mInputContext);
 
-  // Do some initialization work, but only if (a) it hasn't already been done,
-  // and (b) this is the hidden window (which is conveniently created before
-  // any visible windows but after the profile has been initialized).
-  if (!sHaveInitializedPrefs && mWindowType == eWindowType_invisible) {
+  // If the internal variable set by the config.trim_on_minimize pref has not
+  // been initialized, and if this is the hidden window (conveniently created
+  // before any visible windows, and after the profile has been initialized),
+  // do some initialization work.
+  if (sTrimOnMinimize == 2 && mWindowType == eWindowType_invisible) {
+    // Our internal trim prevention logic is effective on 2K/XP at maintaining
+    // the working set when windows are minimized, but on Vista and up it has
+    // little to no effect. Since this feature has been the source of numerous
+    // bugs over the years, disable it (sTrimOnMinimize=1) on Vista and up.
+    sTrimOnMinimize =
+      Preferences::GetBool("config.trim_on_minimize",
+        IsVistaOrLater() ? 1 : 0);
     sSwitchKeyboardLayout =
       Preferences::GetBool("intl.keyboard.per_window_layout", false);
-    sHaveInitializedPrefs = true;
   }
 
   // Query for command button metric data for rendering the titlebar. We
@@ -1639,10 +1647,9 @@ bool nsWindow::IsVisible() const
 
 // XP and Vista visual styles sometimes require window clipping regions to be applied for proper
 // transparency. These routines are called on size and move operations.
-// XXX this is apparently still needed in Windows 7 and later
 void nsWindow::ClearThemeRegion()
 {
-  if (!HasGlass() &&
+  if (IsVistaOrLater() && !HasGlass() &&
       (mWindowType == eWindowType_popup && !IsPopupWithTitleBar() &&
        (mPopupType == ePopupTypeTooltip || mPopupType == ePopupTypePanel))) {
     SetWindowRgn(mWnd, nullptr, false);
@@ -1656,7 +1663,7 @@ void nsWindow::SetThemeRegion()
   // so default constants are used for part and state. At some point we might need part and
   // state values from nsNativeThemeWin's GetThemePartAndState, but currently windows that
   // change shape based on state haven't come up.
-  if (!HasGlass() &&
+  if (IsVistaOrLater() && !HasGlass() &&
       (mWindowType == eWindowType_popup && !IsPopupWithTitleBar() &&
        (mPopupType == ePopupTypeTooltip || mPopupType == ePopupTypePanel))) {
     HRGN hRgn = nullptr;
@@ -2073,7 +2080,13 @@ nsWindow::SetSizeMode(nsSizeMode aMode)
         break;
 
       case nsSizeMode_Minimized :
-        mode = SW_MINIMIZE;
+        // Using SW_SHOWMINIMIZED prevents the working set from being trimmed but
+        // keeps the window active in the tray. So after the window is minimized,
+        // windows will fire WM_WINDOWPOSCHANGED (OnWindowPosChanged) at which point
+        // we will do some additional processing to get the active window set right.
+        // If sTrimOnMinimize is set, we let windows handle minimization normally
+        // using SW_MINIMIZE.
+        mode = sTrimOnMinimize ? SW_MINIMIZE : SW_SHOWMINIMIZED;
         break;
 
       default :
@@ -5815,6 +5828,12 @@ nsWindow::ProcessMessage(UINT msg, WPARAM& wParam, LPARAM& lParam,
     case WM_SYSCOMMAND:
     {
       WPARAM filteredWParam = (wParam &0xFFF0);
+      // prevent Windows from trimming the working set. bug 76831
+      if (!sTrimOnMinimize && filteredWParam == SC_MINIMIZE) {
+        ::ShowWindow(mWnd, SW_SHOWMINIMIZED);
+        result = true;
+      }
+
       if (mSizeMode == nsSizeMode_Fullscreen &&
           filteredWParam == SC_RESTORE &&
           GetCurrentShowCmd(mWnd) != SW_SHOWMINIMIZED) {
@@ -6432,6 +6451,14 @@ void nsWindow::OnWindowPosChanged(WINDOWPOS* wp)
     else
       mSizeMode = nsSizeMode_Normal;
 
+    // If !sTrimOnMinimize, we minimize windows using SW_SHOWMINIMIZED (See
+    // SetSizeMode for internal calls, and WM_SYSCOMMAND for external). This
+    // prevents the working set from being trimmed but keeps the window active.
+    // After the window is minimized, we need to do some touch up work on the
+    // active window. (bugs 76831 & 499816)
+    if (!sTrimOnMinimize && nsSizeMode_Minimized == mSizeMode)
+      ActivateOtherWindowHelper(mWnd);
+
 #ifdef WINSTATE_DEBUG_OUTPUT
     switch (mSizeMode) {
       case nsSizeMode_Normal:
@@ -6552,6 +6579,31 @@ void nsWindow::OnWindowPosChanged(WINDOWPOS* wp)
   }
 }
 
+// static
+void nsWindow::ActivateOtherWindowHelper(HWND aWnd)
+{
+  // Find the next window that is enabled, visible, and not minimized.
+  HWND hwndBelow = ::GetNextWindow(aWnd, GW_HWNDNEXT);
+  while (hwndBelow && (!::IsWindowEnabled(hwndBelow) || !::IsWindowVisible(hwndBelow) ||
+                       ::IsIconic(hwndBelow))) {
+    hwndBelow = ::GetNextWindow(hwndBelow, GW_HWNDNEXT);
+  }
+
+  // Push ourselves to the bottom of the stack, then activate the
+  // next window.
+  ::SetWindowPos(aWnd, HWND_BOTTOM, 0, 0, 0, 0,
+                 SWP_NOACTIVATE | SWP_NOMOVE | SWP_NOSIZE);
+  if (hwndBelow)
+    ::SetForegroundWindow(hwndBelow);
+
+  // Play the minimize sound while we're here, since that is also
+  // forgotten when we use SW_SHOWMINIMIZED.
+  nsCOMPtr<nsISound> sound(do_CreateInstance("@mozilla.org/sound;1"));
+  if (sound) {
+    sound->PlaySystemSound(NS_LITERAL_STRING("Minimize"));
+  }
+}
+
 void nsWindow::OnWindowPosChanging(LPWINDOWPOS& info)
 {
   // Update non-client margins if the frame size is changing, and let the
diff --git a/widget/windows/nsWindow.h b/widget/windows/nsWindow.h
index 199500e9c..248978bd7 100644
--- a/widget/windows/nsWindow.h
+++ b/widget/windows/nsWindow.h
@@ -486,6 +486,7 @@ protected:
                                               bool aIntersectWithExisting) override;
   nsIntRegion             GetRegionToPaint(bool aForceFullRepaint,
                                            PAINTSTRUCT ps, HDC aDC);
+  static void             ActivateOtherWindowHelper(HWND aWnd);
   void                    ClearCachedResources();
   nsIWidgetListener*      GetPaintListener();
 
@@ -551,7 +552,7 @@ protected:
   static bool           sJustGotDeactivate;
   static bool           sJustGotActivate;
   static bool           sIsInMouseCapture;
-  static bool           sHaveInitializedPrefs;
+  static int            sTrimOnMinimize;
 
   // Always use the helper method to read this property.  See bug 603793.
   static TriStateBool   sHasBogusPopupsDropShadowOnMultiMonitor;
diff --git a/xpcom/build/XPCOMInit.cpp b/xpcom/build/XPCOMInit.cpp
index 6ead5cdc7..c72ea48d7 100644
--- a/xpcom/build/XPCOMInit.cpp
+++ b/xpcom/build/XPCOMInit.cpp
@@ -111,6 +111,7 @@ extern nsresult nsStringInputStreamConstructor(nsISupports*, REFNSIID, void**);
 #include "SpecialSystemDirectory.h"
 
 #if defined(XP_WIN)
+#include "mozilla/WindowsVersion.h"
 #include "nsWindowsRegKey.h"
 #endif
 
@@ -583,6 +584,8 @@ NS_InitXPCOM2(nsIServiceManager** aResult,
 
   NS_StartupLocalFile();
 
+  StartupSpecialSystemDirectory();
+
   nsDirectoryService::RealInit();
 
   bool value;
diff --git a/xpcom/glue/nsThreadUtils.cpp b/xpcom/glue/nsThreadUtils.cpp
index 2f2383fd8..287ada7be 100644
--- a/xpcom/glue/nsThreadUtils.cpp
+++ b/xpcom/glue/nsThreadUtils.cpp
@@ -20,10 +20,15 @@
 
 #ifdef XP_WIN
 #include <windows.h>
+#include "mozilla/WindowsVersion.h"
+using mozilla::IsVistaOrLater;
 #elif defined(XP_MACOSX)
 #include <sys/resource.h>
 #endif
 
+#include <pratom.h>
+#include <prthread.h>
+
 using namespace mozilla;
 
 #ifndef XPCOM_GLUE_AVOID_NSPR
@@ -438,7 +443,8 @@ nsThreadPoolNaming::SetThreadPoolName(const nsACString& aPoolName,
 nsAutoLowPriorityIO::nsAutoLowPriorityIO()
 {
 #if defined(XP_WIN)
-  lowIOPrioritySet = SetThreadPriority(GetCurrentThread(),
+  lowIOPrioritySet = IsVistaOrLater() &&
+                     SetThreadPriority(GetCurrentThread(),
                                        THREAD_MODE_BACKGROUND_BEGIN);
 #elif defined(XP_MACOSX)
   oldPriority = getiopolicy_np(IOPOL_TYPE_DISK, IOPOL_SCOPE_THREAD);
diff --git a/xpcom/io/SpecialSystemDirectory.cpp b/xpcom/io/SpecialSystemDirectory.cpp
index ab65d38f9..9ce8eb85b 100644
--- a/xpcom/io/SpecialSystemDirectory.cpp
+++ b/xpcom/io/SpecialSystemDirectory.cpp
@@ -12,6 +12,7 @@
 #if defined(XP_WIN)
 
 #include <windows.h>
+#include <shlobj.h>
 #include <stdlib.h>
 #include <stdio.h>
 #include <string.h>
@@ -19,6 +20,9 @@
 #include <shlobj.h>
 #include <knownfolders.h>
 #include <guiddef.h>
+#include "mozilla/WindowsVersion.h"
+
+using mozilla::IsWin7OrLater;
 
 #elif defined(XP_UNIX)
 
@@ -47,17 +51,40 @@
 #endif
 #endif
 
+#ifdef XP_WIN
+typedef HRESULT (WINAPI* nsGetKnownFolderPath)(GUID& rfid,
+                                               DWORD dwFlags,
+                                               HANDLE hToken,
+                                               PWSTR* ppszPath);
+
+static nsGetKnownFolderPath gGetKnownFolderPath = nullptr;
+#endif
+
+void
+StartupSpecialSystemDirectory()
+{
+#if defined (XP_WIN)
+  // SHGetKnownFolderPath is only available on Windows Vista
+  // so that we need to use GetProcAddress to get the pointer.
+  HMODULE hShell32DLLInst = GetModuleHandleW(L"shell32.dll");
+  if (hShell32DLLInst) {
+    gGetKnownFolderPath = (nsGetKnownFolderPath)
+      GetProcAddress(hShell32DLLInst, "SHGetKnownFolderPath");
+  }
+#endif
+}
+
 #if defined (XP_WIN)
 
 static nsresult
 GetKnownFolder(GUID* aGuid, nsIFile** aFile)
 {
-  if (!aGuid) {
+  if (!aGuid || !gGetKnownFolderPath) {
     return NS_ERROR_FAILURE;
   }
 
   PWSTR path = nullptr;
-  SHGetKnownFolderPath(*aGuid, 0, nullptr, &path);
+  gGetKnownFolderPath(*aGuid, 0, nullptr, &path);
 
   if (!path) {
     return NS_ERROR_FAILURE;
@@ -112,13 +139,19 @@ SHLoadLibraryFromKnownFolder(REFKNOWNFOLDERID aFolderId, DWORD aMode,
 }
 
 /*
- * Return the default save-to location for the Windows Library passed in
- * through aFolderId.
+ * Check to see if we're on Win7 and up, and if so, returns the default
+ * save-to location for the Windows Library passed in through aFolderId.
+ * Otherwise falls back on pre-win7 GetWindowsFolder.
  */
 static nsresult
 GetLibrarySaveToPath(int aFallbackFolderId, REFKNOWNFOLDERID aFolderId,
                      nsIFile** aFile)
 {
+  // Skip off checking for library support if the os is Vista or lower.
+  if (!IsWin7OrLater()) {
+    return GetWindowsFolder(aFallbackFolderId, aFile);
+  }
+
   RefPtr<IShellLibrary> shellLib;
   RefPtr<IShellItem> savePath;
   HRESULT hr =
@@ -707,6 +740,8 @@ GetSpecialSystemDirectory(SystemDirectories aSystemSystemDirectory,
     }
 #if defined(MOZ_CONTENT_SANDBOX)
     case Win_LocalAppdataLow: {
+      // This should only really fail on versions pre-Vista, in which case this
+      // shouldn't have been used in the first place.
       GUID localAppDataLowGuid = FOLDERID_LocalAppDataLow;
       return GetKnownFolder(&localAppDataLowGuid, aFile);
     }
diff --git a/xpcom/io/SpecialSystemDirectory.h b/xpcom/io/SpecialSystemDirectory.h
index 7c7f8fa42..dd3d88379 100644
--- a/xpcom/io/SpecialSystemDirectory.h
+++ b/xpcom/io/SpecialSystemDirectory.h
@@ -16,6 +16,9 @@
 #include "prenv.h"
 #endif
 
+extern void StartupSpecialSystemDirectory();
+
+
 enum SystemDirectories {
   OS_DriveDirectory         =   1,
   OS_TemporaryDirectory     =   2,
diff --git a/xpcom/io/nsLocalFileWin.cpp b/xpcom/io/nsLocalFileWin.cpp
index 66e267807..3a7e570f5 100644
--- a/xpcom/io/nsLocalFileWin.cpp
+++ b/xpcom/io/nsLocalFileWin.cpp
@@ -7,6 +7,7 @@
 #include "mozilla/ArrayUtils.h"
 #include "mozilla/DebugOnly.h"
 #include "mozilla/UniquePtrExtensions.h"
+#include "mozilla/WindowsVersion.h"
 
 #include "nsCOMPtr.h"
 #include "nsAutoPtr.h"
@@ -1969,11 +1970,13 @@ nsLocalFile::CopySingleFile(nsIFile* aSourceFile, nsIFile* aDestParent,
   // So we only use COPY_FILE_NO_BUFFERING when we have a remote drive.
   int copyOK;
   DWORD dwCopyFlags = COPY_FILE_ALLOW_DECRYPTED_DESTINATION;
-  bool path1Remote, path2Remote;
-  if (!IsRemoteFilePath(filePath.get(), path1Remote) ||
-      !IsRemoteFilePath(destPath.get(), path2Remote) ||
-      path1Remote || path2Remote) {
-    dwCopyFlags |= COPY_FILE_NO_BUFFERING;
+  if (IsVistaOrLater()) {
+    bool path1Remote, path2Remote;
+    if (!IsRemoteFilePath(filePath.get(), path1Remote) ||
+        !IsRemoteFilePath(destPath.get(), path2Remote) ||
+        path1Remote || path2Remote) {
+      dwCopyFlags |= COPY_FILE_NO_BUFFERING;
+    }
   }
 
   if (!move) {
