Branch: refs/heads/webkitglib/2.44
  Home:   https://github.com/WebKit/WebKit
  Commit: 00ffde40dfc59c157170922f6c876b08fa3e0bc6
      
https://github.com/WebKit/WebKit/commit/00ffde40dfc59c157170922f6c876b08fa3e0bc6
  Author: Ahmad Saleem <ahmad.saleem...@gmail.com>
  Date:   2024-09-04 (Wed, 04 Sep 2024)

  Changed paths:
    M Source/WebCore/rendering/RenderLayer.cpp
    M Source/WebCore/rendering/RenderLayerModelObject.cpp

  Log Message:
  -----------
  Cherry-pick 281307@main (52ae7a91d2f1). 
https://bugs.webkit.org/show_bug.cgi?id=276996

    destroyLayer() should call setHasLayer(false)

    https://bugs.webkit.org/show_bug.cgi?id=276996

    Reviewed by Simon Fraser.

    Merge: 
https://github.com/chromium/chromium/commit/515b887cc764eff0fd976bf60efd6dd6fd099ec5

    This change synchronize clearing the layer and calling setHasLayer.
    The old code would dissociate the two operations to handle clean-ups
    during RenderLayer::removeOnlyThisLayer. The dissociation was
    introduced to handle bug 25252 (33539@main)
    and Eric wasn't sure at the time it was the right solution.

    Based on the fact that the tests are still passing, it wasn't.

    * Source/WebCore/rendering/RenderLayer.cpp:
    (WebCore::RenderLayer::removeOnlyThisLayer):
    * Source/WebCore/rendering/RenderLayerModelObject.cpp:
    (WebCore::RenderLayerModelObject::willBeDestroyed):
    (WebCore::RenderLayerModelObject::destroyLayer):

    Canonical link: https://commits.webkit.org/281307@main

Canonical link: https://commits.webkit.org/274313.414@webkitglib/2.44


  Commit: b098c860ae82c7f508639b1246dea6ecd949fdda
      
https://github.com/WebKit/WebKit/commit/b098c860ae82c7f508639b1246dea6ecd949fdda
  Author: Tyler Wilcock <tyle...@apple.com>
  Date:   2024-09-04 (Wed, 04 Sep 2024)

  Changed paths:
    A 
LayoutTests/accessibility/mixed-contenteditable-double-br-visible-character-range-hang-expected.txt
    A 
LayoutTests/accessibility/mixed-contenteditable-double-br-visible-character-range-hang.html
    A 
LayoutTests/accessibility/mixed-contenteditable-visible-character-range-hang-expected.txt
    A 
LayoutTests/accessibility/mixed-contenteditable-visible-character-range-hang.html
    M LayoutTests/platform/glib/TestExpectations
    M LayoutTests/platform/ios/TestExpectations
    A 
LayoutTests/platform/ios/accessibility/mixed-contenteditable-double-br-visible-character-range-hang-expected.txt
    A 
LayoutTests/platform/ios/accessibility/mixed-contenteditable-visible-character-range-hang-expected.txt
    M LayoutTests/platform/mac-wk1/TestExpectations
    M Source/WebCore/accessibility/AccessibilityObject.cpp

  Log Message:
  -----------
  Cherry-pick 281089@main (4b84c3ea8c26). 
https://bugs.webkit.org/show_bug.cgi?id=276656

    AX: WebCore::endOfLine can return the same position it started with, 
causing an infinite loop when iterating over 
`AccessibilityObject::nextLineEndPosition`s
    https://bugs.webkit.org/show_bug.cgi?id=276656
    rdar://131837344

    Reviewed by Andres Gonzalez.

    In `WebCore::endOfLine(const VisiblePosition& input)`, the input position 
is taken, and an `endPositionForLine` is
    computed. It then checks to ensure that `inSameLine(input, computedEnd)`, 
and if not, it walks `previous()` one position
    from `input` and gets the `endPositionForLine` of that position.

    This all makes sense on the surface. `endOfLine`s job is to find the end 
position of the line `input` belongs to. The
    problem is that `inSameLine` does not arguably work intuitively — it 
returns false if position A is editable, while
    position B is not, even if they are rendered on the same line.

    This mixed editability is present in markup on Google Docs documents:

    <span class="text-style">Line of text</span><span contenteditable="false"> 
<br role="presentation"/></span>

    There is a single space character before the br element, and if that 
position is compared with any earlier one,
    `inSameLine` will return false.

    I did try passing a flag through to `isSameLine` that ignored this 
editability requirement, but there are other ways
    to trigger this behavior too, so the bug persisted. Instead, I've made 
nextLineEndPosition resilient to this issue
    by looping until we have moved off the start position.

    Two testcases added — these hang indefinitely without the changes in this 
commit.

    * 
LayoutTests/accessibility/mixed-contenteditable-double-br-visible-character-range-hang-expected.txt:
 Added.
    * 
LayoutTests/accessibility/mixed-contenteditable-double-br-visible-character-range-hang.html:
 Added.
    * 
LayoutTests/accessibility/mixed-contenteditable-visible-character-range-hang-expected.txt:
 Added.
    * 
LayoutTests/accessibility/mixed-contenteditable-visible-character-range-hang.html:
 Added.
    * LayoutTests/platform/glib/TestExpectations: Disable new tests.
    * LayoutTests/platform/ios/TestExpectations: Enable new tests.
    * 
LayoutTests/platform/ios/accessibility/mixed-contenteditable-double-br-visible-character-range-hang-expected.txt:
 Added.
    * 
LayoutTests/platform/ios/accessibility/mixed-contenteditable-visible-character-range-hang-expected.txt:
 Added.
    * LayoutTests/platform/mac-wk1/TestExpectations:
    * Source/WebCore/accessibility/AccessibilityObject.cpp:
    (WebCore::AccessibilityObject::nextLineEndPosition const):

    Canonical link: https://commits.webkit.org/281089@main

Canonical link: https://commits.webkit.org/274313.415@webkitglib/2.44


  Commit: 2d09b43768b70c0c2af2ef58796d8009ad7d16c2
      
https://github.com/WebKit/WebKit/commit/2d09b43768b70c0c2af2ef58796d8009ad7d16c2
  Author: Simon Fraser <simon.fra...@apple.com>
  Date:   2024-09-04 (Wed, 04 Sep 2024)

  Changed paths:
    M Source/WebCore/rendering/ImageQualityController.cpp
    M Source/WebCore/rendering/ImageQualityController.h

  Log Message:
  -----------
  Cherry-pick 280872@main (42d62602b564). 
https://bugs.webkit.org/show_bug.cgi?id=276347

    ImageQualityController thrashes a timer
    https://bugs.webkit.org/show_bug.cgi?id=276347
    rdar://131352675

    Reviewed by Tim Horton.

    For content with lots of images, 
`ImageQualityController::chooseInterpolationQuality()` is called each time
    an image paints and potentially restarts a timer. Use a 
DeferrableOneShotTimer instead, which is designed
    for this kind of use case.

    Also do some other minor optimizations; only call 
`context.getCTM().isIdentityOrTranslationOrFlipped()` if we need to,
    and only set a new value in the hash tables if the size changed.

    * Source/WebCore/rendering/ImageQualityController.cpp:
    (WebCore::ImageQualityController::ImageQualityController):
    (WebCore::ImageQualityController::restartTimer):
    * Source/WebCore/rendering/ImageQualityController.h:

    Canonical link: https://commits.webkit.org/280872@main

Canonical link: https://commits.webkit.org/274313.416@webkitglib/2.44


Compare: https://github.com/WebKit/WebKit/compare/5f48d180c1b7...2d09b43768b7

To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to