Lines Matching refs:cx

19   JSContext* const cx;  member in AutoInflatedString
24 explicit AutoInflatedString(JSContext* cx) in AutoInflatedString() argument
25 : cx(cx), chars_(nullptr), length_(0) {} in AutoInflatedString()
26 ~AutoInflatedString() { JS_free(cx, chars_); } in ~AutoInflatedString()
31 chars_ = InflateString(cx, str, length_); in operator =()
37 chars_ = InflateString(cx, str, length_); in operator =()
47 JS::RootedValue expected(cx); in BEGIN_TEST()
49 CHECK(TryParse(cx, "true", expected)); in BEGIN_TEST()
52 CHECK(TryParse(cx, "false", expected)); in BEGIN_TEST()
55 CHECK(TryParse(cx, "null", expected)); in BEGIN_TEST()
58 CHECK(TryParse(cx, "0", expected)); in BEGIN_TEST()
61 CHECK(TryParse(cx, "1", expected)); in BEGIN_TEST()
64 CHECK(TryParse(cx, "-1", expected)); in BEGIN_TEST()
67 CHECK(TryParse(cx, "1", expected)); in BEGIN_TEST()
70 CHECK(TryParse(cx, "1.75", expected)); in BEGIN_TEST()
73 CHECK(TryParse(cx, "9e9", expected)); in BEGIN_TEST()
76 CHECK(TryParse(cx, "9e99999", expected)); in BEGIN_TEST()
78 JS::Rooted<JSFlatString*> str(cx); in BEGIN_TEST()
81 str = js::NewStringCopyN<CanGC>(cx, emptystr, 0); in BEGIN_TEST()
84 CHECK(TryParse(cx, "\"\"", expected)); in BEGIN_TEST()
87 str = NewString(cx, nullstr); in BEGIN_TEST()
90 CHECK(TryParse(cx, "\"\\u0000\"", expected)); in BEGIN_TEST()
93 str = NewString(cx, backstr); in BEGIN_TEST()
96 CHECK(TryParse(cx, "\"\\b\"", expected)); in BEGIN_TEST()
97 CHECK(TryParse(cx, "\"\\u0008\"", expected)); in BEGIN_TEST()
102 str = NewString(cx, newlinestr); in BEGIN_TEST()
105 CHECK(TryParse(cx, "\"\\n\"", expected)); in BEGIN_TEST()
106 CHECK(TryParse(cx, "\"\\u000A\"", expected)); in BEGIN_TEST()
109 JS::RootedValue v(cx), v2(cx); in BEGIN_TEST()
110 JS::RootedObject obj(cx); in BEGIN_TEST()
114 CHECK(Parse(cx, "[]", &v)); in BEGIN_TEST()
117 CHECK(JS_IsArrayObject(cx, obj, &isArray)); in BEGIN_TEST()
119 CHECK(JS_GetProperty(cx, obj, "length", &v2)); in BEGIN_TEST()
122 CHECK(Parse(cx, "[1]", &v)); in BEGIN_TEST()
125 CHECK(JS_IsArrayObject(cx, obj, &isArray)); in BEGIN_TEST()
127 CHECK(JS_GetProperty(cx, obj, "0", &v2)); in BEGIN_TEST()
129 CHECK(JS_GetProperty(cx, obj, "length", &v2)); in BEGIN_TEST()
133 CHECK(Parse(cx, "{}", &v)); in BEGIN_TEST()
136 CHECK(JS_IsArrayObject(cx, obj, &isArray)); in BEGIN_TEST()
139 CHECK(Parse(cx, "{ \"f\": 17 }", &v)); in BEGIN_TEST()
142 CHECK(JS_IsArrayObject(cx, obj, &isArray)); in BEGIN_TEST()
144 CHECK(JS_GetProperty(cx, obj, "f", &v2)); in BEGIN_TEST()
151 static JSFlatString* NewString(JSContext* cx, const char16_t (&chars)[N]) { in NewString() argument
152 return js::NewStringCopyN<CanGC>(cx, chars, N); in NewString()
156 inline bool Parse(JSContext* cx, const char (&input)[N], in Parse() argument
158 AutoInflatedString str(cx); in Parse()
160 CHECK(JS_ParseJSON(cx, str.chars(), str.length(), vp)); in Parse()
165 inline bool TryParse(JSContext* cx, const char (&input)[N], in TryParse() argument
167 AutoInflatedString str(cx); in TryParse()
168 RootedValue v(cx); in TryParse()
170 CHECK(JS_ParseJSON(cx, str.chars(), str.length(), &v)); in TryParse()
177 CHECK(Error(cx, "", 1, 1)); in BEGIN_TEST()
178 CHECK(Error(cx, "\n", 2, 1)); in BEGIN_TEST()
179 CHECK(Error(cx, "\r", 2, 1)); in BEGIN_TEST()
180 CHECK(Error(cx, "\r\n", 2, 1)); in BEGIN_TEST()
182 CHECK(Error(cx, "[", 1, 2)); in BEGIN_TEST()
183 CHECK(Error(cx, "[,]", 1, 2)); in BEGIN_TEST()
184 CHECK(Error(cx, "[1,]", 1, 4)); in BEGIN_TEST()
185 CHECK(Error(cx, "{a:2}", 1, 2)); in BEGIN_TEST()
186 CHECK(Error(cx, "{\"a\":2,}", 1, 8)); in BEGIN_TEST()
187 CHECK(Error(cx, "]", 1, 1)); in BEGIN_TEST()
188 CHECK(Error(cx, "\"", 1, 2)); in BEGIN_TEST()
189 CHECK(Error(cx, "{]", 1, 2)); in BEGIN_TEST()
190 CHECK(Error(cx, "[}", 1, 2)); in BEGIN_TEST()
191 CHECK(Error(cx, "'wrongly-quoted string'", 1, 1)); in BEGIN_TEST()
193 CHECK(Error(cx, "{\"a\":2 \n b:3}", 2, 2)); in BEGIN_TEST()
194 CHECK(Error(cx, "\n[", 2, 2)); in BEGIN_TEST()
195 CHECK(Error(cx, "\n[,]", 2, 2)); in BEGIN_TEST()
196 CHECK(Error(cx, "\n[1,]", 2, 4)); in BEGIN_TEST()
197 CHECK(Error(cx, "\n{a:2}", 2, 2)); in BEGIN_TEST()
198 CHECK(Error(cx, "\n{\"a\":2,}", 2, 8)); in BEGIN_TEST()
199 CHECK(Error(cx, "\n]", 2, 1)); in BEGIN_TEST()
200 CHECK(Error(cx, "\"bad string\n\"", 1, 12)); in BEGIN_TEST()
201 CHECK(Error(cx, "\r'wrongly-quoted string'", 2, 1)); in BEGIN_TEST()
202 CHECK(Error(cx, "\n\"", 2, 2)); in BEGIN_TEST()
203 CHECK(Error(cx, "\n{]", 2, 2)); in BEGIN_TEST()
204 CHECK(Error(cx, "\n[}", 2, 2)); in BEGIN_TEST()
205 CHECK(Error(cx, "{\"a\":[2,3],\n\"b\":,5,6}", 2, 5)); in BEGIN_TEST()
207 CHECK(Error(cx, "{\"a\":2 \r b:3}", 2, 2)); in BEGIN_TEST()
208 CHECK(Error(cx, "\r[", 2, 2)); in BEGIN_TEST()
209 CHECK(Error(cx, "\r[,]", 2, 2)); in BEGIN_TEST()
210 CHECK(Error(cx, "\r[1,]", 2, 4)); in BEGIN_TEST()
211 CHECK(Error(cx, "\r{a:2}", 2, 2)); in BEGIN_TEST()
212 CHECK(Error(cx, "\r{\"a\":2,}", 2, 8)); in BEGIN_TEST()
213 CHECK(Error(cx, "\r]", 2, 1)); in BEGIN_TEST()
214 CHECK(Error(cx, "\"bad string\r\"", 1, 12)); in BEGIN_TEST()
215 CHECK(Error(cx, "\r'wrongly-quoted string'", 2, 1)); in BEGIN_TEST()
216 CHECK(Error(cx, "\r\"", 2, 2)); in BEGIN_TEST()
217 CHECK(Error(cx, "\r{]", 2, 2)); in BEGIN_TEST()
218 CHECK(Error(cx, "\r[}", 2, 2)); in BEGIN_TEST()
219 CHECK(Error(cx, "{\"a\":[2,3],\r\"b\":,5,6}", 2, 5)); in BEGIN_TEST()
221 CHECK(Error(cx, "{\"a\":2 \r\n b:3}", 2, 2)); in BEGIN_TEST()
222 CHECK(Error(cx, "\r\n[", 2, 2)); in BEGIN_TEST()
223 CHECK(Error(cx, "\r\n[,]", 2, 2)); in BEGIN_TEST()
224 CHECK(Error(cx, "\r\n[1,]", 2, 4)); in BEGIN_TEST()
225 CHECK(Error(cx, "\r\n{a:2}", 2, 2)); in BEGIN_TEST()
226 CHECK(Error(cx, "\r\n{\"a\":2,}", 2, 8)); in BEGIN_TEST()
227 CHECK(Error(cx, "\r\n]", 2, 1)); in BEGIN_TEST()
228 CHECK(Error(cx, "\"bad string\r\n\"", 1, 12)); in BEGIN_TEST()
229 CHECK(Error(cx, "\r\n'wrongly-quoted string'", 2, 1)); in BEGIN_TEST()
230 CHECK(Error(cx, "\r\n\"", 2, 2)); in BEGIN_TEST()
231 CHECK(Error(cx, "\r\n{]", 2, 2)); in BEGIN_TEST()
232 CHECK(Error(cx, "\r\n[}", 2, 2)); in BEGIN_TEST()
233 CHECK(Error(cx, "{\"a\":[2,3],\r\n\"b\":,5,6}", 2, 5)); in BEGIN_TEST()
235 CHECK(Error(cx, "\n\"bad string\n\"", 2, 12)); in BEGIN_TEST()
236 CHECK(Error(cx, "\r\"bad string\r\"", 2, 12)); in BEGIN_TEST()
237 CHECK(Error(cx, "\r\n\"bad string\r\n\"", 2, 12)); in BEGIN_TEST()
239 CHECK(Error(cx, "{\n\"a\":[2,3],\r\"b\":,5,6}", 3, 5)); in BEGIN_TEST()
240 CHECK(Error(cx, "{\r\"a\":[2,3],\n\"b\":,5,6}", 3, 5)); in BEGIN_TEST()
241 CHECK(Error(cx, "[\"\\t\\q", 1, 6)); in BEGIN_TEST()
242 CHECK(Error(cx, "[\"\\t\x00", 1, 5)); in BEGIN_TEST()
243 CHECK(Error(cx, "[\"\\t\x01", 1, 5)); in BEGIN_TEST()
244 CHECK(Error(cx, "[\"\\t\\\x00", 1, 6)); in BEGIN_TEST()
245 CHECK(Error(cx, "[\"\\t\\\x01", 1, 6)); in BEGIN_TEST()
260 CHECK(Error(cx, "[\"\\t\\u", 1, 7)); in BEGIN_TEST()
261 CHECK(Error(cx, "[\"\\t\\uZ", 1, 7)); in BEGIN_TEST()
262 CHECK(Error(cx, "[\"\\t\\uZZ", 1, 7)); in BEGIN_TEST()
263 CHECK(Error(cx, "[\"\\t\\uZZZ", 1, 7)); in BEGIN_TEST()
264 CHECK(Error(cx, "[\"\\t\\uZZZZ", 1, 7)); in BEGIN_TEST()
265 CHECK(Error(cx, "[\"\\t\\uZZZZZ", 1, 7)); in BEGIN_TEST()
267 CHECK(Error(cx, "[\"\\t\\u0", 1, 8)); in BEGIN_TEST()
268 CHECK(Error(cx, "[\"\\t\\u0Z", 1, 8)); in BEGIN_TEST()
269 CHECK(Error(cx, "[\"\\t\\u0ZZ", 1, 8)); in BEGIN_TEST()
270 CHECK(Error(cx, "[\"\\t\\u0ZZZ", 1, 8)); in BEGIN_TEST()
271 CHECK(Error(cx, "[\"\\t\\u0ZZZZ", 1, 8)); in BEGIN_TEST()
273 CHECK(Error(cx, "[\"\\t\\u00", 1, 9)); in BEGIN_TEST()
274 CHECK(Error(cx, "[\"\\t\\u00Z", 1, 9)); in BEGIN_TEST()
275 CHECK(Error(cx, "[\"\\t\\u00ZZ", 1, 9)); in BEGIN_TEST()
276 CHECK(Error(cx, "[\"\\t\\u00ZZZ", 1, 9)); in BEGIN_TEST()
278 CHECK(Error(cx, "[\"\\t\\u000", 1, 10)); in BEGIN_TEST()
279 CHECK(Error(cx, "[\"\\t\\u000Z", 1, 10)); in BEGIN_TEST()
280 CHECK(Error(cx, "[\"\\t\\u000ZZ", 1, 10)); in BEGIN_TEST()
286 inline bool Error(JSContext* cx, const char (&input)[N], uint32_t expectedLine, in Error() argument
288 AutoInflatedString str(cx); in Error()
289 RootedValue dummy(cx); in Error()
292 bool ok = JS_ParseJSON(cx, str.chars(), str.length(), &dummy); in Error()
295 RootedValue exn(cx); in Error()
296 CHECK(JS_GetPendingException(cx, &exn)); in Error()
297 JS_ClearPendingException(cx); in Error()
299 js::ErrorReport report(cx); in Error()
300 CHECK(report.init(cx, exn, js::ErrorReport::WithSideEffects)); in Error()
309 CHECK(!JS_IsExceptionPending(cx)); in Error()
315 static bool Censor(JSContext* cx, unsigned argc, JS::Value* vp) { in END_TEST()
324 JSFunction* fun = JS_NewFunction(cx, Censor, 0, 0, "censor"); in BEGIN_TEST()
327 JS::RootedValue filter(cx, JS::ObjectValue(*JS_GetFunctionObject(fun))); in BEGIN_TEST()
329 CHECK(TryParse(cx, "true", filter)); in BEGIN_TEST()
330 CHECK(TryParse(cx, "false", filter)); in BEGIN_TEST()
331 CHECK(TryParse(cx, "null", filter)); in BEGIN_TEST()
332 CHECK(TryParse(cx, "1", filter)); in BEGIN_TEST()
333 CHECK(TryParse(cx, "1.75", filter)); in BEGIN_TEST()
334 CHECK(TryParse(cx, "[]", filter)); in BEGIN_TEST()
335 CHECK(TryParse(cx, "[1]", filter)); in BEGIN_TEST()
336 CHECK(TryParse(cx, "{}", filter)); in BEGIN_TEST()
341 inline bool TryParse(JSContext* cx, const char (&input)[N], in TryParse() argument
343 AutoInflatedString str(cx); in TryParse()
344 JS::RootedValue v(cx); in TryParse()
346 CHECK(JS_ParseJSONWithReviver(cx, str.chars(), str.length(), filter, &v)); in TryParse()