Commit Graph
1818 Commits
Author SHA1 Message Date
ldm0 cfc97efe51 fix(fetch): preserve received HTTP status text
Carry received HTTP reason phrases from the parser through buffered and streaming responses, disk and memory caches, page responses, Fetch, and XHR. Preserve custom and empty HTTP/1 phrases and report empty text for HTTP/2 and HTTP/3. Synthesized responses retain canonical fallback. Regressions cover whitespace, non-ASCII bytes, and cache round trips.
2026-10-11 21:19:08 +08:00
ldm0 e806cfbeb3 fix(iframe): dispatch one initial load for adopted frames
Validation on this branch: cargo fmt --all; cargo clippy --workspace --all-targets --all-features -- -D warnings.
Nextest and WPT reruns omitted at the user's request.

Includes the ablation-confirmed cleanup from e5491f4b65.
2026-10-11 21:06:50 +08:00
ldm0 876de3b64a fix(window): queue initial javascript URLs on the target page
Validation on this branch: cargo fmt --all; cargo clippy --workspace --all-targets --all-features -- -D warnings.
Nextest and WPT reruns omitted at the user's request.
2026-10-11 21:06:06 +08:00
ldm0 09bcbd0566 fix(window): avoid replaying completed auxiliary document lifecycle
Validation on this branch: cargo fmt --all; cargo clippy --workspace --all-targets --all-features -- -D warnings.
Nextest and WPT reruns omitted at the user's request.
2026-10-11 21:04:27 +08:00
ldm0 72b47ba1ca fix(worker): omit the error value when reporting nested worker failures
Propagate an unhandled nested worker exception to the parent worker with ErrorEvent.error set to null, as required by omitError reporting. Update the existing end-to-end parent onerror regression to inspect the null value while retaining filename, line, column, and message checks.
2026-10-11 21:02:13 +08:00
ldm0 9e66b13ac1 fix(cssom): derive computed-style arguments and handle disconnected elements
Convert getComputedStyle Element and nullable pseudo-element arguments through the shared WebIDL derive path in main, iframe and popup windows. Preserve conversion exception identity and prevent pseudo-element conversion for invalid element receivers. Regression fixtures cover cross-realm genuine elements, author proxies and thrown coercions. Retain current window receiver and scrolling infrastructure. Determine expected intrinsics from the actual binding function realm while retaining main, iframe and legacy popup document coverage. Treat disconnected child-frame and popup targets as empty before consulting cached context state. Retained style objects update across connection and removal; the 318-assertion matrix keeps all original conversion checks.
2026-10-11 20:52:08 +08:00
ldm0 bc67a47970 fix(dom): preserve DOMImplementation argument and result realms
Validate DOMImplementation native receivers before argument conversion, and convert createDocument qualifiedName before its nullable DocumentType argument. Allocate factory results in the owner Document relevant realm after conversion, preserving the callee realm for conversion errors. Cross-realm regressions cover genuine and forged doctypes, author proxies, conversion order, and factory result ownership.
2026-10-11 20:48:51 +08:00
ldm0 fd80eb23f4 fix(dom): expose the native SVG document root
Return Document.rootElement from the current native document element only when it is an SVG-namespaced svg root. Retain wrapper identity in the Document owner realm without reading author-overridable properties. Regressions cover root replacement/removal, adoption, cloning, namespace/case distinctions, cross-realm access and registered native Document Proxies.
2026-10-11 20:47:43 +08:00
ldm0 9c45bdc81c feat(speech): construct native synthesis events with validated payloads 2026-10-11 19:53:16 +08:00
ldm0 98a342af73 feat(encoding): add a native streaming XHR response decoder
Add an incremental XHR text/document decoder that distinguishes text, XML and HTML response kinds. BOM precedence, transport charset, XML declarations and HTML sniffing retain state across arbitrary chunk boundaries. Native unit tests cover all split points and truncated input. This PR adds the decoder API; switching every XHR producer to it is separate work.
2026-10-11 18:03:06 +08:00
ldm0 9616d01ab1 fix(cookies): handle Unicode expiration dates without panicking v1.1.16 2026-10-11 17:44:26 +08:00
ldm0 6e70b3f1cf perf(accessibility): keep uncommon AX fields out of line
Group ignored reasons, values and nonempty properties behind one optional box. Use nonzero backend IDs and serialize fixed role/name kinds on demand, reducing the common AX node from 296 to 96 bytes while preserving payload shape and field order.

Add reproducible CLI and native construction benchmarks. Generated 40000-row text dumps use 382.6 to 341.5 MiB peak RSS; 200000-row text dumps use 1753.5 to 1612.8 MiB. Record the roughly 5.5 percent native construction cost for dense ignored nodes alongside the memory gains.

Validation: cargo fmt --all; workspace clippy with all targets/features and warnings denied; cargo nextest run --no-fail-fast (19890 passed, 17 skipped). All 188 formal benchmark samples match their corresponding before/after outputs.
2026-10-11 17:37:40 +08:00
ldm0 1404fa344b perf(accessibility): avoid JSON intermediates in semantic dumps
Large semantic dumps retain a JSON object graph with allocated field names
and string node references for every AX node before formatting the output.

Build compact typed nodes with numeric references and pass them directly
from the renderer to the CLI. Keep one AX traversal for both typed nodes
and CDP payloads, converting protocol nodes individually as they are built.
Preserve omitted/empty fields, field insertion order, list markers, and
frame-root attachment order. Render text iteratively and trim in place.

Add compatibility coverage and a standalone benchmark that stages both
executables on the same filesystem, alternates runs, records peak RSS and
wall time, and rejects changes to dump output bytes.

Against main at 5f5e1fff3 on a generated 40,000-row list (three interleaved
runs, medians):
- semantic_tree_text: 718.42 -> 390.96 MiB; 2.919 -> 2.204 s.
- semantic_tree: 815.71 -> 483.81 MiB; 2.484 -> 2.369 s.
- markdown control: 95.52 -> 95.59 MiB; 0.895 -> 0.913 s.

A generated 200,000-row list also completes with identical bytes (one run):
- semantic_tree_text: 3473.02 -> 1775.07 MiB; 13.245 -> 10.015 s.
- semantic_tree: 3803.45 -> 2137.26 MiB; 12.626 -> 10.397 s.

JSON/text comparisons also match the baseline on a mixed fixture containing
hidden/ignored nodes, form values, list markers, shadow DOM, and child frames.
These generated fixtures are independent of the external MOL-269 evidence.

Validation:
- cargo fmt --all
- cargo clippy --workspace --all-targets --all-features -- -D warnings
- cargo nextest run --no-fail-fast (19,885 passed, 17 skipped)
- cargo build --release -p moli

Refs: MOL-269
2026-10-11 17:37:40 +08:00
ldm0 fd2ed360cc fix(accessibility): preserve NBSP in accessible names 2026-10-11 17:34:34 +08:00
ldm0 1b05e14af2 fix(dom): honor computed content visibility in innerText
Use computed style facts for content-visibility locks instead of reading
inline declarations. Hidden-until-found and stylesheet-hidden contents
stay out of innerText until revealed or overridden by the CSS cascade.

Remove the obsolete inline-only readers and cover hidden-until-found,
boolean hidden, synchronous reveal, and important stylesheet overrides.

Fixes MOL-113.
2026-10-11 17:33:50 +08:00
ldm0 4b8dc0f320 feat(webidl): retain native BufferSource identity through conversion
Add borrowed AllowShared BufferSource conversion for algorithms that copy after dictionaries are converted, including native range writes and atomic shared-memory byte access. Reject resizable/growable storage and author proxies using native identity, including detached resizable buffers and views. Tests cover late snapshots, bounded writes, surrounding bytes, detachment and native resizable flags. Individual API migrations are separate.
2026-10-11 09:16:23 +08:00
ldm0 e422739933 feat(reporting): expose the native ReportBody interface object 2026-10-11 09:14:44 +08:00
ldm0 77f70f6e30 chore(wpt): refresh full release case status lists
Refresh all-profile WPT Cross lists from Moli 1.1.16 release at 23c6bb5754
against WPT db95fafd1f, using CDP with 50 workers. Each of 13,631 cases
ran once: 9,674 pass, 3,656 fail, 253 timeout, 37 harness-stalled,
10 error and 1 crash. Pass count rises by 86 (132 gained, 46 lost).

Review all 46 lost passes against the previous snapshot's binary:
41 stable version regressions, 2 existing flaky cases, 1 existing runner
readiness race and 2 cases failing in both versions. Preserve original
full-run outcomes in the lists. Validate exact report agreement, sorted
disjoint coverage and no missing cases; git diff --cached --check passes.
2026-10-11 09:12:27 +08:00
ldm0 7f0c43968f fix(window): share inherited document.domain across related pages
Validation on this branch: cargo fmt --all; cargo clippy --workspace --all-targets --all-features -- -D warnings.
Nextest and WPT reruns omitted at the user's request.
2026-10-11 09:01:44 +08:00
ldm0 744e050af8 feat(locks): expose secure Lock and LockManager interfaces 2026-10-11 09:00:08 +08:00
ldm0 8da6e45897 fix(xhr): reject open in retired child document realms
Validation on this branch: cargo fmt --all; cargo clippy --workspace --all-targets --all-features -- -D warnings.
Nextest and WPT reruns omitted at the user's request.

Includes the ablation-confirmed cleanup from c4f80eb35c.
2026-10-11 08:59:40 +08:00
ldm0 c57765060f feat(audio): expose AudioListener and AudioParamMap interface shells 2026-10-11 08:14:32 +08:00
llk bd246f6b92 test: isolate navigation loads and deterministic font and HTTP fixtures 2026-10-11 08:14:05 +08:00
ldm0 5fc03c58f4 feat(canvas): expose ImageBitmapRenderingContext interface 2026-10-11 07:12:47 +08:00
ldm0 23c6bb5754 feat(media): expose secure encrypted-media owner interfaces 2026-10-11 06:48:41 +08:00
ldm0 07c09b138e fix(webdriver): scope dialog load waits to the target page
Query dialogs on the addressed Page when waiting for navigation lifecycle milestones. Allow independent page load completions to advance while another page has a blocked load.

Cover normal and eager navigation with gated two-window regressions, eager recovery after accepting an alert, and dialog ownership across DevTools attachments.
2026-10-11 06:48:09 +08:00
LeandroPG19 d4e635cd52 style(scheduler): drop explanatory comments from dialog wait fix 2026-10-11 06:48:09 +08:00
LeandroPG19 5a50f45b85 fix(webdriver): stop sync alert during page load from hanging the session
While a JavaScript dialog is open, the scheduler no longer waits for the
page load to finish. WebDriver Classic commands using the normal and eager
page load strategies now return, and the session stays usable.

Fixes #809
2026-10-11 06:48:09 +08:00
ldm0 631d4704ca feat(credentials): expose the secure CredentialsContainer interface 2026-10-11 06:38:17 +08:00
ldm0 f70ebff0a1 fix(svg): resolve detached font lengths with initial style
Resolve em and ex SVG lengths in disconnected documents using the initial computed font style. Keep live styled elements on their existing resolved-style path. Regressions cover detached HTML and XML documents, child realms, and inherited fonts. Extract the existing context resolver for reuse by the initial-font path; preserve live-element resolution unchanged. Factory-created lengths have no associated element, so their font basis remains initial when the factory is styled or removed.
2026-10-11 06:15:23 +08:00
ldm0 0487827c0b feat(fetch): retain explicit referrer state independently of request identity
Add native Fetch referrer selection and inheritance without changing request origin, cookie initiator or network partition. Apply the effective policy to the selected referrer when building outgoing headers, preserve explicit omission and about:client fallback, and copy policy to derived requests without copying integrity. Unit tests cover header selection, sanitization and request identity.
2026-10-11 06:05:43 +08:00
lanyue-llk 7e87eef4f4 fix(renderer): follow navigation queued at reached load milestone 2026-10-11 04:55:23 +08:00
lanyue-llk b52701f2fa fix(fetch): discard interaction results and follow navigation before dump 2026-10-11 04:55:23 +08:00
lanyue-llk 96218551c4 feat(fetch): allow explicit interaction before page dump 2026-10-11 04:55:23 +08:00
ldm0 5f5e1fff36 fix(window): retain the name of closed auxiliary windows
Validation on the original split base: cargo fmt --all; cargo clippy --workspace --all-targets --all-features -- -D warnings.
Nextest and WPT reruns omitted at the user's request.
2026-10-11 01:44:57 +08:00
ldm0 f7a49daf6a refactor(performance): use generated native receiver checks 2026-10-11 01:39:25 +08:00
ldm0 9b726d5821 fix(accessibility): use descendant text alternatives in control names 2026-10-11 01:35:41 +08:00
ldm0 b2b51a5525 chore(release): bump version to 1.1.16 2026-10-10 19:24:34 +08:00
ldm0 af86134376 fix(xhr): preserve upload-listener preflight requirements 2026-10-10 19:03:01 +08:00
ldm0 dffbbd7bc6 feat(svg): retain transform functions and rotation centers 2026-10-10 18:50:39 +08:00
ldm0 a6a2f3fddd feat(svg): honor fill rules and reject nonfinite fill points 2026-10-10 18:45:28 +08:00
ldm0 daded0b420 feat(forms): model input value attribute modes in the core 2026-10-10 18:36:41 +08:00
ldm0 b4aa3aaea6 feat(forms): distinguish button Auto state in the core 2026-10-10 18:36:22 +08:00
ldm0 0ebd7fa9d6 feat(url): classify about srcdoc URLs precisely 2026-10-10 18:35:52 +08:00
ldm0 55159e2669 feat(url): compare and restore native origin values 2026-10-10 18:35:31 +08:00
ldm0 2d38fd438d feat(webidl): support EnforceRange signed long long 2026-10-10 18:34:31 +08:00
ldm0 f1e5bf23a3 fix(svg): preserve distance paths for shapes with one zero axis
Use a separate equivalent path for distance queries on rectangles and ellipses with one zero axis. Preserve their starting points and sweep while retaining empty rendered bounds. Core regression tests verify total length, endpoint and intermediate point queries, and distinguish fully empty geometry from a shape collapsed along one axis.
2026-10-10 18:33:52 +08:00
ldm0 f9fd34422a feat(dom): add lossless native DOM string values
Add the native DOMString value representation that preserves unpaired UTF-16 code units and exposes a scalar projection for native consumers. Equality and hashing retain original units; parser scalar appends preserve allocation capacity. Unit coverage includes surrogate identity and append boundaries. This PR provides the native value API; migrating all DOM producers is separate work.
2026-10-10 18:30:37 +08:00
ldm0 4c13737bc8 feat(webidl): add unrestricted binary32 float conversion
Add an explicit unrestricted_float converter to the shared WebIDL value and derive infrastructure. Preserve signed zero, NaN and infinities while rounding finite numbers to binary32; required arity, conversion side effects and original exceptions retain the existing contracts. Cross-realm tests compare Math.fround and check callee-realm TypeError.
2026-10-10 18:23:49 +08:00
ldm0 20b9a7a33c fix(runtime): allow removing bindings while debugger is paused 2026-10-10 17:51:54 +08:00