Bug 617448 - remove svg.enabled as the browser now uses SVG and fails to start if it's disabled r+a=roc
authorRobert Longson <longsonr@gmail.com>
Wed, 08 Dec 2010 21:25:06 +0000
changeset 58951 9e3b27acb9efa02ef95a5590d09664fc1b0c1aeb
parent 58950 11e328a49e0a3ac415e683f28165625875461900
child 58952 670e94973cab4940fcf51863ffa148b68da83040
push id17477
push userdholbert@mozilla.com
push dateThu, 09 Dec 2010 08:47:48 +0000
treeherdermozilla-central@f4eb46861b64 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
bugs617448
milestone2.0b8pre
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Bug 617448 - remove svg.enabled as the browser now uses SVG and fails to start if it's disabled r+a=roc
content/base/src/nsNameSpaceManager.cpp
content/svg/content/src/nsSVGElementFactory.cpp
content/svg/content/src/nsSVGFeatures.cpp
layout/base/nsCSSFrameConstructor.cpp
layout/build/nsContentDLF.cpp
layout/build/nsLayoutStatics.cpp
layout/svg/base/src/nsSVGUtils.cpp
layout/svg/base/src/nsSVGUtils.h
modules/libpref/src/init/all.js
--- a/content/base/src/nsNameSpaceManager.cpp
+++ b/content/base/src/nsNameSpaceManager.cpp
@@ -54,20 +54,16 @@
 #include "nsIServiceManager.h"
 #include "nsIXTFService.h"
 #include "nsContentUtils.h"
 static NS_DEFINE_CID(kXTFServiceCID, NS_XTFSERVICE_CID);
 #endif
 
 using namespace mozilla::dom;
 
-#ifdef MOZ_SVG
-PRBool NS_SVGEnabled();
-#endif
-
 #define kXMLNSNameSpaceURI "http://www.w3.org/2000/xmlns/"
 #define kXMLNameSpaceURI "http://www.w3.org/XML/1998/namespace"
 #define kXHTMLNameSpaceURI "http://www.w3.org/1999/xhtml"
 #define kXLinkNameSpaceURI "http://www.w3.org/1999/xlink"
 #define kXSLTNameSpaceURI "http://www.w3.org/1999/XSL/Transform"
 #define kXBLNameSpaceURI "http://www.mozilla.org/xbl"
 #define kMathMLNameSpaceURI "http://www.w3.org/1998/Math/MathML"
 #define kRDFNameSpaceURI "http://www.w3.org/1999/02/22-rdf-syntax-ns#"
@@ -239,21 +235,19 @@ NS_NewElement(nsIContent** aResult, PRIn
     return NS_NewXULElement(aResult, aNodeInfo);
   }
 #endif
 #ifdef MOZ_MATHML
   if (aElementType == kNameSpaceID_MathML) {
     return NS_NewMathMLElement(aResult, aNodeInfo);
   }
 #endif
-#ifdef MOZ_SVG
-  if (aElementType == kNameSpaceID_SVG && NS_SVGEnabled()) {
+  if (aElementType == kNameSpaceID_SVG) {
     return NS_NewSVGElement(aResult, aNodeInfo, aFromParser);
   }
-#endif
   if (aElementType == kNameSpaceID_XMLEvents) {
     return NS_NewXMLEventsElement(aResult, aNodeInfo);
   }
 #ifdef MOZ_XTF
   if (aElementType > kNameSpaceID_LastBuiltin) {
     nsIXTFService* xtfService = nsContentUtils::GetXTFService();
     NS_ASSERTION(xtfService, "could not get xtf service");
     if (xtfService &&
--- a/content/svg/content/src/nsSVGElementFactory.cpp
+++ b/content/svg/content/src/nsSVGElementFactory.cpp
@@ -240,19 +240,16 @@ nsresult
 NS_NewSVGSetElement(nsIContent **aResult,
                     already_AddRefed<nsINodeInfo> aNodeInfo);
 #endif // MOZ_SMIL
 
 nsresult
 NS_NewSVGElement(nsIContent** aResult, already_AddRefed<nsINodeInfo> aNodeInfo,
                  FromParser aFromParser)
 {
-  NS_PRECONDITION(NS_SVGEnabled(),
-                  "creating an SVG element while SVG disabled");
-
   static const char kSVGStyleSheetURI[] = "resource://gre/res/svg.css";
 
   // this bit of code is to load svg.css on demand
   nsIDocument *doc = aNodeInfo.get()->GetDocument();
   if (doc)
     doc->EnsureCatalogStyleSheet(kSVGStyleSheetURI);
 
   nsIAtom *name = aNodeInfo.get()->NameAtom();
--- a/content/svg/content/src/nsSVGFeatures.cpp
+++ b/content/svg/content/src/nsSVGFeatures.cpp
@@ -53,20 +53,16 @@
 #include "nsWhitespaceTokenizer.h"
 #include "nsCharSeparatedTokenizer.h"
 #include "nsStyleUtil.h"
 #include "nsSVGUtils.h"
 
 /*static*/ PRBool
 nsSVGFeatures::HaveFeature(const nsAString& aFeature)
 {
-  if (!NS_SVGEnabled()) {
-    return PR_FALSE;
-  }
-
 #define SVG_SUPPORTED_FEATURE(str) if (aFeature.Equals(NS_LITERAL_STRING(str).get())) return PR_TRUE;
 #define SVG_UNSUPPORTED_FEATURE(str)
 #include "nsSVGFeaturesList.h"
 #undef SVG_SUPPORTED_FEATURE
 #undef SVG_UNSUPPORTED_FEATURE
   return PR_FALSE;
 }
 
--- a/layout/base/nsCSSFrameConstructor.cpp
+++ b/layout/base/nsCSSFrameConstructor.cpp
@@ -139,41 +139,36 @@
 
 #include "nsIXBLService.h"
 
 #undef NOISY_FIRST_LETTER
 
 #ifdef MOZ_MATHML
 #include "nsMathMLParts.h"
 #endif
-#ifdef MOZ_SVG
 #include "nsSVGFeatures.h"
 #include "nsSVGEffects.h"
 #include "nsSVGUtils.h"
 #include "nsSVGOuterSVGFrame.h"
-#endif
 
 #include "nsRefreshDriver.h"
 
 using namespace mozilla;
 using namespace mozilla::dom;
 
 nsIFrame*
 NS_NewHTMLCanvasFrame (nsIPresShell* aPresShell, nsStyleContext* aContext);
 
 #if defined(MOZ_MEDIA)
 nsIFrame*
 NS_NewHTMLVideoFrame (nsIPresShell* aPresShell, nsStyleContext* aContext);
 #endif
 
-#ifdef MOZ_SVG
 #include "nsSVGTextContainerFrame.h"
 
-PRBool
-NS_SVGEnabled();
 nsIFrame*
 NS_NewSVGOuterSVGFrame(nsIPresShell* aPresShell, nsStyleContext* aContext);
 nsIFrame*
 NS_NewSVGInnerSVGFrame(nsIPresShell* aPresShell, nsStyleContext* aContext);
 nsIFrame*
 NS_NewSVGPathGeometryFrame(nsIPresShell* aPresShell, nsStyleContext* aContext);
 nsIFrame*
 NS_NewSVGGFrame(nsIPresShell* aPresShell, nsStyleContext* aContext);
@@ -212,17 +207,16 @@ NS_NewSVGTextPathFrame(nsIPresShell* aPr
 nsIFrame*
 NS_NewSVGFilterFrame(nsIPresShell *aPresShell, nsStyleContext* aContext);
 nsIFrame*
 NS_NewSVGPatternFrame(nsIPresShell* aPresShell, nsStyleContext* aContext);
 nsIFrame*
 NS_NewSVGMaskFrame(nsIPresShell* aPresShell, nsStyleContext* aContext);
 nsIFrame*
 NS_NewSVGLeafFrame(nsIPresShell* aPresShell, nsStyleContext* aContext);
-#endif
 
 #include "nsIDocument.h"
 #include "nsIDOMElement.h"
 #include "nsIDOMNodeList.h"
 #include "nsIDOMDocument.h"
 #include "nsIDOMDocumentXBL.h"
 #include "nsIScrollable.h"
 #include "nsINodeInfo.h"
@@ -2403,19 +2397,18 @@ nsCSSFrameConstructor::ConstructDocEleme
     }
     InitAndRestoreFrame(state, aDocElement, mDocElementContainingBlock, nsnull,
                         contentFrame);
     *aNewFrame = contentFrame;
     processChildren = PR_TRUE;
   }
   else
 #endif
-#ifdef MOZ_SVG
   if (aDocElement->GetNameSpaceID() == kNameSpaceID_SVG) {
-    if (aDocElement->Tag() == nsGkAtoms::svg && NS_SVGEnabled()) {
+    if (aDocElement->Tag() == nsGkAtoms::svg) {
       contentFrame = NS_NewSVGOuterSVGFrame(mPresShell, styleContext);
       if (NS_UNLIKELY(!contentFrame)) {
         return NS_ERROR_OUT_OF_MEMORY;
       }
       InitAndRestoreFrame(state, aDocElement,
                           state.GetGeometricParent(display,
                                                    mDocElementContainingBlock),
                           nsnull, contentFrame);
@@ -2431,20 +2424,17 @@ nsCSSFrameConstructor::ConstructDocEleme
       *aNewFrame = frameItems.FirstChild();
       processChildren = PR_TRUE;
 
       // See if we need to create a view
       nsHTMLContainerFrame::CreateViewForFrame(contentFrame, PR_FALSE);
     } else {
       return NS_ERROR_FAILURE;
     }
-  }
-  else
-#endif
-  {
+  } else {
     PRBool docElemIsTable = (display->mDisplay == NS_STYLE_DISPLAY_TABLE);
     if (docElemIsTable) {
       // We're going to call the right function ourselves, so no need to give a
       // function to this FrameConstructionData.
 
       // XXXbz on the other hand, if we converted this whole function to
       // FrameConstructionData/Item, then we'd need the right function
       // here... but would probably be able to get away with less code in this
@@ -3366,31 +3356,29 @@ FindAncestorWithGeneratedContentPseudo(n
 #define SIMPLE_FCDATA(_func) FCDATA_DECL(0, _func)
 #define FULL_CTOR_FCDATA(_flags, _func)                     \
   { _flags | FCDATA_FUNC_IS_FULL_CTOR, { nsnull }, _func }
 
 /* static */
 const nsCSSFrameConstructor::FrameConstructionData*
 nsCSSFrameConstructor::FindTextData(nsIFrame* aParentFrame)
 {
-#ifdef MOZ_SVG
   if (aParentFrame && aParentFrame->IsFrameOfType(nsIFrame::eSVG)) {
     nsIFrame *ancestorFrame =
       nsSVGUtils::GetFirstNonAAncestorFrame(aParentFrame);
     if (ancestorFrame) {
       nsSVGTextContainerFrame* metrics = do_QueryFrame(ancestorFrame);
       if (metrics) {
         static const FrameConstructionData sSVGGlyphData =
           SIMPLE_FCDATA(NS_NewSVGGlyphFrame);
         return &sSVGGlyphData;
       }
     }
     return nsnull;
   }
-#endif
 
   static const FrameConstructionData sTextData =
     FCDATA_DECL(FCDATA_IS_LINE_PARTICIPANT, NS_NewTextFrame);
   return &sTextData;
 }
 
 nsresult
 nsCSSFrameConstructor::ConstructTextFrame(const FrameConstructionData* aData,
@@ -3965,25 +3953,22 @@ nsCSSFrameConstructor::GetAnonymousConte
   NS_ENSURE_SUCCESS(rv, rv);
 
   PRUint32 count = aContent.Length();
   for (PRUint32 i=0; i < count; i++) {
     // get our child's content and set its parent to our content
     nsIContent* content = aContent[i];
     NS_ASSERTION(content, "null anonymous content?");
 
-#ifdef MOZ_SVG
     // least-surprise CSS binding until we do the SVG specified
     // cascading rules for <svg:use> - bug 265894
     if (aParent &&
         aParent->NodeInfo()->Equals(nsGkAtoms::use, kNameSpaceID_SVG)) {
       content->SetFlags(NODE_IS_ANONYMOUS);
-    } else
-#endif
-    {
+    } else {
       content->SetNativeAnonymous();
     }
 
     PRBool anonContentIsEditable = content->HasFlag(NODE_IS_EDITABLE);
     rv = content->BindToTree(mDocument, aParent, aParent, PR_TRUE);
     // If the anonymous content creator requested that the content should be
     // editable, honor its request.
     // We need to set the flag on the whole subtree, because existing
@@ -4762,17 +4747,16 @@ nsCSSFrameConstructor::FindMathMLData(ns
     SIMPLE_MATHML_CREATE(semantics_, NS_NewMathMLsemanticsFrame)
   };
 
   return FindDataByTag(aTag, aContent, aStyleContext, sMathMLData,
                        NS_ARRAY_LENGTH(sMathMLData));
 }
 #endif // MOZ_MATHML
 
-#ifdef MOZ_SVG
 // Only outer <svg> elements can be floated or positioned.  All other SVG
 // should be in-flow.
 #define SIMPLE_SVG_FCDATA(_func)                                        \
   FCDATA_DECL(FCDATA_DISALLOW_OUT_OF_FLOW |                             \
               FCDATA_SKIP_ABSPOS_PUSH |                                 \
               FCDATA_DISALLOW_GENERATED_CONTENT,  _func)
 #define SIMPLE_SVG_CREATE(_tag, _func)            \
   { &nsGkAtoms::_tag, SIMPLE_SVG_FCDATA(_func) }
@@ -4780,17 +4764,17 @@ nsCSSFrameConstructor::FindMathMLData(ns
 /* static */
 const nsCSSFrameConstructor::FrameConstructionData*
 nsCSSFrameConstructor::FindSVGData(nsIContent* aContent,
                                    nsIAtom* aTag,
                                    PRInt32 aNameSpaceID,
                                    nsIFrame* aParentFrame,
                                    nsStyleContext* aStyleContext)
 {
-  if (aNameSpaceID != kNameSpaceID_SVG || !NS_SVGEnabled()) {
+  if (aNameSpaceID != kNameSpaceID_SVG) {
     return nsnull;
   }
 
   static const FrameConstructionData sSuppressData = SUPPRESS_FCDATA();
   static const FrameConstructionData sContainerData =
     SIMPLE_SVG_FCDATA(NS_NewSVGContainerFrame);
 
   PRBool parentIsSVG = PR_FALSE;
@@ -5002,18 +4986,16 @@ nsCSSFrameConstructor::ConstructSVGForei
 
   newFrame->SetInitialChildList(nsnull, childItems);
 
   *aNewFrame = newFrame;
 
   return rv;
 }
 
-#endif // MOZ_SVG
-
 void
 nsCSSFrameConstructor::AddPageBreakItem(nsIContent* aContent,
                                         nsStyleContext* aMainStyleContext,
                                         FrameConstructionItemList& aItems)
 {
   nsRefPtr<nsStyleContext> pseudoStyle;
   // Use the same parent style context that |aMainStyleContext| has, since
   // that's easier to re-resolve and it doesn't matter in practice.
@@ -5221,52 +5203,46 @@ nsCSSFrameConstructor::AddFrameConstruct
     }
   }
 
   PRBool isPopup = PR_FALSE;
   // Try to find frame construction data for this content
   const FrameConstructionData* data;
   if (isText) {
     data = FindTextData(aParentFrame);
-#ifdef MOZ_SVG
     if (!data) {
       // Nothing to do here; suppressed text inside SVG
       return;
     }
-#endif /* MOZ_SVG */
   } else {
-#ifdef MOZ_SVG
     // Don't create frames for non-SVG element children of SVG elements.
     if (aNameSpaceID != kNameSpaceID_SVG &&
         aParentFrame &&
         aParentFrame->IsFrameOfType(nsIFrame::eSVG) &&
         !aParentFrame->IsFrameOfType(nsIFrame::eSVGForeignObject)
         ) {
       SetAsUndisplayedContent(aState.mFrameManager, aContent, styleContext,
                               isGeneratedContent);
       return;
     }
-#endif /* MOZ_SVG */
 
     data = FindHTMLData(aContent, aTag, aNameSpaceID, aParentFrame,
                         styleContext);
     if (!data) {
       data = FindXULTagData(aContent, aTag, aNameSpaceID, styleContext);
     }
 #ifdef MOZ_MATHML
     if (!data) {
       data = FindMathMLData(aContent, aTag, aNameSpaceID, styleContext);
     }
 #endif
-#ifdef MOZ_SVG
     if (!data) {
       data = FindSVGData(aContent, aTag, aNameSpaceID, aParentFrame,
                          styleContext);
     }
-#endif /* MOZ_SVG */
 
     // Now check for XUL display types
     if (!data) {
       data = FindXULDisplayData(display, aContent, styleContext);
     }
 
     // And general display types
     if (!data) {
@@ -7749,17 +7725,16 @@ DoApplyRenderingChangeToTree(nsIFrame* a
     // frame doesn't have a view, find the nearest containing view
     // (adjusting r's coordinate system to reflect the nesting) and
     // update there.
     UpdateViewsForTree(aFrame, aViewManager, aFrameManager, aChange);
 
     // if frame has view, will already be invalidated
     if (aChange & nsChangeHint_RepaintFrame) {
       if (aFrame->IsFrameOfType(nsIFrame::eSVG)) {
-#ifdef MOZ_SVG
         if (!(aFrame->GetStateBits() & NS_STATE_SVG_NONDISPLAY_CHILD)) {
           nsSVGOuterSVGFrame *outerSVGFrame = nsSVGUtils::GetOuterSVGFrame(aFrame);
           if (outerSVGFrame) {
             // We need this to invalidate frames when their 'filter' or 'marker'
             // property changes. XXX in theory changes to 'marker' should be
             // handled in nsSVGPathGeometryFrame::DidSetStyleContext, but for
             // some reason that's broken.
             //
@@ -7767,17 +7742,16 @@ DoApplyRenderingChangeToTree(nsIFrame* a
             // the area covered by a <foreignObject> when 'opacity' changes on
             // it or one of its ancestors. (For 'opacity' changes on <image> or
             // a graphical element such as <path>, or on one of their
             // ancestors, this is redundant since
             // nsSVGPathGeometryFrame::DidSetStyleContext also invalidates.)
             outerSVGFrame->UpdateAndInvalidateCoveredRegion(aFrame);
           }
         }
-#endif
       } else {
         aFrame->InvalidateOverflowRect();
       }
     }
     if (aChange & nsChangeHint_UpdateOpacityLayer) {
       aFrame->MarkLayersActive();
       aFrame->InvalidateLayer(aFrame->GetVisualOverflowRectRelativeToSelf(),
                               nsDisplayItem::TYPE_OPACITY);
@@ -8056,21 +8030,19 @@ nsCSSFrameConstructor::ProcessRestyledFr
       if (!propTable->Get(frame, ChangeListProperty()))
         continue;
     }
 
     if (hint & nsChangeHint_ReconstructFrame) {
       RecreateFramesForContent(content, PR_FALSE);
     } else {
       NS_ASSERTION(frame, "This shouldn't happen");
-#ifdef MOZ_SVG
       if (hint & nsChangeHint_UpdateEffects) {
         nsSVGEffects::UpdateEffects(frame);
       }
-#endif
       if (hint & nsChangeHint_NeedReflow) {
         StyleChangeReflow(frame, hint);
         didReflow = PR_TRUE;
       }
       if (hint & (nsChangeHint_RepaintFrame | nsChangeHint_SyncFrameView |
                   nsChangeHint_UpdateOpacityLayer | nsChangeHint_UpdateTransformLayer)) {
         ApplyRenderingChangeToTree(presContext, frame, hint);
         didInvalidate = PR_TRUE;
--- a/layout/build/nsContentDLF.cpp
+++ b/layout/build/nsContentDLF.cpp
@@ -70,19 +70,17 @@
 static NS_DEFINE_CID(kPluginDocumentCID, NS_PLUGINDOCUMENT_CID);
 
 // Factory code for creating variations on html documents
 
 #undef NOISY_REGISTRY
 
 static NS_DEFINE_IID(kHTMLDocumentCID, NS_HTMLDOCUMENT_CID);
 static NS_DEFINE_IID(kXMLDocumentCID, NS_XMLDOCUMENT_CID);
-#ifdef MOZ_SVG
 static NS_DEFINE_IID(kSVGDocumentCID, NS_SVGDOCUMENT_CID);
-#endif
 #ifdef MOZ_MEDIA
 static NS_DEFINE_IID(kVideoDocumentCID, NS_VIDEODOCUMENT_CID);
 #endif
 static NS_DEFINE_IID(kImageDocumentCID, NS_IMAGEDOCUMENT_CID);
 static NS_DEFINE_IID(kXULDocumentCID, NS_XULDOCUMENT_CID);
 
 nsresult
 NS_NewDocumentViewer(nsIDocumentViewer** aResult);
@@ -111,25 +109,21 @@ static const char* const gXMLTypes[] = {
 #ifdef MOZ_MATHML
   APPLICATION_MATHML_XML,
 #endif
   APPLICATION_RDF_XML,
   TEXT_RDF,
   0
 };
 
-#ifdef MOZ_SVG
 static const char* const gSVGTypes[] = {
   IMAGE_SVG_XML,
   0
 };
 
-PRBool NS_SVGEnabled();
-#endif
-
 static const char* const gXULTypes[] = {
   TEXT_XUL,
   APPLICATION_CACHED_XUL,
   0
 };
 
 nsresult
 NS_NewContentDocumentLoaderFactory(nsIDocumentLoaderFactory** aResult)
@@ -220,25 +214,21 @@ nsContentDLF::CreateInstance(const char*
     }
 
     for (typeIndex = 0; gXMLTypes[typeIndex] && !knownType; ++typeIndex) {
       if (type.Equals(gXMLTypes[typeIndex])) {
         knownType = PR_TRUE;
       }
     }
 
-#ifdef MOZ_SVG
-    if (NS_SVGEnabled()) {
-      for (typeIndex = 0; gSVGTypes[typeIndex] && !knownType; ++typeIndex) {
-        if (type.Equals(gSVGTypes[typeIndex])) {
-          knownType = PR_TRUE;
-        }
+    for (typeIndex = 0; gSVGTypes[typeIndex] && !knownType; ++typeIndex) {
+      if (type.Equals(gSVGTypes[typeIndex])) {
+        knownType = PR_TRUE;
       }
     }
-#endif // MOZ_SVG
 
     for (typeIndex = 0; gXULTypes[typeIndex] && !knownType; ++typeIndex) {
       if (type.Equals(gXULTypes[typeIndex])) {
         knownType = PR_TRUE;
       }
     }
 
     if (knownType) {
@@ -272,30 +262,26 @@ nsContentDLF::CreateInstance(const char*
     if (0== PL_strcmp(gXMLTypes[typeIndex++], aContentType)) {
       return CreateDocument(aCommand, 
                             aChannel, aLoadGroup,
                             aContainer, kXMLDocumentCID,
                             aDocListener, aDocViewer);
     }
   }
 
-#ifdef MOZ_SVG
-  if (NS_SVGEnabled()) {
-    // Try SVG
-    typeIndex = 0;
-    while(gSVGTypes[typeIndex]) {
-      if (!PL_strcmp(gSVGTypes[typeIndex++], aContentType)) {
-        return CreateDocument(aCommand,
-                              aChannel, aLoadGroup,
-                              aContainer, kSVGDocumentCID,
-                              aDocListener, aDocViewer);
-      }
+  // Try SVG
+  typeIndex = 0;
+  while(gSVGTypes[typeIndex]) {
+    if (!PL_strcmp(gSVGTypes[typeIndex++], aContentType)) {
+      return CreateDocument(aCommand,
+                            aChannel, aLoadGroup,
+                            aContainer, kSVGDocumentCID,
+                            aDocListener, aDocViewer);
     }
   }
-#endif
 
   // Try XUL
   typeIndex = 0;
   while (gXULTypes[typeIndex]) {
     if (0 == PL_strcmp(gXULTypes[typeIndex++], aContentType) &&
         MayUseXULXBL(aChannel)) {
       return CreateXULDocument(aCommand,
                                aChannel, aLoadGroup,
--- a/layout/build/nsLayoutStatics.cpp
+++ b/layout/build/nsLayoutStatics.cpp
@@ -103,20 +103,16 @@
 #include "inDOMView.h"
 #endif
 
 #ifdef MOZ_MATHML
 #include "nsMathMLAtoms.h"
 #include "nsMathMLOperators.h"
 #endif
 
-#ifdef MOZ_SVG
-PRBool NS_SVGEnabled();
-#endif
-
 #ifndef MOZILLA_PLAINTEXT_EDITOR_ONLY
 #include "nsHTMLEditor.h"
 #include "nsTextServicesDocument.h"
 #endif
 
 #ifdef MOZ_MEDIA
 #include "nsMediaDecoder.h"
 #include "nsHTMLMediaElement.h"
--- a/layout/svg/base/src/nsSVGUtils.cpp
+++ b/layout/svg/base/src/nsSVGUtils.cpp
@@ -164,51 +164,21 @@ 147, 149, 151, 152, 154, 156, 157, 159,
 161, 163, 164, 166, 168, 170, 171, 173,
 175, 177, 179, 181, 183, 184, 186, 188,
 190, 192, 194, 196, 198, 200, 202, 204,
 206, 208, 210, 212, 214, 216, 218, 220,
 222, 224, 226, 229, 231, 233, 235, 237,
 239, 242, 244, 246, 248, 250, 253, 255
 };
 
-static PRBool gSVGEnabled;
-static const char SVG_PREF_STR[] = "svg.enabled";
-
 #ifdef MOZ_SMIL
 static PRBool gSMILEnabled;
 static const char SMIL_PREF_STR[] = "svg.smil.enabled";
 #endif // MOZ_SMIL
 
-static int
-SVGPrefChanged(const char *aPref, void *aClosure)
-{
-  PRBool prefVal = nsContentUtils::GetBoolPref(SVG_PREF_STR);
-  if (prefVal == gSVGEnabled)
-    return 0;
-
-  gSVGEnabled = prefVal;
-  return 0;
-}
-
-PRBool
-NS_SVGEnabled()
-{
-  static PRBool sInitialized = PR_FALSE;
-  
-  if (!sInitialized) {
-    /* check and register ourselves with the pref */
-    gSVGEnabled = nsContentUtils::GetBoolPref(SVG_PREF_STR);
-    nsContentUtils::RegisterPrefCallback(SVG_PREF_STR, SVGPrefChanged, nsnull);
-
-    sInitialized = PR_TRUE;
-  }
-
-  return gSVGEnabled;
-}
-
 #ifdef MOZ_SMIL
 static int
 SMILPrefChanged(const char *aPref, void *aClosure)
 {
   PRBool prefVal = nsContentUtils::GetBoolPref(SMIL_PREF_STR);
   gSMILEnabled = prefVal;
   return 0;
 }
--- a/layout/svg/base/src/nsSVGUtils.h
+++ b/layout/svg/base/src/nsSVGUtils.h
@@ -136,24 +136,16 @@ IsSVGWhitespace(char aChar)
 
 inline PRBool
 IsSVGWhitespace(PRUnichar aChar)
 {
   return aChar == PRUnichar('\x20') || aChar == PRUnichar('\x9') ||
          aChar == PRUnichar('\xD')  || aChar == PRUnichar('\xA');
 }
 
-/*
- * Checks the svg enable preference and if a renderer could
- * successfully be created.  Declared as a function instead of a
- * nsSVGUtil method so that files that can't pull in nsSVGUtils.h (due
- * to cairo.h usage) can still query this information.
- */
-PRBool NS_SVGEnabled();
-
 #ifdef MOZ_SMIL
 /*
  * Checks the smil enabled preference.  Declared as a function to match
  * NS_SVGEnabled().
  */
 PRBool NS_SMILEnabled();
 #endif // MOZ_SMIL
 
--- a/modules/libpref/src/init/all.js
+++ b/modules/libpref/src/init/all.js
@@ -1346,17 +1346,16 @@ pref("dom.ipc.plugins.java.enabled", fal
 #ifdef XP_UNIX
 // Linux plugins using Xt instead of Xembed don't work out-of-process yet.
 pref("dom.ipc.plugins.enabled.libvlcplugin.so", false);
 pref("dom.ipc.plugins.enabled.nppdf.so", false);
 #endif
 #endif
 #endif
 
-pref("svg.enabled", true);
 pref("svg.smil.enabled", true);
 
 pref("font.minimum-size.ar", 0);
 pref("font.minimum-size.x-armn", 0);
 pref("font.minimum-size.x-beng", 0);
 pref("font.minimum-size.x-baltic", 0);
 pref("font.minimum-size.x-central-euro", 0);
 pref("font.minimum-size.zh-CN", 0);