editor/txmgr/idl/nsITransactionList.idl
author Wes Kocher <wkocher@mozilla.com>
Tue, 24 Jun 2014 18:32:55 -0700
changeset 211405 71f6b8a9b2e8cb698a495eb29d7611cb030073a9
parent 211395 editor/txmgr/nsITransactionList.idl@62ad3254903e92e3814652dac400f00956b0a347
child 211437 645ad2c2411421798c8e815bcd74aa8092aa066f
permissions -rw-r--r--
Backed out 6 changesets (bug 1028559, bug 1028565) for android mochitest bustage on a CLOSED TREE Backed out changeset fdd74c065e5d (bug 1028565) Backed out changeset 5e9777d38052 (bug 1028565) Backed out changeset 3510bcdba3fc (bug 1028565) Backed out changeset 62ad3254903e (bug 1028565) Backed out changeset e7557f70acfe (bug 1028565) Backed out changeset 5b1b527abe47 (bug 1028559)

/* -*- 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 "nsISupports.idl"

interface nsITransaction;

/*
 * The nsITransactionList interface.
 * <P>
 * The implementation for this interface is provided by the Transaction Manager.
 * This interface provides a mechanism for accessing the transactions on the
 * Undo or Redo stacks as well as any auto-aggregated children that a
 * transaction may have.
 */
[scriptable, uuid(d007ceff-c978-486a-b697-384ca01997be)]

interface nsITransactionList : nsISupports
{
  /**
   * The number of transactions contained in this list.
   */
  readonly attribute long numItems;

  /**
   * itemIsBatch() returns true if the item at aIndex is a batch. Note that
   * currently there is no requirement for a TransactionManager implementation
   * to associate a toplevel nsITransaction with a batch so it is possible for
   * itemIsBatch() to return true and getItem() to return null. However, you
   * can still access the transactions contained in the batch with a call to
   * getChildListForItem().
   * @param aIndex The index of the item in the list.
   */
  boolean itemIsBatch(in long aIndex);

  /**
   * getItem() returns the transaction at the given index in the list. Note that
   * a null can be returned here if the item is a batch. The transaction
   * returned is AddRef'd so it is up to the caller to Release the transaction
   * when it is done.
   * @param aIndex The index of the item in the list.
   */
  nsITransaction getItem(in long aIndex);

  /**
   * getData() returns the data (of type nsISupports array) associated with
   * the transaction list.
   */
  void getData(in long aIndex, [optional] out unsigned long aLength,
               [array, size_is(aLength), retval] out nsISupports aData);

  /**
   * getNumChildrenForItem() returns the number of child (auto-aggreated)
   * transactions the item at aIndex has.
   * @param aIndex The index of the item in the list.
   */
  long getNumChildrenForItem(in long aIndex);

  /**
   * getChildListForItem() returns the list of children associated with the
   * item at aIndex. Implementations may return null if there are no children,
   * or an empty list. The list returned is AddRef'd so it is up to the caller
   * to Release the transaction when it is done.
   * @param aIndex The index of the item in the list.
   */
  nsITransactionList getChildListForItem(in long aIndex);
};