Bug 1060987 - Fix more bad implicit constructors in DOM; r=baku
authorEhsan Akhgari <ehsan@mozilla.com>
Mon, 01 Sep 2014 20:49:25 -0400
changeset 202921 ca7fdf3bb3720d95bded02e7bdc747680dba286e
parent 202920 51572ea0344e4aece9131f32434ef204d2ae9e4a
child 202922 21b1152c66cc88cc6b77a3a271db5f33865f00b9
push id27413
push userphilringnalda@gmail.com
push dateTue, 02 Sep 2014 05:46:30 +0000
treeherdermozilla-central@c360f3d1c00d [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersbaku
bugs1060987
milestone34.0a1
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 1060987 - Fix more bad implicit constructors in DOM; r=baku
content/base/public/nsContentTypeParser.h
content/base/public/nsDocElementCreatedNotificationRunner.h
content/base/public/nsIScriptElement.h
content/base/public/nsTreeSanitizer.h
content/base/public/nsXMLNameSpaceMap.h
content/base/src/ChildIterator.cpp
content/base/src/ChildIterator.h
content/base/src/Comment.h
content/base/src/DOMMatrix.h
content/base/src/DOMParser.h
content/base/src/DOMPoint.h
content/base/src/DOMQuad.cpp
content/base/src/DOMQuad.h
content/base/src/DirectionalityUtils.cpp
content/base/src/DocumentFragment.h
content/base/src/DocumentType.h
content/base/src/EventSource.cpp
content/base/src/EventSource.h
content/base/src/FragmentOrElement.cpp
content/base/src/ImportManager.cpp
content/base/src/Link.h
content/base/src/NodeIterator.cpp
content/base/src/ResponsiveImageSelector.h
content/base/src/ShadowRoot.h
content/base/src/Text.h
content/base/src/WebSocket.cpp
content/base/src/WebSocket.h
content/base/src/nsAttrValueOrString.h
content/base/src/nsCSPUtils.h
content/base/src/nsContentList.h
content/base/src/nsContentUtils.cpp
content/base/src/nsCrossSiteListenerProxy.cpp
content/base/src/nsDOMSerializer.h
content/base/src/nsDocument.cpp
content/base/src/nsDocument.h
content/base/src/nsElementFrameLoaderOwner.h
content/base/src/nsFormData.h
content/base/src/nsFrameLoader.cpp
content/base/src/nsFrameMessageManager.cpp
content/base/src/nsGenConImageContent.cpp
content/base/src/nsGenericDOMDataNode.h
content/base/src/nsHostObjectURI.h
content/base/src/nsImageLoadingContent.cpp
content/base/src/nsImageLoadingContent.h
content/base/src/nsObjectLoadingContent.cpp
content/base/src/nsObjectLoadingContent.h
content/base/src/nsScriptElement.h
content/base/src/nsScriptLoader.h
content/base/src/nsSyncLoadService.cpp
content/base/src/nsTextNode.h
content/base/src/nsXMLHttpRequest.cpp
content/html/content/public/HTMLAudioElement.h
content/html/content/public/HTMLMediaElement.h
content/html/content/public/HTMLVideoElement.h
content/html/content/src/HTMLAnchorElement.h
content/html/content/src/HTMLAreaElement.h
content/html/content/src/HTMLBRElement.h
content/html/content/src/HTMLBodyElement.h
content/html/content/src/HTMLButtonElement.h
content/html/content/src/HTMLContentElement.h
content/html/content/src/HTMLDataElement.h
content/html/content/src/HTMLDataListElement.h
content/html/content/src/HTMLDivElement.h
content/html/content/src/HTMLElement.cpp
content/html/content/src/HTMLFieldSetElement.h
content/html/content/src/HTMLFontElement.h
content/html/content/src/HTMLFormControlsCollection.h
content/html/content/src/HTMLFormElement.h
content/html/content/src/HTMLFrameElement.h
content/html/content/src/HTMLFrameSetElement.h
content/html/content/src/HTMLHRElement.h
content/html/content/src/HTMLHeadingElement.h
content/html/content/src/HTMLIFrameElement.h
content/html/content/src/HTMLInputElement.cpp
content/html/content/src/HTMLInputElement.h
content/html/content/src/HTMLLIElement.h
content/html/content/src/HTMLLabelElement.h
content/html/content/src/HTMLLegendElement.h
content/html/content/src/HTMLLinkElement.h
content/html/content/src/HTMLMapElement.h
content/html/content/src/HTMLMediaElement.cpp
content/html/content/src/HTMLMenuElement.h
content/html/content/src/HTMLMenuItemElement.cpp
content/html/content/src/HTMLMetaElement.h
content/html/content/src/HTMLMeterElement.h
content/html/content/src/HTMLModElement.h
content/html/content/src/HTMLObjectElement.h
content/html/content/src/HTMLOptGroupElement.h
content/html/content/src/HTMLOptionElement.h
content/html/content/src/HTMLOptionsCollection.h
content/html/content/src/HTMLOutputElement.h
content/html/content/src/HTMLParagraphElement.h
content/html/content/src/HTMLPictureElement.h
content/html/content/src/HTMLPreElement.h
content/html/content/src/HTMLProgressElement.h
content/html/content/src/HTMLPropertiesCollection.h
content/html/content/src/HTMLSelectElement.h
content/html/content/src/HTMLShadowElement.h
content/html/content/src/HTMLSharedElement.h
content/html/content/src/HTMLSharedListElement.h
content/html/content/src/HTMLSharedObjectElement.h
content/html/content/src/HTMLSourceElement.h
content/html/content/src/HTMLSpanElement.h
content/html/content/src/HTMLStyleElement.h
content/html/content/src/HTMLTableCaptionElement.h
content/html/content/src/HTMLTableCellElement.h
content/html/content/src/HTMLTableColElement.h
content/html/content/src/HTMLTableElement.cpp
content/html/content/src/HTMLTableElement.h
content/html/content/src/HTMLTableRowElement.h
content/html/content/src/HTMLTableSectionElement.h
content/html/content/src/HTMLTemplateElement.h
content/html/content/src/HTMLTextAreaElement.h
content/html/content/src/HTMLTimeElement.h
content/html/content/src/HTMLTitleElement.h
content/html/content/src/HTMLTrackElement.h
content/html/content/src/HTMLUnknownElement.h
content/html/content/src/RadioNodeList.h
content/html/content/src/TextTrackManager.h
content/html/content/src/UndoManager.cpp
content/html/content/src/nsDOMStringMap.h
content/html/content/src/nsGenericHTMLElement.cpp
content/html/content/src/nsRadioVisitor.h
content/html/content/src/nsTextEditorState.cpp
content/html/document/src/HTMLAllCollection.h
content/html/document/src/ImageDocument.cpp
content/html/document/src/MediaDocument.h
content/html/document/src/PluginDocument.cpp
content/html/document/src/nsHTMLContentSink.cpp
content/xul/content/src/nsXULElement.cpp
content/xul/content/src/nsXULElement.h
content/xul/document/src/XULDocument.h
content/xul/document/src/nsXULCommandDispatcher.h
content/xul/templates/src/nsRDFQuery.h
content/xul/templates/src/nsRDFTestNode.h
content/xul/templates/src/nsResourceSet.h
content/xul/templates/src/nsRuleNetwork.h
content/xul/templates/src/nsTemplateRule.h
content/xul/templates/src/nsTreeRows.h
content/xul/templates/src/nsXULTemplateQueryProcessorStorage.h
content/xul/templates/src/nsXULTemplateResultRDF.h
content/xul/templates/src/nsXULTemplateResultStorage.h
dom/audiochannel/AudioChannelService.cpp
dom/audiochannel/tests/TestAudioChannelService.cpp
dom/base/CompositionStringSynthesizer.h
dom/base/Console.cpp
dom/base/Console.h
dom/base/DOMRequest.h
dom/base/Navigator.cpp
dom/base/Navigator.h
dom/base/PerformanceEntry.h
dom/base/SubtleCrypto.h
dom/base/URL.h
dom/base/nsDOMWindowList.h
dom/base/nsDOMWindowUtils.cpp
dom/base/nsGlobalWindow.cpp
dom/base/nsHistory.h
dom/base/nsJSEnvironment.cpp
dom/base/nsMimeTypeArray.h
dom/base/nsPluginArray.h
dom/base/nsScreen.h
dom/base/nsWindowMemoryReporter.h
dom/base/nsWindowRoot.h
dom/base/nsWrapperCache.cpp
dom/battery/BatteryManager.h
dom/camera/DOMCameraManager.h
dom/canvas/WebGLContext.h
dom/canvas/WebGLFramebuffer.h
dom/canvas/WebGLObjectModel.h
dom/canvas/WebGLRenderbuffer.h
dom/crypto/CryptoKey.h
dom/devicestorage/DeviceStorage.h
dom/devicestorage/DeviceStorageRequestParent.h
dom/devicestorage/nsDeviceStorage.h
dom/events/CustomEvent.h
dom/events/TouchEvent.h
dom/filesystem/FileSystemTaskBase.h
dom/gamepad/GamepadButton.h
dom/indexedDB/IDBDatabase.h
dom/indexedDB/IDBMutableFile.h
dom/indexedDB/IDBTransaction.h
dom/indexedDB/ipc/IndexedDBChild.h
dom/indexedDB/ipc/IndexedDBParent.h
dom/ipc/Blob.cpp
dom/ipc/ColorPickerParent.h
dom/ipc/ContentBridgeChild.h
dom/ipc/ContentChild.cpp
dom/ipc/ContentParent.cpp
dom/ipc/ContentProcess.h
dom/ipc/CrashReporterParent.cpp
dom/ipc/FilePickerParent.h
dom/ipc/ProcessPriorityManager.cpp
dom/ipc/TabChild.cpp
dom/json/nsJSON.h
dom/jsurl/nsJSProtocolHandler.h
dom/mathml/nsMathMLElement.h
dom/mobilemessage/MobileMessageManager.h
dom/mobilemessage/ipc/SmsChild.h
dom/notification/DesktopNotification.h
dom/plugins/base/nsJSNPRuntime.h
dom/plugins/base/nsPluginHost.h
dom/plugins/base/nsPluginPlayPreviewInfo.h
dom/plugins/base/nsPluginsDir.h
dom/plugins/ipc/PluginIdentifierChild.h
dom/plugins/ipc/PluginInstanceChild.h
dom/plugins/ipc/PluginInterposeOSX.h
dom/plugins/ipc/PluginMessageUtils.h
dom/plugins/ipc/PluginModuleChild.h
dom/plugins/ipc/PluginScriptableObjectChild.h
dom/plugins/ipc/StreamNotifyChild.h
dom/promise/Promise.h
dom/storage/DOMStorageCache.cpp
dom/storage/DOMStorageCache.h
dom/storage/DOMStorageDBThread.cpp
dom/storage/DOMStorageDBThread.h
dom/storage/DOMStorageIPC.cpp
dom/storage/DOMStorageIPC.h
dom/storage/DOMStorageManager.cpp
dom/storage/DOMStorageManager.h
dom/telephony/Telephony.h
dom/telephony/TelephonyCall.h
dom/telephony/TelephonyCallGroup.h
dom/workers/Queue.h
dom/workers/WorkerPrivate.h
dom/workers/WorkerRunnable.h
dom/xbl/XBLChildrenElement.h
dom/xbl/nsXBLDocumentInfo.h
dom/xbl/nsXBLEventHandler.h
dom/xbl/nsXBLMaybeCompiled.h
dom/xbl/nsXBLProtoImplField.h
dom/xbl/nsXBLProtoImplMember.h
dom/xbl/nsXBLProtoImplMethod.h
dom/xbl/nsXBLPrototypeBinding.h
dom/xbl/nsXBLPrototypeHandler.h
dom/xbl/nsXBLPrototypeResources.h
dom/xml/CDATASection.h
dom/xml/XMLDocument.h
dom/xml/nsXMLElement.h
dom/xslt/base/txExpandedNameMap.h
dom/xslt/base/txList.h
dom/xslt/base/txStack.h
dom/xslt/xpath/XPathEvaluator.h
dom/xslt/xpath/XPathResult.h
dom/xslt/xpath/nsXPathNSResolver.h
dom/xslt/xpath/txExpr.h
dom/xslt/xpath/txExprResult.h
dom/xslt/xpath/txNodeSet.h
dom/xslt/xpath/txNodeSetAdaptor.h
dom/xslt/xpath/txXPathNode.h
dom/xslt/xpath/txXPathObjectAdaptor.h
dom/xslt/xpath/txXPathOptimizer.cpp
dom/xslt/xslt/txBufferingHandler.cpp
dom/xslt/xslt/txEXSLTFunctions.cpp
dom/xslt/xslt/txExecutionState.h
dom/xslt/xslt/txInstructions.h
dom/xslt/xslt/txKey.h
dom/xslt/xslt/txMozillaStylesheetCompiler.cpp
dom/xslt/xslt/txMozillaTextOutput.h
dom/xslt/xslt/txMozillaXSLTProcessor.cpp
dom/xslt/xslt/txRtfHandler.h
dom/xslt/xslt/txStylesheetCompiler.cpp
dom/xslt/xslt/txStylesheetCompiler.h
dom/xslt/xslt/txTextHandler.h
dom/xslt/xslt/txToplevelItems.h
dom/xslt/xslt/txUnknownHandler.h
dom/xslt/xslt/txXPathResultComparator.h
dom/xslt/xslt/txXSLTFunctions.h
dom/xslt/xslt/txXSLTNumberCounters.cpp
dom/xslt/xslt/txXSLTPatterns.h
--- a/content/base/public/nsContentTypeParser.h
+++ b/content/base/public/nsContentTypeParser.h
@@ -7,17 +7,17 @@
 #define nsContentTypeParser_h
 
 #include "nsAString.h"
 
 class nsIMIMEHeaderParam;
 
 class nsContentTypeParser {
 public:
-  nsContentTypeParser(const nsAString& aString);
+  explicit nsContentTypeParser(const nsAString& aString);
   ~nsContentTypeParser();
 
   nsresult GetParameter(const char* aParameterName, nsAString& aResult);
   nsresult GetType(nsAString& aResult)
   {
     return GetParameter(nullptr, aResult);
   }
 
--- a/content/base/public/nsDocElementCreatedNotificationRunner.h
+++ b/content/base/public/nsDocElementCreatedNotificationRunner.h
@@ -11,17 +11,17 @@
 
 #include "nsContentSink.h"
 #include "nsCOMPtr.h"
 #include "nsIDocument.h"
 
 class nsDocElementCreatedNotificationRunner : public nsRunnable
 {
 public:
-  nsDocElementCreatedNotificationRunner(nsIDocument* aDoc)
+  explicit nsDocElementCreatedNotificationRunner(nsIDocument* aDoc)
     : mDoc(aDoc)
   {
   }
 
   NS_IMETHOD Run() MOZ_OVERRIDE
   {
     nsContentSink::NotifyDocElementCreated(mDoc);
     return NS_OK;
--- a/content/base/public/nsIScriptElement.h
+++ b/content/base/public/nsIScriptElement.h
@@ -22,17 +22,17 @@
 
 /**
  * Internal interface implemented by script elements
  */
 class nsIScriptElement : public nsIScriptLoaderObserver {
 public:
   NS_DECLARE_STATIC_IID_ACCESSOR(NS_ISCRIPTELEMENT_IID)
 
-  nsIScriptElement(mozilla::dom::FromParser aFromParser)
+  explicit nsIScriptElement(mozilla::dom::FromParser aFromParser)
     : mLineNumber(0),
       mAlreadyStarted(false),
       mMalformed(false),
       mDoneAddingChildren(aFromParser == mozilla::dom::NOT_FROM_PARSER ||
                           aFromParser == mozilla::dom::FROM_PARSER_FRAGMENT),
       mForceAsync(aFromParser == mozilla::dom::NOT_FROM_PARSER ||
                   aFromParser == mozilla::dom::FROM_PARSER_FRAGMENT),
       mFrozen(false),
--- a/content/base/public/nsTreeSanitizer.h
+++ b/content/base/public/nsTreeSanitizer.h
@@ -19,17 +19,17 @@ class MOZ_STACK_CLASS nsTreeSanitizer {
 
   public:
 
     /**
      * The constructor.
      *
      * @param aFlags Flags from nsIParserUtils
      */
-    nsTreeSanitizer(uint32_t aFlags = 0);
+    explicit nsTreeSanitizer(uint32_t aFlags = 0);
 
     static void InitializeStatics();
     static void ReleaseStatics();
 
     /**
      * Sanitizes a disconnected DOM fragment freshly obtained from a parser.
      * The argument must be of type nsINode::eDOCUMENT_FRAGMENT and,
      * consequently, must not be in the document. Furthermore, the fragment
--- a/content/base/public/nsXMLNameSpaceMap.h
+++ b/content/base/public/nsXMLNameSpaceMap.h
@@ -8,17 +8,17 @@
 
 #include "nsString.h"
 #include "nsTArray.h"
 #include "nsCOMPtr.h"
 #include "nsIAtom.h"
 
 struct nsNameSpaceEntry
 {
-  nsNameSpaceEntry(nsIAtom *aPrefix)
+  explicit nsNameSpaceEntry(nsIAtom* aPrefix)
     : prefix(aPrefix) {}
 
   nsCOMPtr<nsIAtom> prefix;
   int32_t nameSpaceID;
 };
 
 /**
  * nsXMLNameSpaceMap contains a set of prefixes which are mapped onto
--- a/content/base/src/ChildIterator.cpp
+++ b/content/base/src/ChildIterator.cpp
@@ -13,20 +13,20 @@
 #include "nsIAnonymousContentCreator.h"
 #include "nsIFrame.h"
 
 namespace mozilla {
 namespace dom {
 
 class MatchedNodes {
 public:
-  MatchedNodes(HTMLContentElement* aInsertionPoint)
+  explicit MatchedNodes(HTMLContentElement* aInsertionPoint)
     : mIsContentElement(true), mContentElement(aInsertionPoint) {}
 
-  MatchedNodes(XBLChildrenElement* aInsertionPoint)
+  explicit MatchedNodes(XBLChildrenElement* aInsertionPoint)
     : mIsContentElement(false), mChildrenElement(aInsertionPoint) {}
 
   uint32_t Length() const
   {
     return mIsContentElement ? mContentElement->MatchedNodes().Length()
                              : mChildrenElement->InsertedChildrenLength();
   }
 
--- a/content/base/src/ChildIterator.h
+++ b/content/base/src/ChildIterator.h
@@ -30,17 +30,17 @@ namespace dom {
 // <xbl:children> nodes replaced by the elements that have been filtered into that
 // insertion point. Any bindings on the given element are ignored for purposes
 // of determining which insertion point children are filtered into. The iterator
 // can be initialized to start at the end by providing false for aStartAtBeginning
 // in order to start iterating in reverse from the last child.
 class ExplicitChildIterator
 {
 public:
-  ExplicitChildIterator(nsIContent* aParent, bool aStartAtBeginning = true)
+  explicit ExplicitChildIterator(nsIContent* aParent, bool aStartAtBeginning = true)
     : mParent(aParent),
       mChild(nullptr),
       mDefaultChild(nullptr),
       mIndexInInserted(0),
       mIsFirst(aStartAtBeginning)
   {
   }
 
@@ -121,17 +121,17 @@ protected:
 };
 
 // Iterates over the flattened children of a node, which accounts for anonymous
 // children and nodes moved by insertion points. If a node has anonymous
 // children, those are iterated over.
 class FlattenedChildIterator : public ExplicitChildIterator
 {
 public:
-  FlattenedChildIterator(nsIContent* aParent)
+  explicit FlattenedChildIterator(nsIContent* aParent)
     : ExplicitChildIterator(aParent), mXBLInvolved(false)
   {
     Init(false);
   }
 
   FlattenedChildIterator(FlattenedChildIterator&& aOther)
     : ExplicitChildIterator(Move(aOther)), mXBLInvolved(aOther.mXBLInvolved) {}
 
--- a/content/base/src/Comment.h
+++ b/content/base/src/Comment.h
@@ -21,23 +21,23 @@ private:
   {
     NS_ABORT_IF_FALSE(mNodeInfo->NodeType() == nsIDOMNode::COMMENT_NODE,
                       "Bad NodeType in aNodeInfo");
   }
 
   virtual ~Comment();
 
 public:
-  Comment(already_AddRefed<mozilla::dom::NodeInfo>&& aNodeInfo)
+  explicit Comment(already_AddRefed<mozilla::dom::NodeInfo>&& aNodeInfo)
     : nsGenericDOMDataNode(aNodeInfo)
   {
     Init();
   }
 
-  Comment(nsNodeInfoManager* aNodeInfoManager)
+  explicit Comment(nsNodeInfoManager* aNodeInfoManager)
     : nsGenericDOMDataNode(aNodeInfoManager->GetCommentNodeInfo())
   {
     Init();
   }
 
   // nsISupports
   NS_DECL_ISUPPORTS_INHERITED
 
--- a/content/base/src/DOMMatrix.h
+++ b/content/base/src/DOMMatrix.h
@@ -20,17 +20,17 @@ namespace mozilla {
 namespace dom {
 
 class GlobalObject;
 class DOMMatrix;
 
 class DOMMatrixReadOnly : public nsWrapperCache
 {
 public:
-  DOMMatrixReadOnly(nsISupports* aParent)
+  explicit DOMMatrixReadOnly(nsISupports* aParent)
     : mParent(aParent), mMatrix2D(new gfx::Matrix())
   {
     SetIsDOMBinding();
   }
 
   DOMMatrixReadOnly(nsISupports* aParent, const DOMMatrixReadOnly& other)
     : mParent(aParent)
   {
@@ -139,17 +139,17 @@ private:
   DOMMatrixReadOnly() MOZ_DELETE;
   DOMMatrixReadOnly(const DOMMatrixReadOnly&) MOZ_DELETE;
   DOMMatrixReadOnly& operator=(const DOMMatrixReadOnly&) MOZ_DELETE;
 };
 
 class DOMMatrix MOZ_FINAL : public DOMMatrixReadOnly
 {
 public:
-  DOMMatrix(nsISupports* aParent)
+  explicit DOMMatrix(nsISupports* aParent)
     : DOMMatrixReadOnly(aParent)
   {}
 
   DOMMatrix(nsISupports* aParent, const DOMMatrixReadOnly& other)
     : DOMMatrixReadOnly(aParent, other)
   {}
 
   NS_INLINE_DECL_CYCLE_COLLECTING_NATIVE_REFCOUNTING(DOMMatrix)
--- a/content/base/src/DOMParser.h
+++ b/content/base/src/DOMParser.h
@@ -76,34 +76,34 @@ public:
   }
 
   virtual JSObject* WrapObject(JSContext* aCx) MOZ_OVERRIDE
   {
     return mozilla::dom::DOMParserBinding::Wrap(aCx, this);
   }
 
 private:
-  DOMParser(nsISupports* aOwner) : mOwner(aOwner), mAttemptedInit(false)
+  explicit DOMParser(nsISupports* aOwner) : mOwner(aOwner), mAttemptedInit(false)
   {
     MOZ_ASSERT(aOwner);
     SetIsDOMBinding();
   }
 
   nsresult InitInternal(nsISupports* aOwner, nsIPrincipal* prin,
                         nsIURI* documentURI, nsIURI* baseURI);
 
   nsresult SetUpDocument(DocumentFlavor aFlavor, nsIDOMDocument** aResult);
 
   // Helper for ParseFromString
   nsresult ParseFromString(const nsAString& str, const char *contentType,
                            nsIDOMDocument **aResult);
 
   class AttemptedInitMarker {
   public:
-    AttemptedInitMarker(bool* aAttemptedInit) :
+    explicit AttemptedInitMarker(bool* aAttemptedInit) :
       mAttemptedInit(aAttemptedInit)
     {}
 
     ~AttemptedInitMarker() {
       *mAttemptedInit = true;
     }
 
   private:
--- a/content/base/src/DOMPoint.h
+++ b/content/base/src/DOMPoint.h
@@ -44,18 +44,18 @@ protected:
   double mX, mY, mZ, mW;
 };
 
 class DOMPoint MOZ_FINAL : public DOMPointReadOnly
 {
   ~DOMPoint() {}
 
 public:
-  DOMPoint(nsISupports* aParent, double aX = 0.0, double aY = 0.0,
-           double aZ = 0.0, double aW = 1.0)
+  explicit DOMPoint(nsISupports* aParent, double aX = 0.0, double aY = 0.0,
+                    double aZ = 0.0, double aW = 1.0)
     : DOMPointReadOnly(aParent, aX, aY, aZ, aW)
   {}
 
   NS_INLINE_DECL_CYCLE_COLLECTING_NATIVE_REFCOUNTING(DOMPoint)
   NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_NATIVE_CLASS(DOMPoint)
 
   static already_AddRefed<DOMPoint>
   Constructor(const GlobalObject& aGlobal, const DOMPointInit& aParams,
--- a/content/base/src/DOMQuad.cpp
+++ b/content/base/src/DOMQuad.cpp
@@ -73,17 +73,17 @@ DOMQuad::Constructor(const GlobalObject&
   points[3] = CSSPoint(x, y + h);
   nsRefPtr<DOMQuad> obj = new DOMQuad(aGlobal.GetAsSupports(), points);
   return obj.forget();
 }
 
 class DOMQuad::QuadBounds MOZ_FINAL : public DOMRectReadOnly
 {
 public:
-  QuadBounds(DOMQuad* aQuad)
+  explicit QuadBounds(DOMQuad* aQuad)
     : DOMRectReadOnly(aQuad->GetParentObject())
     , mQuad(aQuad)
   {}
 
   NS_DECL_CYCLE_COLLECTION_CLASS_INHERITED(QuadBounds, DOMRectReadOnly)
   NS_DECL_ISUPPORTS_INHERITED
 
   virtual double X() const
--- a/content/base/src/DOMQuad.h
+++ b/content/base/src/DOMQuad.h
@@ -24,17 +24,17 @@ class DOMPoint;
 struct DOMPointInit;
 
 class DOMQuad MOZ_FINAL : public nsWrapperCache
 {
   ~DOMQuad();
 
 public:
   DOMQuad(nsISupports* aParent, CSSPoint aPoints[4]);
-  DOMQuad(nsISupports* aParent);
+  explicit DOMQuad(nsISupports* aParent);
 
   NS_INLINE_DECL_CYCLE_COLLECTING_NATIVE_REFCOUNTING(DOMQuad)
   NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_NATIVE_CLASS(DOMQuad)
 
   nsISupports* GetParentObject() const { return mParent; }
   virtual JSObject* WrapObject(JSContext* aCx) MOZ_OVERRIDE;
 
   static already_AddRefed<DOMQuad>
--- a/content/base/src/DirectionalityUtils.cpp
+++ b/content/base/src/DirectionalityUtils.cpp
@@ -432,17 +432,17 @@ class nsTextNodeDirectionalityMap
 
     nsTextNodeDirectionalityMap* map =
       reinterpret_cast<nsTextNodeDirectionalityMap * >(aPropertyValue);
     map->EnsureMapIsClear(textNode);
     delete map;
   }
 
 public:
-  nsTextNodeDirectionalityMap(nsINode* aTextNode)
+  explicit nsTextNodeDirectionalityMap(nsINode* aTextNode)
   {
     MOZ_ASSERT(aTextNode, "Null text node");
     MOZ_COUNT_CTOR(nsTextNodeDirectionalityMap);
     aTextNode->SetProperty(nsGkAtoms::textNodeDirectionalityMap, this,
                            nsTextNodeDirectionalityMapDtor);
     aTextNode->SetHasTextNodeDirectionalityMap();
   }
 
--- a/content/base/src/DocumentFragment.h
+++ b/content/base/src/DocumentFragment.h
@@ -45,23 +45,23 @@ public:
   NS_DECL_ISUPPORTS_INHERITED
 
   // interface nsIDOMNode
   NS_FORWARD_NSIDOMNODE_TO_NSINODE
 
   // interface nsIDOMDocumentFragment
   NS_DECL_NSIDOMDOCUMENTFRAGMENT
 
-  DocumentFragment(already_AddRefed<mozilla::dom::NodeInfo>& aNodeInfo)
+  explicit DocumentFragment(already_AddRefed<mozilla::dom::NodeInfo>& aNodeInfo)
     : FragmentOrElement(aNodeInfo), mHost(nullptr)
   {
     Init();
   }
 
-  DocumentFragment(nsNodeInfoManager* aNodeInfoManager)
+  explicit DocumentFragment(nsNodeInfoManager* aNodeInfoManager)
     : FragmentOrElement(aNodeInfoManager->GetNodeInfo(
                                             nsGkAtoms::documentFragmentNodeName,
                                             nullptr, kNameSpaceID_None,
                                             nsIDOMNode::DOCUMENT_FRAGMENT_NODE)),
       mHost(nullptr)
   {
     Init();
   }
--- a/content/base/src/DocumentType.h
+++ b/content/base/src/DocumentType.h
@@ -24,17 +24,17 @@ namespace dom {
 // CharacterData object, even though DocumentType is not character
 // data. This is done simply for convenience and should be changed if
 // this restricts what should be done for character data.
 
 class DocumentTypeForward : public nsGenericDOMDataNode,
                             public nsIDOMDocumentType
 {
 public:
-  DocumentTypeForward(already_AddRefed<mozilla::dom::NodeInfo>& aNodeInfo)
+  explicit DocumentTypeForward(already_AddRefed<mozilla::dom::NodeInfo>& aNodeInfo)
     : nsGenericDOMDataNode(aNodeInfo)
   {
   }
 
   // nsIDOMNode
   NS_FORWARD_NSIDOMNODE_TO_NSINODE
 };
 
--- a/content/base/src/EventSource.cpp
+++ b/content/base/src/EventSource.cpp
@@ -496,17 +496,17 @@ EventSource::OnStopRequest(nsIRequest *a
 
 /**
  * Simple helper class that just forwards the redirect callback back
  * to the EventSource.
  */
 class AsyncVerifyRedirectCallbackFwr MOZ_FINAL : public nsIAsyncVerifyRedirectCallback
 {
 public:
-  AsyncVerifyRedirectCallbackFwr(EventSource* aEventsource)
+  explicit AsyncVerifyRedirectCallbackFwr(EventSource* aEventsource)
     : mEventSource(aEventsource)
   {
   }
 
   NS_DECL_CYCLE_COLLECTING_ISUPPORTS
   NS_DECL_CYCLE_COLLECTION_CLASS(AsyncVerifyRedirectCallbackFwr)
 
   // nsIAsyncVerifyRedirectCallback implementation
--- a/content/base/src/EventSource.h
+++ b/content/base/src/EventSource.h
@@ -41,17 +41,17 @@ class EventSource : public DOMEventTarge
                   , public nsIStreamListener
                   , public nsIChannelEventSink
                   , public nsIInterfaceRequestor
                   , public nsSupportsWeakReference
 {
 friend class AsyncVerifyRedirectCallbackFwr;
 
 public:
-  EventSource(nsPIDOMWindow* aOwnerWindow);
+  explicit EventSource(nsPIDOMWindow* aOwnerWindow);
   NS_DECL_ISUPPORTS_INHERITED
   NS_DECL_CYCLE_COLLECTION_SKIPPABLE_SCRIPT_HOLDER_CLASS_INHERITED(
     EventSource, DOMEventTargetHelper)
 
   NS_DECL_NSIOBSERVER
   NS_DECL_NSISTREAMLISTENER
   NS_DECL_NSIREQUESTOBSERVER
   NS_DECL_NSICHANNELEVENTSINK
--- a/content/base/src/FragmentOrElement.cpp
+++ b/content/base/src/FragmentOrElement.cpp
@@ -2263,17 +2263,17 @@ private:
   Unit* AddUnit()
   {
     if (mLast->mUnits.Length() == STRING_BUFFER_UNITS) {
       new StringBuilder(this);
     }
     return mLast->mUnits.AppendElement();
   }
 
-  StringBuilder(StringBuilder* aFirst)
+  explicit StringBuilder(StringBuilder* aFirst)
   : mLast(nullptr), mLength(0)
   {
     MOZ_COUNT_CTOR(StringBuilder);
     aFirst->mLast->mNext = this;
     aFirst->mLast = this;
   }
 
   void EncodeAttrString(const nsAutoString& aValue, nsAString& aOut)
--- a/content/base/src/ImportManager.cpp
+++ b/content/base/src/ImportManager.cpp
@@ -20,17 +20,17 @@
 #include "nsIDOMEvent.h"
 #include "nsIPrincipal.h"
 #include "nsIScriptObjectPrincipal.h"
 #include "nsScriptLoader.h"
 #include "nsNetUtil.h"
 
 class AutoError {
 public:
-  AutoError(mozilla::dom::ImportLoader* loader, bool scriptsBlocked = true)
+  explicit AutoError(mozilla::dom::ImportLoader* loader, bool scriptsBlocked = true)
     : mLoader(loader)
     , mPassed(false)
     , mScriptsBlocked(scriptsBlocked)
   {}
 
   ~AutoError()
   {
     if (!mPassed) {
--- a/content/base/src/Link.h
+++ b/content/base/src/Link.h
@@ -31,17 +31,17 @@ class Element;
 class Link : public URLSearchParamsObserver
 {
 public:
   NS_DECLARE_STATIC_IID_ACCESSOR(MOZILLA_DOM_LINK_IMPLEMENTATION_IID)
 
   /**
    * aElement is the element pointer corresponding to this link.
    */
-  Link(Element* aElement);
+  explicit Link(Element* aElement);
   virtual void SetLinkState(nsLinkState aState);
 
   /**
    * @return NS_EVENT_STATE_VISITED if this link is visited,
    *         NS_EVENT_STATE_UNVISTED if this link is not visited, or 0 if this
    *         link is not actually a link.
    */
   EventStates LinkState() const;
--- a/content/base/src/NodeIterator.cpp
+++ b/content/base/src/NodeIterator.cpp
@@ -223,17 +223,17 @@ NodeIterator::NextOrPrevNode(NodePointer
         aResult.Throw(NS_ERROR_DOM_INVALID_STATE_ERR);
         return nullptr;
     }
 
     mWorkingPointer = mPointer;
 
     struct AutoClear {
         NodePointer* mPtr;
-        AutoClear(NodePointer* ptr) : mPtr(ptr) {}
+        explicit AutoClear(NodePointer* ptr) : mPtr(ptr) {}
        ~AutoClear() { mPtr->Clear(); }
     } ac(&mWorkingPointer);
 
     while ((mWorkingPointer.*aMove)(mRoot)) {
         nsCOMPtr<nsINode> testNode = mWorkingPointer.mNode;
         int16_t filtered = TestNode(testNode, aResult);
         if (aResult.Failed()) {
             return nullptr;
--- a/content/base/src/ResponsiveImageSelector.h
+++ b/content/base/src/ResponsiveImageSelector.h
@@ -18,17 +18,17 @@ namespace dom {
 
 class ResponsiveImageCandidate;
 
 class ResponsiveImageSelector : public nsISupports
 {
   friend class ResponsiveImageCandidate;
 public:
   NS_DECL_ISUPPORTS
-  ResponsiveImageSelector(nsIContent *aContent);
+  explicit ResponsiveImageSelector(nsIContent* aContent);
 
   // Given a srcset string, parse and replace current candidates (does not
   // replace default source)
   bool SetCandidatesFromSourceSet(const nsAString & aSrcSet);
 
   // Fill the source sizes from a valid sizes descriptor. Returns false if
   // descriptor is invalid.
   bool SetSizesFromDescriptor(const nsAString & aSizesDescriptor);
--- a/content/base/src/ShadowRoot.h
+++ b/content/base/src/ShadowRoot.h
@@ -170,17 +170,17 @@ protected:
   // the insertion points. After this flag is set, nodes will be distributed
   // on the next mutation event.
   bool mInsertionPointChanged;
 };
 
 class ShadowRootStyleSheetList : public StyleSheetList
 {
 public:
-  ShadowRootStyleSheetList(ShadowRoot* aShadowRoot);
+  explicit ShadowRootStyleSheetList(ShadowRoot* aShadowRoot);
 
   NS_DECL_ISUPPORTS_INHERITED
   NS_DECL_CYCLE_COLLECTION_CLASS_INHERITED(ShadowRootStyleSheetList, StyleSheetList)
 
   virtual nsINode* GetParentObject() const MOZ_OVERRIDE
   {
     return mShadowRoot;
   }
--- a/content/base/src/Text.h
+++ b/content/base/src/Text.h
@@ -10,21 +10,21 @@
 #include "mozilla/ErrorResult.h"
 
 namespace mozilla {
 namespace dom {
 
 class Text : public nsGenericDOMDataNode
 {
 public:
-  Text(already_AddRefed<mozilla::dom::NodeInfo>& aNodeInfo)
+  explicit Text(already_AddRefed<mozilla::dom::NodeInfo>& aNodeInfo)
     : nsGenericDOMDataNode(aNodeInfo)
   {}
 
-  Text(already_AddRefed<mozilla::dom::NodeInfo>&& aNodeInfo)
+  explicit Text(already_AddRefed<mozilla::dom::NodeInfo>&& aNodeInfo)
     : nsGenericDOMDataNode(aNodeInfo)
   {}
 
   using nsGenericDOMDataNode::GetWholeText;
 
   // WebIDL API
   already_AddRefed<Text> SplitText(uint32_t aOffset, ErrorResult& rv);
   void GetWholeText(nsAString& aWholeText, ErrorResult& rv)
--- a/content/base/src/WebSocket.cpp
+++ b/content/base/src/WebSocket.cpp
@@ -46,18 +46,18 @@
 namespace mozilla {
 namespace dom {
 
 #define UTF_8_REPLACEMENT_CHAR    static_cast<char16_t>(0xFFFD)
 
 class CallDispatchConnectionCloseEvents: public nsRunnable
 {
 public:
-CallDispatchConnectionCloseEvents(WebSocket* aWebSocket)
-  : mWebSocket(aWebSocket)
+  explicit CallDispatchConnectionCloseEvents(WebSocket* aWebSocket)
+    : mWebSocket(aWebSocket)
   {}
 
   NS_IMETHOD Run()
   {
     mWebSocket->DispatchConnectionCloseEvents();
     return NS_OK;
   }
 
@@ -749,17 +749,17 @@ WebSocket::Init(JSContext* aCx,
 
 //-----------------------------------------------------------------------------
 // WebSocket methods:
 //-----------------------------------------------------------------------------
 
 class nsAutoCloseWS
 {
 public:
-  nsAutoCloseWS(WebSocket* aWebSocket)
+  explicit nsAutoCloseWS(WebSocket* aWebSocket)
     : mWebSocket(aWebSocket)
   {}
 
   ~nsAutoCloseWS()
   {
     if (!mWebSocket->mChannel) {
       mWebSocket->CloseConnection(nsIWebSocketChannel::CLOSE_INTERNAL_ERROR);
     }
--- a/content/base/src/WebSocket.h
+++ b/content/base/src/WebSocket.h
@@ -134,17 +134,17 @@ public: // WebIDL interface:
   void Send(nsIDOMBlob* aData,
             ErrorResult& aRv);
   void Send(const ArrayBuffer& aData,
             ErrorResult& aRv);
   void Send(const ArrayBufferView& aData,
             ErrorResult& aRv);
 
 private: // constructor && distructor
-  WebSocket(nsPIDOMWindow* aOwnerWindow);
+  explicit WebSocket(nsPIDOMWindow* aOwnerWindow);
   virtual ~WebSocket();
 
 protected:
   nsresult Init(JSContext* aCx,
                 nsIPrincipal* aPrincipal,
                 const nsAString& aURL,
                 nsTArray<nsString>& aProtocolArray);
 
--- a/content/base/src/nsAttrValueOrString.h
+++ b/content/base/src/nsAttrValueOrString.h
@@ -16,22 +16,22 @@
 #define nsAttrValueOrString_h___
 
 #include "nsString.h"
 #include "nsAttrValue.h"
 
 class MOZ_STACK_CLASS nsAttrValueOrString
 {
 public:
-  nsAttrValueOrString(const nsAString& aValue)
+  explicit nsAttrValueOrString(const nsAString& aValue)
     : mAttrValue(nullptr)
     , mStringPtr(&aValue)
     , mCheapString(nullptr)
   { }
-  nsAttrValueOrString(const nsAttrValue& aValue)
+  explicit nsAttrValueOrString(const nsAttrValue& aValue)
     : mAttrValue(&aValue)
     , mStringPtr(nullptr)
     , mCheapString(nullptr)
   { }
 
   /**
    * Returns a reference to the string value of the contents of this object.
    *
--- a/content/base/src/nsCSPUtils.h
+++ b/content/base/src/nsCSPUtils.h
@@ -193,31 +193,31 @@ class nsCSPBaseSrc {
     virtual bool allows(enum CSPKeyword aKeyword, const nsAString& aHashOrNonce) const;
     virtual void toString(nsAString& outStr) const = 0;
 };
 
 /* =============== nsCSPSchemeSrc ============ */
 
 class nsCSPSchemeSrc : public nsCSPBaseSrc {
   public:
-    nsCSPSchemeSrc(const nsAString& aScheme);
+    explicit nsCSPSchemeSrc(const nsAString& aScheme);
     virtual ~nsCSPSchemeSrc();
 
     bool permits(nsIURI* aUri, const nsAString& aNonce) const;
     void toString(nsAString& outStr) const;
 
   private:
     nsString mScheme;
 };
 
 /* =============== nsCSPHostSrc ============== */
 
 class nsCSPHostSrc : public nsCSPBaseSrc {
   public:
-    nsCSPHostSrc(const nsAString& aHost);
+    explicit nsCSPHostSrc(const nsAString& aHost);
     virtual ~nsCSPHostSrc();
 
     bool permits(nsIURI* aUri, const nsAString& aNonce) const;
     void toString(nsAString& outStr) const;
 
     void setScheme(const nsAString& aScheme);
     void setPort(const nsAString& aPort);
     void appendPath(const nsAString &aPath);
@@ -230,31 +230,31 @@ class nsCSPHostSrc : public nsCSPBaseSrc
     nsString mPath;
     nsString mFileAndArguments;
 };
 
 /* =============== nsCSPKeywordSrc ============ */
 
 class nsCSPKeywordSrc : public nsCSPBaseSrc {
   public:
-    nsCSPKeywordSrc(CSPKeyword aKeyword);
+    explicit nsCSPKeywordSrc(CSPKeyword aKeyword);
     virtual ~nsCSPKeywordSrc();
 
     bool allows(enum CSPKeyword aKeyword, const nsAString& aHashOrNonce) const;
     void toString(nsAString& outStr) const;
 
   private:
     CSPKeyword mKeyword;
 };
 
 /* =============== nsCSPNonceSource =========== */
 
 class nsCSPNonceSrc : public nsCSPBaseSrc {
   public:
-    nsCSPNonceSrc(const nsAString& aNonce);
+    explicit nsCSPNonceSrc(const nsAString& aNonce);
     virtual ~nsCSPNonceSrc();
 
     bool permits(nsIURI* aUri, const nsAString& aNonce) const;
     bool allows(enum CSPKeyword aKeyword, const nsAString& aHashOrNonce) const;
     void toString(nsAString& outStr) const;
 
   private:
     nsString mNonce;
@@ -274,31 +274,31 @@ class nsCSPHashSrc : public nsCSPBaseSrc
     nsString mAlgorithm;
     nsString mHash;
 };
 
 /* =============== nsCSPReportURI ============ */
 
 class nsCSPReportURI : public nsCSPBaseSrc {
   public:
-    nsCSPReportURI(nsIURI *aURI);
+    explicit nsCSPReportURI(nsIURI* aURI);
     virtual ~nsCSPReportURI();
 
     void toString(nsAString& outStr) const;
 
   private:
     nsCOMPtr<nsIURI> mReportURI;
 };
 
 /* =============== nsCSPDirective ============= */
 
 class nsCSPDirective {
   public:
     nsCSPDirective();
-    nsCSPDirective(enum CSPDirective aDirective);
+    explicit nsCSPDirective(enum CSPDirective aDirective);
     virtual ~nsCSPDirective();
 
     bool permits(nsIURI* aUri, const nsAString& aNonce) const;
     bool allows(enum CSPKeyword aKeyword, const nsAString& aHashOrNonce) const;
     void toString(nsAString& outStr) const;
 
     inline void addSrcs(const nsTArray<nsCSPBaseSrc*>& aSrcs)
       { mSrcs = aSrcs; }
--- a/content/base/src/nsContentList.h
+++ b/content/base/src/nsContentList.h
@@ -112,18 +112,18 @@ protected:
 
   nsTArray< nsCOMPtr<nsIContent> > mElements;
 };
 
 
 class nsSimpleContentList : public nsBaseContentList
 {
 public:
-  nsSimpleContentList(nsINode *aRoot) : nsBaseContentList(),
-                                        mRoot(aRoot)
+  explicit nsSimpleContentList(nsINode* aRoot) : nsBaseContentList(),
+                                                 mRoot(aRoot)
   {
   }
 
   NS_DECL_ISUPPORTS_INHERITED
   NS_DECL_CYCLE_COLLECTION_CLASS_INHERITED(nsSimpleContentList,
                                            nsBaseContentList)
 
   virtual nsINode* GetParentObject() MOZ_OVERRIDE
--- a/content/base/src/nsContentUtils.cpp
+++ b/content/base/src/nsContentUtils.cpp
@@ -349,17 +349,17 @@ public:
   }
 };
 
 NS_IMPL_ISUPPORTS(DOMEventListenerManagersHashReporter, nsIMemoryReporter)
 
 class EventListenerManagerMapEntry : public PLDHashEntryHdr
 {
 public:
-  EventListenerManagerMapEntry(const void *aKey)
+  explicit EventListenerManagerMapEntry(const void* aKey)
     : mKey(aKey)
   {
   }
 
   ~EventListenerManagerMapEntry()
   {
     NS_ASSERTION(!mListenerManager, "caller must release and disconnect ELM");
   }
@@ -1287,49 +1287,49 @@ nsContentUtils::GetBidiKeyboard()
 }
 
 template <class OutputIterator>
 struct NormalizeNewlinesCharTraits {
   public:
     typedef typename OutputIterator::value_type value_type;
 
   public:
-    NormalizeNewlinesCharTraits(OutputIterator& aIterator) : mIterator(aIterator) { }
+    explicit NormalizeNewlinesCharTraits(OutputIterator& aIterator) : mIterator(aIterator) { }
     void writechar(typename OutputIterator::value_type aChar) {
       *mIterator++ = aChar;
     }
 
   private:
     OutputIterator mIterator;
 };
 
 template <class CharT>
 struct NormalizeNewlinesCharTraits<CharT*> {
   public:
     typedef CharT value_type;
 
   public:
-    NormalizeNewlinesCharTraits(CharT* aCharPtr) : mCharPtr(aCharPtr) { }
+    explicit NormalizeNewlinesCharTraits(CharT* aCharPtr) : mCharPtr(aCharPtr) { }
     void writechar(CharT aChar) {
       *mCharPtr++ = aChar;
     }
 
   private:
     CharT* mCharPtr;
 };
 
 template <class OutputIterator>
 class CopyNormalizeNewlines
 {
   public:
     typedef typename OutputIterator::value_type value_type;
 
   public:
-    CopyNormalizeNewlines(OutputIterator* aDestination,
-                          bool aLastCharCR=false) :
+    explicit CopyNormalizeNewlines(OutputIterator* aDestination,
+                                   bool aLastCharCR = false) :
       mLastCharCR(aLastCharCR),
       mDestination(aDestination),
       mWritten(0)
     { }
 
     uint32_t GetCharsWritten() {
       return mWritten;
     }
@@ -4541,22 +4541,22 @@ nsContentUtils::IsInSameAnonymousTree(co
       aContent->GetContainingShadow();
   }
 
   return nodeAsContent->GetBindingParent() == aContent->GetBindingParent();
 }
 
 class AnonymousContentDestroyer : public nsRunnable {
 public:
-  AnonymousContentDestroyer(nsCOMPtr<nsIContent>* aContent) {
+  explicit AnonymousContentDestroyer(nsCOMPtr<nsIContent>* aContent) {
     mContent.swap(*aContent);
     mParent = mContent->GetParent();
     mDoc = mContent->OwnerDoc();
   }
-  AnonymousContentDestroyer(nsCOMPtr<Element>* aElement) {
+  explicit AnonymousContentDestroyer(nsCOMPtr<Element>* aElement) {
     mContent = aElement->forget();
     mParent = mContent->GetParent();
     mDoc = mContent->OwnerDoc();
   }
   NS_IMETHOD Run() {
     mContent->UnbindFromTree();
     return NS_OK;
   }
--- a/content/base/src/nsCrossSiteListenerProxy.cpp
+++ b/content/base/src/nsCrossSiteListenerProxy.cpp
@@ -119,17 +119,17 @@ public:
   struct TokenTime
   {
     nsCString token;
     TimeStamp expirationTime;
   };
 
   struct CacheEntry : public LinkedListElement<CacheEntry>
   {
-    CacheEntry(nsCString& aKey)
+    explicit CacheEntry(nsCString& aKey)
       : mKey(aKey)
     {
       MOZ_COUNT_CTOR(nsPreflightCache::CacheEntry);
     }
     
     ~CacheEntry()
     {
       MOZ_COUNT_DTOR(nsPreflightCache::CacheEntry);
--- a/content/base/src/nsDOMSerializer.h
+++ b/content/base/src/nsDOMSerializer.h
@@ -51,17 +51,17 @@ public:
   virtual JSObject* WrapObject(JSContext* aCx) MOZ_OVERRIDE
   {
     return mozilla::dom::XMLSerializerBinding::Wrap(aCx, this);
   }
 
 private:
   virtual ~nsDOMSerializer();
 
-  nsDOMSerializer(nsISupports* aOwner) : mOwner(aOwner)
+  explicit nsDOMSerializer(nsISupports* aOwner) : mOwner(aOwner)
   {
     MOZ_ASSERT(aOwner);
     SetIsDOMBinding();
   }
 
   nsCOMPtr<nsISupports> mOwner;
 };
 
--- a/content/base/src/nsDocument.cpp
+++ b/content/base/src/nsDocument.cpp
@@ -679,17 +679,17 @@ class SubDocMapEntry : public PLDHashEnt
 public:
   // Both of these are strong references
   Element *mKey; // must be first, to look like PLDHashEntryStub
   nsIDocument *mSubDocument;
 };
 
 struct FindContentData
 {
-  FindContentData(nsIDocument *aSubDoc)
+  explicit FindContentData(nsIDocument* aSubDoc)
     : mSubDocument(aSubDoc), mResult(nullptr)
   {
   }
 
   nsISupports *mSubDocument;
   Element *mResult;
 };
 
@@ -1393,17 +1393,17 @@ nsExternalResourceMap::ExternalResource:
 // ==================================================================
 
 // If we ever have an nsIDocumentObserver notification for stylesheet title
 // changes we should update the list from that instead of overriding
 // EnsureFresh.
 class nsDOMStyleSheetSetList MOZ_FINAL : public DOMStringList
 {
 public:
-  nsDOMStyleSheetSetList(nsIDocument* aDocument);
+  explicit nsDOMStyleSheetSetList(nsIDocument* aDocument);
 
   void Disconnect()
   {
     mDocument = nullptr;
   }
 
   virtual void EnsureFresh() MOZ_OVERRIDE;
 
@@ -5541,17 +5541,17 @@ nsDocument::RegisterUnresolvedElement(El
 }
 
 namespace {
 
 class ProcessStackRunner MOZ_FINAL : public nsIRunnable
 {
   ~ProcessStackRunner() {}
 public:
-  ProcessStackRunner(bool aIsBaseQueue = false)
+  explicit ProcessStackRunner(bool aIsBaseQueue = false)
     : mIsBaseQueue(aIsBaseQueue)
   {
   }
   NS_DECL_ISUPPORTS
   NS_IMETHOD Run() MOZ_OVERRIDE
   {
     nsDocument::ProcessTopElementQueue(mIsBaseQueue);
     return NS_OK;
@@ -8710,17 +8710,17 @@ nsDocument::UnblockOnload(bool aFireSync
                                  false);
       asyncDispatcher->PostDOMEvent();
     }
   }
 }
 
 class nsUnblockOnloadEvent : public nsRunnable {
 public:
-  nsUnblockOnloadEvent(nsDocument *doc) : mDoc(doc) {}
+  explicit nsUnblockOnloadEvent(nsDocument* aDoc) : mDoc(aDoc) {}
   NS_IMETHOD Run() {
     mDoc->DoUnblockOnload();
     return NS_OK;
   }
 private:
   nsRefPtr<nsDocument> mDoc;
 };
 
@@ -9419,17 +9419,17 @@ nsDocument::LoadChromeSheetSync(nsIURI* 
                                 CSSStyleSheet** sheet)
 {
   return CSSLoader()->LoadSheetSync(uri, isAgentSheet, isAgentSheet, sheet);
 }
 
 class nsDelayedEventDispatcher : public nsRunnable
 {
 public:
-  nsDelayedEventDispatcher(nsTArray<nsCOMPtr<nsIDocument> >& aDocuments)
+  explicit nsDelayedEventDispatcher(nsTArray<nsCOMPtr<nsIDocument>>& aDocuments)
   {
     mDocuments.SwapElements(aDocuments);
   }
   virtual ~nsDelayedEventDispatcher() {}
 
   NS_IMETHOD Run()
   {
     FireOrClearDelayedEvents(mDocuments, true);
@@ -9439,17 +9439,17 @@ public:
 private:
   nsTArray<nsCOMPtr<nsIDocument> > mDocuments;
 };
 
 namespace {
 
 struct UnsuppressArgs
 {
-  UnsuppressArgs(nsIDocument::SuppressionType aWhat)
+  explicit UnsuppressArgs(nsIDocument::SuppressionType aWhat)
     : mWhat(aWhat)
   {
   }
 
   nsIDocument::SuppressionType mWhat;
   nsTArray<nsCOMPtr<nsIDocument>> mDocs;
 };
 
@@ -10542,17 +10542,17 @@ SetWindowFullScreen(nsIDocument* aDoc, b
   }
   if (!nsContentUtils::IsFullscreenApiContentOnly()) {
     nsContentUtils::AddScriptRunner(new nsSetWindowFullScreen(aDoc, aValue));
   }
 }
 
 class nsCallExitFullscreen : public nsRunnable {
 public:
-  nsCallExitFullscreen(nsIDocument* aDoc)
+  explicit nsCallExitFullscreen(nsIDocument* aDoc)
     : mDoc(aDoc) {}
   NS_IMETHOD Run()
   {
     nsDocument::ExitFullscreen(mDoc);
     return NS_OK;
   }
 private:
   nsCOMPtr<nsIDocument> mDoc;
@@ -10856,17 +10856,17 @@ bool
 nsDocument::IsFullScreenDoc()
 {
   return GetFullScreenElement() != nullptr;
 }
 
 class nsCallRequestFullScreen : public nsRunnable
 {
 public:
-  nsCallRequestFullScreen(Element* aElement)
+  explicit nsCallRequestFullScreen(Element* aElement)
     : mElement(aElement),
       mDoc(aElement->OwnerDoc()),
       mWasCallerChrome(nsContentUtils::IsCallerChrome()),
       mHadRequestPending(static_cast<nsDocument*>(mDoc.get())->
                            mAsyncFullscreenPending)
   {
     static_cast<nsDocument*>(mDoc.get())->
       mAsyncFullscreenPending = true;
--- a/content/base/src/nsDocument.h
+++ b/content/base/src/nsDocument.h
@@ -117,22 +117,22 @@ class CallbackFunction;
  * the ID's nsIdentifierMapEntry, the document.all result is released too.
  * Perhaps the document.all results should have their own hashtable
  * in nsHTMLDocument.
  */
 class nsIdentifierMapEntry : public nsStringHashKey
 {
 public:
   typedef mozilla::dom::Element Element;
-  
-  nsIdentifierMapEntry(const nsAString& aKey) :
+
+  explicit nsIdentifierMapEntry(const nsAString& aKey) :
     nsStringHashKey(&aKey), mNameContentList(nullptr)
   {
   }
-  nsIdentifierMapEntry(const nsAString *aKey) :
+  explicit nsIdentifierMapEntry(const nsAString* aKey) :
     nsStringHashKey(aKey), mNameContentList(nullptr)
   {
   }
   nsIdentifierMapEntry(const nsIdentifierMapEntry& aOther) :
     nsStringHashKey(&aOther.GetKey())
   {
     NS_ERROR("Should never be called");
   }
@@ -198,18 +198,18 @@ public:
     void* mData;
     bool mForImage;
   };
 
   struct ChangeCallbackEntry : public PLDHashEntryHdr {
     typedef const ChangeCallback KeyType;
     typedef const ChangeCallback* KeyTypePointer;
 
-    ChangeCallbackEntry(const ChangeCallback* key) :
-      mKey(*key) { }
+    explicit ChangeCallbackEntry(const ChangeCallback* aKey) :
+      mKey(*aKey) { }
     ChangeCallbackEntry(const ChangeCallbackEntry& toCopy) :
       mKey(toCopy.mKey) { }
 
     KeyType GetKey() const { return mKey; }
     bool KeyEquals(KeyTypePointer aKey) const {
       return aKey->mCallback == mKey.mCallback &&
              aKey->mData == mKey.mData &&
              aKey->mForImage == mKey.mForImage;
@@ -247,17 +247,17 @@ class CustomElementHashKey : public PLDH
 public:
   typedef CustomElementHashKey *KeyType;
   typedef const CustomElementHashKey *KeyTypePointer;
 
   CustomElementHashKey(int32_t aNamespaceID, nsIAtom *aAtom)
     : mNamespaceID(aNamespaceID),
       mAtom(aAtom)
   {}
-  CustomElementHashKey(const CustomElementHashKey *aKey)
+  explicit CustomElementHashKey(const CustomElementHashKey* aKey)
     : mNamespaceID(aKey->mNamespaceID),
       mAtom(aKey->mAtom)
   {}
   ~CustomElementHashKey()
   {}
 
   KeyType GetKey() const { return const_cast<KeyType>(this); }
   bool KeyEquals(const KeyTypePointer aKey) const
@@ -321,17 +321,17 @@ private:
   // callback queue.
   CustomElementData* mOwnerData;
 };
 
 // Each custom element has an associated callback queue and an element is
 // being created flag.
 struct CustomElementData
 {
-  CustomElementData(nsIAtom* aType);
+  explicit CustomElementData(nsIAtom* aType);
   // Objects in this array are transient and empty after each microtask
   // checkpoint.
   nsTArray<nsAutoPtr<CustomElementCallback>> mCallbackQueue;
   // Custom element type, for <button is="x-button"> or <x-button>
   // this would be x-button.
   nsCOMPtr<nsIAtom> mType;
   // The callback that is next to be processed upon calling RunCallbackQueue.
   int32_t mCurrentCallback;
@@ -433,17 +433,17 @@ public:
   nsString          mData;
   nsDocHeaderData*  mNext;
 };
 
 class nsDOMStyleSheetList : public mozilla::dom::StyleSheetList,
                             public nsStubDocumentObserver
 {
 public:
-  nsDOMStyleSheetList(nsIDocument *aDocument);
+  explicit nsDOMStyleSheetList(nsIDocument* aDocument);
 
   NS_DECL_ISUPPORTS_INHERITED
 
   // nsIDocumentObserver
   NS_DECL_NSIDOCUMENTOBSERVER_STYLESHEETADDED
   NS_DECL_NSIDOCUMENTOBSERVER_STYLESHEETREMOVED
 
   // nsIMutationObserver
@@ -536,17 +536,17 @@ public:
 
 protected:
   class PendingLoad : public ExternalResourceLoad,
                       public nsIStreamListener
   {
     ~PendingLoad() {}
 
   public:
-    PendingLoad(nsDocument* aDisplayDocument) :
+    explicit PendingLoad(nsDocument* aDisplayDocument) :
       mDisplayDocument(aDisplayDocument)
     {}
 
     NS_DECL_ISUPPORTS
     NS_DECL_NSISTREAMLISTENER
     NS_DECL_NSIREQUESTOBSERVER
 
     /**
@@ -568,17 +568,17 @@ protected:
     nsCOMPtr<nsIURI> mURI;
   };
   friend class PendingLoad;
 
   class LoadgroupCallbacks MOZ_FINAL : public nsIInterfaceRequestor
   {
     ~LoadgroupCallbacks() {}
   public:
-    LoadgroupCallbacks(nsIInterfaceRequestor* aOtherCallbacks)
+    explicit LoadgroupCallbacks(nsIInterfaceRequestor* aOtherCallbacks)
       : mCallbacks(aOtherCallbacks)
     {}
     NS_DECL_ISUPPORTS
     NS_DECL_NSIINTERFACEREQUESTOR
   private:
     // The only reason it's safe to hold a strong ref here without leaking is
     // that the notificationCallbacks on a loadgroup aren't the docshell itself
     // but a shim that holds a weak reference to the docshell.
@@ -1442,17 +1442,17 @@ protected:
 #define NS_DOCUMENT_NOTIFY_OBSERVERS(func_, params_)                        \
   NS_OBSERVER_ARRAY_NOTIFY_XPCOM_OBSERVERS(mObservers, nsIDocumentObserver, \
                                            func_, params_);
 
 #ifdef DEBUG
   void VerifyRootContentState();
 #endif
 
-  nsDocument(const char* aContentType);
+  explicit nsDocument(const char* aContentType);
   virtual ~nsDocument();
 
   void EnsureOnloadBlocker();
 
   void NotifyStyleSheetApplicableStateChanged();
 
   nsTArray<nsIObserver*> mCharSetObservers;
 
@@ -1758,17 +1758,17 @@ private:
 public:
   bool mWillReparent;
 #endif
 };
 
 class nsDocumentOnStack
 {
 public:
-  nsDocumentOnStack(nsDocument* aDoc) : mDoc(aDoc)
+  explicit nsDocumentOnStack(nsDocument* aDoc) : mDoc(aDoc)
   {
     mDoc->IncreaseStackRefCnt();
   }
   ~nsDocumentOnStack()
   {
     mDoc->DecreaseStackRefCnt();
   }
 private:
--- a/content/base/src/nsElementFrameLoaderOwner.h
+++ b/content/base/src/nsElementFrameLoaderOwner.h
@@ -26,17 +26,17 @@ class Element;
 class nsXULElement;
 
 /**
  * A helper class for frame elements
  */
 class nsElementFrameLoaderOwner : public nsIFrameLoaderOwner
 {
 public:
-  nsElementFrameLoaderOwner(mozilla::dom::FromParser aFromParser)
+  explicit nsElementFrameLoaderOwner(mozilla::dom::FromParser aFromParser)
     : mNetworkCreated(aFromParser == mozilla::dom::FROM_PARSER_NETWORK)
     , mBrowserFrameListenersRegistered(false)
     , mFrameLoaderCreationDisallowed(false)
   {
   }
 
   virtual ~nsElementFrameLoaderOwner();
 
--- a/content/base/src/nsFormData.h
+++ b/content/base/src/nsFormData.h
@@ -29,17 +29,17 @@ class GlobalObject;
 class nsFormData : public nsIDOMFormData,
                    public nsIXHRSendable,
                    public nsFormSubmission,
                    public nsWrapperCache
 {
   ~nsFormData() {}
 
 public:
-  nsFormData(nsISupports* aOwner = nullptr);
+  explicit nsFormData(nsISupports* aOwner = nullptr);
 
   NS_DECL_CYCLE_COLLECTING_ISUPPORTS
   NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_CLASS_AMBIGUOUS(nsFormData,
                                                          nsIDOMFormData)
 
   NS_DECL_NSIDOMFORMDATA
   NS_DECL_NSIXHRSENDABLE
 
--- a/content/base/src/nsFrameLoader.cpp
+++ b/content/base/src/nsFrameLoader.cpp
@@ -101,17 +101,17 @@ using namespace mozilla::dom;
 using namespace mozilla::dom::ipc;
 using namespace mozilla::layers;
 using namespace mozilla::layout;
 typedef FrameMetrics::ViewID ViewID;
 
 class nsAsyncDocShellDestroyer : public nsRunnable
 {
 public:
-  nsAsyncDocShellDestroyer(nsIDocShell* aDocShell)
+  explicit nsAsyncDocShellDestroyer(nsIDocShell* aDocShell)
     : mDocShell(aDocShell)
   {
   }
 
   NS_IMETHOD Run()
   {
     nsCOMPtr<nsIBaseWindow> base_win(do_QueryInterface(mDocShell));
     if (base_win) {
@@ -303,17 +303,17 @@ nsFrameLoader::ReallyStartLoading()
   }
   
   return rv;
 }
 
 class DelayedStartLoadingRunnable : public nsRunnable
 {
 public:
-  DelayedStartLoadingRunnable(nsFrameLoader* aFrameLoader)
+  explicit DelayedStartLoadingRunnable(nsFrameLoader* aFrameLoader)
     : mFrameLoader(aFrameLoader)
   {
   }
 
   NS_IMETHOD Run()
   {
     // Retry the request.
     mFrameLoader->ReallyStartLoading();
@@ -703,17 +703,17 @@ AllDescendantsOfType(nsIDocShellTreeItem
  * A class that automatically sets mInShow to false when it goes
  * out of scope.
  */
 class MOZ_STACK_CLASS AutoResetInShow {
   private:
     nsFrameLoader* mFrameLoader;
     MOZ_DECL_USE_GUARD_OBJECT_NOTIFIER
   public:
-    AutoResetInShow(nsFrameLoader* aFrameLoader MOZ_GUARD_OBJECT_NOTIFIER_PARAM)
+    explicit AutoResetInShow(nsFrameLoader* aFrameLoader MOZ_GUARD_OBJECT_NOTIFIER_PARAM)
       : mFrameLoader(aFrameLoader)
     {
       MOZ_GUARD_OBJECT_NOTIFIER_INIT;
     }
     ~AutoResetInShow() { mFrameLoader->mInShow = false; }
 };
 
 
--- a/content/base/src/nsFrameMessageManager.cpp
+++ b/content/base/src/nsFrameMessageManager.cpp
@@ -888,17 +888,17 @@ nsFrameMessageManager::AssertAppHasStatu
   *aHasStatus = mCallback->CheckAppHasStatus(aStatus);
 
   return NS_OK;
 }
 
 class MMListenerRemover
 {
 public:
-  MMListenerRemover(nsFrameMessageManager* aMM)
+  explicit MMListenerRemover(nsFrameMessageManager* aMM)
     : mWasHandlingMessage(aMM->mHandlingMessage)
     , mMM(aMM)
   {
     mMM->mHandlingMessage = true;
   }
   ~MMListenerRemover()
   {
     if (!mWasHandlingMessage) {
--- a/content/base/src/nsGenConImageContent.cpp
+++ b/content/base/src/nsGenConImageContent.cpp
@@ -19,17 +19,17 @@
 #include "mozilla/EventStates.h"
 
 using namespace mozilla;
 
 class nsGenConImageContent MOZ_FINAL : public nsXMLElement,
                                        public nsImageLoadingContent
 {
 public:
-  nsGenConImageContent(already_AddRefed<mozilla::dom::NodeInfo>& aNodeInfo)
+  explicit nsGenConImageContent(already_AddRefed<mozilla::dom::NodeInfo>& aNodeInfo)
     : nsXMLElement(aNodeInfo)
   {
     // nsImageLoadingContent starts out broken, so we start out
     // suppressed to match it.
     AddStatesSilently(NS_EVENT_STATE_SUPPRESSED);
   }
 
   nsresult Init(imgRequestProxy* aImageRequest)
--- a/content/base/src/nsGenericDOMDataNode.h
+++ b/content/base/src/nsGenericDOMDataNode.h
@@ -60,18 +60,18 @@ ASSERT_NODE_FLAGS_SPACE(NODE_TYPE_SPECIF
 
 class nsGenericDOMDataNode : public nsIContent
 {
 public:
   NS_DECL_CYCLE_COLLECTING_ISUPPORTS
 
   NS_DECL_SIZEOF_EXCLUDING_THIS
 
-  nsGenericDOMDataNode(already_AddRefed<mozilla::dom::NodeInfo>& aNodeInfo);
-  nsGenericDOMDataNode(already_AddRefed<mozilla::dom::NodeInfo>&& aNodeInfo);
+  explicit nsGenericDOMDataNode(already_AddRefed<mozilla::dom::NodeInfo>& aNodeInfo);
+  explicit nsGenericDOMDataNode(already_AddRefed<mozilla::dom::NodeInfo>&& aNodeInfo);
 
   virtual void GetNodeValueInternal(nsAString& aNodeValue) MOZ_OVERRIDE;
   virtual void SetNodeValueInternal(const nsAString& aNodeValue,
                                     mozilla::ErrorResult& aError) MOZ_OVERRIDE;
 
   // Implementation for nsIDOMCharacterData
   nsresult GetData(nsAString& aData) const;
   nsresult SetData(const nsAString& aData);
--- a/content/base/src/nsHostObjectURI.h
+++ b/content/base/src/nsHostObjectURI.h
@@ -17,17 +17,17 @@
  * These URIs refer to host objects: Blobs, with scheme "blob",
  * MediaStreams, with scheme "mediastream", and MediaSources, with scheme
  * "mediasource".
  */
 class nsHostObjectURI : public nsSimpleURI,
                         public nsIURIWithPrincipal
 {
 public:
-  nsHostObjectURI(nsIPrincipal* aPrincipal) :
+  explicit nsHostObjectURI(nsIPrincipal* aPrincipal) :
       nsSimpleURI(), mPrincipal(aPrincipal)
   {}
 
   // For use only from deserialization
   nsHostObjectURI() : nsSimpleURI() {}
 
   NS_DECL_ISUPPORTS_INHERITED
   NS_DECL_NSIURIWITHPRINCIPAL
--- a/content/base/src/nsImageLoadingContent.cpp
+++ b/content/base/src/nsImageLoadingContent.cpp
@@ -1195,17 +1195,17 @@ nsImageLoadingContent::PreparePendingReq
   return mPendingRequest;
 }
 
 namespace {
 
 class ImageRequestAutoLock
 {
 public:
-  ImageRequestAutoLock(imgIRequest* aRequest)
+  explicit ImageRequestAutoLock(imgIRequest* aRequest)
     : mRequest(aRequest)
   {
     if (mRequest) {
       mRequest->LockImage();
     }
   }
 
   ~ImageRequestAutoLock()
--- a/content/base/src/nsImageLoadingContent.h
+++ b/content/base/src/nsImageLoadingContent.h
@@ -191,17 +191,17 @@ protected:
   void OnUnlockedDraw();
   nsresult OnImageIsAnimated(imgIRequest *aRequest);
 
 private:
   /**
    * Struct used to manage the image observers.
    */
   struct ImageObserver {
-    ImageObserver(imgINotificationObserver* aObserver);
+    explicit ImageObserver(imgINotificationObserver* aObserver);
     ~ImageObserver();
 
     nsCOMPtr<imgINotificationObserver> mObserver;
     ImageObserver* mNext;
   };
 
   /**
    * Struct to report state changes
--- a/content/base/src/nsObjectLoadingContent.cpp
+++ b/content/base/src/nsObjectLoadingContent.cpp
@@ -124,17 +124,17 @@ InActiveDocument(nsIContent *aContent)
 }
 
 ///
 /// Runnables and helper classes
 ///
 
 class nsAsyncInstantiateEvent : public nsRunnable {
 public:
-  nsAsyncInstantiateEvent(nsObjectLoadingContent *aContent)
+  explicit nsAsyncInstantiateEvent(nsObjectLoadingContent* aContent)
   : mContent(aContent) {}
 
   ~nsAsyncInstantiateEvent() {}
 
   NS_IMETHOD Run();
 
 private:
   nsCOMPtr<nsIObjectLoadingContent> mContent;
@@ -157,17 +157,17 @@ nsAsyncInstantiateEvent::Run()
 }
 
 // Checks to see if the content for a plugin instance should be unloaded
 // (outside an active document) or stopped (in a document but unrendered). This
 // is used to allow scripts to move a plugin around the document hierarchy
 // without re-instantiating it.
 class CheckPluginStopEvent : public nsRunnable {
 public:
-  CheckPluginStopEvent(nsObjectLoadingContent *aContent)
+  explicit CheckPluginStopEvent(nsObjectLoadingContent* aContent)
   : mContent(aContent) {}
 
   ~CheckPluginStopEvent() {}
 
   NS_IMETHOD Run();
 
 private:
   nsCOMPtr<nsIObjectLoadingContent> mContent;
@@ -454,27 +454,27 @@ nsStopPluginRunnable::Run()
 }
 
 // You can't take the address of bitfield members, so we have two separate
 // classes for these :-/
 
 // Sets a object's mInstantiating bit to false when destroyed
 class AutoSetInstantiatingToFalse {
 public:
-  AutoSetInstantiatingToFalse(nsObjectLoadingContent *aContent)
+  explicit AutoSetInstantiatingToFalse(nsObjectLoadingContent* aContent)
     : mContent(aContent) {}
   ~AutoSetInstantiatingToFalse() { mContent->mInstantiating = false; }
 private:
   nsObjectLoadingContent* mContent;
 };
 
 // Sets a object's mInstantiating bit to false when destroyed
 class AutoSetLoadingToFalse {
 public:
-  AutoSetLoadingToFalse(nsObjectLoadingContent *aContent)
+  explicit AutoSetLoadingToFalse(nsObjectLoadingContent* aContent)
     : mContent(aContent) {}
   ~AutoSetLoadingToFalse() { mContent->mIsLoading = false; }
 private:
   nsObjectLoadingContent* mContent;
 };
 
 ///
 /// Helper functions
@@ -1336,17 +1336,17 @@ public:
   // hence the ugly static cast :(
   NS_FORWARD_NSICHANNELEVENTSINK(static_cast<nsObjectLoadingContent *>
                                  (mContent.get())->)
   NS_FORWARD_NSISTREAMLISTENER  (static_cast<nsObjectLoadingContent *>
                                  (mContent.get())->)
   NS_FORWARD_NSIREQUESTOBSERVER (static_cast<nsObjectLoadingContent *>
                                  (mContent.get())->)
 
-  ObjectInterfaceRequestorShim(nsIObjectLoadingContent* aContent)
+  explicit ObjectInterfaceRequestorShim(nsIObjectLoadingContent* aContent)
     : mContent(aContent)
   {}
 
 protected:
   ~ObjectInterfaceRequestorShim() {}
   nsCOMPtr<nsIObjectLoadingContent> mContent;
 };
 
--- a/content/base/src/nsObjectLoadingContent.h
+++ b/content/base/src/nsObjectLoadingContent.h
@@ -506,17 +506,17 @@ class nsObjectLoadingContent : public ns
 
     // Helper class for SetupProtoChain
     class SetupProtoChainRunner MOZ_FINAL : public nsIRunnable
     {
       ~SetupProtoChainRunner();
     public:
       NS_DECL_ISUPPORTS
 
-      SetupProtoChainRunner(nsObjectLoadingContent* aContent);
+      explicit SetupProtoChainRunner(nsObjectLoadingContent* aContent);
 
       NS_IMETHOD Run() MOZ_OVERRIDE;
 
     private:
       // We store an nsIObjectLoadingContent because we can
       // unambiguously refcount that.
       nsRefPtr<nsIObjectLoadingContent> mContent;
     };
--- a/content/base/src/nsScriptElement.h
+++ b/content/base/src/nsScriptElement.h
@@ -24,17 +24,17 @@ public:
   NS_DECL_NSISCRIPTLOADEROBSERVER
 
   // nsIMutationObserver
   NS_DECL_NSIMUTATIONOBSERVER_CHARACTERDATACHANGED
   NS_DECL_NSIMUTATIONOBSERVER_ATTRIBUTECHANGED
   NS_DECL_NSIMUTATIONOBSERVER_CONTENTAPPENDED
   NS_DECL_NSIMUTATIONOBSERVER_CONTENTINSERTED
 
-  nsScriptElement(mozilla::dom::FromParser aFromParser)
+  explicit nsScriptElement(mozilla::dom::FromParser aFromParser)
     : nsIScriptElement(aFromParser)
   {
   }
 
   virtual nsresult FireErrorEvent() MOZ_OVERRIDE;
 
 protected:
   // Internal methods
--- a/content/base/src/nsScriptLoader.h
+++ b/content/base/src/nsScriptLoader.h
@@ -55,17 +55,17 @@ class nsScriptLoader : public nsIStreamL
     nsCOMPtr<nsIScriptElement> mOldScript;
     nsScriptLoader* mScriptLoader;
   };
 
   friend class nsScriptRequestProcessor;
   friend class AutoCurrentScriptUpdater;
 
 public:
-  nsScriptLoader(nsIDocument* aDocument);
+  explicit nsScriptLoader(nsIDocument* aDocument);
 
   NS_DECL_ISUPPORTS
   NS_DECL_NSISTREAMLOADEROBSERVER
 
   /**
    * The loader maintains a weak reference to the document with
    * which it is initialized. This call forces the reference to
    * be dropped.
@@ -367,17 +367,17 @@ private:
   bool mDeferEnabled;
   bool mDocumentParsingDone;
   bool mBlockingDOMContentLoaded;
 };
 
 class nsAutoScriptLoaderDisabler
 {
 public:
-  nsAutoScriptLoaderDisabler(nsIDocument* aDoc)
+  explicit nsAutoScriptLoaderDisabler(nsIDocument* aDoc)
   {
     mLoader = aDoc->ScriptLoader();
     mWasEnabled = mLoader->GetEnabled();
     if (mWasEnabled) {
       mLoader->SetEnabled(false);
     }
   }
 
--- a/content/base/src/nsSyncLoadService.cpp
+++ b/content/base/src/nsSyncLoadService.cpp
@@ -63,17 +63,17 @@ private:
     nsresult mAsyncLoadStatus;
 };
 
 class nsForceXMLListener : public nsIStreamListener
 {
     virtual ~nsForceXMLListener();
 
 public:
-    nsForceXMLListener(nsIStreamListener* aListener);
+    explicit nsForceXMLListener(nsIStreamListener* aListener);
 
     NS_DECL_ISUPPORTS
     NS_FORWARD_NSISTREAMLISTENER(mListener->)
     NS_DECL_NSIREQUESTOBSERVER
 
 private:
     nsCOMPtr<nsIStreamListener> mListener;
 };
--- a/content/base/src/nsTextNode.h
+++ b/content/base/src/nsTextNode.h
@@ -26,23 +26,23 @@ class nsTextNode : public mozilla::dom::
 private:
   void Init()
   {
     NS_ABORT_IF_FALSE(mNodeInfo->NodeType() == nsIDOMNode::TEXT_NODE,
                       "Bad NodeType in aNodeInfo");
   }
 
 public:
-  nsTextNode(already_AddRefed<mozilla::dom::NodeInfo>& aNodeInfo)
+  explicit nsTextNode(already_AddRefed<mozilla::dom::NodeInfo>& aNodeInfo)
     : mozilla::dom::Text(aNodeInfo)
   {
     Init();
   }
 
-  nsTextNode(nsNodeInfoManager* aNodeInfoManager)
+  explicit nsTextNode(nsNodeInfoManager* aNodeInfoManager)
     : mozilla::dom::Text(aNodeInfoManager->GetTextNodeInfo())
   {
     Init();
   }
 
   // nsISupports
   NS_DECL_ISUPPORTS_INHERITED
 
--- a/content/base/src/nsXMLHttpRequest.cpp
+++ b/content/base/src/nsXMLHttpRequest.cpp
@@ -144,17 +144,17 @@ using namespace mozilla::dom;
     return NS_OK;                                                               \
   }
 
 NS_IMPL_ISUPPORTS(nsXHRParseEndListener, nsIDOMEventListener)
 
 class nsResumeTimeoutsEvent : public nsRunnable
 {
 public:
-  nsResumeTimeoutsEvent(nsPIDOMWindow* aWindow) : mWindow(aWindow) {}
+  explicit nsResumeTimeoutsEvent(nsPIDOMWindow* aWindow) : mWindow(aWindow) {}
 
   NS_IMETHOD Run()
   {
     mWindow->ResumeTimeouts(false);
     return NS_OK;
   }
 
 private:
@@ -3410,17 +3410,17 @@ nsXMLHttpRequest::ChangeState(uint32_t a
 
 /*
  * Simple helper class that just forwards the redirect callback back
  * to the nsXMLHttpRequest.
  */
 class AsyncVerifyRedirectCallbackForwarder MOZ_FINAL : public nsIAsyncVerifyRedirectCallback
 {
 public:
-  AsyncVerifyRedirectCallbackForwarder(nsXMLHttpRequest *xhr)
+  explicit AsyncVerifyRedirectCallbackForwarder(nsXMLHttpRequest* xhr)
     : mXHR(xhr)
   {
   }
 
   NS_DECL_CYCLE_COLLECTING_ISUPPORTS
   NS_DECL_CYCLE_COLLECTION_CLASS(AsyncVerifyRedirectCallbackForwarder)
 
   // nsIAsyncVerifyRedirectCallback implementation
--- a/content/html/content/public/HTMLAudioElement.h
+++ b/content/html/content/public/HTMLAudioElement.h
@@ -16,17 +16,17 @@ typedef uint16_t nsMediaReadyState;
 namespace mozilla {
 namespace dom {
 
 class HTMLAudioElement MOZ_FINAL : public HTMLMediaElement
 {
 public:
   typedef mozilla::dom::NodeInfo NodeInfo;
 
-  HTMLAudioElement(already_AddRefed<NodeInfo>& aNodeInfo);
+  explicit HTMLAudioElement(already_AddRefed<NodeInfo>& aNodeInfo);
 
   // nsIDOMHTMLMediaElement
   using HTMLMediaElement::GetPaused;
 
   virtual nsresult Clone(NodeInfo *aNodeInfo, nsINode **aResult) const MOZ_OVERRIDE;
   virtual nsresult SetAcceptHeader(nsIHttpChannel* aChannel) MOZ_OVERRIDE;
 
   virtual nsIDOMNode* AsDOMNode() MOZ_OVERRIDE { return this; }
--- a/content/html/content/public/HTMLMediaElement.h
+++ b/content/html/content/public/HTMLMediaElement.h
@@ -93,17 +93,17 @@ public:
   typedef mozilla::MediaResource MediaResource;
   typedef mozilla::MediaDecoderOwner MediaDecoderOwner;
   typedef mozilla::MetadataTags MetadataTags;
 
   CORSMode GetCORSMode() {
     return mCORSMode;
   }
 
-  HTMLMediaElement(already_AddRefed<mozilla::dom::NodeInfo>& aNodeInfo);
+  explicit HTMLMediaElement(already_AddRefed<mozilla::dom::NodeInfo>& aNodeInfo);
 
   /**
    * This is used when the browser is constructing a video element to play
    * a channel that we've already started loading. The src attribute and
    * <source> children are ignored.
    * @param aChannel the channel to use
    * @param aListener returns a stream listener that should receive
    * notifications for the stream
@@ -612,17 +612,17 @@ protected:
   class MediaLoadListener;
   class StreamListener;
 
   virtual void GetItemValueText(nsAString& text) MOZ_OVERRIDE;
   virtual void SetItemValueText(const nsAString& text) MOZ_OVERRIDE;
 
   class WakeLockBoolWrapper {
   public:
-    WakeLockBoolWrapper(bool val = false)
+    explicit WakeLockBoolWrapper(bool val = false)
       : mValue(val), mCanPlay(true), mOuter(nullptr) {}
 
     ~WakeLockBoolWrapper();
 
     void SetOuter(HTMLMediaElement* outer) { mOuter = outer; }
     void SetCanPlay(bool aCanPlay);
 
     operator bool() const { return mValue; }
--- a/content/html/content/public/HTMLVideoElement.h
+++ b/content/html/content/public/HTMLVideoElement.h
@@ -16,17 +16,17 @@ namespace dom {
 class WakeLock;
 class VideoPlaybackQuality;
 
 class HTMLVideoElement MOZ_FINAL : public HTMLMediaElement
 {
 public:
   typedef mozilla::dom::NodeInfo NodeInfo;
 
-  HTMLVideoElement(already_AddRefed<NodeInfo>& aNodeInfo);
+  explicit HTMLVideoElement(already_AddRefed<NodeInfo>& aNodeInfo);
 
   NS_IMPL_FROMCONTENT_HTML_WITH_TAG(HTMLVideoElement, video)
 
   using HTMLMediaElement::GetPaused;
 
   NS_IMETHOD_(bool) IsVideo() MOZ_OVERRIDE {
     return true;
   }
--- a/content/html/content/src/HTMLAnchorElement.h
+++ b/content/html/content/src/HTMLAnchorElement.h
@@ -21,17 +21,17 @@ namespace dom {
 class HTMLAnchorElement MOZ_FINAL : public nsGenericHTMLElement,
                                     public nsIDOMHTMLAnchorElement,
                                     public Link
 {
 public:
   using Element::GetText;
   using Element::SetText;
 
-  HTMLAnchorElement(already_AddRefed<mozilla::dom::NodeInfo>& aNodeInfo)
+  explicit HTMLAnchorElement(already_AddRefed<mozilla::dom::NodeInfo>& aNodeInfo)
     : nsGenericHTMLElement(aNodeInfo)
     , Link(MOZ_THIS_IN_INITIALIZER_LIST())
   {
   }
 
   // nsISupports
   NS_DECL_ISUPPORTS_INHERITED
 
--- a/content/html/content/src/HTMLAreaElement.h
+++ b/content/html/content/src/HTMLAreaElement.h
@@ -22,17 +22,17 @@ class EventChainPostVisitor;
 class EventChainPreVisitor;
 namespace dom {
 
 class HTMLAreaElement MOZ_FINAL : public nsGenericHTMLElement,
                                   public nsIDOMHTMLAreaElement,
                                   public Link
 {
 public:
-  HTMLAreaElement(already_AddRefed<mozilla::dom::NodeInfo>& aNodeInfo);
+  explicit HTMLAreaElement(already_AddRefed<mozilla::dom::NodeInfo>& aNodeInfo);
 
   // nsISupports
   NS_DECL_ISUPPORTS_INHERITED
 
   // CC
   NS_DECL_CYCLE_COLLECTION_CLASS_INHERITED(HTMLAreaElement,
                                            nsGenericHTMLElement)
 
--- a/content/html/content/src/HTMLBRElement.h
+++ b/content/html/content/src/HTMLBRElement.h
@@ -13,17 +13,17 @@
 
 namespace mozilla {
 namespace dom {
 
 class HTMLBRElement MOZ_FINAL : public nsGenericHTMLElement,
                                 public nsIDOMHTMLBRElement
 {
 public:
-  HTMLBRElement(already_AddRefed<mozilla::dom::NodeInfo>& aNodeInfo);
+  explicit HTMLBRElement(already_AddRefed<mozilla::dom::NodeInfo>& aNodeInfo);
 
   // nsISupports
   NS_DECL_ISUPPORTS_INHERITED
 
   // nsIDOMHTMLBRElement
   NS_DECL_NSIDOMHTMLBRELEMENT
 
   virtual bool ParseAttribute(int32_t aNamespaceID,
--- a/content/html/content/src/HTMLBodyElement.h
+++ b/content/html/content/src/HTMLBodyElement.h
@@ -16,17 +16,17 @@ namespace dom {
 class OnBeforeUnloadEventHandlerNonNull;
 class HTMLBodyElement;
 
 class BodyRule: public nsIStyleRule
 {
   virtual ~BodyRule();
 
 public:
-  BodyRule(HTMLBodyElement* aPart);
+  explicit BodyRule(HTMLBodyElement* aPart);
 
   NS_DECL_ISUPPORTS
 
   // nsIStyleRule interface
   virtual void MapRuleInfoInto(nsRuleData* aRuleData) MOZ_OVERRIDE;
 #ifdef DEBUG
   virtual void List(FILE* out = stdout, int32_t aIndent = 0) const MOZ_OVERRIDE;
 #endif
@@ -36,17 +36,17 @@ public:
 
 class HTMLBodyElement MOZ_FINAL : public nsGenericHTMLElement,
                                   public nsIDOMHTMLBodyElement
 {
 public:
   using Element::GetText;
   using Element::SetText;
 
-  HTMLBodyElement(already_AddRefed<mozilla::dom::NodeInfo>& aNodeInfo)
+  explicit HTMLBodyElement(already_AddRefed<mozilla::dom::NodeInfo>& aNodeInfo)
     : nsGenericHTMLElement(aNodeInfo)
   {
   }
 
   // nsISupports
   NS_DECL_ISUPPORTS_INHERITED
 
   // nsIDOMHTMLBodyElement
--- a/content/html/content/src/HTMLButtonElement.h
+++ b/content/html/content/src/HTMLButtonElement.h
@@ -18,18 +18,18 @@ namespace dom {
 
 class HTMLButtonElement MOZ_FINAL : public nsGenericHTMLFormElementWithState,
                                     public nsIDOMHTMLButtonElement,
                                     public nsIConstraintValidation
 {
 public:
   using nsIConstraintValidation::GetValidationMessage;
 
-  HTMLButtonElement(already_AddRefed<mozilla::dom::NodeInfo>& aNodeInfo,
-                      FromParser aFromParser = NOT_FROM_PARSER);
+  explicit HTMLButtonElement(already_AddRefed<mozilla::dom::NodeInfo>& aNodeInfo,
+                             FromParser aFromParser = NOT_FROM_PARSER);
 
   NS_DECL_CYCLE_COLLECTION_CLASS_INHERITED(HTMLButtonElement,
                                            nsGenericHTMLFormElementWithState)
 
   // nsISupports
   NS_DECL_ISUPPORTS_INHERITED
 
   virtual int32_t TabIndexDefault() MOZ_OVERRIDE;
--- a/content/html/content/src/HTMLContentElement.h
+++ b/content/html/content/src/HTMLContentElement.h
@@ -14,17 +14,17 @@ struct nsCSSSelectorList;
 namespace mozilla {
 namespace dom {
 
 class DistributedContentList;
 
 class HTMLContentElement MOZ_FINAL : public nsGenericHTMLElement
 {
 public:
-  HTMLContentElement(already_AddRefed<mozilla::dom::NodeInfo>& aNodeInfo);
+  explicit HTMLContentElement(already_AddRefed<mozilla::dom::NodeInfo>& aNodeInfo);
 
   NS_IMPL_FROMCONTENT_HTML_WITH_TAG(HTMLContentElement, content)
 
   // nsISupports
   NS_DECL_ISUPPORTS_INHERITED
 
   NS_DECL_CYCLE_COLLECTION_CLASS_INHERITED(HTMLContentElement,
                                            nsGenericHTMLElement)
@@ -93,17 +93,17 @@ protected:
   nsAutoPtr<nsCSSSelectorList> mSelectorList;
   bool mValidSelector;
   bool mIsInsertionPoint;
 };
 
 class DistributedContentList : public nsINodeList
 {
 public:
-  DistributedContentList(HTMLContentElement* aHostElement);
+  explicit DistributedContentList(HTMLContentElement* aHostElement);
 
   NS_DECL_CYCLE_COLLECTING_ISUPPORTS
   NS_DECL_CYCLE_COLLECTION_CLASS(DistributedContentList)
 
   // nsIDOMNodeList
   NS_DECL_NSIDOMNODELIST
 
   // nsINodeList
--- a/content/html/content/src/HTMLDataElement.h
+++ b/content/html/content/src/HTMLDataElement.h
@@ -12,17 +12,17 @@
 #include "nsGkAtoms.h"
 
 namespace mozilla {
 namespace dom {
 
 class HTMLDataElement MOZ_FINAL : public nsGenericHTMLElement
 {
 public:
-  HTMLDataElement(already_AddRefed<mozilla::dom::NodeInfo>& aNodeInfo);
+  explicit HTMLDataElement(already_AddRefed<mozilla::dom::NodeInfo>& aNodeInfo);
 
   // HTMLDataElement WebIDL
   void GetValue(nsAString& aValue)
   {
     GetHTMLAttr(nsGkAtoms::value, aValue);
   }
 
   void SetValue(const nsAString& aValue, ErrorResult& aError)
--- a/content/html/content/src/HTMLDataListElement.h
+++ b/content/html/content/src/HTMLDataListElement.h
@@ -10,17 +10,17 @@
 #include "nsContentList.h"
 
 namespace mozilla {
 namespace dom {
 
 class HTMLDataListElement MOZ_FINAL : public nsGenericHTMLElement
 {
 public:
-  HTMLDataListElement(already_AddRefed<mozilla::dom::NodeInfo>& aNodeInfo)
+  explicit HTMLDataListElement(already_AddRefed<mozilla::dom::NodeInfo>& aNodeInfo)
     : nsGenericHTMLElement(aNodeInfo)
   {
   }
 
   // nsISupports
   NS_DECL_ISUPPORTS_INHERITED
 
   nsContentList* Options()
--- a/content/html/content/src/HTMLDivElement.h
+++ b/content/html/content/src/HTMLDivElement.h
@@ -11,17 +11,17 @@
 
 namespace mozilla {
 namespace dom {
 
 class HTMLDivElement MOZ_FINAL : public nsGenericHTMLElement,
                                  public nsIDOMHTMLDivElement
 {
 public:
-  HTMLDivElement(already_AddRefed<mozilla::dom::NodeInfo>& aNodeInfo)
+  explicit HTMLDivElement(already_AddRefed<mozilla::dom::NodeInfo>& aNodeInfo)
     : nsGenericHTMLElement(aNodeInfo)
   {
   }
 
   // nsISupports
   NS_DECL_ISUPPORTS_INHERITED
 
   // nsIDOMHTMLDivElement
--- a/content/html/content/src/HTMLElement.cpp
+++ b/content/html/content/src/HTMLElement.cpp
@@ -8,17 +8,17 @@
 #include "nsContentUtils.h"
 
 namespace mozilla {
 namespace dom {
 
 class HTMLElement MOZ_FINAL : public nsGenericHTMLElement
 {
 public:
-  HTMLElement(already_AddRefed<mozilla::dom::NodeInfo>& aNodeInfo);
+  explicit HTMLElement(already_AddRefed<mozilla::dom::NodeInfo>& aNodeInfo);
   virtual ~HTMLElement();
 
   NS_IMETHOD GetInnerHTML(nsAString& aInnerHTML) MOZ_OVERRIDE;
 
   virtual nsresult Clone(mozilla::dom::NodeInfo* aNodeInfo,
                          nsINode** aResult) const MOZ_OVERRIDE;
 
 protected:
--- a/content/html/content/src/HTMLFieldSetElement.h
+++ b/content/html/content/src/HTMLFieldSetElement.h
@@ -22,17 +22,17 @@ class HTMLFieldSetElement MOZ_FINAL : pu
                                       public nsIConstraintValidation
 {
 public:
   using nsGenericHTMLFormElement::GetForm;
   using nsIConstraintValidation::Validity;
   using nsIConstraintValidation::CheckValidity;
   using nsIConstraintValidation::GetValidationMessage;
 
-  HTMLFieldSetElement(already_AddRefed<mozilla::dom::NodeInfo>& aNodeInfo);
+  explicit HTMLFieldSetElement(already_AddRefed<mozilla::dom::NodeInfo>& aNodeInfo);
 
   NS_IMPL_FROMCONTENT_HTML_WITH_TAG(HTMLFieldSetElement, fieldset)
 
   // nsISupports
   NS_DECL_ISUPPORTS_INHERITED
 
   // nsIDOMHTMLFieldSetElement
   NS_DECL_NSIDOMHTMLFIELDSETELEMENT
--- a/content/html/content/src/HTMLFontElement.h
+++ b/content/html/content/src/HTMLFontElement.h
@@ -9,17 +9,17 @@
 #include "nsGenericHTMLElement.h"
 
 namespace mozilla {
 namespace dom {
 
 class HTMLFontElement MOZ_FINAL : public nsGenericHTMLElement
 {
 public:
-  HTMLFontElement(already_AddRefed<mozilla::dom::NodeInfo>& aNodeInfo)
+  explicit HTMLFontElement(already_AddRefed<mozilla::dom::NodeInfo>& aNodeInfo)
     : nsGenericHTMLElement(aNodeInfo)
   {
   }
 
   void GetColor(nsString& aColor)
   {
     GetHTMLAttr(nsGkAtoms::color, aColor);
   }
--- a/content/html/content/src/HTMLFormControlsCollection.h
+++ b/content/html/content/src/HTMLFormControlsCollection.h
@@ -22,17 +22,17 @@ class HTMLFormElement;
 class HTMLImageElement;
 class OwningRadioNodeListOrElement;
 template<typename> struct Nullable;
 
 class HTMLFormControlsCollection : public nsIHTMLCollection
                                  , public nsWrapperCache
 {
 public:
-  HTMLFormControlsCollection(HTMLFormElement* aForm);
+  explicit HTMLFormControlsCollection(HTMLFormElement* aForm);
 
   void DropFormReference();
 
   NS_DECL_CYCLE_COLLECTING_ISUPPORTS
 
   // nsIDOMHTMLCollection interface
   NS_DECL_NSIDOMHTMLCOLLECTION
 
--- a/content/html/content/src/HTMLFormElement.h
+++ b/content/html/content/src/HTMLFormElement.h
@@ -37,17 +37,17 @@ class HTMLFormElement MOZ_FINAL : public
                                   public nsIDOMHTMLFormElement,
                                   public nsIWebProgressListener,
                                   public nsIForm,
                                   public nsIRadioGroupContainer
 {
   friend class HTMLFormControlsCollection;
 
 public:
-  HTMLFormElement(already_AddRefed<mozilla::dom::NodeInfo>& aNodeInfo);
+  explicit HTMLFormElement(already_AddRefed<mozilla::dom::NodeInfo>& aNodeInfo);
 
   enum {
     FORM_CONTROL_LIST_HASHTABLE_LENGTH = 8
   };
 
   // nsISupports
   NS_DECL_ISUPPORTS_INHERITED
 
@@ -432,17 +432,17 @@ protected:
 
   nsRefPtr<FormPasswordEventDispatcher> mFormPasswordEventDispatcher;
 
   class RemoveElementRunnable;
   friend class RemoveElementRunnable;
 
   class RemoveElementRunnable : public nsRunnable {
   public:
-    RemoveElementRunnable(HTMLFormElement* aForm)
+    explicit RemoveElementRunnable(HTMLFormElement* aForm)
       : mForm(aForm)
     {}
 
     NS_IMETHOD Run() MOZ_OVERRIDE {
       mForm->HandleDefaultSubmitRemoval();
       return NS_OK;
     }
 
--- a/content/html/content/src/HTMLFrameElement.h
+++ b/content/html/content/src/HTMLFrameElement.h
@@ -17,18 +17,18 @@ namespace mozilla {
 namespace dom {
 
 class HTMLFrameElement MOZ_FINAL : public nsGenericHTMLFrameElement,
                                    public nsIDOMHTMLFrameElement
 {
 public:
   using nsGenericHTMLFrameElement::SwapFrameLoaders;
 
-  HTMLFrameElement(already_AddRefed<mozilla::dom::NodeInfo>& aNodeInfo,
-                   FromParser aFromParser = NOT_FROM_PARSER);
+  explicit HTMLFrameElement(already_AddRefed<mozilla::dom::NodeInfo>& aNodeInfo,
+                            FromParser aFromParser = NOT_FROM_PARSER);
 
   // nsISupports
   NS_DECL_ISUPPORTS_INHERITED
 
   // nsIDOMHTMLFrameElement
   NS_DECL_NSIDOMHTMLFRAMEELEMENT
 
   // nsIContent
--- a/content/html/content/src/HTMLFrameSetElement.h
+++ b/content/html/content/src/HTMLFrameSetElement.h
@@ -41,17 +41,17 @@ namespace mozilla {
 namespace dom {
 
 class OnBeforeUnloadEventHandlerNonNull;
 
 class HTMLFrameSetElement MOZ_FINAL : public nsGenericHTMLElement,
                                       public nsIDOMHTMLFrameSetElement
 {
 public:
-  HTMLFrameSetElement(already_AddRefed<mozilla::dom::NodeInfo>& aNodeInfo)
+  explicit HTMLFrameSetElement(already_AddRefed<mozilla::dom::NodeInfo>& aNodeInfo)
     : nsGenericHTMLElement(aNodeInfo),
       mNumRows(0),
       mNumCols(0),
       mCurrentRowColHint(NS_STYLE_HINT_REFLOW)
   {
     SetHasWeirdParserInsertionMode();
   }
 
--- a/content/html/content/src/HTMLHRElement.h
+++ b/content/html/content/src/HTMLHRElement.h
@@ -15,17 +15,17 @@
 
 namespace mozilla {
 namespace dom {
 
 class HTMLHRElement MOZ_FINAL : public nsGenericHTMLElement,
                                 public nsIDOMHTMLHRElement
 {
 public:
-  HTMLHRElement(already_AddRefed<mozilla::dom::NodeInfo>& aNodeInfo);
+  explicit HTMLHRElement(already_AddRefed<mozilla::dom::NodeInfo>& aNodeInfo);
 
   // nsISupports
   NS_DECL_ISUPPORTS_INHERITED
 
   // nsIDOMHTMLHRElement
   NS_DECL_NSIDOMHTMLHRELEMENT
 
   virtual bool ParseAttribute(int32_t aNamespaceID,
--- a/content/html/content/src/HTMLHeadingElement.h
+++ b/content/html/content/src/HTMLHeadingElement.h
@@ -12,17 +12,17 @@
 
 namespace mozilla {
 namespace dom {
 
 class HTMLHeadingElement MOZ_FINAL : public nsGenericHTMLElement,
 				     public nsIDOMHTMLHeadingElement
 {
 public:
-  HTMLHeadingElement(already_AddRefed<mozilla::dom::NodeInfo>& aNodeInfo)
+  explicit HTMLHeadingElement(already_AddRefed<mozilla::dom::NodeInfo>& aNodeInfo)
     : nsGenericHTMLElement(aNodeInfo)
   {
   }
 
   // nsISupports
   NS_DECL_ISUPPORTS_INHERITED
 
   // nsIDOMHTMLHeadingElement
--- a/content/html/content/src/HTMLIFrameElement.h
+++ b/content/html/content/src/HTMLIFrameElement.h
@@ -13,18 +13,18 @@
 
 namespace mozilla {
 namespace dom {
 
 class HTMLIFrameElement MOZ_FINAL : public nsGenericHTMLFrameElement
                                   , public nsIDOMHTMLIFrameElement
 {
 public:
-  HTMLIFrameElement(already_AddRefed<mozilla::dom::NodeInfo>& aNodeInfo,
-                    FromParser aFromParser = NOT_FROM_PARSER);
+  explicit HTMLIFrameElement(already_AddRefed<mozilla::dom::NodeInfo>& aNodeInfo,
+                             FromParser aFromParser = NOT_FROM_PARSER);
 
   NS_IMPL_FROMCONTENT_HTML_WITH_TAG(HTMLIFrameElement, iframe)
 
   // nsISupports
   NS_DECL_ISUPPORTS_INHERITED
 
   // nsIDOMHTMLIFrameElement
   NS_DECL_NSIDOMHTMLIFRAMEELEMENT
--- a/content/html/content/src/HTMLInputElement.cpp
+++ b/content/html/content/src/HTMLInputElement.cpp
@@ -332,17 +332,17 @@ namespace {
 class DirPickerRecursiveFileEnumerator MOZ_FINAL
   : public nsISimpleEnumerator
 {
   ~DirPickerRecursiveFileEnumerator() {}
 
 public:
   NS_DECL_ISUPPORTS
 
-  DirPickerRecursiveFileEnumerator(nsIFile* aTopDir)
+  explicit DirPickerRecursiveFileEnumerator(nsIFile* aTopDir)
     : mTopDir(aTopDir)
   {
     MOZ_ASSERT(!NS_IsMainThread(), "This class blocks on I/O!");
 
 #ifdef DEBUG
     {
       bool isDir;
       aTopDir->IsDirectory(&isDir);
--- a/content/html/content/src/HTMLInputElement.h
+++ b/content/html/content/src/HTMLInputElement.h
@@ -1352,17 +1352,17 @@ private:
            aType == NS_FORM_INPUT_RANGE ||
            aType == NS_FORM_INPUT_NUMBER;
   }
 
   struct nsFilePickerFilter {
     nsFilePickerFilter()
       : mFilterMask(0), mIsTrusted(false) {}
 
-    nsFilePickerFilter(int32_t aFilterMask)
+    explicit nsFilePickerFilter(int32_t aFilterMask)
       : mFilterMask(aFilterMask), mIsTrusted(true) {}
 
     nsFilePickerFilter(const nsString& aTitle,
                        const nsString& aFilter,
                        const bool aIsTrusted = false)
       : mFilterMask(0), mTitle(aTitle), mFilter(aFilter), mIsTrusted(aIsTrusted) {}
 
     nsFilePickerFilter(const nsFilePickerFilter& other) {
--- a/content/html/content/src/HTMLLIElement.h
+++ b/content/html/content/src/HTMLLIElement.h
@@ -13,17 +13,17 @@
 
 namespace mozilla {
 namespace dom {
 
 class HTMLLIElement MOZ_FINAL : public nsGenericHTMLElement,
                                 public nsIDOMHTMLLIElement
 {
 public:
-  HTMLLIElement(already_AddRefed<mozilla::dom::NodeInfo>& aNodeInfo)
+  explicit HTMLLIElement(already_AddRefed<mozilla::dom::NodeInfo>& aNodeInfo)
     : nsGenericHTMLElement(aNodeInfo)
   {
   }
 
   // nsISupports
   NS_DECL_ISUPPORTS_INHERITED
 
   // nsIDOMHTMLLIElement
--- a/content/html/content/src/HTMLLabelElement.h
+++ b/content/html/content/src/HTMLLabelElement.h
@@ -16,17 +16,17 @@
 namespace mozilla {
 class EventChainPostVisitor;
 namespace dom {
 
 class HTMLLabelElement MOZ_FINAL : public nsGenericHTMLFormElement,
                                    public nsIDOMHTMLLabelElement
 {
 public:
-  HTMLLabelElement(already_AddRefed<mozilla::dom::NodeInfo>& aNodeInfo)
+  explicit HTMLLabelElement(already_AddRefed<mozilla::dom::NodeInfo>& aNodeInfo)
     : nsGenericHTMLFormElement(aNodeInfo),
       mHandlingEvent(false)
   {
   }
 
   NS_IMPL_FROMCONTENT_HTML_WITH_TAG(HTMLLabelElement, label)
 
   // nsISupports
--- a/content/html/content/src/HTMLLegendElement.h
+++ b/content/html/content/src/HTMLLegendElement.h
@@ -11,17 +11,17 @@
 #include "mozilla/dom/HTMLFormElement.h"
 
 namespace mozilla {
 namespace dom {
 
 class HTMLLegendElement MOZ_FINAL : public nsGenericHTMLElement
 {
 public:
-  HTMLLegendElement(already_AddRefed<mozilla::dom::NodeInfo>& aNodeInfo)
+  explicit HTMLLegendElement(already_AddRefed<mozilla::dom::NodeInfo>& aNodeInfo)
     : nsGenericHTMLElement(aNodeInfo)
   {
   }
 
   NS_IMPL_FROMCONTENT_HTML_WITH_TAG(HTMLLegendElement, legend)
 
   using nsGenericHTMLElement::Focus;
   virtual void Focus(ErrorResult& aError) MOZ_OVERRIDE;
--- a/content/html/content/src/HTMLLinkElement.h
+++ b/content/html/content/src/HTMLLinkElement.h
@@ -19,17 +19,17 @@ class EventChainPreVisitor;
 namespace dom {
 
 class HTMLLinkElement MOZ_FINAL : public nsGenericHTMLElement,
                                   public nsIDOMHTMLLinkElement,
                                   public nsStyleLinkElement,
                                   public Link
 {
 public:
-  HTMLLinkElement(already_AddRefed<mozilla::dom::NodeInfo>& aNodeInfo);
+  explicit HTMLLinkElement(already_AddRefed<mozilla::dom::NodeInfo>& aNodeInfo);
 
   // nsISupports
   NS_DECL_ISUPPORTS_INHERITED
 
   // CC
   NS_DECL_CYCLE_COLLECTION_CLASS_INHERITED(HTMLLinkElement,
                                            nsGenericHTMLElement)
 
--- a/content/html/content/src/HTMLMapElement.h
+++ b/content/html/content/src/HTMLMapElement.h
@@ -16,17 +16,17 @@ class nsContentList;
 
 namespace mozilla {
 namespace dom {
 
 class HTMLMapElement MOZ_FINAL : public nsGenericHTMLElement,
                                  public nsIDOMHTMLMapElement
 {
 public:
-  HTMLMapElement(already_AddRefed<mozilla::dom::NodeInfo>& aNodeInfo);
+  explicit HTMLMapElement(already_AddRefed<mozilla::dom::NodeInfo>& aNodeInfo);
 
   // nsISupports
   NS_DECL_ISUPPORTS_INHERITED
 
   // nsIDOMHTMLMapElement
   NS_DECL_NSIDOMHTMLMAPELEMENT
 
   virtual nsresult Clone(mozilla::dom::NodeInfo *aNodeInfo, nsINode **aResult) const MOZ_OVERRIDE;
--- a/content/html/content/src/HTMLMediaElement.cpp
+++ b/content/html/content/src/HTMLMediaElement.cpp
@@ -168,17 +168,17 @@ static const double THRESHOLD_LOW_PLAYBA
 // garbage collected while there are still event listeners that should
 // receive events. If we neglect to remove the self-reference then the element
 // just lives longer than it needs to.
 
 class nsMediaEvent : public nsRunnable
 {
 public:
 
-  nsMediaEvent(HTMLMediaElement* aElement) :
+  explicit nsMediaEvent(HTMLMediaElement* aElement) :
     mElement(aElement),
     mLoadID(mElement->GetCurrentLoadID()) {}
   ~nsMediaEvent() {}
 
   NS_IMETHOD Run() = 0;
 
 protected:
   bool IsCancelled() {
@@ -251,17 +251,17 @@ class HTMLMediaElement::MediaLoadListene
   NS_DECL_ISUPPORTS
   NS_DECL_NSIREQUESTOBSERVER
   NS_DECL_NSISTREAMLISTENER
   NS_DECL_NSICHANNELEVENTSINK
   NS_DECL_NSIOBSERVER
   NS_DECL_NSIINTERFACEREQUESTOR
 
 public:
-  MediaLoadListener(HTMLMediaElement* aElement)
+  explicit MediaLoadListener(HTMLMediaElement* aElement)
     : mElement(aElement),
       mLoadID(aElement->GetCurrentLoadID())
   {
     NS_ABORT_IF_FALSE(mElement, "Must pass an element to call back");
   }
 
 private:
   nsRefPtr<HTMLMediaElement> mElement;
@@ -1899,17 +1899,17 @@ NS_IMETHODIMP HTMLMediaElement::MozCaptu
 NS_IMETHODIMP HTMLMediaElement::GetMozAudioCaptured(bool* aCaptured)
 {
   *aCaptured = MozAudioCaptured();
   return NS_OK;
 }
 
 class MediaElementSetForURI : public nsURIHashKey {
 public:
-  MediaElementSetForURI(const nsIURI* aKey) : nsURIHashKey(aKey) {}
+  explicit MediaElementSetForURI(const nsIURI* aKey) : nsURIHashKey(aKey) {}
   MediaElementSetForURI(const MediaElementSetForURI& toCopy)
     : nsURIHashKey(toCopy), mElements(toCopy.mElements) {}
   nsTArray<HTMLMediaElement*> mElements;
 };
 
 typedef nsTHashtable<MediaElementSetForURI> MediaElementURITable;
 // Elements in this table must have non-null mDecoder and mLoadingSrc, and those
 // can't change while the element is in the table. The table is keyed by
@@ -2703,17 +2703,17 @@ nsresult HTMLMediaElement::FinishDecoder
     "Media element should have single table entry if decode initialized");
 
   mBegun = true;
   return rv;
 }
 
 class HTMLMediaElement::StreamListener : public MediaStreamListener {
 public:
-  StreamListener(HTMLMediaElement* aElement) :
+  explicit StreamListener(HTMLMediaElement* aElement) :
     mElement(aElement),
     mHaveCurrentData(false),
     mBlocked(false),
     mMutex("HTMLMediaElement::StreamListener"),
     mPendingNotifyOutput(false)
   {}
   void Forget() { mElement = nullptr; }
 
--- a/content/html/content/src/HTMLMenuElement.h
+++ b/content/html/content/src/HTMLMenuElement.h
@@ -14,17 +14,17 @@
 namespace mozilla {
 namespace dom {
 
 class HTMLMenuElement MOZ_FINAL : public nsGenericHTMLElement,
                                   public nsIDOMHTMLMenuElement,
                                   public nsIHTMLMenu
 {
 public:
-  HTMLMenuElement(already_AddRefed<mozilla::dom::NodeInfo>& aNodeInfo);
+  explicit HTMLMenuElement(already_AddRefed<mozilla::dom::NodeInfo>& aNodeInfo);
 
   NS_IMPL_FROMCONTENT_HTML_WITH_TAG(HTMLMenuElement, menu)
 
   // nsISupports
   NS_DECL_ISUPPORTS_INHERITED
 
   // nsIDOMHTMLMenuElement
   NS_DECL_NSIDOMHTMLMENUELEMENT
--- a/content/html/content/src/HTMLMenuItemElement.cpp
+++ b/content/html/content/src/HTMLMenuItemElement.cpp
@@ -54,17 +54,17 @@ public:
    */
   virtual bool Visit(HTMLMenuItemElement* aMenuItem) = 0;
 };
 
 // Find the selected radio, see GetSelectedRadio().
 class GetCheckedVisitor : public Visitor
 {
 public:
-  GetCheckedVisitor(HTMLMenuItemElement** aResult)
+  explicit GetCheckedVisitor(HTMLMenuItemElement** aResult)
     : mResult(aResult)
     { }
   virtual bool Visit(HTMLMenuItemElement* aMenuItem)
   {
     if (aMenuItem->IsChecked()) {
       *mResult = aMenuItem;
       return false;
     }
@@ -73,17 +73,17 @@ public:
 protected:
   HTMLMenuItemElement** mResult;
 };
 
 // Deselect all radios except the one passed to the constructor.
 class ClearCheckedVisitor : public Visitor
 {
 public:
-  ClearCheckedVisitor(HTMLMenuItemElement* aExcludeMenuItem)
+  explicit ClearCheckedVisitor(HTMLMenuItemElement* aExcludeMenuItem)
     : mExcludeMenuItem(aExcludeMenuItem)
     { }
   virtual bool Visit(HTMLMenuItemElement* aMenuItem)
   {
     if (aMenuItem != mExcludeMenuItem && aMenuItem->IsChecked()) {
       aMenuItem->ClearChecked();
     }
     return true;
--- a/content/html/content/src/HTMLMetaElement.h
+++ b/content/html/content/src/HTMLMetaElement.h
@@ -12,17 +12,17 @@
 
 namespace mozilla {
 namespace dom {
 
 class HTMLMetaElement MOZ_FINAL : public nsGenericHTMLElement,
                                   public nsIDOMHTMLMetaElement
 {
 public:
-  HTMLMetaElement(already_AddRefed<mozilla::dom::NodeInfo>& aNodeInfo);
+  explicit HTMLMetaElement(already_AddRefed<mozilla::dom::NodeInfo>& aNodeInfo);
 
   // nsISupports
   NS_DECL_ISUPPORTS_INHERITED
 
   // nsIDOMHTMLMetaElement
   NS_DECL_NSIDOMHTMLMETAELEMENT
 
   virtual nsresult BindToTree(nsIDocument* aDocument, nsIContent* aParent,
--- a/content/html/content/src/HTMLMeterElement.h
+++ b/content/html/content/src/HTMLMeterElement.h
@@ -14,17 +14,17 @@
 #include <algorithm>
 
 namespace mozilla {
 namespace dom {
 
 class HTMLMeterElement MOZ_FINAL : public nsGenericHTMLElement
 {
 public:
-  HTMLMeterElement(already_AddRefed<mozilla::dom::NodeInfo>& aNodeInfo);
+  explicit HTMLMeterElement(already_AddRefed<mozilla::dom::NodeInfo>& aNodeInfo);
 
   virtual EventStates IntrinsicState() const MOZ_OVERRIDE;
 
   nsresult Clone(mozilla::dom::NodeInfo* aNodeInfo, nsINode** aResult) const MOZ_OVERRIDE;
 
   bool ParseAttribute(int32_t aNamespaceID, nsIAtom* aAttribute,
                       const nsAString& aValue, nsAttrValue& aResult) MOZ_OVERRIDE;
 
--- a/content/html/content/src/HTMLModElement.h
+++ b/content/html/content/src/HTMLModElement.h
@@ -11,17 +11,17 @@
 #include "nsGkAtoms.h"
 
 namespace mozilla {
 namespace dom {
 
 class HTMLModElement MOZ_FINAL : public nsGenericHTMLElement
 {
 public:
-  HTMLModElement(already_AddRefed<mozilla::dom::NodeInfo>& aNodeInfo);
+  explicit HTMLModElement(already_AddRefed<mozilla::dom::NodeInfo>& aNodeInfo);
 
   virtual nsresult Clone(mozilla::dom::NodeInfo *aNodeInfo, nsINode **aResult) const MOZ_OVERRIDE;
 
   void GetCite(nsString& aCite)
   {
     GetHTMLURIAttr(nsGkAtoms::cite, aCite);
   }
   void SetCite(const nsAString& aCite, ErrorResult& aRv)
--- a/content/html/content/src/HTMLObjectElement.h
+++ b/content/html/content/src/HTMLObjectElement.h
@@ -17,18 +17,18 @@ namespace mozilla {
 namespace dom {
 
 class HTMLObjectElement MOZ_FINAL : public nsGenericHTMLFormElement
                                   , public nsObjectLoadingContent
                                   , public nsIDOMHTMLObjectElement
                                   , public nsIConstraintValidation
 {
 public:
-  HTMLObjectElement(already_AddRefed<mozilla::dom::NodeInfo>& aNodeInfo,
-                    FromParser aFromParser = NOT_FROM_PARSER);
+  explicit HTMLObjectElement(already_AddRefed<mozilla::dom::NodeInfo>& aNodeInfo,
+                             FromParser aFromParser = NOT_FROM_PARSER);
 
   // nsISupports
   NS_DECL_ISUPPORTS_INHERITED
 
   virtual int32_t TabIndexDefault() MOZ_OVERRIDE;
 
   // nsIDOMHTMLObjectElement
   NS_DECL_NSIDOMHTMLOBJECTELEMENT
--- a/content/html/content/src/HTMLOptGroupElement.h
+++ b/content/html/content/src/HTMLOptGroupElement.h
@@ -13,17 +13,17 @@
 namespace mozilla {
 class EventChainPreVisitor;
 namespace dom {
 
 class HTMLOptGroupElement MOZ_FINAL : public nsGenericHTMLElement,
                                       public nsIDOMHTMLOptGroupElement
 {
 public:
-  HTMLOptGroupElement(already_AddRefed<mozilla::dom::NodeInfo>& aNodeInfo);
+  explicit HTMLOptGroupElement(already_AddRefed<mozilla::dom::NodeInfo>& aNodeInfo);
 
   NS_IMPL_FROMCONTENT_HTML_WITH_TAG(HTMLOptGroupElement, optgroup)
 
   // nsISupports
   NS_DECL_ISUPPORTS_INHERITED
 
   // nsIDOMHTMLOptGroupElement
   NS_DECL_NSIDOMHTMLOPTGROUPELEMENT
--- a/content/html/content/src/HTMLOptionElement.h
+++ b/content/html/content/src/HTMLOptionElement.h
@@ -17,17 +17,17 @@ namespace mozilla {
 namespace dom {
 
 class HTMLSelectElement;
 
 class HTMLOptionElement MOZ_FINAL : public nsGenericHTMLElement,
                                     public nsIDOMHTMLOptionElement
 {
 public:
-  HTMLOptionElement(already_AddRefed<mozilla::dom::NodeInfo>& aNodeInfo);
+  explicit HTMLOptionElement(already_AddRefed<mozilla::dom::NodeInfo>& aNodeInfo);
 
   static already_AddRefed<HTMLOptionElement>
     Option(const GlobalObject& aGlobal,
            const Optional<nsAString>& aText,
            const Optional<nsAString>& aValue,
            const Optional<bool>& aDefaultSelected,
            const Optional<bool>& aSelected, ErrorResult& aError);
 
--- a/content/html/content/src/HTMLOptionsCollection.h
+++ b/content/html/content/src/HTMLOptionsCollection.h
@@ -30,17 +30,17 @@ class HTMLSelectElement;
  * select.options in DOM)
  */
 class HTMLOptionsCollection MOZ_FINAL : public nsIHTMLCollection
                                       , public nsIDOMHTMLOptionsCollection
                                       , public nsWrapperCache
 {
   typedef HTMLOptionElementOrHTMLOptGroupElement HTMLOptionOrOptGroupElement;
 public:
-  HTMLOptionsCollection(HTMLSelectElement* aSelect);
+  explicit HTMLOptionsCollection(HTMLSelectElement* aSelect);
 
   NS_DECL_CYCLE_COLLECTING_ISUPPORTS
 
   // nsWrapperCache
   using nsWrapperCache::GetWrapperPreserveColor;
   virtual JSObject* WrapObject(JSContext* aCx) MOZ_OVERRIDE;
 protected:
   virtual ~HTMLOptionsCollection();
--- a/content/html/content/src/HTMLOutputElement.h
+++ b/content/html/content/src/HTMLOutputElement.h
@@ -16,18 +16,18 @@ namespace dom {
 
 class HTMLOutputElement MOZ_FINAL : public nsGenericHTMLFormElement,
                                     public nsStubMutationObserver,
                                     public nsIConstraintValidation
 {
 public:
   using nsIConstraintValidation::GetValidationMessage;
 
-  HTMLOutputElement(already_AddRefed<mozilla::dom::NodeInfo>& aNodeInfo,
-                    FromParser aFromParser = NOT_FROM_PARSER);
+  explicit HTMLOutputElement(already_AddRefed<mozilla::dom::NodeInfo>& aNodeInfo,
+                             FromParser aFromParser = NOT_FROM_PARSER);
 
   // nsISupports
   NS_DECL_ISUPPORTS_INHERITED
 
   // nsIFormControl
   NS_IMETHOD_(uint32_t) GetType() const { return NS_FORM_OUTPUT; }
   NS_IMETHOD Reset() MOZ_OVERRIDE;
   NS_IMETHOD SubmitNamesValues(nsFormSubmission* aFormSubmission) MOZ_OVERRIDE;
--- a/content/html/content/src/HTMLParagraphElement.h
+++ b/content/html/content/src/HTMLParagraphElement.h
@@ -13,17 +13,17 @@
 
 namespace mozilla {
 namespace dom {
 
 class HTMLParagraphElement MOZ_FINAL : public nsGenericHTMLElement,
                                        public nsIDOMHTMLParagraphElement
 {
 public:
-  HTMLParagraphElement(already_AddRefed<mozilla::dom::NodeInfo>& aNodeInfo)
+  explicit HTMLParagraphElement(already_AddRefed<mozilla::dom::NodeInfo>& aNodeInfo)
     : nsGenericHTMLElement(aNodeInfo)
   {
   }
 
   // nsISupports
   NS_DECL_ISUPPORTS_INHERITED
 
   // nsIDOMHTMLParagraphElement
--- a/content/html/content/src/HTMLPictureElement.h
+++ b/content/html/content/src/HTMLPictureElement.h
@@ -15,17 +15,17 @@
 
 namespace mozilla {
 namespace dom {
 
 class HTMLPictureElement MOZ_FINAL : public nsGenericHTMLElement,
                                     public nsIDOMHTMLPictureElement
 {
 public:
-  HTMLPictureElement(already_AddRefed<mozilla::dom::NodeInfo>& aNodeInfo);
+  explicit HTMLPictureElement(already_AddRefed<mozilla::dom::NodeInfo>& aNodeInfo);
 
   // nsISupports
   NS_DECL_ISUPPORTS_INHERITED
 
   // nsIDOMHTMLPictureElement
   NS_DECL_NSIDOMHTMLPICTUREELEMENT
 
   virtual nsresult Clone(mozilla::dom::NodeInfo* aNodeInfo, nsINode** aResult) const MOZ_OVERRIDE;
--- a/content/html/content/src/HTMLPreElement.h
+++ b/content/html/content/src/HTMLPreElement.h
@@ -13,17 +13,17 @@
 
 namespace mozilla {
 namespace dom {
 
 class HTMLPreElement MOZ_FINAL : public nsGenericHTMLElement,
                                  public nsIDOMHTMLPreElement
 {
 public:
-  HTMLPreElement(already_AddRefed<mozilla::dom::NodeInfo>& aNodeInfo)
+  explicit HTMLPreElement(already_AddRefed<mozilla::dom::NodeInfo>& aNodeInfo)
     : nsGenericHTMLElement(aNodeInfo)
   {
   }
 
   // nsISupports
   NS_DECL_ISUPPORTS_INHERITED
 
   // nsIDOMHTMLPreElement
--- a/content/html/content/src/HTMLProgressElement.h
+++ b/content/html/content/src/HTMLProgressElement.h
@@ -13,17 +13,17 @@
 #include <algorithm>
 
 namespace mozilla {
 namespace dom {
 
 class HTMLProgressElement MOZ_FINAL : public nsGenericHTMLElement
 {
 public:
-  HTMLProgressElement(already_AddRefed<mozilla::dom::NodeInfo>& aNodeInfo);
+  explicit HTMLProgressElement(already_AddRefed<mozilla::dom::NodeInfo>& aNodeInfo);
 
   EventStates IntrinsicState() const MOZ_OVERRIDE;
 
   nsresult Clone(mozilla::dom::NodeInfo* aNodeInfo, nsINode** aResult) const MOZ_OVERRIDE;
 
   bool ParseAttribute(int32_t aNamespaceID, nsIAtom* aAttribute,
                         const nsAString& aValue, nsAttrValue& aResult) MOZ_OVERRIDE;
 
--- a/content/html/content/src/HTMLPropertiesCollection.h
+++ b/content/html/content/src/HTMLPropertiesCollection.h
@@ -29,17 +29,17 @@ namespace dom {
 
 class HTMLPropertiesCollection;
 class PropertyNodeList;
 class Element;
 
 class PropertyStringList : public DOMStringList
 {
 public:
-  PropertyStringList(HTMLPropertiesCollection* aCollection);
+  explicit PropertyStringList(HTMLPropertiesCollection* aCollection);
   NS_DECL_ISUPPORTS_INHERITED
   NS_DECL_CYCLE_COLLECTION_CLASS_INHERITED(PropertyStringList, DOMStringList)
 
   bool ContainsInternal(const nsAString& aString);
 
 protected:
   virtual ~PropertyStringList();
 
@@ -50,17 +50,17 @@ protected:
 
 class HTMLPropertiesCollection : public nsIHTMLCollection,
                                  public nsStubMutationObserver,
                                  public nsWrapperCache
 {
   friend class PropertyNodeList;
   friend class PropertyStringList;
 public:
-  HTMLPropertiesCollection(nsGenericHTMLElement* aRoot);
+  explicit HTMLPropertiesCollection(nsGenericHTMLElement* aRoot);
 
   // nsWrapperCache
   using nsWrapperCache::GetWrapperPreserveColor;
   virtual JSObject* WrapObject(JSContext* aCx) MOZ_OVERRIDE;
 protected:
   virtual ~HTMLPropertiesCollection();
 
   virtual JSObject* GetWrapperPreserveColorInternal() MOZ_OVERRIDE
--- a/content/html/content/src/HTMLSelectElement.h
+++ b/content/html/content/src/HTMLSelectElement.h
@@ -132,18 +132,18 @@ public:
     IS_SELECTED   = 1 << 0,
     CLEAR_ALL     = 1 << 1,
     SET_DISABLED  = 1 << 2,
     NOTIFY        = 1 << 3
   };
 
   using nsIConstraintValidation::GetValidationMessage;
 
-  HTMLSelectElement(already_AddRefed<mozilla::dom::NodeInfo>& aNodeInfo,
-                    FromParser aFromParser = NOT_FROM_PARSER);
+  explicit HTMLSelectElement(already_AddRefed<mozilla::dom::NodeInfo>& aNodeInfo,
+                             FromParser aFromParser = NOT_FROM_PARSER);
 
   NS_IMPL_FROMCONTENT_HTML_WITH_TAG(HTMLSelectElement, select)
 
   // nsISupports
   NS_DECL_ISUPPORTS_INHERITED
 
   virtual int32_t TabIndexDefault() MOZ_OVERRIDE;
 
--- a/content/html/content/src/HTMLShadowElement.h
+++ b/content/html/content/src/HTMLShadowElement.h
@@ -10,17 +10,17 @@
 
 namespace mozilla {
 namespace dom {
 
 class HTMLShadowElement MOZ_FINAL : public nsGenericHTMLElement,
                                     public nsStubMutationObserver
 {
 public:
-  HTMLShadowElement(already_AddRefed<mozilla::dom::NodeInfo>& aNodeInfo);
+  explicit HTMLShadowElement(already_AddRefed<mozilla::dom::NodeInfo>& aNodeInfo);
 
   NS_IMPL_FROMCONTENT_HTML_WITH_TAG(HTMLShadowElement, shadow)
 
   // nsISupports
   NS_DECL_ISUPPORTS_INHERITED
 
   NS_DECL_NSIMUTATIONOBSERVER_CONTENTAPPENDED
   NS_DECL_NSIMUTATIONOBSERVER_CONTENTINSERTED
--- a/content/html/content/src/HTMLSharedElement.h
+++ b/content/html/content/src/HTMLSharedElement.h
@@ -24,17 +24,17 @@ namespace dom {
 class HTMLSharedElement MOZ_FINAL : public nsGenericHTMLElement,
                                     public nsIDOMHTMLBaseElement,
                                     public nsIDOMHTMLDirectoryElement,
                                     public nsIDOMHTMLQuoteElement,
                                     public nsIDOMHTMLHeadElement,
                                     public nsIDOMHTMLHtmlElement
 {
 public:
-  HTMLSharedElement(already_AddRefed<mozilla::dom::NodeInfo>& aNodeInfo)
+  explicit HTMLSharedElement(already_AddRefed<mozilla::dom::NodeInfo>& aNodeInfo)
     : nsGenericHTMLElement(aNodeInfo)
   {
     if (mNodeInfo->Equals(nsGkAtoms::head) ||
         mNodeInfo->Equals(nsGkAtoms::html)) {
       SetHasWeirdParserInsertionMode();
     }
   }
 
--- a/content/html/content/src/HTMLSharedListElement.h
+++ b/content/html/content/src/HTMLSharedListElement.h
@@ -15,17 +15,17 @@
 namespace mozilla {
 namespace dom {
 
 class HTMLSharedListElement MOZ_FINAL : public nsGenericHTMLElement,
                                         public nsIDOMHTMLOListElement,
                                         public nsIDOMHTMLUListElement
 {
 public:
-  HTMLSharedListElement(already_AddRefed<mozilla::dom::NodeInfo>& aNodeInfo)
+  explicit HTMLSharedListElement(already_AddRefed<mozilla::dom::NodeInfo>& aNodeInfo)
     : nsGenericHTMLElement(aNodeInfo)
   {
   }
 
   // nsISupports
   NS_DECL_ISUPPORTS_INHERITED
 
   // nsIDOMHTMLOListElement
--- a/content/html/content/src/HTMLSharedObjectElement.h
+++ b/content/html/content/src/HTMLSharedObjectElement.h
@@ -19,18 +19,18 @@ namespace mozilla {
 namespace dom {
 
 class HTMLSharedObjectElement MOZ_FINAL : public nsGenericHTMLElement
                                         , public nsObjectLoadingContent
                                         , public nsIDOMHTMLAppletElement
                                         , public nsIDOMHTMLEmbedElement
 {
 public:
-  HTMLSharedObjectElement(already_AddRefed<mozilla::dom::NodeInfo>& aNodeInfo,
-                          mozilla::dom::FromParser aFromParser = mozilla::dom::NOT_FROM_PARSER);
+  explicit HTMLSharedObjectElement(already_AddRefed<mozilla::dom::NodeInfo>& aNodeInfo,
+                                   mozilla::dom::FromParser aFromParser = mozilla::dom::NOT_FROM_PARSER);
 
   // nsISupports
   NS_DECL_ISUPPORTS_INHERITED
 
   virtual int32_t TabIndexDefault() MOZ_OVERRIDE;
 
   // nsIDOMHTMLAppletElement
   NS_DECL_NSIDOMHTMLAPPLETELEMENT
--- a/content/html/content/src/HTMLSourceElement.h
+++ b/content/html/content/src/HTMLSourceElement.h
@@ -17,17 +17,17 @@ class nsMediaList;
 namespace mozilla {
 namespace dom {
 
 class ResponsiveImageSelector;
 class HTMLSourceElement MOZ_FINAL : public nsGenericHTMLElement,
                                     public nsIDOMHTMLSourceElement
 {
 public:
-  HTMLSourceElement(already_AddRefed<mozilla::dom::NodeInfo>& aNodeInfo);
+  explicit HTMLSourceElement(already_AddRefed<mozilla::dom::NodeInfo>& aNodeInfo);
 
   // nsISupports
   NS_DECL_ISUPPORTS_INHERITED
 
   NS_IMPL_FROMCONTENT_HTML_WITH_TAG(HTMLSourceElement, source)
 
   // nsIDOMHTMLSourceElement
   NS_DECL_NSIDOMHTMLSOURCEELEMENT
--- a/content/html/content/src/HTMLSpanElement.h
+++ b/content/html/content/src/HTMLSpanElement.h
@@ -15,17 +15,17 @@
 #include "nsRuleData.h"
 
 namespace mozilla {
 namespace dom {
 
 class HTMLSpanElement MOZ_FINAL : public nsGenericHTMLElement
 {
 public:
-  HTMLSpanElement(already_AddRefed<mozilla::dom::NodeInfo>& aNodeInfo)
+  explicit HTMLSpanElement(already_AddRefed<mozilla::dom::NodeInfo>& aNodeInfo)
     : nsGenericHTMLElement(aNodeInfo)
   {
   }
 
   virtual nsresult Clone(mozilla::dom::NodeInfo *aNodeInfo, nsINode **aResult) const MOZ_OVERRIDE;
 
 protected:
   virtual ~HTMLSpanElement();
--- a/content/html/content/src/HTMLStyleElement.h
+++ b/content/html/content/src/HTMLStyleElement.h
@@ -18,17 +18,17 @@ namespace mozilla {
 namespace dom {
 
 class HTMLStyleElement MOZ_FINAL : public nsGenericHTMLElement,
                                    public nsIDOMHTMLStyleElement,
                                    public nsStyleLinkElement,
                                    public nsStubMutationObserver
 {
 public:
-  HTMLStyleElement(already_AddRefed<mozilla::dom::NodeInfo>& aNodeInfo);
+  explicit HTMLStyleElement(already_AddRefed<mozilla::dom::NodeInfo>& aNodeInfo);
 
   // nsISupports
   NS_DECL_ISUPPORTS_INHERITED
 
   // CC
   NS_DECL_CYCLE_COLLECTION_CLASS_INHERITED(HTMLStyleElement,
                                            nsGenericHTMLElement)
 
--- a/content/html/content/src/HTMLTableCaptionElement.h
+++ b/content/html/content/src/HTMLTableCaptionElement.h
@@ -11,17 +11,17 @@
 
 namespace mozilla {
 namespace dom {
 
 class HTMLTableCaptionElement MOZ_FINAL : public nsGenericHTMLElement,
                                           public nsIDOMHTMLTableCaptionElement
 {
 public:
-  HTMLTableCaptionElement(already_AddRefed<mozilla::dom::NodeInfo>& aNodeInfo)
+  explicit HTMLTableCaptionElement(already_AddRefed<mozilla::dom::NodeInfo>& aNodeInfo)
     : nsGenericHTMLElement(aNodeInfo)
   {
     SetHasWeirdParserInsertionMode();
   }
 
   // nsISupports
   NS_DECL_ISUPPORTS_INHERITED
 
--- a/content/html/content/src/HTMLTableCellElement.h
+++ b/content/html/content/src/HTMLTableCellElement.h
@@ -15,17 +15,17 @@ namespace mozilla {
 namespace dom {
 
 class HTMLTableElement;
 
 class HTMLTableCellElement MOZ_FINAL : public nsGenericHTMLElement,
                                        public nsIDOMHTMLTableCellElement
 {
 public:
-  HTMLTableCellElement(already_AddRefed<mozilla::dom::NodeInfo>& aNodeInfo)
+  explicit HTMLTableCellElement(already_AddRefed<mozilla::dom::NodeInfo>& aNodeInfo)
     : nsGenericHTMLElement(aNodeInfo)
   {
     SetHasWeirdParserInsertionMode();
   }
 
   // nsISupports
   NS_DECL_ISUPPORTS_INHERITED
 
--- a/content/html/content/src/HTMLTableColElement.h
+++ b/content/html/content/src/HTMLTableColElement.h
@@ -9,17 +9,17 @@
 #include "nsGenericHTMLElement.h"
 
 namespace mozilla {
 namespace dom {
 
 class HTMLTableColElement MOZ_FINAL : public nsGenericHTMLElement
 {
 public:
-  HTMLTableColElement(already_AddRefed<mozilla::dom::NodeInfo>& aNodeInfo)
+  explicit HTMLTableColElement(already_AddRefed<mozilla::dom::NodeInfo>& aNodeInfo)
     : nsGenericHTMLElement(aNodeInfo)
   {
     SetHasWeirdParserInsertionMode();
   }
 
   uint32_t Span() const
   {
     return GetIntAttr(nsGkAtoms::span, 1);
--- a/content/html/content/src/HTMLTableElement.cpp
+++ b/content/html/content/src/HTMLTableElement.cpp
@@ -23,17 +23,17 @@ namespace dom {
 /**
  * This class provides a late-bound collection of rows in a table.
  * mParent is NOT ref-counted to avoid circular references
  */
 class TableRowsCollection : public nsIHTMLCollection,
                             public nsWrapperCache
 {
 public:
-  TableRowsCollection(HTMLTableElement *aParent);
+  explicit TableRowsCollection(HTMLTableElement* aParent);
 
   NS_DECL_CYCLE_COLLECTING_ISUPPORTS
   NS_DECL_NSIDOMHTMLCOLLECTION
 
   virtual Element* GetElementAt(uint32_t aIndex);
   virtual nsINode* GetParentObject()
   {
     return mParent;
--- a/content/html/content/src/HTMLTableElement.h
+++ b/content/html/content/src/HTMLTableElement.h
@@ -17,17 +17,17 @@ namespace dom {
 #define TABLE_ATTRS_DIRTY ((nsMappedAttributes*)0x1)
 
 class TableRowsCollection;
 
 class HTMLTableElement MOZ_FINAL : public nsGenericHTMLElement,
                                    public nsIDOMHTMLTableElement
 {
 public:
-  HTMLTableElement(already_AddRefed<mozilla::dom::NodeInfo>& aNodeInfo);
+  explicit HTMLTableElement(already_AddRefed<mozilla::dom::NodeInfo>& aNodeInfo);
 
   NS_IMPL_FROMCONTENT_HTML_WITH_TAG(HTMLTableElement, table)
 
   // nsISupports
   NS_DECL_ISUPPORTS_INHERITED
 
   HTMLTableCaptionElement* GetCaption() const
   {
--- a/content/html/content/src/HTMLTableRowElement.h
+++ b/content/html/content/src/HTMLTableRowElement.h
@@ -14,17 +14,17 @@ class nsContentList;
 namespace mozilla {
 namespace dom {
 
 class HTMLTableSectionElement;
 
 class HTMLTableRowElement MOZ_FINAL : public nsGenericHTMLElement
 {
 public:
-  HTMLTableRowElement(already_AddRefed<mozilla::dom::NodeInfo>& aNodeInfo)
+  explicit HTMLTableRowElement(already_AddRefed<mozilla::dom::NodeInfo>& aNodeInfo)
     : nsGenericHTMLElement(aNodeInfo)
   {
     SetHasWeirdParserInsertionMode();
   }
 
   NS_IMPL_FROMCONTENT_HTML_WITH_TAG(HTMLTableRowElement, tr)
 
   // nsISupports
--- a/content/html/content/src/HTMLTableSectionElement.h
+++ b/content/html/content/src/HTMLTableSectionElement.h
@@ -10,17 +10,17 @@
 #include "nsContentList.h" // For ctor.
 
 namespace mozilla {
 namespace dom {
 
 class HTMLTableSectionElement MOZ_FINAL : public nsGenericHTMLElement
 {
 public:
-  HTMLTableSectionElement(already_AddRefed<mozilla::dom::NodeInfo>& aNodeInfo)
+  explicit HTMLTableSectionElement(already_AddRefed<mozilla::dom::NodeInfo>& aNodeInfo)
     : nsGenericHTMLElement(aNodeInfo)
   {
     SetHasWeirdParserInsertionMode();
   }
 
   // nsISupports
   NS_DECL_ISUPPORTS_INHERITED
 
--- a/content/html/content/src/HTMLTemplateElement.h
+++ b/content/html/content/src/HTMLTemplateElement.h
@@ -12,17 +12,17 @@
 #include "mozilla/dom/DocumentFragment.h"
 
 namespace mozilla {
 namespace dom {
 
 class HTMLTemplateElement MOZ_FINAL : public nsGenericHTMLElement
 {
 public:
-  HTMLTemplateElement(already_AddRefed<mozilla::dom::NodeInfo>& aNodeInfo);
+  explicit HTMLTemplateElement(already_AddRefed<mozilla::dom::NodeInfo>& aNodeInfo);
 
   // nsISupports
   NS_DECL_ISUPPORTS_INHERITED
 
   NS_DECL_CYCLE_COLLECTION_CLASS_INHERITED(HTMLTemplateElement,
                                            nsGenericHTMLElement)
 
   virtual nsresult Clone(mozilla::dom::NodeInfo *aNodeInfo, nsINode **aResult) const MOZ_OVERRIDE;
--- a/content/html/content/src/HTMLTextAreaElement.h
+++ b/content/html/content/src/HTMLTextAreaElement.h
@@ -40,18 +40,18 @@ class HTMLTextAreaElement MOZ_FINAL : pu
                                       public nsITextControlElement,
                                       public nsIDOMNSEditableElement,
                                       public nsStubMutationObserver,
                                       public nsIConstraintValidation
 {
 public:
   using nsIConstraintValidation::GetValidationMessage;
 
-  HTMLTextAreaElement(already_AddRefed<mozilla::dom::NodeInfo>& aNodeInfo,
-                      FromParser aFromParser = NOT_FROM_PARSER);
+  explicit HTMLTextAreaElement(already_AddRefed<mozilla::dom::NodeInfo>& aNodeInfo,
+                               FromParser aFromParser = NOT_FROM_PARSER);
 
   // nsISupports
   NS_DECL_ISUPPORTS_INHERITED
 
   virtual int32_t TabIndexDefault() MOZ_OVERRIDE;
 
   // nsIDOMHTMLTextAreaElement
   NS_DECL_NSIDOMHTMLTEXTAREAELEMENT
--- a/content/html/content/src/HTMLTimeElement.h
+++ b/content/html/content/src/HTMLTimeElement.h
@@ -12,17 +12,17 @@
 #include "nsGkAtoms.h"
 
 namespace mozilla {
 namespace dom {
 
 class HTMLTimeElement MOZ_FINAL : public nsGenericHTMLElement
 {
 public:
-  HTMLTimeElement(already_AddRefed<mozilla::dom::NodeInfo>& aNodeInfo);
+  explicit HTMLTimeElement(already_AddRefed<mozilla::dom::NodeInfo>& aNodeInfo);
   virtual ~HTMLTimeElement();
 
   // HTMLTimeElement WebIDL
   void GetDateTime(nsAString& aDateTime)
   {
     GetHTMLAttr(nsGkAtoms::datetime, aDateTime);
   }
 
--- a/content/html/content/src/HTMLTitleElement.h
+++ b/content/html/content/src/HTMLTitleElement.h
@@ -19,17 +19,17 @@ namespace dom {
 class HTMLTitleElement MOZ_FINAL : public nsGenericHTMLElement,
                                    public nsIDOMHTMLTitleElement,
                                    public nsStubMutationObserver
 {
 public:
   using Element::GetText;
   using Element::SetText;
 
-  HTMLTitleElement(already_AddRefed<mozilla::dom::NodeInfo>& aNodeInfo);
+  explicit HTMLTitleElement(already_AddRefed<mozilla::dom::NodeInfo>& aNodeInfo);
 
   // nsISupports
   NS_DECL_ISUPPORTS_INHERITED
 
   // nsIDOMHTMLTitleElement
   NS_DECL_NSIDOMHTMLTITLEELEMENT
 
   //HTMLTitleElement
--- a/content/html/content/src/HTMLTrackElement.h
+++ b/content/html/content/src/HTMLTrackElement.h
@@ -22,17 +22,17 @@ class nsIDocument;
 namespace mozilla {
 namespace dom {
 
 class WebVTTListener;
 
 class HTMLTrackElement MOZ_FINAL : public nsGenericHTMLElement
 {
 public:
-  HTMLTrackElement(already_AddRefed<mozilla::dom::NodeInfo>& aNodeInfo);
+  explicit HTMLTrackElement(already_AddRefed<mozilla::dom::NodeInfo>& aNodeInfo);
 
   // nsISupports
   NS_DECL_ISUPPORTS_INHERITED
   NS_DECL_CYCLE_COLLECTION_CLASS_INHERITED(HTMLTrackElement,
                                            nsGenericHTMLElement)
 
   // HTMLTrackElement WebIDL
   void GetKind(DOMString& aKind) const;
--- a/content/html/content/src/HTMLUnknownElement.h
+++ b/content/html/content/src/HTMLUnknownElement.h
@@ -9,17 +9,17 @@
 #include "nsGenericHTMLElement.h"
 
 namespace mozilla {
 namespace dom {
 
 class HTMLUnknownElement MOZ_FINAL : public nsGenericHTMLElement
 {
 public:
-  HTMLUnknownElement(already_AddRefed<mozilla::dom::NodeInfo>& aNodeInfo)
+  explicit HTMLUnknownElement(already_AddRefed<mozilla::dom::NodeInfo>& aNodeInfo)
     : nsGenericHTMLElement(aNodeInfo)
   {
     if (NodeInfo()->Equals(nsGkAtoms::bdi)) {
       SetHasDirAuto();
     }
   }
 
   virtual nsresult Clone(mozilla::dom::NodeInfo *aNodeInfo, nsINode **aResult) const MOZ_OVERRIDE;
--- a/content/html/content/src/RadioNodeList.h
+++ b/content/html/content/src/RadioNodeList.h
@@ -16,17 +16,17 @@
   { 0x82, 0x08, 0xa6, 0x8b, 0xe0, 0xbc, 0x22, 0x19 } }
 
 namespace mozilla {
 namespace dom {
 
 class RadioNodeList : public nsSimpleContentList
 {
 public:
-  RadioNodeList(HTMLFormElement* aForm) : nsSimpleContentList(aForm) { }
+  explicit RadioNodeList(HTMLFormElement* aForm) : nsSimpleContentList(aForm) { }
 
   virtual JSObject* WrapObject(JSContext *cx) MOZ_OVERRIDE;
   void GetValue(nsString& retval);
   void SetValue(const nsAString& value);
 
   NS_DECL_ISUPPORTS_INHERITED
   NS_DECLARE_STATIC_IID_ACCESSOR(MOZILLA_DOM_RADIONODELIST_IMPLEMENTATION_IID)
 private:
--- a/content/html/content/src/TextTrackManager.h
+++ b/content/html/content/src/TextTrackManager.h
@@ -19,17 +19,17 @@ namespace mozilla {
 namespace dom {
 
 class HTMLMediaElement;
 
 class CompareTextTracks {
 private:
   HTMLMediaElement* mMediaElement;
 public:
-  CompareTextTracks(HTMLMediaElement* aMediaElement);
+  explicit CompareTextTracks(HTMLMediaElement* aMediaElement);
   int32_t TrackChildPosition(TextTrack* aTrack) const;
   bool Equals(TextTrack* aOne, TextTrack* aTwo) const;
   bool LessThan(TextTrack* aOne, TextTrack* aTwo) const;
 };
 
 class TextTrack;
 class TextTrackCue;
 
@@ -38,17 +38,17 @@ class TextTrackManager MOZ_FINAL : publi
   ~TextTrackManager();
 
 public:
   NS_DECL_CYCLE_COLLECTING_ISUPPORTS
   NS_DECL_CYCLE_COLLECTION_CLASS(TextTrackManager)
 
   NS_DECL_NSIDOMEVENTLISTENER
 
-  TextTrackManager(HTMLMediaElement *aMediaElement);
+  explicit TextTrackManager(HTMLMediaElement* aMediaElement);
 
   TextTrackList* TextTracks() const;
   already_AddRefed<TextTrack> AddTextTrack(TextTrackKind aKind,
                                            const nsAString& aLabel,
                                            const nsAString& aLanguage,
                                            TextTrackMode aMode,
                                            TextTrackReadyState aReadyState,
                                            TextTrackSource aTextTrackSource);
--- a/content/html/content/src/UndoManager.cpp
+++ b/content/html/content/src/UndoManager.cpp
@@ -328,17 +328,17 @@ UndoTextChanged::SaveRedoState()
  * Transaction to handle appending content to a nsIContent.
  */
 class UndoContentAppend : public UndoTxn {
   NS_DECL_CYCLE_COLLECTING_ISUPPORTS
   NS_DECL_CYCLE_COLLECTION_CLASS(UndoContentAppend)
   nsresult Init(int32_t aFirstIndex);
   NS_IMETHOD RedoTransaction();
   NS_IMETHOD UndoTransaction();
-  UndoContentAppend(nsIContent* aContent);
+  explicit UndoContentAppend(nsIContent* aContent);
 protected:
   ~UndoContentAppend() {}
   nsCOMPtr<nsIContent> mContent;
   nsCOMArray<nsIContent> mChildren;
 };
 
 NS_IMPL_CYCLE_COLLECTION(UndoContentAppend, mContent, mChildren)
 
--- a/content/html/content/src/nsDOMStringMap.h
+++ b/content/html/content/src/nsDOMStringMap.h
@@ -28,17 +28,17 @@ public:
 
   NS_DECL_NSIMUTATIONOBSERVER_ATTRIBUTECHANGED
 
   nsINode* GetParentObject()
   {
     return mElement;
   }
 
-  nsDOMStringMap(nsGenericHTMLElement* aElement);
+  explicit nsDOMStringMap(nsGenericHTMLElement* aElement);
 
   // WebIDL API
   virtual JSObject* WrapObject(JSContext *cx) MOZ_OVERRIDE;
   void NamedGetter(const nsAString& aProp, bool& found,
                    mozilla::dom::DOMString& aResult) const;
   void NamedSetter(const nsAString& aProp, const nsAString& aValue,
                    mozilla::ErrorResult& rv);
   void NamedDeleter(const nsAString& aProp, bool &found);
--- a/content/html/content/src/nsGenericHTMLElement.cpp
+++ b/content/html/content/src/nsGenericHTMLElement.cpp
@@ -111,17 +111,17 @@ using namespace mozilla::dom;
 /**
  * nsAutoFocusEvent is used to dispatch a focus event when a
  * nsGenericHTMLFormElement is binded to the tree with the autofocus attribute
  * enabled.
  */
 class nsAutoFocusEvent : public nsRunnable
 {
 public:
-  nsAutoFocusEvent(nsGenericHTMLFormElement* aElement) : mElement(aElement) {}
+  explicit nsAutoFocusEvent(nsGenericHTMLFormElement* aElement) : mElement(aElement) {}
 
   NS_IMETHOD Run() {
     nsFocusManager* fm = nsFocusManager::GetFocusManager();
     if (!fm) {
       return NS_ERROR_NULL_POINTER;
     }
 
     nsIDocument* document = mElement->OwnerDoc();
@@ -167,17 +167,17 @@ private:
 class nsGenericHTMLElementTearoff : public nsIDOMElementCSSInlineStyle
 {
   virtual ~nsGenericHTMLElementTearoff()
   {
   }
 
   NS_DECL_CYCLE_COLLECTING_ISUPPORTS
 
-  nsGenericHTMLElementTearoff(nsGenericHTMLElement *aElement)
+  explicit nsGenericHTMLElementTearoff(nsGenericHTMLElement* aElement)
     : mElement(aElement)
   {
   }
 
   NS_IMETHOD GetStyle(nsIDOMCSSStyleDeclaration** aStyle)
   {
     NS_ADDREF(*aStyle = mElement->Style());
     return NS_OK;
--- a/content/html/content/src/nsRadioVisitor.h
+++ b/content/html/content/src/nsRadioVisitor.h
@@ -34,17 +34,17 @@ public:
 
 /**
  * nsRadioSetCheckedChangedVisitor is calling SetCheckedChanged with the given
  * parameter to all radio elements in the group.
  */
 class nsRadioSetCheckedChangedVisitor : public nsRadioVisitor
 {
 public:
-  nsRadioSetCheckedChangedVisitor(bool aCheckedChanged)
+  explicit nsRadioSetCheckedChangedVisitor(bool aCheckedChanged)
     : mCheckedChanged(aCheckedChanged)
     { }
 
   virtual bool Visit(nsIFormControl* aRadio) MOZ_OVERRIDE;
 
 protected:
   bool mCheckedChanged;
 };
--- a/content/html/content/src/nsTextEditorState.cpp
+++ b/content/html/content/src/nsTextEditorState.cpp
@@ -50,17 +50,17 @@
 using namespace mozilla;
 using namespace mozilla::dom;
 
 static NS_DEFINE_CID(kTextEditorCID, NS_TEXTEDITOR_CID);
 
 class MOZ_STACK_CLASS ValueSetter
 {
 public:
-  ValueSetter(nsIEditor* aEditor)
+  explicit ValueSetter(nsIEditor* aEditor)
     : mEditor(aEditor)
   {
     MOZ_ASSERT(aEditor);
   
     // To protect against a reentrant call to SetValue, we check whether
     // another SetValue is already happening for this editor.  If it is,
     // we must wait until we unwind to re-enable oninput events.
     mEditor->GetSuppressDispatchingInputEvent(&mOuterTransaction);
@@ -180,17 +180,17 @@ SuppressEventHandlers(nsPresContext* aPr
   }
 
   return suppressHandlers;
 }
 
 class nsAnonDivObserver MOZ_FINAL : public nsStubMutationObserver
 {
 public:
-  nsAnonDivObserver(nsTextEditorState* aTextEditorState)
+  explicit nsAnonDivObserver(nsTextEditorState* aTextEditorState)
   : mTextEditorState(aTextEditorState) {}
   NS_DECL_ISUPPORTS
   NS_DECL_NSIMUTATIONOBSERVER_CHARACTERDATACHANGED
   NS_DECL_NSIMUTATIONOBSERVER_CONTENTAPPENDED
   NS_DECL_NSIMUTATIONOBSERVER_CONTENTINSERTED
   NS_DECL_NSIMUTATIONOBSERVER_CONTENTREMOVED
 
 private:
--- a/content/html/document/src/HTMLAllCollection.h
+++ b/content/html/document/src/HTMLAllCollection.h
@@ -30,17 +30,17 @@ class OwningNodeOrHTMLCollection;
 template<typename> struct Nullable;
 
 class HTMLAllCollection MOZ_FINAL : public nsISupports
                                   , public nsWrapperCache
 {
   ~HTMLAllCollection();
 
 public:
-  HTMLAllCollection(nsHTMLDocument* aDocument);
+  explicit HTMLAllCollection(nsHTMLDocument* aDocument);
 
   NS_DECL_CYCLE_COLLECTING_ISUPPORTS
   NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_CLASS(HTMLAllCollection)
 
   virtual JSObject* WrapObject(JSContext* aCx) MOZ_OVERRIDE;
   nsINode* GetParentObject() const;
 
   uint32_t Length();
--- a/content/html/document/src/ImageDocument.cpp
+++ b/content/html/document/src/ImageDocument.cpp
@@ -52,17 +52,17 @@
 namespace mozilla {
 namespace dom {
  
 class ImageListener : public MediaDocumentStreamListener
 {
 public:
   NS_DECL_NSIREQUESTOBSERVER
 
-  ImageListener(ImageDocument* aDocument);
+  explicit ImageListener(ImageDocument* aDocument);
   virtual ~ImageListener();
 };
 
 ImageListener::ImageListener(ImageDocument* aDocument)
   : MediaDocumentStreamListener(aDocument)
 {
 }
 
--- a/content/html/document/src/MediaDocument.h
+++ b/content/html/document/src/MediaDocument.h
@@ -79,17 +79,17 @@ private:
 
 
 class MediaDocumentStreamListener: public nsIStreamListener
 {
 protected:
   virtual ~MediaDocumentStreamListener();
 
 public:
-  MediaDocumentStreamListener(MediaDocument *aDocument);
+  explicit MediaDocumentStreamListener(MediaDocument* aDocument);
   void SetStreamListener(nsIStreamListener *aListener);
 
   NS_DECL_ISUPPORTS
 
   NS_DECL_NSIREQUESTOBSERVER
 
   NS_DECL_NSISTREAMLISTENER
 
--- a/content/html/document/src/PluginDocument.cpp
+++ b/content/html/document/src/PluginDocument.cpp
@@ -56,19 +56,19 @@ protected:
   nsCOMPtr<Element>                        mPluginContent;
   nsRefPtr<MediaDocumentStreamListener>    mStreamListener;
   nsCString                                mMimeType;
 };
 
 class PluginStreamListener : public MediaDocumentStreamListener
 {
 public:
-  PluginStreamListener(PluginDocument* doc)
-    : MediaDocumentStreamListener(doc)
-    , mPluginDoc(doc)
+  explicit PluginStreamListener(PluginDocument* aDoc)
+    : MediaDocumentStreamListener(aDoc)
+    , mPluginDoc(aDoc)
   {}
   NS_IMETHOD OnStartRequest(nsIRequest* request, nsISupports *ctxt);
 private:
   nsRefPtr<PluginDocument> mPluginDoc;
 };
 
 
 NS_IMETHODIMP
--- a/content/html/document/src/nsHTMLContentSink.cpp
+++ b/content/html/document/src/nsHTMLContentSink.cpp
@@ -195,17 +195,17 @@ protected:
                     nsIContent* aChildContent,
                     int32_t aIndexInContainer);
   void NotifyRootInsertion();
 };
 
 class SinkContext
 {
 public:
-  SinkContext(HTMLContentSink* aSink);
+  explicit SinkContext(HTMLContentSink* aSink);
   ~SinkContext();
 
   nsresult Begin(nsHTMLTag aNodeType, nsGenericHTMLElement* aRoot,
                  uint32_t aNumFlushed, int32_t aInsertionPoint);
   nsresult OpenBody();
   nsresult CloseBody();
   nsresult End();
 
--- a/content/xul/content/src/nsXULElement.cpp
+++ b/content/xul/content/src/nsXULElement.cpp
@@ -127,17 +127,17 @@ class nsXULElementTearoff MOZ_FINAL : pu
 {
   ~nsXULElementTearoff() {}
 
 public:
   NS_DECL_CYCLE_COLLECTING_ISUPPORTS
   NS_DECL_CYCLE_COLLECTION_CLASS_AMBIGUOUS(nsXULElementTearoff,
                                            nsIDOMElementCSSInlineStyle)
 
-  nsXULElementTearoff(nsXULElement *aElement)
+  explicit nsXULElementTearoff(nsXULElement* aElement)
     : mElement(aElement)
   {
   }
 
   NS_IMETHOD GetStyle(nsIDOMCSSStyleDeclaration** aStyle)
   {
     nsXULElement* element = static_cast<nsXULElement*>(mElement.get());
     NS_ADDREF(*aStyle = element->Style());
@@ -803,17 +803,17 @@ IsInFeedSubscribeLine(nsXULElement* aEle
   }
   return false;
 }
 #endif
 
 class XULInContentErrorReporter : public nsRunnable
 {
 public:
-  XULInContentErrorReporter(nsIDocument* aDocument) : mDocument(aDocument) {}
+  explicit XULInContentErrorReporter(nsIDocument* aDocument) : mDocument(aDocument) {}
 
   NS_IMETHOD Run()
   {
     mDocument->WarnOnceAbout(nsIDocument::eImportXULIntoContent, false);
     return NS_OK;
   }
 
 private:
@@ -1979,17 +1979,17 @@ nsXULElement::SetDrawsTitle(bool aState)
         // synchronous effects apart from a harmless invalidation.
         mainWidget->SetDrawsTitle(aState);
     }
 }
 
 class MarginSetter : public nsRunnable
 {
 public:
-    MarginSetter(nsIWidget* aWidget) :
+    explicit MarginSetter(nsIWidget* aWidget) :
         mWidget(aWidget), mMargin(-1, -1, -1, -1)
     {}
     MarginSetter(nsIWidget *aWidget, const nsIntMargin& aMargin) :
         mWidget(aWidget), mMargin(aMargin)
     {}
 
     NS_IMETHOD Run()
     {
--- a/content/xul/content/src/nsXULElement.h
+++ b/content/xul/content/src/nsXULElement.h
@@ -137,17 +137,17 @@ public:
      * to be constructed.
      */
     virtual void ReleaseSubtree() { }
 
     NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_NATIVE_CLASS(nsXULPrototypeNode)
     NS_INLINE_DECL_CYCLE_COLLECTING_NATIVE_REFCOUNTING(nsXULPrototypeNode)
 
 protected:
-    nsXULPrototypeNode(Type aType)
+    explicit nsXULPrototypeNode(Type aType)
         : mType(aType) {}
     virtual ~nsXULPrototypeNode() {}
 };
 
 class nsXULPrototypeElement : public nsXULPrototypeNode
 {
 public:
     nsXULPrototypeElement()
@@ -364,17 +364,17 @@ ASSERT_NODE_FLAGS_SPACE(ELEMENT_TYPE_SPE
 #undef XUL_ELEMENT_FLAG_BIT
 
 class nsScriptEventHandlerOwnerTearoff;
 
 class nsXULElement MOZ_FINAL : public nsStyledElement,
                                public nsIDOMXULElement
 {
 public:
-    nsXULElement(already_AddRefed<mozilla::dom::NodeInfo> aNodeInfo);
+    explicit nsXULElement(already_AddRefed<mozilla::dom::NodeInfo> aNodeInfo);
 
     static nsresult
     Create(nsXULPrototypeElement* aPrototype, nsIDocument* aDocument,
            bool aIsScriptable, bool aIsRoot, mozilla::dom::Element** aResult);
 
     NS_IMPL_FROMCONTENT(nsXULElement, kNameSpaceID_XUL)
 
     // nsISupports
--- a/content/xul/document/src/XULDocument.h
+++ b/content/xul/document/src/XULDocument.h
@@ -44,21 +44,21 @@ class nsIXULPrototypeScript;
 #include "nsURIHashKey.h"
 #include "nsInterfaceHashtable.h"
 
 struct PRLogModuleInfo;
 
 class nsRefMapEntry : public nsStringHashKey
 {
 public:
-  nsRefMapEntry(const nsAString& aKey) :
+  explicit nsRefMapEntry(const nsAString& aKey) :
     nsStringHashKey(&aKey)
   {
   }
-  nsRefMapEntry(const nsAString *aKey) :
+  explicit nsRefMapEntry(const nsAString* aKey) :
     nsStringHashKey(aKey)
   {
   }
   nsRefMapEntry(const nsRefMapEntry& aOther) :
     nsStringHashKey(&aOther.GetKey())
   {
     NS_ERROR("Should never be called");
   }
@@ -558,17 +558,17 @@ protected:
     friend class OverlayForwardReference;
 
     class TemplateBuilderHookup : public nsForwardReference
     {
     protected:
         nsCOMPtr<nsIContent> mElement; // [OWNER]
 
     public:
-        TemplateBuilderHookup(nsIContent* aElement)
+        explicit TemplateBuilderHookup(nsIContent* aElement)
             : mElement(aElement) {}
 
         virtual Phase GetPhase() MOZ_OVERRIDE { return eHookup; }
         virtual Result Resolve() MOZ_OVERRIDE;
     };
 
     friend class TemplateBuilderHookup;
 
--- a/content/xul/document/src/nsXULCommandDispatcher.h
+++ b/content/xul/document/src/nsXULCommandDispatcher.h
@@ -22,17 +22,17 @@
 
 class nsIDOMElement;
 class nsPIWindowRoot;
 
 class nsXULCommandDispatcher : public nsIDOMXULCommandDispatcher,
                                public nsSupportsWeakReference
 {
 public:
-    nsXULCommandDispatcher(nsIDocument* aDocument);
+    explicit nsXULCommandDispatcher(nsIDocument* aDocument);
 
     // nsISupports
     NS_DECL_CYCLE_COLLECTING_ISUPPORTS
     NS_DECL_CYCLE_COLLECTION_CLASS_AMBIGUOUS(nsXULCommandDispatcher,
                                              nsIDOMXULCommandDispatcher)
 
     // nsIDOMXULCommandDispatcher interface
     NS_DECL_NSIDOMXULCOMMANDDISPATCHER
--- a/content/xul/templates/src/nsRDFQuery.h
+++ b/content/xul/templates/src/nsRDFQuery.h
@@ -38,17 +38,17 @@ public:
 };
 
 class nsRDFQuery MOZ_FINAL : public nsITemplateRDFQuery
 {
     ~nsRDFQuery() { Finish(); }
 
 public:
 
-    nsRDFQuery(nsXULTemplateQueryProcessorRDF* aProcessor)
+    explicit nsRDFQuery(nsXULTemplateQueryProcessorRDF* aProcessor)
       : mProcessor(aProcessor),
         mSimple(false),
         mRoot(nullptr),
         mCachedResults(nullptr)
     { }
 
     NS_DECL_CYCLE_COLLECTING_ISUPPORTS
     NS_DECL_CYCLE_COLLECTION_CLASS(nsRDFQuery)
--- a/content/xul/templates/src/nsRDFTestNode.h
+++ b/content/xul/templates/src/nsRDFTestNode.h
@@ -14,17 +14,17 @@ class nsIRDFNode;
 /**
  * An abstract base class for all of the RDF-related tests. This interface
  * allows us to iterate over all of the RDF tests to find the one in the
  * network that is apropos for a newly-added assertion.
  */
 class nsRDFTestNode : public TestNode
 {
 public:
-    nsRDFTestNode(TestNode* aParent)
+    explicit nsRDFTestNode(TestNode* aParent)
         : TestNode(aParent) {}
 
     /**
      * Determine whether the node can propagate an assertion
      * with the specified source, property, and target. If the
      * assertion can be propagated, aInitialBindings will be
      * initialized with appropriate variable-to-value assignments
      * to allow the rule network to start a constrain and propagate
--- a/content/xul/templates/src/nsResourceSet.h
+++ b/content/xul/templates/src/nsResourceSet.h
@@ -65,17 +65,17 @@ public:
 
         bool operator==(const ConstIterator& aConstIterator) const {
             return mCurrent == aConstIterator.mCurrent; }
 
         bool operator!=(const ConstIterator& aConstIterator) const {
             return mCurrent != aConstIterator.mCurrent; }
 
     protected:
-        ConstIterator(nsIRDFResource** aProperty) : mCurrent(aProperty) {}
+        explicit ConstIterator(nsIRDFResource** aProperty) : mCurrent(aProperty) {}
         friend class nsResourceSet;
     };
 
     ConstIterator First() const { return ConstIterator(mResources); }
     ConstIterator Last() const { return ConstIterator(mResources + mCount); }
 };
 
 #endif // nsResourceSet_h__
--- a/content/xul/templates/src/nsRuleNetwork.h
+++ b/content/xul/templates/src/nsRuleNetwork.h
@@ -123,17 +123,17 @@ public:
         
     ~MemoryElementSet() {
         MOZ_COUNT_DTOR(MemoryElementSet);
         NS_IF_RELEASE(mElements); }
 
 public:
     class ConstIterator {
     public:
-        ConstIterator(List* aElementList) : mCurrent(aElementList) {
+        explicit ConstIterator(List* aElementList) : mCurrent(aElementList) {
             NS_IF_ADDREF(mCurrent); }
 
         ConstIterator(const ConstIterator& aConstIterator)
             : mCurrent(aConstIterator.mCurrent) {
             NS_IF_ADDREF(mCurrent); }
 
         ConstIterator& operator=(const ConstIterator& aConstIterator) {
             NS_IF_RELEASE(mCurrent);
@@ -225,17 +225,17 @@ public:
 class nsAssignmentSet {
 public:
     class ConstIterator;
     friend class ConstIterator;
 
 protected:
     class List {
     public:
-        List(const nsAssignment &aAssignment) : mAssignment(aAssignment) {
+        explicit List(const nsAssignment& aAssignment) : mAssignment(aAssignment) {
             MOZ_COUNT_CTOR(nsAssignmentSet::List); }
 
     protected:
         ~List() {
             MOZ_COUNT_DTOR(nsAssignmentSet::List);
             NS_IF_RELEASE(mNext); }
 
     public:
@@ -272,17 +272,17 @@ public:
 
     ~nsAssignmentSet() {
         MOZ_COUNT_DTOR(nsAssignmentSet);
         NS_IF_RELEASE(mAssignments); }
 
 public:
     class ConstIterator {
     public:
-        ConstIterator(List* aAssignmentList) : mCurrent(aAssignmentList) {
+        explicit ConstIterator(List* aAssignmentList) : mCurrent(aAssignmentList) {
             NS_IF_ADDREF(mCurrent); }
 
         ConstIterator(const ConstIterator& aConstIterator)
             : mCurrent(aConstIterator.mCurrent) {
             NS_IF_ADDREF(mCurrent); }
 
         ConstIterator& operator=(const ConstIterator& aConstIterator) {
             NS_IF_RELEASE(mCurrent);
@@ -509,17 +509,17 @@ protected:
 
 public:
     class ConstIterator {
     protected:
         friend class Iterator; // XXXwaterson so broken.
         List* mCurrent;
 
     public:
-        ConstIterator(List* aList) : mCurrent(aList) {}
+        explicit ConstIterator(List* aList) : mCurrent(aList) {}
 
         ConstIterator(const ConstIterator& aConstIterator)
             : mCurrent(aConstIterator.mCurrent) {}
 
         ConstIterator& operator=(const ConstIterator& aConstIterator) {
             mCurrent = aConstIterator.mCurrent;
             return *this; }
 
@@ -554,17 +554,17 @@ public:
             return mCurrent != aConstIterator.mCurrent; }
     };
 
     ConstIterator First() const { return ConstIterator(mHead.mNext); }
     ConstIterator Last() const { return ConstIterator(const_cast<List*>(&mHead)); }
 
     class Iterator : public ConstIterator {
     public:
-        Iterator(List* aList) : ConstIterator(aList) {}
+        explicit Iterator(List* aList) : ConstIterator(aList) {}
 
         Iterator& operator++() {
             mCurrent = mCurrent->mNext;
             return *this; }
 
         Iterator operator++(int) {
             Iterator result(*this);
             mCurrent = mCurrent->mNext;
@@ -665,17 +665,17 @@ public:
 
     nsresult Add(ReteNode* aNode);
     nsresult Clear();
 
     class Iterator;
 
     class ConstIterator {
     public:
-        ConstIterator(ReteNode** aNode) : mCurrent(aNode) {}
+        explicit ConstIterator(ReteNode** aNode) : mCurrent(aNode) {}
 
         ConstIterator(const ConstIterator& aConstIterator)
             : mCurrent(aConstIterator.mCurrent) {}
 
         ConstIterator& operator=(const ConstIterator& aConstIterator) {
             mCurrent = aConstIterator.mCurrent;
             return *this; }
 
@@ -705,17 +705,17 @@ public:
         ReteNode** mCurrent;
     };
 
     ConstIterator First() const { return ConstIterator(mNodes); }
     ConstIterator Last() const { return ConstIterator(mNodes + mCount); }
 
     class Iterator : public ConstIterator {
     public:
-        Iterator(ReteNode** aNode) : ConstIterator(aNode) {}
+        explicit Iterator(ReteNode** aNode) : ConstIterator(aNode) {}
 
         Iterator& operator++() {
             ++mCurrent;
             return *this; }
 
         Iterator operator++(int) {
             Iterator result(*this);
             ++mCurrent;
@@ -753,17 +753,17 @@ protected:
  * This class provides implementations of Propagate() and Constrain()
  * in terms of one simple operation, FilterInstantiations(). A node
  * that is a "simple test node" in a rule network should derive from
  * this class, and need only implement FilterInstantiations().
  */
 class TestNode : public ReteNode
 {
 public:
-    TestNode(TestNode* aParent);
+    explicit TestNode(TestNode* aParent);
 
     /**
      * Retrieve the test node's parent
      * @return the test node's parent
      */
     TestNode* GetParent() const { return mParent; }
 
     /**
--- a/content/xul/templates/src/nsTemplateRule.h
+++ b/content/xul/templates/src/nsTemplateRule.h
@@ -264,17 +264,17 @@ public:
     // compiled opaque query object returned by the query processor's
     // CompileQuery call
     nsCOMPtr<nsISupports> mCompiledQuery;
 
     // indicates that the query will only generate content to be inserted into
     // a container with this tag
     nsCOMPtr<nsIAtom> mTag;
 
-    nsTemplateQuerySet(int32_t aPriority)
+    explicit nsTemplateQuerySet(int32_t aPriority)
         : mPriority(aPriority)
     {
         MOZ_COUNT_CTOR(nsTemplateQuerySet);
     }
 
     ~nsTemplateQuerySet()
     {
         MOZ_COUNT_DTOR(nsTemplateQuerySet);
--- a/content/xul/templates/src/nsTreeRows.h
+++ b/content/xul/templates/src/nsTreeRows.h
@@ -94,17 +94,17 @@ public:
          * The array of rows in the subtree
          */
         Row* mRows;
 
     public:
         /**
          * Creates a subtree with the specified parent.
          */
-        Subtree(Subtree* aParent)
+        explicit Subtree(Subtree* aParent)
             : mParent(aParent),
               mCount(0),
               mCapacity(0),
               mSubtreeSize(0),
               mRows(nullptr) {}
 
         ~Subtree();
 
--- a/content/xul/templates/src/nsXULTemplateQueryProcessorStorage.h
+++ b/content/xul/templates/src/nsXULTemplateQueryProcessorStorage.h
@@ -33,17 +33,17 @@ private:
 public:
 
     // nsISupports interface
     NS_DECL_ISUPPORTS
 
     // nsISimpleEnumerator interface
     NS_DECL_NSISIMPLEENUMERATOR
 
-    nsXULTemplateResultSetStorage(mozIStorageStatement* aStatement);
+    explicit nsXULTemplateResultSetStorage(mozIStorageStatement* aStatement);
 
     int32_t GetColumnIndex(nsIAtom* aColumnName);
 
     void FillColumnValues(nsCOMArray<nsIVariant>& aArray);
 
 };
 
 class nsXULTemplateQueryProcessorStorage MOZ_FINAL : public nsIXULTemplateQueryProcessor
--- a/content/xul/templates/src/nsXULTemplateResultRDF.h
+++ b/content/xul/templates/src/nsXULTemplateResultRDF.h
@@ -21,17 +21,17 @@
 class nsXULTemplateResultRDF MOZ_FINAL : public nsIXULTemplateResult
 {
 public:
     NS_DECL_CYCLE_COLLECTING_ISUPPORTS
     NS_DECL_CYCLE_COLLECTION_CLASS(nsXULTemplateResultRDF)
 
     NS_DECL_NSIXULTEMPLATERESULT
 
-    nsXULTemplateResultRDF(nsIRDFResource* aNode);
+    explicit nsXULTemplateResultRDF(nsIRDFResource* aNode);
 
     nsXULTemplateResultRDF(nsRDFQuery* aQuery,
                            const Instantiation& aInst,
                            nsIRDFResource* aNode);
 
     nsITemplateRDFQuery* Query() { return mQuery; }
 
     nsXULTemplateQueryProcessorRDF* GetProcessor()
--- a/content/xul/templates/src/nsXULTemplateResultStorage.h
+++ b/content/xul/templates/src/nsXULTemplateResultStorage.h
@@ -17,17 +17,17 @@
  */
 class nsXULTemplateResultStorage MOZ_FINAL : public nsIXULTemplateResult
 {
 public:
     NS_DECL_ISUPPORTS
 
     NS_DECL_NSIXULTEMPLATERESULT
 
-    nsXULTemplateResultStorage(nsXULTemplateResultSetStorage* aResultSet);
+    explicit nsXULTemplateResultStorage(nsXULTemplateResultSetStorage* aResultSet);
 
 protected:
 
     ~nsXULTemplateResultStorage();
 
     nsRefPtr<nsXULTemplateResultSetStorage> mResultSet;
 
     nsCOMArray<nsIVariant> mValues;
--- a/dom/audiochannel/AudioChannelService.cpp
+++ b/dom/audiochannel/AudioChannelService.cpp
@@ -656,17 +656,17 @@ AudioChannelService::NotifyEnumerator(Au
   MOZ_ASSERT(aAgent);
   aAgent->NotifyAudioChannelStateChanged();
   return PL_DHASH_NEXT;
 }
 
 class NotifyRunnable : public nsRunnable
 {
 public:
-  NotifyRunnable(AudioChannelService* aService)
+  explicit NotifyRunnable(AudioChannelService* aService)
     : mService(aService)
   {}
 
   NS_IMETHOD Run()
   {
     mService->Notify();
     return NS_OK;
   }
@@ -900,17 +900,17 @@ AudioChannelService::GetInternalType(Aud
       break;
   }
 
   MOZ_CRASH("unexpected audio channel");
 }
 
 struct RefreshAgentsVolumeData
 {
-  RefreshAgentsVolumeData(nsPIDOMWindow* aWindow)
+  explicit RefreshAgentsVolumeData(nsPIDOMWindow* aWindow)
     : mWindow(aWindow)
   {}
 
   nsPIDOMWindow* mWindow;
   nsTArray<nsRefPtr<AudioChannelAgent>> mAgents;
 };
 
 PLDHashOperator
@@ -941,17 +941,17 @@ AudioChannelService::RefreshAgentsVolume
 
   for (uint32_t i = 0; i < data.mAgents.Length(); ++i) {
     data.mAgents[i]->WindowVolumeChanged();
   }
 }
 
 struct CountWindowData
 {
-  CountWindowData(nsIDOMWindow* aWindow)
+  explicit CountWindowData(nsIDOMWindow* aWindow)
     : mWindow(aWindow)
     , mCount(0)
   {}
 
   nsIDOMWindow* mWindow;
   uint32_t mCount;
 };
 
--- a/dom/audiochannel/tests/TestAudioChannelService.cpp
+++ b/dom/audiochannel/tests/TestAudioChannelService.cpp
@@ -47,17 +47,17 @@ protected:
     if (mRegistered) {
       StopPlaying();
     }
   }
 
 public:
   NS_DECL_ISUPPORTS
 
-  Agent(AudioChannel aChannel)
+  explicit Agent(AudioChannel aChannel)
   : mChannel(aChannel)
   , mWaitCallback(false)
   , mRegistered(false)
   , mCanPlay(AUDIO_CHANNEL_STATE_MUTED)
   {
     mAgent = do_CreateInstance("@mozilla.org/audiochannelagent;1");
   }
 
--- a/dom/base/CompositionStringSynthesizer.h
+++ b/dom/base/CompositionStringSynthesizer.h
@@ -17,17 +17,17 @@ class nsPIDOMWindow;
 
 namespace mozilla {
 namespace dom {
 
 class CompositionStringSynthesizer MOZ_FINAL :
   public nsICompositionStringSynthesizer
 {
 public:
-  CompositionStringSynthesizer(nsPIDOMWindow* aWindow);
+  explicit CompositionStringSynthesizer(nsPIDOMWindow* aWindow);
 
   NS_DECL_ISUPPORTS
   NS_DECL_NSICOMPOSITIONSTRINGSYNTHESIZER
 
 private:
   ~CompositionStringSynthesizer();
 
   nsWeakPtr mWindow; // refers an instance of nsPIDOMWindow
--- a/dom/base/Console.cpp
+++ b/dom/base/Console.cpp
@@ -186,17 +186,17 @@ public:
   Maybe<nsTArray<ConsoleStackEntry>> mReifiedStack;
   nsCOMPtr<nsIStackFrame> mStack;
 };
 
 // This class is used to clear any exception at the end of this method.
 class ClearException
 {
 public:
-  ClearException(JSContext* aCx)
+  explicit ClearException(JSContext* aCx)
     : mCx(aCx)
   {
   }
 
   ~ClearException()
   {
     JS_ClearPendingException(mCx);
   }
@@ -273,17 +273,17 @@ private:
   nsCOMPtr<nsIEventTarget> mSyncLoopTarget;
 };
 
 // This runnable appends a CallData object into the Console queue running on
 // the main-thread.
 class ConsoleCallDataRunnable MOZ_FINAL : public ConsoleRunnable
 {
 public:
-  ConsoleCallDataRunnable(ConsoleCallData* aCallData)
+  explicit ConsoleCallDataRunnable(ConsoleCallData* aCallData)
     : mCallData(aCallData)
   {
   }
 
 private:
   bool
   PreDispatch(JSContext* aCx) MOZ_OVERRIDE
   {
@@ -804,17 +804,17 @@ void
 Console::Method(JSContext* aCx, MethodName aMethodName,
                 const nsAString& aMethodString,
                 const Sequence<JS::Value>& aData)
 {
   // This RAII class removes the last element of the mQueuedCalls if something
   // goes wrong.
   class RAII {
   public:
-    RAII(LinkedList<ConsoleCallData>& aList)
+    explicit RAII(LinkedList<ConsoleCallData>& aList)
       : mList(aList)
       , mUnfinished(true)
     {
     }
 
     ~RAII()
     {
       if (mUnfinished) {
--- a/dom/base/Console.h
+++ b/dom/base/Console.h
@@ -32,17 +32,17 @@ class Console MOZ_FINAL : public nsITime
 
 public:
   NS_DECL_CYCLE_COLLECTING_ISUPPORTS
   NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_CLASS_AMBIGUOUS(Console,
                                                          nsITimerCallback)
   NS_DECL_NSITIMERCALLBACK
   NS_DECL_NSIOBSERVER
 
-  Console(nsPIDOMWindow* aWindow);
+  explicit Console(nsPIDOMWindow* aWindow);
 
   // WebIDL methods
   nsISupports* GetParentObject() const
   {
     return mWindow;
   }
 
   virtual JSObject*
--- a/dom/base/DOMRequest.h
+++ b/dom/base/DOMRequest.h
@@ -68,17 +68,17 @@ public:
   IMPL_EVENT_HANDLER(error)
 
 
   void FireSuccess(JS::Handle<JS::Value> aResult);
   void FireError(const nsAString& aError);
   void FireError(nsresult aError);
   void FireDetailedError(DOMError* aError);
 
-  DOMRequest(nsPIDOMWindow* aWindow);
+  explicit DOMRequest(nsPIDOMWindow* aWindow);
 
 protected:
   virtual ~DOMRequest()
   {
     mResult = JSVAL_VOID;
     mozilla::DropJSObjects(this);
   }
 
--- a/dom/base/Navigator.cpp
+++ b/dom/base/Navigator.cpp
@@ -2357,17 +2357,17 @@ Navigator::HasDataStoreSupport(nsIPrinci
 // A WorkerMainThreadRunnable to synchronously dispatch the call of
 // HasDataStoreSupport() from the worker thread to the main thread.
 class HasDataStoreSupportRunnable MOZ_FINAL
   : public workers::WorkerMainThreadRunnable
 {
 public:
   bool mResult;
 
-  HasDataStoreSupportRunnable(workers::WorkerPrivate* aWorkerPrivate)
+  explicit HasDataStoreSupportRunnable(workers::WorkerPrivate* aWorkerPrivate)
     : workers::WorkerMainThreadRunnable(aWorkerPrivate)
     , mResult(false)
   {
     MOZ_ASSERT(aWorkerPrivate);
     aWorkerPrivate->AssertIsOnWorkerThread();
   }
 
 protected:
--- a/dom/base/Navigator.h
+++ b/dom/base/Navigator.h
@@ -105,17 +105,17 @@ class AudioChannelManager;
 #endif
 } // namespace system
 
 class Navigator MOZ_FINAL : public nsIDOMNavigator
                           , public nsIMozNavigatorNetwork
                           , public nsWrapperCache
 {
 public:
-  Navigator(nsPIDOMWindow *aInnerWindow);
+  explicit Navigator(nsPIDOMWindow* aInnerWindow);
 
   NS_DECL_CYCLE_COLLECTING_ISUPPORTS
   NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_CLASS_AMBIGUOUS(Navigator,
                                                          nsIDOMNavigator)
   NS_DECL_NSIDOMNAVIGATOR
   NS_DECL_NSIMOZNAVIGATORNETWORK
 
   static void Init();
--- a/dom/base/PerformanceEntry.h
+++ b/dom/base/PerformanceEntry.h
@@ -15,17 +15,17 @@ namespace dom {
 // http://www.w3.org/TR/performance-timeline/#performanceentry
 class PerformanceEntry : public nsISupports,
                          public nsWrapperCache
 {
 protected:
   virtual ~PerformanceEntry();
 
 public:
-  PerformanceEntry(nsPerformance* aPerformance);
+  explicit PerformanceEntry(nsPerformance* aPerformance);
 
   NS_DECL_CYCLE_COLLECTING_ISUPPORTS
   NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_CLASS(PerformanceEntry)
 
   virtual JSObject* WrapObject(JSContext* aCx) MOZ_OVERRIDE;
 
   nsPerformance* GetParentObject() const
   {
--- a/dom/base/SubtleCrypto.h
+++ b/dom/base/SubtleCrypto.h
@@ -26,17 +26,17 @@ class SubtleCrypto MOZ_FINAL : public ns
 {
   ~SubtleCrypto() {}
 
 public:
   NS_DECL_CYCLE_COLLECTING_ISUPPORTS
   NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_CLASS(SubtleCrypto)
 
 public:
-  SubtleCrypto(nsPIDOMWindow* aWindow);
+  explicit SubtleCrypto(nsPIDOMWindow* aWindow);
 
   nsPIDOMWindow* GetParentObject() const
   {
     return mWindow;
   }
 
   virtual JSObject* WrapObject(JSContext* aCx) MOZ_OVERRIDE;
 
--- a/dom/base/URL.h
+++ b/dom/base/URL.h
@@ -34,17 +34,17 @@ class URLProxy;
 class URL MOZ_FINAL : public URLSearchParamsObserver
 {
   ~URL() {}
 
 public:
   NS_DECL_CYCLE_COLLECTING_ISUPPORTS
   NS_DECL_CYCLE_COLLECTION_CLASS(URL)
 
-  URL(nsIURI* aURI);
+  explicit URL(nsIURI* aURI);
 
   // WebIDL methods
   JSObject*
   WrapObject(JSContext* aCx);
 
   static already_AddRefed<URL>
   Constructor(const GlobalObject& aGlobal, const nsAString& aUrl,
               URL& aBase, ErrorResult& aRv);
--- a/dom/base/nsDOMWindowList.h
+++ b/dom/base/nsDOMWindowList.h
@@ -11,17 +11,17 @@
 #include "nsIDocShell.h"
 
 class nsIDocShell;
 class nsIDOMWindow;
 
 class nsDOMWindowList : public nsIDOMWindowCollection
 {
 public:
-  nsDOMWindowList(nsIDocShell *aDocShell);
+  explicit nsDOMWindowList(nsIDocShell* aDocShell);
 
   NS_DECL_ISUPPORTS
   NS_DECL_NSIDOMWINDOWCOLLECTION
 
   uint32_t GetLength();
   already_AddRefed<nsIDOMWindow> IndexedGetter(uint32_t aIndex, bool& aFound);
 
   //local methods
--- a/dom/base/nsDOMWindowUtils.cpp
+++ b/dom/base/nsDOMWindowUtils.cpp
@@ -3698,17 +3698,17 @@ nsDOMWindowUtils::GetOMTAStyle(nsIDOMEle
   return NS_OK;
 }
 
 namespace {
 
 class HandlingUserInputHelper MOZ_FINAL : public nsIJSRAIIHelper
 {
 public:
-  HandlingUserInputHelper(bool aHandlingUserInput);
+  explicit HandlingUserInputHelper(bool aHandlingUserInput);
 
   NS_DECL_ISUPPORTS
   NS_DECL_NSIJSRAIIHELPER
 
 private:
   ~HandlingUserInputHelper();
 
   bool mHandlingUserInput;
--- a/dom/base/nsGlobalWindow.cpp
+++ b/dom/base/nsGlobalWindow.cpp
@@ -476,17 +476,17 @@ static const char sPopStatePrefStr[] = "
 /**
  * An indirect observer object that means we don't have to implement nsIObserver
  * on nsGlobalWindow, where any script could see it.
  */
 class nsGlobalWindowObserver MOZ_FINAL : public nsIObserver,
                                          public nsIInterfaceRequestor
 {
 public:
-  nsGlobalWindowObserver(nsGlobalWindow* aWindow) : mWindow(aWindow) {}
+  explicit nsGlobalWindowObserver(nsGlobalWindow* aWindow) : mWindow(aWindow) {}
   NS_DECL_ISUPPORTS
   NS_IMETHOD Observe(nsISupports* aSubject, const char* aTopic, const char16_t* aData)
   {
     if (!mWindow)
       return NS_OK;
     return mWindow->Observe(aSubject, aTopic, aData);
   }
   void Forget() { mWindow = nullptr; }
@@ -8763,17 +8763,17 @@ nsGlobalWindow::RunPendingTimeoutsRecurs
 
     RunPendingTimeoutsRecursive(aTopWindow, childWin);
   }
 }
 
 class nsPendingTimeoutRunner : public nsRunnable
 {
 public:
-  nsPendingTimeoutRunner(nsGlobalWindow *aWindow)
+  explicit nsPendingTimeoutRunner(nsGlobalWindow* aWindow)
     : mWindow(aWindow)
   {
     NS_ASSERTION(mWindow, "mWindow is null.");
   }
 
   NS_IMETHOD Run()
   {
     nsGlobalWindow::RunPendingTimeoutsRecursive(mWindow, mWindow);
@@ -11707,17 +11707,17 @@ nsGlobalWindow::UnblockScriptedClosing()
   mBlockScriptedClosingFlag = false;
 }
 
 class AutoUnblockScriptClosing
 {
 private:
   nsRefPtr<nsGlobalWindow> mWin;
 public:
-  AutoUnblockScriptClosing(nsGlobalWindow* aWin)
+  explicit AutoUnblockScriptClosing(nsGlobalWindow* aWin)
     : mWin(aWin)
   {
     MOZ_ASSERT(mWin);
     MOZ_ASSERT(mWin->IsOuterWindow());
   }
   ~AutoUnblockScriptClosing()
   {
     void (nsGlobalWindow::*run)() = &nsGlobalWindow::UnblockScriptedClosing;
--- a/dom/base/nsHistory.h
+++ b/dom/base/nsHistory.h
@@ -25,17 +25,17 @@ class nsHistory MOZ_FINAL : public nsIDO
                                                   // backwards compat
                             public nsWrapperCache
 {
 public:
   NS_DECL_CYCLE_COLLECTING_ISUPPORTS
   NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_CLASS(nsHistory)
 
 public:
-  nsHistory(nsPIDOMWindow* aInnerWindow);
+  explicit nsHistory(nsPIDOMWindow* aInnerWindow);
 
   nsPIDOMWindow* GetParentObject() const;
   virtual JSObject* WrapObject(JSContext* aCx) MOZ_OVERRIDE;
 
   uint32_t GetLength(mozilla::ErrorResult& aRv) const;
   void GetState(JSContext* aCx, JS::MutableHandle<JS::Value> aResult,
                 mozilla::ErrorResult& aRv) const;
   void Go(int32_t aDelta, mozilla::ErrorResult& aRv);
--- a/dom/base/nsJSEnvironment.cpp
+++ b/dom/base/nsJSEnvironment.cpp
@@ -296,17 +296,17 @@ nsJSEnvironmentObserver::Observe(nsISupp
 }
 
 /****************************************************************
  ************************** AutoFree ****************************
  ****************************************************************/
 
 class AutoFree {
 public:
-  AutoFree(void *aPtr) : mPtr(aPtr) {
+  explicit AutoFree(void* aPtr) : mPtr(aPtr) {
   }
   ~AutoFree() {
     if (mPtr)
       nsMemory::Free(mPtr);
   }
   void Invalidate() {
     mPtr = 0;
   }
@@ -2537,17 +2537,17 @@ nsJSContext::GC(JS::gcreason::Reason aRe
   PokeGC(aReason);
 }
 
 class NotifyGCEndRunnable : public nsRunnable
 {
   nsString mMessage;
 
 public:
-  NotifyGCEndRunnable(const nsString& aMessage) : mMessage(aMessage) {}
+  explicit NotifyGCEndRunnable(const nsString& aMessage) : mMessage(aMessage) {}
 
   NS_DECL_NSIRUNNABLE
 };
 
 NS_IMETHODIMP
 NotifyGCEndRunnable::Run()
 {
   MOZ_ASSERT(NS_IsMainThread());
--- a/dom/base/nsMimeTypeArray.h
+++ b/dom/base/nsMimeTypeArray.h
@@ -15,17 +15,17 @@
 
 class nsMimeType;
 class nsPluginElement;
 
 class nsMimeTypeArray MOZ_FINAL : public nsISupports,
                                   public nsWrapperCache
 {
 public:
-  nsMimeTypeArray(nsPIDOMWindow* aWindow);
+  explicit nsMimeTypeArray(nsPIDOMWindow* aWindow);
 
   NS_DECL_CYCLE_COLLECTING_ISUPPORTS
   NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_CLASS(nsMimeTypeArray)
 
   nsPIDOMWindow* GetParentObject() const;
   virtual JSObject* WrapObject(JSContext* aCx) MOZ_OVERRIDE;
 
   void Refresh();
--- a/dom/base/nsPluginArray.h
+++ b/dom/base/nsPluginArray.h
@@ -24,17 +24,17 @@ class nsPluginArray MOZ_FINAL : public n
 public:
   NS_DECL_CYCLE_COLLECTING_ISUPPORTS
   NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_CLASS_AMBIGUOUS(nsPluginArray,
                                                          nsIObserver)
 
   // nsIObserver
   NS_DECL_NSIOBSERVER
 
-  nsPluginArray(nsPIDOMWindow* aWindow);
+  explicit nsPluginArray(nsPIDOMWindow* aWindow);
   nsPIDOMWindow* GetParentObject() const;
   virtual JSObject* WrapObject(JSContext* aCx) MOZ_OVERRIDE;
 
   // nsPluginArray registers itself as an observer with a weak reference.
   // This can't be done in the constructor, because at that point its
   // refcount is 0 (and it gets destroyed upon registration). So, Init()
   // must be called after construction.
   void Init();
--- a/dom/base/nsScreen.h
+++ b/dom/base/nsScreen.h
@@ -139,17 +139,17 @@ private:
     ~FullScreenEventListener() {}
   public:
     FullScreenEventListener() {}
 
     NS_DECL_ISUPPORTS
     NS_DECL_NSIDOMEVENTLISTENER
   };
 
-  nsScreen(nsPIDOMWindow* aWindow);
+  explicit nsScreen(nsPIDOMWindow* aWindow);
   virtual ~nsScreen();
 
   enum LockPermission {
     LOCK_DENIED,
     FULLSCREEN_LOCK_ALLOWED,
     LOCK_ALLOWED
   };
 
--- a/dom/base/nsWindowMemoryReporter.h
+++ b/dom/base/nsWindowMemoryReporter.h
@@ -31,17 +31,17 @@ class nsWindowSizes {
   macro(Style, mStyleSheetsSize) \
   macro(Other, mLayoutPresShellSize) \
   macro(Style, mLayoutStyleSetsSize) \
   macro(Other, mLayoutTextRunsSize) \
   macro(Other, mLayoutPresContextSize) \
   macro(Other, mPropertyTablesSize) \
 
 public:
-  nsWindowSizes(mozilla::MallocSizeOf aMallocSizeOf)
+  explicit nsWindowSizes(mozilla::MallocSizeOf aMallocSizeOf)
     :
       #define ZERO_SIZE(kind, mSize)  mSize(0),
       FOR_EACH_SIZE(ZERO_SIZE)
       #undef ZERO_SIZE
       mDOMEventTargetsCount(0),
       mDOMEventListenersCount(0),
       mArenaStats(),
       mMallocSizeOf(aMallocSizeOf)
--- a/dom/base/nsWindowRoot.h
+++ b/dom/base/nsWindowRoot.h
@@ -21,17 +21,17 @@ class EventChainPreVisitor;
 #include "nsIDOMEventTarget.h"
 #include "nsPIWindowRoot.h"
 #include "nsCycleCollectionParticipant.h"
 #include "nsAutoPtr.h"
 
 class nsWindowRoot : public nsPIWindowRoot
 {
 public:
-  nsWindowRoot(nsPIDOMWindow* aWindow);
+  explicit nsWindowRoot(nsPIDOMWindow* aWindow);
 
   NS_DECL_CYCLE_COLLECTING_ISUPPORTS
   NS_DECL_NSIDOMEVENTTARGET
 
   virtual mozilla::EventListenerManager*
     GetExistingListenerManager() const MOZ_OVERRIDE;
   virtual mozilla::EventListenerManager*
     GetOrCreateListenerManager() MOZ_OVERRIDE;
--- a/dom/base/nsWrapperCache.cpp
+++ b/dom/base/nsWrapperCache.cpp
@@ -38,17 +38,17 @@ nsWrapperCache::ReleaseWrapper(void* aSc
   }
 }
 
 #ifdef DEBUG
 
 class DebugWrapperTraversalCallback : public nsCycleCollectionTraversalCallback
 {
 public:
-  DebugWrapperTraversalCallback(void* aWrapper)
+  explicit DebugWrapperTraversalCallback(void* aWrapper)
     : mFound(false)
     , mWrapper(aWrapper)
   {
     mFlags = WANT_ALL_TRACES;
   }
 
   NS_IMETHOD_(void) DescribeRefCountedNode(nsrefcnt aRefCount,
                                            const char* aObjName)
--- a/dom/battery/BatteryManager.h
+++ b/dom/battery/BatteryManager.h
@@ -22,17 +22,17 @@ class BatteryInformation;
 
 namespace dom {
 namespace battery {
 
 class BatteryManager : public DOMEventTargetHelper
                      , public BatteryObserver
 {
 public:
-  BatteryManager(nsPIDOMWindow* aWindow);
+  explicit BatteryManager(nsPIDOMWindow* aWindow);
 
   void Init();
   void Shutdown();
 
   // For IObserver.
   void Notify(const hal::BatteryInformation& aBatteryInfo);
 
   /**
--- a/dom/camera/DOMCameraManager.h
+++ b/dom/camera/DOMCameraManager.h
@@ -85,17 +85,17 @@ public:
 
 protected:
   void XpComShutdown();
   void Shutdown(uint64_t aWindowId);
   ~nsDOMCameraManager();
 
 private:
   nsDOMCameraManager() MOZ_DELETE;
-  nsDOMCameraManager(nsPIDOMWindow* aWindow);
+  explicit nsDOMCameraManager(nsPIDOMWindow* aWindow);
   nsDOMCameraManager(const nsDOMCameraManager&) MOZ_DELETE;
   nsDOMCameraManager& operator=(const nsDOMCameraManager&) MOZ_DELETE;
 
 protected:
   uint64_t mWindowId;
   uint32_t mPermission;
   nsCOMPtr<nsPIDOMWindow> mWindow;
   /**
--- a/dom/canvas/WebGLContext.h
+++ b/dom/canvas/WebGLContext.h
@@ -1407,17 +1407,17 @@ class WebGLObserver MOZ_FINAL
     : public nsIObserver
     , public nsIDOMEventListener
 {
 public:
     NS_DECL_ISUPPORTS
     NS_DECL_NSIOBSERVER
     NS_DECL_NSIDOMEVENTLISTENER
 
-    WebGLObserver(WebGLContext* aContext);
+    explicit WebGLObserver(WebGLContext* aContext);
 
     void Destroy();
 
     void RegisterVisibilityChangeEvent();
     void UnregisterVisibilityChangeEvent();
 
     void RegisterMemoryPressureEvent();
     void UnregisterMemoryPressureEvent();
--- a/dom/canvas/WebGLFramebuffer.h
+++ b/dom/canvas/WebGLFramebuffer.h
@@ -28,29 +28,29 @@ class WebGLFramebuffer MOZ_FINAL
     , public WebGLRefCountedObject<WebGLFramebuffer>
     , public LinkedListElement<WebGLFramebuffer>
     , public WebGLContextBoundObject
     , public SupportsWeakPtr<WebGLFramebuffer>
 {
 public:
     MOZ_DECLARE_REFCOUNTED_TYPENAME(WebGLFramebuffer)
 
-    WebGLFramebuffer(WebGLContext* context);
+    explicit WebGLFramebuffer(WebGLContext* context);
 
     struct Attachment
     {
         // deleting a texture or renderbuffer immediately detaches it
         WebGLRefPtr<WebGLTexture> mTexturePtr;
         WebGLRefPtr<WebGLRenderbuffer> mRenderbufferPtr;
         GLenum mAttachmentPoint;
         GLenum mTexImageTarget;
         GLint mTexImageLevel;
         mutable bool mNeedsFinalize;
 
-        Attachment(GLenum aAttachmentPoint = LOCAL_GL_COLOR_ATTACHMENT0);
+        explicit Attachment(GLenum aAttachmentPoint = LOCAL_GL_COLOR_ATTACHMENT0);
         ~Attachment();
 
         bool IsDefined() const {
             return Texture() || Renderbuffer();
         }
 
         bool IsDeleteRequested() const;
 
--- a/dom/canvas/WebGLObjectModel.h
+++ b/dom/canvas/WebGLObjectModel.h
@@ -177,17 +177,17 @@ public:
     { }
 
     WebGLRefPtr(const WebGLRefPtr<T>& aSmartPtr)
         : mRawPtr(aSmartPtr.mRawPtr)
     {
         AddRefOnPtr(mRawPtr);
     }
 
-    WebGLRefPtr(T *aRawPtr)
+    explicit WebGLRefPtr(T* aRawPtr)
         : mRawPtr(aRawPtr)
     {
         AddRefOnPtr(mRawPtr);
     }
 
     ~WebGLRefPtr() {
         ReleasePtr(mRawPtr);
     }
@@ -256,17 +256,17 @@ protected:
 };
 
 // This class is a mixin for objects that are tied to a specific
 // context (which is to say, all of them).  They provide initialization
 // as well as comparison with the current context.
 class WebGLContextBoundObject
 {
 public:
-    WebGLContextBoundObject(WebGLContext *context);
+    explicit WebGLContextBoundObject(WebGLContext* context);
 
     bool IsCompatibleWithContext(WebGLContext *other);
 
     WebGLContext *Context() const { return mContext; }
 
 protected:
     WebGLContext *mContext;
     uint32_t mContextGeneration;
--- a/dom/canvas/WebGLRenderbuffer.h
+++ b/dom/canvas/WebGLRenderbuffer.h
@@ -21,17 +21,17 @@ class WebGLRenderbuffer MOZ_FINAL
     , public WebGLBindableName
     , public WebGLRefCountedObject<WebGLRenderbuffer>
     , public LinkedListElement<WebGLRenderbuffer>
     , public WebGLRectangleObject
     , public WebGLContextBoundObject
     , public WebGLFramebufferAttachable
 {
 public:
-    WebGLRenderbuffer(WebGLContext *context);
+    explicit WebGLRenderbuffer(WebGLContext* context);
 
     void Delete();
 
     bool HasUninitializedImageData() const { return mImageDataStatus == WebGLImageDataStatus::UninitializedImageData; }
     void SetImageDataStatus(WebGLImageDataStatus x) {
         // there is no way to go from having image data to not having any
         MOZ_ASSERT(x != WebGLImageDataStatus::NoImageData ||
                    mImageDataStatus == WebGLImageDataStatus::NoImageData);
--- a/dom/crypto/CryptoKey.h
+++ b/dom/crypto/CryptoKey.h
@@ -83,17 +83,17 @@ public:
     SIGN       = 0x00040000,
     VERIFY     = 0x00080000,
     DERIVEKEY  = 0x00100000,
     DERIVEBITS = 0x00200000,
     WRAPKEY    = 0x00400000,
     UNWRAPKEY  = 0x00800000
   };
 
-  CryptoKey(nsIGlobalObject* aWindow);
+  explicit CryptoKey(nsIGlobalObject* aWindow);
 
   nsIGlobalObject* GetParentObject() const
   {
     return mGlobal;
   }
 
   virtual JSObject* WrapObject(JSContext* aCx) MOZ_OVERRIDE;
 
--- a/dom/devicestorage/DeviceStorage.h
+++ b/dom/devicestorage/DeviceStorage.h
@@ -189,17 +189,17 @@ public:
                    const mozilla::dom::Nullable<bool>& aWantsUntrusted,
                    ErrorResult& aRv) MOZ_OVERRIDE;
 
   virtual void RemoveEventListener(const nsAString& aType,
                                    mozilla::dom::EventListener* aListener,
                                    bool aUseCapture,
                                    ErrorResult& aRv) MOZ_OVERRIDE;
 
-  nsDOMDeviceStorage(nsPIDOMWindow* aWindow);
+  explicit nsDOMDeviceStorage(nsPIDOMWindow* aWindow);
 
   nsresult Init(nsPIDOMWindow* aWindow, const nsAString& aType,
                 const nsAString& aVolName);
 
   bool IsAvailable();
   bool IsFullPath(const nsAString& aPath)
   {
     return aPath.Length() > 0 && aPath.CharAt(0) == '/';
--- a/dom/devicestorage/DeviceStorageRequestParent.h
+++ b/dom/devicestorage/DeviceStorageRequestParent.h
@@ -17,17 +17,17 @@
 
 namespace mozilla {
 namespace dom {
 namespace devicestorage {
 
 class DeviceStorageRequestParent : public PDeviceStorageRequestParent
 {
 public:
-  DeviceStorageRequestParent(const DeviceStorageParams& aParams);
+  explicit DeviceStorageRequestParent(const DeviceStorageParams& aParams);
 
   NS_IMETHOD_(MozExternalRefCountType) AddRef();
   NS_IMETHOD_(MozExternalRefCountType) Release();
 
   bool EnsureRequiredPermissions(mozilla::dom::ContentParent* aParent);
   void Dispatch();
 
   virtual void ActorDestroy(ActorDestroyReason);
@@ -38,17 +38,17 @@ protected:
 private:
   ThreadSafeAutoRefCnt mRefCnt;
   NS_DECL_OWNINGTHREAD
   DeviceStorageParams mParams;
 
   class CancelableRunnable : public nsRunnable
   {
   public:
-    CancelableRunnable(DeviceStorageRequestParent* aParent)
+    explicit CancelableRunnable(DeviceStorageRequestParent* aParent)
       : mParent(aParent)
     {
       mCanceled = !(mParent->AddRunnable(this));
     }
 
     virtual ~CancelableRunnable() {
     }
 
@@ -81,17 +81,17 @@ private:
       virtual nsresult CancelableRun();
     private:
       nsString mError;
   };
 
   class PostSuccessEvent : public CancelableRunnable
   {
     public:
-      PostSuccessEvent(DeviceStorageRequestParent* aParent);
+      explicit PostSuccessEvent(DeviceStorageRequestParent* aParent);
       virtual ~PostSuccessEvent();
       virtual nsresult CancelableRun();
   };
 
   class PostBlobSuccessEvent : public CancelableRunnable
   {
     public:
       PostBlobSuccessEvent(DeviceStorageRequestParent* aParent, DeviceStorageFile* aFile, uint32_t aLength, nsACString& aMimeType, uint64_t aLastModifiedDate);
--- a/dom/devicestorage/nsDeviceStorage.h
+++ b/dom/devicestorage/nsDeviceStorage.h
@@ -171,18 +171,18 @@ private:
   nsString mMusicExtensions;
 
   static mozilla::StaticAutoPtr<DeviceStorageTypeChecker> sDeviceStorageTypeChecker;
 };
 
 class ContinueCursorEvent MOZ_FINAL : public nsRunnable
 {
 public:
-  ContinueCursorEvent(already_AddRefed<mozilla::dom::DOMRequest> aRequest);
-  ContinueCursorEvent(mozilla::dom::DOMRequest* aRequest);
+  explicit ContinueCursorEvent(already_AddRefed<mozilla::dom::DOMRequest> aRequest);
+  explicit ContinueCursorEvent(mozilla::dom::DOMRequest* aRequest);
   ~ContinueCursorEvent();
   void Continue();
 
   NS_IMETHOD Run() MOZ_OVERRIDE;
 private:
   already_AddRefed<DeviceStorageFile> GetNextFile();
   nsRefPtr<mozilla::dom::DOMRequest> mRequest;
 };
--- a/dom/events/CustomEvent.h
+++ b/dom/events/CustomEvent.h
@@ -17,19 +17,19 @@ class CustomEvent MOZ_FINAL : public Eve
                               public nsIDOMCustomEvent
 {
 private:
   virtual ~CustomEvent();
 
   nsCOMPtr<nsIVariant> mDetail;
 
 public:
-  CustomEvent(mozilla::dom::EventTarget* aOwner,
-              nsPresContext* aPresContext = nullptr,
-              mozilla::WidgetEvent* aEvent = nullptr);
+  explicit CustomEvent(mozilla::dom::EventTarget* aOwner,
+                       nsPresContext* aPresContext = nullptr,
+                       mozilla::WidgetEvent* aEvent = nullptr);
 
   NS_DECL_ISUPPORTS_INHERITED
   NS_DECL_CYCLE_COLLECTION_CLASS_INHERITED(CustomEvent, Event)
   NS_FORWARD_TO_EVENT
   NS_DECL_NSIDOMCUSTOMEVENT
 
   static already_AddRefed<CustomEvent>
   Constructor(const GlobalObject& aGlobal,
--- a/dom/events/TouchEvent.h
+++ b/dom/events/TouchEvent.h
@@ -21,17 +21,17 @@ namespace dom {
 
 class TouchList MOZ_FINAL : public nsISupports
                           , public nsWrapperCache
 {
 public:
   NS_DECL_CYCLE_COLLECTING_ISUPPORTS
   NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_CLASS(TouchList)
 
-  TouchList(nsISupports* aParent)
+  explicit TouchList(nsISupports* aParent)
     : mParent(aParent)
   {
     SetIsDOMBinding();
     nsJSContext::LikelyShortLivingObjectCreated();
   }
   TouchList(nsISupports* aParent,
             const WidgetTouchEvent::TouchArray& aTouches)
     : mParent(aParent)
--- a/dom/filesystem/FileSystemTaskBase.h
+++ b/dom/filesystem/FileSystemTaskBase.h
@@ -137,17 +137,17 @@ public:
   virtual void
   GetPermissionAccessType(nsCString& aAccess) const = 0;
 
   NS_DECL_NSIRUNNABLE
 protected:
   /*
    * To create a task to handle the page content request.
    */
-  FileSystemTaskBase(FileSystemBase* aFileSystem);
+  explicit FileSystemTaskBase(FileSystemBase* aFileSystem);
 
   /*
    * To create a parent process task delivered from the child process through
    * IPC.
    */
   FileSystemTaskBase(FileSystemBase* aFileSystem,
                      const FileSystemParams& aParam,
                      FileSystemRequestParent* aParent);
--- a/dom/gamepad/GamepadButton.h
+++ b/dom/gamepad/GamepadButton.h
@@ -11,19 +11,19 @@
 
 namespace mozilla {
 namespace dom {
 
 class GamepadButton : public nsISupports,
                       public nsWrapperCache
 {
 public:
-  GamepadButton(nsISupports* aParent) : mParent(aParent),
-                                        mPressed(false),
-                                        mValue(0)
+  explicit GamepadButton(nsISupports* aParent) : mParent(aParent),
+                                                 mPressed(false),
+                                                 mValue(0)
   {
     SetIsDOMBinding();
   }
 
   NS_DECL_CYCLE_COLLECTING_ISUPPORTS
   NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_CLASS(GamepadButton)
 
   nsISupports* GetParentObject() const
--- a/dom/indexedDB/IDBDatabase.h
+++ b/dom/indexedDB/IDBDatabase.h
@@ -234,17 +234,17 @@ public:
                       ErrorResult& aRv)
   {
     return CreateMutableFile(aName, aType, aRv);
   }
 
   virtual void LastRelease() MOZ_OVERRIDE;
 
 private:
-  IDBDatabase(IDBWrapperCache* aOwnerCache);
+  explicit IDBDatabase(IDBWrapperCache* aOwnerCache);
   ~IDBDatabase();
 
   void OnUnlink();
   void InvalidateInternal(bool aIsDead);
 
   // The factory must be kept alive when IndexedDB is used in multiple
   // processes. If it dies then the entire actor tree will be destroyed with it
   // and the world will explode.
--- a/dom/indexedDB/IDBMutableFile.h
+++ b/dom/indexedDB/IDBMutableFile.h
@@ -124,17 +124,17 @@ public:
 
   already_AddRefed<DOMRequest>
   GetFile(ErrorResult& aError);
 
   IMPL_EVENT_HANDLER(abort)
   IMPL_EVENT_HANDLER(error)
 
 private:
-  IDBMutableFile(IDBDatabase* aOwner);
+  explicit IDBMutableFile(IDBDatabase* aOwner);
   ~IDBMutableFile();
 
   nsString mName;
   nsString mType;
 
   nsRefPtr<IDBDatabase> mDatabase;
   nsRefPtr<FileInfo> mFileInfo;
 };
--- a/dom/indexedDB/IDBTransaction.h
+++ b/dom/indexedDB/IDBTransaction.h
@@ -269,17 +269,17 @@ private:
   // Should only be called directly through IndexedDBDatabaseChild.
   static already_AddRefed<IDBTransaction>
   CreateInternal(IDBDatabase* aDatabase,
                  const Sequence<nsString>& aObjectStoreNames,
                  Mode aMode,
                  bool aDispatchDelayed,
                  bool aIsVersionChangeTransactionChild);
 
-  IDBTransaction(IDBDatabase* aDatabase);
+  explicit IDBTransaction(IDBDatabase* aDatabase);
   ~IDBTransaction();
 
   nsresult CommitOrRollback();
 
   nsRefPtr<IDBDatabase> mDatabase;
   nsRefPtr<DatabaseInfo> mDatabaseInfo;
   nsRefPtr<DOMError> mError;
   nsTArray<nsString> mObjectStoreNames;
@@ -369,17 +369,17 @@ class UpdateRefcountFunction MOZ_FINAL :
 {
   ~UpdateRefcountFunction()
   { }
 
 public:
   NS_DECL_THREADSAFE_ISUPPORTS
   NS_DECL_MOZISTORAGEFUNCTION
 
-  UpdateRefcountFunction(FileManager* aFileManager)
+  explicit UpdateRefcountFunction(FileManager* aFileManager)
   : mFileManager(aFileManager), mInSavepoint(false)
   { }
 
   void StartSavepoint()
   {
     MOZ_ASSERT(!mInSavepoint);
     MOZ_ASSERT(!mSavepointEntriesIndex.Count());
 
@@ -414,17 +414,17 @@ public:
   nsresult WillCommit(mozIStorageConnection* aConnection);
   void DidCommit();
   void DidAbort();
 
 private:
   class FileInfoEntry
   {
   public:
-    FileInfoEntry(FileInfo* aFileInfo)
+    explicit FileInfoEntry(FileInfo* aFileInfo)
     : mFileInfo(aFileInfo), mDelta(0), mSavepointDelta(0)
     { }
 
     ~FileInfoEntry()
     { }
 
     nsRefPtr<FileInfo> mFileInfo;
     int32_t mDelta;
--- a/dom/indexedDB/ipc/IndexedDBChild.h
+++ b/dom/indexedDB/ipc/IndexedDBChild.h
@@ -219,17 +219,17 @@ protected:
  * IndexedDBObjectStoreChild
  ******************************************************************************/
 
 class IndexedDBObjectStoreChild : public PIndexedDBObjectStoreChild
 {
   IDBObjectStore* mObjectStore;
 
 public:
-  IndexedDBObjectStoreChild(IDBObjectStore* aObjectStore);
+  explicit IndexedDBObjectStoreChild(IDBObjectStore* aObjectStore);
   virtual ~IndexedDBObjectStoreChild();
 
   void
   Disconnect();
 
 protected:
   virtual void
   ActorDestroy(ActorDestroyReason aWhy) MOZ_OVERRIDE;
@@ -264,17 +264,17 @@ protected:
  * IndexedDBIndexChild
  ******************************************************************************/
 
 class IndexedDBIndexChild : public PIndexedDBIndexChild
 {
   IDBIndex* mIndex;
 
 public:
-  IndexedDBIndexChild(IDBIndex* aIndex);
+  explicit IndexedDBIndexChild(IDBIndex* aIndex);
   virtual ~IndexedDBIndexChild();
 
   void
   Disconnect();
 
 protected:
   virtual void
   ActorDestroy(ActorDestroyReason aWhy) MOZ_OVERRIDE;
@@ -347,17 +347,17 @@ protected:
 public:
   IDBRequest*
   GetRequest() const;
 
   void
   Disconnect();
 
 protected:
-  IndexedDBRequestChildBase(AsyncConnectionHelper* aHelper);
+  explicit IndexedDBRequestChildBase(AsyncConnectionHelper* aHelper);
   virtual ~IndexedDBRequestChildBase();
 
   virtual bool
   Recv__delete__(const ResponseValue& aResponse) MOZ_OVERRIDE;
 };
 
 /*******************************************************************************
  * IndexedDBObjectStoreRequestChild
--- a/dom/indexedDB/ipc/IndexedDBParent.h
+++ b/dom/indexedDB/ipc/IndexedDBParent.h
@@ -53,17 +53,17 @@ class IndexedDBVersionChangeObjectStoreP
 
 /*******************************************************************************
  * AutoSetCurrentTransaction
  ******************************************************************************/
 
 class AutoSetCurrentTransaction
 {
 public:
-  AutoSetCurrentTransaction(IDBTransaction* aTransaction);
+  explicit AutoSetCurrentTransaction(IDBTransaction* aTransaction);
   ~AutoSetCurrentTransaction();
 };
 
 /*******************************************************************************
  * WeakEventListener
  ******************************************************************************/
 
 class WeakEventListenerBase : public nsIDOMEventListener
@@ -81,17 +81,17 @@ protected:
 };
 
 template <class T>
 class WeakEventListener : public WeakEventListenerBase
 {
   T* mActor;
 
 public:
-  WeakEventListener(T* aActor)
+  explicit WeakEventListener(T* aActor)
   : mActor(aActor)
   { }
 
   void
   NoteDyingActor()
   {
     mActor = nullptr;
   }
@@ -108,17 +108,17 @@ protected:
 };
 
 template <class T>
 class AutoWeakEventListener
 {
   nsRefPtr<WeakEventListener<T> > mEventListener;
 
 public:
-  AutoWeakEventListener(T* aActor)
+  explicit AutoWeakEventListener(T* aActor)
   {
     mEventListener = new WeakEventListener<T>(aActor);
   }
 
   ~AutoWeakEventListener()
   {
     mEventListener->NoteDyingActor();
   }
@@ -151,18 +151,18 @@ class IndexedDBParent : private PIndexed
   nsCString mASCIIOrigin;
 
   ContentParent* mManagerContent;
   TabParent* mManagerTab;
 
   bool mDisconnected;
 
 public:
-  IndexedDBParent(ContentParent* aContentParent);
-  IndexedDBParent(TabParent* aTabParent);
+  explicit IndexedDBParent(ContentParent* aContentParent);
+  explicit IndexedDBParent(TabParent* aTabParent);
 
   virtual ~IndexedDBParent();
 
   const nsCString&
   GetASCIIOrigin() const
   {
     return mASCIIOrigin;
   }
@@ -424,17 +424,17 @@ public:
   {
     return mCursor;
   }
 
   bool
   IsDisconnected() const;
 
 protected:
-  IndexedDBCursorParent(IDBCursor* aCursor);
+  explicit IndexedDBCursorParent(IDBCursor* aCursor);
   virtual ~IndexedDBCursorParent();
 
   virtual void
   ActorDestroy(ActorDestroyReason aWhy) MOZ_OVERRIDE;
 
   virtual bool
   RecvPIndexedDBRequestConstructor(PIndexedDBRequestParent* aActor,
                                    const CursorRequestParams& aParams)
@@ -855,17 +855,17 @@ class IndexedDBDeleteDatabaseRequestPare
   nsRefPtr<IDBFactory> mFactory;
   nsRefPtr<IDBOpenDBRequest> mOpenRequest;
 
 public:
   nsresult
   HandleEvent(nsIDOMEvent* aEvent);
 
 protected:
-  IndexedDBDeleteDatabaseRequestParent(IDBFactory* aFactory);
+  explicit IndexedDBDeleteDatabaseRequestParent(IDBFactory* aFactory);
   virtual ~IndexedDBDeleteDatabaseRequestParent();
 
   virtual void ActorDestroy(ActorDestroyReason aWhy) MOZ_OVERRIDE;
 
   nsresult
   SetOpenRequest(IDBOpenDBRequest* aOpenRequest);
 
   bool
--- a/dom/ipc/Blob.cpp
+++ b/dom/ipc/Blob.cpp
@@ -436,17 +436,17 @@ NS_INTERFACE_MAP_BEGIN(RemoteInputStream
 NS_INTERFACE_MAP_END
 
 class InputStreamChild MOZ_FINAL
   : public PBlobStreamChild
 {
   nsRefPtr<RemoteInputStream> mRemoteStream;
 
 public:
-  InputStreamChild(RemoteInputStream* aRemoteStream)
+  explicit InputStreamChild(RemoteInputStream* aRemoteStream)
   : mRemoteStream(aRemoteStream)
   {
     MOZ_ASSERT(NS_IsMainThread());
     MOZ_ASSERT(aRemoteStream);
   }
 
   InputStreamChild()
   {
@@ -461,17 +461,17 @@ private:
 };
 
 class InputStreamParent MOZ_FINAL
   : public PBlobStreamParent
 {
   nsRefPtr<RemoteInputStream> mRemoteStream;
 
 public:
-  InputStreamParent(RemoteInputStream* aRemoteStream)
+  explicit InputStreamParent(RemoteInputStream* aRemoteStream)
   : mRemoteStream(aRemoteStream)
   {
     MOZ_ASSERT(NS_IsMainThread());
     MOZ_ASSERT(aRemoteStream);
   }
 
   InputStreamParent()
   {
@@ -872,17 +872,17 @@ class BlobChild::RemoteBlob::SliceHelper
   BlobChild* mActor;
   nsRefPtr<DOMFileImpl> mSlice;
   uint64_t mStart;
   uint64_t mLength;
   nsString mContentType;
   bool mDone;
 
 public:
-  SliceHelper(BlobChild* aActor)
+  explicit SliceHelper(BlobChild* aActor)
     : mMonitor("BlobChild::RemoteBlob::SliceHelper::mMonitor")
     , mActor(aActor)
     , mStart(0)
     , mLength(0)
     , mDone(false)
   {
     // This may be created on any thread.
     MOZ_ASSERT(aActor);
@@ -1578,17 +1578,17 @@ class BlobParent::RemoteBlob::SliceHelpe
   BlobParent* mActor;
   nsRefPtr<DOMFileImpl> mSlice;
   uint64_t mStart;
   uint64_t mLength;
   nsString mContentType;
   bool mDone;
 
 public:
-  SliceHelper(BlobParent* aActor)
+  explicit SliceHelper(BlobParent* aActor)
     : mMonitor("BlobParent::RemoteBlob::SliceHelper::mMonitor")
     , mActor(aActor)
     , mStart(0)
     , mLength(0)
     , mDone(false)
   {
     // This may be created on any thread.
     MOZ_ASSERT(aActor);
--- a/dom/ipc/ColorPickerParent.h
+++ b/dom/ipc/ColorPickerParent.h
@@ -24,17 +24,17 @@ class ColorPickerParent : public PColorP
 
   virtual bool RecvOpen() MOZ_OVERRIDE;
   virtual void ActorDestroy(ActorDestroyReason aWhy) MOZ_OVERRIDE;
 
   class ColorPickerShownCallback MOZ_FINAL
     : public nsIColorPickerShownCallback
   {
   public:
-    ColorPickerShownCallback(ColorPickerParent* aColorPickerParnet)
+    explicit ColorPickerShownCallback(ColorPickerParent* aColorPickerParnet)
       : mColorPickerParent(aColorPickerParnet)
     {}
 
     NS_DECL_ISUPPORTS
     NS_DECL_NSICOLORPICKERSHOWNCALLBACK
 
     void Destroy();
 
@@ -53,9 +53,9 @@ class ColorPickerParent : public PColorP
 
   nsString mTitle;
   nsString mInitialColor;
 };
 
 } // namespace dom
 } // namespace mozilla
 
-#endif // mozilla_dom_ColorPickerParent_h
\ No newline at end of file
+#endif // mozilla_dom_ColorPickerParent_h
--- a/dom/ipc/ContentBridgeChild.h
+++ b/dom/ipc/ContentBridgeChild.h
@@ -12,17 +12,17 @@
 
 namespace mozilla {
 namespace dom {
 
 class ContentBridgeChild MOZ_FINAL : public PContentBridgeChild
                                    , public nsIContentChild
 {
 public:
-  ContentBridgeChild(Transport* aTransport);
+  explicit ContentBridgeChild(Transport* aTransport);
 
   NS_DECL_ISUPPORTS
 
   static ContentBridgeChild*
   Create(Transport* aTransport, ProcessId aOtherProcess);
 
   virtual void ActorDestroy(ActorDestroyReason aWhy) MOZ_OVERRIDE;
   void DeferredDestroy();
--- a/dom/ipc/ContentChild.cpp
+++ b/dom/ipc/ContentChild.cpp
@@ -356,17 +356,17 @@ public:
 private:
     nsCOMPtr<nsIObserver> mObserver;
     nsString mData;
 };
 
 class ConsoleListener MOZ_FINAL : public nsIConsoleListener
 {
 public:
-    ConsoleListener(ContentChild* aChild)
+    explicit ConsoleListener(ContentChild* aChild)
     : mChild(aChild) {}
 
     NS_DECL_ISUPPORTS
     NS_DECL_NSICONSOLELISTENER
 
 private:
     ~ConsoleListener() {}
 
@@ -712,27 +712,27 @@ ContentChild::AllocPMemoryReportRequestC
 }
 
 // This is just a wrapper for InfallibleTArray<MemoryReport> that implements
 // nsISupports, so it can be passed to nsIMemoryReporter::CollectReports.
 class MemoryReportsWrapper MOZ_FINAL : public nsISupports {
     ~MemoryReportsWrapper() {}
 public:
     NS_DECL_ISUPPORTS
-    MemoryReportsWrapper(InfallibleTArray<MemoryReport> *r) : mReports(r) { }
+    explicit MemoryReportsWrapper(InfallibleTArray<MemoryReport>* r) : mReports(r) { }
     InfallibleTArray<MemoryReport> *mReports;
 };
 NS_IMPL_ISUPPORTS0(MemoryReportsWrapper)
 
 class MemoryReportCallback MOZ_FINAL : public nsIMemoryReporterCallback
 {
 public:
     NS_DECL_ISUPPORTS
 
-    MemoryReportCallback(const nsACString &aProcess)
+    explicit MemoryReportCallback(const nsACString& aProcess)
     : mProcess(aProcess)
     {
     }
 
     NS_IMETHOD Callback(const nsACString &aProcess, const nsACString &aPath,
                         int32_t aKind, int32_t aUnits, int64_t aAmount,
                         const nsACString &aDescription,
                         nsISupports *aiWrappedReports)
--- a/dom/ipc/ContentParent.cpp
+++ b/dom/ipc/ContentParent.cpp
@@ -1595,17 +1595,17 @@ DelayedDeleteSubprocess(GeckoChildProces
                    new DeleteTask<GeckoChildProcessHost>(aSubprocess));
 }
 
 // This runnable only exists to delegate ownership of the
 // ContentParent to this runnable, until it's deleted by the event
 // system.
 struct DelayedDeleteContentParentTask : public nsRunnable
 {
-    DelayedDeleteContentParentTask(ContentParent* aObj) : mObj(aObj) { }
+    explicit DelayedDeleteContentParentTask(ContentParent* aObj) : mObj(aObj) { }
 
     // No-op
     NS_IMETHODIMP Run() { return NS_OK; }
 
     nsRefPtr<ContentParent> mObj;
 };
 
 }
--- a/dom/ipc/ContentProcess.h
+++ b/dom/ipc/ContentProcess.h
@@ -21,17 +21,17 @@ namespace dom {
  * ContentProcess is a singleton on the content process which represents
  * the main thread where tab instances live.
  */
 class ContentProcess : public mozilla::ipc::ProcessChild
 {
     typedef mozilla::ipc::ProcessChild ProcessChild;
 
 public:
-    ContentProcess(ProcessHandle mParentHandle)
+    explicit ContentProcess(ProcessHandle mParentHandle)
         : ProcessChild(mParentHandle)
     { }
 
     ~ContentProcess()
     { }
 
     virtual bool Init() MOZ_OVERRIDE;
     virtual void CleanUp() MOZ_OVERRIDE;
--- a/dom/ipc/CrashReporterParent.cpp
+++ b/dom/ipc/CrashReporterParent.cpp
@@ -137,17 +137,17 @@ CrashReporterParent::GenerateChildData(c
         ret = CrashReporter::AppendExtraData(mChildDumpID, *processNotes);
     if (!ret)
         NS_WARNING("problem appending child data to .extra");
 
     nsCOMPtr<nsIThread> mainThread = do_GetMainThread();
     class NotifyOnMainThread : public nsRunnable
     {
     public:
-        NotifyOnMainThread(CrashReporterParent* aCR)
+        explicit NotifyOnMainThread(CrashReporterParent* aCR)
             : mCR(aCR)
         { }
 
         NS_IMETHOD Run() {
             mCR->NotifyCrashService();
             return NS_OK;
         }
     private:
--- a/dom/ipc/FilePickerParent.h
+++ b/dom/ipc/FilePickerParent.h
@@ -38,17 +38,17 @@ class FilePickerParent : public PFilePic
                         const InfallibleTArray<nsString>& aFilters,
                         const InfallibleTArray<nsString>& aFilterNames) MOZ_OVERRIDE;
 
   virtual void ActorDestroy(ActorDestroyReason aWhy) MOZ_OVERRIDE;
 
   class FilePickerShownCallback : public nsIFilePickerShownCallback
   {
   public:
-    FilePickerShownCallback(FilePickerParent* aFilePickerParent)
+    explicit FilePickerShownCallback(FilePickerParent* aFilePickerParent)
       : mFilePickerParent(aFilePickerParent)
     { }
 
     NS_DECL_ISUPPORTS
     NS_DECL_NSIFILEPICKERSHOWNCALLBACK
 
     void Destroy();
 
--- a/dom/ipc/ProcessPriorityManager.cpp
+++ b/dom/ipc/ProcessPriorityManager.cpp
@@ -227,17 +227,17 @@ private:
 class ParticularProcessPriorityManager MOZ_FINAL
   : public WakeLockObserver
   , public nsIObserver
   , public nsITimerCallback
   , public nsSupportsWeakReference
 {
   ~ParticularProcessPriorityManager();
 public:
-  ParticularProcessPriorityManager(ContentParent* aContentParent);
+  explicit ParticularProcessPriorityManager(ContentParent* aContentParent);
 
   NS_DECL_ISUPPORTS
   NS_DECL_NSIOBSERVER
   NS_DECL_NSITIMERCALLBACK
 
   virtual void Notify(const WakeLockInformation& aInfo) MOZ_OVERRIDE;
   void Init();
 
--- a/dom/ipc/TabChild.cpp
+++ b/dom/ipc/TabChild.cpp
@@ -156,17 +156,17 @@ private:
 NS_IMPL_ISUPPORTS(TabChild::DelayedFireSingleTapEvent,
                   nsITimerCallback)
 
 class TabChild::DelayedFireContextMenuEvent MOZ_FINAL : public nsITimerCallback
 {
 public:
   NS_DECL_ISUPPORTS
 
-  DelayedFireContextMenuEvent(TabChild* tabChild)
+  explicit DelayedFireContextMenuEvent(TabChild* tabChild)
     : mTabChild(tabChild)
   {
   }
 
   NS_IMETHODIMP Notify(nsITimer*) MOZ_OVERRIDE
   {
     mTabChild->FireContextMenuEvent();
     return NS_OK;
@@ -658,17 +658,17 @@ class TabChild::CachedFileDescriptorInfo
     };
 
 public:
     nsString mPath;
     FileDescriptor mFileDescriptor;
     nsCOMPtr<nsICachedFileDescriptorListener> mCallback;
     bool mCanceled;
 
-    CachedFileDescriptorInfo(const nsAString& aPath)
+    explicit CachedFileDescriptorInfo(const nsAString& aPath)
       : mPath(aPath), mCanceled(false)
     { }
 
     CachedFileDescriptorInfo(const nsAString& aPath,
                              const FileDescriptor& aFileDescriptor)
       : mPath(aPath), mFileDescriptor(aFileDescriptor), mCanceled(false)
     { }
 
@@ -695,17 +695,17 @@ public:
 
 class TabChild::CachedFileDescriptorCallbackRunnable : public nsRunnable
 {
     typedef TabChild::CachedFileDescriptorInfo CachedFileDescriptorInfo;
 
     nsAutoPtr<CachedFileDescriptorInfo> mInfo;
 
 public:
-    CachedFileDescriptorCallbackRunnable(CachedFileDescriptorInfo* aInfo)
+    explicit CachedFileDescriptorCallbackRunnable(CachedFileDescriptorInfo* aInfo)
       : mInfo(aInfo)
     {
         MOZ_ASSERT(NS_IsMainThread());
         MOZ_ASSERT(aInfo);
         MOZ_ASSERT(!aInfo->mPath.IsEmpty());
         MOZ_ASSERT(aInfo->mCallback);
     }
 
--- a/dom/json/nsJSON.h
+++ b/dom/json/nsJSON.h
@@ -17,17 +17,17 @@
 #include "nsTArray.h"
 
 class nsIURI;
 
 class MOZ_STACK_CLASS nsJSONWriter
 {
 public:
   nsJSONWriter();
-  nsJSONWriter(nsIOutputStream *aStream);
+  explicit nsJSONWriter(nsIOutputStream* aStream);
   virtual ~nsJSONWriter();
   nsresult SetCharset(const char *aCharset);
   nsCOMPtr<nsIOutputStream> mStream;
   nsresult Write(const char16_t *aBuffer, uint32_t aLength);
   nsString mOutputString;
   bool DidWrite();
   void FlushBuffer();
 
--- a/dom/jsurl/nsJSProtocolHandler.h
+++ b/dom/jsurl/nsJSProtocolHandler.h
@@ -64,17 +64,17 @@ protected:
 class nsJSURI : public nsSimpleURI
 {
 public:
     using nsSimpleURI::Read;
     using nsSimpleURI::Write;
 
     nsJSURI() {}
 
-    nsJSURI(nsIURI* aBaseURI) : mBaseURI(aBaseURI) {}
+    explicit nsJSURI(nsIURI* aBaseURI) : mBaseURI(aBaseURI) {}
 
     nsIURI* GetBaseURI() const
     {
         return mBaseURI;
     }
 
     NS_DECL_ISUPPORTS_INHERITED
 
--- a/dom/mathml/nsMathMLElement.h
+++ b/dom/mathml/nsMathMLElement.h
@@ -25,18 +25,18 @@ class EventChainPreVisitor;
 /*
  * The base class for MathML elements.
  */
 class nsMathMLElement MOZ_FINAL : public nsMathMLElementBase,
                                   public nsIDOMElement,
                                   public mozilla::dom::Link
 {
 public:
-  nsMathMLElement(already_AddRefed<mozilla::dom::NodeInfo>& aNodeInfo);
-  nsMathMLElement(already_AddRefed<mozilla::dom::NodeInfo>&& aNodeInfo);
+  explicit nsMathMLElement(already_AddRefed<mozilla::dom::NodeInfo>& aNodeInfo);
+  explicit nsMathMLElement(already_AddRefed<mozilla::dom::NodeInfo>&& aNodeInfo);
 
   // Implementation of nsISupports is inherited from nsMathMLElementBase
   NS_DECL_ISUPPORTS_INHERITED
 
   // Forward implementations of parent interfaces of nsMathMLElement to 
   // our base class
   NS_FORWARD_NSIDOMNODE_TO_NSINODE
   NS_FORWARD_NSIDOMELEMENT_TO_GENERIC
--- a/dom/mobilemessage/MobileMessageManager.h
+++ b/dom/mobilemessage/MobileMessageManager.h
@@ -29,17 +29,17 @@ class MobileMessageManager MOZ_FINAL : p
                                      , public nsIObserver
 {
 public:
   NS_DECL_ISUPPORTS_INHERITED
   NS_DECL_NSIOBSERVER
 
   NS_REALLY_FORWARD_NSIDOMEVENTTARGET(DOMEventTargetHelper)
 
-  MobileMessageManager(nsPIDOMWindow* aWindow);
+  explicit MobileMessageManager(nsPIDOMWindow* aWindow);
 
   void Init();
   void Shutdown();
 
   nsPIDOMWindow*
   GetParentObject() const { return GetOwner(); }
 
   // WrapperCache
--- a/dom/mobilemessage/ipc/SmsChild.h
+++ b/dom/mobilemessage/ipc/SmsChild.h
@@ -82,17 +82,17 @@ protected:
 
 class SmsRequestChild : public PSmsRequestChild
 {
   friend class SmsChild;
 
   nsCOMPtr<nsIMobileMessageCallback> mReplyRequest;
 
 public:
-  SmsRequestChild(nsIMobileMessageCallback* aReplyRequest);
+  explicit SmsRequestChild(nsIMobileMessageCallback* aReplyRequest);
 
 protected:
   virtual ~SmsRequestChild()
   {
     MOZ_COUNT_DTOR(SmsRequestChild);
   }
 
   virtual void
@@ -108,17 +108,17 @@ class MobileMessageCursorChild : public 
   friend class SmsChild;
 
   nsCOMPtr<nsIMobileMessageCursorCallback> mCursorCallback;
 
 public:
   NS_DECL_ISUPPORTS
   NS_DECL_NSICURSORCONTINUECALLBACK
 
-  MobileMessageCursorChild(nsIMobileMessageCursorCallback* aCallback);
+  explicit MobileMessageCursorChild(nsIMobileMessageCursorCallback* aCallback);
 
 protected:
   virtual ~MobileMessageCursorChild()
   {
     MOZ_COUNT_DTOR(MobileMessageCursorChild);
   }
 
   virtual void
--- a/dom/notification/DesktopNotification.h
+++ b/dom/notification/DesktopNotification.h
@@ -36,17 +36,17 @@ class DesktopNotification;
  */
 class DesktopNotificationCenter MOZ_FINAL : public nsISupports,
                                             public nsWrapperCache
 {
 public:
   NS_DECL_CYCLE_COLLECTING_ISUPPORTS
   NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_CLASS(DesktopNotificationCenter)
 
-  DesktopNotificationCenter(nsPIDOMWindow *aWindow)
+  explicit DesktopNotificationCenter(nsPIDOMWindow* aWindow)
   {
     MOZ_ASSERT(aWindow);
     mOwner = aWindow;
 
     nsCOMPtr<nsIScriptObjectPrincipal> sop = do_QueryInterface(aWindow);
     MOZ_ASSERT(sop);
 
     mPrincipal = sop->GetPrincipal();
@@ -141,17 +141,17 @@ protected:
   static uint32_t sCount;
 };
 
 class AlertServiceObserver: public nsIObserver
 {
  public:
   NS_DECL_ISUPPORTS
 
-    AlertServiceObserver(DesktopNotification* notification)
+  explicit AlertServiceObserver(DesktopNotification* notification)
     : mNotification(notification) {}
 
   void Disconnect() { mNotification = nullptr; }
 
   NS_IMETHODIMP
   Observe(nsISupports *aSubject,
           const char *aTopic,
           const char16_t *aData)
--- a/dom/plugins/base/nsJSNPRuntime.h
+++ b/dom/plugins/base/nsJSNPRuntime.h
@@ -43,17 +43,17 @@ class nsJSObjWrapper : public NPObject
 public:
   JS::PersistentRooted<JSObject *> mJSObj;
   const NPP mNpp;
 
   static NPObject *GetNewOrUsed(NPP npp, JSContext *cx,
                                 JS::Handle<JSObject*> obj);
 
 protected:
-  nsJSObjWrapper(NPP npp);
+  explicit nsJSObjWrapper(NPP npp);
   ~nsJSObjWrapper();
 
   static NPObject * NP_Allocate(NPP npp, NPClass *aClass);
   static void NP_Deallocate(NPObject *obj);
   static void NP_Invalidate(NPObject *obj);
   static bool NP_HasMethod(NPObject *, NPIdentifier identifier);
   static bool NP_Invoke(NPObject *obj, NPIdentifier method,
                         const NPVariant *args, uint32_t argCount,
--- a/dom/plugins/base/nsPluginHost.h
+++ b/dom/plugins/base/nsPluginHost.h
@@ -41,24 +41,24 @@ class nsNPAPIPluginStreamListener;
 class nsIPluginInstanceOwner;
 class nsIInputStream;
 class nsIStreamListener;
 
 class nsInvalidPluginTag : public nsISupports
 {
   virtual ~nsInvalidPluginTag();
 public:
-  nsInvalidPluginTag(const char* aFullPath, int64_t aLastModifiedTime = 0);
-  
+  explicit nsInvalidPluginTag(const char* aFullPath, int64_t aLastModifiedTime = 0);
+
   NS_DECL_ISUPPORTS
-  
+
   nsCString   mFullPath;
   int64_t     mLastModifiedTime;
   bool        mSeen;
-  
+
   nsRefPtr<nsInvalidPluginTag> mPrev;
   nsRefPtr<nsInvalidPluginTag> mNext;
 };
 
 class nsPluginHost : public nsIPluginHost,
                      public nsIObserver,
                      public nsITimerCallback,
                      public nsSupportsWeakReference
@@ -300,17 +300,17 @@ private:
   // We need to hold a global ptr to ourselves because we register for
   // two different CIDs for some reason...
   static nsPluginHost* sInst;
 };
 
 class MOZ_STACK_CLASS PluginDestructionGuard : protected PRCList
 {
 public:
-  PluginDestructionGuard(nsNPAPIPluginInstance *aInstance);
+  explicit PluginDestructionGuard(nsNPAPIPluginInstance *aInstance);
 
   PluginDestructionGuard(NPP npp);
 
   ~PluginDestructionGuard();
 
   static bool DelayDestroy(nsNPAPIPluginInstance *aInstance);
 
 protected:
--- a/dom/plugins/base/nsPluginPlayPreviewInfo.h
+++ b/dom/plugins/base/nsPluginPlayPreviewInfo.h
@@ -15,17 +15,17 @@ class nsPluginPlayPreviewInfo : public n
 
 public:
    NS_DECL_ISUPPORTS
    NS_DECL_NSIPLUGINPLAYPREVIEWINFO
 
   nsPluginPlayPreviewInfo(const char* aMimeType,
                           bool aIgnoreCTP,
                           const char* aRedirectURL);
-  nsPluginPlayPreviewInfo(const nsPluginPlayPreviewInfo* aSource);
+  explicit nsPluginPlayPreviewInfo(const nsPluginPlayPreviewInfo* aSource);
 
   nsCString mMimeType;
   bool      mIgnoreCTP;
   nsCString mRedirectURL;
 };
 
 
 #endif // nsPluginPlayPreviewInfo_h_
--- a/dom/plugins/base/nsPluginsDir.h
+++ b/dom/plugins/base/nsPluginsDir.h
@@ -46,17 +46,17 @@ class nsPluginFile {
   PRLibrary* pLibrary;
   nsCOMPtr<nsIFile> mPlugin;
 public:
 	/**
 	 * If spec corresponds to a valid plugin file, constructs a reference
 	 * to a plugin file on disk. Plugins are typically located using the
 	 * nsPluginsDir class.
 	 */
-	nsPluginFile(nsIFile* spec);
+	explicit nsPluginFile(nsIFile* spec);
 	virtual ~nsPluginFile();
 
 	/**
 	 * Loads the plugin into memory using NSPR's shared-library loading
 	 * mechanism. Handles platform differences in loading shared libraries.
 	 */
 	nsresult LoadPlugin(PRLibrary **outLibrary);
 
--- a/dom/plugins/ipc/PluginIdentifierChild.h
+++ b/dom/plugins/ipc/PluginIdentifierChild.h
@@ -43,17 +43,17 @@ public:
     return this;
   }
 
   void MakePermanent();
 
   class MOZ_STACK_CLASS StackIdentifier
   {
   public:
-    StackIdentifier(PPluginIdentifierChild* actor)
+    explicit StackIdentifier(PPluginIdentifierChild* actor)
       : mIdentifier(static_cast<PluginIdentifierChild*>(actor))
     {
       if (mIdentifier)
         mIdentifier->StartTemporary();
     }
 
     ~StackIdentifier() {
       if (mIdentifier)
@@ -62,17 +62,17 @@ public:
 
     PluginIdentifierChild* operator->() { return mIdentifier; }
 
   private:
     PluginIdentifierChild* mIdentifier;
   };
 
 protected:
-  PluginIdentifierChild(bool aIsString)
+  explicit PluginIdentifierChild(bool aIsString)
     : mCanonicalIdentifier(nullptr)
     , mHashed(false)
     , mTemporaryRefs(0)
     , mIsString(aIsString)
   {
     MOZ_COUNT_CTOR(PluginIdentifierChild);
   }
 
@@ -119,17 +119,17 @@ class PluginIdentifierChildString : publ
   friend class PluginModuleChild;
 public:
   NPUTF8* ToString()
   {
     return ToNewCString(mString);
   }
 
 protected:
-  PluginIdentifierChildString(const nsCString& aString)
+  explicit PluginIdentifierChildString(const nsCString& aString)
     : PluginIdentifierChild(true),
       mString(aString)
   { }
 
   virtual PluginIdentifierChild* GetCanonical();
   virtual void Hash();
   virtual void Unhash();
 
@@ -141,17 +141,17 @@ class PluginIdentifierChildInt : public 
   friend class PluginModuleChild;
 public:
   int32_t ToInt()
   {
     return mInt;
   }
 
 protected:
-  PluginIdentifierChildInt(int32_t aInt)
+  explicit PluginIdentifierChildInt(int32_t aInt)
     : PluginIdentifierChild(false),
       mInt(aInt)
   { }
 
   virtual PluginIdentifierChild* GetCanonical();
   virtual void Hash();
   virtual void Unhash();
 
--- a/dom/plugins/ipc/PluginInstanceChild.h
+++ b/dom/plugins/ipc/PluginInstanceChild.h
@@ -196,17 +196,17 @@ protected:
     RecvNPP_DidComposite() MOZ_OVERRIDE;
 
 #if defined(MOZ_X11) && defined(XP_UNIX) && !defined(XP_MACOSX)
     bool CreateWindow(const NPRemoteWindow& aWindow);
     void DeleteWindow();
 #endif
 
 public:
-    PluginInstanceChild(const NPPluginFuncs* aPluginIface);
+    explicit PluginInstanceChild(const NPPluginFuncs* aPluginIface);
 
     virtual ~PluginInstanceChild();
 
     bool Initialize();
 
     NPP GetNPP()
     {
         return &mData;
--- a/dom/plugins/ipc/PluginInterposeOSX.h
+++ b/dom/plugins/ipc/PluginInterposeOSX.h
@@ -81,18 +81,18 @@ public:
     TypeResizeLeftRight,
     TypeResizeRight,
     TypeResizeUp,
     TypeResizeUpDown,
     TypeTransparent       // Special type
   };
 
   NSCursorInfo();
-  NSCursorInfo(NSCursor* aCursor);
-  NSCursorInfo(const Cursor* aCursor);
+  explicit NSCursorInfo(NSCursor* aCursor);
+  explicit NSCursorInfo(const Cursor* aCursor);
   ~NSCursorInfo();
 
   NSCursor* GetNSCursor() const;
   Type GetType() const;
   const char* GetTypeName() const;
   nsPoint GetHotSpot() const;
   uint8_t* GetCustomImageData() const;
   uint32_t GetCustomImageDataLength() const;
--- a/dom/plugins/ipc/PluginMessageUtils.h
+++ b/dom/plugins/ipc/PluginMessageUtils.h
@@ -251,17 +251,17 @@ NullableStringGet(const nsCString& str)
   if (str.IsVoid())
     return nullptr;
 
   return str.get();
 }
 
 struct DeletingObjectEntry : public nsPtrHashKey<NPObject>
 {
-  DeletingObjectEntry(const NPObject* key)
+  explicit DeletingObjectEntry(const NPObject* key)
     : nsPtrHashKey<NPObject>(key)
     , mDeleted(false)
   { }
 
   bool mDeleted;
 };
 
 #ifdef XP_WIN
--- a/dom/plugins/ipc/PluginModuleChild.h
+++ b/dom/plugins/ipc/PluginModuleChild.h
@@ -368,17 +368,17 @@ private:
     int mTopLoopDepth;
 #  endif
 #elif defined (MOZ_WIDGET_QT)
     NestedLoopTimer *mNestedLoopTimerObject;
 #endif
 
     struct NPObjectData : public nsPtrHashKey<NPObject>
     {
-        NPObjectData(const NPObject* key)
+        explicit NPObjectData(const NPObject* key)
             : nsPtrHashKey<NPObject>(key)
             , instance(nullptr)
             , actor(nullptr)
         { }
 
         // never nullptr
         PluginInstanceChild* instance;
 
--- a/dom/plugins/ipc/PluginScriptableObjectChild.h
+++ b/dom/plugins/ipc/PluginScriptableObjectChild.h
@@ -38,17 +38,17 @@ struct ChildNPObject : NPObject
   bool invalidated;
 };
 
 class PluginScriptableObjectChild : public PPluginScriptableObjectChild
 {
   friend class PluginInstanceChild;
 
 public:
-  PluginScriptableObjectChild(ScriptableObjectType aType);
+  explicit PluginScriptableObjectChild(ScriptableObjectType aType);
   virtual ~PluginScriptableObjectChild();
 
   bool
   InitializeProxy();
 
   void
   InitializeLocal(NPObject* aObject);
 
--- a/dom/plugins/ipc/StreamNotifyChild.h
+++ b/dom/plugins/ipc/StreamNotifyChild.h
@@ -15,17 +15,17 @@ namespace plugins {
 class BrowserStreamChild;
 
 class StreamNotifyChild : public PStreamNotifyChild
 {
   friend class PluginInstanceChild;
   friend class BrowserStreamChild;
 
 public:
-  StreamNotifyChild(const nsCString& aURL)
+  explicit StreamNotifyChild(const nsCString& aURL)
     : mURL(aURL)
     , mClosure(nullptr)
     , mBrowserStream(nullptr)
   { }
 
   virtual void ActorDestroy(ActorDestroyReason why) MOZ_OVERRIDE;
 
   void SetValid(void* aClosure) {
--- a/dom/promise/Promise.h
+++ b/dom/promise/Promise.h
@@ -35,17 +35,17 @@ class PromiseDebugging;
 
 class Promise;
 class PromiseReportRejectFeature : public workers::WorkerFeature
 {
   // The Promise that owns this feature.
   Promise* mPromise;
 
 public:
-  PromiseReportRejectFeature(Promise* aPromise)
+  explicit PromiseReportRejectFeature(Promise* aPromise)
     : mPromise(aPromise)
   {
     MOZ_ASSERT(mPromise);
   }
 
   virtual bool
   Notify(JSContext* aCx, workers::Status aStatus) MOZ_OVERRIDE;
 };
@@ -157,17 +157,17 @@ public:
   Race(const GlobalObject& aGlobal,
        const Sequence<JS::Value>& aIterable, ErrorResult& aRv);
 
   void AppendNativeHandler(PromiseNativeHandler* aRunnable);
 
 private:
   // Do NOT call this unless you're Promise::Create.  I wish we could enforce
   // that from inside this class too, somehow.
-  Promise(nsIGlobalObject* aGlobal);
+  explicit Promise(nsIGlobalObject* aGlobal);
 
   friend class PromiseDebugging;
 
   enum PromiseState {
     Pending,
     Resolved,
     Rejected
   };
--- a/dom/storage/DOMStorageCache.cpp
+++ b/dom/storage/DOMStorageCache.cpp
@@ -251,17 +251,17 @@ class DOMStorageCacheHolder : public nsI
   {
     mCache = nullptr;
     return NS_OK;
   }
 
   nsRefPtr<DOMStorageCache> mCache;
 
 public:
-  DOMStorageCacheHolder(DOMStorageCache* aCache) : mCache(aCache) {}
+  explicit DOMStorageCacheHolder(DOMStorageCache* aCache) : mCache(aCache) {}
 };
 
 NS_IMPL_ISUPPORTS(DOMStorageCacheHolder, nsITimerCallback)
 
 } // anon
 
 void
 DOMStorageCache::KeepAlive()
@@ -296,17 +296,17 @@ DOMStorageCache::KeepAlive()
 namespace { // anon
 
 // The AutoTimer provided by telemetry headers is only using static,
 // i.e. compile time known ID, but here we know the ID only at run time.
 // Hence a new class.
 class TelemetryAutoTimer
 {
 public:
-  TelemetryAutoTimer(Telemetry::ID aId)
+  explicit TelemetryAutoTimer(Telemetry::ID aId)
     : id(aId), start(TimeStamp::Now()) {}
   ~TelemetryAutoTimer()
     { Telemetry::AccumulateDelta_impl<Telemetry::Millisecond>::compute(id, start); }
 private:
   Telemetry::ID id;
   const TimeStamp start;
 };
 
--- a/dom/storage/DOMStorageCache.h
+++ b/dom/storage/DOMStorageCache.h
@@ -64,17 +64,17 @@ protected:
 // for persistent storage (localStorage) and hold data for non-private,
 // private and session-only cookie modes.  It is also responsible for
 // persisting data changes using the database, works as a write-back cache.
 class DOMStorageCache : public DOMStorageCacheBridge
 {
 public:
   NS_IMETHOD_(void) Release(void);
 
-  DOMStorageCache(const nsACString* aScope);
+  explicit DOMStorageCache(const nsACString* aScope);
 
 protected:
   virtual ~DOMStorageCache();
 
 public:
   void Init(DOMStorageManager* aManager, bool aPersistent, nsIPrincipal* aPrincipal,
             const nsACString& aQuotaScope);
 
@@ -246,17 +246,17 @@ public:
 protected:
   // Protected destructor, to discourage deletion outside of Release():
   virtual ~DOMStorageUsageBridge() {}
 };
 
 class DOMStorageUsage : public DOMStorageUsageBridge
 {
 public:
-  DOMStorageUsage(const nsACString& aScope);
+  explicit DOMStorageUsage(const nsACString& aScope);
 
   bool CheckAndSetETLD1UsageDelta(uint32_t aDataSetIndex, int64_t aUsageDelta);
 
 private:
   virtual const nsCString& Scope() { return mScope; }
   virtual void LoadUsage(const int64_t aUsage);
 
   nsCString mScope;
--- a/dom/storage/DOMStorageDBThread.cpp
+++ b/dom/storage/DOMStorageDBThread.cpp
@@ -1215,17 +1215,17 @@ DOMStorageDBThread::PendingOperations::F
   return true;
 }
 
 namespace { // anon
 
 class FindPendingOperationForScopeData
 {
 public:
-  FindPendingOperationForScopeData(const nsACString& aScope) : mScope(aScope), mFound(false) {}
+  explicit FindPendingOperationForScopeData(const nsACString& aScope) : mScope(aScope), mFound(false) {}
   nsCString mScope;
   bool mFound;
 };
 
 PLDHashOperator
 FindPendingClearForScope(const nsACString& aMapping,
                          DOMStorageDBThread::DBOperation* aPendingOperation,
                          void* aArg)
--- a/dom/storage/DOMStorageDBThread.h
+++ b/dom/storage/DOMStorageDBThread.h
@@ -113,20 +113,20 @@ public:
       opRemoveItem,
       opClear,
 
       // Operations invoked by chrome
       opClearAll,
       opClearMatchingScope,
     } OperationType;
 
-    DBOperation(const OperationType aType,
-                DOMStorageCacheBridge* aCache = nullptr,
-                const nsAString& aKey = EmptyString(),
-                const nsAString& aValue = EmptyString());
+    explicit DBOperation(const OperationType aType,
+                         DOMStorageCacheBridge* aCache = nullptr,
+                         const nsAString& aKey = EmptyString(),
+                         const nsAString& aValue = EmptyString());
     DBOperation(const OperationType aType,
                 DOMStorageUsageBridge* aUsage);
     DBOperation(const OperationType aType,
                 const nsACString& aScope);
     ~DBOperation();
 
     // Executes the operation, doesn't necessarity have to be called on the I/O thread
     void PerformAndFinalize(DOMStorageDBThread* aThread);
--- a/dom/storage/DOMStorageIPC.cpp
+++ b/dom/storage/DOMStorageIPC.cpp
@@ -288,17 +288,17 @@ DOMStorageDBParent::ReleaseIPDLReference
   Release();
 }
 
 namespace { // anon
 
 class SendInitialChildDataRunnable : public nsRunnable
 {
 public:
-  SendInitialChildDataRunnable(DOMStorageDBParent* aParent)
+  explicit SendInitialChildDataRunnable(DOMStorageDBParent* aParent)
     : mParent(aParent)
   {}
 
 private:
   NS_IMETHOD Run()
   {
     if (!mParent->IPCOpen()) {
       return NS_OK;
--- a/dom/storage/DOMStorageIPC.h
+++ b/dom/storage/DOMStorageIPC.h
@@ -23,17 +23,17 @@ class DOMLocalStorageManager;
 // and expects asynchronous answers. Those are then transparently
 // forwarded back to consumers on the child process.
 class DOMStorageDBChild MOZ_FINAL : public DOMStorageDBBridge
                                   , public PStorageChild
 {
   virtual ~DOMStorageDBChild();
 
 public:
-  DOMStorageDBChild(DOMLocalStorageManager* aManager);
+  explicit DOMStorageDBChild(DOMLocalStorageManager* aManager);
 
   NS_IMETHOD_(MozExternalRefCountType) AddRef(void);
   NS_IMETHOD_(MozExternalRefCountType) Release(void);
 
   void AddIPDLReference();
   void ReleaseIPDLReference();
 
   virtual nsresult Init();
--- a/dom/storage/DOMStorageManager.cpp
+++ b/dom/storage/DOMStorageManager.cpp
@@ -489,17 +489,17 @@ DOMStorageManager::GetLocalStorageForPri
   return CreateStorage(nullptr, aPrincipal, aDocumentURI, aPrivate, aRetval);
 }
 
 namespace { // anon
 
 class ClearCacheEnumeratorData
 {
 public:
-  ClearCacheEnumeratorData(uint32_t aFlags)
+  explicit ClearCacheEnumeratorData(uint32_t aFlags)
     : mUnloadFlags(aFlags)
   {}
 
   uint32_t mUnloadFlags;
   nsCString mKeyPrefix;
 };
 
 } // anon
--- a/dom/storage/DOMStorageManager.h
+++ b/dom/storage/DOMStorageManager.h
@@ -36,29 +36,29 @@ public:
   // Reads the preference for DOM storage quota
   static uint32_t GetQuota();
   // Gets (but not ensures) cache for the given scope
   DOMStorageCache* GetCache(const nsACString& aScope) const;
   // Returns object keeping usage cache for the scope.
   already_AddRefed<DOMStorageUsage> GetScopeUsage(const nsACString& aScope);
 
 protected:
-  DOMStorageManager(DOMStorage::StorageType aType);
+  explicit DOMStorageManager(DOMStorage::StorageType aType);
   virtual ~DOMStorageManager();
 
 private:
   // DOMStorageObserverSink, handler to various chrome clearing notification
   virtual nsresult Observe(const char* aTopic, const nsACString& aScopePrefix);
 
   // Since nsTHashtable doesn't like multiple inheritance, we have to aggregate
   // DOMStorageCache into the entry.
   class DOMStorageCacheHashKey : public nsCStringHashKey
   {
   public:
-    DOMStorageCacheHashKey(const nsACString* aKey)
+    explicit DOMStorageCacheHashKey(const nsACString* aKey)
       : nsCStringHashKey(aKey)
       , mCache(new DOMStorageCache(aKey))
     {}
 
     DOMStorageCacheHashKey(const DOMStorageCacheHashKey& aOther)
       : nsCStringHashKey(aOther)
     {
       NS_ERROR("Shouldn't be called");
--- a/dom/telephony/Telephony.h
+++ b/dom/telephony/Telephony.h
@@ -141,17 +141,17 @@ public:
   CallsArray() const
   {
     return mCalls;
   }
 
   virtual void EventListenerAdded(nsIAtom* aType) MOZ_OVERRIDE;
 
 private:
-  Telephony(nsPIDOMWindow* aOwner);
+  explicit Telephony(nsPIDOMWindow* aOwner);
   ~Telephony();
 
   void
   Shutdown();
 
   static bool
   IsValidNumber(const nsAString& aNumber);
 
--- a/dom/telephony/TelephonyCall.h
+++ b/dom/telephony/TelephonyCall.h
@@ -169,17 +169,17 @@ public:
 
   void
   NotifyError(const nsAString& aError);
 
   void
   ChangeGroup(TelephonyCallGroup* aGroup);
 
 private:
-  TelephonyCall(nsPIDOMWindow* aOwner);
+  explicit TelephonyCall(nsPIDOMWindow* aOwner);
 
   ~TelephonyCall();
 
   void
   ChangeStateInternal(uint16_t aCallState, bool aFireEvents);
 
   nsresult
   DispatchCallEvent(const nsAString& aType,
--- a/dom/telephony/TelephonyCallGroup.h
+++ b/dom/telephony/TelephonyCallGroup.h
@@ -98,17 +98,17 @@ public:
   {
     return mCallState;
   }
 
   nsresult
   NotifyError(const nsAString& aName, const nsAString& aMessage);
 
 private:
-  TelephonyCallGroup(nsPIDOMWindow* aOwner);
+  explicit TelephonyCallGroup(nsPIDOMWindow* aOwner);
   ~TelephonyCallGroup();
 
   nsresult
   NotifyCallsChanged(TelephonyCall* aCall);
 
   nsresult
   DispatchCallEvent(const nsAString& aType,
                     TelephonyCall* aCall);
--- a/dom/workers/Queue.h
+++ b/dom/workers/Queue.h
@@ -84,17 +84,17 @@ protected:
     mMutex.Unlock();
   }
 
   class AutoLock
   {
     LockingWithMutex& mHost;
 
   public:
-    AutoLock(LockingWithMutex& aHost)
+    explicit AutoLock(LockingWithMutex& aHost)
     : mHost(aHost)
     {
       mHost.Lock();
     }
 
     ~AutoLock()
     {
       mHost.Unlock();
@@ -111,17 +111,17 @@ protected:
   { }
 
   void Unlock()
   { }
 
   class AutoLock
   {
   public:
-    AutoLock(NoLocking& aHost)
+    explicit AutoLock(NoLocking& aHost)
     { }
 
     ~AutoLock()
     { }
   };
 };
 
 template <typename T,
--- a/dom/workers/WorkerPrivate.h
+++ b/dom/workers/WorkerPrivate.h
@@ -74,31 +74,31 @@ enum WorkerType
 // Mutex&.
 class SharedMutex
 {
   typedef mozilla::Mutex Mutex;
 
   class RefCountedMutex MOZ_FINAL : public Mutex
   {
   public:
-    RefCountedMutex(const char* aName)
+    explicit RefCountedMutex(const char* aName)
     : Mutex(aName)
     { }
 
     NS_INLINE_DECL_THREADSAFE_REFCOUNTING(RefCountedMutex)
 
   private:
     ~RefCountedMutex()
     { }
   };
 
   nsRefPtr<RefCountedMutex> mMutex;
 
 public:
-  SharedMutex(const char* aName)
+  explicit SharedMutex(const char* aName)
   : mMutex(new RefCountedMutex(aName))
   { }
 
   SharedMutex(SharedMutex& aOther)
   : mMutex(aOther.mMutex)
   { }
 
   operator Mutex&()
@@ -747,17 +747,17 @@ class WorkerPrivate : public WorkerPriva
   // Things touched on worker thread only.
   nsRefPtr<WorkerGlobalScope> mScope;
   nsTArray<ParentType*> mChildWorkers;
   nsTArray<WorkerFeature*> mFeatures;
   nsTArray<nsAutoPtr<TimeoutInfo>> mTimeouts;
 
   struct SyncLoopInfo
   {
-    SyncLoopInfo(EventTarget* aEventTarget);
+    explicit SyncLoopInfo(EventTarget* aEventTarget);
 
     nsRefPtr<EventTarget> mEventTarget;
     bool mCompleted;
     bool mResult;
 #ifdef DEBUG
     bool mHasRun;
 #endif
   };
@@ -1233,17 +1233,17 @@ ChromeWorkerStructuredCloneCallbacks(boo
 
 class AutoSyncLoopHolder
 {
   WorkerPrivate* mWorkerPrivate;
   nsCOMPtr<nsIEventTarget> mTarget;
   uint32_t mIndex;
 
 public:
-  AutoSyncLoopHolder(WorkerPrivate* aWorkerPrivate)
+  explicit AutoSyncLoopHolder(WorkerPrivate* aWorkerPrivate)
   : mWorkerPrivate(aWorkerPrivate)
   , mTarget(aWorkerPrivate->CreateNewSyncLoop())
   , mIndex(aWorkerPrivate->mSyncLoopStack.Length() - 1)
   {
     aWorkerPrivate->AssertIsOnWorkerThread();
   }
 
   ~AutoSyncLoopHolder()
--- a/dom/workers/WorkerRunnable.h
+++ b/dom/workers/WorkerRunnable.h
@@ -291,17 +291,17 @@ private:
   using WorkerRunnable::Cancel;
 };
 
 // A convenience class for WorkerControlRunnables that originate on the main
 // thread.
 class MainThreadWorkerControlRunnable : public WorkerControlRunnable
 {
 protected:
-  MainThreadWorkerControlRunnable(WorkerPrivate* aWorkerPrivate)
+  explicit MainThreadWorkerControlRunnable(WorkerPrivate* aWorkerPrivate)
   : WorkerControlRunnable(aWorkerPrivate, WorkerThreadUnchangedBusyCount)
   { }
 
   virtual ~MainThreadWorkerControlRunnable()
   { }
 
   virtual bool
   PreDispatch(JSContext* aCx, WorkerPrivate* aWorkerPrivate) MOZ_OVERRIDE
@@ -319,17 +319,17 @@ protected:
 // async tasks. This will increment the busy count PostDispatch() (only if
 // dispatch was successful) and decrement it in PostRun().
 //
 // Async tasks will almost always want to use this since
 // a WorkerSameThreadRunnable keeps the Worker from being GCed.
 class WorkerSameThreadRunnable : public WorkerRunnable
 {
 protected:
-  WorkerSameThreadRunnable(WorkerPrivate* aWorkerPrivate)
+  explicit WorkerSameThreadRunnable(WorkerPrivate* aWorkerPrivate)
   : WorkerRunnable(aWorkerPrivate, WorkerThreadModifyBusyCount)
   { }
 
   virtual ~WorkerSameThreadRunnable()
   { }
 
   virtual bool
   PreDispatch(JSContext* aCx, WorkerPrivate* aWorkerPrivate) MOZ_OVERRIDE;
@@ -348,17 +348,17 @@ protected:
 //
 // Note that the derived class must override MainThreadRun.
 class WorkerMainThreadRunnable : public nsRunnable
 {
 protected:
   WorkerPrivate* mWorkerPrivate;
   nsCOMPtr<nsIEventTarget> mSyncLoopTarget;
 
-  WorkerMainThreadRunnable(WorkerPrivate* aWorkerPrivate);
+  explicit WorkerMainThreadRunnable(WorkerPrivate* aWorkerPrivate);
   ~WorkerMainThreadRunnable() {}
 
   virtual bool MainThreadRun() = 0;
 
 public:
   bool Dispatch(JSContext* aCx);
 
 private:
--- a/dom/xbl/XBLChildrenElement.h
+++ b/dom/xbl/XBLChildrenElement.h
@@ -17,21 +17,21 @@ class nsAnonymousContentList;
 namespace mozilla {
 namespace dom {
 
 class ExplicitChildIterator;
 
 class XBLChildrenElement : public nsXMLElement
 {
 public:
-  XBLChildrenElement(already_AddRefed<mozilla::dom::NodeInfo>& aNodeInfo)
+  explicit XBLChildrenElement(already_AddRefed<mozilla::dom::NodeInfo>& aNodeInfo)
     : nsXMLElement(aNodeInfo)
   {
   }
-  XBLChildrenElement(already_AddRefed<mozilla::dom::NodeInfo>&& aNodeInfo)
+  explicit XBLChildrenElement(already_AddRefed<mozilla::dom::NodeInfo>&& aNodeInfo)
     : nsXMLElement(aNodeInfo)
   {
   }
 
   // nsISupports
   NS_DECL_ISUPPORTS_INHERITED
 
   // nsINode interface methods
@@ -143,17 +143,17 @@ private:
 };
 
 } // namespace dom
 } // namespace mozilla
 
 class nsAnonymousContentList : public nsINodeList
 {
 public:
-  nsAnonymousContentList(nsIContent* aParent)
+  explicit nsAnonymousContentList(nsIContent* aParent)
     : mParent(aParent)
   {
     MOZ_COUNT_CTOR(nsAnonymousContentList);
     SetIsDOMBinding();
   }
 
   NS_DECL_CYCLE_COLLECTING_ISUPPORTS
   NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_CLASS(nsAnonymousContentList)
--- a/dom/xbl/nsXBLDocumentInfo.h
+++ b/dom/xbl/nsXBLDocumentInfo.h
@@ -15,17 +15,17 @@
 class nsXBLPrototypeBinding;
 class nsXBLDocGlobalObject;
 
 class nsXBLDocumentInfo MOZ_FINAL : public nsSupportsWeakReference
 {
 public:
   NS_DECL_CYCLE_COLLECTING_ISUPPORTS
 
-  nsXBLDocumentInfo(nsIDocument* aDocument);
+  explicit nsXBLDocumentInfo(nsIDocument* aDocument);
 
   already_AddRefed<nsIDocument> GetDocument()
     { nsCOMPtr<nsIDocument> copy = mDocument; return copy.forget(); }
 
   bool GetScriptAccess() const { return mScriptAccess; }
 
   nsIURI* DocumentURI() { return mDocument->GetDocumentURI(); }
 
--- a/dom/xbl/nsXBLEventHandler.h
+++ b/dom/xbl/nsXBLEventHandler.h
@@ -13,17 +13,17 @@
 
 class nsIAtom;
 class nsIDOMKeyEvent;
 class nsXBLPrototypeHandler;
 
 class nsXBLEventHandler : public nsIDOMEventListener
 {
 public:
-  nsXBLEventHandler(nsXBLPrototypeHandler* aHandler);
+  explicit nsXBLEventHandler(nsXBLPrototypeHandler* aHandler);
 
   NS_DECL_ISUPPORTS
 
   NS_DECL_NSIDOMEVENTLISTENER
 
 protected:
   virtual ~nsXBLEventHandler();
   nsXBLPrototypeHandler* mProtoHandler;
@@ -34,17 +34,17 @@ private:
   {
     return true;
   }
 };
 
 class nsXBLMouseEventHandler : public nsXBLEventHandler
 {
 public:
-  nsXBLMouseEventHandler(nsXBLPrototypeHandler* aHandler);
+  explicit nsXBLMouseEventHandler(nsXBLPrototypeHandler* aHandler);
   virtual ~nsXBLMouseEventHandler();
 
 private:
   bool EventMatched(nsIDOMEvent* aEvent) MOZ_OVERRIDE;
 };
 
 class nsXBLKeyEventHandler : public nsIDOMEventListener
 {
--- a/dom/xbl/nsXBLMaybeCompiled.h
+++ b/dom/xbl/nsXBLMaybeCompiled.h
@@ -21,20 +21,20 @@
  * Root<nsXBLMaybeCompiled<UncompiledT>> from being used.
  */
 template <class UncompiledT>
 class nsXBLMaybeCompiled
 {
 public:
   nsXBLMaybeCompiled() : mUncompiled(BIT_UNCOMPILED) {}
 
-  nsXBLMaybeCompiled(UncompiledT* uncompiled)
+  explicit nsXBLMaybeCompiled(UncompiledT* uncompiled)
     : mUncompiled(reinterpret_cast<uintptr_t>(uncompiled) | BIT_UNCOMPILED) {}
 
-  nsXBLMaybeCompiled(JSObject* compiled) : mCompiled(compiled) {}
+  explicit nsXBLMaybeCompiled(JSObject* compiled) : mCompiled(compiled) {}
 
   bool IsCompiled() const
   {
     return !(mUncompiled & BIT_UNCOMPILED);
   }
 
   UncompiledT* GetUncompiled() const
   {
--- a/dom/xbl/nsXBLProtoImplField.h
+++ b/dom/xbl/nsXBLProtoImplField.h
@@ -16,17 +16,17 @@ class nsIObjectInputStream;
 class nsIObjectOutputStream;
 class nsIScriptContext;
 class nsIURI;
 
 class nsXBLProtoImplField
 {
 public:
   nsXBLProtoImplField(const char16_t* aName, const char16_t* aReadOnly);
-  nsXBLProtoImplField(const bool aIsReadOnly);
+  explicit nsXBLProtoImplField(const bool aIsReadOnly);
   ~nsXBLProtoImplField();
 
   void AppendFieldText(const nsAString& aText);
   void SetLineNumber(uint32_t aLineNumber) {
     mLineNumber = aLineNumber;
   }
   
   nsXBLProtoImplField* GetNext() const { return mNext; }
--- a/dom/xbl/nsXBLProtoImplMember.h
+++ b/dom/xbl/nsXBLProtoImplMember.h
@@ -56,17 +56,17 @@ struct nsXBLTextWithLineNumber
   uint32_t GetLineNumber() {
     return mLineNumber;
   }
 };
 
 class nsXBLProtoImplMember
 {
 public:
-  nsXBLProtoImplMember(const char16_t* aName)
+  explicit nsXBLProtoImplMember(const char16_t* aName)
     : mNext(nullptr)
     , mExposeToUntrustedContent(false)
   {
     mName = ToNewUnicode(nsDependentString(aName));
   }
   virtual ~nsXBLProtoImplMember() {
     nsMemory::Free(mName);
     NS_CONTENT_DELETE_LIST_MEMBER(nsXBLProtoImplMember, this, mNext);
--- a/dom/xbl/nsXBLProtoImplMethod.h
+++ b/dom/xbl/nsXBLProtoImplMethod.h
@@ -15,17 +15,17 @@
 #include "nsXBLSerialize.h"
 
 class nsIContent;
 
 struct nsXBLParameter {
   nsXBLParameter* mNext;
   char* mName;
 
-  nsXBLParameter(const nsAString& aName) {
+  explicit nsXBLParameter(const nsAString& aName) {
     MOZ_COUNT_CTOR(nsXBLParameter);
     mName = ToNewCString(aName);
     mNext = nullptr;
   }
 
   ~nsXBLParameter() {
     MOZ_COUNT_DTOR(nsXBLParameter);
     nsMemory::Free(mName);
@@ -76,17 +76,17 @@ struct nsXBLUncompiledMethod {
   void SetLineNumber(uint32_t aLineNumber) {
     mBodyText.SetLineNumber(aLineNumber);
   }
 };
 
 class nsXBLProtoImplMethod: public nsXBLProtoImplMember
 {
 public:
-  nsXBLProtoImplMethod(const char16_t* aName);
+  explicit nsXBLProtoImplMethod(const char16_t* aName);
   virtual ~nsXBLProtoImplMethod();
 
   void AppendBodyText(const nsAString& aBody);
   void AddParameter(const nsAString& aName);
 
   void SetLineNumber(uint32_t aLineNumber);
   
   virtual nsresult InstallMember(JSContext* aCx,
@@ -130,17 +130,17 @@ protected:
     return mMethod.GetJSFunctionPreserveColor();
   }
 
   JS::Heap<nsXBLMaybeCompiled<nsXBLUncompiledMethod> > mMethod;
 };
 
 class nsXBLProtoImplAnonymousMethod : public nsXBLProtoImplMethod {
 public:
-  nsXBLProtoImplAnonymousMethod(const char16_t* aName) :
+  explicit nsXBLProtoImplAnonymousMethod(const char16_t* aName) :
     nsXBLProtoImplMethod(aName)
   {}
   
   nsresult Execute(nsIContent* aBoundElement, JSAddonId* aAddonId);
 
   // Override InstallMember; these methods never get installed as members on
   // binding instantiations (though they may hang out in mMembers on the
   // prototype implementation).
--- a/dom/xbl/nsXBLPrototypeBinding.h
+++ b/dom/xbl/nsXBLPrototypeBinding.h
@@ -306,17 +306,17 @@ protected:
   nsAutoPtr<nsClassHashtable<nsUint32HashKey, InnerAttributeTable>> mAttributeTable;
 
   class IIDHashKey : public PLDHashEntryHdr
   {
   public:
     typedef const nsIID& KeyType;
     typedef const nsIID* KeyTypePointer;
 
-    IIDHashKey(const nsIID* aKey)
+    explicit IIDHashKey(const nsIID* aKey)
       : mKey(*aKey)
     {}
     IIDHashKey(const IIDHashKey& aOther)
       : mKey(aOther.GetKey())
     {}
     ~IIDHashKey()
     {}
 
--- a/dom/xbl/nsXBLPrototypeHandler.h
+++ b/dom/xbl/nsXBLPrototypeHandler.h
@@ -55,20 +55,20 @@ public:
                         const char16_t* aModifiers, const char16_t* aButton,
                         const char16_t* aClickCount, const char16_t* aGroup,
                         const char16_t* aPreventDefault,
                         const char16_t* aAllowUntrusted,
                         nsXBLPrototypeBinding* aBinding,
                         uint32_t aLineNumber);
 
   // This constructor is used only by XUL key handlers (e.g., <key>)
-  nsXBLPrototypeHandler(nsIContent* aKeyElement);
+  explicit nsXBLPrototypeHandler(nsIContent* aKeyElement);
 
   // This constructor is used for handlers loaded from the cache
-  nsXBLPrototypeHandler(nsXBLPrototypeBinding* aBinding);
+  explicit nsXBLPrototypeHandler(nsXBLPrototypeBinding* aBinding);
 
   ~nsXBLPrototypeHandler();
 
   // if aCharCode is not zero, it is used instead of the charCode of aKeyEvent.
   bool KeyEventMatched(nsIDOMKeyEvent* aKeyEvent,
                          uint32_t aCharCode = 0,
                          bool aIgnoreShiftKey = false);
   inline bool KeyEventMatched(nsIAtom* aEventType,
--- a/dom/xbl/nsXBLPrototypeResources.h
+++ b/dom/xbl/nsXBLPrototypeResources.h
@@ -20,17 +20,17 @@ class CSSStyleSheet;
 } // namespace mozilla
 
 // *********************************************************************/
 // The XBLPrototypeResources class
 
 class nsXBLPrototypeResources
 {
 public:
-  nsXBLPrototypeResources(nsXBLPrototypeBinding* aBinding);
+  explicit nsXBLPrototypeResources(nsXBLPrototypeBinding* aBinding);
   ~nsXBLPrototypeResources();
 
   void LoadResources(bool* aResult);
   void AddResource(nsIAtom* aResourceType, const nsAString& aSrc);
   void AddResourceListener(nsIContent* aElement);
   nsresult FlushSkinSheets();
 
   nsresult Write(nsIObjectOutputStream* aStream);
--- a/dom/xml/CDATASection.h
+++ b/dom/xml/CDATASection.h
@@ -21,23 +21,23 @@ private:
   {
     NS_ABORT_IF_FALSE(mNodeInfo->NodeType() == nsIDOMNode::CDATA_SECTION_NODE,
                       "Bad NodeType in aNodeInfo");
   }
 
   virtual ~CDATASection();
 
 public:
-  CDATASection(already_AddRefed<mozilla::dom::NodeInfo> aNodeInfo)
+  explicit CDATASection(already_AddRefed<mozilla::dom::NodeInfo> aNodeInfo)
     : Text(aNodeInfo)
   {
     Init();
   }
 
-  CDATASection(nsNodeInfoManager* aNodeInfoManager)
+  explicit CDATASection(nsNodeInfoManager* aNodeInfoManager)
     : Text(aNodeInfoManager->GetNodeInfo(nsGkAtoms::cdataTagName,
                                          nullptr, kNameSpaceID_None,
                                          nsIDOMNode::CDATA_SECTION_NODE))
   {
     Init();
   }
 
   // nsISupports
--- a/dom/xml/XMLDocument.h
+++ b/dom/xml/XMLDocument.h
@@ -17,17 +17,17 @@ class nsIURI;
 class nsIChannel;
 
 namespace mozilla {
 namespace dom {
 
 class XMLDocument : public nsDocument
 {
 public:
-  XMLDocument(const char* aContentType = "application/xml");
+  explicit XMLDocument(const char* aContentType = "application/xml");
 
   NS_DECL_ISUPPORTS_INHERITED
 
   virtual void Reset(nsIChannel* aChannel, nsILoadGroup* aLoadGroup) MOZ_OVERRIDE;
   virtual void ResetToURI(nsIURI *aURI, nsILoadGroup *aLoadGroup,
                           nsIPrincipal* aPrincipal) MOZ_OVERRIDE;
 
   virtual nsresult StartDocumentLoad(const char* aCommand, nsIChannel* channel,
--- a/dom/xml/nsXMLElement.h
+++ b/dom/xml/nsXMLElement.h
@@ -10,17 +10,17 @@
 #include "nsIDOMElement.h"
 #include "mozilla/dom/ElementInlines.h"
 #include "mozilla/dom/DOMRect.h"
 
 class nsXMLElement : public mozilla::dom::Element,
                      public nsIDOMElement
 {
 public:
-  nsXMLElement(already_AddRefed<mozilla::dom::NodeInfo>& aNodeInfo)
+  explicit nsXMLElement(already_AddRefed<mozilla::dom::NodeInfo>& aNodeInfo)
     : mozilla::dom::Element(aNodeInfo)
   {
   }
 
   // nsISupports
   NS_DECL_ISUPPORTS_INHERITED
 
   // nsIDOMNode
--- a/dom/xslt/base/txExpandedNameMap.h
+++ b/dom/xslt/base/txExpandedNameMap.h
@@ -51,17 +51,17 @@ protected:
      */
     void clearItems()
     {
         mItems.Clear();
     }
 
     class iterator_base {
     public:
-        iterator_base(txExpandedNameMap_base& aMap)
+        explicit iterator_base(txExpandedNameMap_base& aMap)
             : mMap(aMap),
               mCurrentPos(uint32_t(-1))
         {
         }
 
         bool next()
         {
             return ++mCurrentPos < mMap.mItems.Length();
@@ -128,17 +128,17 @@ public:
     void clear()
     {
         clearItems();
     }
 
     class iterator : public iterator_base
     {
     public:
-        iterator(txExpandedNameMap& aMap)
+        explicit iterator(txExpandedNameMap& aMap)
             : iterator_base(aMap)
         {
         }
 
         E* value()
         {
             return (E*)itemValue();
         }
@@ -182,17 +182,17 @@ public:
             delete (E*)mItems[i].mValue;
         }
         clearItems();
     }
 
     class iterator : public iterator_base
     {
     public:
-        iterator(txOwningExpandedNameMap& aMap)
+        explicit iterator(txOwningExpandedNameMap& aMap)
             : iterator_base(aMap)
         {
         }
 
         E* value()
         {
             return (E*)itemValue();
         }
--- a/dom/xslt/base/txList.h
+++ b/dom/xslt/base/txList.h
@@ -83,17 +83,17 @@ private:
 **/
 class txListIterator {
 
 public:
     /**
      * Creates a new txListIterator for the given txList
      * @param list, the txList to create an Iterator for
     **/
-    txListIterator(txList* list);
+    explicit txListIterator(txList* list);
 
     /**
      * Adds the Object pointer to the txList pointed to by this txListIterator.
      * The Object pointer is inserted as the next item in the txList
      * based on the current position within the txList
      * @param objPtr the Object pointer to add to the list
     **/
     nsresult addAfter(void* objPtr);
--- a/dom/xslt/base/txStack.h
+++ b/dom/xslt/base/txStack.h
@@ -81,18 +81,18 @@ class txStackIterator
 {
 public:
     /**
      * Creates an iterator for the given stack.
      *
      * @param aStack the stack to create an iterator for.
      */
     inline
-    txStackIterator(txStack* aStack) : mStack(aStack),
-                                       mPosition(0)
+    explicit txStackIterator(txStack* aStack) : mStack(aStack),
+                                                mPosition(0)
     {
     }
 
     /**
      * Returns true if there is more objects on the stack.
      *
      * @return .
      */
--- a/dom/xslt/xpath/XPathEvaluator.h
+++ b/dom/xslt/xpath/XPathEvaluator.h
@@ -27,17 +27,17 @@ class XPathResult;
 /**
  * A class for evaluating an XPath expression string
  */
 class XPathEvaluator MOZ_FINAL : public nsIDOMXPathEvaluator
 {
     ~XPathEvaluator();
 
 public:
-    XPathEvaluator(nsIDocument* aDocument = nullptr);
+    explicit XPathEvaluator(nsIDocument* aDocument = nullptr);
 
     NS_DECL_ISUPPORTS
 
     // nsIDOMXPathEvaluator interface
     NS_DECL_NSIDOMXPATHEVALUATOR
 
     // WebIDL API
     JSObject* WrapObject(JSContext* aCx);
--- a/dom/xslt/xpath/XPathResult.h
+++ b/dom/xslt/xpath/XPathResult.h
@@ -46,17 +46,17 @@ namespace dom {
  */
 class XPathResult MOZ_FINAL : public nsIXPathResult,
                               public nsStubMutationObserver,
                               public nsWrapperCache
 {
     ~XPathResult();
 
 public:
-    XPathResult(nsINode* aParent);
+    explicit XPathResult(nsINode* aParent);
     XPathResult(const XPathResult &aResult);
 
     enum {
         ANY_TYPE = 0U,
         NUMBER_TYPE = 1U,
         STRING_TYPE = 2U,
         BOOLEAN_TYPE = 3U,
         UNORDERED_NODE_ITERATOR_TYPE = 4U,
--- a/dom/xslt/xpath/nsXPathNSResolver.h
+++ b/dom/xslt/xpath/nsXPathNSResolver.h
@@ -15,17 +15,17 @@
 /**
  * A class for evaluating an XPath expression string
  */
 class nsXPathNSResolver MOZ_FINAL : public nsIDOMXPathNSResolver
 {
     ~nsXPathNSResolver() {}
 
 public:
-    nsXPathNSResolver(nsIDOMNode* aNode);
+    explicit nsXPathNSResolver(nsIDOMNode* aNode);
 
     // nsISupports interface
     NS_DECL_CYCLE_COLLECTING_ISUPPORTS
     NS_DECL_CYCLE_COLLECTION_CLASS(nsXPathNSResolver)
 
     // nsIDOMXPathNSResolver interface
     NS_DECL_NSIDOMXPATHNSRESOLVER
 
--- a/dom/xslt/xpath/txExpr.h
+++ b/dom/xslt/xpath/txExpr.h
@@ -357,17 +357,17 @@ public:
         LANG,              // lang()
         _NOT,              // not()
         _TRUE              // true()
     };
 
     /*
      * Creates a txCoreFunctionCall of the given type
      */
-    txCoreFunctionCall(eType aType) : mType(aType)
+    explicit txCoreFunctionCall(eType aType) : mType(aType)
     {
     }
 
     TX_DECL_FUNCTION
 
     static bool getTypeFromAtom(nsIAtom* aName, eType& aType);
 
 private:
@@ -465,17 +465,17 @@ public:
         TEXT_TYPE,
         PI_TYPE,
         NODE_TYPE
     };
 
     /*
      * Creates a new txNodeTypeTest of the given type
      */
-    txNodeTypeTest(NodeType aNodeType)
+    explicit txNodeTypeTest(NodeType aNodeType)
         : mNodeType(aNodeType)
     {
     }
 
     /*
      * Sets the name of the node to match. Only availible for pi nodes
      */
     void setNodeName(const nsAString& aName)
@@ -645,40 +645,40 @@ class FilterExpr : public Expr,
                    public PredicateList
 {
 public:
 
     /**
      * Creates a new FilterExpr using the given Expr
      * @param expr the Expr to use for evaluation
      */
-    FilterExpr(Expr* aExpr)
+    explicit FilterExpr(Expr* aExpr)
         : expr(aExpr)
     {
     }
 
     TX_DECL_EXPR
 
 private:
     nsAutoPtr<Expr> expr;
 
 }; //-- FilterExpr
 
 
 class txLiteralExpr : public Expr {
 public:
-    txLiteralExpr(double aDbl)
+    explicit txLiteralExpr(double aDbl)
         : mValue(new NumberResult(aDbl, nullptr))
     {
     }
-    txLiteralExpr(const nsAString& aStr)
+    explicit txLiteralExpr(const nsAString& aStr)
         : mValue(new StringResult(aStr, nullptr))
     {
     }
-    txLiteralExpr(txAExprResult* aValue)
+    explicit txLiteralExpr(txAExprResult* aValue)
         : mValue(aValue)
     {
     }
 
     TX_DECL_EXPR
 
 private:
     nsRefPtr<txAExprResult> mValue;
@@ -686,17 +686,17 @@ private:
 
 /**
  * Represents an UnaryExpr. Returns the negative value of its expr.
 **/
 class UnaryExpr : public Expr {
 
 public:
 
-    UnaryExpr(Expr* aExpr)
+    explicit UnaryExpr(Expr* aExpr)
         : expr(aExpr)
     {
     }
 
     TX_DECL_EXPR
 
 private:
     nsAutoPtr<Expr> expr;
@@ -982,17 +982,17 @@ private:
 
 /**
  *  Expression that failed to parse
  */
 class txErrorExpr : public Expr
 {
 public:
 #ifdef TX_TO_STRING
-    txErrorExpr(const nsAString& aStr)
+    explicit txErrorExpr(const nsAString& aStr)
       : mStr(aStr)
     {
     }
 #endif
 
     TX_DECL_EXPR
 
 #ifdef TX_TO_STRING
--- a/dom/xslt/xpath/txExprResult.h
+++ b/dom/xslt/xpath/txExprResult.h
@@ -30,17 +30,17 @@ public:
     enum ResultType {
         NODESET = 0,
         BOOLEAN,
         NUMBER,
         STRING,
         RESULT_TREE_FRAGMENT
     };
 
-    txAExprResult(txResultRecycler* aRecycler) : mRecycler(aRecycler)
+    explicit txAExprResult(txResultRecycler* aRecycler) : mRecycler(aRecycler)
     {
     }
     virtual ~txAExprResult()
     {
     }
 
     void AddRef()
     {
@@ -92,17 +92,17 @@ private:
     virtual const nsString* stringValuePointer();                 \
     virtual bool booleanValue();                                \
     virtual double numberValue();                                 \
 
 
 class BooleanResult : public txAExprResult {
 
 public:
-    BooleanResult(bool aValue);
+    explicit BooleanResult(bool aValue);
 
     TX_DECL_EXPRRESULT
 
 private:
     bool value;
 };
 
 class NumberResult : public txAExprResult {
@@ -114,17 +114,17 @@ public:
 
     double value;
 
 };
 
 
 class StringResult : public txAExprResult {
 public:
-    StringResult(txResultRecycler* aRecycler);
+    explicit StringResult(txResultRecycler* aRecycler);
     StringResult(const nsAString& aValue, txResultRecycler* aRecycler);
 
     TX_DECL_EXPRRESULT
 
     nsString mValue;
 };
 
 #endif
--- a/dom/xslt/xpath/txNodeSet.h
+++ b/dom/xslt/xpath/txNodeSet.h
@@ -15,17 +15,17 @@
 #include "txXPathNode.h"
 
 class txNodeSet : public txAExprResult
 {
 public:
     /**
      * Creates a new empty NodeSet
      */
-    txNodeSet(txResultRecycler* aRecycler);
+    explicit txNodeSet(txResultRecycler* aRecycler);
 
     /**
      * Creates a new NodeSet with one node.
      */
     txNodeSet(const txXPathNode& aNode, txResultRecycler* aRecycler);
 
     /**
      * Creates a new txNodeSet, copying the node references from the source
--- a/dom/xslt/xpath/txNodeSetAdaptor.h
+++ b/dom/xslt/xpath/txNodeSetAdaptor.h
@@ -14,17 +14,17 @@
  * Implements an XPCOM wrapper around an XPath NodeSet.
  */
 
 class txNodeSetAdaptor : public txXPathObjectAdaptor,
                          public txINodeSet 
 {
 public:
     txNodeSetAdaptor();
-    txNodeSetAdaptor(txNodeSet *aNodeSet);
+    explicit txNodeSetAdaptor(txNodeSet* aNodeSet);
 
     nsresult Init();
 
     NS_DECL_ISUPPORTS_INHERITED
     NS_DECL_TXINODESET
 
 protected:
     ~txNodeSetAdaptor() {}
--- a/dom/xslt/xpath/txXPathNode.h
+++ b/dom/xslt/xpath/txXPathNode.h
@@ -28,19 +28,19 @@ public:
 private:
     friend class txNodeSet;
     friend class txXPathNativeNode;
     friend class txXPathNodeUtils;
     friend class txXPathTreeWalker;
 
     txXPathNode(const txXPathNode& aNode);
 
-    txXPathNode(nsIDocument* aDocument) : mNode(aDocument),
-                                          mRefCountRoot(0),
-                                          mIndex(eDocument)
+    explicit txXPathNode(nsIDocument* aDocument) : mNode(aDocument),
+                                                   mRefCountRoot(0),
+                                                   mIndex(eDocument)
     {
         MOZ_COUNT_CTOR(txXPathNode);
     }
     txXPathNode(nsINode *aNode, uint32_t aIndex, nsINode *aRoot)
         : mNode(aNode),
           mRefCountRoot(aRoot ? 1 : 0),
           mIndex(aIndex)
     {
--- a/dom/xslt/xpath/txXPathObjectAdaptor.h
+++ b/dom/xslt/xpath/txXPathObjectAdaptor.h
@@ -13,17 +13,17 @@
 /**
  * Implements an XPCOM wrapper around XPath data types boolean, number, string,
  * or nodeset.
  */
 
 class txXPathObjectAdaptor : public txIXPathObject
 {
 public:
-    txXPathObjectAdaptor(txAExprResult *aValue) : mValue(aValue)
+    explicit txXPathObjectAdaptor(txAExprResult* aValue) : mValue(aValue)
     {
         NS_ASSERTION(aValue,
                      "Don't create a txXPathObjectAdaptor if you don't have a "
                      "txAExprResult");
     }
 
     NS_DECL_ISUPPORTS
 
--- a/dom/xslt/xpath/txXPathOptimizer.cpp
+++ b/dom/xslt/xpath/txXPathOptimizer.cpp
@@ -9,17 +9,17 @@
 #include "nsGkAtoms.h"
 #include "txXPathNode.h"
 #include "txExpr.h"
 #include "txIXPathContext.h"
 
 class txEarlyEvalContext : public txIEvalContext
 {
 public:
-    txEarlyEvalContext(txResultRecycler* aRecycler)
+    explicit txEarlyEvalContext(txResultRecycler* aRecycler)
         : mRecycler(aRecycler)
     {
     }
 
     // txIEvalContext
     nsresult getVariable(int32_t aNamespace, nsIAtom* aLName,
                          txAExprResult*& aResult)
     {
--- a/dom/xslt/xslt/txBufferingHandler.cpp
+++ b/dom/xslt/xslt/txBufferingHandler.cpp
@@ -16,17 +16,17 @@ public:
         eCommentTransaction,
         eEndDocumentTransaction,
         eEndElementTransaction,
         ePITransaction,
         eStartDocumentTransaction,
         eStartElementAtomTransaction,
         eStartElementTransaction
     };
-    txOutputTransaction(txTransactionType aType)
+    explicit txOutputTransaction(txTransactionType aType)
         : mType(aType)
     {
         MOZ_COUNT_CTOR(txOutputTransaction);
     }
     virtual ~txOutputTransaction()
     {
         MOZ_COUNT_DTOR(txOutputTransaction);
     }
@@ -47,17 +47,17 @@ public:
         MOZ_COUNT_DTOR_INHERITED(txCharacterTransaction, txOutputTransaction);
     }
     uint32_t mLength;
 };
 
 class txCommentTransaction : public txOutputTransaction
 {
 public:
-    txCommentTransaction(const nsAString& aValue)
+    explicit txCommentTransaction(const nsAString& aValue)
         : txOutputTransaction(eCommentTransaction),
           mValue(aValue)
     {
         MOZ_COUNT_CTOR_INHERITED(txCommentTransaction, txOutputTransaction);
     }
     virtual ~txCommentTransaction()
     {
         MOZ_COUNT_DTOR_INHERITED(txCommentTransaction, txOutputTransaction);
--- a/dom/xslt/xslt/txEXSLTFunctions.cpp
+++ b/dom/xslt/xslt/txEXSLTFunctions.cpp
@@ -223,18 +223,18 @@ public:
         SPLIT,
         TOKENIZE,
         MAX,
         MIN,
         HIGHEST,
         LOWEST,
         DATE_TIME
     };
-    
-    txEXSLTFunctionCall(eType aType)
+
+    explicit txEXSLTFunctionCall(eType aType)
       : mType(aType)
     {
     }
 
     TX_DECL_FUNCTION
 
 private:
     eType mType;
--- a/dom/xslt/xslt/txExecutionState.h
+++ b/dom/xslt/xslt/txExecutionState.h
@@ -21,18 +21,18 @@
 class txAOutputHandlerFactory;
 class txAXMLEventHandler;
 class txInstruction;
 class txIOutputHandlerFactory;
 
 class txLoadedDocumentEntry : public nsStringHashKey
 {
 public:
-    txLoadedDocumentEntry(KeyTypePointer aStr) : nsStringHashKey(aStr),
-                                                 mLoadResult(NS_OK)
+    explicit txLoadedDocumentEntry(KeyTypePointer aStr) : nsStringHashKey(aStr),
+                                                          mLoadResult(NS_OK)
     {
     }
     txLoadedDocumentEntry(const txLoadedDocumentEntry& aToCopy)
         : nsStringHashKey(aToCopy)
     {
         NS_ERROR("We're horked.");
     }
     ~txLoadedDocumentEntry()
--- a/dom/xslt/xslt/txInstructions.h
+++ b/dom/xslt/xslt/txInstructions.h
@@ -56,17 +56,17 @@ class txApplyImportsStart : public txIns
 {
 public:
     TX_DECL_TXINSTRUCTION
 };
 
 class txApplyTemplates : public txInstruction
 {
 public:
-    txApplyTemplates(const txExpandedName& aMode);
+    explicit txApplyTemplates(const txExpandedName& aMode);
 
     TX_DECL_TXINSTRUCTION
     
     txExpandedName mMode;
 };
 
 class txAttribute : public txInstruction
 {
@@ -79,27 +79,27 @@ public:
     nsAutoPtr<Expr> mName;
     nsAutoPtr<Expr> mNamespace;
     nsRefPtr<txNamespaceMap> mMappings;
 };
 
 class txCallTemplate : public txInstruction
 {
 public:
-    txCallTemplate(const txExpandedName& aName);
+    explicit txCallTemplate(const txExpandedName& aName);
 
     TX_DECL_TXINSTRUCTION
 
     txExpandedName mName;
 };
 
 class txCheckParam : public txInstruction
 {
 public:
-    txCheckParam(const txExpandedName& aName);
+    explicit txCheckParam(const txExpandedName& aName);
 
     TX_DECL_TXINSTRUCTION
 
     txExpandedName mName;
     txInstruction* mBailTarget;
 };
 
 class txConditionalGoto : public txInstruction
@@ -133,17 +133,17 @@ public:
     TX_DECL_TXINSTRUCTION
     
     txInstruction* mBailTarget;
 };
 
 class txCopyOf : public txCopyBase
 {
 public:
-    txCopyOf(nsAutoPtr<Expr>&& aSelect);
+    explicit txCopyOf(nsAutoPtr<Expr>&& aSelect);
 
     TX_DECL_TXINSTRUCTION
     
     nsAutoPtr<Expr> mSelect;
 };
 
 class txEndElement : public txInstruction
 {
@@ -155,37 +155,37 @@ class txErrorInstruction : public txInst
 {
 public:
     TX_DECL_TXINSTRUCTION
 };
 
 class txGoTo : public txInstruction
 {
 public:
-    txGoTo(txInstruction* aTarget);
+    explicit txGoTo(txInstruction* aTarget);
 
     TX_DECL_TXINSTRUCTION
     
     txInstruction* mTarget;
 };
 
 class txInsertAttrSet : public txInstruction
 {
 public:
-    txInsertAttrSet(const txExpandedName& aName);
+    explicit txInsertAttrSet(const txExpandedName& aName);
 
     TX_DECL_TXINSTRUCTION
 
     txExpandedName mName;
 };
 
 class txLoopNodeSet : public txInstruction
 {
 public:
-    txLoopNodeSet(txInstruction* aTarget);
+    explicit txLoopNodeSet(txInstruction* aTarget);
 
     TX_DECL_TXINSTRUCTION
     
     txInstruction* mTarget;
 };
 
 class txLREAttribute : public txInstruction
 {
@@ -200,17 +200,17 @@ public:
     nsCOMPtr<nsIAtom> mLowercaseLocalName;
     nsCOMPtr<nsIAtom> mPrefix;
     nsAutoPtr<Expr> mValue;
 };
 
 class txMessage : public txInstruction
 {
 public:
-    txMessage(bool aTerminate);
+    explicit txMessage(bool aTerminate);
 
     TX_DECL_TXINSTRUCTION
 
     bool mTerminate;
 };
 
 class txNumber : public txInstruction
 {
@@ -235,27 +235,27 @@ class txPopParams : public txInstruction
 {
 public:
     TX_DECL_TXINSTRUCTION
 };
 
 class txProcessingInstruction : public txInstruction
 {
 public:
-    txProcessingInstruction(nsAutoPtr<Expr>&& aName);
+    explicit txProcessingInstruction(nsAutoPtr<Expr>&& aName);
 
     TX_DECL_TXINSTRUCTION
 
     nsAutoPtr<Expr> mName;
 };
 
 class txPushNewContext : public txInstruction
 {
 public:
-    txPushNewContext(nsAutoPtr<Expr>&& aSelect);
+    explicit txPushNewContext(nsAutoPtr<Expr>&& aSelect);
     ~txPushNewContext();
 
     TX_DECL_TXINSTRUCTION
     
     
     nsresult addSort(nsAutoPtr<Expr>&& aSelectExpr,
                      nsAutoPtr<Expr>&& aLangExpr,
                      nsAutoPtr<Expr>&& aDataTypeExpr,
@@ -291,27 +291,27 @@ class txPushRTFHandler : public txInstru
 {
 public:
     TX_DECL_TXINSTRUCTION
 };
 
 class txPushStringHandler : public txInstruction
 {
 public:
-    txPushStringHandler(bool aOnlyText);
+    explicit txPushStringHandler(bool aOnlyText);
 
     TX_DECL_TXINSTRUCTION
 
     bool mOnlyText;
 };
 
 class txRemoveVariable : public txInstruction
 {
 public:
-    txRemoveVariable(const txExpandedName& aName);
+    explicit txRemoveVariable(const txExpandedName& aName);
 
     TX_DECL_TXINSTRUCTION
 
     txExpandedName mName;
 };
 
 class txReturn : public txInstruction
 {
--- a/dom/xslt/xslt/txKey.h
+++ b/dom/xslt/xslt/txKey.h
@@ -34,17 +34,17 @@ public:
 };
 
 struct txKeyValueHashEntry : public PLDHashEntryHdr
 {
 public:
     typedef const txKeyValueHashKey& KeyType;
     typedef const txKeyValueHashKey* KeyTypePointer;
 
-    txKeyValueHashEntry(KeyTypePointer aKey)
+    explicit txKeyValueHashEntry(KeyTypePointer aKey)
         : mKey(*aKey),
           mNodeSet(new txNodeSet(nullptr)) { }
 
     txKeyValueHashEntry(const txKeyValueHashEntry& entry)
         : mKey(entry.mKey),
           mNodeSet(entry.mNodeSet) { }
 
     bool KeyEquals(KeyTypePointer aKey) const;
@@ -76,17 +76,17 @@ public:
 };
 
 struct txIndexedKeyHashEntry : public PLDHashEntryHdr
 {
 public:
     typedef const txIndexedKeyHashKey& KeyType;
     typedef const txIndexedKeyHashKey* KeyTypePointer;
 
-    txIndexedKeyHashEntry(KeyTypePointer aKey)
+    explicit txIndexedKeyHashEntry(KeyTypePointer aKey)
         : mKey(*aKey),
           mIndexed(false) { }
 
     txIndexedKeyHashEntry(const txIndexedKeyHashEntry& entry)
         : mKey(entry.mKey),
           mIndexed(entry.mIndexed) { }
 
     bool KeyEquals(KeyTypePointer aKey) const;
@@ -105,17 +105,17 @@ typedef nsTHashtable<txIndexedKeyHashEnt
 
 /**
  * Class holding all <xsl:key>s of a particular expanded name in the
  * stylesheet.
  */
 class txXSLKey {
     
 public:
-    txXSLKey(const txExpandedName& aName) : mName(aName)
+    explicit txXSLKey(const txExpandedName& aName) : mName(aName)
     {
     }
     
     /**
      * Adds a match/use pair.
      * @param aMatch  match-pattern
      * @param aUse    use-expression
      * @return false if an error occurred, true otherwise
@@ -173,17 +173,17 @@ private:
      */
     txExpandedName mName;
 };
 
 
 class txKeyHash
 {
 public:
-    txKeyHash(const txOwningExpandedNameMap<txXSLKey>& aKeys)
+    explicit txKeyHash(const txOwningExpandedNameMap<txXSLKey>& aKeys)
         : mKeyValues(4)
         , mIndexedKeys(1)
         , mKeys(aKeys)
     {
     }
     
     nsresult init();
 
--- a/dom/xslt/xslt/txMozillaStylesheetCompiler.cpp
+++ b/dom/xslt/xslt/txMozillaStylesheetCompiler.cpp
@@ -599,17 +599,17 @@ handleNode(nsINode* aNode, txStylesheetC
     }
 
     return NS_OK;
 }
 
 class txSyncCompileObserver MOZ_FINAL : public txACompileObserver
 {
 public:
-    txSyncCompileObserver(txMozillaXSLTProcessor* aProcessor);
+    explicit txSyncCompileObserver(txMozillaXSLTProcessor* aProcessor);
 
     TX_DECL_ACOMPILEOBSERVER
     NS_INLINE_DECL_REFCOUNTING(txSyncCompileObserver)
 
 private:
     // Private destructor, to discourage deletion outside of Release():
     ~txSyncCompileObserver()
     {
--- a/dom/xslt/xslt/txMozillaTextOutput.h
+++ b/dom/xslt/xslt/txMozillaTextOutput.h
@@ -16,18 +16,18 @@ class nsIDOMDocument;
 class nsIDOMDocumentFragment;
 class nsITransformObserver;
 class nsIDocument;
 class nsIContent;
 
 class txMozillaTextOutput : public txAOutputXMLEventHandler
 {
 public:
-    txMozillaTextOutput(nsITransformObserver* aObserver);
-    txMozillaTextOutput(nsIDOMDocumentFragment* aDest);
+    explicit txMozillaTextOutput(nsITransformObserver* aObserver);
+    explicit txMozillaTextOutput(nsIDOMDocumentFragment* aDest);
     virtual ~txMozillaTextOutput();
 
     TX_DECL_TXAXMLEVENTHANDLER
     TX_DECL_TXAOUTPUTXMLEVENTHANDLER
 
     nsresult createResultDocument(nsIDOMDocument* aSourceDocument,
                                   bool aLoadedAsData);
 
--- a/dom/xslt/xslt/txMozillaXSLTProcessor.cpp
+++ b/dom/xslt/xslt/txMozillaXSLTProcessor.cpp
@@ -63,17 +63,17 @@ private:
     nsCOMPtr<nsIDOMDocument> mSourceDocument;
     nsCOMPtr<nsITransformObserver> mObserver;
     bool mDocumentIsData;
 };
 
 class txToFragmentHandlerFactory : public txAOutputHandlerFactory
 {
 public:
-    txToFragmentHandlerFactory(nsIDOMDocumentFragment* aFragment)
+    explicit txToFragmentHandlerFactory(nsIDOMDocumentFragment* aFragment)
         : mFragment(aFragment)
     {
     }
 
     TX_DECL_TXAOUTPUTHANDLERFACTORY
 
 private:
     nsCOMPtr<nsIDOMDocumentFragment> mFragment;
@@ -231,21 +231,21 @@ txToFragmentHandlerFactory::createHandle
                  "How can method not be known when root element is?");
     NS_ENSURE_TRUE(aFormat->mMethod != eMethodNotSet, NS_ERROR_UNEXPECTED);
     return createHandlerWith(aFormat, aHandler);
 }
 
 class txVariable : public txIGlobalParameter
 {
 public:
-    txVariable(nsIVariant *aValue) : mValue(aValue)
+    explicit txVariable(nsIVariant* aValue) : mValue(aValue)
     {
         NS_ASSERTION(aValue, "missing value");
     }
-    txVariable(txAExprResult* aValue) : mTxValue(aValue)
+    explicit txVariable(txAExprResult* aValue) : mTxValue(aValue)
     {
         NS_ASSERTION(aValue, "missing value");
     }
     nsresult getValue(txAExprResult** aValue)
     {
         NS_ASSERTION(mValue || mTxValue, "variablevalue is null");
 
         if (!mTxValue) {
@@ -509,17 +509,17 @@ txMozillaXSLTProcessor::AddXSLTParam(con
 
     return mVariables.add(varName, var);
 }
 
 class nsTransformBlockerEvent : public nsRunnable {
 public:
   nsRefPtr<txMozillaXSLTProcessor> mProcessor;
 
-  nsTransformBlockerEvent(txMozillaXSLTProcessor *processor)
+  explicit nsTransformBlockerEvent(txMozillaXSLTProcessor* processor)
     : mProcessor(processor)
   {}
 
   ~nsTransformBlockerEvent()
   {
     nsCOMPtr<nsIDocument> document =
         do_QueryInterface(mProcessor->GetSourceContentModel());
     document->UnblockOnload(true);
--- a/dom/xslt/xslt/txRtfHandler.h
+++ b/dom/xslt/xslt/txRtfHandler.h
@@ -9,17 +9,17 @@
 #include "mozilla/Attributes.h"
 #include "txBufferingHandler.h"
 #include "txExprResult.h"
 #include "txXPathNode.h"
 
 class txResultTreeFragment : public txAExprResult
 {
 public:
-    txResultTreeFragment(nsAutoPtr<txResultBuffer>&& aBuffer);
+    explicit txResultTreeFragment(nsAutoPtr<txResultBuffer>&& aBuffer);
 
     TX_DECL_EXPRRESULT
 
     nsresult flushToHandler(txAXMLEventHandler* aHandler);
 
     void setNode(const txXPathNode* aNode)
     {
         NS_ASSERTION(!mNode, "Already converted!");
--- a/dom/xslt/xslt/txStylesheetCompiler.cpp
+++ b/dom/xslt/xslt/txStylesheetCompiler.cpp
@@ -852,17 +852,17 @@ txStylesheetCompilerState::resolveNamesp
 
 /**
  * Error Function to be used for unknown extension functions.
  *
  */
 class txErrorFunctionCall : public FunctionCall
 {
 public:
-    txErrorFunctionCall(nsIAtom* aName)
+    explicit txErrorFunctionCall(nsIAtom* aName)
       : mName(aName)
     {
     }
 
     TX_DECL_FUNCTION
 
 private:
     nsCOMPtr<nsIAtom> mName;
--- a/dom/xslt/xslt/txStylesheetCompiler.h
+++ b/dom/xslt/xslt/txStylesheetCompiler.h
@@ -26,17 +26,17 @@ class txNamespaceMap;
 class txToplevelItem;
 class txPushNewContext;
 class txStylesheetCompiler;
 class txInScopeVariable;
 
 class txElementContext : public txObject
 {
 public:
-    txElementContext(const nsAString& aBaseURI);
+    explicit txElementContext(const nsAString& aBaseURI);
     txElementContext(const txElementContext& aOther);
 
     bool mPreserveWhitespace;
     bool mForwardsCompatibleParsing;
     nsString mBaseURI;
     nsRefPtr<txNamespaceMap> mMappings;
     nsTArray<int32_t> mInstructionNamespaces;
     int32_t mDepth;
@@ -62,17 +62,17 @@ public:
                    txStylesheetCompiler* aCompiler); \
   void onDoneCompiling(txStylesheetCompiler* aCompiler, nsresult aResult, \
                        const char16_t *aErrorText = nullptr, \
                        const char16_t *aParam = nullptr);
 
 class txStylesheetCompilerState : public txIParseContext
 {
 public:
-    txStylesheetCompilerState(txACompileObserver* aObserver);
+    explicit txStylesheetCompilerState(txACompileObserver* aObserver);
     ~txStylesheetCompilerState();
     
     nsresult init(const nsAString& aStylesheetURI, txStylesheet* aStylesheet,
                   txListIterator* aInsertPosition);
 
     // Embedded stylesheets state
     bool handleEmbeddedSheet()
     {
@@ -231,16 +231,16 @@ private:
     nsresult maybeDoneCompiling();
 
     nsString mCharacters;
     nsresult mStatus;
 };
 
 class txInScopeVariable {
 public:
-    txInScopeVariable(const txExpandedName& aName) : mName(aName), mLevel(1)
+    explicit txInScopeVariable(const txExpandedName& aName) : mName(aName), mLevel(1)
     {
     }
     txExpandedName mName;
     int32_t mLevel;
 };
 
 #endif
--- a/dom/xslt/xslt/txTextHandler.h
+++ b/dom/xslt/xslt/txTextHandler.h
@@ -7,17 +7,17 @@
 #define TRANSFRMX_TEXT_HANDLER_H
 
 #include "txXMLEventHandler.h"
 #include "nsString.h"
 
 class txTextHandler : public txAXMLEventHandler
 {
 public:
-    txTextHandler(bool aOnlyText);
+    explicit txTextHandler(bool aOnlyText);
 
     TX_DECL_TXAXMLEVENTHANDLER
 
     nsString mValue;
 
 private:
     uint32_t mLevel;
     bool mOnlyText;
--- a/dom/xslt/xslt/txToplevelItems.h
+++ b/dom/xslt/xslt/txToplevelItems.h
@@ -51,17 +51,17 @@ class txInstructionContainer : public tx
 public:
     nsAutoPtr<txInstruction> mFirstInstruction;
 };
 
 // xsl:attribute-set
 class txAttributeSetItem : public txInstructionContainer
 {
 public:
-    txAttributeSetItem(const txExpandedName aName) : mName(aName)
+    explicit txAttributeSetItem(const txExpandedName aName) : mName(aName)
     {
     }
 
     TX_DECL_TOPLEVELITEM
 
     txExpandedName mName;
 };
 
--- a/dom/xslt/xslt/txUnknownHandler.h
+++ b/dom/xslt/xslt/txUnknownHandler.h
@@ -9,17 +9,17 @@
 #include "txBufferingHandler.h"
 #include "txOutputFormat.h"
 
 class txExecutionState;
 
 class txUnknownHandler : public txBufferingHandler
 {
 public:
-    txUnknownHandler(txExecutionState* aEs);
+    explicit txUnknownHandler(txExecutionState* aEs);
     virtual ~txUnknownHandler();
 
     TX_DECL_TXAXMLEVENTHANDLER
 
 private:
     nsresult createHandlerAndFlush(bool aHTMLRoot,
                                    const nsSubstring& aName,
                                    const int32_t aNsID);
--- a/dom/xslt/xslt/txXPathResultComparator.h
+++ b/dom/xslt/xslt/txXPathResultComparator.h
@@ -72,17 +72,17 @@ private:
 };
 
 /*
  * Compare results as numbers (data-type="number")
  */
 class txResultNumberComparator : public txXPathResultComparator
 {
 public:
-    txResultNumberComparator(bool aAscending);
+    explicit txResultNumberComparator(bool aAscending);
 
     int compareValues(txObject* aVal1, txObject* aVal2) MOZ_OVERRIDE;
     nsresult createSortableValue(Expr *aExpr, txIEvalContext *aContext,
                                  txObject *&aResult) MOZ_OVERRIDE;
 
 private:
     int mAscending;
 
--- a/dom/xslt/xslt/txXSLTFunctions.h
+++ b/dom/xslt/xslt/txXSLTFunctions.h
@@ -21,17 +21,17 @@ class txExecutionState;
 **/
 class DocumentFunctionCall : public FunctionCall {
 
 public:
 
     /**
      * Creates a new document() function call
     **/
-    DocumentFunctionCall(const nsAString& aBaseURI);
+    explicit DocumentFunctionCall(const nsAString& aBaseURI);
 
     TX_DECL_FUNCTION
 
 private:
     nsString mBaseURI;
 };
 
 /*
@@ -39,17 +39,17 @@ private:
  */
 class txKeyFunctionCall : public FunctionCall {
 
 public:
 
     /*
      * Creates a new key() function call
      */
-    txKeyFunctionCall(txNamespaceMap* aMappings);
+    explicit txKeyFunctionCall(txNamespaceMap* aMappings);
 
     TX_DECL_FUNCTION
 
 private:
     nsRefPtr<txNamespaceMap> mMappings;
 };
 
 /**
--- a/dom/xslt/xslt/txXSLTNumberCounters.cpp
+++ b/dom/xslt/xslt/txXSLTNumberCounters.cpp
@@ -21,29 +21,29 @@ public:
 private:
     int32_t mMinLength;
     int32_t mGroupSize;
     nsString mGroupSeparator;
 };
 
 class txAlphaCounter : public txFormattedCounter {
 public:
-    txAlphaCounter(char16_t aOffset) : mOffset(aOffset)
+    explicit txAlphaCounter(char16_t aOffset) : mOffset(aOffset)
     {
     }
 
     virtual void appendNumber(int32_t aNumber, nsAString& aDest);
     
 private:
     char16_t mOffset;
 };
 
 class txRomanCounter : public txFormattedCounter {
 public:
-    txRomanCounter(bool aUpper) : mTableOffset(aUpper ? 30 : 0)
+    explicit txRomanCounter(bool aUpper) : mTableOffset(aUpper ? 30 : 0)
     {
     }
 
     void appendNumber(int32_t aNumber, nsAString& aDest);
 
 private:
     int32_t mTableOffset;
 };
--- a/dom/xslt/xslt/txXSLTPatterns.h
+++ b/dom/xslt/xslt/txXSLTPatterns.h
@@ -182,17 +182,17 @@ private:
     // Don't serialize txRootPattern if it's used in a txLocPathPattern
     bool mSerialize;
 #endif
 };
 
 class txIdPattern : public txPattern
 {
 public:
-    txIdPattern(const nsSubstring& aString);
+    explicit txIdPattern(const nsSubstring& aString);
 
     TX_DECL_PATTERN;
 
 private:
     nsCOMArray<nsIAtom> mIds;
 };
 
 class txKeyPattern : public txPattern