gecko-dev/dom/base/nsIScriptableContentIterator.idl
Masayuki Nakano f8844f0d9b Bug 181137 - part 7: Get rid of nsIContentIterator interface r=smaug
Now, nobody requires nsIContentIterator interface.  So, we can get rid of it.

Unfortunately, there is no macro to keep the inherited class,
ContentSubtreeIterator, in the cycle collection to make it keep managing
ContentSubtreeIterator::mRange without nsISupports interface.  Therefore, this
patch moves it into ContentIteratorBase temporarily.  Anyway, the following
patch makes those classes not refcountable.  At that time, this issue will be
fixed.

Differential Revision: https://phabricator.services.mozilla.com/D15927

--HG--
extra : moz-landing-system : lando
2019-01-11 01:51:42 +00:00

75 lines
2.3 KiB
Plaintext

/* -*- Mode: IDL; 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"
webidl Node;
webidl Range;
/**
* nsIScriptableContentIterator is designed to testing concrete classes of
* ContentIteratorBase.
*/
[scriptable, builtinclass, uuid(9f25fb2a-265f-44f9-a122-62bbf443239e)]
interface nsIScriptableContentIterator : nsISupports
{
cenum IteratorType : 8 {
NOT_INITIALIZED,
POST_ORDER_ITERATOR,
PRE_ORDER_ITERATOR,
SUBTREE_ITERATOR
};
/**
* You need to call initWith*() first. Then, the instance of this interface
* decides the type of iterator with its aType argument. You can call
* initWith*() multiple times, but you need to keep setting same type as
* previous call. If you set different type, these method with throw an
* exception.
*/
// See ContentIteratorBase::Init(nsINode*)
void initWithRootNode(in nsIScriptableContentIterator_IteratorType aType,
in Node aRoot);
// See ContentIteratorBase::Init(nsRange*)
void initWithRange(in nsIScriptableContentIterator_IteratorType aType,
in Range aRange);
// See ContentIteratorBase::Init(nsINode*, uint32_t, nsINode*, uint32_t)
void initWithPositions(in nsIScriptableContentIterator_IteratorType aType,
in Node aStartContainer, in unsigned long aStartOffset,
in Node aEndContainer, in unsigned long aEndOffset);
// See ContentIteratorBase::First()
void first();
// See ContentIteratorBase::Last()
void last();
// See ContentIteratorBase::Next()
void next();
// See ContentIteratorBase::Prev()
void prev();
// See ContentIteratorBase::GetCurrentNode()
readonly attribute Node currentNode;
// See ContentIteratorBase::IsDone()
readonly attribute bool isDone;
// See ContentIteratorBase::PositionAt(nsINode*)
void positionAt(in Node aNode);
};
%{C++
#define SCRIPTABLE_CONTENT_ITERATOR_CID \
{ 0xf68037ec, 0x2790, 0x44c5, \
{ 0x8e, 0x5f, 0xdf, 0x5d, 0xa5, 0x8b, 0x93, 0xa7 } }
#define SCRIPTABLE_CONTENT_ITERATOR_CONTRACTID \
"@mozilla.org/scriptable-content-iterator;1"
%}