Thu, 22 Jan 2015 13:21:57 +0100
Incorporate requested changes from Mozilla in review:
https://bugzilla.mozilla.org/show_bug.cgi?id=1123480#c6
1 /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
2 /* This Source Code Form is subject to the terms of the Mozilla Public
3 * License, v. 2.0. If a copy of the MPL was not distributed with this
4 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
6 #include "domstubs.idl"
8 interface nsIInputStream;
9 interface nsIOutputStream;
10 interface nsIScriptGlobalObject;
12 [ptr] native JSValPtr(JS::Value);
13 [ptr] native JSContext(JSContext);
15 %{C++
16 #include "js/TypeDecls.h"
17 %}
19 /**
20 * Don't use this! Use JSON.parse and JSON.stringify directly.
21 */
22 [scriptable, uuid(083aebb0-7790-43b2-ae81-9e404e626236)]
23 interface nsIJSON : nsISupports
24 {
25 /**
26 * New users should use JSON.stringify!
27 * The encode() method is only present for backward compatibility.
28 * encode() is not a conforming JSON stringify implementation!
29 */
30 [deprecated,implicit_jscontext,optional_argc]
31 AString encode([optional] in jsval value);
33 /**
34 * New users should use JSON.stringify.
35 * You may also want to have a look at nsIConverterOutputStream.
36 *
37 * The encodeToStream() method is only present for backward compatibility.
38 * encodeToStream() is not a conforming JSON stringify implementation!
39 */
40 [deprecated,implicit_jscontext,optional_argc]
41 void encodeToStream(in nsIOutputStream stream,
42 in string charset,
43 in boolean writeBOM,
44 [optional] in jsval value);
46 /**
47 * New users should use JSON.parse!
48 * The decode() method is only present for backward compatibility.
49 */
50 [deprecated,implicit_jscontext]
51 jsval decode(in AString str);
53 [implicit_jscontext]
54 jsval decodeFromStream(in nsIInputStream stream,
55 in long contentLength);
57 [noscript] AString encodeFromJSVal(in JSValPtr value, in JSContext cx);
59 // Make sure you GCroot the result of this function before using it.
60 [noscript] jsval decodeToJSVal(in AString str, in JSContext cx);
61 };