Timeline



Jan 4, 2021:

11:23 PM Changeset in webkit [271144] by Tadeu Zagallo
  • 2 edits in trunk/Source/JavaScriptCore

propertyNameEnumerator must check it can still take the fast path after getGenericPropertyNames
https://bugs.webkit.org/show_bug.cgi?id=219957
<rdar://71156284>

Reviewed by Yusuke Suzuki.

We need to check if we still canAccessPropertiesQuicklyForEnumeration on
structureAfterGettingPropertyNames, since we might call out out to a proxy's
getPrototypeOf callback through getGenericPropertyNames.

  • runtime/JSPropertyNameEnumerator.h:

(JSC::propertyNameEnumerator):

11:19 PM Changeset in webkit [271143] by Tadeu Zagallo
  • 5 edits in trunk/Source/JavaScriptCore

Validate every instruction in AssemblerBuffer
https://bugs.webkit.org/show_bug.cgi?id=218104
<rdar://problem/69433094>

Reviewed by Saam Barati.

  • assembler/AssemblerBuffer.cpp:

(JSC::threadSpecificAssemblerHashes):

  • assembler/AssemblerBuffer.h:

(JSC::AssemblerBuffer::AssemblerBuffer):
(JSC::AssemblerBuffer::~AssemblerBuffer):
(JSC::AssemblerBuffer::releaseAssemblerData):
(JSC::AssemblerBuffer::releaseAssemblerHashes):
(JSC::AssemblerBuffer::putIntegralUnchecked):
(JSC::AssemblerBuffer::grow):
(JSC::AssemblerBuffer::outOfLineGrow):
(JSC::ARM64EHash::update): Deleted.
(JSC::ARM64EHash::finalHash const): Deleted.
(): Deleted.
(JSC::AssemblerBuffer::hash const): Deleted.

  • assembler/LinkBuffer.cpp:

(JSC::LinkBuffer::copyCompactAndLinkCode):

  • assembler/LinkBuffer.h:
11:11 PM Changeset in webkit [271142] by commit-queue@webkit.org
  • 9 edits
    1 add in trunk/LayoutTests

Add missing support/refresh.sub.html
https://bugs.webkit.org/show_bug.cgi?id=220230

Patch by Rob Buis <rbuis@igalia.com> on 2021-01-04
Reviewed by Sam Weinig.

LayoutTests/imported/w3c:

Change r249886 removed support/refresh.sub.html, but it is needed for some tests to pass.

  • web-platform-tests/html/semantics/document-metadata/the-meta-element/pragma-directives/attr-meta-http-equiv-refresh/parsing-expected.txt:
  • web-platform-tests/html/semantics/document-metadata/the-meta-element/pragma-directives/attr-meta-http-equiv-refresh/remove-from-document-expected.txt:
  • web-platform-tests/html/semantics/document-metadata/the-meta-element/pragma-directives/attr-meta-http-equiv-refresh/support/refresh.sub.html: Added.

LayoutTests:

Unskip test that passes now.

  • TestExpectations:
  • platform/gtk/TestExpectations:
  • platform/ios/TestExpectations:
  • platform/mac/TestExpectations:
  • platform/wpe/TestExpectations:
9:01 PM Changeset in webkit [271141] by commit-queue@webkit.org
  • 4 edits
    11 adds in trunk

[WASM-References] Fix data section parsing and add more tests from ref-types
https://bugs.webkit.org/show_bug.cgi?id=220235

Patch by Dmitry Bezhetskov <dbezhetskov> on 2021-01-04
Reviewed by Yusuke Suzuki.

JSTests:

Add more tests from ref-types spec.

  • wasm.yaml:
  • wasm/references-spec-tests/binary-leb128.wast.js: Added.
  • wasm/references-spec-tests/binary.wast.js: Added.
  • wasm/references-spec-tests/br_table.wast.js: Added.
  • wasm/references-spec-tests/call_indirect.wast.js: Added.
  • wasm/references-spec-tests/custom.wast.js: Added.
  • wasm/references-spec-tests/data.wast.js: Added.
  • wasm/references-spec-tests/exports.wast.js: Added.
  • wasm/references-spec-tests/global.wast.js: Added.
  • wasm/references-spec-tests/imports.wast.js: Added.
  • wasm/references-spec-tests/memory_grow.wast.js: Added.
  • wasm/references-spec-tests/table.wast.js: Added.

Source/JavaScriptCore:

We should read leb128 unsigned integer instead of just one byte for
Data entry flag.

  • wasm/WasmSectionParser.cpp:

(JSC::Wasm::SectionParser::parseData):

4:48 PM Changeset in webkit [271140] by Fujii Hironori
  • 6 edits in trunk/LayoutTests

[WinCairo] Unreviewed test gardening

  • platform/wincairo/TestExpectations:
  • platform/wincairo/css1/text_properties/vertical_align-expected.txt:
  • platform/wincairo/css2.1/t100801-c544-valgn-03-d-agi-expected.txt:
  • platform/wincairo/fast/dom/HTMLProgressElement/progress-bar-value-pseudo-element-expected.txt:
  • platform/wincairo/fast/dom/HTMLProgressElement/progress-element-expected.txt:
3:17 PM Changeset in webkit [271139] by Fujii Hironori
  • 2 edits in trunk/Source/ThirdParty/ANGLE

[WinCairo][CMake][MSBuild][ANGLE] entry_points_*.h was generated twice both in LibGLESv2EntryPointsHeaders and GLESv2 projects
https://bugs.webkit.org/show_bug.cgi?id=220251

Reviewed by Kenneth Russell.

WinCairo port is supporting both CMake Visual Studio generator and
Ninja generator. However, CMake Visual Studio builds was failing
as the following error.

ANGLE\Headers\ANGLE/entry_points_egl.h(13,10): fatal error C1083: Cannot open include file: 'export.h': No such file or directory (compiling source file ...\texmap\ANGLEContext.cpp)

entry_points_egl.h was generated twice both in
LibGLESv2EntryPointsHeaders and GLESv2 projects. However, the
post-process script adjust-angle-include-paths.py was invoked only
in LibGLESv2EntryPointsHeaders project.

GLESv2 target needs to have a direct or indirect dependency to
LibGLESv2EntryPointsHeaders target for CMake Visual Studio
generator to eliminate duplicated custom commands.

  • CMakeLists.txt: Added add_dependencies(GLESv2 LibGLESv2EntryPointsHeaders) only if WIN32.
2:54 PM Changeset in webkit [271138] by Lauro Moura
  • 5 edits in trunk

[WebXR][WPE] Build fails without openxr installed
https://bugs.webkit.org/show_bug.cgi?id=220250

Reviewed by Carlos Alberto Lopez Perez.

.:

  • Source/cmake/FindOpenXR.cmake: Fix some names and export

OPENXR_FOUND var.

  • Source/cmake/OptionsWPE.cmake: Fail config is WebXR is enabled but

couldn't find OpenXR.

Tools:

  • jhbuild/jhbuild-minimal.modules: Add openxr to wpe's minimal

moduleset.

12:14 PM BuildingCairoOnWindows edited by Fujii Hironori
(diff)
12:01 PM Changeset in webkit [271137] by Alexey Shvayka
  • 10 edits
    1 add in trunk/Source/WebCore

[WebIDL] Remove [LegacyCaller] extended attribute
https://bugs.webkit.org/show_bug.cgi?id=220246

Reviewed by Sam Weinig.

Before this change, [LegacyCaller] implementation was very complex yet versatile, handling
overloads and multiple callers via operation cloning.

This patch removes [LegacyCaller], instead of simplifying it, and leverages [CustomGetCallData]
to implement HTMLAllCollection's Call method for a few reasons:

  1. Legacy callers were removed from the WebIDL spec [1], with document.all being the only use case; callable objects won't ever be introduced.
  2. To closely match the HTML spec [2] by returning early rather than passing nullish AtomString.
  3. To make getCallData() override more obvious to a reader unfamiliar with legacy callers.
  4. To maximize the amount of code removed from the generator.

No new tests, no behavior change.

[1] https://github.com/heycam/webidl/pull/412
[2] https://html.spec.whatwg.org/multipage/common-dom-interfaces.html#HTMLAllCollection-call

  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • bindings/js/JSHTMLAllCollectionCustom.cpp: Added.

(WebCore::JSC_DEFINE_HOST_FUNCTION):
(WebCore::JSHTMLAllCollection::getCallData):

  • bindings/scripts/CodeGeneratorJS.pm:

(GenerateInterface):
(GenerateGetCallData):
(InstanceOverridesGetCallData):
(AddLegacyCallerOperationIfNeeded): Deleted.
(GeneratePluginCall): Deleted.
(GenerateLegacyCallerDefinitions): Deleted.
(GenerateLegacyCallerDefinition): Deleted.

  • bindings/scripts/IDLAttributes.json:
  • bindings/scripts/IDLParser.pm:

(cloneArgument): Deleted.
(cloneOperation): Deleted.

  • bindings/scripts/test/JS/JSTestObj.cpp:

(WebCore::JSTestObjDOMConstructor::construct):
(WebCore::callJSTestObj1): Deleted.
(WebCore::callJSTestObj2): Deleted.
(WebCore::callJSTestObj3): Deleted.
(WebCore::JSTestObj::getCallData): Deleted.
(WebCore::jsTestObjPrototypeFunction_legacyCallerNamedBody): Deleted.

  • bindings/scripts/test/JS/JSTestObj.h:
  • bindings/scripts/test/TestObj.idl:
  • html/HTMLAllCollection.idl:
11:12 AM Changeset in webkit [271136] by aboya@igalia.com
  • 2 edits in trunk/LayoutTests

[GStreamer][MSE] Unreviewed micro-gardening (remove spurious -expected.txt references)
https://bugs.webkit.org/show_bug.cgi?id=220244

  • platform/glib/TestExpectations:
10:13 AM Changeset in webkit [271135] by Simon Fraser
  • 9 edits in trunk/Source/WebCore

[LFC Display] Hook up very basic repaint in the display tree
https://bugs.webkit.org/show_bug.cgi?id=220212

Reviewed by Zalan Bujtas.

Plumb setNeedsDisplay() from a Display::Box via the Tree to the View, and from there
just repaint the entire root layer. This is very preliminary.

  • display/DisplayTree.cpp:

(WebCore::Display::Tree::setBoxNeedsDisplay const):

  • display/DisplayTree.h:
  • display/DisplayView.cpp:

(WebCore::Display::View::prepareForDisplay):
(WebCore::Display::View::setNeedsDisplay):

  • display/DisplayView.h:
  • display/compositing/DisplayLayerController.cpp:

(WebCore::Display::LayerController::setNeedsDisplay):

  • display/compositing/DisplayLayerController.h:
  • display/css/DisplayBox.cpp:

(WebCore::Display::Box::Box):
(WebCore::Display::Box::setNeedsDisplay):

  • display/css/DisplayBox.h:
10:13 AM Changeset in webkit [271134] by Simon Fraser
  • 3 edits in trunk/Source/WebCore

[LFC Display] Give display boxes a parent pointer
https://bugs.webkit.org/show_bug.cgi?id=220210

Reviewed by Zalan Bujtas.

Future code will need to be able to do ancestor tree walks ("find enclosing"),
so give Display::Box a pointer to its parent ContainerBox.

  • display/DisplayTreeBuilder.cpp:

(WebCore::Display::TreeBuilder::insert const):

  • display/css/DisplayBox.h:

(WebCore::Display::Box::parent const):
(WebCore::Display::Box::setParent):

10:13 AM Changeset in webkit [271133] by Simon Fraser
  • 19 edits in trunk/Source/WebCore

[LFC Display] Give display boxes a back reference to the tree
https://bugs.webkit.org/show_bug.cgi?id=220205

Reviewed by Zalan Bujtas.

Display box code will need a back pointer to the display tree for things
like paint invalidation. Pass a Tree& to box constructors, which requires
that the Tree has been constructed before we make any boxes.

  • display/DisplayTree.cpp:

(WebCore::Display::Tree::setRootStackingItem):
(WebCore::Display::Tree::Tree): Deleted.

  • display/DisplayTree.h:

(WebCore::Display::Tree::view const):
(WebCore::Display::Tree::setView):

  • display/DisplayTreeBuilder.cpp:

(WebCore::Display::TreeBuilder::TreeBuilder):
(WebCore::Display::TreeBuilder::build):

  • display/DisplayTreeBuilder.h:

(WebCore::Display::TreeBuilder::tree const):

  • display/css/DisplayBox.cpp:

(WebCore::Display::Box::Box):

  • display/css/DisplayBox.h:

(WebCore::Display::Box::Box):

  • display/css/DisplayBoxFactory.cpp:

(WebCore::Display::BoxFactory::BoxFactory):
(WebCore::Display::BoxFactory::displayBoxForRootBox const):
(WebCore::Display::BoxFactory::displayBoxForLayoutBox const):
(WebCore::Display::BoxFactory::displayBoxForTextRun const):

  • display/css/DisplayBoxFactory.h:
  • display/css/DisplayBoxModelBox.cpp:

(WebCore::Display::BoxModelBox::BoxModelBox):

  • display/css/DisplayBoxModelBox.h:

(WebCore::Display::BoxModelBox::BoxModelBox):

  • display/css/DisplayContainerBox.cpp:

(WebCore::Display::ContainerBox::ContainerBox):

  • display/css/DisplayContainerBox.h:
  • display/css/DisplayImageBox.cpp:

(WebCore::Display::ImageBox::ImageBox):

  • display/css/DisplayImageBox.h:
  • display/css/DisplayReplacedBox.cpp:

(WebCore::Display::ReplacedBox::ReplacedBox):

  • display/css/DisplayReplacedBox.h:
  • display/css/DisplayTextBox.cpp:

(WebCore::Display::TextBox::TextBox):

  • display/css/DisplayTextBox.h:
9:42 AM Changeset in webkit [271132] by aboya@igalia.com
  • 3 edits in trunk/LayoutTests

[GStreamer][MSE] Unreviewed micro-gardening
https://bugs.webkit.org/show_bug.cgi?id=220244

  • platform/glib/TestExpectations:
  • platform/gtk/TestExpectations:
8:32 AM Changeset in webkit [271131] by jeffm@apple.com
  • 21 edits in trunk

Update user-visible copyright strings to include 2021
https://bugs.webkit.org/show_bug.cgi?id=219901

Reviewed by Anders Carlsson.

.:

  • Source/cmake/tools/scripts/COPYRIGHT-END-YEAR:

Source/JavaScriptCore:

  • Info.plist:

Source/WebCore:

  • Info.plist:

Source/WebKit:

  • GPUProcess/EntryPoint/Cocoa/XPCService/GPUService/Info-OSX.plist:
  • GPUProcess/EntryPoint/Cocoa/XPCService/GPUService/Info-iOS.plist:
  • Info.plist:
  • NetworkProcess/EntryPoint/Cocoa/XPCService/NetworkService/Info-OSX.plist:
  • NetworkProcess/EntryPoint/Cocoa/XPCService/NetworkService/Info-iOS.plist:
  • PluginProcess/EntryPoint/Cocoa/XPCService/PluginService.Info.plist:
  • WebAuthnProcess/EntryPoint/Cocoa/XPCService/WebAuthnService/Info-OSX.plist:
  • WebAuthnProcess/EntryPoint/Cocoa/XPCService/WebAuthnService/Info-iOS.plist:
  • WebProcess/EntryPoint/Cocoa/XPCService/WebContentService/Info-OSX.plist:
  • WebProcess/EntryPoint/Cocoa/XPCService/WebContentService/Info-iOS.plist:

Source/WebKitLegacy/mac:

  • Info.plist:

WebKitLibraries:

  • win/tools/scripts/COPYRIGHT-END-YEAR:
4:56 AM Changeset in webkit [271130] by svillar@igalia.com
  • 2 edits in trunk/Source/WebCore

[css-multicol] Do not attach <legend> to <fieldset> multicolumn containers
https://bugs.webkit.org/show_bug.cgi?id=218500

Reviewed by Zalan Bujtas.

Whenever a <fieldset> is a multicolumn container, any <legend> child must be directly attached
to the <fieldset> renderer instead of the RenderMultiColumnFlow created by the latter. That was
not happening when the renderer of the DOM node for the <legend> was deleted and then recreated.

The problem was that in those situations the parent and beforeChild arguments for
RenderTreeBuilder::Block::attachIgnoringContinuation() call were not properly selected. This
lead to a scenario were that method was wrongly using the special code path for tables.

  • rendering/updating/RenderTreeBuilderBlockFlow.cpp:

(WebCore::RenderTreeBuilder::BlockFlow::attach): Add a special case for attaching a <legend> to
a <fieldset>.

3:27 AM Changeset in webkit [271129] by svillar@igalia.com
  • 4 edits in trunk

Intrinsic size not correctly stored for SVG images
https://bugs.webkit.org/show_bug.cgi?id=219981

Reviewed by Darin Adler.

Source/WebCore:

Intrinsic sizes were only stored in case the replaced element had an intrinsic size for both height and width.
However it's pretty common for SVG images to only specify one of them and an aspect ratio. We should store it
in those cases too as it'd be useful for some layout systems like flexbox.

  • rendering/RenderReplaced.cpp:

(WebCore::RenderReplaced::computeAspectRatioInformationForRenderBox const): Replace isEmpty() by isZero() calls to allow
incomplete intrinsic sizes to be stored.

LayoutTests:

2:34 AM Changeset in webkit [271128] by aboya@igalia.com
  • 6 edits in trunk/Source/WebCore

[GStreamer] More robust video size handling
https://bugs.webkit.org/show_bug.cgi?id=220103

Reviewed by Philippe Normand.

This patch improves the handling of how video size is detected and
reported to WebKit, fixing several issues:

a) The value returned by calling MediaPlayerPrivateGStreamer
::naturalSize() should not change during a given main thread tick,
since this can potentially be read several times from the rendering
code. This caused the elusive racy crash on `ASSERTION FAILED:

!intrinsicSizeChanged
!view().frameView().layoutContext().isInRenderTreeLayout()`

that has been appearing randomly in many layout tests for a very long time.

b) Video rotation used to be handled via bus messages, but this is
also racy, since the handling of bus messages in the main thread is
run on a different priority than other callbacks. This caused a flaky
failure on media/video-orientation.html.

c) In MSE, appending a second initialization segment with a different
video size triggered a video resize on append, before any frames with
the new size has been played.

This patch fixes these three issues: Only the first initialization
segment will trigger a video resize (this is done so we have a video
size on HAVE_METADATA, as the MSE spec expects), but otherwise video
size is emitted on caps changes on the sink. In the case of regular
playback this is delayed until the first frame arrives so that we have
a guarantee that any rotation tag events have traversed the pipeline
(the data flow through a GStreamer pipeline is done in this order:
CAPS event, optional TAG events and then buffers). Video size changes
are done by posting a task to the main thread, which ensures the value
doesn't change during a main thread tick.

The patch also relinquishes usage of MainThreadNotifier so that
successions of quick video size changes (e.g. in a test case) still
trigger the expected events instead of being potentially coalesced.

Since this patch for the most part fixes race conditions that are not
covered in TestExpectations, it doesn't introduce changes in
TestExpectations.

Note: This patch is not enough to fix imported/w3c/web-platform-tests/media-source/mediasource-config-change-*-framesize tests.
That requires further non-trivial fixes regarding how MSE flushes are
handled.

Note: This patch does not fix framesize WebRTC tests. These seem to be
a consequence of notifying the user too early of the frame size and/or
ready state, before any frame is readable, which is a problem
unrelated to these fixes.

  • platform/graphics/gstreamer/GStreamerCommon.cpp:

(WebCore::getVideoSizeAndFormatFromCaps):

  • platform/graphics/gstreamer/GStreamerCommon.h:
  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:

(WebCore::MediaPlayerPrivateGStreamer::videoSinkCapsChanged):
(WebCore::MediaPlayerPrivateGStreamer::naturalSize const):
(WebCore::MediaPlayerPrivateGStreamer::handleMessage):
(WebCore::MediaPlayerPrivateGStreamer::createGSTPlayBin):
(WebCore::getVideoOrientation):
(WebCore::MediaPlayerPrivateGStreamer::updateVideoSizeAndOrientationFromCaps):
(WebCore::MediaPlayerPrivateGStreamer::triggerRepaint):

  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.h:
  • platform/graphics/gstreamer/mse/MediaPlayerPrivateGStreamerMSE.cpp:

(WebCore::MediaPlayerPrivateGStreamerMSE::trackDetected):

Jan 3, 2021:

11:25 AM Changeset in webkit [271127] by commit-queue@webkit.org
  • 9 edits in trunk

Use UTF-8 encoding for empty main resource loads
https://bugs.webkit.org/show_bug.cgi?id=220227

Patch by Rob Buis <rbuis@igalia.com> on 2021-01-03
Reviewed by Sam Weinig.

LayoutTests/imported/w3c:

Update improved test results.

  • web-platform-tests/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/creating_browsing_context_test_01-expected.txt:
  • web-platform-tests/html/browsers/windows/browsing-context-expected.txt:

Source/WebCore:

Unless specified otherwise, documents have UTF-8 encoding [1]. Since [2]
does not mention encoding, use UTF-8 encoding explicitly for empty main
loads.

[1] https://dom.spec.whatwg.org/#concept-document-type
[2] https://html.spec.whatwg.org/#initialise-the-document-object (Step 7)

Tests: imported/w3c/web-platform-tests/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/creating_browsing_context_test_01.html

imported/w3c/web-platform-tests/html/browsers/windows/browsing-context.html
http/wpt/html/browsers/windows/browsing-context.html

Behavior matches Chrome and Firefox.

  • loader/DocumentLoader.cpp:

(WebCore::DocumentLoader::maybeLoadEmpty):

LayoutTests:

Update improved test results.

  • http/wpt/html/browsers/windows/browsing-context-expected.txt:
  • platform/mac/webarchive/archive-empty-frame-source-expected.png:
  • webarchive/archive-empty-frame-source-expected.webarchive:
10:43 AM Changeset in webkit [271126] by Beth Dakin
  • 4 edits in trunk/PerformanceTests

Remove non-inclusive language from JetStream 2.0
https://bugs.webkit.org/show_bug.cgi?id=220109

Reviewed by Anders Carlsson.

  • JetStream2/code-load/inspector-payload.js:

(WebInspector.DOMNode.WebInspector.Resource.WebInspector.ConsoleMessageView.prototype._formatWithSubstitutionString.styleFormatter):
(WebInspector.DOMNode.WebInspector.Resource.WebInspector.ConsoleMessageView.prototype._formatWithSubstitutionString.isAllowlistedProperty):
(WebInspector.DOMNode.WebInspector.Resource.WebInspector.ConsoleMessageView.prototype._formatWithSubstitutionString.isWhitelistedProperty): Deleted.

  • JetStream2/web-tooling-benchmark/cli.js:
5:47 AM Changeset in webkit [271125] by commit-queue@webkit.org
  • 4 edits in trunk/Source/WebCore

Share meta refresh logic
https://bugs.webkit.org/show_bug.cgi?id=220179

Patch by Rob Buis <rbuis@igalia.com> on 2021-01-03
Reviewed by Darin Adler.

Share meta refresh logic between Document and FrameLoader.

  • dom/Document.cpp:

(WebCore::Document::processHttpEquiv):

  • loader/FrameLoader.cpp:

(WebCore::FrameLoader::receivedFirstData):
(WebCore::FrameLoader::scheduleRefreshIfNeeded):

  • loader/FrameLoader.h:

Jan 2, 2021:

11:18 PM Changeset in webkit [271124] by commit-queue@webkit.org
  • 14 edits in trunk/Source

Remove some FrameLoader::changeLocation parameters
https://bugs.webkit.org/show_bug.cgi?id=220186

Patch by Rob Buis <rbuis@igalia.com> on 2021-01-02
Reviewed by Darin Adler.

Source/WebCore:

In all cases changeLocation is called with the default
values for LockHistory and LockBackForwardList, so we
do not need to have these parameters.

  • html/HTMLAnchorElement.cpp:

(WebCore::HTMLAnchorElement::handleClick):

  • html/HTMLLinkElement.cpp:

(WebCore::HTMLLinkElement::handleClick):

  • loader/FrameLoader.cpp:

(WebCore::FrameLoader::changeLocation):

  • loader/FrameLoader.h:
  • loader/NavigationScheduler.cpp:
  • mathml/MathMLElement.cpp:

(WebCore::MathMLElement::defaultEventHandler):

  • svg/SVGAElement.cpp:

(WebCore::SVGAElement::defaultEventHandler):

Source/WebKit:

Adapt to API change.

  • WebProcess/Plugins/PDF/PDFPlugin.mm:

(WebKit::PDFPlugin::clickedLink):

  • WebProcess/WebCoreSupport/WebContextMenuClient.cpp:

(WebKit::WebContextMenuClient::searchWithGoogle):

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::navigateToPDFLinkWithSimulatedClick):

Source/WebKitLegacy/win:

Adapt to API change.

  • WebCoreSupport/WebContextMenuClient.cpp:

(WebContextMenuClient::searchWithGoogle):

5:56 PM Changeset in webkit [271123] by Simon Fraser
  • 11 edits in trunk/Source/WebCore

[LFC Display] Rename Box::Flags to Box::TypeFlags
https://bugs.webkit.org/show_bug.cgi?id=220223

Reviewed by Sam Weinig.

I'll be adding a separate OptionSet<> of flags that can change dynamically
on a Display::Box, so rename the existing flags to TypeFlags, and make the member
const. They will never change after construction.

  • display/css/DisplayBox.cpp:

(WebCore::Display::Box::Box):

  • display/css/DisplayBox.h:

(WebCore::Display::Box::Box):
(WebCore::Display::Box::isBoxModelBox const):
(WebCore::Display::Box::isContainerBox const):
(WebCore::Display::Box::isImageBox const):
(WebCore::Display::Box::isReplacedBox const):
(WebCore::Display::Box::isTextBox const):
(WebCore::Display::Box::isLineBreakBox const):

  • display/css/DisplayBoxFactory.cpp:

(WebCore::Display::BoxFactory::displayBoxForLayoutBox const):

  • display/css/DisplayBoxModelBox.cpp:

(WebCore::Display::BoxModelBox::BoxModelBox):

  • display/css/DisplayBoxModelBox.h:

(WebCore::Display::BoxModelBox::BoxModelBox):

  • display/css/DisplayContainerBox.cpp:

(WebCore::Display::ContainerBox::ContainerBox):

  • display/css/DisplayImageBox.cpp:

(WebCore::Display::ImageBox::ImageBox):

  • display/css/DisplayReplacedBox.cpp:

(WebCore::Display::ReplacedBox::ReplacedBox):

  • display/css/DisplayReplacedBox.h:
  • display/css/DisplayTextBox.cpp:

(WebCore::Display::TextBox::TextBox):

1:11 PM Changeset in webkit [271122] by Fujii Hironori
  • 2 edits in trunk/Source/WebKitLegacy/win

[Win][DumpRenderTree] Some JS tests are timing out only in Debug builds since r269157
https://bugs.webkit.org/show_bug.cgi?id=220145
<rdar://problem/72756207>

Reviewed by Sam Weinig.

r269157 added new WebKit1 APIs to set a preference, and
DumpRenderTree uses them to reset all preferences after each
testing. However, it was too slow for large pages because the API
is causing resolveStyle for every preference. Some JS tests failed
as timeout in debug builds because they are generating large
pages.

  • WebPreferences.cpp:

(stringValueForPreferencesValue): Added.
(WebPreferences::setBoolPreferenceForTesting):
(WebPreferences::setUInt32PreferenceForTesting):
(WebPreferences::setDoublePreferenceForTesting):
(WebPreferences::setStringPreferenceForTesting):
Do nothing if the new preference value is same with the current
value.

12:46 PM Changeset in webkit [271121] by ysuzuki@apple.com
  • 4 edits
    1 add in trunk

[JSC] Remove unnecessary mov bytecodes when performing simple object pattern destructuring to variables
https://bugs.webkit.org/show_bug.cgi?id=220219

Reviewed by Alexey Shvayka.

JSTests:

  • stress/object-pattern-simple-fast-path.js: Added.

(shouldBe):
(shouldThrow):
(test1):

Source/JavaScriptCore:

Currently, we are first puts object pattern's expression into temporary variable, and then, we store it into local variable register.

The following code

({ data } = object);

emits this kind of bytecode.

get_by_id dst:loc10, base:loc9, property:0
mov dst:loc6, src:loc10

However, this should be

get_by_id dst:loc6, base:loc9, property:0

We are emitting many unnecessary movs since this destructuring pattern is common. Increasing amount of mov (1) discourages inlining unnecessarily and (2) simply makes
bytecode memory large. Since this is very common pattern, we should carefully optimize it to remove such unnecessary movs.

This patch looks into pattern when performing object pattern destructuring. And avoid emitting mov when it is possible. There are some cases we cannot remove movs, so
this patch's writableDirectBindingIfPossible looks into whether this is possible (& profitable).

  • bytecompiler/NodesCodegen.cpp:

(JSC::ObjectPatternNode::bindValue const):
(JSC::BindingNode::writableDirectBindingIfPossible const):
(JSC::BindingNode::finishDirectBindingAssignment const):
(JSC::AssignmentElementNode::writableDirectBindingIfPossible const):
(JSC::AssignmentElementNode::finishDirectBindingAssignment const):

  • parser/Nodes.h:

(JSC::DestructuringPatternNode::writableDirectBindingIfPossible const):
(JSC::DestructuringPatternNode::finishDirectBindingAssignment const):

11:27 AM Changeset in webkit [271120] by Alexey Shvayka
  • 21 edits in trunk

Improve error message for uninitialized |this| in derived constructor
https://bugs.webkit.org/show_bug.cgi?id=220221

Reviewed by Yusuke Suzuki.

JSTests:

  • stress/async-arrow-functions-lexical-binding-in-class.js:
  • stress/async-arrow-functions-lexical-super-binding.js:
  • stress/class-derived-from-null.js:
  • stress/generator-eval-this.js:
  • stress/super-property-access-tdz.js:

LayoutTests/imported/w3c:

  • web-platform-tests/custom-elements/parser/parser-fallsback-to-unknown-element-expected.txt:

Source/JavaScriptCore:

Since class constructors perform return this; by default, and derived
constructors require super() to be called before |this| access, regular
TDZ error message is quite confusing, given the following code:

new (class extends Object { constructor() { } });

Considering that currently op_check_tdz is called on thisRegister() only
in derived constructors, this patch modifies its slow path to throw a
helpful error message that covers |this| access and non-object returns.

V8 and SpiderMonkey have similar error messages, mentioning super().

slow_path_throw_tdz_error is merged into slow_path_check_tdz, which is
invoked from baseline JIT, so we can reliably acquire the bytecode and
avoid code duplication.

  • llint/LowLevelInterpreter32_64.asm:
  • llint/LowLevelInterpreter64.asm:
  • runtime/CommonSlowPaths.cpp:

(JSC::JSC_DEFINE_COMMON_SLOW_PATH):

  • runtime/CommonSlowPaths.h:

LayoutTests:

  • js/arrowfunction-supercall-expected.txt:
  • js/arrowfunction-superproperty-expected.txt:
  • js/class-syntax-extends-expected.txt:
  • js/class-syntax-super-expected.txt:
  • js/script-tests/arrowfunction-supercall.js:
  • js/script-tests/arrowfunction-superproperty.js:
  • js/script-tests/class-syntax-super.js:
10:41 AM Changeset in webkit [271119] by Alexey Shvayka
  • 9 edits
    1 add
    5 deletes in trunk

Don't throw if function.caller is a non-strict / generator / async function
https://bugs.webkit.org/show_bug.cgi?id=220216

Reviewed by Yusuke Suzuki.

JSTests:

  • stress/function-caller-async-arrow-function-body.js: Removed.
  • stress/function-caller-async-function-body.js: Removed.
  • stress/function-caller-async-generator-body.js: Removed.
  • stress/function-caller-generator-body.js: Removed.
  • stress/function-caller-generator-method-body.js: Removed.
  • stress/function-hidden-as-caller.js: Added.
  • stress/polymorphic-access-exception-handler-should-not-clobber-used-register.js:
  • stress/tail-call-recognize.js:
  • test262/expectations.yaml: Mark 45 test cases as passing.

Source/JavaScriptCore:

The spec forbids [1] ES6+ and strict mode functions from having their own "caller"
property. r230662 went even further, throwing TypeError if function.caller attempts
to return non-strict / generator / async function, which doesn't contradict ECMA-262,
but diverges from V8 and SpiderMonkey (they just return the caller).

Since throwing TypeError causes quite a lot test262 failures and is a bit dangerous
(legacy library which uses function.caller is called from ES6 code), this patch
replaces it with null return.

Given that r230662 appears to be web-compatible, this change preserves its intent
to limit function.caller API as much as possible by returning null for all ES6+
functions, including methods, accessors, and arrow functions.

[1]: https://tc39.es/ecma262/#sec-forbidden-extensions (paragraphs 1-2)

  • runtime/JSFunction.cpp:

(JSC::JSC_DEFINE_CUSTOM_GETTER):

LayoutTests:

  • js/caller-property-expected.txt:
  • js/script-tests/caller-property.js:
12:09 AM Changeset in webkit [271118] by James Darpinian
  • 3 edits in trunk/Source/ThirdParty/ANGLE

Enable some ANGLE workarounds on iOS
https://bugs.webkit.org/show_bug.cgi?id=220203

Reviewed by Kenneth Russell.

Running ANGLE's unit tests on iOS upstream exposed the need to enable a couple of existing
workaround flags. https://crrev.com/c/2601106 and https://crrev.com/c/2606657 are the
upstream changes corresponding to these fixes.

  • src/libANGLE/renderer/gl/FramebufferGL.cpp:

(rx::FramebufferGL::blit):

  • src/libANGLE/renderer/gl/renderergl_utils.cpp:

(rx::nativegl_gl::InitializeFeatures):

Dec 31, 2020:

7:38 PM Changeset in webkit [271117] by Alexey Shvayka
  • 3 edits
    1 add in trunk

JSFunction::deleteProperty() fails to delete a non-existent "prototype" property
https://bugs.webkit.org/show_bug.cgi?id=220211

Reviewed by Yusuke Suzuki.

JSTests:

  • stress/function-delete-prototype.js: Added.

Source/JavaScriptCore:

This patch replaces arrow function check with hasPrototypeProperty() since there
are more functions without a "prototype" (accessors, methods, async functions),
aligning JSC with the spec, V8, and SpiderMonkey.

hasPrototypeProperty() is already used by JSFunction::getOwnPropertySlot().

  • runtime/JSFunction.cpp:

(JSC::JSFunction::deleteProperty):

8:29 AM Changeset in webkit [271116] by Alan Bujtas
  • 2 edits in trunk/Source/WebCore

[LFC][IFC] Horizontal padding/border makes the inline box non-empty
https://bugs.webkit.org/show_bug.cgi?id=220208

Reviewed by Antti Koivisto.

<span style="padding-left: 1px"></span> makes this inline box non-empty and it stretches the line box.
(note that horizontal margin does not make the inline box non-empty)
(fast/inline/inline-padding-disables-text-quirk.html)

  • layout/inlineformatting/InlineFormattingContextGeometry.cpp:

(WebCore::Layout::LineBoxBuilder::constructInlineLevelBoxes):

Note: See TracTimeline for information about the timeline view.