/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- * * 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" [ptr] native JSContext(JSContext); [uuid(c67d8270-3189-11d3-9885-006008962422)] interface nsIJSContextStack : nsISupports { readonly attribute int32_t count; JSContext peek(); JSContext pop(); void push(in JSContext cx); }; [uuid(c7e6b7aa-fc12-4ca7-b140-98c38b698961)] interface nsIJSContextStackIterator : nsISupports { /** * Resets this iterator to the beginning of this thread's stack. */ void reset(in nsIJSContextStack stack); /** * Returns true if this iterator is at the end of its stack's contexts. * @throws NS_ERROR_NOT_INITIALIZED If there has not been a previous call * to reset. */ boolean done(); /** * Returns the prev JSContext off of stack. Note that because we're * iterating over a stack, this value would be the next popped value. * * @throws NS_ERROR_NOT_INITIALIZED If there has not been a previous call * to reset. * @throws NS_ERROR_NOT_AVAILABLE if already at the end. */ JSContext prev(); }; [uuid(59ad3ff1-a2d3-4c11-b825-098bff3c3e15)] interface nsIThreadJSContextStack : nsIJSContextStack { /* inherits methods of nsIJSContextStack */ [notxpcom,nostdcall] JSContext getSafeJSContext(); };