michael@0: /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ michael@0: /* vim: set ts=2 sw=2 et tw=80: */ michael@0: /* This Source Code Form is subject to the terms of the Mozilla Public michael@0: * License, v. 2.0. If a copy of the MPL was not distributed with this michael@0: * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ michael@0: #ifndef nsIScriptTimeoutHandler_h___ michael@0: #define nsIScriptTimeoutHandler_h___ michael@0: michael@0: #include "nsTArray.h" michael@0: #include "js/TypeDecls.h" michael@0: michael@0: namespace mozilla { michael@0: namespace dom { michael@0: class Function; michael@0: } // namespace dom michael@0: } // namespace mozilla michael@0: michael@0: #define NS_ISCRIPTTIMEOUTHANDLER_IID \ michael@0: { 0x53c8e80e, 0xcc78, 0x48bc, \ michael@0: { 0xba, 0x63, 0x0c, 0xb9, 0xdb, 0xf7, 0x06, 0x34 } } michael@0: michael@0: /** michael@0: * Abstraction of the script objects etc required to do timeouts in a michael@0: * language agnostic way. michael@0: */ michael@0: michael@0: class nsIScriptTimeoutHandler : public nsISupports michael@0: { michael@0: public: michael@0: NS_DECLARE_STATIC_IID_ACCESSOR(NS_ISCRIPTTIMEOUTHANDLER_IID) michael@0: michael@0: // Get the Function to call. If this returns nullptr, GetHandlerText() will michael@0: // be called to get the string. michael@0: virtual mozilla::dom::Function *GetCallback() = 0; michael@0: michael@0: // Get the handler text of not a compiled object. michael@0: virtual const char16_t *GetHandlerText() = 0; michael@0: michael@0: // Get the location of the script. michael@0: // Note: The memory pointed to by aFileName is owned by the michael@0: // nsIScriptTimeoutHandler and should not be freed by the caller. michael@0: virtual void GetLocation(const char **aFileName, uint32_t *aLineNo) = 0; michael@0: michael@0: // If we have a Function, get the arguments for passing to it. michael@0: virtual const nsTArray& GetArgs() = 0; michael@0: }; michael@0: michael@0: NS_DEFINE_STATIC_IID_ACCESSOR(nsIScriptTimeoutHandler, michael@0: NS_ISCRIPTTIMEOUTHANDLER_IID) michael@0: michael@0: #endif // nsIScriptTimeoutHandler_h___