Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
703 commits
Select commit Hold shift + click to select a range
6ae9a39
[GStreamer] Remove the GstWebRTC backend
philn Jul 24, 2026
f12d815
[cleanup] Move flex-item completed-layout tracking from RenderFlexibl…
alanbaradlay Jul 24, 2026
937062a
Aborting a fetch load should abort the upload stream
youennf Jul 24, 2026
39f3b21
[GLib] LibWebRTC gardening
philn Jul 24, 2026
9ed4a00
[GLib] LibWebRTC gardening of unexpected passing tests
philn Jul 24, 2026
349a74a
[WebDriver] Fix element references after tab switch or close
lauromoura Jul 24, 2026
c549fa4
[WPE][GTK] Bump SDK version
philn Jul 24, 2026
c1ec8fe
[GLib] LibWebRTC gardening
philn Jul 24, 2026
4c4e32e
Web Inspector: Show Parameter Lists for Native DOM methods
dcrousso Jul 24, 2026
1b7ece3
Stream uploads should fail in case of 401 responses
youennf Jul 24, 2026
5e3c9aa
[iOS] Converge iOS font metrics with macOS in Font::platformInit
alanbaradlay Jul 24, 2026
77d3d67
[WPE][GTK] Support WebAuthn
lauromoura Jul 24, 2026
82fca03
WebDriver: Implement print command
lauromoura Jul 24, 2026
3e26dfa
[WPE][GTK][WKTR] Enable async overflow scrolling by default for WPTs
obyknovenius Jul 24, 2026
eb9bd32
[cleanup] Move the flex container's block-size definiteness onto Flex…
alanbaradlay Jul 24, 2026
d4e3ca8
Web Inspector: Site Isolation: Page.frameNavigated should include loa…
the-chenergy Jul 24, 2026
43701fc
[Site Isolation] Loopback/local-network sites should not enter shared…
szewai Jul 24, 2026
2bc1cfd
[YARR] Fix YarrInterpreter ignore-case with ASCII <-> unicode charact…
Constellation Jul 24, 2026
5d6a930
Unreviewed, revert 317857@main
Constellation Jul 24, 2026
85eea80
--print-summary hangs indefinitely due to infinite loop in Manager an…
Ahmad-S792 Jul 24, 2026
31f8a02
MediaFragmentURIParser silently accepts overflowing NPT hours value i…
Ahmad-S792 Jul 24, 2026
bffbdde
Split very slow wasm tests
Constellation Jul 24, 2026
3334d1e
[JSC] stress/regexp-unicode-bmp-fast-path-code-points.js is timed out
Constellation Jul 24, 2026
99d852c
[CMake] Fix target names for executables
Constellation Jul 24, 2026
4893de6
[Site Isolation] Test camera, microphone, and display-capture permiss…
aestes Jul 24, 2026
ae45cfc
[GFC] Implement initial logic for automatic sizes of replaced elements
sammygill Jul 24, 2026
9fc2f58
[JSC] instanceof prototype-chain IC condition mismatch (release asser…
tadeuzagallo Jul 24, 2026
19adb12
[macOS] NSRefreshController may enter activation loop if window is short
lilyspiniolas Jul 24, 2026
47ce67f
[GFC] Bail out of GFC for a flipped-block (horizontal-bt) writing mode
sammygill Jul 24, 2026
fb048a9
Enable Swift/C++ interop on most recent iOS 26 SDKs
adetaylor Jul 24, 2026
e7bee5e
[cleanup] Introduce LayoutIntegration::FlexIntegrationUtils and route…
alanbaradlay Jul 24, 2026
63e2de4
[model] Remove unused GraphicsLayerCA.h include in HTMLModelElement
ruthvikkonda Jul 24, 2026
0465173
LocalAudioMediaStreamTrackRendererInternalUnit::createAudioUnitIfNeed…
Ahmad-S792 Jul 24, 2026
02454a4
[Web Automation] Add a controlledByExternalAgent automation session c…
burg Jul 24, 2026
a7cc543
[WKBI] Bugzilla comment for PR creation not added to radar
lingcherd Jul 24, 2026
8a65779
[GTK][WPE] Gardening of tests - 2026-07-24
TingPing Jul 24, 2026
fd5b599
Make WebTransport's session a Ref instead of a RefPtr
achristensen07 Jul 24, 2026
240de0c
[JSC] Implement Joint Iteration proposal
heimskr Jul 24, 2026
d799e64
[GLib] Remove outdated failure expectation
TingPing Jul 24, 2026
97187c7
[Memory64] Allow Wasm modules with an oversized initial table size to…
colelao Jul 24, 2026
295e4ae
Unreviewed, reverting 317783@main (f01acf9a4900)
revert-bot Jul 24, 2026
4d0b162
[WebDriver] Support extra attributes of pointer action
lauromoura Jul 24, 2026
14549e6
Web Inspector: Sources: show WebAssembly modules
dcrousso Jul 24, 2026
61b6b90
[Scroll snap] Fix css/css-scroll-snap/snap-after-relayout/multiple-al…
smfr Jul 24, 2026
ffbb564
Web Inspector: Show Parameter Lists for Native DOM methods
dcrousso Jul 24, 2026
9845aff
[JSC] Enable Explicit Resource Management by default
heimskr Jul 24, 2026
104ad1e
[GFC] Resolve percentage/calc padding for grid items on grid area
yulunwu2 Jul 24, 2026
9fe4d62
[cleanup] Move FlexFormattingContext's flex-item render-tree mutation…
alanbaradlay Jul 24, 2026
dca7909
Cache Find in Page Text Markers
colelao Jul 24, 2026
ec3a7ab
AX: value and selection for an editable text field aren't updated tog…
minorninth Jul 24, 2026
2e35f45
[webkitbot] Orphaned .git/index.lock wedges reverts and the periodic …
lingcherd Jul 24, 2026
f98b3f2
[WKCI] filter-test-logs crashes on output that is not valid UTF-8, an…
clopez Jul 24, 2026
ead85dd
[GFC] Remove orphaned constraints from inline-axis grid item sizing f…
yulunwu2 Jul 24, 2026
7651ae8
cagreatamerica.com quirk does not work anymore since it redirects to …
karlcow Jul 24, 2026
743de0a
[GFC] Store a grid item's resolved placement in UnplacedGridItem::Gri…
sammygill Jul 24, 2026
8c7d5cd
Evaluate element segment expressions exactly once per instance
colelao Jul 25, 2026
dad0a7c
[cleanup] Route FlexFormattingContext's last RenderFlexibleBox method…
alanbaradlay Jul 25, 2026
5e28b6c
[JSC] Use op_async_iterator_open and op_async_iterator_next for yield*
Constellation Jul 25, 2026
05aab37
[site-isolation] media/media-play-promise-reject-pause-abort.html is …
jyavenard Jul 25, 2026
8e056fb
[Site Isolation] Web Inspector: finish Network.getResponseBody
the-chenergy Jul 25, 2026
a2efd7e
[macOS wk2 x86_64, GTK, WPE] imported/w3c/web-platform-tests/web-lock…
Jul 25, 2026
ae61725
AudioVideoRendererRemote::finishSeek should handle a superseded seek …
Jul 25, 2026
6c9904c
[cleanup] Pass FlexLayoutItem instead of RenderBox to the remaining F…
alanbaradlay Jul 25, 2026
7b505e5
[cleanup] Move flex-item main-axis measurement and its cross-axis-ove…
alanbaradlay Jul 25, 2026
aba0a6a
[Site Isolation] Expand test coverage for per-site camera, microphone…
aestes Jul 25, 2026
98f32bc
macOS 27: Siri affordance should dismiss immediately after scrolling …
whsieh Jul 25, 2026
757068e
[libwebrtc] Adopt Typed Memory Operations in allocator wrappers
Jul 25, 2026
4a74cec
[CMake] Derive the generators' feature defines from Platform.h on Mac
zakariaridouh Jul 25, 2026
051b271
[Site Isolation] [macOS] Add crash verification test for pinch zoomin…
aprotyas Jul 25, 2026
5d23f73
WebResourceLoader constructor is crashing on GTK bots
youennf Jul 25, 2026
4477de7
Avoid unix.MallocSizeof static analyzer false positive in SegmentedVe…
Jul 25, 2026
7369e2f
Safari main thread can block under RemoteLayerTreeEventDispatcher::ma…
smfr Jul 25, 2026
0b17576
[cleanup] Split the flex-item cross-size override and intrinsic-width…
alanbaradlay Jul 25, 2026
46327f7
Fold the cross-size-override/intrinsic-width scopes into computeMainA…
alanbaradlay Jul 25, 2026
d17570d
[cleanup] Have FlexIntegrationUtils own the flex item's intrinsic-siz…
alanbaradlay Jul 25, 2026
473ae99
Re-baseline the `http/tests/quicklook/secure-document-with-subresourc…
rr-codes Jul 25, 2026
f72201f
lint-test-expectations never applies glib-specific TestExpectations o…
Ahmad-S792 Jul 25, 2026
ca48ed4
[cleanup] Move the flex item's remaining margin, min/max and size ope…
alanbaradlay Jul 25, 2026
0855cc4
[cleanup] Call FlexFormattingUtils statics directly instead of Render…
alanbaradlay Jul 25, 2026
76de9fe
[JSC][Temporal] Resolve supported Chinese and Dangi field resolution
Ithril-Laydec Jul 26, 2026
c6051ef
[cleanup] Stop FlexFormattingContext from reading flex-item margins a…
alanbaradlay Jul 26, 2026
0f79baf
[YARR] `tryReadUnicodeChar` should read the first code unit before te…
sosukesuzuki Jul 26, 2026
9cbcbb9
[JSC] `JSModuleRecord` should not retain the parser's `VariableEnviro…
sosukesuzuki Jul 26, 2026
63d08db
Potential crash under WebViewImpl::insertText() with a zero-length at…
Ahmad-S792 Jul 26, 2026
01aaa3e
scrollIntoView() on an inline element sharing a tall line scrolls to …
Ahmad-S792 Jul 26, 2026
41655c4
Simplify remove-matching-entries loops by using WTF container removeIf()
Jul 26, 2026
13a0a05
[WebGPU] Swift build fails with "cannot infer ownership of foreign re…
Jul 26, 2026
bb5b0c5
REGRESSION(309541@main): Only one HUD responds to mouse clicks in web…
aprotyas Jul 26, 2026
5063c13
[cleanup] Add FlexLayoutItem accessors so FlexFormattingContext stops…
alanbaradlay Jul 26, 2026
faf76fe
[WKCI][ews-build.webkit.org][WPE] The WPE-JSC queue should use build-…
clopez Jul 26, 2026
f2b020b
[cleanup] Move the flex-item measurement caches off RenderFlexibleBox…
alanbaradlay Jul 26, 2026
57ac027
[Site Isolation] REGRESSION(315872@main): Event coordinates are offse…
charliewolfe Jul 26, 2026
bb3059f
[cleanup] Remove the unread PostFlexScrollbarLayout flex layout phase
alanbaradlay Jul 26, 2026
e97b5c4
webkitpy: Fix NameError in Runner.handle() for unknown messages
Ahmad-S792 Jul 26, 2026
1e8fcb4
[WKCI][ews-build.webkit.org][WPE] The WPE-JSC queue should use build-…
clopez Jul 26, 2026
60ed425
[cleanup] Have FlexFormattingContext own FlexIntegrationUtils instead…
alanbaradlay Jul 27, 2026
bb1d958
[site-isolation] media/audio-session-category-at-most-recent-playback…
jyavenard Jul 27, 2026
da6b7f1
Potential crash pasting with no selection due to missing null-check o…
Ahmad-S792 Jul 27, 2026
05c83a6
[libpas] Fix MTE_overrideEnablementForJavaScriptCore=true incorrectly…
RoundofThree Jul 27, 2026
34520da
registerProcessor() error messages report the processor name instead …
Ahmad-S792 Jul 27, 2026
1a7d999
std::log2(AudioSession::bufferSize()) invokes undefined behavior when…
Ahmad-S792 Jul 27, 2026
bf7ca92
OfflineAudioContext noise injection hangs on feedback cycles in the a…
Ahmad-S792 Jul 27, 2026
66df0f0
DelayDSPKernel::m_desiredDelayFrames is uninitialized, causing undefi…
Ahmad-S792 Jul 27, 2026
8728f4e
OscillatorNode::m_type has no default member initializer, leaving it …
Ahmad-S792 Jul 27, 2026
27d3de8
OscillatorNode with a-rate automation ignores sub-sample start time a…
Ahmad-S792 Jul 27, 2026
71f03e4
RealtimeAnalyser heap-allocates a temporary FFT buffer on every analy…
Ahmad-S792 Jul 27, 2026
768fd7d
exponentialRampToValueAtTime() loses precision by accumulating the ra…
Ahmad-S792 Jul 27, 2026
d812eb9
AudioBufferSourceNode output channel count ignores actively-processin…
Ahmad-S792 Jul 27, 2026
c36c460
AudioNode::connect(AudioParam&, unsigned) acquires the graph lock bef…
Ahmad-S792 Jul 27, 2026
05c6115
MediaStreamAudioSourceNode::setFormat() sets m_sourceNumberOfChannels…
Ahmad-S792 Jul 27, 2026
af61b96
N[cleanup] Have LayoutIntegration::FlexLayout own the per-layout flex…
alanbaradlay Jul 27, 2026
244cd98
generateWasmOpsHeader.py makes an error without UTF-8 environments
r-otaka Jul 27, 2026
17ba5b9
[GFC] Crash when certain tracks get marked as inflexible
sammygill Jul 27, 2026
a2af12e
createContextualFragment() leaves nested <head>/<body> behind when st…
Ahmad-S792 Jul 27, 2026
81156f0
SVGLength.value returns raw negative numbers for r/rx/ry/width/height…
karlcow Jul 27, 2026
e4afe2d
Service workers should be able to get stream upload data
youennf Jul 27, 2026
e25c1ee
DeviceIdHashSaltStorage generates hash salts shorter than the validat…
cdumez Jul 27, 2026
e7237c0
Editor::Command::execute() re-entrancy check is a permanent tautology…
Ahmad-S792 Jul 27, 2026
5f7ab40
[Web Inspector] InspectorAuditResourcesObject::getResources() is O(n²…
Ahmad-S792 Jul 27, 2026
c315a71
RemoteAudioDestination plays stale buffer contents instead of silence…
cdumez Jul 27, 2026
7815063
Null-check m_currentUserMediaRequest before denying in requestSystemV…
cdumez Jul 27, 2026
116a737
Legacy EME generateKeyRequest returns a bogus destination URL due to …
cdumez Jul 27, 2026
34b6ff5
[GStreamer][MSE] Minor fixes for AppendPipeline
philn Jul 27, 2026
0f10644
Unreviewed tests gardening of 2026-07-27.
Scony Jul 27, 2026
278596a
[cleanup] Move updateFlexContainerLogicalHeight to FlexIntegrationUtils
alanbaradlay Jul 27, 2026
2178fce
[cleanup] Move flex item list, painting, hit-testing and margin trimm…
alanbaradlay Jul 27, 2026
970134c
LayoutTests: Update Dynamic Code Brand Checks WPT tests
Lochipi Jul 27, 2026
b7fca84
[GFC][Attempt 2] Relax alignment checks a bit.
sammygill Jul 27, 2026
3ec8c62
[Site Isolation] Define a MediaSessionManagerClient to route audio-se…
eric-carlson Jul 27, 2026
cd91e7f
[JSC] Add fast flag for ToPrimitive(Object) calls in runtime
Constellation Jul 27, 2026
38ad658
[cleanup] Have LayoutIntegration::FlexLayout store the flex layout re…
alanbaradlay Jul 27, 2026
0d950bc
appearance: base-select select styling lacks adequate polish and prof…
fantasai Jul 27, 2026
98d0367
[YARR] A ^ inside a parenthesis that can match empty does not anchor …
Constellation Jul 27, 2026
f794faf
Add RETURNS_RETAINED to nw_webtransport_metadata_copy_sec_protocol_me…
achristensen07 Jul 27, 2026
b128ddd
[YARR] The dot-star-wrapped-expression optimization is wrong for stic…
Constellation Jul 27, 2026
85ec3f6
Stream IPC message receivers can call directly into Swift
ruthvikkonda Jul 27, 2026
92eed78
Redundant shadowed fillToFrameTrunc computation in AudioParamTimeline…
Ahmad-S792 Jul 27, 2026
19690ae
[Cocoa] Enable WebRTC AV1 by default
youennf Jul 27, 2026
7cf592e
Unreviewed, reverting 317893@main (ffbb564bcb2c)
Constellation Jul 27, 2026
87b49d2
Remove unused AudioNodeOutput::InputsIterator typedef
Ahmad-S792 Jul 27, 2026
479edb2
[Site Isolation] Web Inspector: Implement Network.getSerializedCertif…
the-chenergy Jul 27, 2026
b1c6951
[cleanup] Move the flex percentage-resolution definiteness checks off…
alanbaradlay Jul 27, 2026
690ab3f
Support external and data: URL filter references on HTML elements
nullhook Jul 27, 2026
79c1efa
Scroll pocket may obscure web content in fullscreen mode
lilyspiniolas Jul 27, 2026
91b36f5
Unreviewed, suppress test failures on different stack height
Constellation Jul 27, 2026
0825ca6
[Site Isolation] [iOS] Tapping sometimes doesn't work when shared pro…
rniwa Jul 27, 2026
9babc12
AudioNode::scriptExecutionContext() uses const_cast despite a const c…
Ahmad-S792 Jul 27, 2026
28b979b
[Site Isolation] Web Inspector: Implement Network.loadResource
the-chenergy Jul 27, 2026
ab7cea8
[CSS Scroll Snap] Aligned snap targets are not selected in tree order
Ahmad-S792 Jul 27, 2026
c3dc693
[Testing] Add more mock- tests for EME
jernoble Jul 27, 2026
f67b799
REGRESSION(316238@main): YouTube captions become infinitely tall in i…
jernoble Jul 27, 2026
ee0c88f
Replace most of NetworkSoftLink with HAVE(WEBTRANSPORT)
achristensen07 Jul 27, 2026
8b8b3e5
[bmalloc] MADV_ZERO support latch is inverted in VMAllocate.cpp
dhecht Jul 27, 2026
1da6dfc
[cleanup] Hide the flex formatting context's helper class internals
alanbaradlay Jul 27, 2026
103ad17
[WPE Platform] New internal API to create a touch event with multiple…
fujii Jul 27, 2026
64e4e8a
Add log messaging relay to the Model Process
amarchenko Jul 27, 2026
c3244cf
REGRESSION (iOS 27 beta): AudioContext.decodeAudioData() fails with E…
Ahmad-S792 Jul 27, 2026
58a67ed
[REBASELINE]PROGRESSION(iOS 26.5): [ iOS ] imported/w3c/web-platform-…
robert-jenner Jul 27, 2026
e64287e
providerDidCloseNotifications() stops closing notifications after the…
cdumez Jul 27, 2026
906987b
[TestWebKitAPI] Fix missing dependency on _WebKit_SwiftUI for the Tes…
Jul 27, 2026
9bb7a30
Subgrid with large column-gap overflows max-width-constrained parent
Ahmad-S792 Jul 27, 2026
e1fc460
Add removeIf() to WTF::RobinHoodHashTable and adopt it to simplify re…
Jul 27, 2026
b12061e
[GFC] Remove GridItemHasPercentOrCalcPadding avoidance reason
yulunwu2 Jul 27, 2026
75881e2
WebVTT cue overlap avoidance algorithm should always move cue shortes…
danae404 Jul 27, 2026
67c65bc
[WKCI][ews-build.webkit.org] Results database queries fail for the GT…
clopez Jul 27, 2026
5de9040
[cleanup] Have the flex algorithm own which margins it trimmed
alanbaradlay Jul 27, 2026
808e771
Out-of-bounds read in CtapHidDriver when a CTAPHID_INIT response is t…
cdumez Jul 27, 2026
d202bed
[Memory64] Implement Table64 in the BBQ tier
colelao Jul 27, 2026
3c3952e
[Site Isolation] IME composition is applied to the wrong process for …
zakariaridouh Jul 27, 2026
f1fe25b
Null std::optional dereference in CtapAuthenticator when a full key s…
cdumez Jul 27, 2026
65d380f
[Site Isolation] Dictation is applied to the wrong process for inputs…
zakariaridouh Jul 27, 2026
204a56f
[libwebrtc] Build upstream unit tests using new `Unit Tests` aggregat…
Jul 27, 2026
656d3c3
[JSC] Add an 8-byte SWAR fast path to JSON.stringify's stringCopySame…
hyjorc1 Jul 27, 2026
1e43057
[JSC][YARR] Extend first-character filter more
Constellation Jul 27, 2026
578c895
[Build perf] CMake benchmark should target SDK version, not host OS v…
emw-apple Jul 27, 2026
d6603cd
WebKitTestRunner: Fix out-of-bounds read in iOS PlatformWebView::keyW…
cdumez Jul 27, 2026
ced1eaf
[WGSL] Fix uninitialized VisibilityValidator::m_stage member
Jul 28, 2026
b8b19de
[ANGLE] Copy angle_end2end_tests_expectations.txt to build output folder
roberto-apple Jul 28, 2026
3e61cad
Unreviewed, reverting 318000@main (ee0c88f3df17)
revert-bot Jul 28, 2026
6de57e1
Update safer C++ expectations (2026-07-27)
rniwa Jul 28, 2026
0bde437
[AppKit Gestures] Support directional scroll locking for diagonal scr…
rr-codes Jul 28, 2026
f2429bc
[Win] Build fixes August 27
iangrunert Jul 28, 2026
b28c618
[Win] Configure ccache via inline KEY=VALUE arguments
iangrunert Jul 28, 2026
a0992f0
[GFC] Automatic minimum size should not resolve percentages against u…
sammygill Jul 28, 2026
a009b4c
[GFC] Consolidate the min/max-content constraint test and per-track c…
yulunwu2 Jul 28, 2026
0e3f9c7
[GFC] Use UnplacedGridItem::GridPosition when determining item positi…
sammygill Jul 28, 2026
d9c65d6
[Web Inspector] resource data for non-buffered resources leaks across…
Ahmad-S792 Jul 28, 2026
98bd399
Async image decoding may be requested on a worker thread
shallawa Jul 28, 2026
546057b
[WebKit] Swift build fails with "cannot infer ownership of foreign re…
Jul 28, 2026
b644ead
[Site Isolation] A cross-site frame's FrameNetworkingContext is never…
rr-codes Jul 28, 2026
3210023
Populate replacement data for MockParentalControlsURLFilter
jelee53 Jul 28, 2026
21a90b4
[SwiftUI WebKit API] Expose WebPage and related types as SPI on watch…
rr-codes Jul 28, 2026
e5d3b56
Crash in NavigateEvent::finish when document element is removed insid…
kmonsen Jul 28, 2026
4c947c1
Do not allow network fallback in case of a disturbed fetch event requ…
youennf Jul 28, 2026
b0957d9
Service worker fetch event request body cancellation should be propag…
youennf Jul 28, 2026
15bfcab
Unreviewed, address unexpected safer cpp issue on the bot
cdumez Jul 28, 2026
04e3d47
Limit URL size at the IPC boundary to match Chrome/Blink
cdumez Jul 28, 2026
fdc1fa6
NumericConstraint::valueForCapabilityRange() ignores a valid current …
Ahmad-S792 Jul 28, 2026
17afba5
LibWebRTCAudioModule has a data race on m_isPlaying and m_audioTransport
Ahmad-S792 Jul 28, 2026
d881d6b
MediaStreamPrivate constructor copies the tracks vector instead of mo…
Ahmad-S792 Jul 28, 2026
747bb57
DisplayCaptureSourceCocoa::generateFrame() first switchOn takes Varia…
Ahmad-S792 Jul 28, 2026
c2c858a
RealtimeIncomingAudioSourceCocoa::OnData rescales the frame counter a…
Ahmad-S792 Jul 28, 2026
6cb1077
makeStringByReplacingAll() uses a scalar scan instead of SIMD-acceler…
Ahmad-S792 Jul 28, 2026
2a2036f
AudioParam::finalValue() returns an uninitialized float when calculat…
Ahmad-S792 Jul 28, 2026
2826db8
Split the start/end block in FrameSelection::respondToNodeModificatio…
Ahmad-S792 Jul 28, 2026
b64f79b
Remove incorrect `NODELETE` annotation from `PropertySetCSSDescriptor…
iidmsa Jul 28, 2026
9f0d148
[GStreamer] Any WebCodecs VideoEncoder use crashes WebKitWebProcess (…
philn Jul 28, 2026
bff3249
Cancel the in-flight SpeculativeLoad when a stale-while-revalidate re…
cdumez Jul 28, 2026
f8352ee
Set timeOrigin to align with spec, even when BCG switches take place.
yoavweiss Jul 28, 2026
f30b741
Install TestWebKitAPI and API-test executables on tools builds
Jul 28, 2026
41daa01
Add missing braces in the WGSL alias analysis pass
Jul 28, 2026
8354048
[JSC] Allocate DFG `BasicBlock::intersectionOfPastValuesAtHead` only …
sosukesuzuki Jul 28, 2026
0731b27
[JSC] `Iterator.zip` should use null-prototype objects for `GetOption…
sosukesuzuki Jul 28, 2026
09917ef
[JSC] Add missing `U_FAILURE(status)` for `actualLunisolarMonthLength`
sosukesuzuki Jul 28, 2026
385d8e2
REGRESSION(318033@main) Crash in Layout::sizeTracksToFitNonSpanningIt…
lauromoura Jul 28, 2026
01c6bd3
[WebDriver] Execute Script serializes non-Element DOM nodes as elemen…
lauromoura Jul 28, 2026
182d57a
[cleanup] Have the flex algorithm place items in flow-relative coordi…
alanbaradlay Jul 28, 2026
7a767a0
[GTK][WPE] SkiaCompositingLayer: incorrect z-ordering at Snow Stack
carlosgcampos Jul 28, 2026
c1b2e8c
Update fetch/compression-dictionary from WPT
fred-wang Jul 28, 2026
bbc90c0
[Site Isolation] [macOS] PDF HUD in cross origin <iframe src=pdf> is …
aprotyas Jul 28, 2026
5eda850
Add a debug UI for the PDF HUD
aprotyas Jul 28, 2026
f8196a9
[WebDriver] Cannot access elements inside a closed shadow tree ("no s…
lauromoura Jul 28, 2026
7be8af5
[GFC] Apply a grid item's negative line offset when constructing Unpl…
sammygill Jul 28, 2026
9f9370c
[JSC] Fix JSON stringify regression due to toJSON check
Constellation Jul 28, 2026
2d50d7a
Add tests verifying cross-origin iframe window.alert() behavior
beidson Jul 28, 2026
18ea1bb
[Digital Credentials] Start to parse OpenID4VP signed and multisigned…
pascoej Jul 28, 2026
eb3b8a3
Make `BackForwardGoToItem` asynchronous
charliewolfe Jul 28, 2026
e3257d1
REGRESSION(318040@main): Broke internal watchOS and tvOS builds
aprotyas Jul 28, 2026
772d7d3
Unreviewed, reverting 318040@main (21a90b4135be)
aprotyas Jul 28, 2026
1d355c2
[JSC] Add an 8-byte SWAR fast path to JSON.stringify's stringCopyUpco…
hyjorc1 Jul 28, 2026
000ed9b
[cleanup] Remove the column-reverse placement pass from the flex algo…
alanbaradlay Jul 28, 2026
a7a8712
[Wasm] Remove stale spec tests
kmiller68 Jul 28, 2026
1d489b3
[Scroll snap] css/css-scroll-snap/overscroll-snap.html fails in Safari
smfr Jul 28, 2026
32946d4
Re-land [SwiftUI WebKit API] Expose WebPage and related types as SPI …
rr-codes Jul 28, 2026
7b79e6d
Serialization of @page {size: letter portrait;} is incorrect. WPT fai…
TheBoyRoy05 Jul 28, 2026
4a95db7
[ iOS ] http/tests/site-isolation/fullscreen.html is a constant text …
Jul 28, 2026
1d57cc0
Check willContinueLoading for iframes when provisional frame loads fail.
jelee53 Jul 28, 2026
9e5b3b7
[HTML-in-Canvas] Add a feature control flag to enable HTML-in-Canvas
shallawa Jul 28, 2026
3996020
[Cookie Store] Preserve cookie change subscription list order
charliewolfe Jul 28, 2026
b205d90
Fix safer C++ failures in Source/WebCore/layout/flex
alanbaradlay Jul 28, 2026
33e302a
[GLIB] Add log fallback when journald is not reachable
lauromoura Jul 28, 2026
22d9c3a
Reloading a local file after a WebContent process crash can fail with…
swpatters Jul 28, 2026
2dbe57d
The check for Reviewed-by should check at the start of the line
TheBoyRoy05 Jul 28, 2026
184ee4c
[Memory64] Implement Table64 in the OMG tier
colelao Jul 28, 2026
d18773e
[libpas] Add evicted, read-faulted backing coverage to AllocationZero…
dhecht Jul 28, 2026
1cc7b9f
moveBefore() doesn't iterate through shadow roots
lukewarlow Jul 28, 2026
3b267af
REGRESSION(314501@main): On flights.google.com, can't use backspace t…
sammygill Jul 28, 2026
2e37adc
NetworkProcess::allowEvaluatedURL may not call its completionHandler
jelee53 Jul 28, 2026
49da25f
Record squash-sync ancestor 01aaa3e0be0c for clean merge-base
robobun Jul 28, 2026
06ee863
Merge remote-tracking branch 'upstream/main' into bun/upgrade-to-2e37…
robobun Jul 28, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
const value = { wide: "\u{1F600}" };
for (let i = 0; i < 200; ++i)
value["abcdefgh" + i] = "ijklmnop" + i;
for (let i = 0; i < 5e4; ++i)
JSON.stringify(value);
70 changes: 70 additions & 0 deletions JSTests/stress/iterator-zip-object-prototype-pollution.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
//@ requireOptions("--useJointIteration=1")

function shouldBe(actual, expected) {
if (actual !== expected)
throw new Error(`bad value: ${actual}, expected ${expected}`);
}

function makeIterator(values, log) {
var index = 0;
return {
next() {
if (index < values.length)
return { value: values[index++], done: false };
return { value: undefined, done: true };
},
return() {
log.push("return");
return { value: undefined, done: true };
},
[Symbol.iterator]() { return this; }
};
}

// GetOptionsObject must produce a null-prototype object when options is undefined,
// so "mode" and "padding" lookups do not read through Object.prototype.
{
Object.defineProperty(Object.prototype, "mode", { value: "strict", configurable: true });
Object.defineProperty(Object.prototype, "padding", { value: null, configurable: true });
try {
shouldBe(JSON.stringify(Array.from(Iterator.zip([[1, 2, 3], [4, 5]]))), "[[1,4],[2,5]]");
shouldBe(JSON.stringify(Array.from(Iterator.zipKeyed({ a: [1, 2, 3], b: [4, 5] }))), `[{"a":1,"b":4},{"a":2,"b":5}]`);
} finally {
delete Object.prototype.mode;
delete Object.prototype.padding;
}
}

// The synthetic underlying iterator's return() must be installed on a null-prototype object.
// A non-writable Object.prototype.return must not make zip creation throw.
{
Object.defineProperty(Object.prototype, "return", { value: 42, writable: false, configurable: true });
try {
var log = [];
shouldBe(JSON.stringify(Array.from(Iterator.zip([makeIterator([1], log), makeIterator([2], log)]))), "[[1,2]]");
shouldBe(JSON.stringify(Array.from(Iterator.zipKeyed({ a: makeIterator([1], log), b: makeIterator([2], log) }))), `[{"a":1,"b":2}]`);
} finally {
delete Object.prototype.return;
}
}

// An Object.prototype.return accessor must not swallow the closure: closing the zip result
// closes the underlying iterators.
{
Object.defineProperty(Object.prototype, "return", { get() { return undefined; }, set(v) { }, configurable: true });
try {
var log = [];
var zipped = Iterator.zip([makeIterator([1, 2, 3], log), makeIterator([4, 5, 6], log)]);
zipped.next();
zipped.return();
shouldBe(log.length, 2);

log = [];
var zippedKeyed = Iterator.zipKeyed({ a: makeIterator([1, 2, 3], log), b: makeIterator([4, 5, 6], log) });
zippedKeyed.next();
zippedKeyed.return();
shouldBe(log.length, 2);
} finally {
delete Object.prototype.return;
}
}
71 changes: 71 additions & 0 deletions JSTests/stress/json-stringify-enumerable-to-json.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
function shouldBe(actual, expected)
{
if (actual !== expected)
throw new Error('bad value: ' + actual);
}

function shouldThrow(func, errorType)
{
let error;
try {
func();
} catch (e) {
error = e;
}
if (!(error instanceof errorType))
throw new Error(`bad error: ${String(error)}`);
}

// FastStringifier's property loop only tests for toJSON on the DontEnum branch, since that
// branch is the one that would otherwise skip the entry. An enumerable own toJSON needs no
// such test: a callable one fails the fast path when its value is appended, and a
// non-callable one is serialized as an ordinary property, which is what the loop does.
// These cases cover that reasoning; the expectations match V8.

// An enumerable own callable toJSON is invoked.
{
shouldBe(JSON.stringify({ a: 1, toJSON() { return 'method'; } }), '"method"');
shouldBe(JSON.stringify({ a: 1, toJSON: () => 'arrow' }), '"arrow"');
shouldBe(JSON.stringify({ a: 1, toJSON: function () { return { b: 2 }; } }), '{"b":2}');
shouldBe(JSON.stringify({ a: 1, toJSON: function (key) { return key; } }), '""');
shouldBe(JSON.stringify({ key: { a: 1, toJSON: function (key) { return key; } } }), '{"key":"key"}');
shouldBe(JSON.stringify({ nested: { a: 1, toJSON() { return 42; } } }), '{"nested":42}');
shouldBe(JSON.stringify([{ a: 1, toJSON() { return [1]; } }]), '[[1]]');
shouldBe(JSON.stringify({ a: 1, toJSON: (function () { }).bind(null) }), undefined);
shouldBe(JSON.stringify({ a: 1, toJSON: new Proxy(function () { return 'proxy'; }, { }) }), '"proxy"');
shouldBe(JSON.stringify({ a: 1, toJSON: function* () { } }), '{}');
shouldThrow(() => JSON.stringify({ a: 1, toJSON: class C { } }), TypeError);
}

// An enumerable own non-callable toJSON is serialized as an ordinary property.
{
shouldBe(JSON.stringify({ a: 1, toJSON: 42 }), '{"a":1,"toJSON":42}');
shouldBe(JSON.stringify({ a: 1, toJSON: 'str' }), '{"a":1,"toJSON":"str"}');
shouldBe(JSON.stringify({ a: 1, toJSON: true }), '{"a":1,"toJSON":true}');
shouldBe(JSON.stringify({ a: 1, toJSON: null }), '{"a":1,"toJSON":null}');
shouldBe(JSON.stringify({ a: 1, toJSON: undefined }), '{"a":1}');
shouldBe(JSON.stringify({ a: 1, toJSON: { b: 2 } }), '{"a":1,"toJSON":{"b":2}}');
shouldBe(JSON.stringify({ a: 1, toJSON: [1, 2] }), '{"a":1,"toJSON":[1,2]}');
shouldBe(JSON.stringify({ toJSON: 'only' }), '{"toJSON":"only"}');
}

// The fast path and the general stringifier must agree, with and without a gap.
{
let values = [
{ a: 1, toJSON() { return 'method'; } },
{ a: 1, toJSON: 42 },
{ a: 1, toJSON: { nested: 1 } },
{ a: 1, b: 2, c: 3, toJSON: 7 },
{ toJSON: undefined, a: 1 },
{ toJSON: 'only' },
];
for (let value of values) {
for (let space of [undefined, 2, '\t'])
shouldBe(JSON.stringify(value, null, space), JSON.stringify(value, (key, x) => x, space));
}
}

for (let i = 0; i < testLoopCount; ++i) {
shouldBe(JSON.stringify({ a: 1, toJSON() { return 'hot'; } }), '"hot"');
shouldBe(JSON.stringify({ a: 1, toJSON: 42 }), '{"a":1,"toJSON":42}');
}
95 changes: 95 additions & 0 deletions JSTests/stress/object-toprimitive-fastpath-deopt.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,95 @@
function shouldBe(a, b) { if (a !== b) throw new Error("bad: " + a + " !== " + b); }

// Scenario 1: overriding Object.prototype.toString must deopt all plain objects, then re-engage.
(function () {
function O() {}
var a = new O();
for (var i = 0; i < testLoopCount; ++i)
shouldBe(`${a}`, "[object Object]");
a < 1;

var originalToString = Object.prototype.toString;
// Delete first: a plain reassignment leaves the memoized mode unable to return to Fast.
delete Object.prototype.toString;
Object.prototype.toString = function () { return "custom"; };
try {
shouldBe(`${a}`, "custom");
shouldBe(a + "", "custom");
shouldBe(String(a), "custom");

var b = new O();
shouldBe(`${b}`, "custom");
} finally {
// Restore as non-enumerable; a plain assignment would leave toString enumerable.
delete Object.prototype.toString;
Object.defineProperty(Object.prototype, "toString", {
value: originalToString,
writable: true,
enumerable: false,
configurable: true,
});
}

for (var i = 0; i < testLoopCount; ++i)
shouldBe(`${a}`, "[object Object]");
a < 1;
})();

// Scenario 2: an own Symbol.toPrimitive added after warmup must be honored, then removable.
(function () {
function O() {}
var a = new O();
for (var i = 0; i < testLoopCount; ++i) {
shouldBe(`${a}`, "[object Object]");
shouldBe(a < 100, false);
}

a[Symbol.toPrimitive] = function (hint) {
if (hint === "number")
return 42;
if (hint === "string")
return "forty-two";
return "default-forty-two";
};

shouldBe(a < 100, true);
shouldBe(100 < a, false);
shouldBe(a + 1, "default-forty-two1");
shouldBe(`${a}`, "forty-two");
shouldBe(String(a), "forty-two");
shouldBe(Number(a), 42);

delete a[Symbol.toPrimitive];
for (var i = 0; i < testLoopCount; ++i) {
shouldBe(`${a}`, "[object Object]");
shouldBe(a < 100, false);
}
})();

// Scenario 3: a prototype Symbol.toStringTag added after warmup must be honored, then removable.
(function () {
function Tagged() {}
var obj = new Tagged();
for (var i = 0; i < testLoopCount; ++i) {
shouldBe(Object.prototype.toString.call(obj), "[object Object]");
shouldBe(`${obj}`, "[object Object]");
}
obj < 1;

Tagged.prototype[Symbol.toStringTag] = "Tag";

shouldBe(Object.prototype.toString.call(obj), "[object Tag]");
shouldBe(`${obj}`, "[object Tag]");
shouldBe(obj + "", "[object Tag]");
shouldBe(String(obj), "[object Tag]");

function Plain() {}
var plain = new Plain();
shouldBe(`${plain}`, "[object Object]");

delete Tagged.prototype[Symbol.toStringTag];
for (var i = 0; i < testLoopCount; ++i) {
shouldBe(`${obj}`, "[object Object]");
obj < 1;
}
})();
127 changes: 127 additions & 0 deletions JSTests/stress/object-toprimitive-fastpath-overrides.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,127 @@
function shouldBe(a, b) { if (a !== b) throw new Error("bad: " + a + " !== " + b); }

// Objects with an own or exotic override must always take the full, spec-compliant slow path.

// own valueOf returning a number.
(function () {
var v = { valueOf() { return 5; } };
shouldBe(v < 10, true);
shouldBe(v + 1, 6);
})();

// own toString.
(function () {
var s = { toString() { return "z"; } };
shouldBe(`${s}`, "z");
})();

// own Symbol.toPrimitive.
(function () {
var tp = { [Symbol.toPrimitive](hint) { return hint; } };
shouldBe(`${tp}`, "string");
shouldBe(Number.isNaN(+tp), true);
shouldBe(tp + "", "default");
})();

// own Symbol.toStringTag.
(function () {
var tag = { [Symbol.toStringTag]: "X" };
shouldBe(`${tag}`, "[object X]");
})();

// Mixed-operand relational compares against a plain object.
(function () {
var o = {};
shouldBe(o < 5, false);
shouldBe(1 < o, false);
shouldBe("a" < o, false);
shouldBe(o < "b", true);
shouldBe(o <= 5, false);
shouldBe(5 <= o, false);
shouldBe(o > 5, false);
shouldBe(o >= 5, false);
})();

// Arrays use their own fast path, not the plain-object one.
(function () {
shouldBe([1, 2] < [1, 3], true);
})();

// Object.create(null) has no toString/valueOf/toPrimitive, so ToPrimitive throws.
(function () {
var n = Object.create(null);
var threw = false;
try {
`${n}`;
} catch (e) {
threw = e instanceof TypeError;
}
shouldBe(threw, true);

threw = false;
try {
n + 1;
} catch (e) {
threw = e instanceof TypeError;
}
shouldBe(threw, true);

threw = false;
try {
n < 5;
} catch (e) {
threw = e instanceof TypeError;
}
shouldBe(threw, true);
})();

// Object identity (a == b) is unaffected, same-realm and cross-realm.
(function () {
var a = {}, b = {};
shouldBe(a == b, false);
shouldBe(a == a, true);

var other = createGlobalObject();
var otherObjectCtor = other.Object;
var crossA = new otherObjectCtor();
var crossB = new otherObjectCtor();
shouldBe(crossA == crossB, false);
shouldBe(crossA == crossA, true);
})();

// Cross-realm: the verdict must be computed against the object's own realm, so an override on
// the other realm's Object.prototype.toString is honored when coercing from the main realm.
(function () {
var other = createGlobalObject();
var o = new other.Object();

var p = new other.Object();
for (var i = 0; i < testLoopCount; ++i) {
o < p;
o <= p;
`${o}`;
}

shouldBe(`${o}`, "[object Object]");
shouldBe(o + "", "[object Object]");
shouldBe(String(o), "[object Object]");
shouldBe(o < o, false);
shouldBe(o <= o, true);
shouldBe(o > o, false);
shouldBe(o >= o, true);

other.Object.prototype.toString = function () { return "custom-other-realm"; };
shouldBe(`${o}`, "custom-other-realm");
shouldBe(o + "", "custom-other-realm");
shouldBe(String(o), "custom-other-realm");
})();

// The default fast path coexists with all the overridden cases above without cross-contamination.
(function () {
function Plain() {}
var p = new Plain();
for (var i = 0; i < testLoopCount; ++i) {
shouldBe(`${p}`, "[object Object]");
shouldBe(p < 5, false);
}
})();
Loading
Loading