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

Timeline



Jul 26, 2020:

7:03 PM Changeset in webkit [264908] by Simon Fraser
  • 14 edits
    3 copies
    11 adds in trunk

Scroll Snap broken when using RTL layout
https://bugs.webkit.org/show_bug.cgi?id=193671
<rdar://problem/47457471>

Reviewed by Wenson Hsieh.

Source/WebCore:

There were various places in the scroll snapping code which confused scroll offsets (zero-based)
with scroll positions (relative to scroll origin, can be negative). This broke snapping in
direction: rtl content.

The computation of snap locations in updateSnapOffsetsForScrollableArea() was also broken
in RTL; we need to snap the right edge of boxes to the right edge of the scroller for the 'start'
alignment. (Snapping for LTR boxes in an RTL scroller is poorly defined; for now, follow Gecko.)

Tests: css3/scroll-snap/scroll-snap-2d-change-axis-type-rtl.html

css3/scroll-snap/scroll-snap-2d-offsets-computed-independently.rtl.html
css3/scroll-snap/scroll-snap-elements-container-larger-than-children-rtl.html
css3/scroll-snap/scroll-snap-iframe-rtl.html
css3/scroll-snap/scroll-snap-offsets-mixed-rtl.html
css3/scroll-snap/scroll-snap-offsets-rtl.html

  • page/scrolling/AxisScrollSnapOffsets.cpp:

(WebCore::computeScrollSnapAlignOffset):
(WebCore::updateSnapOffsetsForScrollableArea):

  • page/scrolling/mac/ScrollingTreeScrollingNodeDelegateMac.mm:

(WebCore::ScrollingTreeScrollingNodeDelegateMac::scrollOffset const):

  • platform/ScrollAnimator.cpp:

(WebCore::ScrollAnimator::updateActiveScrollSnapIndexForOffset):
(WebCore::ScrollAnimator::scrollOffset const):

  • platform/cocoa/ScrollController.mm:

(WebCore::ScrollController::updateScrollSnapPoints):

Source/WebKit:

There were various places in the scroll snapping code which confused scroll offsets (zero-based)
with scroll positions (relative to scroll origin, can be negative). This broke snapping in
direction: rtl content.

The computation of snap locations in updateSnapOffsetsForScrollableArea() was also broken
in RTL; we need to snap the right edge of boxes to the right edge of the scroller for the 'start'
alignment. (Snapping for LTR boxes in an RTL scroller is poorly defined; for now, follow Gecko.)

  • Shared/RemoteLayerTree/RemoteScrollingCoordinatorTransaction.cpp:

(WebKit::dump):

  • UIProcess/API/ios/WKWebViewIOS.mm:

(-[WKWebView _updateVisibleContentRects]):

  • UIProcess/RemoteLayerTree/RemoteScrollingCoordinatorProxy.h:
  • UIProcess/RemoteLayerTree/ios/RemoteScrollingCoordinatorProxyIOS.mm:

(WebKit::RemoteScrollingCoordinatorProxy::shouldSnapForMainFrameScrolling const):
(WebKit::RemoteScrollingCoordinatorProxy::closestSnapOffsetForMainFrameScrolling const):
(WebKit::RemoteScrollingCoordinatorProxy::hasActiveSnapPoint const):
(WebKit::RemoteScrollingCoordinatorProxy::nearestActiveContentInsetAdjustedSnapOffset const):
(WebKit::RemoteScrollingCoordinatorProxy::nearestActiveContentInsetAdjustedSnapPoint const): Deleted.

LayoutTests:

  • css3/scroll-snap/resources/iframe-content-rtl.html: Added.
  • css3/scroll-snap/scroll-snap-2d-change-axis-type-rtl-expected.txt: Added.
  • css3/scroll-snap/scroll-snap-2d-change-axis-type-rtl.html: Copied from LayoutTests/css3/scroll-snap/scroll-snap-2d-change-axis-type.html.
  • css3/scroll-snap/scroll-snap-2d-change-axis-type.html:
  • css3/scroll-snap/scroll-snap-2d-offsets-computed-independently.html:
  • css3/scroll-snap/scroll-snap-2d-offsets-computed-independently.rtl-expected.txt: Added.
  • css3/scroll-snap/scroll-snap-2d-offsets-computed-independently.rtl.html: Copied from LayoutTests/css3/scroll-snap/scroll-snap-2d-offsets-computed-independently.html.
  • css3/scroll-snap/scroll-snap-elements-container-larger-than-children-rtl-expected.txt: Added.
  • css3/scroll-snap/scroll-snap-elements-container-larger-than-children-rtl.html: Copied from LayoutTests/css3/scroll-snap/scroll-snap-elements-container-larger-than-children.html.
  • css3/scroll-snap/scroll-snap-elements-container-larger-than-children.html:
  • css3/scroll-snap/scroll-snap-iframe-rtl-expected.txt: Added.
  • css3/scroll-snap/scroll-snap-iframe-rtl.html: Added.
  • css3/scroll-snap/scroll-snap-offsets-mixed-rtl-expected.txt: Added.
  • css3/scroll-snap/scroll-snap-offsets-mixed-rtl.html: Added.
  • css3/scroll-snap/scroll-snap-offsets-rtl-expected.txt: Added.
  • css3/scroll-snap/scroll-snap-offsets-rtl.html: Added.
  • fast/scrolling/home-end-keys-scroll-in-rtl-document-expected.txt: Added.
12:25 PM Changeset in webkit [264907] by Wenson Hsieh
  • 20 edits in trunk

REGRESSION (r264690): [ iOS wk2 ] editing/selection/shift-click-includes-existing-selection.html is a flaky failure
https://bugs.webkit.org/show_bug.cgi?id=214688
<rdar://problem/65993683>

Reviewed by Darin Adler.

Source/WebCore/PAL:

Remove logging added in r264882, r264890, r264892, and r264896.

  • pal/spi/ios/GraphicsServicesSPI.h:

Source/WebKit:

Remove logging added in r264882, r264890, r264892, and r264896.

  • Platform/spi/ios/UIKitSPI.h:
  • UIProcess/ios/WKContentViewInteraction.mm:

(-[WKContentView _singleTapIdentified:]):
(-[WKContentView _singleTapRecognized:]):

  • UIProcess/ios/WebPageProxyIOS.mm:

(WebKit::WebPageProxy::commitPotentialTap):

  • WebProcess/WebPage/ios/WebPageIOS.mm:

(WebKit::WebPage::handleSyntheticClick):

Tools:

Attempt another speculative fix for this flaky test, motivated by logging introduced in r264896. This recently
introduced telemetry would suggest that this test fails when the act of handling a synthetic modifier keydown
fails to update GSKeyboardRef's live modifier flags if the keyboard layout changes mid-event, forcing the
existing GSKeyboardRef to be destroyed and rebuilt.

In this case, the keyboard layout changes from "Hebrew" to "US" when this test fails. There is only one (sane)
explanation for this, which is that one of the editing/input/ios/rtl-keyboard-input-*.html tests switch to an
RTL keyboard ("he_IL" in both cases) by swizzling out -currentInputMode and -currentInputModeInPreference on
UIKeyboardInputModeController. While the swizzling is torn down in between test runs via logic in
TestController::platformResetStateToConsistentValues, it's possible that this change hasn't propagated to
the UIKit or GraphicsServices layers -- in other words, UIApplication's GSKeyboardRef remains stuck in the
Hebrew layout until the next time -GSKeyboardForHWLayout:forceRebuild:createIfNeeded: forces the keyboard to
be rebuilt, which (in this case) seems to happen while running shift-click-includes-existing-selection.html.

For reasons that are still unclear, this lazy regeneration of the GSKeyboardRef causes GraphicsServices' live
modifier state to not update when handling a shift key down HID event. However, we might be able to fix this by
forcing UIKit to sync the default (unswizzled) keyboard layout back to its GSKeyboardRef immediately when we
stop swizzling UIKeyboardInputModeController after running a test that attempts to simulate changing keyboard
input modes.

  • WebKitTestRunner/ios/TestControllerIOS.mm:

(WTR::TestController::platformResetStateToConsistentValues):

Call -prepareKeyboardInputModeFromPreferences: to force the UIApp to update its hardware keyboard state (i.e.
GSKeyboardRef).

  • WebKitTestRunner/ios/UIScriptControllerIOS.mm:

(WTR::UIScriptControllerIOS::singleTapAtPointWithModifiers):

Also, restore this method to how it was prior to r264890, as it doesn't seem like waiting for the HID marker
event after synthesizing a keydown had any effect.

  • WebKitTestRunner/ios/mainIOS.mm:

(-[WebKitTestRunnerApp handleKeyHIDEvent:]): Deleted.

WebKitLibraries:

Remove logging added in r264882, r264890, r264892, and r264896.

  • WebKitPrivateFrameworkStubs/appletvos/13/GraphicsServices.framework/GraphicsServices.tbd:
  • WebKitPrivateFrameworkStubs/appletvos/14/GraphicsServices.framework/GraphicsServices.tbd:
  • WebKitPrivateFrameworkStubs/iOS/13/GraphicsServices.framework/GraphicsServices.tbd:
  • WebKitPrivateFrameworkStubs/iOS/14/GraphicsServices.framework/GraphicsServices.tbd:
  • WebKitPrivateFrameworkStubs/watchos/6/GraphicsServices.framework/GraphicsServices.tbd:
  • WebKitPrivateFrameworkStubs/watchos/7/GraphicsServices.framework/GraphicsServices.tbd:

LayoutTests:

Remove the failing test expectation.

  • platform/ios-simulator-wk2/TestExpectations:
12:22 PM Changeset in webkit [264906] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebCore

-Wunused-parameter in FilterEffectRenderer.cpp
https://bugs.webkit.org/show_bug.cgi?id=214808

Unreviewed.

Patch by Michael Catanzaro <Michael Catanzaro> on 2020-07-26

  • platform/graphics/filters/FilterEffectRenderer.cpp:

(WebCore::FilterEffectRenderer::tryCreate):

12:12 PM Changeset in webkit [264905] by Darin Adler
  • 23 edits
    1 add
    2 deletes in trunk

Stop using live ranges in SpellChecker.h and TextCheckingHelper.h
https://bugs.webkit.org/show_bug.cgi?id=214648

Reviewed by Sam Weinig.

Source/WebCore:

  • accessibility/mac/WebAccessibilityObjectWrapperBase.mm:

Removed unneeded include of TextCheckingHelper.h.

  • dom/DocumentMarkerController.cpp:

(WebCore::DocumentMarkerController::removeMarkers): Updated for change
to the argument type name.
(WebCore::DocumentMarkerController::filterMarkers): Ditto.
(WebCore::addMarker): Added. Convenience so call doesn't have to get
the document to call this.
(WebCore::removeMarkers): Ditto.

  • dom/DocumentMarkerController.h: Moved RemovePartiallyOverlappingMarker

out of the DocumentMarkerController class, tweaked its name and changed
it into an enum class. Added conveniences functions for add/removeMarker.

  • editing/AlternativeTextController.cpp:

(WebCore::AlternativeTextController::respondToUnappliedSpellCorrection):
Use convenience versions of removeMarkers and addMarker.
(WebCore::AlternativeTextController::handleAlternativeTextUIResult): Ditto.
(WebCore::AlternativeTextController::respondToUnappliedEditing): Ditto.
(WebCore::AlternativeTextController::markReversed): Ditto.
(WebCore::AlternativeTextController::markCorrection): Ditto.
(WebCore::AlternativeTextController::recordSpellcheckerResponseForModifiedCorrection): Ditto.
(WebCore::AlternativeTextController::markPrecedingWhitespaceForDeletedAutocorrectionAfterCommand): Ditto.
(WebCore::AlternativeTextController::applyAlternativeTextToRange): Ditto.

  • editing/CompositeEditCommand.cpp:

(WebCore::CompositeEditCommand::replaceTextInNodePreservingMarkers): Ditto.

  • editing/Editor.cpp:

(WebCore::Editor::ignoreSpelling): Ditto.
(WebCore::Editor::learnSpelling): Ditto.
(WebCore::Editor::advanceToNextMisspelling): Rewrote to not use a live
range and for the changes to the TextCheckingHelper.
(WebCore::Editor::isSelectionUngrammatical): Deleted.
(WebCore::Editor::guessesForMisspelledOrUngrammatical): Changed to use a
return value instead of out arguments.
(WebCore::Editor::clearMisspellingsAndBadGrammar): Use convenience
versions of removeMarkers.
(WebCore::Editor::markMisspellingsAfterTypingToWord): Ditto.
(WebCore::Editor::markMisspellingsOrBadGrammar): Updated for change to
TextCheckingHelper.
(WebCore::Editor::markAllMisspellingsAndBadGrammarInRanges): Do not use
live ranges.
(WebCore::correctSpellcheckingPreservingTextCheckingParagraph): Take a
range that isn't a live range.
(WebCore::Editor::markAndReplaceFor): Tweak for changes to text checking
and to use convenience version of addMarker.
(WebCore::Editor::changeBackToReplacedString): Use convenience versions of
removeMarkers and addMarker.
(WebCore::Editor::updateMarkersForWordsAffectedByEditing): Ditto.
(WebCore::Editor::countMatchesForText): Ditto.
(WebCore::Editor::scanSelectionForTelephoneNumbers): Ditto.
(WebCore::Editor::editorUIUpdateTimerFired): Ditto.
(WebCore::Editor::handleAcceptedCandidate): Ditto.

  • editing/Editor.h: Update for the above.
  • editing/SpellChecker.cpp:

(WebCore::SpellCheckRequest::SpellCheckRequest): No longer take live ranges.
(WebCore::SpellCheckRequest::create): Ditto.
(WebCore::SpellChecker::canCheckAsynchronously const): Ditto.
(WebCore::SpellChecker::isCheckable const): Ditto.
(WebCore::SpellChecker::didCheckSucceed): Use convenience versions of
removeMarkers.

  • editing/SpellChecker.h: Remove the use of live ranges. Removed many

unneeded includes and forward declarations.

  • editing/TextCheckingHelper.cpp:

(WebCore::expandToParagraphBoundary): Take and return non-live ranges.
(WebCore::TextCheckingParagraph::TextCheckingParagraph): Ditto.
(WebCore::TextCheckingParagraph::expandRangeToNextEnd): Updated to use
non-live ranges.
(WebCore::TextCheckingParagraph::invalidateParagraphRangeValues): Ditto.
(WebCore::TextCheckingParagraph::paragraphRange const): Ditto.
(WebCore::TextCheckingParagraph::subrange const): Ditto.
(WebCore::TextCheckingParagraph::offsetTo const): Ditto.
(WebCore::TextCheckingParagraph::offsetAsRange const): Ditto.
(WebCore::TextCheckingParagraph::automaticReplacementStart const): Ditto.
(WebCore::TextCheckingParagraph::automaticReplacementLength const): Ditto.
(WebCore::TextCheckingHelper::~TextCheckingHelper): Deleted.
(WebCore::TextCheckingHelper::findMispelledWords const): Renamed from
findFirstMispelling, and made this private function since it has confusing
argument and return types. Reimplemented to use non-live ranges and to use
return values and the addMarker convenience function. Also changed this to
not mark when called just to find the first mispelled word. The old version
always marked, which didn't make logical sense, but was harmless because
the caller always marked the same way. Now this does what it says.
(WebCore::TextCheckingHelper::findFirstMisspelledWord const): Added.
Replaces findFirstMispelling as a public function, and returns a structure
instead of using out arguments.
(WebCore::TextCheckingHelper::findFirstMisspelledWordOrUngrammaticalPhrase const):
Renamed from findFirstMisspellingOrBadGrammar and changed to return a structure
instead of using out arguments.
(WebCore::TextCheckingHelper::findUngrammaticalPhrases const): Renamed from
findFirstGrammarDetail and findFirstBadGrammar. Both functions are now private
and use the new Operation enum class to distinguish the "find first" from
"mark all" usage. Also use the convience version of addMarker and return results
in a structure instead of using out arguments.
(WebCore::TextCheckingHelper::findFirstUngrammaticalPhrase const): Added.
Replaces findFirstBadGrammar as a public function, returns a structure
instead of using out arguments.
(WebCore::TextCheckingHelper::guessesForMisspelledWordOrUngrammaticalPhrase const):
Renamed from guessesForMisspelledOrUngrammaticalRange and changed to return
a structure instead of out arguments.
(WebCore::TextCheckingHelper::markAllMisspelledWords const): Renamed from
markAllMisspellings and changed to use a return value instead of an out argument.
(WebCore::TextCheckingHelper::markAllUngrammaticalPhrases const): Renamed
from markAllBadGrammar.

  • editing/TextCheckingHelper.h: Removed unneed include of "EditorClient.h".

Use non-live ranges. Updated for the other changes above.

  • editing/ios/DictationCommandIOS.cpp:

(WebCore::DictationCommandIOS::doApply): Use the convenience version of addMarker.

  • editing/ios/EditorIOS.mm:

(WebCore::Editor::setDictationPhrasesAsChildOfElement): Ditto.

  • page/ContextMenuController.cpp:

(WebCore::ContextMenuController::populate): Updated for the change to
Editor::guessesForMisspelledOrUngrammatical.

  • platform/text/TextChecking.h: Added a TextCheckingGuesses structure here

used both by Editor and TextCheckingHelper.

Source/WebKit:

  • WebProcess/WebCoreSupport/WebEditorClient.cpp: Added an include

of Range.h, no longer pulled in indirectly by another header.

Source/WebKitLegacy/mac:

  • WebCoreSupport/WebEditorClient.mm:

(WebEditorClient::requestCheckingOfString): Pass the specific types of
results we expect, rather than NSTextCheckingAllSystemTypes.

LayoutTests:

  • editing/spelling/design-mode-spellcheck-off-expected.txt: Updated to use the misspelling

"tyop" instead of "asdf", otherwise spell checking thinks the text is in Romanian,
rather than misspelled US English.

  • editing/spelling/design-mode-spellcheck-off.html: Ditto.
  • platform/mac/editing/pasteboard/drop-text-without-selection-expected.html: Added.

Changed this test into a reference test.

  • platform/mac/editing/pasteboard/drop-text-without-selection-expected.png: Removed.
  • platform/mac/editing/pasteboard/drop-text-without-selection-expected.txt: Removed.
12:10 PM Changeset in webkit [264904] by commit-queue@webkit.org
  • 7 edits in trunk/Source/ThirdParty/libwebrtc

libwebrtc uint64_t build fixes
https://bugs.webkit.org/show_bug.cgi?id=214806

Patch by Michael Catanzaro <Michael Catanzaro> on 2020-07-26
Reviewed by Darin Adler.

WebKitGTK currently fails to build with -DENABLE_EXPERIMENTAL_FEATURES=ON because a bunch of
libwebrtc headers use integer typedefs without declaring them:

  • Source/webrtc/call/rtx_receive_stream.h:
  • Source/webrtc/common_video/h264/pps_parser.h:
  • Source/webrtc/common_video/h264/sps_parser.h:
  • Source/webrtc/modules/audio_processing/aec3/clockdrift_detector.h:
  • Source/webrtc/modules/include/module_common_types_public.h:
  • Source/webrtc/modules/video_coding/decoding_state.h:
12:08 PM Changeset in webkit [264903] by Diego Pino Garcia
  • 2 edits in trunk/Tools

[WPE] Unreviewed test gardening. Update API test expectations.

  • TestWebKitAPI/glib/TestExpectations.json:
11:24 AM Changeset in webkit [264902] by Diego Pino Garcia
  • 12 edits
    1 copy
    1 move
    2 adds
    1 delete in trunk/LayoutTests

[WPE] Unreviewed test gardening. Update test expectations and baselines after r264899.

  • platform/glib/TestExpectations:
  • platform/glib/imported/w3c/web-platform-tests/css/css-sizing/percentage-height-in-flexbox-expected.txt: Renamed from LayoutTests/platform/gtk/imported/w3c/web-platform-tests/css/css-sizing/percentage-height-in-flexbox-expected.txt.
  • platform/glib/mathml/opentype/opentype-stretchy-expected.txt: Renamed from LayoutTests/platform/gtk/mathml/opentype/opentype-stretchy-expected.txt.
  • platform/gtk/TestExpectations:
  • platform/wpe/TestExpectations:
  • platform/wpe/fast/dynamic/insert-before-table-part-in-continuation-expected.txt:
  • platform/wpe/fast/table/cell-absolute-child-expected.txt:
  • platform/wpe/fast/table/empty-cells-expected.txt:
  • platform/wpe/fast/table/prepend-in-anonymous-table-expected.txt:
  • platform/wpe/tables/mozilla/bugs/bug10633-expected.txt:
  • platform/wpe/tables/mozilla/bugs/bug1188-expected.txt:
  • platform/wpe/tables/mozilla/bugs/bug1302-expected.txt:
  • platform/wpe/tables/mozilla/bugs/bug16012-expected.txt:
10:38 AM Changeset in webkit [264901] by youenn@apple.com
  • 6 edits in trunk

Update capture MediaStreamTrack frameRate and aspectRatio capabilities
https://bugs.webkit.org/show_bug.cgi?id=214741

Reviewed by Eric Carlson.

Source/WebCore:

We support frame decimation to decrease the frame rate.
This allows to get a frame rate down to 1.
We support resizing up to max width/height resolution.
This allows very wide aspect ratios.
Covered by updated tests.

  • platform/mediastream/RealtimeVideoCaptureSource.cpp:

(WebCore::RealtimeVideoCaptureSource::updateCapabilities):

LayoutTests:

  • fast/mediastream/MediaStreamTrack-getCapabilities-expected.txt:
  • fast/mediastream/apply-constraints-video-expected.txt:
  • fast/mediastream/apply-constraints-video.html:
10:20 AM Changeset in webkit [264900] by Diego Pino Garcia
  • 2 edits in trunk/Tools

[GTK] Unreviewed test gardening. Update API tests expectations.

  • TestWebKitAPI/glib/TestExpectations.json:
8:35 AM Changeset in webkit [264899] by Wenson Hsieh
  • 4 edits in trunk

Unreviewed, partially revert r264896.
https://bugs.webkit.org/show_bug.cgi?id=214688

This logging is no longer needed.

Source/WebKit:

  • Platform/spi/ios/UIKitSPI.h:

Tools:

  • WebKitTestRunner/ios/mainIOS.mm:

(-[WebKitTestRunnerApp GSKeyboardForHWLayout:forceRebuild:createIfNeeded:]): Deleted.

7:08 AM Changeset in webkit [264898] by Diego Pino Garcia
  • 3 edits in trunk/LayoutTests

[GTK] Unreviewed test gardening. Garden flaky failures after r264897.

  • platform/glib/TestExpectations:
  • platform/gtk/TestExpectations:
5:03 AM Changeset in webkit [264897] by Diego Pino Garcia
  • 1 edit
    2 adds in trunk/LayoutTests

[GLIB] Unreviewed test gardening. Added baseline for WebGL test after r264845.

  • platform/glib/webgl/1.0.3/conformance/renderbuffers/framebuffer-object-attachment-expected.txt: Added.
1:17 AM Changeset in webkit [264896] by Wenson Hsieh
  • 13 edits in trunk

Unreviewed, add even more logging to try and diagnose a flaky test
https://bugs.webkit.org/show_bug.cgi?id=214688
<rdar://problem/65993683>

Source/WebCore/PAL:

Add more GraphicsServices SPI declarations.

  • pal/spi/ios/GraphicsServicesSPI.h:

Source/WebKit:

Add another IPI declaration on UIApplication.

  • Platform/spi/ios/UIKitSPI.h:

Tools:

Evidence so far suggests that this test fails when the process of dispatching a keydown event for a modifier
(in this case, the shift key) causes the UIApplication's hardware keyboard (GSKeyboardRef) to be regenerated.
This may happen in one of two ways: either a rebuild is forced by logic in -[UIApplication handleKeyHIDEvent:],
or forceRebuild is NO, but the keyboard is rebuilt anyways due to a mismatched layout and/or keyboard type.

  • WebKitTestRunner/ios/mainIOS.mm:

(-[WebKitTestRunnerApp GSKeyboardForHWLayout:forceRebuild:createIfNeeded:]):
(-[WebKitTestRunnerApp handleKeyHIDEvent:]):

WebKitLibraries:

Add symbol stubs for non-internal builds.

  • WebKitPrivateFrameworkStubs/appletvos/13/GraphicsServices.framework/GraphicsServices.tbd:
  • WebKitPrivateFrameworkStubs/appletvos/14/GraphicsServices.framework/GraphicsServices.tbd:
  • WebKitPrivateFrameworkStubs/iOS/13/GraphicsServices.framework/GraphicsServices.tbd:
  • WebKitPrivateFrameworkStubs/iOS/14/GraphicsServices.framework/GraphicsServices.tbd:
  • WebKitPrivateFrameworkStubs/watchos/6/GraphicsServices.framework/GraphicsServices.tbd:
  • WebKitPrivateFrameworkStubs/watchos/7/GraphicsServices.framework/GraphicsServices.tbd:

Jul 25, 2020:

10:11 PM Changeset in webkit [264895] by mark.lam@apple.com
  • 8 edits in trunk/Source

pluginElementCustomGetOwnPropertySlot() should support VMInquiry requests.
https://bugs.webkit.org/show_bug.cgi?id=214555
<rdar://problem/65855400>

Reviewed by Yusuke Suzuki.

Source/JavaScriptCore:

  1. Add handling for VMInquiry failure in JSObject::getPropertySlot() and JSObject::getNonIndexPropertySlot(). Basically, if the query isTaintedByOpaqueObject, then we should treat the false result as a failed VMInquiry.
  1. Fix JSModuleNamespaceObject::getOwnPropertySlotCommon() and ProxyObject::getOwnPropertySlotCommon() to initialize the PropertySlot to a jsUndefined() value if we have a failed VMInquiry. The client shouldn't be reading the value if the VMInquiry failed, but as a defensive action, we'll initialize the slot to effectively return an undefined value.
  • runtime/JSModuleNamespaceObject.cpp:

(JSC::JSModuleNamespaceObject::getOwnPropertySlotCommon):

  • runtime/JSObjectInlines.h:

(JSC::JSObject::getPropertySlot):
(JSC::JSObject::getNonIndexPropertySlot):

  • runtime/ProxyObject.cpp:

(JSC::ProxyObject::getOwnPropertySlotCommon):

Source/WebCore:

  1. Add handling for VMInquiry failure in CodeGeneratorJS.
  1. Fix pluginElementCustomGetOwnPropertySlot() to setIsTaintedByOpaqueObject().
  1. Fix pluginElementCustomGetOwnPropertySlot() handle a VMInquiry failure case and if so, to initialize the PropertySlot to a jsUndefined() value. The client shouldn't be reading the value if the VMInquiry failed, but as a defensive action, we'll initialize the slot to effectively return an undefined value.
  • bindings/js/JSPluginElementFunctions.cpp:

(WebCore::pluginElementCustomGetOwnPropertySlot):

  • bindings/scripts/CodeGeneratorJS.pm:

(GenerateGetOwnPropertySlot):
(GenerateGetOwnPropertySlotByIndex):

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

(WebCore::JSTestPluginInterface::getOwnPropertySlot):
(WebCore::JSTestPluginInterface::getOwnPropertySlotByIndex):

10:03 PM Changeset in webkit [264894] by ysuzuki@apple.com
  • 23 edits
    2 adds in trunk/JSTests

Update test262
https://bugs.webkit.org/show_bug.cgi?id=214791

Reviewed by Ross Kirsling.

  • test262/config.yaml:
  • test262/expectations.yaml:
  • test262/harness/async-gc.js:
  • test262/latest-changes-summary.txt:
  • test262/test/annexB/language/expressions/typeof/emulates-undefined.js: Added.
  • test262/test/built-ins/FinalizationRegistry/gc-has-one-chance-to-call-cleanupCallback.js:
  • test262/test/built-ins/FinalizationRegistry/prototype/cleanupSome/callback-not-callable-throws.js:
  • test262/test/built-ins/FinalizationRegistry/prototype/cleanupSome/cleanup-prevented-with-reference.js:
  • test262/test/built-ins/FinalizationRegistry/prototype/cleanupSome/cleanup-prevented-with-unregister.js:
  • test262/test/built-ins/FinalizationRegistry/prototype/cleanupSome/custom-this.js:
  • test262/test/built-ins/FinalizationRegistry/prototype/cleanupSome/holdings-multiple-values.js:
  • test262/test/built-ins/FinalizationRegistry/prototype/cleanupSome/length.js:
  • test262/test/built-ins/FinalizationRegistry/prototype/cleanupSome/name.js:
  • test262/test/built-ins/FinalizationRegistry/prototype/cleanupSome/prop-desc.js:
  • test262/test/built-ins/FinalizationRegistry/prototype/cleanupSome/reentrancy.js:
  • test262/test/built-ins/FinalizationRegistry/prototype/cleanupSome/return-undefined-with-gc.js:
  • test262/test/built-ins/FinalizationRegistry/prototype/cleanupSome/return-undefined.js:
  • test262/test/built-ins/FinalizationRegistry/prototype/cleanupSome/this-does-not-have-internal-cells-throws.js:
  • test262/test/built-ins/FinalizationRegistry/prototype/cleanupSome/this-not-object-throws.js:
  • test262/test/built-ins/FinalizationRegistry/prototype/unregister/unregister-cleaned-up-cell.js:
  • test262/test/built-ins/WeakRef/prototype/deref/gc-cleanup-not-prevented-with-wr-deref.js:
  • test262/test/intl402/DisplayNames/length.js:
  • test262/test262-Revision.txt:
9:00 PM Changeset in webkit [264893] by Wenson Hsieh
  • 4 edits
    1 add in trunk

[iOS] Crash under ValidationBubble::setAnchorRect when showing form validation UI in unparented view
https://bugs.webkit.org/show_bug.cgi?id=214789
<rdar://problem/66104012>

Reviewed by Tim Horton.

Source/WebCore:

On iOS, in the case where WKWebView is unparented (or is otherwise missing a root view controller, or the
private WKUIDelegate method -_presentingViewControllerForWebView: returns nil), we end up crashing under
ValidationBubble::setAnchorRect while attempting to add presentingViewController.view (which is nil) to an
array of passthrough views.

Since fallbackViewController is not guaranteed to successfully find a view controller anyways, make this
scenario fail gracefully with a null check, instead of crashing the app.

Test: FormValidation.PresentingFormValidationUIWithoutViewControllerDoesNotCrash

  • platform/ios/ValidationBubbleIOS.mm:

(WebCore::ValidationBubble::setAnchorRect):

Tools:

Add an API test that reproduces the crash.

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/WebKitCocoa/FormValidation.mm: Added.
5:39 PM Changeset in webkit [264892] by Wenson Hsieh
  • 13 edits in trunk

REGRESSION (r264690): [ iOS wk2 ] editing/selection/shift-click-includes-existing-selection.html is a flaky failure
https://bugs.webkit.org/show_bug.cgi?id=214688
<rdar://problem/65993683>

Reviewed by Tim Horton.

Source/WebCore/PAL:

  • pal/spi/ios/GraphicsServicesSPI.h:

Source/WebKit:

Add an SPI declaration on UIApplication.

  • Platform/spi/ios/UIKitSPI.h:

Tools:

Continue to add logging in an attempt to debug this flaky test.

  • WebKitTestRunner/ios/mainIOS.mm:

(-[WebKitTestRunnerApp handleKeyHIDEvent:]):
(-[WebKitTestRunnerApp _handleHIDEvent:]): Drive-by fix: add a missing call to the superclass method.

WebKitLibraries:

Declare the symbol for GSKeyboardGetLiveModifierState(), for non-internal builds.

  • WebKitPrivateFrameworkStubs/appletvos/13/GraphicsServices.framework/GraphicsServices.tbd:
  • WebKitPrivateFrameworkStubs/appletvos/14/GraphicsServices.framework/GraphicsServices.tbd:
  • WebKitPrivateFrameworkStubs/iOS/13/GraphicsServices.framework/GraphicsServices.tbd:
  • WebKitPrivateFrameworkStubs/iOS/14/GraphicsServices.framework/GraphicsServices.tbd:
  • WebKitPrivateFrameworkStubs/watchos/6/GraphicsServices.framework/GraphicsServices.tbd:
  • WebKitPrivateFrameworkStubs/watchos/7/GraphicsServices.framework/GraphicsServices.tbd:
3:33 PM Changeset in webkit [264891] by Simon Fraser
  • 12 edits in trunk

Some scroll snap cleanup
https://bugs.webkit.org/show_bug.cgi?id=214788

Reviewed by Wenson Hsieh.
Source/WebCore:

Mostly cleanup in updateSnapOffsetsForScrollableArea() related to getting the scroll limits,
which changes behavior.

updateSnapOffsetsForScrollableArea() was manually computing the scroll limits with
scrollingElementBox.scrollWidth() - scrollingElementBox.contentWidth(), but needs to use
the same computation that scrolling uses, namely scrollableArea.maximumScrollOffset().
This changes results, since the old code could compute offsets outside of the scroll limits.
It can also get the scrollPosition from the scrollableArea, instead of going via Element.

When computing scroll offsets, explicitly round now (which changes some test results).

  • page/scrolling/AxisScrollSnapOffsets.cpp:

(WebCore::updateSnapOffsetsForScrollableArea):

  • platform/ScrollAnimator.cpp:

(WebCore::ScrollAnimator::updateActiveScrollSnapIndexForOffset): Explicitly round.

  • platform/ScrollTypes.h:
  • platform/ScrollableArea.h:
  • platform/cocoa/ScrollController.h:
  • platform/cocoa/ScrollController.mm:

(WebCore::ScrollController::setActiveScrollSnapIndicesForOffset): Use ScrollOffset instead
of x,y.

LayoutTests:

New results.

  • css3/scroll-snap/scroll-snap-children-with-padding-expected.txt:
  • css3/scroll-snap/scroll-snap-children-with-transforms-expected.txt:
  • css3/scroll-snap/scroll-snap-offsets-expected.txt:
  • css3/scroll-snap/scroll-snap-positions-expected.txt:
1:02 PM Changeset in webkit [264890] by Wenson Hsieh
  • 2 edits in trunk/Tools

REGRESSION (r264690): [ iOS wk2 ] editing/selection/shift-click-includes-existing-selection.html is a flaky failure
https://bugs.webkit.org/show_bug.cgi?id=214688
<rdar://problem/65993683>

Reviewed by Tim Horton.

Attempt a second speculative fix that waits for the keydown HID event to be dequeued and handled by
UIApplication when simulating a shift-tap, to guarantee that the synthetic click gesture recognizer has
up-to-date modifier flags upon dispatching the synthetic HID events on tap.

It's unclear how or why the current implementation might result in the gesture recognizer not being updated with
the right modifier flags, since events in the HID event queue should be handled in order.

  • WebKitTestRunner/ios/UIScriptControllerIOS.mm:

(WTR::UIScriptControllerIOS::singleTapAtPointWithModifiers):

12:48 PM Changeset in webkit [264889] by commit-queue@webkit.org
  • 7 edits in trunk/Source/WebCore

[WebGL2] Context state updates
https://bugs.webkit.org/show_bug.cgi?id=209513

Patch by Kenneth Russell <kbr@chromium.org> on 2020-07-25
Reviewed by Dean Jackson.

Refactor a few methods related to context state to reduce
duplicated code between WebGL 1.0 and 2.0. No behavioral changes.

Covered by existing WebGL conformance tests.

  • html/canvas/WebGL2RenderingContext.cpp:

(WebCore::WebGL2RenderingContext::validateCapability):
(WebCore::WebGL2RenderingContext::clear): Deleted.
(WebCore::WebGL2RenderingContext::hint): Deleted.

  • html/canvas/WebGL2RenderingContext.h:
  • html/canvas/WebGLRenderingContext.cpp:

(WebCore::WebGLRenderingContext::hint): Deleted.
(WebCore::WebGLRenderingContext::clear): Deleted.
(WebCore::WebGLRenderingContext::validateCapability): Deleted.

  • html/canvas/WebGLRenderingContext.h:
  • html/canvas/WebGLRenderingContextBase.cpp:

(WebCore::WebGLRenderingContextBase::clear):
(WebCore::WebGLRenderingContextBase::hint):
(WebCore::WebGLRenderingContextBase::validateCapability):

  • html/canvas/WebGLRenderingContextBase.h:
Note: See TracTimeline for information about the timeline view.