editor/nsIEditActionListener.idl
author Mike Hommey <mh+mozilla@glandium.org>
Wed, 01 Jun 2016 07:22:49 +0900
changeset 340685 1d2c46c8c7c764daf8638663524033dfe330cf0a
parent 276937 f2a922fd623e11743f1f2d5379799dab857e4893
child 441869 57ed7f0422124ea09e45dd8df7c14d4a0bc689f6
permissions -rw-r--r--
Bug 1244446 - Run automation build steps before postflight_all. r=gps,r=ted Killing the sccache background daemon is part of postflight_all, but in the current setup, postflight_all happens at the end of a "normal" build, but we run automation build steps after that. What happens then is that more compilations happen (gtests), which start sccache again, but there's nothing to kill sccache again once this is all done. Now that the OSX universal builds postflight is gone, it is not necessary for postflight_all to happen before the automation build steps. So ensure postflight_all scripts happen last. The downside of this change is that this now prevents sccache.log from being uploaded, but we should probably send processed data to the graph server instead.

/* -*- 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"
#include "domstubs.idl"

interface nsISelection;


/*
Editor Action Listener interface to outside world
*/


/**
 * A generic editor action listener interface.
 * <P>
 * nsIEditActionListener is the interface used by applications wishing to be notified
 * when the editor modifies the DOM tree.
 *
 * Note:  this is the wrong class to implement if you are interested in generic
 * change notifications.  For generic notifications, you should implement
 * nsIDocumentObserver.
 */
[scriptable, uuid(b22907b1-ee93-11d2-8d50-000064657374)]

interface nsIEditActionListener : nsISupports{

  /**
   * Called before the editor creates a node.
   * @param aTag      The tag name of the DOM Node to create.
   * @param aParent   The node to insert the new object into
   * @param aPosition The place in aParent to insert the new node
   *                  0=first child, 1=second child, etc.
   *                  any number > number of current children = last child
   */
  void WillCreateNode(in DOMString aTag,
                            in nsIDOMNode   aParent,
                            in long aPosition);

  /**
   * Called after the editor creates a node.
   * @param aTag      The tag name of the DOM Node to create.
   * @param aNode     The DOM Node that was created.
   * @param aParent   The node to insert the new object into
   * @param aPosition The place in aParent to insert the new node
   *                  0=first child, 1=second child, etc.
   *                  any number > number of current children = last child
   * @param aResult   The result of the create node operation.
   */
  void DidCreateNode(in DOMString aTag,
                           in nsIDOMNode aNode,
                           in nsIDOMNode aParent,
                           in long          aPosition,
                           in nsresult      aResult);

  /**
   * Called before the editor inserts a node.
   * @param aNode     The DOM Node to insert.
   * @param aParent   The node to insert the new object into
   * @param aPosition The place in aParent to insert the new node
   *                  0=first child, 1=second child, etc.
   *                  any number > number of current children = last child
   */
  void WillInsertNode(in nsIDOMNode aNode,
                            in nsIDOMNode aParent,
                            in long      aPosition);

  /**
   * Called after the editor inserts a node.
   * @param aNode     The DOM Node to insert.
   * @param aParent   The node to insert the new object into
   * @param aPosition The place in aParent to insert the new node
   *                  0=first child, 1=second child, etc.
   *                  any number > number of current children = last child
   * @param aResult   The result of the insert node operation.
   */
  void DidInsertNode(in nsIDOMNode aNode,
                           in nsIDOMNode aParent,
                           in long      aPosition,
                           in nsresult    aResult);

  /**
   * Called before the editor deletes a node.
   * @param aChild    The node to delete
   */
  void WillDeleteNode(in nsIDOMNode aChild);

  /**
   * Called after the editor deletes a node.
   * @param aChild    The node to delete
   * @param aResult   The result of the delete node operation.
   */
  void DidDeleteNode(in nsIDOMNode aChild, in nsresult aResult);

  /**
   * Called before the editor splits a node.
   * @param aExistingRightNode   the node to split.  It will become the new node's next sibling.
   * @param aOffset              the offset of aExistingRightNode's content|children to do the split at
   * @param aNewLeftNode         [OUT] the new node resulting from the split, becomes aExistingRightNode's previous sibling.
   */
  void WillSplitNode(in nsIDOMNode aExistingRightNode,
                           in long      aOffset);

  /**
   * Called after the editor splits a node.
   * @param aExistingRightNode   the node to split.  It will become the new node's next sibling.
   * @param aOffset              the offset of aExistingRightNode's content|children to do the split at
   * @param aNewLeftNode         [OUT] the new node resulting from the split, becomes aExistingRightNode's previous sibling.
   */
  void DidSplitNode(in nsIDOMNode aExistingRightNode,
                          in long      aOffset,
                          in nsIDOMNode aNewLeftNode,
                          in nsresult    aResult);

  /**
   * Called before the editor joins 2 nodes.
   * @param aLeftNode   This node will be merged into the right node
   * @param aRightNode  The node that will be merged into.
   *                    There is no requirement that the two nodes be of
   *                    the same type.
   * @param aParent     The parent of aRightNode
   */
  void WillJoinNodes(in nsIDOMNode aLeftNode,
                           in nsIDOMNode aRightNode,
                           in nsIDOMNode aParent);

  /**
   * Called after the editor joins 2 nodes.
   * @param aLeftNode   This node will be merged into the right node
   * @param aRightNode  The node that will be merged into.
   *                    There is no requirement that the two nodes be of
   *                    the same type.
   * @param aParent     The parent of aRightNode
   * @param aResult     The result of the join operation.
   */
  void DidJoinNodes(in nsIDOMNode aLeftNode,
                          in nsIDOMNode aRightNode,
                          in nsIDOMNode aParent,
                          in nsresult    aResult);

  /**
   * Called before the editor inserts text.
   * @param aTextNode   This node getting inserted text
   * @param aOffset     The offset in aTextNode to insert at.
   * @param aString     The string that gets inserted.
   */
  void WillInsertText(in nsIDOMCharacterData aTextNode,
                            in long          aOffset,
                            in DOMString     aString);

  /**
   * Called after the editor inserts text.
   * @param aTextNode   This node getting inserted text
   * @param aOffset     The offset in aTextNode to insert at.
   * @param aString     The string that gets inserted.
   * @param aResult     The result of the insert text operation.
   */
  void DidInsertText(in nsIDOMCharacterData aTextNode,
                           in long                aOffset,
                           in DOMString           aString,
                           in nsresult            aResult);

  /**
   * Called before the editor deletes text.
   * @param aTextNode   This node getting text deleted
   * @param aOffset     The offset in aTextNode to delete at.
   * @param aLength     The amount of text to delete.
   */
  void WillDeleteText(in nsIDOMCharacterData aTextNode,
                            in long                aOffset,
                            in long                aLength);

  /**
   * Called before the editor deletes text.
   * @param aTextNode   This node getting text deleted
   * @param aOffset     The offset in aTextNode to delete at.
   * @param aLength     The amount of text to delete.
   * @param aResult     The result of the delete text operation.
   */
  void DidDeleteText(in nsIDOMCharacterData aTextNode,
                           in long                aOffset,
                           in long                aLength,
                           in nsresult              aResult);

  /**
   * Called before the editor deletes the selection.
   * @param aSelection   The selection to be deleted
   */
  void WillDeleteSelection(in nsISelection aSelection);

  /**
   * Called after the editor deletes the selection.
   * @param aSelection   The selection, after deletion
   */
  void DidDeleteSelection(in nsISelection aSelection);
};