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.
- data/Rakefile +28 -0
- data/VERSION +1 -0
- data/bin/distil +45 -0
- data/distil.gemspec +586 -0
- data/lib/bootstrap-template.js +56 -0
- data/lib/configurable.rb +125 -0
- data/lib/file-set.rb +42 -0
- data/lib/file-types/css-file.rb +75 -0
- data/lib/file-types/html-file.rb +11 -0
- data/lib/file-types/javascript-file.rb +98 -0
- data/lib/file-types/json-file.rb +14 -0
- data/lib/file-types/nib-file.rb +9 -0
- data/lib/jsdoc.conf +18 -0
- data/lib/jsl.conf +121 -0
- data/lib/project.rb +96 -0
- data/lib/source-file.rb +181 -0
- data/lib/target.rb +96 -0
- data/lib/task.rb +239 -0
- data/lib/tasks/copy-task.rb +21 -0
- data/lib/tasks/css-task.rb +18 -0
- data/lib/tasks/javascript-task.rb +125 -0
- data/lib/tasks/multiple-output-task.rb +134 -0
- data/lib/tasks/nib-task.rb +83 -0
- data/lib/tasks/output-task.rb +73 -0
- data/lib/tasks/single-output-task.rb +83 -0
- data/lib/tasks/test-task.rb +280 -0
- data/lib/test/HtmlTestReporter.js +127 -0
- data/lib/test/Test.js +248 -0
- data/lib/test/TestReporter.js +79 -0
- data/lib/test/TestRunner.js +132 -0
- data/lib/test/browser.rb +97 -0
- data/lib/test/scriptwrapper.html +10 -0
- data/lib/test/unittest.html +127 -0
- data/vendor/Makefile +35 -0
- data/vendor/extconf.rb +3 -0
- data/vendor/jsdoc-extras/plugins/distil-plugin.js +142 -0
- data/vendor/jsdoc-extras/plugins/interface-plugin.js +36 -0
- data/vendor/jsdoc-extras/templates/coherent/allclasses.tmpl +17 -0
- data/vendor/jsdoc-extras/templates/coherent/allfiles.tmpl +53 -0
- data/vendor/jsdoc-extras/templates/coherent/class.tmpl +803 -0
- data/vendor/jsdoc-extras/templates/coherent/index.tmpl +37 -0
- data/vendor/jsdoc-extras/templates/coherent/publish.js +242 -0
- data/vendor/jsdoc-extras/templates/coherent/showdown.js +421 -0
- data/vendor/jsdoc-extras/templates/coherent/static/code-footer.html +3 -0
- data/vendor/jsdoc-extras/templates/coherent/static/code-header.html +7 -0
- data/vendor/jsdoc-extras/templates/coherent/static/default.css +297 -0
- data/vendor/jsdoc-extras/templates/coherent/static/header.html +2 -0
- data/vendor/jsdoc-extras/templates/coherent/static/index.html +19 -0
- data/vendor/jsdoc-extras/templates/coherent/symbol.tmpl +35 -0
- data/vendor/jsdoc-toolkit/README.txt +183 -0
- data/vendor/jsdoc-toolkit/app/frame/Chain.js +102 -0
- data/vendor/jsdoc-toolkit/app/frame/Dumper.js +144 -0
- data/vendor/jsdoc-toolkit/app/frame/Hash.js +84 -0
- data/vendor/jsdoc-toolkit/app/frame/Link.js +171 -0
- data/vendor/jsdoc-toolkit/app/frame/Namespace.js +10 -0
- data/vendor/jsdoc-toolkit/app/frame/Opt.js +134 -0
- data/vendor/jsdoc-toolkit/app/frame/Reflection.js +26 -0
- data/vendor/jsdoc-toolkit/app/frame/String.js +93 -0
- data/vendor/jsdoc-toolkit/app/frame/Testrun.js +129 -0
- data/vendor/jsdoc-toolkit/app/frame.js +33 -0
- data/vendor/jsdoc-toolkit/app/handlers/FOODOC.js +26 -0
- data/vendor/jsdoc-toolkit/app/handlers/XMLDOC/DomReader.js +159 -0
- data/vendor/jsdoc-toolkit/app/handlers/XMLDOC/XMLDoc.js +16 -0
- data/vendor/jsdoc-toolkit/app/handlers/XMLDOC/XMLParse.js +292 -0
- data/vendor/jsdoc-toolkit/app/handlers/XMLDOC.js +26 -0
- data/vendor/jsdoc-toolkit/app/lib/JSDOC/DocComment.js +204 -0
- data/vendor/jsdoc-toolkit/app/lib/JSDOC/DocTag.js +300 -0
- data/vendor/jsdoc-toolkit/app/lib/JSDOC/JsDoc.js +126 -0
- data/vendor/jsdoc-toolkit/app/lib/JSDOC/JsPlate.js +109 -0
- data/vendor/jsdoc-toolkit/app/lib/JSDOC/Lang.js +144 -0
- data/vendor/jsdoc-toolkit/app/lib/JSDOC/Parser.js +144 -0
- data/vendor/jsdoc-toolkit/app/lib/JSDOC/PluginManager.js +33 -0
- data/vendor/jsdoc-toolkit/app/lib/JSDOC/Symbol.js +644 -0
- data/vendor/jsdoc-toolkit/app/lib/JSDOC/SymbolSet.js +241 -0
- data/vendor/jsdoc-toolkit/app/lib/JSDOC/TextStream.js +41 -0
- data/vendor/jsdoc-toolkit/app/lib/JSDOC/Token.js +18 -0
- data/vendor/jsdoc-toolkit/app/lib/JSDOC/TokenReader.js +332 -0
- data/vendor/jsdoc-toolkit/app/lib/JSDOC/TokenStream.js +133 -0
- data/vendor/jsdoc-toolkit/app/lib/JSDOC/Util.js +32 -0
- data/vendor/jsdoc-toolkit/app/lib/JSDOC/Walker.js +499 -0
- data/vendor/jsdoc-toolkit/app/lib/JSDOC.js +106 -0
- data/vendor/jsdoc-toolkit/app/main.js +129 -0
- data/vendor/jsdoc-toolkit/app/plugins/commentSrcJson.js +20 -0
- data/vendor/jsdoc-toolkit/app/plugins/frameworkPrototype.js +16 -0
- data/vendor/jsdoc-toolkit/app/plugins/functionCall.js +10 -0
- data/vendor/jsdoc-toolkit/app/plugins/publishSrcHilite.js +54 -0
- data/vendor/jsdoc-toolkit/app/plugins/symbolLink.js +10 -0
- data/vendor/jsdoc-toolkit/app/plugins/tagParamConfig.js +31 -0
- data/vendor/jsdoc-toolkit/app/plugins/tagSynonyms.js +43 -0
- data/vendor/jsdoc-toolkit/app/run.js +348 -0
- data/vendor/jsdoc-toolkit/app/t/TestDoc.js +144 -0
- data/vendor/jsdoc-toolkit/app/t/runner.js +13 -0
- data/vendor/jsdoc-toolkit/app/test/addon.js +24 -0
- data/vendor/jsdoc-toolkit/app/test/anon_inner.js +14 -0
- data/vendor/jsdoc-toolkit/app/test/augments.js +31 -0
- data/vendor/jsdoc-toolkit/app/test/augments2.js +26 -0
- data/vendor/jsdoc-toolkit/app/test/borrows.js +46 -0
- data/vendor/jsdoc-toolkit/app/test/borrows2.js +23 -0
- data/vendor/jsdoc-toolkit/app/test/config.js +22 -0
- data/vendor/jsdoc-toolkit/app/test/constructs.js +18 -0
- data/vendor/jsdoc-toolkit/app/test/encoding.js +10 -0
- data/vendor/jsdoc-toolkit/app/test/encoding_other.js +12 -0
- data/vendor/jsdoc-toolkit/app/test/event.js +54 -0
- data/vendor/jsdoc-toolkit/app/test/exports.js +14 -0
- data/vendor/jsdoc-toolkit/app/test/functions_anon.js +39 -0
- data/vendor/jsdoc-toolkit/app/test/functions_nested.js +33 -0
- data/vendor/jsdoc-toolkit/app/test/global.js +13 -0
- data/vendor/jsdoc-toolkit/app/test/globals.js +25 -0
- data/vendor/jsdoc-toolkit/app/test/ignore.js +10 -0
- data/vendor/jsdoc-toolkit/app/test/inner.js +16 -0
- data/vendor/jsdoc-toolkit/app/test/jsdoc_test.js +477 -0
- data/vendor/jsdoc-toolkit/app/test/lend.js +33 -0
- data/vendor/jsdoc-toolkit/app/test/memberof.js +19 -0
- data/vendor/jsdoc-toolkit/app/test/memberof2.js +38 -0
- data/vendor/jsdoc-toolkit/app/test/memberof3.js +33 -0
- data/vendor/jsdoc-toolkit/app/test/memberof_constructor.js +17 -0
- data/vendor/jsdoc-toolkit/app/test/module.js +17 -0
- data/vendor/jsdoc-toolkit/app/test/name.js +19 -0
- data/vendor/jsdoc-toolkit/app/test/namespace_nested.js +23 -0
- data/vendor/jsdoc-toolkit/app/test/nocode.js +13 -0
- data/vendor/jsdoc-toolkit/app/test/oblit_anon.js +20 -0
- data/vendor/jsdoc-toolkit/app/test/overview.js +20 -0
- data/vendor/jsdoc-toolkit/app/test/param_inline.js +37 -0
- data/vendor/jsdoc-toolkit/app/test/params_optional.js +8 -0
- data/vendor/jsdoc-toolkit/app/test/prototype.js +17 -0
- data/vendor/jsdoc-toolkit/app/test/prototype_nested.js +9 -0
- data/vendor/jsdoc-toolkit/app/test/prototype_oblit.js +13 -0
- data/vendor/jsdoc-toolkit/app/test/prototype_oblit_constructor.js +24 -0
- data/vendor/jsdoc-toolkit/app/test/public.js +10 -0
- data/vendor/jsdoc-toolkit/app/test/scripts/code.js +5 -0
- data/vendor/jsdoc-toolkit/app/test/scripts/notcode.txt +5 -0
- data/vendor/jsdoc-toolkit/app/test/shared.js +42 -0
- data/vendor/jsdoc-toolkit/app/test/shared2.js +2 -0
- data/vendor/jsdoc-toolkit/app/test/shortcuts.js +22 -0
- data/vendor/jsdoc-toolkit/app/test/static_this.js +13 -0
- data/vendor/jsdoc-toolkit/app/test/synonyms.js +31 -0
- data/vendor/jsdoc-toolkit/app/test/tosource.js +23 -0
- data/vendor/jsdoc-toolkit/app/test/variable_redefine.js +14 -0
- data/vendor/jsdoc-toolkit/app/test.js +342 -0
- data/vendor/jsdoc-toolkit/changes.txt +116 -0
- data/vendor/jsdoc-toolkit/conf/sample.conf +31 -0
- data/vendor/jsdoc-toolkit/java/build.xml +36 -0
- data/vendor/jsdoc-toolkit/java/build_1.4.xml +36 -0
- data/vendor/jsdoc-toolkit/java/classes/js.jar +0 -0
- data/vendor/jsdoc-toolkit/java/src/JsDebugRun.java +21 -0
- data/vendor/jsdoc-toolkit/java/src/JsRun.java +21 -0
- data/vendor/jsdoc-toolkit/jsdebug.jar +0 -0
- data/vendor/jsdoc-toolkit/jsrun.jar +0 -0
- data/vendor/jsdoc-toolkit/jsrun.sh +53 -0
- data/vendor/jsdoc-toolkit/templates/jsdoc/allclasses.tmpl +17 -0
- data/vendor/jsdoc-toolkit/templates/jsdoc/allfiles.tmpl +56 -0
- data/vendor/jsdoc-toolkit/templates/jsdoc/class.tmpl +649 -0
- data/vendor/jsdoc-toolkit/templates/jsdoc/index.tmpl +39 -0
- data/vendor/jsdoc-toolkit/templates/jsdoc/publish.js +201 -0
- data/vendor/jsdoc-toolkit/templates/jsdoc/static/code-footer.html +3 -0
- data/vendor/jsdoc-toolkit/templates/jsdoc/static/code-header.html +14 -0
- data/vendor/jsdoc-toolkit/templates/jsdoc/static/default.css +162 -0
- data/vendor/jsdoc-toolkit/templates/jsdoc/static/header.html +2 -0
- data/vendor/jsdoc-toolkit/templates/jsdoc/static/index.html +19 -0
- data/vendor/jsdoc-toolkit/templates/jsdoc/symbol.tmpl +35 -0
- data/vendor/jsl-0.3.0/src/JavaScriptLintAPI.cpp +333 -0
- data/vendor/jsl-0.3.0/src/JavaScriptLintAPI.h +86 -0
- data/vendor/jsl-0.3.0/src/Makefile.in +375 -0
- data/vendor/jsl-0.3.0/src/Makefile.ref +372 -0
- data/vendor/jsl-0.3.0/src/README.html +826 -0
- data/vendor/jsl-0.3.0/src/SpiderMonkey.rsp +12 -0
- data/vendor/jsl-0.3.0/src/_jsl_online.php +223 -0
- data/vendor/jsl-0.3.0/src/config/AIX4.1.mk +65 -0
- data/vendor/jsl-0.3.0/src/config/AIX4.2.mk +64 -0
- data/vendor/jsl-0.3.0/src/config/AIX4.3.mk +65 -0
- data/vendor/jsl-0.3.0/src/config/Darwin.mk +81 -0
- data/vendor/jsl-0.3.0/src/config/Darwin1.3.mk +81 -0
- data/vendor/jsl-0.3.0/src/config/Darwin1.4.mk +41 -0
- data/vendor/jsl-0.3.0/src/config/Darwin5.2.mk +81 -0
- data/vendor/jsl-0.3.0/src/config/Darwin5.3.mk +81 -0
- data/vendor/jsl-0.3.0/src/config/HP-UXB.10.10.mk +77 -0
- data/vendor/jsl-0.3.0/src/config/HP-UXB.10.20.mk +77 -0
- data/vendor/jsl-0.3.0/src/config/HP-UXB.11.00.mk +80 -0
- data/vendor/jsl-0.3.0/src/config/IRIX.mk +87 -0
- data/vendor/jsl-0.3.0/src/config/IRIX5.3.mk +44 -0
- data/vendor/jsl-0.3.0/src/config/IRIX6.1.mk +44 -0
- data/vendor/jsl-0.3.0/src/config/IRIX6.2.mk +44 -0
- data/vendor/jsl-0.3.0/src/config/IRIX6.3.mk +44 -0
- data/vendor/jsl-0.3.0/src/config/IRIX6.5.mk +44 -0
- data/vendor/jsl-0.3.0/src/config/Linux_All.mk +103 -0
- data/vendor/jsl-0.3.0/src/config/Mac_OS10.0.mk +82 -0
- data/vendor/jsl-0.3.0/src/config/OSF1V4.0.mk +72 -0
- data/vendor/jsl-0.3.0/src/config/OSF1V5.0.mk +69 -0
- data/vendor/jsl-0.3.0/src/config/SunOS4.1.4.mk +101 -0
- data/vendor/jsl-0.3.0/src/config/SunOS5.3.mk +91 -0
- data/vendor/jsl-0.3.0/src/config/SunOS5.4.mk +92 -0
- data/vendor/jsl-0.3.0/src/config/SunOS5.5.1.mk +44 -0
- data/vendor/jsl-0.3.0/src/config/SunOS5.5.mk +87 -0
- data/vendor/jsl-0.3.0/src/config/SunOS5.6.mk +89 -0
- data/vendor/jsl-0.3.0/src/config/SunOS5.7.mk +44 -0
- data/vendor/jsl-0.3.0/src/config/SunOS5.8.mk +44 -0
- data/vendor/jsl-0.3.0/src/config/SunOS5.9.mk +44 -0
- data/vendor/jsl-0.3.0/src/config/WINNT4.0.mk +112 -0
- data/vendor/jsl-0.3.0/src/config/WINNT5.0.mk +112 -0
- data/vendor/jsl-0.3.0/src/config/WINNT5.1.mk +112 -0
- data/vendor/jsl-0.3.0/src/config/WINNT5.2.mk +112 -0
- data/vendor/jsl-0.3.0/src/config/dgux.mk +64 -0
- data/vendor/jsl-0.3.0/src/config.mk +166 -0
- data/vendor/jsl-0.3.0/src/editline/Makefile.ref +144 -0
- data/vendor/jsl-0.3.0/src/editline/README +83 -0
- data/vendor/jsl-0.3.0/src/editline/editline.3 +175 -0
- data/vendor/jsl-0.3.0/src/editline/editline.c +1369 -0
- data/vendor/jsl-0.3.0/src/editline/editline.h +135 -0
- data/vendor/jsl-0.3.0/src/editline/sysunix.c +182 -0
- data/vendor/jsl-0.3.0/src/editline/unix.h +82 -0
- data/vendor/jsl-0.3.0/src/fdlibm/Makefile.in +127 -0
- data/vendor/jsl-0.3.0/src/fdlibm/Makefile.ref +192 -0
- data/vendor/jsl-0.3.0/src/fdlibm/e_acos.c +147 -0
- data/vendor/jsl-0.3.0/src/fdlibm/e_acosh.c +105 -0
- data/vendor/jsl-0.3.0/src/fdlibm/e_asin.c +156 -0
- data/vendor/jsl-0.3.0/src/fdlibm/e_atan2.c +165 -0
- data/vendor/jsl-0.3.0/src/fdlibm/e_atanh.c +110 -0
- data/vendor/jsl-0.3.0/src/fdlibm/e_cosh.c +133 -0
- data/vendor/jsl-0.3.0/src/fdlibm/e_exp.c +202 -0
- data/vendor/jsl-0.3.0/src/fdlibm/e_fmod.c +184 -0
- data/vendor/jsl-0.3.0/src/fdlibm/e_gamma.c +71 -0
- data/vendor/jsl-0.3.0/src/fdlibm/e_gamma_r.c +70 -0
- data/vendor/jsl-0.3.0/src/fdlibm/e_hypot.c +173 -0
- data/vendor/jsl-0.3.0/src/fdlibm/e_j0.c +524 -0
- data/vendor/jsl-0.3.0/src/fdlibm/e_j1.c +523 -0
- data/vendor/jsl-0.3.0/src/fdlibm/e_jn.c +315 -0
- data/vendor/jsl-0.3.0/src/fdlibm/e_lgamma.c +71 -0
- data/vendor/jsl-0.3.0/src/fdlibm/e_lgamma_r.c +347 -0
- data/vendor/jsl-0.3.0/src/fdlibm/e_log.c +184 -0
- data/vendor/jsl-0.3.0/src/fdlibm/e_log10.c +134 -0
- data/vendor/jsl-0.3.0/src/fdlibm/e_pow.c +386 -0
- data/vendor/jsl-0.3.0/src/fdlibm/e_rem_pio2.c +221 -0
- data/vendor/jsl-0.3.0/src/fdlibm/e_remainder.c +120 -0
- data/vendor/jsl-0.3.0/src/fdlibm/e_scalb.c +89 -0
- data/vendor/jsl-0.3.0/src/fdlibm/e_sinh.c +122 -0
- data/vendor/jsl-0.3.0/src/fdlibm/e_sqrt.c +497 -0
- data/vendor/jsl-0.3.0/src/fdlibm/fdlibm.dsp +160 -0
- data/vendor/jsl-0.3.0/src/fdlibm/fdlibm.h +273 -0
- data/vendor/jsl-0.3.0/src/fdlibm/fdlibm.mak +1453 -0
- data/vendor/jsl-0.3.0/src/fdlibm/fdlibm.mdp +0 -0
- data/vendor/jsl-0.3.0/src/fdlibm/k_cos.c +134 -0
- data/vendor/jsl-0.3.0/src/fdlibm/k_rem_pio2.c +354 -0
- data/vendor/jsl-0.3.0/src/fdlibm/k_sin.c +114 -0
- data/vendor/jsl-0.3.0/src/fdlibm/k_standard.c +785 -0
- data/vendor/jsl-0.3.0/src/fdlibm/k_tan.c +170 -0
- data/vendor/jsl-0.3.0/src/fdlibm/s_asinh.c +101 -0
- data/vendor/jsl-0.3.0/src/fdlibm/s_atan.c +175 -0
- data/vendor/jsl-0.3.0/src/fdlibm/s_cbrt.c +133 -0
- data/vendor/jsl-0.3.0/src/fdlibm/s_ceil.c +120 -0
- data/vendor/jsl-0.3.0/src/fdlibm/s_copysign.c +72 -0
- data/vendor/jsl-0.3.0/src/fdlibm/s_cos.c +118 -0
- data/vendor/jsl-0.3.0/src/fdlibm/s_erf.c +356 -0
- data/vendor/jsl-0.3.0/src/fdlibm/s_expm1.c +267 -0
- data/vendor/jsl-0.3.0/src/fdlibm/s_fabs.c +70 -0
- data/vendor/jsl-0.3.0/src/fdlibm/s_finite.c +71 -0
- data/vendor/jsl-0.3.0/src/fdlibm/s_floor.c +121 -0
- data/vendor/jsl-0.3.0/src/fdlibm/s_frexp.c +99 -0
- data/vendor/jsl-0.3.0/src/fdlibm/s_ilogb.c +85 -0
- data/vendor/jsl-0.3.0/src/fdlibm/s_isnan.c +74 -0
- data/vendor/jsl-0.3.0/src/fdlibm/s_ldexp.c +66 -0
- data/vendor/jsl-0.3.0/src/fdlibm/s_lib_version.c +73 -0
- data/vendor/jsl-0.3.0/src/fdlibm/s_log1p.c +211 -0
- data/vendor/jsl-0.3.0/src/fdlibm/s_logb.c +79 -0
- data/vendor/jsl-0.3.0/src/fdlibm/s_matherr.c +64 -0
- data/vendor/jsl-0.3.0/src/fdlibm/s_modf.c +132 -0
- data/vendor/jsl-0.3.0/src/fdlibm/s_nextafter.c +124 -0
- data/vendor/jsl-0.3.0/src/fdlibm/s_rint.c +131 -0
- data/vendor/jsl-0.3.0/src/fdlibm/s_scalbn.c +107 -0
- data/vendor/jsl-0.3.0/src/fdlibm/s_signgam.c +40 -0
- data/vendor/jsl-0.3.0/src/fdlibm/s_significand.c +68 -0
- data/vendor/jsl-0.3.0/src/fdlibm/s_sin.c +118 -0
- data/vendor/jsl-0.3.0/src/fdlibm/s_tan.c +112 -0
- data/vendor/jsl-0.3.0/src/fdlibm/s_tanh.c +122 -0
- data/vendor/jsl-0.3.0/src/fdlibm/w_acos.c +78 -0
- data/vendor/jsl-0.3.0/src/fdlibm/w_acosh.c +78 -0
- data/vendor/jsl-0.3.0/src/fdlibm/w_asin.c +80 -0
- data/vendor/jsl-0.3.0/src/fdlibm/w_atan2.c +79 -0
- data/vendor/jsl-0.3.0/src/fdlibm/w_atanh.c +81 -0
- data/vendor/jsl-0.3.0/src/fdlibm/w_cosh.c +77 -0
- data/vendor/jsl-0.3.0/src/fdlibm/w_exp.c +88 -0
- data/vendor/jsl-0.3.0/src/fdlibm/w_fmod.c +78 -0
- data/vendor/jsl-0.3.0/src/fdlibm/w_gamma.c +85 -0
- data/vendor/jsl-0.3.0/src/fdlibm/w_gamma_r.c +81 -0
- data/vendor/jsl-0.3.0/src/fdlibm/w_hypot.c +78 -0
- data/vendor/jsl-0.3.0/src/fdlibm/w_j0.c +105 -0
- data/vendor/jsl-0.3.0/src/fdlibm/w_j1.c +106 -0
- data/vendor/jsl-0.3.0/src/fdlibm/w_jn.c +128 -0
- data/vendor/jsl-0.3.0/src/fdlibm/w_lgamma.c +85 -0
- data/vendor/jsl-0.3.0/src/fdlibm/w_lgamma_r.c +81 -0
- data/vendor/jsl-0.3.0/src/fdlibm/w_log.c +78 -0
- data/vendor/jsl-0.3.0/src/fdlibm/w_log10.c +81 -0
- data/vendor/jsl-0.3.0/src/fdlibm/w_pow.c +99 -0
- data/vendor/jsl-0.3.0/src/fdlibm/w_remainder.c +77 -0
- data/vendor/jsl-0.3.0/src/fdlibm/w_scalb.c +95 -0
- data/vendor/jsl-0.3.0/src/fdlibm/w_sinh.c +77 -0
- data/vendor/jsl-0.3.0/src/fdlibm/w_sqrt.c +77 -0
- data/vendor/jsl-0.3.0/src/js.c +2447 -0
- data/vendor/jsl-0.3.0/src/js.dsp +420 -0
- data/vendor/jsl-0.3.0/src/js.mak +4025 -0
- data/vendor/jsl-0.3.0/src/js.mdp +0 -0
- data/vendor/jsl-0.3.0/src/js.msg +291 -0
- data/vendor/jsl-0.3.0/src/js.pkg +2 -0
- data/vendor/jsl-0.3.0/src/js3240.rc +79 -0
- data/vendor/jsl-0.3.0/src/jsOS240.def +654 -0
- data/vendor/jsl-0.3.0/src/jsapi.c +4405 -0
- data/vendor/jsl-0.3.0/src/jsapi.h +1856 -0
- data/vendor/jsl-0.3.0/src/jsarena.c +567 -0
- data/vendor/jsl-0.3.0/src/jsarena.h +302 -0
- data/vendor/jsl-0.3.0/src/jsarray.c +1428 -0
- data/vendor/jsl-0.3.0/src/jsarray.h +77 -0
- data/vendor/jsl-0.3.0/src/jsatom.c +927 -0
- data/vendor/jsl-0.3.0/src/jsatom.h +426 -0
- data/vendor/jsl-0.3.0/src/jsbit.h +113 -0
- data/vendor/jsl-0.3.0/src/jsbool.c +220 -0
- data/vendor/jsl-0.3.0/src/jsbool.h +62 -0
- data/vendor/jsl-0.3.0/src/jsclist.h +139 -0
- data/vendor/jsl-0.3.0/src/jscntxt.c +1036 -0
- data/vendor/jsl-0.3.0/src/jscntxt.h +608 -0
- data/vendor/jsl-0.3.0/src/jscompat.h +57 -0
- data/vendor/jsl-0.3.0/src/jsconfig.h +489 -0
- data/vendor/jsl-0.3.0/src/jsconfig.mk +181 -0
- data/vendor/jsl-0.3.0/src/jscpucfg.c +377 -0
- data/vendor/jsl-0.3.0/src/jscpucfg.h +204 -0
- data/vendor/jsl-0.3.0/src/jsdate.c +2238 -0
- data/vendor/jsl-0.3.0/src/jsdate.h +118 -0
- data/vendor/jsl-0.3.0/src/jsdbgapi.c +1260 -0
- data/vendor/jsl-0.3.0/src/jsdbgapi.h +345 -0
- data/vendor/jsl-0.3.0/src/jsdhash.c +763 -0
- data/vendor/jsl-0.3.0/src/jsdhash.h +579 -0
- data/vendor/jsl-0.3.0/src/jsdtoa.c +3135 -0
- data/vendor/jsl-0.3.0/src/jsdtoa.h +130 -0
- data/vendor/jsl-0.3.0/src/jsemit.c +4851 -0
- data/vendor/jsl-0.3.0/src/jsemit.h +576 -0
- data/vendor/jsl-0.3.0/src/jsexn.c +1084 -0
- data/vendor/jsl-0.3.0/src/jsexn.h +102 -0
- data/vendor/jsl-0.3.0/src/jsfile.c +2610 -0
- data/vendor/jsl-0.3.0/src/jsfile.h +50 -0
- data/vendor/jsl-0.3.0/src/jsfile.msg +89 -0
- data/vendor/jsl-0.3.0/src/jsfun.c +2015 -0
- data/vendor/jsl-0.3.0/src/jsfun.h +158 -0
- data/vendor/jsl-0.3.0/src/jsgc.c +1441 -0
- data/vendor/jsl-0.3.0/src/jsgc.h +230 -0
- data/vendor/jsl-0.3.0/src/jshash.c +471 -0
- data/vendor/jsl-0.3.0/src/jshash.h +152 -0
- data/vendor/jsl-0.3.0/src/jsify.pl +485 -0
- data/vendor/jsl-0.3.0/src/jsinterp.c +4797 -0
- data/vendor/jsl-0.3.0/src/jsinterp.h +302 -0
- data/vendor/jsl-0.3.0/src/jsl-test.js +28 -0
- data/vendor/jsl-0.3.0/src/jsl.c +2371 -0
- data/vendor/jsl-0.3.0/src/jsl.conf +127 -0
- data/vendor/jsl-0.3.0/src/jsl.conf.old +124 -0
- data/vendor/jsl-0.3.0/src/jsl.dsp +242 -0
- data/vendor/jsl-0.3.0/src/jsl.dsw +59 -0
- data/vendor/jsl-0.3.0/src/jslibmath.h +290 -0
- data/vendor/jsl-0.3.0/src/jslock.c +1261 -0
- data/vendor/jsl-0.3.0/src/jslock.h +289 -0
- data/vendor/jsl-0.3.0/src/jslocko.asm +59 -0
- data/vendor/jsl-0.3.0/src/jslog2.c +83 -0
- data/vendor/jsl-0.3.0/src/jslong.c +281 -0
- data/vendor/jsl-0.3.0/src/jslong.h +437 -0
- data/vendor/jsl-0.3.0/src/jsmath.c +477 -0
- data/vendor/jsl-0.3.0/src/jsmath.h +55 -0
- data/vendor/jsl-0.3.0/src/jsnum.c +1148 -0
- data/vendor/jsl-0.3.0/src/jsnum.h +257 -0
- data/vendor/jsl-0.3.0/src/jsobj.c +4066 -0
- data/vendor/jsl-0.3.0/src/jsobj.h +475 -0
- data/vendor/jsl-0.3.0/src/jsopcode.c +2730 -0
- data/vendor/jsl-0.3.0/src/jsopcode.h +275 -0
- data/vendor/jsl-0.3.0/src/jsopcode.tbl +344 -0
- data/vendor/jsl-0.3.0/src/jsosdep.h +127 -0
- data/vendor/jsl-0.3.0/src/jsotypes.h +211 -0
- data/vendor/jsl-0.3.0/src/jsparse.c +4438 -0
- data/vendor/jsl-0.3.0/src/jsparse.h +345 -0
- data/vendor/jsl-0.3.0/src/jsprf.c +1212 -0
- data/vendor/jsl-0.3.0/src/jsprf.h +148 -0
- data/vendor/jsl-0.3.0/src/jsprvtd.h +174 -0
- data/vendor/jsl-0.3.0/src/jspubtd.h +586 -0
- data/vendor/jsl-0.3.0/src/jsregexp.c +3831 -0
- data/vendor/jsl-0.3.0/src/jsregexp.h +180 -0
- data/vendor/jsl-0.3.0/src/jsscan.c +1814 -0
- data/vendor/jsl-0.3.0/src/jsscan.h +267 -0
- data/vendor/jsl-0.3.0/src/jsscope.c +1639 -0
- data/vendor/jsl-0.3.0/src/jsscope.h +389 -0
- data/vendor/jsl-0.3.0/src/jsscript.c +1284 -0
- data/vendor/jsl-0.3.0/src/jsscript.h +179 -0
- data/vendor/jsl-0.3.0/src/jsshell.msg +50 -0
- data/vendor/jsl-0.3.0/src/jsstddef.h +83 -0
- data/vendor/jsl-0.3.0/src/jsstr.c +4502 -0
- data/vendor/jsl-0.3.0/src/jsstr.h +448 -0
- data/vendor/jsl-0.3.0/src/jstypes.h +391 -0
- data/vendor/jsl-0.3.0/src/jsutil.c +157 -0
- data/vendor/jsl-0.3.0/src/jsutil.h +75 -0
- data/vendor/jsl-0.3.0/src/jsxdrapi.c +686 -0
- data/vendor/jsl-0.3.0/src/jsxdrapi.h +193 -0
- data/vendor/jsl-0.3.0/src/liveconnect/LiveConnect.dsp +157 -0
- data/vendor/jsl-0.3.0/src/liveconnect/LiveConnectShell.dsp +120 -0
- data/vendor/jsl-0.3.0/src/liveconnect/LiveConnectShell.dsw +44 -0
- data/vendor/jsl-0.3.0/src/liveconnect/Makefile.in +106 -0
- data/vendor/jsl-0.3.0/src/liveconnect/Makefile.ref +169 -0
- data/vendor/jsl-0.3.0/src/liveconnect/README.html +719 -0
- data/vendor/jsl-0.3.0/src/liveconnect/_jni/netscape_javascript_JSException.h +14 -0
- data/vendor/jsl-0.3.0/src/liveconnect/_jni/netscape_javascript_JSObject.h +155 -0
- data/vendor/jsl-0.3.0/src/liveconnect/classes/Makefile.in +89 -0
- data/vendor/jsl-0.3.0/src/liveconnect/classes/Makefile.ref +57 -0
- data/vendor/jsl-0.3.0/src/liveconnect/classes/netscape/Makefile.ref +47 -0
- data/vendor/jsl-0.3.0/src/liveconnect/classes/netscape/javascript/JSException.java +140 -0
- data/vendor/jsl-0.3.0/src/liveconnect/classes/netscape/javascript/JSObject.java +183 -0
- data/vendor/jsl-0.3.0/src/liveconnect/classes/netscape/javascript/JSProxy.java +58 -0
- data/vendor/jsl-0.3.0/src/liveconnect/classes/netscape/javascript/JSRunnable.java +70 -0
- data/vendor/jsl-0.3.0/src/liveconnect/classes/netscape/javascript/JSUtil.java +59 -0
- data/vendor/jsl-0.3.0/src/liveconnect/classes/netscape/javascript/Makefile.ref +53 -0
- data/vendor/jsl-0.3.0/src/liveconnect/config/AIX4.1.mk +45 -0
- data/vendor/jsl-0.3.0/src/liveconnect/config/AIX4.2.mk +45 -0
- data/vendor/jsl-0.3.0/src/liveconnect/config/AIX4.3.mk +50 -0
- data/vendor/jsl-0.3.0/src/liveconnect/config/HP-UXB.10.10.mk +43 -0
- data/vendor/jsl-0.3.0/src/liveconnect/config/HP-UXB.10.20.mk +43 -0
- data/vendor/jsl-0.3.0/src/liveconnect/config/HP-UXB.11.00.mk +43 -0
- data/vendor/jsl-0.3.0/src/liveconnect/config/IRIX6.2.mk +43 -0
- data/vendor/jsl-0.3.0/src/liveconnect/config/IRIX6.3.mk +43 -0
- data/vendor/jsl-0.3.0/src/liveconnect/config/IRIX6.5.mk +43 -0
- data/vendor/jsl-0.3.0/src/liveconnect/config/Linux_All.mk +73 -0
- data/vendor/jsl-0.3.0/src/liveconnect/config/OSF1V4.0.mk +65 -0
- data/vendor/jsl-0.3.0/src/liveconnect/config/OSF1V5.0.mk +62 -0
- data/vendor/jsl-0.3.0/src/liveconnect/config/SunOS5.5.1.mk +55 -0
- data/vendor/jsl-0.3.0/src/liveconnect/config/SunOS5.6.mk +39 -0
- data/vendor/jsl-0.3.0/src/liveconnect/config/SunOS5.7.mk +39 -0
- data/vendor/jsl-0.3.0/src/liveconnect/config/SunOS5.8.mk +39 -0
- data/vendor/jsl-0.3.0/src/liveconnect/config/WINNT4.0.mk +53 -0
- data/vendor/jsl-0.3.0/src/liveconnect/jsj.c +884 -0
- data/vendor/jsl-0.3.0/src/liveconnect/jsj.msg +98 -0
- data/vendor/jsl-0.3.0/src/liveconnect/jsj_JSObject.c +1379 -0
- data/vendor/jsl-0.3.0/src/liveconnect/jsj_JavaArray.c +481 -0
- data/vendor/jsl-0.3.0/src/liveconnect/jsj_JavaClass.c +749 -0
- data/vendor/jsl-0.3.0/src/liveconnect/jsj_JavaMember.c +186 -0
- data/vendor/jsl-0.3.0/src/liveconnect/jsj_JavaObject.c +1099 -0
- data/vendor/jsl-0.3.0/src/liveconnect/jsj_JavaPackage.c +548 -0
- data/vendor/jsl-0.3.0/src/liveconnect/jsj_array.c +207 -0
- data/vendor/jsl-0.3.0/src/liveconnect/jsj_class.c +765 -0
- data/vendor/jsl-0.3.0/src/liveconnect/jsj_convert.c +954 -0
- data/vendor/jsl-0.3.0/src/liveconnect/jsj_field.c +421 -0
- data/vendor/jsl-0.3.0/src/liveconnect/jsj_hash.c +504 -0
- data/vendor/jsl-0.3.0/src/liveconnect/jsj_hash.h +161 -0
- data/vendor/jsl-0.3.0/src/liveconnect/jsj_method.c +1823 -0
- data/vendor/jsl-0.3.0/src/liveconnect/jsj_nodl.c +1 -0
- data/vendor/jsl-0.3.0/src/liveconnect/jsj_private.h +689 -0
- data/vendor/jsl-0.3.0/src/liveconnect/jsj_simpleapi.c +219 -0
- data/vendor/jsl-0.3.0/src/liveconnect/jsj_utils.c +513 -0
- data/vendor/jsl-0.3.0/src/liveconnect/jsjava.h +313 -0
- data/vendor/jsl-0.3.0/src/liveconnect/liveconnect.pkg +3 -0
- data/vendor/jsl-0.3.0/src/liveconnect/netscape_javascript_JSObject.h +155 -0
- data/vendor/jsl-0.3.0/src/liveconnect/nsCLiveconnect.cpp +785 -0
- data/vendor/jsl-0.3.0/src/liveconnect/nsCLiveconnect.h +197 -0
- data/vendor/jsl-0.3.0/src/liveconnect/nsCLiveconnectFactory.cpp +163 -0
- data/vendor/jsl-0.3.0/src/liveconnect/nsCLiveconnectFactory.h +76 -0
- data/vendor/jsl-0.3.0/src/liveconnect/nsILiveconnect.h +195 -0
- data/vendor/jsl-0.3.0/src/liveconnect/nsISecureLiveconnect.h +84 -0
- data/vendor/jsl-0.3.0/src/liveconnect/nsISecurityContext.h +135 -0
- data/vendor/jsl-0.3.0/src/liveconnect/win32.order +6 -0
- data/vendor/jsl-0.3.0/src/lock_SunOS.s +114 -0
- data/vendor/jsl-0.3.0/src/perfect.js +39 -0
- data/vendor/jsl-0.3.0/src/perlconnect/JS.def +6 -0
- data/vendor/jsl-0.3.0/src/perlconnect/JS.dsp +107 -0
- data/vendor/jsl-0.3.0/src/perlconnect/JS.pm +318 -0
- data/vendor/jsl-0.3.0/src/perlconnect/JS.xs +1050 -0
- data/vendor/jsl-0.3.0/src/perlconnect/Makefile.PL +67 -0
- data/vendor/jsl-0.3.0/src/perlconnect/Makefile.ref +152 -0
- data/vendor/jsl-0.3.0/src/perlconnect/PerlConnect.dsp +103 -0
- data/vendor/jsl-0.3.0/src/perlconnect/PerlConnect.dsw +59 -0
- data/vendor/jsl-0.3.0/src/perlconnect/PerlConnect.pm +126 -0
- data/vendor/jsl-0.3.0/src/perlconnect/PerlConnectShell.dsp +89 -0
- data/vendor/jsl-0.3.0/src/perlconnect/README.html +345 -0
- data/vendor/jsl-0.3.0/src/perlconnect/bg.jpg +0 -0
- data/vendor/jsl-0.3.0/src/perlconnect/jsperl.c +1100 -0
- data/vendor/jsl-0.3.0/src/perlconnect/jsperl.h +52 -0
- data/vendor/jsl-0.3.0/src/perlconnect/jsperlbuild.pl +81 -0
- data/vendor/jsl-0.3.0/src/perlconnect/jsperlpvt.h +57 -0
- data/vendor/jsl-0.3.0/src/perlconnect/test.js +73 -0
- data/vendor/jsl-0.3.0/src/perlconnect/test.pl +244 -0
- data/vendor/jsl-0.3.0/src/perlconnect/typemap +121 -0
- data/vendor/jsl-0.3.0/src/plify_jsdhash.sed +31 -0
- data/vendor/jsl-0.3.0/src/prmjtime.c +646 -0
- data/vendor/jsl-0.3.0/src/prmjtime.h +95 -0
- data/vendor/jsl-0.3.0/src/resource.h +15 -0
- data/vendor/jsl-0.3.0/src/rules.mk +193 -0
- data/vendor/jsl-0.3.0/src/win32.order +391 -0
- data/vendor/jsl-0.3.0/tests/conf/always_use_option_explicit.js +4 -0
- data/vendor/jsl-0.3.0/tests/conf/define.js +8 -0
- data/vendor/jsl-0.3.0/tests/conf/jscript_function_extensions-1.js +7 -0
- data/vendor/jsl-0.3.0/tests/conf/jscript_function_extensions-2.js +8 -0
- data/vendor/jsl-0.3.0/tests/conf/jscript_function_extensions-3.js +27 -0
- data/vendor/jsl-0.3.0/tests/conf/jscript_function_extensions-4.js +4 -0
- data/vendor/jsl-0.3.0/tests/conf/lambda_assign_requires_semicolon.js +24 -0
- data/vendor/jsl-0.3.0/tests/conf/legacy_control_comments.js +8 -0
- data/vendor/jsl-0.3.0/tests/control_comments/control_comments.js +33 -0
- data/vendor/jsl-0.3.0/tests/control_comments/declare.js +26 -0
- data/vendor/jsl-0.3.0/tests/control_comments/import-overflow.js +9 -0
- data/vendor/jsl-0.3.0/tests/control_comments/import.js +5 -0
- data/vendor/jsl-0.3.0/tests/control_comments/import2.js +2 -0
- data/vendor/jsl-0.3.0/tests/control_comments/invalid_fallthru.js +13 -0
- data/vendor/jsl-0.3.0/tests/control_comments/option_explicit-with.js +12 -0
- data/vendor/jsl-0.3.0/tests/control_comments/option_explicit.js +64 -0
- data/vendor/jsl-0.3.0/tests/errors/unterminated_comment.js +8 -0
- data/vendor/jsl-0.3.0/tests/html/script_tag_in_js_literal.html +14 -0
- data/vendor/jsl-0.3.0/tests/run_tests.pl +71 -0
- data/vendor/jsl-0.3.0/tests/warnings/ambiguous_else_stmt.js +21 -0
- data/vendor/jsl-0.3.0/tests/warnings/ambiguous_nested_stmt.js +66 -0
- data/vendor/jsl-0.3.0/tests/warnings/ambiguous_newline.js +261 -0
- data/vendor/jsl-0.3.0/tests/warnings/anon_no_return_value.js +26 -0
- data/vendor/jsl-0.3.0/tests/warnings/assign_to_function_call.js +16 -0
- data/vendor/jsl-0.3.0/tests/warnings/block_without_braces.js +13 -0
- data/vendor/jsl-0.3.0/tests/warnings/comma_separated_stmts.js +17 -0
- data/vendor/jsl-0.3.0/tests/warnings/comparison_type_conv.js +44 -0
- data/vendor/jsl-0.3.0/tests/warnings/default_not_at_end.js +15 -0
- data/vendor/jsl-0.3.0/tests/warnings/dup_option_explicit.js +5 -0
- data/vendor/jsl-0.3.0/tests/warnings/duplicate_case_in_switch.js +62 -0
- data/vendor/jsl-0.3.0/tests/warnings/duplicate_formal.js +5 -0
- data/vendor/jsl-0.3.0/tests/warnings/empty_statement.js +29 -0
- data/vendor/jsl-0.3.0/tests/warnings/equal_as_assign.js +7 -0
- data/vendor/jsl-0.3.0/tests/warnings/inc_dec_within_stmt-ignore.js +21 -0
- data/vendor/jsl-0.3.0/tests/warnings/inc_dec_within_stmt.js +63 -0
- data/vendor/jsl-0.3.0/tests/warnings/jsl_cc_not_understood.js +5 -0
- data/vendor/jsl-0.3.0/tests/warnings/leading_decimal_point.js +7 -0
- data/vendor/jsl-0.3.0/tests/warnings/legacy_cc_not_understood.js +9 -0
- data/vendor/jsl-0.3.0/tests/warnings/meaningless_block.js +12 -0
- data/vendor/jsl-0.3.0/tests/warnings/misplaced_regex.js +20 -0
- data/vendor/jsl-0.3.0/tests/warnings/missing_break.js +87 -0
- data/vendor/jsl-0.3.0/tests/warnings/missing_break_for_last_case.js +19 -0
- data/vendor/jsl-0.3.0/tests/warnings/missing_default_case.js +51 -0
- data/vendor/jsl-0.3.0/tests/warnings/missing_option_explicit.js +5 -0
- data/vendor/jsl-0.3.0/tests/warnings/missing_semicolon.js +19 -0
- data/vendor/jsl-0.3.0/tests/warnings/multiple_plus_minus.js +10 -0
- data/vendor/jsl-0.3.0/tests/warnings/nested_comment.js +6 -0
- data/vendor/jsl-0.3.0/tests/warnings/no_return_value.js +25 -0
- data/vendor/jsl-0.3.0/tests/warnings/octal_number.js +5 -0
- data/vendor/jsl-0.3.0/tests/warnings/parseint_missing_radix.js +15 -0
- data/vendor/jsl-0.3.0/tests/warnings/partial_option_explicit.js +5 -0
- data/vendor/jsl-0.3.0/tests/warnings/redeclared_var.js +10 -0
- data/vendor/jsl-0.3.0/tests/warnings/spidermonkey/bad_backref.js +5 -0
- data/vendor/jsl-0.3.0/tests/warnings/spidermonkey/deprecated_usage.js +11 -0
- data/vendor/jsl-0.3.0/tests/warnings/spidermonkey/invalid_backref.js +5 -0
- data/vendor/jsl-0.3.0/tests/warnings/spidermonkey/trailing_comma.js +5 -0
- data/vendor/jsl-0.3.0/tests/warnings/trailing_comma_in_array.js +8 -0
- data/vendor/jsl-0.3.0/tests/warnings/trailing_decimal_point.js +7 -0
- data/vendor/jsl-0.3.0/tests/warnings/unreachable_code.js +29 -0
- data/vendor/jsl-0.3.0/tests/warnings/use_of_label.js +19 -0
- data/vendor/jsl-0.3.0/tests/warnings/useless_assign.js +20 -0
- data/vendor/jsl-0.3.0/tests/warnings/useless_comparison.js +55 -0
- data/vendor/jsl-0.3.0/tests/warnings/useless_void.js +6 -0
- data/vendor/jsl-0.3.0/tests/warnings/var_hides_arg.js +4 -0
- data/vendor/jsl-0.3.0/tests/warnings/with_statement.js +7 -0
- data/vendor/yuicompressor-2.4.2.jar +0 -0
- 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(¤tCX)))
|
|
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
|
+
}
|