⚠ Archived content — this site is no longer maintained.   Current WebKit documentation is at docs.webkit.org.

Timeline



Sep 20, 2020:

4:07 PM Changeset in webkit [267333] by weinig@apple.com
  • 6 edits in trunk

Performance.navigation and Performance.timing are incorrectly exposed to workers
https://bugs.webkit.org/show_bug.cgi?id=216732

Reviewed by Simon Fraser.

LayoutTests/imported/w3c:

  • web-platform-tests/workers/worker-performance.worker-expected.txt:

Update results now that Performance.navigation and Performance.timing are no longer
exposed to workers.

Source/WebCore:

  • page/Performance.idl:

Only expose Performance.navigation and Performance.timing to the Window.

LayoutTests:

Remove flaky annotation for imported/w3c/web-platform-tests/workers/worker-performance.worker.html. The
test was fixed in upstream WPT as dab9c45, and has since been updated in the WebKit tree as well.
It now also passes.

3:58 PM Changeset in webkit [267332] by ysuzuki@apple.com
  • 193 edits
    947 adds
    43 deletes in trunk/JSTests

Test262 update
https://bugs.webkit.org/show_bug.cgi?id=216753

Reviewed by Darin Adler.

3:26 PM Changeset in webkit [267331] by weinig@apple.com
  • 7 edits
    3 adds in trunk/Source/WebCore

Using [Exposed=Window] with [Default] object toJSON() doesn't work
https://bugs.webkit.org/show_bug.cgi?id=216731

Reviewed by Simon Fraser.

Fixes filtering an attribute out of [Default] toJSON operation based
on which which global objects it is exposed to by ensuring we always
pass a global object pointer accessor function to
GenerateRuntimeEnableConditionalStringForExposed. For good measure,
we now always pass the global object object pointer to
GenerateRuntimeEnableConditionalString as well so that it is always
explicit.

This is needed to support filtering out Performance.navigation and
Performance.timing from the Performance interface's toJSON implementation
which will be addressed in a separate change.

  • bindings/scripts/CodeGeneratorJS.pm:

(GenerateRuntimeEnableConditionalStringForExposed):
(GenerateRuntimeEnableConditionalString):
Remove implicit global object accessor string construction by always
requiring it to be passed.

  • bindings/scripts/test/DOMWindowConstructors.idl:
  • bindings/scripts/test/JS/JSDOMWindow.cpp:
  • bindings/scripts/test/JS/JSTestDefaultToJSONFilteredByExposed.cpp: Added.
  • bindings/scripts/test/JS/JSTestDefaultToJSONFilteredByExposed.h: Added.
  • bindings/scripts/test/JS/JSWorkerGlobalScope.cpp:
  • bindings/scripts/test/SupplementalDependencies.dep:
  • bindings/scripts/test/TestDefaultToJSONFilteredByExposed.idl: Added.
  • bindings/scripts/test/WorkerGlobalScopeConstructors.idl:

Add new test for updated behavior. I couldn't add it to the existing
TestDefaultToJSON.idl test as that test requires the interface only be exposed
to Window to support testing EnabledBySetting.

1:44 PM Changeset in webkit [267330] by ysuzuki@apple.com
  • 179 edits
    1 delete in trunk

[JSC] Drop Options::useBigInt
https://bugs.webkit.org/show_bug.cgi?id=216743

Reviewed by Darin Adler.

JSTests:

  • bigIntTests.yaml: Removed.
  • stress/big-int-add-wrapped-value.js:
  • stress/big-int-addition-basic.js:
  • stress/big-int-addition-jit.js:
  • stress/big-int-addition-memory-stress.js:
  • stress/big-int-addition-string-coercion.js:
  • stress/big-int-addition-to-primitive-precedence.js:
  • stress/big-int-addition-to-primitive.js:
  • stress/big-int-addition-type-error.js:
  • stress/big-int-arithmetic-return-big-int.js:
  • stress/big-int-as-key.js:
  • stress/big-int-as-property-name.js:
  • stress/big-int-bit-not-general.js:
  • stress/big-int-bitwise-and-general.js:
  • stress/big-int-bitwise-and-jit.js:
  • stress/big-int-bitwise-and-memory-stress.js:
  • stress/big-int-bitwise-and-to-primitive-precedence.js:
  • stress/big-int-bitwise-and-type-error.js:
  • stress/big-int-bitwise-and-wrapped-value.js:
  • stress/big-int-bitwise-not-jit.js:
  • stress/big-int-bitwise-not-wrapped-value.js:
  • stress/big-int-bitwise-or-general.js:
  • stress/big-int-bitwise-or-jit-untyped.js:
  • stress/big-int-bitwise-or-jit.js:
  • stress/big-int-bitwise-or-memory-stress.js:
  • stress/big-int-bitwise-or-to-primitive-precedence.js:
  • stress/big-int-bitwise-or-type-error.js:
  • stress/big-int-bitwise-or-wrapped-value.js:
  • stress/big-int-bitwise-xor-general.js:
  • stress/big-int-bitwise-xor-jit.js:
  • stress/big-int-bitwise-xor-memory-stress.js:
  • stress/big-int-bitwise-xor-to-primitive-precedence.js:
  • stress/big-int-bitwise-xor-type-error.js:
  • stress/big-int-bitwise-xor-untyped.js:
  • stress/big-int-bitwise-xor-wrapped-value.js:
  • stress/big-int-boolean-proven-type.js:
  • stress/big-int-branch-usage.js:
  • stress/big-int-constructor-gc.js:
  • stress/big-int-constructor-oom.js:
  • stress/big-int-constructor-properties.js:
  • stress/big-int-constructor-prototype-prop-descriptor.js:
  • stress/big-int-constructor-prototype.js:
  • stress/big-int-constructor.js:
  • stress/big-int-div-jit-osr.js:
  • stress/big-int-div-jit-untyped.js:
  • stress/big-int-div-jit.js:
  • stress/big-int-div-memory-stress.js:
  • stress/big-int-div-to-primitive.js:
  • stress/big-int-div-type-error.js:
  • stress/big-int-div-wrapped-value.js:
  • stress/big-int-division.js:
  • stress/big-int-equals-basic.js:
  • stress/big-int-equals-to-primitive-precedence.js:
  • stress/big-int-equals-wrapped-value.js:
  • stress/big-int-exp-basic.js:
  • stress/big-int-exp-jit-osr.js:
  • stress/big-int-exp-jit-untyped.js:
  • stress/big-int-exp-jit.js:
  • stress/big-int-exp-negative-exponent.js:
  • stress/big-int-exp-to-primitive.js:
  • stress/big-int-exp-type-error.js:
  • stress/big-int-exp-wrapped-value.js:
  • stress/big-int-function-apply.js:
  • stress/big-int-greater-than-general.js:
  • stress/big-int-greater-than-jit.js:
  • stress/big-int-greater-than-or-equal-jit.js:
  • stress/big-int-greater-than-or-equal-order-of-evaluation.js:
  • stress/big-int-greater-than-or-equal-wrapped-values.js:
  • stress/big-int-greater-than-or-equal.js:
  • stress/big-int-greater-than-order-of-evaluation.js:
  • stress/big-int-greater-than-wrapped-values.js:
  • stress/big-int-json-stringify-to-json.js:
  • stress/big-int-json-stringify.js:
  • stress/big-int-left-shift-general.js:
  • stress/big-int-left-shift-range-error.js:
  • stress/big-int-left-shift-type-error.js:
  • stress/big-int-left-shift-untyped.js:
  • stress/big-int-left-shift-wrapped-value.js:
  • stress/big-int-length.js:
  • stress/big-int-less-than-general.js:
  • stress/big-int-less-than-jit.js:
  • stress/big-int-less-than-or-equal-general.js:
  • stress/big-int-less-than-or-equal-jit.js:
  • stress/big-int-less-than-or-equal-order-of-evaluation.js:
  • stress/big-int-less-than-or-equal-wrapped-values.js:
  • stress/big-int-less-than-order-of-evaluation.js:
  • stress/big-int-less-than-wrapped-values.js:
  • stress/big-int-literal-inside-literal-object.js:
  • stress/big-int-literal-line-terminator.js:
  • stress/big-int-literals.js:
  • stress/big-int-logical-and.js:
  • stress/big-int-logical-not.js:
  • stress/big-int-logical-or.js:
  • stress/big-int-mod-jit.js:
  • stress/big-int-mod-memory-stress.js:
  • stress/big-int-mod-osr.js:
  • stress/big-int-mod-to-primitive-precedence.js:
  • stress/big-int-mod-to-primitive.js:
  • stress/big-int-mod-type-error.js:
  • stress/big-int-mod-wrapped-value.js:
  • stress/big-int-mod.js:
  • stress/big-int-mul-jit-osr.js:
  • stress/big-int-mul-jit-untyped.js:
  • stress/big-int-mul-jit.js:
  • stress/big-int-mul-to-primitive-precedence.js:
  • stress/big-int-mul-to-primitive.js:
  • stress/big-int-mul-type-error.js:
  • stress/big-int-mul-wrapped-value.js:
  • stress/big-int-multiplication.js:
  • stress/big-int-multiply-memory-stress.js:
  • stress/big-int-negate-basic.js:
  • stress/big-int-no-conversion-to-number.js:
  • stress/big-int-operations-error.js:
  • stress/big-int-out-of-memory-tests.js:
  • stress/big-int-prop-descriptor.js:
  • stress/big-int-proto-constructor.js:
  • stress/big-int-proto-name.js:
  • stress/big-int-prototype-properties.js:
  • stress/big-int-prototype-proto.js:
  • stress/big-int-prototype-symbol-to-string-tag.js:
  • stress/big-int-prototype-to-string-apply.js:
  • stress/big-int-prototype-to-string-cast-overflow.js:
  • stress/big-int-prototype-to-string-exception.js:
  • stress/big-int-prototype-to-string-wrong-values.js:
  • stress/big-int-prototype-value-of.js:
  • stress/big-int-right-shift-general.js:
  • stress/big-int-right-shift-jit-osr.js:
  • stress/big-int-right-shift-jit-untyped.js:
  • stress/big-int-right-shift-jit.js:
  • stress/big-int-right-shift-type-error.js:
  • stress/big-int-right-shift-wrapped-value.js:
  • stress/big-int-spec-to-primitive.js:
  • stress/big-int-spec-to-this.js:
  • stress/big-int-strict-equals-jit.js:
  • stress/big-int-strict-spec-to-this.js:
  • stress/big-int-sub-wrapped-value.js:
  • stress/big-int-subtraction-basic.js:
  • stress/big-int-subtraction-jit.js:
  • stress/big-int-subtraction-type-error.js:
  • stress/big-int-to-object.js:
  • stress/big-int-to-string.js:
  • stress/big-int-type-of-proven-type-non-constant-including-symbol.js:
  • stress/big-int-type-of-proven-type-non-constant.js:
  • stress/big-int-type-of-proven-type.js:
  • stress/big-int-type-of.js:
  • stress/big-int-unary-plus.js:
  • stress/big-int-value-op-update-gc-rules.js:
  • stress/big-int-white-space-trailing-leading.js:
  • stress/bigint-toLocaleString.js:
  • stress/bitwise-not-fixup-rules.js:
  • stress/delete-property-inline-cache.js:
  • stress/inc-osr-exit-from-big-int.js:
  • stress/inc-osr-exit-to-big-int.js:
  • stress/left-shift-to-primitive-precedence.js:
  • stress/numeric-literal-separators.js:
  • stress/object-create-non-object-properties-parameter.js:
  • stress/proxy-call-apply-handler-to-this.js:
  • stress/right-shift-to-primitive-precedence.js:
  • stress/value-add-big-int-and-string.js:
  • stress/value-add-big-int-prediction-propagation.js:
  • stress/value-add-big-int-untyped.js:
  • stress/value-bit-and-ai-rule.js:
  • stress/value-bit-lshift-ai-rule.js:
  • stress/value-bit-not-ai-rule.js:
  • stress/value-bit-or-ai-rule.js:
  • stress/value-bit-xor-ai-rule.js:
  • stress/value-div-fixup-int32-big-int.js:
  • stress/value-mul-fixup-int32-big-int.js:
  • stress/value-sub-big-int-prediction-propagation.js:
  • stress/value-sub-big-int-untyped.js:
  • test262/config.yaml:

Source/JavaScriptCore:

Now BigInt is shipped. Let's just remove Options::useBigInt.

  • bytecompiler/BytecodeGenerator.cpp:

(JSC::BytecodeGenerator::emitEqualityOpImpl):

  • parser/Lexer.cpp:

(JSC::Lexer<T>::parseHex):
(JSC::Lexer<T>::parseBinary):
(JSC::Lexer<T>::parseOctal):
(JSC::Lexer<T>::parseDecimal):

  • runtime/JSGlobalObject.h:
  • runtime/OptionsList.h:

Tools:

  • Scripts/run-jsc-benchmarks:
  • Scripts/run-jsc-stress-tests:
12:37 PM Changeset in webkit [267329] by Darin Adler
  • 8 edits in trunk

Selection API: Further improvements to VisibleSelection, FrameSelection, and DOMSelection to preserve anchor and focus
https://bugs.webkit.org/show_bug.cgi?id=216739

Reviewed by Ryosuke Niwa.

Source/WebCore:

If done correctly, these changes should have almost no effect unless live range selection
is enabled. This adds a feature where VisibleSelection tracks the original points,
before the VisiblePosition-style canonicalization. It also starts a transition from
the base/extent terminology to the slightly-easier-to-understand anchor/focus terminology
that is used in the selection specification. New functions name them anchor and focus,
even though we still have some old ones that call them base and extent. In addition,
made some other small related improvements to live range selection mode, without changing
behavior when not in that mode. Have been testing these locally by turning on that mode
and running various tests.

  • editing/FrameSelection.cpp:

(WebCore::FrameSelection::isInDocumentTree const): Added. Used by DOMSelection to
correctly handle cases where the selection is in a shadow tree without requiring it
actually create the associated live range just to query.
(WebCore::FrameSelection::associatedLiveRange): Use the new VisibleSelection::range,
which gives us non-canonicalized points, rather than the deprecated
VisibleSelection::firstRange, which we will eventually be renaming or deleting.
(WebCore::FrameSelection::updateFromAssociatedLiveRange): Use
makeContainerOffsetPosition instead of implicitly using makeDeprecatedLegacyPosition.
Also removed the FIXME about normalization of endpoints, which is what this patch
mostly addresses; no need to track with a comment now.
(WebCore::FrameSelection::updateAssociatedLiveRange): Use VisibleSelection::range
for the same reason as above.

  • editing/FrameSelection.h: Added isInDocumentTree.
  • editing/VisibleSelection.cpp:

(WebCore::VisibleSelection::VisibleSelection): Updated the primary constructor to set
m_anchor/focus and let the validate function set m_base/extent/start/end/baseIsFirst.
Changed most other constructors to call that primary one.
(WebCore::VisibleSelection::anchor const): Added. This is a non-canonicalized position.
(WebCore::VisibleSelection::focus const): Ditto.
(WebCore::VisibleSelection::uncanonicalizedStart const): Added. This non-canonicalized
version of start is used by new DOMSelection code, but eventually should be used
elsewhere as well, and we may eventually eliminate the canonicalized version.
(WebCore::VisibleSelection::uncanonicalizedEnd const): Ditto.
(WebCore::VisibleSelection::range const): Added. This non-canonicalized version of
firstRange has many of the same considerations as the other four functions above.
(WebCore::VisibleSelection::setBase): Set m_anchor instead of m_base. Eventually we
will want to rename this function, too, but there is no need to do that now.
(WebCore::VisibleSelection::setExtent): Ditto.
(WebCore::VisibleSelection::setBaseAndExtentToDeepEquivalents): Rewrote to take
m_anchor and m_focus as inputs and now m_base and m_extent are pure outputs.
May want to rename this later, because "deep equivalents" is a funny way to say
that this function sets base and extent to canonicalized values.
(WebCore::VisibleSelection::adjustSelectionRespectingGranularity): Renamed from
setStartAndEndFromBaseAndExtentRespectingGranularity. This now takes m_start/end
as input as well as output, because the validate function needs to check
if the function changes m_start/end so it can update m_anchor/focus. Also did a tiny
bit of refactoring to use std::swap.
(WebCore::VisibleSelection::validate): Refined the code to handle canonicalization
differently from expanding due to granularity. Canonicalization is done preserving
the original m_anchor/focus as it mostly always has been. But expansion due to
granularity now changes m_anchor/focus/base/extent rather than just m_start/end.
This makes sense because granularity changes actually affect what is selected,
while canonicalization just changes how the selection is expressed and tracked.
(WebCore::VisibleSelection::setWithoutValidation): Set m_anchor/focus. In the future,
we can probably get rid of this eventually, because the "validation" talked about
here is the unwanted canonicalization. But that's a refinement for the future.
(WebCore::VisibleSelection::adjustSelectionToAvoidCrossingShadowBoundaries):
Update m_focus, not just m_extent, if we have to adjust. Also removed an unnnecessary
null check from the start of the function.
(WebCore::VisibleSelection::adjustSelectionToAvoidCrossingEditingBoundaries): Ditto.
Also removed the assertions because these situations can indeed arise and it's not
necessarily an indication of a bug in editing code.

  • editing/VisibleSelection.h: Rearranged constructors to make it slightly more clear

which is the main one and that the others are simply convenience shorthands. Might
want to come back later and remove some unused ones. Added uncanonicalizedStart,
uncanonicalizedEnd, anchor, focus, and range. Renamed the private function called
setStartAndEndFromBaseAndExtentRespectingGranularity to the new name
adjustSelectionRespectingGranularity. Added m_anchor and m_focus and refined the
comments about the position data members. We should eventually be able to cut down
on the number of these again, but it's fine to have two more for now.

  • page/DOMSelection.cpp:

(WebCore::DOMSelection::range const): Use range rather than firstRange when live
range selection is enabled, for proper round-tripping of selection endpoints,
unaffected by canonicalization. The other changes below are for the same reason.
(WebCore::DOMSelection::anchorPosition const): Use anchor.
(WebCore::DOMSelection::focusPosition const): Use focus.
(WebCore::DOMSelection::basePosition const): Use anchor.
(WebCore::DOMSelection::extentPosition const): Use focus.
(WebCore::DOMSelection::type const): Use isInDocumentTree and range rather than
isNone/isCaret/isRange when live range selection is enabled, because this needs
to report "Caret" when the range is not collapsed, even if the canonicalized
range is collapsed and "None" when the selection is in a shadow tree.
(WebCore::DOMSelection::rangeCount const): Use isInDocumentTree to check if
there is a selection rather than isNone to correctly handle the shadow tree case.
(WebCore::DOMSelection::collapseToEnd): Use uncanonicalizedEnd.
(WebCore::DOMSelection::collapseToStart): Use uncanonicalizedStart.
(WebCore::DOMSelection::containsNode const): Updated the comment for clarity.

LayoutTests:

  • editing/execCommand/insert-list-nested-with-orphaned-expected.txt: This test

result reflected incorrrect behavior where the selection changed from a range
to a caret in a certain unusual case. The new behavior of leaving the text
selected is consistent with how the command works in normal cases, and was an
accidental progression from the improvements to the selection code. Was able
to reproduce this all in Safari and after experimenting with different
selections, it's clear this is an improvement.

12:21 PM Changeset in webkit [267328] by Simon Fraser
  • 7 edits
    4 copies
    1 add
    1 delete in trunk/Source/WebCore

[LFC Display] Move LFC Display infrastructure files into a new 'display' directory
https://bugs.webkit.org/show_bug.cgi?id=216747

Reviewed by Zalan Bujtas.

WebCore/Source/display will become the home for all the LFC painting code; move
DisplayView and DisplayLayerController into it.

Also fix some unified build include issues.

  • CMakeLists.txt:
  • Headers.cmake:
  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • display/DisplayLayerController.cpp: Renamed from Source/WebCore/layout/display/DisplayLayerController.cpp.
  • display/DisplayLayerController.h: Renamed from Source/WebCore/layout/display/DisplayLayerController.h.
  • display/DisplayView.cpp: Renamed from Source/WebCore/layout/display/DisplayView.cpp.
  • display/DisplayView.h: Renamed from Source/WebCore/layout/display/DisplayView.h.
  • layout/flexformatting/FlexFormattingContext.cpp:
  • layout/inlineformatting/InlineLineBox.cpp:
11:10 AM Changeset in webkit [267327] by Darin Adler
  • 4 edits in trunk/Source/WebCore

Selection API: Fix selectAllChilden to return InvalidNodeTypeError when passed a DocumentType node
https://bugs.webkit.org/show_bug.cgi?id=216741

Reviewed by Ryosuke Niwa.

This is covered by tests, but the fix itself is only testable when live range
selection is enabled. So for now the other tests are simply checking that no
regression or behavior change was introduced by accident.

  • page/DOMSelection.cpp:

(WebCore::DOMSelection::selectAllChildren): Return the value returned by
setBaseAndExtent so we don't discard any exception it might throw. In
practice, that's only this one.

  • page/DOMSelection.h: Updated return type so we can throw an exception.
  • page/DOMSelection.idl: Added MayThrowException.
10:51 AM Changeset in webkit [267326] by Simon Fraser
  • 2 edits in trunk/Source/WebKit

Sort the project file.

  • WebKit.xcodeproj/project.pbxproj:
8:01 AM Changeset in webkit [267325] by Alan Bujtas
  • 19 edits
    1 add in trunk

[LFC][IFC] InlineFormattingState should not store display lines and runs
https://bugs.webkit.org/show_bug.cgi?id=216742

Reviewed by Antti Koivisto.

Source/WebCore:

In this patch,

  1. Display related structures are completely moved out from Layout namespace
    • InlineFormattingContext does not generate display structures.
    • InlineFormattingState only stores layout data.
    • Layout tree verification works on layout geometry.
    • Layout structures do not embed Display types.
  2. LayoutIntegration creates and maintains the required Display structures for painting and hittesting.
  3. Display::Run does not use Layout types (InlineLayoutRect, InlineLayoutUnit).

FIXME: We need to start constructing display content for the Display::Painter.

  • WebCore.xcodeproj/project.pbxproj:
  • layout/Verification.cpp:

(WebCore::Layout::outputMismatchingSimpleLineInformationIfNeeded):
(WebCore::Layout::checkForMatchingNonTextRuns):
(WebCore::Layout::checkForMatchingTextRuns):
(WebCore::Layout::outputMismatchingComplexLineInformationIfNeeded):
(WebCore::Layout::LayoutContext::verifyAndOutputMismatchingLayoutTree):

  • layout/displaytree/DisplayInlineContent.h:

(WebCore::Display::InlineContent::shrinkToFit):

  • layout/displaytree/DisplayLine.h:

(WebCore::Display::Line::horizontalAlignmentOffset const):
(WebCore::Display::Line::Line):

  • layout/displaytree/DisplayPainter.cpp:

(WebCore::Display::paintInlineContent):

  • layout/displaytree/DisplayRun.h:

(WebCore::Display::Run::TextContent::start const):
(WebCore::Display::Run::TextContent::end const):
(WebCore::Display::Run::TextContent::length const):
(WebCore::Display::Run::TextContent::content const):
(WebCore::Display::Run::TextContent::needsHyphen const):
(WebCore::Display::Run::rect const):
(WebCore::Display::Run::inkOverflow const):
(WebCore::Display::Run::Run):
(WebCore::Display::Run::TextContent::TextContent):
(WebCore::Display::Run::TextContent::setNeedsHyphen): Deleted.
(WebCore::Display::Run::TextContent::expand): Deleted.
(WebCore::Display::Run::TextContent::shrink): Deleted.
(WebCore::Display::Run::topLeft const): Deleted.
(WebCore::Display::Run::left const): Deleted.
(WebCore::Display::Run::right const): Deleted.
(WebCore::Display::Run::top const): Deleted.
(WebCore::Display::Run::bottom const): Deleted.
(WebCore::Display::Run::width const): Deleted.
(WebCore::Display::Run::height const): Deleted.
(WebCore::Display::Run::moveVertically): Deleted.

  • layout/flexformatting/FlexFormattingContext.cpp:

(WebCore::Layout::FlexFormattingContext::sizeAndPlaceFlexItems):

  • layout/inlineformatting/InlineFormattingContext.cpp:

(WebCore::Layout::InlineFormattingContext::computeGeometryForLineContent):

  • layout/inlineformatting/InlineFormattingState.h:

(WebCore::Layout::InlineFormattingState::lineRuns const):
(WebCore::Layout::InlineFormattingState::lineRuns):
(WebCore::Layout::InlineFormattingState::addLineRun):
(WebCore::Layout::InlineFormattingState::clearLineAndRuns):
(WebCore::Layout::InlineFormattingState::shrinkToFit):
(WebCore::Layout::InlineFormattingState::displayInlineContent const): Deleted.
(WebCore::Layout::InlineFormattingState::ensureDisplayInlineContent): Deleted.
(WebCore::Layout::InlineFormattingState::shrinkDisplayInlineContent): Deleted.

  • layout/inlineformatting/InlineLine.h:

(WebCore::Layout::Line::Run::textContent const):
(WebCore::Layout::Line::Run::expansion const):

  • layout/inlineformatting/InlineLineGeometry.h:

(WebCore::Layout::InlineLineGeometry::horizontalAlignmentOffset const):
(WebCore::Layout::InlineLineGeometry::InlineLineGeometry):

  • layout/integration/LayoutIntegrationLineLayout.cpp:

(WebCore::LayoutIntegration::LineLayout::layout):
(WebCore::LayoutIntegration::LineLayout::constructDisplayContent):
(WebCore::LayoutIntegration::LineLayout::ensureDisplayInlineContent):
(WebCore::LayoutIntegration::LineLayout::paint):
(WebCore::LayoutIntegration::LineLayout::displayInlineContent const): Deleted.

  • layout/integration/LayoutIntegrationLineLayout.h:

(WebCore::LayoutIntegration::LineLayout::displayInlineContent const):

  • layout/layouttree/LayoutTreeBuilder.cpp:

(WebCore::Layout::outputInlineRuns):

  • layout/tableformatting/TableFormattingContext.cpp:

(WebCore::Layout::TableFormattingContext::setUsedGeometryForCells):

  • rendering/line/LineLayoutTraversalDisplayRunPath.h:

(WebCore::LineLayoutTraversal::DisplayRunPath::rect const):

LayoutTests:

This directory is about verifying layout correctness
by calling LayoutContext::verifyAndOutputMismatchingLayoutTree on every layout frame
and assert in case of mismatching trees.
The test coverage does not suffer by [ ImageOnlyFailure ] it.
(We need to start generating display boxes for the Display::Painter.)

2:14 AM Changeset in webkit [267324] by ysuzuki@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

Unreviewed, use RELEASE_AND_RETURN to suppress exception verification failure
https://bugs.webkit.org/show_bug.cgi?id=216686
<rdar://problem/69157632>

  • runtime/JSModuleNamespaceObject.cpp:

(JSC::JSModuleNamespaceObject::defineOwnProperty):

Sep 19, 2020:

9:32 PM Changeset in webkit [267323] by Lauro Moura
  • 2 edits in trunk/Tools

[GLIB] Merge API test expectations

Unreviewed test gardening.

Two TestUIClient sections were causing the first one to be ignored.

  • TestWebKitAPI/glib/TestExpectations.json:
9:30 PM Changeset in webkit [267322] by Lauro Moura
  • 2 edits in trunk/LayoutTests

[GLIB] Unreviewed gardening.

  • platform/glib/TestExpectations:
7:51 PM Changeset in webkit [267321] by Darin Adler
  • 20 edits in trunk/LayoutTests

Selection API: Update some more tests so they don't accidentally rely on flaws in WebKit's old implementation
https://bugs.webkit.org/show_bug.cgi?id=216737

Reviewed by Sam Weinig.

Like the three tests I modified in r267220, these tests are accidentally
depending on the fact that our selection object implementation currently
allows invalid indexes. It's clear that these are mistakes in the tests,
not intentional, and fixing these does not change the test expectations,
only the tests themselves.

  • accessibility/mac/select-text-should-match-whole-words.html: Set the selection

with separate calls to the collapse function. The old code tried to reuse the
same range to set the selection back to an old value, but that won't work if
the selection updates the range (as it is supposed to do).

  • editing/execCommand/indent-selection.html: Pass a valid index, 1, instead of

an invalid one, 2.

  • editing/pasteboard/paste-visible-script.html: Ditto.
  • editing/pasteboard/replacement-fragment-remove-unrendered-node-crash.html:

Pass a valid index, 0, instead of an invalid one, 10500000000. Also fixed line
endings in this file, which were all Windows-style CR/LF pairs to be Unix-style
LF like most of our other files.

  • editing/pasteboard/testcase-9507.html: Use childNodes.length to compute a

valid index instead of passing 5, which was an invalid one.

  • editing/style/apply-style-crash2.html: Pass a valid index, 0, instead of

an invalid one, 4.

  • editing/style/query-typing-style.html: Pass a valid index, 0, instead of

an invalid one, 1.

  • editing/undo/undo-paste-when-caret-is-not-in-range.html: Pass valid index

1 instead of invalid ones, 3 and 4.

  • fast/block/float/float-list-changed-before-layout-crash.html: Pass a valid

index, 0, instead of an invalid one, 1.

  • fast/dynamic/checkbox-selection-crash.html: Use childNodes.length to compute

a valid index instead of passing 1000, which was an invalid one.

  • fast/repaint/selection-gap-absolute-child.html: Pass a valid index, 0, instead

of an invalid one, 1.

  • fast/repaint/selection-gap-fixed-child.html: Ditto.
  • fast/repaint/selection-gap-flipped-absolute-child.html: Ditto.
  • fast/repaint/selection-gap-flipped-fixed-child.html: Ditto.
  • fast/repaint/selection-gap-transformed-absolute-child.html: Ditto.
  • fast/repaint/selection-gap-transformed-fixed-child.html: Ditto.
  • fast/replaced/selection-rect.html: Select the image with a range in its

parent node with valid indices instead of relying WebKit's quirky way of
expressing selections of replaced elements, which involves an invalid index
of 1 for an image element with no children. This test has nothing to do with
the particular selection range technique used, so it's fine to change it.

  • http/tests/security/resources/foreign-domain-iframe-for-selection-test.html:

Use childNodes.length to compute a valid index instead of passing 10, which was
an invalid one.

  • imported/blink/editing/apply-inline-style-to-element-with-no-renderer-crash.html:

Use a valid index, 0, instead of an invalid one, 4.

11:52 AM Changeset in webkit [267320] by Andres Gonzalez
  • 5 edits in trunk/Source/WebCore

Implementation for AXIsolatedObject::nextSibling and previousSibling.
https://bugs.webkit.org/show_bug.cgi?id=216710

Reviewed by Chris Fleizach.

Implementation for AXIsolatedObject::previousSibling and nextSibling which
are invoked by VoiceOver in Safari Reader mode.

  • accessibility/AccessibilityRenderObject.cpp:

(WebCore::AccessibilityRenderObject::previousSibling const):

  • Fixed crash caused by dereferencing m_renderer->parent() which can be null.
  • Added check for the AXObjectCache that can become null.

(WebCore::AccessibilityRenderObject::nextSibling const):

  • Code style cleanup.
  • accessibility/isolatedtree/AXIsolatedObject.cpp:

(WebCore::AXIsolatedObject::initializeAttributeData):

  • Added caching of next/previousSiblling objects.

(WebCore::AXIsolatedObject::previousSibling const): Inlined in header..
(WebCore::AXIsolatedObject::nextSibling const): Inlined in header.

  • accessibility/isolatedtree/AXIsolatedObject.h:
  • accessibility/isolatedtree/AXIsolatedTree.h:
10:43 AM Changeset in webkit [267319] by Kocsen Chung
  • 1 copy in tags/Safari-610.2.6.1.3

Tag Safari-610.2.6.1.3.

10:39 AM Changeset in webkit [267318] by Kocsen Chung
  • 1 edit in branches/safari-610.2.6.1-branch/Source/WebKit/UIProcess/mac/DisplayLink.cpp

Cherry-pick r266958. rdar://problem/69202514

Unreviewed build fix for r266771. An include is missing which causes the build to fail flakily depending on the position of the cpp in the unified source file.

  • UIProcess/mac/DisplayLink.cpp:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@266958 268f45cc-cd09-0410-ab3c-d52691b4dbfc

10:37 AM Changeset in webkit [267317] by Kocsen Chung
  • 8 edits in branches/safari-610.2.6.1-branch/Source

Versioning.

WebKit-7610.2.6.1.3

10:07 AM Changeset in webkit [267316] by weinig@apple.com
  • 10 edits in trunk

Performance and PerformanceNavigation interfaces are missing toJSON operations
https://bugs.webkit.org/show_bug.cgi?id=216728

Reviewed by Darin Adler.

LayoutTests/imported/w3c:

Update results now that we pass more subtests.

  • web-platform-tests/hr-time/idlharness.any-expected.txt:
  • web-platform-tests/hr-time/idlharness.any.worker-expected.txt:
  • web-platform-tests/hr-time/performance-tojson-expected.txt:

Source/WebCore:

Add missing toJSON operations to Performance and PerformanceNavigation and update
comments in related IDLs.

Updates results for existing tests, more of which now pass.

  • page/Performance.idl:
  • page/PerformanceMark.idl:
  • page/PerformanceMeasure.idl:
  • page/PerformanceNavigation.idl:
  • page/PerformanceTiming.idl:
9:46 AM Changeset in webkit [267315] by Alan Bujtas
  • 5 edits in trunk/Source/WebCore

[LFC][IFC] InlineFormattingContext::computeGeometryForLineContent should not construct Display::Lines
https://bugs.webkit.org/show_bug.cgi?id=216723

Reviewed by Antti Koivisto.

Display::Lines construction should live in the display builder. However currently we don't yet have a real builder, so let's
just use the integration layer.
This is also in preparation for removing all the Display::InlineContent code from the Layout namespace.

  • layout/displaytree/DisplayPainter.cpp:

(WebCore::Display::paintInlineContent):

  • layout/inlineformatting/InlineFormattingContext.cpp:

(WebCore::Layout::InlineFormattingContext::computeGeometryForLineContent):

  • layout/integration/LayoutIntegrationLineLayout.cpp:

(WebCore::LayoutIntegration::LineLayout::layout):
(WebCore::LayoutIntegration::LineLayout::constructDisplayContent):

  • layout/integration/LayoutIntegrationLineLayout.h:
8:05 AM Changeset in webkit [267314] by weinig@apple.com
  • 8 edits
    1 copy
    1 move
    12 adds
    2 deletes in trunk/LayoutTests

Resync web-platform-tests/hr-time from upstream
https://bugs.webkit.org/show_bug.cgi?id=216724

Reviewed by Darin Adler.

LayoutTests/imported/w3c:

Resync web-platform-tests/hr-time from upstream.

  • web-platform-tests/hr-time/META.yml: Added.
  • web-platform-tests/hr-time/OWNERS: Removed.
  • web-platform-tests/hr-time/idlharness-expected.txt: Removed.
  • web-platform-tests/hr-time/idlharness.any-expected.txt: Added.
  • web-platform-tests/hr-time/idlharness.any.html: Added.
  • web-platform-tests/hr-time/idlharness.any.js: Added.
  • web-platform-tests/hr-time/idlharness.any.worker-expected.txt: Added.
  • web-platform-tests/hr-time/idlharness.any.worker.html: Added.
  • web-platform-tests/hr-time/idlharness.html: Removed.
  • web-platform-tests/hr-time/monotonic-clock.any.js:
  • web-platform-tests/hr-time/performance-tojson-expected.txt: Added.
  • web-platform-tests/hr-time/performance-tojson.html: Added.
  • web-platform-tests/hr-time/resources/unload-a.html: Added.
  • web-platform-tests/hr-time/resources/unload-b.html: Added.
  • web-platform-tests/hr-time/resources/unload-c.html: Added.
  • web-platform-tests/hr-time/resources/unload.js: Added.
  • web-platform-tests/hr-time/resources/w3c-import.log:
  • web-platform-tests/hr-time/timeOrigin-expected.txt:
  • web-platform-tests/hr-time/w3c-import.log:
  • web-platform-tests/hr-time/window-worker-timeOrigin.window-expected.txt: Added.
  • web-platform-tests/hr-time/window-worker-timeOrigin.window.html: Added.

LayoutTests:

  • platform/ios/TestExpectations:
  • platform/mac/TestExpectations:

Update paths in expectations.

7:48 AM Changeset in webkit [267313] by Darin Adler
  • 8 edits
    2 adds in trunk

Selection API: Extend lifetime of selection live range to preserve expando properties
https://bugs.webkit.org/show_bug.cgi?id=216721

Reviewed by Ryosuke Niwa.

Source/WebCore:

Test: editing/selection/expando.html

  • dom/Range.cpp:

(WebCore::Range::window): Added. Returns window if range is associated with selection.

  • dom/Range.h: Added window.
  • dom/Range.idl: Added GenerateIsReachable=ReachableFromDOMWindow.
  • editing/FrameSelection.cpp:

(WebCore::FrameSelection::disassociateLiveRange): Removed a FIXME comment about the
need for this fix.
(WebCore::FrameSelection::updateAssociatedLiveRange): Added a comment explaining
why an associated live range might not be contained in the document.

LayoutTests:

  • editing/selection/expando-expected.txt: Added.
  • editing/selection/expando.html: Added.
  • TestExpectations: Skip the new test since DumpRenderTree doesn't support enabling

internal properties.

  • platform/wk2/TestExpectations: Unskip the new test since WebKitTestRunner does.
7:22 AM Changeset in webkit [267312] by weinig@apple.com
  • 8 edits
    3 adds in trunk/Source/WebCore

Add support for Settings equivilent of RuntimeConditionallyReadWrite
https://bugs.webkit.org/show_bug.cgi?id=216697

Reviewed by Darin Adler.

Adds a new extended attribute, [SettingsConditionallyReadWrite] to allow users of
[RuntimeConditionallyReadWrite] to convert from RuntimeEnabledFeatures to Settings.

  • bindings/scripts/CodeGeneratorJS.pm:

(NeedsRuntimeReadWriteCheck):
(GeneratePropertiesHashTable):
(GenerateRuntimeEnableConditionalString):
(GenerateImplementation):

  • bindings/scripts/IDLAttributes.json:

Adds new extended attribute.

  • bindings/scripts/test/DOMWindowConstructors.idl:
  • bindings/scripts/test/JS/JSDOMWindow.cpp:
  • bindings/scripts/test/JS/JSTestConditionallyReadWrite.cpp: Added.
  • bindings/scripts/test/JS/JSTestConditionallyReadWrite.h: Added.
  • bindings/scripts/test/JS/JSTestObj.cpp:
  • bindings/scripts/test/SupplementalDependencies.dep:
  • bindings/scripts/test/TestConditionallyReadWrite.idl: Added.
  • bindings/scripts/test/TestObj.idl:

Move conditionally read-write tests to a new test, TestConditionallyReadWrite.idl and
update results.

7:20 AM Changeset in webkit [267311] by weinig@apple.com
  • 7 edits in trunk/Source

Remove runtime setting for enabling/disabling the CrossOriginResourcePolicy API
https://bugs.webkit.org/show_bug.cgi?id=216561

Reviewed by Darin Adler.

Remove runtime setting for enabling/disabling CrossOriginResourcePolicy. It has been
enabled by default for a while and there are no known reasons one would need to
disable it.

Source/WebCore:

  • page/RuntimeEnabledFeatures.h:

(WebCore::RuntimeEnabledFeatures::setCrossOriginResourcePolicyEnabled): Deleted.
(WebCore::RuntimeEnabledFeatures::crossOriginResourcePolicyEnabled const): Deleted.

Source/WebKit:

  • Shared/WebPreferences.yaml:
  • UIProcess/API/C/WKPreferences.cpp:

(WKPreferencesSetCrossOriginResourcePolicyEnabled):
(WKPreferencesGetCrossOriginResourcePolicyEnabled):

  • UIProcess/API/C/WKPreferencesRef.h:
  • WebProcess/Network/WebLoaderStrategy.cpp:

(WebKit::WebLoaderStrategy::scheduleLoadFromNetworkProcess):

5:54 AM Changeset in webkit [267310] by Simon Fraser
  • 7 edits in trunk/Source/WebCore

ASSERTION FAILED: &formattingContextRoot == m_rootContainer.get() in WebCore::Layout::LayoutState::establishedInlineFormattingState
https://bugs.webkit.org/show_bug.cgi?id=216668

Reviewed by Zalan Bujtas.

Display::View didn't unparent the GraphicsLayers when Document::documentWillBecomeInactive() was called,
so a layer pointing to an old LayoutState would try to paint.

Fix by plumbing setIsInWindow() through to Display::View and using it to detach the root layer.

  • dom/Document.cpp:

(WebCore::Document::documentWillBecomeInactive): The ASSERT_IMPLIES() is there to ensure that this isn't
a behavior change; we used to go to RenderView directly, and now go via FrameView.

  • layout/display/DisplayLayerController.cpp:

(WebCore::Display::LayerController::detachRootLayer):
(WebCore::Display::LayerController::setIsInWindow):

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

(WebCore::Display::View::setIsInWindow):

  • layout/display/DisplayView.h:
  • page/FrameView.cpp:

(WebCore::FrameView::setIsInWindow):

Note: See TracTimeline for information about the timeline view.