/* -*- Mode: IDL; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ /* vim: set ts=2 et sw=2 tw=80: */ /* 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/. * * For more information on this interface, please see * https://console.spec.whatwg.org/#console-namespace */ [Exposed=(Window,Worker,WorkerDebugger,Worklet), ClassString="Console", ProtoObjectHack] namespace console { // Logging void assert(optional boolean condition = false, any... data); void clear(); void count(optional DOMString label = "default"); void debug(any... data); void error(any... data); void info(any... data); void log(any... data); void table(any... data); // FIXME: The spec is still unclear about this. void trace(any... data); void warn(any... data); void dir(any... data); // FIXME: This doesn't follow the spec yet. void dirxml(any... data); // Grouping void group(any... data); void groupCollapsed(any... data); void groupEnd(); // Timing void time(optional DOMString label = "default"); void timeEnd(optional DOMString label = "default"); // Mozilla only or Webcompat methods void _exception(any... data); void timeStamp(optional any data); void profile(any... data); void profileEnd(any... data); [ChromeOnly] const boolean IS_NATIVE_CONSOLE = true; }; // This is used to propagate console events to the observers. dictionary ConsoleEvent { (unsigned long long or DOMString) ID; (unsigned long long or DOMString) innerID; DOMString addonId = ""; DOMString level = ""; DOMString filename = ""; unsigned long lineNumber = 0; unsigned long columnNumber = 0; DOMString functionName = ""; double timeStamp = 0; sequence arguments; sequence styles; boolean private = false; // stacktrace is handled via a getter in some cases so we can construct it // lazily. Note that we're not making this whole thing an interface because // consumers expect to see own properties on it, which would mean making the // props unforgeable, which means lots of JSFunction allocations. Maybe we // should fix those consumers, of course.... // sequence stacktrace; DOMString groupName = ""; any timer = null; any counter = null; }; // Event for profile operations dictionary ConsoleProfileEvent { DOMString action = ""; sequence arguments; }; // This dictionary is used to manage stack trace data. dictionary ConsoleStackEntry { DOMString filename = ""; unsigned long lineNumber = 0; unsigned long columnNumber = 0; DOMString functionName = ""; DOMString? asyncCause; }; dictionary ConsoleTimerStart { DOMString name = ""; }; dictionary ConsoleTimerEnd { DOMString name = ""; double duration = 0; }; dictionary ConsoleTimerError { DOMString error = ""; DOMString name = ""; }; dictionary ConsoleCounter { DOMString label = ""; unsigned long count = 0; }; dictionary ConsoleCounterError { DOMString error = "maxCountersExceeded"; };