Commit Graph

1625 Commits

Author SHA1 Message Date
Daniel Silverstone 313dc9b099
JS: Remove unused slow script callback
Signed-off-by: Daniel Silverstone <dsilvers@digital-scurf.org>
2020-03-21 18:07:50 +00:00
Michael Drake c5aaf45d8e Fetch: Squash use of uninitialised value in fetch_send_callback()
The `last_msg` member of `struct fetch` was not initialised on
creation of the structure.
2020-03-12 17:22:28 +00:00
Michael Drake 0e6ba162b2 Internal content: Restyle certificate viewer page. 2020-02-24 21:54:54 +00:00
Daniel Silverstone 14286b381b
fs_backing_store: Remove cache on failure to init
If we fail to init the control file for reasons other than it
not being found, we blow away the cache in its entirety and then
try again.  We warn if the removal fails, but carry on regardless
since right now the worst that'll happen is that we'll end up
with more on disk than we know about in the cache.

Signed-off-by: Daniel Silverstone <dsilvers@digital-scurf.org>
2020-02-24 21:01:58 +00:00
Michael Drake 52bfae1782 Internal pages: Update directory listing style. 2020-02-24 18:22:03 +00:00
Daniel Silverstone 4c256408c5
fetch: Bump last_msg rather than always assigning it
If we are aborting a cURL fetch then it's possible entry to
cURL to clean up could cause a PROGRESS message to happen which
we need to not reset last_msg for, otherwise we spuriously attempt
to send an ERROR message during abort which is not a safe time for
our message callback to be used.

Signed-off-by: Daniel Silverstone <dsilvers@digital-scurf.org>
2020-02-24 17:43:21 +00:00
Daniel Silverstone 02c5bde5a9
fs_backing_store: Fix some comparison types
Signed-off-by: Daniel Silverstone <dsilvers@digital-scurf.org>
2020-02-24 17:43:14 +00:00
Daniel Silverstone fa75e8e4fd
fs_backing_store: Use correct format specifier for 64bit int
Signed-off-by: Daniel Silverstone <dsilvers@digital-scurf.org>
2020-02-24 17:19:45 +00:00
Vincent Sanders f172a21df9 about scheme certificate viewer initial implementation 2020-02-24 16:59:18 +00:00
Daniel Silverstone 5c205fbff0
fs_backing_store: Fix up comments to be in-line with values
Signed-off-by: Daniel Silverstone <dsilvers@digital-scurf.org>
2020-02-24 15:56:55 +00:00
Michael Drake f840833723 Low level cache: Squash use of uninitialised value.
Coverity issue:

CID 1419828:  Memory - corruptions  (UNINIT)
>>>     Using uninitialized value "output_length".
2020-02-24 15:37:20 +00:00
Daniel Silverstone 133e00edbe
fs_backing_store: 8K metadata blocks, 1K blocks, bump version
Signed-off-by: Daniel Silverstone <dsilvers@digital-scurf.org>
2020-02-24 15:37:12 +00:00
Michael Drake 0140d1e5b1 Curl fetcher: Guard against read of uninitialised value.
Fixes Coverity issue:

CID 1419830:  Memory - illegal accesses  (UNINIT)
>>>     Using uninitialized value "buf[depth]".
2020-02-24 14:58:16 +00:00
Michael Drake 63dd59bd2e Cache backing store: Add missing calloc check.
Found by coverity:

CID 1419831:  Null pointer dereferences  (NULL_RETURNS)
>>>     Dereferencing a pointer that might be "NULL" "url" when calling "read".
2020-02-24 14:34:37 +00:00
Michael Drake b8dc537bf8 Curl fetcher: Squash coverity warning.
CID 1419832:  Control flow issues  (DEADCODE)
>>>     Execution cannot reach this statement: "goto out;".
2020-02-24 14:31:02 +00:00
Daniel Silverstone bb5d72410b
fetchers: Rework the about, data, file, and resource fetcher poll loop
This simplifies the poll loops a little more and makes me less worried
that some other corner case will bite us in the future.

Signed-off-by: Daniel Silverstone <dsilvers@digital-scurf.org>
2020-02-24 14:25:37 +00:00
Michael Drake a47270c93e About fetches resources: Drop maps resource.
It had bitrotted.
2020-02-24 14:21:27 +00:00
Daniel Silverstone 97870122dd
fetch: When aborting, ensure we note this to not multi-fail
When aborting a fetch, it may be cleaned up, in which case we
would otherwise send a spurious failure message too early. Instead
we record that the abort has occurred to suppress such an error.

Signed-off-by: Daniel Silverstone <dsilvers@digital-scurf.org>
2020-02-24 10:24:23 +00:00
Daniel Silverstone 5cfe0dfffc
fetchers: Apply cleaner ring handling mechanic to other fetchers
Signed-off-by: Daniel Silverstone <dsilvers@digital-scurf.org>
2020-02-24 09:51:44 +00:00
Daniel Silverstone 083ba385d7
fetch: Automatically handle fetches which fail to finish
Signed-off-by: Daniel Silverstone <dsilvers@digital-scurf.org>
2020-02-24 09:47:52 +00:00
Daniel Silverstone 89e468422d
about: Correct handling of ring in fetch_about_poll
Signed-off-by: Daniel Silverstone <dsilvers@digital-scurf.org>
2020-02-24 09:46:59 +00:00
Daniel Silverstone 360997c265
fs_backing_store: Clear entry memory flags on read
Signed-off-by: Daniel Silverstone <dsilvers@digital-scurf.org>
2020-02-23 23:04:49 +00:00
Daniel Silverstone e6a5c090c9
curl: Implement SSL chain cache in cURL fetcher
Because cURL can do connection caching behind the scenes, we
need to have a cache for the SSL certificate chains which we
send onward on first header back from cURL.

This uses the new hashmap implementation to mean that we cache
chains on a hostname:port basis.

Signed-off-by: Daniel Silverstone <dsilvers@digital-scurf.org>
2020-02-23 22:31:58 +00:00
Daniel Silverstone 859972df71
llcache: Rework fs_backing_store to use hashmap
As a result, we no longer waste a bunch of RAM on the entries
tables.  This ought to be no slower, and more memory efficient.

Signed-off-by: Daniel Silverstone <dsilvers@digital-scurf.org>
2020-02-23 20:59:40 +00:00
Daniel Silverstone ac75a9161e
llcache: Persist anything available during llcache_finalise
Signed-off-by: Daniel Silverstone <dsilvers@digital-scurf.org>
2020-02-23 20:59:40 +00:00
Vincent Sanders 0c34d06494 Keep the complete certificate chain from a fetch
Instead of extracting information from the X509 certificate chain in
the fetcher the entire chain is propagated in Distinguished Encoding
Rules (DER) format.

This allows all the information contained in a certificate chain to be
retained which can subsequently be presented to the user
2020-02-23 16:23:50 +00:00
Vincent Sanders 214478fc15 Improve some content documentation comments 2020-02-23 16:17:51 +00:00
Michael Drake f3b7a0c44c HTML Script: Check for success on intern of mimetype. 2020-02-23 14:28:27 +00:00
Daniel Silverstone 16163aab03
HTML: Ignore dom exceptions we don't care about
Signed-off-by: Daniel Silverstone <dsilvers@digital-scurf.org>
2020-02-23 09:36:07 +00:00
Daniel Silverstone b633bef7bf
Node: nodeValue setter should return value set into node
Signed-off-by: Daniel Silverstone <dsilvers@digital-scurf.org>
2020-02-23 09:33:26 +00:00
Daniel Silverstone bfd185ac49
dukky: Guard pointless work for deep debug
Signed-off-by: Daniel Silverstone <dsilvers@digital-scurf.org>
2020-02-23 09:19:51 +00:00
Daniel Silverstone bc1810ed61
JS: it's Infinity not infinity
Signed-off-by: Daniel Silverstone <dsilvers@digital-scurf.org>
2020-02-21 19:37:54 +00:00
Daniel Silverstone d0e775e901
JS: Add Element::attributes and NamedNodeMap to handle it
This is a *very* rudimentary implementation lacking most of the
functionality of NamedNodeMap but it's enough to get jQuery 1.12.4 up.

Signed-off-by: Daniel Silverstone <dsilvers@digital-scurf.org>
2020-02-21 18:40:35 +00:00
Daniel Silverstone b23063bb52
JS Generics: Add a NodeMap proxy builder
Signed-off-by: Daniel Silverstone <dsilvers@digital-scurf.org>
2020-02-21 18:40:16 +00:00
Daniel Silverstone 2325062ff1
Element: support innerHTML
To get us further along the JavaScript pathway, support the
getter and setter for innerHTML.  The getter always returns
an empty string for now, but the setter works.

Signed-off-by: Daniel Silverstone <dsilvers@digital-scurf.org>
2020-02-21 18:02:57 +00:00
Daniel Silverstone 61fdb8fda6
JS: Add DOMImplementation::createHTMLDocument
This was the last major thing blocking basic jQuery support

Signed-off-by: Daniel Silverstone <dsilvers@digital-scurf.org>
2020-02-21 16:19:00 +00:00
Daniel Silverstone fa520638fa
HTML: Ignore LOADING status in html_proceed_to_done()
Signed-off-by: Daniel Silverstone <dsilvers@digital-scurf.org>
2020-02-21 14:26:33 +00:00
Daniel Silverstone 2f8868309a
HTML: Don't transition the content state machine if we do nothing
Signed-off-by: Daniel Silverstone <dsilvers@digital-scurf.org>
2020-02-21 14:09:39 +00:00
Daniel Silverstone db370bfdb7
HTML: Complete content state machine after async script
The async script completion process needs to complete the
content state machine so that browser throbbers eventually
stop once async scripts have fetched and run, even if that
happens *after* conversion finishes.

Signed-off-by: Daniel Silverstone <dsilvers@digital-scurf.org>
2020-02-21 10:48:00 +00:00
Vincent Sanders 55ba27c68f re-order config include so strcasecmp is correctly detected on RISC OS/win32 2019-12-22 11:11:04 +00:00
Daniel Silverstone eba05b0d38
html_script: Count sync scripts to prevent unpausing early
If there is more than one incomplete sync script then it's
important that we don't unpause hubbub too early.  This commit
adds a counter so that if there're unfinished sync scripts in
the set, we don't unpause until the last one completes.

Signed-off-by: Daniel Silverstone <dsilvers@digital-scurf.org>
2019-12-19 20:50:33 +00:00
Michael Drake faf667ada7 HTML: box_consturction: cleanup name dom_string in box_object. 2019-12-10 19:26:12 +00:00
Michael Drake 4c4b57d511 HTML redraw: Never draw box scrollbars for textareas.
The scrollbars for textareas are rendered by the widget.

This stops us from putting broken scrollbars over the top of the
textarea's own scrollbars.
2019-12-09 14:33:53 +00:00
Michael Drake 1c466369ef webp: NetSurf bitmap format is RGBA.
Issue a bitmap modified call after conversion, to allow front ends
with different pixel formats to convert.
2019-12-08 11:30:47 +00:00
Daniel Silverstone 3a8317fddb
fetch_curl_report_certs_upstream: Use new SSL_CERT_ERR_CERT_MISSING
Signed-off-by: Daniel Silverstone <dsilvers@digital-scurf.org>
2019-12-03 09:42:14 +00:00
Daniel Silverstone 24dd16ddff
fetch_curl_verify_callback: Do depth update after check
Signed-off-by: Daniel Silverstone <dsilvers@digital-scurf.org>
2019-12-03 09:35:51 +00:00
Michael Drake eb88c92749 html: css fetcher: Fix passing LWC borrow to fetcher_add, which consumes.
Fixes abort on exit when corestring finalisation tried to unref
what should have been the final ref:

    $ ./nsgtk3
    corrupted double-linked list
    Aborted (core dumped)
2019-12-02 10:58:36 +00:00
Michael Drake 65e5512160 html: Fire DOM KeyboardEvents on keypresses. 2019-12-01 21:25:46 +00:00
Michael Drake f620ea9d17 dukky_push_event: Enable KeyboardEvent specialisation. 2019-12-01 21:25:46 +00:00
Michael Drake 23d413c561 JavaScript: Add KeyboardEvent bindings. 2019-12-01 21:25:46 +00:00
Michael Drake 7e6723e27a html: Add function for issuing a keypress event. 2019-12-01 21:25:46 +00:00
Michael Drake a2190f91c9 html: Split out helper for firing DOM events and swallowing errors. 2019-12-01 21:25:46 +00:00
Michael Drake 12fd5ddd69 HTML: Rename fire_dom_event to fire_generic_dom_event. 2019-12-01 21:25:46 +00:00
Daniel Silverstone 92caa16cfc
Add missing unrefs
Signed-off-by: Daniel Silverstone <dsilvers@digital-scurf.org>
2019-12-01 17:25:49 +00:00
Daniel Silverstone 715586bb65
html_saw_insecure_objects: Don't infinite loop on objects
Signed-off-by: Daniel Silverstone <dsilvers@digital-scurf.org>
2019-12-01 17:05:28 +00:00
Daniel Silverstone 33c81b6932
html_css_fetcher: Use corestring_lwc_x_ns_css
Signed-off-by: Daniel Silverstone <dsilvers@digital-scurf.org>
2019-12-01 17:05:28 +00:00
Daniel Silverstone 2e07d955b6
content_saw_insecure_objects: Fix various corner cases
Signed-off-by: Daniel Silverstone <dsilvers@digital-scurf.org>
2019-12-01 17:05:28 +00:00
Daniel Silverstone 9faca2b940
Add missing include
Signed-off-by: Daniel Silverstone <dsilvers@digital-scurf.org>
2019-12-01 16:07:45 +00:00
Daniel Silverstone 6fc2666d07
Allow contents to indicate if they believe they may not be secure.
HTML contents reference many other objects.  The browser window
needs to know if any of them may not be secure, in which case it
needs to report that in its page state.  If other content types
might refer to sub-contents, they will need to define the callback
too.

Signed-off-by: Daniel Silverstone <dsilvers@digital-scurf.org>
2019-12-01 15:49:08 +00:00
Daniel Silverstone 9a02a41cd6
box_construct: Do not leak attributes in <embed> boxes
Signed-off-by: Daniel Silverstone <dsilvers@digital-scurf.org>
2019-11-30 20:37:07 +00:00
Michael Drake dc9de4998f HTML redraw: Don't render scrollbars when the CSS doesn't permit it. 2019-11-30 15:20:21 +00:00
Daniel Silverstone ea142abdd0 llcache: Reload SSL certificate data from serialised store
Signed-off-by: Daniel Silverstone <dsilvers@digital-scurf.org>
2019-11-30 14:21:41 +00:00
Daniel Silverstone 0c0b9faddd llcache: Persist SSL certificate data
Signed-off-by: Daniel Silverstone <dsilvers@digital-scurf.org>
2019-11-30 14:21:41 +00:00
Daniel Silverstone f49654cfc5 llcache: Support storing SSL certificate data
In order to support persisting SSL data we first have to store it
and support catching up new users.

Signed-off-by: Daniel Silverstone <dsilvers@digital-scurf.org>
2019-11-30 14:21:41 +00:00
Vincent Sanders 4a1ca97c65 make unknown content drag assert have meanigful message 2019-11-29 21:32:46 +00:00
Vincent Sanders 69236590d0 change mouse action drag handling to use a more efficient dispatch 2019-11-17 10:40:34 +00:00
Vincent Sanders e34f9d3a38 move remaining mouse action drag handling into separate functions 2019-11-17 10:13:56 +00:00
Vincent Sanders ae39b9f955 move more select menu handling into mouse_action_select_menu() 2019-11-17 10:12:37 +00:00
Vincent Sanders 185d034323 make mouse track and mouse action content handlers return an error code 2019-11-12 22:48:00 +00:00
Vincent Sanders 074407d251 Remove redundant drag handling for content selection
This redundant code was added by:
4747bbbfb2 HTML drags now go via content msg.
and then added again with:
c2a718075a A load of refactoring of how content selection and input work.
2019-11-12 21:54:35 +00:00
Vincent Sanders b9bc34b875 split out html interaction header elements and rename source 2019-11-12 21:54:35 +00:00
Michael Drake 82d4a2265b Data fetcher: Include stdarg.h header. 2019-11-12 19:16:07 +00:00
Michael Drake 8ad55e23fd gif: Change how we rate-limit frames to match other browsers.
This makes the old minimum_gif_delay option unused.
2019-11-11 21:54:26 +00:00
Michael Drake 8e1154eb1c Content: Remove redundant and unused redraw message fields.
This was archaic support for rendering images as "overlays",
and avoiding a redraw via the browser window redraw and HTML
contents.  Basically it was "plot this image here", but it
was too error prone, so it was removed a long time ago.

These are some last vestiges that made the redraw message
look more complex than it is.
2019-11-11 21:54:15 +00:00
Michael Drake db7f1f01a9 Data fetcher: Squash BSD warning. 2019-11-11 21:54:04 +00:00
Vincent Sanders 0e16c01cdc remove unecessary user warning 2019-11-10 20:32:37 +00:00
Michael Drake ad27ed6926 llcache: Avoid putting local content in the disc cache. 2019-11-10 16:49:05 +00:00
Michael Drake 26d7a167ae llcache: Split out scheme is cachable check. 2019-11-10 16:49:05 +00:00
Michael Drake c14f01ea44 File fetcher: Optimise HTTP header generation. 2019-11-10 14:37:36 +00:00
Michael Drake 8d652f1ff4 Resource fetcher: Optimise HTTP header generation. 2019-11-10 14:37:34 +00:00
Michael Drake 301b0bae00 llcache: URLs with data scheme are cachable. 2019-11-10 14:36:40 +00:00
Michael Drake 66401b7fa6 Resource fetcher: Add Cache-Control header with max-age of a year.
Resource URLs can't change, we want to assume they're fresh for
as long as we can.
2019-11-10 14:36:40 +00:00
Michael Drake ab4eab5706 Data fetcher: Add Cache-Control header with max-age of a year.
Data URLs can't change, we want to assume they're fresh for
as long as we can.
2019-11-10 14:36:40 +00:00
Michael Drake 0dfbc80587 Data fetcher: Split header emitting out into helper. 2019-11-10 14:36:40 +00:00
Michael Drake 58094ffaa5 Data fetcher: Move fetch_data_send_callback towards top of file. 2019-11-10 11:58:38 +00:00
Michael Drake 885897f610 llcache: Uncachable scheme checks don't need to be caseless. 2019-11-09 17:14:37 +00:00
Michael Drake 52805a7860 llcache: Allow file and resource schemes to be cached.
This means things like the default css file and adblock css file
are only loaded and parsed once.
2019-11-09 17:08:43 +00:00
Michael Drake b15cbb72ac File fetcher: Avoid atoi for If-None-Match value parse.
The file fetcher emits FETCH_NOTMODIFIED if the file is unchanged.
2019-11-09 17:06:04 +00:00
Michael Drake c92b31babe Resource fetcher: Fix ETag handling.
* Changed ETag storage to be time_t, rather than int.
* Changed `If-None-Match` value parsing to use proper
  time_t parsing, rather than `atoi`.

We emit FETCH_NOTMODIFIED if the resource hasn't changed.
2019-11-09 16:59:26 +00:00
Vincent Sanders e95c11dac8 remove user warning and log error instead 2019-11-07 21:35:24 +00:00
Vincent Sanders 0dbc6e5ecd fix keypress entry on text area
accidentaly broken in commit fca421e204
2019-11-07 21:20:04 +00:00
Vincent Sanders 570f2dc036 remove user warning and fix up error handling in form select menus 2019-11-07 18:52:49 +00:00
Vincent Sanders 7de3100624 remove unecessary user warning 2019-11-06 23:26:48 +00:00
Vincent Sanders fca421e204 remove user warning and propogate error return 2019-11-06 23:13:20 +00:00
Vincent Sanders cbb0c05258 remove unecessary user warning calls and improve error propogation in html box 2019-11-05 23:05:42 +00:00
Vincent Sanders 78aa34e5d7 remove user warnings from hotlist load and curl poll 2019-11-05 00:07:06 +00:00
Vincent Sanders 4eb06ad2cf move the fallback text for about handler into messages handler 2019-10-30 21:33:27 +00:00
Vincent Sanders 4b0c3f0efe add internal query handler for fetch errors
Any errors from the fetch which are not already handled are
  reported with an internal query page instead of a modal
  dialog.

This is much less invasive for the user and much more in
  keeping with how this is handled by other browsers.

The handler is similar to the timeout handler but the
  functionality is kept separate as it is intended timeout
  handling be extended in future.
2019-10-30 18:56:38 +00:00
Vincent Sanders 76eac19227 add internal query page for request timeouts 2019-10-29 22:29:22 +00:00
Vincent Sanders 1176ce4271 Improve timeout error messaging 2019-10-28 23:50:01 +00:00
Daniel Silverstone a5766db2b9 fetchers/curl: Restrict AUTH to BASIC
cURL will prevent channel reuse if NTLM auth is enabled because
NTLM authenticates a channel not a request.  As such we were
unable to reuse curl handles since we handed off connection
reuse to curl instead of our own handle cache.  This mitigates
the effect, though curl authors are looking at fixing it upstream
too.

Fixes: #2707

Signed-off-by: Daniel Silverstone <dsilvers@digital-scurf.org>
2019-10-21 10:03:46 +01:00
Vincent Sanders 4372104e0e fix utils configuration header ordering 2019-10-11 17:39:33 +01:00
Vincent Sanders 972e13ca3f remove unused external declaration and unecessary header use 2019-10-06 18:02:17 +01:00
Vincent Sanders c9296f79a8 Use curl API (versions after 7.56.0) to determine if openssl is in use 2019-10-01 21:23:35 +01:00
Vincent Sanders 0a3786fed2 Allow the curl fetcher to be built without openssl.
The curl fetcher can operate without openssl library being
 available, additionaly curl itself may be compiled with a
 different TLS library.

In either case this will simply cause the "unknown" error to be
 reported for all TLS failiures and page information to lack any
 certificate information.
2019-09-30 23:57:49 +01:00
Vincent Sanders 12cca32059 fix core find in page behaviour when case sensitivity is toggled 2019-09-21 10:53:41 +01:00
Vincent Sanders d94afaa0e1 make the gtk_search structure private to teh gtk search object 2019-09-21 10:53:41 +01:00
Daniel Silverstone b03786920a hlcache_fini(): Deschedule cleanups on finalisation
Signed-off-by: Daniel Silverstone <dsilvers@digital-scurf.org>
2019-09-07 15:23:45 +01:00
Daniel Silverstone 524965b867 Box Conversion: Cancel conversion during html_destroy
If dom_to_box is still in progress when we destroy an HTML
content, we need to cancel the conversion otherwise we will
end up with a scheduled callback into infinity.

Signed-off-by: Daniel Silverstone <dsilvers@digital-scurf.org>
2019-08-23 21:58:07 +01:00
Daniel Silverstone df496cc8bc Window: set{Timeout,Interval}() default delay 10ms
Signed-off-by: Daniel Silverstone <dsilvers@digital-scurf.org>
2019-08-21 21:46:52 +01:00
Daniel Silverstone 44f3846727 SSL Error: Enable OpenSSL hostname verification
Since OpenSSL 1.0.2 there has been hostname verification support
which cURL doesn't turn on for some reason.  Turn it on so that
we get better hostname verification handling.

Signed-off-by: Daniel Silverstone <dsilvers@digital-scurf.org>
2019-08-14 20:11:11 +01:00
Vincent Sanders 820fb0e7ff add English message text for ssl errors 2019-08-10 12:51:46 +01:00
Vincent Sanders 98f4525073 add common name ssl certificate error
This adds an ssl faliure code and explanation why curl fetcher
 does not currently set it.
2019-08-10 12:50:23 +01:00
Michael Drake c6a2c76867 About: Tweak the new about query page renderng. 2019-08-09 13:20:08 +01:00
Vincent Sanders 3a23e944dd rework about scheme handlers to be consistant with output buffer handling 2019-08-08 17:12:42 +01:00
Vincent Sanders 746010a757 apply tlsa styling improvements to about scheme query pages 2019-08-07 16:05:45 +01:00
Vincent Sanders 1b030bd8de add basic styling to about scheme privacy query page 2019-08-07 14:19:37 +01:00
Vincent Sanders 8cec045cb7 Improve the about scheme query page generation be be bounds safe 2019-08-06 13:16:20 +01:00
Daniel Silverstone 1cf1ec55bc Support SSL verification through new about: handler
In doing this, also propagate why the certificates were bad
so that the page can display a reason.  We will need FatMessages
for all these.

Signed-off-by: Daniel Silverstone <dsilvers@digital-scurf.org>
2019-08-06 13:15:23 +01:00
Daniel Silverstone 8469f4cc8e Reimplement handling of BAD_AUTH inside browser_window
We now handle authentication requests via an `about:` page
which presents a nice form built into the browser window.
In order to do this, we add internal navigation as a concept
to the browser window and we strip the 401login support from all
frontends except monkey.

The 401login callback is now intended for password safe type support
rather than an immediately interactive prompt.

Signed-off-by: Daniel Silverstone <dsilvers@digital-scurf.org>
2019-08-06 11:26:47 +01:00
Vincent Sanders 9c9c26a308 futher refinement on about scheme query styling 2019-08-06 10:51:31 +01:00
Vincent Sanders 6a1c64ff7b improve css formatting in about scheme query handlers 2019-08-06 10:07:35 +01:00
Vincent Sanders ea549da8df fix url reference counting in about scheme query handlers 2019-08-06 10:07:35 +01:00
Michael Drake 5e45c4498c HTML: Don't allow objects to redraw until we have a layout. 2019-08-06 09:42:37 +01:00
Vincent Sanders c238325b12 add about scheme query handlers 2019-08-06 08:45:56 +01:00
Vincent Sanders a888922612 Improve about scheme doc comments and formatting 2019-08-05 22:29:14 +01:00
Daniel Silverstone ddfa76b1fc curl.c: Don't use OpenSSL 1.1 only serialNumber fetcher
Signed-off-by: Daniel Silverstone <dsilvers@digital-scurf.org>
2019-08-05 22:03:42 +01:00
Daniel Silverstone f3ac1fad69 nssprite: content_broadcast_error fix
Signed-off-by: Daniel Silverstone <dsilvers@digital-scurf.org>
2019-08-05 21:33:46 +01:00
Daniel Silverstone 9318ee5d6a html_begin_conversion: If we pause in completing parse, try again later.
Signed-off-by: Daniel Silverstone <dsilvers@digital-scurf.org>
2019-08-05 21:29:18 +01:00
Michael Drake be23d522db HTML: Box coordinates: Take fast route to float container.
And assert that floats have a float_container.
2019-08-05 21:15:28 +01:00
Daniel Silverstone 170dc5d524 Excise the llcache query pathway.
In further preparation for the auth and cert queries being handled
as special contents from `about:` this excises the query pathway
from the llcache pretty much entirely.

Signed-off-by: Daniel Silverstone <dsilvers@digital-scurf.org>
2019-08-05 20:56:07 +01:00
Daniel Silverstone bfb1bb1192 Migrate SSL certificate storage to the browser window
* Fetchers now provide the certificates before headers
* This is propagated all the way to the browser window
* When a query occurs, we retrieve it from there and fire
  the query with those stored certificates.
* The serial number is a bignum, store it as hex.

Signed-off-by: Daniel Silverstone <dsilvers@digital-scurf.org>
2019-08-05 18:12:47 +01:00
Daniel Silverstone 2be3ebd918 content: Rename content_broadcast_errorcode()
Signed-off-by: Daniel Silverstone <dsilvers@digital-scurf.org>
2019-08-05 15:25:15 +01:00
Daniel Silverstone 6ba199c7d7 Content messages: Remove ERRORCODE, rework ERROR
This reworks CONTENT_MSG_ERROR to be structured data and
removes the CONTENT_MSG_ERRORCODE message kind.

Signed-off-by: Daniel Silverstone <dsilvers@digital-scurf.org>
2019-08-05 14:30:30 +01:00
Vincent Sanders 2171f13ab3 enable gnu extensions to get strcasestr from string.h 2019-08-05 10:01:13 +01:00
Daniel Silverstone b15b204f49 form: Fix situation where a gadget initialises with NULL value
Signed-off-by: Daniel Silverstone <dsilvers@digital-scurf.org>
2019-08-04 22:12:10 +01:00
Daniel Silverstone 05c6ee02d9 html: Mirror gadget values in and out of the DOM
Currently only supporting text input, password input, and hidden
input, along with text areas, this mirrors the text values in
and out of the DOM, allowing JS to adjust the gadget values and
for the gadget values to be interrogated from JS.

Signed-off-by: Daniel Silverstone <dsilvers@digital-scurf.org>
2019-08-04 22:07:42 +01:00
Vincent Sanders 3be2b98cc2 change browser_window_drop_file_at_point() to take unscaled coordinates 2019-08-04 14:24:33 +01:00
Vincent Sanders f21c41a2e5 change browser_window_redraw to use unscaled coordinates 2019-08-04 11:25:35 +01:00
Daniel Silverstone 1905200154 Add content handlers for queries
Signed-off-by: Daniel Silverstone <dsilvers@digital-scurf.org>
2019-08-04 11:22:40 +01:00
Daniel Silverstone 6b4610edc9 llcache: Do not delete objects if they were iterator targets
Signed-off-by: Daniel Silverstone <dsilvers@digital-scurf.org>
2019-08-04 11:22:40 +01:00
Daniel Silverstone b48e462f0f content, hlcache: Propagate query events upward
Signed-off-by: Daniel Silverstone <dsilvers@digital-scurf.org>
2019-08-04 11:22:40 +01:00
Daniel Silverstone f59a726f68 llcache.h: Migrate query event to own struct type
Signed-off-by: Daniel Silverstone <dsilvers@digital-scurf.org>
2019-08-04 11:22:40 +01:00
Daniel Silverstone 386d803371 llcache: pass the cb_pw in query_finished
Signed-off-by: Daniel Silverstone <dsilvers@digital-scurf.org>
2019-08-04 11:22:40 +01:00
Michael Drake 90fe920e07 Duktape element binding: Check dom_string_create for error. 2019-08-04 11:11:35 +01:00
Michael Drake a0fbf56a1d CSS hints: Change css_hint_advance to advance pointer by parameter. 2019-08-04 11:10:26 +01:00
Vincent Sanders 357e8a8ad2 remove unnecessary browser_window_redraw_rect interface 2019-08-03 21:58:21 +01:00
Daniel Silverstone 09eb89e3c3 Migrate query dispatch up from llcache to hlcache
As a first step in refactoring query handling to be managed
by `browser_window`, this migrates the calling of the query
handler from the llcache object code up to the hlcache.

In theory this may result in multiple queries happening for one
object, but we mitigate multiple-responses in the llcache so
all should be well.

Signed-off-by: Daniel Silverstone <dsilvers@digital-scurf.org>
2019-08-03 21:13:19 +01:00
Vincent Sanders d4c01894c2 change browser_window_get_features to use unscaled coordinates 2019-08-03 14:29:06 +01:00
Vincent Sanders 0ebfff259f change browser_window_mouse_track to use unscaled coordinates 2019-08-03 14:29:05 +01:00
Vincent Sanders 0a8ed41a1a change browser_window_mouse_click to use unscaled coordinates
this means frontends no longer need to scale mouse click events thus
simplifying their implementation.
2019-08-03 14:29:05 +01:00
Daniel Silverstone 182c4ddefe box_construct: Check error return from dom_has_attribute
Signed-off-by: Daniel Silverstone <dsilvers@digital-scurf.org>
2019-08-03 14:27:44 +01:00
Daniel Silverstone 4421d1bab6 llcache: Ensure we preserve iteratorness when sending messages
In order to prevent a problem where iterating causes an abort
which causes an iteration which clears the iteratorness of a
user allowing it to delete itself causing a segfault, preserve
the iteratorness when iterating in send_message

Signed-off-by: Daniel Silverstone <dsilvers@digital-scurf.org>
2019-08-02 16:57:55 +01:00
Daniel Silverstone 1150cf684d dukky: Remove unused `dukky_safe_get()`
Signed-off-by: Daniel Silverstone <dsilvers@digital-scurf.org>
2019-08-02 15:08:46 +01:00
Daniel Silverstone 1f24336d6c curl: Change where we lodge `inside_curl`
Because we need to be slightly more careful now, lodge ourselves
`inside_curl` whenever we might be processing via the cURL messages
or similar.

Signed-off-by: Daniel Silverstone <dsilvers@digital-scurf.org>
2019-08-02 15:02:45 +01:00
Daniel Silverstone 09cce349da dukky: Clean up our stacktrace reporting
Signed-off-by: Daniel Silverstone <dsilvers@digital-scurf.org>
2019-08-02 14:55:34 +01:00
Daniel Silverstone c9384d65f6 curl: Immediately abort fetchers when we can
Signed-off-by: Daniel Silverstone <dsilvers@digital-scurf.org>
2019-08-02 14:38:54 +01:00
Daniel Silverstone 0eb5aa68fb Duktape: Hopefully silence issue with %lld
Signed-off-by: Daniel Silverstone <dsilvers@digital-scurf.org>
2019-08-02 14:19:13 +01:00
Michael Drake 15a3c21232 Duktape: Make declaration match definition for memcmp and double_div. 2019-08-02 14:19:13 +01:00
Michael Drake ee338c9b24 Duktape: Make declaration match definition for duk_refzero_check_fast() 2019-08-02 14:19:13 +01:00
Michael Drake 1c2a0021b3 Duktape: Make declarations match definitions for fastint-enabled functions. 2019-08-02 14:19:13 +01:00
Michael Drake 80116bfe9f Duktape: Make declarations match definitions for duk_raw_read_xxx_be 2019-08-02 14:19:13 +01:00
Michael Drake 22a348fa31 Duktape: Make declarations match definitions for inline functions. 2019-08-02 14:19:13 +01:00
Michael Drake f320725307 Duktape: Prevent clang static analysis. 2019-08-02 14:19:13 +01:00
Michael Drake b4bbca89cd Duktape: Update to 2.4.0 release. 2019-08-02 14:19:13 +01:00
Daniel Silverstone 095a0639d3 Document.bnd: Fix cookies getter and implement setter
Signed-off-by: Daniel Silverstone <dsilvers@digital-scurf.org>
2019-08-02 12:23:45 +01:00
Daniel Silverstone d196dee05b llcache: Use last_modified instead of date
When sending an If-Modified-Since header we should use the
`last_modified` rather than the `date` property of the cached
object in order to not incorrectly assume things have a modification
date when they do not.

Signed-off-by: Daniel Silverstone <dsilvers@digital-scurf.org>
2019-08-02 12:22:30 +01:00
Daniel Silverstone 9742a8317f Dukky: Add and utilise a jserrors category
Normal, and verbose logging will now also log all JS errors in order that we
stand a chance of debugging things more easily when testing.

Signed-off-by: Daniel Silverstone <dsilvers@digital-scurf.org>
2019-08-02 10:12:45 +01:00
Daniel Silverstone 609ee9b71c Window: Provide a little more info on why not EXPOSE()ing some stuff
Signed-off-by: Daniel Silverstone <dsilvers@digital-scurf.org>
2019-08-02 09:27:06 +01:00
Daniel Silverstone ce7e6d91f5 Window: Restructure EXPOSE()d globals
By reference to the MDN and to Duktape's CLI, expose everything
we possibly can on the global object (Window).

Signed-off-by: Daniel Silverstone <dsilvers@digital-scurf.org>
2019-08-02 09:17:12 +01:00
Daniel Silverstone e85e2f7cdf dukky.c: Correct typo (BUTTOM -> BUTTON)
Signed-off-by: Daniel Silverstone <dsilvers@digital-scurf.org>
2019-08-01 21:57:36 +01:00
Daniel Silverstone f365e75407 Dukky: Support console logging better
Add a polyfill for Array.from(), and fix the console formatter so that
it won't keep exploding.  This should improve matters in the tests.

Signed-off-by: Daniel Silverstone <dsilvers@digital-scurf.org>
2019-08-01 21:40:54 +01:00
Daniel Silverstone bb3e0e51f1 dukky: Attempt to make the fallback to HTMLUnknownElement more useful.
Signed-off-by: Daniel Silverstone <dsilvers@digital-scurf.org>
2019-08-01 21:03:07 +01:00
Daniel Silverstone acee5faa3f html_interaction.c: Default node to <HTML> node
In order to cope when an entire document is `visibility: hidden`
we default to the <HTML> node when interacting with the document
to ensure we don't drop off the end of the box model without
identifying at least one node to fire events at.

This resolves #2658

Signed-off-by: Daniel Silverstone <dsilvers@digital-scurf.org>
2019-08-01 13:56:42 +01:00
Daniel Silverstone a325d6b474 Console.bnd: Support attempts to log when Window has gone
Signed-off-by: Daniel Silverstone <dsilvers@digital-scurf.org>
2019-08-01 09:22:09 +01:00
Michael Drake 4b6967fee4 Layout: Apply min/max width to replaced elements when width is given. 2019-07-30 21:55:29 +01:00
Vincent Sanders 730d59776a cleanup some javascript documentation comments 2019-07-12 13:40:26 +01:00
Vincent Sanders 90530c419e when owning context is destroyed ensure that active js compartment is destroyed first 2019-07-12 13:37:04 +01:00
Vincent Sanders c2fa6af0ff make content close check the content status itself
make content handler open and close return error status
2019-07-10 16:42:52 +01:00
Vincent Sanders 1ae0ee21ee add isFinite to global context 2019-07-01 23:26:11 +01:00
Daniel Silverstone 43f8e77df7 css/utils.c: Fix vw/vh handling in len2pt
We were using integer multiplication rather than fixed-point
multiplication when calculating point sizes relative to the viewport.

This fixes that.

Signed-off-by: Daniel Silverstone <dsilvers@digital-scurf.org>
2019-06-30 11:27:58 +01:00
Michael Drake 1c3ce67c62 HTML: Viewport width/height in length context are fixed point. 2019-06-29 21:59:15 +01:00
Vincent Sanders dc9762fef3 revert 8265b8b66f as ssize_t is not available everywhere 2019-06-25 08:49:29 +01:00
Daniel Silverstone 8265b8b66f Duktape: Probably should use ssize_t
Signed-off-by: Daniel Silverstone <dsilvers@digital-scurf.org>
2019-06-15 21:34:47 +01:00
Daniel Silverstone 84b8e7dfa1 Duktape: Hopefully silence issue with %lld
Signed-off-by: Daniel Silverstone <dsilvers@digital-scurf.org>
2019-06-15 21:33:59 +01:00
Daniel Silverstone 659c9161ee llcache: Abort cleanly if called back during shutdown
In order to help us debug shutting down with active fetches, this
will abort the process cleanly if we get a callback to an "active"
llcache handle after the abort process has actually killed them
all.  This can happen with deferred fetcher aborts in the cURL
fetcher.

Signed-off-by: Daniel Silverstone <dsilvers@digital-scurf.org>
2019-06-15 21:13:09 +01:00
Daniel Silverstone 09fa61eb73 hlcache.c: Clean up LOADING contents during finalise
During the process of finalising the hlcache, there won't be
any more fetching going on.  As such, we can abort, error, and
then destroy any contents still in the process of loading.  This
should reduce our leaks during shutdown.

Signed-off-by: Daniel Silverstone <dsilvers@digital-scurf.org>
2019-06-15 21:12:58 +01:00
John-Mark Bell c1dc4e61bd LLCache: validate max-age before use 2019-06-10 21:36:52 +00:00
John-Mark Bell 047c82cfce LLCache: use Cache-Control parser 2019-06-10 21:02:26 +00:00
Vincent Sanders 9893b05b08 use jmb suggested fix to cache-control header parse error 2019-06-10 21:58:46 +01:00
Vincent Sanders e598dcd139 fix parsing of invalid syntax max-age value Cache-control header 2019-06-10 20:53:12 +01:00
Daniel Silverstone e82107a296 Window.bnd: Suppress some unnecessary stack frame dumps
Signed-off-by: Daniel Silverstone <dsilvers@digital-scurf.org>
2019-06-09 15:59:05 +01:00
Daniel Silverstone c5c8a49276 Window.bnd: Expose isNan
Signed-off-by: Daniel Silverstone <dsilvers@digital-scurf.org>
2019-06-09 15:20:01 +01:00
Daniel Silverstone 04cf2fe588 Window.bnd: Do not remove in-train callbacks
Sometimes callbacks may be cancelled from within themselves.  In
that case we need to simply ensure that should the callback be
wanted to repeat, we instead stop that so that once the callback
is completed we do not attempt to reschedule something which had
already been deleted.

Signed-off-by: Daniel Silverstone <dsilvers@digital-scurf.org>
2019-06-09 11:04:15 +01:00
Vincent Sanders dddc5eac94 Update schedulers return codes
The GTK and monkey frontends schedulers now return NSERROR_NOT_FOUND
 when a caller is using a negative schedule time to remove a callback.
2019-06-08 13:33:16 +01:00
Daniel Silverstone 64ee8e1b00 html.c: Correct ordering for reformat time
Fix a minor bug where we'd likely never end up reformatting.

Signed-off-by: Daniel Silverstone <dsilvers@digital-scurf.org>
2019-06-05 22:59:49 +01:00
Daniel Silverstone 3d80e825e1 content/fetchers/curl.c: Defer fetch start if inside cURL
In order to cope better with modern cURL which prevents making
cURL calls when inside a callback from within cURL, defer fetch
start when we are processing in `fetch_curl_data()`.

Signed-off-by: Daniel Silverstone <dsilvers@digital-scurf.org>
2019-06-05 19:51:47 +01:00
Daniel Silverstone c07b2edd77 Document.bnd: createDocumentFragment() unref fragment
The pushed fragment node holds the reference, so unref it in
the end of createDocumentFragment()

Signed-off-by: Daniel Silverstone <dsilvers@digital-scurf.org>
2019-06-01 13:59:36 +01:00
Daniel Silverstone 9c32564085 html_script.c: html_script_exec() reqacquire script ptr
Since executing a script can cause more scripts to be appended
to the script array, and that can cause a reallocation which might
move the script array, reacquire the script pointer after running
the script so that we don't wander off into the reeds.

Signed-off-by: Daniel Silverstone <dsilvers@digital-scurf.org>
2019-06-01 13:25:14 +01:00
Vincent Sanders a6de56583c Improve javascript unimplemented bnding documentation generation 2019-05-31 19:40:10 +01:00