tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

EditTransactionBase.h (3588B)


      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 #ifndef mozilla_EditTransactionBase_h
      7 #define mozilla_EditTransactionBase_h
      8 
      9 #include "mozilla/EditorForwards.h"
     10 
     11 #include "nsCycleCollectionParticipant.h"
     12 #include "nsISupportsImpl.h"
     13 #include "nsITransaction.h"
     14 #include "nscore.h"
     15 
     16 already_AddRefed<mozilla::EditTransactionBase>
     17 nsITransaction::GetAsEditTransactionBase() {
     18  RefPtr<mozilla::EditTransactionBase> editTransactionBase;
     19  return NS_SUCCEEDED(
     20             GetAsEditTransactionBase(getter_AddRefs(editTransactionBase)))
     21             ? editTransactionBase.forget()
     22             : nullptr;
     23 }
     24 
     25 namespace mozilla {
     26 class LogModule;
     27 
     28 #define NS_DECL_GETASTRANSACTION_BASE(aClass) \
     29  virtual aClass* GetAs##aClass();            \
     30  virtual const aClass* GetAs##aClass() const;
     31 
     32 /**
     33 * Base class for all document editing transactions.
     34 */
     35 class EditTransactionBase : public nsITransaction {
     36 public:
     37  NS_DECL_CYCLE_COLLECTING_ISUPPORTS
     38  NS_DECL_CYCLE_COLLECTION_CLASS_AMBIGUOUS(EditTransactionBase, nsITransaction)
     39 
     40  MOZ_CAN_RUN_SCRIPT NS_IMETHOD RedoTransaction(void) override;
     41  NS_IMETHOD GetIsTransient(bool* aIsTransient) override;
     42  NS_IMETHOD Merge(nsITransaction* aTransaction, bool* aDidMerge) override;
     43  NS_IMETHOD GetAsEditTransactionBase(
     44      EditTransactionBase** aEditTransactionBase) final {
     45    MOZ_ASSERT(aEditTransactionBase);
     46    MOZ_ASSERT(!*aEditTransactionBase);
     47    *aEditTransactionBase = do_AddRef(this).take();
     48    return NS_OK;
     49  }
     50 
     51  NS_DECL_GETASTRANSACTION_BASE(ChangeAttributeTransaction)
     52  NS_DECL_GETASTRANSACTION_BASE(ChangeStyleTransaction)
     53  NS_DECL_GETASTRANSACTION_BASE(CompositionTransaction)
     54  NS_DECL_GETASTRANSACTION_BASE(DeleteContentTransactionBase)
     55  NS_DECL_GETASTRANSACTION_BASE(DeleteMultipleRangesTransaction)
     56  NS_DECL_GETASTRANSACTION_BASE(DeleteNodeTransaction)
     57  NS_DECL_GETASTRANSACTION_BASE(DeleteRangeTransaction)
     58  NS_DECL_GETASTRANSACTION_BASE(DeleteTextTransaction)
     59  NS_DECL_GETASTRANSACTION_BASE(EditAggregateTransaction)
     60  NS_DECL_GETASTRANSACTION_BASE(InsertNodeTransaction)
     61  NS_DECL_GETASTRANSACTION_BASE(InsertTextTransaction)
     62  NS_DECL_GETASTRANSACTION_BASE(JoinNodesTransaction)
     63  NS_DECL_GETASTRANSACTION_BASE(MoveNodeTransaction)
     64  NS_DECL_GETASTRANSACTION_BASE(MoveNodeTransactionBase)
     65  NS_DECL_GETASTRANSACTION_BASE(MoveSiblingsTransaction)
     66  NS_DECL_GETASTRANSACTION_BASE(PlaceholderTransaction)
     67  NS_DECL_GETASTRANSACTION_BASE(ReplaceTextTransaction)
     68  NS_DECL_GETASTRANSACTION_BASE(SplitNodeTransaction)
     69 
     70 protected:
     71  virtual ~EditTransactionBase() = default;
     72 
     73  NS_DECL_GETASTRANSACTION_BASE(CompositionInTextNodeTransaction)
     74  NS_DECL_GETASTRANSACTION_BASE(DeleteTextFromTextNodeTransaction)
     75  NS_DECL_GETASTRANSACTION_BASE(InsertTextIntoTextNodeTransaction)
     76  NS_DECL_GETASTRANSACTION_BASE(ReplaceTextInTextNodeTransaction)
     77 
     78  static LogModule* GetLogModule();
     79 };
     80 
     81 #undef NS_DECL_GETASTRANSACTION_BASE
     82 
     83 }  // namespace mozilla
     84 
     85 #define NS_DECL_EDITTRANSACTIONBASE                       \
     86  MOZ_CAN_RUN_SCRIPT NS_IMETHOD DoTransaction() override; \
     87  MOZ_CAN_RUN_SCRIPT NS_IMETHOD UndoTransaction() override;
     88 
     89 #define NS_DECL_EDITTRANSACTIONBASE_GETASMETHODS_OVERRIDE(aClass) \
     90  aClass* GetAs##aClass() final { return this; }                  \
     91  const aClass* GetAs##aClass() const final { return this; }
     92 
     93 #endif  // #ifndef mozilla_EditTransactionBase_h