johnson 1.2.0 → 2.0.0.pre0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (782) hide show
  1. data/CHANGELOG.rdoc +8 -0
  2. data/Manifest.txt +762 -48
  3. data/README.rdoc +2 -1
  4. data/Rakefile +90 -18
  5. data/ext/spidermonkey/conversions.c +9 -2
  6. data/ext/spidermonkey/ruby_land_proxy.c +1 -1
  7. data/ext/spidermonkey/runtime.h +1 -1
  8. data/ext/tracemonkey/context.cc +125 -0
  9. data/ext/tracemonkey/context.h +19 -0
  10. data/ext/tracemonkey/conversions.cc +365 -0
  11. data/ext/tracemonkey/conversions.h +32 -0
  12. data/ext/tracemonkey/debugger.cc +234 -0
  13. data/ext/tracemonkey/debugger.h +10 -0
  14. data/ext/tracemonkey/extconf.rb +37 -0
  15. data/ext/tracemonkey/extensions.cc +37 -0
  16. data/ext/tracemonkey/extensions.h +12 -0
  17. data/ext/tracemonkey/global.cc +40 -0
  18. data/ext/tracemonkey/global.h +11 -0
  19. data/ext/tracemonkey/idhash.cc +16 -0
  20. data/ext/tracemonkey/idhash.h +8 -0
  21. data/ext/tracemonkey/immutable_node.cc +1199 -0
  22. data/ext/tracemonkey/immutable_node.cc.erb +559 -0
  23. data/ext/tracemonkey/immutable_node.h +22 -0
  24. data/ext/tracemonkey/jroot.h +215 -0
  25. data/ext/tracemonkey/js_land_proxy.cc +620 -0
  26. data/ext/tracemonkey/js_land_proxy.h +20 -0
  27. data/ext/tracemonkey/ruby_land_proxy.cc +618 -0
  28. data/ext/tracemonkey/ruby_land_proxy.h +38 -0
  29. data/ext/tracemonkey/runtime.cc +454 -0
  30. data/ext/tracemonkey/runtime.h +27 -0
  31. data/ext/tracemonkey/split_global.cc +392 -0
  32. data/ext/tracemonkey/split_global.h +11 -0
  33. data/ext/tracemonkey/tracemonkey.cc +23 -0
  34. data/ext/tracemonkey/tracemonkey.h +32 -0
  35. data/lib/johnson.rb +12 -4
  36. data/lib/johnson/error.rb +5 -0
  37. data/lib/johnson/js/prelude.js +16 -1
  38. data/lib/johnson/parser.rb +2 -1
  39. data/lib/johnson/runtime.rb +87 -26
  40. data/lib/johnson/spidermonkey/runtime.rb +7 -16
  41. data/lib/johnson/tracemonkey.rb +13 -0
  42. data/lib/johnson/tracemonkey/context.rb +10 -0
  43. data/lib/johnson/tracemonkey/debugger.rb +67 -0
  44. data/lib/johnson/tracemonkey/immutable_node.rb +282 -0
  45. data/lib/johnson/tracemonkey/js_land_proxy.rb +64 -0
  46. data/lib/johnson/tracemonkey/mutable_tree_visitor.rb +242 -0
  47. data/lib/johnson/tracemonkey/ruby_land_proxy.rb +17 -0
  48. data/lib/johnson/tracemonkey/runtime.rb +80 -0
  49. data/test/{johnson_test.rb → generic/johnson_test.rb} +1 -1
  50. data/test/{parser_test.rb → generic/parser_test.rb} +1 -1
  51. data/test/helper.rb +23 -4
  52. data/test/johnson/{browser_test.rb → generic/browser_test.rb} +1 -1
  53. data/test/johnson/{conversions → generic/conversions}/array_test.rb +1 -1
  54. data/test/johnson/{conversions → generic/conversions}/boolean_test.rb +1 -1
  55. data/test/johnson/{conversions → generic/conversions}/callable_test.rb +1 -1
  56. data/test/johnson/{conversions → generic/conversions}/file_test.rb +1 -1
  57. data/test/johnson/generic/conversions/helper.rb +1 -0
  58. data/test/johnson/{conversions → generic/conversions}/nil_test.rb +1 -1
  59. data/test/johnson/{conversions → generic/conversions}/number_test.rb +1 -1
  60. data/test/johnson/{conversions → generic/conversions}/regexp_test.rb +1 -1
  61. data/test/johnson/{conversions → generic/conversions}/string_test.rb +1 -1
  62. data/test/johnson/{conversions → generic/conversions}/struct_test.rb +1 -1
  63. data/test/johnson/{conversions → generic/conversions}/symbol_test.rb +1 -1
  64. data/test/johnson/{conversions → generic/conversions}/thread_test.rb +1 -1
  65. data/test/johnson/{custom_conversions_test.rb → generic/custom_conversions_test.rb} +1 -1
  66. data/test/johnson/generic/default_test.rb +12 -0
  67. data/test/johnson/{error_test.rb → generic/error_test.rb} +1 -1
  68. data/test/johnson/{extensions_test.rb → generic/extensions_test.rb} +1 -1
  69. data/test/johnson/generic/helper.rb +1 -0
  70. data/test/johnson/{nodes → generic/nodes}/array_literal_test.rb +1 -1
  71. data/test/johnson/{nodes → generic/nodes}/array_node_test.rb +1 -1
  72. data/test/johnson/{nodes → generic/nodes}/binary_node_test.rb +1 -1
  73. data/test/johnson/{nodes → generic/nodes}/bracket_access_test.rb +1 -1
  74. data/test/johnson/{nodes → generic/nodes}/delete_test.rb +1 -1
  75. data/test/johnson/{nodes → generic/nodes}/do_while_test.rb +1 -1
  76. data/test/johnson/{nodes → generic/nodes}/dot_accessor_test.rb +1 -1
  77. data/test/johnson/generic/nodes/export_test.rb +11 -0
  78. data/test/johnson/{nodes → generic/nodes}/for_test.rb +1 -1
  79. data/test/johnson/{nodes → generic/nodes}/function_test.rb +1 -1
  80. data/test/johnson/generic/nodes/helper.rb +1 -0
  81. data/test/johnson/{nodes → generic/nodes}/if_test.rb +16 -6
  82. data/test/johnson/generic/nodes/import_test.rb +15 -0
  83. data/test/johnson/{nodes → generic/nodes}/label_test.rb +1 -1
  84. data/test/johnson/{nodes → generic/nodes}/let_test.rb +1 -1
  85. data/test/johnson/{nodes → generic/nodes}/object_literal_test.rb +1 -1
  86. data/test/johnson/{nodes → generic/nodes}/return_test.rb +1 -1
  87. data/test/johnson/{nodes → generic/nodes}/semi_test.rb +1 -1
  88. data/test/johnson/{nodes → generic/nodes}/switch_test.rb +1 -1
  89. data/test/johnson/{nodes → generic/nodes}/ternary_test.rb +1 -1
  90. data/test/johnson/{nodes → generic/nodes}/throw_test.rb +1 -1
  91. data/test/johnson/{nodes → generic/nodes}/try_node_test.rb +36 -6
  92. data/test/johnson/{nodes → generic/nodes}/typeof_test.rb +1 -1
  93. data/test/johnson/{nodes → generic/nodes}/unary_node_test.rb +1 -1
  94. data/test/johnson/{nodes → generic/nodes}/void_test.rb +1 -1
  95. data/test/johnson/{nodes → generic/nodes}/while_test.rb +1 -1
  96. data/test/johnson/{nodes → generic/nodes}/with_test.rb +1 -1
  97. data/test/johnson/{prelude_test.rb → generic/prelude_test.rb} +1 -1
  98. data/test/johnson/{runtime_test.rb → generic/runtime_test.rb} +3 -6
  99. data/test/johnson/generic/version_test.rb +13 -0
  100. data/test/johnson/{visitors → generic/visitors}/dot_visitor_test.rb +1 -1
  101. data/test/johnson/{visitors → generic/visitors}/enumerating_visitor_test.rb +1 -1
  102. data/test/johnson/generic/visitors/helper.rb +1 -0
  103. data/test/johnson/spidermonkey/js_land_proxy_test.rb +1 -5
  104. data/test/johnson/spidermonkey/ruby_land_proxy_test.rb +11 -7
  105. data/test/johnson/tracemonkey/context_test.rb +21 -0
  106. data/test/johnson/tracemonkey/immutable_node_test.rb +34 -0
  107. data/test/johnson/tracemonkey/js_land_proxy_test.rb +273 -0
  108. data/test/johnson/tracemonkey/ruby_land_proxy_test.rb +274 -0
  109. data/test/johnson/tracemonkey/runtime_test.rb +41 -0
  110. data/test/johnson/tracemonkey/split_global_test.rb +32 -0
  111. data/vendor/spidermonkey/js.pkg +2 -0
  112. data/vendor/tracemonkey/Makefile.in +668 -0
  113. data/vendor/tracemonkey/Makefile.ref +483 -0
  114. data/vendor/tracemonkey/README.html +54 -0
  115. data/vendor/tracemonkey/SpiderMonkey.rsp +11 -0
  116. data/vendor/tracemonkey/Y.js +19 -0
  117. data/vendor/tracemonkey/aclocal.m4 +9 -0
  118. data/vendor/tracemonkey/bench.sh +5 -0
  119. data/vendor/tracemonkey/build/autoconf/acoutput-fast.pl +202 -0
  120. data/vendor/tracemonkey/build/autoconf/altoptions.m4 +154 -0
  121. data/vendor/tracemonkey/build/autoconf/config.guess +1537 -0
  122. data/vendor/tracemonkey/build/autoconf/config.sub +1595 -0
  123. data/vendor/tracemonkey/build/autoconf/install-sh +119 -0
  124. data/vendor/tracemonkey/build/autoconf/make-makefile +315 -0
  125. data/vendor/tracemonkey/build/autoconf/match-dir.sh +101 -0
  126. data/vendor/tracemonkey/build/autoconf/moznbytetype.m4 +136 -0
  127. data/vendor/tracemonkey/build/autoconf/nspr.m4 +82 -0
  128. data/vendor/tracemonkey/build/autoconf/pkg.m4 +59 -0
  129. data/vendor/tracemonkey/build/autoconf/update-makefile.sh +118 -0
  130. data/vendor/tracemonkey/build/cygwin-wrapper +75 -0
  131. data/vendor/tracemonkey/build/hcc +111 -0
  132. data/vendor/tracemonkey/build/hcpp +155 -0
  133. data/vendor/tracemonkey/build/unix/mddepend.pl +165 -0
  134. data/vendor/tracemonkey/build/unix/uniq.pl +63 -0
  135. data/vendor/tracemonkey/build/win32/pgomerge.py +40 -0
  136. data/vendor/tracemonkey/builtins.tbl +91 -0
  137. data/vendor/tracemonkey/call.js +13 -0
  138. data/vendor/tracemonkey/config.mk +206 -0
  139. data/vendor/tracemonkey/config/Makefile.in +106 -0
  140. data/vendor/tracemonkey/config/Moz/Milestone.pm +232 -0
  141. data/vendor/tracemonkey/config/autoconf.mk.in +362 -0
  142. data/vendor/tracemonkey/config/check-sync-dirs.py +103 -0
  143. data/vendor/tracemonkey/config/check-sync-exceptions +7 -0
  144. data/vendor/tracemonkey/config/config.mk +881 -0
  145. data/vendor/tracemonkey/config/fastcwd.pl +66 -0
  146. data/vendor/tracemonkey/config/gcc_hidden.h +2 -0
  147. data/vendor/tracemonkey/config/insure.mk +53 -0
  148. data/vendor/tracemonkey/config/make-system-wrappers.pl +59 -0
  149. data/vendor/tracemonkey/config/milestone.pl +112 -0
  150. data/vendor/tracemonkey/config/milestone.txt +13 -0
  151. data/vendor/tracemonkey/config/mkdepend/Makefile.in +84 -0
  152. data/vendor/tracemonkey/config/mkdepend/cppsetup.c +233 -0
  153. data/vendor/tracemonkey/config/mkdepend/def.h +184 -0
  154. data/vendor/tracemonkey/config/mkdepend/ifparser.c +551 -0
  155. data/vendor/tracemonkey/config/mkdepend/ifparser.h +83 -0
  156. data/vendor/tracemonkey/config/mkdepend/imakemdep.h +733 -0
  157. data/vendor/tracemonkey/config/mkdepend/include.c +337 -0
  158. data/vendor/tracemonkey/config/mkdepend/main.c +860 -0
  159. data/vendor/tracemonkey/config/mkdepend/mkdepend.man +382 -0
  160. data/vendor/tracemonkey/config/mkdepend/parse.c +686 -0
  161. data/vendor/tracemonkey/config/mkdepend/pr.c +124 -0
  162. data/vendor/tracemonkey/config/nfspwd.pl +50 -0
  163. data/vendor/tracemonkey/config/nsinstall.c +481 -0
  164. data/vendor/tracemonkey/config/nsinstall.py +155 -0
  165. data/vendor/tracemonkey/config/pathsub.c +247 -0
  166. data/vendor/tracemonkey/config/pathsub.h +74 -0
  167. data/vendor/tracemonkey/config/preprocessor.pl +671 -0
  168. data/vendor/tracemonkey/config/revdepth-nt.pl +48 -0
  169. data/vendor/tracemonkey/config/revdepth.pl +51 -0
  170. data/vendor/tracemonkey/config/rules.mk +2310 -0
  171. data/vendor/tracemonkey/config/static-checking-config.mk +21 -0
  172. data/vendor/tracemonkey/config/static-checking.js +92 -0
  173. data/vendor/tracemonkey/config/string-format.js +61 -0
  174. data/vendor/tracemonkey/config/system-headers +1035 -0
  175. data/vendor/tracemonkey/config/version.mk +85 -0
  176. data/vendor/tracemonkey/config/version_win.pl +442 -0
  177. data/vendor/tracemonkey/configure +14183 -0
  178. data/vendor/tracemonkey/configure.in +5363 -0
  179. data/vendor/tracemonkey/correct.sh +23 -0
  180. data/vendor/tracemonkey/correct/check-3d-morph.js +55 -0
  181. data/vendor/tracemonkey/correct/check-3d-raytrace.js +445 -0
  182. data/vendor/tracemonkey/correct/check-access-binary-trees.js +52 -0
  183. data/vendor/tracemonkey/correct/check-access-fannkuch.js +66 -0
  184. data/vendor/tracemonkey/correct/check-access-nbody.js +171 -0
  185. data/vendor/tracemonkey/correct/check-access-nsieve.js +40 -0
  186. data/vendor/tracemonkey/correct/check-bitops-3bit-bits-in-byte.js +35 -0
  187. data/vendor/tracemonkey/correct/check-bitops-bits-in-byte.js +24 -0
  188. data/vendor/tracemonkey/correct/check-bitops-bitwise-and.js +29 -0
  189. data/vendor/tracemonkey/correct/check-bitops-nsieve-bits.js +40 -0
  190. data/vendor/tracemonkey/correct/check-controlflow-recursive.js +27 -0
  191. data/vendor/tracemonkey/correct/check-date-format-tofte.js +302 -0
  192. data/vendor/tracemonkey/correct/check-date-format-xparb.js +421 -0
  193. data/vendor/tracemonkey/correct/check-mont.js +119 -0
  194. data/vendor/tracemonkey/dtoa.c +3335 -0
  195. data/vendor/tracemonkey/editline/Makefile.in +55 -0
  196. data/vendor/tracemonkey/editline/Makefile.ref +143 -0
  197. data/vendor/tracemonkey/editline/README +83 -0
  198. data/vendor/tracemonkey/editline/editline.3 +175 -0
  199. data/vendor/tracemonkey/editline/editline.c +1371 -0
  200. data/vendor/tracemonkey/editline/editline.h +135 -0
  201. data/vendor/tracemonkey/editline/sysunix.c +182 -0
  202. data/vendor/tracemonkey/editline/unix.h +82 -0
  203. data/vendor/tracemonkey/if.js +13 -0
  204. data/vendor/tracemonkey/imacro_asm.js.in +396 -0
  205. data/vendor/tracemonkey/imacros.c.out +1034 -0
  206. data/vendor/tracemonkey/imacros.jsasm +770 -0
  207. data/vendor/tracemonkey/javascript-trace.d +73 -0
  208. data/vendor/tracemonkey/jitstats.tbl +55 -0
  209. data/vendor/tracemonkey/js-config.h.in +82 -0
  210. data/vendor/tracemonkey/js-config.in +111 -0
  211. data/vendor/tracemonkey/js.mdp +0 -0
  212. data/vendor/tracemonkey/js.msg +312 -0
  213. data/vendor/tracemonkey/js3240.rc +79 -0
  214. data/vendor/tracemonkey/jsOS240.def +654 -0
  215. data/vendor/tracemonkey/jsapi.cpp +6005 -0
  216. data/vendor/tracemonkey/jsapi.h +2727 -0
  217. data/vendor/tracemonkey/jsarena.cpp +450 -0
  218. data/vendor/tracemonkey/jsarena.h +318 -0
  219. data/vendor/tracemonkey/jsarray.cpp +3664 -0
  220. data/vendor/tracemonkey/jsarray.h +238 -0
  221. data/vendor/tracemonkey/jsatom.cpp +1244 -0
  222. data/vendor/tracemonkey/jsatom.h +493 -0
  223. data/vendor/tracemonkey/jsbit.h +249 -0
  224. data/vendor/tracemonkey/jsbool.cpp +184 -0
  225. data/vendor/tracemonkey/jsbool.h +88 -0
  226. data/vendor/tracemonkey/jsbuiltins.cpp +415 -0
  227. data/vendor/tracemonkey/jsbuiltins.h +456 -0
  228. data/vendor/tracemonkey/jsclist.h +139 -0
  229. data/vendor/tracemonkey/jscntxt.cpp +1816 -0
  230. data/vendor/tracemonkey/jscntxt.h +1541 -0
  231. data/vendor/tracemonkey/jscompat.h +57 -0
  232. data/vendor/tracemonkey/jsconfig.mk +181 -0
  233. data/vendor/tracemonkey/jscpucfg.cpp +194 -0
  234. data/vendor/tracemonkey/jscpucfg.h +91 -0
  235. data/vendor/tracemonkey/jsdate.cpp +2465 -0
  236. data/vendor/tracemonkey/jsdate.h +129 -0
  237. data/vendor/tracemonkey/jsdbgapi.cpp +2017 -0
  238. data/vendor/tracemonkey/jsdbgapi.h +500 -0
  239. data/vendor/tracemonkey/jsdhash.cpp +876 -0
  240. data/vendor/tracemonkey/jsdhash.h +588 -0
  241. data/vendor/tracemonkey/jsdtoa.cpp +572 -0
  242. data/vendor/tracemonkey/jsdtoa.h +131 -0
  243. data/vendor/tracemonkey/jsdtracef.c +318 -0
  244. data/vendor/tracemonkey/jsdtracef.h +81 -0
  245. data/vendor/tracemonkey/jsemit.cpp +7292 -0
  246. data/vendor/tracemonkey/jsemit.h +802 -0
  247. data/vendor/tracemonkey/jsexn.cpp +1337 -0
  248. data/vendor/tracemonkey/jsexn.h +96 -0
  249. data/vendor/tracemonkey/jsfile.cpp +2747 -0
  250. data/vendor/tracemonkey/jsfile.h +56 -0
  251. data/vendor/tracemonkey/jsfile.msg +90 -0
  252. data/vendor/tracemonkey/jsfun.cpp +3089 -0
  253. data/vendor/tracemonkey/jsfun.h +366 -0
  254. data/vendor/tracemonkey/jsgc.cpp +3816 -0
  255. data/vendor/tracemonkey/jsgc.h +429 -0
  256. data/vendor/tracemonkey/jshash.cpp +477 -0
  257. data/vendor/tracemonkey/jshash.h +151 -0
  258. data/vendor/tracemonkey/jsify.pl +483 -0
  259. data/vendor/tracemonkey/jsinterp.cpp +7441 -0
  260. data/vendor/tracemonkey/jsinterp.h +666 -0
  261. data/vendor/tracemonkey/jsinvoke.cpp +42 -0
  262. data/vendor/tracemonkey/jsiter.cpp +1040 -0
  263. data/vendor/tracemonkey/jsiter.h +140 -0
  264. data/vendor/tracemonkey/jskeyword.tbl +124 -0
  265. data/vendor/tracemonkey/jskwgen.cpp +460 -0
  266. data/vendor/tracemonkey/jslibmath.h +69 -0
  267. data/vendor/tracemonkey/jslock.cpp +1512 -0
  268. data/vendor/tracemonkey/jslock.h +325 -0
  269. data/vendor/tracemonkey/jslocko.asm +60 -0
  270. data/vendor/tracemonkey/jslog2.cpp +111 -0
  271. data/vendor/tracemonkey/jslong.h +167 -0
  272. data/vendor/tracemonkey/jsmath.cpp +806 -0
  273. data/vendor/tracemonkey/jsmath.h +63 -0
  274. data/vendor/tracemonkey/jsnum.cpp +1374 -0
  275. data/vendor/tracemonkey/jsnum.h +280 -0
  276. data/vendor/tracemonkey/jsobj.cpp +6165 -0
  277. data/vendor/tracemonkey/jsobj.h +870 -0
  278. data/vendor/tracemonkey/json.cpp +1338 -0
  279. data/vendor/tracemonkey/json.h +108 -0
  280. data/vendor/tracemonkey/jsopcode.cpp +5484 -0
  281. data/vendor/tracemonkey/jsopcode.h +434 -0
  282. data/vendor/tracemonkey/jsopcode.tbl +591 -0
  283. data/vendor/tracemonkey/jsoplengen.cpp +121 -0
  284. data/vendor/tracemonkey/jsotypes.h +202 -0
  285. data/vendor/tracemonkey/jsparse.cpp +9257 -0
  286. data/vendor/tracemonkey/jsparse.h +900 -0
  287. data/vendor/tracemonkey/jsprf.cpp +1262 -0
  288. data/vendor/tracemonkey/jsprf.h +150 -0
  289. data/vendor/tracemonkey/jsproto.tbl +117 -0
  290. data/vendor/tracemonkey/jsprvtd.h +366 -0
  291. data/vendor/tracemonkey/jspubtd.h +585 -0
  292. data/vendor/tracemonkey/jsregexp.cpp +5051 -0
  293. data/vendor/tracemonkey/jsregexp.h +199 -0
  294. data/vendor/tracemonkey/jsreops.tbl +145 -0
  295. data/vendor/tracemonkey/jsscan.cpp +2040 -0
  296. data/vendor/tracemonkey/jsscan.h +467 -0
  297. data/vendor/tracemonkey/jsscope.cpp +1966 -0
  298. data/vendor/tracemonkey/jsscope.h +487 -0
  299. data/vendor/tracemonkey/jsscript.cpp +1932 -0
  300. data/vendor/tracemonkey/jsscript.h +345 -0
  301. data/vendor/tracemonkey/jsshell.msg +54 -0
  302. data/vendor/tracemonkey/jsstack.js +167 -0
  303. data/vendor/tracemonkey/jsstaticcheck.h +69 -0
  304. data/vendor/tracemonkey/jsstddef.h +87 -0
  305. data/vendor/tracemonkey/jsstdint.h +96 -0
  306. data/vendor/tracemonkey/jsstr.cpp +5277 -0
  307. data/vendor/tracemonkey/jsstr.h +702 -0
  308. data/vendor/tracemonkey/jstracer.cpp +10991 -0
  309. data/vendor/tracemonkey/jstracer.h +794 -0
  310. data/vendor/tracemonkey/jstypes.h +481 -0
  311. data/vendor/tracemonkey/jsutil.cpp +361 -0
  312. data/vendor/tracemonkey/jsutil.h +178 -0
  313. data/vendor/tracemonkey/jsversion.h +243 -0
  314. data/vendor/tracemonkey/jswince.asm +44 -0
  315. data/vendor/tracemonkey/jsxdrapi.cpp +800 -0
  316. data/vendor/tracemonkey/jsxdrapi.h +220 -0
  317. data/vendor/tracemonkey/jsxml.cpp +8327 -0
  318. data/vendor/tracemonkey/jsxml.h +305 -0
  319. data/vendor/tracemonkey/liveconnect/LiveConnect.dsp +157 -0
  320. data/vendor/tracemonkey/liveconnect/LiveConnectShell.dsp +120 -0
  321. data/vendor/tracemonkey/liveconnect/LiveConnectShell.dsw +44 -0
  322. data/vendor/tracemonkey/liveconnect/Makefile.in +105 -0
  323. data/vendor/tracemonkey/liveconnect/Makefile.ref +169 -0
  324. data/vendor/tracemonkey/liveconnect/README.html +712 -0
  325. data/vendor/tracemonkey/liveconnect/_jni/netscape_javascript_JSException.h +14 -0
  326. data/vendor/tracemonkey/liveconnect/_jni/netscape_javascript_JSObject.h +155 -0
  327. data/vendor/tracemonkey/liveconnect/classes/Makefile.in +89 -0
  328. data/vendor/tracemonkey/liveconnect/classes/Makefile.ref +57 -0
  329. data/vendor/tracemonkey/liveconnect/classes/netscape/Makefile.ref +47 -0
  330. data/vendor/tracemonkey/liveconnect/classes/netscape/javascript/JSException.java +140 -0
  331. data/vendor/tracemonkey/liveconnect/classes/netscape/javascript/JSObject.java +183 -0
  332. data/vendor/tracemonkey/liveconnect/classes/netscape/javascript/JSProxy.java +58 -0
  333. data/vendor/tracemonkey/liveconnect/classes/netscape/javascript/JSRunnable.java +70 -0
  334. data/vendor/tracemonkey/liveconnect/classes/netscape/javascript/JSUtil.java +59 -0
  335. data/vendor/tracemonkey/liveconnect/classes/netscape/javascript/Makefile.ref +53 -0
  336. data/vendor/tracemonkey/liveconnect/config/AIX4.1.mk +45 -0
  337. data/vendor/tracemonkey/liveconnect/config/AIX4.2.mk +45 -0
  338. data/vendor/tracemonkey/liveconnect/config/AIX4.3.mk +50 -0
  339. data/vendor/tracemonkey/liveconnect/config/HP-UXB.10.10.mk +43 -0
  340. data/vendor/tracemonkey/liveconnect/config/HP-UXB.10.20.mk +43 -0
  341. data/vendor/tracemonkey/liveconnect/config/HP-UXB.11.00.mk +43 -0
  342. data/vendor/tracemonkey/liveconnect/config/IRIX6.2.mk +43 -0
  343. data/vendor/tracemonkey/liveconnect/config/IRIX6.3.mk +43 -0
  344. data/vendor/tracemonkey/liveconnect/config/IRIX6.5.mk +43 -0
  345. data/vendor/tracemonkey/liveconnect/config/Linux_All.mk +73 -0
  346. data/vendor/tracemonkey/liveconnect/config/OSF1V4.0.mk +65 -0
  347. data/vendor/tracemonkey/liveconnect/config/OSF1V5.0.mk +62 -0
  348. data/vendor/tracemonkey/liveconnect/config/SunOS5.5.1.mk +55 -0
  349. data/vendor/tracemonkey/liveconnect/config/SunOS5.6.mk +39 -0
  350. data/vendor/tracemonkey/liveconnect/config/SunOS5.7.mk +39 -0
  351. data/vendor/tracemonkey/liveconnect/config/SunOS5.8.mk +39 -0
  352. data/vendor/tracemonkey/liveconnect/config/WINNT4.0.mk +53 -0
  353. data/vendor/tracemonkey/liveconnect/jsj.c +886 -0
  354. data/vendor/tracemonkey/liveconnect/jsj.msg +98 -0
  355. data/vendor/tracemonkey/liveconnect/jsj_JSObject.c +1377 -0
  356. data/vendor/tracemonkey/liveconnect/jsj_JavaArray.c +474 -0
  357. data/vendor/tracemonkey/liveconnect/jsj_JavaClass.c +737 -0
  358. data/vendor/tracemonkey/liveconnect/jsj_JavaMember.c +191 -0
  359. data/vendor/tracemonkey/liveconnect/jsj_JavaObject.c +1079 -0
  360. data/vendor/tracemonkey/liveconnect/jsj_JavaPackage.c +569 -0
  361. data/vendor/tracemonkey/liveconnect/jsj_array.c +207 -0
  362. data/vendor/tracemonkey/liveconnect/jsj_class.c +770 -0
  363. data/vendor/tracemonkey/liveconnect/jsj_convert.c +902 -0
  364. data/vendor/tracemonkey/liveconnect/jsj_field.c +421 -0
  365. data/vendor/tracemonkey/liveconnect/jsj_hash.c +488 -0
  366. data/vendor/tracemonkey/liveconnect/jsj_hash.h +161 -0
  367. data/vendor/tracemonkey/liveconnect/jsj_method.c +1825 -0
  368. data/vendor/tracemonkey/liveconnect/jsj_nodl.c +1 -0
  369. data/vendor/tracemonkey/liveconnect/jsj_private.h +677 -0
  370. data/vendor/tracemonkey/liveconnect/jsj_simpleapi.c +219 -0
  371. data/vendor/tracemonkey/liveconnect/jsj_utils.c +513 -0
  372. data/vendor/tracemonkey/liveconnect/jsjava.h +316 -0
  373. data/vendor/tracemonkey/liveconnect/netscape_javascript_JSObject.h +155 -0
  374. data/vendor/tracemonkey/liveconnect/nsCLiveconnect.cpp +785 -0
  375. data/vendor/tracemonkey/liveconnect/nsCLiveconnect.h +197 -0
  376. data/vendor/tracemonkey/liveconnect/nsCLiveconnectFactory.cpp +118 -0
  377. data/vendor/tracemonkey/liveconnect/nsCLiveconnectFactory.h +76 -0
  378. data/vendor/tracemonkey/liveconnect/nsILiveconnect.h +197 -0
  379. data/vendor/tracemonkey/liveconnect/nsISecureLiveconnect.h +94 -0
  380. data/vendor/tracemonkey/liveconnect/nsISecurityContext.h +136 -0
  381. data/vendor/tracemonkey/lock_SunOS.s +119 -0
  382. data/vendor/tracemonkey/mandelbrot-results.js +3 -0
  383. data/vendor/tracemonkey/math-partial-sums.js +32 -0
  384. data/vendor/tracemonkey/math-trace-tests.js +507 -0
  385. data/vendor/tracemonkey/md5.js +289 -0
  386. data/vendor/tracemonkey/nanojit/Assembler.cpp +1984 -0
  387. data/vendor/tracemonkey/nanojit/Assembler.h +375 -0
  388. data/vendor/tracemonkey/nanojit/Fragmento.cpp +651 -0
  389. data/vendor/tracemonkey/nanojit/Fragmento.h +237 -0
  390. data/vendor/tracemonkey/nanojit/LIR.cpp +2314 -0
  391. data/vendor/tracemonkey/nanojit/LIR.h +879 -0
  392. data/vendor/tracemonkey/nanojit/LIRopcode.tbl +252 -0
  393. data/vendor/tracemonkey/nanojit/Native.h +127 -0
  394. data/vendor/tracemonkey/nanojit/NativeARM.cpp +1742 -0
  395. data/vendor/tracemonkey/nanojit/NativeARM.h +844 -0
  396. data/vendor/tracemonkey/nanojit/NativeSparc.cpp +1130 -0
  397. data/vendor/tracemonkey/nanojit/NativeSparc.h +948 -0
  398. data/vendor/tracemonkey/nanojit/NativeThumb.cpp +1322 -0
  399. data/vendor/tracemonkey/nanojit/NativeThumb.h +525 -0
  400. data/vendor/tracemonkey/nanojit/Nativei386.cpp +1748 -0
  401. data/vendor/tracemonkey/nanojit/Nativei386.h +857 -0
  402. data/vendor/tracemonkey/nanojit/RegAlloc.cpp +183 -0
  403. data/vendor/tracemonkey/nanojit/RegAlloc.h +95 -0
  404. data/vendor/tracemonkey/nanojit/TraceTreeDrawer.cpp +306 -0
  405. data/vendor/tracemonkey/nanojit/TraceTreeDrawer.h +88 -0
  406. data/vendor/tracemonkey/nanojit/avmplus.cpp +56 -0
  407. data/vendor/tracemonkey/nanojit/avmplus.h +1016 -0
  408. data/vendor/tracemonkey/nanojit/nanojit.h +253 -0
  409. data/vendor/tracemonkey/perfect.js +39 -0
  410. data/vendor/tracemonkey/plify_jsdhash.sed +35 -0
  411. data/vendor/tracemonkey/prmjtime.cpp +869 -0
  412. data/vendor/tracemonkey/prmjtime.h +103 -0
  413. data/vendor/tracemonkey/ref-config/AIX4.1.mk +65 -0
  414. data/vendor/tracemonkey/ref-config/AIX4.2.mk +64 -0
  415. data/vendor/tracemonkey/ref-config/AIX4.3.mk +65 -0
  416. data/vendor/tracemonkey/ref-config/Darwin.mk +85 -0
  417. data/vendor/tracemonkey/ref-config/Darwin1.3.mk +81 -0
  418. data/vendor/tracemonkey/ref-config/Darwin1.4.mk +41 -0
  419. data/vendor/tracemonkey/ref-config/Darwin5.2.mk +81 -0
  420. data/vendor/tracemonkey/ref-config/Darwin5.3.mk +81 -0
  421. data/vendor/tracemonkey/ref-config/Darwin64.mk +72 -0
  422. data/vendor/tracemonkey/ref-config/HP-UXB.10.10.mk +77 -0
  423. data/vendor/tracemonkey/ref-config/HP-UXB.10.20.mk +77 -0
  424. data/vendor/tracemonkey/ref-config/HP-UXB.11.00.mk +80 -0
  425. data/vendor/tracemonkey/ref-config/IRIX.mk +87 -0
  426. data/vendor/tracemonkey/ref-config/IRIX5.3.mk +44 -0
  427. data/vendor/tracemonkey/ref-config/IRIX6.1.mk +44 -0
  428. data/vendor/tracemonkey/ref-config/IRIX6.2.mk +44 -0
  429. data/vendor/tracemonkey/ref-config/IRIX6.3.mk +44 -0
  430. data/vendor/tracemonkey/ref-config/IRIX6.5.mk +44 -0
  431. data/vendor/tracemonkey/ref-config/Linux_All.mk +105 -0
  432. data/vendor/tracemonkey/ref-config/Mac_OS10.0.mk +82 -0
  433. data/vendor/tracemonkey/ref-config/OSF1V4.0.mk +72 -0
  434. data/vendor/tracemonkey/ref-config/OSF1V5.0.mk +69 -0
  435. data/vendor/tracemonkey/ref-config/SunOS4.1.4.mk +101 -0
  436. data/vendor/tracemonkey/ref-config/SunOS5.10.mk +50 -0
  437. data/vendor/tracemonkey/ref-config/SunOS5.3.mk +91 -0
  438. data/vendor/tracemonkey/ref-config/SunOS5.4.mk +92 -0
  439. data/vendor/tracemonkey/ref-config/SunOS5.5.1.mk +44 -0
  440. data/vendor/tracemonkey/ref-config/SunOS5.5.mk +87 -0
  441. data/vendor/tracemonkey/ref-config/SunOS5.6.mk +89 -0
  442. data/vendor/tracemonkey/ref-config/SunOS5.7.mk +44 -0
  443. data/vendor/tracemonkey/ref-config/SunOS5.8.mk +44 -0
  444. data/vendor/tracemonkey/ref-config/SunOS5.9.mk +44 -0
  445. data/vendor/tracemonkey/ref-config/WINNT4.0.mk +118 -0
  446. data/vendor/tracemonkey/ref-config/WINNT5.0.mk +118 -0
  447. data/vendor/tracemonkey/ref-config/WINNT5.1.mk +118 -0
  448. data/vendor/tracemonkey/ref-config/WINNT5.2.mk +118 -0
  449. data/vendor/tracemonkey/ref-config/WINNT6.0.mk +118 -0
  450. data/vendor/tracemonkey/ref-config/dgux.mk +64 -0
  451. data/vendor/tracemonkey/resource.h +15 -0
  452. data/vendor/tracemonkey/rules.mk +206 -0
  453. data/vendor/tracemonkey/shell/Makefile.in +72 -0
  454. data/vendor/tracemonkey/shell/js.cpp +4719 -0
  455. data/vendor/tracemonkey/t/3d-cube.js +337 -0
  456. data/vendor/tracemonkey/t/3d-morph.js +54 -0
  457. data/vendor/tracemonkey/t/3d-raytrace.js +441 -0
  458. data/vendor/tracemonkey/t/access-binary-trees.js +50 -0
  459. data/vendor/tracemonkey/t/access-fannkuch.js +66 -0
  460. data/vendor/tracemonkey/t/access-nbody.js +169 -0
  461. data/vendor/tracemonkey/t/access-nsieve.js +38 -0
  462. data/vendor/tracemonkey/t/bitops-3bit-bits-in-byte.js +32 -0
  463. data/vendor/tracemonkey/t/bitops-bits-in-byte.js +21 -0
  464. data/vendor/tracemonkey/t/bitops-bitwise-and.js +28 -0
  465. data/vendor/tracemonkey/t/bitops-nsieve-bits.js +32 -0
  466. data/vendor/tracemonkey/t/controlflow-recursive.js +25 -0
  467. data/vendor/tracemonkey/t/crypto-aes.js +422 -0
  468. data/vendor/tracemonkey/t/crypto-md5.js +286 -0
  469. data/vendor/tracemonkey/t/crypto-sha1.js +224 -0
  470. data/vendor/tracemonkey/t/date-format-tofte.js +299 -0
  471. data/vendor/tracemonkey/t/date-format-xparb.js +417 -0
  472. data/vendor/tracemonkey/t/math-cordic.js +95 -0
  473. data/vendor/tracemonkey/t/math-partial-sums.js +33 -0
  474. data/vendor/tracemonkey/t/math-spectral-norm.js +51 -0
  475. data/vendor/tracemonkey/t/regexp-dna.js +1712 -0
  476. data/vendor/tracemonkey/t/string-base64.js +135 -0
  477. data/vendor/tracemonkey/t/string-fasta.js +85 -0
  478. data/vendor/tracemonkey/t/string-tagcloud.js +265 -0
  479. data/vendor/tracemonkey/t/string-unpack-code.js +68 -0
  480. data/vendor/tracemonkey/t/string-validate-input.js +89 -0
  481. data/vendor/tracemonkey/time.sh +13 -0
  482. data/vendor/tracemonkey/trace-test.js +5564 -0
  483. data/vendor/tracemonkey/v8/base.js +187 -0
  484. data/vendor/tracemonkey/v8/crypto.js +1689 -0
  485. data/vendor/tracemonkey/v8/deltablue.js +880 -0
  486. data/vendor/tracemonkey/v8/earley-boyer.js +4682 -0
  487. data/vendor/tracemonkey/v8/raytrace.js +3418 -0
  488. data/vendor/tracemonkey/v8/richards.js +539 -0
  489. data/vendor/tracemonkey/v8/run-crypto.js +44 -0
  490. data/vendor/tracemonkey/v8/run-deltablue.js +44 -0
  491. data/vendor/tracemonkey/v8/run-earley-boyer.js +44 -0
  492. data/vendor/tracemonkey/v8/run-raytrace.js +44 -0
  493. data/vendor/tracemonkey/v8/run-richards.js +44 -0
  494. data/vendor/tracemonkey/v8/run.js +49 -0
  495. data/vendor/tracemonkey/vprof/readme.txt +93 -0
  496. data/vendor/tracemonkey/vprof/vprof.cpp +360 -0
  497. data/vendor/tracemonkey/vprof/vprof.h +245 -0
  498. data/vendor/tracemonkey/xpconnect/Makefile.in +67 -0
  499. data/vendor/tracemonkey/xpconnect/crashtests/117307-1.html +20 -0
  500. data/vendor/tracemonkey/xpconnect/crashtests/193710.html +11 -0
  501. data/vendor/tracemonkey/xpconnect/crashtests/290162-1.html +5 -0
  502. data/vendor/tracemonkey/xpconnect/crashtests/326615-1.html +16 -0
  503. data/vendor/tracemonkey/xpconnect/crashtests/328553-1.html +13 -0
  504. data/vendor/tracemonkey/xpconnect/crashtests/346258-1.html +12 -0
  505. data/vendor/tracemonkey/xpconnect/crashtests/346512-1-frame1.xhtml +16 -0
  506. data/vendor/tracemonkey/xpconnect/crashtests/346512-1-frame2.xhtml +15 -0
  507. data/vendor/tracemonkey/xpconnect/crashtests/346512-1.xhtml +30 -0
  508. data/vendor/tracemonkey/xpconnect/crashtests/382133-1.html +3 -0
  509. data/vendor/tracemonkey/xpconnect/crashtests/386680-1.html +22 -0
  510. data/vendor/tracemonkey/xpconnect/crashtests/394810-1.html +4 -0
  511. data/vendor/tracemonkey/xpconnect/crashtests/400349-1.html +20 -0
  512. data/vendor/tracemonkey/xpconnect/crashtests/403356-1.html +13 -0
  513. data/vendor/tracemonkey/xpconnect/crashtests/418139-1.svg +22 -0
  514. data/vendor/tracemonkey/xpconnect/crashtests/420513-1.html +11 -0
  515. data/vendor/tracemonkey/xpconnect/crashtests/453935-1.html +37 -0
  516. data/vendor/tracemonkey/xpconnect/crashtests/462926.html +12 -0
  517. data/vendor/tracemonkey/xpconnect/crashtests/468552-1.html +18 -0
  518. data/vendor/tracemonkey/xpconnect/crashtests/471366-1.html +12 -0
  519. data/vendor/tracemonkey/xpconnect/crashtests/475185-1.html +13 -0
  520. data/vendor/tracemonkey/xpconnect/crashtests/475291-1.html +14 -0
  521. data/vendor/tracemonkey/xpconnect/crashtests/503286-1.html +23 -0
  522. data/vendor/tracemonkey/xpconnect/crashtests/crashtests.list +21 -0
  523. data/vendor/tracemonkey/xpconnect/idl/Makefile.in +78 -0
  524. data/vendor/tracemonkey/xpconnect/idl/XPCIDispatch.idl +51 -0
  525. data/vendor/tracemonkey/xpconnect/idl/mozIJSSubScriptLoader.idl +64 -0
  526. data/vendor/tracemonkey/xpconnect/idl/nsIActiveXSecurityPolicy.idl +67 -0
  527. data/vendor/tracemonkey/xpconnect/idl/nsIDispatchSupport.idl +119 -0
  528. data/vendor/tracemonkey/xpconnect/idl/nsIJSContextStack.idl +85 -0
  529. data/vendor/tracemonkey/xpconnect/idl/nsIJSRuntimeService.idl +51 -0
  530. data/vendor/tracemonkey/xpconnect/idl/nsIScriptError.idl +102 -0
  531. data/vendor/tracemonkey/xpconnect/idl/nsIScriptableInterfaces.idl +67 -0
  532. data/vendor/tracemonkey/xpconnect/idl/nsIXPCScriptNotify.idl +66 -0
  533. data/vendor/tracemonkey/xpconnect/idl/nsIXPCScriptable.idl +183 -0
  534. data/vendor/tracemonkey/xpconnect/idl/nsIXPCSecurityManager.idl +114 -0
  535. data/vendor/tracemonkey/xpconnect/idl/nsIXPConnect.idl +819 -0
  536. data/vendor/tracemonkey/xpconnect/idl/xpcIJSModuleLoader.idl +95 -0
  537. data/vendor/tracemonkey/xpconnect/idl/xpcIJSWeakReference.idl +49 -0
  538. data/vendor/tracemonkey/xpconnect/idl/xpccomponents.idl +254 -0
  539. data/vendor/tracemonkey/xpconnect/idl/xpcexception.idl +66 -0
  540. data/vendor/tracemonkey/xpconnect/idl/xpcjsid.idl +83 -0
  541. data/vendor/tracemonkey/xpconnect/loader/ISO8601DateUtils.jsm +176 -0
  542. data/vendor/tracemonkey/xpconnect/loader/Makefile.in +63 -0
  543. data/vendor/tracemonkey/xpconnect/loader/XPCOMUtils.jsm +267 -0
  544. data/vendor/tracemonkey/xpconnect/loader/mozJSComponentLoader.cpp +1717 -0
  545. data/vendor/tracemonkey/xpconnect/loader/mozJSComponentLoader.h +172 -0
  546. data/vendor/tracemonkey/xpconnect/loader/mozJSLoaderConstructors.h +101 -0
  547. data/vendor/tracemonkey/xpconnect/loader/mozJSSubScriptLoader.cpp +360 -0
  548. data/vendor/tracemonkey/xpconnect/loader/mozJSSubScriptLoader.h +66 -0
  549. data/vendor/tracemonkey/xpconnect/public/Makefile.in +54 -0
  550. data/vendor/tracemonkey/xpconnect/public/nsAXPCNativeCallContext.h +89 -0
  551. data/vendor/tracemonkey/xpconnect/public/nsAutoJSValHolder.h +168 -0
  552. data/vendor/tracemonkey/xpconnect/public/xpc_map_end.h +327 -0
  553. data/vendor/tracemonkey/xpconnect/sample/Makefile.in +71 -0
  554. data/vendor/tracemonkey/xpconnect/sample/README +39 -0
  555. data/vendor/tracemonkey/xpconnect/sample/xpcsample1.cpp +337 -0
  556. data/vendor/tracemonkey/xpconnect/sample/xpcsample1.idl +82 -0
  557. data/vendor/tracemonkey/xpconnect/sample/xpcsample1.js +21 -0
  558. data/vendor/tracemonkey/xpconnect/shell/Makefile.in +106 -0
  559. data/vendor/tracemonkey/xpconnect/shell/jsshell.msg +50 -0
  560. data/vendor/tracemonkey/xpconnect/shell/xpcshell.cpp +1817 -0
  561. data/vendor/tracemonkey/xpconnect/shell/xpcshellMacUtils.h +43 -0
  562. data/vendor/tracemonkey/xpconnect/shell/xpcshellMacUtils.mm +54 -0
  563. data/vendor/tracemonkey/xpconnect/src/Makefile.in +228 -0
  564. data/vendor/tracemonkey/xpconnect/src/README +3 -0
  565. data/vendor/tracemonkey/xpconnect/src/XPCCrossOriginWrapper.cpp +1186 -0
  566. data/vendor/tracemonkey/xpconnect/src/XPCDispConvert.cpp +593 -0
  567. data/vendor/tracemonkey/xpconnect/src/XPCDispInlines.h +667 -0
  568. data/vendor/tracemonkey/xpconnect/src/XPCDispInterface.cpp +383 -0
  569. data/vendor/tracemonkey/xpconnect/src/XPCDispObject.cpp +516 -0
  570. data/vendor/tracemonkey/xpconnect/src/XPCDispParamPropJSClass.cpp +223 -0
  571. data/vendor/tracemonkey/xpconnect/src/XPCDispParams.cpp +103 -0
  572. data/vendor/tracemonkey/xpconnect/src/XPCDispPrivate.h +1401 -0
  573. data/vendor/tracemonkey/xpconnect/src/XPCDispTearOff.cpp +547 -0
  574. data/vendor/tracemonkey/xpconnect/src/XPCDispTypeInfo.cpp +471 -0
  575. data/vendor/tracemonkey/xpconnect/src/XPCIDispatchClassInfo.cpp +139 -0
  576. data/vendor/tracemonkey/xpconnect/src/XPCIDispatchExtension.cpp +362 -0
  577. data/vendor/tracemonkey/xpconnect/src/XPCNativeWrapper.cpp +1350 -0
  578. data/vendor/tracemonkey/xpconnect/src/XPCNativeWrapper.h +88 -0
  579. data/vendor/tracemonkey/xpconnect/src/XPCSafeJSObjectWrapper.cpp +1148 -0
  580. data/vendor/tracemonkey/xpconnect/src/XPCSystemOnlyWrapper.cpp +718 -0
  581. data/vendor/tracemonkey/xpconnect/src/XPCWrapper.cpp +850 -0
  582. data/vendor/tracemonkey/xpconnect/src/XPCWrapper.h +394 -0
  583. data/vendor/tracemonkey/xpconnect/src/dom_quickstubs.qsconf +568 -0
  584. data/vendor/tracemonkey/xpconnect/src/nsDispatchSupport.cpp +348 -0
  585. data/vendor/tracemonkey/xpconnect/src/nsScriptError.cpp +201 -0
  586. data/vendor/tracemonkey/xpconnect/src/nsXPConnect.cpp +2609 -0
  587. data/vendor/tracemonkey/xpconnect/src/qsgen.py +1487 -0
  588. data/vendor/tracemonkey/xpconnect/src/xpc.msg +217 -0
  589. data/vendor/tracemonkey/xpconnect/src/xpcJSWeakReference.cpp +148 -0
  590. data/vendor/tracemonkey/xpconnect/src/xpcJSWeakReference.h +56 -0
  591. data/vendor/tracemonkey/xpconnect/src/xpccallcontext.cpp +579 -0
  592. data/vendor/tracemonkey/xpconnect/src/xpccomponents.cpp +4144 -0
  593. data/vendor/tracemonkey/xpconnect/src/xpccontext.cpp +115 -0
  594. data/vendor/tracemonkey/xpconnect/src/xpcconvert.cpp +2298 -0
  595. data/vendor/tracemonkey/xpconnect/src/xpcdebug.cpp +481 -0
  596. data/vendor/tracemonkey/xpconnect/src/xpcexception.cpp +502 -0
  597. data/vendor/tracemonkey/xpconnect/src/xpcforwards.h +114 -0
  598. data/vendor/tracemonkey/xpconnect/src/xpcinlines.h +772 -0
  599. data/vendor/tracemonkey/xpconnect/src/xpcjsid.cpp +1025 -0
  600. data/vendor/tracemonkey/xpconnect/src/xpcjsruntime.cpp +1342 -0
  601. data/vendor/tracemonkey/xpconnect/src/xpclog.cpp +128 -0
  602. data/vendor/tracemonkey/xpconnect/src/xpclog.h +101 -0
  603. data/vendor/tracemonkey/xpconnect/src/xpcmaps.cpp +761 -0
  604. data/vendor/tracemonkey/xpconnect/src/xpcmaps.h +713 -0
  605. data/vendor/tracemonkey/xpconnect/src/xpcmodule.cpp +136 -0
  606. data/vendor/tracemonkey/xpconnect/src/xpcprivate.h +4138 -0
  607. data/vendor/tracemonkey/xpconnect/src/xpcquickstubs.cpp +1128 -0
  608. data/vendor/tracemonkey/xpconnect/src/xpcquickstubs.h +480 -0
  609. data/vendor/tracemonkey/xpconnect/src/xpcruntimesvc.cpp +179 -0
  610. data/vendor/tracemonkey/xpconnect/src/xpcstack.cpp +342 -0
  611. data/vendor/tracemonkey/xpconnect/src/xpcstring.cpp +139 -0
  612. data/vendor/tracemonkey/xpconnect/src/xpcthreadcontext.cpp +599 -0
  613. data/vendor/tracemonkey/xpconnect/src/xpcthrower.cpp +399 -0
  614. data/vendor/tracemonkey/xpconnect/src/xpcvariant.cpp +850 -0
  615. data/vendor/tracemonkey/xpconnect/src/xpcwrappedjs.cpp +670 -0
  616. data/vendor/tracemonkey/xpconnect/src/xpcwrappedjsclass.cpp +2015 -0
  617. data/vendor/tracemonkey/xpconnect/src/xpcwrappednative.cpp +3482 -0
  618. data/vendor/tracemonkey/xpconnect/src/xpcwrappednativeinfo.cpp +945 -0
  619. data/vendor/tracemonkey/xpconnect/src/xpcwrappednativejsops.cpp +2003 -0
  620. data/vendor/tracemonkey/xpconnect/src/xpcwrappednativeproto.cpp +302 -0
  621. data/vendor/tracemonkey/xpconnect/src/xpcwrappednativescope.cpp +991 -0
  622. data/vendor/tracemonkey/xpconnect/tests/Makefile.in +75 -0
  623. data/vendor/tracemonkey/xpconnect/tests/TestXPC.cpp +785 -0
  624. data/vendor/tracemonkey/xpconnect/tests/chrome/Makefile.in +51 -0
  625. data/vendor/tracemonkey/xpconnect/tests/chrome/test_bug500931.xul +43 -0
  626. data/vendor/tracemonkey/xpconnect/tests/components/Makefile.in +85 -0
  627. data/vendor/tracemonkey/xpconnect/tests/components/xpctest_array.cpp +388 -0
  628. data/vendor/tracemonkey/xpconnect/tests/components/xpctest_attributes.cpp +305 -0
  629. data/vendor/tracemonkey/xpconnect/tests/components/xpctest_calljs.cpp +135 -0
  630. data/vendor/tracemonkey/xpconnect/tests/components/xpctest_child.cpp +225 -0
  631. data/vendor/tracemonkey/xpconnect/tests/components/xpctest_const.cpp +76 -0
  632. data/vendor/tracemonkey/xpconnect/tests/components/xpctest_domstring.cpp +118 -0
  633. data/vendor/tracemonkey/xpconnect/tests/components/xpctest_echo.cpp +616 -0
  634. data/vendor/tracemonkey/xpconnect/tests/components/xpctest_in.cpp +204 -0
  635. data/vendor/tracemonkey/xpconnect/tests/components/xpctest_inout.cpp +171 -0
  636. data/vendor/tracemonkey/xpconnect/tests/components/xpctest_module.cpp +77 -0
  637. data/vendor/tracemonkey/xpconnect/tests/components/xpctest_multiple.cpp +554 -0
  638. data/vendor/tracemonkey/xpconnect/tests/components/xpctest_noisy.cpp +154 -0
  639. data/vendor/tracemonkey/xpconnect/tests/components/xpctest_out.cpp +335 -0
  640. data/vendor/tracemonkey/xpconnect/tests/components/xpctest_overloaded.cpp +250 -0
  641. data/vendor/tracemonkey/xpconnect/tests/components/xpctest_private.h +192 -0
  642. data/vendor/tracemonkey/xpconnect/tests/components/xpctest_string.cpp +185 -0
  643. data/vendor/tracemonkey/xpconnect/tests/components/xpctest_variant.cpp +355 -0
  644. data/vendor/tracemonkey/xpconnect/tests/idispatch/COM/StdAfx.cpp +12 -0
  645. data/vendor/tracemonkey/xpconnect/tests/idispatch/COM/StdAfx.h +28 -0
  646. data/vendor/tracemonkey/xpconnect/tests/idispatch/COM/XPCDispUtilities.h +28 -0
  647. data/vendor/tracemonkey/xpconnect/tests/idispatch/COM/XPCIDispatchTest.cpp +86 -0
  648. data/vendor/tracemonkey/xpconnect/tests/idispatch/COM/XPCIDispatchTest.def +9 -0
  649. data/vendor/tracemonkey/xpconnect/tests/idispatch/COM/XPCIDispatchTest.dsp +318 -0
  650. data/vendor/tracemonkey/xpconnect/tests/idispatch/COM/XPCIDispatchTest.dsw +29 -0
  651. data/vendor/tracemonkey/xpconnect/tests/idispatch/COM/XPCIDispatchTest.idl +454 -0
  652. data/vendor/tracemonkey/xpconnect/tests/idispatch/COM/XPCIDispatchTest.rc +145 -0
  653. data/vendor/tracemonkey/xpconnect/tests/idispatch/COM/nsXPCDispSimple.cpp +44 -0
  654. data/vendor/tracemonkey/xpconnect/tests/idispatch/COM/nsXPCDispSimple.h +56 -0
  655. data/vendor/tracemonkey/xpconnect/tests/idispatch/COM/nsXPCDispSimple.rgs +23 -0
  656. data/vendor/tracemonkey/xpconnect/tests/idispatch/COM/nsXPCDispTestArrays.cpp +221 -0
  657. data/vendor/tracemonkey/xpconnect/tests/idispatch/COM/nsXPCDispTestArrays.h +53 -0
  658. data/vendor/tracemonkey/xpconnect/tests/idispatch/COM/nsXPCDispTestArrays.rgs +23 -0
  659. data/vendor/tracemonkey/xpconnect/tests/idispatch/COM/nsXPCDispTestMethods.cpp +699 -0
  660. data/vendor/tracemonkey/xpconnect/tests/idispatch/COM/nsXPCDispTestMethods.h +138 -0
  661. data/vendor/tracemonkey/xpconnect/tests/idispatch/COM/nsXPCDispTestMethods.rgs +23 -0
  662. data/vendor/tracemonkey/xpconnect/tests/idispatch/COM/nsXPCDispTestNoIDispatch.cpp +23 -0
  663. data/vendor/tracemonkey/xpconnect/tests/idispatch/COM/nsXPCDispTestNoIDispatch.h +41 -0
  664. data/vendor/tracemonkey/xpconnect/tests/idispatch/COM/nsXPCDispTestNoIDispatch.rgs +23 -0
  665. data/vendor/tracemonkey/xpconnect/tests/idispatch/COM/nsXPCDispTestProperties.cpp +256 -0
  666. data/vendor/tracemonkey/xpconnect/tests/idispatch/COM/nsXPCDispTestProperties.h +88 -0
  667. data/vendor/tracemonkey/xpconnect/tests/idispatch/COM/nsXPCDispTestProperties.rgs +23 -0
  668. data/vendor/tracemonkey/xpconnect/tests/idispatch/COM/nsXPCDispTestScriptOff.cpp +23 -0
  669. data/vendor/tracemonkey/xpconnect/tests/idispatch/COM/nsXPCDispTestScriptOff.h +43 -0
  670. data/vendor/tracemonkey/xpconnect/tests/idispatch/COM/nsXPCDispTestScriptOff.rgs +23 -0
  671. data/vendor/tracemonkey/xpconnect/tests/idispatch/COM/nsXPCDispTestScriptOn.cpp +29 -0
  672. data/vendor/tracemonkey/xpconnect/tests/idispatch/COM/nsXPCDispTestScriptOn.h +45 -0
  673. data/vendor/tracemonkey/xpconnect/tests/idispatch/COM/nsXPCDispTestScriptOn.rgs +23 -0
  674. data/vendor/tracemonkey/xpconnect/tests/idispatch/COM/nsXPCDispTestWrappedJS.cpp +177 -0
  675. data/vendor/tracemonkey/xpconnect/tests/idispatch/COM/nsXPCDispTestWrappedJS.h +50 -0
  676. data/vendor/tracemonkey/xpconnect/tests/idispatch/COM/nsXPCDispTestWrappedJS.rgs +23 -0
  677. data/vendor/tracemonkey/xpconnect/tests/idispatch/COM/resource.h +36 -0
  678. data/vendor/tracemonkey/xpconnect/tests/idispatch/Tests/WrappedCOM/Arrays/XPCIDispatchArrayTests.js +54 -0
  679. data/vendor/tracemonkey/xpconnect/tests/idispatch/Tests/WrappedCOM/Attributes/XPCIDispatchAttributeTests.js +150 -0
  680. data/vendor/tracemonkey/xpconnect/tests/idispatch/Tests/WrappedCOM/General/XPCIDispatchInstantiations.js +122 -0
  681. data/vendor/tracemonkey/xpconnect/tests/idispatch/Tests/WrappedCOM/General/XPCStress.js +58 -0
  682. data/vendor/tracemonkey/xpconnect/tests/idispatch/Tests/WrappedCOM/Methods/XPCIDispatchMethodTests.js +376 -0
  683. data/vendor/tracemonkey/xpconnect/tests/idispatch/Tests/WrappedCOM/shell.js +377 -0
  684. data/vendor/tracemonkey/xpconnect/tests/idispatch/Tests/WrappedJS/General/XPCIDispatchTestWrappedJS.js +76 -0
  685. data/vendor/tracemonkey/xpconnect/tests/idispatch/Tests/WrappedJS/shell.js +377 -0
  686. data/vendor/tracemonkey/xpconnect/tests/idispatch/Tests/exectests.cmd +1 -0
  687. data/vendor/tracemonkey/xpconnect/tests/idispatch/Tests/jsDriver.pl +1288 -0
  688. data/vendor/tracemonkey/xpconnect/tests/idl/Makefile.in +61 -0
  689. data/vendor/tracemonkey/xpconnect/tests/idl/xpctest.idl +312 -0
  690. data/vendor/tracemonkey/xpconnect/tests/idl/xpctest2.idl +51 -0
  691. data/vendor/tracemonkey/xpconnect/tests/idl/xpctest_attributes.idl +67 -0
  692. data/vendor/tracemonkey/xpconnect/tests/idl/xpctest_calljs.idl +59 -0
  693. data/vendor/tracemonkey/xpconnect/tests/idl/xpctest_const.idl +61 -0
  694. data/vendor/tracemonkey/xpconnect/tests/idl/xpctest_domstring.idl +59 -0
  695. data/vendor/tracemonkey/xpconnect/tests/idl/xpctest_in.idl +88 -0
  696. data/vendor/tracemonkey/xpconnect/tests/idl/xpctest_inout.idl +86 -0
  697. data/vendor/tracemonkey/xpconnect/tests/idl/xpctest_multiple.idl +77 -0
  698. data/vendor/tracemonkey/xpconnect/tests/idl/xpctest_out.idl +142 -0
  699. data/vendor/tracemonkey/xpconnect/tests/js/checkid.js +82 -0
  700. data/vendor/tracemonkey/xpconnect/tests/js/evaluate.js +311 -0
  701. data/vendor/tracemonkey/xpconnect/tests/js/exceptions-2.js +153 -0
  702. data/vendor/tracemonkey/xpconnect/tests/js/exceptions-3.js +194 -0
  703. data/vendor/tracemonkey/xpconnect/tests/js/exceptions-4.js +297 -0
  704. data/vendor/tracemonkey/xpconnect/tests/js/exceptions-5.js +343 -0
  705. data/vendor/tracemonkey/xpconnect/tests/js/exceptions.js +230 -0
  706. data/vendor/tracemonkey/xpconnect/tests/js/javascript.js +96 -0
  707. data/vendor/tracemonkey/xpconnect/tests/js/multiple-2.js +151 -0
  708. data/vendor/tracemonkey/xpconnect/tests/js/multiple-3.js +148 -0
  709. data/vendor/tracemonkey/xpconnect/tests/js/multiple-4.js +152 -0
  710. data/vendor/tracemonkey/xpconnect/tests/js/multiple.js +137 -0
  711. data/vendor/tracemonkey/xpconnect/tests/js/notscriptable.js +104 -0
  712. data/vendor/tracemonkey/xpconnect/tests/js/old/simpletest.js +36 -0
  713. data/vendor/tracemonkey/xpconnect/tests/js/old/speed.js +60 -0
  714. data/vendor/tracemonkey/xpconnect/tests/js/old/testxpc.js +464 -0
  715. data/vendor/tracemonkey/xpconnect/tests/js/old/threads.js +74 -0
  716. data/vendor/tracemonkey/xpconnect/tests/js/old/try.js +27 -0
  717. data/vendor/tracemonkey/xpconnect/tests/js/old/xpctest_array.js +308 -0
  718. data/vendor/tracemonkey/xpconnect/tests/js/old/xpctest_callcontext.js +68 -0
  719. data/vendor/tracemonkey/xpconnect/tests/js/old/xpctest_echo.js +636 -0
  720. data/vendor/tracemonkey/xpconnect/tests/js/old/xpctest_enum_and_sort.js +28 -0
  721. data/vendor/tracemonkey/xpconnect/tests/js/old/xpctest_enum_constants.js +15 -0
  722. data/vendor/tracemonkey/xpconnect/tests/js/old/xpctest_enum_create.js +200 -0
  723. data/vendor/tracemonkey/xpconnect/tests/js/old/xpctest_exceptions.js +167 -0
  724. data/vendor/tracemonkey/xpconnect/tests/js/old/xpctest_ids.js +135 -0
  725. data/vendor/tracemonkey/xpconnect/tests/js/old/xpctest_observer.js +36 -0
  726. data/vendor/tracemonkey/xpconnect/tests/js/old/xpctest_overloaded.js +14 -0
  727. data/vendor/tracemonkey/xpconnect/tests/js/old/xpctest_primitives.js +141 -0
  728. data/vendor/tracemonkey/xpconnect/tests/js/old/xpctest_propertybag.js +36 -0
  729. data/vendor/tracemonkey/xpconnect/tests/js/old/xpctest_variant.js +339 -0
  730. data/vendor/tracemonkey/xpconnect/tests/js/old/xpctest_variant_array.js +30 -0
  731. data/vendor/tracemonkey/xpconnect/tests/js/readonlyattributes.js +74 -0
  732. data/vendor/tracemonkey/xpconnect/tests/js/readwriteattributes.js +101 -0
  733. data/vendor/tracemonkey/xpconnect/tests/js/scriptable.js +120 -0
  734. data/vendor/tracemonkey/xpconnect/tests/js/testin.js +203 -0
  735. data/vendor/tracemonkey/xpconnect/tests/js/xpcfun.js +234 -0
  736. data/vendor/tracemonkey/xpconnect/tests/js/xpctest_primitives.js +200 -0
  737. data/vendor/tracemonkey/xpconnect/tests/mochitest/Makefile.in +66 -0
  738. data/vendor/tracemonkey/xpconnect/tests/mochitest/bug500931_helper.html +7 -0
  739. data/vendor/tracemonkey/xpconnect/tests/mochitest/inner.html +7 -0
  740. data/vendor/tracemonkey/xpconnect/tests/mochitest/test_bug361111.xul +29 -0
  741. data/vendor/tracemonkey/xpconnect/tests/mochitest/test_bug384632.html +32 -0
  742. data/vendor/tracemonkey/xpconnect/tests/mochitest/test_bug390488.html +65 -0
  743. data/vendor/tracemonkey/xpconnect/tests/mochitest/test_bug393269.html +46 -0
  744. data/vendor/tracemonkey/xpconnect/tests/mochitest/test_bug396851.html +43 -0
  745. data/vendor/tracemonkey/xpconnect/tests/mochitest/test_bug428021.html +41 -0
  746. data/vendor/tracemonkey/xpconnect/tests/mochitest/test_bug446584.html +49 -0
  747. data/vendor/tracemonkey/xpconnect/tests/mochitest/test_bug448587.html +31 -0
  748. data/vendor/tracemonkey/xpconnect/tests/mochitest/test_bug462428.html +42 -0
  749. data/vendor/tracemonkey/xpconnect/tests/mochitest/test_bug478438.html +66 -0
  750. data/vendor/tracemonkey/xpconnect/tests/mochitest/test_bug484107.html +100 -0
  751. data/vendor/tracemonkey/xpconnect/tests/mochitest/test_bug484459.html +36 -0
  752. data/vendor/tracemonkey/xpconnect/tests/mochitest/test_bug500691.html +28 -0
  753. data/vendor/tracemonkey/xpconnect/tests/mochitest/test_wrappers.html +116 -0
  754. data/vendor/tracemonkey/xpconnect/tests/unit/bogus_element_type.jsm +1 -0
  755. data/vendor/tracemonkey/xpconnect/tests/unit/bogus_exports_type.jsm +1 -0
  756. data/vendor/tracemonkey/xpconnect/tests/unit/bug451678_subscript.js +2 -0
  757. data/vendor/tracemonkey/xpconnect/tests/unit/component_import.js +144 -0
  758. data/vendor/tracemonkey/xpconnect/tests/unit/recursive_importA.jsm +44 -0
  759. data/vendor/tracemonkey/xpconnect/tests/unit/recursive_importB.jsm +45 -0
  760. data/vendor/tracemonkey/xpconnect/tests/unit/syntax_error.jsm +1 -0
  761. data/vendor/tracemonkey/xpconnect/tests/unit/test_bogus_files.js +88 -0
  762. data/vendor/tracemonkey/xpconnect/tests/unit/test_bug408412.js +51 -0
  763. data/vendor/tracemonkey/xpconnect/tests/unit/test_bug451678.js +52 -0
  764. data/vendor/tracemonkey/xpconnect/tests/unit/test_bug_442086.js +68 -0
  765. data/vendor/tracemonkey/xpconnect/tests/unit/test_import.js +127 -0
  766. data/vendor/tracemonkey/xpconnect/tests/unit/test_js_weak_references.js +63 -0
  767. data/vendor/tracemonkey/xpconnect/tests/unit/test_recursive_import.js +62 -0
  768. data/vendor/tracemonkey/xpconnect/tools/Makefile.in +49 -0
  769. data/vendor/tracemonkey/xpconnect/tools/idl/Makefile.in +53 -0
  770. data/vendor/tracemonkey/xpconnect/tools/idl/nsIXPCToolsCompiler.idl +60 -0
  771. data/vendor/tracemonkey/xpconnect/tools/idl/nsIXPCToolsProfiler.idl +57 -0
  772. data/vendor/tracemonkey/xpconnect/tools/js/CompileJSFiles.js +28 -0
  773. data/vendor/tracemonkey/xpconnect/tools/js/ListJSFiles.js +18 -0
  774. data/vendor/tracemonkey/xpconnect/tools/src/Makefile.in +76 -0
  775. data/vendor/tracemonkey/xpconnect/tools/src/nsXPCToolsCompiler.cpp +161 -0
  776. data/vendor/tracemonkey/xpconnect/tools/src/nsXPCToolsModule.cpp +65 -0
  777. data/vendor/tracemonkey/xpconnect/tools/src/nsXPCToolsProfiler.cpp +370 -0
  778. data/vendor/tracemonkey/xpconnect/tools/src/xpctools_private.h +236 -0
  779. metadata +782 -107
  780. data/test/johnson/nodes/export_test.rb +0 -9
  781. data/test/johnson/nodes/import_test.rb +0 -13
  782. data/test/johnson/version_test.rb +0 -13
@@ -0,0 +1,66 @@
1
+ /* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
2
+ *
3
+ * ***** BEGIN LICENSE BLOCK *****
4
+ * Version: MPL 1.1/GPL 2.0/LGPL 2.1
5
+ *
6
+ * The contents of this file are subject to the Mozilla Public License Version
7
+ * 1.1 (the "License"); you may not use this file except in compliance with
8
+ * the License. You may obtain a copy of the License at
9
+ * http://www.mozilla.org/MPL/
10
+ *
11
+ * Software distributed under the License is distributed on an "AS IS" basis,
12
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
13
+ * for the specific language governing rights and limitations under the
14
+ * License.
15
+ *
16
+ * The Original Code is Mozilla Communicator client code, released
17
+ * March 31, 1998.
18
+ *
19
+ * The Initial Developer of the Original Code is
20
+ * Netscape Communications Corporation.
21
+ * Portions created by the Initial Developer are Copyright (C) 2001
22
+ * the Initial Developer. All Rights Reserved.
23
+ *
24
+ * Contributor(s):
25
+ * David Bradley <bradley@netscape.com> (original author)
26
+ *
27
+ * Alternatively, the contents of this file may be used under the terms of
28
+ * either of the GNU General Public License Version 2 or later (the "GPL"),
29
+ * or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
30
+ * in which case the provisions of the GPL or the LGPL are applicable instead
31
+ * of those above. If you wish to allow use of your version of this file only
32
+ * under the terms of either the GPL or the LGPL, and not to allow others to
33
+ * use your version of this file under the terms of the MPL, indicate your
34
+ * decision by deleting the provisions above and replace them with the notice
35
+ * and other provisions required by the GPL or the LGPL. If you do not delete
36
+ * the provisions above, a recipient may use your version of this file under
37
+ * the terms of any one of the MPL, the GPL or the LGPL.
38
+ *
39
+ * ***** END LICENSE BLOCK ***** */
40
+
41
+ /**
42
+ * nsIXPCScriptNotify is an interface that is used for notifying a client
43
+ * that the script has been evaluated by XPConnect. if any JSContext in our
44
+ * JSRuntime has set the JSOPTION_PRIVATE_IS_NSISUPPORTS option and the
45
+ * private context supports nsIXPCScriptNotify then this method is invoked
46
+ */
47
+
48
+
49
+ #include "nsISupports.idl"
50
+
51
+ interface nsIXPConnectWrappedNative;
52
+
53
+ [uuid(b804504d-0025-4d6b-8ced-d94e41102a7f)]
54
+ interface nsIXPCScriptNotify : nsISupports
55
+ {
56
+ /**
57
+ * Method invoked when a script has been executed by XPConnect
58
+ */
59
+ void ScriptExecuted();
60
+
61
+ /**
62
+ * Method invoked to preserve an nsIXPConnectWrappedNative as needed
63
+ */
64
+ void preserveWrapper(in nsIXPConnectWrappedNative wrapper);
65
+ };
66
+
@@ -0,0 +1,183 @@
1
+ /* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
2
+ *
3
+ * ***** BEGIN LICENSE BLOCK *****
4
+ * Version: MPL 1.1/GPL 2.0/LGPL 2.1
5
+ *
6
+ * The contents of this file are subject to the Mozilla Public License Version
7
+ * 1.1 (the "License"); you may not use this file except in compliance with
8
+ * the License. You may obtain a copy of the License at
9
+ * http://www.mozilla.org/MPL/
10
+ *
11
+ * Software distributed under the License is distributed on an "AS IS" basis,
12
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
13
+ * for the specific language governing rights and limitations under the
14
+ * License.
15
+ *
16
+ * The Original Code is Mozilla Communicator client code, released
17
+ * March 31, 1998.
18
+ *
19
+ * The Initial Developer of the Original Code is
20
+ * Netscape Communications Corporation.
21
+ * Portions created by the Initial Developer are Copyright (C) 1998
22
+ * the Initial Developer. All Rights Reserved.
23
+ *
24
+ * Contributor(s):
25
+ * John Bandhauer <jband@netscape.com> (original author)
26
+ *
27
+ * Alternatively, the contents of this file may be used under the terms of
28
+ * either of the GNU General Public License Version 2 or later (the "GPL"),
29
+ * or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
30
+ * in which case the provisions of the GPL or the LGPL are applicable instead
31
+ * of those above. If you wish to allow use of your version of this file only
32
+ * under the terms of either the GPL or the LGPL, and not to allow others to
33
+ * use your version of this file under the terms of the MPL, indicate your
34
+ * decision by deleting the provisions above and replace them with the notice
35
+ * and other provisions required by the GPL or the LGPL. If you do not delete
36
+ * the provisions above, a recipient may use your version of this file under
37
+ * the terms of any one of the MPL, the GPL or the LGPL.
38
+ *
39
+ * ***** END LICENSE BLOCK ***** */
40
+
41
+ #include "nsISupports.idl"
42
+ #include "nsIXPConnect.idl"
43
+
44
+ [ptr] native JSTracerPtr(JSTracer);
45
+
46
+ %{ C++
47
+ #define NS_SUCCESS_I_DID_SOMETHING \
48
+ (NS_ERROR_GENERATE_SUCCESS(NS_ERROR_MODULE_XPCONNECT,1))
49
+ #define NS_SUCCESS_CHROME_ACCESS_ONLY \
50
+ (NS_ERROR_GENERATE_SUCCESS(NS_ERROR_MODULE_XPCONNECT,2))
51
+ %}
52
+
53
+ /**
54
+ * Note: This is not really an XPCOM interface. For example, callers must
55
+ * guarantee that they set the *_retval of the various methods that return a
56
+ * boolean to PR_TRUE before making the call. Implementations may skip writing
57
+ * to *_retval unless they want to return PR_FALSE.
58
+ */
59
+
60
+ [uuid(5d309b93-e9b4-4374-bcd5-44245c83408f)]
61
+ interface nsIXPCScriptable : nsISupports
62
+ {
63
+ /* bitflags used for 'flags' (only 32 bits available!) */
64
+
65
+ const PRUint32 WANT_PRECREATE = 1 << 0;
66
+ const PRUint32 WANT_CREATE = 1 << 1;
67
+ const PRUint32 WANT_POSTCREATE = 1 << 2;
68
+ const PRUint32 WANT_ADDPROPERTY = 1 << 3;
69
+ const PRUint32 WANT_DELPROPERTY = 1 << 4;
70
+ const PRUint32 WANT_GETPROPERTY = 1 << 5;
71
+ const PRUint32 WANT_SETPROPERTY = 1 << 6;
72
+ const PRUint32 WANT_ENUMERATE = 1 << 7;
73
+ const PRUint32 WANT_NEWENUMERATE = 1 << 8;
74
+ const PRUint32 WANT_NEWRESOLVE = 1 << 9;
75
+ const PRUint32 WANT_CONVERT = 1 << 10;
76
+ const PRUint32 WANT_FINALIZE = 1 << 11;
77
+ const PRUint32 WANT_CHECKACCESS = 1 << 12;
78
+ const PRUint32 WANT_CALL = 1 << 13;
79
+ const PRUint32 WANT_CONSTRUCT = 1 << 14;
80
+ const PRUint32 WANT_HASINSTANCE = 1 << 15;
81
+ const PRUint32 WANT_TRACE = 1 << 16;
82
+ const PRUint32 USE_JSSTUB_FOR_ADDPROPERTY = 1 << 17;
83
+ const PRUint32 USE_JSSTUB_FOR_DELPROPERTY = 1 << 18;
84
+ const PRUint32 USE_JSSTUB_FOR_SETPROPERTY = 1 << 19;
85
+ const PRUint32 DONT_ENUM_STATIC_PROPS = 1 << 20;
86
+ const PRUint32 DONT_ENUM_QUERY_INTERFACE = 1 << 21;
87
+ const PRUint32 DONT_ASK_INSTANCE_FOR_SCRIPTABLE = 1 << 22;
88
+ const PRUint32 CLASSINFO_INTERFACES_ONLY = 1 << 23;
89
+ const PRUint32 ALLOW_PROP_MODS_DURING_RESOLVE = 1 << 24;
90
+ const PRUint32 ALLOW_PROP_MODS_TO_PROTOTYPE = 1 << 25;
91
+ const PRUint32 DONT_SHARE_PROTOTYPE = 1 << 26;
92
+ const PRUint32 DONT_REFLECT_INTERFACE_NAMES = 1 << 27;
93
+ const PRUint32 WANT_EQUALITY = 1 << 28;
94
+ const PRUint32 WANT_OUTER_OBJECT = 1 << 29;
95
+ const PRUint32 WANT_INNER_OBJECT = 1 << 30;
96
+
97
+ // The high order bit is RESERVED for consumers of these flags.
98
+ // No implementor of this interface should ever return flags
99
+ // with this bit set.
100
+ const PRUint32 RESERVED = 1 << 31;
101
+
102
+ readonly attribute string className;
103
+ readonly attribute PRUint32 scriptableFlags;
104
+
105
+ void preCreate(in nsISupports nativeObj, in JSContextPtr cx,
106
+ in JSObjectPtr globalObj, out JSObjectPtr parentObj);
107
+
108
+ void create(in nsIXPConnectWrappedNative wrapper,
109
+ in JSContextPtr cx, in JSObjectPtr obj);
110
+
111
+ void postCreate(in nsIXPConnectWrappedNative wrapper,
112
+ in JSContextPtr cx, in JSObjectPtr obj);
113
+
114
+ PRBool addProperty(in nsIXPConnectWrappedNative wrapper,
115
+ in JSContextPtr cx, in JSObjectPtr obj, in JSVal id,
116
+ in JSValPtr vp);
117
+
118
+ PRBool delProperty(in nsIXPConnectWrappedNative wrapper,
119
+ in JSContextPtr cx, in JSObjectPtr obj, in JSVal id,
120
+ in JSValPtr vp);
121
+
122
+ // The returnCode should be set to NS_SUCCESS_I_DID_SOMETHING if
123
+ // this method does something.
124
+ PRBool getProperty(in nsIXPConnectWrappedNative wrapper,
125
+ in JSContextPtr cx, in JSObjectPtr obj, in JSVal id,
126
+ in JSValPtr vp);
127
+
128
+ // The returnCode should be set to NS_SUCCESS_I_DID_SOMETHING if
129
+ // this method does something.
130
+ PRBool setProperty(in nsIXPConnectWrappedNative wrapper,
131
+ in JSContextPtr cx, in JSObjectPtr obj, in JSVal id,
132
+ in JSValPtr vp);
133
+
134
+ PRBool enumerate(in nsIXPConnectWrappedNative wrapper,
135
+ in JSContextPtr cx, in JSObjectPtr obj);
136
+
137
+ PRBool newEnumerate(in nsIXPConnectWrappedNative wrapper,
138
+ in JSContextPtr cx, in JSObjectPtr obj,
139
+ in PRUint32 enum_op, in JSValPtr statep, out JSID idp);
140
+
141
+ PRBool newResolve(in nsIXPConnectWrappedNative wrapper,
142
+ in JSContextPtr cx, in JSObjectPtr obj, in JSVal id,
143
+ in PRUint32 flags, out JSObjectPtr objp);
144
+
145
+ PRBool convert(in nsIXPConnectWrappedNative wrapper,
146
+ in JSContextPtr cx, in JSObjectPtr obj,
147
+ in PRUint32 type, in JSValPtr vp);
148
+
149
+ void finalize(in nsIXPConnectWrappedNative wrapper,
150
+ in JSContextPtr cx, in JSObjectPtr obj);
151
+
152
+ PRBool checkAccess(in nsIXPConnectWrappedNative wrapper,
153
+ in JSContextPtr cx, in JSObjectPtr obj, in JSVal id,
154
+ in PRUint32 mode, in JSValPtr vp);
155
+
156
+ PRBool call(in nsIXPConnectWrappedNative wrapper,
157
+ in JSContextPtr cx, in JSObjectPtr obj,
158
+ in PRUint32 argc, in JSValPtr argv, in JSValPtr vp);
159
+
160
+ PRBool construct(in nsIXPConnectWrappedNative wrapper,
161
+ in JSContextPtr cx, in JSObjectPtr obj,
162
+ in PRUint32 argc, in JSValPtr argv, in JSValPtr vp);
163
+
164
+ PRBool hasInstance(in nsIXPConnectWrappedNative wrapper,
165
+ in JSContextPtr cx, in JSObjectPtr obj,
166
+ in JSVal val, out PRBool bp);
167
+
168
+ void trace(in nsIXPConnectWrappedNative wrapper,
169
+ in JSTracerPtr trc, in JSObjectPtr obj);
170
+
171
+ PRBool equality(in nsIXPConnectWrappedNative wrapper,
172
+ in JSContextPtr cx, in JSObjectPtr obj, in JSVal val);
173
+
174
+ JSObjectPtr outerObject(in nsIXPConnectWrappedNative wrapper,
175
+ in JSContextPtr cx, in JSObjectPtr obj);
176
+
177
+ JSObjectPtr innerObject(in nsIXPConnectWrappedNative wrapper,
178
+ in JSContextPtr cx, in JSObjectPtr obj);
179
+
180
+ // This method is called if the WANT_POSTCREATE bit is set in
181
+ // scriptableFlags.
182
+ void postCreatePrototype(in JSContextPtr cx, in JSObjectPtr proto);
183
+ };
@@ -0,0 +1,114 @@
1
+ /* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
2
+ *
3
+ * ***** BEGIN LICENSE BLOCK *****
4
+ * Version: MPL 1.1/GPL 2.0/LGPL 2.1
5
+ *
6
+ * The contents of this file are subject to the Mozilla Public License Version
7
+ * 1.1 (the "License"); you may not use this file except in compliance with
8
+ * the License. You may obtain a copy of the License at
9
+ * http://www.mozilla.org/MPL/
10
+ *
11
+ * Software distributed under the License is distributed on an "AS IS" basis,
12
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
13
+ * for the specific language governing rights and limitations under the
14
+ * License.
15
+ *
16
+ * The Original Code is Mozilla Communicator client code, released
17
+ * March 31, 1998.
18
+ *
19
+ * The Initial Developer of the Original Code is
20
+ * Netscape Communications Corporation.
21
+ * Portions created by the Initial Developer are Copyright (C) 1998
22
+ * the Initial Developer. All Rights Reserved.
23
+ *
24
+ * Contributor(s):
25
+ * John Bandhauer <jband@netscape.com> (original author)
26
+ *
27
+ * Alternatively, the contents of this file may be used under the terms of
28
+ * either of the GNU General Public License Version 2 or later (the "GPL"),
29
+ * or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
30
+ * in which case the provisions of the GPL or the LGPL are applicable instead
31
+ * of those above. If you wish to allow use of your version of this file only
32
+ * under the terms of either the GPL or the LGPL, and not to allow others to
33
+ * use your version of this file under the terms of the MPL, indicate your
34
+ * decision by deleting the provisions above and replace them with the notice
35
+ * and other provisions required by the GPL or the LGPL. If you do not delete
36
+ * the provisions above, a recipient may use your version of this file under
37
+ * the terms of any one of the MPL, the GPL or the LGPL.
38
+ *
39
+ * ***** END LICENSE BLOCK ***** */
40
+
41
+ #include "nsISupports.idl"
42
+
43
+ [ptr] native nsAXPCNativeCallContextPtr(nsAXPCNativeCallContext);
44
+
45
+ %{ C++
46
+ #include "jspubtd.h"
47
+
48
+ class nsAXPCNativeCallContext;
49
+ %}
50
+
51
+ interface nsIClassInfo;
52
+
53
+ [ptr] native JSContextPtr(JSContext);
54
+ [ptr] native JSObjectPtr(JSObject);
55
+ native JSVal(jsval);
56
+ [ptr] native JSStackFramePtr(JSStackFrame);
57
+
58
+ [uuid(31431440-f1ce-11d2-985a-006008962422)]
59
+ interface nsIXPCSecurityManager : nsISupports
60
+ {
61
+ /**
62
+ * These flags are used when calling nsIXPConnect::SetSecurityManager
63
+ */
64
+
65
+ const PRUint32 HOOK_CREATE_WRAPPER = 1 << 0;
66
+ const PRUint32 HOOK_CREATE_INSTANCE = 1 << 1;
67
+ const PRUint32 HOOK_GET_SERVICE = 1 << 2;
68
+ const PRUint32 HOOK_CALL_METHOD = 1 << 3;
69
+ const PRUint32 HOOK_GET_PROPERTY = 1 << 4;
70
+ const PRUint32 HOOK_SET_PROPERTY = 1 << 5;
71
+
72
+ const PRUint32 HOOK_ALL = HOOK_CREATE_WRAPPER |
73
+ HOOK_CREATE_INSTANCE |
74
+ HOOK_GET_SERVICE |
75
+ HOOK_CALL_METHOD |
76
+ HOOK_GET_PROPERTY |
77
+ HOOK_SET_PROPERTY ;
78
+
79
+ /**
80
+ * For each of these hooks returning NS_OK means 'let the action continue'.
81
+ * Returning an error code means 'veto the action'. XPConnect will return
82
+ * JS_FALSE to the js engine if the action is vetoed. The implementor of this
83
+ * interface is responsible for setting a JS exception into the JSContext
84
+ * if that is appropriate.
85
+ */
86
+
87
+ void CanCreateWrapper(in JSContextPtr aJSContext,
88
+ in nsIIDRef aIID,
89
+ in nsISupports aObj,
90
+ in nsIClassInfo aClassInfo,
91
+ inout voidPtr aPolicy);
92
+
93
+ void CanCreateInstance(in JSContextPtr aJSContext,
94
+ in nsCIDRef aCID);
95
+
96
+ void CanGetService(in JSContextPtr aJSContext,
97
+ in nsCIDRef aCID);
98
+
99
+ /*
100
+ * Used for aAction below
101
+ */
102
+ const PRUint32 ACCESS_CALL_METHOD = 0;
103
+ const PRUint32 ACCESS_GET_PROPERTY = 1;
104
+ const PRUint32 ACCESS_SET_PROPERTY = 2;
105
+
106
+ void CanAccess(in PRUint32 aAction,
107
+ in nsAXPCNativeCallContextPtr aCallContext,
108
+ in JSContextPtr aJSContext,
109
+ in JSObjectPtr aJSObject,
110
+ in nsISupports aObj,
111
+ in nsIClassInfo aClassInfo,
112
+ in JSVal aName,
113
+ inout voidPtr aPolicy);
114
+ };
@@ -0,0 +1,819 @@
1
+ /* -*- Mode: IDL; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
2
+ *
3
+ * ***** BEGIN LICENSE BLOCK *****
4
+ * Version: MPL 1.1/GPL 2.0/LGPL 2.1
5
+ *
6
+ * The contents of this file are subject to the Mozilla Public License Version
7
+ * 1.1 (the "License"); you may not use this file except in compliance with
8
+ * the License. You may obtain a copy of the License at
9
+ * http://www.mozilla.org/MPL/
10
+ *
11
+ * Software distributed under the License is distributed on an "AS IS" basis,
12
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
13
+ * for the specific language governing rights and limitations under the
14
+ * License.
15
+ *
16
+ * The Original Code is Mozilla Communicator client code, released
17
+ * March 31, 1998.
18
+ *
19
+ * The Initial Developer of the Original Code is
20
+ * Netscape Communications Corporation.
21
+ * Portions created by the Initial Developer are Copyright (C) 1998
22
+ * the Initial Developer. All Rights Reserved.
23
+ *
24
+ * Contributor(s):
25
+ * John Bandhauer <jband@netscape.com> (original author)
26
+ * Nate Nielsen <nielsen@memberwebs.com>
27
+ *
28
+ * Alternatively, the contents of this file may be used under the terms of
29
+ * either of the GNU General Public License Version 2 or later (the "GPL"),
30
+ * or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
31
+ * in which case the provisions of the GPL or the LGPL are applicable instead
32
+ * of those above. If you wish to allow use of your version of this file only
33
+ * under the terms of either the GPL or the LGPL, and not to allow others to
34
+ * use your version of this file under the terms of the MPL, indicate your
35
+ * decision by deleting the provisions above and replace them with the notice
36
+ * and other provisions required by the GPL or the LGPL. If you do not delete
37
+ * the provisions above, a recipient may use your version of this file under
38
+ * the terms of any one of the MPL, the GPL or the LGPL.
39
+ *
40
+ * ***** END LICENSE BLOCK ***** */
41
+
42
+ /* The core XPConnect public interfaces. */
43
+
44
+ #include "nsISupports.idl"
45
+ #include "nsIClassInfo.idl"
46
+ #include "xpccomponents.idl"
47
+ #include "xpcjsid.idl"
48
+ #include "xpcexception.idl"
49
+ #include "nsIInterfaceInfo.idl"
50
+ #include "nsIInterfaceInfoManager.idl"
51
+ #include "nsIExceptionService.idl"
52
+ #include "nsIVariant.idl"
53
+
54
+ %{ C++
55
+ #include "jspubtd.h"
56
+ #include "xptinfo.h"
57
+ #include "nsAXPCNativeCallContext.h"
58
+ %}
59
+
60
+ /***************************************************************************/
61
+
62
+ [ptr] native JSContextPtr(JSContext);
63
+ [ptr] native JSObjectPtr(JSObject);
64
+ [ptr] native JSValPtr(jsval);
65
+ native JSVal(jsval);
66
+ [ptr] native JSClassConstPtr(const JSClass);
67
+ native JSGetObjectOps(JSGetObjectOps);
68
+ native JSID(jsid);
69
+ [ptr] native voidPtrPtr(void*);
70
+ [ptr] native nsScriptObjectTracerPtr(nsScriptObjectTracer);
71
+ [ref] native nsCCTraversalCallbackRef(nsCycleCollectionTraversalCallback);
72
+ [ptr] native nsAXPCNativeCallContextPtr(nsAXPCNativeCallContext);
73
+
74
+ /***************************************************************************/
75
+
76
+ %{ C++
77
+ /***************************************************************************/
78
+ #define GENERATE_XPC_FAILURE(x) \
79
+ (NS_ERROR_GENERATE_FAILURE(NS_ERROR_MODULE_XPCONNECT,x))
80
+
81
+ #define NS_ERROR_XPC_NOT_ENOUGH_ARGS GENERATE_XPC_FAILURE( 1)
82
+ #define NS_ERROR_XPC_NEED_OUT_OBJECT GENERATE_XPC_FAILURE( 2)
83
+ #define NS_ERROR_XPC_CANT_SET_OUT_VAL GENERATE_XPC_FAILURE( 3)
84
+ #define NS_ERROR_XPC_NATIVE_RETURNED_FAILURE GENERATE_XPC_FAILURE( 4)
85
+ #define NS_ERROR_XPC_CANT_GET_INTERFACE_INFO GENERATE_XPC_FAILURE( 5)
86
+ #define NS_ERROR_XPC_CANT_GET_PARAM_IFACE_INFO GENERATE_XPC_FAILURE( 6)
87
+ #define NS_ERROR_XPC_CANT_GET_METHOD_INFO GENERATE_XPC_FAILURE( 7)
88
+ #define NS_ERROR_XPC_UNEXPECTED GENERATE_XPC_FAILURE( 8)
89
+ #define NS_ERROR_XPC_BAD_CONVERT_JS GENERATE_XPC_FAILURE( 9)
90
+ #define NS_ERROR_XPC_BAD_CONVERT_NATIVE GENERATE_XPC_FAILURE(10)
91
+ #define NS_ERROR_XPC_BAD_CONVERT_JS_NULL_REF GENERATE_XPC_FAILURE(11)
92
+ #define NS_ERROR_XPC_BAD_OP_ON_WN_PROTO GENERATE_XPC_FAILURE(12)
93
+ #define NS_ERROR_XPC_CANT_CONVERT_WN_TO_FUN GENERATE_XPC_FAILURE(13)
94
+ #define NS_ERROR_XPC_CANT_DEFINE_PROP_ON_WN GENERATE_XPC_FAILURE(14)
95
+ #define NS_ERROR_XPC_CANT_WATCH_WN_STATIC GENERATE_XPC_FAILURE(15)
96
+ #define NS_ERROR_XPC_CANT_EXPORT_WN_STATIC GENERATE_XPC_FAILURE(16)
97
+ #define NS_ERROR_XPC_SCRIPTABLE_CALL_FAILED GENERATE_XPC_FAILURE(17)
98
+ #define NS_ERROR_XPC_SCRIPTABLE_CTOR_FAILED GENERATE_XPC_FAILURE(18)
99
+ #define NS_ERROR_XPC_CANT_CALL_WO_SCRIPTABLE GENERATE_XPC_FAILURE(19)
100
+ #define NS_ERROR_XPC_CANT_CTOR_WO_SCRIPTABLE GENERATE_XPC_FAILURE(20)
101
+ #define NS_ERROR_XPC_CI_RETURNED_FAILURE GENERATE_XPC_FAILURE(21)
102
+ #define NS_ERROR_XPC_GS_RETURNED_FAILURE GENERATE_XPC_FAILURE(22)
103
+ #define NS_ERROR_XPC_BAD_CID GENERATE_XPC_FAILURE(23)
104
+ #define NS_ERROR_XPC_BAD_IID GENERATE_XPC_FAILURE(24)
105
+ #define NS_ERROR_XPC_CANT_CREATE_WN GENERATE_XPC_FAILURE(25)
106
+ #define NS_ERROR_XPC_JS_THREW_EXCEPTION GENERATE_XPC_FAILURE(26)
107
+ #define NS_ERROR_XPC_JS_THREW_NATIVE_OBJECT GENERATE_XPC_FAILURE(27)
108
+ #define NS_ERROR_XPC_JS_THREW_JS_OBJECT GENERATE_XPC_FAILURE(28)
109
+ #define NS_ERROR_XPC_JS_THREW_NULL GENERATE_XPC_FAILURE(29)
110
+ #define NS_ERROR_XPC_JS_THREW_STRING GENERATE_XPC_FAILURE(30)
111
+ #define NS_ERROR_XPC_JS_THREW_NUMBER GENERATE_XPC_FAILURE(31)
112
+ #define NS_ERROR_XPC_JAVASCRIPT_ERROR GENERATE_XPC_FAILURE(32)
113
+ #define NS_ERROR_XPC_JAVASCRIPT_ERROR_WITH_DETAILS GENERATE_XPC_FAILURE(33)
114
+ #define NS_ERROR_XPC_CANT_CONVERT_PRIMITIVE_TO_ARRAY GENERATE_XPC_FAILURE(34)
115
+ #define NS_ERROR_XPC_CANT_CONVERT_OBJECT_TO_ARRAY GENERATE_XPC_FAILURE(35)
116
+ #define NS_ERROR_XPC_NOT_ENOUGH_ELEMENTS_IN_ARRAY GENERATE_XPC_FAILURE(36)
117
+ #define NS_ERROR_XPC_CANT_GET_ARRAY_INFO GENERATE_XPC_FAILURE(37)
118
+ #define NS_ERROR_XPC_NOT_ENOUGH_CHARS_IN_STRING GENERATE_XPC_FAILURE(38)
119
+ #define NS_ERROR_XPC_SECURITY_MANAGER_VETO GENERATE_XPC_FAILURE(39)
120
+ #define NS_ERROR_XPC_INTERFACE_NOT_SCRIPTABLE GENERATE_XPC_FAILURE(40)
121
+ #define NS_ERROR_XPC_INTERFACE_NOT_FROM_NSISUPPORTS GENERATE_XPC_FAILURE(41)
122
+ #define NS_ERROR_XPC_CANT_GET_JSOBJECT_OF_DOM_OBJECT GENERATE_XPC_FAILURE(42)
123
+ #define NS_ERROR_XPC_CANT_SET_READ_ONLY_CONSTANT GENERATE_XPC_FAILURE(43)
124
+ #define NS_ERROR_XPC_CANT_SET_READ_ONLY_ATTRIBUTE GENERATE_XPC_FAILURE(44)
125
+ #define NS_ERROR_XPC_CANT_SET_READ_ONLY_METHOD GENERATE_XPC_FAILURE(45)
126
+ #define NS_ERROR_XPC_CANT_ADD_PROP_TO_WRAPPED_NATIVE GENERATE_XPC_FAILURE(46)
127
+ #define NS_ERROR_XPC_CALL_TO_SCRIPTABLE_FAILED GENERATE_XPC_FAILURE(47)
128
+ #define NS_ERROR_XPC_JSOBJECT_HAS_NO_FUNCTION_NAMED GENERATE_XPC_FAILURE(48)
129
+ #define NS_ERROR_XPC_BAD_ID_STRING GENERATE_XPC_FAILURE(49)
130
+ #define NS_ERROR_XPC_BAD_INITIALIZER_NAME GENERATE_XPC_FAILURE(50)
131
+ #define NS_ERROR_XPC_HAS_BEEN_SHUTDOWN GENERATE_XPC_FAILURE(51)
132
+ #define NS_ERROR_XPC_CANT_MODIFY_PROP_ON_WN GENERATE_XPC_FAILURE(52)
133
+ #define NS_ERROR_XPC_BAD_CONVERT_JS_ZERO_ISNOT_NULL GENERATE_XPC_FAILURE(53)
134
+
135
+ #ifdef XPC_IDISPATCH_SUPPORT
136
+ // IDispatch support related errors
137
+ #define NS_ERROR_XPC_COM_UNKNOWN GENERATE_XPC_FAILURE(54)
138
+ #define NS_ERROR_XPC_COM_ERROR GENERATE_XPC_FAILURE(55)
139
+ #define NS_ERROR_XPC_COM_INVALID_CLASS_ID GENERATE_XPC_FAILURE(56)
140
+ #define NS_ERROR_XPC_COM_CREATE_FAILED GENERATE_XPC_FAILURE(57)
141
+ #define NS_ERROR_XPC_IDISPATCH_NOT_ENABLED GENERATE_XPC_FAILURE(58)
142
+ #endif
143
+ // any new errors here should have an associated entry added in xpc.msg
144
+ /***************************************************************************/
145
+ %}
146
+
147
+ /***************************************************************************/
148
+
149
+ // forward declarations...
150
+ interface nsIXPCScriptable;
151
+ interface nsIXPConnect;
152
+ interface nsIXPConnectWrappedNative;
153
+ interface nsIInterfaceInfo;
154
+ interface nsIXPCSecurityManager;
155
+ interface nsIPrincipal;
156
+
157
+ %{C++
158
+ class nsCycleCollectionTraversalCallback;
159
+ class nsScriptObjectTracer;
160
+ %}
161
+
162
+ /***************************************************************************/
163
+ [uuid(8916a320-d118-11d3-8f3a-0010a4e73d9a)]
164
+ interface nsIXPConnectJSObjectHolder : nsISupports
165
+ {
166
+ readonly attribute JSObjectPtr JSObject;
167
+ };
168
+
169
+ [uuid(7021D99D-6344-4CC0-96E7-943ED58792B8)]
170
+ interface nsIXPConnectWrappedNative : nsIXPConnectJSObjectHolder
171
+ {
172
+ /* attribute 'JSObject' inherited from nsIXPConnectJSObjectHolder */
173
+ readonly attribute nsISupports Native;
174
+ readonly attribute JSObjectPtr JSObjectPrototype;
175
+
176
+ /**
177
+ * These are here as an aid to nsIXPCScriptable implementors
178
+ */
179
+
180
+ readonly attribute nsIXPConnect XPConnect;
181
+ nsIInterfaceInfo FindInterfaceWithMember(in JSVal nameID);
182
+ nsIInterfaceInfo FindInterfaceWithName(in JSVal nameID);
183
+
184
+ void debugDump(in short depth);
185
+
186
+ void refreshPrototype();
187
+ /*
188
+ * This returns a pointer into the instance and care should be taken
189
+ * to make sure the pointer is not kept past the life time of the
190
+ * object it points into.
191
+ */
192
+ voidPtrPtr GetSecurityInfoAddress();
193
+
194
+ /*
195
+ * NOTE: Add new IDL methods _before_ the C++ block below if you
196
+ * add them. Otherwise the vtable won't be what xpidl thinks it
197
+ * is, since GetObjectPrincipal() is virtual.
198
+ */
199
+
200
+ %{C++
201
+ /**
202
+ * Faster access to the native object from C++. Will never return null.
203
+ */
204
+ nsISupports* Native() const { return mIdentity; }
205
+
206
+ #ifndef XPCONNECT_STANDALONE
207
+ /**
208
+ * Get the object principal for this wrapper. Note that this may well end
209
+ * up being null; in that case one should seek principals elsewhere. Null
210
+ * here does NOT indicate system principal or no principals at all, just
211
+ * that this wrapper doesn't have an intrinsic one.
212
+ */
213
+ virtual nsIPrincipal* GetObjectPrincipal() const = 0;
214
+ #endif
215
+
216
+ protected:
217
+ nsISupports *mIdentity;
218
+ public:
219
+ %}
220
+ };
221
+
222
+ %{C++
223
+ #include "nsCOMPtr.h"
224
+
225
+ inline
226
+ const nsQueryInterface
227
+ do_QueryWrappedNative(nsIXPConnectWrappedNative *aWrappedNative)
228
+ {
229
+ return nsQueryInterface(aWrappedNative->Native());
230
+ }
231
+
232
+ inline
233
+ const nsQueryInterfaceWithError
234
+ do_QueryWrappedNative(nsIXPConnectWrappedNative *aWrappedNative,
235
+ nsresult *aError)
236
+
237
+ {
238
+ return nsQueryInterfaceWithError(aWrappedNative->Native(), aError);
239
+ }
240
+
241
+ %}
242
+
243
+ [uuid(BED52030-BCA6-11d2-BA79-00805F8A5DD7)]
244
+ interface nsIXPConnectWrappedJS : nsIXPConnectJSObjectHolder
245
+ {
246
+ /* attribute 'JSObject' inherited from nsIXPConnectJSObjectHolder */
247
+ readonly attribute nsIInterfaceInfo InterfaceInfo;
248
+ readonly attribute nsIIDPtr InterfaceIID;
249
+
250
+ void debugDump(in short depth);
251
+
252
+ void aggregatedQueryInterface(in nsIIDRef uuid,
253
+ [iid_is(uuid),retval] out nsQIResult result);
254
+
255
+ };
256
+
257
+ /***************************************************************************/
258
+
259
+ /**
260
+ * This is a sort of a placeholder interface. It is not intended to be
261
+ * implemented. It exists to give the nsIXPCSecurityManager an iid on
262
+ * which to gate a specific activity in XPConnect.
263
+ *
264
+ * That activity is...
265
+ *
266
+ * When JavaScript code uses a component that is itself implemeted in
267
+ * JavaScript then XPConnect will build a wrapper rather than directly
268
+ * expose the JSObject of the component. This allows components implemented
269
+ * in JavaScript to 'look' just like any other xpcom component (from the
270
+ * perspective of the JavaScript caller). This insulates the component from
271
+ * the caller and hides any properties or methods that are not part of the
272
+ * interface as declared in xpidl. Usually this is a good thing.
273
+ *
274
+ * However, in some cases it is useful to allow the JS caller access to the
275
+ * JS component's underlying implementation. In order to facilitate this
276
+ * XPConnect supports the 'wrappedJSObject' property. The caller code can do:
277
+ *
278
+ * // 'foo' is some xpcom component (that might be implemented in JS).
279
+ * try {
280
+ * var bar = foo.wrappedJSObject;
281
+ * if(bar) {
282
+ * // bar is the underlying JSObject. Do stuff with it here.
283
+ * }
284
+ * } catch(e) {
285
+ * // security exception?
286
+ * }
287
+ *
288
+ * Recall that 'foo' above is an XPConnect wrapper, not the underlying JS
289
+ * object. The property get "foo.wrappedJSObject" will only succeed if three
290
+ * conditions are met:
291
+ *
292
+ * 1) 'foo' really is an XPConnect wrapper around a JSObject.
293
+ * 2) The underlying JSObject actually implements a "wrappedJSObject"
294
+ * property that returns a JSObject. This is called by XPConnect. This
295
+ * restriction allows wrapped objects to only allow access to the underlying
296
+ * JSObject if they choose to do so. Ususally this just means that 'foo'
297
+ * would have a property tht looks like:
298
+ * this.wrappedJSObject = this.
299
+ * 3) The implemementation of nsIXPCSecurityManager (if installed) allows
300
+ * a property get on the interface below. Although the JSObject need not
301
+ * implement 'nsIXPCWrappedJSObjectGetter', XPConnect will ask the
302
+ * security manager if it is OK for the caller to access the only method
303
+ * in nsIXPCWrappedJSObjectGetter before allowing the activity. This fits
304
+ * in with the security manager paradigm and makes control over accessing
305
+ * the property on this interface the control factor for getting the
306
+ * underlying wrapped JSObject of a JS component from JS code.
307
+ *
308
+ * Notes:
309
+ *
310
+ * a) If 'foo' above were the underlying JSObject and not a wrapper at all,
311
+ * then this all just works and XPConnect is not part of the picture at all.
312
+ * b) One might ask why 'foo' should not just implement an interface through
313
+ * which callers might get at the underlying object. There are three reasons:
314
+ * i) XPConnect would still have to do magic since JSObject is not a
315
+ * scriptable type.
316
+ * ii) JS Components might use aggregation (like C++ objects) and have
317
+ * different JSObjects for different interfaces 'within' an aggregate
318
+ * object. But, using an additional interface only allows returning one
319
+ * underlying JSObject. However, this allows for the possibility that
320
+ * each of the aggregte JSObjects could return something different.
321
+ * Note that one might do: this.wrappedJSObject = someOtherObject;
322
+ * iii) Avoiding the explicit interface makes it easier for both the caller
323
+ * and the component.
324
+ *
325
+ * Anyway, some future implementation of nsIXPCSecurityManager might want
326
+ * do special processing on 'nsIXPCSecurityManager::CanGetProperty' when
327
+ * the interface id is that of nsIXPCWrappedJSObjectGetter.
328
+ */
329
+
330
+ [scriptable, uuid(254bb2e0-6439-11d4-8fe0-0010a4e73d9a)]
331
+ interface nsIXPCWrappedJSObjectGetter : nsISupports
332
+ {
333
+ readonly attribute nsISupports neverCalled;
334
+ };
335
+
336
+ /***************************************************************************/
337
+
338
+ /*
339
+ * This interface is implemented by outside code and registered with xpconnect
340
+ * via nsIXPConnect::setFunctionThisTranslator.
341
+ *
342
+ * The reason this exists is to support calls to JavaScript event callbacks
343
+ * needed by the DOM via xpconnect from C++ code.
344
+ *
345
+ * We've added support for wrapping JS function objects as xpcom interfaces
346
+ * by declaring the given interface as a [function] interface. However, to
347
+ * support the requirements of JS event callbacks we need to call the JS
348
+ * function with the 'this' set as the JSObject for which the event is being
349
+ * fired; e.g. a form node.
350
+ *
351
+ * We've decided that for all cases we care about the appropriate 'this' object
352
+ * can be derived from the first param in the call to the callback. In the
353
+ * event handler case the first param is an event object.
354
+ *
355
+ * Though we can't change all the JS code so that it would setup its own 'this',
356
+ * we can add plugin 'helper' support to xpconnect. And that is what we have
357
+ * here.
358
+ *
359
+ * The idea is that at startup time some code that cares about this issue
360
+ * (e.g. the DOM helper code) can register a nsIXPCFunctionThisTranslator
361
+ * object with xpconnect to handle calls to [function] interfaces of a given
362
+ * iid. When xpconnect goes to invoke a method on a wrapped JSObject for
363
+ * an interface marked as [function], xpconnect will check if the first param
364
+ * of the method is an xpcom object pointer and if so it will check to see if a
365
+ * nsIXPCFunctionThisTranslator has been registered for the given iid of the
366
+ * interface being called. If so it will call the translator and get an
367
+ * interface pointer to use as the 'this' for the call. If the translator
368
+ * returns a non-null interface pointer (which it should then have addref'd
369
+ * since it is being returned as an out param), xpconnect will attempt to build
370
+ * a wrapper around the pointer and get a JSObject from that wrapper to use
371
+ * as the 'this' for the call.
372
+ *
373
+ * If a null interface pointer is returned then xpconnect will use the default
374
+ * 'this' - the same JSObject as the function object it is calling.
375
+ *
376
+ * The translator can also return a non-null aIIDOfResult to tell xpconnect what
377
+ * type of wrapper to build. If that is null then xpconnect will assume the
378
+ * wrapper should be for nsISupports. For objects that support flattening -
379
+ * i.e. expose nsIClassInfo and that interface's getInterfaces method - then
380
+ * a flattened wrapper will be created and no iid was really necessary.
381
+ *
382
+ * XXX aHideFirstParamFromJS is intended to allow the trimming of that first
383
+ * param (used to indicate 'this') from the actual call to the JS code. The JS
384
+ * DOM does not require this functionality and it is **NOT YET IMPLEMENTED**
385
+ *
386
+ */
387
+
388
+ [uuid(039ef260-2a0d-11d5-90a7-0010a4e73d9a)]
389
+ interface nsIXPCFunctionThisTranslator : nsISupports
390
+ {
391
+ nsISupports TranslateThis(in nsISupports aInitialThis,
392
+ in nsIInterfaceInfo aInterfaceInfo,
393
+ in PRUint16 aMethodIndex,
394
+ out PRBool aHideFirstParamFromJS,
395
+ out nsIIDPtr aIIDOfResult);
396
+ };
397
+
398
+ /***************************************************************************/
399
+
400
+ %{ C++
401
+ // For use with the service manager
402
+ // {CB6593E0-F9B2-11d2-BDD6-000064657374}
403
+ #define NS_XPCONNECT_CID \
404
+ { 0xcb6593e0, 0xf9b2, 0x11d2, \
405
+ { 0xbd, 0xd6, 0x0, 0x0, 0x64, 0x65, 0x73, 0x74 } }
406
+ %}
407
+
408
+ [uuid(b2ddc328-194b-45d6-95c6-52e487438096)]
409
+ interface nsIXPConnect : nsISupports
410
+ {
411
+ %{ C++
412
+ NS_DEFINE_STATIC_CID_ACCESSOR(NS_XPCONNECT_CID)
413
+ %}
414
+
415
+ void
416
+ initClasses(in JSContextPtr aJSContext,
417
+ in JSObjectPtr aGlobalJSObj);
418
+
419
+ nsIXPConnectJSObjectHolder
420
+ initClassesWithNewWrappedGlobal(
421
+ in JSContextPtr aJSContext,
422
+ in nsISupports aCOMObj,
423
+ in nsIIDRef aIID,
424
+ in PRUint32 aFlags);
425
+
426
+ const PRUint32 INIT_JS_STANDARD_CLASSES = 1 << 0;
427
+ const PRUint32 FLAG_SYSTEM_GLOBAL_OBJECT = 1 << 1;
428
+ const PRUint32 OMIT_COMPONENTS_OBJECT = 1 << 2;
429
+
430
+ /**
431
+ * wrapNative will create a new JSObject or return an existing one.
432
+ *
433
+ * The JSObject is returned inside a refcounted nsIXPConnectJSObjectHolder.
434
+ * As long as this holder is held the JSObject will be protected from
435
+ * collection by JavaScript's garbage collector. It is a good idea to
436
+ * transfer the JSObject to some equally protected place before releasing
437
+ * the holder (i.e. use JS_SetProperty to make this object a property of
438
+ * some other JSObject).
439
+ *
440
+ * This method now correctly deals with cases where the passed in xpcom
441
+ * object already has an associated JSObject for the cases:
442
+ * 1) The xpcom object has already been wrapped for use in the same scope
443
+ * as an nsIXPConnectWrappedNative.
444
+ * 2) The xpcom object is in fact a nsIXPConnectWrappedJS and thus already
445
+ * has an underlying JSObject.
446
+ * 3) The xpcom object implements nsIScriptObjectOwner; i.e. is an idlc
447
+ * style DOM object for which we can call GetScriptObject to get the
448
+ * JSObject it uses to represent itself into JavaScript.
449
+ *
450
+ * It *might* be possible to QueryInterface the nsIXPConnectJSObjectHolder
451
+ * returned by the method into a nsIXPConnectWrappedNative or a
452
+ * nsIXPConnectWrappedJS.
453
+ *
454
+ * This method will never wrap the JSObject involved in an
455
+ * XPCNativeWrapper before returning.
456
+ *
457
+ * Returns:
458
+ * success:
459
+ * NS_OK
460
+ * failure:
461
+ * NS_ERROR_XPC_BAD_CONVERT_NATIVE
462
+ * NS_ERROR_XPC_CANT_GET_JSOBJECT_OF_DOM_OBJECT
463
+ * NS_ERROR_FAILURE
464
+ */
465
+ nsIXPConnectJSObjectHolder
466
+ wrapNative(in JSContextPtr aJSContext,
467
+ in JSObjectPtr aScope,
468
+ in nsISupports aCOMObj,
469
+ in nsIIDRef aIID);
470
+
471
+ /**
472
+ * Same as wrapNative, but also returns the JSObject in aVal. C++ callers
473
+ * can pass in null for the aHolder argument, but in that case they must
474
+ * ensure that aVal is rooted.
475
+ * aIID may be null, it means the same as passing in
476
+ * &NS_GET_IID(nsISupports) but when passing in null certain shortcuts
477
+ * can be taken because we know without comparing IIDs that the caller is
478
+ * asking for an nsISupports wrapper.
479
+ */
480
+ void
481
+ wrapNativeToJSVal(in JSContextPtr aJSContext,
482
+ in JSObjectPtr aScope,
483
+ in nsISupports aCOMObj,
484
+ in nsIIDPtr aIID,
485
+ out JSVal aVal,
486
+ out nsIXPConnectJSObjectHolder aHolder);
487
+
488
+ /**
489
+ * wrapJS will yield a new or previously existing xpcom interface pointer
490
+ * to represent the JSObject passed in.
491
+ *
492
+ * This method now correctly deals with cases where the passed in JSObject
493
+ * already has an associated xpcom interface for the cases:
494
+ * 1) The JSObject has already been wrapped as a nsIXPConnectWrappedJS.
495
+ * 2) The JSObject is in fact a nsIXPConnectWrappedNative and thus already
496
+ * has an underlying xpcom object.
497
+ * 3) The JSObject is of a jsclass which supports getting the nsISupports
498
+ * from the JSObject directly. This is used for idlc style objects
499
+ * (e.g. DOM objects).
500
+ *
501
+ * It *might* be possible to QueryInterface the resulting interface pointer
502
+ * to nsIXPConnectWrappedJS.
503
+ *
504
+ * Returns:
505
+ * success:
506
+ * NS_OK
507
+ * failure:
508
+ * NS_ERROR_XPC_BAD_CONVERT_JS
509
+ * NS_ERROR_FAILURE
510
+ */
511
+ void
512
+ wrapJS(in JSContextPtr aJSContext,
513
+ in JSObjectPtr aJSObj,
514
+ in nsIIDRef aIID,
515
+ [iid_is(aIID),retval] out nsQIResult result);
516
+
517
+ /**
518
+ * This only succeeds if the JSObject is a nsIXPConnectWrappedNative.
519
+ * A new wrapper is *never* constructed.
520
+ */
521
+ nsIXPConnectWrappedNative
522
+ getWrappedNativeOfJSObject(in JSContextPtr aJSContext,
523
+ in JSObjectPtr aJSObj);
524
+
525
+ void setSecurityManagerForJSContext(in JSContextPtr aJSContext,
526
+ in nsIXPCSecurityManager aManager,
527
+ in PRUint16 flags);
528
+
529
+ void getSecurityManagerForJSContext(in JSContextPtr aJSContext,
530
+ out nsIXPCSecurityManager aManager,
531
+ out PRUint16 flags);
532
+
533
+ /**
534
+ * The security manager to use when the current JSContext has no security
535
+ * manager.
536
+ */
537
+ void setDefaultSecurityManager(in nsIXPCSecurityManager aManager,
538
+ in PRUint16 flags);
539
+
540
+ void getDefaultSecurityManager(out nsIXPCSecurityManager aManager,
541
+ out PRUint16 flags);
542
+
543
+ nsIStackFrame
544
+ createStackFrameLocation(in PRUint32 aLanguage,
545
+ in string aFilename,
546
+ in string aFunctionName,
547
+ in PRInt32 aLineNumber,
548
+ in nsIStackFrame aCaller);
549
+
550
+ /**
551
+ * Deprecated do-nothing function.
552
+ */
553
+ void syncJSContexts();
554
+
555
+ readonly attribute nsIStackFrame CurrentJSStack;
556
+ readonly attribute nsAXPCNativeCallContextPtr CurrentNativeCallContext;
557
+ /* pass nsnull to clear pending exception */
558
+ attribute nsIException PendingException;
559
+
560
+ void debugDump(in short depth);
561
+ void debugDumpObject(in nsISupports aCOMObj, in short depth);
562
+ void debugDumpJSStack(in PRBool showArgs,
563
+ in PRBool showLocals,
564
+ in PRBool showThisProps);
565
+ void debugDumpEvalInJSStackFrame(in PRUint32 aFrameNumber,
566
+ in string aSourceText);
567
+
568
+ /**
569
+ * Set fallback JSContext to use when xpconnect can't find an appropriate
570
+ * context to use to execute JavaScript.
571
+ *
572
+ * NOTE: This method is DEPRECATED.
573
+ * Use nsIThreadJSContextStack::safeJSContext instead.
574
+ */
575
+ void setSafeJSContextForCurrentThread(in JSContextPtr cx);
576
+
577
+ /**
578
+ * wrapJSAggregatedToNative is just like wrapJS except it is used in cases
579
+ * where the JSObject is also aggregated to some native xpcom Object.
580
+ * At present XBL is the only system that might want to do this.
581
+ *
582
+ * XXX write more!
583
+ *
584
+ * Returns:
585
+ * success:
586
+ * NS_OK
587
+ * failure:
588
+ * NS_ERROR_XPC_BAD_CONVERT_JS
589
+ * NS_ERROR_FAILURE
590
+ */
591
+ void
592
+ wrapJSAggregatedToNative(in nsISupports aOuter,
593
+ in JSContextPtr aJSContext,
594
+ in JSObjectPtr aJSObj,
595
+ in nsIIDRef aIID,
596
+ [iid_is(aIID),retval] out nsQIResult result);
597
+
598
+ // Methods added since mozilla 0.6....
599
+
600
+ /**
601
+ * This only succeeds if the native object is already wrapped by xpconnect.
602
+ * A new wrapper is *never* constructed.
603
+ */
604
+ nsIXPConnectWrappedNative
605
+ getWrappedNativeOfNativeObject(in JSContextPtr aJSContext,
606
+ in JSObjectPtr aScope,
607
+ in nsISupports aCOMObj,
608
+ in nsIIDRef aIID);
609
+
610
+ nsIXPCFunctionThisTranslator
611
+ getFunctionThisTranslator(in nsIIDRef aIID);
612
+
613
+ nsIXPCFunctionThisTranslator
614
+ setFunctionThisTranslator(in nsIIDRef aIID,
615
+ in nsIXPCFunctionThisTranslator aTranslator);
616
+
617
+ nsIXPConnectJSObjectHolder
618
+ reparentWrappedNativeIfFound(in JSContextPtr aJSContext,
619
+ in JSObjectPtr aScope,
620
+ in JSObjectPtr aNewParent,
621
+ in nsISupports aCOMObj);
622
+ void
623
+ reparentScopeAwareWrappers(in JSContextPtr aJSContext,
624
+ in JSObjectPtr aOldScope,
625
+ in JSObjectPtr aNewScope);
626
+
627
+ void clearAllWrappedNativeSecurityPolicies();
628
+
629
+ nsIXPConnectJSObjectHolder
630
+ getWrappedNativePrototype(in JSContextPtr aJSContext,
631
+ in JSObjectPtr aScope,
632
+ in nsIClassInfo aClassInfo);
633
+
634
+ void releaseJSContext(in JSContextPtr aJSContext, in PRBool noGC);
635
+
636
+ JSVal variantToJS(in JSContextPtr ctx, in JSObjectPtr scope, in nsIVariant value);
637
+ nsIVariant JSToVariant(in JSContextPtr ctx, in JSVal value);
638
+
639
+ /**
640
+ * Preconfigure XPCNativeWrapper automation so that when a scripted
641
+ * caller whose filename starts with filenamePrefix accesses a wrapped
642
+ * native that is not flagged as "system", the wrapped native will be
643
+ * automatically wrapped with an XPCNativeWrapper.
644
+ *
645
+ * @param aFilenamePrefix the UTF-8 filename prefix to match, which
646
+ * should end with a slash (/) character
647
+ * @param aWantNativeWrappers whether XPConnect should produce native
648
+ * wrappers for scripts whose paths begin
649
+ * with this prefix
650
+ */
651
+ void flagSystemFilenamePrefix(in string aFilenamePrefix,
652
+ in PRBool aWantNativeWrappers);
653
+
654
+ /**
655
+ * Restore an old prototype for wrapped natives of type
656
+ * aClassInfo. This should be used only when restoring an old
657
+ * scope into a state close to where it was prior to
658
+ * being reinitialized.
659
+ */
660
+ void restoreWrappedNativePrototype(in JSContextPtr aJSContext,
661
+ in JSObjectPtr aScope,
662
+ in nsIClassInfo aClassInfo,
663
+ in nsIXPConnectJSObjectHolder aPrototype);
664
+
665
+ /**
666
+ * Create a sandbox for evaluating code in isolation using
667
+ * evalInSandboxObject().
668
+ *
669
+ * @param cx A context to use when creating the sandbox object.
670
+ * @param principal The principal (or NULL to use the null principal)
671
+ * to use when evaluating code in this sandbox.
672
+ */
673
+ [noscript] nsIXPConnectJSObjectHolder createSandbox(in JSContextPtr cx,
674
+ in nsIPrincipal principal);
675
+
676
+ /**
677
+ * Evaluate script in a sandbox, completely isolated from all
678
+ * other running scripts.
679
+ *
680
+ * @param source The source of the script to evaluate.
681
+ * @param cx The context to use when setting up the evaluation of
682
+ * the script. The actual evaluation will happen on a new
683
+ * temporary context.
684
+ * @param sandbox The sandbox object to evaluate the script in.
685
+ * @param returnStringOnly The only results to come out of the
686
+ * computation (including exceptions) will
687
+ * be coerced into strings created in the
688
+ * sandbox.
689
+ * @return The result of the evaluation as a jsval. If the caller
690
+ * intends to use the return value from this call the caller
691
+ * is responsible for rooting the jsval before making a call
692
+ * to this method.
693
+ */
694
+ [noscript] JSVal evalInSandboxObject(in AString source, in JSContextPtr cx,
695
+ in nsIXPConnectJSObjectHolder sandbox,
696
+ in PRBool returnStringOnly);
697
+
698
+ /**
699
+ * Wrap a jsval in a cross origin wrapper.
700
+ * @param aJSContext A context to use to create objects.
701
+ * @param aParent The parent to create the wrapper with.
702
+ * @param aWrappedObj The object to wrap.
703
+ */
704
+ [noscript] JSVal getXOWForObject(in JSContextPtr aJSContext,
705
+ in JSObjectPtr aParent,
706
+ in JSObjectPtr aWrappedObj);
707
+
708
+ /**
709
+ * Tells updateXOWs to clear the scope of all of the XOWs it finds.
710
+ */
711
+ const PRUint32 XPC_XOW_CLEARSCOPE = 1;
712
+
713
+ /**
714
+ * Performs an operation over all of |object|'s XOWs such as clearing
715
+ * their scopes or updating their concept of the current principal.
716
+ *
717
+ * @param aJSContext A context to use to perform JS operations.
718
+ * @param aObject Which XPCWrappedNative we should find the XOWs for.
719
+ * @param aWay What operation to perform.
720
+ */
721
+ [noscript] void updateXOWs(in JSContextPtr aJSContext,
722
+ in nsIXPConnectWrappedNative aObject,
723
+ in PRUint32 aWay);
724
+
725
+ /**
726
+ * Root JS objects held by aHolder.
727
+ * @param aHolder The object that hold the JS objects that should be rooted.
728
+ * @param aTrace The tracer for aHolder.
729
+ */
730
+ [noscript] void addJSHolder(in voidPtr aHolder,
731
+ in nsScriptObjectTracerPtr aTracer);
732
+
733
+ /**
734
+ * Stop rooting the JS objects held by aHolder.
735
+ * @param aHolder The object that hold the rooted JS objects.
736
+ */
737
+ [noscript] void removeJSHolder(in voidPtr aHolder);
738
+
739
+ /**
740
+ * Note aJSContext as a child to the cycle collector.
741
+ * @param aJSContext The JSContext to note.
742
+ * @param aCb The cycle collection traversal callback.
743
+ */
744
+ [noscript,notxpcom] void noteJSContext(in JSContextPtr aJSContext,
745
+ in nsCCTraversalCallbackRef aCb);
746
+
747
+ /**
748
+ * Get the JSClass and JSGetObjectOps pointers to use for
749
+ * identifying JSObjects that hold nsIXPConnectWrappedNative
750
+ * pointers in their private date. See IS_WRAPPER_CLASS in
751
+ * xpcprivate.h for details.
752
+ */
753
+ void GetXPCWrappedNativeJSClassInfo(out JSClassConstPtr clazz,
754
+ out JSGetObjectOps ops1,
755
+ out JSGetObjectOps ops2);
756
+
757
+ /**
758
+ * Whether or not XPConnect should report all JS exceptions when returning
759
+ * from JS into C++. False by default, although any value set in the
760
+ * MOZ_REPORT_ALL_JS_EXCEPTIONS environment variable will override the value
761
+ * passed here.
762
+ */
763
+ void setReportAllJSExceptions(in boolean reportAllJSExceptions);
764
+
765
+ /**
766
+ * Define quick stubs on the given object, @a proto.
767
+ *
768
+ * @param cx
769
+ * A context. Requires request.
770
+ * @param proto
771
+ * The (newly created) prototype object for a DOM class. The JS half
772
+ * of an XPCWrappedNativeProto.
773
+ * @param flags
774
+ * Property flags for the quick stub properties--should be either
775
+ * JSPROP_ENUMERATE or 0.
776
+ * @param interfaceCount
777
+ * The number of interfaces the class implements.
778
+ * @param interfaceArray
779
+ * The interfaces the class implements; interfaceArray and
780
+ * interfaceCount are like what nsIClassInfo.getInterfaces returns.
781
+ */
782
+ [noscript,notxpcom] PRBool defineDOMQuickStubs(
783
+ in JSContextPtr cx,
784
+ in JSObjectPtr proto,
785
+ in PRUint32 flags,
786
+ in PRUint32 interfaceCount,
787
+ [array, size_is(interfaceCount)] in nsIIDPtr interfaceArray);
788
+
789
+ /**
790
+ * Returns a XPCNativeWrapper, XPCSafeJSObjectWrapper, or
791
+ * XPCCrossOriginWrapper for the given object based on the principal, scope,
792
+ * and filename flags that are passed in.
793
+ *
794
+ * Note: In C++, the out jsval parameter must already be a strong GC root.
795
+ *
796
+ * @param aJSContext
797
+ * A JSContext.
798
+ * @param aObject
799
+ * The object to wrap.
800
+ * @param aScope
801
+ * The scope to be used in the event that we create a
802
+ * XPCCrossOriginWrapper. Can be null.
803
+ * @param aPrincipal
804
+ * The principal that should be used for the wrapper. If this parameter
805
+ * is given then aFilenameFlags will not be calculated and will be
806
+ * assumed to be 0 unless another value is given. If this parameter is
807
+ * null then aFilenameFlags will be calculated and the value of that
808
+ * argument will be ignored.
809
+ * @param aFilenameFlags
810
+ * The filename flags from the script that will use this wrapper. See
811
+ * above (aPrincipal) for details.
812
+ */
813
+ [noscript] JSVal getWrapperForObject(
814
+ in JSContextPtr aJSContext,
815
+ in JSObjectPtr aObject,
816
+ in JSObjectPtr aScope,
817
+ in nsIPrincipal aPrincipal,
818
+ in unsigned long aFilenameFlags);
819
+ };