johnson 1.2.0 → 2.0.0.pre0

Sign up to get free protection for your applications and to get access to all the features.
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,394 @@
1
+ /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
2
+ /* vim: set ts=2 sw=2 et tw=78: */
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.org code.
17
+ *
18
+ * The Initial Developer of the Original Code is
19
+ * The Mozilla Foundation.
20
+ * Portions created by the Initial Developer are Copyright (C) 2005
21
+ * the Initial Developer. All Rights Reserved.
22
+ *
23
+ * Contributor(s):
24
+ * Johnny Stenback <jst@mozilla.org> (original author)
25
+ * Brendan Eich <brendan@mozilla.org>
26
+ * Boris Zbarsky <bzbarsky@mit.edu>
27
+ * Blake Kaplan <mrbkap@gmail.com>
28
+ *
29
+ * Alternatively, the contents of this file may be used under the terms of
30
+ * either the GNU General Public License Version 2 or later (the "GPL"), or
31
+ * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
32
+ * in which case the provisions of the GPL or the LGPL are applicable instead
33
+ * of those above. If you wish to allow use of your version of this file only
34
+ * under the terms of either the GPL or the LGPL, and not to allow others to
35
+ * use your version of this file under the terms of the MPL, indicate your
36
+ * decision by deleting the provisions above and replace them with the notice
37
+ * and other provisions required by the GPL or the LGPL. If you do not delete
38
+ * the provisions above, a recipient may use your version of this file under
39
+ * the terms of any one of the MPL, the GPL or the LGPL.
40
+ *
41
+ * ***** END LICENSE BLOCK ***** */
42
+
43
+ #ifndef XPC_WRAPPER_H
44
+ #define XPC_WRAPPER_H 1
45
+
46
+ #include "xpcprivate.h"
47
+
48
+ /* These are used by XPCNativeWrapper polluted code in the common wrapper. */
49
+ #define FLAG_DEEP 0x1
50
+ #define FLAG_EXPLICIT 0x2
51
+ // FLAG_RESOLVING is used to tag an XPCNativeWrapper when while it's calling
52
+ // the newResolve hook on the XPCWrappedNative's scriptable info.
53
+ #define FLAG_RESOLVING 0x4
54
+
55
+ #define HAS_FLAGS(_val, _flags) \
56
+ ((PRUint32(JSVAL_TO_INT(_val)) & (_flags)) != 0)
57
+
58
+ #define NATIVE_HAS_FLAG(_wn, _flag) \
59
+ ((_wn)->GetScriptableInfo() && \
60
+ (_wn)->GetScriptableInfo()->GetFlags()._flag())
61
+
62
+ JSBool
63
+ XPC_NW_WrapFunction(JSContext* cx, JSObject* funobj, jsval *rval);
64
+
65
+ JSBool
66
+ XPC_NW_RewrapIfDeepWrapper(JSContext *cx, JSObject *obj, jsval v,
67
+ jsval *rval);
68
+
69
+ /* These are used by XPC_XOW_* polluted code in the common wrapper. */
70
+ JSBool
71
+ XPC_XOW_WrapFunction(JSContext *cx, JSObject *wrapperObj, JSObject *funobj,
72
+ jsval *rval);
73
+
74
+ JSBool
75
+ XPC_XOW_RewrapIfNeeded(JSContext *cx, JSObject *wrapperObj, jsval *vp);
76
+
77
+ JSBool
78
+ XPC_XOW_WrapperMoved(JSContext *cx, XPCWrappedNative *innerObj,
79
+ XPCWrappedNativeScope *newScope);
80
+
81
+ nsresult
82
+ CanAccessWrapper(JSContext *cx, JSObject *wrappedObj);
83
+
84
+ // Used by UnwrapSOW below.
85
+ JSBool
86
+ AllowedToAct(JSContext *cx, jsval idval);
87
+
88
+ JSBool
89
+ XPCNativeWrapperCtor(JSContext *cx, JSObject *obj, uintN argc, jsval *argv,
90
+ jsval *rval);
91
+
92
+ inline JSBool
93
+ XPC_XOW_ClassNeedsXOW(const char *name)
94
+ {
95
+ switch (*name) {
96
+ case 'W':
97
+ return strcmp(++name, "indow") == 0;
98
+ case 'L':
99
+ return strcmp(++name, "ocation") == 0;
100
+ case 'H':
101
+ if (strncmp(++name, "TML", 3))
102
+ break;
103
+ name += 3;
104
+ if (*name == 'I')
105
+ ++name;
106
+ return strcmp(name, "FrameElement") == 0;
107
+ default:
108
+ break;
109
+ }
110
+
111
+ return JS_FALSE;
112
+ }
113
+
114
+ extern JSExtendedClass sXPC_SJOW_JSClass;
115
+ extern JSExtendedClass sXPC_SOW_JSClass;
116
+ extern JSExtendedClass sXPC_XOW_JSClass;
117
+
118
+ // This class wraps some common functionality between the three existing
119
+ // wrappers. Its main purpose is to allow XPCCrossOriginWrapper to act both
120
+ // as an XPCSafeSJSObjectWrapper and as an XPCNativeWrapper when required to
121
+ // do so (the decision is based on the principals of the wrapper and wrapped
122
+ // objects).
123
+ class XPCWrapper
124
+ {
125
+ public:
126
+ /**
127
+ * Used by the cross origin and safe wrappers: the slot that the wrapped
128
+ * object is held in.
129
+ */
130
+ static const PRUint32 sWrappedObjSlot;
131
+
132
+ /**
133
+ * Used by all wrappers to store flags about their state. For example,
134
+ * it is used when resolving a property to tell to the addProperty hook
135
+ * that it shouldn't perform any security checks.
136
+ */
137
+ static const PRUint32 sFlagsSlot;
138
+
139
+ /**
140
+ * The base number of slots needed by code using the above constants.
141
+ */
142
+ static const PRUint32 sNumSlots;
143
+
144
+ /**
145
+ * Cross origin wrappers and safe JSObject wrappers both need to know
146
+ * which native is 'eval' for various purposes.
147
+ */
148
+ static JSNative sEvalNative;
149
+
150
+ enum FunctionObjectSlot {
151
+ eWrappedFunctionSlot = 0,
152
+ eAllAccessSlot = 1
153
+ };
154
+
155
+ // Helpful for keeping lines short:
156
+ static const PRUint32 sSecMgrSetProp, sSecMgrGetProp;
157
+
158
+ /**
159
+ * Given a context and a global object, fill our eval native.
160
+ */
161
+ static JSBool FindEval(XPCCallContext &ccx, JSObject *obj) {
162
+ if (sEvalNative) {
163
+ return JS_TRUE;
164
+ }
165
+
166
+ jsval eval_val;
167
+ if (!::JS_GetProperty(ccx, obj, "eval", &eval_val)) {
168
+ return ThrowException(NS_ERROR_UNEXPECTED, ccx);
169
+ }
170
+
171
+ if (JSVAL_IS_PRIMITIVE(eval_val) ||
172
+ !::JS_ObjectIsFunction(ccx, JSVAL_TO_OBJECT(eval_val))) {
173
+ return ThrowException(NS_ERROR_UNEXPECTED, ccx);
174
+ }
175
+
176
+ sEvalNative =
177
+ ::JS_GetFunctionNative(ccx, ::JS_ValueToFunction(ccx, eval_val));
178
+
179
+ if (!sEvalNative) {
180
+ return ThrowException(NS_ERROR_UNEXPECTED, ccx);
181
+ }
182
+
183
+ return JS_TRUE;
184
+ }
185
+
186
+ /**
187
+ * A useful function that throws an exception onto cx.
188
+ */
189
+ static JSBool ThrowException(nsresult ex, JSContext *cx) {
190
+ XPCThrower::Throw(ex, cx);
191
+ return JS_FALSE;
192
+ }
193
+
194
+ /**
195
+ * Returns the script security manager used by XPConnect.
196
+ */
197
+ static nsIScriptSecurityManager *GetSecurityManager() {
198
+ extern nsIScriptSecurityManager *gScriptSecurityManager;
199
+
200
+ return gScriptSecurityManager;
201
+ }
202
+
203
+ /**
204
+ * Used to ensure that an XPCWrappedNative stays alive when its scriptable
205
+ * helper defines an "expando" property on it.
206
+ */
207
+ static JSBool MaybePreserveWrapper(JSContext *cx, XPCWrappedNative *wn,
208
+ uintN flags) {
209
+ if ((flags & JSRESOLVE_ASSIGNING) &&
210
+ (::JS_GetOptions(cx) & JSOPTION_PRIVATE_IS_NSISUPPORTS)) {
211
+ nsCOMPtr<nsIXPCScriptNotify> scriptNotify =
212
+ do_QueryInterface(static_cast<nsISupports*>
213
+ (JS_GetContextPrivate(cx)));
214
+ if (scriptNotify) {
215
+ return NS_SUCCEEDED(scriptNotify->PreserveWrapper(wn));
216
+ }
217
+ }
218
+ return JS_TRUE;
219
+ }
220
+
221
+ /**
222
+ * Given an arbitrary object, Unwrap will return the wrapped object if the
223
+ * passed-in object is a wrapper that Unwrap knows about *and* the
224
+ * currently running code has permission to access both the wrapper and
225
+ * wrapped object.
226
+ *
227
+ * Since this is meant to be called from functions like
228
+ * XPCWrappedNative::GetWrappedNativeOfJSObject, it does not set an
229
+ * exception on |cx|.
230
+ */
231
+ static JSObject *Unwrap(JSContext *cx, JSObject *wrapper);
232
+
233
+ /**
234
+ * Unwraps objects whose class is |xclasp|.
235
+ */
236
+ static JSObject *UnwrapGeneric(JSContext *cx, const JSExtendedClass *xclasp,
237
+ JSObject *wrapper)
238
+ {
239
+ if (STOBJ_GET_CLASS(wrapper) != &xclasp->base) {
240
+ return nsnull;
241
+ }
242
+
243
+ jsval v;
244
+ if (!JS_GetReservedSlot(cx, wrapper, XPCWrapper::sWrappedObjSlot, &v)) {
245
+ JS_ClearPendingException(cx);
246
+ return nsnull;
247
+ }
248
+
249
+ if (JSVAL_IS_PRIMITIVE(v)) {
250
+ return nsnull;
251
+ }
252
+
253
+ return JSVAL_TO_OBJECT(v);
254
+ }
255
+
256
+ static JSObject *UnwrapSOW(JSContext *cx, JSObject *wrapper) {
257
+ wrapper = UnwrapGeneric(cx, &sXPC_SOW_JSClass, wrapper);
258
+ if (!wrapper) {
259
+ return nsnull;
260
+ }
261
+
262
+ if (!AllowedToAct(cx, JSVAL_VOID)) {
263
+ JS_ClearPendingException(cx);
264
+ wrapper = nsnull;
265
+ }
266
+
267
+ return wrapper;
268
+ }
269
+
270
+ /**
271
+ * Unwraps a XOW into its wrapped native.
272
+ */
273
+ static JSObject *UnwrapXOW(JSContext *cx, JSObject *wrapper) {
274
+ wrapper = UnwrapGeneric(cx, &sXPC_XOW_JSClass, wrapper);
275
+ if (!wrapper) {
276
+ return nsnull;
277
+ }
278
+
279
+ nsresult rv = CanAccessWrapper(cx, wrapper);
280
+ if (NS_FAILED(rv)) {
281
+ JS_ClearPendingException(cx);
282
+ wrapper = nsnull;
283
+ }
284
+
285
+ return wrapper;
286
+ }
287
+
288
+ /**
289
+ * Rewraps a property if it needs to be rewrapped. Used by
290
+ * GetOrSetNativeProperty to rewrap the return value.
291
+ */
292
+ static JSBool RewrapIfDeepWrapper(JSContext *cx, JSObject *obj, jsval v,
293
+ jsval *rval, JSBool isNativeWrapper) {
294
+ *rval = v;
295
+ return isNativeWrapper
296
+ ? XPC_NW_RewrapIfDeepWrapper(cx, obj, v, rval)
297
+ : XPC_XOW_RewrapIfNeeded(cx, obj, rval);
298
+ }
299
+
300
+ /**
301
+ * Creates a wrapper around a JSObject function object. Note
302
+ * XPCSafeJSObjectWrapper code doesn't have special function wrappers,
303
+ * obviating the need for this function. Instead, this is used by
304
+ * XPCNativeWrapper and the cross origin wrapper.
305
+ */
306
+ static inline JSBool WrapFunction(JSContext *cx, JSObject *wrapperObj,
307
+ JSObject *funobj, jsval *v,
308
+ JSBool isNativeWrapper) {
309
+ return isNativeWrapper
310
+ ? XPC_NW_WrapFunction(cx, funobj, v)
311
+ : XPC_XOW_WrapFunction(cx, wrapperObj, funobj, v);
312
+ }
313
+
314
+ /**
315
+ * Creates an iterator object that walks up the prototype of
316
+ * wrappedObj. This is suitable for for-in loops over a wrapper. If
317
+ * a property is not supposed to be reflected, the resolve hook
318
+ * is expected to censor it. tempWrapper must be rooted already.
319
+ */
320
+ static JSObject *CreateIteratorObj(JSContext *cx,
321
+ JSObject *tempWrapper,
322
+ JSObject *wrapperObj,
323
+ JSObject *innerObj,
324
+ JSBool keysonly);
325
+
326
+ /**
327
+ * Called for the common part of adding a property to obj.
328
+ */
329
+ static JSBool AddProperty(JSContext *cx, JSObject *wrapperObj,
330
+ JSBool wantGetterSetter, JSObject *innerObj,
331
+ jsval id, jsval *vp);
332
+
333
+ /**
334
+ * Called for the common part of deleting a property from obj.
335
+ */
336
+ static JSBool DelProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp);
337
+
338
+ /**
339
+ * Called to enumerate the properties of |innerObj| onto |wrapperObj|.
340
+ */
341
+ static JSBool Enumerate(JSContext *cx, JSObject *wrapperObj,
342
+ JSObject *innerObj);
343
+
344
+ /**
345
+ * Resolves a property (that may be) defined on |innerObj| onto
346
+ * |wrapperObj|. This will also resolve random, page-defined objects
347
+ * and is therefore unsuitable for cross-origin resolution.
348
+ */
349
+ static JSBool NewResolve(JSContext *cx, JSObject *wrapperObj,
350
+ JSBool preserveVal, JSObject *innerObj,
351
+ jsval id, uintN flags, JSObject **objp);
352
+
353
+ /**
354
+ * Resolve a native property named id from innerObj onto wrapperObj. The
355
+ * native wrapper will be preserved if necessary. Note that if we resolve
356
+ * an attribute here, we don't deal with the value until later.
357
+ */
358
+ static JSBool ResolveNativeProperty(JSContext *cx, JSObject *wrapperObj,
359
+ JSObject *innerObj, XPCWrappedNative *wn,
360
+ jsval id, uintN flags, JSObject **objp,
361
+ JSBool isNativeWrapper);
362
+
363
+ /**
364
+ * Gets a native property from obj. This goes directly through XPConnect, it
365
+ * does not look at Javascript-defined getters or setters. This ensures that
366
+ * the caller gets a real answer.
367
+ */
368
+ static JSBool GetOrSetNativeProperty(JSContext *cx, JSObject *obj,
369
+ XPCWrappedNative *wrappedNative,
370
+ jsval id, jsval *vp, JSBool aIsSet,
371
+ JSBool isNativeWrapper);
372
+
373
+ /**
374
+ * Gets a string representation of wrappedNative, going through IDL.
375
+ */
376
+ static JSBool NativeToString(JSContext *cx, XPCWrappedNative *wrappedNative,
377
+ uintN argc, jsval *argv, jsval *rval,
378
+ JSBool isNativeWrapper);
379
+
380
+ private:
381
+ /**
382
+ * Looks up a property on obj. If it exists, then the parameters are filled
383
+ * in with useful values.
384
+ *
385
+ * NB: All parameters must be initialized before the call.
386
+ */
387
+ static JSBool GetPropertyAttrs(JSContext *cx, JSObject *obj,
388
+ jsid interned_id, uintN flags,
389
+ JSBool wantDetails,
390
+ JSPropertyDescriptor *desc);
391
+ };
392
+
393
+
394
+ #endif
@@ -0,0 +1,568 @@
1
+ # -*- Mode: Python -*-
2
+ # ***** BEGIN LICENSE BLOCK *****
3
+ # Version: MPL 1.1/GPL 2.0/LGPL 2.1
4
+ #
5
+ # The contents of this file are subject to the Mozilla Public License Version
6
+ # 1.1 (the "License"); you may not use this file except in compliance with
7
+ # the License. You may obtain a copy of the License at
8
+ # http://www.mozilla.org/MPL/
9
+ #
10
+ # Software distributed under the License is distributed on an "AS IS" basis,
11
+ # WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
12
+ # for the specific language governing rights and limitations under the
13
+ # License.
14
+ #
15
+ # The Original Code is mozilla.org code.
16
+ #
17
+ # The Initial Developer of the Original Code is
18
+ # Mozilla Foundation.
19
+ # Portions created by the Initial Developer are Copyright (C) 2008
20
+ # the Initial Developer. All Rights Reserved.
21
+ #
22
+ # Contributor(s):
23
+ # Jason Orendorff <jorendorff@mozilla.com>
24
+ #
25
+ # Alternatively, the contents of this file may be used under the terms of
26
+ # either of the GNU General Public License Version 2 or later (the "GPL"),
27
+ # or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
28
+ # in which case the provisions of the GPL or the LGPL are applicable instead
29
+ # of those above. If you wish to allow use of your version of this file only
30
+ # under the terms of either the GPL or the LGPL, and not to allow others to
31
+ # use your version of this file under the terms of the MPL, indicate your
32
+ # decision by deleting the provisions above and replace them with the notice
33
+ # and other provisions required by the GPL or the LGPL. If you do not delete
34
+ # the provisions above, a recipient may use your version of this file under
35
+ # the terms of any one of the MPL, the GPL or the LGPL.
36
+ #
37
+ # ***** END LICENSE BLOCK *****
38
+
39
+ name = 'DOM'
40
+
41
+ # A quick warning:
42
+ #
43
+ # Attributes or methods that call GetCurrentNativeCallContext must not be
44
+ # quick-stubbed, because quick stubs don't generate a native call context.
45
+ # qsgen.py has no way of knowing which attributes and methods do this, as it
46
+ # looks at interfaces, not implementations. The symptoms, if you quick-stub
47
+ # one of those, can be really weird, because GetCurrentNativeCallContext
48
+ # doesn't crash--it may in fact return a plausible wrong answer.
49
+
50
+ members = [
51
+ # dom/public/idl/base
52
+ #
53
+ # Note that many implementations of interfaces in this directory
54
+ # use GetCurrentNativeCallContext, notably:
55
+ # - nsIDOMCrypto.{generateCRMFRequest,signText}
56
+ # - nsIDOMLocation.reload
57
+ # - nsIDOMNSHistory.go
58
+ # - nsIDOMJSNavigator.preference
59
+ # - nsIDOMJSPluginArray.refresh
60
+ # - nsIDOMWindowInternal.postMessage
61
+ # - nsIDOMJSWindow.{prompt,setTimeout,setInterval,open,openDialog}
62
+ #
63
+ # (And nsIDOMModalContentWindow.returnValue is an attribute of type
64
+ # nsIVariant, which qsgen.py can't handle.)
65
+ #
66
+ 'nsIDOMWindow.name',
67
+ 'nsIDOMWindow.parent',
68
+ 'nsIDOMWindow.top',
69
+ # Several window properties are magically resolved, including
70
+ # location, _content, navigator, document, and window itself.
71
+ # These do not need quick stubs.
72
+ #'nsIDOMWindow.document',
73
+ 'nsIDOMWindow.getSelection',
74
+ 'nsIDOMWindow.scrollByLines',
75
+ 'nsIDOMJSWindow.dump',
76
+ 'nsIDOMScreen.top',
77
+ 'nsIDOMScreen.height',
78
+ 'nsIDOMScreen.width',
79
+ 'nsIDOMScreen.left',
80
+ 'nsIDOMClientRect.top',
81
+ 'nsIDOMClientRect.right',
82
+ 'nsIDOMClientRect.bottom',
83
+ 'nsIDOMClientRect.left',
84
+ 'nsIDOMClientRectList.item',
85
+ 'nsIDOMClientRectList.length',
86
+ # nsLocationSH has ~ALLOW_PROP_MODS_TO_PROTOTYPE, so don't try.
87
+ #'nsIDOMLocation.hostname',
88
+ #'nsIDOMLocation.href',
89
+
90
+ # dom/public/idl/canvas
91
+ #
92
+ # nsIDOMCanvasRenderingContext2D
93
+ # NOTE: attributes strokeStyle and fillStyle are nsIVariant
94
+ # NOTE: drawImage(), getImageData(), and putImageData() use
95
+ # GetCurrentNativeCallContext
96
+ 'nsIDOMCanvasRenderingContext2D.canvas',
97
+ 'nsIDOMCanvasRenderingContext2D.save',
98
+ 'nsIDOMCanvasRenderingContext2D.restore',
99
+ 'nsIDOMCanvasRenderingContext2D.scale',
100
+ 'nsIDOMCanvasRenderingContext2D.rotate',
101
+ 'nsIDOMCanvasRenderingContext2D.translate',
102
+ 'nsIDOMCanvasRenderingContext2D.transform',
103
+ 'nsIDOMCanvasRenderingContext2D.setTransform',
104
+ 'nsIDOMCanvasRenderingContext2D.globalAlpha',
105
+ 'nsIDOMCanvasRenderingContext2D.globalCompositeOperation',
106
+ 'nsIDOMCanvasRenderingContext2D.lineWidth',
107
+ 'nsIDOMCanvasRenderingContext2D.lineCap',
108
+ 'nsIDOMCanvasRenderingContext2D.lineJoin',
109
+ 'nsIDOMCanvasRenderingContext2D.miterLimit',
110
+ 'nsIDOMCanvasRenderingContext2D.clearRect',
111
+ 'nsIDOMCanvasRenderingContext2D.fillRect',
112
+ 'nsIDOMCanvasRenderingContext2D.strokeRect',
113
+ 'nsIDOMCanvasRenderingContext2D.beginPath',
114
+ 'nsIDOMCanvasRenderingContext2D.closePath',
115
+ 'nsIDOMCanvasRenderingContext2D.moveTo',
116
+ 'nsIDOMCanvasRenderingContext2D.lineTo',
117
+ 'nsIDOMCanvasRenderingContext2D.quadraticCurveTo',
118
+ 'nsIDOMCanvasRenderingContext2D.bezierCurveTo',
119
+ 'nsIDOMCanvasRenderingContext2D.arcTo',
120
+ 'nsIDOMCanvasRenderingContext2D.arc',
121
+ 'nsIDOMCanvasRenderingContext2D.rect',
122
+ 'nsIDOMCanvasRenderingContext2D.fill',
123
+ 'nsIDOMCanvasRenderingContext2D.stroke',
124
+ 'nsIDOMCanvasRenderingContext2D.clip',
125
+ 'nsIDOMCanvasRenderingContext2D.font',
126
+ 'nsIDOMCanvasRenderingContext2D.textAlign',
127
+ 'nsIDOMCanvasRenderingContext2D.textBaseline',
128
+ 'nsIDOMCanvasRenderingContext2D.fillText',
129
+ 'nsIDOMCanvasRenderingContext2D.strokeText',
130
+ 'nsIDOMCanvasRenderingContext2D.measureText',
131
+ 'nsIDOMCanvasRenderingContext2D.isPointInPath',
132
+ 'nsIDOMTextMetrics.width',
133
+
134
+ # dom/public/idl/core
135
+ 'nsIDOMCharacterData.data',
136
+ 'nsIDOMCharacterData.length',
137
+ 'nsIDOMDocument.documentElement',
138
+ 'nsIDOMDocument.implementation',
139
+ 'nsIDOMDocument.getElementsByTagName',
140
+ 'nsIDOMDocument.doctype',
141
+ 'nsIDOMDocument.getElementsByTagNameNS',
142
+ 'nsIDOMDocument.getElementById',
143
+ 'nsIDOMDocument.createDocumentFragment',
144
+ 'nsIDOMDocument.createElement',
145
+ 'nsIDOMDocument.importNode',
146
+ 'nsIDOMDocument.createTextNode',
147
+ 'nsIDOMElement.removeAttributeNS',
148
+ 'nsIDOMElement.removeAttribute',
149
+ 'nsIDOMElement.getAttribute',
150
+ 'nsIDOMElement.getElementsByTagName',
151
+ 'nsIDOMElement.setAttribute',
152
+ 'nsIDOMElement.getElementsByTagNameNS',
153
+ 'nsIDOMElement.hasAttributeNS',
154
+ 'nsIDOMElement.tagName',
155
+ 'nsIDOMElement.setAttributeNS',
156
+ 'nsIDOMElement.hasAttribute',
157
+ 'nsIDOMElement.getAttributeNS',
158
+ 'nsIDOMNamedNodeMap.item',
159
+ 'nsIDOMNamedNodeMap.length',
160
+ 'nsIDOMNode.appendChild',
161
+ 'nsIDOMNode.nextSibling',
162
+ 'nsIDOMNode.cloneNode',
163
+ 'nsIDOMNode.firstChild',
164
+ 'nsIDOMNode.prefix',
165
+ 'nsIDOMNode.nodeValue',
166
+ 'nsIDOMNode.childNodes',
167
+ 'nsIDOMNode.normalize',
168
+ 'nsIDOMNode.nodeName',
169
+ 'nsIDOMNode.namespaceURI',
170
+ 'nsIDOMNode.hasChildNodes',
171
+ 'nsIDOMNode.previousSibling',
172
+ 'nsIDOMNode.nodeType',
173
+ 'nsIDOMNode.insertBefore',
174
+ 'nsIDOMNode.replaceChild',
175
+ 'nsIDOMNode.localName',
176
+ 'nsIDOMNode.lastChild',
177
+ 'nsIDOMNode.ownerDocument',
178
+ 'nsIDOMNode.parentNode',
179
+ 'nsIDOMNode.removeChild',
180
+ 'nsIDOMNode.hasAttributes',
181
+ 'nsIDOMNode.attributes',
182
+ 'nsIDOMNodeList.item',
183
+ 'nsIDOMNodeList.length',
184
+ 'nsIDOMText.splitText',
185
+ 'nsIDOM3Document.documentURI',
186
+ 'nsIDOM3Document.adoptNode',
187
+ 'nsIDOM3Document.renameNode',
188
+ 'nsIDOM3Node.compareDocumentPosition',
189
+ 'nsIDOM3Node.getUserData',
190
+ 'nsIDOM3Node.baseURI',
191
+ 'nsIDOM3Node.textContent',
192
+ 'nsIDOM3Node.isSameNode',
193
+ 'nsIDOM3Node.lookupNamespaceURI',
194
+ 'nsIDOM3Node.setUserData',
195
+ 'nsIDOM3Node.lookupPrefix',
196
+ 'nsIDOM3Node.isDefaultNamespace',
197
+ 'nsIDOM3Node.isEqualNode',
198
+ 'nsIDOM3Text.isElementContentWhitespace',
199
+ 'nsIDOM3Text.replaceWholeText',
200
+ 'nsIDOM3Text.wholeText',
201
+ 'nsIDOMDOMStringList.item',
202
+ 'nsIDOMDOMStringList.length',
203
+ 'nsIDOMDOMStringList.contains',
204
+ 'nsIDOMNameList.getName',
205
+ 'nsIDOMNameList.contains',
206
+ 'nsIDOMNameList.containsNS',
207
+ 'nsIDOMNameList.length',
208
+ 'nsIDOMNameList.getNamespaceURI',
209
+ 'nsIDOMNSDocument.getElementsByClassName',
210
+ 'nsIDOMNSDocument.title',
211
+ 'nsIDOMNSDocument.hasFocus',
212
+ # This property is treated specially in nsDOMClassInfo in a way that
213
+ # would shadow any quick stub. Also, document.location is a special
214
+ # case for security.
215
+ #'nsIDOMNSDocument.location',
216
+ 'nsIDOMNSDocument.elementFromPoint',
217
+ 'nsIDOMNSDocument.activeElement',
218
+ 'nsIDOMNSDocument.getBoxObjectFor',
219
+ 'nsIDOMXMLDocument.evaluateXPointer',
220
+ 'nsIDOMXMLDocument.evaluateFIXptr',
221
+ 'nsIDOMNSElement.getClientRects',
222
+ 'nsIDOMNSElement.getBoundingClientRect',
223
+ 'nsIDOMNSElement.getElementsByClassName',
224
+ 'nsIDOMNSElement.scrollWidth',
225
+ 'nsIDOMNSElement.clientLeft',
226
+ 'nsIDOMNSElement.clientHeight',
227
+ 'nsIDOMNSElement.clientWidth',
228
+ 'nsIDOMNSElement.clientTop',
229
+
230
+ # dom/public/idl/css
231
+ 'nsIDOMElementCSSInlineStyle.style',
232
+ 'nsIDOMCSS2Properties.background',
233
+ 'nsIDOMCSS2Properties.height',
234
+ 'nsIDOMCSS2Properties.textAlign',
235
+ 'nsIDOMCSS2Properties.right',
236
+ 'nsIDOMCSS2Properties.bottom',
237
+ 'nsIDOMCSS2Properties.fontSize',
238
+ 'nsIDOMCSS2Properties.backgroundColor',
239
+ 'nsIDOMCSS2Properties.letterSpacing',
240
+ 'nsIDOMCSS2Properties.verticalAlign',
241
+ 'nsIDOMCSS2Properties.color',
242
+ 'nsIDOMCSS2Properties.top',
243
+ 'nsIDOMCSS2Properties.width',
244
+ 'nsIDOMCSS2Properties.display',
245
+ 'nsIDOMCSS2Properties.zIndex',
246
+ 'nsIDOMCSS2Properties.position',
247
+ 'nsIDOMCSS2Properties.left',
248
+ 'nsIDOMCSS2Properties.visibility',
249
+ 'nsIDOMNSCSS2Properties.opacity',
250
+ 'nsIDOMRect.top',
251
+ 'nsIDOMRect.right',
252
+ 'nsIDOMRect.left',
253
+ 'nsIDOMRect.bottom',
254
+ 'nsIDOMViewCSS.getComputedStyle',
255
+
256
+ # dom/public/idl/events
257
+ 'nsIDOMEvent.target',
258
+ 'nsIDOMEvent.preventDefault',
259
+ 'nsIDOMEvent.cancelable',
260
+ 'nsIDOMEvent.currentTarget',
261
+ 'nsIDOMEvent.timeStamp',
262
+ 'nsIDOMEvent.bubbles',
263
+ 'nsIDOMEvent.type',
264
+ 'nsIDOMEvent.initEvent',
265
+ 'nsIDOMEvent.stopPropagation',
266
+ 'nsIDOMEvent.eventPhase',
267
+ 'nsIDOMEventTarget.dispatchEvent',
268
+ 'nsIDOMEventTarget.removeEventListener',
269
+ # Conflicts with nsIDOMNSEventTarget.addEventListener;
270
+ # the conflict is specially resolved in nsDOMClassInfo.cpp.
271
+ # (See bug 453331.)
272
+ #'nsIDOMEventTarget.addEventListener',
273
+ 'nsIDOMDocumentEvent.createEvent',
274
+ 'nsIDOMMouseEvent.clientX',
275
+ 'nsIDOMMouseEvent.clientY',
276
+ 'nsIDOMMouseEvent.relatedTarget',
277
+ 'nsIDOMMouseEvent.shiftKey',
278
+ 'nsIDOMMouseEvent.button',
279
+ 'nsIDOMMouseEvent.altKey',
280
+ 'nsIDOMMouseEvent.metaKey',
281
+ 'nsIDOMMouseEvent.ctrlKey',
282
+ 'nsIDOMMouseEvent.screenY',
283
+ 'nsIDOMMouseEvent.screenX',
284
+ 'nsIDOMNSEvent.originalTarget',
285
+ 'nsIDOMNSEvent.preventCapture',
286
+ 'nsIDOMKeyEvent.ctrlKey',
287
+ 'nsIDOMKeyEvent.shiftKey',
288
+ 'nsIDOMKeyEvent.keyCode',
289
+ 'nsIDOMKeyEvent.metaKey',
290
+ 'nsIDOMKeyEvent.charCode',
291
+ 'nsIDOMKeyEvent.altKey',
292
+ 'nsIDOMMutationEvent.attrName',
293
+ 'nsIDOMMutationEvent.relatedNode',
294
+ 'nsIDOMMutationEvent.attrChange',
295
+ 'nsIDOMMutationEvent.newValue',
296
+ 'nsIDOMMutationEvent.prevValue',
297
+ 'nsIDOMNSUIEvent.getPreventDefault',
298
+ 'nsIDOMNSUIEvent.which',
299
+ 'nsIDOMNSUIEvent.rangeParent',
300
+ 'nsIDOMNSUIEvent.rangeOffset',
301
+ 'nsIDOMNSUIEvent.pageX',
302
+ 'nsIDOMNSUIEvent.pageY',
303
+ 'nsIDOMNSUIEvent.isChar',
304
+
305
+ # dom/public/idl/geolocation - None.
306
+
307
+ # dom/public/idl/html
308
+ 'nsIDOMHTMLAnchorElement.href',
309
+ 'nsIDOMHTMLAnchorElement.rel',
310
+ 'nsIDOMHTMLAnchorElement.target',
311
+ 'nsIDOMHTMLAnchorElement.name',
312
+ 'nsIDOMHTMLBaseElement.href',
313
+ 'nsIDOMHTMLBaseElement.target',
314
+ 'nsIDOMHTMLButtonElement.name',
315
+ 'nsIDOMHTMLButtonElement.form',
316
+ 'nsIDOMHTMLButtonElement.value',
317
+ 'nsIDOMHTMLButtonElement.disabled',
318
+ 'nsIDOMHTMLCollection.item',
319
+ # This is shadowed by nsIDOMHTMLOptionsCollection.length,
320
+ # but it is also present in other objects where it isn't shadowed.
321
+ # Quick stubs handle the shadowing the same as XPConnect.
322
+ 'nsIDOMHTMLCollection.length',
323
+ 'nsIDOMHTMLDocument.body',
324
+ 'nsIDOMHTMLDocument.getElementsByName',
325
+ 'nsIDOMHTMLDocument.anchors',
326
+ 'nsIDOMHTMLDocument.links',
327
+ 'nsIDOMHTMLDocument.title',
328
+ 'nsIDOMHTMLDocument.URL',
329
+ 'nsIDOMHTMLDocument.referrer',
330
+ 'nsIDOMHTMLDocument.forms',
331
+ 'nsIDOMHTMLDocument.cookie',
332
+ 'nsIDOMHTMLDocument.images',
333
+ 'nsIDOMHTMLElement.className',
334
+ 'nsIDOMHTMLElement.id',
335
+ 'nsIDOMHTMLElement.title',
336
+ 'nsIDOMHTMLFormElement.elements',
337
+ 'nsIDOMHTMLFormElement.name',
338
+ 'nsIDOMHTMLFormElement.submit',
339
+ 'nsIDOMHTMLFormElement.length',
340
+ 'nsIDOMHTMLFormElement.target',
341
+ 'nsIDOMHTMLFormElement.action',
342
+ 'nsIDOMHTMLFrameElement.src',
343
+ 'nsIDOMHTMLFrameElement.contentDocument',
344
+ 'nsIDOMHTMLFrameElement.name',
345
+ 'nsIDOMHTMLFrameSetElement.rows',
346
+ 'nsIDOMHTMLFrameSetElement.cols',
347
+ 'nsIDOMHTMLIFrameElement.src',
348
+ 'nsIDOMHTMLIFrameElement.contentDocument',
349
+ 'nsIDOMHTMLImageElement.src',
350
+ 'nsIDOMHTMLImageElement.name',
351
+ 'nsIDOMHTMLImageElement.height',
352
+ 'nsIDOMHTMLImageElement.width',
353
+ 'nsIDOMHTMLInputElement.defaultChecked',
354
+ 'nsIDOMHTMLInputElement.disabled',
355
+ 'nsIDOMHTMLInputElement.select',
356
+ 'nsIDOMHTMLInputElement.checked',
357
+ 'nsIDOMHTMLInputElement.type',
358
+ 'nsIDOMHTMLInputElement.form',
359
+ 'nsIDOMHTMLInputElement.src',
360
+ 'nsIDOMHTMLInputElement.name',
361
+ 'nsIDOMHTMLInputElement.value',
362
+ 'nsIDOMHTMLLinkElement.disabled',
363
+ 'nsIDOMHTMLOptionElement.index',
364
+ 'nsIDOMHTMLOptionElement.selected',
365
+ 'nsIDOMHTMLOptionElement.form',
366
+ # Readonly, shadowed by nsIDOMNSHTMLOptionElement.text (below).
367
+ #'nsIDOMHTMLOptionElement.text',
368
+ 'nsIDOMHTMLOptionElement.defaultSelected',
369
+ 'nsIDOMHTMLOptionElement.value',
370
+ 'nsIDOMHTMLOptionElement.label',
371
+ 'nsIDOMHTMLOptionElement.disabled',
372
+ 'nsIDOMHTMLOptionsCollection.item',
373
+ 'nsIDOMHTMLOptionsCollection.length',
374
+ 'nsIDOMHTMLSelectElement.name',
375
+ 'nsIDOMHTMLSelectElement.form',
376
+ 'nsIDOMHTMLSelectElement.add',
377
+ 'nsIDOMHTMLSelectElement.value',
378
+ 'nsIDOMHTMLSelectElement.disabled',
379
+ 'nsIDOMHTMLSelectElement.length',
380
+ 'nsIDOMHTMLSelectElement.remove',
381
+ 'nsIDOMHTMLSelectElement.selectedIndex',
382
+ 'nsIDOMHTMLSelectElement.type',
383
+ 'nsIDOMHTMLSelectElement.options',
384
+ 'nsIDOMHTMLSelectElement.size',
385
+ 'nsIDOMHTMLStyleElement.disabled',
386
+ 'nsIDOMHTMLTableCellElement.colSpan',
387
+ 'nsIDOMHTMLTableCellElement.headers',
388
+ 'nsIDOMHTMLTableCellElement.cellIndex',
389
+ 'nsIDOMHTMLTableCellElement.rowSpan',
390
+ 'nsIDOMHTMLTableCellElement.abbr',
391
+ 'nsIDOMHTMLTableCellElement.scope',
392
+ 'nsIDOMHTMLTableCellElement.noWrap',
393
+ 'nsIDOMHTMLTableCellElement.width',
394
+ 'nsIDOMHTMLTableColElement.span',
395
+ 'nsIDOMHTMLTableColElement.width',
396
+ 'nsIDOMHTMLTableElement.rows',
397
+ 'nsIDOMHTMLTableElement.deleteRow',
398
+ 'nsIDOMHTMLTableElement.summary',
399
+ 'nsIDOMHTMLTableElement.insertRow',
400
+ 'nsIDOMHTMLTableRowElement.sectionRowIndex',
401
+ 'nsIDOMHTMLTableRowElement.rowIndex',
402
+ 'nsIDOMHTMLTableRowElement.cells',
403
+ 'nsIDOMHTMLTableRowElement.deleteCell',
404
+ 'nsIDOMHTMLTableRowElement.insertCell',
405
+ 'nsIDOMHTMLTableSectionElement.rows',
406
+ 'nsIDOMHTMLTableSectionElement.insertRow',
407
+ 'nsIDOMHTMLTableSectionElement.deleteRow',
408
+ 'nsIDOMHTMLTextAreaElement.rows',
409
+ 'nsIDOMHTMLTextAreaElement.name',
410
+ 'nsIDOMHTMLTextAreaElement.form',
411
+ 'nsIDOMHTMLTextAreaElement.defaultValue',
412
+ 'nsIDOMHTMLTextAreaElement.cols',
413
+ 'nsIDOMHTMLTextAreaElement.value',
414
+ 'nsIDOMHTMLTextAreaElement.type',
415
+ 'nsIDOMHTMLTextAreaElement.select',
416
+ 'nsIDOMHTMLTitleElement.text',
417
+ 'nsIDOMHTMLCanvasElement.width',
418
+ 'nsIDOMHTMLCanvasElement.height',
419
+ 'nsIDOMHTMLCanvasElement.getContext',
420
+ # 'nsIDOMHTMLCanvasElement.toDataURL', # uses GetCurrentNativeCallContext
421
+ 'nsIDOMNSHTMLAnchorElement.text',
422
+ 'nsIDOMNSHTMLAnchorElement.search',
423
+ 'nsIDOMNSHTMLAnchorElement.hash',
424
+ 'nsIDOMNSHTMLDocument.width',
425
+ 'nsIDOMNSHTMLDocument.height',
426
+ 'nsIDOMNSHTMLDocument.domain',
427
+ 'nsIDOMNSHTMLDocument.getSelection',
428
+ 'nsIDOMNSHTMLDocument.designMode',
429
+ #'nsIDOMNSHTMLDocument.write', # uses GetCurrentNativeCallContext
430
+ #'nsIDOMNSHTMLDocument.writeln', # uses GetCurrentNativeCallContext
431
+ 'nsIDOMNSHTMLElement.contentEditable',
432
+ 'nsIDOMNSHTMLElement.offsetParent',
433
+ 'nsIDOMNSHTMLElement.innerHTML',
434
+ 'nsIDOMNSHTMLElement.offsetLeft',
435
+ 'nsIDOMNSHTMLElement.offsetTop',
436
+ 'nsIDOMNSHTMLElement.offsetHeight',
437
+ 'nsIDOMNSHTMLElement.offsetWidth',
438
+ 'nsIDOMNSHTMLFrameElement.contentWindow',
439
+ 'nsIDOMNSHTMLImageElement.complete',
440
+ 'nsIDOMNSHTMLInputElement.files',
441
+ 'nsIDOMNSHTMLInputElement.textLength',
442
+ 'nsIDOMNSHTMLInputElement.selectionStart',
443
+ 'nsIDOMNSHTMLInputElement.selectionEnd',
444
+ 'nsIDOMNSHTMLInputElement.setSelectionRange',
445
+ 'nsIDOMNSHTMLOptionCollection.selectedIndex',
446
+ 'nsIDOMNSHTMLOptionElement.text',
447
+ 'nsIDOMNSHTMLSelectElement.item',
448
+ 'nsIDOMNSHTMLTextAreaElement.setSelectionRange',
449
+ 'nsIDOMNSHTMLTextAreaElement.selectionStart',
450
+ 'nsIDOMNSHTMLTextAreaElement.selectionEnd',
451
+ 'nsIDOMNSHTMLTextAreaElement.textLength',
452
+
453
+ # dom/public/idl/json - None.
454
+ # All 4 methods of nsIJSON call GetCurrentNativeCallContext.
455
+
456
+ # dom/public/idl/offline - None.
457
+
458
+ # dom/public/idl/range
459
+ 'nsIDOMRange.collapsed',
460
+
461
+ # dom/public/idl/sidebar - None.
462
+
463
+ # dom/public/idl/storage
464
+ 'nsIDOMToString.toString',
465
+ 'nsIDOMStorage2.setItem',
466
+ 'nsIDOMStorage2.length',
467
+ 'nsIDOMStorage2.getItem',
468
+ 'nsIDOMStorage2.key',
469
+ 'nsIDOMStorage2.removeItem',
470
+ 'nsIDOMStorage2.clear',
471
+ 'nsIDOMStorageItem.value',
472
+ 'nsIDOMStorageWindow_1_9_1.sessionStorage',
473
+ 'nsIDOMStorageWindow.globalStorage',
474
+
475
+ # dom/public/idl/stylesheets - None.
476
+
477
+ # dom/public/idl/traversal
478
+ 'nsIDOMDocumentTraversal.createNodeIterator',
479
+ 'nsIDOMNodeIterator.nextNode',
480
+
481
+ # dom/public/idl/views
482
+ 'nsIDOMDocumentView.defaultView',
483
+
484
+ # dom/public/idl/xbl - None.
485
+
486
+ # dom/public/idl/xpath
487
+ 'nsIDOMXPathEvaluator.evaluate',
488
+ 'nsIDOMXPathEvaluator.createExpression',
489
+ 'nsIDOMXPathEvaluator.createNSResolver',
490
+ 'nsIDOMXPathExpression.evaluate',
491
+ 'nsIDOMXPathNSResolver.lookupNamespaceURI',
492
+ 'nsIDOMXPathResult.snapshotItem',
493
+ 'nsIDOMXPathResult.iterateNext',
494
+ 'nsIDOMXPathResult.snapshotLength',
495
+ 'nsIDOMXPathResult.resultType',
496
+ 'nsIDOMXPathResult.numberValue',
497
+ 'nsIDOMXPathResult.stringValue',
498
+ 'nsIDOMXPathResult.booleanValue',
499
+ 'nsIDOMXPathResult.singleNodeValue',
500
+ 'nsIDOMNSXPathExpression.evaluateWithContext',
501
+
502
+ # dom/public/idl/xul - None.
503
+ ]
504
+
505
+ # Most interfaces can be found by searching the includePath; to find
506
+ # nsIDOMEvent, for example, just look for nsIDOMEvent.idl. But IDL filenames
507
+ # for very long interface names are slightly abbreviated, and many interfaces
508
+ # don't have their own files, just for extra wackiness. So qsgen.py needs
509
+ # a little help.
510
+ #
511
+ irregularFilenames = {
512
+ # abbreviations
513
+ 'nsIDOMNSHTMLOptionCollection': 'nsIDOMNSHTMLOptionCollectn',
514
+ 'nsIDOMHTMLTableSectionElement': 'nsIDOMHTMLTableSectionElem',
515
+
516
+ # stowaways
517
+ 'nsIDOMTextMetrics': 'nsIDOMCanvasRenderingContext2D',
518
+ 'nsIDOMNSCSS2Properties': 'nsIDOMCSS2Properties',
519
+ 'nsIXPointerResult': 'nsIXPointer',
520
+ }
521
+
522
+ customIncludes = [
523
+ 'nsINode.h',
524
+ 'nsIContent.h',
525
+ 'nsIDocument.h',
526
+ 'nsINodeList.h'
527
+ ]
528
+
529
+ nsIDOMNode_GetChildNodes_customMethodCallCode = """
530
+ nsIDOMNodeList* result = self->GetChildNodesList();
531
+ if (!result)
532
+ return xpc_qsThrowGetterSetterFailed(cx, NS_ERROR_OUT_OF_MEMORY, JSVAL_TO_OBJECT(*vp), id);
533
+ """
534
+
535
+ customMethodCalls = {
536
+ 'nsIDOMNode_GetNextSibling': {
537
+ 'thisType': 'nsINode',
538
+ 'code': ' nsINode* result = self->GetSibling(1);'
539
+ },
540
+ 'nsIDOMNode_GetFirstChild': {
541
+ 'thisType': 'nsINode',
542
+ 'code': ' nsINode* result = self->GetChildAt(0);'
543
+ },
544
+ 'nsIDOMNode_GetChildNodes': {
545
+ 'thisType': 'nsINode',
546
+ 'code': nsIDOMNode_GetChildNodes_customMethodCallCode
547
+ },
548
+ 'nsIDOMNode_GetPreviousSibling': {
549
+ 'thisType': 'nsINode',
550
+ 'code': ' nsINode* result = self->GetSibling(-1);'
551
+ },
552
+ 'nsIDOMNode_GetLastChild': {
553
+ 'thisType': 'nsINode',
554
+ 'code': ' nsINode* result = self->GetLastChild();'
555
+ },
556
+ 'nsIDOMNode_GetOwnerDocument': {
557
+ 'thisType': 'nsINode',
558
+ 'code': ' nsIDocument* result = self->GetOwnerDocument();'
559
+ },
560
+ 'nsIDOMNode_GetParentNode': {
561
+ 'thisType': 'nsINode',
562
+ 'code': ' nsINode* result = self->GetNodeParent();'
563
+ },
564
+ 'nsIDOMNodeList_Item': {
565
+ 'thisType': 'nsINodeList',
566
+ 'code': ' nsINode* result = self->GetNodeAt(arg0);'
567
+ }
568
+ }