1
0
mirror of https://github.com/rkd77/elinks.git synced 2024-11-04 08:17:17 -05:00
Commit Graph

495 Commits

Author SHA1 Message Date
Witold Filipczyk
92de5f3c19 [js] Changes in html are visible in more places 2021-06-06 15:31:06 +02:00
Witold Filipczyk
4e651e5391 [js] Improved setter for innerHTML 2021-06-06 15:23:21 +02:00
Witold Filipczyk
871d47bf41 [js] Test commit for "rerendering" of page after modifcation by scripts 2021-06-05 21:58:29 +02:00
Witold Filipczyk
80c1c7a278 [js] element.insertBefore 2021-06-04 19:41:06 +02:00
Witold Filipczyk
040ab5a189 [js] title setter 2021-06-03 14:05:00 +02:00
Witold Filipczyk
4270cb3125 [js] lang setter 2021-06-03 14:01:54 +02:00
Witold Filipczyk
70cd635ef3 [js] id setter 2021-06-03 13:57:33 +02:00
Witold Filipczyk
fc60848d64 [js] dir setter 2021-06-03 13:51:59 +02:00
Witold Filipczyk
7a65feb323 [js] className setter 2021-06-03 13:44:57 +02:00
Witold Filipczyk
5de45a9e96 [js] innerHTML (setter) 2021-06-03 11:59:15 +02:00
Witold Filipczyk
07fccc9f87 [js] element.setAttribute 2021-06-02 18:26:05 +02:00
Witold Filipczyk
4b5d115039 [js] element.appendChild 2021-06-01 21:00:21 +02:00
Witold Filipczyk
3a328cc48c [js] document.createTextNode 2021-06-01 19:55:23 +02:00
Witold Filipczyk
33a694cdb7 [js] document.createComment 2021-06-01 19:51:53 +02:00
Witold Filipczyk
886f1ba978 [js] document.createElement 2021-06-01 19:23:45 +02:00
Witold Filipczyk
f625d74673 [js] element.remove 2021-06-01 17:24:34 +02:00
Witold Filipczyk
fb90f2a832 [js] screen.height (term->height * 16) 2021-05-31 14:27:40 +02:00
Witold Filipczyk
54a7bd7339 [js] screen.width 2021-05-30 12:58:19 +02:00
Witold Filipczyk
719f484422 [js] screen.availWidth (box.width * 8) 2021-05-29 13:42:34 +02:00
Witold Filipczyk
10d731f10c [js] screen.availHeight (here it is 16 * box.height) 2021-05-28 17:51:42 +02:00
Witold Filipczyk
8b2ef1ef45 [js] publicId 2021-05-27 16:16:10 +02:00
Witold Filipczyk
d6df9584c9 Merge branch 'master' into getlementbyid 2021-05-26 08:29:47 +02:00
Witold Filipczyk
207534f3e0 [js] doctype.systemId 2021-05-26 08:22:33 +02:00
Witold Filipczyk
35404925e0 [js] document.doctype.name 2021-05-25 18:12:04 +02:00
Witold Filipczyk
97e1e86e66 [js] document.URL (written uppercase) 2021-05-25 16:55:04 +02:00
Witold Filipczyk
9a0b89e189 [js] document.documentURI 2021-05-25 15:58:15 +02:00
Witold Filipczyk
ed8bff2b82 [js] document.baseURI 2021-05-25 12:22:52 +02:00
Witold Filipczyk
c5b2706354 [js] document.domain 2021-05-24 21:55:57 +02:00
Witold Filipczyk
597101276c [js] document.characterSet 2021-05-23 20:49:21 +02:00
Witold Filipczyk
fc076c3297 [js] test commit. No idea yet how to transform forms into elements 2021-05-23 18:34:33 +02:00
Witold Filipczyk
e74fd3aa30 [js] try to be more like Firefox 2021-05-22 16:38:43 +02:00
Witold Filipczyk
3e7047ee47 [js] Rewrite a bit form get_property 2021-05-21 21:42:14 +02:00
Witold Filipczyk
28127b29b4 [js] Try to rewrite htmlCollection get_property. 2021-05-21 20:46:27 +02:00
Witold Filipczyk
c5a1296200 [js] element.isEqualNode (only for Elements) 2021-05-20 16:44:57 +02:00
Witold Filipczyk
1af9c9fc31 [js] element.ownerDocument 2021-05-19 19:05:03 +02:00
Witold Filipczyk
835d42e892 [js] element.nodeValue 2021-05-18 18:36:01 +02:00
Witold Filipczyk
54f902e72a [js] element.nodeName 2021-05-18 18:13:01 +02:00
Witold Filipczyk
e230acf2ab [js] element.nodeType 2021-05-18 16:21:02 +02:00
Witold Filipczyk
3e8186922d [js] element.isSameNode 2021-05-17 17:25:50 +02:00
Witold Filipczyk
0a395d7dbf [js] hasChildNodes 2021-05-16 19:26:24 +02:00
Witold Filipczyk
22acacb47b [js] element.parentElement 2021-05-16 15:56:02 +02:00
Witold Filipczyk
47c694d7d1 [js] element.parentNode 2021-05-16 15:49:38 +02:00
Witold Filipczyk
ed449aee6e [js] element.previousElementSibling 2021-05-16 15:42:01 +02:00
Witold Filipczyk
e4eaca040d [js] element.previousSibling 2021-05-16 15:38:15 +02:00
Witold Filipczyk
6baba00aab [js] element.nextElementSibling 2021-05-16 15:33:19 +02:00
Witold Filipczyk
30c5bdfa1b [js] element.nextSibling 2021-05-16 15:12:13 +02:00
Witold Filipczyk
760dff4419 [js] element.contains 2021-05-15 20:50:03 +02:00
Witold Filipczyk
09988b7fcd [js] element.getAttributeNode 2021-05-14 21:49:56 +02:00
Witold Filipczyk
5c5621aadd [js] document.attributes 2021-05-13 17:41:18 +02:00
Witold Filipczyk
c71b0f2ee1 [js] document.scripts 2021-05-12 20:05:15 +02:00
Witold Filipczyk
35d7847808 [js] document.images 2021-05-12 20:01:08 +02:00
Witold Filipczyk
22cd7a0052 [js] document.links 2021-05-12 17:37:01 +02:00
Witold Filipczyk
ed3a11b288 [js] document.head 2021-05-12 17:28:03 +02:00
Witold Filipczyk
51fe9d1968 [js] document.documentElement 2021-05-12 17:22:34 +02:00
Witold Filipczyk
937b77cfdf [js] document.body 2021-05-12 17:16:10 +02:00
Witold Filipczyk
8e97e8b048 [js] document.anchors 2021-05-12 17:08:05 +02:00
Witold Filipczyk
799f256157 [js] getElementsByClassName 2021-05-12 16:30:36 +02:00
Witold Filipczyk
d22e77a796 [js] getElementsByTagName
TODO: sanitize input for this function
2021-05-12 16:23:46 +02:00
Witold Filipczyk
3e30d82fb4 [js] jsGetElementsByName 2021-05-11 19:02:54 +02:00
Witold Filipczyk
a8e27fc730 [js] lastElementChild 2021-05-10 19:14:39 +02:00
Witold Filipczyk
39c0e7679d [js] firstElementChild 2021-05-10 19:08:36 +02:00
Witold Filipczyk
6798ffc8b0 [js] lastChild 2021-05-09 21:53:14 +02:00
Witold Filipczyk
8c7517189d [js] firstChild 2021-05-09 21:38:23 +02:00
Witold Filipczyk
e020f83d34 [js] innerHTML and outerHTML getters (libxml++) 2021-05-09 21:21:24 +02:00
Witold Filipczyk
d891cc503a [js] textContent 2021-05-09 20:50:36 +02:00
Witold Filipczyk
501a649068 [js] hasAttribute, hasAttributes 2021-05-09 20:26:08 +02:00
Witold Filipczyk
1a8578aecb [js] tagName ++ 2021-05-09 20:18:09 +02:00
Witold Filipczyk
7c26da3cc3 [js] lang, title 2021-05-09 20:12:46 +02:00
Witold Filipczyk
05620e7d08 [js] childElementCount, className, dir converted to libxml++ 2021-05-09 20:09:05 +02:00
Witold Filipczyk
d71ef9e57c [js] switch to libxml++ . Begining. 2021-05-09 19:56:00 +02:00
Witold Filipczyk
471c9282ee [js] childElementCount 2021-05-08 21:51:34 +02:00
Witold Filipczyk
d9073ea9b1 [js] hasAttributes 2021-05-08 19:55:58 +02:00
Witold Filipczyk
0bdbb6aca6 [js] element.hasAttribute(...) 2021-05-07 19:03:53 +02:00
Witold Filipczyk
004a778382 [ecmascript] Read also ~/.elinks/disallowed.txt
Lines in disallowed.txt may contain prefixes of bad sites.
If current url matches any of line with disallowed prefixes,
ecmascript is not executed.
If disallowed.txt is empty or not matched, then
if allow.txt is not empty, and some prefix from this file
matches current url, ecmascript is allowed.
If allow.txt is empty, ecmascript is allowed too,
otherwise ecmascript is disabled on given page.
2021-05-07 11:29:33 +02:00
Witold Filipczyk
745387e386 [js] location.hash getter 2021-05-06 16:06:37 +02:00
Witold Filipczyk
955a259f5d [js] location.host getter 2021-05-06 15:53:20 +02:00
Witold Filipczyk
4c4ea4bdd9 [js] location.hostname getter 2021-05-06 15:46:39 +02:00
Witold Filipczyk
7c618d3a6f [js] location.origin 2021-05-06 15:40:17 +02:00
Witold Filipczyk
d5f63e6fca [js] location.pathname getter 2021-05-06 15:31:31 +02:00
Witold Filipczyk
9de0a934ff [js] location.search getter 2021-05-06 15:17:46 +02:00
Witold Filipczyk
07dba347ac [js] location.port getter 2021-05-06 15:06:35 +02:00
Witold Filipczyk
b07d39364c [js] textContent (read) 2021-05-05 15:21:37 +02:00
Witold Filipczyk
9b738edb18 [js] location.protocol (read) 2021-05-04 20:55:06 +02:00
Witold Filipczyk
1e8f86628d [js] className (read) 2021-05-04 18:34:10 +02:00
Witold Filipczyk
b0ee34bdd5 [js] dir (read) 2021-05-04 16:24:56 +02:00
Witold Filipczyk
5a78da08f5 [js] lang (read) 2021-05-04 16:12:59 +02:00
Witold Filipczyk
63b07c01d8 [js] tagName 2021-05-04 16:06:50 +02:00
Witold Filipczyk
adadc03821 [js] title (read) 2021-05-04 15:42:52 +02:00
Witold Filipczyk
cf5841b8de [js] outerHTML (read) 2021-05-04 15:32:29 +02:00
Witold Filipczyk
3bd33b9dd3 [js] innerHTML read property 2021-05-03 18:25:31 +02:00
Witold Filipczyk
63d892838c [getElementById] small success. see test/ecmascript/element.html
Now memory leaks, etc. are not taken into account.
For the beginning I will implement read properties.
2021-05-02 17:27:35 +02:00
Witold Filipczyk
ff78bd6a86 [js] getElementById stub 2021-05-01 20:39:13 +02:00
Witold Filipczyk
d4157366b0 [document] add_string_to_string 2021-02-26 18:43:19 +01:00
Witold Filipczyk
5d394926bd [document] done_string 2021-02-26 16:22:18 +01:00
Witold Filipczyk
62245356c8 [document] Another unused variable 2021-02-26 16:16:22 +01:00
Witold Filipczyk
34ccc2c2fd [document] unused variable 2021-02-26 16:14:43 +01:00
nobody@earth.com
550baf1baf [smjs document replace] struct string init and done 2021-02-25 21:58:20 +01:00
nobody@earth.com
99ed5e56f5 [smjs document replace] jshandle_value_to_char_string to void 2021-02-25 21:38:42 +01:00
nobody@earth.com
31ac8dd5d7 [smjs document replace] rewritten to struct string 2021-02-25 13:40:41 +01:00
nobody@earth.com
f953744189 [smjs document replace] fixed property location, replace and writeln functions, tests 2021-02-24 11:23:34 +01:00
Witold Filipczyk
04b9056f98 [js] Compilation fixes 2021-02-24 09:56:06 +01:00
nobody@earth.com
de3f137398 [smjs local storage] limit 1 on key select 2021-02-23 23:00:53 +01:00
nobody@earth.com
60211fdd41 [smjs local storage] changes from comments PR #97 2021-02-23 21:32:00 +01:00
nobody@earth.com
a19b95f20c [smjs local storage] spider monkey local storage 2021-02-22 23:27:19 +01:00
nobody@earth.com
7148c15150 [smjs] fixed spidermonkey error reporting for mozjs52 2021-02-22 17:26:45 +01:00
Witold Filipczyk
7f1d718993 [console.log] Added boolean option ecmascript.enable_console_log. Disabled by default. 2021-02-22 16:05:55 +01:00
Witold Filipczyk
bc7a1ae6ad [console.log] Global variable to store console_log_filename 2021-02-22 15:55:12 +01:00
Witold Filipczyk
4db2b42799 [meson] console.c 2021-02-22 15:39:03 +01:00
nobody@earth.com
c3e0e0f50d [smjs] Console log Cleanup 2021-02-22 01:52:56 +01:00
nobody@earth.com
985a92c079 [smjs] usage of utils/string functions 2021-02-22 01:43:31 +01:00
nobody@earth.com
3cf1559bc6 [smjs] removed redundant defs added fopen check 2021-02-22 01:12:16 +01:00
nobody@earth.com
c6a3d04e21 SpiderMonkey Update v0.1.a - Console Log 2021-02-21 22:33:29 +01:00
Witold Filipczyk
0fea79cc8f [cflags] Removed -Wno-pointer-sign
Likely some new bugs were introduced by this change.
The long term goal is clean compilation by g++.
2021-01-02 16:20:27 +01:00
Witold Filipczyk
867cc8a9c6 [ecmascript] move visited allowed url to the begining of list. 2020-12-11 18:51:53 +01:00
Witold Filipczyk
de793bbf73 [ecmascript] exception for empty list. Allow all urls. 2020-12-09 16:13:20 +01:00
Witold Filipczyk
471fe54053 [ecmascript] Explicit init and done function for ecmascript module. 2020-12-08 20:54:14 +01:00
Witold Filipczyk
f617256ecc [ecmascript] Allow ecmascript scripts only for given urls prefixes.
In ~/.elinks/allowed_ecmascript_url_prefixes.txt you must enter list
of urls. For example:
file://
https://buildlogs.pld-linux.org/
http://example

If url of document starts with one of given prefixes, then given url is
allowed to execute ecmascript. Start from most often used first.
2020-12-07 22:45:13 +01:00
Witold Filipczyk
d4ccb07cf6 [spidermonkey] Delete ac2 (AutoCompartment) 2020-11-27 17:21:11 +01:00
Witold Filipczyk
3e3721582e [ecmascript] Guard for builds without mozjs. Refs #81 2020-11-23 20:11:47 +01:00
Witold Filipczyk
37ae7a0db8 [spidermonkey] ReportError - removed code, which did not work well 2020-11-23 18:06:17 +01:00
Witold Filipczyk
a92df85c11 [spidermonkey] Changes in setTimeout.
Spidermonkey is "hardcoded" in ecmascript, but ecmascript script engine
is rarely being changed.
2020-11-22 16:42:23 +01:00
Witold Filipczyk
085a93d544 [spidermonkey] JS_PS_END 2020-11-21 17:54:47 +01:00
Witold Filipczyk
477e56eb43 [smjs] Maybe it is not correct, but spidermonkey and smjs work together. 2020-11-17 18:46:27 +01:00
Witold Filipczyk
873797935c [spidermonkey] Some code related to compartments. Progress. 2020-11-16 22:00:48 +01:00
Witold Filipczyk
b0ced9308b [spidermonkey] Some random changes. 2020-11-15 17:55:58 +01:00
Witold Filipczyk
8ad7d68b28 [js] Small progress.
It segfaults less often, but still, especially on non utf-8 pages.
And sometimes it did not work.
2020-10-28 22:32:20 +01:00
Witold Filipczyk
d1ecd45828 [mozjs52] It compiles, but often segfaults. No idea yet how to fix it. 2020-10-27 14:53:24 +01:00
Witold Filipczyk
a5b68a25a1 [mozjs45] Code is unstable, but at least compiles. 2020-10-23 22:34:58 +02:00
Witold Filipczyk
01c511f52d [mozjs38] ELinks is compilable, was not heavily tested. 2020-10-16 19:54:02 +02:00
Witold Filipczyk
dd704b900a [mozjs31] SpiderMonkey updated to mozjs31. TODO: smjs scripting. 2020-10-11 15:42:59 +02:00
Witold Filipczyk
1f57e72212 [mozjs24] Allow build elinks with g++
SpiderMonkey was updated to mozjs24. If you want to build elinks
with ecmascript support, you must compile using g++ with -fpermissive .
There is a lot of warnings.
There are some memleaks in ecmascript code, especially related to JSAutoCompartment.
I don't know yet, where and how to free it.

Debian does not support mozjs24, so I'm going to gradually update SpiderMonkey version.
2020-10-05 20:14:55 +02:00
Witold Filipczyk
5f87bdbcb2 [meson] meson build scripts.
Not finished yet, but I added to motivate myself and others.
The goal is to get a few seconds faster builds.

autotools still will be available.
2020-09-05 22:06:01 +02:00
Witold Filipczyk
ca3926bb9d [ecmascript] No warning 2019-11-15 16:40:29 +01:00
Witold Filipczyk
3d96b0d7d7 Revert "Compile with C++."
This reverts commit 4f4df33638.
2019-04-21 12:27:40 +02:00
Witold Filipczyk
8d7112c27d Revert "Fix some issues with js."
This reverts commit 6322d2936a.
2019-04-21 12:26:27 +02:00
Witold Filipczyk
6322d2936a Fix some issues with js. 2019-02-17 23:33:12 +01:00
Witold Filipczyk
4f4df33638 Compile with C++.
Weak points:
- alignof
- js problems

Todo:
- make js work with C++ and mozjs-17
- then mozjs-24
- then mozjs-52
- then mozjs-60
- decrease number of warnings
2019-02-17 20:46:16 +01:00
Witold Filipczyk
25dd2ecae9 Changed ecmascript engine to mozjs-17.0.
Was not tested, especially smjs is likely buggy.
2019-02-10 21:00:37 +01:00
Witold Filipczyk
6dfdd36398 form_control -> el_form_control 2018-09-09 19:18:53 +02:00
Witold Filipczyk
9eaf03cf2a Added HttpOnly cookies 2018-08-25 15:28:29 +02:00
أحمد المحمودي (Ahmed El-Mahmoudy)
887f85f6a9 Add signal.h to heartbeat,c includes
Build failed because hearbeat.c uses SIGVTALRM
2017-12-02 02:47:02 +01:00
Witold Filipczyk
da15322705 Cast to (const char *) in strrchr calls 2016-04-20 21:03:27 +02:00
Kalle Olavi Niemitalo
268249c50b SMJS: move comments to match spidermonkeyFunctionSpec[]
Each C function that can be called as a method of an ECMAScript object
is typically listed in a spidermonkeyFunctionSpec array and has a
comment that shows the name of the array and the name of the method.
For example, elinks_alert has a comment /* @elinks_funcs{"alert"} */
because elinks_funcs[] contains an element { "alert", elinks_alert, 1 }.

When some of those functions were split into outer and inner functions
for SpiderMonkey 1.8.5 compatibility, the comments were attached to
the inner functions, which contain the bulk of the code.  Move the
comments to the outer functions, to which the array elements point.
2012-11-26 00:15:09 +02:00
Kalle Olavi Niemitalo
465923e386 ECMAScript: Initialize jsval variables for return values
forms_item declared a variable (jsval val), passed its address to
forms_item2, and set it as the return value.  However, forms_item2
could return without initializing the jsval, especially if given too
many arguments.  Fix by initializing to JSVAL_VOID right away.
I'm not sure that is the correct value to return in such cases,
but at least it's better than risking a crash.

Likewise in form_elements_item and form_elements_namedItem.
2012-11-19 00:39:51 +02:00
Kalle Olavi Niemitalo
8b00e1ef70 bug 764: Initialize the right member of union option_value
INIT_OPTION used to initialize union option_value at compile time by
casting the default value to LIST_OF(struct option) *, which is the
type of the first member.  On sparc64 and other big-endian systems
where sizeof(int) < sizeof(struct list_head *), this tended to leave
option->value.number as zero, thus messing up OPT_INT and OPT_BOOL
at least.  OPT_LONG however tended to work right.

This would be easy to fix with C99 designated initializers,
but doc/hacking.txt says ELinks must be kept C89 compatible.
Another solution would be to make register_options() read the
value from option->value.tree (the first member), cast it back
to the right type, and write it to the appropriate member;
but that would still require somewhat dubious conversions
between integers, data pointers, and function pointers.

So here's a rather more invasive solution.  Add struct option_init,
which is somewhat similar to struct option but has non-overlapping
members for different types of values, to ensure nothing is lost
in compile-time conversions.  Move unsigned char *path from struct
option_info to struct option_init, and replace struct option_info
with a union that contains struct option_init and struct option.
Now, this union can be initialized with no portability problems,
and register_options() then moves the values from struct option_init
to their final places in struct option.

In my x86 ELinks build with plenty of options configured in, this
change bloated the text section by 340 bytes but compressed the data
section by 2784 bytes, presumably because union option_info is a
pointer smaller than struct option_info was.
(cherry picked from elinks-0.12 commit e5f6592ee2)

Conflicts:
	src/protocol/fsp/fsp.c: All options had been removed in 0.13.GIT.
	src/protocol/smb/smb2.c: Ditto.
2012-11-03 22:16:32 +02:00
witekfl
12803e4075 Check if hb is NULL. 2012-03-04 18:20:48 +01:00
Miciah Dashiel Butler Masters
cdad9adf19 SMJS: add session object
Add session_class, which defines a JSObject wrapper for struct session.

Add location_array_class, which defines a JSObject wrapper for struct
ses_history.  The "history" member of struct session is a struct
ses_history, which is a linked list of struct location.

Add a pointer from struct session to the session_class object and the
location_array object.

Add smjs_get_session_object to return a session_class JSObject wrapper for
a given struct session.

Add smjs_get_session_location_array_object to return a location_array_class
JSObject wrapper for a given struct session.

Add "session" property to the "elinks" object, which uses
smjs_get_session_object to get a JSObject wrapper for smjs_ses.

Add smjs_location_array_get_property, which allows indexing
a location_array object using a positive number for history forward or
a negative number for history backward.

Add session_props, session_get_property, session_set_property,
session_funcs, smjs_session_goto_url (which implements the "goto" method),
and smjs_init_session_interface for session_class.

Add session_construct, which creates a new tab and returns the JSObject
session_class wrapper.

Add session_finalize and smjs_location_array_finalize, which clear the
pointers between struct session and the JSObject wrappers in question.

Add smjs_detach_session_object, which clears the pointers between a given
struct session and the corresponding JSObject wrappers.

In destroy_session, call smjs_detach_session_object.

Add jsval_to_object helper in ecmascript/spidermonkey/util.h;
jsval_to_object is used in smjs_session_goto_url.

Modify delayed_goto_uri_frame to allow the target to be NULL.
smjs_session_goto_url needs this modification.
2011-11-14 04:34:51 +00:00
witekfl
81c9f462c2 Deleted ecmascript code using SEE.
AFAIK SEE is no longer developped.
I see no reason to use SEE in ELinks.
2011-05-11 11:31:15 +02:00
Kalle Olavi Niemitalo
8a89a627bc SMJS: Define XP_UNIX and others as 1, not as empty
This change is intended to prevent a macro redefinition warning
if CFLAGS already contains -DXP_UNIX from pkg-config --cflags mozilla-js.
2011-05-01 23:41:44 +03:00
witekfl
218a2250a7 SpiderMonkey: fix issue with javascript:history.back()
In history.back() and others set rval to NULL.
Do not convert NULL to string in spidermoney_eval_stringback.
2011-04-25 21:04:03 +02:00
witekfl
2844f8b715 JS_VERSION at least 185 is required for ECMASCript (xulrunner-2.0 or later)
The code wasn't tested. It compiles
2011-04-19 22:41:05 +02:00
Miciah Dashiel Butler Masters
6cb3d30d09 Add missing include and declarations
Add an include for config/options.h to src/ecmascript/spidermonkey.c
and two missing declarations (struct form_view and struct form_state)
to src/ecmascript/spidermonkey.h.
2010-08-07 20:44:02 +00:00
Miciah Dashiel Butler Masters
f31cf6f9fe Heartbeat code using JS_TriggerOperationCallback
Implement new heartbeat code to catch runaway execution of document
ECMAScript code.  The old code uses JS_SetBranchCallback which is
deprecated in new versions of SpiderMonkey.  The new code uses setitimer(2)
and the JS_SetOperationCallback and JS_TriggerOperationCallback interfaces,
introduced in SpiderMonkey 1.8.1.  Compatibility with both the old
JS_SetBranchCallback and the new interfaces is maintained.
2009-11-26 00:57:21 +00:00
Kalle Olavi Niemitalo
7bb51e7139 Merge branch 'elinks-0.12' into elinks-0.13
Conflicts:
	NEWS
	configure.in
	doc/man/man1/elinks.1.in (regenerated)
	doc/man/man5/elinks.conf.5 (regenerated)
	doc/man/man5/elinkskeys.5 (regenerated)
	po/af.po (kept 0.13.GIT)
	po/be.po (kept 0.13.GIT)
	po/bg.po (kept 0.13.GIT)
	po/ca.po (kept 0.13.GIT)
	po/cs.po (kept 0.13.GIT)
	po/da.po (kept 0.13.GIT)
	po/de.po (kept 0.13.GIT)
	po/el.po (kept 0.13.GIT)
	po/es.po (kept 0.13.GIT)
	po/et.po (kept 0.13.GIT)
	po/fi.po (kept 0.13.GIT)
	po/fr.po (kept 0.13.GIT)
	po/gl.po (kept 0.13.GIT)
	po/hr.po (kept 0.13.GIT)
	po/hu.po (kept 0.13.GIT)
	po/id.po (kept 0.13.GIT)
	po/is.po (kept 0.13.GIT)
	po/it.po (kept 0.13.GIT)
	po/lt.po (kept 0.13.GIT)
	po/nb.po (kept 0.13.GIT)
	po/nl.po (kept 0.13.GIT)
	po/pl.po (kept 0.13.GIT)
	po/pt.po (kept 0.13.GIT)
	po/pt_BR.po (kept 0.13.GIT)
	po/ro.po (kept 0.13.GIT)
	po/ru.po (kept 0.13.GIT)
	po/sk.po (kept 0.13.GIT)
	po/sr.po (kept 0.13.GIT)
	po/sv.po (kept 0.13.GIT)
	po/tr.po (kept 0.13.GIT)
	po/uk.po (kept 0.13.GIT)
	src/ecmascript/ecmascript.c
2009-07-11 16:47:33 +03:00
Kalle Olavi Niemitalo
11c0cb859b Debian bug 534835: Check *_get_interpreter return values
This should fix a crash in:

    at /home/Kalle/src/elinks-0.12/src/ecmascript/spidermonkey.c:251
    at /home/Kalle/src/elinks-0.12/src/ecmascript/ecmascript.c:104
    at /home/Kalle/src/elinks-0.12/src/viewer/text/vs.c:64

It seems that spidermonkey_get_interpreter failed and returned NULL to
ecmascript_get_interpreter, which did not check the return value and
behaved as if the ECMAScript interpreter had been properly initialized.
This caused destroy_vs to call ecmascript_put_interpreter, but
backend_data which should have been a JSContext * was NULL, causing
a crash in SpiderMonkey.

An alternative fix might be to make spidermonkey_put_interpreter skip
the JS_DestroyContext call if ctx is NULL.  However, I think it is
better to make sure ecmascript_get_interpreter returns NULL if
spidermonkey_get_interpreter fails, so that vs->ecmascript is left
NULL and there's no chance that some other code might try to
dereference the (JSContext *) NULL.
2009-06-28 00:18:05 +03:00
Kalle Olavi Niemitalo
10c07f9933 Debian bug 534835: Check some SpiderMonkey return values
Perhaps because of bug 981, if one opened hundreds of pages with
elinks --remote openURL(...), then ELinks 0.11.4 could crash with a
SIGSEGV in JS_InitClass called from spidermonkey_get_interpreter.
SpiderMonkey ran out of memory and began returning NULL and JS_FALSE
but ELinks didn't notice them and pressed on.  Add some checks to
avoid the crash, although the underlying out-of-memory error remains.
2009-06-27 19:48:56 +03:00
Kalle Olavi Niemitalo
1bb71f3732 Merge branch 'elinks-0.12' into elinks-0.13
Conflicts:
	src/config/conf.c
	src/network/ssl/ssl.c
2009-03-12 08:46:02 +02:00
Kalle Olavi Niemitalo
5a43c55c9e Rewrap lines in option documentation.
Documentation strings of most options used to contain a "\n" at the
end of each source line.  When the option manager displayed these
strings, it treated each "\n" as a hard newline.  On 80x24 terminals
however, the option description window has only 60 columes available
for the text (with the default setup.h), and the hard newlines were
further apart, so the option manager wrapped the text a second time,
resulting in rather ugly output where long lones are interleaved with
short ones.  This could also cause the text to take up too much
vertical space and not fit in the window.

Replace most of those hard newlines with spaces so that the option
manager (or perhaps BFU) will take care of the wrapping.  At the same
time, rewrap the strings in source code so that the source lines are
at most 79 columns wide.

In some options though, there is a list of possible values and their
meanings.  In those lists, if the description of one value does not
fit in one line, then continuation lines should be indented.  The
option manager and BFU are not currently able to do that.  So, keep
the hard newlines in those lists, but rewrap them to 60 columns so
that they are less likely to require further wrapping at runtime.
2009-03-08 15:18:10 +02:00
Kalle Olavi Niemitalo
3581e2848e Merge branch 'elinks-0.12' into elinks-0.13
Conflicts:
	doc/installation.txt
	src/protocol/http/http.c
2009-02-28 18:22:54 +02:00
Kalle Olavi Niemitalo
1487d206db Bug 1069: Revert "1031: JS_SetErrorReporter only once per JSRuntime."
This reverts commit b94657869b.
I don't know where I got the idea that JS_SetErrorReporter affects the
entire JSRuntime, rather than only the provided JSContext.  The people
on #jsapi say it has never worked that way.
2009-02-26 22:56:33 +02:00
Kalle Olavi Niemitalo
5c2fada371 Merge branch 'elinks-0.12' into elinks-0.13
Conflicts:
	src/session/download.c
2008-11-01 22:39:17 +02:00
M. Vefa Bicakci
20a7a6c460 Patch 3: Further fixes including strcasestr and convert_to_lowercase 2008-11-01 22:32:43 +02:00
M. Vefa Bicakci
96b3093519 Patch 2: Modifications to the remaining parts of ELinks
[Forward ported to 0.12 from bug 1004 attachment 499.  --KON]
2008-11-01 22:20:25 +02:00
Kalle Olavi Niemitalo
84e19d0e4e bug 1054: Don't abort downloads when closing a terminal.
Except if they have external handlers.

When ELinks receives an event from a terminal, move that terminal to
the beginning of the global "terminals" list, so that the terminals
are always sorted according to the time of the most recent use.  Note,
this affects the numbering of bookmark folders in session snapshots.

Add get_default_terminal(), which returns the most recently used
terminal that is still open.  Use that in various places that
previously used terminals.prev or terminals.next.  Four functions
fetch the size of the terminal for User-Agent headers, and
get_default_terminal() is not really right, but neither was the
original code; add TODO comments in those functions.

When the user chooses "Background and Notify", associate the download
with the terminal where the dialog box is.  So any later messages will
then appear in that terminal, if it is still open.  However, don't
change the terminal if the download has an external handler.

When a download gets some data, don't immediately check the associated
terminal.  Instead, wait for the download to end.  Then, if the
terminal of the download has been closed, use get_default_terminal()
instead.  If there is no default terminal either, just skip any
message boxes.
2008-10-15 23:29:25 +03:00
Kalle Olavi Niemitalo
b40736cafe Merge branch 'elinks-0.12' into elinks-0.13
Conflicts:

	NEWS (merged)
	configure.in (merged)
	doc/man/man1/elinks.1.in (regenerated)
	doc/man/man5/elinks.conf.5 (regenerated)
	doc/man/man5/elinkskeys.5 (regenerated)
	po/fr.po (kept 0.13.GIT version)
	po/pl.po (kept 0.13.GIT version)
2008-09-27 16:28:28 +03:00
Kalle Olavi Niemitalo
b94657869b 1031: JS_SetErrorReporter only once per JSRuntime.
Previously, spidermonkey_get_interpreter() and init_smjs() each called
JS_SetErrorReporter on the JSContexts they created.  However,
JS_SetErrorReporter actually sets the error reporter of the JSRuntime
associated with the JSContext, and all of our JSContexts use the same
JSRuntime nowadays, so only the error_reporter() of
src/ecmascript/spidermonkey.c was left installed.  Because this
error_reporter() asserts that JS_GetContextPrivate(ctx) returns a
non-NULL pointer, and init_smjs() does not set a private pointer for
smjs_ctx, any error in smjs_ctx could cause an assertion failure, at
least in principle.

Fix this by making spidermonkey_runtime_addref() install a shared
error_reporter() when it creates the JSRuntime and the first JSContext.
The shared error_reporter() then checks the JSContext and calls the
appropriate function.

The two error reporters are quite similar with each other.  In the
future, we could move the common code into shared functions.  I'm not
doing that yet though, because fixing the bug doesn't require it.
2008-09-07 20:17:25 +03:00
Kalle Olavi Niemitalo
0ee1d05d81 1031: Return 0 from spidermonkey_runtime_addref if JS_NewContext fails.
Previously, this would have caused an assertion failure.
2008-09-07 18:04:18 +03:00
Miciah Dashiel Butler Masters
f62d2d1ae4 Add the number of interpreters to Resources box
Introduce static int interpreter_count in src/ecmascript/ecmascript.c.

Maintain interpreter_count in ecmascript_get_interpreter and
ecmascript_put_interpreter.

Introduce ecmascript_get_interpreter_count.

Display the number of ECMAScript interpreters that have been allocated
for documents in the Resources dialog box.
2008-09-06 20:18:10 +00:00
Kalle Olavi Niemitalo
a73fe73cd2 Merge branch 'elinks-0.12' into elinks-0.13
Conflicts:

	src/document/document.h
	src/encoding/encoding.c
	src/network/connection.c
	src/protocol/bittorrent/bittorrent.c
	src/protocol/bittorrent/bittorrent.h
	src/protocol/bittorrent/common.h
	src/protocol/bittorrent/connection.c
	src/protocol/bittorrent/dialogs.c
	src/protocol/bittorrent/tracker.c
	src/protocol/file/cgi.c
	src/protocol/http/http.c
2008-08-03 22:18:53 +03:00
Kalle Olavi Niemitalo
018af50f1d Rename cache_entry.id and related members.
cache_entry.id => cache_entry.cache_id
document.id => document.cache_id
ecmascript_interpreter.onload_snippets_owner => .onload_snippets_cache_id

This is a combination of:

commit 232c07aa7f
bug 1009: id variables renamed, added document_id to the document.

commit 6007043458bf8f14abfc18b9db60785bdc0279f6
Revert addition of document.document_id
2008-08-03 21:27:56 +03:00
Witold Filipczyk
7116daf43e 1038: Remove remembering last 8 URLs. It did not work.
Enable the rate limiting of opening new windows in SEE
to be consistent with SpiderMonkey.
Fixed a possible memleak (the frame variable).
2008-07-21 00:39:30 +03:00
Kalle Olavi Niemitalo
bbee237ff0 Merge branch 'elinks-0.12' into elinks-0.13 2008-07-20 14:47:40 +03:00
Kalle Olavi Niemitalo
85bfba4530 SEE: Do not check thisobj->objectclass in window functions.
init_js_window_object() copies the alert, open, and setTimeout methods
from the window object to the global object.  My fix for bug 846 on
2006-12-10 incorrectly made the corresponding C functions refuse to
work if they were not called as methods of the window object.
2008-07-20 09:26:52 +03:00
Kalle Olavi Niemitalo
ae8080b172 952, 954: Finalize form_view.ecmascript_obj for SEE 2008-07-19 14:58:11 +03:00
Kalle Olavi Niemitalo
c81e2051f8 952, 954: Finalize form_state.ecmascript_obj for SEE 2008-07-19 14:58:11 +03:00
Kalle Olavi Niemitalo
f4213ac350 952, 954: Finalize form_view.ecmascript_obj for SpiderMonkey 2008-07-19 14:58:07 +03:00
Kalle Olavi Niemitalo
2d49f6e9cd 952, 954: Finalize form_state.ecmascript_obj for SpiderMonkey
JSObject instances of input_class now again contain a private pointer
directly to struct form_state.  This pointer is cleared or updated
when appropriate.
2008-07-19 14:57:25 +03:00
Kalle Olavi Niemitalo
759fbb1142 952, 954: Add ecmascript_detach_form_view stub
Anything that frees struct form_view must now call the new function
ecmascript_detach_form_view.  This function should then clear out any
dangling pointers, but that has not yet been implemented.
2008-07-18 20:00:16 +03:00
Kalle Olavi Niemitalo
bbadb99dd1 952, 954: Add ecmascript_{detach,moved}_form_state stubs
Anything that frees or reallocates struct form_state must now call the
new functions ecmascript_detach_form_state or ecmascript_moved_form_state.
These functions should then clear out any dangling pointers, but that has
not yet been implemented.
2008-07-18 19:56:49 +03:00
Kalle Olavi Niemitalo
8f2f9e7265 952, 954: Add spidermonkey_empty_context 2008-07-18 19:24:29 +03:00
Kalle Olavi Niemitalo
5ad675e244 Remove my comment about prefixes used with SpiderMonkey 2008-07-18 19:01:48 +03:00
Witold Filipczyk
e9f3a4a9d3 1033: Fixed memory leak in open(...). 2008-07-16 16:38:50 +03:00
Kalle Olavi Niemitalo
031c1e6143 1031: Replace jsrt with spidermonkey_runtime
src/ecmascript/spidermonkey/ now uses a JSRuntime managed by
spidermonkey-shared.c.
2008-07-16 14:50:41 +03:00
Kalle Olavi Niemitalo
2024ea610b 1031: Replace smjs_rt with spidermonkey_runtime
src/scripting/smjs/ now uses a JSRuntime managed by spidermonkey-shared.c.
2008-07-16 14:28:22 +03:00
Kalle Olavi Niemitalo
32889bf908 1031: Add spidermonkey-shared.c used for both web and user scripts
Rename src/ecmascript/spidermonkey/util.c to
src/ecmascript/spidermonkey-shared.c and compile it also when
CONFIG_SCRIPTING_SMJS is enabled but CONFIG_ECMASCRIPT_SPIDERMONKEY is
not.  Then use its functions from src/scripting/smjs/ too.  Move the
corresponding declarations, as well as the inline functions needed by
src/scripting/smjs/, from src/ecmascript/spidermonkey/util.h to
src/ecmascript/spidermonkey-shared.h.

ELinks is nowadays using two JSRuntimes and SpiderMonkey has bugs that
make it crash in such use.  To work around them, ELinks will need to
be changed to use only one JSRuntime.  I am planning to define and
initialize that JSRuntime in src/ecmascript/spidermonkey-shared.c,
now that it's compiled whenever either of the modules is enabled.
2008-07-16 12:32:24 +03:00
Kalle Olavi Niemitalo
988cec481b Merge branch 'elinks-0.12' into elinks-0.13
Conflicts:

	NEWS
	configure.in

The following files also conflicted, but they had not been manually
edited in the elinks-0.12 branch after the previous merge, so I just
kept the 0.13.GIT versions:

	doc/man/man1/elinks.1.in
	doc/man/man5/elinks.conf.5
	doc/man/man5/elinkskeys.5
	po/fr.po
	po/pl.po
2008-07-11 22:28:45 +03:00
Kalle Olavi Niemitalo
ed17eb18df Bug 1016: Avoid JSFunctionSpec.
(cherry picked from commit 6bfaa7ca8d)

Conflicts:

	src/ecmascript/spidermonkey/form.c
	src/scripting/smjs/elinks_object.c
2008-06-17 00:25:59 +03:00
Witold Filipczyk
232c07aa7f bug 1009: id variables renamed, added document_id to the document.
cached->id => cached->cache_id
document->id => document->cache_id
onload_snippets_owner => onload_snippets_document_id
Added the distinct document->document_id.
Always reset ecmascript when a document changes for example a next chunk
of it is loaded.
2008-04-27 23:22:08 +03:00
Laurent MONIN
f0e66866f5 Trim trailing whitespaces. 2007-09-14 15:12:32 +02:00
Miciah Dashiel Butler Masters
91947860f2 Check session- and domain-specific settings for many options
Pass the session with some get_opt_* calls.  These are the low-hanging fruit.  Some places will be difficult because we don't have the session or for other reasons.
2007-08-30 21:11:51 +00:00
Miciah Dashiel Butler Masters
ea372bd0cd get_opt_*: Add ses parameter
Add a session parameter to get_opt_ and its wrappers in preparation for session-specific and domain-specific options.
2007-08-28 17:24:59 +00:00
Kalle Olavi Niemitalo
2437d35904 Merge commit 'pasky.or.cz/elinks-0.12' into elinks-0.13
There were conflicts in src/document/css/ because 0.12.GIT switched
to LIST_OF(struct css_selector) and 0.13.GIT switched to struct
css_selector_set.  Resolved by using LIST_OF(struct css_selector)
inside struct css_selector_set.
2007-07-28 03:22:29 +03:00
Kalle Olavi Niemitalo
d3d2bb26c5 New macro LIST_OF for better Doxygen support. 2007-07-26 22:45:51 +03:00
Kalle Olavi Niemitalo
eccc8c23f0 Merge with http://elinks.cz/elinks.git#elinks-0.12 2007-07-09 16:03:06 +03:00
Kalle Olavi Niemitalo
1ea44dcda5 Bug 957: if_assert_failed in ecmascript_put_interpreter.
[ Forward ported from commit 566039624f
  in ELinks 0.11.3.GIT.  --KON ]
2007-07-02 23:46:54 +03:00
Kalle Olavi Niemitalo
871a1befad Bug 755: Save the form_state index in a reserved slot, not as private data.
The previous code cast the integer (long actually) to void * and gave
that to JS_SetPrivate.  This did not work because JS_SetPrivate
expects pointers to be aligned and replaces the least significant bit
with a tag.  By using JS_SetReservedSlot instead, we get control of
the jsval conversions and can store the integer properly.
2007-06-24 18:46:22 +03:00
Witold Filipczyk
057c3be77c bug 957 fixed. 2007-06-21 22:33:19 +03:00
Kalle Olavi Niemitalo
58e3ebf2e7 Bug 957: Assert that the ECMAScript interpreter is not running.
Add ecmascript_interpreter.backend_nesting, increment it when
beginning to evaluate an expression, and decrement it when evaluation
finishes.  Then assert that it is zero in ecmascript_put_interpreter.
This detects bug 957 and similar ones before they corrupt memory.
2007-06-21 21:34:36 +03:00
Kalle Olavi Niemitalo
c7b3a8c423 SEE: Always use SEE_no_enumerator instead of NULL.
Although <see/object.h> of SEE 2.0.1131 has a comment saying that
SEE_objectclass.enumerator is optional and may be left NULL, SEE
crashes if one tries to enumerate the properties of an object created
from such a class.  Conveniently, it provides a suitable stub function.

http://www.adaptive-enterprises.com.au/bugs/show_bug.cgi?id=75
2007-06-10 15:10:32 +03:00
Kalle Olavi Niemitalo
c9b2fbbd46 SMJS: Fix error "forms.namedItem is not a function".
Commit 63752c854b303f5f58636a512a137bf3702e051b on 2004-12-27
seems to have broken this.
2007-06-10 13:11:53 +03:00