/* 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 nsIDOMNode; interface nsIDOMNodeFilter; // Note: the iterator does not handle DOM mutations gracefully. So if // the underlying DOM we are iterating over is changed, the behavior // of the walker is undefined. (With the current implementation we // cache the siblings of the current node and this list is not updated // when a mutation occurs). [scriptable, uuid(6657e8eb-b646-48e7-993e-cfa6e96415b4)] interface inIDeepTreeWalker : nsISupports { attribute boolean showAnonymousContent; attribute boolean showSubDocuments; // By default the walker skips document nodes from the iteration, // by setting this flag to true this behavior can be altered. attribute boolean showDocumentsAsNodes; void init(in nsIDOMNode aRoot, in unsigned long aWhatToShow); // Methods and attributes from nsIDOMTreeWalker, which is not scriptable. // Note: normally parentNode cannot go further up on the tree once it reached // the root, but setting currentNode does not have this limitation. If currentNode // is set to a node that does not have the root as its ancestor the walk can be // continued from there, and once we reach a node that is 'under' the root, the // limitation for the parentNode will work again. readonly attribute nsIDOMNode root; readonly attribute unsigned long whatToShow; readonly attribute nsIDOMNodeFilter filter; attribute nsIDOMNode currentNode; nsIDOMNode parentNode(); nsIDOMNode firstChild(); nsIDOMNode lastChild(); nsIDOMNode previousSibling(); nsIDOMNode nextSibling(); nsIDOMNode previousNode(); nsIDOMNode nextNode(); };