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 id1
push userroot
push dateMon, 20 Oct 2014 17:29:22 +0000
reviewersbaku
bugs1060987
milestone34.0a1
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