distil 0.7.0

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 (552) hide show
  1. data/Rakefile +28 -0
  2. data/VERSION +1 -0
  3. data/bin/distil +45 -0
  4. data/distil.gemspec +586 -0
  5. data/lib/bootstrap-template.js +56 -0
  6. data/lib/configurable.rb +125 -0
  7. data/lib/file-set.rb +42 -0
  8. data/lib/file-types/css-file.rb +75 -0
  9. data/lib/file-types/html-file.rb +11 -0
  10. data/lib/file-types/javascript-file.rb +98 -0
  11. data/lib/file-types/json-file.rb +14 -0
  12. data/lib/file-types/nib-file.rb +9 -0
  13. data/lib/jsdoc.conf +18 -0
  14. data/lib/jsl.conf +121 -0
  15. data/lib/project.rb +96 -0
  16. data/lib/source-file.rb +181 -0
  17. data/lib/target.rb +96 -0
  18. data/lib/task.rb +239 -0
  19. data/lib/tasks/copy-task.rb +21 -0
  20. data/lib/tasks/css-task.rb +18 -0
  21. data/lib/tasks/javascript-task.rb +125 -0
  22. data/lib/tasks/multiple-output-task.rb +134 -0
  23. data/lib/tasks/nib-task.rb +83 -0
  24. data/lib/tasks/output-task.rb +73 -0
  25. data/lib/tasks/single-output-task.rb +83 -0
  26. data/lib/tasks/test-task.rb +280 -0
  27. data/lib/test/HtmlTestReporter.js +127 -0
  28. data/lib/test/Test.js +248 -0
  29. data/lib/test/TestReporter.js +79 -0
  30. data/lib/test/TestRunner.js +132 -0
  31. data/lib/test/browser.rb +97 -0
  32. data/lib/test/scriptwrapper.html +10 -0
  33. data/lib/test/unittest.html +127 -0
  34. data/vendor/Makefile +35 -0
  35. data/vendor/extconf.rb +3 -0
  36. data/vendor/jsdoc-extras/plugins/distil-plugin.js +142 -0
  37. data/vendor/jsdoc-extras/plugins/interface-plugin.js +36 -0
  38. data/vendor/jsdoc-extras/templates/coherent/allclasses.tmpl +17 -0
  39. data/vendor/jsdoc-extras/templates/coherent/allfiles.tmpl +53 -0
  40. data/vendor/jsdoc-extras/templates/coherent/class.tmpl +803 -0
  41. data/vendor/jsdoc-extras/templates/coherent/index.tmpl +37 -0
  42. data/vendor/jsdoc-extras/templates/coherent/publish.js +242 -0
  43. data/vendor/jsdoc-extras/templates/coherent/showdown.js +421 -0
  44. data/vendor/jsdoc-extras/templates/coherent/static/code-footer.html +3 -0
  45. data/vendor/jsdoc-extras/templates/coherent/static/code-header.html +7 -0
  46. data/vendor/jsdoc-extras/templates/coherent/static/default.css +297 -0
  47. data/vendor/jsdoc-extras/templates/coherent/static/header.html +2 -0
  48. data/vendor/jsdoc-extras/templates/coherent/static/index.html +19 -0
  49. data/vendor/jsdoc-extras/templates/coherent/symbol.tmpl +35 -0
  50. data/vendor/jsdoc-toolkit/README.txt +183 -0
  51. data/vendor/jsdoc-toolkit/app/frame/Chain.js +102 -0
  52. data/vendor/jsdoc-toolkit/app/frame/Dumper.js +144 -0
  53. data/vendor/jsdoc-toolkit/app/frame/Hash.js +84 -0
  54. data/vendor/jsdoc-toolkit/app/frame/Link.js +171 -0
  55. data/vendor/jsdoc-toolkit/app/frame/Namespace.js +10 -0
  56. data/vendor/jsdoc-toolkit/app/frame/Opt.js +134 -0
  57. data/vendor/jsdoc-toolkit/app/frame/Reflection.js +26 -0
  58. data/vendor/jsdoc-toolkit/app/frame/String.js +93 -0
  59. data/vendor/jsdoc-toolkit/app/frame/Testrun.js +129 -0
  60. data/vendor/jsdoc-toolkit/app/frame.js +33 -0
  61. data/vendor/jsdoc-toolkit/app/handlers/FOODOC.js +26 -0
  62. data/vendor/jsdoc-toolkit/app/handlers/XMLDOC/DomReader.js +159 -0
  63. data/vendor/jsdoc-toolkit/app/handlers/XMLDOC/XMLDoc.js +16 -0
  64. data/vendor/jsdoc-toolkit/app/handlers/XMLDOC/XMLParse.js +292 -0
  65. data/vendor/jsdoc-toolkit/app/handlers/XMLDOC.js +26 -0
  66. data/vendor/jsdoc-toolkit/app/lib/JSDOC/DocComment.js +204 -0
  67. data/vendor/jsdoc-toolkit/app/lib/JSDOC/DocTag.js +300 -0
  68. data/vendor/jsdoc-toolkit/app/lib/JSDOC/JsDoc.js +126 -0
  69. data/vendor/jsdoc-toolkit/app/lib/JSDOC/JsPlate.js +109 -0
  70. data/vendor/jsdoc-toolkit/app/lib/JSDOC/Lang.js +144 -0
  71. data/vendor/jsdoc-toolkit/app/lib/JSDOC/Parser.js +144 -0
  72. data/vendor/jsdoc-toolkit/app/lib/JSDOC/PluginManager.js +33 -0
  73. data/vendor/jsdoc-toolkit/app/lib/JSDOC/Symbol.js +644 -0
  74. data/vendor/jsdoc-toolkit/app/lib/JSDOC/SymbolSet.js +241 -0
  75. data/vendor/jsdoc-toolkit/app/lib/JSDOC/TextStream.js +41 -0
  76. data/vendor/jsdoc-toolkit/app/lib/JSDOC/Token.js +18 -0
  77. data/vendor/jsdoc-toolkit/app/lib/JSDOC/TokenReader.js +332 -0
  78. data/vendor/jsdoc-toolkit/app/lib/JSDOC/TokenStream.js +133 -0
  79. data/vendor/jsdoc-toolkit/app/lib/JSDOC/Util.js +32 -0
  80. data/vendor/jsdoc-toolkit/app/lib/JSDOC/Walker.js +499 -0
  81. data/vendor/jsdoc-toolkit/app/lib/JSDOC.js +106 -0
  82. data/vendor/jsdoc-toolkit/app/main.js +129 -0
  83. data/vendor/jsdoc-toolkit/app/plugins/commentSrcJson.js +20 -0
  84. data/vendor/jsdoc-toolkit/app/plugins/frameworkPrototype.js +16 -0
  85. data/vendor/jsdoc-toolkit/app/plugins/functionCall.js +10 -0
  86. data/vendor/jsdoc-toolkit/app/plugins/publishSrcHilite.js +54 -0
  87. data/vendor/jsdoc-toolkit/app/plugins/symbolLink.js +10 -0
  88. data/vendor/jsdoc-toolkit/app/plugins/tagParamConfig.js +31 -0
  89. data/vendor/jsdoc-toolkit/app/plugins/tagSynonyms.js +43 -0
  90. data/vendor/jsdoc-toolkit/app/run.js +348 -0
  91. data/vendor/jsdoc-toolkit/app/t/TestDoc.js +144 -0
  92. data/vendor/jsdoc-toolkit/app/t/runner.js +13 -0
  93. data/vendor/jsdoc-toolkit/app/test/addon.js +24 -0
  94. data/vendor/jsdoc-toolkit/app/test/anon_inner.js +14 -0
  95. data/vendor/jsdoc-toolkit/app/test/augments.js +31 -0
  96. data/vendor/jsdoc-toolkit/app/test/augments2.js +26 -0
  97. data/vendor/jsdoc-toolkit/app/test/borrows.js +46 -0
  98. data/vendor/jsdoc-toolkit/app/test/borrows2.js +23 -0
  99. data/vendor/jsdoc-toolkit/app/test/config.js +22 -0
  100. data/vendor/jsdoc-toolkit/app/test/constructs.js +18 -0
  101. data/vendor/jsdoc-toolkit/app/test/encoding.js +10 -0
  102. data/vendor/jsdoc-toolkit/app/test/encoding_other.js +12 -0
  103. data/vendor/jsdoc-toolkit/app/test/event.js +54 -0
  104. data/vendor/jsdoc-toolkit/app/test/exports.js +14 -0
  105. data/vendor/jsdoc-toolkit/app/test/functions_anon.js +39 -0
  106. data/vendor/jsdoc-toolkit/app/test/functions_nested.js +33 -0
  107. data/vendor/jsdoc-toolkit/app/test/global.js +13 -0
  108. data/vendor/jsdoc-toolkit/app/test/globals.js +25 -0
  109. data/vendor/jsdoc-toolkit/app/test/ignore.js +10 -0
  110. data/vendor/jsdoc-toolkit/app/test/inner.js +16 -0
  111. data/vendor/jsdoc-toolkit/app/test/jsdoc_test.js +477 -0
  112. data/vendor/jsdoc-toolkit/app/test/lend.js +33 -0
  113. data/vendor/jsdoc-toolkit/app/test/memberof.js +19 -0
  114. data/vendor/jsdoc-toolkit/app/test/memberof2.js +38 -0
  115. data/vendor/jsdoc-toolkit/app/test/memberof3.js +33 -0
  116. data/vendor/jsdoc-toolkit/app/test/memberof_constructor.js +17 -0
  117. data/vendor/jsdoc-toolkit/app/test/module.js +17 -0
  118. data/vendor/jsdoc-toolkit/app/test/name.js +19 -0
  119. data/vendor/jsdoc-toolkit/app/test/namespace_nested.js +23 -0
  120. data/vendor/jsdoc-toolkit/app/test/nocode.js +13 -0
  121. data/vendor/jsdoc-toolkit/app/test/oblit_anon.js +20 -0
  122. data/vendor/jsdoc-toolkit/app/test/overview.js +20 -0
  123. data/vendor/jsdoc-toolkit/app/test/param_inline.js +37 -0
  124. data/vendor/jsdoc-toolkit/app/test/params_optional.js +8 -0
  125. data/vendor/jsdoc-toolkit/app/test/prototype.js +17 -0
  126. data/vendor/jsdoc-toolkit/app/test/prototype_nested.js +9 -0
  127. data/vendor/jsdoc-toolkit/app/test/prototype_oblit.js +13 -0
  128. data/vendor/jsdoc-toolkit/app/test/prototype_oblit_constructor.js +24 -0
  129. data/vendor/jsdoc-toolkit/app/test/public.js +10 -0
  130. data/vendor/jsdoc-toolkit/app/test/scripts/code.js +5 -0
  131. data/vendor/jsdoc-toolkit/app/test/scripts/notcode.txt +5 -0
  132. data/vendor/jsdoc-toolkit/app/test/shared.js +42 -0
  133. data/vendor/jsdoc-toolkit/app/test/shared2.js +2 -0
  134. data/vendor/jsdoc-toolkit/app/test/shortcuts.js +22 -0
  135. data/vendor/jsdoc-toolkit/app/test/static_this.js +13 -0
  136. data/vendor/jsdoc-toolkit/app/test/synonyms.js +31 -0
  137. data/vendor/jsdoc-toolkit/app/test/tosource.js +23 -0
  138. data/vendor/jsdoc-toolkit/app/test/variable_redefine.js +14 -0
  139. data/vendor/jsdoc-toolkit/app/test.js +342 -0
  140. data/vendor/jsdoc-toolkit/changes.txt +116 -0
  141. data/vendor/jsdoc-toolkit/conf/sample.conf +31 -0
  142. data/vendor/jsdoc-toolkit/java/build.xml +36 -0
  143. data/vendor/jsdoc-toolkit/java/build_1.4.xml +36 -0
  144. data/vendor/jsdoc-toolkit/java/classes/js.jar +0 -0
  145. data/vendor/jsdoc-toolkit/java/src/JsDebugRun.java +21 -0
  146. data/vendor/jsdoc-toolkit/java/src/JsRun.java +21 -0
  147. data/vendor/jsdoc-toolkit/jsdebug.jar +0 -0
  148. data/vendor/jsdoc-toolkit/jsrun.jar +0 -0
  149. data/vendor/jsdoc-toolkit/jsrun.sh +53 -0
  150. data/vendor/jsdoc-toolkit/templates/jsdoc/allclasses.tmpl +17 -0
  151. data/vendor/jsdoc-toolkit/templates/jsdoc/allfiles.tmpl +56 -0
  152. data/vendor/jsdoc-toolkit/templates/jsdoc/class.tmpl +649 -0
  153. data/vendor/jsdoc-toolkit/templates/jsdoc/index.tmpl +39 -0
  154. data/vendor/jsdoc-toolkit/templates/jsdoc/publish.js +201 -0
  155. data/vendor/jsdoc-toolkit/templates/jsdoc/static/code-footer.html +3 -0
  156. data/vendor/jsdoc-toolkit/templates/jsdoc/static/code-header.html +14 -0
  157. data/vendor/jsdoc-toolkit/templates/jsdoc/static/default.css +162 -0
  158. data/vendor/jsdoc-toolkit/templates/jsdoc/static/header.html +2 -0
  159. data/vendor/jsdoc-toolkit/templates/jsdoc/static/index.html +19 -0
  160. data/vendor/jsdoc-toolkit/templates/jsdoc/symbol.tmpl +35 -0
  161. data/vendor/jsl-0.3.0/src/JavaScriptLintAPI.cpp +333 -0
  162. data/vendor/jsl-0.3.0/src/JavaScriptLintAPI.h +86 -0
  163. data/vendor/jsl-0.3.0/src/Makefile.in +375 -0
  164. data/vendor/jsl-0.3.0/src/Makefile.ref +372 -0
  165. data/vendor/jsl-0.3.0/src/README.html +826 -0
  166. data/vendor/jsl-0.3.0/src/SpiderMonkey.rsp +12 -0
  167. data/vendor/jsl-0.3.0/src/_jsl_online.php +223 -0
  168. data/vendor/jsl-0.3.0/src/config/AIX4.1.mk +65 -0
  169. data/vendor/jsl-0.3.0/src/config/AIX4.2.mk +64 -0
  170. data/vendor/jsl-0.3.0/src/config/AIX4.3.mk +65 -0
  171. data/vendor/jsl-0.3.0/src/config/Darwin.mk +81 -0
  172. data/vendor/jsl-0.3.0/src/config/Darwin1.3.mk +81 -0
  173. data/vendor/jsl-0.3.0/src/config/Darwin1.4.mk +41 -0
  174. data/vendor/jsl-0.3.0/src/config/Darwin5.2.mk +81 -0
  175. data/vendor/jsl-0.3.0/src/config/Darwin5.3.mk +81 -0
  176. data/vendor/jsl-0.3.0/src/config/HP-UXB.10.10.mk +77 -0
  177. data/vendor/jsl-0.3.0/src/config/HP-UXB.10.20.mk +77 -0
  178. data/vendor/jsl-0.3.0/src/config/HP-UXB.11.00.mk +80 -0
  179. data/vendor/jsl-0.3.0/src/config/IRIX.mk +87 -0
  180. data/vendor/jsl-0.3.0/src/config/IRIX5.3.mk +44 -0
  181. data/vendor/jsl-0.3.0/src/config/IRIX6.1.mk +44 -0
  182. data/vendor/jsl-0.3.0/src/config/IRIX6.2.mk +44 -0
  183. data/vendor/jsl-0.3.0/src/config/IRIX6.3.mk +44 -0
  184. data/vendor/jsl-0.3.0/src/config/IRIX6.5.mk +44 -0
  185. data/vendor/jsl-0.3.0/src/config/Linux_All.mk +103 -0
  186. data/vendor/jsl-0.3.0/src/config/Mac_OS10.0.mk +82 -0
  187. data/vendor/jsl-0.3.0/src/config/OSF1V4.0.mk +72 -0
  188. data/vendor/jsl-0.3.0/src/config/OSF1V5.0.mk +69 -0
  189. data/vendor/jsl-0.3.0/src/config/SunOS4.1.4.mk +101 -0
  190. data/vendor/jsl-0.3.0/src/config/SunOS5.3.mk +91 -0
  191. data/vendor/jsl-0.3.0/src/config/SunOS5.4.mk +92 -0
  192. data/vendor/jsl-0.3.0/src/config/SunOS5.5.1.mk +44 -0
  193. data/vendor/jsl-0.3.0/src/config/SunOS5.5.mk +87 -0
  194. data/vendor/jsl-0.3.0/src/config/SunOS5.6.mk +89 -0
  195. data/vendor/jsl-0.3.0/src/config/SunOS5.7.mk +44 -0
  196. data/vendor/jsl-0.3.0/src/config/SunOS5.8.mk +44 -0
  197. data/vendor/jsl-0.3.0/src/config/SunOS5.9.mk +44 -0
  198. data/vendor/jsl-0.3.0/src/config/WINNT4.0.mk +112 -0
  199. data/vendor/jsl-0.3.0/src/config/WINNT5.0.mk +112 -0
  200. data/vendor/jsl-0.3.0/src/config/WINNT5.1.mk +112 -0
  201. data/vendor/jsl-0.3.0/src/config/WINNT5.2.mk +112 -0
  202. data/vendor/jsl-0.3.0/src/config/dgux.mk +64 -0
  203. data/vendor/jsl-0.3.0/src/config.mk +166 -0
  204. data/vendor/jsl-0.3.0/src/editline/Makefile.ref +144 -0
  205. data/vendor/jsl-0.3.0/src/editline/README +83 -0
  206. data/vendor/jsl-0.3.0/src/editline/editline.3 +175 -0
  207. data/vendor/jsl-0.3.0/src/editline/editline.c +1369 -0
  208. data/vendor/jsl-0.3.0/src/editline/editline.h +135 -0
  209. data/vendor/jsl-0.3.0/src/editline/sysunix.c +182 -0
  210. data/vendor/jsl-0.3.0/src/editline/unix.h +82 -0
  211. data/vendor/jsl-0.3.0/src/fdlibm/Makefile.in +127 -0
  212. data/vendor/jsl-0.3.0/src/fdlibm/Makefile.ref +192 -0
  213. data/vendor/jsl-0.3.0/src/fdlibm/e_acos.c +147 -0
  214. data/vendor/jsl-0.3.0/src/fdlibm/e_acosh.c +105 -0
  215. data/vendor/jsl-0.3.0/src/fdlibm/e_asin.c +156 -0
  216. data/vendor/jsl-0.3.0/src/fdlibm/e_atan2.c +165 -0
  217. data/vendor/jsl-0.3.0/src/fdlibm/e_atanh.c +110 -0
  218. data/vendor/jsl-0.3.0/src/fdlibm/e_cosh.c +133 -0
  219. data/vendor/jsl-0.3.0/src/fdlibm/e_exp.c +202 -0
  220. data/vendor/jsl-0.3.0/src/fdlibm/e_fmod.c +184 -0
  221. data/vendor/jsl-0.3.0/src/fdlibm/e_gamma.c +71 -0
  222. data/vendor/jsl-0.3.0/src/fdlibm/e_gamma_r.c +70 -0
  223. data/vendor/jsl-0.3.0/src/fdlibm/e_hypot.c +173 -0
  224. data/vendor/jsl-0.3.0/src/fdlibm/e_j0.c +524 -0
  225. data/vendor/jsl-0.3.0/src/fdlibm/e_j1.c +523 -0
  226. data/vendor/jsl-0.3.0/src/fdlibm/e_jn.c +315 -0
  227. data/vendor/jsl-0.3.0/src/fdlibm/e_lgamma.c +71 -0
  228. data/vendor/jsl-0.3.0/src/fdlibm/e_lgamma_r.c +347 -0
  229. data/vendor/jsl-0.3.0/src/fdlibm/e_log.c +184 -0
  230. data/vendor/jsl-0.3.0/src/fdlibm/e_log10.c +134 -0
  231. data/vendor/jsl-0.3.0/src/fdlibm/e_pow.c +386 -0
  232. data/vendor/jsl-0.3.0/src/fdlibm/e_rem_pio2.c +221 -0
  233. data/vendor/jsl-0.3.0/src/fdlibm/e_remainder.c +120 -0
  234. data/vendor/jsl-0.3.0/src/fdlibm/e_scalb.c +89 -0
  235. data/vendor/jsl-0.3.0/src/fdlibm/e_sinh.c +122 -0
  236. data/vendor/jsl-0.3.0/src/fdlibm/e_sqrt.c +497 -0
  237. data/vendor/jsl-0.3.0/src/fdlibm/fdlibm.dsp +160 -0
  238. data/vendor/jsl-0.3.0/src/fdlibm/fdlibm.h +273 -0
  239. data/vendor/jsl-0.3.0/src/fdlibm/fdlibm.mak +1453 -0
  240. data/vendor/jsl-0.3.0/src/fdlibm/fdlibm.mdp +0 -0
  241. data/vendor/jsl-0.3.0/src/fdlibm/k_cos.c +134 -0
  242. data/vendor/jsl-0.3.0/src/fdlibm/k_rem_pio2.c +354 -0
  243. data/vendor/jsl-0.3.0/src/fdlibm/k_sin.c +114 -0
  244. data/vendor/jsl-0.3.0/src/fdlibm/k_standard.c +785 -0
  245. data/vendor/jsl-0.3.0/src/fdlibm/k_tan.c +170 -0
  246. data/vendor/jsl-0.3.0/src/fdlibm/s_asinh.c +101 -0
  247. data/vendor/jsl-0.3.0/src/fdlibm/s_atan.c +175 -0
  248. data/vendor/jsl-0.3.0/src/fdlibm/s_cbrt.c +133 -0
  249. data/vendor/jsl-0.3.0/src/fdlibm/s_ceil.c +120 -0
  250. data/vendor/jsl-0.3.0/src/fdlibm/s_copysign.c +72 -0
  251. data/vendor/jsl-0.3.0/src/fdlibm/s_cos.c +118 -0
  252. data/vendor/jsl-0.3.0/src/fdlibm/s_erf.c +356 -0
  253. data/vendor/jsl-0.3.0/src/fdlibm/s_expm1.c +267 -0
  254. data/vendor/jsl-0.3.0/src/fdlibm/s_fabs.c +70 -0
  255. data/vendor/jsl-0.3.0/src/fdlibm/s_finite.c +71 -0
  256. data/vendor/jsl-0.3.0/src/fdlibm/s_floor.c +121 -0
  257. data/vendor/jsl-0.3.0/src/fdlibm/s_frexp.c +99 -0
  258. data/vendor/jsl-0.3.0/src/fdlibm/s_ilogb.c +85 -0
  259. data/vendor/jsl-0.3.0/src/fdlibm/s_isnan.c +74 -0
  260. data/vendor/jsl-0.3.0/src/fdlibm/s_ldexp.c +66 -0
  261. data/vendor/jsl-0.3.0/src/fdlibm/s_lib_version.c +73 -0
  262. data/vendor/jsl-0.3.0/src/fdlibm/s_log1p.c +211 -0
  263. data/vendor/jsl-0.3.0/src/fdlibm/s_logb.c +79 -0
  264. data/vendor/jsl-0.3.0/src/fdlibm/s_matherr.c +64 -0
  265. data/vendor/jsl-0.3.0/src/fdlibm/s_modf.c +132 -0
  266. data/vendor/jsl-0.3.0/src/fdlibm/s_nextafter.c +124 -0
  267. data/vendor/jsl-0.3.0/src/fdlibm/s_rint.c +131 -0
  268. data/vendor/jsl-0.3.0/src/fdlibm/s_scalbn.c +107 -0
  269. data/vendor/jsl-0.3.0/src/fdlibm/s_signgam.c +40 -0
  270. data/vendor/jsl-0.3.0/src/fdlibm/s_significand.c +68 -0
  271. data/vendor/jsl-0.3.0/src/fdlibm/s_sin.c +118 -0
  272. data/vendor/jsl-0.3.0/src/fdlibm/s_tan.c +112 -0
  273. data/vendor/jsl-0.3.0/src/fdlibm/s_tanh.c +122 -0
  274. data/vendor/jsl-0.3.0/src/fdlibm/w_acos.c +78 -0
  275. data/vendor/jsl-0.3.0/src/fdlibm/w_acosh.c +78 -0
  276. data/vendor/jsl-0.3.0/src/fdlibm/w_asin.c +80 -0
  277. data/vendor/jsl-0.3.0/src/fdlibm/w_atan2.c +79 -0
  278. data/vendor/jsl-0.3.0/src/fdlibm/w_atanh.c +81 -0
  279. data/vendor/jsl-0.3.0/src/fdlibm/w_cosh.c +77 -0
  280. data/vendor/jsl-0.3.0/src/fdlibm/w_exp.c +88 -0
  281. data/vendor/jsl-0.3.0/src/fdlibm/w_fmod.c +78 -0
  282. data/vendor/jsl-0.3.0/src/fdlibm/w_gamma.c +85 -0
  283. data/vendor/jsl-0.3.0/src/fdlibm/w_gamma_r.c +81 -0
  284. data/vendor/jsl-0.3.0/src/fdlibm/w_hypot.c +78 -0
  285. data/vendor/jsl-0.3.0/src/fdlibm/w_j0.c +105 -0
  286. data/vendor/jsl-0.3.0/src/fdlibm/w_j1.c +106 -0
  287. data/vendor/jsl-0.3.0/src/fdlibm/w_jn.c +128 -0
  288. data/vendor/jsl-0.3.0/src/fdlibm/w_lgamma.c +85 -0
  289. data/vendor/jsl-0.3.0/src/fdlibm/w_lgamma_r.c +81 -0
  290. data/vendor/jsl-0.3.0/src/fdlibm/w_log.c +78 -0
  291. data/vendor/jsl-0.3.0/src/fdlibm/w_log10.c +81 -0
  292. data/vendor/jsl-0.3.0/src/fdlibm/w_pow.c +99 -0
  293. data/vendor/jsl-0.3.0/src/fdlibm/w_remainder.c +77 -0
  294. data/vendor/jsl-0.3.0/src/fdlibm/w_scalb.c +95 -0
  295. data/vendor/jsl-0.3.0/src/fdlibm/w_sinh.c +77 -0
  296. data/vendor/jsl-0.3.0/src/fdlibm/w_sqrt.c +77 -0
  297. data/vendor/jsl-0.3.0/src/js.c +2447 -0
  298. data/vendor/jsl-0.3.0/src/js.dsp +420 -0
  299. data/vendor/jsl-0.3.0/src/js.mak +4025 -0
  300. data/vendor/jsl-0.3.0/src/js.mdp +0 -0
  301. data/vendor/jsl-0.3.0/src/js.msg +291 -0
  302. data/vendor/jsl-0.3.0/src/js.pkg +2 -0
  303. data/vendor/jsl-0.3.0/src/js3240.rc +79 -0
  304. data/vendor/jsl-0.3.0/src/jsOS240.def +654 -0
  305. data/vendor/jsl-0.3.0/src/jsapi.c +4405 -0
  306. data/vendor/jsl-0.3.0/src/jsapi.h +1856 -0
  307. data/vendor/jsl-0.3.0/src/jsarena.c +567 -0
  308. data/vendor/jsl-0.3.0/src/jsarena.h +302 -0
  309. data/vendor/jsl-0.3.0/src/jsarray.c +1428 -0
  310. data/vendor/jsl-0.3.0/src/jsarray.h +77 -0
  311. data/vendor/jsl-0.3.0/src/jsatom.c +927 -0
  312. data/vendor/jsl-0.3.0/src/jsatom.h +426 -0
  313. data/vendor/jsl-0.3.0/src/jsbit.h +113 -0
  314. data/vendor/jsl-0.3.0/src/jsbool.c +220 -0
  315. data/vendor/jsl-0.3.0/src/jsbool.h +62 -0
  316. data/vendor/jsl-0.3.0/src/jsclist.h +139 -0
  317. data/vendor/jsl-0.3.0/src/jscntxt.c +1036 -0
  318. data/vendor/jsl-0.3.0/src/jscntxt.h +608 -0
  319. data/vendor/jsl-0.3.0/src/jscompat.h +57 -0
  320. data/vendor/jsl-0.3.0/src/jsconfig.h +489 -0
  321. data/vendor/jsl-0.3.0/src/jsconfig.mk +181 -0
  322. data/vendor/jsl-0.3.0/src/jscpucfg.c +377 -0
  323. data/vendor/jsl-0.3.0/src/jscpucfg.h +204 -0
  324. data/vendor/jsl-0.3.0/src/jsdate.c +2238 -0
  325. data/vendor/jsl-0.3.0/src/jsdate.h +118 -0
  326. data/vendor/jsl-0.3.0/src/jsdbgapi.c +1260 -0
  327. data/vendor/jsl-0.3.0/src/jsdbgapi.h +345 -0
  328. data/vendor/jsl-0.3.0/src/jsdhash.c +763 -0
  329. data/vendor/jsl-0.3.0/src/jsdhash.h +579 -0
  330. data/vendor/jsl-0.3.0/src/jsdtoa.c +3135 -0
  331. data/vendor/jsl-0.3.0/src/jsdtoa.h +130 -0
  332. data/vendor/jsl-0.3.0/src/jsemit.c +4851 -0
  333. data/vendor/jsl-0.3.0/src/jsemit.h +576 -0
  334. data/vendor/jsl-0.3.0/src/jsexn.c +1084 -0
  335. data/vendor/jsl-0.3.0/src/jsexn.h +102 -0
  336. data/vendor/jsl-0.3.0/src/jsfile.c +2610 -0
  337. data/vendor/jsl-0.3.0/src/jsfile.h +50 -0
  338. data/vendor/jsl-0.3.0/src/jsfile.msg +89 -0
  339. data/vendor/jsl-0.3.0/src/jsfun.c +2015 -0
  340. data/vendor/jsl-0.3.0/src/jsfun.h +158 -0
  341. data/vendor/jsl-0.3.0/src/jsgc.c +1441 -0
  342. data/vendor/jsl-0.3.0/src/jsgc.h +230 -0
  343. data/vendor/jsl-0.3.0/src/jshash.c +471 -0
  344. data/vendor/jsl-0.3.0/src/jshash.h +152 -0
  345. data/vendor/jsl-0.3.0/src/jsify.pl +485 -0
  346. data/vendor/jsl-0.3.0/src/jsinterp.c +4797 -0
  347. data/vendor/jsl-0.3.0/src/jsinterp.h +302 -0
  348. data/vendor/jsl-0.3.0/src/jsl-test.js +28 -0
  349. data/vendor/jsl-0.3.0/src/jsl.c +2371 -0
  350. data/vendor/jsl-0.3.0/src/jsl.conf +127 -0
  351. data/vendor/jsl-0.3.0/src/jsl.conf.old +124 -0
  352. data/vendor/jsl-0.3.0/src/jsl.dsp +242 -0
  353. data/vendor/jsl-0.3.0/src/jsl.dsw +59 -0
  354. data/vendor/jsl-0.3.0/src/jslibmath.h +290 -0
  355. data/vendor/jsl-0.3.0/src/jslock.c +1261 -0
  356. data/vendor/jsl-0.3.0/src/jslock.h +289 -0
  357. data/vendor/jsl-0.3.0/src/jslocko.asm +59 -0
  358. data/vendor/jsl-0.3.0/src/jslog2.c +83 -0
  359. data/vendor/jsl-0.3.0/src/jslong.c +281 -0
  360. data/vendor/jsl-0.3.0/src/jslong.h +437 -0
  361. data/vendor/jsl-0.3.0/src/jsmath.c +477 -0
  362. data/vendor/jsl-0.3.0/src/jsmath.h +55 -0
  363. data/vendor/jsl-0.3.0/src/jsnum.c +1148 -0
  364. data/vendor/jsl-0.3.0/src/jsnum.h +257 -0
  365. data/vendor/jsl-0.3.0/src/jsobj.c +4066 -0
  366. data/vendor/jsl-0.3.0/src/jsobj.h +475 -0
  367. data/vendor/jsl-0.3.0/src/jsopcode.c +2730 -0
  368. data/vendor/jsl-0.3.0/src/jsopcode.h +275 -0
  369. data/vendor/jsl-0.3.0/src/jsopcode.tbl +344 -0
  370. data/vendor/jsl-0.3.0/src/jsosdep.h +127 -0
  371. data/vendor/jsl-0.3.0/src/jsotypes.h +211 -0
  372. data/vendor/jsl-0.3.0/src/jsparse.c +4438 -0
  373. data/vendor/jsl-0.3.0/src/jsparse.h +345 -0
  374. data/vendor/jsl-0.3.0/src/jsprf.c +1212 -0
  375. data/vendor/jsl-0.3.0/src/jsprf.h +148 -0
  376. data/vendor/jsl-0.3.0/src/jsprvtd.h +174 -0
  377. data/vendor/jsl-0.3.0/src/jspubtd.h +586 -0
  378. data/vendor/jsl-0.3.0/src/jsregexp.c +3831 -0
  379. data/vendor/jsl-0.3.0/src/jsregexp.h +180 -0
  380. data/vendor/jsl-0.3.0/src/jsscan.c +1814 -0
  381. data/vendor/jsl-0.3.0/src/jsscan.h +267 -0
  382. data/vendor/jsl-0.3.0/src/jsscope.c +1639 -0
  383. data/vendor/jsl-0.3.0/src/jsscope.h +389 -0
  384. data/vendor/jsl-0.3.0/src/jsscript.c +1284 -0
  385. data/vendor/jsl-0.3.0/src/jsscript.h +179 -0
  386. data/vendor/jsl-0.3.0/src/jsshell.msg +50 -0
  387. data/vendor/jsl-0.3.0/src/jsstddef.h +83 -0
  388. data/vendor/jsl-0.3.0/src/jsstr.c +4502 -0
  389. data/vendor/jsl-0.3.0/src/jsstr.h +448 -0
  390. data/vendor/jsl-0.3.0/src/jstypes.h +391 -0
  391. data/vendor/jsl-0.3.0/src/jsutil.c +157 -0
  392. data/vendor/jsl-0.3.0/src/jsutil.h +75 -0
  393. data/vendor/jsl-0.3.0/src/jsxdrapi.c +686 -0
  394. data/vendor/jsl-0.3.0/src/jsxdrapi.h +193 -0
  395. data/vendor/jsl-0.3.0/src/liveconnect/LiveConnect.dsp +157 -0
  396. data/vendor/jsl-0.3.0/src/liveconnect/LiveConnectShell.dsp +120 -0
  397. data/vendor/jsl-0.3.0/src/liveconnect/LiveConnectShell.dsw +44 -0
  398. data/vendor/jsl-0.3.0/src/liveconnect/Makefile.in +106 -0
  399. data/vendor/jsl-0.3.0/src/liveconnect/Makefile.ref +169 -0
  400. data/vendor/jsl-0.3.0/src/liveconnect/README.html +719 -0
  401. data/vendor/jsl-0.3.0/src/liveconnect/_jni/netscape_javascript_JSException.h +14 -0
  402. data/vendor/jsl-0.3.0/src/liveconnect/_jni/netscape_javascript_JSObject.h +155 -0
  403. data/vendor/jsl-0.3.0/src/liveconnect/classes/Makefile.in +89 -0
  404. data/vendor/jsl-0.3.0/src/liveconnect/classes/Makefile.ref +57 -0
  405. data/vendor/jsl-0.3.0/src/liveconnect/classes/netscape/Makefile.ref +47 -0
  406. data/vendor/jsl-0.3.0/src/liveconnect/classes/netscape/javascript/JSException.java +140 -0
  407. data/vendor/jsl-0.3.0/src/liveconnect/classes/netscape/javascript/JSObject.java +183 -0
  408. data/vendor/jsl-0.3.0/src/liveconnect/classes/netscape/javascript/JSProxy.java +58 -0
  409. data/vendor/jsl-0.3.0/src/liveconnect/classes/netscape/javascript/JSRunnable.java +70 -0
  410. data/vendor/jsl-0.3.0/src/liveconnect/classes/netscape/javascript/JSUtil.java +59 -0
  411. data/vendor/jsl-0.3.0/src/liveconnect/classes/netscape/javascript/Makefile.ref +53 -0
  412. data/vendor/jsl-0.3.0/src/liveconnect/config/AIX4.1.mk +45 -0
  413. data/vendor/jsl-0.3.0/src/liveconnect/config/AIX4.2.mk +45 -0
  414. data/vendor/jsl-0.3.0/src/liveconnect/config/AIX4.3.mk +50 -0
  415. data/vendor/jsl-0.3.0/src/liveconnect/config/HP-UXB.10.10.mk +43 -0
  416. data/vendor/jsl-0.3.0/src/liveconnect/config/HP-UXB.10.20.mk +43 -0
  417. data/vendor/jsl-0.3.0/src/liveconnect/config/HP-UXB.11.00.mk +43 -0
  418. data/vendor/jsl-0.3.0/src/liveconnect/config/IRIX6.2.mk +43 -0
  419. data/vendor/jsl-0.3.0/src/liveconnect/config/IRIX6.3.mk +43 -0
  420. data/vendor/jsl-0.3.0/src/liveconnect/config/IRIX6.5.mk +43 -0
  421. data/vendor/jsl-0.3.0/src/liveconnect/config/Linux_All.mk +73 -0
  422. data/vendor/jsl-0.3.0/src/liveconnect/config/OSF1V4.0.mk +65 -0
  423. data/vendor/jsl-0.3.0/src/liveconnect/config/OSF1V5.0.mk +62 -0
  424. data/vendor/jsl-0.3.0/src/liveconnect/config/SunOS5.5.1.mk +55 -0
  425. data/vendor/jsl-0.3.0/src/liveconnect/config/SunOS5.6.mk +39 -0
  426. data/vendor/jsl-0.3.0/src/liveconnect/config/SunOS5.7.mk +39 -0
  427. data/vendor/jsl-0.3.0/src/liveconnect/config/SunOS5.8.mk +39 -0
  428. data/vendor/jsl-0.3.0/src/liveconnect/config/WINNT4.0.mk +53 -0
  429. data/vendor/jsl-0.3.0/src/liveconnect/jsj.c +884 -0
  430. data/vendor/jsl-0.3.0/src/liveconnect/jsj.msg +98 -0
  431. data/vendor/jsl-0.3.0/src/liveconnect/jsj_JSObject.c +1379 -0
  432. data/vendor/jsl-0.3.0/src/liveconnect/jsj_JavaArray.c +481 -0
  433. data/vendor/jsl-0.3.0/src/liveconnect/jsj_JavaClass.c +749 -0
  434. data/vendor/jsl-0.3.0/src/liveconnect/jsj_JavaMember.c +186 -0
  435. data/vendor/jsl-0.3.0/src/liveconnect/jsj_JavaObject.c +1099 -0
  436. data/vendor/jsl-0.3.0/src/liveconnect/jsj_JavaPackage.c +548 -0
  437. data/vendor/jsl-0.3.0/src/liveconnect/jsj_array.c +207 -0
  438. data/vendor/jsl-0.3.0/src/liveconnect/jsj_class.c +765 -0
  439. data/vendor/jsl-0.3.0/src/liveconnect/jsj_convert.c +954 -0
  440. data/vendor/jsl-0.3.0/src/liveconnect/jsj_field.c +421 -0
  441. data/vendor/jsl-0.3.0/src/liveconnect/jsj_hash.c +504 -0
  442. data/vendor/jsl-0.3.0/src/liveconnect/jsj_hash.h +161 -0
  443. data/vendor/jsl-0.3.0/src/liveconnect/jsj_method.c +1823 -0
  444. data/vendor/jsl-0.3.0/src/liveconnect/jsj_nodl.c +1 -0
  445. data/vendor/jsl-0.3.0/src/liveconnect/jsj_private.h +689 -0
  446. data/vendor/jsl-0.3.0/src/liveconnect/jsj_simpleapi.c +219 -0
  447. data/vendor/jsl-0.3.0/src/liveconnect/jsj_utils.c +513 -0
  448. data/vendor/jsl-0.3.0/src/liveconnect/jsjava.h +313 -0
  449. data/vendor/jsl-0.3.0/src/liveconnect/liveconnect.pkg +3 -0
  450. data/vendor/jsl-0.3.0/src/liveconnect/netscape_javascript_JSObject.h +155 -0
  451. data/vendor/jsl-0.3.0/src/liveconnect/nsCLiveconnect.cpp +785 -0
  452. data/vendor/jsl-0.3.0/src/liveconnect/nsCLiveconnect.h +197 -0
  453. data/vendor/jsl-0.3.0/src/liveconnect/nsCLiveconnectFactory.cpp +163 -0
  454. data/vendor/jsl-0.3.0/src/liveconnect/nsCLiveconnectFactory.h +76 -0
  455. data/vendor/jsl-0.3.0/src/liveconnect/nsILiveconnect.h +195 -0
  456. data/vendor/jsl-0.3.0/src/liveconnect/nsISecureLiveconnect.h +84 -0
  457. data/vendor/jsl-0.3.0/src/liveconnect/nsISecurityContext.h +135 -0
  458. data/vendor/jsl-0.3.0/src/liveconnect/win32.order +6 -0
  459. data/vendor/jsl-0.3.0/src/lock_SunOS.s +114 -0
  460. data/vendor/jsl-0.3.0/src/perfect.js +39 -0
  461. data/vendor/jsl-0.3.0/src/perlconnect/JS.def +6 -0
  462. data/vendor/jsl-0.3.0/src/perlconnect/JS.dsp +107 -0
  463. data/vendor/jsl-0.3.0/src/perlconnect/JS.pm +318 -0
  464. data/vendor/jsl-0.3.0/src/perlconnect/JS.xs +1050 -0
  465. data/vendor/jsl-0.3.0/src/perlconnect/Makefile.PL +67 -0
  466. data/vendor/jsl-0.3.0/src/perlconnect/Makefile.ref +152 -0
  467. data/vendor/jsl-0.3.0/src/perlconnect/PerlConnect.dsp +103 -0
  468. data/vendor/jsl-0.3.0/src/perlconnect/PerlConnect.dsw +59 -0
  469. data/vendor/jsl-0.3.0/src/perlconnect/PerlConnect.pm +126 -0
  470. data/vendor/jsl-0.3.0/src/perlconnect/PerlConnectShell.dsp +89 -0
  471. data/vendor/jsl-0.3.0/src/perlconnect/README.html +345 -0
  472. data/vendor/jsl-0.3.0/src/perlconnect/bg.jpg +0 -0
  473. data/vendor/jsl-0.3.0/src/perlconnect/jsperl.c +1100 -0
  474. data/vendor/jsl-0.3.0/src/perlconnect/jsperl.h +52 -0
  475. data/vendor/jsl-0.3.0/src/perlconnect/jsperlbuild.pl +81 -0
  476. data/vendor/jsl-0.3.0/src/perlconnect/jsperlpvt.h +57 -0
  477. data/vendor/jsl-0.3.0/src/perlconnect/test.js +73 -0
  478. data/vendor/jsl-0.3.0/src/perlconnect/test.pl +244 -0
  479. data/vendor/jsl-0.3.0/src/perlconnect/typemap +121 -0
  480. data/vendor/jsl-0.3.0/src/plify_jsdhash.sed +31 -0
  481. data/vendor/jsl-0.3.0/src/prmjtime.c +646 -0
  482. data/vendor/jsl-0.3.0/src/prmjtime.h +95 -0
  483. data/vendor/jsl-0.3.0/src/resource.h +15 -0
  484. data/vendor/jsl-0.3.0/src/rules.mk +193 -0
  485. data/vendor/jsl-0.3.0/src/win32.order +391 -0
  486. data/vendor/jsl-0.3.0/tests/conf/always_use_option_explicit.js +4 -0
  487. data/vendor/jsl-0.3.0/tests/conf/define.js +8 -0
  488. data/vendor/jsl-0.3.0/tests/conf/jscript_function_extensions-1.js +7 -0
  489. data/vendor/jsl-0.3.0/tests/conf/jscript_function_extensions-2.js +8 -0
  490. data/vendor/jsl-0.3.0/tests/conf/jscript_function_extensions-3.js +27 -0
  491. data/vendor/jsl-0.3.0/tests/conf/jscript_function_extensions-4.js +4 -0
  492. data/vendor/jsl-0.3.0/tests/conf/lambda_assign_requires_semicolon.js +24 -0
  493. data/vendor/jsl-0.3.0/tests/conf/legacy_control_comments.js +8 -0
  494. data/vendor/jsl-0.3.0/tests/control_comments/control_comments.js +33 -0
  495. data/vendor/jsl-0.3.0/tests/control_comments/declare.js +26 -0
  496. data/vendor/jsl-0.3.0/tests/control_comments/import-overflow.js +9 -0
  497. data/vendor/jsl-0.3.0/tests/control_comments/import.js +5 -0
  498. data/vendor/jsl-0.3.0/tests/control_comments/import2.js +2 -0
  499. data/vendor/jsl-0.3.0/tests/control_comments/invalid_fallthru.js +13 -0
  500. data/vendor/jsl-0.3.0/tests/control_comments/option_explicit-with.js +12 -0
  501. data/vendor/jsl-0.3.0/tests/control_comments/option_explicit.js +64 -0
  502. data/vendor/jsl-0.3.0/tests/errors/unterminated_comment.js +8 -0
  503. data/vendor/jsl-0.3.0/tests/html/script_tag_in_js_literal.html +14 -0
  504. data/vendor/jsl-0.3.0/tests/run_tests.pl +71 -0
  505. data/vendor/jsl-0.3.0/tests/warnings/ambiguous_else_stmt.js +21 -0
  506. data/vendor/jsl-0.3.0/tests/warnings/ambiguous_nested_stmt.js +66 -0
  507. data/vendor/jsl-0.3.0/tests/warnings/ambiguous_newline.js +261 -0
  508. data/vendor/jsl-0.3.0/tests/warnings/anon_no_return_value.js +26 -0
  509. data/vendor/jsl-0.3.0/tests/warnings/assign_to_function_call.js +16 -0
  510. data/vendor/jsl-0.3.0/tests/warnings/block_without_braces.js +13 -0
  511. data/vendor/jsl-0.3.0/tests/warnings/comma_separated_stmts.js +17 -0
  512. data/vendor/jsl-0.3.0/tests/warnings/comparison_type_conv.js +44 -0
  513. data/vendor/jsl-0.3.0/tests/warnings/default_not_at_end.js +15 -0
  514. data/vendor/jsl-0.3.0/tests/warnings/dup_option_explicit.js +5 -0
  515. data/vendor/jsl-0.3.0/tests/warnings/duplicate_case_in_switch.js +62 -0
  516. data/vendor/jsl-0.3.0/tests/warnings/duplicate_formal.js +5 -0
  517. data/vendor/jsl-0.3.0/tests/warnings/empty_statement.js +29 -0
  518. data/vendor/jsl-0.3.0/tests/warnings/equal_as_assign.js +7 -0
  519. data/vendor/jsl-0.3.0/tests/warnings/inc_dec_within_stmt-ignore.js +21 -0
  520. data/vendor/jsl-0.3.0/tests/warnings/inc_dec_within_stmt.js +63 -0
  521. data/vendor/jsl-0.3.0/tests/warnings/jsl_cc_not_understood.js +5 -0
  522. data/vendor/jsl-0.3.0/tests/warnings/leading_decimal_point.js +7 -0
  523. data/vendor/jsl-0.3.0/tests/warnings/legacy_cc_not_understood.js +9 -0
  524. data/vendor/jsl-0.3.0/tests/warnings/meaningless_block.js +12 -0
  525. data/vendor/jsl-0.3.0/tests/warnings/misplaced_regex.js +20 -0
  526. data/vendor/jsl-0.3.0/tests/warnings/missing_break.js +87 -0
  527. data/vendor/jsl-0.3.0/tests/warnings/missing_break_for_last_case.js +19 -0
  528. data/vendor/jsl-0.3.0/tests/warnings/missing_default_case.js +51 -0
  529. data/vendor/jsl-0.3.0/tests/warnings/missing_option_explicit.js +5 -0
  530. data/vendor/jsl-0.3.0/tests/warnings/missing_semicolon.js +19 -0
  531. data/vendor/jsl-0.3.0/tests/warnings/multiple_plus_minus.js +10 -0
  532. data/vendor/jsl-0.3.0/tests/warnings/nested_comment.js +6 -0
  533. data/vendor/jsl-0.3.0/tests/warnings/no_return_value.js +25 -0
  534. data/vendor/jsl-0.3.0/tests/warnings/octal_number.js +5 -0
  535. data/vendor/jsl-0.3.0/tests/warnings/parseint_missing_radix.js +15 -0
  536. data/vendor/jsl-0.3.0/tests/warnings/partial_option_explicit.js +5 -0
  537. data/vendor/jsl-0.3.0/tests/warnings/redeclared_var.js +10 -0
  538. data/vendor/jsl-0.3.0/tests/warnings/spidermonkey/bad_backref.js +5 -0
  539. data/vendor/jsl-0.3.0/tests/warnings/spidermonkey/deprecated_usage.js +11 -0
  540. data/vendor/jsl-0.3.0/tests/warnings/spidermonkey/invalid_backref.js +5 -0
  541. data/vendor/jsl-0.3.0/tests/warnings/spidermonkey/trailing_comma.js +5 -0
  542. data/vendor/jsl-0.3.0/tests/warnings/trailing_comma_in_array.js +8 -0
  543. data/vendor/jsl-0.3.0/tests/warnings/trailing_decimal_point.js +7 -0
  544. data/vendor/jsl-0.3.0/tests/warnings/unreachable_code.js +29 -0
  545. data/vendor/jsl-0.3.0/tests/warnings/use_of_label.js +19 -0
  546. data/vendor/jsl-0.3.0/tests/warnings/useless_assign.js +20 -0
  547. data/vendor/jsl-0.3.0/tests/warnings/useless_comparison.js +55 -0
  548. data/vendor/jsl-0.3.0/tests/warnings/useless_void.js +6 -0
  549. data/vendor/jsl-0.3.0/tests/warnings/var_hides_arg.js +4 -0
  550. data/vendor/jsl-0.3.0/tests/warnings/with_statement.js +7 -0
  551. data/vendor/yuicompressor-2.4.2.jar +0 -0
  552. metadata +605 -0
@@ -0,0 +1,785 @@
1
+ /* -*- Mode: C++; tab-width: 4; 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
+ *
26
+ * Alternatively, the contents of this file may be used under the terms of
27
+ * either of the GNU General Public License Version 2 or later (the "GPL"),
28
+ * or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
29
+ * in which case the provisions of the GPL or the LGPL are applicable instead
30
+ * of those above. If you wish to allow use of your version of this file only
31
+ * under the terms of either the GPL or the LGPL, and not to allow others to
32
+ * use your version of this file under the terms of the MPL, indicate your
33
+ * decision by deleting the provisions above and replace them with the notice
34
+ * and other provisions required by the GPL or the LGPL. If you do not delete
35
+ * the provisions above, a recipient may use your version of this file under
36
+ * the terms of any one of the MPL, the GPL or the LGPL.
37
+ *
38
+ * ***** END LICENSE BLOCK ***** */
39
+ /*
40
+ * This file is part of the Java-vendor-neutral implementation of LiveConnect
41
+ *
42
+ * It contains the implementation providing nsIFactory XP-COM interface.
43
+ *
44
+ */
45
+
46
+
47
+ #include <stdlib.h>
48
+ #include <string.h>
49
+ #include "prtypes.h"
50
+ #include "prprf.h"
51
+ #include "prlog.h"
52
+
53
+ #include "jsj_private.h"
54
+ #include "jsjava.h"
55
+
56
+ #include "jscntxt.h" /* For js_ReportErrorAgain().*/
57
+
58
+ #include "netscape_javascript_JSObject.h" /* javah-generated headers */
59
+ #include "nsISecurityContext.h"
60
+ #include "nsIServiceManager.h"
61
+ #include "nsIJSContextStack.h"
62
+
63
+ PR_BEGIN_EXTERN_C
64
+
65
+ /* A captured JavaScript error, created when JS_ReportError() is called while
66
+ running JavaScript code that is itself called from Java. */
67
+ struct CapturedJSError {
68
+ char * message;
69
+ JSErrorReport report; /* Line # of error, etc. */
70
+ jthrowable java_exception; /* Java exception, error, or null */
71
+ CapturedJSError * next; /* Next oldest captured JS error */
72
+ };
73
+ PR_END_EXTERN_C
74
+
75
+ #include "nsCLiveconnect.h"
76
+
77
+ #include "jsinterp.h" // XXX private API so we can auto-push a JSStackFrame
78
+ #include "nsIScriptSecurityManager.h"
79
+ #include "nsIPrincipal.h"
80
+ #include "nsNetUtil.h"
81
+ #include "nsISecurityContext.h"
82
+ #include "prmem.h"
83
+
84
+ /***************************************************************************/
85
+ // A class to put on the stack to manage JS contexts when we are entering JS.
86
+ // This pushes and pops the given context
87
+ // with the nsThreadJSContextStack service as this object goes into and out
88
+ // of scope. It is optimized to not push/pop the cx if it is already on top
89
+ // of the stack. We need to push the JSContext when we enter JS because the
90
+ // JS security manager looks on the context stack for permissions information.
91
+
92
+ class AutoPushJSContext
93
+ {
94
+ public:
95
+ AutoPushJSContext(nsISupports* aSecuritySupports,
96
+ JSContext *cx);
97
+
98
+ ~AutoPushJSContext();
99
+
100
+ nsresult ResultOfPush() { return mPushResult; };
101
+
102
+ private:
103
+ nsCOMPtr<nsIJSContextStack> mContextStack;
104
+ JSContext* mContext;
105
+ JSStackFrame mFrame;
106
+ nsresult mPushResult;
107
+ };
108
+
109
+ AutoPushJSContext::AutoPushJSContext(nsISupports* aSecuritySupports,
110
+ JSContext *cx)
111
+ : mContext(cx), mPushResult(NS_OK)
112
+ {
113
+ mContextStack = do_GetService("@mozilla.org/js/xpc/ContextStack;1");
114
+
115
+ if(mContextStack)
116
+ {
117
+ JSContext* currentCX;
118
+ if(NS_SUCCEEDED(mContextStack->Peek(&currentCX)))
119
+ {
120
+ // Is the current context already on the stack?
121
+ if(cx == currentCX)
122
+ mContextStack = nsnull;
123
+ else
124
+ {
125
+ mContextStack->Push(cx);
126
+ // Leave the reference to the mContextStack to
127
+ // indicate that we need to pop it in our dtor.
128
+ }
129
+ }
130
+ }
131
+
132
+ nsCOMPtr<nsIScriptSecurityManager> secMan(
133
+ do_GetService(NS_SCRIPTSECURITYMANAGER_CONTRACTID, &mPushResult));
134
+
135
+ if (NS_FAILED(mPushResult))
136
+ return;
137
+
138
+ nsCOMPtr<nsIPrincipal> principal;
139
+ mPushResult = secMan->GetPrincipalFromContext(cx, getter_AddRefs(principal));
140
+
141
+ if (NS_FAILED(mPushResult))
142
+ {
143
+ JS_ReportError(cx, "failed to get a principal");
144
+ return;
145
+ }
146
+
147
+ // See if JavaScript is enabled for the current window
148
+ PRBool jsEnabled = PR_FALSE;
149
+ mPushResult = secMan->CanExecuteScripts(cx, principal, &jsEnabled);
150
+ if (!jsEnabled)
151
+ mPushResult = NS_ERROR_FAILURE;
152
+
153
+ memset(&mFrame, 0, sizeof(mFrame));
154
+
155
+ if (NS_SUCCEEDED(mPushResult))
156
+ {
157
+ // See if there are any scripts on the stack.
158
+ // If not, we need to add a dummy frame with a principal.
159
+
160
+ PRBool hasScript = PR_FALSE;
161
+ JSStackFrame* tempFP = cx->fp;
162
+ while (tempFP)
163
+ {
164
+ if (tempFP->script)
165
+ {
166
+ hasScript = PR_TRUE;
167
+ break;
168
+ }
169
+ tempFP = tempFP->down;
170
+ };
171
+
172
+ if (!hasScript)
173
+ {
174
+ JSPrincipals* jsprinc;
175
+ principal->GetJSPrincipals(cx, &jsprinc);
176
+
177
+ mFrame.script = JS_CompileScriptForPrincipals(cx, JS_GetGlobalObject(cx),
178
+ jsprinc, "", 0, "", 1);
179
+ JSPRINCIPALS_DROP(cx, jsprinc);
180
+
181
+ if (mFrame.script)
182
+ {
183
+ mFrame.down = cx->fp;
184
+ cx->fp = &mFrame;
185
+ }
186
+ else
187
+ mPushResult = NS_ERROR_OUT_OF_MEMORY;
188
+ }
189
+ }
190
+ }
191
+
192
+ AutoPushJSContext::~AutoPushJSContext()
193
+ {
194
+ if (mContextStack)
195
+ mContextStack->Pop(nsnull);
196
+
197
+ if (mFrame.script)
198
+ mContext->fp = mFrame.down;
199
+
200
+ }
201
+
202
+
203
+ ////////////////////////////////////////////////////////////////////////////
204
+ // from nsISupports and AggregatedQueryInterface:
205
+
206
+ // Thes macro expands to the aggregated query interface scheme.
207
+
208
+ NS_IMPL_AGGREGATED(nsCLiveconnect)
209
+
210
+ NS_METHOD
211
+ nsCLiveconnect::AggregatedQueryInterface(const nsIID& aIID, void** aInstancePtr)
212
+ {
213
+ NS_ENSURE_ARG_POINTER(aInstancePtr);
214
+
215
+ if (aIID.Equals(NS_GET_IID(nsISupports))) {
216
+ *aInstancePtr = GetInner();
217
+ }
218
+ else if (aIID.Equals(NS_GET_IID(nsILiveconnect))) {
219
+ *aInstancePtr = NS_STATIC_CAST(nsILiveconnect*, this);
220
+ }
221
+ else {
222
+ *aInstancePtr = nsnull;
223
+ return NS_NOINTERFACE;
224
+ }
225
+ NS_ADDREF((nsISupports*) *aInstancePtr);
226
+ return NS_OK;
227
+ }
228
+
229
+
230
+
231
+ ////////////////////////////////////////////////////////////////////////////
232
+ // from nsILiveconnect:
233
+
234
+ /**
235
+ * get member of a Native JSObject for a given name.
236
+ *
237
+ * @param jEnv - JNIEnv on which the call is being made.
238
+ * @param obj - A Native JS Object.
239
+ * @param name - Name of a member.
240
+ * @param pjobj - return parameter as a java object representing
241
+ * the member. If it is a basic data type it is converted to
242
+ * a corresponding java type. If it is a NJSObject, then it is
243
+ * wrapped up as java wrapper netscape.javascript.JSObject.
244
+ */
245
+ NS_METHOD
246
+ nsCLiveconnect::GetMember(JNIEnv *jEnv, lcjsobject obj, const jchar *name, jsize length, void* principalsArray[],
247
+ int numPrincipals, nsISupports *securitySupports, jobject *pjobj)
248
+ {
249
+ if(jEnv == NULL || obj == 0)
250
+ {
251
+ return NS_ERROR_FAILURE;
252
+ }
253
+
254
+ JSJavaThreadState *jsj_env = NULL;
255
+ JSObjectHandle *handle = (JSObjectHandle*)obj;
256
+ JSObject *js_obj = handle->js_obj;
257
+ JSContext *cx = NULL;
258
+ jobject member = NULL;
259
+ jsval js_val;
260
+ int dummy_cost = 0;
261
+ JSBool dummy_bool = PR_FALSE;
262
+ JSErrorReporter saved_state = NULL;
263
+
264
+ jsj_env = jsj_enter_js(jEnv, mJavaClient, NULL, &cx, NULL, &saved_state, principalsArray, numPrincipals, securitySupports);
265
+ if (!jsj_env)
266
+ return NS_ERROR_FAILURE;
267
+
268
+ AutoPushJSContext autopush(securitySupports, cx);
269
+ if (NS_FAILED(autopush.ResultOfPush()))
270
+ goto done;
271
+
272
+ if (!name) {
273
+ JS_ReportError(cx, "illegal null member name");
274
+ member = NULL;
275
+ goto done;
276
+ }
277
+
278
+ if (!JS_GetUCProperty(cx, js_obj, name, length, &js_val))
279
+ goto done;
280
+
281
+ jsj_ConvertJSValueToJavaObject(cx, jEnv, js_val, jsj_get_jlObject_descriptor(cx, jEnv),
282
+ &dummy_cost, &member, &dummy_bool);
283
+
284
+ done:
285
+ if (!jsj_exit_js(cx, jsj_env, saved_state))
286
+ return NS_ERROR_FAILURE;
287
+
288
+ *pjobj = member;
289
+
290
+ return NS_OK;
291
+ }
292
+
293
+
294
+ /**
295
+ * get member of a Native JSObject for a given index.
296
+ *
297
+ * @param jEnv - JNIEnv on which the call is being made.
298
+ * @param obj - A Native JS Object.
299
+ * @param index - Index of a member.
300
+ * @param pjobj - return parameter as a java object representing
301
+ * the member.
302
+ */
303
+ NS_METHOD
304
+ nsCLiveconnect::GetSlot(JNIEnv *jEnv, lcjsobject obj, jint slot, void* principalsArray[],
305
+ int numPrincipals, nsISupports *securitySupports, jobject *pjobj)
306
+ {
307
+ if(jEnv == NULL || obj == 0)
308
+ {
309
+ return NS_ERROR_FAILURE;
310
+ }
311
+
312
+ JSJavaThreadState *jsj_env = NULL;
313
+ JSObjectHandle *handle = (JSObjectHandle*)obj;
314
+ JSObject *js_obj = handle->js_obj;
315
+ JSContext *cx = NULL;
316
+ jobject member = NULL;
317
+ jsval js_val;
318
+ int dummy_cost = 0;
319
+ JSBool dummy_bool = PR_FALSE;
320
+ JSErrorReporter saved_state = NULL;
321
+
322
+ jsj_env = jsj_enter_js(jEnv, mJavaClient, NULL, &cx, NULL, &saved_state, principalsArray, numPrincipals, securitySupports);
323
+ if (!jsj_env)
324
+ return NS_ERROR_FAILURE;
325
+
326
+ AutoPushJSContext autopush(securitySupports, cx);
327
+ if (NS_FAILED(autopush.ResultOfPush()))
328
+ goto done;
329
+
330
+ // =-= sudu: check to see if slot can be passed in as is.
331
+ // Should it be converted to a jsint?
332
+ if (!JS_GetElement(cx, js_obj, slot, &js_val))
333
+ goto done;
334
+ if (!jsj_ConvertJSValueToJavaObject(cx, jEnv, js_val, jsj_get_jlObject_descriptor(cx, jEnv),
335
+ &dummy_cost, &member, &dummy_bool))
336
+ goto done;
337
+
338
+ done:
339
+ if (!jsj_exit_js(cx, jsj_env, saved_state))
340
+ return NS_ERROR_FAILURE;
341
+
342
+ *pjobj = member;
343
+ return NS_OK;
344
+ }
345
+
346
+ /**
347
+ * set member of a Native JSObject for a given name.
348
+ *
349
+ * @param jEnv - JNIEnv on which the call is being made.
350
+ * @param obj - A Native JS Object.
351
+ * @param name - Name of a member.
352
+ * @param jobj - Value to set. If this is a basic data type, it is converted
353
+ * using standard JNI calls but if it is a wrapper to a JSObject
354
+ * then a internal mapping is consulted to convert to a NJSObject.
355
+ */
356
+ NS_METHOD
357
+ nsCLiveconnect::SetMember(JNIEnv *jEnv, lcjsobject obj, const jchar *name, jsize length, jobject java_obj, void* principalsArray[],
358
+ int numPrincipals, nsISupports *securitySupports)
359
+ {
360
+ if(jEnv == NULL || obj == 0)
361
+ {
362
+ return NS_ERROR_FAILURE;
363
+ }
364
+
365
+ JSJavaThreadState *jsj_env = NULL;
366
+ JSObjectHandle *handle = (JSObjectHandle*)obj;
367
+ JSObject *js_obj = handle->js_obj;
368
+ JSContext *cx = NULL;
369
+ jsval js_val;
370
+ JSErrorReporter saved_state = NULL;
371
+
372
+ jsj_env = jsj_enter_js(jEnv, mJavaClient, NULL, &cx, NULL, &saved_state, principalsArray, numPrincipals, securitySupports);
373
+ if (!jsj_env)
374
+ return NS_ERROR_FAILURE;
375
+
376
+ AutoPushJSContext autopush(securitySupports, cx);
377
+ if (NS_FAILED(autopush.ResultOfPush()))
378
+ goto done;
379
+
380
+ if (!name) {
381
+ JS_ReportError(cx, "illegal null member name");
382
+ goto done;
383
+ }
384
+
385
+ if (!jsj_ConvertJavaObjectToJSValue(cx, jEnv, java_obj, &js_val))
386
+ goto done;
387
+
388
+ JS_SetUCProperty(cx, js_obj, name, length, &js_val);
389
+
390
+ done:
391
+ jsj_exit_js(cx, jsj_env, saved_state);
392
+ return NS_OK;
393
+ }
394
+
395
+
396
+ /**
397
+ * set member of a Native JSObject for a given index.
398
+ *
399
+ * @param jEnv - JNIEnv on which the call is being made.
400
+ * @param obj - A Native JS Object.
401
+ * @param index - Index of a member.
402
+ * @param jobj - Value to set. If this is a basic data type, it is converted
403
+ * using standard JNI calls but if it is a wrapper to a JSObject
404
+ * then a internal mapping is consulted to convert to a NJSObject.
405
+ */
406
+ NS_METHOD
407
+ nsCLiveconnect::SetSlot(JNIEnv *jEnv, lcjsobject obj, jint slot, jobject java_obj, void* principalsArray[],
408
+ int numPrincipals, nsISupports *securitySupports)
409
+ {
410
+ if(jEnv == NULL || obj == 0)
411
+ {
412
+ return NS_ERROR_FAILURE;
413
+ }
414
+
415
+ JSJavaThreadState *jsj_env = NULL;
416
+ JSObjectHandle *handle = (JSObjectHandle*)obj;
417
+ JSObject *js_obj = handle->js_obj;
418
+ JSContext *cx = NULL;
419
+ jsval js_val;
420
+ JSErrorReporter saved_state = NULL;
421
+
422
+ jsj_env = jsj_enter_js(jEnv, mJavaClient, NULL, &cx, NULL, &saved_state, principalsArray, numPrincipals, securitySupports);
423
+ if (!jsj_env)
424
+ return NS_ERROR_FAILURE;
425
+
426
+ AutoPushJSContext autopush(securitySupports, cx);
427
+ if (NS_FAILED(autopush.ResultOfPush()))
428
+ goto done;
429
+
430
+ if (!jsj_ConvertJavaObjectToJSValue(cx, jEnv, java_obj, &js_val))
431
+ goto done;
432
+ JS_SetElement(cx, js_obj, slot, &js_val);
433
+
434
+ done:
435
+ jsj_exit_js(cx, jsj_env, saved_state);
436
+ return NS_OK;
437
+ }
438
+
439
+
440
+ /**
441
+ * remove member of a Native JSObject for a given name.
442
+ *
443
+ * @param jEnv - JNIEnv on which the call is being made.
444
+ * @param obj - A Native JS Object.
445
+ * @param name - Name of a member.
446
+ */
447
+ NS_METHOD
448
+ nsCLiveconnect::RemoveMember(JNIEnv *jEnv, lcjsobject obj, const jchar *name, jsize length, void* principalsArray[],
449
+ int numPrincipals, nsISupports *securitySupports)
450
+ {
451
+ if(jEnv == NULL || obj == 0)
452
+ {
453
+ return NS_ERROR_FAILURE;
454
+ }
455
+
456
+ JSJavaThreadState *jsj_env = NULL;
457
+ JSObjectHandle *handle = (JSObjectHandle*)obj;
458
+ JSObject *js_obj = handle->js_obj;
459
+ JSContext *cx = NULL;
460
+ jsval js_val;
461
+ JSErrorReporter saved_state = NULL;
462
+
463
+ jsj_env = jsj_enter_js(jEnv, mJavaClient, NULL, &cx, NULL, &saved_state, principalsArray, numPrincipals, securitySupports);
464
+ if (!jsj_env)
465
+ return NS_ERROR_FAILURE;
466
+
467
+ AutoPushJSContext autopush(securitySupports, cx);
468
+ if (NS_FAILED(autopush.ResultOfPush()))
469
+ goto done;
470
+
471
+ if (!name) {
472
+ JS_ReportError(cx, "illegal null member name");
473
+ goto done;
474
+ }
475
+
476
+ JS_DeleteUCProperty2(cx, js_obj, name, length, &js_val);
477
+
478
+ done:
479
+ jsj_exit_js(cx, jsj_env, saved_state);
480
+ return NS_OK;
481
+ }
482
+
483
+
484
+ /**
485
+ * call a method of Native JSObject.
486
+ *
487
+ * @param jEnv - JNIEnv on which the call is being made.
488
+ * @param obj - A Native JS Object.
489
+ * @param name - Name of a method.
490
+ * @param jobjArr - Array of jobjects representing parameters of method being caled.
491
+ * @param pjobj - return value.
492
+ */
493
+ NS_METHOD
494
+ nsCLiveconnect::Call(JNIEnv *jEnv, lcjsobject obj, const jchar *name, jsize length, jobjectArray java_args, void* principalsArray[],
495
+ int numPrincipals, nsISupports *securitySupports, jobject *pjobj)
496
+ {
497
+ if(jEnv == NULL || obj == 0)
498
+ {
499
+ return NS_ERROR_FAILURE;
500
+ }
501
+
502
+ int i = 0;
503
+ int argc = 0;
504
+ int arg_num = 0;
505
+ jsval *argv = 0;
506
+ JSJavaThreadState *jsj_env = NULL;
507
+ JSObjectHandle *handle = (JSObjectHandle*)obj;
508
+ JSObject *js_obj = handle->js_obj;
509
+ JSContext *cx = NULL;
510
+ jsval js_val;
511
+ jsval function_val = 0;
512
+ int dummy_cost = 0;
513
+ JSBool dummy_bool = PR_FALSE;
514
+ JSErrorReporter saved_state = NULL;
515
+ jobject result = NULL;
516
+
517
+ jsj_env = jsj_enter_js(jEnv, mJavaClient, NULL, &cx, NULL, &saved_state, principalsArray, numPrincipals, securitySupports);
518
+ if (!jsj_env)
519
+ return NS_ERROR_FAILURE;
520
+
521
+ result = NULL;
522
+ AutoPushJSContext autopush(securitySupports, cx);
523
+ if (NS_FAILED(autopush.ResultOfPush()))
524
+ goto done;
525
+
526
+ if (!name) {
527
+ JS_ReportError(cx, "illegal null JavaScript function name");
528
+ goto done;
529
+ }
530
+
531
+ /* Allocate space for JS arguments */
532
+ argc = java_args ? jEnv->GetArrayLength(java_args) : 0;
533
+ if (argc) {
534
+ argv = (jsval*)JS_malloc(cx, argc * sizeof(jsval));
535
+ if (!argv)
536
+ goto done;
537
+ } else {
538
+ argv = 0;
539
+ }
540
+
541
+ /* Convert arguments from Java to JS values */
542
+ for (arg_num = 0; arg_num < argc; arg_num++) {
543
+ jobject arg = jEnv->GetObjectArrayElement(java_args, arg_num);
544
+
545
+ if (!jsj_ConvertJavaObjectToJSValue(cx, jEnv, arg, &argv[arg_num]))
546
+ goto cleanup_argv;
547
+ JS_AddRoot(cx, &argv[arg_num]);
548
+ }
549
+
550
+ if (!JS_GetUCProperty(cx, js_obj, name, length, &function_val))
551
+ goto cleanup_argv;
552
+
553
+ if (!JS_CallFunctionValue(cx, js_obj, function_val, argc, argv, &js_val))
554
+ goto cleanup_argv;
555
+
556
+ jsj_ConvertJSValueToJavaObject(cx, jEnv, js_val, jsj_get_jlObject_descriptor(cx, jEnv),
557
+ &dummy_cost, &result, &dummy_bool);
558
+
559
+ cleanup_argv:
560
+ if (argv) {
561
+ for (i = 0; i < arg_num; i++)
562
+ JS_RemoveRoot(cx, &argv[i]);
563
+ JS_free(cx, argv);
564
+ }
565
+
566
+ done:
567
+ if (!jsj_exit_js(cx, jsj_env, saved_state))
568
+ return NS_ERROR_FAILURE;
569
+
570
+ *pjobj = result;
571
+
572
+ return NS_OK;
573
+ }
574
+
575
+ NS_METHOD
576
+ nsCLiveconnect::Eval(JNIEnv *jEnv, lcjsobject obj, const jchar *script, jsize length, void* principalsArray[],
577
+ int numPrincipals, nsISupports *securitySupports, jobject *pjobj)
578
+ {
579
+ if(jEnv == NULL || obj == 0)
580
+ {
581
+ return NS_ERROR_FAILURE;
582
+ }
583
+
584
+ JSJavaThreadState *jsj_env = NULL;
585
+ JSObjectHandle *handle = (JSObjectHandle*)obj;
586
+ JSObject *js_obj = handle->js_obj;
587
+ JSContext *cx = NULL;
588
+ jsval js_val;
589
+ int dummy_cost = 0;
590
+ JSBool dummy_bool = PR_FALSE;
591
+ JSErrorReporter saved_state = NULL;
592
+ jobject result = NULL;
593
+ const char *codebase = NULL;
594
+ JSPrincipals *principals = NULL;
595
+ JSBool eval_succeeded = PR_FALSE;
596
+
597
+ jsj_env = jsj_enter_js(jEnv, mJavaClient, NULL, &cx, NULL, &saved_state, principalsArray, numPrincipals, securitySupports);
598
+ if (!jsj_env)
599
+ return NS_ERROR_FAILURE;
600
+
601
+ result = NULL;
602
+ AutoPushJSContext autopush(securitySupports, cx);
603
+ if (NS_FAILED(autopush.ResultOfPush()))
604
+ goto done;
605
+
606
+ if (!script) {
607
+ JS_ReportError(cx, "illegal null string eval argument");
608
+ goto done;
609
+ }
610
+
611
+ /* Set up security stuff */
612
+ if (JSJ_callbacks && JSJ_callbacks->get_JSPrincipals_from_java_caller)
613
+ principals = JSJ_callbacks->get_JSPrincipals_from_java_caller(jEnv, cx, principalsArray, numPrincipals, securitySupports);
614
+ codebase = principals ? principals->codebase : NULL;
615
+
616
+ /* Have the JS engine evaluate the unicode string */
617
+ eval_succeeded = JS_EvaluateUCScriptForPrincipals(cx, js_obj, principals,
618
+ script, length,
619
+ codebase, 0, &js_val);
620
+
621
+ if (!eval_succeeded)
622
+ goto done;
623
+
624
+ /* Convert result to a subclass of java.lang.Object */
625
+ jsj_ConvertJSValueToJavaObject(cx, jEnv, js_val, jsj_get_jlObject_descriptor(cx, jEnv),
626
+ &dummy_cost, &result, &dummy_bool);
627
+
628
+ done:
629
+ if (principals)
630
+ JSPRINCIPALS_DROP(cx, principals);
631
+ if (!jsj_exit_js(cx, jsj_env, saved_state))
632
+ return NS_ERROR_FAILURE;
633
+
634
+ *pjobj = result;
635
+ return NS_OK;
636
+ }
637
+
638
+
639
+ /**
640
+ * Get the window object for a plugin instance.
641
+ *
642
+ * @param jEnv - JNIEnv on which the call is being made.
643
+ * @param pJavaObject - Either a jobject or a pointer to a plugin instance
644
+ * representing the java object.
645
+ * @param pjobj - return value. This is a native js object
646
+ * representing the window object of a frame
647
+ * in which a applet/bean resides.
648
+ */
649
+ NS_METHOD
650
+ nsCLiveconnect::GetWindow(JNIEnv *jEnv, void *pJavaObject, void* principalsArray[],
651
+ int numPrincipals, nsISupports *securitySupports, lcjsobject *pobj)
652
+ {
653
+ if(jEnv == NULL || JSJ_callbacks == NULL)
654
+ {
655
+ return NS_ERROR_FAILURE;
656
+ }
657
+
658
+ // associate this Java client with this LiveConnect connection.
659
+ mJavaClient = pJavaObject;
660
+
661
+ char *err_msg = NULL;
662
+ JSContext *cx = NULL;
663
+ JSObject *js_obj = NULL;
664
+ JSErrorReporter saved_state = NULL;
665
+ JSJavaThreadState *jsj_env = NULL;
666
+ JSObjectHandle *handle = NULL;
667
+
668
+ jsj_env = jsj_enter_js(jEnv, mJavaClient, NULL, &cx, NULL, &saved_state, principalsArray, numPrincipals, securitySupports);
669
+ if (!jsj_env)
670
+ return NS_ERROR_FAILURE;
671
+
672
+ err_msg = NULL;
673
+ AutoPushJSContext autopush(securitySupports, cx);
674
+ if (NS_FAILED(autopush.ResultOfPush()))
675
+ goto done;
676
+
677
+ js_obj = JSJ_callbacks->map_java_object_to_js_object(jEnv, mJavaClient, &err_msg);
678
+ if (!js_obj) {
679
+ if (err_msg) {
680
+ JS_ReportError(cx, err_msg);
681
+ free(err_msg);
682
+ }
683
+ goto done;
684
+ }
685
+ #ifdef PRESERVE_JSOBJECT_IDENTITY
686
+ *pobj = (jint)js_obj;
687
+ #else
688
+ /* FIXME: to handle PRESERVE_JSOBJECT_IDENTITY case, this needs to
689
+ just return a raw JSObject reference. FIXME !!! */
690
+ /* Create a tiny stub object to act as the GC root that points to the
691
+ JSObject from its netscape.javascript.JSObject counterpart. */
692
+ handle = (JSObjectHandle*)JS_malloc(cx, sizeof(JSObjectHandle));
693
+ if (handle != NULL)
694
+ {
695
+ handle->js_obj = js_obj;
696
+ handle->rt = JS_GetRuntime(cx);
697
+ }
698
+ *pobj = (lcjsobject)handle;
699
+ /* FIXME: what if the window is explicitly disposed of, how do we
700
+ notify Java? */
701
+ #endif
702
+ done:
703
+ if (!jsj_exit_js(cx, jsj_env, saved_state))
704
+ return NS_ERROR_FAILURE;
705
+
706
+ return NS_OK;
707
+ }
708
+
709
+ /**
710
+ * Get the window object for a plugin instance.
711
+ *
712
+ * @param jEnv - JNIEnv on which the call is being made.
713
+ * @param obj - A Native JS Object.
714
+ */
715
+ NS_METHOD
716
+ nsCLiveconnect::FinalizeJSObject(JNIEnv *jEnv, lcjsobject obj)
717
+ {
718
+ if(jEnv == NULL || obj == 0)
719
+ {
720
+ return NS_ERROR_FAILURE;
721
+ }
722
+
723
+ JSObjectHandle *handle = (JSObjectHandle *)obj;
724
+
725
+ if (!handle)
726
+ return NS_ERROR_NULL_POINTER;
727
+ JS_RemoveRootRT(handle->rt, &handle->js_obj);
728
+ free(handle);
729
+ return NS_OK;
730
+ }
731
+
732
+
733
+ NS_METHOD
734
+ nsCLiveconnect::ToString(JNIEnv *jEnv, lcjsobject obj, jstring *pjstring)
735
+ {
736
+ if(jEnv == NULL || obj == 0)
737
+ {
738
+ return NS_ERROR_FAILURE;
739
+ }
740
+
741
+ JSJavaThreadState *jsj_env = NULL;
742
+ JSObjectHandle *handle = (JSObjectHandle*)obj;
743
+ JSObject *js_obj = handle->js_obj;
744
+ JSContext *cx = NULL;
745
+ JSErrorReporter saved_state = NULL;
746
+ jstring result = NULL;
747
+ JSString *jsstr = NULL;
748
+
749
+ jsj_env = jsj_enter_js(jEnv, mJavaClient, NULL, &cx, NULL, &saved_state, NULL, 0, NULL );
750
+ if (!jsj_env)
751
+ return NS_ERROR_FAILURE;
752
+
753
+ result = NULL;
754
+ AutoPushJSContext autopush(nsnull, cx);
755
+ if (NS_FAILED(autopush.ResultOfPush()))
756
+ return NS_ERROR_FAILURE;
757
+
758
+ jsstr = JS_ValueToString(cx, OBJECT_TO_JSVAL(js_obj));
759
+ if (jsstr)
760
+ result = jsj_ConvertJSStringToJavaString(cx, jEnv, jsstr);
761
+ if (!result)
762
+ result = jEnv->NewStringUTF("*JavaObject*");
763
+
764
+ if (!jsj_exit_js(cx, jsj_env, saved_state))
765
+ return NS_ERROR_FAILURE;
766
+ *pjstring = result;
767
+ return NS_OK;
768
+ }
769
+
770
+
771
+ ////////////////////////////////////////////////////////////////////////////
772
+ // from nsCLiveconnect:
773
+
774
+ nsCLiveconnect::nsCLiveconnect(nsISupports *aOuter)
775
+ : mJavaClient(NULL)
776
+ {
777
+ NS_INIT_AGGREGATED(aOuter);
778
+ #ifdef PRESERVE_JSOBJECT_IDENTITY
779
+ jsj_init_js_obj_reflections_table();
780
+ #endif
781
+ }
782
+
783
+ nsCLiveconnect::~nsCLiveconnect()
784
+ {
785
+ }