| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Previously we didn't actually free the main JS runtime, probably because
you can't do this without first waiting for JS to unwind the stack.
(This has the unfortunate effect that code now *can* run after quit().
TODO: find a fix for this.)
This isn't a huge problem per se, we only have one of these and the OS
can clean it up. However, it also disabled the JS_FreeRuntime leak
check, which resulted in sieve-like behavior (manual refcounting is
a pain).
So now we choose the other tradeoff: quit no longer runs exitnow, but
it waits for the event loop to run to the end and only then exits the
browser. Then, before exit we free the JS context & runtime, and also
all JS values allocated by config.
Fixes:
* fix `ad' flag not being set for just one siteconf/omnirule
* fix various leaks (since leak check is enabled now)
* use ptr UncheckedArray[JSValue] for QJS bindings that take an array
* allow JSAtom in jsgetprop etc., also disallow int types other than
uint32
* do not set a destructor for globals
|
|
|
|
|
|
| |
Instead of the error-prone method of selectively applying config values
only for non-initial requests, add a separate (privileged) loader
command which allows specifying a different client config.
|
|
|
|
|
|
|
|
|
| |
* factor out skipWhitespace
* remove streams dependency
(cssparser could never stream without blocking the event loop, so we
were just passing a StringStream in all cases, which made the whole
streaming pointless.)
|
|
|
|
|
|
|
|
| |
* add CSSStyleDeclaration setter
* move ident maps directly into enums
* more complete CSSComputedValue stringifier
* turn canvas into a pseudo-image in cascade
* set canvas to inline-block
|
| |
|
|
|
|
|
|
|
| |
Equivalent to curl --insecure.
Note: unfortunately this does not help if the server is using unsafe
legacy renegotiation, you have to allow that in the OpenSSL config.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* blend bgcolor with cell color
* do not round up to 6
We don't use the sixel transparency feature because it's useless: sixel
transparency (AFAICT) only lets us respect alpha == 0, but we should
either respect *all* alpha, or no alpha at all.
Since we do color blending, we *do* respect all alpha, but only of
background color. This sadly means that text under images gets
destroyed, but at least transparent images don't look like garbage.
|
|
|
|
|
|
|
|
|
| |
* clean up global parsing
* getValueFromDecl (now parseValue) no longer depends on receiving a
CSSDeclaration (just its value)
* getComputedValues now also takes a tuple of (name, cvals) instead of a
CSSDeclaration
* fix padding shorthand accepting auto
|
| |
|
| |
|
|
|
|
| |
i + 1 must be > reader.limit, so >= is needed to avoid the addition
|
| |
|
| |
|
| |
|
|
|
|
| |
openssl needs it
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
| |
The 100kb or so doesn't hurt as much as not having manual pages at all
without pandoc (+ not auto-updating them through make all) does.
|
| |
|
| |
|
|
|
|
|
| |
Unsigned operations and conversions to unsigned types always wrap/narrow
without checks, so no need to manually mask/cast/etc. them.
|
|
|
|
| |
the status line can't have images, so this should work
|
|
|
|
|
|
|
|
|
|
| |
std's version is known to be broken on versions we still support, and it
makes no sense to use different decoders anyway.
(This does introduce a bit of a dependency hell, because js/base64
depends on js/javascript which tries to bring in the entire QuickJS
runtime. So we move that out into twtstr, and manually convert a
Result[string, string] to DOMException in js/base64.)
|
| |
|
|
|
|
| |
+ remove outdated comment
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* png: add missing filters, various decoder fixes
* term: fix kitty response interpretation, add support for kitty image
detection
* buffer, pager: initial image display support
Emphasis on "initial"; it only "works" with kitty output and PNG input.
Also, it's excruciatingly slow, and repaints images way too often.
Left undocumented intentionally it for now, until it actually becomes
useful. In the meantime, adventurous users can find out themselves why:
[[siteconf]]
url = "https://.*"
images = true
|
| |
|
|
|
|
|
| |
We no longer modify the file system inside the sandbox, so this
permission is simply not needed.
|
|
|
|
|
|
|
|
|
|
| |
* remove some properties we no longer use
* convert novalidate into a reflected attribute
* fix satClassList
* remove reference to root node in every Node
The last one is an obvious win when considering how often rootNode is
used vs the memory used by a pointless pointer on every single object.
|
|
|
|
| |
(Sadly some layout tests still fail.)
|
|
|
|
|
|
| |
* use rootProperties so the root fragment does not color its children
* assert if the root gets inline blocks; this can (hopefully) no longer
happen.
|
| |
|
|
|
|
| |
It consumes a value, so we must dup those that we pass.
|
|
|
|
| |
Some JS modules use this to check if they are running in a browser.
|
|
|
|
| |
why not
|
|
|
|
|
|
|
|
|
| |
Turns out std/base64's `decode' is broken: atob(" ") would panic. So we
no longer use that.
Basic testing indicates that the new version is closer to the standard-
mandated behavior than the old one was. OTOH I assume it's somewhat
slower, but that can be improved later if it proves to be a bottleneck.
|
| |
|
|
|
|
| |
Still far from perfect, but it's an improvement.
|
|
|
|
|
|
|
|
| |
sizes.space regulates content-box width, in which padding is not
included, so we must to subtract padding here.
(Neither is margin, but margin is applied by outer layout, in this case
flex itself, so it's not relevant here. Not to say it isn't broken...)
|
|
|
|
| |
needed for isEqualNode to work correctly
|
|
|
|
|
| |
The validator is used only if the decoder is nil, so it must be cleared
in switchCharset.
|
|
|
|
| |
TODO: isEqualNode is not quite correct yet, because we don't sort attrs.
|
|
|
|
|
|
|
|
|
|
|
|
| |
This fixes setTimeout/setInterval causing crashes.
Note: timerfd_gettime is not actually used by Nim right now.
However, it seems like a good idea to add it to the set in case a
future Nim version needs it, as it does no harm.
We still do not allow signalfd, because it would let rogue buffers
override our SIGSYS handler. (Not sure if this really matters, but
we don't need it for now anyway.)
|
|
|
|
|
|
| |
If we are going to move out the child's offset, then we must also tell
the child where it starts so it can behave correctly when it encounters
exclusions.
|
|
|
|
|
|
|
|
|
|
|
| |
Turns out our shrink-to-fit emulation was inadequate: it assumed all
floats are positioned on a separate line, which is the *opposite* of
what we want, as that would be the behavior of min-content.
Now we instead sum together the width of all floats and the widest
non-floating child, and then clamp that to the target fitContent width.
This correctly gives us max-content width in the first pass, still
without having to actually position the floats.
|
|
|
|
|
|
|
|
|
| |
glibc apparently calls fstat from fread, and we didn't allow it in
seccomp. So:
* allow fstat in the sandbox; no reason not to, and it seems too big of
a footgun to assume we never call fread
* use read(2) in http; no need for buffered i/o here
|
| |
|