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

Timeline



Jul 9, 2020:

11:00 PM Changeset in webkit [264209] by Russell Epstein
  • 1 copy in branches/safari-610.1.22-branch

New branch.

10:25 PM Changeset in webkit [264208] by Lauro Moura
  • 3 edits
    2 adds
    1 delete in trunk/LayoutTests

[GTK][WPE] Garden more failures/rebaselines after WPT updates.

Unreviewed test gardening.

  • platform/glib/TestExpectations:
  • platform/glib/imported/w3c/web-platform-tests/xhr/send-entity-body-empty-expected.txt: Added.
  • platform/glib/imported/w3c/web-platform-tests/xhr/send-entity-body-none-expected.txt: Added.
  • platform/gtk-wayland/TestExpectations:
  • platform/gtk/imported/w3c/web-platform-tests/xhr/send-network-error-sync-events.sub-expected.txt: Removed. This test is actually failing for gtk/wpe. Removed to fallback to the w3c baseline and marked it as a failure.
6:27 PM Changeset in webkit [264207] by beidson@apple.com
  • 16 edits
    1 copy
    1 move
    2 adds in trunk/Source

Multiplex the HID and GameController gamepad providers on Mac.
<rdar://problem/63192532> and https://bugs.webkit.org/show_bug.cgi?id=214126

Reviewed by Tim Horton.
Source/WebCore:

Mac has already supported both the HID provider and GameController provider.

By adding an intermediate provider to multiplex both and tweaking a few other things,
it can support both at the same time.

  • SourcesCocoa.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • platform/gamepad/PlatformGamepad.h:

(WebCore::PlatformGamepad::lastUpdateTime const):
(WebCore::PlatformGamepad::source const):

  • platform/gamepad/cocoa/GameControllerGamepad.h:
  • platform/gamepad/cocoa/GameControllerGamepadProvider.h:
  • platform/gamepad/cocoa/GameControllerGamepadProvider.mm:

(WebCore::GameControllerGamepadProvider::controllerDidConnect):
(WebCore::GameControllerGamepadProvider::gamepadHadInput):
(WebCore::GameControllerGamepadProvider::makeInvisibleGamepadsVisible):
(WebCore::GameControllerGamepadProvider::inputNotificationTimerFired):
(WebCore::GameControllerGamepadProvider::makeInvisibileGamepadsVisible): Deleted.

  • platform/gamepad/cocoa/GameControllerSPI.h:
  • platform/gamepad/cocoa/GameControllerSoftLink.h:
  • platform/gamepad/cocoa/GameControllerSoftLink.mm:
  • platform/gamepad/mac/HIDGamepad.h:
  • platform/gamepad/mac/HIDGamepadProvider.h:

(WebCore::HIDGamepadProvider::ignoreGameControllerFrameworkDevices):

  • platform/gamepad/mac/HIDGamepadProvider.mm: Renamed from Source/WebCore/platform/gamepad/mac/HIDGamepadProvider.cpp.

(WebCore::deviceMatchingDictionary):
(WebCore::deviceAddedCallback):
(WebCore::deviceRemovedCallback):
(WebCore::deviceValuesChangedCallback):
(WebCore::HIDGamepadProvider::singleton):
(WebCore::HIDGamepadProvider::HIDGamepadProvider):
(WebCore::HIDGamepadProvider::stopMonitoringInput):
(WebCore::HIDGamepadProvider::startMonitoringInput):
(WebCore::HIDGamepadProvider::indexForNewlyConnectedDevice):
(WebCore::HIDGamepadProvider::initialGamepadsConnectedTimerFired):
(WebCore::HIDGamepadProvider::openAndScheduleManager):
(WebCore::HIDGamepadProvider::closeAndUnscheduleManager):
(WebCore::HIDGamepadProvider::startMonitoringGamepads):
(WebCore::HIDGamepadProvider::stopMonitoringGamepads):
(WebCore::gameControllerFrameworkWillHandleHIDDevice):
(WebCore::HIDGamepadProvider::deviceAdded):
(WebCore::HIDGamepadProvider::deviceRemoved):
(WebCore::HIDGamepadProvider::valuesChanged):
(WebCore::HIDGamepadProvider::inputNotificationTimerFired):
(WebCore::HIDGamepadProvider::removeGamepadForDevice):

  • platform/gamepad/mac/MultiGamepadProvider.h: Added.

(WebCore::MultiGamepadProvider::isMockGamepadProvider const):
(WebCore::MultiGamepadProvider::PlatformGamepadWrapper::PlatformGamepadWrapper):

  • platform/gamepad/mac/MultiGamepadProvider.mm: Added.

(WebCore::MultiGamepadProvider::singleton):
(WebCore::MultiGamepadProvider::startMonitoringGamepads):
(WebCore::MultiGamepadProvider::stopMonitoringGamepads):
(WebCore::MultiGamepadProvider::indexForNewlyConnectedDevice):
(WebCore::MultiGamepadProvider::platformGamepadConnected):
(WebCore::MultiGamepadProvider::platformGamepadDisconnected):
(WebCore::MultiGamepadProvider::platformGamepadInputActivity):

Source/WebCore/PAL:

The current "IOKitSPI.h" is really weird.
It is mostly needed for iOS, but also used on Mac a little...
And since some of what it declares on Mac is actually public, anyone else
that uses public headers on Mac runs into redefinitions.

Since the use of it on iOS and Mac are so different, let's just make a Mac one.

  • PAL.xcodeproj/project.pbxproj:
  • pal/spi/mac/IOKitSPIMac.h: Copied from Source/WebCore/platform/gamepad/cocoa/GameControllerSoftLink.h.

Source/WebKit:

  • UIProcess/Gamepad/cocoa/UIGamepadProviderCocoa.mm:

(WebKit::UIGamepadProvider::platformSetDefaultGamepadProvider):

6:27 PM Changeset in webkit [264206] by Andres Gonzalez
  • 7 edits in trunk

Make accessibility/Mac/selected-visible-position-range.html time-deterministic.
https://bugs.webkit.org/show_bug.cgi?id=214154

Reviewed by Chris Fleizach.

Tools:

  • WebKitTestRunner/InjectedBundle/mac/AccessibilityUIElementMac.mm:

(WTR::AccessibilityUIElement::setSelectedVisibleTextRange):
Check passed parameter for null.

(WTR::AccessibilityUIElement::selectedTextMarkerRange):
Use attributeValue to run on secondary AX thread.

LayoutTests:

[WebAccessibilityObjectWrapper accessibilitySetValue] sets the selection
range and other properties asynchronously by dispatching the call to
another cycle of the run loop using callOnMainThread. thus for the JS to
retrieve the new value, it is necessary to wait until the value is
updated. this is even more so in isolated tree mode where all wrapper
calls come on the secondary AX thread. JS setTimeout doesn't help with
synchronizing these calls, so instead we are using Promises in the
function waitFor in accessibility-helper.js (thanks to Geoff Garen for
showing the way).

  • accessibility/mac/selected-visible-position-range-expected.txt:
  • accessibility/mac/selected-visible-position-range.html:

MOved waitFor(condition) to the accessibility-helper.js file to be used
in multiple tests.

  • accessibility/textarea-selected-text-range.html:
  • resources/accessibility-helper.js:

(waitFor):

5:07 PM Changeset in webkit [264205] by timothy_horton@apple.com
  • 5 edits in trunk/Source

"ESPN Fantasy Sports" does not respond to mouse events, only touch events
https://bugs.webkit.org/show_bug.cgi?id=214165
<rdar://problem/64671543>

Reviewed by Wenson Hsieh.

Source/WebCore:

  • platform/RuntimeApplicationChecks.h:
  • platform/cocoa/RuntimeApplicationChecksCocoa.mm:

(WebCore::IOSApplication::isESPNFantasySports):

Source/WebKit:

  • UIProcess/ios/WKContentViewInteraction.mm:

(-[WKContentView shouldUseMouseGestureRecognizer]):
Add a bundle check.

5:05 PM Changeset in webkit [264204] by Nikita Vasilyev
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: title bar of undocked inspector should be white in BigSur
https://bugs.webkit.org/show_bug.cgi?id=214161
<rdar://problem/65289224>

Reviewed by Brian Burg.

Make the title bar white when the window is focused.

When the window is unfocused, the title bar background is
the same on Big Sur and Catalina. No changes were needed.

  • UserInterface/Views/Main.css:

(#undocked-title-area):
(body.big-sur #undocked-title-area):
(body:not(.big-sur) #undocked-title-area):
(@media (prefers-color-scheme: dark) #undocked-title-area):
(@media (prefers-color-scheme: dark) body.big-sur #undocked-title-area):
(@media (prefers-color-scheme: dark) body:not(.big-sur) #undocked-title-area):

4:37 PM Changeset in webkit [264203] by Simon Fraser
  • 12 edits
    2 adds in trunk

[macOS] Stuttery scrolling on tesla.com
https://bugs.webkit.org/show_bug.cgi?id=214159
<rdar://problem/64555500>

Reviewed by Wenson Hsieh.
Source/WebCore:

tesla.com uses scroll snapping, and also triggers layout during scrolling that could
cause scroll snap to yank the scroll position. This manifested as a change that affected
getBoundingClientRect which is used an an input to some transform math, causing the images
to move around.

Fix by ensuring that layout-triggered scroll snap does not happen if a user scroll is in progress,
when that scroll occurs via the scrolling thread. ScrollingTreeScrollingNodeDelegateMac has a
ScrollController that tracks when a gesture is in progress; push this state to
the ScrollingTree so it can be consulted from the main thread. The two subclasses
of ScrollableArea, RenderLayer and FrameView, then consult the ScrollingCoordinator
to ask whether a user scroll is in progress for their scrolling tree node.

Test: fast/scrolling/mac/adjust-scroll-snap-during-gesture.html

  • page/FrameView.cpp:

(WebCore::FrameView::isUserScrollInProgress const):

  • page/scrolling/AsyncScrollingCoordinator.cpp:

(WebCore::AsyncScrollingCoordinator::isUserScrollInProgress const):

  • page/scrolling/AsyncScrollingCoordinator.h:
  • page/scrolling/ScrollingCoordinator.h:

(WebCore::ScrollingCoordinator::isUserScrollInProgress const):

  • page/scrolling/ScrollingTree.cpp:

(WebCore::ScrollingTree::handleWheelEvent):
(WebCore::ScrollingTree::isUserScrollInProgressForNode):
(WebCore::ScrollingTree::setUserScrollInProgressForNode):
(WebCore::ScrollingTree::clearNodesWithUserScrollInProgress):

  • page/scrolling/ScrollingTree.h:
  • page/scrolling/ScrollingTreeScrollingNode.cpp:

(WebCore::ScrollingTreeScrollingNode::isUserScrollProgress const):
(WebCore::ScrollingTreeScrollingNode::setUserScrollInProgress):
(WebCore::ScrollingTreeScrollingNode::setScrollSnapInProgress):

  • page/scrolling/ScrollingTreeScrollingNode.h:
  • page/scrolling/mac/ScrollingTreeScrollingNodeDelegateMac.mm:

(WebCore::ScrollingTreeScrollingNodeDelegateMac::handleWheelEvent):

  • rendering/RenderLayer.cpp:

(WebCore::RenderLayer::isUserScrollInProgress const):

LayoutTests:

  • fast/scrolling/mac/adjust-scroll-snap-during-gesture-expected.txt: Added.
  • fast/scrolling/mac/adjust-scroll-snap-during-gesture.html: Added.
4:04 PM Changeset in webkit [264202] by Chris Dumez
  • 124 edits
    4 copies
    1 move
    79 adds
    3 deletes in trunk/LayoutTests

Resync web-platform-tests/webrtc from upstream
https://bugs.webkit.org/show_bug.cgi?id=214151

Reviewed by Alex Christensen.

LayoutTests/imported/w3c:

Resync web-platform-tests/webrtc from upstream cef93b58e7cf31f1d47.

  • web-platform-tests/webrtc/*: Updated.

LayoutTests:

  • tests-options.json:
3:41 PM Changeset in webkit [264201] by Chris Dumez
  • 5 edits in trunk/Source/WebCore

[Bindings] Add default value support for union types in dictionary members
https://bugs.webkit.org/show_bug.cgi?id=214160

Reviewed by Sam Weinig.

Add default value support for union types in dictionary members. This is needed for the WebAudio specification:

"""
(AudioContextLatencyCategory or double) latencyHint = "interactive";
"""

  • bindings/scripts/CodeGeneratorJS.pm:

(GenerateDefaultValue):

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

(WebCore::jsTestObjPrototypeFunctionOverloadWithOptionalUnion1Body):

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

(WebCore::convertDictionary<DictionaryImplName>):
(WebCore::convertDictionaryToJS):

  • bindings/scripts/test/TestStandaloneDictionary.idl:
3:28 PM Changeset in webkit [264200] by Brent Fulgham
  • 2 edits in trunk/Source/WebKit

[macOS] Adopt the WebKit-specific PAC key and entitlements
https://bugs.webkit.org/show_bug.cgi?id=214162
<rdar://problem/65099687>

Reviewed by Geoffrey Garen.

Add the relevant entitlements for PAC use and exceptions on macOS. This will be
ignored on Intel, but will be a great thing on Apple Silicon!

  • Scripts/process-entitlements.sh:
2:54 PM Changeset in webkit [264199] by pvollan@apple.com
  • 11 edits
    4 moves in trunk

Move XPCEndpoint and XPCEndpointClient classes from WebCore to WebKit
https://bugs.webkit.org/show_bug.cgi?id=214099

Reviewed by Alex Christensen.

Source/WebCore:

These classes should not be in WebCore, but in WebKit, since they are only expected to be used there.

No new tests, since this patch is only moving source files.

  • WebCore.xcodeproj/project.pbxproj:
  • platform/cocoa/XPCEndpoint.h: Removed.
  • platform/cocoa/XPCEndpoint.mm: Removed.
  • platform/cocoa/XPCEndpointClient.h: Removed.
  • platform/cocoa/XPCEndpointClient.mm: Removed.

Source/WebKit:

  • NetworkProcess/cocoa/LaunchServicesDatabaseObserver.h:
  • Shared/Cocoa/XPCEndpoint.h: Copied from Source/WebCore/platform/cocoa/XPCEndpoint.h.
  • Shared/Cocoa/XPCEndpoint.mm: Copied from Source/WebCore/platform/cocoa/XPCEndpoint.mm.

(WebCore::XPCEndpoint::XPCEndpoint): Deleted.
(WebCore::XPCEndpoint::sendEndpointToConnection): Deleted.
(WebCore::XPCEndpoint::endpoint const): Deleted.

  • Shared/Cocoa/XPCEndpointClient.h: Copied from Source/WebCore/platform/cocoa/XPCEndpointClient.h.

(WebCore::XPCEndpointClient::~XPCEndpointClient): Deleted.

  • Shared/Cocoa/XPCEndpointClient.mm: Copied from Source/WebCore/platform/cocoa/XPCEndpointClient.mm.

(WebCore::XPCEndpointClient::setEndpoint): Deleted.
(WebCore::XPCEndpointClient::connection): Deleted.

  • UIProcess/Network/NetworkProcessProxyCocoa.mm:
  • WebKit.xcodeproj/project.pbxproj:
  • WebProcess/cocoa/LaunchServicesDatabaseManager.h:
  • WebProcess/cocoa/LaunchServicesDatabaseManager.mm:
  • WebProcess/cocoa/WebProcessCocoa.mm:

Tools:

  • TestWebKitAPI/Tests/WebKit/XPCEndpoint.mm:
2:36 PM Changeset in webkit [264198] by Antti Koivisto
  • 10 edits
    2 adds in trunk/LayoutTests/imported/w3c

Update css/selectors WPT tests for :is and :where
https://bugs.webkit.org/show_bug.cgi?id=214137

Reviewed by Chris Dumez.

Some more PASSes.

  • web-platform-tests/css/selectors/attribute-selectors/attribute-case/semantics-expected.txt:
  • web-platform-tests/css/selectors/attribute-selectors/attribute-case/semantics.html:
  • web-platform-tests/css/selectors/is-nested-expected.txt:
  • web-platform-tests/css/selectors/is-nested.html:
  • web-platform-tests/css/selectors/is-specificity-expected.txt:
  • web-platform-tests/css/selectors/is-specificity.html:
  • web-platform-tests/css/selectors/is-where-parsing-expected.txt: Added.
  • web-platform-tests/css/selectors/is-where-parsing.html: Added.
  • web-platform-tests/css/selectors/selectors-case-sensitive-001-expected.txt:
  • web-platform-tests/css/selectors/selectors-case-sensitive-001.html:
  • web-platform-tests/css/selectors/w3c-import.log:
2:25 PM Changeset in webkit [264197] by Chris Dumez
  • 21 edits
    30 copies
    19 moves
    38 adds
    5 deletes in trunk/LayoutTests

Resync web-platform-tests/url from upstream
https://bugs.webkit.org/show_bug.cgi?id=214145

Reviewed by Alex Christensen.

LayoutTests/imported/w3c:

Resync web-platform-tests/url from upstream cef93b58e7cf31f1d47.

  • web-platform-tests/url/*: Updated.

LayoutTests:

  • tests-options.json:
2:23 PM Changeset in webkit [264196] by aakash_jain@apple.com
  • 7 edits in trunk/Tools

Add EWS queues for tvOS and watchOS builders
https://bugs.webkit.org/show_bug.cgi?id=214147

Reviewed by Stephanie Lewis.

  • BuildSlaveSupport/ews-app/ews/views/statusbubble.py: Added status-bubbles for tvos and watchos queues.
  • BuildSlaveSupport/ews-build/config.json: Added watchos and tvos builders.
  • BuildSlaveSupport/ews-build/factories.py:

(watchOSBuildFactory):
(tvOSBuildFactory):

  • BuildSlaveSupport/ews-build/factories_unittest.py: Added unit-tests.
  • BuildSlaveSupport/ews-build/loadConfig.py:
  • BuildSlaveSupport/ews-build/steps.py:

(appendCustomBuildFlags): Added support for tvos and watchos.
(CompileWebKit.start): Ditto.
(PrintConfiguration.run): Ditto.

2:20 PM Changeset in webkit [264195] by BJ Burg
  • 2 edits in trunk/Source/WebKitLegacy/mac

REGRESSION(r217248): ASSERT_NOT_REACHED() in toWebFrameLoadType()
https://bugs.webkit.org/show_bug.cgi?id=214149

Reviewed by Joseph Pecoraro.

ASSERT_NOT_REACHED() is hit when the type is FrameLoadType::ReloadExpiredOnly. This happens
when remote inspection triggers a reload via InspectorPageAgent::reload() and the
'revalidateAllResources' optional argument is false or not specified.

  • WebView/WebFrame.mm:

(toWebFrameLoadType):
Remove the assert and add a note explaining why this load type that does not
naturally occur in WK1 may nonetheless be triggered while remote inspecting.

1:59 PM Changeset in webkit [264194] by Alan Bujtas
  • 2 edits in trunk/Source/WebKit

[iOS] Conversation view messages in Mail are too small and scrollable
https://bugs.webkit.org/show_bug.cgi?id=214157
<rdar://problem/64788069>

Reviewed by Wenson Hsieh.

Revert the drive-by contentSize set optimization introduced in r262721.
iOS Mail relies on this delayed/late setContentSize call on WKScrollView (see rdar://problem/65277759).

  • UIProcess/ios/WKScrollView.mm:

(-[WKScrollView _setContentSizePreservingContentOffsetDuringRubberband:]):

1:44 PM Changeset in webkit [264193] by Adrian Perez de Castro
  • 1 copy in releases/WPE WebKit/webkit-2.28.3

WPE WebKit 2.28.3

1:44 PM Changeset in webkit [264192] by Adrian Perez de Castro
  • 4 edits in releases/WebKitGTK/webkit-2.28

Unreviewed. Update OptionsWPE.cmake and NEWS for the 2.28.3 release

.:

  • Source/cmake/OptionsWPE.cmake: Bump version numbers.

Source/WebKit:

  • wpe/NEWS: Add release notes for 2.28.3.
1:43 PM Changeset in webkit [264191] by Adrian Perez de Castro
  • 6 edits in releases/WebKitGTK/webkit-2.28/Source/WebCore

Unreviewed non-unified build fixes.

No new tests needed.

  • SourcesWPE.txt: Add ScrollAnimationKinetic.cpp
  • rendering/RenderBlock.cpp: Add missing inclusion of ImageBuffer.h
  • svg/SVGClipPathElement.cpp: Ditto
  • workers/service/context/ServiceWorkerFetch.cpp: Add missing inclusion of

ServiceWorkerThread.h

  • xml/parser/XMLDocumentParserLibxml2.cpp: Add missinc inclusions of Page.h and

PageConsoleClient.h

1:01 PM Changeset in webkit [264190] by Simon Fraser
  • 8 edits
    2 adds in trunk

After a scroll gesture, content changes don't trigger re-snapping with scroll snap
https://bugs.webkit.org/show_bug.cgi?id=214123

Reviewed by Wenson Hsieh.

Source/WebCore:

ScrollController::m_inScrollGesture could get stuck as true after a scroll gesture, because
ScrollAnimatorMac::handleWheelEvent() didn't reliably call m_scrollController.handleWheelEvent() for
the event event based on the hokey shouldForwardWheelEventsToParent() code.

Fix by explicitly calling m_scrollController.updateGestureInProgressState() which maintains
m_inScrollGesture.

When m_inScrollGesture was stuck as true, ScrollableArea::updateScrollSnapState() would return early
because isScrollSnapInProgress() would return true. In addition,
ScrollController::isScrollSnapInProgress() was a lie for non-scroll-snapping scrollable areas, so
explicitly check for snap points there, using an explicit usesScrollSnap() function.

Rename some WheelEventStatus values to use "momentum" rather than "inertia".

Test: fast/scrolling/mac/adjust-scroll-snap-after-gesture.html

  • page/scrolling/mac/ScrollingTreeScrollingNodeDelegateMac.mm:

(WebCore::ScrollingTreeScrollingNodeDelegateMac::handleWheelEvent):

  • platform/ScrollableArea.cpp:

(WebCore::ScrollableArea::usesScrollSnap const):
(WebCore::ScrollableArea::updateScrollSnapState):

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

(WebCore::ScrollController::handleWheelEvent):
(WebCore::ScrollController::usesScrollSnap const):
(WebCore::ScrollController::isScrollSnapInProgress const):
(WebCore::ScrollController::snapRubberBand):
(WebCore::toWheelEventStatus):
(WebCore::operator<<):
(WebCore::ScrollController::shouldOverrideMomentumScrolling const):
(WebCore::ScrollController::scheduleStatelessScrollSnap):
(WebCore::ScrollController::statelessSnapTransitionTimerFired):
(WebCore::ScrollController::processWheelEventForScrollSnap):
(WebCore::ScrollController::updateGestureInProgressState):
(WebCore::ScrollController::scrollSnapTimerFired):
(WebCore::ScrollController::activeScrollSnapIndexForAxis const):
(WebCore::ScrollController::setActiveScrollSnapIndexForAxis):
(WebCore::ScrollController::setNearestScrollSnapIndexForAxisAndOffset):
(WebCore::ScrollController::setActiveScrollSnapIndicesForOffset):
(WebCore::ScrollController::shouldOverrideInertialScrolling const): Deleted.

  • platform/mac/ScrollAnimatorMac.mm:

(WebCore::ScrollAnimatorMac::handleWheelEvent):

LayoutTests:

  • fast/scrolling/mac/adjust-scroll-snap-after-gesture-expected.txt: Added.
  • fast/scrolling/mac/adjust-scroll-snap-after-gesture.html: Added.
1:00 PM Changeset in webkit [264189] by Lauro Moura
  • 2 edits in trunk/Source/WebKit

[GTK] Remaining build fix after r264179

Like last revision, avoid "missing binary operator before(" errors
when WPE libraries are not installed.

  • UIProcess/gtk/AcceleratedBackingStoreWayland.cpp:

(WebKit::AcceleratedBackingStoreWayland::paint):

12:49 PM Changeset in webkit [264188] by Fujii Hironori
  • 3 edits in trunk/Source/WebCore

[WinCairo][MediaFoundation] Use /DELAYLOAD for mf.dll
https://bugs.webkit.org/show_bug.cgi?id=213330

Reviewed by Per Arne Vollan.

WinCairo failed to start up due to a missing dependency on some
versions of Windows in which Media Foundation is not available
such like Windows 10 N. Use delay load for Media Foundation. And,
check the availability.

  • PlatformWinCairo.cmake: Link with delayimp.lib. Added /DELAYLOAD linker options.
  • platform/graphics/win/MediaPlayerPrivateMediaFoundation.cpp:

(WebCore::MediaPlayerPrivateMediaFoundation::isAvailable): Check mf.dll is available.

12:46 PM Changeset in webkit [264187] by Wenson Hsieh
  • 11 edits in trunk

REGRESSION (r259840): Pressing Esc or ⌘+"." does not dismiss time picker on iOS
https://bugs.webkit.org/show_bug.cgi?id=214122
<rdar://problem/64940487>

Reviewed by Tim Horton.

Source/WebKit:

Prior to r259840, when presenting context menus for certain input types (i.e. "time" and "datetime-local") on
iOS, UIKit would tell the presented view controller's view (a UIDatePicker in this case) to become first
responder. As a result, WKContentView would resign first responder, which (by default) blurs the focused
element and dismisses the context menu. The result is thats time pickers would immediately dismiss upon
presentation.

To mitigate this, r259840 adopted the existing active focus retaining mechanism to temporarily decouple
WKContentView's first responder status from the currently focused form element. However, this also causes
-endEditingAndUpdateFocusAppearanceWithReason: to bail, due to self.webView._retainingActiveFocusedState
returning YES. This means that codepaths meant to immediately dismiss UI for the focused element (for example,
when pressing Escape on a hardware keyboard on iOS) will not be able to dismiss UI.

To fix this, push the flag that keeps track of whether we're relinquishing first responder to the focused
element down into WKContentView, and have WKContentView automatically stop relinquishing first responder to
the focused element in -[WKContentView accessoryDone].

Fixes an existing test: fast/forms/ios/dismiss-picker-using-keyboard.html

  • UIProcess/ios/WKContentViewInteraction.h:
  • UIProcess/ios/WKContentViewInteraction.mm:

(-[WKContentView accessoryDone]):

Stop relinquishing focus to the focused element, so that form elements that require first responder can be
dismissed when triggering -accessoryDone (e.g. when pressing the Esc key on a hardware keyboard).

(-[WKContentView startRelinquishingFirstResponderToFocusedElement]):
(-[WKContentView stopRelinquishingFirstResponderToFocusedElement]):

Renamed from -preserveFocus and -releaseFocus, respectively. Also, made these methods idempotent using a new
BOOL flag, _isRelinquishingFirstResponderToFocusedElement.

(-[WKContentView preserveFocus]): Deleted.
(-[WKContentView releaseFocus]): Deleted.

  • UIProcess/ios/forms/WKDateTimeInputControl.mm:

(-[WKDateTimePicker controlBeginEditing]):
(-[WKDateTimePicker controlEndEditing]):

Use the renamed WKContentView methods, and also remove the _preservingFocus flag.

  • UIProcess/ios/forms/WKFormPopover.mm:

(-[WKRotatingPopover presentPopoverAnimated:]):
(-[WKRotatingPopover dismissPopoverAnimated:]):

Use the renamed WKContentView methods.

LayoutTests:

  • fast/forms/ios/dismiss-picker-using-keyboard.html:
  • fast/forms/ios/force-gregorian-calendar-for-credit-card-expiry.html:
  • fast/forms/ios/time-picker-value-change-expected.txt:
  • fast/forms/ios/time-picker-value-change.html:

Adjust a few layout tests to be compatible with date and time inputs.

  • resources/ui-helper.js:

(window.UIHelper.waitForInputSessionToDismiss.return.new.Promise):
(window.UIHelper.waitForInputSessionToDismiss):

12:44 PM Changeset in webkit [264186] by Truitt Savell
  • 3 edits in trunk/LayoutTests

REGRESSION (r264117): [ Mac iOS ] imported/w3c/web-platform-tests/html/cross-origin-embedder-policy/blob.https.html
https://bugs.webkit.org/show_bug.cgi?id=214155

Unreviewed test gardening.

  • platform/ios/TestExpectations:
  • platform/mac/TestExpectations:
12:16 PM Changeset in webkit [264185] by BJ Burg
  • 2 edits in trunk/Source/JavaScriptCore

REGRESSION(r262302): ITMLKit debuggables in listings are missing a title, use UUID instead
https://bugs.webkit.org/show_bug.cgi?id=214153

Reviewed by Devin Rousso.

  • inspector/remote/cocoa/RemoteInspectorCocoa.mm:

(Inspector::RemoteInspector::listingForInspectionTarget const):
Looks like this is due to copypasta.

11:51 AM Changeset in webkit [264184] by Brent Fulgham
  • 2 edits in trunk/Source/WebKit

[iOS] Stop telemetry collection for the 'hw.cpu64bit_capable' sysctl
https://bugs.webkit.org/show_bug.cgi?id=214148
<rdar://problem/65222086>

Reviewed by Per Arne Vollan.

Telemetry shows that SQLite3 on iOS-based builds needs read access to the
'hw.cpu64bit_capable' sysctl. We can stop logging this.

  • Resources/SandboxProfiles/ios/com.apple.WebKit.Networking.sb:
11:38 AM Changeset in webkit [264183] by Chris Dumez
  • 109 edits
    4 copies
    79 adds
    13 deletes in trunk/LayoutTests

Resync web-platform-tests/workers from upstream
https://bugs.webkit.org/show_bug.cgi?id=214146

Reviewed by Geoffrey Garen.

LayoutTests/imported/w3c:

Resync web-platform-tests/workers from upstream cef93b58e7cf31f1d47.

  • web-platform-tests/workers/*: Updated.

LayoutTests:

  • tests-options.json:
11:29 AM Changeset in webkit [264182] by timothy_horton@apple.com
  • 2 edits in trunk/Tools

Local internal builds fail on Apple Silicon (building yasm)
https://bugs.webkit.org/show_bug.cgi?id=214129

Reviewed by Dan Bernstein.

  • Scripts/webkitdirs.pm:

(determineNativeArchitecture):
Build for arm64e when building with the internal SDK.
Importantly, this matches the ARCHS_STANDARD_* build settings, so this way we
won't set an ARCH that isn't in VALID_ARCHS for projects who use ARCHS_STANDARD_*.

(determineXcodeSDK):
Fall back to "macosx", so that other code can correctly identify that we're building for macOS.
This logic needs to be here, instead of in the caller (who could assume undefined means macOS),
because we want the ".internal" search to take place as well.

11:21 AM Changeset in webkit [264181] by Chris Dumez
  • 36 edits in trunk/LayoutTests/imported/w3c

Resync web-platform-tests/webmessaging from upstream
https://bugs.webkit.org/show_bug.cgi?id=214143

Reviewed by Sam Weinig.

Resync web-platform-tests/webmessaging from upstream cef93b58e7cf31f1d47.

  • resources/import-expectations.json:
  • web-platform-tests/webmessaging/*: Updated.
10:33 AM Changeset in webkit [264180] by calvaris@igalia.com
  • 2 edits in trunk/Source/WTF

Simplify BoxPtr::create
https://bugs.webkit.org/show_bug.cgi?id=214144

Reviewed by Darin Adler.

  • wtf/BoxPtr.h:

(WTF::createBoxPtr): Use the alias instead of the unrolled type.

10:17 AM Changeset in webkit [264179] by Lauro Moura
  • 2 edits in trunk/Source/WebKit

[GTK] Buildfix when WPEBackend-fdo is not available

Using the && operator for WPE_FDO_CHECK_VERSION was giving the
"missing binary operator before(" error as the macro was not defined
when the backend is not installed, like in the LTS/Debian vanilla
bots.

Unreviewed build fix.

  • UIProcess/gtk/AcceleratedBackingStoreWayland.cpp:

(WebKit::AcceleratedBackingStoreWayland::snapshot):

10:06 AM Changeset in webkit [264178] by pvollan@apple.com
  • 21 edits
    7 adds in trunk/Source

[Cocoa] Update Launch Services database in the WebContent process from the Network process
https://bugs.webkit.org/show_bug.cgi?id=213794

Reviewed by Brent Fulgham.

Source/WebCore/PAL:

Declare interface for observing and consuming the Launch Services database.

  • pal/spi/cocoa/LaunchServicesSPI.h:

Source/WebKit:

To be able to deny mach lookup access to the Launch Services database mapping service in the WebContent process, the database needs to be
sent from the Networking process to the WebContent process, represented by an xpc object. The Networking process is chosen instead of the UI
process, since WebKit is controlling the sandbox of the Networking process. There is already a direct connection between the Networking
process and the WebContent process, but this is a CoreIPC connection. Since the database is represented by an xpc object, an xpc connection
is requiered to transfer the database. This patch creates a direct xpc connection between the Networking process and the WebContent process,
by creating an xpc endpoint in the Networking process, sending this to the UI process over the bootstrap xpc connection, and then providing
each WebContent process with this endpoint by sending it over the bootstrap xpc connection between the UI process and the WebContent process.
This endpoint has to be sent via the xpc connections to the UI process, since the already existing direct connection between the Networking
process and the WebContent process is a lower level CoreIPC connection, which does not support transferring xpc objects like the xpc endpoint.
When the WebContent process receives the endpoint, it will create an xpc connection from the endpoint, which will create a direct connection
with the Networking process. A message is then sent over the connection to request the database xpc object. When the Networking process
receives this message, it checks the entitlement of the remote end to make sure it is communicating with a WebContent process, and then sends
the database if the entitlement check succeeds. When the WebContent process receives this message, it performs an entitlement check as well,
and if successful, the database object is consumed. Consuming this database object, will make sure UTI to MIME type mapping is working
correctly in the WebContent process.

For the UI process to be able to pick up xpc messages on the bootstrap connection, a new virtual method, handleXPCEvent, is added to the
ProcessLauncher Client class. This way, a ProcessLauncher client will be able to pick up xpc messages from the xpc bootstrap connection.
Previously the event handler for the bootstrap connection in the UI process would handle only xpc error messages. It has now been expanded
to handle normal messages, which are being forwarded to the ProcessLauncher client. In this case the client is the Network process proxy,
which will check the message received, and if it turns out to be a message containing an xpc endpoint, the message will be forwarded to
all Web processes. The ProcessLauncher client can be expanded to handle any xpc message, but right not the Network process proxy only
handles the xpc endpoint message. The handleXPCEvent virtual method return a RefPtr to an XPCEventHandler, which is captured in the event
handler of the bootstrap xpc connection.

No new tests, since there already exist tests for this. UTI to MIME type mapping is being used in WebKit and underlying framework, and many
tests would fail if this mapping was not working.

  • NetworkProcess/NetworkProcess.cpp:

(WebKit::NetworkProcess::initializeConnection):

  • NetworkProcess/cocoa/LaunchServicesDatabaseObserver.h: Added.
  • NetworkProcess/cocoa/LaunchServicesDatabaseObserver.mm: Added.

(WebKit::LaunchServicesDatabaseObserver::singleton):
(WebKit::LaunchServicesDatabaseObserver::LaunchServicesDatabaseObserver):
(WebKit::LaunchServicesDatabaseObserver::startObserving):
(WebKit::LaunchServicesDatabaseObserver::~LaunchServicesDatabaseObserver):
(WebKit::LaunchServicesDatabaseObserver::xpcEndpointMessageNameKey const):
(WebKit::LaunchServicesDatabaseObserver::xpcEndpointMessageName const):
(WebKit::LaunchServicesDatabaseObserver::xpcEndpointNameKey const):
(WebKit::LaunchServicesDatabaseObserver::handleEvent):

  • Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb:
  • Scripts/process-entitlements.sh:
  • Shared/Cocoa/LaunchServicesDatabaseXPCConstants.h: Added.
  • Shared/EntryPointUtilities/Cocoa/XPCService/XPCServiceMain.mm:
  • SourcesCocoa.txt:
  • UIProcess/Cocoa/WebProcessPoolCocoa.mm:

(WebKit::WebProcessPool::xpcEndpointMessage const):
(WebKit::WebProcessPool::sendNetworkProcessXPCEndpointToWebProcess):

  • UIProcess/Cocoa/XPCEventHandler.h: Added.

(WebKit::XPCEventHandler::~XPCEventHandler):

  • UIProcess/Launcher/ProcessLauncher.h:

(WebKit::ProcessLauncher::Client::xpcEventHandler const):

  • UIProcess/Launcher/mac/ProcessLauncherMac.mm:

(WebKit::ProcessLauncher::launchProcess):

  • UIProcess/Network/NetworkProcessProxy.h:
  • UIProcess/Network/NetworkProcessProxyCocoa.mm: Added.

(WebKit::NetworkProcessProxy::xpcEventHandler const):
(WebKit::NetworkProcessProxy::XPCEventHandler::handleXPCEvent const):
(WebKit::NetworkProcessProxy::XPCEventHandler::XPCEventHandler):
(WebKit::NetworkProcessProxy::XPCEventHandler::~XPCEventHandler):

  • UIProcess/WebProcessPool.h:
  • UIProcess/WebProcessProxy.cpp:

(WebKit::WebProcessProxy::didFinishLaunching):

  • WebKit.xcodeproj/project.pbxproj:
  • WebProcess/WebPage/Cocoa/WebPageCocoa.mm:

(WebKit::WebPage::platformDidReceiveLoadParameters):

  • WebProcess/WebProcess.cpp:

(WebKit::WebProcess::initializeConnection):

  • WebProcess/WebProcess.h:
  • WebProcess/cocoa/LaunchServicesDatabaseManager.h: Added.
  • WebProcess/cocoa/LaunchServicesDatabaseManager.mm: Added.

(WebKit::LaunchServicesDatabaseManager::singleton):
(WebKit::LaunchServicesDatabaseManager::handleEvent):
(WebKit::LaunchServicesDatabaseManager::didConnect):
(WebKit::LaunchServicesDatabaseManager::waitForDatabaseUpdate):

  • WebProcess/cocoa/WebProcessCocoa.mm:

(WebKit::WebProcess::handleXPCEndpointMessages const):
(WebKit::WebProcess::platformInitializeWebProcess):

Source/WTF:

Added HAVE define for determining if the class LSDatabaseContext is present.

  • wtf/PlatformHave.h:
9:57 AM Changeset in webkit [264177] by eric.carlson@apple.com
  • 10 edits in trunk/Source

Reset AVSystemController_PIDToInheritApplicationStateFrom when mediaserverd dies
https://bugs.webkit.org/show_bug.cgi?id=214112
<rdar://problem/65229214>

Reviewed by Jer Noble.

Source/WebCore:

Tested manually because this can only be tested by killing a system process while
capturing on iOS hardware.

  • platform/audio/cocoa/MediaSessionManagerCocoa.h: Add task queue accessor.

(WebCore::MediaSessionManagerCocoa::taskQueue):

  • platform/audio/ios/MediaSessionHelperIOS.h:

(WebCore::MediaSessionHelperClient::mediaServerConnectionDied):

  • platform/audio/ios/MediaSessionHelperIOS.mm:

(MediaSessionHelperiOS::mediaServerConnectionDied): Renamed from carPlayServerDied.
Inform clients if we previously set the PID proxy.
(-[WebMediaSessionHelper initWithCallback:]): Call mediaServerConnectionDied.
(-[WebMediaSessionHelper mediaServerConnectionDied:]): Ditto.
(MediaSessionHelperiOS::carPlayServerDied): Deleted.
(-[WebMediaSessionHelper carPlayServerDied:]): Deleted.

  • platform/audio/ios/MediaSessionManagerIOS.h:
  • platform/audio/ios/MediaSessionManagerIOS.mm:

(WebCore::MediaSessionManageriOS::mediaServerConnectionDied): Call providePresentingApplicationPID
if we previously set the PID proxy.

  • platform/mediastream/mac/AVVideoCaptureSource.mm:

(WebCore::AVVideoCaptureSource::captureSessionRuntimeError): Don't try to restart the
session immediately since this is called directly from the notification handler.

Source/WebKit:

  • GPUProcess/media/ios/RemoteMediaSessionHelperProxy.cpp:

(WebKit::RemoteMediaSessionHelperProxy::providePresentingApplicationPID): Don't bother
tracking whether or not providePresentingApplicationPID has been called, the session
helper already does that.

  • GPUProcess/media/ios/RemoteMediaSessionHelperProxy.h:
9:31 AM Changeset in webkit [264176] by commit-queue@webkit.org
  • 22 edits
    4 copies in trunk

Set Restrictions for channelCount, channelCountMode for PannerNode
https://bugs.webkit.org/show_bug.cgi?id=213992

Patch by Clark Wang <clark_wang@apple.com> on 2020-07-09
Reviewed by Chris Dumez.

LayoutTests/imported/w3c:

Re-baselined tests that now pass.

  • web-platform-tests/webaudio/the-audio-api/the-pannernode-interface/ctor-panner-expected.txt:

Source/WebCore:

Added setter methods to PannerNode that handle exceptions for channelCount, channelCountMode, according to spec:
https://www.w3.org/TR/webaudio/#dom-audionode-channelcount.
Moved ChannelCount, ChannelCountMode enums into their own files.

Re-baselined tests that now pass.

  • CMakeLists.txt:
  • DerivedSources-input.xcfilelist:
  • DerivedSources-output.xcfilelist:
  • DerivedSources.make:
  • Modules/webaudio/AudioNode.cpp:

(WebCore::AudioNode::AudioNode):
(WebCore::AudioNode::setChannelCount):
(WebCore::AudioNode::setChannelCountMode):
(WebCore::AudioNode::setChannelInterpretation):
(WebCore::AudioNode::channelCount): Deleted.
(WebCore::AudioNode::channelCountMode): Deleted.
(WebCore::AudioNode::channelInterpretation): Deleted.

  • Modules/webaudio/AudioNode.h:

(WebCore::AudioNode::channelCount const):
(WebCore::AudioNode::channelCountMode const):
(WebCore::AudioNode::channelInterpretation const):
(WebCore::AudioNode::internalChannelCountMode const): Deleted.
(WebCore::AudioNode::internalChannelInterpretation const): Deleted.

  • Modules/webaudio/AudioNode.idl:
  • Modules/webaudio/AudioNodeInput.cpp:

(WebCore::AudioNodeInput::numberOfChannels const):
(WebCore::AudioNodeInput::bus):
(WebCore::AudioNodeInput::sumAllConnections):
(WebCore::AudioNodeInput::pull):

  • Modules/webaudio/AudioNodeOptions.h:
  • Modules/webaudio/AudioNodeOptions.idl:
  • Modules/webaudio/ChannelCountMode.h: Copied from Source/WebCore/Modules/webaudio/AudioNodeOptions.h.
  • Modules/webaudio/ChannelCountMode.idl: Copied from Source/WebCore/Modules/webaudio/AudioNodeOptions.idl.
  • Modules/webaudio/ChannelInterpretation.h: Copied from Source/WebCore/Modules/webaudio/AudioNodeOptions.h.
  • Modules/webaudio/ChannelInterpretation.idl: Copied from Source/WebCore/Modules/webaudio/AudioNodeOptions.idl.
  • Modules/webaudio/ConvolverNode.cpp:

(WebCore::ConvolverNode::ConvolverNode):

  • Modules/webaudio/DefaultAudioDestinationNode.cpp:

(WebCore::DefaultAudioDestinationNode::DefaultAudioDestinationNode):

  • Modules/webaudio/PannerNode.cpp:

(WebCore::PannerNode::PannerNode):
(WebCore::PannerNode::create):
(WebCore::PannerNode::setChannelCount):
(WebCore::PannerNode::setChannelCountMode):

  • Modules/webaudio/PannerNode.h:
  • Modules/webaudio/WebKitAudioPannerNode.cpp:

(WebCore::WebKitAudioPannerNode::WebKitAudioPannerNode):

  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • platform/audio/AudioBus.cpp:

(WebCore::AudioBus::copyFrom):
(WebCore::AudioBus::sumFrom):

  • platform/audio/AudioBus.h:
9:22 AM Changeset in webkit [264175] by aboya@igalia.com
  • 9 edits in trunk/Source/WebCore

[MSE][GStreamer] Remove m_appendPipelinesMap
https://bugs.webkit.org/show_bug.cgi?id=214132

Reviewed by Xabier Rodriguez-Calvar.

m_appendPipelinesMap was owned by MediaPlayerPrivateGStreamerMSE but
was only used by MediaPlayerPrivateGStreamerMSE to clear it during
destruction, while the other uses were in
MediaSourceClientGStreamerMSE.

After analysis, it was found keeping a HashMap of AppendPipelines is not
necessary. An AppendPipeline only needs to be used by the SourceBuffer
receiving the muxed data: making AppendPipeline a member of
SourceBufferPrivateGStreamer reflects this dependency in a much
clearer way. No need for a HashMap of AppendPipeline's.

Moreso, there are no other users of AppendPipeline, which means
AppendPipeline doesn't need to be ref counted. This patch removes that
feature, using std::unique_ptr<AppendPipeline> for ownership instead.

This patch is a refactor: it doesn't introduce behavior changes and
it's covered by existing tests.

  • platform/graphics/gstreamer/mse/AppendPipeline.cpp:

(WebCore::AppendPipeline::appsinkCapsChanged):
(WebCore::AppendPipeline::connectDemuxerSrcPadToAppsink):

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

(WebCore::MediaPlayerPrivateGStreamerMSE::~MediaPlayerPrivateGStreamerMSE):
(WebCore::MediaPlayerPrivateGStreamerMSE::trackDetected):

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

(WebCore::MediaSourceClientGStreamerMSE::addSourceBuffer):
(WebCore::MediaSourceClientGStreamerMSE::abort):
(WebCore::MediaSourceClientGStreamerMSE::resetParserState):
(WebCore::MediaSourceClientGStreamerMSE::append):
(WebCore::MediaSourceClientGStreamerMSE::removedFromMediaSource):

  • platform/graphics/gstreamer/mse/MediaSourcePrivateGStreamer.cpp:

(WebCore::MediaSourcePrivateGStreamer::addSourceBuffer):

  • platform/graphics/gstreamer/mse/SourceBufferPrivateGStreamer.cpp:

(WebCore::SourceBufferPrivateGStreamer::create):
(WebCore::SourceBufferPrivateGStreamer::SourceBufferPrivateGStreamer):
(WebCore::SourceBufferPrivateGStreamer::finishCreation):

  • platform/graphics/gstreamer/mse/SourceBufferPrivateGStreamer.h:
9:07 AM Changeset in webkit [264174] by Chris Dumez
  • 125 edits
    3 copies
    2 moves
    10 adds
    5 deletes in trunk/LayoutTests

Resync web-platform-tests/xhr from upstream
https://bugs.webkit.org/show_bug.cgi?id=214105

Reviewed by Geoff Garen.

Resync web-platform-tests/xhr from upstream cef93b58e7cf31f1d47cc.

  • web-platform-tests/xhr/*: Updated.
9:00 AM Changeset in webkit [264173] by Caio Lima
  • 4 edits in trunk/JSTests

[JSC][32-bits] Test gardening July 9th
https://bugs.webkit.org/show_bug.cgi?id=214138

Unreviewed Gardening.

  • stress/array-buffer-view-watchpoint-can-be-fired-in-really-add-in-dfg.js:
  • stress/butterfly-zero-unused-butterfly-properties.js:
  • stress/check-stack-overflow-before-value-profiling-arguments.js:
8:55 AM Changeset in webkit [264172] by Chris Dumez
  • 2 edits in trunk/LayoutTests

Unreviewed, mark ref-test as flaky on iOS since import in r263987.

  • platform/ios-wk2/TestExpectations:
8:41 AM Changeset in webkit [264171] by Chris Dumez
  • 2 edits in trunk/LayoutTests/imported/w3c

Unreviewed, rebaseline fetch test after resync in r264144.

  • web-platform-tests/fetch/content-encoding/bad-gzip-body.any.worker-expected.txt:
8:15 AM Changeset in webkit [264170] by Wenson Hsieh
  • 11 edits
    2 adds in trunk

[iOS] Occasional crash under -[UIView _setViewDelegate:] when presenting date and time pickers
https://bugs.webkit.org/show_bug.cgi?id=214120
<rdar://problem/65246918>

Reviewed by Darin Adler.

Source/WebKit:

This crash happens when attempting to present a date picker (<input type=date>) immediately after dismissing
it. We encounter an Objective-C exception thrown by UIKit, due to the WKDateTimeContextMenuViewController's
view (the UIDatePicker) being presented while it is still owned by the preview view controller. We often avoid
this crash because the WKDateTimeContextMenuViewController is usually only owned by WKDateTimePicker, so
when we set _viewController to a new instance of WKDateTimeContextMenuViewController, the old view
controller is destroyed, and thus no longer owns the UIDatePicker view.

However, it's possible for anything (e.g. animation blocks in UIKit) to cause the old view controller to live
past the creation of the new view controller. If this happens, when we go and call -setView: on the new view
controller with the date picker view, the date picker view may still be the view of the old controller, and we
end up crashing.

To fix this, explicitly unload the old view controller's view before attempting to create the new view
controller.

Test: fast/forms/ios/show-and-dismiss-date-input.html

  • UIProcess/ios/forms/WKDateTimeInputControl.mm:

(-[WKDateTimePicker contextMenuInteraction:configurationForMenuAtLocation:]):
(-[WKDateTimePicker contextMenuInteraction:willDisplayMenuForConfiguration:animator:]):
(-[WKDateTimePicker contextMenuInteraction:willEndForConfiguration:animator:]):

Make it possible to test date and time picker presentation and dismissal by calling into the private testing-
only subclassing hooks on WKWebView when we finish presenting and dismissing the date picker context menu.

(-[WKDateTimePicker removeContextMenuInteraction]):

Tools:

Implement additional support for testing date and time pickers presented using context menus on iOS 14.

  • TestRunnerShared/UIScriptContext/Bindings/UIScriptController.idl:
  • TestRunnerShared/UIScriptContext/UIScriptController.h:

(WTR::UIScriptController::isShowingContextMenu const):

  • WebKitTestRunner/cocoa/TestRunnerWKWebView.h:
  • WebKitTestRunner/cocoa/TestRunnerWKWebView.mm:

(-[TestRunnerWKWebView _didShowContextMenu]):
(-[TestRunnerWKWebView _didDismissContextMenu]):

  • WebKitTestRunner/ios/UIScriptControllerIOS.h:
  • WebKitTestRunner/ios/UIScriptControllerIOS.mm:

(WTR::UIScriptControllerIOS::setDidDismissContextMenuCallback):

Call the completion callback with CallbackTypeDidDismissContextMenu, rather than
CallbackTypeDidEndFormControlInteraction.

(WTR::UIScriptControllerIOS::isShowingContextMenu const):

Add a new script controller to ask whether we're currently presenting a context menu. This is useful in the case
where we want to wait until we're no longer showing a context menu, since we'll either immediately invoke script
completion, or stash a completion callback on didDismissContextMenuCallback to invoke script completion after
the context menu is finished dismissing.

LayoutTests:

Add a new layout test to verify that presenting a date picker twice does not result in a crash.

  • fast/forms/ios/show-and-dismiss-date-input-expected.txt: Added.
  • fast/forms/ios/show-and-dismiss-date-input.html: Added.
  • resources/ui-helper.js:

(window.UIHelper.activateAndWaitForInputSessionAt.return.new.Promise.):

Teach this helper method to wait for context menus as well (for the case of date and time pickers on iOS).

(window.UIHelper.waitForInputSessionToDismiss.return.new.Promise.):
(window.UIHelper.waitForInputSessionToDismiss.return.new.Promise):
(window.UIHelper.waitForInputSessionToDismiss):

Likewise, teach this to wait for context menu dismissal.

(window.UIHelper.waitForContextMenuToHide.return.new.Promise):
(window.UIHelper.waitForContextMenuToHide):

Add a new helper to wait for context menus to hide.

7:33 AM Changeset in webkit [264169] by Alan Bujtas
  • 3 edits
    2 adds in trunk

[LFC][Verification] Use the table wrapper box's margin when checking the table box
https://bugs.webkit.org/show_bug.cgi?id=214119

Reviewed by Darin Adler.

Source/WebCore:

Table margins are propagated to the table wrapper box.

Test: fast/layoutformattingcontext/table-with-margin-simple.html

  • layout/Verification.cpp:

(WebCore::Layout::outputMismatchingBlockBoxInformationIfNeeded):
(WebCore::Layout::LayoutContext::verifyAndOutputMismatchingLayoutTree):

LayoutTests:

  • fast/layoutformattingcontext/table-with-margin-simple-expected.html: Added.
  • fast/layoutformattingcontext/table-with-margin-simple.html: Added.
7:10 AM Changeset in webkit [264168] by Carlos Garcia Campos
  • 4 edits in trunk/Source/WebKit

[GTK] Add support for shm buffers in AcceleratedBackingStoreWayland when using the WPE renderer
https://bugs.webkit.org/show_bug.cgi?id=214135

Reviewed by Žan Doberšek.

It's available since wpe-fdo 1.7.0. This makes accelerated compositing work in platforms where
EGL_WL_bind_wayland_display is not available. It can also be forced with the environment variable
LIBGL_ALWAYS_SOFTWARE.

  • UIProcess/glib/WebProcessPoolGLib.cpp:

(WebKit::WebProcessPool::platformInitializeWebProcess): Use AcceleratedBackingStoreWayland::checkRequirements()
instead of calling wpe_fdo_initialize_for_egl_display() again.

  • UIProcess/gtk/AcceleratedBackingStoreWayland.cpp:

(WebKit::tryInitializeEGL): Moved EGL specific initialization here.
(WebKit::tryInitializeSHM): Added SHM initialization.
(WebKit::AcceleratedBackingStoreWayland::checkRequirements): Try to initialize EGL first and then SHM if EGL failed.
(WebKit::AcceleratedBackingStoreWayland::AcceleratedBackingStoreWayland): Create a EGL exportable only when
using EGL implementation.
(WebKit::AcceleratedBackingStoreWayland::~AcceleratedBackingStoreWayland): Release EGL resources only when using
EGL implementation.
(WebKit::AcceleratedBackingStoreWayland::unrealize): Ditto.
(WebKit::AcceleratedBackingStoreWayland::tryEnsureGLContext): Return early when not using EGL implementation.
(WebKit::AcceleratedBackingStoreWayland::update): Add implementation for the SHM case.
(WebKit::AcceleratedBackingStoreWayland::displayImage): Renamed.
(WebKit::AcceleratedBackingStoreWayland::displayBuffer): SHM implementation, copy the shm buffer into a cairo
image surface.
(WebKit::AcceleratedBackingStoreWayland::tryEnsureTexture):
(WebKit::AcceleratedBackingStoreWayland::downloadTexture):
(WebKit::AcceleratedBackingStoreWayland::snapshot): Handle the SHM case.
(WebKit::AcceleratedBackingStoreWayland::paint): Ditto.

  • UIProcess/gtk/AcceleratedBackingStoreWayland.h:
7:02 AM Changeset in webkit [264167] by commit-queue@webkit.org
  • 21 edits
    7 deletes in trunk/Source

Unreviewed, reverting r264148.
https://bugs.webkit.org/show_bug.cgi?id=214136

Introduced layout test failures

Reverted changeset:

"[Cocoa] Update Launch Services database in the WebContent
process from the Network process"
https://bugs.webkit.org/show_bug.cgi?id=213794
https://trac.webkit.org/changeset/264148

5:30 AM Changeset in webkit [264166] by aboya@igalia.com
  • 3 edits in trunk/Source/WebCore

[MSE][GStreamer] Don't cache duration in MediaSourceClientGStreamerMSE
https://bugs.webkit.org/show_bug.cgi?id=214128

Reviewed by Xabier Rodriguez-Calvar.

MediaSource should be the single source of truth for the duration of
the MediaSource, and querying it to MediaSource is efficient enough
(trivial getter). There is no reason for MediaSourceClientGStreamerMSE
to store a separate m_duration field.

This patch introduces no behavior changes.

  • platform/graphics/gstreamer/mse/MediaSourceClientGStreamerMSE.cpp:

(WebCore::MediaSourceClientGStreamerMSE::MediaSourceClientGStreamerMSE):
(WebCore::MediaSourceClientGStreamerMSE::duration):
(WebCore::MediaSourceClientGStreamerMSE::durationChanged):

  • platform/graphics/gstreamer/mse/MediaSourceClientGStreamerMSE.h:
4:43 AM Changeset in webkit [264165] by commit-queue@webkit.org
  • 2 edits in trunk/Tools

[Flatpak SDK] Unable to build without Internet connection
https://bugs.webkit.org/show_bug.cgi?id=213920

Patch by Philippe Normand <pnormand@igalia.com> on 2020-07-09
Reviewed by Sergio Villar Senin.

Set the flathub ostree repo url explicitely in order to avoid retrieving it from the
flatpakrepo remote file. This is unlikely to change.

  • flatpak/flatpakutils.py:

(WebkitFlatpak._get_packages):

4:20 AM Changeset in webkit [264164] by aboya@igalia.com
  • 6 edits in trunk/Source/WebCore

[MSE][GStreamer] Make duration changes one way
https://bugs.webkit.org/show_bug.cgi?id=214083

Reviewed by Xabier Rodriguez-Calvar.

Until now, AppendPipeline emitted duration changes for the
MediaSource. This was done with
MediaSourcePrivateClient::durationChanged(const MediaTime&), a
method which was added to MediaSource in r207889 just to implement
this in the GStreamer port.

This is not necessary though. AppendPipeline only needs to inform
MediaSource of the duration of the initialization segment, and
MediaSource will in turn set duration from the multi-platform code.

This patch removes MediaSourcePrivateClient::durationChanged(const
MediaTime&) from the multi-platform API, along with its usages in the
GStreamer port, giving the multi-platform code sole responsibility on
duration changes.

This is a code cleanup and it's covered by existing tests.

  • Modules/mediasource/MediaSource.cpp:

(WebCore::MediaSource::durationChanged): Deleted.

  • Modules/mediasource/MediaSource.h:
  • platform/graphics/MediaSourcePrivateClient.h:
  • platform/graphics/gstreamer/mse/AppendPipeline.cpp:

(WebCore::AppendPipeline::didReceiveInitializationSegment):
(WebCore::AppendPipeline::connectDemuxerSrcPadToAppsink):

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

(WebCore::MediaPlayerPrivateGStreamerMSE::durationChanged):

2:36 AM Changeset in webkit [264163] by calvaris@igalia.com
  • 6 edits
    2 adds in trunk

[WTF] Implement new BoxPtr alias
https://bugs.webkit.org/show_bug.cgi?id=212379

Reviewed by Darin Adler.

Source/WTF:

Added BoxPtr.h that includes BoxPtr<T> as alias of
Box<std::unique_ptr<T>>. We discussed about this class on bugzilla
and we agreed on this alias being the best idea. Apart from the
alias I'm adding a couple of helpers like a create function and
the operator== and operator!=.

Tests: BoxPtr API tests added.

  • WTF.xcodeproj/project.pbxproj:
  • wtf/BoxPtr.h: Added.

(WTF::createBoxPtr):
(WTF::operator==):
(WTF::operator!=):

  • wtf/CMakeLists.txt:

Tools:

Tests for BoxPtr.

  • TestWebKitAPI/CMakeLists.txt:
  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/WTF/BoxPtr.cpp: Added.

(TestWebKitAPI::BoxPtrLogger::create):
(TestWebKitAPI::BoxPtrLogger::BoxPtrLogger):
(TestWebKitAPI::boxPtrLoggerDeleter):
(TestWebKitAPI::TEST):

2:24 AM Changeset in webkit [264162] by Philippe Normand
  • 5 edits in trunk

[GStreamer][MSE] AV1 support
https://bugs.webkit.org/show_bug.cgi?id=207547

Reviewed by Xabier Rodriguez-Calvar.

Source/WebCore:

If only the av1dec decoder is available, consider AV1 decoding
support as disabled, because this plugin performs really badly.
However, if any other AV1 decoder is present, such as the
dav1d-based Rust decoder for instance, consider AV1 support as
enabled.

These checks are now performed by both RegistryScanner instances,
for MSE and non-MSE players.

  • platform/graphics/gstreamer/GStreamerRegistryScanner.cpp:

(WebCore::GStreamerRegistryScanner::hasElementForMediaType const):
(WebCore::GStreamerRegistryScanner::initialize):

  • platform/graphics/gstreamer/GStreamerRegistryScanner.h:

LayoutTests:

  • platform/glib/TestExpectations: Mark media/media-can-play-av1.html as failing until the

Flatpak SDK ships gst-plugins-rs.

1:29 AM Changeset in webkit [264161] by aboya@igalia.com
  • 2 edits in trunk/Source/WebCore

[MSE][GStreamer] Remove orphan code in SourceBufferPrivateGStreamer::append()
https://bugs.webkit.org/show_bug.cgi?id=214086

Reviewed by Xabier Rodriguez-Calvar.

A refactor in r240784 missed this line, which was unreachable code
before and should have removed.

Instead, it has been run every time after sending an append to the
AppendPipeline, and it just happens it doesn't have visible
consequences.

This patch cleans that up removing that line. No visible behavior
changes are introduced.

  • platform/graphics/gstreamer/mse/SourceBufferPrivateGStreamer.cpp:

(WebCore::SourceBufferPrivateGStreamer::append):

1:23 AM Changeset in webkit [264160] by Alexey Shvayka
  • 3 edits
    1 add in trunk

ErrorInstance::finishCreation() puts "message" twice, with different attributes
https://bugs.webkit.org/show_bug.cgi?id=214089

Reviewed by Yusuke Suzuki.

JSTests:

  • microbenchmarks/error-source-appender.js: Added.

Source/JavaScriptCore:

This change refactors appendSourceToError() to return new message, making it almost pure
and eliminating extra JSString -> String -> JSString conversion and {get,put}Direct() calls
from ErrorInstance::finishCreation(). Also, moves null message check as early as possible.

Removed putDirect() call didn't pass PropertyAttribute::DontEnum. An implementation detail,
that is about to change in https://webkit.org/b/142933, prevented "message" property from
beind redefined with PropertyAttribute::None.

No behavior change. Advances provided microbenchmark by 5%.

  • runtime/ErrorInstance.cpp:

(JSC::appendSourceToErrorMessage):
(JSC::ErrorInstance::finishCreation):
(JSC::appendSourceToError): Deleted.

1:23 AM Changeset in webkit [264159] by Carlos Garcia Campos
  • 1 copy in releases/WebKitGTK/webkit-2.28.3

WebKitGTK 2.28.3

1:22 AM Changeset in webkit [264158] by Carlos Garcia Campos
  • 4 edits in releases/WebKitGTK/webkit-2.28

Unreviewed. Update OptionsGTK.cmake and NEWS for 2.28.3 release

.:

  • Source/cmake/OptionsGTK.cmake: Bump version numbers.

Source/WebKit:

  • gtk/NEWS: Add release notes for 2.28.3.
12:57 AM Changeset in webkit [264157] by Carlos Garcia Campos
  • 2 edits in trunk/Source/WebCore

[SOUP] Initialize m_allowCookies and m_acceptEncoding in ResourceRequest::updateFromSoupMessage
https://bugs.webkit.org/show_bug.cgi?id=214077

Reviewed by Michael Catanzaro.

Check if SOUP_TYPE_CONTENT_DECODER and SOUP_TYPE_COOKIE_JAR are disabled in the given message.

  • platform/network/soup/ResourceRequestSoup.cpp:

(WebCore::ResourceRequest::updateFromSoupMessage):

12:57 AM Changeset in webkit [264156] by Carlos Garcia Campos
  • 11 edits
    2 deletes in trunk

[SOUP] Add support for HTTPCookieAcceptPolicy::OnlyFromMainDocumentDomain
https://bugs.webkit.org/show_bug.cgi?id=213954

Reviewed by Michael Catanzaro.

Source/WebCore:

Handle both OnlyFromMainDocumentDomain and ExclusivelyFromMainDocumentDomain.

  • platform/network/soup/NetworkStorageSessionSoup.cpp:

(WebCore::NetworkStorageSession::NetworkStorageSession):
(WebCore::NetworkStorageSession::setCookieAcceptPolicy):
(WebCore::NetworkStorageSession::cookieAcceptPolicy const):
(WebCore::NetworkStorageSession::setResourceLoadStatisticsEnabled):

Source/WebKit:

Use ExclusivelyFromMainDocumentDomain for WEBKIT_COOKIE_POLICY_ACCEPT_NO_THIRD_PARTY instead of
OnlyFromMainDocumentDomain.

  • UIProcess/API/glib/WebKitCookieManager.cpp:

(toWebKitCookieAcceptPolicy):
(toHTTPCookieAcceptPolicy):

  • UIProcess/WebProcessPool.h:

Tools:

Update libsoup to version 2.71.0.

  • buildstream/elements/sdk/libsoup.bst:
  • gtk/jhbuild.modules:

LayoutTests:

Update test expectations.

  • platform/glib/TestExpectations:
  • platform/glib/http/tests/websocket/tests/hybi/websocket-allowed-setting-cookie-as-third-party-expected.txt: Removed.
  • platform/glib/http/tests/websocket/tests/hybi/websocket-cookie-overwrite-behavior-expected.txt: Removed.
  • platform/gtk/TestExpectations:
12:01 AM Changeset in webkit [264155] by Carlos Garcia Campos
  • 4 edits
    2 adds in releases/WebKitGTK/webkit-2.28

Merge r263388 - REGRESSION(r258741): [GTK] anchor-file-blob-download-includes-backslash.html is failing
https://bugs.webkit.org/show_bug.cgi?id=209329

Reviewed by Adrian Perez de Castro.

Source/WebCore:

Sanitize the suggested filename. We replace characters that can be problematic in filenames with '_' to match
what Chromium and Firefox do.

  • platform/network/soup/ResourceResponseSoup.cpp:

(WebCore::sanitizeFilename):
(WebCore::ResourceResponse::platformSuggestedFilename const):

LayoutTests:

Rebaseline tests.

  • platform/gtk/TestExpectations:
  • platform/gtk/fast/dom/HTMLAnchorElement/anchor-file-blob-download-includes-backslash-expected.txt: Added.
  • platform/gtk/fast/dom/HTMLAnchorElement/anchor-file-blob-download-includes-doublequote-expected.txt: Added.
  • platform/gtk/fast/dom/HTMLAnchorElement/anchor-file-blob-download-includes-slashes-expected.txt:
12:01 AM Changeset in webkit [264154] by Carlos Garcia Campos
  • 5 edits in releases/WebKitGTK/webkit-2.28

Merge r258741 - Sanitize suggested download filename received from web process
https://bugs.webkit.org/show_bug.cgi?id=209300
<rdar://problem/59487723>

Patch by Alex Christensen <achristensen@webkit.org> on 2020-03-19
Reviewed by Chris Dumez.

Source/WebKit:

  • UIProcess/Downloads/DownloadProxy.cpp:

(WebKit::DownloadProxy::decideDestinationWithSuggestedFilenameAsync):

LayoutTests:

  • fast/dom/HTMLAnchorElement/anchor-file-blob-download-includes-backslash-expected.txt:
  • fast/dom/HTMLAnchorElement/anchor-file-blob-download-includes-backslash.html:
12:01 AM Changeset in webkit [264153] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.28/Source/WTF

Merge r264015 - [GTK] WebProcess hangs when browsing GitHub
https://bugs.webkit.org/show_bug.cgi?id=213970

Reviewed by Sergio Villar Senin.

Use a lower priority for LayerFlushTimer and DisplayRefreshMonitorTimer. We were using a very high priority for
drawing with the idea of keeping a good rendering performance without being affected by other timers. The
problem is that animations can be controlled by timers, so we need to ensure that MainThreadSharedTimer has
higher priority than drawing.

  • wtf/glib/RunLoopSourcePriority.h: Use 110 for LayerFlushTimer and DisplayRefreshMonitorTimer.

Jul 8, 2020:

11:30 PM Changeset in webkit [264152] by ysuzuki@apple.com
  • 5 edits in trunk/Source/JavaScriptCore

[JSC] B3 PureCSE should ignore values which are moved to new BasicBlock
https://bugs.webkit.org/show_bug.cgi?id=214115
<rdar://problem/65189470>

Reviewed by Saam Barati.

We are performing "Select" specialization like this.

BB#target

...
@a = Select(@p, @x, 42)
@b = Add(@a, 35)
Check(@b)
@c = ...

becomes this:

BB#predecessor

...
Branch(@p, #truecase, #falsecase)

BB#truecase:

@b_truecase = Add(@x, 35)
Check(@b_truecase)
Upsilon(@x, a)
Upsilon(@b_truecase,
b)
Jump(#continuation)

BB#falsecase:

@b_falsecase = Add(42, 35)
Check(@b_falsecase)
Upsilon(42, a)
Upsilon(@b_falsecase,
b)
Jump(#continuation)

BB#continuation:

@a = Phi()
@b = Phi()
Jump(#target)

BB#target

@c = ...

In the above transformation, we create a new BasicBlock and move @a and @b to that one. This is good since we do not need to rewrite all the use of @a and @b.
However, this confuses PureCSE since @a and @b point to a BasicBlock (BB#continuation) which is not inserted into the graph yet.

This patch changes PureCSE so that it ignores values which owners are not inserted yet.

  • b3/B3BasicBlock.h:

(JSC::B3::BasicBlock::isInserted const):

  • b3/B3GenericBlockInsertionSet.h:

(JSC::B3::GenericBlockInsertionSet::insert):

  • b3/B3PureCSE.cpp:

(JSC::B3::PureCSE::findMatch):
(JSC::B3::PureCSE::process):

  • b3/air/AirBasicBlock.h:
11:11 PM Changeset in webkit [264151] by Simon Fraser
  • 12 edits in trunk/Source/WebCore

Allow ScrollableArea to ask if a user scroll is in progress
https://bugs.webkit.org/show_bug.cgi?id=214121

Reviewed by Wenson Hsieh.

Work towards fixing scrolling stutters on layouting pages using scroll snap, like tesla.com.

ScrollableArea::updateScrollSnapState(), which happens as a result of layout, should not set a new
scroll position if a user scroll is in progress. ScrollController already tracks m_inScrollGesture,
so in the first instance just refactor the code to return that. Future changes will check
for scrolling thread activity.

  • page/FrameView.cpp:

(WebCore::FrameView::isUserScrollInProgress const):
(WebCore::FrameView::isRubberBandInProgress const):

  • page/FrameView.h:
  • platform/ScrollAnimator.h:

(WebCore::ScrollAnimator::ScrollAnimator::isUserScrollInProgress const):

  • platform/ScrollableArea.cpp:

(WebCore::ScrollableArea::updateScrollSnapState):

  • platform/ScrollableArea.h:

(WebCore::ScrollableArea::isUserScrollInProgress const):

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

(WebCore::ScrollController::isUserScrollInProgress const):

  • platform/mac/ScrollAnimatorMac.h:
  • platform/mac/ScrollAnimatorMac.mm:

(WebCore::ScrollAnimatorMac::isUserScrollInProgress const):

  • rendering/RenderLayer.cpp:

(WebCore::RenderLayer::isUserScrollInProgress const):
(WebCore::RenderLayer::isRubberBandInProgress const):

  • rendering/RenderLayer.h:
11:10 PM Changeset in webkit [264150] by Lauro Moura
  • 1 edit
    8 deletes in trunk/LayoutTests/imported/w3c

Unreviewed. Remove uneeded the-offscreen-canvas files after update.

The HTML tests for these expectations were removed in r264117.

Also removing two HTML placeholders for already removed JS files from
the same revision.

Unreviewed test gardening.

  • web-platform-tests/html/canvas/offscreen/the-offscreen-canvas/offscreencanvas.commit-expected.txt: Removed.
  • web-platform-tests/html/canvas/offscreen/the-offscreen-canvas/offscreencanvas.constructor-expected.txt: Removed.
  • web-platform-tests/html/canvas/offscreen/the-offscreen-canvas/offscreencanvas.constructor.worker-expected.txt: Removed.
  • web-platform-tests/html/canvas/offscreen/the-offscreen-canvas/offscreencanvas.constructor.worker.html: Removed.
  • web-platform-tests/html/canvas/offscreen/the-offscreen-canvas/offscreencanvas.getcontext-expected.txt: Removed.
  • web-platform-tests/html/canvas/offscreen/the-offscreen-canvas/offscreencanvas.getcontext.worker-expected.txt: Removed.
  • web-platform-tests/html/canvas/offscreen/the-offscreen-canvas/offscreencanvas.getcontext.worker.html: Removed.
  • web-platform-tests/html/canvas/offscreen/the-offscreen-canvas/offscreencanvas.transfercontrol.to.offscreen-expected.txt: Removed.
11:00 PM Changeset in webkit [264149] by Lauro Moura
  • 3 edits
    4 adds in trunk/LayoutTests

[GTK][WPE] Gardening after latest wpt resyncs

Unreviewed test gardening.

  • platform/glib/TestExpectations:
  • platform/glib/imported/w3c/web-platform-tests/fetch/redirect-navigate/preserve-fragment-expected.txt: Added.
  • platform/glib/imported/w3c/web-platform-tests/fetch/security/embedded-credentials.tentative.sub-expected.txt:
  • platform/gtk/imported/w3c/web-platform-tests/html/rendering/widgets/baseline-alignment-and-overflow.tentative-expected.txt: Added.
  • platform/gtk/imported/w3c/web-platform-tests/html/rendering/widgets/button-layout/flex-expected.txt: Added.
10:24 PM Changeset in webkit [264148] by pvollan@apple.com
  • 21 edits
    7 adds in trunk/Source

[Cocoa] Update Launch Services database in the WebContent process from the Network process
https://bugs.webkit.org/show_bug.cgi?id=213794

Reviewed by Brent Fulgham.

Source/WebCore/PAL:

Declare interface for observing and consuming the Launch Services database.

  • pal/spi/cocoa/LaunchServicesSPI.h:

Source/WebKit:

To be able to deny mach lookup access to the Launch Services database mapping service in the WebContent process, the database needs to be
sent from the Networking process to the WebContent process, represented by an xpc object. The Networking process is chosen instead of the UI
process, since WebKit is controlling the sandbox of the Networking process. There is already a direct connection between the Networking
process and the WebContent process, but this is a CoreIPC connection. Since the database is represented by an xpc object, an xpc connection
is requiered to transfer the database. This patch creates a direct xpc connection between the Networking process and the WebContent process,
by creating an xpc endpoint in the Networking process, sending this to the UI process over the bootstrap xpc connection, and then providing
each WebContent process with this endpoint by sending it over the bootstrap xpc connection between the UI process and the WebContent process.
This endpoint has to be sent via the xpc connections to the UI process, since the already existing direct connection between the Networking
process and the WebContent process is a lower level CoreIPC connection, which does not support transferring xpc objects like the xpc endpoint.
When the WebContent process receives the endpoint, it will create an xpc connection from the endpoint, which will create a direct connection
with the Networking process. A message is then sent over the connection to request the database xpc object. When the Networking process
receives this message, it checks the entitlement of the remote end to make sure it is communicating with a WebContent process, and then sends
the database if the entitlement check succeeds. When the WebContent process receives this message, it performs an entitlement check as well,
and if successful, the database object is consumed. Consuming this database object, will make sure UTI to MIME type mapping is working
correctly in the WebContent process.

For the UI process to be able to pick up xpc messages on the bootstrap connection, a new virtual method, handleXPCEvent, is added to the
ProcessLauncher Client class. This way, a ProcessLauncher client will be able to pick up xpc messages from the xpc bootstrap connection.
Previously the event handler for the bootstrap connection in the UI process would handle only xpc error messages. It has now been expanded
to handle normal messages, which are being forwarded to the ProcessLauncher client. In this case the client is the Network process proxy,
which will check the message received, and if it turns out to be a message containing an xpc endpoint, the message will be forwarded to
all Web processes. The ProcessLauncher client can be expanded to handle any xpc message, but right not the Network process proxy only
handles the xpc endpoint message. The handleXPCEvent virtual method return a RefPtr to an XPCEventHandler, which is captured in the event
handler of the bootstrap xpc connection.

No new tests, since there already exist tests for this. UTI to MIME type mapping is being used in WebKit and underlying framework, and many
tests would fail if this mapping was not working.

  • NetworkProcess/NetworkProcess.cpp:

(WebKit::NetworkProcess::initializeConnection):

  • NetworkProcess/cocoa/LaunchServicesDatabaseObserver.h: Added.
  • NetworkProcess/cocoa/LaunchServicesDatabaseObserver.mm: Added.

(WebKit::LaunchServicesDatabaseObserver::singleton):
(WebKit::LaunchServicesDatabaseObserver::LaunchServicesDatabaseObserver):
(WebKit::LaunchServicesDatabaseObserver::startObserving):
(WebKit::LaunchServicesDatabaseObserver::~LaunchServicesDatabaseObserver):
(WebKit::LaunchServicesDatabaseObserver::xpcEndpointMessageNameKey const):
(WebKit::LaunchServicesDatabaseObserver::xpcEndpointMessageName const):
(WebKit::LaunchServicesDatabaseObserver::xpcEndpointNameKey const):
(WebKit::LaunchServicesDatabaseObserver::handleEvent):

  • Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb:
  • Scripts/process-entitlements.sh:
  • Shared/Cocoa/LaunchServicesDatabaseXPCConstants.h: Added.
  • Shared/EntryPointUtilities/Cocoa/XPCService/XPCServiceMain.mm:
  • SourcesCocoa.txt:
  • UIProcess/Cocoa/WebProcessPoolCocoa.mm:

(WebKit::WebProcessPool::xpcEndpointMessage const):
(WebKit::WebProcessPool::sendNetworkProcessXPCEndpointToWebProcess):

  • UIProcess/Cocoa/XPCEventHandler.h: Added.

(WebKit::XPCEventHandler::~XPCEventHandler):

  • UIProcess/Launcher/ProcessLauncher.h:

(WebKit::ProcessLauncher::Client::xpcEventHandler const):

  • UIProcess/Launcher/mac/ProcessLauncherMac.mm:

(WebKit::ProcessLauncher::launchProcess):

  • UIProcess/Network/NetworkProcessProxy.h:
  • UIProcess/Network/NetworkProcessProxyCocoa.mm: Added.

(WebKit::NetworkProcessProxy::xpcEventHandler const):
(WebKit::NetworkProcessProxy::XPCEventHandler::handleXPCEvent const):
(WebKit::NetworkProcessProxy::XPCEventHandler::XPCEventHandler):
(WebKit::NetworkProcessProxy::XPCEventHandler::~XPCEventHandler):

  • UIProcess/WebProcessPool.h:
  • UIProcess/WebProcessProxy.cpp:

(WebKit::WebProcessProxy::didFinishLaunching):

  • WebKit.xcodeproj/project.pbxproj:
  • WebProcess/WebPage/Cocoa/WebPageCocoa.mm:

(WebKit::WebPage::platformDidReceiveLoadParameters):

  • WebProcess/WebProcess.cpp:

(WebKit::WebProcess::initializeConnection):

  • WebProcess/WebProcess.h:
  • WebProcess/cocoa/LaunchServicesDatabaseManager.h: Added.
  • WebProcess/cocoa/LaunchServicesDatabaseManager.mm: Added.

(WebKit::LaunchServicesDatabaseManager::singleton):
(WebKit::LaunchServicesDatabaseManager::handleEvent):
(WebKit::LaunchServicesDatabaseManager::didConnect):
(WebKit::LaunchServicesDatabaseManager::waitForDatabaseUpdate):

  • WebProcess/cocoa/WebProcessCocoa.mm:

(WebKit::WebProcess::handleXPCEndpointMessages const):
(WebKit::WebProcess::platformInitializeWebProcess):

Source/WTF:

Added HAVE define for determining if the class LSDatabaseContext is present.

  • wtf/PlatformHave.h:
8:19 PM Changeset in webkit [264147] by Andres Gonzalez
  • 4 edits in trunk/Source/WebCore

Implementation of AXIsolatedObject::setSelectedVisiblePositionRange.
https://bugs.webkit.org/show_bug.cgi?id=214118

Reviewed by Chris Fleizach.

Covered by test: accessibility/mac/selected-visible-position-range.html.

Implemented AXIsolatedObject::setSelectedVisiblePositionRange() and
selection() by forwarding the call to the associated AX object.

  • accessibility/isolatedtree/AXIsolatedObject.cpp:

(WebCore::AXIsolatedObject::selection const):
(WebCore::AXIsolatedObject::setSelectedVisiblePositionRange const):

  • accessibility/isolatedtree/AXIsolatedObject.h:
  • accessibility/mac/WebAccessibilityObjectWrapperMac.mm:

(-[WebAccessibilityObjectWrapper _accessibilitySetValue:forAttribute:]):
call to the backing object should happen on the main thread since it
takes a VisiblePositionRange parameter.

8:19 PM Changeset in webkit [264146] by Simon Fraser
  • 3 edits in trunk/Source/WebCore

Clean up time values in ScrollController
https://bugs.webkit.org/show_bug.cgi?id=214117

Reviewed by Wenson Hsieh.

ScrollController used a mixture of [NSDate timeIntervalSinceReferenceDate], [NSProcessInfo processInfo].systemUptime
and wheelEvent.timestamp().secondsSinceEpoch(). Standardize on Seconds/MonotonicTime/WallTime.

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

(WebCore::elasticDeltaForTimeDelta):
(WebCore::ScrollController::handleWheelEvent):
(WebCore::ScrollController::snapRubberBandTimerFired):
(WebCore::ScrollController::snapRubberBand):

7:49 PM Changeset in webkit [264145] by Chris Dumez
  • 53 edits
    3 copies
    41 adds in trunk/LayoutTests/imported/w3c

Resync web-platform-tests/websockets from upstream
https://bugs.webkit.org/show_bug.cgi?id=214107

Reviewed by Sam Weinig.

Resync web-platform-tests/websockets from upstream cef93b58e7cf31f1d47cc.

  • web-platform-tests/websockets/*: Updated.
7:47 PM Changeset in webkit [264144] by Chris Dumez
  • 159 edits
    10 copies
    7 moves
    136 adds
    7 deletes in trunk/LayoutTests

Resync web-platform-tests/fetch from upstream
https://bugs.webkit.org/show_bug.cgi?id=214111

Reviewed by Sam Weinig.

LayoutTests/imported/w3c:

Resync web-platform-tests/fetch from upstream cef93b58e7cf31f1d47.

  • web-platform-tests/fetch/*: Updated.

LayoutTests:

  • tests-options.json:
6:20 PM Changeset in webkit [264143] by beidson@apple.com
  • 6 edits in trunk/Source

Aggressively prime GameController.framework gamepad provider.
https://bugs.webkit.org/show_bug.cgi?id=214094

Reviewed by Darin Adler.

Source/WebCore:

GameController.framework gets itself going by listening for application activation,
assuming that it is hard linked.

Soft linking breaks this.

There's an SPI to manually kickstart it.

Also add some logging I'd added while exploring issues around this.

  • platform/gamepad/cocoa/GameControllerGamepadProvider.h:
  • platform/gamepad/cocoa/GameControllerGamepadProvider.mm:

(WebCore::GameControllerGamepadProvider::controllerDidConnect):
(WebCore::GameControllerGamepadProvider::prewarmGameControllerDevicesIfNecessary):
(WebCore::GameControllerGamepadProvider::startMonitoringGamepads):

  • platform/gamepad/cocoa/GameControllerSPI.h:

Source/WebKit:

  • WebProcess/Gamepad/WebGamepadProvider.cpp:

(WebKit::WebGamepadProvider::gamepadConnected):
(WebKit::WebGamepadProvider::gamepadDisconnected):
(WebKit::WebGamepadProvider::gamepadActivity):

5:14 PM Changeset in webkit [264142] by stephan.szabo@sony.com
  • 3 edits in trunk/Tools

[Windows] Fix errors from calls to uname when not available
https://bugs.webkit.org/show_bug.cgi?id=214101

Reviewed by Darin Adler.

As bare windows doesn't default to having uname, avoid calls
to it for architecture determination.

  • Scripts/webkitdirs.pm: Do not call uname on windows (non-cygwin) perl
  • Scripts/webkitpy/common/system/platforminfo.py: Do not call uname for windows (non-cygwin) python, os.uname() also doesn't necessarily exist there, so use platform.uname() instead.
4:47 PM Changeset in webkit [264141] by commit-queue@webkit.org
  • 19 edits
    7 deletes in trunk/Source

Unreviewed, reverting r264132 and r264139.
https://bugs.webkit.org/show_bug.cgi?id=214108

Introduced assert failure.

Reverted changesets:

"[Cocoa] Update Launch Services database in the WebContent
process from the Network process"
https://bugs.webkit.org/show_bug.cgi?id=213794
https://trac.webkit.org/changeset/264132

"Unreviewed build fix attempt after r264132."
https://trac.webkit.org/changeset/264139

4:15 PM Changeset in webkit [264140] by dino@apple.com
  • 3 edits in trunk/LayoutTests

Unreviewed. Remove some mentions of non-existant files in expectations.

3:57 PM Changeset in webkit [264139] by Chris Dumez
  • 2 edits in trunk/Source/WebCore/PAL

Unreviewed build fix attempt after r264132.

  • pal/spi/cocoa/LaunchServicesSPI.h:
3:07 PM Changeset in webkit [264138] by Chris Dumez
  • 6 edits in trunk

ASSERTION FAILURE: Completion handlers not invalidated when WebPage::~WebPage() invoked navigating to docs.google.com and signing in
https://bugs.webkit.org/show_bug.cgi?id=214098
<rdar://problem/64848288>

Reviewed by Geoffrey Garen.

Source/WebKit:

Make sure the WebPage destructor calls its "markLayersAsVolatile" CompletionHandlers before destroying
them.

Change is covered by new API test.

  • UIProcess/API/Cocoa/WKWebViewPrivateForTesting.h:
  • UIProcess/API/Cocoa/WKWebViewTesting.mm:

(-[WKWebView _processWillSuspendForTesting:]):

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::~WebPage):

Tools:

Add API test coverage.

  • TestWebKitAPI/Tests/WebKitCocoa/ProcessSuspension.mm:

(TEST):

2:59 PM Changeset in webkit [264137] by Alan Coon
  • 1 copy in tags/Safari-610.1.21.1.2

Tag Safari-610.1.21.1.2.

2:46 PM Changeset in webkit [264136] by weinig@apple.com
  • 27 edits
    1 add in trunk

Part 3 of SimpleColor and SRGBA<uint8_t> are essentially the same - let's converge them
https://bugs.webkit.org/show_bug.cgi?id=214082

Reviewed by Darin Adler.

Source/WebCore:

  • Replaces all uses of SimpleColor that are not implementation details of Color, with SRGBA<uint8_t>.
  • Adds ColorBuilder<T> to allow maintaining the syntax SimpleColor for constant colors. e.g:

Color color = Color::yellow.colorWithAlpha(128);

  • Headers.cmake:
  • WebCore.xcodeproj/project.pbxproj:

Add ColorBuilder.h

  • platform/graphics/Color.cpp:

(WebCore::Color::lightened const):
(WebCore::Color::darkened const):
(WebCore::Color::semanticColor const):

  • platform/graphics/Color.h:

(WebCore::Color::Color):
(WebCore::Color::asSimple const):
(WebCore::Color::setSimpleColor):
(WebCore::Color::isBlackColor):
(WebCore::Color::isWhiteColor):
(WebCore::Color::encode const):
(WebCore::Color::decode):

  • Make constructor taking a SimpleColor private.
  • Add / modifiy constructors to take SRGBA<uint8_t>.
  • Make setSimpleColor() take a SRGBA<uint8_t> (this will be renamed along with other aspects of Color's internals in a subsequent change).
  • Update calls that still need SimpleColor to use an explicit construction from SRGBA<uint8_t>.
  • platform/graphics/ColorBuilder.h: Added.

(WebCore::ColorBuilder::ColorBuilder):
(WebCore::ColorBuilder::color const):
(WebCore::ColorBuilder::colorWithAlpha const):
Added to help maintain current syntax why constructing colors. Currently it only
supports color type with uint8_t components, but can be expanded to support more.

  • platform/graphics/ColorUtilities.h:

(WebCore::clampToComponentByte):
Remove unnecessary cast.

  • platform/graphics/SimpleColor.h:

(WebCore::SimpleColor::SimpleColor):
Restrict to explicit construction via a SRGBA<uint8_t>.

(WebCore::makeSimpleColor):
Update to return ColorBuilder<SRGBA<uint8_t>>. A future change will update
the function name, but kept the same here to limit the size of the change.

  • platform/graphics/mac/ColorMac.mm:

(WebCore::makeSimpleColorFromNSColor):
(WebCore::nsColor):

  • platform/graphics/cg/ColorCG.cpp:

(WebCore::makeSimpleColorFromCGColor):
(WebCore::cachedCGColor):
Replace direct SimpleColor usage with SRGBA<uint8_t> and simplify Packed
construction now that .asSRGBA<uint8_t>() is not needed for color constants.

  • css/DeprecatedCSSOMRGBColor.h:
  • css/parser/CSSParser.cpp:

(WebCore::CSSParser::parseNamedColor):
(WebCore::CSSParser::parseHexColor):

  • css/parser/CSSParser.h:
  • css/parser/CSSParserFastPaths.cpp:

(WebCore::finishParsingHexColor):
(WebCore::parseHexColorInternal):
(WebCore::parseNumericColor):
(WebCore::finishParsingNamedColor):
(WebCore::parseNamedColorInternal):
(WebCore::parseSimpleColorInternal):
(WebCore::CSSParserFastPaths::parseSimpleColor):
(WebCore::CSSParserFastPaths::parseHexColor):
(WebCore::CSSParserFastPaths::parseNamedColor):

  • css/parser/CSSParserFastPaths.h:
  • css/parser/CSSPropertyParserHelpers.cpp:

(WebCore::CSSPropertyParserHelpers::parseHexColor):

  • html/ColorInputType.cpp:

(WebCore::parseSimpleColorValue):

  • html/HTMLElement.cpp:

(WebCore::parseLegacyColorValue):

  • page/DebugPageOverlays.cpp:

(WebCore::touchEventRegionColors):

  • page/cocoa/ResourceUsageOverlayCocoa.mm:

(WebCore::HistoricMemoryCategoryInfo::HistoricMemoryCategoryInfo):

  • platform/graphics/ColorBlending.cpp:

(WebCore::blendWithWhite):
(WebCore::blend):
(WebCore::blendWithoutPremultiply):

  • platform/graphics/avfoundation/InbandTextTrackPrivateAVF.cpp:

(WebCore::makeSimpleColorFromARGBCFArray):

  • platform/graphics/ca/GraphicsLayerCA.cpp:

(WebCore::cloneLayerDebugBorderColor):

  • platform/mock/MockRealtimeVideoSource.cpp:

(WebCore::MockRealtimeVideoSource::drawBoxes):

  • rendering/RenderLayerBacking.cpp:
  • rendering/RenderThemeMac.mm:

(WebCore::menuBackgroundColor):
Replace direct SimpleColor usage with SRGBA<uint8_t>.

Tools:

  • TestWebKitAPI/Tests/WebCore/ColorTests.cpp:

(TestWebKitAPI::TEST):
Update to account for makeSimpleColor no longer returning an object that has a
asSRGBA<uint8_t>() function (it is already a SRGBA<uint8_t>).

2:43 PM Changeset in webkit [264135] by Chris Dumez
  • 1 edit
    1 add in trunk/LayoutTests

Unreviewed, add iOS-specific baseline for WPT test after resync in r264117.

  • platform/ios-wk2/imported/w3c/web-platform-tests/html/rendering/widgets/select-wrap-no-spill.optional-expected.txt: Added.
2:40 PM Changeset in webkit [264134] by Simon Fraser
  • 7 edits in trunk/Source/WebCore

Make a logging channel for ScrollSnap and improve its logging
https://bugs.webkit.org/show_bug.cgi?id=214096

Reviewed by Wenson Hsieh.

Pull existing scroll snap logging out of the Scrolling log channel into a new ScrollSnap channel,
add more logging, and make better use of TextStream-based logging.

  • page/scrolling/AxisScrollSnapOffsets.cpp:

(WebCore::operator<<):
(WebCore::updateSnapOffsetsForScrollableArea):
(WebCore::snapOffsetsToString): Deleted.
(WebCore::snapOffsetRangesToString): Deleted.
(WebCore::snapPortOrAreaToString): Deleted.

  • platform/Logging.h:
  • platform/ScrollableArea.cpp:

(WebCore::ScrollableArea::updateScrollSnapState):

  • platform/cocoa/ScrollController.mm:

(WebCore::operator<<):
(WebCore::ScrollController::processWheelEventForScrollSnap):
(WebCore::ScrollController::startScrollSnapTimer):
(WebCore::ScrollController::stopScrollSnapTimer):
(WebCore::ScrollController::scrollSnapTimerFired):
(WebCore::ScrollController::updateScrollSnapState):

  • platform/cocoa/ScrollSnapAnimatorState.h:
  • platform/cocoa/ScrollSnapAnimatorState.mm:

(WebCore::operator<<):

2:33 PM Changeset in webkit [264133] by sbarati@apple.com
  • 3 edits in trunk/Source/JavaScriptCore

Add a fuzzing toggle for LICM
https://bugs.webkit.org/show_bug.cgi?id=214093

Reviewed by Yusuke Suzuki.

We have an AI based safety checker for LICM, to determine if it's safe to
hoist nodes. Historically, we've had bugs here, where we allow unsafe
hoisting. In practice, we've been saved by safety checks also being hoisted
at the same time as the operation they're protecting, so even if we
have bugs in AI-based safeToExecute, things usually just work. Since
we've had security bugs here before, where the safety checks don't get hoisted,
leading to issues, it's helpful if we can fuzz this area. This patch implements
a way to says we won't hoist a node based on some probability, allowing us to play
with what does and doesn't get hoisted.

  • dfg/DFGLICMPhase.cpp:

(JSC::DFG::LICMPhase::run):

  • runtime/OptionsList.h:
2:13 PM Changeset in webkit [264132] by pvollan@apple.com
  • 19 edits
    7 adds in trunk/Source

[Cocoa] Update Launch Services database in the WebContent process from the Network process
https://bugs.webkit.org/show_bug.cgi?id=213794

Reviewed by Brent Fulgham.

Source/WebCore/PAL:

Declare interface for observing and consuming the Launch Services database.

  • pal/spi/cocoa/LaunchServicesSPI.h:

Source/WebKit:

To be able to deny mach lookup access to the Launch Services database mapping service in the WebContent process, the database needs to be
sent from the Networking process to the WebContent process, represented by an xpc object. The Networking process is chosen instead of the UI
process, since WebKit is controlling the sandbox of the Networking process. There is already a direct connection between the Networking
process and the WebContent process, but this is a CoreIPC connection. Since the database is represented by an xpc object, an xpc connection
is requiered to transfer the database. This patch creates a direct xpc connection between the Networking process and the WebContent process,
by creating an xpc endpoint in the Networking process, sending this to the UI process over the bootstrap xpc connection, and then providing
each WebContent process with this endpoint by sending it over the bootstrap xpc connection between the UI process and the WebContent process.
This endpoint has to be sent via the xpc connections to the UI process, since the already existing direct connection between the Networking
process and the WebContent process is a lower level CoreIPC connection, which does not support transferring xpc objects like the xpc endpoint.
When the WebContent process receives the endpoint, it will create an xpc connection from the endpoint, which will create a direct connection
with the Networking process. A message is then sent over the connection to request the database xpc object. When the Networking process
receives this message, it checks the entitlement of the remote end to make sure it is communicating with a WebContent process, and then sends
the database if the entitlement check succeeds. When the WebContent process receives this message, it performs an entitlement check as well,
and if successful, the database object is consumed. Consuming this database object, will make sure UTI to MIME type mapping is working
correctly in the WebContent process.

For the UI process to be able to pick up xpc messages on the bootstrap connection, a new virtual method, handleXPCEvent, is added to the
ProcessLauncher Client class. This way, a ProcessLauncher client will be able to pick up xpc messages from the xpc bootstrap connection.
Previously the event handler for the bootstrap connection in the UI process would handle only xpc error messages. It has now been expanded
to handle normal messages, which are being forwarded to the ProcessLauncher client. In this case the client is the Network process proxy,
which will check the message received, and if it turns out to be a message containing an xpc endpoint, the message will be forwarded to
all Web processes. The ProcessLauncher client can be expanded to handle any xpc message, but right not the Network process proxy only
handles the xpc endpoint message. The handleXPCEvent virtual method return a RefPtr to an XPCEventHandler, which is captured in the event
handler of the bootstrap xpc connection.

No new tests, since there already exist tests for this. UTI to MIME type mapping is being used in WebKit and underlying framework, and many
tests would fail if this mapping was not working.

  • NetworkProcess/NetworkProcess.cpp:

(WebKit::NetworkProcess::initializeConnection):

  • NetworkProcess/cocoa/LaunchServicesDatabaseObserver.h: Added.
  • NetworkProcess/cocoa/LaunchServicesDatabaseObserver.mm: Added.

(WebKit::LaunchServicesDatabaseObserver::singleton):
(WebKit::LaunchServicesDatabaseObserver::LaunchServicesDatabaseObserver):
(WebKit::LaunchServicesDatabaseObserver::startObserving):
(WebKit::LaunchServicesDatabaseObserver::~LaunchServicesDatabaseObserver):
(WebKit::LaunchServicesDatabaseObserver::xpcEndpointMessageNameKey const):
(WebKit::LaunchServicesDatabaseObserver::xpcEndpointMessageName const):
(WebKit::LaunchServicesDatabaseObserver::xpcEndpointNameKey const):
(WebKit::LaunchServicesDatabaseObserver::handleEvent):

  • Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb:
  • Scripts/process-entitlements.sh:
  • Shared/Cocoa/LaunchServicesDatabaseXPCConstants.h: Added.
  • Shared/EntryPointUtilities/Cocoa/XPCService/XPCServiceMain.mm:
  • SourcesCocoa.txt:
  • UIProcess/Cocoa/WebProcessPoolCocoa.mm:

(WebKit::WebProcessPool::xpcEndpointMessage const):
(WebKit::WebProcessPool::sendNetworkProcessXPCEndpointToWebProcess):

  • UIProcess/Cocoa/XPCEventHandler.h: Added.

(WebKit::XPCEventHandler::~XPCEventHandler):

  • UIProcess/Launcher/ProcessLauncher.h:

(WebKit::ProcessLauncher::Client::xpcEventHandler const):

  • UIProcess/Launcher/mac/ProcessLauncherMac.mm:

(WebKit::ProcessLauncher::launchProcess):

  • UIProcess/Network/NetworkProcessProxy.h:
  • UIProcess/Network/NetworkProcessProxyCocoa.mm: Added.

(WebKit::NetworkProcessProxy::xpcEventHandler const):
(WebKit::NetworkProcessProxy::XPCEventHandler::handleXPCEvent const):
(WebKit::NetworkProcessProxy::XPCEventHandler::XPCEventHandler):
(WebKit::NetworkProcessProxy::XPCEventHandler::~XPCEventHandler):

  • UIProcess/WebProcessPool.h:
  • UIProcess/WebProcessProxy.cpp:

(WebKit::WebProcessProxy::didFinishLaunching):

  • WebKit.xcodeproj/project.pbxproj:
  • WebProcess/WebPage/Cocoa/WebPageCocoa.mm:

(WebKit::WebPage::platformDidReceiveLoadParameters):

  • WebProcess/WebProcess.cpp:

(WebKit::WebProcess::initializeConnection):

  • WebProcess/WebProcess.h:
  • WebProcess/cocoa/LaunchServicesDatabaseManager.h: Added.
  • WebProcess/cocoa/LaunchServicesDatabaseManager.mm: Added.

(WebKit::LaunchServicesDatabaseManager::singleton):
(WebKit::LaunchServicesDatabaseManager::handleEvent):
(WebKit::LaunchServicesDatabaseManager::didConnect):
(WebKit::LaunchServicesDatabaseManager::waitForDatabaseUpdate):

  • WebProcess/cocoa/WebProcessCocoa.mm:

(WebKit::WebProcess::handleXPCEndpointMessages const):
(WebKit::WebProcess::platformInitializeWebProcess):

1:13 PM Changeset in webkit [264131] by Jason_Lawrence
  • 2 edits in trunk/LayoutTests

REGRESSION: (r263222-263223): [ macOS wk2 debug ] accessibility/textarea-selected-text-range.html is flaky failing
https://bugs.webkit.org/show_bug.cgi?id=214078

Unreviewed test gardening.

  • platform/mac-wk2/TestExpectations:
1:09 PM Changeset in webkit [264130] by dino@apple.com
  • 1 edit
    4 adds in trunk/LayoutTests

input button test needs rebaseline for Big Sur
https://bugs.webkit.org/show_bug.cgi?id=214095
rdar://64911045

Unreviewed gardening. This test produces different results on Big Sur.

  • platform/mac-bigsur/fast/forms/input-button-sizes-expected.txt: Added.
12:54 PM Changeset in webkit [264129] by ggaren@apple.com
  • 3 edits in trunk/LayoutTests

REGRESSION: (r263222-263223): [ macOS wk2 debug ] accessibility/textarea-selected-text-range.html is flaky failing
https://bugs.webkit.org/show_bug.cgi?id=214078

Reviewed by Darin Adler.

Make this test deterministic by waiting for the correct result.

  • accessibility/textarea-selected-text-range-expected.txt:
  • accessibility/textarea-selected-text-range.html:
12:42 PM Changeset in webkit [264128] by pvollan@apple.com
  • 6 edits
    5 adds in trunk

[Cocoa] Make it possible to establish direct XPC connections between WebKit processes
https://bugs.webkit.org/show_bug.cgi?id=214079

Reviewed by Brent Fulgham.

Source/WebCore:

Add abstract classes XPCEndpoint and XPCEndpointClient to handle the creation of direct xpc connections between WebKit processes.
In order to create a direct xpc connection between two processes, these two classes can be subclassed, and the xpc endpoint created
by the XPCEndpoint object, can be sent via the UI process over the bootstrap xpc connection. The UI process can then forward this
endpoint to another WebKit process by sending it over the bootstrap xpc connection. The receiving process can then initialize an
XPCEndpointClient object with this endpoint, and a new direct connection will then be available, over which the two processes can
communicate.

API test: WebKit.XPCEndpoint

  • WebCore.xcodeproj/project.pbxproj:
  • platform/cocoa/XPCEndpoint.h: Added.
  • platform/cocoa/XPCEndpoint.mm: Added.

(WebCore::XPCEndpoint::XPCEndpoint):
(WebCore::XPCEndpoint::sendEndpointToConnection):
(WebCore::XPCEndpoint::endpoint const):

  • platform/cocoa/XPCEndpointClient.h: Added.

(WebCore::XPCEndpointClient::~XPCEndpointClient):

  • platform/cocoa/XPCEndpointClient.mm: Added.

(WebCore::XPCEndpointClient::setEndpoint):
(WebCore::XPCEndpointClient::connection):

Source/WTF:

Declare function to create a xpc endpoint, as well as a function to create a connection from an endpoint.

  • wtf/spi/darwin/XPCSPI.h:

Tools:

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/WebKit/XPCEndpoint.mm: Added.

(TEST):

12:34 PM Changeset in webkit [264127] by aakash_jain@apple.com
  • 3 edits in trunk/Tools

[ews] Limit layout tests failures to display in the status-bubble tooltip and buildbot summary
https://bugs.webkit.org/show_bug.cgi?id=214085

Reviewed by Alexey Proskuryakov.

  • BuildSlaveSupport/ews-build/steps.py: Limit NUM_FAILURES_TO_DISPLAY to 10.

(AnalyzeLayoutTestsResults.report_failure):
(AnalyzeLayoutTestsResults.report_pre_existing_failures):

  • BuildSlaveSupport/ews-build/steps_unittest.py:

(TestAnalyzeLayoutTestsResults.test_clean_tree_has_some_failures): Updated as per new behavior.
(TestAnalyzeLayoutTestsResults.test_failure_on_clean_tree): Updated to also test for build_summary.
(TestAnalyzeLayoutTestsResults.test_flaky_and_inconsistent_failures_with_clean_tree_failures): Ditto.
(TestAnalyzeLayoutTestsResults.test_mildly_flaky_patch_with_some_tree_redness_and_flakiness): Ditto.
(TestAnalyzeLayoutTestsResults.test_flaky_failures_in_first_run): Added unit-test.
(TestAnalyzeLayoutTestsResults.test_clean_tree_has_lot_of_failures_and_no_new_failure): Added unit-test.
(TestAnalyzeLayoutTestsResults.test_patch_introduces_lot_of_failures): Added unit-test.

12:29 PM Changeset in webkit [264126] by ggaren@apple.com
  • 2 edits in trunk/Source/WTF

dyld: Symbol not found: ZN3WTF19initializeThreadingEv - webkit MacOSX
https://bugs.webkit.org/show_bug.cgi?id=214034

Reviewed by Mark Lam.

  • wtf/Threading.cpp:

(WTF::initializeThreading): Export the old symbol name for compatibility.

12:08 PM Changeset in webkit [264125] by Truitt Savell
  • 2 edits in trunk/LayoutTests

Regression(r261756): webanimations/accelerated-animation-single-keyframe.html is consistently timing out on windows
https://bugs.webkit.org/show_bug.cgi?id=214088

Unreviewed test gardening.

  • platform/win/TestExpectations:
11:51 AM Changeset in webkit [264124] by chris.reid@sony.com
  • 2 edits in trunk/Source/WebInspectorUI

Heap Snapshot Object Graph view doesn't get populated in some cases when inspecting a JSContext
https://bugs.webkit.org/show_bug.cgi?id=214054

Reviewed by Devin Rousso.

When JSContexts are created with a custom globalObjectClass, that object is an
instance of CallbackGlobalObject and not GlobalObject so the view doesn't get populated.
Add instances of CallbackGlobalObject to the Object Graph view as top level nodes.

  • UserInterface/Views/HeapSnapshotDataGridTree.js:
11:45 AM Changeset in webkit [264123] by Jason_Lawrence
  • 2 edits in trunk/LayoutTests

REGRESSION: (r263222-263223): [ macOS wk2 debug ] accessibility/textarea-selected-text-range.html is flaky failing
https://bugs.webkit.org/show_bug.cgi?id=214078

Unreviewed test gardening.

  • platform/mac-wk2/TestExpectations:
11:42 AM Changeset in webkit [264122] by Brent Fulgham
  • 2 edits in trunk/Source/WebKit

[macOS] Silence spam reports about deprecated logging system
https://bugs.webkit.org/show_bug.cgi?id=214090
<rdar://problem/63943836>

Reviewed by Per Arne Vollan.

Change the default 'block' behavior for 'com.apple.system.logger' to
block "with no-report" so that we don't spend time generating backtraces
when non-WebKit code attempts to use this deprecated logging system.

  • WebProcess/com.apple.WebProcess.sb.in:
11:39 AM Changeset in webkit [264121] by stephan.szabo@sony.com
  • 2 edits in trunk/Source/WebCore

[PlayStation] Build fix after r264050
https://bugs.webkit.org/show_bug.cgi?id=214091

Unreviewed build fix

No new tests, only build fix.

  • platform/playstation/ScrollbarThemePlayStation.cpp:
11:30 AM Changeset in webkit [264120] by commit-queue@webkit.org
  • 4 edits in trunk

Text manipulation should ignore white spaces between nodes
https://bugs.webkit.org/show_bug.cgi?id=213907

Patch by Sihui Liu <sihui_liu@appe.com> on 2020-07-08
Source/WebCore:

Reviewed by Wenson Hsieh.

Text returned by TextIterator contains white spaces (including tabs and line breaks) that do not belong to
content of nodes. Those spaces are emitted based on style of nodes. For example, line breaks can be emitted
before and after block-level element. These spaces should not be extracted as part of the content, because
they could change based on the style of nodes or range of TextIterator, and manipulation fails if content is
changed. We want to make sure TextManipulationController monitors the real content of nodes.

r262778 tried solving this issue by excluding text with empty node from TextIterator's result. That worked with
line break, but not space and tab. See radar and new test. To solve this, now we exclude text with zero-length
range.

This patch does not change the behavior of line breaks, which is covered by:
TextManipulation.StartTextManipulationExtractsVisibleLineBreaksInTextAsExcludedTokens
TextManipulation.CompleteTextManipulationCanMergeContentAndPreserveLineBreaks
TextManipulation.CompleteTextManipulationReplaceTwoSimpleParagraphs

New test: TextManipulation.CompleteTextManipulationIgnoreWhiteSpacesBetweenParagraphs
Modified existing tests: TextManipulation.StartTextManipulationExtractsValuesByNode

  • editing/TextManipulationController.cpp:

(WebCore::ParagraphContentIterator::ParagraphContentIterator):
(WebCore::ParagraphContentIterator::shouldAdvanceIteratorPastCurrentNode const):
(WebCore::ParagraphContentIterator::advanceIteratorNodeAndUpdateText):

Tools:

Reviewed by Wenson Hsieh.

  • TestWebKitAPI/Tests/WebKitCocoa/TextManipulation.mm:

(TestWebKitAPI::TEST):

11:15 AM Changeset in webkit [264119] by commit-queue@webkit.org
  • 4 edits in trunk/Source/WebKit

Network process crashes in WebKit::WebIDBServer::removeConnection
https://bugs.webkit.org/show_bug.cgi?id=214071
<rdar://problem/64853929>

Patch by Sihui Liu <sihui_liu@appe.com> on 2020-07-08
Reviewed by Chris Dumez.

In network process, WebIDBServer may be removed and destroyed before web process using the same session
disconnects. Then a new WebIDBServer can be added before disconnection of web process and the new WebIDBServer
does not have information about the web process connection.

To solve this issue, now we only remove WebIDBServer when session is destroyed and there is no web process
connection of that session.

  • NetworkProcess/IndexedDB/WebIDBServer.h:
  • NetworkProcess/NetworkProcess.cpp:

(WebKit::NetworkProcess::createNetworkConnectionToWebProcess):
(WebKit::NetworkProcess::destroySession):
(WebKit::NetworkProcess::removeWebIDBServerIfPossible):
(WebKit::NetworkProcess::connectionToWebProcessClosed):

  • NetworkProcess/NetworkProcess.h:
11:03 AM Changeset in webkit [264118] by Darin Adler
  • 9 edits in trunk/Source/WebCore

Remove use of live ranges from AXObject.h
https://bugs.webkit.org/show_bug.cgi?id=214053

Reviewed by Sam Weinig.

  • accessibility/AXObjectCache.cpp:

(WebCore::AXObjectCache::traverseToOffsetInRange): Take SimpleRange.
(WebCore::AXObjectCache::lengthForRange): Take Optional<SimpleRange>.
(WebCore::AXObjectCache::rangeForNodeContents): Return SimpleRange, take reference
rather than pointer.
(WebCore::characterOffsetsInOrder): Use SimpleRange.
(WebCore::resetNodeAndOffsetForReplacedNode): Take a reference to the node rather than
a pointer.
(WebCore::boundaryPoint): Added. Could be used to replace calls to
setRangeStartOrEndWithCharacterOffset.
(WebCore::setRangeStartOrEndWithCharacterOffset): Take SimpleRange. Also use the
new boundaryPoint function above.
(WebCore::AXObjectCache::rangeForUnorderedCharacterOffsets): Return Optional<SimpleRange>.
(WebCore::AXObjectCache::startOrEndCharacterOffsetForRange): Take SimpleRange.
(WebCore::AXObjectCache::startOrEndTextMarkerDataForRange): Take SimpleRange.
(WebCore::AXObjectCache::characterOffsetForNodeAndOffset): Use SimpleRange.
(WebCore::AXObjectCache::textMarkerDataForNextCharacterOffset): Ditto.
(WebCore::AXObjectCache::textMarkerDataForPreviousCharacterOffset): Ditto.
(WebCore::AXObjectCache::visiblePositionFromCharacterOffset):
(WebCore::AXObjectCache::characterOffsetFromVisiblePosition):
(WebCore::AXObjectCache::leftWordRange): Return Optional<SimpleRange>.
(WebCore::AXObjectCache::rightWordRange): Ditto.
(WebCore::AXObjectCache::nextBoundary): Ditto.
(WebCore::AXObjectCache::previousBoundary): Ditto.
(WebCore::AXObjectCache::startCharacterOffsetOfParagraph): Use SimpleRange.
(WebCore::AXObjectCache::endCharacterOffsetOfParagraph): Ditto.
(WebCore::AXObjectCache::paragraphForCharacterOffset): Ditto.
(WebCore::AXObjectCache::sentenceForCharacterOffset): Ditto.
(WebCore::AXObjectCache::localCaretRectForCharacterOffset): Ditto.
(WebCore::AXObjectCache::characterOffsetForPoint): Ditto.
(WebCore::AXObjectCache::characterOffsetForIndex): Ditto.
(WebCore::AXObjectCache::indexForCharacterOffset): Ditto.

  • accessibility/AXObjectCache.h: Remove uses of Range and include of "Range.h".
  • accessibility/AccessibilityObject.cpp:

(WebCore::AccessibilityObject::elementRange const): Call createLiveRange.
(WebCore::AccessibilityObject::rangeForPlainTextRange const): Ditto.

  • accessibility/AccessibilityRenderObject.cpp:

(WebCore::AccessibilityRenderObject::boundsForRange const): Pass SimpleRange.

  • accessibility/ios/WebAccessibilityObjectWrapperIOS.mm:

(+[WebAccessibilityTextMarker startOrEndTextMarkerForRange:isStart:cache:]): Pass SimpleRange.
(-[WebAccessibilityObjectWrapper positionForTextMarker:]): Call createLiveRange.
(-[WebAccessibilityObjectWrapper textMarkerRangeForSelection]): Pass SimpleRange.
(-[WebAccessibilityObjectWrapper textMarkerForPosition:]): Ditto.
(-[WebAccessibilityObjectWrapper rangeForTextMarkers:]): Call createLiveRange.
(-[WebAccessibilityObjectWrapper lengthForTextMarkers:]): Pass SimpleRange.

  • accessibility/mac/WebAccessibilityObjectWrapperMac.mm:

(startOrEndTextmarkerForRange):
(-[WebAccessibilityObjectWrapper rangeForTextMarkerRange:]): Pass SimpleRange.
(-[WebAccessibilityObjectWrapper _indexForTextMarker:]): Call createLiveRange.
(-[WebAccessibilityObjectWrapper textMarkerRangeAtTextMarker:forUnit:]): Ditto.
(-[WebAccessibilityObjectWrapper accessibilityAttributeValue:forParameter:]): Ditto.

  • dom/BoundaryPoint.h: Added makeBoundaryPointBefore/AfterNode.
  • dom/SimpleRange.cpp:

(WebCore::makeBoundaryPointBeforeNode): Added.
(WebCore::makeBoundaryPointAfterNode): Ditto.

10:57 AM Changeset in webkit [264117] by Chris Dumez
  • 123 edits
    32 copies
    9 moves
    310 adds
    107 deletes in trunk/LayoutTests

Resync all remaining web-platform-tests/html tests from upstream
https://bugs.webkit.org/show_bug.cgi?id=214057

Reviewed by Sam Weinig.

LayoutTests/imported/w3c:

Resync all remaining web-platform-tests/html tests from upstream cef93b58e7cf31f1d47ccb.

  • resources/resource-files.json:
  • web-platform-tests/html/*: Updated.

LayoutTests:

10:56 AM Changeset in webkit [264116] by Darin Adler
  • 2 edits in trunk/Source/ThirdParty/ANGLE

Fix adjust-angle-include-paths.sh error seen building ANGLE library
https://bugs.webkit.org/show_bug.cgi?id=214059

Reviewed by Alexey Proskuryakov.

  • ANGLE.xcodeproj/project.pbxproj: Remove the build step that adjusts paths.

Dean Jackson told me we don't need it for the static library target.

10:50 AM Changeset in webkit [264115] by Alan Coon
  • 8 edits in branches/safari-610.1.21.1-branch/Source

Versioning.

WebKit-610.1.21.1.2

10:45 AM Changeset in webkit [264114] by weinig@apple.com
  • 7 edits
    1 delete in trunk/LayoutTests

Remove LayoutTests/fast/forms/datetime now that <input type="datetime"> code has been removed
https://bugs.webkit.org/show_bug.cgi?id=214064

Reviewed by Dan Bernstein.

  • fast/forms/datetime: Removed.
  • platform/gtk/TestExpectations:
  • platform/ios-wk1/TestExpectations:
  • platform/ios/TestExpectations:
  • platform/mac/TestExpectations:
  • platform/win/TestExpectations:
  • platform/wincairo/TestExpectations:

Stop skipping the removed tests.

10:43 AM Changeset in webkit [264113] by aestes@apple.com
  • 23 edits
    2 adds in trunk

REGRESSION (r207558): [Mac] Context clicks on links sometimes result in navigations
https://bugs.webkit.org/show_bug.cgi?id=213793
<rdar://problem/64294015>

Reviewed by Tim Horton.

Source/WebKit:

WebPageProxy::showContextMenu was written with the assumption that WebContextMenuProxy::show
would present a context menu and spin a nested run loop, blocking until the menu dismisses.
Once WebContextMenuProxy::show returns, showContextMenu would send the
WebPage::ContextMenuHidden message, telling the WebContent process that it's OK to resume
processing mouse events.

This assumption was invalidated in r207558 (and again in several subsequent changes), which
added asynchronous APIs to WKPageContextMenuClient. If the context menu client provides
context menu items asynchronously, WebContextMenuProxy::show would return -- and the
WebContent process would resume processing mouse events -- before the context menu was even
presented. Since context menu presentation is triggered by a mouse press event, it's
possible that the corresponding mouse release event would be delivered after
getContextMenuFromProposedMenuAsync was dispatched but before the client responded with menu
items to present. If this happened, since mouse event processing was not disabled, the
WebContent process would dispatch a DOM click event to the page, possibly triggering a
navigation.

Fix this by teaching WebPageProxy to defer sending WebPage::ContextMenuHidden until the
context menu has been dismissed, even in cases where the context menu client provides menu
items asynchronously. Also, take the opportunity to modernize WebContextMenuProxy and its
subclasses by, e.g., moving duplicated subclass code into the base class, using the client
pattern, and using WeakPtrs instead of raw pointers/references.

New API tests: ContextMenuMouseEvents.*

  • UIProcess/API/APIContextMenuClient.h:

(API::ContextMenuClient::showContextMenu):
(API::ContextMenuClient::canShowContextMenu const):

  • UIProcess/API/C/WKPage.cpp:

(WKPageSetPageContextMenuClient): Added canShowContextMenu to determine whether the client
can show a context menu without actually showing it.

  • UIProcess/API/wpe/PageClientImpl.cpp:

(WebKit::PageClientImpl::createContextMenuProxy): Passed page to
WebContextMenuProxyWPE::create.

  • UIProcess/WebContextMenuListenerProxy.cpp:

(WebKit::WebContextMenuListenerProxy::WebContextMenuListenerProxy):
(WebKit::WebContextMenuListenerProxy::useContextMenuItems):
(WebKit::WebContextMenuListenerProxy::invalidate): Deleted. Not needed now that m_client is
a WeakPtr.

  • UIProcess/WebContextMenuListenerProxy.h:

(WebKit::WebContextMenuListenerProxy::create): Rather than store a raw pointer to a
WebContextMenuProxy, store a WeakPtr to a WebContextMenuListenerProxy::Client (which
WebContextMenuProxy implements).

  • UIProcess/WebContextMenuProxy.cpp:

(WebKit::WebContextMenuProxy::WebContextMenuProxy): Stored a WeakPtr to a WebPageProxy
rather than storing a raw pointer to the same in each subclass.
(WebKit::WebContextMenuProxy::proposedItems const): Added a virtual function to create
proposed WebContextMenuItems from m_context's menu items. WebContextMenuProxyGtk overrides
this to do something slightly different.
(WebKit::WebContextMenuProxy::show): Added a base class implementation that creates a
WebContextMenuListenerProxy and calls ContextMenuClient::getContextMenuFromProposedMenu.
(WebKit::WebContextMenuProxy::useContextMenuItems): Added a base class implementation that
performs the work previously done in WebPageProxy::showContextMenu. Calls
showContextMenuWithItems, which now always synchronously presents the menu.

  • UIProcess/WebContextMenuProxy.h: Inherited from WebContextMenuListenerProxy::Client.

(WebKit::WebContextMenuProxy::page const): Added for use by WKSharingServicePickerDelegate.

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::showContextMenu): Moved code that assumes synchronous menu
presentation to WebContextMenuProxy::useContextMenuItems.

  • UIProcess/gtk/WebContextMenuProxyGtk.cpp:

(WebKit::WebContextMenuProxyGtk::proposedItems const): Implemented GTK's special version
that excludes ContextMenuItemTagShareMenu.
(WebKit::WebContextMenuProxyGtk::show): Deleted. WebContextMenuProxy::show handles this now.
(WebKit::WebContextMenuProxyGtk::append):
(WebKit::WebContextMenuProxyGtk::showContextMenuWithItems):
(WebKit::WebContextMenuProxyGtk::WebContextMenuProxyGtk):

  • UIProcess/gtk/WebContextMenuProxyGtk.h: Moved m_page to WebContextMenuProxy.
  • UIProcess/mac/WKSharingServicePickerDelegate.mm:

(-[WKSharingServicePickerDelegate sharingService:didShareItems:]): Changed now that
WebContextMenuProxy::page returns a pointer.

  • UIProcess/mac/WebContextMenuProxyMac.h:

(WebKit::WebContextMenuProxyMac::page const): Deleted.

  • UIProcess/mac/WebContextMenuProxyMac.mm:

(WebKit::WebContextMenuProxyMac::WebContextMenuProxyMac):
(WebKit::WebContextMenuProxyMac::~WebContextMenuProxyMac): No need to invalidate
m_contextMenuListener now that it stores a WeakPtr to its WebContextMenuProxy.
(WebKit::WebContextMenuProxyMac::contextMenuItemSelected):
(WebKit::WebContextMenuProxyMac::showServicesMenu):
(WebKit::WebContextMenuProxyMac::show):
(WebKit::WebContextMenuProxyMac::showContextMenuWithItems): Overrode to handle service menus.
(WebKit::WebContextMenuProxyMac::useContextMenuItems): Overrode to get the standard Mac menu
items and dispatch ContextMenuClient::menuFromProposedMenu before showing the menu.
(WebKit::WebContextMenuProxyMac::showContextMenu): Deleted. WebContextMenuProxy::show now
handles this.

  • UIProcess/win/WebContextMenuProxyWin.cpp:

(WebKit::WebContextMenuProxyWin::showContextMenuWithItems):
(WebKit::WebContextMenuProxyWin::WebContextMenuProxyWin):
(WebKit::WebContextMenuProxyWin::show): Deleted. WebContextMenuProxy::show now handles this.

  • UIProcess/win/WebContextMenuProxyWin.h:
  • UIProcess/wpe/WebContextMenuProxyWPE.h: Passed page to the WebContextMenuProxy ctor.

Tools:

Added API tests.

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/TestWebKitAPI.xcodeproj/xcshareddata/xcschemes/TestWebKitAPI.xcscheme:
  • TestWebKitAPI/Tests/WebKit/mac/ContextMenuMouseEvents.mm: Renamed from Tools/TestWebKitAPI/Tests/WebKit/mac/ContextMenuControlClick.mm.

(TestWebKitAPI::runTest):
(TestWebKitAPI::TEST):

  • TestWebKitAPI/cocoa/TestWKWebView.h:
  • TestWebKitAPI/cocoa/TestWKWebView.mm:

(-[TestWKWebViewHostWindow _mouseDownAtPoint:simulatePressure:clickCount:modifierFlags:mouseEventType:]):
(-[TestWKWebViewHostWindow _mouseUpAtPoint:clickCount:modifierFlags:eventType:]):
(-[TestWKWebView mouseDownAtPoint:simulatePressure:]):
(-[TestWKWebView mouseDownAtPoint:simulatePressure:withFlags:eventType:]):
(-[TestWKWebView mouseUpAtPoint:]):
(-[TestWKWebView mouseUpAtPoint:withFlags:eventType:]):
(-[TestWKWebView sendClicksAtPoint:numberOfClicks:]):
(-[TestWKWebViewHostWindow _mouseDownAtPoint:simulatePressure:clickCount:modifierFlags:]): Deleted.
(-[TestWKWebViewHostWindow _mouseUpAtPoint:clickCount:modifierFlags:]): Deleted.
(-[TestWKWebView mouseDownAtPoint:simulatePressure:withFlags:]): Deleted.
(-[TestWKWebView mouseUpAtPoint:withFlags:]): Deleted.

10:08 AM Changeset in webkit [264112] by Wenson Hsieh
  • 5 edits
    2 adds in trunk

autocapitalize="words" capitalizes every word's second character
https://bugs.webkit.org/show_bug.cgi?id=148504
<rdar://problem/57814304>

Reviewed by Tim Horton.

Source/WebKit:

This bug resurfaced in iOS 13 due to timing changes that caused a task added to UIKeyboardTaskQueue to no longer
get dequeued after the next editor state update is received in the UI process; as a result, UIKit asks us for
the context before the caret selection (i.e. characterBeforeSelection) before we have a chance to update it,
which means that UIKeyboardImpl's autoshift state will always be off by one character whie typing.

Note that solely deferring this update until after the next editor state update is received is insufficient to
fix this bug, since the keyboard's shift state will still be incorrect when typing characters very quickly (or
if the web process is unresponsive).

Instead, completely address this bug by adding a mechanism for WKContentView to cache the last character in the
string that is currently being inserted using -insertText:, and return it in -_characterBeforeCaretSelection
until the next editor state update comes in with the real character before the selection. This way, we're able
to respond to UIKit's requests immediately with a (reasonable) guess of what the character before the selection
should be, and then follow it up with the actual up-to-date value from the web process during the next editor
state update (invalidating the stale shift state if necessary). This cached last character should only be
incorrect in the case where the page uses script to influence what was typed, or the typed character was never
inserted at all (e.g. typing a newline character in a single line input element).

Test: fast/forms/ios/autocapitalize-words.html

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

(-[WKContentView cleanUpInteraction]):
(-[WKContentView _characterBeforeCaretSelection]):

Use _lastInsertedCharacterToOverrideCharacterBeforeSelection, if it is set.

(-[WKContentView _characterInRelationToCaretSelection:]):
(-[WKContentView insertText:]):

Update _lastInsertedCharacterToOverrideCharacterBeforeSelection and ensure an editor state update immediately
after text is inserted, if we're currently editing an element with autocapitalize="words". The editor state
update could be unnecessarily expensive, so we don't want to do this unconditionally. Also,
autocapitalize="words" is special in the sense that it is the only autocapitalization type where the platform
(UIKit) will ask for the last character immediately and use it to unshift the keyboard. Even in the case of
autocapitalize="sentences", UIKit makes the decision to unshift using information from kbd instead.

(-[WKContentView _elementDidBlur]):
(-[WKContentView _selectionChanged]):

Clear out _lastInsertedCharacterToOverrideCharacterBeforeSelection when the next editor state update is
received, and invalidate the current keyboard shift state by calling -clearShiftState. This SPI method
automatically schedules a shift state update, as well.

Note the extra _usingGestureForSelection check here, which prevents the keyboard from autoshifting and
unshifting while changing the selection via loupe gesture.

LayoutTests:

Add a new layout test to verify that the bug does not occur.

  • fast/forms/ios/autocapitalize-words-expected.txt: Added.
  • fast/forms/ios/autocapitalize-words.html: Added.
10:03 AM Changeset in webkit [264111] by Alan Coon
  • 1 copy in tags/Safari-610.1.21.0.2

Tag Safari-610.1.21.0.2.

10:01 AM Changeset in webkit [264110] by Alan Coon
  • 5 edits in branches/safari-610.1.21.0-branch/Source/WebCore

Cherry-pick r264058. rdar://problem/65195012

[Apple Pay] Fix the build on Catalina internal SDKs
https://bugs.webkit.org/show_bug.cgi?id=214066

Unreviewed build fix for the 10.15.0 Internal SDK.

Source/WebCore:

  • Modules/applepay/ApplePaySetupFeature.mm: (WebCore::ApplePaySetupFeature::supportsInstallments const):

Source/WebCore/PAL:

  • pal/spi/cocoa/PassKitInstallmentsSPI.h:
  • pal/spi/cocoa/PassKitSPI.h:

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

9:55 AM Changeset in webkit [264109] by Alan Coon
  • 8 edits in branches/safari-610.1.21.0-branch/Source

Versioning.

WebKit-610.1.21.0.2

9:47 AM Changeset in webkit [264108] by jer.noble@apple.com
  • 3 edits in trunk/LayoutTests

Unreviewed test gardening; "rebaseline" the video-orientation-canvas.html test to center the expected red color
results on observed output.

  • media/video-orientation-canvas-expected.txt:
  • media/video-orientation-canvas.html:
9:45 AM Changeset in webkit [264107] by Alan Bujtas
  • 4 edits
    2 adds in trunk

[LFC][IFC] Do not use the initial strut baseline values when the text content is inside an inline container
https://bugs.webkit.org/show_bug.cgi?id=214069

Reviewed by Antti Koivisto.

Source/WebCore:

Test: fast/layoutformattingcontext/line-heigt-when-text-is-inside-inline-container.html

  • layout/inlineformatting/InlineLineBuilder.cpp:

(WebCore::Layout::LineBuilder::close):
(WebCore::Layout::LineBuilder::adjustBaselineAndLineHeight):

  • layout/inlineformatting/InlineLineBuilder.h:

LayoutTests:

  • fast/layoutformattingcontext/line-heigt-when-text-is-inside-inline-container-expected.html: Added.
  • fast/layoutformattingcontext/line-heigt-when-text-is-inside-inline-container.html: Added.
9:43 AM Changeset in webkit [264106] by jer.noble@apple.com
  • 3 edits in trunk/Tools

Flaky API Test: TestWebKitAPI.SleepDisabler.NavigateBack
https://bugs.webkit.org/show_bug.cgi?id=213513
<rdar://problem/64642715>

Reviewed by Eric Carlson.

Make the test less dependent on the specific behavior of restoring the history state by adding code within
the source HTML itself to explicitly play the contained video after state restoration.

  • TestWebKitAPI/Tests/WebKit/SleepDisabler.mm:

(TEST_F):

  • TestWebKitAPI/Tests/WebKitLegacy/ios/video-with-audio.html:
9:42 AM Changeset in webkit [264105] by sbarati@apple.com
  • 19 edits in trunk/Source/JavaScriptCore

Add a way to return early from detected infinite loops to aid the fuzzer
https://bugs.webkit.org/show_bug.cgi?id=214067

Reviewed by Yusuke Suzuki.

It's useful for the fuzzer to not get stuck in infinite loops so its
test cases can make forward progress trying to find bugs. This patch
adds a new mechanism where we can early return if we've exceeded a total
execution count for a static loop in bytecode. Note: this is not on a
per-frame basis, but it's a way to implement this in a non-invasive way
which is also practical for the fuzzer to use.

  • b3/air/AirAllocateRegistersAndStackAndGenerateCode.cpp:

(JSC::B3::Air::GenerateAndAllocateRegisters::generate):

  • b3/air/AirCode.cpp:

(JSC::B3::Air::Code::emitEpilogue):

  • b3/air/AirCode.h:
  • b3/air/AirGenerate.cpp:

(JSC::B3::Air::generateWithAlreadyAllocatedRegisters):

  • bytecode/BytecodeList.rb:
  • bytecode/CodeBlock.cpp:

(JSC::CodeBlock::finishCreation):
(JSC::CodeBlock::~CodeBlock):

  • dfg/DFGCapabilities.cpp:

(JSC::DFG::capabilityLevel):

  • dfg/DFGSpeculativeJIT64.cpp:

(JSC::DFG::SpeculativeJIT::compile):

  • ftl/FTLLowerDFGToB3.cpp:

(JSC::FTL::DFG::LowerDFGToB3::compileNode):
(JSC::FTL::DFG::LowerDFGToB3::compileLoopHint):

  • jit/JITOpcodes.cpp:

(JSC::JIT::emit_op_loop_hint):

  • llint/LLIntSlowPaths.cpp:

(JSC::LLInt::LLINT_SLOW_PATH_DECL):

  • llint/LowLevelInterpreter32_64.asm:
  • llint/LowLevelInterpreter64.asm:
  • offlineasm/mips.rb:
  • runtime/OptionsList.h:
  • runtime/VM.cpp:

(JSC::VM::addLoopHintExecutionCounter):
(JSC::VM::getLoopHintExecutionCounter):
(JSC::VM::removeLoopHintExecutionCounter):

  • runtime/VM.h:
9:42 AM Changeset in webkit [264104] by Chris Dumez
  • 2 edits in trunk/LayoutTests

Skip a couple of WPT webaudio tests instead of marking them as crashing.

This avoids wasting resources on the bots since those tests are consistently crashing.

9:41 AM Changeset in webkit [264103] by Alan Bujtas
  • 3 edits
    2 adds in trunk

[LFC][TFC] Table width is computed as if box-sizing was border-box
https://bugs.webkit.org/show_bug.cgi?id=214070

Reviewed by Antti Koivisto.

Source/WebCore:

Apparently the width property of the <table> works as if box-sizing were set to border-box (and <div style="display: table" does not).

Test: fast/layoutformattingcontext/table-with-padding-and-border-simple.html

  • layout/layouttree/LayoutTreeBuilder.cpp:

(WebCore::Layout::TreeBuilder::buildTableStructure):

LayoutTests:

  • fast/layoutformattingcontext/table-with-padding-and-border-simple-expected.html: Added.
  • fast/layoutformattingcontext/table-with-padding-and-border-simple.html: Added.
9:22 AM Changeset in webkit [264102] by pvollan@apple.com
  • 2 edits in trunk/LayoutTests

[Win] The layout test webanimations/accelerated-animation-single-keyframe.html is timing out
https://bugs.webkit.org/show_bug.cgi?id=214081

Unreviewed test gardening.

  • platform/win/TestExpectations:
9:16 AM Changeset in webkit [264101] by graouts@webkit.org
  • 11 edits
    2 adds in trunk

[iOS] Sharing an <img> element with a base64-encoded URL shares the URL as raw text instead of an image
https://bugs.webkit.org/show_bug.cgi?id=214042
<rdar://problem/56669102>

Reviewed by Wenson Hsieh.

Source/WebCore:

  • en.lproj/Localizable.strings:

Source/WebKit:

In the case where the <img> element that was the target when the share sheet was brought has its data encoded
as a base64 URL, we need to share the UIImage that was created as its snapshot as a file rather than the URL
to avoid a base64 string to be shared instead of the image data.

To support testing of this, we add a new optional WKShareSheet delegate to indicate that the share sheet will
show and the provided activity items, which we forward to a new optional WKUIDelegatePrivate delegate method.
API tests can thus be written to check the data provided to the share sheet.

  • UIProcess/API/Cocoa/WKUIDelegatePrivate.h:
  • UIProcess/Cocoa/WKShareSheet.h:
  • UIProcess/Cocoa/WKShareSheet.mm:

(-[WKShareSheet presentWithShareDataArray:inRect:]):

  • UIProcess/ios/WKActionSheetAssistant.h:
  • UIProcess/ios/WKActionSheetAssistant.mm:

(-[WKActionSheetAssistant handleElementActionWithType:element:needsInteraction:]):

  • UIProcess/ios/WKContentViewInteraction.mm:

(-[WKContentView shareSheet:willShowActivityItems:]):
(-[WKContentView actionSheetAssistant:shareElementWithURL:rect:]):
(-[WKContentView actionSheetAssistant:shareElementWithImage:rect:]):

Tools:

Add a test that loads a page with an <img> with its data encoded as a base64 URL, brings up the share sheet for it
and checks a single NSURL object is made available in the activity items.

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/ios/ShareSheetTests.mm: Added.

(-[ShareSheetObserver _webView:actionsForElement:defaultActions:]):
(-[ShareSheetObserver _webView:willShareActivityItems:]):
(TestWebKitAPI::showShareSheet):
(TestWebKitAPI::TEST):

  • TestWebKitAPI/Tests/ios/img-with-base64-url.html: Added.
8:48 AM Changeset in webkit [264100] by Jason_Lawrence
  • 3 edits in trunk/LayoutTests

REGRESSION: [ Mac wk2 Release and iOS wk2 Release ] webrtc/libwebrtc/descriptionGetters.html is flaky failing.
https://bugs.webkit.org/show_bug.cgi?id=214084

Unreviewed test gardening.

  • platform/ios-wk2/TestExpectations:
  • platform/mac-wk2/TestExpectations:
7:16 AM Changeset in webkit [264099] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.28/Source/WebCore

Merge r262194 - [WPE] REGRESSION(r253675) Crash when using threaded rendering
https://bugs.webkit.org/show_bug.cgi?id=212404

Reviewed by Carlos Garcia Campos.

Check whether the GraphicsContext has a PlatformGraphicsContext before trying to paint with
it. If there's no PlatformGraphicsContext, paint using the GraphicsContext methods instead.

  • platform/graphics/cairo/ImageBufferCairoBackend.cpp:

(WebCore::ImageBufferCairoBackend::draw):
(WebCore::ImageBufferCairoBackend::drawPattern):

5:38 AM Changeset in webkit [264098] by Carlos Garcia Campos
  • 7 edits
    4 adds in releases/WebKitGTK/webkit-2.28

Merge r259137 - Hovering over countries at https://covidinc.io/ shows bizarre rendering artifacts
https://bugs.webkit.org/show_bug.cgi?id=209635
<rdar://problem/60935010>

Reviewed by Said Abou-Hallawa.
Source/WebCore:

RenderSVGResourceClipper::applyClippingToContext() cached an ImageBuffer per RenderObject
when using a image buffer mask. However, the function created and rendered into this image buffer
using repaintRect, which can change between invocations. Painting with different repaintRects
is very common when rendering into page tiles.

The buffer can only be re-used if the inputs used to create the buffer (objectBoundingBox, absoluteTransform)
are the same, so store those and compare them when determining when to use the cached buffer, and
don't use repaintRect when setting up the buffer.

This revealed another problem where renderers with visual overflow could be truncated by
the clipping, tested by imported/mozilla/svg/svg-integration/clipPath-html-03.xhtml, which occurred
because RenderLayer::setupClipPath() used the 'svgReferenceBox' for the clipping bounds, which
is the content box of the renderer excluding overflow. Fix this by using the bounds of the layer,
which includes the bounds of descendants.

Tests: svg/clip-path/clip-path-on-overflowing.html

svg/clip-path/resource-clipper-multiple-repaints.html

  • rendering/RenderLayer.cpp:

(WebCore::RenderLayer::setupClipPath):

  • rendering/svg/RenderSVGResourceClipper.cpp:

(WebCore::RenderSVGResourceClipper::removeAllClientsFromCache):
(WebCore::RenderSVGResourceClipper::applyClippingToContext):
(WebCore::RenderSVGResourceClipper::drawContentIntoMaskImage):
(WebCore::RenderSVGResourceClipper::addRendererToClipper):
(WebCore::RenderSVGResourceClipper::resourceBoundingBox):

  • rendering/svg/RenderSVGResourceClipper.h:

LayoutTests:

Ref test that exercises the code path by painting into a tiled compositing
layer.

  • svg/clip-path/clip-path-on-overflowing-expected.html: Added.
  • svg/clip-path/clip-path-on-overflowing.html: Added.
  • svg/clip-path/mask-nested-clip-path-010-expected.svg:
  • svg/clip-path/mask-nested-clip-path-010.svg: Copied from imported/mozilla/svg/svg-integration/clipPath-html-03.xhtml,

and modified to have a non-zero offset for better testing of the clipping bounds computation.

  • svg/clip-path/resource-clipper-multiple-repaints-expected.html: Added.
  • svg/clip-path/resource-clipper-multiple-repaints.html: Added.
4:26 AM Changeset in webkit [264097] by calvaris@igalia.com
  • 2 edits in trunk/LayoutTests

[EME][GStreamer] web-platform-tests/encrypted-media/clearkey-events-session-closed-event.https.html random crashes
https://bugs.webkit.org/show_bug.cgi?id=210264

Reviewed by Philippe Normand.

  • platform/glib/TestExpectations: Change test expectations.
4:22 AM Changeset in webkit [264096] by commit-queue@webkit.org
  • 2 edits in trunk/Tools

[Flatpak SDK] Pre-start sccache server
https://bugs.webkit.org/show_bug.cgi?id=213973

Patch by Philippe Normand <pnormand@igalia.com> on 2020-07-08
Reviewed by Žan Doberšek.

Pre-start the sccache-dist server when the flatpak sandbox is being invoked for a build.
Usually the first sccache client process would do it but it seems to be racy when a large
number of clients is being started simultaneously.

  • flatpak/flatpakutils.py:

(WebkitFlatpak.run_in_sandbox):

4:19 AM Changeset in webkit [264095] by commit-queue@webkit.org
  • 3 edits in trunk/Source/WebKit

[WPE][Qt] Deprecation warnings
https://bugs.webkit.org/show_bug.cgi?id=214074

Patch by Philippe Normand <pnormand@igalia.com> on 2020-07-08
Reviewed by Carlos Garcia Campos.

  • UIProcess/API/wpe/qt/WPEQtView.cpp:

(WPEQtView::updatePaintNode): Switch to new createTextureFromNativeObject API when building against Qt 5.15.

  • UIProcess/API/wpe/qt/WPEQtViewBackend.cpp:

(WPEQtViewBackend::dispatchWheelEvent): Switch to new WPE axis 2D event API.

4:02 AM Changeset in webkit [264094] by clopez@igalia.com
  • 3 edits in trunk/Tools

[GTK][WPE] install-dependencies should install the gstreamer plugins
https://bugs.webkit.org/show_bug.cgi?id=214045

Reviewed by Adrian Perez de Castro.

When building webkit against system libraries (without flatpak/jhbuild)
its needed to have installed the webkit plugins to play media files.
The install-dependencies script should install them.

gstreamer-plugins-ugly its likely not needed for the majority of the cases,
but it can be required by some ugly media files that require an ugly decoder.
Since we are installing it on the flatpak, let's add it here as well.

  • gtk/install-dependencies:
  • wpe/install-dependencies:
3:53 AM Changeset in webkit [264093] by commit-queue@webkit.org
  • 2 edits in trunk/Tools

[webkitpy] run-minibrowser doesn't handle unicode urls
https://bugs.webkit.org/show_bug.cgi?id=214036

Patch by Philippe Normand <pnormand@igalia.com> on 2020-07-08
Reviewed by Žan Doberšek.

Convert unregistered command-line arguments to utf-8 and append parsed URL. Previously
unrelated arguments (like the platform arg) were passed to the final MiniBrowser app, this
is no longer the case.

  • Scripts/webkitpy/minibrowser/run_webkit_app.py:

(main):

3:41 AM Changeset in webkit [264092] by clopez@igalia.com
  • 4 edits
    5 adds in trunk/Tools

[JHBuild] Add support for using a minimal moduleset
https://bugs.webkit.org/show_bug.cgi?id=213614

Reviewed by Carlos Garcia Campos.

This patch introduces a way of specifying a moduleset other than the default
via the environment variable WEBKIT_JHBUILD_MODULESET and adds a minimal moduleset
that allows building WebKit with it. This minimal moduleset includes the libraries
needed for building WebKit on Ubuntu-18.04, and those libraries are only build if
needed since they include the <pkg-config> entries that tells JHBuild to not build
them if those are already installed system wide. So this minimal moduleset should
work also on newer versions of Ubuntu or even other distributions.

Currently a recipe for newer libsoup than the one shipped by Ubuntu-18.04 is included
since we need this to have support for SameSite cookie support.
The minimal moduleset is shared between WPE and GTK to reduce code duplication.

To use this, you have to export on the build environment:
WEBKIT_JHBUILD=1
WEBKIT_JHBUILD_MODULESET=minimal

  • Scripts/update-webkit-libs-jhbuild:

(getJhbuildIncludedFilePaths):
(jhbuildModulesetNameChanged):
(jhbuildConfigurationChanged):
(saveJhbuildMd5):
(saveJhbuildModulesetName):
(saveJhbuildConfig):
(deleteJhbuildMd5):
(deleteJhbuildModulesetName):
(deleteJhbuildConfig):

  • Scripts/webkitdirs.pm:

(getJhbuildModulesetName):

  • gtk/jhbuild-minimal.modules: Added.
  • jhbuild/jhbuild-minimal.modules: Added.
  • jhbuild/jhbuildrc_common.py:

(init):

  • jhbuild/patches/libsoup-lower-glib-dependency-to-2.38.patch: Added.
  • wpe/jhbuild-minimal.modules: Added.
3:07 AM Changeset in webkit [264091] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.28/Source/WebKit

Merge r263899 - [WPE][GTK] Bubblewrap sandbox should not attempt to bind empty paths
https://bugs.webkit.org/show_bug.cgi?id=202880

Patch by Michael Catanzaro <Michael Catanzaro> on 2020-07-03
Reviewed by Carlos Garcia Campos.

If an empty path is set in LD_LIBRARY_PATH (e.g. /foo::/bar), we wind up passing
--ro-bind-try --ro-bind-try to bwrap, where the second --ro-bind-try is treated as the
source path to mount, and the next flag we pass gets treated as the destination path. The
web process crashes with this confusing error:

bwrap: Can't create file at /.flatpak-info: Read-only file system

  • UIProcess/Launcher/glib/BubblewrapLauncher.cpp:

(WebKit::bindIfExists):

3:07 AM WebKitGTK/2.28.x edited by Carlos Garcia Campos
(diff)
3:07 AM Changeset in webkit [264090] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.28/Source/WebKit

Merge r262274 - [GTK][WPE] Buildfix after r262242

Unreviewed build fix.

  • Shared/glib/ArgumentCodersGLib.cpp:

(IPC::decode):

3:07 AM Changeset in webkit [264089] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.28/Source/WebKit

Merge r262242 - [WPE][GTK] GVariant decoding must copy the serialized data
https://bugs.webkit.org/show_bug.cgi?id=212441

Patch by Michael Catanzaro <Michael Catanzaro> on 2020-05-28
Reviewed by Carlos Garcia Campos.

I tracked this down to ArgumentCodersGLib.cpp. The problem is that we construct a GVariant
using g_variant_new_from_data(), which does not copy or take ownership of the data, so here
we accidentally create the GVariant using data we don't own. (Here, the data is owned by the
Decoder itself in its internal m_buffer.) Anyway, this is fixable by manually copying and
freeing it with the GDestroyNotify parameter, but it's easier to switch to
g_variant_new_from_bytes() because GBytes takes ownership when constructed.

  • Shared/glib/ArgumentCodersGLib.cpp:

(IPC::decode):

3:07 AM Changeset in webkit [264088] by Carlos Garcia Campos
  • 3 edits in releases/WebKitGTK/webkit-2.28/Source/WebCore

Merge r261680 - [GStreamer] Can't replay blob videos in web.whatsapp.com
https://bugs.webkit.org/show_bug.cgi?id=192540

Patch by Philippe Normand <pnormand@igalia.com> on 2020-05-14
Reviewed by Xabier Rodriguez-Calvar.

This is a variant of bug 211627 but I could reproduce it only for videos. Unfortunately I
wasn't able to write a reliable test for this.

  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:

(WebCore::MediaPlayerPrivateGStreamer::updateBufferingStatus): Prevent the fill timer from
running forever after buffering completed.

  • platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp:

(webKitWebSrcMakeRequest): Don't buffer blobs, this doesn't seem useful as they're already
in memory anyway.

3:07 AM Changeset in webkit [264087] by Carlos Garcia Campos
  • 3 edits
    2 adds in releases/WebKitGTK/webkit-2.28

Merge r261550 - [GStreamer] Audio messages in web.whatsapp.com only play once.
https://bugs.webkit.org/show_bug.cgi?id=211627

Patch by Philippe Normand <pnormand@igalia.com> on 2020-05-12
Reviewed by Xabier Rodriguez-Calvar.

Source/WebCore:

Test: media/video-src-blob-replay.html

  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:

(WebCore::MediaPlayerPrivateGStreamer::updateDownloadBufferingFlag): Make sure on-disk
buffering is disabled for blob URIs, because it messes up the pipeline for replays, and it's
useless for that use-case anyway.

LayoutTests:

  • media/video-src-blob-replay-expected.txt: Added.
  • media/video-src-blob-replay.html: Added.
3:07 AM Changeset in webkit [264086] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.28/Source/JavaScriptCore

Merge r261326 - REGRESSION(r251875): Crash in JSC::StructureIDTable::get on ppc64le: gcSafeMemcpy broken on JSVALUE64 platforms other than x86_64 and aarch64
https://bugs.webkit.org/show_bug.cgi?id=210685

Patch by Daniel Kolesa <daniel@octaforge.org> on 2020-05-07
Reviewed by Michael Catanzaro.

Fix gcSafeMemcpy on non-x86_64/aarch64 64-bit architectures.

We were hitting an incorrect x86_64 assertion on values larger than
mediumCutoff on JSVALUE64 architectures other than x86_64 and aarch64,
as the control flow is wrong.

  • heap/GCMemoryOperations.h:

(JSC::gcSafeMemcpy):

3:07 AM Changeset in webkit [264085] by Carlos Garcia Campos
  • 4 edits in releases/WebKitGTK/webkit-2.28

Merge r261165 - [GStreamer] Video loops when ran in rr record --chaos
https://bugs.webkit.org/show_bug.cgi?id=211182

Reviewed by Philippe Normand.

Source/WebCore:

While trying to investigate a different bug, I ran the browser with
rr record --chaos, which makes it run very slowly and shuffles
thread scheduling to try to make existing race conditions more likely
to show up, also inevitably making the software run very slow.

Doing so I found something strange: the video kept looping even though
it didn't have the loop attribute set.

After some debugging I found that MediaPlayer decides if the video has
ended in part by checking currentMediaTime() is greater or equal to
the video duration, which was not guaranteed to be the case in
MediaPlayerPrivateGStreamer.

As a consequence of this patch, one new LayoutTest has passed.

  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:

(WebCore::MediaPlayerPrivateGStreamer::playbackPosition const):

LayoutTests:

imported/w3c/web-platform-tests/media-source/mediasource-getvideoplaybackquality.html
is now passing.

  • platform/gtk/TestExpectations:
3:07 AM Changeset in webkit [264084] by Carlos Garcia Campos
  • 3 edits in releases/WebKitGTK/webkit-2.28/Source/WebCore

Merge r260892 - PlatformMediaResourceLoader should be destroyed on the main thread
https://bugs.webkit.org/show_bug.cgi?id=211155

Reviewed by Xabier Rodriguez-Calvar.

PlatformMediaResourceLoader is only safe to use from the main thread.
A tricky detail is this includes its destruction. The same is true for
PlatformMediaResource.

Both classes are ThreadSafeRefCounted<> classes and therefore
WTF::DestructionThread::Main can be used to ensure destruction is run
in the correct thread with no need for additional client code.

  • platform/graphics/PlatformMediaResourceLoader.h:
  • platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp:

(WebKitWebSrcPrivate::StreamingMembers::~StreamingMembers):

3:07 AM Changeset in webkit [264083] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.28/Source/WebCore

Merge r260886 - [GStreamer] Switch to audiointerleave
https://bugs.webkit.org/show_bug.cgi?id=211124

Patch by Philippe Normand <pnormand@igalia.com> on 2020-04-29
Reviewed by Xabier Rodriguez-Calvar.

The audiointerleave element is a drop-in replacement of
interleave. It should behave a bit better in live.

No new tests, existing webaudio tests cover this change.

  • platform/audio/gstreamer/WebKitWebAudioSourceGStreamer.cpp:

(webKitWebAudioSrcConstructed):
(webKitWebAudioSrcChangeState):

3:07 AM Changeset in webkit [264082] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.28/Source/WebCore

Merge r260938 - Unreviewed, GStreamer build warning fix after r260755.

  • platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp:

(webKitWebSrcMakeRequest): There is no need to capture src in the
closure, its protector is used instead.

3:07 AM Changeset in webkit [264081] by Carlos Garcia Campos
  • 6 edits in releases/WebKitGTK/webkit-2.28

Merge r260755 - [GStreamer] Rework WebKitWebSrc threading
Source/WebCore:

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

Reviewed by Xabier Rodriguez-Calvar.

WebKitWebSrc as it is in master has a number of race conditions
leading to occasional starvation (due to cancelling the wrong request)
or data corruption (due to pushing data from a cancelled request).

The threading situation wasn't easy to follow, as it wasn't clear
access to what members should be protected by what mutex, in what
circumstances. Also, some parts of the design were also introducing
addicional complexity, such as the first request being sent from the
main thread whereas the rest were being sent from the streaming thread
or basesrc async start.

In response, this patch reworks all the locking in WebKitWebSrc to use
WTF::DataMutex. This ensures all accesses to its (now explicit)
protected members are locked. The two mutexes and condition variables
have been simplified into one, as there was no obvious need or benefit
for two of each in this case.

Requests have been numbered, which allows to safely and atomically
ignore results from cancelled requests, avoiding data corruption
races, and makes following them in debug logs much easier.

The conditions for making and cancelling requests have been simplified
to a simpler and safer model: There is at most only one active request
at anytime, flushes cancel the request, and the first create() call
always makes the new request (both at startup and after a flush).
Debug asserts and notes about the flow of operations during basesrc
seeks have been provided.

As this effort needed a review of the entire WebKitWebSrc, cleanups,
corrections and documentation comments have been provided where
appropriate.

This patch introduces no visible behavior changes, just stability
improvements.

  • platform/graphics/gstreamer/GRefPtrGStreamer.h:
  • platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp:

(WebKitWebSrcPrivate::~WebKitWebSrcPrivate):
(webkit_web_src_class_init):
(webkitWebSrcReset):
(webKitWebSrcConstructed):
(webKitWebSrcSetProperty):
(webKitWebSrcGetProperty):
(webKitWebSrcSetContext):
(webKitWebSrcSendEvent):
(restartLoaderIfNeeded):
(stopLoaderIfNeeded):
(webKitWebSrcCreate):
(webKitWebSrcStart):
(webKitWebSrcMakeRequest):
(webKitWebSrcStop):
(webKitWebSrcGetSize):
(webKitWebSrcIsSeekable):
(webKitWebSrcDoSeek):
(webKitWebSrcQuery):
(webKitWebSrcUnLock):
(webKitWebSrcUnLockStop):
(webKitWebSrcSetUri):
(webKitWebSrcSetMediaPlayer):
(webKitSrcPassedCORSAccessCheck):
(CachedResourceStreamingClient::CachedResourceStreamingClient):
(CachedResourceStreamingClient::checkUpdateBlocksize):
(CachedResourceStreamingClient::responseReceived):
(CachedResourceStreamingClient::dataReceived):
(CachedResourceStreamingClient::accessControlCheckFailed):
(CachedResourceStreamingClient::loadFailed):
(CachedResourceStreamingClient::loadFinished):
(webKitSrcWouldTaintOrigin):

  • platform/graphics/gstreamer/WebKitWebSourceGStreamer.h:

LayoutTests:

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

Reviewed by Xabier Rodriguez-Calvar.

A test improved its status in TestExpectations from the changes made
in this patch.

  • platform/gtk/TestExpectations:
3:07 AM Changeset in webkit [264080] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.28/Source/WebCore

Merge r260750 - [GTK] [2.28.0] The Yelp build crashes if DISPLAY is not set
https://bugs.webkit.org/show_bug.cgi?id=209431

Reviewed by Carlos Garcia Campos.

Don't create a PlatformDisplayLibWPE as a fallback when using
Wayland or X11.

  • platform/graphics/PlatformDisplay.cpp:

(WebCore::PlatformDisplay::createPlatformDisplay):

3:06 AM Changeset in webkit [264079] by Carlos Garcia Campos
  • 7 edits in releases/WebKitGTK/webkit-2.28

Merge r260176 - [GTK] MiniBrowser opens new windows too small causing failures on some WPT tests
https://bugs.webkit.org/show_bug.cgi?id=210206

Reviewed by Carlos Garcia Campos.

Source/WebCore:

Some WPT tests (when executed with the WPT runner via WebDriver)
open new browser windows via JavaScript invoking Window.open()
and then run the test on this new window.
The size of the new window is not specified, and we were failing
to provide a default window size, so it was using the minimum of
100x100 which its just too small for some test that later call
document.elementFromPoint() on some coordinates
that are outside of that size.

To fix that provide the size of the default GTK window to WebCore
if the application sets one via gtk_window_set_default_size().
And if not, then use the size of the previous window.

Also change the way we position the new window to work better when
the system uses more than one monitor. Previously to get the default
coordinates of the new window we were using gdk_display_get_monitor()
with just the first monitor available.
This causes issues in the calculation of the available space when
using several monitors. Instead get the monitor in use by looking
at the current GDK root window.

Tests: TestWebKitAPI/WebKit2Gtk/TestUIClient:/webkit/WebKitWebView/open-window-default-size
and TestWebKitAPI/WebKit2Gtk/TestUIClient:/webkit/WebKitWebView/open-window-no-default-size

  • loader/FrameLoader.cpp:

(WebCore::createWindow):

  • platform/gtk/PlatformScreenGtk.cpp:

(WebCore::getCurrentScreenMonitor):
(WebCore::screenRect):
(WebCore::screenAvailableRect):

Source/WebKit:

Provide the size of the default window (if is set) when windowRect is called
before the window is shown.

  • UIProcess/API/glib/WebKitUIClient.cpp:

Tools:

Add two API test to check that window.open() by default gets a size
request equal to the old window if there is no default window size,
or to the default window if there is a default window size.

A new function helper setCreateNewWebViewsInWindowsWithDefaultSize()
its added to create new webviews in new windows automatically, which
its needed to test the case of having a default window size.

  • TestWebKitAPI/Tests/WebKitGLib/TestUIClient.cpp:

(testWebViewWindowProperties):
(testWebViewOpenWindowDefaultSize):
(testWebViewOpenWindowNoDefaultSize):
(beforeAll):

3:06 AM Changeset in webkit [264078] by Carlos Garcia Campos
  • 4 edits in releases/WebKitGTK/webkit-2.28

Merge r259879 - [WTF] DataMutex: Add runUnlocked()
https://bugs.webkit.org/show_bug.cgi?id=209811

Reviewed by Xabier Rodriguez-Calvar.

Source/WTF:

This patch introduces a runUnlocked() method in WTF::DataMutex::LockedWrapper
to run a lambda function without the lock. This is intended to be used for
small sections of the code that need to be unlocked, in cases where using
scoping would prove non-ergonomic or where running the unlocked section is only
necessary or desired when a certain condition is met -- something that cannot
be done with C++ scoping.

Safety mechanisms are provided. First, because this is used with a lambda, all
variables to be used in the unlocked section have to be specified in the
capture (global capture is possible but not recommended to simplify analysis).
Second, additional checks have been added to DataMutex to detect unlocked
accesses among other conditions. This will detect among other things naive
access to protected members by means of capturing the LockedWrapper by
reference.

  • wtf/DataMutex.h:

(WTF::OwnerAwareLockAdapter::lock):
(WTF::OwnerAwareLockAdapter::unlock):
(WTF::OwnerAwareLockAdapter::tryLock):
(WTF::OwnerAwareLockAdapter::isLocked const):
(WTF::DataMutex::LockedWrapper::operator->):
(WTF::DataMutex::LockedWrapper::operator*):
(WTF::DataMutex::LockedWrapper::mutex):
(WTF::DataMutex::LockedWrapper::lockHolder):
(WTF::DataMutex::LockedWrapper::runUnlocked):

Tools:

Tests for runUnlocked() and DataMutex checks are introduced.

  • TestWebKitAPI/Tests/WTF/DataMutex.cpp:

(TestWebKitAPI::TEST):

3:06 AM Changeset in webkit [264077] by Carlos Garcia Campos
  • 4 edits in releases/WebKitGTK/webkit-2.28/Source/WebCore

Merge r263838 - [GTK] Kinetic scrolling is still triggered if you wait before lifting fingers
https://bugs.webkit.org/show_bug.cgi?id=213789

Patch by Alexander Mikhaylenko <Alexander Mikhaylenko> on 2020-07-02
Reviewed by Carlos Garcia Campos.

The intended behavior for kinetic scrolling is that it's possible to not trigger it by
stopping moving fingers before lifting them, as opposed to doing a fling/swipe. However,
right now it's broken and trying to do this triggers kinetic scrolling as well.

Currently, the last scroll event with (0, 0) deltas isn't added to the scroll history for
kinetic scrolling. However, this is wrong, because the last event, or rather the timespan
between it and the previous scroll event, actually determines the kinetic scrolling velocity:
if this event follows the previous one quickly, the velocity is large, but if there was a long
pause, the velocity would be close to 0.

See https://gitlab.gnome.org/GNOME/gtk/-/merge_requests/1902 and
https://gitlab.gnome.org/GNOME/gtk/-/merge_requests/1903 for the equivalent GTK fixes.

  • page/scrolling/nicosia/ScrollingTreeFrameScrollingNodeNicosia.cpp:

(WebCore::ScrollingTreeFrameScrollingNodeNicosia::handleWheelEvent):

  • page/scrolling/nicosia/ScrollingTreeOverflowScrollingNodeNicosia.cpp:

(WebCore::ScrollingTreeOverflowScrollingNodeNicosia::handleWheelEvent):

  • platform/generic/ScrollAnimatorGeneric.cpp:

(WebCore::ScrollAnimatorGeneric::handleWheelEvent):

3:06 AM Changeset in webkit [264076] by Carlos Garcia Campos
  • 5 edits in releases/WebKitGTK/webkit-2.28/Source

Merge r259325 - [PlayStation] Fix build breaks after r259112
https://bugs.webkit.org/show_bug.cgi?id=209830

Unreviewed build fix.

Source/WebCore:

Add USE(GLIB) guards around RunLoopSourcePriority usage.

  • platform/ScrollAnimationKinetic.cpp:

(WebCore::ScrollAnimationKinetic::ScrollAnimationKinetic):

Source/WebKit:

Replace PLATFORM(WPE) with USE(LIBWPE) within WebWheelEvent.

  • Shared/WebEvent.h:
  • Shared/WebWheelEvent.cpp:

(WebKit::WebWheelEvent::encode const):
(WebKit::WebWheelEvent::decode):

3:06 AM Changeset in webkit [264075] by Carlos Garcia Campos
  • 22 edits in releases/WebKitGTK/webkit-2.28/Source

Merge r259112 - [GTK][WPE] Enable kinetic scrolling with async rendering
https://bugs.webkit.org/show_bug.cgi?id=209230

Reviewed by Žan Doberšek.

Refactor ScrollAnimationKinetic so that it no longer depends on
ScrollableArea, uses RunLoop::Timer and is responsible for tracking
the history of scroll events. This allows it to be used in
ScrollingTree*ScrollingNodeNicosia to provide kinetic scrolling when
async scrolling is enabled, on GTK and WPE.

No new tests, this just enables existing functionality in more situations.

  • page/scrolling/ScrollingTreeScrollingNode.cpp:

(WebCore::ScrollingTreeScrollingNode::scrollTo):

  • page/scrolling/ScrollingTreeScrollingNode.h:
  • page/scrolling/nicosia/ScrollingTreeFrameScrollingNodeNicosia.cpp:

(WebCore::ScrollingTreeFrameScrollingNodeNicosia::ScrollingTreeFrameScrollingNodeNicosia):
(WebCore::ScrollingTreeFrameScrollingNodeNicosia::handleWheelEvent):
(WebCore::ScrollingTreeFrameScrollingNodeNicosia::stopScrollAnimations):

  • page/scrolling/nicosia/ScrollingTreeFrameScrollingNodeNicosia.h:
  • page/scrolling/nicosia/ScrollingTreeOverflowScrollingNodeNicosia.cpp:

(WebCore::ScrollingTreeOverflowScrollingNodeNicosia::ScrollingTreeOverflowScrollingNodeNicosia):
(WebCore::ScrollingTreeOverflowScrollingNodeNicosia::handleWheelEvent):
(WebCore::ScrollingTreeOverflowScrollingNodeNicosia::stopScrollAnimations):

  • page/scrolling/nicosia/ScrollingTreeOverflowScrollingNodeNicosia.h:
  • platform/ScrollAnimationKinetic.cpp:

(WebCore::ScrollAnimationKinetic::ScrollAnimationKinetic):
(WebCore::ScrollAnimationKinetic::appendToScrollHistory):
(WebCore::ScrollAnimationKinetic::clearScrollHistory):
(WebCore::ScrollAnimationKinetic::computeVelocity):
(WebCore::ScrollAnimationKinetic::start):

  • platform/ScrollAnimationKinetic.h:
  • platform/generic/ScrollAnimatorGeneric.cpp:

(WebCore::ScrollAnimatorGeneric::ScrollAnimatorGeneric):
(WebCore::ScrollAnimatorGeneric::scrollToOffsetWithoutAnimation):
(WebCore::ScrollAnimatorGeneric::handleWheelEvent):
(WebCore::ScrollAnimatorGeneric::willEndLiveResize):
(WebCore::ScrollAnimatorGeneric::didAddVerticalScrollbar):
(WebCore::ScrollAnimatorGeneric::didAddHorizontalScrollbar):

  • platform/generic/ScrollAnimatorGeneric.h:

Source/WebKit:
[GTK][WPE] Enable kinetic scrolling with async scrolling
https://bugs.webkit.org/show_bug.cgi?id=209230

Reviewed by Žan Doberšek.

Modify WPE mousewheel event delivery so that it includes the necessary
phases needed to infer press/release times and allow for kinetic
scrolling.

  • Shared/NativeWebWheelEvent.h:
  • Shared/WebEvent.h:
  • Shared/WebWheelEvent.cpp:

(WebKit::WebWheelEvent::encode const):
(WebKit::WebWheelEvent::decode):

  • Shared/libwpe/NativeWebWheelEventLibWPE.cpp:

(WebKit::NativeWebWheelEvent::NativeWebWheelEvent):

  • Shared/libwpe/WebEventFactory.cpp:

(WebKit::WebEventFactory::createWebWheelEvent):

  • Shared/libwpe/WebEventFactory.h:
  • UIProcess/API/wpe/PageClientImpl.cpp:

(WebKit::PageClientImpl::doneWithTouchEvent):

  • UIProcess/API/wpe/ScrollGestureController.cpp:

(WebKit::ScrollGestureController::handleEvent):

  • UIProcess/API/wpe/ScrollGestureController.h:

(WebKit::ScrollGestureController::phase):

  • UIProcess/API/wpe/WPEView.cpp:

(WKWPE::m_backend):

3:06 AM Changeset in webkit [264074] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.28/Source/WebKit

Merge r259037 - Syscall param sendmsg(msg.msg_iov[0]) points to uninitialised byte(s) in IPC::Connection::sendOutgoingMessage
https://bugs.webkit.org/show_bug.cgi?id=146729

Patch by Michael Catanzaro <Michael Catanzaro> on 2020-03-26
Reviewed by Carlos Garcia Campos.

The entire MessageInfo is passed to write(), so we have to zero the padding bytes to avoid
writing uninitialized memory.

  • Platform/IPC/unix/UnixMessage.h:

(IPC::MessageInfo::MessageInfo):

2:02 AM Changeset in webkit [264073] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.28/Source/WebKit

Merge r262368 - [WPE][GTK] pthread_create() fails with EPERM in the second WebKitWebProcess with sandbox on
https://bugs.webkit.org/show_bug.cgi?id=212380

Patch by Michael Catanzaro <Michael Catanzaro> on 2020-06-01
Reviewed by Adrian Perez de Castro.

Dereference scmp_arg_cmp before use.

  • UIProcess/Launcher/glib/BubblewrapLauncher.cpp:

(WebKit::setupSeccomp):

2:02 AM Changeset in webkit [264072] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.28/Source/WebCore

Merge r259798 - Use more WeakPtr in RenderTreeBuilder::FirstLetter
https://bugs.webkit.org/show_bug.cgi?id=210251
<rdar://problem/61180381>

Reviewed by Zalan Bujtas.

For safety.

  • rendering/updating/RenderTreeBuilderFirstLetter.cpp:

(WebCore::RenderTreeBuilder::FirstLetter::createRenderers):

2:02 AM Changeset in webkit [264071] by Carlos Garcia Campos
  • 70 edits in releases/WebKitGTK/webkit-2.28/Source

Merge r259355 - Bindings that override getOwnPropertySlotByIndex need to say they MayHaveIndexedAccessors
https://bugs.webkit.org/show_bug.cgi?id=209762

Reviewed by Darin Adler.

Source/JavaScriptCore:

Change indexingType to indexingModeIncludingHistory to more
clearly indicate the expected range of possible valid values.

  • runtime/StructureInlines.h:

(JSC::Structure::create):

Source/WebCore:

There may be places where we rely on this for semantic
correctness. I couldn't find any right now but we might as
well be conservative since this isn't a performance regression.

  • bindings/js/JSDOMWindowProperties.h:
  • bindings/scripts/CodeGeneratorJS.pm:

(GenerateHeader):

  • bindings/scripts/test/JS/JSInterfaceName.h:

(WebCore::JSInterfaceName::createStructure):

  • bindings/scripts/test/JS/JSMapLike.h:

(WebCore::JSMapLike::createStructure):

  • bindings/scripts/test/JS/JSReadOnlyMapLike.h:

(WebCore::JSReadOnlyMapLike::createStructure):

  • bindings/scripts/test/JS/JSReadOnlySetLike.h:

(WebCore::JSReadOnlySetLike::createStructure):

  • bindings/scripts/test/JS/JSSetLike.h:

(WebCore::JSSetLike::createStructure):

  • bindings/scripts/test/JS/JSTestActiveDOMObject.h:

(WebCore::JSTestActiveDOMObject::createStructure):

  • bindings/scripts/test/JS/JSTestCEReactions.h:

(WebCore::JSTestCEReactions::createStructure):

  • bindings/scripts/test/JS/JSTestCEReactionsStringifier.h:

(WebCore::JSTestCEReactionsStringifier::createStructure):

  • bindings/scripts/test/JS/JSTestCallTracer.h:

(WebCore::JSTestCallTracer::createStructure):

  • bindings/scripts/test/JS/JSTestClassWithJSBuiltinConstructor.h:

(WebCore::JSTestClassWithJSBuiltinConstructor::createStructure):

  • bindings/scripts/test/JS/JSTestDOMJIT.h:

(WebCore::JSTestDOMJIT::createStructure):

  • bindings/scripts/test/JS/JSTestEnabledBySetting.h:

(WebCore::JSTestEnabledBySetting::createStructure):

  • bindings/scripts/test/JS/JSTestEnabledForContext.h:

(WebCore::JSTestEnabledForContext::createStructure):

  • bindings/scripts/test/JS/JSTestEventConstructor.h:

(WebCore::JSTestEventConstructor::createStructure):

  • bindings/scripts/test/JS/JSTestEventTarget.h:

(WebCore::JSTestEventTarget::createStructure):

  • bindings/scripts/test/JS/JSTestException.h:

(WebCore::JSTestException::createStructure):

  • bindings/scripts/test/JS/JSTestGenerateIsReachable.h:

(WebCore::JSTestGenerateIsReachable::createStructure):

  • bindings/scripts/test/JS/JSTestGlobalObject.h:

(WebCore::JSTestGlobalObject::createStructure):

  • bindings/scripts/test/JS/JSTestIndexedSetterNoIdentifier.h:

(WebCore::JSTestIndexedSetterNoIdentifier::createStructure):

  • bindings/scripts/test/JS/JSTestIndexedSetterThrowingException.h:

(WebCore::JSTestIndexedSetterThrowingException::createStructure):

  • bindings/scripts/test/JS/JSTestIndexedSetterWithIdentifier.h:

(WebCore::JSTestIndexedSetterWithIdentifier::createStructure):

  • bindings/scripts/test/JS/JSTestInterface.h:
  • bindings/scripts/test/JS/JSTestInterfaceLeadingUnderscore.h:

(WebCore::JSTestInterfaceLeadingUnderscore::createStructure):

  • bindings/scripts/test/JS/JSTestIterable.h:

(WebCore::JSTestIterable::createStructure):

  • bindings/scripts/test/JS/JSTestJSBuiltinConstructor.h:

(WebCore::JSTestJSBuiltinConstructor::createStructure):

  • bindings/scripts/test/JS/JSTestMediaQueryListListener.h:

(WebCore::JSTestMediaQueryListListener::createStructure):

  • bindings/scripts/test/JS/JSTestNamedAndIndexedSetterNoIdentifier.h:

(WebCore::JSTestNamedAndIndexedSetterNoIdentifier::createStructure):

  • bindings/scripts/test/JS/JSTestNamedAndIndexedSetterThrowingException.h:

(WebCore::JSTestNamedAndIndexedSetterThrowingException::createStructure):

  • bindings/scripts/test/JS/JSTestNamedAndIndexedSetterWithIdentifier.h:

(WebCore::JSTestNamedAndIndexedSetterWithIdentifier::createStructure):

  • bindings/scripts/test/JS/JSTestNamedConstructor.h:

(WebCore::JSTestNamedConstructor::createStructure):

  • bindings/scripts/test/JS/JSTestNamedDeleterNoIdentifier.h:

(WebCore::JSTestNamedDeleterNoIdentifier::createStructure):

  • bindings/scripts/test/JS/JSTestNamedDeleterThrowingException.h:

(WebCore::JSTestNamedDeleterThrowingException::createStructure):

  • bindings/scripts/test/JS/JSTestNamedDeleterWithIdentifier.h:

(WebCore::JSTestNamedDeleterWithIdentifier::createStructure):

  • bindings/scripts/test/JS/JSTestNamedDeleterWithIndexedGetter.h:

(WebCore::JSTestNamedDeleterWithIndexedGetter::createStructure):

  • bindings/scripts/test/JS/JSTestNamedGetterCallWith.h:

(WebCore::JSTestNamedGetterCallWith::createStructure):

  • bindings/scripts/test/JS/JSTestNamedGetterNoIdentifier.h:

(WebCore::JSTestNamedGetterNoIdentifier::createStructure):

  • bindings/scripts/test/JS/JSTestNamedGetterWithIdentifier.h:

(WebCore::JSTestNamedGetterWithIdentifier::createStructure):

  • bindings/scripts/test/JS/JSTestNamedSetterNoIdentifier.h:

(WebCore::JSTestNamedSetterNoIdentifier::createStructure):

  • bindings/scripts/test/JS/JSTestNamedSetterThrowingException.h:

(WebCore::JSTestNamedSetterThrowingException::createStructure):

  • bindings/scripts/test/JS/JSTestNamedSetterWithIdentifier.h:

(WebCore::JSTestNamedSetterWithIdentifier::createStructure):

  • bindings/scripts/test/JS/JSTestNamedSetterWithIndexedGetter.h:

(WebCore::JSTestNamedSetterWithIndexedGetter::createStructure):

  • bindings/scripts/test/JS/JSTestNamedSetterWithIndexedGetterAndSetter.h:

(WebCore::JSTestNamedSetterWithIndexedGetterAndSetter::createStructure):

  • bindings/scripts/test/JS/JSTestNamedSetterWithOverrideBuiltins.h:

(WebCore::JSTestNamedSetterWithOverrideBuiltins::createStructure):

  • bindings/scripts/test/JS/JSTestNamedSetterWithUnforgableProperties.h:

(WebCore::JSTestNamedSetterWithUnforgableProperties::createStructure):

  • bindings/scripts/test/JS/JSTestNamedSetterWithUnforgablePropertiesAndOverrideBuiltins.h:

(WebCore::JSTestNamedSetterWithUnforgablePropertiesAndOverrideBuiltins::createStructure):

  • bindings/scripts/test/JS/JSTestNode.h:
  • bindings/scripts/test/JS/JSTestObj.h:

(WebCore::JSTestObj::createStructure):

  • bindings/scripts/test/JS/JSTestOverloadedConstructors.h:

(WebCore::JSTestOverloadedConstructors::createStructure):

  • bindings/scripts/test/JS/JSTestOverloadedConstructorsWithSequence.h:

(WebCore::JSTestOverloadedConstructorsWithSequence::createStructure):

  • bindings/scripts/test/JS/JSTestOverrideBuiltins.h:

(WebCore::JSTestOverrideBuiltins::createStructure):

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

(WebCore::JSTestPluginInterface::createStructure):

  • bindings/scripts/test/JS/JSTestPromiseRejectionEvent.h:

(WebCore::JSTestPromiseRejectionEvent::createStructure):

  • bindings/scripts/test/JS/JSTestSerialization.h:

(WebCore::JSTestSerialization::createStructure):

  • bindings/scripts/test/JS/JSTestSerializationIndirectInheritance.h:

(WebCore::JSTestSerializationIndirectInheritance::createStructure):

  • bindings/scripts/test/JS/JSTestSerializationInherit.h:

(WebCore::JSTestSerializationInherit::createStructure):

  • bindings/scripts/test/JS/JSTestSerializationInheritFinal.h:

(WebCore::JSTestSerializationInheritFinal::createStructure):

  • bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.h:

(WebCore::JSTestSerializedScriptValueInterface::createStructure):

  • bindings/scripts/test/JS/JSTestStringifier.h:

(WebCore::JSTestStringifier::createStructure):

  • bindings/scripts/test/JS/JSTestStringifierAnonymousOperation.h:

(WebCore::JSTestStringifierAnonymousOperation::createStructure):

  • bindings/scripts/test/JS/JSTestStringifierNamedOperation.h:

(WebCore::JSTestStringifierNamedOperation::createStructure):

  • bindings/scripts/test/JS/JSTestStringifierOperationImplementedAs.h:

(WebCore::JSTestStringifierOperationImplementedAs::createStructure):

  • bindings/scripts/test/JS/JSTestStringifierOperationNamedToString.h:

(WebCore::JSTestStringifierOperationNamedToString::createStructure):

  • bindings/scripts/test/JS/JSTestStringifierReadOnlyAttribute.h:

(WebCore::JSTestStringifierReadOnlyAttribute::createStructure):

  • bindings/scripts/test/JS/JSTestStringifierReadWriteAttribute.h:

(WebCore::JSTestStringifierReadWriteAttribute::createStructure):

  • bindings/scripts/test/JS/JSTestTypedefs.h:

(WebCore::JSTestTypedefs::createStructure):

2:02 AM Changeset in webkit [264070] by Carlos Garcia Campos
  • 5 edits
    2 adds in releases/WebKitGTK/webkit-2.28

Merge r258799 - Content-Type & Nosniff Ignored on XML External Entity Resources
<https://webkit.org/b/191171>
<rdar://problem/45763222>

Reviewed by Darin Adler.

Source/WebCore:

Test: http/tests/security/contentTypeOptions/nosniff-xml-external-entity.xhtml

  • platform/MIMETypeRegistry.cpp:

(WebCore::MIMETypeRegistry::isXMLEntityMIMEType): Add.

  • platform/MIMETypeRegistry.h:

(WebCore::MIMETypeRegistry::isXMLEntityMIMEType): Add.

  • Checks for XML external entity MIME types.
  • xml/parser/XMLDocumentParserLibxml2.cpp:

(WebCore::externalEntityMimeTypeAllowedByNosniff): Add.

  • Checks whether the MIME type is valid based on the presence of the "X-Content-Type-Options: nosniff" header.

(WebCore::openFunc):

  • Drop the contents of the resource that was returned and print an error message to the Web Inspector console if externalEntityMimeTypeAllowedByNosniff() says the MIME type is not allowed.

LayoutTests:

  • http/tests/security/contentTypeOptions/nosniff-xml-external-entity-expected.txt: Add.
  • http/tests/security/contentTypeOptions/nosniff-xml-external-entity.xhtml: Add.
2:01 AM Changeset in webkit [264069] by Carlos Garcia Campos
  • 5 edits in releases/WebKitGTK/webkit-2.28/Source/WebCore

Merge r258278 - SVG filter triggers unstable layout.
https://bugs.webkit.org/show_bug.cgi?id=207444
rdar://problem/59297004

Reviewed by Simon Fraser.

SVG filter code marks DOM nodes dirty and schedules style recalc outside of the SVG root
while in layout. This could lead to unstable layout and cause battery drain.
(See webkit.org/b/208903)

  • rendering/RenderLayer.cpp: Remove filterNeedsRepaint(). It's a dangerously misleading name and should

not be part of RenderLayer.
(WebCore::RenderLayer::calculateClipRects const):

  • rendering/RenderLayer.h:
  • rendering/RenderLayerFilters.cpp:

(WebCore::RenderLayerFilters::notifyFinished):

  • rendering/svg/RenderSVGResourceContainer.cpp:

(WebCore::RenderSVGResourceContainer::markAllClientsForInvalidation):
(WebCore::RenderSVGResourceContainer::markAllClientLayersForInvalidation):

2:01 AM Changeset in webkit [264068] by Carlos Garcia Campos
  • 4 edits
    2 adds in releases/WebKitGTK/webkit-2.28

Merge r258459 - SVGMatrix should have the access right of its owner SVGTransform always
https://bugs.webkit.org/show_bug.cgi?id=207462

Reviewed by Simon Fraser.

Source/WebCore:

The SVGMatrix needs to be reattached to its owner SVGTransform when the
access right of this owner changes. The access right of the owner changes
when it gets attached to or detached from a higher level owner.

Test: svg/dom/SVGTransformList-anim-read-only.html

  • svg/SVGTransform.h:
  • svg/properties/SVGProperty.h:

(WebCore::SVGProperty::attach):
(WebCore::SVGProperty::detach):
(WebCore::SVGProperty::reattach):

LayoutTests:

  • svg/dom/SVGTransformList-anim-read-only-expected.txt: Added.
  • svg/dom/SVGTransformList-anim-read-only.html: Added.
2:01 AM Changeset in webkit [264067] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.28/Source/JavaScriptCore

Merge r258452 - Missing arithMode for ArithAbs and ArithNegate in DFGClobberize
https://bugs.webkit.org/show_bug.cgi?id=208685
<rdar://problem/60115088>

Reviewed by Saam Barati.

In the pure case of ArithNegate and ArithAbs in DFGClobberize, their PureValues did not include their
respective ArithMode. That means that e.g. a CheckOverflow ArithNegate/Abs could be considered equivalent
to an Unchecked version of the same node.

Thanks to Samuel Groß of Google Project Zero for identifying this bug.

  • dfg/DFGClobberize.h:

(JSC::DFG::clobberize):

2:01 AM Changeset in webkit [264066] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.28/Source/WebCore

Merge r257746 - ScriptController::executeIfJavaScriptURL() uses wrong JSGlobalObject.
https://bugs.webkit.org/show_bug.cgi?id=208290
<rdar://problem/59839476>

Reviewed by Chris Dumez.

The call to executeScriptIgnoringException() may have changed the current global
object of the window. We should be using the original global object that produced
the result string.

Also added a missing exception check needed after a potential rope resolution.

  • bindings/js/ScriptController.cpp:

(WebCore::ScriptController::executeIfJavaScriptURL):

1:42 AM Changeset in webkit [264065] by commit-queue@webkit.org
  • 3 edits in trunk/Tools

[webkitpy] run-minibrowser doesn't default to mac and stdout/stderr are not displayed
https://bugs.webkit.org/show_bug.cgi?id=214072

Patch by Philippe Normand <pnormand@igalia.com> on 2020-07-08
Reviewed by Adrian Perez de Castro.

  • Scripts/webkitpy/minibrowser/run_webkit_app.py:

(main): Default to mac platform, like in old-run-minibrowser.

  • Scripts/webkitpy/port/base.py:

(Port.run_minibrowser): Display MiniBrowser stdout and stderr on the terminal output.

1:39 AM Changeset in webkit [264064] by Diego Pino Garcia
  • 2 edits in trunk/Tools

[Flatpak] Avoid error message 'error: org.webkit.Sdk/*unspecified*/*unspecified*' not installed
https://bugs.webkit.org/show_bug.cgi?id=213871

Reviewed by Philippe Normand.

The error message happens when requesting a Flatpak SDK version but there's no Flatpak SDK installed yet.
In that case, ignore stderr to filter out the message.

  • flatpak/flatpakutils.py:

(run_sanitized):
(FlatpakObject.flatpak):
(FlatpakObject.version):

1:20 AM Changeset in webkit [264063] by commit-queue@webkit.org
  • 2 edits in trunk/Tools

[Flatpak SDK] Initial installation with IceCC enabled fails
https://bugs.webkit.org/show_bug.cgi?id=213833

Patch by Philippe Normand <pnormand@igalia.com> on 2020-07-08
Reviewed by Adrian Perez de Castro.

Avoid attempting to use the IceCC environment during the toolchain
archive update. The initial SDK installation triggers this when
IceCC is enabled on the command-line or via CCACHE_PREFIX, after
resetting the internal toolchain mapping. So the solution is to
opt-out of this runtime configuration setup, which is useless
anyway when the toolchain archive is being generated.

  • flatpak/flatpakutils.py:

(WebkitFlatpak.run_in_sandbox):
(WebkitFlatpak.pack_toolchain):

1:03 AM Changeset in webkit [264062] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebCore

REGRESSION(r263836): [GStreamer] Debug ASSERT hits
https://bugs.webkit.org/show_bug.cgi?id=214047

Patch by Philippe Normand <pnormand@igalia.com> on 2020-07-08
Reviewed by Xabier Rodriguez-Calvar.

Reduce the element dependency on RefPtr<MediaStreamTrackPrivate> which is not MT-safe. The
data we need from it are its ID and the contents required to build a GstTagList. So we now
create this tag-list upfront and keep track of the trackID as well.

  • platform/mediastream/gstreamer/GStreamerMediaStreamSource.cpp:

(webkitMediaStreamSrcAddPad):
(ProbeData::ProbeData):
(webkitMediaStreamSrcPadProbeCb):
(webkitMediaStreamSrcSetupSrc):

12:06 AM Changeset in webkit [264061] by Carlos Garcia Campos
  • 1 copy in releases/WebKitGTK/webkit-2.29.3

WebKitGTK 2.29.3

12:05 AM Changeset in webkit [264060] by Carlos Garcia Campos
  • 4 edits in trunk

Unreviewed. Update OptionsGTK.cmake and NEWS for 2.29.3 release

.:

  • Source/cmake/OptionsGTK.cmake: Bump version numbers.

Source/WebKit:

  • gtk/NEWS: Add release notes for 2.29.3.
Note: See TracTimeline for information about the timeline view.