Bug 1447924 - part 1: Rename nsTransactionManager to mozilla::TransactionManager r?m_kato draft
authorMasayuki Nakano <masayuki@d-toybox.com>
Thu, 22 Mar 2018 22:15:54 +0900
changeset 772890 ef9c898b9b285f4f2edfe36e806c7044a6b10d69
parent 772889 7d358521d30e39be8a41df8caa1d216768003e4f
child 772891 fe55d50a21a272086699617d79227d0c835261e0
push id104076
push usermasayuki@d-toybox.com
push dateTue, 27 Mar 2018 04:30:26 +0000
reviewersm_kato
bugs1447924
milestone61.0a1
Bug 1447924 - part 1: Rename nsTransactionManager to mozilla::TransactionManager r?m_kato We should rename nsTransactionManager to mozilla::TransactionManager before adding new non-virtual methods. MozReview-Commit-ID: JsivNVfDhex
editor/libeditor/EditorBase.cpp
editor/libeditor/EditorBase.h
editor/txmgr/TransactionManager.cpp
editor/txmgr/TransactionManager.h
editor/txmgr/TransactionManagerFactory.cpp
editor/txmgr/moz.build
editor/txmgr/nsITransactionManager.idl
editor/txmgr/nsTransactionItem.cpp
editor/txmgr/nsTransactionItem.h
editor/txmgr/nsTransactionManager.cpp
editor/txmgr/nsTransactionManager.h
editor/txmgr/nsTransactionManagerCID.h
editor/txmgr/nsTransactionManagerFactory.cpp
--- a/editor/libeditor/EditorBase.cpp
+++ b/editor/libeditor/EditorBase.cpp
@@ -43,16 +43,17 @@
 #include "mozilla/Preferences.h"        // for Preferences
 #include "mozilla/RangeBoundary.h"      // for RawRangeBoundary, RangeBoundary
 #include "mozilla/dom/Selection.h"      // for Selection, etc.
 #include "mozilla/Services.h"           // for GetObserverService
 #include "mozilla/TextComposition.h"    // for TextComposition
 #include "mozilla/TextInputListener.h"  // for TextInputListener
 #include "mozilla/TextServicesDocument.h" // for TextServicesDocument
 #include "mozilla/TextEvents.h"
+#include "mozilla/TransactionManager.h" // for TransactionManager
 #include "mozilla/dom/CharacterData.h"  // for CharacterData
 #include "mozilla/dom/Element.h"        // for Element, nsINode::AsElement
 #include "mozilla/dom/HTMLBodyElement.h"
 #include "mozilla/dom/Text.h"
 #include "mozilla/dom/Event.h"
 #include "nsAString.h"                  // for nsAString::Length, etc.
 #include "nsCCUncollectableMarker.h"    // for nsCCUncollectableMarker
 #include "nsCaret.h"                    // for nsCaret
@@ -103,17 +104,16 @@
 #include "nsReadableUtils.h"            // for EmptyString, ToNewCString
 #include "nsString.h"                   // for nsAutoString, nsString, etc.
 #include "nsStringFwd.h"                // for nsString
 #include "nsStyleConsts.h"              // for NS_STYLE_DIRECTION_RTL, etc.
 #include "nsStyleStruct.h"              // for nsStyleDisplay, nsStyleText, etc.
 #include "nsStyleStructFwd.h"           // for nsIFrame::StyleUIReset, etc.
 #include "nsTextNode.h"                 // for nsTextNode
 #include "nsThreadUtils.h"              // for nsRunnable
-#include "nsTransactionManager.h"       // for nsTransactionManager
 #include "prtime.h"                     // for PR_Now
 
 class nsIOutputStream;
 class nsITransferable;
 
 namespace mozilla {
 
 using namespace dom;
@@ -175,30 +175,30 @@ EditorBase::~EditorBase()
              "Why PreDestroy hasn't been called?");
 
   if (mComposition) {
     mComposition->OnEditorDestroyed();
     mComposition = nullptr;
   }
   // If this editor is still hiding the caret, we need to restore it.
   HideCaret(false);
-  mTxnMgr = nullptr;
+  mTransactionManager = nullptr;
 }
 
 NS_IMPL_CYCLE_COLLECTION_CLASS(EditorBase)
 
 NS_IMPL_CYCLE_COLLECTION_UNLINK_BEGIN(EditorBase)
  NS_IMPL_CYCLE_COLLECTION_UNLINK(mRootElement)
  NS_IMPL_CYCLE_COLLECTION_UNLINK(mSelectionController)
  NS_IMPL_CYCLE_COLLECTION_UNLINK(mDocument)
  NS_IMPL_CYCLE_COLLECTION_UNLINK(mIMEContentObserver)
  NS_IMPL_CYCLE_COLLECTION_UNLINK(mInlineSpellChecker)
  NS_IMPL_CYCLE_COLLECTION_UNLINK(mTextServicesDocument)
  NS_IMPL_CYCLE_COLLECTION_UNLINK(mTextInputListener)
- NS_IMPL_CYCLE_COLLECTION_UNLINK(mTxnMgr)
+ NS_IMPL_CYCLE_COLLECTION_UNLINK(mTransactionManager)
  NS_IMPL_CYCLE_COLLECTION_UNLINK(mActionListeners)
  NS_IMPL_CYCLE_COLLECTION_UNLINK(mEditorObservers)
  NS_IMPL_CYCLE_COLLECTION_UNLINK(mDocStateListeners)
  NS_IMPL_CYCLE_COLLECTION_UNLINK(mEventTarget)
 
  if (tmp->mEventListener) {
    tmp->mEventListener->Disconnect();
    tmp->mEventListener = nullptr;
@@ -218,17 +218,17 @@ NS_IMPL_CYCLE_COLLECTION_TRAVERSE_BEGIN(
  }
  NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mRootElement)
  NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mSelectionController)
  NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mDocument)
  NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mIMEContentObserver)
  NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mInlineSpellChecker)
  NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mTextServicesDocument)
  NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mTextInputListener)
- NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mTxnMgr)
+ NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mTransactionManager)
  NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mActionListeners)
  NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mEditorObservers)
  NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mDocStateListeners)
  NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mEventTarget)
  NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mEventListener)
  NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mPlaceholderTransaction)
  NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mSavedSel);
  NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mRangeUpdater);
@@ -520,19 +520,19 @@ EditorBase::PreDestroy(bool aDestroyingF
   mInlineSpellChecker = nullptr;
   mTextServicesDocument = nullptr;
   mTextInputListener = nullptr;
   mSpellcheckCheckboxState = eTriUnset;
   mRootElement = nullptr;
 
   // Transaction may grab this instance.  Therefore, they should be released
   // here for stopping the circular reference with this instance.
-  if (mTxnMgr) {
-    mTxnMgr->Clear();
-    mTxnMgr = nullptr;
+  if (mTransactionManager) {
+    mTransactionManager->Clear();
+    mTransactionManager = nullptr;
   }
 
   mDidPreDestroy = true;
   return NS_OK;
 }
 
 NS_IMETHODIMP
 EditorBase::GetFlags(uint32_t* aFlags)
@@ -741,18 +741,19 @@ EditorBase::DoTransaction(Selection* aSe
   if (mPlaceholderBatch && !mPlaceholderTransaction) {
     mPlaceholderTransaction =
       PlaceholderTransaction::Create(*this, mPlaceholderName, Move(mSelState));
     MOZ_ASSERT(mSelState.isNothing());
 
     // We will recurse, but will not hit this case in the nested call
     DoTransaction(mPlaceholderTransaction);
 
-    if (mTxnMgr) {
-      nsCOMPtr<nsITransaction> topTransaction = mTxnMgr->PeekUndoStack();
+    if (mTransactionManager) {
+      nsCOMPtr<nsITransaction> topTransaction =
+        mTransactionManager->PeekUndoStack();
       nsCOMPtr<nsIAbsorbingTransaction> topAbsorbingTransaction =
         do_QueryInterface(topTransaction);
       if (topAbsorbingTransaction) {
         RefPtr<PlaceholderTransaction> topPlaceholderTransaction =
           topAbsorbingTransaction->AsPlaceholderTransaction();
         if (topPlaceholderTransaction) {
           // there is a placeholder transaction on top of the undo stack.  It
           // is either the one we just created, or an earlier one that we are
@@ -786,19 +787,19 @@ EditorBase::DoTransaction(Selection* aSe
 
     // get the selection and start a batch change
     RefPtr<Selection> selection = aSelection ? aSelection : GetSelection();
     NS_ENSURE_TRUE(selection, NS_ERROR_NULL_POINTER);
 
     SelectionBatcher selectionBatcher(selection);
 
     nsresult rv;
-    if (mTxnMgr) {
-      RefPtr<nsTransactionManager> txnMgr = mTxnMgr;
-      rv = txnMgr->DoTransaction(aTxn);
+    if (mTransactionManager) {
+      RefPtr<TransactionManager> transactionManager(mTransactionManager);
+      rv = transactionManager->DoTransaction(aTxn);
     } else {
       rv = aTxn->DoTransaction();
     }
     if (NS_WARN_IF(NS_FAILED(rv))) {
       return rv;
     }
 
     DoAfterDoTransaction(aTxn);
@@ -806,64 +807,66 @@ EditorBase::DoTransaction(Selection* aSe
 
   return NS_OK;
 }
 
 NS_IMETHODIMP
 EditorBase::EnableUndo(bool aEnable)
 {
   if (aEnable) {
-    if (!mTxnMgr) {
-      mTxnMgr = new nsTransactionManager();
+    if (!mTransactionManager) {
+      mTransactionManager = new TransactionManager();
     }
-    mTxnMgr->SetMaxTransactionCount(-1);
-  } else if (mTxnMgr) {
+    mTransactionManager->SetMaxTransactionCount(-1);
+  } else if (mTransactionManager) {
     // disable the transaction manager if it is enabled
-    mTxnMgr->Clear();
-    mTxnMgr->SetMaxTransactionCount(0);
+    mTransactionManager->Clear();
+    mTransactionManager->SetMaxTransactionCount(0);
   }
 
   return NS_OK;
 }
 
 NS_IMETHODIMP
 EditorBase::GetNumberOfUndoItems(int32_t* aNumItems)
 {
   *aNumItems = NumberOfUndoItems();
   return *aNumItems >= 0 ? NS_OK : NS_ERROR_FAILURE;
 }
 
 int32_t
 EditorBase::NumberOfUndoItems() const
 {
-  if (!mTxnMgr) {
+  if (!mTransactionManager) {
     return 0;
   }
   int32_t numItems = 0;
-  if (NS_WARN_IF(NS_FAILED(mTxnMgr->GetNumberOfUndoItems(&numItems)))) {
+  nsresult rv = mTransactionManager->GetNumberOfUndoItems(&numItems);
+  if (NS_WARN_IF(NS_FAILED(rv))) {
     return -1;
   }
   return numItems;
 }
 
 NS_IMETHODIMP
 EditorBase::GetNumberOfRedoItems(int32_t* aNumItems)
 {
   *aNumItems = NumberOfRedoItems();
   return *aNumItems >= 0 ? NS_OK : NS_ERROR_FAILURE;
 }
 
 int32_t
 EditorBase::NumberOfRedoItems() const
 {
-  if (!mTxnMgr) {
+  if (!mTransactionManager) {
     return 0;
   }
   int32_t numItems = 0;
-  if (NS_WARN_IF(NS_FAILED(mTxnMgr->GetNumberOfRedoItems(&numItems)))) {
+  nsresult rv = mTransactionManager->GetNumberOfRedoItems(&numItems);
+  if (NS_WARN_IF(NS_FAILED(rv))) {
     return -1;
   }
   return numItems;
 }
 
 NS_IMETHODIMP
 EditorBase::GetTransactionManager(nsITransactionManager** aTxnManager)
 {
@@ -877,121 +880,121 @@ EditorBase::GetTransactionManager(nsITra
     return NS_ERROR_FAILURE;
   }
   return NS_OK;
 }
 
 already_AddRefed<nsITransactionManager>
 EditorBase::GetTransactionManager() const
 {
-  nsCOMPtr<nsITransactionManager> transactionManager = mTxnMgr.get();
+  nsCOMPtr<nsITransactionManager> transactionManager(mTransactionManager);
   return transactionManager.forget();
 }
 
 NS_IMETHODIMP
 EditorBase::Undo(uint32_t aCount)
 {
   ForceCompositionEnd();
 
-  bool hasTxnMgr, hasTransaction = false;
-  CanUndo(&hasTxnMgr, &hasTransaction);
+  bool hasTransactionManager, hasTransaction = false;
+  CanUndo(&hasTransactionManager, &hasTransaction);
   NS_ENSURE_TRUE(hasTransaction, NS_OK);
 
   AutoRules beginRulesSniffing(this, EditAction::undo, nsIEditor::eNone);
 
-  if (!mTxnMgr) {
+  if (!mTransactionManager) {
     return NS_OK;
   }
 
-  RefPtr<nsTransactionManager> txnMgr = mTxnMgr;
+  RefPtr<TransactionManager> transactionManager(mTransactionManager);
   for (uint32_t i = 0; i < aCount; ++i) {
-    nsresult rv = txnMgr->UndoTransaction();
+    nsresult rv = transactionManager->UndoTransaction();
     NS_ENSURE_SUCCESS(rv, rv);
 
     DoAfterUndoTransaction();
   }
 
   return NS_OK;
 }
 
 NS_IMETHODIMP
 EditorBase::CanUndo(bool* aIsEnabled,
                     bool* aCanUndo)
 {
   NS_ENSURE_TRUE(aIsEnabled && aCanUndo, NS_ERROR_NULL_POINTER);
-  *aIsEnabled = !!mTxnMgr;
+  *aIsEnabled = !!mTransactionManager;
   if (*aIsEnabled) {
     int32_t numTxns = 0;
-    mTxnMgr->GetNumberOfUndoItems(&numTxns);
+    mTransactionManager->GetNumberOfUndoItems(&numTxns);
     *aCanUndo = !!numTxns;
   } else {
     *aCanUndo = false;
   }
   return NS_OK;
 }
 
 NS_IMETHODIMP
 EditorBase::Redo(uint32_t aCount)
 {
-  bool hasTxnMgr, hasTransaction = false;
-  CanRedo(&hasTxnMgr, &hasTransaction);
+  bool hasTransactionManager, hasTransaction = false;
+  CanRedo(&hasTransactionManager, &hasTransaction);
   NS_ENSURE_TRUE(hasTransaction, NS_OK);
 
   AutoRules beginRulesSniffing(this, EditAction::redo, nsIEditor::eNone);
 
-  if (!mTxnMgr) {
+  if (!mTransactionManager) {
     return NS_OK;
   }
 
-  RefPtr<nsTransactionManager> txnMgr = mTxnMgr;
+  RefPtr<TransactionManager> transactionManager(mTransactionManager);
   for (uint32_t i = 0; i < aCount; ++i) {
-    nsresult rv = txnMgr->RedoTransaction();
+    nsresult rv = transactionManager->RedoTransaction();
     NS_ENSURE_SUCCESS(rv, rv);
 
     DoAfterRedoTransaction();
   }
 
   return NS_OK;
 }
 
 NS_IMETHODIMP
 EditorBase::CanRedo(bool* aIsEnabled, bool* aCanRedo)
 {
   NS_ENSURE_TRUE(aIsEnabled && aCanRedo, NS_ERROR_NULL_POINTER);
 
-  *aIsEnabled = !!mTxnMgr;
+  *aIsEnabled = !!mTransactionManager;
   if (*aIsEnabled) {
     int32_t numTxns = 0;
-    mTxnMgr->GetNumberOfRedoItems(&numTxns);
+    mTransactionManager->GetNumberOfRedoItems(&numTxns);
     *aCanRedo = !!numTxns;
   } else {
     *aCanRedo = false;
   }
   return NS_OK;
 }
 
 NS_IMETHODIMP
 EditorBase::BeginTransaction()
 {
   BeginUpdateViewBatch();
 
-  if (mTxnMgr) {
-    RefPtr<nsTransactionManager> txnMgr = mTxnMgr;
-    txnMgr->BeginBatch(nullptr);
+  if (mTransactionManager) {
+    RefPtr<TransactionManager> transactionManager(mTransactionManager);
+    transactionManager->BeginBatch(nullptr);
   }
 
   return NS_OK;
 }
 
 NS_IMETHODIMP
 EditorBase::EndTransaction()
 {
-  if (mTxnMgr) {
-    RefPtr<nsTransactionManager> txnMgr = mTxnMgr;
-    txnMgr->EndBatch(false);
+  if (mTransactionManager) {
+    RefPtr<TransactionManager> transactionManager(mTransactionManager);
+    transactionManager->EndBatch(false);
   }
 
   EndUpdateViewBatch();
 
   return NS_OK;
 }
 
 void
@@ -2466,18 +2469,18 @@ EditorBase::BeginIMEComposition(WidgetCo
 
 void
 EditorBase::EndIMEComposition()
 {
   NS_ENSURE_TRUE_VOID(mComposition); // nothing to do
 
   // commit the IME transaction..we can get at it via the transaction mgr.
   // Note that this means IME won't work without an undo stack!
-  if (mTxnMgr) {
-    nsCOMPtr<nsITransaction> txn = mTxnMgr->PeekUndoStack();
+  if (mTransactionManager) {
+    nsCOMPtr<nsITransaction> txn = mTransactionManager->PeekUndoStack();
     nsCOMPtr<nsIAbsorbingTransaction> plcTxn = do_QueryInterface(txn);
     if (plcTxn) {
       DebugOnly<nsresult> rv = plcTxn->Commit();
       NS_ASSERTION(NS_SUCCEEDED(rv),
                    "nsIAbsorbingTransaction::Commit() failed");
     }
   }
 
--- a/editor/libeditor/EditorBase.h
+++ b/editor/libeditor/EditorBase.h
@@ -46,17 +46,16 @@ class nsIDocumentStateListener;
 class nsIEditActionListener;
 class nsIEditorObserver;
 class nsINode;
 class nsIPresShell;
 class nsISupports;
 class nsITransaction;
 class nsIWidget;
 class nsRange;
-class nsTransactionManager;
 
 namespace mozilla {
 class AddStyleSheetTransaction;
 class AutoRules;
 class AutoSelectionRestorer;
 class AutoTransactionsConserveSelection;
 class ChangeAttributeTransaction;
 class CompositionTransaction;
@@ -75,16 +74,17 @@ class JoinNodeTransaction;
 class PlaceholderTransaction;
 class RemoveStyleSheetTransaction;
 class SplitNodeResult;
 class SplitNodeTransaction;
 class TextComposition;
 class TextEditor;
 class TextInputListener;
 class TextServicesDocument;
+class TransactionManager;
 enum class EditAction : int32_t;
 
 namespace dom {
 class DataTransfer;
 class DragEvent;
 class Element;
 class EventTarget;
 class Text;
@@ -1508,17 +1508,17 @@ protected:
 
   // MIME type of the doc we are editing.
   nsCString mContentMIMEType;
 
   RefPtr<mozInlineSpellChecker> mInlineSpellChecker;
   // Reference to text services document for mInlineSpellChecker.
   RefPtr<TextServicesDocument> mTextServicesDocument;
 
-  RefPtr<nsTransactionManager> mTxnMgr;
+  RefPtr<TransactionManager> mTransactionManager;
   // Cached root node.
   nsCOMPtr<Element> mRootElement;
   // The form field as an event receiver.
   nsCOMPtr<dom::EventTarget> mEventTarget;
   RefPtr<EditorEventListener> mEventListener;
   // Strong reference to placeholder for begin/end batch purposes.
   RefPtr<PlaceholderTransaction> mPlaceholderTransaction;
   // Name of placeholder transaction.
rename from editor/txmgr/nsTransactionManager.cpp
rename to editor/txmgr/TransactionManager.cpp
--- a/editor/txmgr/nsTransactionManager.cpp
+++ b/editor/txmgr/TransactionManager.cpp
@@ -1,66 +1,65 @@
 /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
+#include "mozilla/TransactionManager.h"
+
 #include "mozilla/Assertions.h"
 #include "mozilla/mozalloc.h"
 #include "nsCOMPtr.h"
 #include "nsDebug.h"
 #include "nsError.h"
 #include "nsISupportsBase.h"
 #include "nsISupportsUtils.h"
 #include "nsITransaction.h"
 #include "nsITransactionListener.h"
 #include "nsIWeakReference.h"
 #include "nsTransactionItem.h"
-#include "nsTransactionManager.h"
 #include "nsTransactionStack.h"
 
-nsTransactionManager::nsTransactionManager(int32_t aMaxTransactionCount)
+namespace mozilla {
+
+TransactionManager::TransactionManager(int32_t aMaxTransactionCount)
   : mMaxTransactionCount(aMaxTransactionCount)
   , mDoStack(nsTransactionStack::FOR_UNDO)
   , mUndoStack(nsTransactionStack::FOR_UNDO)
   , mRedoStack(nsTransactionStack::FOR_REDO)
 {
 }
 
-nsTransactionManager::~nsTransactionManager()
-{
-}
+NS_IMPL_CYCLE_COLLECTION_CLASS(TransactionManager)
 
-NS_IMPL_CYCLE_COLLECTION_CLASS(nsTransactionManager)
-
-NS_IMPL_CYCLE_COLLECTION_UNLINK_BEGIN(nsTransactionManager)
+NS_IMPL_CYCLE_COLLECTION_UNLINK_BEGIN(TransactionManager)
   NS_IMPL_CYCLE_COLLECTION_UNLINK(mListeners)
   tmp->mDoStack.DoUnlink();
   tmp->mUndoStack.DoUnlink();
   tmp->mRedoStack.DoUnlink();
 NS_IMPL_CYCLE_COLLECTION_UNLINK_END
 
-NS_IMPL_CYCLE_COLLECTION_TRAVERSE_BEGIN(nsTransactionManager)
+NS_IMPL_CYCLE_COLLECTION_TRAVERSE_BEGIN(TransactionManager)
   NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mListeners)
   tmp->mDoStack.DoTraverse(cb);
   tmp->mUndoStack.DoTraverse(cb);
   tmp->mRedoStack.DoTraverse(cb);
 NS_IMPL_CYCLE_COLLECTION_TRAVERSE_END
 
-NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION(nsTransactionManager)
+NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION(TransactionManager)
   NS_INTERFACE_MAP_ENTRY(nsITransactionManager)
   NS_INTERFACE_MAP_ENTRY(nsISupportsWeakReference)
   NS_INTERFACE_MAP_ENTRY_AMBIGUOUS(nsISupports, nsITransactionManager)
 NS_INTERFACE_MAP_END
 
-NS_IMPL_CYCLE_COLLECTING_ADDREF(nsTransactionManager)
-NS_IMPL_CYCLE_COLLECTING_RELEASE(nsTransactionManager)
+NS_IMPL_CYCLE_COLLECTING_ADDREF(TransactionManager)
+NS_IMPL_CYCLE_COLLECTING_RELEASE(TransactionManager)
 
 NS_IMETHODIMP
-nsTransactionManager::DoTransaction(nsITransaction *aTransaction)
+TransactionManager::DoTransaction(nsITransaction* aTransaction)
 {
   NS_ENSURE_TRUE(aTransaction, NS_ERROR_NULL_POINTER);
 
   bool doInterrupt = false;
 
   nsresult rv = WillDoNotify(aTransaction, &doInterrupt);
   if (NS_FAILED(rv)) {
     return rv;
@@ -83,17 +82,17 @@ nsTransactionManager::DoTransaction(nsIT
   }
 
   // XXX The result of EndTransaction() or DidDoNotify() if EndTransaction()
   //     succeeded.
   return rv;
 }
 
 NS_IMETHODIMP
-nsTransactionManager::UndoTransaction()
+TransactionManager::UndoTransaction()
 {
   // It is illegal to call UndoTransaction() while the transaction manager is
   // executing a  transaction's DoTransaction() method! If this happens,
   // the UndoTransaction() request is ignored, and we return NS_ERROR_FAILURE.
   if (!mDoStack.IsEmpty()) {
     return NS_ERROR_FAILURE;
   }
 
@@ -127,17 +126,17 @@ nsTransactionManager::UndoTransaction()
   }
 
   // XXX The result of UndoTransaction() or DidUndoNotify() if UndoTransaction()
   //     succeeded.
   return rv;
 }
 
 NS_IMETHODIMP
-nsTransactionManager::RedoTransaction()
+TransactionManager::RedoTransaction()
 {
   // It is illegal to call RedoTransaction() while the transaction manager is
   // executing a  transaction's DoTransaction() method! If this happens,
   // the RedoTransaction() request is ignored, and we return NS_ERROR_FAILURE.
   if (!mDoStack.IsEmpty()) {
     return NS_ERROR_FAILURE;
   }
 
@@ -171,27 +170,27 @@ nsTransactionManager::RedoTransaction()
   }
 
   // XXX The result of RedoTransaction() or DidRedoNotify() if RedoTransaction()
   //     succeeded.
   return rv;
 }
 
 NS_IMETHODIMP
-nsTransactionManager::Clear()
+TransactionManager::Clear()
 {
   nsresult rv = ClearRedoStack();
   if (NS_FAILED(rv)) {
     return rv;
   }
   return ClearUndoStack();
 }
 
 NS_IMETHODIMP
-nsTransactionManager::BeginBatch(nsISupports* aData)
+TransactionManager::BeginBatch(nsISupports* aData)
 {
   // We can batch independent transactions together by simply pushing
   // a dummy transaction item on the do stack. This dummy transaction item
   // will be popped off the do stack, and then pushed on the undo stack
   // in EndBatch().
   bool doInterrupt = false;
   nsresult rv = WillBeginBatchNotify(&doInterrupt);
   if (NS_FAILED(rv)) {
@@ -209,17 +208,17 @@ nsTransactionManager::BeginBatch(nsISupp
   }
 
   // XXX The result of BeginTransaction() or DidBeginBatchNotify() if
   //     BeginTransaction() succeeded.
   return rv;
 }
 
 NS_IMETHODIMP
-nsTransactionManager::EndBatch(bool aAllowEmpty)
+TransactionManager::EndBatch(bool aAllowEmpty)
 {
   // XXX: Need to add some mechanism to detect the case where the transaction
   //      at the top of the do stack isn't the dummy transaction, so we can
   //      throw an error!! This can happen if someone calls EndBatch() within
   //      the DoTransaction() method of a transaction.
   //
   //      For now, we can detect this case by checking the value of the
   //      dummy transaction's mTransaction field. If it is our dummy
@@ -251,39 +250,39 @@ nsTransactionManager::EndBatch(bool aAll
   }
 
   // XXX The result of EndTransaction() or DidEndBatchNotify() if
   //     EndTransaction() succeeded.
   return rv;
 }
 
 NS_IMETHODIMP
-nsTransactionManager::GetNumberOfUndoItems(int32_t *aNumItems)
+TransactionManager::GetNumberOfUndoItems(int32_t* aNumItems)
 {
   *aNumItems = mUndoStack.GetSize();
   return NS_OK;
 }
 
 NS_IMETHODIMP
-nsTransactionManager::GetNumberOfRedoItems(int32_t *aNumItems)
+TransactionManager::GetNumberOfRedoItems(int32_t* aNumItems)
 {
   *aNumItems = mRedoStack.GetSize();
   return NS_OK;
 }
 
 NS_IMETHODIMP
-nsTransactionManager::GetMaxTransactionCount(int32_t *aMaxCount)
+TransactionManager::GetMaxTransactionCount(int32_t* aMaxCount)
 {
   NS_ENSURE_TRUE(aMaxCount, NS_ERROR_NULL_POINTER);
   *aMaxCount = mMaxTransactionCount;
   return NS_OK;
 }
 
 NS_IMETHODIMP
-nsTransactionManager::SetMaxTransactionCount(int32_t aMaxCount)
+TransactionManager::SetMaxTransactionCount(int32_t aMaxCount)
 {
   // It is illegal to call SetMaxTransactionCount() while the transaction
   // manager is executing a  transaction's DoTransaction() method because
   // the undo and redo stacks might get pruned! If this happens, the
   // SetMaxTransactionCount() request is ignored, and we return
   // NS_ERROR_FAILURE.
   if (!mDoStack.IsEmpty()) {
     return NS_ERROR_FAILURE;
@@ -327,53 +326,53 @@ nsTransactionManager::SetMaxTransactionC
     --numRedoItems;
   }
 
   mMaxTransactionCount = aMaxCount;
   return NS_OK;
 }
 
 NS_IMETHODIMP
-nsTransactionManager::PeekUndoStack(nsITransaction **aTransaction)
+TransactionManager::PeekUndoStack(nsITransaction** aTransaction)
 {
   MOZ_ASSERT(aTransaction);
   *aTransaction = PeekUndoStack().take();
   return NS_OK;
 }
 
 already_AddRefed<nsITransaction>
-nsTransactionManager::PeekUndoStack()
+TransactionManager::PeekUndoStack()
 {
   RefPtr<nsTransactionItem> tx = mUndoStack.Peek();
   if (!tx) {
     return nullptr;
   }
   return tx->GetTransaction();
 }
 
 NS_IMETHODIMP
-nsTransactionManager::PeekRedoStack(nsITransaction** aTransaction)
+TransactionManager::PeekRedoStack(nsITransaction** aTransaction)
 {
   MOZ_ASSERT(aTransaction);
   *aTransaction = PeekRedoStack().take();
   return NS_OK;
 }
 
 already_AddRefed<nsITransaction>
-nsTransactionManager::PeekRedoStack()
+TransactionManager::PeekRedoStack()
 {
   RefPtr<nsTransactionItem> tx = mRedoStack.Peek();
   if (!tx) {
     return nullptr;
   }
   return tx->GetTransaction();
 }
 
 nsresult
-nsTransactionManager::BatchTopUndo()
+TransactionManager::BatchTopUndo()
 {
   if (mUndoStack.GetSize() < 2) {
     // Not enough transactions to merge into one batch.
     return NS_OK;
   }
 
   RefPtr<nsTransactionItem> lastUndo;
   RefPtr<nsTransactionItem> previousUndo;
@@ -391,241 +390,249 @@ nsTransactionManager::BatchTopUndo()
   nsCOMArray<nsISupports>& lastData = lastUndo->GetData();
   nsCOMArray<nsISupports>& previousData = previousUndo->GetData();
   NS_ENSURE_TRUE(previousData.AppendObjects(lastData), NS_ERROR_UNEXPECTED);
   lastData.Clear();
   return rv;
 }
 
 nsresult
-nsTransactionManager::RemoveTopUndo()
+TransactionManager::RemoveTopUndo()
 {
   if (mUndoStack.IsEmpty()) {
     return NS_OK;
   }
 
   RefPtr<nsTransactionItem> lastUndo = mUndoStack.Pop();
   return NS_OK;
 }
 
 NS_IMETHODIMP
-nsTransactionManager::AddListener(nsITransactionListener *aListener)
+TransactionManager::AddListener(nsITransactionListener* aListener)
 {
   NS_ENSURE_TRUE(aListener, NS_ERROR_NULL_POINTER);
   return mListeners.AppendObject(aListener) ? NS_OK : NS_ERROR_FAILURE;
 }
 
 NS_IMETHODIMP
-nsTransactionManager::RemoveListener(nsITransactionListener *aListener)
+TransactionManager::RemoveListener(nsITransactionListener* aListener)
 {
   NS_ENSURE_TRUE(aListener, NS_ERROR_NULL_POINTER);
   return mListeners.RemoveObject(aListener) ? NS_OK : NS_ERROR_FAILURE;
 }
 
 NS_IMETHODIMP
-nsTransactionManager::ClearUndoStack()
+TransactionManager::ClearUndoStack()
 {
   mUndoStack.Clear();
   return NS_OK;
 }
 
 NS_IMETHODIMP
-nsTransactionManager::ClearRedoStack()
+TransactionManager::ClearRedoStack()
 {
   mRedoStack.Clear();
   return NS_OK;
 }
 
 nsresult
-nsTransactionManager::WillDoNotify(nsITransaction *aTransaction, bool *aInterrupt)
+TransactionManager::WillDoNotify(nsITransaction* aTransaction,
+                                 bool* aInterrupt)
 {
   for (int32_t i = 0, lcount = mListeners.Count(); i < lcount; i++) {
     nsITransactionListener* listener = mListeners[i];
     NS_ENSURE_TRUE(listener, NS_ERROR_FAILURE);
 
     nsresult rv = listener->WillDo(this, aTransaction, aInterrupt);
     if (NS_FAILED(rv) || *aInterrupt) {
       return rv;
     }
   }
   return NS_OK;
 }
 
 nsresult
-nsTransactionManager::DidDoNotify(nsITransaction *aTransaction, nsresult aDoResult)
+TransactionManager::DidDoNotify(nsITransaction* aTransaction,
+                                nsresult aDoResult)
 {
   for (int32_t i = 0, lcount = mListeners.Count(); i < lcount; i++) {
     nsITransactionListener* listener = mListeners[i];
     NS_ENSURE_TRUE(listener, NS_ERROR_FAILURE);
 
     nsresult rv = listener->DidDo(this, aTransaction, aDoResult);
     if (NS_FAILED(rv)) {
       return rv;
     }
   }
   return NS_OK;
 }
 
 nsresult
-nsTransactionManager::WillUndoNotify(nsITransaction *aTransaction, bool *aInterrupt)
+TransactionManager::WillUndoNotify(nsITransaction* aTransaction,
+                                   bool* aInterrupt)
 {
   for (int32_t i = 0, lcount = mListeners.Count(); i < lcount; i++) {
     nsITransactionListener* listener = mListeners[i];
     NS_ENSURE_TRUE(listener, NS_ERROR_FAILURE);
 
     nsresult rv = listener->WillUndo(this, aTransaction, aInterrupt);
     if (NS_FAILED(rv) || *aInterrupt) {
       return rv;
     }
   }
   return NS_OK;
 }
 
 nsresult
-nsTransactionManager::DidUndoNotify(nsITransaction *aTransaction, nsresult aUndoResult)
+TransactionManager::DidUndoNotify(nsITransaction* aTransaction,
+                                  nsresult aUndoResult)
 {
   for (int32_t i = 0, lcount = mListeners.Count(); i < lcount; i++) {
     nsITransactionListener* listener = mListeners[i];
     NS_ENSURE_TRUE(listener, NS_ERROR_FAILURE);
 
     nsresult rv = listener->DidUndo(this, aTransaction, aUndoResult);
     if (NS_FAILED(rv)) {
       return rv;
     }
   }
   return NS_OK;
 }
 
 nsresult
-nsTransactionManager::WillRedoNotify(nsITransaction *aTransaction, bool *aInterrupt)
+TransactionManager::WillRedoNotify(nsITransaction* aTransaction,
+                                   bool* aInterrupt)
 {
   for (int32_t i = 0, lcount = mListeners.Count(); i < lcount; i++) {
     nsITransactionListener* listener = mListeners[i];
     NS_ENSURE_TRUE(listener, NS_ERROR_FAILURE);
 
     nsresult rv = listener->WillRedo(this, aTransaction, aInterrupt);
     if (NS_FAILED(rv) || *aInterrupt) {
       return rv;
     }
   }
   return NS_OK;
 }
 
 nsresult
-nsTransactionManager::DidRedoNotify(nsITransaction *aTransaction, nsresult aRedoResult)
+TransactionManager::DidRedoNotify(nsITransaction* aTransaction,
+                                  nsresult aRedoResult)
 {
   for (int32_t i = 0, lcount = mListeners.Count(); i < lcount; i++) {
     nsITransactionListener* listener = mListeners[i];
     NS_ENSURE_TRUE(listener, NS_ERROR_FAILURE);
 
     nsresult rv = listener->DidRedo(this, aTransaction, aRedoResult);
     if (NS_FAILED(rv)) {
       return rv;
     }
   }
   return NS_OK;
 }
 
 nsresult
-nsTransactionManager::WillBeginBatchNotify(bool *aInterrupt)
+TransactionManager::WillBeginBatchNotify(bool* aInterrupt)
 {
   for (int32_t i = 0, lcount = mListeners.Count(); i < lcount; i++) {
     nsITransactionListener* listener = mListeners[i];
     NS_ENSURE_TRUE(listener, NS_ERROR_FAILURE);
 
     nsresult rv = listener->WillBeginBatch(this, aInterrupt);
     if (NS_FAILED(rv) || *aInterrupt) {
       return rv;
     }
   }
   return NS_OK;
 }
 
 nsresult
-nsTransactionManager::DidBeginBatchNotify(nsresult aResult)
+TransactionManager::DidBeginBatchNotify(nsresult aResult)
 {
   for (int32_t i = 0, lcount = mListeners.Count(); i < lcount; i++) {
     nsITransactionListener* listener = mListeners[i];
     NS_ENSURE_TRUE(listener, NS_ERROR_FAILURE);
 
     nsresult rv = listener->DidBeginBatch(this, aResult);
     if (NS_FAILED(rv)) {
       return rv;
     }
   }
   return NS_OK;
 }
 
 nsresult
-nsTransactionManager::WillEndBatchNotify(bool *aInterrupt)
+TransactionManager::WillEndBatchNotify(bool* aInterrupt)
 {
   for (int32_t i = 0, lcount = mListeners.Count(); i < lcount; i++) {
     nsITransactionListener* listener = mListeners[i];
     NS_ENSURE_TRUE(listener, NS_ERROR_FAILURE);
 
     nsresult rv = listener->WillEndBatch(this, aInterrupt);
     if (NS_FAILED(rv) || *aInterrupt) {
       return rv;
     }
   }
   return NS_OK;
 }
 
 nsresult
-nsTransactionManager::DidEndBatchNotify(nsresult aResult)
+TransactionManager::DidEndBatchNotify(nsresult aResult)
 {
   for (int32_t i = 0, lcount = mListeners.Count(); i < lcount; i++) {
     nsITransactionListener* listener = mListeners[i];
     NS_ENSURE_TRUE(listener, NS_ERROR_FAILURE);
 
     nsresult rv = listener->DidEndBatch(this, aResult);
     if (NS_FAILED(rv)) {
       return rv;
     }
   }
   return NS_OK;
 }
 
 nsresult
-nsTransactionManager::WillMergeNotify(nsITransaction *aTop, nsITransaction *aTransaction, bool *aInterrupt)
+TransactionManager::WillMergeNotify(nsITransaction* aTop,
+                                    nsITransaction* aTransaction,
+                                    bool* aInterrupt)
 {
   for (int32_t i = 0, lcount = mListeners.Count(); i < lcount; i++) {
     nsITransactionListener* listener = mListeners[i];
     NS_ENSURE_TRUE(listener, NS_ERROR_FAILURE);
 
     nsresult rv = listener->WillMerge(this, aTop, aTransaction, aInterrupt);
     if (NS_FAILED(rv) || *aInterrupt) {
       return rv;
     }
   }
   return NS_OK;
 }
 
 nsresult
-nsTransactionManager::DidMergeNotify(nsITransaction *aTop,
-                                     nsITransaction *aTransaction,
-                                     bool aDidMerge,
-                                     nsresult aMergeResult)
+TransactionManager::DidMergeNotify(nsITransaction* aTop,
+                                   nsITransaction* aTransaction,
+                                   bool aDidMerge,
+                                   nsresult aMergeResult)
 {
   for (int32_t i = 0, lcount = mListeners.Count(); i < lcount; i++) {
     nsITransactionListener* listener = mListeners[i];
     NS_ENSURE_TRUE(listener, NS_ERROR_FAILURE);
 
     nsresult rv =
       listener->DidMerge(this, aTop, aTransaction, aDidMerge, aMergeResult);
     if (NS_FAILED(rv)) {
       return rv;
     }
   }
   return NS_OK;
 }
 
 nsresult
-nsTransactionManager::BeginTransaction(nsITransaction *aTransaction,
-                                       nsISupports *aData)
+TransactionManager::BeginTransaction(nsITransaction* aTransaction,
+                                     nsISupports* aData)
 {
   // XXX: POSSIBLE OPTIMIZATION
   //      We could use a factory that pre-allocates/recycles transaction items.
   RefPtr<nsTransactionItem> tx = new nsTransactionItem(aTransaction);
   if (!tx) {
     return NS_ERROR_OUT_OF_MEMORY;
   }
 
@@ -640,17 +647,17 @@ nsTransactionManager::BeginTransaction(n
   if (NS_FAILED(rv)) {
     tx = mDoStack.Pop();
     return rv;
   }
   return NS_OK;
 }
 
 nsresult
-nsTransactionManager::EndTransaction(bool aAllowEmpty)
+TransactionManager::EndTransaction(bool aAllowEmpty)
 {
   RefPtr<nsTransactionItem> tx = mDoStack.Pop();
   if (!tx) {
     return NS_ERROR_FAILURE;
   }
 
   nsCOMPtr<nsITransaction> tint = tx->GetTransaction();
   if (!tint && !aAllowEmpty) {
@@ -723,8 +730,10 @@ nsTransactionManager::EndTransaction(boo
   if (mMaxTransactionCount > 0 && sz >= mMaxTransactionCount) {
     RefPtr<nsTransactionItem> overflow = mUndoStack.PopBottom();
   }
 
   // Push the transaction on the undo stack:
   mUndoStack.Push(tx.forget());
   return NS_OK;
 }
+
+} // namespace mozilla
rename from editor/txmgr/nsTransactionManager.h
rename to editor/txmgr/TransactionManager.h
--- a/editor/txmgr/nsTransactionManager.h
+++ b/editor/txmgr/TransactionManager.h
@@ -1,83 +1,73 @@
 /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
-#ifndef nsTransactionManager_h__
-#define nsTransactionManager_h__
+#ifndef mozilla_TransactionManager_h
+#define mozilla_TransactionManager_h
 
 #include "nsCOMArray.h"
 #include "nsCOMPtr.h"
 #include "nsCycleCollectionParticipant.h"
 #include "nsTransactionStack.h"
 #include "nsISupportsImpl.h"
 #include "nsITransactionManager.h"
 #include "nsTransactionStack.h"
 #include "nsWeakReference.h"
 #include "nscore.h"
 
 class nsITransaction;
 class nsITransactionListener;
 
-/** implementation of a transaction manager object.
- *
- */
-class nsTransactionManager final : public nsITransactionManager
-                                 , public nsSupportsWeakReference
+namespace mozilla {
+
+class TransactionManager final : public nsITransactionManager
+                               , public nsSupportsWeakReference
 {
+public:
+  explicit TransactionManager(int32_t aMaxTransactionCount = -1);
+
+  NS_DECL_CYCLE_COLLECTING_ISUPPORTS
+  NS_DECL_CYCLE_COLLECTION_CLASS_AMBIGUOUS(TransactionManager,
+                                           nsITransactionManager)
+
+  NS_DECL_NSITRANSACTIONMANAGER
+
+  already_AddRefed<nsITransaction> PeekUndoStack();
+  already_AddRefed<nsITransaction> PeekRedoStack();
+
+  nsresult WillDoNotify(nsITransaction* aTransaction, bool* aInterrupt);
+  nsresult DidDoNotify(nsITransaction* aTransaction, nsresult aExecuteResult);
+  nsresult WillUndoNotify(nsITransaction* aTransaction, bool* aInterrupt);
+  nsresult DidUndoNotify(nsITransaction* aTransaction, nsresult aUndoResult);
+  nsresult WillRedoNotify(nsITransaction* aTransaction, bool *aInterrupt);
+  nsresult DidRedoNotify(nsITransaction* aTransaction, nsresult aRedoResult);
+  nsresult WillBeginBatchNotify(bool* aInterrupt);
+  nsresult DidBeginBatchNotify(nsresult aResult);
+  nsresult WillEndBatchNotify(bool* aInterrupt);
+  nsresult DidEndBatchNotify(nsresult aResult);
+  nsresult WillMergeNotify(nsITransaction* aTop,
+                           nsITransaction* aTransaction,
+                           bool* aInterrupt);
+  nsresult DidMergeNotify(nsITransaction* aTop,
+                          nsITransaction* aTransaction,
+                          bool aDidMerge,
+                          nsresult aMergeResult);
+
 private:
+  virtual ~TransactionManager() = default;
+
+  nsresult BeginTransaction(nsITransaction* aTransaction,
+                            nsISupports* aData);
+  nsresult EndTransaction(bool aAllowEmpty);
 
   int32_t                mMaxTransactionCount;
   nsTransactionStack     mDoStack;
   nsTransactionStack     mUndoStack;
   nsTransactionStack     mRedoStack;
   nsCOMArray<nsITransactionListener> mListeners;
-
-  /** The default destructor.
-   */
-  virtual ~nsTransactionManager();
-
-public:
-
-  /** The default constructor.
-   */
-  explicit nsTransactionManager(int32_t aMaxTransactionCount=-1);
-
-  /* Macro for AddRef(), Release(), and QueryInterface() */
-  NS_DECL_CYCLE_COLLECTING_ISUPPORTS
-  NS_DECL_CYCLE_COLLECTION_CLASS_AMBIGUOUS(nsTransactionManager,
-                                           nsITransactionManager)
-
-  /* nsITransactionManager method implementations. */
-  NS_DECL_NSITRANSACTIONMANAGER
-
-  already_AddRefed<nsITransaction> PeekUndoStack();
-  already_AddRefed<nsITransaction> PeekRedoStack();
-
-  virtual nsresult WillDoNotify(nsITransaction *aTransaction, bool *aInterrupt);
-  virtual nsresult DidDoNotify(nsITransaction *aTransaction, nsresult aExecuteResult);
-  virtual nsresult WillUndoNotify(nsITransaction *aTransaction, bool *aInterrupt);
-  virtual nsresult DidUndoNotify(nsITransaction *aTransaction, nsresult aUndoResult);
-  virtual nsresult WillRedoNotify(nsITransaction *aTransaction, bool *aInterrupt);
-  virtual nsresult DidRedoNotify(nsITransaction *aTransaction, nsresult aRedoResult);
-  virtual nsresult WillBeginBatchNotify(bool *aInterrupt);
-  virtual nsresult DidBeginBatchNotify(nsresult aResult);
-  virtual nsresult WillEndBatchNotify(bool *aInterrupt);
-  virtual nsresult DidEndBatchNotify(nsresult aResult);
-  virtual nsresult WillMergeNotify(nsITransaction *aTop,
-                                   nsITransaction *aTransaction,
-                                   bool *aInterrupt);
-  virtual nsresult DidMergeNotify(nsITransaction *aTop,
-                                  nsITransaction *aTransaction,
-                                  bool aDidMerge,
-                                  nsresult aMergeResult);
-
-private:
-
-  /* nsTransactionManager specific private methods. */
-  virtual nsresult BeginTransaction(nsITransaction *aTransaction,
-                                    nsISupports *aData);
-  virtual nsresult EndTransaction(bool aAllowEmpty);
 };
 
-#endif // nsTransactionManager_h__
+} // namespace mozilla
+
+#endif // #ifndef mozilla_TransactionManager_h
rename from editor/txmgr/nsTransactionManagerFactory.cpp
rename to editor/txmgr/TransactionManagerFactory.cpp
--- a/editor/txmgr/nsTransactionManagerFactory.cpp
+++ b/editor/txmgr/TransactionManagerFactory.cpp
@@ -2,37 +2,40 @@
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 #include <stddef.h>
 
 #include "mozilla/Module.h"
 #include "mozilla/ModuleUtils.h"
+#include "mozilla/TransactionManager.h"
 #include "nsID.h"
 #include "nsITransactionManager.h"
-#include "nsTransactionManager.h"
-#include "nsTransactionManagerCID.h"
+
+using mozilla::TransactionManager;
 
 ////////////////////////////////////////////////////////////////////////
 // Define the contructor function for the objects
 //
 // NOTE: This creates an instance of objects by using the default constructor
 //
-NS_GENERIC_FACTORY_CONSTRUCTOR(nsTransactionManager)
+NS_GENERIC_FACTORY_CONSTRUCTOR(TransactionManager)
 NS_DEFINE_NAMED_CID(NS_TRANSACTIONMANAGER_CID);
 
 static const mozilla::Module::CIDEntry kTxMgrCIDs[] = {
-    { &kNS_TRANSACTIONMANAGER_CID, false, nullptr, nsTransactionManagerConstructor },
-    { nullptr }
+  { &kNS_TRANSACTIONMANAGER_CID, false, nullptr,
+    TransactionManagerConstructor },
+  { nullptr }
 };
 
 static const mozilla::Module::ContractIDEntry kTxMgrContracts[] = {
-    { NS_TRANSACTIONMANAGER_CONTRACTID, &kNS_TRANSACTIONMANAGER_CID },
-    { nullptr }
+  { NS_TRANSACTIONMANAGER_CONTRACTID, &kNS_TRANSACTIONMANAGER_CID },
+  { nullptr }
 };
 
 static const mozilla::Module kTxMgrModule = {
-    mozilla::Module::kVersion,
-    kTxMgrCIDs,
-    kTxMgrContracts
+  mozilla::Module::kVersion,
+  kTxMgrCIDs,
+  kTxMgrContracts
 };
+
 NSMODULE_DEFN(nsTransactionManagerModule) = &kTxMgrModule;
--- a/editor/txmgr/moz.build
+++ b/editor/txmgr/moz.build
@@ -13,16 +13,20 @@ XPIDL_SOURCES += [
 ]
 
 XPIDL_MODULE = 'txmgr'
 
 EXPORTS += [
     'nsTransactionManagerCID.h',
 ]
 
+EXPORTS.mozilla += [
+    'TransactionManager.h',
+]
+
 UNIFIED_SOURCES += [
     'nsTransactionItem.cpp',
-    'nsTransactionManager.cpp',
-    'nsTransactionManagerFactory.cpp',
     'nsTransactionStack.cpp',
+    'TransactionManager.cpp',
+    'TransactionManagerFactory.cpp',
 ]
 
 FINAL_LIBRARY = 'xul'
--- a/editor/txmgr/nsITransactionManager.idl
+++ b/editor/txmgr/nsITransactionManager.idl
@@ -2,22 +2,16 @@
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 #include "nsISupports.idl"
 #include "nsITransaction.idl"
 #include "nsITransactionListener.idl"
 
-%{ C++
-
-#define NS_TRANSACTIONMANAGER_CONTRACTID "@mozilla.org/transactionmanager;1"
-
-%} C++
-
 /**
  * The nsITransactionManager interface.
  * <P>
  * This interface is implemented by an object that wants to
  * manage/track transactions.
  */
 [scriptable, builtinclass, uuid(c77763df-0fb9-41a8-8074-8e882f605755)]
 interface nsITransactionManager : nsISupports
@@ -146,8 +140,18 @@ interface nsITransactionManager : nsISup
    * Removes a listener from the transaction manager's notification list.
    * <P>
    * The listener's Release() method is called.
    * @param aListener the lister to remove.
    */
   void RemoveListener(in nsITransactionListener aListener);
 };
 
+%{ C++
+
+#define NS_TRANSACTIONMANAGER_CONTRACTID "@mozilla.org/transactionmanager;1"
+
+// 9C8F9601-801A-11d2-98BA-00805F297D89
+#define NS_TRANSACTIONMANAGER_CID                   \
+{ 0x9c8f9601, 0x801a, 0x11d2,                       \
+  { 0x98, 0xba, 0x0, 0x80, 0x5f, 0x29, 0x7d, 0x89 } }
+
+%} C++
--- a/editor/txmgr/nsTransactionItem.cpp
+++ b/editor/txmgr/nsTransactionItem.cpp
@@ -1,23 +1,26 @@
 /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
+#include "nsTransactionItem.h"
+
 #include "mozilla/mozalloc.h"
+#include "mozilla/TransactionManager.h"
 #include "nsCOMPtr.h"
 #include "nsDebug.h"
 #include "nsError.h"
 #include "nsISupportsImpl.h"
 #include "nsITransaction.h"
-#include "nsTransactionItem.h"
-#include "nsTransactionManager.h"
 #include "nsTransactionStack.h"
 
+using namespace mozilla;
+
 nsTransactionItem::nsTransactionItem(nsITransaction *aTransaction)
     : mTransaction(aTransaction), mUndoStack(0), mRedoStack(0)
 {
 }
 
 nsTransactionItem::~nsTransactionItem()
 {
   delete mRedoStack;
@@ -154,39 +157,39 @@ nsTransactionItem::DoTransaction()
 {
   if (mTransaction) {
     return mTransaction->DoTransaction();
   }
   return NS_OK;
 }
 
 nsresult
-nsTransactionItem::UndoTransaction(nsTransactionManager *aTxMgr)
+nsTransactionItem::UndoTransaction(TransactionManager* aTransactionManager)
 {
-  nsresult rv = UndoChildren(aTxMgr);
+  nsresult rv = UndoChildren(aTransactionManager);
   if (NS_FAILED(rv)) {
-    RecoverFromUndoError(aTxMgr);
+    RecoverFromUndoError(aTransactionManager);
     return rv;
   }
 
   if (!mTransaction) {
     return NS_OK;
   }
 
   rv = mTransaction->UndoTransaction();
   if (NS_FAILED(rv)) {
-    RecoverFromUndoError(aTxMgr);
+    RecoverFromUndoError(aTransactionManager);
     return rv;
   }
 
   return NS_OK;
 }
 
 nsresult
-nsTransactionItem::UndoChildren(nsTransactionManager *aTxMgr)
+nsTransactionItem::UndoChildren(TransactionManager* aTransactionManager)
 {
   if (mUndoStack) {
     if (!mRedoStack && mUndoStack) {
       mRedoStack = new nsTransactionStack(nsTransactionStack::FOR_REDO);
     }
 
     /* Undo all of the transaction items children! */
     int32_t sz = mUndoStack->GetSize();
@@ -195,64 +198,64 @@ nsTransactionItem::UndoChildren(nsTransa
     while (sz-- > 0) {
       RefPtr<nsTransactionItem> item = mUndoStack->Peek();
       if (!item) {
         return NS_ERROR_FAILURE;
       }
 
       nsCOMPtr<nsITransaction> t = item->GetTransaction();
       bool doInterrupt = false;
-      rv = aTxMgr->WillUndoNotify(t, &doInterrupt);
+      rv = aTransactionManager->WillUndoNotify(t, &doInterrupt);
       if (NS_FAILED(rv)) {
         return rv;
       }
       if (doInterrupt) {
         return NS_OK;
       }
 
-      rv = item->UndoTransaction(aTxMgr);
+      rv = item->UndoTransaction(aTransactionManager);
       if (NS_SUCCEEDED(rv)) {
         item = mUndoStack->Pop();
         mRedoStack->Push(item.forget());
       }
 
-      nsresult rv2 = aTxMgr->DidUndoNotify(t, rv);
+      nsresult rv2 = aTransactionManager->DidUndoNotify(t, rv);
       if (NS_SUCCEEDED(rv)) {
         rv = rv2;
       }
     }
     // XXX NS_OK if there is no Undo items or all methods work fine, otherwise,
     //     the result of the last item's UndoTransaction() or
     //     DidUndoNotify() if UndoTransaction() succeeded.
     return rv;
   }
 
   return NS_OK;
 }
 
 nsresult
-nsTransactionItem::RedoTransaction(nsTransactionManager *aTxMgr)
+nsTransactionItem::RedoTransaction(TransactionManager* aTransactionManager)
 {
   nsCOMPtr<nsITransaction> transaction(mTransaction);
   if (transaction) {
     nsresult rv = transaction->RedoTransaction();
     NS_ENSURE_SUCCESS(rv, rv);
   }
 
-  nsresult rv = RedoChildren(aTxMgr);
+  nsresult rv = RedoChildren(aTransactionManager);
   if (NS_FAILED(rv)) {
-    RecoverFromRedoError(aTxMgr);
+    RecoverFromRedoError(aTransactionManager);
     return rv;
   }
 
   return NS_OK;
 }
 
 nsresult
-nsTransactionItem::RedoChildren(nsTransactionManager *aTxMgr)
+nsTransactionItem::RedoChildren(TransactionManager* aTransactionManager)
 {
   if (!mRedoStack) {
     return NS_OK;
   }
 
   /* Redo all of the transaction items children! */
   int32_t sz = mRedoStack->GetSize();
 
@@ -260,32 +263,32 @@ nsTransactionItem::RedoChildren(nsTransa
   while (sz-- > 0) {
     RefPtr<nsTransactionItem> item = mRedoStack->Peek();
     if (!item) {
       return NS_ERROR_FAILURE;
     }
 
     nsCOMPtr<nsITransaction> t = item->GetTransaction();
     bool doInterrupt = false;
-    rv = aTxMgr->WillRedoNotify(t, &doInterrupt);
+    rv = aTransactionManager->WillRedoNotify(t, &doInterrupt);
     if (NS_FAILED(rv)) {
       return rv;
     }
     if (doInterrupt) {
       return NS_OK;
     }
 
-    rv = item->RedoTransaction(aTxMgr);
+    rv = item->RedoTransaction(aTransactionManager);
     if (NS_SUCCEEDED(rv)) {
       item = mRedoStack->Pop();
       mUndoStack->Push(item.forget());
     }
 
     // XXX Shouldn't this DidRedoNotify()? (bug 1311626)
-    nsresult rv2 = aTxMgr->DidUndoNotify(t, rv);
+    nsresult rv2 = aTransactionManager->DidUndoNotify(t, rv);
     if (NS_SUCCEEDED(rv)) {
       rv = rv2;
     }
   }
   // XXX NS_OK if there is no Redo items or all methods work fine, otherwise,
   //     the result of the last item's RedoTransaction() or
   //     DidUndoNotify() if UndoTransaction() succeeded.
   return rv;
@@ -315,32 +318,32 @@ nsTransactionItem::GetNumberOfRedoItems(
     return NS_OK;
   }
 
   *aNumItems = mRedoStack->GetSize();
   return *aNumItems ? NS_OK : NS_ERROR_FAILURE;
 }
 
 nsresult
-nsTransactionItem::RecoverFromUndoError(nsTransactionManager *aTxMgr)
+nsTransactionItem::RecoverFromUndoError(TransactionManager* aTransactionManager)
 {
   // If this method gets called, we never got to the point where we
   // successfully called UndoTransaction() for the transaction item itself.
   // Just redo any children that successfully called undo!
-  return RedoChildren(aTxMgr);
+  return RedoChildren(aTransactionManager);
 }
 
 nsresult
-nsTransactionItem::RecoverFromRedoError(nsTransactionManager *aTxMgr)
+nsTransactionItem::RecoverFromRedoError(TransactionManager* aTransactionManager)
 {
   // If this method gets called, we already successfully called
   // RedoTransaction() for the transaction item itself. Undo all
   // the children that successfully called RedoTransaction(),
   // then undo the transaction item itself.
-  nsresult rv = UndoChildren(aTxMgr);
+  nsresult rv = UndoChildren(aTransactionManager);
   if (NS_FAILED(rv)) {
     return rv;
   }
 
   if (!mTransaction) {
     return NS_OK;
   }
 
--- a/editor/txmgr/nsTransactionItem.h
+++ b/editor/txmgr/nsTransactionItem.h
@@ -8,61 +8,65 @@
 
 #include "nsCOMPtr.h"
 #include "nsCOMArray.h"
 #include "nsCycleCollectionParticipant.h"
 #include "nsISupportsImpl.h"
 #include "nscore.h"
 
 class nsITransaction;
-class nsTransactionManager;
 class nsTransactionStack;
 
+namespace mozilla {
+class TransactionManager;
+} // namespace mozilla
+
 class nsTransactionItem final
 {
   nsCOMArray<nsISupports>  mData;
   nsCOMPtr<nsITransaction> mTransaction;
   nsTransactionStack      *mUndoStack;
   nsTransactionStack      *mRedoStack;
 
 public:
-
-  explicit nsTransactionItem(nsITransaction *aTransaction);
+  explicit nsTransactionItem(nsITransaction* aTransaction);
   NS_METHOD_(MozExternalRefCountType) AddRef();
   NS_METHOD_(MozExternalRefCountType) Release();
 
   NS_DECL_CYCLE_COLLECTION_NATIVE_CLASS(nsTransactionItem)
 
-  virtual nsresult AddChild(nsTransactionItem *aTransactionItem);
+  nsresult AddChild(nsTransactionItem* aTransactionItem);
   already_AddRefed<nsITransaction> GetTransaction();
-  virtual nsresult GetIsBatch(bool *aIsBatch);
-  virtual nsresult GetNumberOfChildren(int32_t *aNumChildren);
-  virtual nsresult GetChild(int32_t aIndex, nsTransactionItem **aChild);
+  nsresult GetIsBatch(bool *aIsBatch);
+  nsresult GetNumberOfChildren(int32_t *aNumChildren);
+  nsresult GetChild(int32_t aIndex, nsTransactionItem** aChild);
 
-  virtual nsresult DoTransaction(void);
-  virtual nsresult UndoTransaction(nsTransactionManager *aTxMgr);
-  virtual nsresult RedoTransaction(nsTransactionManager *aTxMgr);
+  nsresult DoTransaction();
+  nsresult UndoTransaction(mozilla::TransactionManager* aTransactionManager);
+  nsresult RedoTransaction(mozilla::TransactionManager* aTransactionManager);
 
   nsCOMArray<nsISupports>& GetData()
   {
     return mData;
   }
 
 private:
-
-  virtual nsresult UndoChildren(nsTransactionManager *aTxMgr);
-  virtual nsresult RedoChildren(nsTransactionManager *aTxMgr);
+  nsresult UndoChildren(mozilla::TransactionManager* aTransactionManager);
+  nsresult RedoChildren(mozilla::TransactionManager* aTransactionManager);
 
-  virtual nsresult RecoverFromUndoError(nsTransactionManager *aTxMgr);
-  virtual nsresult RecoverFromRedoError(nsTransactionManager *aTxMgr);
+  nsresult
+  RecoverFromUndoError(mozilla::TransactionManager* aTransactionManager);
+  nsresult
+  RecoverFromRedoError(mozilla::TransactionManager* aTransactionManager);
 
-  virtual nsresult GetNumberOfUndoItems(int32_t *aNumItems);
-  virtual nsresult GetNumberOfRedoItems(int32_t *aNumItems);
+  nsresult GetNumberOfUndoItems(int32_t* aNumItems);
+  nsresult GetNumberOfRedoItems(int32_t* aNumItems);
 
   void CleanUp();
+
 protected:
-  virtual ~nsTransactionItem();
+  ~nsTransactionItem();
 
   nsCycleCollectingAutoRefCnt mRefCnt;
   NS_DECL_OWNINGTHREAD
 };
 
 #endif // nsTransactionItem_h__
--- a/editor/txmgr/nsTransactionManagerCID.h
+++ b/editor/txmgr/nsTransactionManagerCID.h
@@ -1,14 +1,9 @@
 /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
-#ifndef nsTransactionManagerCID_h__
-#define nsTransactionManagerCID_h__
+// XXX Needs to modify mailnews/base/src/nsMsgWindow.cpp before removing this
+//     header file.
+#include "nsITransactionManager.h"
 
-#define NS_TRANSACTIONMANAGER_CID                   \
-{ /* 9C8F9601-801A-11d2-98BA-00805F297D89 */        \
-0x9c8f9601, 0x801a, 0x11d2,                         \
-{ 0x98, 0xba, 0x0, 0x80, 0x5f, 0x29, 0x7d, 0x89 } }
-
-#endif /* nsTransactionManagerCID_h__ */