Skip to content

Commit

Permalink
Backed out changeset c0bf6e0b8f1d (bug 1173199) for build bustage CLO…
Browse files Browse the repository at this point in the history
…SED TREE
  • Loading branch information
KWierso committed Jul 28, 2016
1 parent f1f2ab3 commit 12654f9
Show file tree
Hide file tree
Showing 35 changed files with 28 additions and 898 deletions.
6 changes: 3 additions & 3 deletions dom/base/Element.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1258,7 +1258,7 @@ Element::GetAttributeNS(const nsAString& aNamespaceURI,
nsAString& aReturn)
{
int32_t nsid =
nsContentUtils::NameSpaceManager()->GetNameSpaceID(aNamespaceURI, OwnerDoc());
nsContentUtils::NameSpaceManager()->GetNameSpaceID(aNamespaceURI);

if (nsid == kNameSpaceID_Unknown) {
// Unknown namespace means no attribute.
Expand Down Expand Up @@ -1300,7 +1300,7 @@ Element::RemoveAttributeNS(const nsAString& aNamespaceURI,
{
nsCOMPtr<nsIAtom> name = NS_Atomize(aLocalName);
int32_t nsid =
nsContentUtils::NameSpaceManager()->GetNameSpaceID(aNamespaceURI, OwnerDoc());
nsContentUtils::NameSpaceManager()->GetNameSpaceID(aNamespaceURI);

if (nsid == kNameSpaceID_Unknown) {
// If the namespace ID is unknown, it means there can't possibly be an
Expand Down Expand Up @@ -1377,7 +1377,7 @@ Element::HasAttributeNS(const nsAString& aNamespaceURI,
const nsAString& aLocalName) const
{
int32_t nsid =
nsContentUtils::NameSpaceManager()->GetNameSpaceID(aNamespaceURI, OwnerDoc());
nsContentUtils::NameSpaceManager()->GetNameSpaceID(aNamespaceURI);

if (nsid == kNameSpaceID_Unknown) {
// Unknown namespace means no attr...
Expand Down
3 changes: 1 addition & 2 deletions dom/base/NameSpaceConstants.h
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,6 @@ static const int32_t kNameSpaceID_None = 0;
#define kNameSpaceID_RDF 8
#define kNameSpaceID_XUL 9
#define kNameSpaceID_SVG 10
#define kNameSpaceID_disabled_MathML 11
#define kNameSpaceID_LastBuiltin 11 // last 'built-in' namespace
#define kNameSpaceID_LastBuiltin 10 // last 'built-in' namespace

#endif // mozilla_dom_NameSpaceConstants_h__
3 changes: 1 addition & 2 deletions dom/base/NodeInfo.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -197,8 +197,7 @@ bool
NodeInfo::NamespaceEquals(const nsAString& aNamespaceURI) const
{
int32_t nsid =
nsContentUtils::NameSpaceManager()->GetNameSpaceID(aNamespaceURI,
mOwnerManager->GetDocument());
nsContentUtils::NameSpaceManager()->GetNameSpaceID(aNamespaceURI);

return mozilla::dom::NodeInfo::NamespaceEquals(nsid);
}
Expand Down
3 changes: 1 addition & 2 deletions dom/base/nsContentUtils.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2892,8 +2892,7 @@ nsContentUtils::SplitQName(const nsIContent* aNamespaceResolver,
nameSpace);
NS_ENSURE_SUCCESS(rv, rv);

*aNamespace = NameSpaceManager()->GetNameSpaceID(nameSpace,
aNamespaceResolver->OwnerDoc());
*aNamespace = NameSpaceManager()->GetNameSpaceID(nameSpace);
if (*aNamespace == kNameSpaceID_Unknown)
return NS_ERROR_FAILURE;

Expand Down
3 changes: 1 addition & 2 deletions dom/base/nsDOMAttributeMap.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -446,8 +446,7 @@ nsDOMAttributeMap::GetAttrNodeInfo(const nsAString& aNamespaceURI,

if (!aNamespaceURI.IsEmpty()) {
nameSpaceID =
nsContentUtils::NameSpaceManager()->GetNameSpaceID(aNamespaceURI,
mContent->OwnerDoc());
nsContentUtils::NameSpaceManager()->GetNameSpaceID(aNamespaceURI);

if (nameSpaceID == kNameSpaceID_Unknown) {
return nullptr;
Expand Down
80 changes: 5 additions & 75 deletions dom/base/nsNameSpaceManager.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -15,25 +15,17 @@
#include "mozilla/dom/NodeInfo.h"
#include "nsCOMArray.h"
#include "nsContentCreatorFunctions.h"
#include "nsContentUtils.h"
#include "nsGkAtoms.h"
#include "nsIDocument.h"
#include "nsString.h"
#include "mozilla/dom/NodeInfo.h"
#include "mozilla/ClearOnShutdown.h"
#include "mozilla/dom/XBLChildrenElement.h"
#include "mozilla/dom/Element.h"
#include "mozilla/Preferences.h"

using namespace mozilla;
using namespace mozilla::dom;

static const char* kPrefMathMLDisabled = "mathml.disabled";
static const char* kObservedPrefs[] = {
kPrefMathMLDisabled,
nullptr
};
StaticRefPtr<nsNameSpaceManager> nsNameSpaceManager::sInstance;
StaticAutoPtr<nsNameSpaceManager> nsNameSpaceManager::sInstance;

/* static */ nsNameSpaceManager*
nsNameSpaceManager::GetInstance() {
Expand All @@ -57,14 +49,6 @@ bool nsNameSpaceManager::Init()
rv = AddNameSpace(dont_AddRef(uri), id); \
NS_ENSURE_SUCCESS(rv, false)

#define REGISTER_DISABLED_NAMESPACE(uri, id) \
rv = AddDisabledNameSpace(dont_AddRef(uri), id); \
NS_ENSURE_SUCCESS(rv, false)

mozilla::Preferences::AddStrongObservers(this, kObservedPrefs);
mMathMLDisabled = mozilla::Preferences::GetBool(kPrefMathMLDisabled);


// Need to be ordered according to ID.
REGISTER_NAMESPACE(nsGkAtoms::nsuri_xmlns, kNameSpaceID_XMLNS);
REGISTER_NAMESPACE(nsGkAtoms::nsuri_xml, kNameSpaceID_XML);
Expand All @@ -76,10 +60,8 @@ bool nsNameSpaceManager::Init()
REGISTER_NAMESPACE(nsGkAtoms::nsuri_rdf, kNameSpaceID_RDF);
REGISTER_NAMESPACE(nsGkAtoms::nsuri_xul, kNameSpaceID_XUL);
REGISTER_NAMESPACE(nsGkAtoms::nsuri_svg, kNameSpaceID_SVG);
REGISTER_DISABLED_NAMESPACE(nsGkAtoms::nsuri_mathml, kNameSpaceID_disabled_MathML);

#undef REGISTER_NAMESPACE
#undef REGISTER_DISABLED_NAMESPACE

return true;
}
Expand Down Expand Up @@ -128,32 +110,24 @@ nsNameSpaceManager::GetNameSpaceURI(int32_t aNameSpaceID, nsAString& aURI)
}

int32_t
nsNameSpaceManager::GetNameSpaceID(const nsAString& aURI,
nsIDocument* aDocument)
nsNameSpaceManager::GetNameSpaceID(const nsAString& aURI)
{
if (aURI.IsEmpty()) {
return kNameSpaceID_None; // xmlns="", see bug 75700 for details
}

nsCOMPtr<nsIAtom> atom = NS_Atomize(aURI);
return GetNameSpaceID(atom, aDocument);
return GetNameSpaceID(atom);
}

int32_t
nsNameSpaceManager::GetNameSpaceID(nsIAtom* aURI,
nsIDocument* aDocument)
nsNameSpaceManager::GetNameSpaceID(nsIAtom* aURI)
{
if (aURI == nsGkAtoms::_empty) {
return kNameSpaceID_None; // xmlns="", see bug 75700 for details
}

int32_t nameSpaceID;
if (mMathMLDisabled &&
mDisabledURIToIDTable.Get(aURI, &nameSpaceID) &&
!nsContentUtils::IsChromeDoc(aDocument)) {
NS_POSTCONDITION(nameSpaceID >= 0, "Bogus namespace ID");
return nameSpaceID;
}
if (mURIToIDTable.Get(aURI, &nameSpaceID)) {
NS_POSTCONDITION(nameSpaceID >= 0, "Bogus namespace ID");
return nameSpaceID;
Expand All @@ -179,19 +153,7 @@ NS_NewElement(Element** aResult,
}
#endif
if (ns == kNameSpaceID_MathML) {
// If the mathml.disabled pref. is true, convert all MathML nodes into
// disabled MathML nodes by swapping the namespace.
nsNameSpaceManager* nsmgr = nsNameSpaceManager::GetInstance();
if ((nsmgr && !nsmgr->mMathMLDisabled) ||
nsContentUtils::IsChromeDoc(ni->GetDocument())) {
return NS_NewMathMLElement(aResult, ni.forget());
}

RefPtr<mozilla::dom::NodeInfo> genericXMLNI =
ni->NodeInfoManager()->
GetNodeInfo(ni->NameAtom(), ni->GetPrefixAtom(),
kNameSpaceID_disabled_MathML, ni->NodeType(), ni->GetExtraName());
return NS_NewXMLElement(aResult, genericXMLNI.forget());
return NS_NewMathMLElement(aResult, ni.forget());
}
if (ns == kNameSpaceID_SVG) {
return NS_NewSVGElement(aResult, ni.forget(), aFromParser);
Expand Down Expand Up @@ -233,35 +195,3 @@ nsresult nsNameSpaceManager::AddNameSpace(already_AddRefed<nsIAtom> aURI,

return NS_OK;
}

nsresult
nsNameSpaceManager::AddDisabledNameSpace(already_AddRefed<nsIAtom> aURI,
const int32_t aNameSpaceID)
{
nsCOMPtr<nsIAtom> uri = aURI;
if (aNameSpaceID < 0) {
// We've wrapped... Can't do anything else here; just bail.
return NS_ERROR_OUT_OF_MEMORY;
}

NS_ASSERTION(aNameSpaceID - 1 == (int32_t) mURIArray.Length(),
"BAD! AddDisabledNameSpace not called in right order!");

mURIArray.AppendElement(uri.forget());
mDisabledURIToIDTable.Put(mURIArray.LastElement(), aNameSpaceID);

return NS_OK;
}

// nsISupports
NS_IMPL_ISUPPORTS(nsNameSpaceManager,
nsIObserver)

// nsIObserver
NS_IMETHODIMP
nsNameSpaceManager::Observe(nsISupports* aObject, const char* aTopic,
const char16_t* aMessage)
{
mMathMLDisabled = mozilla::Preferences::GetBool(kPrefMathMLDisabled);
return NS_OK;
}
26 changes: 8 additions & 18 deletions dom/base/nsNameSpaceManager.h
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,6 @@
#include "nsDataHashtable.h"
#include "nsHashKeys.h"
#include "nsIAtom.h"
#include "nsIDocument.h"
#include "nsIObserver.h"
#include "nsTArray.h"

#include "mozilla/StaticPtr.h"
Expand All @@ -32,42 +30,34 @@ class nsAString;
*
*/

class nsNameSpaceManager final : public nsIObserver
class nsNameSpaceManager final
{
public:
NS_DECL_ISUPPORTS
NS_DECL_NSIOBSERVER
virtual nsresult RegisterNameSpace(const nsAString& aURI,
int32_t& aNameSpaceID);
~nsNameSpaceManager() {}

virtual nsresult GetNameSpaceURI(int32_t aNameSpaceID, nsAString& aURI);
nsresult RegisterNameSpace(const nsAString& aURI, int32_t& aNameSpaceID);

nsresult GetNameSpaceURI(int32_t aNameSpaceID, nsAString& aURI);

nsIAtom* NameSpaceURIAtom(int32_t aNameSpaceID) {
MOZ_ASSERT(aNameSpaceID > 0 && (int64_t) aNameSpaceID <= (int64_t) mURIArray.Length());
return mURIArray.ElementAt(aNameSpaceID - 1); // id is index + 1
}

int32_t GetNameSpaceID(const nsAString& aURI,
nsIDocument* aDocument);
int32_t GetNameSpaceID(nsIAtom* aURI,
nsIDocument* aDocument);
int32_t GetNameSpaceID(const nsAString& aURI);
int32_t GetNameSpaceID(nsIAtom* aURI);

bool HasElementCreator(int32_t aNameSpaceID);

static nsNameSpaceManager* GetInstance();
bool mMathMLDisabled;

private:
bool Init();
nsresult AddNameSpace(already_AddRefed<nsIAtom> aURI, const int32_t aNameSpaceID);
nsresult AddDisabledNameSpace(already_AddRefed<nsIAtom> aURI, const int32_t aNameSpaceID);
~nsNameSpaceManager() {};

nsDataHashtable<nsISupportsHashKey, int32_t> mURIToIDTable;
nsDataHashtable<nsISupportsHashKey, int32_t> mDisabledURIToIDTable;
nsTArray<nsCOMPtr<nsIAtom>> mURIArray;

static mozilla::StaticRefPtr<nsNameSpaceManager> sInstance;
static mozilla::StaticAutoPtr<nsNameSpaceManager> sInstance;
};

#endif // nsNameSpaceManager_h___
9 changes: 0 additions & 9 deletions dom/svg/SVGAnimationElement.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -348,15 +348,6 @@ SVGAnimationElement::IsNodeOfType(uint32_t aFlags) const
return !(aFlags & ~(eCONTENT | eANIMATION));
}

//----------------------------------------------------------------------
// SVGTests methods

bool
SVGAnimationElement::IsInChromeDoc() const
{
return nsContentUtils::IsChromeDoc(OwnerDoc());
}

//----------------------------------------------------------------------
// SVG utility methods

Expand Down
4 changes: 0 additions & 4 deletions dom/svg/SVGAnimationElement.h
Original file line number Diff line number Diff line change
Expand Up @@ -86,10 +86,6 @@ class SVGAnimationElement : public SVGAnimationElementBase,
void EndElement(ErrorResult& rv) { EndElementAt(0.f, rv); }
void EndElementAt(float offset, ErrorResult& rv);

// SVGTests
virtual bool IsInChromeDoc() const override;


protected:
// nsSVGElement overrides

Expand Down
6 changes: 0 additions & 6 deletions dom/svg/SVGGraphicsElement.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -31,11 +31,5 @@ SVGGraphicsElement::~SVGGraphicsElement()
{
}

bool
SVGGraphicsElement::IsInChromeDoc() const
{
return nsContentUtils::IsChromeDoc(OwnerDoc());
}

} // namespace dom
} // namespace mozilla
2 changes: 0 additions & 2 deletions dom/svg/SVGGraphicsElement.h
Original file line number Diff line number Diff line change
Expand Up @@ -25,8 +25,6 @@ class SVGGraphicsElement : public SVGGraphicsElementBase,
public:
// interfaces:
NS_DECL_ISUPPORTS_INHERITED

bool IsInChromeDoc() const override;
};

} // namespace dom
Expand Down
10 changes: 0 additions & 10 deletions dom/svg/SVGSymbolElement.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -80,16 +80,6 @@ SVGSymbolElement::IsAttributeMapped(const nsIAtom* name) const
SVGSymbolElementBase::IsAttributeMapped(name);
}

//----------------------------------------------------------------------
// SVGTests methods

bool
SVGSymbolElement::IsInChromeDoc() const
{
return nsContentUtils::IsChromeDoc(OwnerDoc());
}


//----------------------------------------------------------------------
// nsSVGElement methods

Expand Down
3 changes: 0 additions & 3 deletions dom/svg/SVGSymbolElement.h
Original file line number Diff line number Diff line change
Expand Up @@ -44,9 +44,6 @@ class SVGSymbolElement final : public SVGSymbolElementBase,
already_AddRefed<SVGAnimatedRect> ViewBox();
already_AddRefed<DOMSVGAnimatedPreserveAspectRatio> PreserveAspectRatio();

// SVGTests
bool IsInChromeDoc() const override;

protected:
virtual nsSVGViewBox *GetViewBox() override;
virtual SVGAnimatedPreserveAspectRatio *GetPreserveAspectRatio() override;
Expand Down
4 changes: 2 additions & 2 deletions dom/svg/SVGTests.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ SVGTests::SystemLanguage()
bool
SVGTests::HasExtension(const nsAString& aExtension)
{
return nsSVGFeatures::HasExtension(aExtension, IsInChromeDoc());
return nsSVGFeatures::HasExtension(aExtension);
}

bool
Expand Down Expand Up @@ -139,7 +139,7 @@ SVGTests::PassesConditionalProcessingTests(const nsString *aAcceptLangs) const
return false;
}
for (uint32_t i = 0; i < mStringListAttributes[EXTENSIONS].Length(); i++) {
if (!nsSVGFeatures::HasExtension(mStringListAttributes[EXTENSIONS][i], IsInChromeDoc())) {
if (!nsSVGFeatures::HasExtension(mStringListAttributes[EXTENSIONS][i])) {
return false;
}
}
Expand Down
2 changes: 0 additions & 2 deletions dom/svg/SVGTests.h
Original file line number Diff line number Diff line change
Expand Up @@ -95,8 +95,6 @@ class SVGTests : public nsISupports
already_AddRefed<DOMSVGStringList> SystemLanguage();
bool HasExtension(const nsAString& aExtension);

virtual bool IsInChromeDoc() const = 0;

protected:
virtual ~SVGTests() {}

Expand Down
8 changes: 2 additions & 6 deletions dom/svg/nsSVGFeatures.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,6 @@
#include "nsSVGFeatures.h"
#include "nsIContent.h"
#include "nsIDocument.h"
#include "nsNameSpaceManager.h"
#include "mozilla/Preferences.h"

using namespace mozilla;
Expand Down Expand Up @@ -43,14 +42,11 @@ nsSVGFeatures::HasFeature(nsISupports* aObject, const nsAString& aFeature)
}

/*static*/ bool
nsSVGFeatures::HasExtension(const nsAString& aExtension, const bool aIsInChrome)
nsSVGFeatures::HasExtension(const nsAString& aExtension)
{
#define SVG_SUPPORTED_EXTENSION(str) if (aExtension.EqualsLiteral(str)) return true;
SVG_SUPPORTED_EXTENSION("http://www.w3.org/1999/xhtml")
nsNameSpaceManager* nameSpaceManager = nsNameSpaceManager::GetInstance();
if (aIsInChrome || !nameSpaceManager->mMathMLDisabled) {
SVG_SUPPORTED_EXTENSION("http://www.w3.org/1998/Math/MathML")
}
SVG_SUPPORTED_EXTENSION("http://www.w3.org/1998/Math/MathML")
#undef SVG_SUPPORTED_EXTENSION

return false;
Expand Down
Loading

0 comments on commit 12654f9

Please sign in to comment.