EditTransactionBase.cpp (4235B)
1 /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ 2 /* This Source Code Form is subject to the terms of the Mozilla Public 3 * License, v. 2.0. If a copy of the MPL was not distributed with this 4 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ 5 6 #include "EditTransactionBase.h" 7 8 #include "mozilla/Logging.h" 9 10 #include "ChangeAttributeTransaction.h" 11 #include "ChangeStyleTransaction.h" 12 #include "CompositionTransaction.h" 13 #include "DeleteContentTransactionBase.h" 14 #include "DeleteMultipleRangesTransaction.h" 15 #include "DeleteNodeTransaction.h" 16 #include "DeleteRangeTransaction.h" 17 #include "DeleteTextTransaction.h" 18 #include "EditAggregateTransaction.h" 19 #include "InsertNodeTransaction.h" 20 #include "InsertTextTransaction.h" 21 #include "JoinNodesTransaction.h" 22 #include "MoveNodeTransaction.h" 23 #include "PlaceholderTransaction.h" 24 #include "ReplaceTextTransaction.h" 25 #include "SplitNodeTransaction.h" 26 27 #include "nsError.h" 28 #include "nsISupports.h" 29 30 namespace mozilla { 31 32 NS_IMPL_CYCLE_COLLECTION_CLASS(EditTransactionBase) 33 34 NS_IMPL_CYCLE_COLLECTION_UNLINK_0(EditTransactionBase) 35 NS_IMPL_CYCLE_COLLECTION_TRAVERSE_BEGIN(EditTransactionBase) 36 // We don't have anything to traverse, but some of our subclasses do. 37 NS_IMPL_CYCLE_COLLECTION_TRAVERSE_END 38 39 NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION(EditTransactionBase) 40 NS_INTERFACE_MAP_ENTRY(nsITransaction) 41 NS_INTERFACE_MAP_ENTRY_AMBIGUOUS(nsISupports, nsITransaction) 42 NS_INTERFACE_MAP_END 43 44 NS_IMPL_CYCLE_COLLECTING_ADDREF(EditTransactionBase) 45 NS_IMPL_CYCLE_COLLECTING_RELEASE(EditTransactionBase) 46 47 NS_IMETHODIMP EditTransactionBase::RedoTransaction() { 48 MOZ_LOG(GetLogModule(), LogLevel::Info, ("%p %s", this, __FUNCTION__)); 49 return DoTransaction(); 50 } 51 52 NS_IMETHODIMP EditTransactionBase::GetIsTransient(bool* aIsTransient) { 53 MOZ_LOG(GetLogModule(), LogLevel::Verbose, 54 ("%p %s returned false", this, __FUNCTION__)); 55 *aIsTransient = false; 56 return NS_OK; 57 } 58 59 NS_IMETHODIMP EditTransactionBase::Merge(nsITransaction* aOtherTransaction, 60 bool* aDidMerge) { 61 MOZ_LOG(GetLogModule(), LogLevel::Info, 62 ("%p %s(aOtherTransaction=%p) returned false", this, __FUNCTION__, 63 aOtherTransaction)); 64 *aDidMerge = false; 65 return NS_OK; 66 } 67 68 // static 69 LogModule* EditTransactionBase::GetLogModule() { 70 static LazyLogModule sLog("EditorTransaction"); 71 return static_cast<LogModule*>(sLog); 72 } 73 74 #define NS_IMPL_EDITTRANSACTIONBASE_GETASMETHODS(aClass) \ 75 aClass* EditTransactionBase::GetAs##aClass() { return nullptr; } \ 76 const aClass* EditTransactionBase::GetAs##aClass() const { return nullptr; } 77 78 NS_IMPL_EDITTRANSACTIONBASE_GETASMETHODS(ChangeAttributeTransaction) 79 NS_IMPL_EDITTRANSACTIONBASE_GETASMETHODS(ChangeStyleTransaction) 80 NS_IMPL_EDITTRANSACTIONBASE_GETASMETHODS(CompositionTransaction) 81 NS_IMPL_EDITTRANSACTIONBASE_GETASMETHODS(DeleteContentTransactionBase) 82 NS_IMPL_EDITTRANSACTIONBASE_GETASMETHODS(DeleteMultipleRangesTransaction) 83 NS_IMPL_EDITTRANSACTIONBASE_GETASMETHODS(DeleteNodeTransaction) 84 NS_IMPL_EDITTRANSACTIONBASE_GETASMETHODS(DeleteRangeTransaction) 85 NS_IMPL_EDITTRANSACTIONBASE_GETASMETHODS(DeleteTextTransaction) 86 NS_IMPL_EDITTRANSACTIONBASE_GETASMETHODS(EditAggregateTransaction) 87 NS_IMPL_EDITTRANSACTIONBASE_GETASMETHODS(InsertNodeTransaction) 88 NS_IMPL_EDITTRANSACTIONBASE_GETASMETHODS(InsertTextTransaction) 89 NS_IMPL_EDITTRANSACTIONBASE_GETASMETHODS(JoinNodesTransaction) 90 NS_IMPL_EDITTRANSACTIONBASE_GETASMETHODS(MoveNodeTransaction) 91 NS_IMPL_EDITTRANSACTIONBASE_GETASMETHODS(MoveNodeTransactionBase) 92 NS_IMPL_EDITTRANSACTIONBASE_GETASMETHODS(MoveSiblingsTransaction) 93 NS_IMPL_EDITTRANSACTIONBASE_GETASMETHODS(PlaceholderTransaction) 94 NS_IMPL_EDITTRANSACTIONBASE_GETASMETHODS(ReplaceTextTransaction) 95 NS_IMPL_EDITTRANSACTIONBASE_GETASMETHODS(SplitNodeTransaction) 96 97 // protected methods 98 NS_IMPL_EDITTRANSACTIONBASE_GETASMETHODS(CompositionInTextNodeTransaction) 99 NS_IMPL_EDITTRANSACTIONBASE_GETASMETHODS(DeleteTextFromTextNodeTransaction) 100 NS_IMPL_EDITTRANSACTIONBASE_GETASMETHODS(InsertTextIntoTextNodeTransaction) 101 NS_IMPL_EDITTRANSACTIONBASE_GETASMETHODS(ReplaceTextInTextNodeTransaction) 102 103 #undef NS_IMPL_EDITTRANSACTIONBASE_GETASMETHODS 104 105 } // namespace mozilla