Timeline



Oct 2, 2020:

11:28 PM Changeset in webkit [267919] by Carlos Garcia Campos
  • 7 edits in trunk/Source

WebDriver: add support for same site cookies
https://bugs.webkit.org/show_bug.cgi?id=217222

Reviewed by Brian Burg.

Source/WebDriver:

  • Session.cpp:

(WebDriver::parseAutomationCookie): Parse sameSite.
(WebDriver::builtAutomationCookie): Add sameSite to cookie.
(WebDriver::serializeCookie): Serialize sameSite.

  • Session.h:
  • WebDriverService.cpp:

(WebDriver::deserializeCookie): Deserialize sameSite.

Source/WebKit:

  • UIProcess/Automation/Automation.json: Add CookieSameSitePolicy enum and sameSite member to Cookie object.
  • UIProcess/Automation/WebAutomationSession.cpp:

(WebKit::toProtocolSameSitePolicy): Convert WebCore same site policy to inspector protocol value.
(WebKit::toWebCoreSameSitePolicy): Convert inspector protocol same site policy to WebCore value.
(WebKit::buildObjectForCookie): Add sameSite.
(WebKit::WebAutomationSession::addSingleCookie): Set sameSite policy to cookie.

11:26 PM Changeset in webkit [267918] by Carlos Garcia Campos
  • 7 edits in trunk/Source

WebDriver: several issues when switching to new browser context
https://bugs.webkit.org/show_bug.cgi?id=217217

Reviewed by Brian Burg.

Source/WebDriver:

There are several issues to fix when switching to a browser context:

1- The spec has changed and now we should always keep the current parent browsing context.
2- The spec says we should focus the new frame after switching to a frame or parent frame, but we are just

resolving the frame and updating the handle internally.

3- We are keeping stale frame handles and ids in the automation session, they should be removed when frames

are destroyed.

4- We are clearing all frame references in the automation session when a navigation happens in any main

frame. We should only clear the frames of the page that completed the navigation.

All theses cases are covered by new tests added to imported/w3c/webdriver/tests/switch_to_parent_frame/

  • Session.cpp:

(WebDriver::Session::close): Close the current parent browsing context too.
(WebDriver::Session::switchToTopLevelBrowsingContext): Initialize the current parent browsing context too.
(WebDriver::Session::switchToBrowsingContext): Resolve the parent frame handle and set the current parent browsing context.
(WebDriver::Session::go): Pass completion handler to switchToBrowsingContext().
(WebDriver::Session::back): Ditto.
(WebDriver::Session::forward): Ditto.
(WebDriver::Session::refresh): Ditto.
(WebDriver::Session::closeWindow): Close the current parent browsing context too.
(WebDriver::Session::switchToBrowsingContext): Send switchToBrowsingContext message to the browser.
(WebDriver::Session::switchToWindow): Use switchToBrowsingContext() to send the message to the browser.
(WebDriver::Session::switchToFrame): Call switchToBrowsingContext() after the child frame handle is resolved.
(WebDriver::Session::switchToParentFrame): Check current parent browsing context is still open and call
switchToBrowsingContext() to switch to the current parent browsing context.
(WebDriver::Session::waitForNavigationToComplete): Close the current parent browsing context too when the window
is closed due to the navigation.

  • Session.h: Add m_currentParentBrowsingContext.

Source/WebKit:

  • UIProcess/Automation/WebAutomationSession.cpp:

(WebKit::WebAutomationSession::didDestroyFrame): Remove the frame references from maps.
(WebKit::WebAutomationSession::navigationOccurredForFrame): Only clear the frame references from the maps for
the frames in the given frame's page.

  • UIProcess/Automation/WebAutomationSession.h:
  • UIProcess/WebProcessProxy.cpp:

(WebKit::WebProcessProxy::didDestroyFrame): Notify automation session about frame being destroyed.

11:00 PM Changeset in webkit [267917] by ysuzuki@apple.com
  • 5 edits in trunk

std::once_flag must be allocated in static storage
https://bugs.webkit.org/show_bug.cgi?id=217271

Reviewed by Mark Lam.

Source/WebCore:

If the std::once_flag is a non-static variable, it will not prevent us from calling it multiple times.

  • platform/text/TextCodecSingleByte.cpp:

(WebCore::tableForEncoding):

Tools:

Added cpplint rule for non-static std::once_flag / dispatch_once_t.

  • Scripts/webkitpy/style/checkers/cpp.py:

(check_once_flag):
(check_style):
(CppChecker):

  • Scripts/webkitpy/style/checkers/cpp_unittest.py:

(WebKitStyleTest.test_once_flag):

8:55 PM Changeset in webkit [267916] by Simon Fraser
  • 48 edits
    4 adds in trunk/Source/WebKit

Move WebEvent subclass declarations to their own files
https://bugs.webkit.org/show_bug.cgi?id=217259

Reviewed by Tim Horton.

Make new header files for WebMouseEvent, WebKeyboardEvent, WebWheelEvent, WebTouchEvent and
fix the fallout.

  • Scripts/webkit/messages.py:
  • Shared/API/c/WKSharedAPICast.h:
  • Shared/NativeWebGestureEvent.h:
  • Shared/NativeWebKeyboardEvent.h:
  • Shared/NativeWebMouseEvent.h:
  • Shared/NativeWebTouchEvent.h:
  • Shared/NativeWebWheelEvent.h:
  • Shared/NavigationActionData.h:
  • Shared/WebEvent.cpp:

(WebKit::WebTouchEvent::allTouchPointsAreReleased const): Deleted.

  • Shared/WebEvent.h:

(WebKit::WebMouseEvent::button const): Deleted.
(WebKit::WebMouseEvent::buttons const): Deleted.
(WebKit::WebMouseEvent::position const): Deleted.
(WebKit::WebMouseEvent::globalPosition const): Deleted.
(WebKit::WebMouseEvent::deltaX const): Deleted.
(WebKit::WebMouseEvent::deltaY const): Deleted.
(WebKit::WebMouseEvent::deltaZ const): Deleted.
(WebKit::WebMouseEvent::clickCount const): Deleted.
(WebKit::WebMouseEvent::eventNumber const): Deleted.
(WebKit::WebMouseEvent::menuTypeForEvent const): Deleted.
(WebKit::WebMouseEvent::force const): Deleted.
(WebKit::WebMouseEvent::syntheticClickType const): Deleted.
(WebKit::WebWheelEvent::position const): Deleted.
(WebKit::WebWheelEvent::globalPosition const): Deleted.
(WebKit::WebWheelEvent::delta const): Deleted.
(WebKit::WebWheelEvent::wheelTicks const): Deleted.
(WebKit::WebWheelEvent::granularity const): Deleted.
(WebKit::WebWheelEvent::directionInvertedFromDevice const): Deleted.
(WebKit::WebWheelEvent::phase const): Deleted.
(WebKit::WebWheelEvent::momentumPhase const): Deleted.
(WebKit::WebWheelEvent::hasPreciseScrollingDeltas const): Deleted.
(WebKit::WebWheelEvent::scrollCount const): Deleted.
(WebKit::WebWheelEvent::unacceleratedScrollingDelta const): Deleted.
(WebKit::WebKeyboardEvent::text const): Deleted.
(WebKit::WebKeyboardEvent::unmodifiedText const): Deleted.
(WebKit::WebKeyboardEvent::key const): Deleted.
(WebKit::WebKeyboardEvent::code const): Deleted.
(WebKit::WebKeyboardEvent::keyIdentifier const): Deleted.
(WebKit::WebKeyboardEvent::windowsVirtualKeyCode const): Deleted.
(WebKit::WebKeyboardEvent::nativeVirtualKeyCode const): Deleted.
(WebKit::WebKeyboardEvent::macCharCode const): Deleted.
(WebKit::WebKeyboardEvent::handledByInputMethod const): Deleted.
(WebKit::WebKeyboardEvent::preeditUnderlines const): Deleted.
(WebKit::WebKeyboardEvent::preeditSelectionRange const): Deleted.
(WebKit::WebKeyboardEvent::commands const): Deleted.
(WebKit::WebKeyboardEvent::isAutoRepeat const): Deleted.
(WebKit::WebKeyboardEvent::isKeypad const): Deleted.
(WebKit::WebKeyboardEvent::isSystemKey const): Deleted.
(WebKit::WebPlatformTouchPoint::WebPlatformTouchPoint): Deleted.
(WebKit::WebPlatformTouchPoint::identifier const): Deleted.
(WebKit::WebPlatformTouchPoint::location const): Deleted.
(WebKit::WebPlatformTouchPoint::phase const): Deleted.
(WebKit::WebPlatformTouchPoint::state const): Deleted.
(WebKit::WebPlatformTouchPoint::setRadiusX): Deleted.
(WebKit::WebPlatformTouchPoint::radiusX const): Deleted.
(WebKit::WebPlatformTouchPoint::setRadiusY): Deleted.
(WebKit::WebPlatformTouchPoint::radiusY const): Deleted.
(WebKit::WebPlatformTouchPoint::setRotationAngle): Deleted.
(WebKit::WebPlatformTouchPoint::rotationAngle const): Deleted.
(WebKit::WebPlatformTouchPoint::setForce): Deleted.
(WebKit::WebPlatformTouchPoint::force const): Deleted.
(WebKit::WebPlatformTouchPoint::setAltitudeAngle): Deleted.
(WebKit::WebPlatformTouchPoint::altitudeAngle const): Deleted.
(WebKit::WebPlatformTouchPoint::setAzimuthAngle): Deleted.
(WebKit::WebPlatformTouchPoint::azimuthAngle const): Deleted.
(WebKit::WebPlatformTouchPoint::setTouchType): Deleted.
(WebKit::WebPlatformTouchPoint::touchType const): Deleted.
(WebKit::WebTouchEvent::WebTouchEvent): Deleted.
(WebKit::WebTouchEvent::touchPoints const): Deleted.
(WebKit::WebTouchEvent::position const): Deleted.
(WebKit::WebTouchEvent::isPotentialTap const): Deleted.
(WebKit::WebTouchEvent::isGesture const): Deleted.
(WebKit::WebTouchEvent::gestureScale const): Deleted.
(WebKit::WebTouchEvent::gestureRotation const): Deleted.
(WebKit::WebTouchEvent::canPreventNativeGestures const): Deleted.
(WebKit::WebTouchEvent::setCanPreventNativeGestures): Deleted.
(WebKit::WebPlatformTouchPoint::id const): Deleted.
(WebKit::WebPlatformTouchPoint::screenPosition const): Deleted.
(WebKit::WebPlatformTouchPoint::position const): Deleted.
(WebKit::WebPlatformTouchPoint::radius const): Deleted.
(WebKit::WebPlatformTouchPoint::setState): Deleted.

  • Shared/WebEventConversion.cpp:
  • Shared/WebKeyboardEvent.cpp:
  • Shared/WebKeyboardEvent.h: Added.

(WebKit::WebKeyboardEvent::text const):
(WebKit::WebKeyboardEvent::unmodifiedText const):
(WebKit::WebKeyboardEvent::key const):
(WebKit::WebKeyboardEvent::code const):
(WebKit::WebKeyboardEvent::keyIdentifier const):
(WebKit::WebKeyboardEvent::windowsVirtualKeyCode const):
(WebKit::WebKeyboardEvent::nativeVirtualKeyCode const):
(WebKit::WebKeyboardEvent::macCharCode const):
(WebKit::WebKeyboardEvent::handledByInputMethod const):
(WebKit::WebKeyboardEvent::preeditUnderlines const):
(WebKit::WebKeyboardEvent::preeditSelectionRange const):
(WebKit::WebKeyboardEvent::commands const):
(WebKit::WebKeyboardEvent::isAutoRepeat const):
(WebKit::WebKeyboardEvent::isKeypad const):
(WebKit::WebKeyboardEvent::isSystemKey const):

  • Shared/WebMouseEvent.cpp:
  • Shared/WebMouseEvent.h: Added.

(WebKit::WebMouseEvent::button const):
(WebKit::WebMouseEvent::buttons const):
(WebKit::WebMouseEvent::position const):
(WebKit::WebMouseEvent::globalPosition const):
(WebKit::WebMouseEvent::deltaX const):
(WebKit::WebMouseEvent::deltaY const):
(WebKit::WebMouseEvent::deltaZ const):
(WebKit::WebMouseEvent::clickCount const):
(WebKit::WebMouseEvent::eventNumber const):
(WebKit::WebMouseEvent::menuTypeForEvent const):
(WebKit::WebMouseEvent::force const):
(WebKit::WebMouseEvent::syntheticClickType const):

  • Shared/WebTouchEvent.cpp:

(WebKit::WebTouchEvent::allTouchPointsAreReleased const):

  • Shared/WebTouchEvent.h: Added.

(WebKit::WebPlatformTouchPoint::WebPlatformTouchPoint):
(WebKit::WebPlatformTouchPoint::identifier const):
(WebKit::WebPlatformTouchPoint::location const):
(WebKit::WebPlatformTouchPoint::phase const):
(WebKit::WebPlatformTouchPoint::state const):
(WebKit::WebPlatformTouchPoint::setRadiusX):
(WebKit::WebPlatformTouchPoint::radiusX const):
(WebKit::WebPlatformTouchPoint::setRadiusY):
(WebKit::WebPlatformTouchPoint::radiusY const):
(WebKit::WebPlatformTouchPoint::setRotationAngle):
(WebKit::WebPlatformTouchPoint::rotationAngle const):
(WebKit::WebPlatformTouchPoint::setForce):
(WebKit::WebPlatformTouchPoint::force const):
(WebKit::WebPlatformTouchPoint::setAltitudeAngle):
(WebKit::WebPlatformTouchPoint::altitudeAngle const):
(WebKit::WebPlatformTouchPoint::setAzimuthAngle):
(WebKit::WebPlatformTouchPoint::azimuthAngle const):
(WebKit::WebPlatformTouchPoint::setTouchType):
(WebKit::WebPlatformTouchPoint::touchType const):
(WebKit::WebTouchEvent::WebTouchEvent):
(WebKit::WebTouchEvent::touchPoints const):
(WebKit::WebTouchEvent::position const):
(WebKit::WebTouchEvent::isPotentialTap const):
(WebKit::WebTouchEvent::isGesture const):
(WebKit::WebTouchEvent::gestureScale const):
(WebKit::WebTouchEvent::gestureRotation const):
(WebKit::WebTouchEvent::canPreventNativeGestures const):
(WebKit::WebTouchEvent::setCanPreventNativeGestures):
(WebKit::WebPlatformTouchPoint::id const):
(WebKit::WebPlatformTouchPoint::screenPosition const):
(WebKit::WebPlatformTouchPoint::position const):
(WebKit::WebPlatformTouchPoint::radius const):
(WebKit::WebPlatformTouchPoint::setState):

  • Shared/WebWheelEvent.cpp:

(WebKit::WebWheelEvent::WebWheelEvent):

  • Shared/WebWheelEvent.h: Added.

(WebKit::WebWheelEvent::position const):
(WebKit::WebWheelEvent::globalPosition const):
(WebKit::WebWheelEvent::delta const):
(WebKit::WebWheelEvent::wheelTicks const):
(WebKit::WebWheelEvent::granularity const):
(WebKit::WebWheelEvent::directionInvertedFromDevice const):
(WebKit::WebWheelEvent::phase const):
(WebKit::WebWheelEvent::momentumPhase const):
(WebKit::WebWheelEvent::hasPreciseScrollingDeltas const):
(WebKit::WebWheelEvent::scrollCount const):
(WebKit::WebWheelEvent::unacceleratedScrollingDelta const):

  • Shared/ios/WebIOSEventFactory.h:
  • Shared/ios/WebPlatformTouchPointIOS.cpp:
  • Shared/ios/WebTouchEventIOS.cpp:
  • Shared/mac/NativeWebGestureEventMac.mm:
  • Shared/mac/WebEventFactory.h:
  • Shared/mac/WebGestureEvent.h:
  • UIProcess/API/APINavigationClient.h:
  • UIProcess/API/APIPolicyClient.h:
  • UIProcess/Automation/SimulatedInputDispatcher.h:
  • UIProcess/WebPageProxy.cpp:
  • UIProcess/ios/WKMouseGestureRecognizer.mm:
  • WebKit.xcodeproj/project.pbxproj:
  • WebProcess/InjectedBundle/InjectedBundleNavigationAction.h:
  • WebProcess/Plugins/Netscape/mac/NetscapePluginMac.mm:
  • WebProcess/Plugins/PDF/PDFPlugin.mm:
  • WebProcess/Plugins/PluginProxy.cpp:
  • WebProcess/Plugins/PluginView.cpp:
  • WebProcess/WebPage/EventDispatcher.cpp:
  • WebProcess/WebPage/EventDispatcher.h:
  • WebProcess/WebPage/PageBanner.h:
  • WebProcess/WebPage/WebPage.cpp:
  • WebProcess/WebPage/ios/WebPageIOS.mm:
  • WebProcess/WebPage/mac/WebPageMac.mm:
8:23 PM Changeset in webkit [267915] by wenson_hsieh@apple.com
  • 5 edits in trunk/Source

[ iOS ] ASSERTION FAILED: ScriptDisallowedScope::InMainThread::isEventDispatchAllowedInSubtree
https://bugs.webkit.org/show_bug.cgi?id=217203
<rdar://problem/69864747>

Reviewed by Tim Horton.

Source/WebCore:

  • page/DragController.cpp:

(WebCore::DragController::finalizeDroppedImagePlaceholder):

Instead of immediately removing dropped image placeholder attributes, schedule an async task to remove the
placeholder and invoke the given completion handler. See WebKit/ChangeLog for more details.

  • page/DragController.h:

Source/WebKit:

Refactor logic that removes drop placeholder attributes such that it runs as an asynchronously task rather than
underneath the scope of didFinishLoadingImageForElement. This is because the image load client call may occur
in the middle of a rendering update, during which it is not safe to change element attribute values, since that
may trigger script execution.

  • WebProcess/WebPage/ios/WebPageIOS.mm:

(WebKit::WebPage::didFinishLoadingImageForElement):

7:17 PM Changeset in webkit [267914] by Lauro Moura
  • 5 edits in trunk/LayoutTests

[GLIB] Gardening some failures and flakies

Unreviewed test gardening.

  • platform/glib/TestExpectations:
  • platform/glib/fast/mediacapturefromelement/CanvasCaptureMediaStream-offscreencanvas-expected.txt: Rebaselined after r267825.
  • platform/gtk/TestExpectations:
  • platform/wpe/TestExpectations:
6:59 PM Changeset in webkit [267913] by Hector Lopez
  • 2 edits in trunk/LayoutTests

REGRESSION(iOS 14): 2 imported/w3c/web-platform-tests/mathml/ tests are constant failures
https://bugs.webkit.org/show_bug.cgi?id=217268

Unreviewed test gardening.

  • platform/ios-wk2/TestExpectations:
6:46 PM Changeset in webkit [267912] by Ross Kirsling
  • 7 edits in trunk

[JSC] Add Array#item to @@unscopables
https://bugs.webkit.org/show_bug.cgi?id=217243

Reviewed by Yusuke Suzuki.

JSTests:

  • stress/unscopables.js:

Update test.

Source/JavaScriptCore:

ES2015+ Array methods must be listed in Array.prototype[@@unscopables] per the note here:
https://tc39.es/ecma262/#sec-array.prototype-@@unscopables

The Array#item spec doesn't currently make this explicit, but I created an issue to ensure it isn't overlooked:
https://github.com/tc39/proposal-item-method/issues/30

  • runtime/ArrayPrototype.cpp:

(JSC::ArrayPrototype::finishCreation):

LayoutTests:

  • js/array-unscopables-properties-expected.txt:
  • js/script-tests/array-unscopables-properties.js:

Update test.

6:26 PM Changeset in webkit [267911] by Chris Dumez
  • 5 edits
    2 adds in trunk

Calling suspend() on audio context with no node does not prevent auto transition to running when first node is created
https://bugs.webkit.org/show_bug.cgi?id=216972
<rdar://problem/69878834>

Reviewed by Darin Adler.

Source/WebCore:

Add support for the suspended by user? flag in the WebAudio specification:

We set this flag when the script calls AudioContext.suspend():

We clear this flag when the script calls AudioContext.resume():

We then prevent automated transition of the AudioContext to "rendering" when this
flag is set:

Test: webaudio/suspend-context-before-first-node-creation.html

  • Modules/webaudio/BaseAudioContext.cpp:

(WebCore::BaseAudioContext::startRendering):
(WebCore::BaseAudioContext::suspendRendering):
(WebCore::BaseAudioContext::resumeRendering):

  • Modules/webaudio/BaseAudioContext.h:

LayoutTests:

Add layout test coverage.

  • webaudio/suspend-context-before-first-node-creation-expected.txt: Added.
  • webaudio/suspend-context-before-first-node-creation.html: Added.
6:23 PM Changeset in webkit [267910] by Alan Coon
  • 2 edits in branches/safari-610-branch/Source/WebKit

Cherry-pick r267792. rdar://problem/69904383

REGRESSION (r265009): Web Share API can no longer be invoked if a previous invocation was dismissed using the close button
https://bugs.webkit.org/show_bug.cgi?id=216913
<rdar://problem/69659878>

Reviewed by Darin Adler.

No new tests; not able to test without UI tests that actually use UIActivityViewController.

  • UIProcess/Cocoa/WKShareSheet.mm: (-[WKShareSheet presentWithShareDataArray:inRect:]): -presentationControllerDidDismiss is not called if the UIActivityViewController is programmatically dismissed, so we need to revert to observing completion via UIActivityViewController's -completionWithItemsHandler.

In order to avoid regressing bug 214894 by doing so, we also need to
make sure that we're actually not presented anymore, as -completionWithItemsHandler
can be called multiple times before the share sheet is actually dismissed.

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

6:23 PM Changeset in webkit [267909] by Alan Coon
  • 8 edits
    3 adds in branches/safari-610-branch

Cherry-pick r267753. rdar://problem/69904353

IndexedDB Index Corruption after upgrade from iOS 13 to iOS 14
https://bugs.webkit.org/show_bug.cgi?id=216962
<rdar://problem/69587004>

Reviewed by Brady Eidson.

Source/WebCore:

There is an implementation error in r255318, which updated index ID in database IndexInfo and IndexRecords
tables: it made changes to original table while iterating records of it. This means modified records can
be modified again, which leads to that two indices have the same index ID. As index ID is supposed to be unique,
some indices and index records cannot be populated and clients will find some indices are missing.

To fix this, we need to change the implementation of ID update and deal with already corrupted tables. For index
ID update, now we create a temporary table for storing the updated records, and replace the original table with
temporary table at the end of iteration. For the corruption issue, we check if IndexInfo table has duplicate
index IDs. If it has, we try recovering IndexInfo and IndexRecords table by removing records with duplicate
index IDs, assigning new IDs to duplicate indices, and adding records with updated index IDs.

API tests: IndexedDB.IndexUpgradeToV2WithMultipleIndices

IndexedDB.IndexUpgradeToV2WithMultipleIndicesHaveSameID

  • Modules/indexeddb/server/SQLiteIDBBackingStore.cpp: (WebCore::IDBServer::indexInfoTableSchema): (WebCore::IDBServer::SQLiteIDBBackingStore::createAndPopulateInitialDatabaseInfo): (WebCore::IDBServer::SQLiteIDBBackingStore::migrateIndexInfoTableForIDUpdate): (WebCore::IDBServer::SQLiteIDBBackingStore::migrateIndexRecordsTableForIDUpdate): (WebCore::IDBServer::SQLiteIDBBackingStore::removeExistingIndex): (WebCore::IDBServer::SQLiteIDBBackingStore::addExistingIndex): (WebCore::IDBServer::SQLiteIDBBackingStore::handleDuplicateIndexIDs): (WebCore::IDBServer::SQLiteIDBBackingStore::extractExistingDatabaseInfo): (WebCore::IDBServer::SQLiteIDBBackingStore::createIndex): (WebCore::IDBServer::SQLiteIDBBackingStore::updateOneIndexForAddRecord):
  • Modules/indexeddb/server/SQLiteIDBBackingStore.h:
  • Modules/indexeddb/shared/IDBIndexInfo.h: (WebCore::IDBIndexInfo::setIdentifier):
  • Modules/indexeddb/shared/IDBObjectStoreInfo.cpp: (WebCore::IDBObjectStoreInfo::addExistingIndex):

Tools:

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/WebKitCocoa/IDBIndexUpgradeToV2.mm: (runMultipleIndicesTestWithDatabase): (TEST):
  • TestWebKitAPI/Tests/WebKitCocoa/IDBIndexUpgradeToV2WithMultipleIndices.html: Added.
  • TestWebKitAPI/Tests/WebKitCocoa/IndexUpgradeWithMultipleIndices.sqlite3: Added.
  • TestWebKitAPI/Tests/WebKitCocoa/IndexUpgradeWithMultipleIndicesHaveSameID.sqlite3: Added.

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

6:23 PM Changeset in webkit [267908] by Alan Coon
  • 5 edits in branches/safari-610-branch/Source

Cherry-pick r267612. rdar://problem/69904365

Crunchyroll playback controls do not work on iPad with trackpad
https://bugs.webkit.org/show_bug.cgi?id=217000
<rdar://problem/66362029>

Reviewed by Wenson Hsieh.

Source/WebCore:

  • platform/RuntimeApplicationChecks.h:
  • platform/cocoa/RuntimeApplicationChecksCocoa.mm: (WebCore::IOSApplication::isCrunchyroll):

Source/WebKit:

  • UIProcess/ios/WKContentViewInteraction.mm: (applicationIsKnownToIgnoreMouseEvents): Add it to the list.

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

6:23 PM Changeset in webkit [267907] by Alan Coon
  • 24 edits in branches/safari-610-branch

Cherry-pick r266028. rdar://problem/69904377

Move node geometry functions from Range to RenderObject
https://bugs.webkit.org/show_bug.cgi?id=215677

Reviewed by Zalan Bujtas.

Source/WebCore:

Moved functions that return quads and rectangles out of Range into RenderObject.
We could find another home for them, but for now they make sense as static member
functions there since RenderObject has the non-static member functions that they
call on multiple nodes. Mostly did not change the design of these functions much,
and was careful not to change behavior at all. But did change a few things:

  • Got rid of the functions that return a single unioned rectangle. Instead callers call unionRect at each call site.
  • Changed the "use selection height" boolean to a BoundingRectBehavior flag.
  • accessibility/AccessibilityRenderObject.cpp: (WebCore::boundsForRects): Call unionRect(RenderObject::absoluteTextRects) instead of Range::absoluteBoundingBox.
  • dom/DocumentMarkerController.cpp: (WebCore::updateRenderedRectsForMarker): Instead of passing "true", pass "RenderObject::BoundingRectBehavior::UseSelectionHeight".
  • dom/Range.cpp: (WebCore::Range::absoluteBoundingBox const): Deleted. (WebCore::Range::absoluteRectsForRangeInText const): Deleted. (WebCore::Range::absoluteTextRects const): Deleted. (WebCore::Range::getClientRects const): Call RenderObject::clientBorderAndTextRects. (WebCore::Range::getBoundingClientRect const): Call unionRect(RenderObject::clientBorderAndTextRects). (WebCore::Range::borderAndTextRects const): Deleted. (WebCore::Range::boundingRect const): Deleted. (WebCore::Range::absoluteBoundingRect const): Deleted.
  • dom/Range.h: Updated for above.
  • dom/SimpleRange.cpp: (WebCore::IntersectingNodeIterator::IntersectingNodeIterator): Fix bug affecting empty ranges by calling enforceEndInvariant. (WebCore::IntersectingNodeIterator::advance): Refactor to call enforceEndInvariant. (WebCore::IntersectingNodeIterator::advanceSkippingChildren): Ditto. (WebCore::IntersectingNodeIterator::enforceEndInvariant): Added.
  • dom/SimpleRange.h: Added enforceEndInvariant.
  • editing/FrameSelection.cpp: (WebCore::FrameSelection::getClippedVisibleTextRectangles const): Instead of passing a useSelectionHeight boolean, pass BoundingRectBehavior.
  • page/TextIndicator.cpp: (WebCore::absoluteBoundingRectForRange): Call unionRectIgnoringZeroRects(RenderObject::absoluteBorderAndTextRects). (WebCore::initializeIndicator): Call RenderObject::absoluteTextRects.
  • platform/graphics/GeometryUtilities.cpp: (WebCore::unionRectIgnoringZeroRects): Added.
  • platform/graphics/GeometryUtilities.h: Updated for above.
  • rendering/RenderLineBreak.h: Marked a lot of functions final. Added a default value for the absoluteQuads out argument.
  • rendering/RenderObject.cpp: (WebCore::RenderObject::addPDFURLRect): Tweaked code style a bit. (WebCore::RenderObject::absoluteTextQuads): Replaced boolean useSelectionHeight argument with a BoundingRectBehavior argument. Also added a downcast so the call to RenderLineBreak::absoluteQuads is a non-virtual function call. (WebCore::absoluteRectsForRangeInText): Added. (WebCore::RenderObject::absoluteTextRects): Replaced boolean useSelectionHeight argument with a BoundingRectBehavior argument. (WebCore::nodeBefore): Added. (WebCore::borderAndTextRects): Added. (WebCore::RenderObject::absoluteBorderAndTextRects): Added. (WebCore::RenderObject::clientBorderAndTextRects): Added.
  • rendering/RenderObject.h: Updated for above.

Source/WebKit:

  • WebProcess/InjectedBundle/DOM/InjectedBundleRangeHandle.cpp: (WebKit::InjectedBundleRangeHandle::boundingRectInWindowCoordinates const): Call unionRectIgnoringZeroRects(RenderObject::absoluteBorderAndTextRects). (WebKit::InjectedBundleRangeHandle::renderedImage): Call unionRectIgnoringZeroRects(RenderObject::absoluteBorderAndTextRects).
  • WebProcess/WebPage/ios/WebPageIOS.mm: (WebKit::WebPage::requestEvasionRectsAboveSelection): Call unionRect(RenderObject::absoluteTextRects). (WebKit::WebPage::requestDocumentEditingContext): Call unionRect(RenderObject::absoluteTextRects).

Source/WebKitLegacy/mac:

  • DOM/DOM.mm: (-[DOMRange boundingBox]): Call unionRect(RenderObject::absoluteTextRects).

Source/WebKitLegacy/win:

  • AccessibleTextImpl.cpp: (AccessibleText::scrollSubstringTo): Call unionRect(RenderObject::absoluteTextRects) instead of Range::absoluteBoundingBox.

LayoutTests:

  • fast/dom/Range/scale-page-bounding-client-rect.html: Fix this test that accidentally depended on getting rects for an empty range (the contents of a div element with no text inside it) to instead get rects for a non-empty element (the div element, not just its contents). Test now works correctly, but results don't need to change.
  • fast/dom/Range/scale-page-client-rects.html: Ditto.

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

6:19 PM Changeset in webkit [267906] by Alan Coon
  • 8 edits in branches/safari-610-branch/Source

Versioning.

WebKit-7610.2.9

6:16 PM Changeset in webkit [267905] by Hector Lopez
  • 2 edits in trunk/LayoutTests

[ iOS ] 2 mediacapture-record tests are a constant failure
https://bugs.webkit.org/show_bug.cgi?id=217263

Unreviewed test gardening.

  • platform/ios-wk2/TestExpectations:
6:02 PM Changeset in webkit [267904] by Karl Rackler
  • 2 edits in trunk/LayoutTests

REGRESSION: [ Catalina wk2 ] imported/w3c/web-platform-tests/mediacapture-record/MediaRecorder-peerconnection.https.html is a flaky failure
https://bugs.webkit.org/show_bug.cgi?id=217262

Unreviewed test gardening.

  • platform/mac-wk2/TestExpectations:
5:53 PM Changeset in webkit [267903] by Alan Coon
  • 1 copy in tags/Safari-610.2.8

Tag Safari-610.2.8.

5:18 PM Changeset in webkit [267902] by Keith Rollin
  • 2 edits in trunk

Seeing "usage: basename string [suffix]" spam when using make to build
https://bugs.webkit.org/show_bug.cgi?id=217231
<rdar://problem/69889138>

Reviewed by Darin Adler.

The name of the project being built is no longer displayed when using
XCBuild. Therefore, https://bugs.webkit.org/show_bug.cgi?id=216865
taught the Makefile to perform this logging. The approach took
advantage of a make variable (PATH_FROM_ROOT) that tracks the
relative path from the root of the build hierarchy to the current
project. However, that variable may not be initialized if the build is
not initiated from the root. Therefore, don't count on that variable,
and get the name of the current project by invoking pwd.

  • Makefile.shared:
4:28 PM Changeset in webkit [267901] by Hector Lopez
  • 2 edits in trunk/LayoutTests

REGRESSION(iOS 14): svg/W3C-I18N/tspan-direction-rtl.svg is a constant failure
https://bugs.webkit.org/show_bug.cgi?id=217258

Unreviewed test gardening.

  • platform/ios-wk2/TestExpectations:
4:24 PM Changeset in webkit [267900] by Hector Lopez
  • 2 edits in trunk/LayoutTests

REGRESSION(iOS 14): webgl/1.0.3/conformance/textures/tex-image-and-sub-image-2d-with-video.html is a constant failure
https://bugs.webkit.org/show_bug.cgi?id=217257

Unreviewed test gardening.

  • platform/ios-wk2/TestExpectations:
4:15 PM Changeset in webkit [267899] by Kate Cheney
  • 7 edits in trunk

Multiple calls to suspend media playback for the same page may result in resuming media playback too soon
https://bugs.webkit.org/show_bug.cgi?id=217228
rdar://problem/69709346

Reviewed by Eric Carlson.

Source/WebKit:

Calls to suspend/resume media playback should always be called in
pairs. The current implementation resumes media playback on the first
call to resumeAllMediaPlayback even if multiple calls to suspendAllMediaPlayback
have been made. This patch adds a counter to track how many calls to
suspendAllMediaPlayback have occurred, and only resumes once the
counter reaches 0.

  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView _suspendMediaPlaybackCounter]):
SPI for test purposes.

  • UIProcess/API/Cocoa/WKWebViewPrivate.h:
  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::suspendAllMediaPlayback):
(WebKit::WebPageProxy::resumeAllMediaPlayback):
Never let the counter get below 0.

  • UIProcess/WebPageProxy.h:

(WebKit::WebPageProxy::suspendMediaPlaybackCounter):

Tools:

Add API test coverage. Fix the existing SuspendResumeAllMediaPlayback
test which had a small JavaScript bug, and was missing a call to
TestWebKitAPI::Util::run(&didReject) which allowed the bug to go
unnoticed.

  • TestWebKitAPI/Tests/WebKitCocoa/StopSuspendResumeAllMedia.mm:

(TestWebKitAPI::TEST):

3:25 PM Changeset in webkit [267898] by Truitt Savell
  • 28 edits
    10 deletes in trunk

Unreviewed, reverting r267887.

Broke two tests on iOS and Mac

Reverted changeset:

"Add non-animated support for the CSS translate property"
https://bugs.webkit.org/show_bug.cgi?id=216997
https://trac.webkit.org/changeset/267887

2:53 PM Changeset in webkit [267897] by Truitt Savell
  • 12 edits in trunk

Unreviewed, reverting r267817.

Broke two tests on Mac

Reverted changeset:

"Storage Access API: Enable per-page storage access scope and
align test cases"
https://bugs.webkit.org/show_bug.cgi?id=217077
https://trac.webkit.org/changeset/267817

2:26 PM WebKitGTK/2.30.x edited by Adrian Perez de Castro
(diff)
1:59 PM Changeset in webkit [267896] by achristensen@apple.com
  • 7 edits in trunk

Copy host from base file URL
https://bugs.webkit.org/show_bug.cgi?id=217170

Reviewed by Brady Eidson.

LayoutTests/imported/w3c:

  • web-platform-tests/url/a-element-expected.txt:
  • web-platform-tests/url/a-element-xhtml-expected.txt:
  • web-platform-tests/url/resources/urltestdata.json:
  • web-platform-tests/url/url-constructor-expected.txt:

Source/WTF:

This matches Chrome and the URL specification.
Covered by newly passing web platform tests.

I also updated the web platform tests from https://github.com/web-platform-tests/wpt/pull/25716
which aligns with Safari in cases except copying of the host from base file URLs.

The implementation pushes copying from the base URL downstream in the parsing process to where it is in the URL specification
so that we can properly decide how much of the base URL to copy and so we can copy it into the right place in the result URL.

I also updated an assertion that makes sure that we re-use the input String if possible because there are cases where we copy
part of the parent URL, which is a "syntax violation" (meaning we copy the string parts and assemble a new one), then re-assemble
a new String that is equal to the input string. This is not a problem, it just needed to be reflected in the assertion.

  • wtf/URLParser.cpp:

(WTF::URLParser::URLParser):
(WTF::URLParser::parse):

1:44 PM Changeset in webkit [267895] by Jonathan Bedard
  • 4 edits in trunk/Tools

[webkitscmpy] Remove "i" from canonical identifier
https://bugs.webkit.org/show_bug.cgi?id=217238
<rdar://problem/69888017>

Reviewed by Dewei Zhu.

  • Scripts/libraries/webkitscmpy/webkitscmpy/commit.py:

(Commit):
(Commit.pretty_print): Remove "i" from canonical identifier, add branch point.
(Commit.repr): Remove "i" from canonical identifier.

  • Scripts/libraries/webkitscmpy/webkitscmpy/test/commit_unittest.py:

(TestCommit.test_parse_revision):
(TestCommit.test_parse_identifier):
(TestCommit.test_parse):
(TestCommit.test_pretty_print):

1:35 PM Changeset in webkit [267894] by Peng Liu
  • 2 edits in trunk/Source/WebKit

[Media in GPU Process] Remove requiresTextTrackRepresentation in RemoteMediaPlayerState
https://bugs.webkit.org/show_bug.cgi?id=217230

Reviewed by Jer Noble.

A Web process can figure out whether the fullscreen/picture-in-picture subtitle
layer (for text track representation) is required by itself, so it does not need
to get the information from the GPU process.

  • WebProcess/GPU/media/RemoteMediaPlayerState.h:

(WebKit::RemoteMediaPlayerState::encode const):
(WebKit::RemoteMediaPlayerState::decode):

1:30 PM Changeset in webkit [267893] by weinig@apple.com
  • 24 edits
    2 adds in trunk

Re-align HTMLElement with the HTML spec
https://bugs.webkit.org/show_bug.cgi?id=217202

Reviewed by Darin Adler.

LayoutTests/imported/w3c:

  • web-platform-tests/html/dom/idlharness.https-expected.txt:
  • web-platform-tests/svg/types/scripted/event-handler-all-document-element-events-expected.txt:

Update more now passing results.

Source/WebCore:

  • Stops including DocumentAndElementEventHandlers in Element, and instead matches spec and other browsers by having HTMLElement, SVGElement and MathMLElement include it.
  • Splits out ElementContentEditable from HTMLElement and has HTMLElement include it.
  • Splits CSSOM View parts of HTMLElement out into HTMLElement+CSSOMView.idl
  • Re-orders includes to more closely match spec'd order. Has no real effect but made me happy.

Updates results to existing tests that are now passing, all due to the change to
include DocumentAndElementEventHandlers in the Element subclasses, not Element itself.

  • CMakeLists.txt:
  • DerivedSources-input.xcfilelist:
  • DerivedSources-output.xcfilelist:
  • DerivedSources.make:
  • WebCore.xcodeproj/project.pbxproj:
  • dom/Element.idl:
  • dom/ElementContentEditable.idl: Added.
  • html/HTMLBodyElement.idl:
  • html/HTMLElement+CSSOMView.idl: Added.
  • html/HTMLElement.idl:
  • html/HTMLFrameSetElement.idl:
  • html/HTMLMediaElement+AudioOutput.idl: Added.
  • html/HTMLMediaElementAudioOutput.idl: Removed.
  • mathml/MathMLElement.idl:
  • svg/SVGElement.idl:

LayoutTests:

  • fast/events/DocumentAndElementEventHandlers-expected.txt:
  • fast/events/DocumentAndElementEventHandlers.html:

Update test to match spec by checking on the HTMLElement prototype, not the
Element prototype.

  • fast/dom/event-handler-attributes-expected.txt:
  • platform/gtk/imported/w3c/web-platform-tests/html/dom/idlharness.https-expected.txt:
  • platform/ios-wk2/imported/w3c/web-platform-tests/html/dom/idlharness.https-expected.txt:
  • platform/mac-wk1/imported/w3c/web-platform-tests/html/dom/idlharness.https-expected.txt:
  • platform/mac-wk2/imported/w3c/web-platform-tests/html/dom/idlharness.https-expected.txt:
  • platform/wpe/imported/w3c/web-platform-tests/html/dom/idlharness.https-expected.txt:

Update more now passing results.

12:23 PM Changeset in webkit [267892] by commit-queue@webkit.org
  • 3 edits in trunk/Tools

[CMake] unused variable warning spam in UIScriptController.h
https://bugs.webkit.org/show_bug.cgi?id=217176

Patch by Philippe Normand <pnormand@igalia.com> on 2020-10-02
Reviewed by Adrian Perez de Castro.

  • DumpRenderTree/Bindings/CodeGeneratorDumpRenderTree.pm:

(_generateImplementationFile): Generate macros for unused variables.

  • TestRunnerShared/UIScriptContext/UIScriptController.h: Remove unused variable names declarations.

(WTR::UIScriptController::doAsyncTask):
(WTR::UIScriptController::ensurePositionInformationIsUpToDateAt):
(WTR::UIScriptController::overridePreference):
(WTR::UIScriptController::zoomToScale):
(WTR::UIScriptController::immediateZoomToScale):
(WTR::UIScriptController::setSafeAreaInsets):
(WTR::UIScriptController::propertiesOfLayerWithID const):
(WTR::UIScriptController::scrollToOffset):
(WTR::UIScriptController::immediateScrollToOffset):
(WTR::UIScriptController::immediateScrollElementAtContentPointToOffset):
(WTR::UIScriptController::touchDownAtPoint):
(WTR::UIScriptController::liftUpAtPoint):
(WTR::UIScriptController::singleTapAtPoint):
(WTR::UIScriptController::singleTapAtPointWithModifiers):
(WTR::UIScriptController::twoFingerSingleTapAtPoint):
(WTR::UIScriptController::doubleTapAtPoint):
(WTR::UIScriptController::dragFromPointToPoint):
(WTR::UIScriptController::longPressAtPoint):
(WTR::UIScriptController::activateAtPoint):
(WTR::UIScriptController::typeCharacterUsingHardwareKeyboard):
(WTR::UIScriptController::keyDown):
(WTR::UIScriptController::toggleCapsLock):
(WTR::UIScriptController::applyAutocorrection):
(WTR::UIScriptController::replaceTextAtRange):
(WTR::UIScriptController::stylusDownAtPoint):
(WTR::UIScriptController::stylusMoveToPoint):
(WTR::UIScriptController::stylusUpAtPoint):
(WTR::UIScriptController::stylusTapAtPoint):
(WTR::UIScriptController::stylusTapAtPointWithModifiers):
(WTR::UIScriptController::sendEventStream):
(WTR::UIScriptController::playBackEventStream):
(WTR::UIScriptController::dismissFilePicker):
(WTR::UIScriptController::setTimePickerValue):
(WTR::UIScriptController::setDefaultCalendarType):
(WTR::UIScriptController::findString):
(WTR::UIScriptController::simulateAccessibilitySettingsChangeNotification):
(WTR::UIScriptController::beginBackSwipe):
(WTR::UIScriptController::completeBackSwipe):
(WTR::UIScriptController::rectForMenuAction const):
(WTR::UIScriptController::attachmentInfo):
(WTR::UIScriptController::insertAttachmentForFilePath):

12:21 PM Changeset in webkit [267891] by Chris Dumez
  • 91 edits
    5 copies in trunk/Source/WebCore

Add stubs for AudioWorkletProcessor and AudioWorkletGlobalScope
https://bugs.webkit.org/show_bug.cgi?id=217194

Reviewed by Sam Weinig.

Add stubs for AudioWorkletProcessor and AudioWorkletGlobalScope:

I had to make some changes to the generated bindings to avoid a naming conflict because there was already a class
named JSAudioWorkletProcessorConstructor (the DOM constructor for JSAudioWorkletProcessor) before I introduced
AudioWorkletProcessorConstructor.idl. We now use "DOMConstructor" suffix in the generated bindings instead of
"Constructor" to avoid the naming conflict.

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

(WebCore::AudioWorkletGlobalScope::registerProcessor):

  • Modules/webaudio/AudioWorkletGlobalScope.h:

(WebCore::AudioWorkletGlobalScope::currentFrame):
(WebCore::AudioWorkletGlobalScope::currentTime const):
(WebCore::AudioWorkletGlobalScope::sampleRate const):

  • Modules/webaudio/AudioWorkletGlobalScope.idl:
  • Modules/webaudio/AudioWorkletProcessor.cpp: Copied from Source/WebCore/Modules/webaudio/AudioWorkletGlobalScope.idl.

(WebCore::AudioWorkletProcessor::AudioWorkletProcessor):

  • Modules/webaudio/AudioWorkletProcessor.h: Copied from Source/WebCore/Modules/webaudio/AudioWorkletGlobalScope.idl.

(WebCore::AudioWorkletProcessor::create):
(WebCore::AudioWorkletProcessor::port):

  • Modules/webaudio/AudioWorkletProcessor.idl: Copied from Source/WebCore/Modules/webaudio/AudioWorkletGlobalScope.idl.
  • Modules/webaudio/AudioWorkletProcessorConstructor.h: Copied from Source/WebCore/Modules/webaudio/AudioWorkletGlobalScope.cpp.
  • Modules/webaudio/AudioWorkletProcessorConstructor.idl: Copied from Source/WebCore/Modules/webaudio/AudioWorkletGlobalScope.idl.
  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • bindings/scripts/CodeGeneratorJS.pm:

(GenerateRuntimeEnableConditionalStringForExposed):
(GenerateImplementation):
(GenerateCallbackImplementationContent):
(GenerateConstructorDeclaration):
(GenerateConstructorDefinitions):
(GenerateConstructorDefinition):
(GenerateConstructorHelperMethods):

12:12 PM Changeset in webkit [267890] by Russell Epstein
  • 12 edits
    1 delete in branches/safari-611.1.2-branch/Source

Revert r267539. rdar://problem/69891393

10:57 AM Changeset in webkit [267889] by Brian Burg
  • 2 edits in trunk/Source/WebKit

[Cocoa] Web Inspector: add an ObjC protocol for extension support
https://bugs.webkit.org/show_bug.cgi?id=217191
<rdar://problem/69797960>

Reviewed by Timothy Hatcher.

  • UIProcess/API/Cocoa/_WKInspector.h:
10:47 AM Changeset in webkit [267888] by wenson_hsieh@apple.com
  • 2 edits in trunk/Source/WebKit

[GPU Process] fast/canvas/canvas-createPattern-video-loading.html times out
https://bugs.webkit.org/show_bug.cgi?id=217227

Reviewed by Eric Carlson.

Even after supporting createPattern with video elements using the GPU process for both media and canvas
rendering, we still fail this test due to a security error that is thrown when consulting
CanvasRenderingContext::wouldTaintOrigin. This, in turn, is due to the fact that we never attempt to update
cached wouldTaintDocumentSecurityOrigin state on MediaPlayerPrivateRemote, so it remains true.

This change will be covered by fast/canvas/canvas-createPattern-video-loading.html, which should now fail with a
text diff instead of timing out due to lack of support for creating a CanvasPattern out of a video element.

  • WebProcess/GPU/media/MediaPlayerPrivateRemote.cpp:

(WebKit::MediaPlayerPrivateRemote::updateCachedState):

10:26 AM Changeset in webkit [267887] by graouts@webkit.org
  • 28 edits
    10 adds in trunk

Add non-animated support for the CSS translate property
https://bugs.webkit.org/show_bug.cgi?id=216997
<rdar://problem/69597083>

Reviewed by Simon Fraser.

LayoutTests/imported/w3c:

WPT progressions showing the correct parsing and computed style output of a non-animated "translate" property.
We are also adding some more tests to the invalid "translate" parsing to check that we bail once we get junk
for optional values after valid values.

  • web-platform-tests/css/css-cascade/all-prop-initial-xml-expected.txt:
  • web-platform-tests/css/css-transforms/animation/translate-composition-expected.txt:
  • web-platform-tests/css/css-transforms/animation/translate-interpolation-expected.txt:
  • web-platform-tests/css/css-transforms/parsing/translate-parsing-invalid-expected.txt:
  • web-platform-tests/css/css-transforms/parsing/translate-parsing-invalid.html:
  • web-platform-tests/css/css-transforms/parsing/translate-parsing-valid-expected.txt:
  • web-platform-tests/css/cssom/cssstyledeclaration-csstext-expected.txt:

Source/WebCore:

We add non-animated support for the CSS "translate" property as specifed in by the CSS Transforms Level 2
specification (https://drafts.csswg.org/css-transforms-2/#propdef-translate).

Tests: transforms/2d/translate-and-transform-attribute-in-svg.svg

transforms/2d/translate-and-transform-css-property-in-svg.svg
transforms/2d/translate-in-svg.svg
transforms/2d/translate-transform-order.html
transforms/2d/translate-transform-origin-order.html

  • Headers.cmake:
  • css/CSSComputedStyleDeclaration.cpp:

(WebCore::computedTranslate): Create a CSSValueList to print out the computed value for the "translate" property.
(WebCore::ComputedStyleExtractor::valueForPropertyInStyle):

  • css/CSSProperties.json: Define the "translate" property with the condition that the runtime setting for individual

CSS transform properties is set.

  • css/TransformFunctions.cpp:

(WebCore::translateForValue): Convert a CSSValue to a TranslateTransformOperation when parsing a "translate" property value.

  • css/TransformFunctions.h:
  • css/parser/CSSParserContext.cpp:

(WebCore::CSSParserContext::CSSParserContext): Add a new flag indicating whether the runtime setting for individual
CSS transform properties is set.
(WebCore::operator==):

  • css/parser/CSSParserContext.h:

(WebCore::CSSParserContextHash::hash):

  • css/parser/CSSPropertyParser.cpp:

(WebCore::consumeTranslate): Create a CSSValueList when parsing a "translate" property value.
(WebCore::CSSPropertyParser::parseSingleValue):

  • platform/graphics/transforms/TranslateTransformOperation.h: Promote the apply() method to be public so that it can be called

from Style::ComputedStyleExtractor::valueForPropertyInStyle().

  • rendering/RenderObject.h:

(WebCore::RenderObject::hasTransform const): Consider that having the "translate" property is akin to having a "transform" property
in the render tree.

  • rendering/style/RenderStyle.cpp:

(WebCore::RenderStyle::setTranslate):
(WebCore::RenderStyle::applyTransform const): Account for the RenderStyle::translate() value in the right order, after applying the
transform origin, but before applying the main transform.

  • rendering/style/RenderStyle.h:

(WebCore::RenderStyle::translate const):
(WebCore::RenderStyle::hasTransformRelatedProperty const):
(WebCore::RenderStyle::initialTranslate):

  • rendering/style/StyleRareNonInheritedData.h:
  • rendering/style/WillChangeData.cpp:

(WebCore::WillChangeData::propertyCreatesStackingContext):

  • style/StyleBuilderConverter.h:

(WebCore::Style::BuilderConverter::convertTranslate):

  • svg/SVGGraphicsElement.cpp:

(WebCore::SVGGraphicsElement::animatedLocalTransform const): Account for the RenderStyle::translate() value when rendering SVG, ensuring
that it is applied before the transform specified by either the "transform" CSS property or SVG attribute.

LayoutTests:

Add tests checking that the "translate" CSS property is applied in the correct order related to
"transform-origin" and "transform" and that it is applied in SVG as well.

  • imported/w3c/web-platform-tests/css/cssom/cssstyledeclaration-csstext-expected.txt:
  • imported/w3c/web-platform-tests/css/css-cascade/all-prop-initial-xml-expected.txt:
  • platform/ios-13/imported/w3c/web-platform-tests/css/css-cascade/all-prop-initial-xml-expected.txt:
  • platform/ios-wk2/imported/w3c/web-platform-tests/css/cssom/cssstyledeclaration-csstext-expected.txt:
  • transforms/2d/translate-and-transform-attribute-in-svg-expected.svg: Added.
  • transforms/2d/translate-and-transform-attribute-in-svg.svg: Added.
  • transforms/2d/translate-and-transform-css-property-in-svg-expected.svg: Added.
  • transforms/2d/translate-and-transform-css-property-in-svg.svg: Added.
  • transforms/2d/translate-in-svg-expected.svg: Added.
  • transforms/2d/translate-in-svg.svg: Added.
  • transforms/2d/translate-transform-order-expected.html: Added.
  • transforms/2d/translate-transform-order.html: Added.
  • transforms/2d/translate-transform-origin-order-expected.html: Added.
  • transforms/2d/translate-transform-origin-order.html: Added.
10:24 AM Changeset in webkit [267886] by Jonathan Bedard
  • 2 edits in trunk/Tools

Update my information in contributors.json

Unreviewed.

  • Scripts/webkitpy/common/config/contributors.json:
9:39 AM Changeset in webkit [267885] by weinig@apple.com
  • 57 edits
    4 copies
    13 deletes in trunk

Remove code behind ENABLE(MEDIA_SESSION), no ports enable it
https://bugs.webkit.org/show_bug.cgi?id=216831

Reviewed by Alex Christensen.

.:

  • Source/cmake/OptionsFTW.cmake:
  • Source/cmake/WebKitFeatures.cmake:

Remove option to build with MEDIA_SESSION, no one was doing it.

Source/WebCore:

  • CMakeLists.txt:
  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:

Remove media session related files.

  • Modules/airplay/PlaybackTargetClientContextIdentifier.h: Added.
  • Modules/airplay/WebMediaSessionManager.cpp: Added.
  • Modules/airplay/WebMediaSessionManager.h: Added.
  • Modules/airplay/WebMediaSessionManagerClient.h: Added.
  • Modules/mediasession: Removed.
  • platform/mediasession: Removed.

Delete Modules/mediasession and platform/mediasession. Move files that
were actually used for the WIRELESS_PLAYBACK_TARGET feature to
Modules/airplay where other parts of that feature are implemented.

  • dom/Document.cpp:
  • dom/Document.h:
  • dom/EventTargetFactory.in:
  • html/HTMLMediaElement.cpp:
  • html/HTMLMediaElement.h:
  • page/ChromeClient.h:
  • page/Page.cpp:
  • page/Page.h:
  • testing/Internals.cpp:
  • testing/Internals.h:
  • testing/Internals.idl:

Remove all code inside ENABLE(MEDIA_SESSION).

Source/WebKit:

Removes all code in ENABLE(MEDIA_SESSION) and all media session
related SPI. It was never enabled and nothing ever adopted it.

  • Sources.txt:
  • SourcesCocoa.txt:
  • WebKit.xcodeproj/project.pbxproj:

Remove media session related files.

  • Shared/API/APIObject.h:
  • Shared/API/c/WKBase.h:
  • Shared/WebCoreArgumentCoders.cpp:
  • Shared/WebCoreArgumentCoders.h:
  • Shared/WebMediaSessionMetadata.cpp: Removed.
  • Shared/WebMediaSessionMetadata.h: Removed.
  • UIProcess/API/APIUIClient.h:
  • UIProcess/API/C/WKAPICast.h:
  • UIProcess/API/C/WKContext.cpp:
  • UIProcess/API/C/WKContext.h:
  • UIProcess/API/C/WKMediaSessionFocusManager.cpp: Removed.
  • UIProcess/API/C/WKMediaSessionFocusManager.h: Removed.
  • UIProcess/API/C/WKMediaSessionMetadata.cpp: Removed.
  • UIProcess/API/C/WKMediaSessionMetadata.h: Removed.
  • UIProcess/API/C/WKPage.cpp:
  • UIProcess/API/C/WKPagePrivate.h:
  • UIProcess/API/C/WKPageUIClient.h:
  • UIProcess/WebMediaSessionFocusManager.cpp: Removed.
  • UIProcess/WebMediaSessionFocusManager.h: Removed.
  • UIProcess/WebMediaSessionFocusManagerClient.cpp: Removed.
  • UIProcess/WebMediaSessionFocusManagerClient.h: Removed.
  • UIProcess/WebPageProxy.cpp:
  • UIProcess/WebPageProxy.h:
  • UIProcess/WebPageProxy.messages.in:
  • UIProcess/WebProcessPool.cpp:
  • UIProcess/WebProcessPool.h:
  • WebProcess/WebCoreSupport/WebChromeClient.cpp:
  • WebProcess/WebCoreSupport/WebChromeClient.h:
  • WebProcess/WebPage/WebPage.cpp:
  • WebProcess/WebPage/WebPage.h:
  • WebProcess/WebPage/WebPage.messages.in:

Remove all code in ENABLE(MEDIA_SESSION).

Tools:

  • Scripts/webkitperl/FeatureList.pm:

Remove support for building with MEDIA_SESSION enabled.

  • WebKitTestRunner/TestController.cpp:

(WTR::TestController::createOtherPage):
(WTR::TestController::createWebViewWithOptions):
Update names to new 'unused' naming.

LayoutTests:

Remove always skipped Media Session tests.

9:36 AM commit-identifiers edited by Jonathan Bedard
(diff)
9:31 AM commit-identifiers edited by Jonathan Bedard
(diff)
9:30 AM commit-identifiers edited by Jonathan Bedard
(diff)
9:01 AM Changeset in webkit [267884] by weinig@apple.com
  • 5 edits
    7 deletes in trunk/LayoutTests

Remove unhelpful dom-static-property-for-in-iteration.html test
https://bugs.webkit.org/show_bug.cgi?id=217204

Reviewed by Chris Dumez.

Iteration order for builtin attributes, operations and constants of WebIDL
objects is not currently defined, so the test dom-static-property-for-in-iteration.html,
is just testing what we happen to currently do. This is largely unhelpful
and frustrating to maintain as different ports enabling/disabling features
means each port needed a seperate result, and any time something was added, removed
or moved, all the results need to be updated. There are plenty of other tests
that ensure we have these properties, so removing this is not a loss.

  • js/dom/dom-static-property-for-in-iteration-expected.txt: Removed.
  • js/dom/dom-static-property-for-in-iteration.html: Removed.
  • platform/gtk/js/dom/dom-static-property-for-in-iteration-expected.txt: Removed.
  • platform/ios-wk2/TestExpectations:
  • platform/ios-wk2/js/dom/dom-static-property-for-in-iteration-expected.txt: Removed.
  • platform/ios/TestExpectations:
  • platform/mac-wk2/js/dom/dom-static-property-for-in-iteration-expected.txt: Removed.
  • platform/win/TestExpectations:
  • platform/win/js/dom/dom-static-property-for-in-iteration-expected.txt: Removed.
  • platform/wincairo/TestExpectations:
  • platform/wpe/js/dom/dom-static-property-for-in-iteration-expected.txt: Removed.
9:00 AM Changeset in webkit [267883] by Karl Rackler
  • 57 edits
    10 copies
    4 moves
    49 adds in trunk

Unreviewed, reverting r267796.

This change is breaking the build on AzulE debug bots.

Reverted changeset:

"Remove code behind ENABLE(MEDIA_SESSION), no ports enable it"
https://bugs.webkit.org/show_bug.cgi?id=216831
https://trac.webkit.org/changeset/267796

8:58 AM commit-identifiers created by Jonathan Bedard
8:58 AM WikiStart edited by Jonathan Bedard
(diff)
8:57 AM WikiStart edited by Jonathan Bedard
Add link to Commit Identifiers (diff)
8:54 AM Changeset in webkit [267882] by Adrian Perez de Castro
  • 4 edits in trunk

[GTK] Build broken with ENABLE_MEDIA_STREAM enabled and ENABLE_WEB_RTC_DISABLED
https://bugs.webkit.org/show_bug.cgi?id=217128

Reviewed by Philippe Normand.

.:

  • Source/cmake/GStreamerChecks.cmake: Only enable USE_LIBWEBRTC when both

ENABLE_MEDIA_STREAM and ENABLE_WEB_RTC is defined. This prevents trying to
build code that uses libwebrtc types when ENABLE_WEB_RTC is disabled but
ENABLE_MEDIA_STREAM is enabled.

Source/WebCore:

No new tests needed.

  • platform/mediastream/gstreamer/GStreamerAudioData.h: Remove USE(LIBWEBRTC) guard, as

there is nothing specific to WebRTC in this file, and it is needed when building with
ENABLE_MEDIA_STREAM enabled.

8:48 AM Changeset in webkit [267881] by Megan Gardner
  • 4 edits in trunk/Source/WebCore

Rename repaint to repaintSelection in HighlightData for clarity
https://bugs.webkit.org/show_bug.cgi?id=217205

Reviewed by Tim Horton.

No behavior change, covered by existing tests.

  • editing/FrameSelection.cpp:

(WebCore::FrameSelection::focusedOrActiveStateChanged):

  • rendering/HighlightData.cpp:

(WebCore::HighlightData::repaintSelection const):
(WebCore::HighlightData::repaint const): Deleted.

  • rendering/HighlightData.h:
8:45 AM Changeset in webkit [267880] by Alan Bujtas
  • 3 edits in trunk/Source/WebCore

[LFC][IFC] Do not use simplified text measuring when soft hyphen is present
https://bugs.webkit.org/show_bug.cgi?id=217224

Reviewed by Antti Koivisto.

Specifically the monospaced fast codepath computes incorrect widht value when soft hyphens are present.

  • layout/layouttree/LayoutTreeBuilder.cpp:

(WebCore::Layout::canUseSimplifiedTextMeasuring):

  • rendering/RenderText.cpp:

(WebCore::RenderText::computeCanUseSimplifiedTextMeasuring const):

8:29 AM Changeset in webkit [267879] by Adrian Perez de Castro
  • 2 edits in trunk/Source/JavaScriptCore

Unreviewed. [GTK] Add missing locale.h header needed for setlocale()

  • jsc.cpp: Add missing locale.h header for the GTK port, which is needed to get the

definition for setlocale() in scope.

8:27 AM Changeset in webkit [267878] by Andres Gonzalez
  • 10 edits in trunk

Layout Test accessibility/mac/html5-input-number.html is flaky.
https://bugs.webkit.org/show_bug.cgi?id=180560
<rdar://problem/36029379>

Reviewed by Chris Fleizach.

Source/WebCore:

Fix for this test in both isolated tree mode on and off.

  • accessibility/AccessibilitySpinButton.h:

AccessibilitySpinButtonPart::roleValue now returns SpinButtonPart role
as it should.

  • accessibility/mac/AccessibilityObjectMac.mm:

(WebCore::Accessibility::createPlatformRoleMap):
Appropriate platform role string for SpinButtonPart role.

Tools:

Dispatch the computation of the role and subrole to secondary AX thread in isolated tree mode = 2.

  • WebKitTestRunner/InjectedBundle/mac/AccessibilityUIElementMac.mm:

(WTR::AccessibilityUIElement::role):
(WTR::AccessibilityUIElement::subrole):

LayoutTests:

SpinButtonPart platform role string is "AXIncrementorArrow".

  • accessibility/mac/html5-input-number-expected.txt:
  • accessibility/mac/html5-input-number.html:

Eliminated flakiness by making test deterministic using Promises. Works
in both isolated tree mode on and off.

  • accessibility/spinbutton-crash-expected.txt:
  • platform/mac/TestExpectations: Test no longer flaky.
7:27 AM Changeset in webkit [267877] by Antti Koivisto
  • 7 edits in trunk/Source/WebCore

[LFC][Integration] Convert rest of Position::inlineBoxAndOffset to use iterator
https://bugs.webkit.org/show_bug.cgi?id=217214

Reviewed by Zalan Bujtas.

Progress towards allowing Position construction in all cases without forcing legacy inline layout.

  • dom/Position.cpp:

(WebCore::InlineBoxAndOffset::InlineBoxAndOffset):
(WebCore::Position::inlineBoxAndOffset const):

  • dom/Position.h:
  • layout/integration/LayoutIntegrationRunIterator.cpp:

(WebCore::LayoutIntegration::RunIterator::setAtEnd):
(WebCore::LayoutIntegration::RunIterator::previousOnLine const):
(WebCore::LayoutIntegration::RunIterator::nextOnLineIgnoringLineBreak const):
(WebCore::LayoutIntegration::RunIterator::previousOnLineIgnoringLineBreak const):
(WebCore::LayoutIntegration::LineRunIterator::traversePreviousOnLine):
(WebCore::LayoutIntegration::LineRunIterator::traverseNextOnLineIgnoringLineBreak):
(WebCore::LayoutIntegration::LineRunIterator::traversePreviousOnLineIgnoringLineBreak):

  • layout/integration/LayoutIntegrationRunIterator.h:

(WebCore::LayoutIntegration::Run::leftmostCaretOffset const):
(WebCore::LayoutIntegration::Run::rightmostCaretOffset const):
(WebCore::LayoutIntegration::Run::direction const):
(WebCore::LayoutIntegration::Run::isLeftToRightDirection const):
(WebCore::LayoutIntegration::Run::bidiLevel const):

  • layout/integration/LayoutIntegrationRunIteratorLegacyPath.h:

(WebCore::LayoutIntegration::LegacyPath::bidiLevel const):
(WebCore::LayoutIntegration::LegacyPath::traversePreviousOnLine):
(WebCore::LayoutIntegration::LegacyPath::setAtEnd):
(WebCore::LayoutIntegration::LegacyPath::isLeftToRightDirection const): Deleted.

  • layout/integration/LayoutIntegrationRunIteratorModernPath.h:

(WebCore::LayoutIntegration::ModernPath::bidiLevel const):
(WebCore::LayoutIntegration::ModernPath::traverseNextOnLine):
(WebCore::LayoutIntegration::ModernPath::traversePreviousOnLine):
(WebCore::LayoutIntegration::ModernPath::setAtEnd):
(WebCore::LayoutIntegration::ModernPath::line const):
(WebCore::LayoutIntegration::ModernPath::isLeftToRightDirection const): Deleted.

6:51 AM Changeset in webkit [267876] by Adrian Perez de Castro
  • 3 edits in trunk/Source/WebCore

Unreviewed non-unified build fix.

No new tests needed.

  • Modules/webaudio/AudioWorkletMessagingProxy.cpp: Add missing AudioWorkletGlobalScope.h header.
  • worklets/WorkletPendingTasks.cpp: Add missing Worklet.h header.
6:35 AM Changeset in webkit [267875] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebKit

[GTK] WPE and backend versions are mixed up in webkit://gpu
https://bugs.webkit.org/show_bug.cgi?id=217210

Patch by Alexander Mikhaylenko <alexm@gnome.org> on 2020-10-02
Reviewed by Adrian Perez de Castro.

  • UIProcess/API/glib/WebKitProtocolHandler.cpp:

(WebKit::WebKitProtocolHandler::handleGPU):

6:08 AM WikiStart edited by aakash_jain@apple.com
Updated link to EWS (diff)
5:25 AM Changeset in webkit [267874] by commit-queue@webkit.org
  • 18 edits
    5 deletes in trunk

Unreviewed, reverting r267864.
https://bugs.webkit.org/show_bug.cgi?id=217220

Added broken tests

Reverted changeset:

"[GPU Process] Support drawing text in 2D canvas with font
features"
https://bugs.webkit.org/show_bug.cgi?id=206118
https://trac.webkit.org/changeset/267864

5:03 AM Changeset in webkit [267873] by Carlos Garcia Campos
  • 2 edits in trunk/WebDriverTests

Unreviewed Gardening. Remove expectations for tests fixed in r267872

4:54 AM Changeset in webkit [267872] by Carlos Garcia Campos
  • 3 edits in trunk/Source/WebDriver

WebDriver: check the right browser context is open in all commands
https://bugs.webkit.org/show_bug.cgi?id=217177

Reviewed by Carlos Alberto Lopez Perez.

We currently check the top level browsing context for all commands, but the current browsing context should be
checked instead in some of them. New tests added to check this are now failing. This patch changes the way we
were handling the current browsing context, considering nullopt to be the main frame of the current top level
browsing context. Now the null string is used for that, matching what automation expects in the browser and
nullopt means the browser context is closed. That way we can check if the current browser context has been
closed.

  • Session.cpp:

(WebDriver::Session::close): Also close the current browsing context.
(WebDriver::Session::switchToTopLevelBrowsingContext): Initialize the current browsing context to null string.
(WebDriver::Session::switchToBrowsingContext): Just set the given context now.
(WebDriver::Session::go): Pass null string to switchToBrowsingContext().
(WebDriver::Session::back): Ditto.
(WebDriver::Session::forward): Ditto.
(WebDriver::Session::refresh): Ditto.
(WebDriver::Session::closeWindow): Close the current browsing context too.
(WebDriver::Session::switchToFrame): If frame is null check top level browsing context is open, otherwise check
current browsing context.
(WebDriver::Session::findElements): Check current browsing context is open instead of toplevel one.
(WebDriver::Session::getActiveElement): Ditto.
(WebDriver::Session::isElementSelected): Ditto.
(WebDriver::Session::getElementText): Ditto.
(WebDriver::Session::getElementTagName): Ditto.
(WebDriver::Session::getElementRect): Ditto.
(WebDriver::Session::isElementEnabled): Ditto.
(WebDriver::Session::getElementAttribute): Ditto.
(WebDriver::Session::getElementProperty): Ditto.
(WebDriver::Session::getElementCSSValue): Ditto.
(WebDriver::Session::waitForNavigationToComplete): Ditto. Also close the current browsing context when the
window or the frame are closed to do the navigation.
(WebDriver::Session::elementClick): Check current browsing context is open instead of toplevel one.
(WebDriver::Session::elementClear): Ditto.
(WebDriver::Session::elementSendKeys): Ditto.
(WebDriver::Session::getPageSource): Ditto.
(WebDriver::Session::executeScript): Ditto.
(WebDriver::Session::getAllCookies): Ditto.
(WebDriver::Session::addCookie): Ditto.
(WebDriver::Session::deleteCookie): Ditto.
(WebDriver::Session::deleteAllCookies): Ditto.
(WebDriver::Session::performActions): Ditto.
(WebDriver::Session::takeScreenshot): Check current browsing context is open instead of toplevel one when an
element is given.

  • Session.h:
4:44 AM Changeset in webkit [267871] by commit-queue@webkit.org
  • 3 edits in trunk/Tools

[GTK] Fix MiniBrowser compilation warnings
https://bugs.webkit.org/show_bug.cgi?id=217208

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

webkit_web_context_set_network_proxy_settings() is deprecated in favor of
webkit_website_data_manager_set_network_proxy_settings().
webkit_web_context_set_tls_errors_policy() is deprecated in favor of
webkit_website_data_manager_set_tls_errors_policy().

  • MiniBrowser/gtk/main.c:

(activate):

  • MiniBrowser/wpe/main.cpp:

(main):

2:38 AM Changeset in webkit [267870] by youenn@apple.com
  • 11 edits
    1 add in trunk

Add AVAssetWriter SPI header
https://bugs.webkit.org/show_bug.cgi?id=217169
<rdar://problem/69793050>

Reviewed by Eric Carlson.

Source/WebCore:

No change of behavior, include SPI header instead of private SDK header.

  • platform/mediarecorder/cocoa/MediaRecorderPrivateWriterCocoa.mm:

Source/WebCore/PAL:

  • PAL.xcodeproj/project.pbxproj:
  • pal/spi/cocoa/AVAssetWriterSPI.h: Added.

Source/WTF:

  • wtf/PlatformHave.h:

Remove dependency on AVAssetWriter_private.h.
Introduce HAVE_AVASSETWRITERDELEGATE_API for older OSes that only have delegate as SPI.

LayoutTests:

Enable tests by default on Catalina+, disable them on Mojave and WK1.
Disable tests for iOS13.

  • TestExpectations:
  • platform/ios-13/TestExpectations:
  • platform/mac/TestExpectations:
  • platform/mac-wk1/TestExpectations:
12:05 AM Changeset in webkit [267869] by commit-queue@webkit.org
  • 23 edits
    3 adds in trunk

[iOS WK1] Crashes when using ANGLE WebGL from another thread
https://bugs.webkit.org/show_bug.cgi?id=216106
<rdar://problem/68602452>

Patch by Kimmo Kinnunen <kkinnunen@apple.com> on 2020-10-02
Reviewed by Kenneth Russell.

Source/ThirdParty/ANGLE:

Add two extensions for EAGL and CGL backends to declare the
underlying platform context being "volatile". It means that
the thread-global current context is being modified behind
ANGLE. If ANGLE context is marked volatile for a particular
API, it will sync the underlying context for every EGL
function that needs the context. Most intuitive use is
for the client to call eglMakeCurrent before calling any
gl function if the client knowns the platform state might
be dirty.

Implement eglReleaseThread for EAGL and CGL backends.
Releasing thread will unset the platform current context.

Fix a bug of omitting EGL_ANGLE_device_eagl from being
advertised.

  • extensions/EGL_ANGLE_platform_angle_device_context_volatile_cgl.txt: Added.
  • extensions/EGL_ANGLE_platform_angle_device_context_volatile_eagl.txt: Added.
  • include/EGL/eglext_angle.h:
  • src/libANGLE/Caps.cpp:

(egl::DeviceExtensions::getStrings const):
(egl::ClientExtensions::getStrings const):

  • src/libANGLE/Caps.h:
  • src/libANGLE/Display.cpp:

(egl::Display::prepareForCall):
(egl::Display::releaseThread):
(egl::GenerateClientExtensions):

  • src/libANGLE/Display.h:
  • src/libANGLE/renderer/DisplayImpl.cpp:

(rx::DisplayImpl::prepareForCall):
(rx::DisplayImpl::releaseThread):

  • src/libANGLE/renderer/DisplayImpl.h:
  • src/libANGLE/renderer/gl/cgl/DisplayCGL.h:
  • src/libANGLE/renderer/gl/cgl/DisplayCGL.mm:

(rx::DisplayCGL::initialize):
(rx::DisplayCGL::terminate):
(rx::DisplayCGL::prepareForCall):
(rx::DisplayCGL::releaseThread):
(rx::DisplayCGL::makeCurrent):

  • src/libANGLE/renderer/gl/eagl/DisplayEAGL.h:
  • src/libANGLE/renderer/gl/eagl/DisplayEAGL.mm:

(rx::DisplayEAGL::initialize):
(rx::DisplayEAGL::terminate):
(rx::DisplayEAGL::prepareForCall):
(rx::DisplayEAGL::releaseThread):

  • src/libANGLE/validationEGL.cpp:
  • src/libGLESv2/entry_points_egl.cpp:
  • src/libGLESv2/entry_points_egl_ext.cpp:

Source/WebCore:

Source of the bug comes from following:

  • WK1 might run WebKit code in client main thread.
  • WK1 might run Webkit code in web thread.
  • WebKit code might run WebGL payload, notably access GraphicsContextGL classes. Client is able to modify EAGL/CGL current context.

The change to ANGLE incurred two distinct behavior changes
compared to raw EAGL / CGL:
1) Before: context was set current before any GL call
After: context was set current only if EGL current context
had been changed. (Explicit code as well as ANGLE implementation
optimization.)

2) Before: context being used was able to be current in
multiple threads at the same time. (EAGL/CGL feature)
After: context cannot be current in multiple threads
at the same time. (EGL feature)

Change in behavior 1) caused ANGLE to sometimes use
the EAGL/CGL context of the client instead of
the real context that ANGLE created.
Fix this by introducing
EGL_ANGLE_platform_angle_device_context_volatile_eagl
and
EGL_ANGLE_platform_angle_device_context_volatile_cgl
which make ANGLE sync the context on each eglMakeCurrent
eglReleaseThread and eglTerminate.

Change in behavior 2) caused ANGLE to use uninitialized
context object from one thread, if the real context object
was current in another thread.
Fix this by considering "GraphicsContextGLOpenGL current context"
as part of "data that is owned by WebCoreThread lock".
The current context is set with lock held, implicitly.
The current context is released when lock is released.
When the lock is not held, GraphicsContextGLOpenGL current context
is nullptr.

Adds soft linking for EAGL for the purpose of testing this in
TestWebKitAPI. The case of Apple Silicon Mac may sometimes
use CGL and sometimes EAGL, and the test should test that
client overriding both contexts will not cause problems.

Fix ANGLE header include path:

  • Do not include ANGLE in the path, as files are included with ANGLE/
  • Add WK_ALTERNATE_FRAMEWORKS_DIR so that SDK_VARIANT=iosmac e.g. maccatalyst builds work

Previously the ANGLE was not included from ThirdParty/ANGLE, rather
"WebKit SDK".

  • Configurations/WebCore.xcconfig:
  • platform/graphics/cocoa/GraphicsContextGLOpenGLCocoa.mm:

(WebCore::GraphicsContextGLOpenGL::GraphicsContextGLOpenGL):
(WebCore::GraphicsContextGLOpenGL::~GraphicsContextGLOpenGL):
(WebCore::GraphicsContextGLOpenGL::makeContextCurrent):
(WebCore::GraphicsContextGLOpenGL::releaseCurrentContext):
(WebCore::GraphicsContextGLOpenGL::checkGPUStatus):
(WebCore::GraphicsContextGLOpenGL::allowOfflineRenderers const):

  • platform/graphics/opengl/GraphicsContextGLOpenGL.h:
  • platform/ios/wak/WebCoreThread.mm:

(WebThreadUnlockFromAnyThread):
(_WebThreadUnlock):

Tools:

Add a WK1 test which runs WebGL code both in
client main thread and in web thread.
This tests the case where ANGLE EGL context is
not being held current in one thread while the
other thread runs WebGL and thus ANGLE EGL code.

  • TestWebKitAPI/Configurations/TestWebKitAPI.xcconfig:
  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/WebKitLegacy/ios/WebGLNoCrashOnOtherThreadAccess.mm: Added.

(-[WebGLNoCrashOnOtherThreadAccessWebViewDelegate webViewDidFinishLoad:]):
(-[WebGLNoCrashOnOtherThreadAccessWebViewDelegate webView:shouldStartLoadWithRequest:navigationType:]):
(TestWebKitAPI::TEST):

Oct 1, 2020:

11:47 PM Changeset in webkit [267868] by Lauro Moura
  • 2 edits in trunk/WebDriverTests

[WebDriver] Gardening no_browsing_context failures.

Unreviewed test gardening.

11:14 PM Changeset in webkit [267867] by ysuzuki@apple.com
  • 6 edits in trunk/Source/JavaScriptCore

[JSC] Masm probe should invoke JIT operation function
https://bugs.webkit.org/show_bug.cgi?id=217199

Reviewed by Mark Lam.

Masm probe function should be invoked via OperationPtrTag since it is invoked from JIT code, and it is native code.
And we should register probe trampoline as JIT operation.

  • assembler/MacroAssemblerARM64.cpp:

(JSC::MacroAssembler::probe):

  • assembler/MacroAssemblerARMv7.cpp:
  • assembler/MacroAssemblerMIPS.cpp:
  • assembler/MacroAssemblerX86Common.cpp:
  • runtime/JSCPtrTag.h:
11:06 PM Changeset in webkit [267866] by commit-queue@webkit.org
  • 4 edits in trunk

update FormData to latest spec webidl
https://bugs.webkit.org/show_bug.cgi?id=171589

Patch by Rob Buis <rbuis@igalia.com> on 2020-10-01
Reviewed by Alex Christensen.

LayoutTests/imported/w3c:

Update improved test result.

  • web-platform-tests/xhr/formdata-expected.txt:

Source/WebCore:

Change FormData contructor to not take optional, nullable
parameter.

Test: imported/w3c/web-platform-tests/xhr/formdata.html

  • html/DOMFormData.cpp:

(WebCore::DOMFormData::DOMFormData):

  • html/DOMFormData.h:

(WebCore::DOMFormData::create):

  • html/DOMFormData.idl:
6:42 PM Changeset in webkit [267865] by weinig@apple.com
  • 8 edits in trunk

[WebIDL] Add support for non-nullable optional wrapper type arguments to operations
https://bugs.webkit.org/show_bug.cgi?id=217162

Reviewed by Chris Dumez.
Source/WebCore:

The bindings currently treat both nullable and optional wrapper types as
having type WrapperType* (or RefPtr<WrapperType> for callbacks), whereas
non-nullable, non-optional wrapper types are treated as having type WrapperType&
(or Ref<WrapperType> for callbacks). This parallels non wrapper types
which use Optional<Type> for both nullable and optional vs Type for the
non-nullable non-optional variant. In both these cases, there is possibility
for ambiguity, should we ever need to disambiguate between nullable and
optional, but thus far it hasn't come up.

This change adds a missing case where we weren't supporting non-nullable
optional wrapper type arguments to operations. We solve this by expecting
the wrapped implementation to take the optional wrapper type argument the
same way it would take an optional wrapper type argument, with a WrapperType*,
(or RefPtr<WrapperType> for callbacks) that gets passed a nullptr if the
parameter was ommited.

Adopt this in Geolocation.idl, which has had a FIXME for this for a long
time.

  • Modules/geolocation/Geolocation.idl:
  • bindings/scripts/CodeGeneratorJS.pm:
  • bindings/scripts/test/JS/JSTestObj.cpp:
  • bindings/scripts/test/TestObj.idl:

LayoutTests:

  • fast/dom/Geolocation/argument-types.html:
  • fast/dom/Geolocation/argument-types-expected.txt:

Update tests now that the second argument to Geolocation.getCurrentPosition
and Geolocation.watchPosition are non-nullable.

6:16 PM Changeset in webkit [267864] by mmaxfield@apple.com
  • 18 edits
    5 adds in trunk

[GPU Process] Support drawing text in 2D canvas with font features
https://bugs.webkit.org/show_bug.cgi?id=206118

Reviewed by Wenson Hsieh.

Source/WebCore:

This patch simply serializes all the non-derived data in Font and FontPlatformData.

Serializing a CTFont involves serializing its font descriptor's attributes. However,
there's an extra step for web fonts, since the font descriptor's attributes don't include
the raw bytes of the font file. This was previously being saved in Font, but this patch
moves that into FontPlatformData because of layering, and adds the SharedBuffer to the
serialization routine for web fonts.

Test: fast/canvas/fill-text-with-font-features.html

  • WebCore.xcodeproj/project.pbxproj:
  • css/CSSFontFace.cpp:

(WebCore::CSSFontFace::font): Fonts and FontPlatformDatas are supposed to be immutable, so
having a setter for the FontFaceData is incorrect. This object is moved into the constructor
instead.

  • css/CSSFontFaceSource.cpp:

(WebCore::CSSFontFaceSource::font): Deleting dead code.

  • platform/graphics/Font.cpp:

(WebCore::Font::setFontFaceData): Deleted.

  • platform/graphics/Font.h:

(WebCore::Font::fontFaceData const): Deleted. Moved to FontPlatformData

  • platform/graphics/FontPlatformData.cpp:

(WebCore::FontPlatformData::FontPlatformData):

  • platform/graphics/FontPlatformData.h:

(WebCore::FontPlatformData::creationData const): Moved from Font.

  • platform/graphics/coretext/FontPlatformDataCoreText.cpp:

(WebCore::FontPlatformData::FontPlatformData):

  • platform/graphics/mac/FontCustomPlatformData.cpp:

(WebCore::FontCustomPlatformData::fontPlatformData): FontCustomPlatformData is a struct, so
there's no need for the m_ prefixes.
(WebCore::createFontCustomPlatformData):

  • platform/graphics/mac/FontCustomPlatformData.h:

(WebCore::FontCustomPlatformData::FontCustomPlatformData): Ditto.

Source/WebKit:

Simply serialize and deserialize all the non-derived data in Font and PlatformFontData.

  • Shared/Cocoa/WebCoreArgumentCodersCocoa.mm:

(IPC::ArgumentCoder<Ref<Font>>::encodePlatformData):
(IPC::ArgumentCoder<Ref<Font>>::decodePlatformData):

  • Shared/WebCoreArgumentCoders.cpp:

(IPC::ArgumentCoder<Ref<Font>>::encode):
(IPC::ArgumentCoder<Ref<Font>>::decode):

  • Shared/WebCoreArgumentCoders.h:

LayoutTests:

  • fast/canvas/fill-text-with-font-features-expected.html: Added.
  • fast/canvas/fill-text-with-font-features.html: Added.
  • fast/canvas/resources/FontWithFeatures.ttf: Added.
6:10 PM Changeset in webkit [267863] by Megan Gardner
  • 3 edits
    6 adds in trunk

Repaint as needed when adding and removing highlights
https://bugs.webkit.org/show_bug.cgi?id=217116
Source/WebCore:

<rdar://problem/59076190>

Reviewed by Simon Fraser.

When adding and removing psudo highlights, make sure that the
right areas are repainted.

Test: http/wpt/css/css-highlight-api/highlight-text-repaint.html

  • Modules/highlight/HighlightRangeGroup.cpp:

(WebCore::repaintRange):
(WebCore::HighlightRangeGroup::removeFromSetLike):
(WebCore::HighlightRangeGroup::clearFromSetLike):
(WebCore::HighlightRangeGroup::addToSetLike):

LayoutTests:

Reviewed by Simon Fraser.

  • http/wpt/css/css-highlight-api/highlight-text-repaint-expected.txt: Added.
  • http/wpt/css/css-highlight-api/highlight-text-repaint.html: Added.
  • http/wpt/css/css-highlight-api/highlight-text-replace-expected.html: Removed.
5:18 PM Changeset in webkit [267862] by aakash_jain@apple.com
  • 2 edits in trunk/Tools

Limit number of tests to log in case of large number of API test failures
https://bugs.webkit.org/show_bug.cgi?id=217181

Reviewed by Jonathan Bedard.

  • BuildSlaveSupport/ews-build/steps.py:

(AnalyzeAPITestsResults.analyzeResults):

4:56 PM Changeset in webkit [267861] by Alan Coon
  • 2 edits in branches/safari-611.1.2-branch/Source/WebCore

Cherry-pick r267848. rdar://problem/69862200

REGRESSION(r267249): Crash in WebPage::updatePreferences() when libwebrtc is not available.
https://bugs.webkit.org/show_bug.cgi?id=217186
<rdar://problem/69817170>

Reviewed by Eric Carlson.

Always check for the presence of libwebrtc before calling into it.

  • platform/mediastream/libwebrtc/LibWebRTCProviderCocoa.cpp: (WebCore::LibWebRTCProvider::setH264HardwareEncoderAllowed): (WebCore::LibWebRTCProviderCocoa::createDecoderFactory): (WebCore::LibWebRTCProviderCocoa::createEncoderFactory): (WebCore::LibWebRTCProviderCocoa::setActive):

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

4:41 PM Changeset in webkit [267860] by Chris Dumez
  • 2 edits in trunk/Tools

[DRT] imported/w3c/web-platform-tests/webaudio/the-audio-api/the-audiobuffersourcenode-interface/active-processing.https.html is flaky
https://bugs.webkit.org/show_bug.cgi?id=217187

Reviewed by Eric Carlson.

The test sometimes fails with DRT only because window.AudioWorkletNode does not exist. The thing is that
window.AudioWorkletNode only exists in secure contexts. DumpRenderTree::resetWebViewToConsistentState()
was calling [WebFrame globalContext] before each test, which would eagerly create the Window JS wrapper
if it did not exist yet. Because the wrapper would get created too early, its security origin upon
creation was null and we would decide NOT to expose window.AudioWorkletNode.

To address the issue, I updated DumpRenderTree::resetWebViewToConsistentState() to only call
WebCoreTestSupport::resetInternalsObject([mainFrame globalContext]) after each test, instead of doing
it both before AND after. This new behavior is also more consistent with WebKitTestRunner.

  • DumpRenderTree/mac/DumpRenderTree.mm:

(resetWebViewToConsistentState):
(runTest):

4:21 PM Changeset in webkit [267859] by Chris Dumez
  • 61 edits
    12 copies
    4 adds in trunk

Add basic infrastructure for AudioWorklet
https://bugs.webkit.org/show_bug.cgi?id=217153

Reviewed by Sam Weinig.

Source/WebCore:

Add basic infrastructure for AudioWorklet:

In particular, this adds a partial but spec-compliant implementation of
Worklet.addModule(), as per:

When Worklet.addModule() is called, we create a AudioWorket thread and
a AudioWorkletGlobalScope with its VM. We then ask the AudioWorkletGlobalScope
to fetch and invoke the worklet script. Note that AudioWorkletGlobalScope
does NOT fetch or invoke the worklet script yet to reduce patch size.

Calling Worklet.addModule() activates the AudioWorklet and causes audio rendering
to occur on the AudioWorkletThread.

A few important things that are still missing in this patch:

  • Fetching & invoking worklet scripts
  • Pretty much all API exposed to AudioWorkletGlobalScopes
  • AudioWorkletProcessor support

No new tests, no Web-facing behavior change yet.

  • CMakeLists.txt:
  • DerivedSources-input.xcfilelist:
  • DerivedSources-output.xcfilelist:
  • DerivedSources.make:
  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:

Add new files to projets.

  • Modules/webaudio/AudioWorklet.cpp:

(WebCore::AudioWorklet::create):
(WebCore::AudioWorklet::AudioWorklet):
(WebCore::AudioWorklet::createGlobalScopes):
(WebCore::AudioWorklet::proxy const):

  • Modules/webaudio/AudioWorklet.h:

When the Worklet needs to create a GlobalScope, AudioWorklet takes care of creating a AudioWorkletMessagingProxy.
The AudioWorkletMessagingProxy starts the AudioWorkletThread, which creates the AudioWorkletGlobalScope.
AudioWorkletMessagingProxy takes care of posting tasks from the main thread to the AudioWorkletThread as well.

  • Modules/webaudio/AudioWorkletGlobalScope.cpp: Added.
  • Modules/webaudio/AudioWorkletGlobalScope.h: Added.
  • Modules/webaudio/AudioWorkletGlobalScope.idl: Added.

Add basic implementation for AudioWorkletGlobalScope:

None of the Web API is exposed on the AudioWorkletGlobalScope yet.

  • Modules/webaudio/AudioWorkletMessagingProxy.cpp: Added.
  • Modules/webaudio/AudioWorkletMessagingProxy.h: Added.

Add new AudioWorkletMessagingProxy class (Similar to WorkerMessagingProxy) which starts to AudioWorkletThread
(which constructs the AudioWorkletGlobalScope on that thread) and takes care of posting tasks from the main
thread to the AudioWorkletThread.

  • Modules/webaudio/AudioWorkletThread.cpp: Added.
  • Modules/webaudio/AudioWorkletThread.h: Added.

Add new class which wraps the AudioThread used by AudioWorkets.

  • Modules/webaudio/BaseAudioContext.cpp:

(WebCore::BaseAudioContext::BaseAudioContext):
Pass document when constructing the AudioWorklet since it is now an ActiveDOMObject.

  • Modules/webaudio/DefaultAudioDestinationNode.cpp:

(WebCore::DefaultAudioDestinationNode::enableInput):
(WebCore::Function<void):
(WebCore::DefaultAudioDestinationNode::startRendering):
(WebCore::DefaultAudioDestinationNode::resume):
(WebCore::DefaultAudioDestinationNode::setChannelCount):

  • Modules/webaudio/DefaultAudioDestinationNode.h:

If AudioWorklet is active, pass a function to AudioDestination::start() that dispatches to the
AudioWorkletThread, so that the AudioDestination can do rendering on the AudioWorkletThead instead
of the device's rendering thread.

  • Modules/webaudio/OfflineAudioDestinationNode.cpp:

(WebCore::OfflineAudioDestinationNode::startRendering):
If AudioWorklet is active, use the AudioWorklet's AudioWorkletThread instead of a new audio thread
to do the offline rendering.

  • bindings/js/WebCoreBuiltinNames.h:

Add AudioWorkletGlobalScope since it is exposed conditionally at runtime to AudioWorkets.

  • bindings/js/WebCoreJSClientData.cpp:

(WebCore::JSVMClientData::JSVMClientData):

  • bindings/js/WebCoreJSClientData.h:

Add code to support AudioWorkletGlobalScope as a GlobalScope in our JS bindings.

  • bindings/js/WorkerScriptController.h:

We now subclass WorkerOrWorkletScriptController interface. This allows WorkletScriptController
to reuse WorkerRunLoop.

  • bindings/scripts/CodeGeneratorJS.pm:

(ShouldUseGlobalObjectPrototype):

  • bindings/scripts/preprocess-idls.pl:

Add support for AudioWorkletGlobalScope as global scope in our JS bindings.

  • css/DOMCSSPaintWorklet.cpp:

(WebCore::PaintWorklet::addModule):
(WebCore::PaintWorklet::createGlobalScopes):

  • css/DOMCSSPaintWorklet.h:
  • dom/Document.cpp:

(WebCore::Document::ensurePaintWorklet):
Update PaintWorklet code so that it keeps building.

  • platform/MediaStrategy.h:
  • platform/audio/AudioDestination.h:

Make AudioDestination ThreadSafeRefCounted so that it can keep itself alive
when dispatching to the AudioWorkletThread for rendering.

  • platform/audio/cocoa/AudioDestinationCocoa.cpp:

(WebCore::AudioDestination::create):
(WebCore::AudioDestinationCocoa::start):
(WebCore::AudioDestinationCocoa::stop):
(WebCore::AudioDestinationCocoa::setIsPlaying):
(WebCore::AudioDestinationCocoa::render):
(WebCore::AudioDestinationCocoa::renderOnRenderingThead):

  • platform/audio/cocoa/AudioDestinationCocoa.h:

When we get a request to render audio, we now use the function provided by
the DefaultAudioDestinationNode to dispatch to the AudioWorkletThread when
needed (AudioWorklet is active) before doing the rendering.

  • platform/audio/gstreamer/AudioDestinationGStreamer.cpp:

(WebCore::AudioDestinationGStreamer::start):

  • platform/audio/gstreamer/AudioDestinationGStreamer.h:
  • platform/mock/MockAudioDestinationCocoa.cpp:

(WebCore::MockAudioDestinationCocoa::start):

  • platform/mock/MockAudioDestinationCocoa.h:

Update code so that it keeps building.

  • workers/WorkerGlobalScope.cpp:

(WebCore::WorkerGlobalScope::underlyingThread const):

  • workers/WorkerGlobalScope.h:
  • workers/WorkerOrWorkletGlobalScope.h: Added.
  • workers/WorkerOrWorkletScriptController.h: Added.

Add new interfaces that are subclassed by Worker and Worklet implementation
classes in order to promote code sharing.

  • workers/WorkerRunLoop.cpp:
  • workers/WorkerRunLoop.h:

Update WorkerRunLoop to use WorkerOrWorkletGlobalScope so that it can be
reused by AudioWorkletThread.

  • worklets/Worklet.cpp:

(WebCore::Worklet::Worklet):
(WebCore::Worklet::document):
(WebCore::Worklet::addModule):
(WebCore::Worklet::finishPendingTasks):
(WebCore::Worklet::activeDOMObjectName const):

  • worklets/Worklet.h:

(WebCore::Worklet::proxies const):

  • worklets/Worklet.idl:

Add initial implementation for addModule():

Make Worklet an ActiveDOMObject since it needs to resolve a JS promise asynchronously.

  • worklets/WorkletGlobalScope.cpp:

(WebCore::WorkletGlobalScope::WorkletGlobalScope):
(WebCore::WorkletGlobalScope::evaluate):
(WebCore::WorkletGlobalScope::completeURL const):
(WebCore::WorkletGlobalScope::fetchAndInvokeScript):

  • worklets/WorkletGlobalScope.h:

(WebCore::WorkletGlobalScope::isAudioWorkletGlobalScope const):

  • worklets/WorkletGlobalScope.idl:

Update WorkletGlobalScope so that it can be subclassed by AudioWorkletGlobalScope and not
be PaintWorklet-specific.

  • worklets/WorkletGlobalScopeProxy.h: Added.

Add WorkletGlobalScopeProxy interface to interact with the WorkletGlobalScope interface.
The purpose of this class is to post tasks to the WorkletGlobalScope, abstracting away
potential threading complexity. Note that AudioWorkets use threading while PaintWorklets
do not.

  • worklets/WorkletPendingTasks.cpp: Added.

(WebCore::WorkletPendingTasks::WorkletPendingTasks):
(WebCore::WorkletPendingTasks::abort):
(WebCore::WorkletPendingTasks::decrementCounter):

  • worklets/WorkletPendingTasks.h: Added.

(WebCore::WorkletPendingTasks::create):
Add implementation for:

While it is not strictly needed right for AudioWorklet (because there is always a single
WorkletGlobalScope), it will be needed once we have proper support for PaintWorklets.
PaintWorklets can have several WorkletGlobalScopes. In the mean time, it allows us to
have code that matches the specification text more closely.

  • worklets/WorkletScriptController.cpp:

(WebCore::WorkletScriptController::WorkletScriptController):
(WebCore::WorkletScriptController::initScript):
(WebCore::WorkletScriptController::releaseHeapAccess):
(WebCore::WorkletScriptController::acquireHeapAccess):
(WebCore::WorkletScriptController::addTimerSetNotification):
(WebCore::WorkletScriptController::removeTimerSetNotification):
(WebCore::WorkletScriptController::scheduleExecutionTermination):
(WebCore::WorkletScriptController::isTerminatingExecution const):

  • worklets/WorkletScriptController.h:

Update WorkletScriptController so that it can be used by AudioWorklets and not just
PaintWorklets.

Source/WebKit:

Update RemoteAudioDestinationProxy to match what was done in AudioDestinationCocoa.
RemoteAudioDestinationProxy is used when the GPU process is enabled.

  • GPUProcess/media/RemoteAudioDestinationManager.cpp:

(WebKit::RemoteAudioDestination::start):

  • WebProcess/GPU/media/RemoteAudioDestinationProxy.cpp:

(WebKit::RemoteAudioDestinationProxy::create):
(WebKit::RemoteAudioDestinationProxy::start):
(WebKit::RemoteAudioDestinationProxy::stop):
(WebKit::RemoteAudioDestinationProxy::renderBuffer):

  • WebProcess/GPU/media/RemoteAudioDestinationProxy.h:
  • WebProcess/GPU/media/WebMediaStrategy.cpp:

(WebKit::WebMediaStrategy::createAudioDestination):

  • WebProcess/GPU/media/WebMediaStrategy.h:

Source/WebKitLegacy/mac:

  • WebCoreSupport/WebPlatformStrategies.mm:

Source/WebKitLegacy/win:

  • WebCoreSupport/WebPlatformStrategies.cpp:
4:12 PM Changeset in webkit [267858] by don.olmstead@sony.com
  • 18 edits in trunk/Source

Non-unified build fixes, early October 2020 edition
https://bugs.webkit.org/show_bug.cgi?id=217165

Reviewed by Yusuke Suzuki.

Source/JavaScriptCore:

  • llint/LLIntEntrypoint.h:
  • llint/LLIntSlowPaths.cpp:

Source/WebCore:

  • css/parser/CSSSelectorParser.cpp:
  • display/DisplayTreeBuilder.h:
  • display/DisplayView.cpp:
  • editing/TextManipulationController.cpp:
  • layout/flexformatting/FlexFormattingContext.cpp:
  • layout/flexformatting/FlexFormattingContextGeometry.cpp:
  • layout/inlineformatting/InlineLine.cpp:
  • layout/integration/LayoutIntegrationCoverage.cpp:
  • layout/integration/LayoutIntegrationCoverage.h:
  • platform/graphics/displaylists/DisplayListItems.cpp:
  • platform/graphics/displaylists/DisplayListRecorder.cpp:

Source/WebKit:

  • WebProcess/GPU/graphics/ImageBufferShareableBitmapBackend.h:
  • WebProcess/WebPage/atk/WebKitWebPageAccessibilityObject.cpp:
4:10 PM Changeset in webkit [267857] by don.olmstead@sony.com
  • 2 edits in trunk/Source/WebCore

[PlayStation] Fix build break after r267753
https://bugs.webkit.org/show_bug.cgi?id=217188

Reviewed by Fujii Hironori.

After r267753 the PlayStation builds started failing with an error around a structured
binding declaration of a tuple type.

No new tests. No change in behavior.

  • Modules/indexeddb/server/SQLiteIDBBackingStore.cpp:

(WebCore::IDBServer::SQLiteIDBBackingStore::handleDuplicateIndexIDs):

3:40 PM Changeset in webkit [267856] by Karl Rackler
  • 2 edits in trunk/LayoutTests

REGRESSION (r267814): [ Mojave+ release wk2 ] inspector/console/queryHolders.html is a flaky failure
https://bugs.webkit.org/show_bug.cgi?id=217193

Unreviewed test gardening.

  • platform/mac-wk2/TestExpectations:
3:40 PM Changeset in webkit [267855] by Peng Liu
  • 2 edits in trunk/Source/WebCore

Handle deprecation warnings from libwebrtc headers
https://bugs.webkit.org/show_bug.cgi?id=217126

Reviewed by Tim Horton.

(A follow-up patch) Disable deprecation warnings coming from libwebrtc headers.

  • Modules/mediastream/libwebrtc/LibWebRTCStatsCollector.h:
3:18 PM Changeset in webkit [267854] by msaboff@apple.com
  • 2 edits in trunk/LayoutTests

[macOS/iOS WK2] storage/indexeddb/IDBKey-create-array-buffer-view-oom.html is a flaky timeout
https://bugs.webkit.org/show_bug.cgi?id=216960

Reviewed by Saam Barati.

Speculative fix to stop the test from timing out.

  • storage/indexeddb/IDBKey-create-array-buffer-view-oom.html:
2:52 PM Changeset in webkit [267853] by Jonathan Bedard
  • 4 edits in trunk/Tools

[webkitscmpy] Support git-svn committers
https://bugs.webkit.org/show_bug.cgi?id=217151
<rdar://problem/69812996>

Rubber-stamped by Aakash Jain.

  • Scripts/libraries/webkitscmpy/webkitscmpy/init.py: Bump version number.
  • Scripts/libraries/webkitscmpy/webkitscmpy/contributor.py:

(Contributor):
(Contributor.from_scm_log): Handle case where a commit does not contain an author.

  • Scripts/libraries/webkitscmpy/webkitscmpy/test/contributor_unittest.py:

(TestContributor):
(TestContributor.test_git_no_author):
(TestContributor.test_git_svn_no_author):

2:20 PM Changeset in webkit [267852] by Lauro Moura
  • 2 edits in trunk/LayoutTests

[GLib] Garden webaudio/Convolver/unmmodified-buffer.html flakiness

Unreviewed test gardening.

  • platform/glib/TestExpectations:
1:47 PM Changeset in webkit [267851] by aakash_jain@apple.com
  • 4 edits in trunk/Tools

[build.webkit.org] Rename type to factory in config.json
https://bugs.webkit.org/show_bug.cgi?id=217127

Reviewed by Jonathan Bedard.

  • BuildSlaveSupport/build.webkit.org-config/config.json:
  • BuildSlaveSupport/build.webkit.org-config/loadConfig.py:

(loadBuilderConfig):

  • BuildSlaveSupport/build.webkit.org-config/loadConfig_unittest.py:
1:22 PM Changeset in webkit [267850] by weinig@apple.com
  • 2 edits in trunk/Source/WebKitLegacy/mac

Remove duplicate definitions of @property (nonatomic) BOOL CSSIndividualTransformPropertiesEnabled
https://bugs.webkit.org/show_bug.cgi?id=217182

Reviewed by Alex Christensen.

When the fix for ​https://webkit.org/b/216271 was landed, it added two definitions of
the CSSIndividualTransformPropertiesEnabled property (though one getter was misnamed), leading
to linker warnings. This removes one of them.

  • WebView/WebPreferences.mm:

(-[WebPreferences cssIndividualTransformPropertiesEnabled]): Deleted.

1:05 PM Changeset in webkit [267849] by Truitt Savell
  • 11 edits
    1 delete in trunk

Unreviewed, reverting r267841.

Broke Catalina Builds

Reverted changeset:

"Add AVAssetWriter SPI header"
https://bugs.webkit.org/show_bug.cgi?id=217169
https://trac.webkit.org/changeset/267841

1:01 PM Changeset in webkit [267848] by jer.noble@apple.com
  • 2 edits in trunk/Source/WebCore

REGRESSION(r267249): Crash in WebPage::updatePreferences() when libwebrtc is not available.
https://bugs.webkit.org/show_bug.cgi?id=217186
<rdar://problem/69817170>

Reviewed by Eric Carlson.

Always check for the presence of libwebrtc before calling into it.

  • platform/mediastream/libwebrtc/LibWebRTCProviderCocoa.cpp:

(WebCore::LibWebRTCProvider::setH264HardwareEncoderAllowed):
(WebCore::LibWebRTCProviderCocoa::createDecoderFactory):
(WebCore::LibWebRTCProviderCocoa::createEncoderFactory):
(WebCore::LibWebRTCProviderCocoa::setActive):

12:59 PM Changeset in webkit [267847] by Antti Koivisto
  • 6 edits in trunk/Source/WebCore

[LFC][Integration] Partially convert Position::inlineBoxAndOffset to use iterator
https://bugs.webkit.org/show_bug.cgi?id=217180

Reviewed by Zalan Bujtas.

This still forces the legacy path as the return type currently requires it.

  • dom/Position.cpp:

(WebCore::searchAheadForBetterMatch):
(WebCore::Position::inlineBoxAndOffset const):

  • layout/integration/LayoutIntegrationRunIterator.cpp:

(WebCore::LayoutIntegration::RunIterator::nextOnLine const):
(WebCore::LayoutIntegration::TextRunIterator::traverseNextTextRun):
(WebCore::LayoutIntegration::lineLayoutSystemFlowForRenderer):
(WebCore::LayoutIntegration::runFor):
(WebCore::LayoutIntegration::TextRunIterator::traverseNextTextRunInVisualOrder): Deleted.

  • layout/integration/LayoutIntegrationRunIterator.h:

(WebCore::LayoutIntegration::TextRunIterator::operator++):
(WebCore::LayoutIntegration::TextRunIterator::nextTextRun const):
(WebCore::LayoutIntegration::TextRunIterator::nextTextRunInTextOrder const):

  • layout/integration/LayoutIntegrationRunIteratorLegacyPath.h:

(WebCore::LayoutIntegration::LegacyPath::traverseNextTextRun):
(WebCore::LayoutIntegration::LegacyPath::traverseNextTextRunInVisualOrder): Deleted.

  • layout/integration/LayoutIntegrationRunIteratorModernPath.h:

(WebCore::LayoutIntegration::ModernPath::traverseNextTextRun):
(WebCore::LayoutIntegration::ModernPath::traverseNextTextRunInTextOrder):
(WebCore::LayoutIntegration::ModernPath::traverseNextTextRunInVisualOrder): Deleted.

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

stress/put-private-name-invalid-define.js.ftl-eager is getting flaky failure
https://bugs.webkit.org/show_bug.cgi?id=217164

Reviewed by Mark Lam.

JIT operations need to use JITOperationPrologueCallFrameTracer to configure top call frame correctly.
But putById private field JIT operations miss them or use wrong frame tracer. Since we are not setting top frame correctly,
exception object creation from this JIT operations can be broken, and leading to stress/put-private-name-invalid-define.js.ftl-eager crash.
This patch configures top call frame via JITOperationPrologueCallFrameTracer appropriately.

  • jit/JITOperations.cpp:
11:32 AM Changeset in webkit [267845] by Aditya Keerthi
  • 2 edits in trunk/Source/WebKitLegacy/mac

[macCatalyst] Crash when attempting to display a select dropdown in a UIWebView
https://bugs.webkit.org/show_bug.cgi?id=217148
<rdar://problem/64004677>

Reviewed by Darin Adler.

When clicking on a select element in a Catalyst UIWebView, WebKit calls
into UIKit to present a popover. On Catalyst, UIKit popovers call
resignFirstResponder on the current first responder, when presented.
Consequently, when an attempt to display the select dropdown is made,
[WebHTMLView resignFirstResponder] is invoked. This method blurs the
currently focused element, which tells UIKit to destroy the popover.
Destroying the popover while its attempting to become first responder
is not safe, leading to a crash.

In [WebHTMLView resignFirstResponder], clearFocus is only called if
[WebView _isPerformingProgrammaticFocus] is false. UIKit can take
advantage of this to prevent blurring an element if the first
responder is being resigned due to presenting a view associated with
the same element.

However, [WebHTMLView resignFirstResponder] also clears focus on the
current page's FocusController, which can also cause the element to be
blurred. To prevent this, guard the call on the same check as
clearFocus.

Note that this approach to preventing resignFirstResponder from blurring
the focused element is similar to the approach taken in WebKit2.

This change is made for all Cocoa platforms, since _isPerformingProgrammaticFocus
is internal to WebKit and the only time it is true is within a call to
WebChromeClient::makeFirstResponder. That method calls
[WebUIDelegate webView:makeFirstResponder], which states in its
documentation: "responder will always be a view that is in the view
subhierarchy of the top-level web view for this WebView". Consequently,
nextResponderIsInWebView will be true when _isPerformingProgrammaticFocus
is true, meaning the change doesn't affect existing behavior.

No new tests as the functionality is dependent on a UIKit change.

  • WebView/WebHTMLView.mm:

(-[WebHTMLView resignFirstResponder]):

11:28 AM Changeset in webkit [267844] by eric.carlson@apple.com
  • 10 edits
    1 add in trunk

Prevent media capture unless the application has correct data for system permission prompt
https://bugs.webkit.org/show_bug.cgi?id=217104
<rdar://problem/69761929>

Reviewed by Darin Adler.

Source/WebKit:

Tested manually with MiniBrowser.

  • SourcesCocoa.txt:
  • UIProcess/Cocoa/UIDelegate.mm:

(WebKit::requestAVCaptureAccessForMediaType): Renamed from requestAccessForMediaType.
(WebKit::UIDelegate::UIClient::decidePolicyForUserMediaPermissionRequest): Deny
requests of the application is not permitted to capture. Restructure logic to
make it easier to understand.
(WebKit::requestAccessForMediaType): Deleted.

  • UIProcess/Cocoa/UserMediaPermissionRequestManagerProxy.mm: Added.

(WebKit::UserMediaPermissionRequestManagerProxy::permittedToCaptureAudio): Check
for required Info.plist string.
(WebKit::UserMediaPermissionRequestManagerProxy::permittedToCaptureVideo): Ditto.

  • UIProcess/Cocoa/WebPageProxyCocoa.mm: Update for unified build.
  • UIProcess/UserMediaPermissionRequestManagerProxy.cpp:

(WebKit::UserMediaPermissionRequestManagerProxy::permittedToCaptureAudio):
(WebKit::UserMediaPermissionRequestManagerProxy::permittedToCaptureVideo):

  • UIProcess/UserMediaPermissionRequestManagerProxy.h:
  • WebKit.xcodeproj/project.pbxproj:

Tools:

  • MiniBrowser/mac/Info.plist: Add necessary entitlements and usage strings.
  • MobileMiniBrowser/MobileMiniBrowserFramework/WebViewController.m:

(-[WebViewController createWebView]): Setting the private capture preference is
not necessary because we set configuration._mediaCaptureEnabled.

11:23 AM Changeset in webkit [267843] by Karl Rackler
  • 2 edits in trunk/LayoutTests

[ iOS 13 wk2 ews ]: 2 in-app-browser-privacy and 1 WPT are constant failures slowing down ews
https://bugs.webkit.org/show_bug.cgi?id=217184

Unreviewed test gardening.

  • platform/ios-simulator-wk2/TestExpectations:
10:42 AM Changeset in webkit [267842] by Simon Fraser
  • 2 edits in trunk/Source/WebCore

REGRESSION(r267781): ASSERTION FAILED: Optional.h(525) : T *WTF::Optional<WebCore::Layout::LineRun::Text>::operator->() on 16 fast/layoutformattingcontext/* tests
https://bugs.webkit.org/show_bug.cgi?id=217143

Reviewed by Zalan Bujtas.

Need to test the Optional<> text() in dumping code.

  • display/css/DisplayTextBox.cpp:

(WebCore::Display::TextBox::debugDescription const):

10:28 AM Changeset in webkit [267841] by youenn@apple.com
  • 11 edits
    1 add in trunk

Add AVAssetWriter SPI header
https://bugs.webkit.org/show_bug.cgi?id=217169
<rdar://problem/69793050>

Reviewed by Eric Carlson.

Source/WebCore:

No change of behavior, include SPI header instead of private SDK header.

  • platform/mediarecorder/cocoa/MediaRecorderPrivateWriterCocoa.mm:

Source/WebCore/PAL:

  • PAL.xcodeproj/project.pbxproj:
  • pal/spi/cocoa/AVAssetWriterSPI.h: Added.

Source/WTF:

  • wtf/PlatformHave.h:

Remove dependency on AVAssetWriter_private.h

LayoutTests:

Enable tests by default on Catalina+, disable them on Mojave and WK1.
Disable tests for iOS13.

  • TestExpectations:
  • platform/ios-13/TestExpectations:
  • platform/mac/TestExpectations:
  • platform/mac-wk1/TestExpectations:
10:26 AM Changeset in webkit [267840] by Peng Liu
  • 6 edits
    1 delete in trunk/Source/WebKit

[Media in GPU Process] Enable IPC message handlers of RemoteAudioSession
https://bugs.webkit.org/show_bug.cgi?id=217144

Reviewed by Jer Noble.

This patch enables the RemoteAudioSession in the Web process to handle
IPC messages from the GPU process. It also fixes a bug preventing the
audio playback to start.

No new tests, no functional change.

  • GPUProcess/media/RemoteAudioSessionProxyManager.cpp:

(WebKit::RemoteAudioSessionProxyManager::tryToSetActiveForProcess):
Don't interrupt the audio session trying to start.

  • GPUProcess/media/RemoteAudioSessionProxyManager.messages.in: Removed.
  • WebKit.xcodeproj/project.pbxproj:
  • WebProcess/GPU/GPUProcessConnection.cpp:

(WebKit::GPUProcessConnection::dispatchMessage): Clean-up.

  • WebProcess/GPU/media/RemoteAudioSession.cpp:

(WebKit::RemoteAudioSession::RemoteAudioSession):
(WebKit::RemoteAudioSession::~RemoteAudioSession):
We need to remove the "destinationID" parameter, otherwise, RemoteAudioSession
won't receive the IPC messages.

  • WebProcess/GPU/media/RemoteAudioSession.h: Clean-up.
  • WebProcess/GPU/media/WebMediaStrategy.h: Clean-up.
10:20 AM Changeset in webkit [267839] by youenn@apple.com
  • 4 edits
    2 adds in trunk

RealtimeMediaSource should ignore ideal values outside the min/max range
https://bugs.webkit.org/show_bug.cgi?id=217178

Reviewed by Eric Carlson.

Source/WebCore:

Make valueForDiscreteCapabilityValues returns an Optional in case no valid value can be selected from the constraint.
This basically means the constraint will be ignored.
Before the patch, in case of no valid value, 0 will be set, which is a bad value for sample rate.

Test: fast/mediastream/audio-bad-sampleRate.html

  • platform/mediastream/MediaConstraints.h:

(WebCore::NumericConstraint::valueForDiscreteCapabilityValues const):

  • platform/mediastream/RealtimeMediaSource.cpp:

(WebCore::applyNumericConstraint):

LayoutTests:

  • fast/mediastream/audio-bad-sampleRate-expected.txt: Added.
  • fast/mediastream/audio-bad-sampleRate.html: Added.
10:07 AM Changeset in webkit [267838] by youenn@apple.com
  • 6 edits
    2 adds in trunk

getUserMedia with sampleRate constraints may fail
https://bugs.webkit.org/show_bug.cgi?id=217147
<rdar://problem/69831144>

Reviewed by Eric Carlson.

In case of new capture, make sure to reset sample rate and volume to default values.
This ensures that a sample rate that will fail the capture will not stick for other pages.
Manually tested.

  • platform/mediastream/mac/BaseAudioSharedUnit.cpp:

(WebCore::BaseAudioSharedUnit::prepareForNewCapture):

10:05 AM Changeset in webkit [267837] by achristensen@apple.com
  • 12 edits in trunk

Non-special URLs are not idempotent
https://bugs.webkit.org/show_bug.cgi?id=215762

Reviewed by Tim Horton.

LayoutTests/imported/w3c:

  • web-platform-tests/url/a-element-expected.txt:
  • web-platform-tests/url/a-element-xhtml-expected.txt:
  • web-platform-tests/url/url-constructor-expected.txt:
  • web-platform-tests/url/url-setters-expected.txt:

Source/WTF:

https://github.com/whatwg/url/pull/505 added an interesting edge case to the URL serialization:
"If url’s host is null, url’s path’s size is greater than 1, and url’s path[0] is the empty string, then append U+002F (/) followed by U+002E (.) to output."
The problem was that URLs like "a:/a/..//a" would be parsed into "a://a" with a pathname of "a" and an empty host. If "a://a" was then reparsed, it would again have an href of "a://a"
but its host would be "a" and it would have an empty path. There is consensus that URL parsing should be idempotent, so we need to do something different here.
According to https://github.com/whatwg/url/issues/415#issuecomment-419197290 this follows what Edge did (and then subsequently abandoned when they switched to Chromium)
to make URL parsing idempotent by adding "/." before the path in the edge case of a URL with a non-special scheme (not http, https, wss, etc.) and a null host and a non-empty path that
has an empty first segment. All the members of the URL remain unchanged except the full serialization (href). This is not important in practice, but important in theory.

Our URL parser tries very hard to use the exact same WTF::String object given as input if it can. However, this step is better implemented as a post-processing step that will almost never happen
because otherwise we would have to parse the entire path twice to find out if we need to add "./" or if the "./" that may have already been there needs to stay. This is illustrated with the test URL
"t:/.//p/../../../..//x" which does need the "./".

In the common case, this adds one well-predicted branch to URL parsing, so I expect performance to be unaffected. Since this is such a rare edge case of URLs, I expect no compatibility problems.

  • wtf/URL.cpp:

(WTF::URL::pathStart const):

  • wtf/URL.h:

(WTF::URL::pathStart const): Deleted.

  • wtf/URLParser.cpp:

(WTF::URLParser::copyURLPartsUntil):
(WTF::URLParser::URLParser):
(WTF::URLParser::needsNonSpecialDotSlash const):
(WTF::URLParser::addNonSpecialDotSlash):

  • wtf/URLParser.h:

Tools:

  • TestWebKitAPI/Tests/WTF/URLParser.cpp:

(TestWebKitAPI::TEST_F):

10:03 AM Changeset in webkit [267836] by youenn@apple.com
  • 3 edits in trunk/LayoutTests

http/wpt/mediarecorder/MediaRecorder-AV-audio-video-dataavailable.html is flaky
https://bugs.webkit.org/show_bug.cgi?id=217171
<rdar://problem/65085139>

Reviewed by Eric Carlson.

  • http/wpt/mediarecorder/MediaRecorder-AV-audio-video-dataavailable.html:

Setting the video currentTime too close to the end makes it render transparent frames.
Make it so that we try using the middle of the video content where we expect green content.

8:29 AM EarlyWarningSystem edited by aakash_jain@apple.com
(diff)
8:05 AM Changeset in webkit [267835] by Adrian Perez de Castro
  • 3 edits in trunk/Source/WebCore

Unreviewed. Add missing guard around ModernPath usage.

No new tests needed.

  • layout/integration/LayoutIntegrationRunIterator.cpp: Add ENABLE(LAYOUT_FORMATTING_CONTEXT)

guard around usage of the ModernPath type.

  • layout/integration/LayoutIntegrationRunIterator.h: Ditto.
7:41 AM Changeset in webkit [267834] by Alan Bujtas
  • 4 edits in trunk/Source/WebCore

[LFC][IFC] Remove redundant "needs hyphen" flag from LineContent::PartialContent
https://bugs.webkit.org/show_bug.cgi?id=217155

Reviewed by Antti Koivisto.

The last run already had this information. This is also in preparation for adding support for soft-hyphen where
the run with the hyphen is not partial at all.
(This patch also changes Optional<size_t> partialContentLength to just size_t. Optional<> may suggest that 0 is a valid overflow length.)

  • display/css/DisplayTextBox.cpp:

(WebCore::Display::TextBox::debugDescription const):

  • layout/inlineformatting/InlineFormattingContext.cpp:

(WebCore::Layout::InlineFormattingContext::lineLayout):

  • layout/inlineformatting/InlineLineBuilder.cpp:

(WebCore::Layout::LineBuilder::layoutInlineContent):
(WebCore::Layout::LineBuilder::placeInlineContent):
(WebCore::Layout::LineBuilder::close):
(WebCore::Layout::LineBuilder::nextContentForLine):
(WebCore::Layout::LineBuilder::handleFloatsAndInlineContent):

  • layout/inlineformatting/InlineLineBuilder.h:
7:09 AM Changeset in webkit [267833] by youenn@apple.com
  • 15 edits in trunk

MediaRecorder should support MediaRecorderOptions.mimeType
https://bugs.webkit.org/show_bug.cgi?id=215018
<rdar://problem/66681508>

Reviewed by Eric Carlson.

LayoutTests/imported/w3c:

  • web-platform-tests/mediacapture-record/MediaRecorder-mimetype-expected.txt:

Source/WebCore:

Instead of setting mime type right away, set it just before firing start event as per spec.
This will allow in the future to populate exact codec parameters if proven useful.

Covered by rebased and updated tests.

  • Modules/mediarecorder/MediaRecorder.cpp:

(WebCore::MediaRecorder::create):
(WebCore::MediaRecorder::startRecording):

  • platform/mediarecorder/MediaRecorderPrivate.h:

(WebCore::MediaRecorderPrivate::startRecording):

  • platform/mediarecorder/MediaRecorderPrivateAVFImpl.h:

Source/WebKit:

Update code to pass mimeType as part of startRecording callback.

  • GPUProcess/webrtc/RemoteMediaRecorder.h:

(WebKit::RemoteMediaRecorder::mimeType const):

  • GPUProcess/webrtc/RemoteMediaRecorderManager.cpp:

(WebKit::RemoteMediaRecorderManager::createRecorder):

  • GPUProcess/webrtc/RemoteMediaRecorderManager.h:
  • GPUProcess/webrtc/RemoteMediaRecorderManager.messages.in:
  • WebProcess/GPU/webrtc/MediaRecorderPrivate.cpp:

(WebKit::MediaRecorderPrivate::startRecording):

  • WebProcess/GPU/webrtc/MediaRecorderPrivate.h:

LayoutTests:

Update test to expect setting of the mime type after start event.

  • http/wpt/mediarecorder/mimeType.html:
5:33 AM Changeset in webkit [267832] by Andres Gonzalez
  • 8 edits in trunk

Make AXLoadingEvent notifications asynchronous.
https://bugs.webkit.org/show_bug.cgi?id=217157

Reviewed by Chris Fleizach.

Source/WebCore:

Test: accessibility/loading-iframe-sends-notification-expected.html.

  • accessibility/AXObjectCache.cpp:

(WebCore::AXObjectCache::frameLoadingEventNotification):
Removed the isolated tree update from the frame loading notification
handler. This avoids updating the isolated tree synchronously.

  • accessibility/AXObjectCache.h:

Added AXNotification::AXFrameLoadComplete.

  • accessibility/isolatedtree/AXIsolatedTree.cpp:

(WebCore::AXIsolatedTree::updateChildren):

  • accessibility/mac/AXObjectCacheMac.mm:

(WebCore::AXPostNotificationWithUserInfo):
Do not ignore AXLoadCompleteNotifications during LayoutTest.

(WebCore::AXObjectCache::postPlatformNotification):
Handle AXFrameLoadComplete notification as a AXLoadComplete notification.

(WebCore::AXObjectCache::frameLoadingEventPlatformNotification):
Loading finished event is now mapped to either AXLoadComplete or AXFrameLoadComplete.

LayoutTests:

  • accessibility/loading-iframe-sends-notification-expected.txt:
  • accessibility/loading-iframe-sends-notification.html:
5:17 AM Changeset in webkit [267831] by Carlos Garcia Campos
  • 175 edits
    1 copy
    2 moves
    22 adds
    2 deletes in trunk

Unreviewed. Update W3C WebDriver imported tests.

Tools:

  • Scripts/webkitpy/webdriver_tests/webdriver_w3c_executor.py:

(WebKitDriverProtocol):
(WebDriverW3CExecutor.init):
(WebDriverW3CExecutor.setup):

WebDriverTests:

  • TestExpectations.json:
  • imported/w3c/importer.json:
  • imported/w3c/tools/webdriver/:
  • imported/w3c/tools/wptrunner/:
  • imported/w3c/webdriver/:
5:16 AM Changeset in webkit [267830] by Antti Koivisto
  • 7 edits in trunk/Source/WebCore

[LFC][Integration] Add LineRunIterator
https://bugs.webkit.org/show_bug.cgi?id=217125

Reviewed by Zalan Bujtas.

Add LineRunIterator iterating line content.
Also remove end offset from modern path, instead set index to the content end position
in traversal functions.

  • layout/integration/LayoutIntegrationLineLayout.cpp:

(WebCore::LayoutIntegration::LineLayout::textRunsFor const):
(WebCore::LayoutIntegration::LineLayout::runFor const):

  • layout/integration/LayoutIntegrationRunIterator.cpp:

(WebCore::LayoutIntegration::TextRunIterator::traverseNextTextRunInVisualOrder):
(WebCore::LayoutIntegration::TextRunIterator::traverseNextTextRunInTextOrder):
(WebCore::LayoutIntegration::LineRunIterator::LineRunIterator):
(WebCore::LayoutIntegration::LineRunIterator::traverseNextOnLine):
(WebCore::LayoutIntegration::lineRun):
(WebCore::LayoutIntegration::RunIterator::traverseNextTextRunInVisualOrder): Deleted.
(WebCore::LayoutIntegration::RunIterator::traverseNextTextRunInTextOrder): Deleted.

  • layout/integration/LayoutIntegrationRunIterator.h:

(WebCore::LayoutIntegration::TextRun::legacyInlineBox const):
(WebCore::LayoutIntegration::LineRunIterator::LineRunIterator):
(WebCore::LayoutIntegration::LineRunIterator::operator++):
(WebCore::LayoutIntegration::Run::legacyInlineBox const):

  • layout/integration/LayoutIntegrationRunIteratorLegacyPath.h:

(WebCore::LayoutIntegration::LegacyPath::traverseNextOnLine):
(WebCore::LayoutIntegration::LegacyPath::legacyInlineBox const):

  • layout/integration/LayoutIntegrationRunIteratorModernPath.h:

(WebCore::LayoutIntegration::ModernPath::ModernPath):
(WebCore::LayoutIntegration::ModernPath::isLastTextRunOnLine const):
(WebCore::LayoutIntegration::ModernPath::isLastTextRun const):
(WebCore::LayoutIntegration::ModernPath::traverseNextTextRunInVisualOrder):
(WebCore::LayoutIntegration::ModernPath::traverseNextTextRunInTextOrder):
(WebCore::LayoutIntegration::ModernPath::traverseNextOnLine):
(WebCore::LayoutIntegration::ModernPath::atEnd const):
(WebCore::LayoutIntegration::ModernPath::legacyInlineBox const):
(WebCore::LayoutIntegration::ModernPath::setAtEnd):

4:32 AM Changeset in webkit [267829] by svillar@igalia.com
  • 9 edits in trunk

[css-flexbox] Implement row-gap and column-gap for flex layout
https://bugs.webkit.org/show_bug.cgi?id=206767

Reviewed by Manuel Rego Casasnovas.

LayoutTests/imported/w3c:

  • web-platform-tests/css/css-flexbox/gap-017-expected.txt: Replaced FAIL by PASS expectation.

Source/WebCore:

Implement row/column-gap for flexboxes which allow authors to define gutters between flex items and also between flex lines.

Inspired by Blink's crrev.com/c/2162149 and crrev.com/c/2172758 by <dgrogan@chromium.org>

  • rendering/FlexibleBoxAlgorithm.cpp:

(WebCore::FlexLayoutAlgorithm::FlexLayoutAlgorithm): Takes two new parameters with row/column gap lengths.
(WebCore::FlexLayoutAlgorithm::computeNextFlexLine): Add gaps to hypothetical and flex base sizes in between items.

  • rendering/FlexibleBoxAlgorithm.h: Added two new attributes to store gaps.
  • rendering/RenderFlexibleBox.cpp:

(WebCore::RenderFlexibleBox::computeIntrinsicLogicalWidths const): Add gaps to the intrinsic width.
(WebCore::RenderFlexibleBox::repositionLogicalHeightDependentFlexItems): Take gap between lines as argument.
(WebCore::RenderFlexibleBox::layoutFlexItems): Take gap between lines as argument.
(WebCore::RenderFlexibleBox::layoutAndPlaceChildren): Compute gaps to reduce the remaining free space.
(WebCore::RenderFlexibleBox::alignFlexLines): Add gap between lines to the line offset.
(WebCore::RenderFlexibleBox::computeGap const): Returns either the row-gap or the column-gap depending on the flex direction.

  • rendering/RenderFlexibleBox.h:

LayoutTests:

4:25 AM Changeset in webkit [267828] by youenn@apple.com
  • 3 edits in trunk/Source/WebCore

[iOS] MediaRecorder incorrect screen orientation handling
https://bugs.webkit.org/show_bug.cgi?id=198912
<rdar://problem/51802521>

Reviewed by Eric Carlson.

We were setting the transform to the writer input too soon.
Buffer the transform when receiving the first frame and set it at creation of the writer input.

Covered by http/wpt/mediarecorder/video-rotation.html now actually passing.

  • platform/mediarecorder/cocoa/MediaRecorderPrivateWriterCocoa.h:
  • platform/mediarecorder/cocoa/MediaRecorderPrivateWriterCocoa.mm:

(WebCore::MediaRecorderPrivateWriter::startAssetWriter):
(WebCore::MediaRecorderPrivateWriter::appendVideoSampleBuffer):

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

[JSC] Define Array#sort's implementation functions as globalPrivate
https://bugs.webkit.org/show_bug.cgi?id=217168

Reviewed by Ross Kirsling.

Now, these Array#sort's implementation functions are not capturing any heap variables. So we can make them @globalPrivate,
this avoids function allocations in LLInt / Baseline / DFG in Array#sort.

  • builtins/ArrayPrototype.js:

(globalPrivate.sortMin):
(globalPrivate.sortStringComparator):
(globalPrivate.sortCompact):
(globalPrivate.sortCommit):
(globalPrivate.sortMerge):
(globalPrivate.sortMergeSort):
(globalPrivate.sortBucketSort):
(sort):
(sort.min): Deleted.
(sort.stringComparator): Deleted.
(sort.compact): Deleted.
(sort.commit): Deleted.
(sort.merge): Deleted.
(sort.mergeSort): Deleted.
(sort.bucketSort): Deleted.

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

[JSC] Do not use std::function in setPrivateField and definePrivateField
https://bugs.webkit.org/show_bug.cgi?id=217167

Reviewed by Ross Kirsling.

std::function can potentially allocate an object in heap. We should should just pass lambda with a templatized parameter instead.

  • jit/JITOperations.cpp:

(JSC::setPrivateField):
(JSC::definePrivateField):

3:38 AM Changeset in webkit [267825] by youenn@apple.com
  • 27 edits
    2 adds in trunk

MediaRecorder should support isTypeSupported
https://bugs.webkit.org/show_bug.cgi?id=216856
LayoutTests/imported/w3c:

Reviewed by Darin Adler.

  • web-platform-tests/mediacapture-record/MediaRecorder-mimetype-expected.txt:
  • web-platform-tests/mediacapture-record/MediaRecorder-peerconnection.https-expected.txt:
  • web-platform-tests/mediacapture-record/idlharness.window-expected.txt:
  • web-platform-tests/mediacapture-record/passthrough/MediaRecorder-passthrough.https-expected.txt:
  • web-platform-tests/mediacapture-record/passthrough/MediaRecorder-passthrough.https.html:

Remove JS console log error line.

Source/WebCore:

<rdar://problem/69767695>

Reviewed by Darin Adler.

Introduce MediaRecorder::isMimeTypeSupported whose result is exposed as MediaRecoder.isTypeSupported.
Cocoa port allows mp4 audio and video mime types, with H264 and AAC codecs.
Add a routine to get the mime type from the MediaRecorderPrivate.
Store it in MediaRecorder and add a mimeType getter.

Test: http/wpt/mediarecorder/mimeType.html

  • Modules/mediarecorder/MediaRecorder.cpp:

(WebCore::MediaRecorder::isTypeSupported):
(WebCore::MediaRecorder::create):

  • Modules/mediarecorder/MediaRecorder.h:
  • Modules/mediarecorder/MediaRecorder.idl:
  • Modules/mediarecorder/MediaRecorderProvider.cpp:

(WebCore::MediaRecorderProvider::isSupported):

  • Modules/mediarecorder/MediaRecorderProvider.h:
  • platform/mediarecorder/MediaRecorderPrivate.h:
  • platform/mediarecorder/MediaRecorderPrivateAVFImpl.cpp:

(WebCore::MediaRecorderPrivateAVFImpl::mimeType const):

  • platform/mediarecorder/MediaRecorderPrivateAVFImpl.h:
  • platform/mediarecorder/MediaRecorderPrivateMock.cpp:

(WebCore::MediaRecorderPrivateMock::mimeType const):

  • platform/mediarecorder/MediaRecorderPrivateMock.h:
  • platform/mediarecorder/cocoa/MediaRecorderPrivateWriterCocoa.h:
  • platform/mediarecorder/cocoa/MediaRecorderPrivateWriterCocoa.mm:

(WebCore::MediaRecorderPrivateWriter::mimeType const):

  • platform/mediastream/MediaStreamPrivate.h:

Source/WebKit:

<rdar://problem/69767695>

Reviewed by Darin Adler.

Stop passing mimeType for each data blob.
Instead, compute it on WebProcess side.

  • GPUProcess/webrtc/RemoteMediaRecorder.cpp:

(WebKit::RemoteMediaRecorder::fetchData):

  • GPUProcess/webrtc/RemoteMediaRecorder.h:
  • GPUProcess/webrtc/RemoteMediaRecorder.messages.in:
  • WebProcess/GPU/webrtc/MediaRecorderPrivate.cpp:

(WebKit::MediaRecorderPrivate::MediaRecorderPrivate):
(WebKit::MediaRecorderPrivate::fetchData):
(WebKit::MediaRecorderPrivate::mimeType const):

  • WebProcess/GPU/webrtc/MediaRecorderPrivate.h:

LayoutTests:

Reviewed by Darin Adler.

  • http/wpt/mediarecorder/mimeType-expected.txt: Added.
  • http/wpt/mediarecorder/mimeType.html: Added.
1:10 AM Changeset in webkit [267824] by commit-queue@webkit.org
  • 2 edits in trunk/Tools

[Flatpak] Nightly runner requires user interaction
https://bugs.webkit.org/show_bug.cgi?id=217092

Patch by Philippe Normand <pnormand@igalia.com> on 2020-10-01
Reviewed by Carlos Alberto Lopez Perez.

  • Scripts/webkit-flatpak-run-nightly: The most recent version is 0.3 currently, this is the

branch that should be installed. At some point we could add a new option to override this
though.

12:53 AM Changeset in webkit [267823] by sihui_liu@apple.com
  • 5 edits in trunk/Source/WebCore

Drop some unnecessary code in SQLiteIDBBackingStore and IDBServer
https://bugs.webkit.org/show_bug.cgi?id=214992
<rdar://problem/66648514>

Reviewed by Brady Eidson.

No behavior change. Paths of SQLiteIDBBackingStore and IDBServer are only accessed from one thread now, so we
don't need to make isolated copy.

  • Modules/indexeddb/server/IDBServer.cpp:

(WebCore::IDBServer::IDBServer::createBackingStore):
(WebCore::IDBServer::IDBServer::getAllDatabaseNamesAndVersions):
(WebCore::IDBServer::IDBServer::removeDatabasesModifiedSinceForVersion):
(WebCore::IDBServer::IDBServer::removeDatabasesWithOriginsForVersion):
(WebCore::IDBServer::IDBServer::renameOrigin):
(WebCore::IDBServer::IDBServer::upgradeFilesIfNecessary):

  • Modules/indexeddb/server/IDBServer.h:

(WebCore::IDBServer::IDBServer::databaseDirectoryPathIsolatedCopy const): Deleted.

  • Modules/indexeddb/server/SQLiteIDBBackingStore.cpp:

(WebCore::IDBServer::SQLiteIDBBackingStore::fullDatabaseDirectoryWithUpgrade):
(WebCore::IDBServer::SQLiteIDBBackingStore::deleteBackingStore):
(WebCore::IDBServer::SQLiteIDBBackingStore::databaseNameFromEncodedFilename): Deleted.

  • Modules/indexeddb/server/SQLiteIDBBackingStore.h:
12:34 AM Changeset in webkit [267822] by youenn@apple.com
  • 5 edits in trunk

MediaRecorder should allow setting low bit rates for audio
https://bugs.webkit.org/show_bug.cgi?id=216688
<rdar://problem/69129142>

Reviewed by Eric Carlson.

Source/WebCore:

When setting the bitrate provided by the web app fails, we now use default bit rate values that are expected to work properly.
Covered by updated tests.

  • platform/mediarecorder/cocoa/AudioSampleBufferCompressor.h:
  • platform/mediarecorder/cocoa/AudioSampleBufferCompressor.mm:

(WebCore::AudioSampleBufferCompressor::setBitsPerSecond):
(WebCore::AudioSampleBufferCompressor::defaultOutputBitRate const):
(WebCore::AudioSampleBufferCompressor::initAudioConverterForSourceFormatDescription):

LayoutTests:

Add more bitrate tests.

  • http/wpt/mediarecorder/MediaRecorder-audio-bitrate.html:

Sep 30, 2020:

11:48 PM Changeset in webkit [267821] by commit-queue@webkit.org
  • 3 edits in trunk/Source/WebCore

Remove responseIsXML
https://bugs.webkit.org/show_bug.cgi?id=217133

Patch by Rob Buis <rbuis@igalia.com> on 2020-09-30
Reviewed by Darin Adler.

Remove responseIsXML method, it can be inlined and is still readable, also
it in one case this avoids calling the non trivial responseMIMEType.

No new tests. No change in behavior.

  • xml/XMLHttpRequest.cpp:

(WebCore::XMLHttpRequest::createDecoder const):
(WebCore::XMLHttpRequest::responseIsXML const): Deleted.

  • xml/XMLHttpRequest.h:
10:15 PM Changeset in webkit [267820] by ysuzuki@apple.com
  • 22 edits
    3 deletes in trunk/Source/JavaScriptCore

[JSC] We should not tag C function with JIT code related ptr tag
https://bugs.webkit.org/show_bug.cgi?id=217150

Reviewed by Mark Lam.

We are tagging getHostCallReturnValue function with JIT related PtrTag. As a part of JIT-caging effort, we are restricting our
PtrTag usage more for code types (e.g. JIT code should be tagged with JIT related PtrTag). So, we should not tag getHostCallReturnValue
with that. This patch implements getHostCallReturnValue in JIT code if JIT is enabled. If not, it is implemented by LLInt.

  • JavaScriptCore.xcodeproj/project.pbxproj:
  • Sources.txt:
  • bytecode/BytecodeList.rb:
  • dfg/DFGCapabilities.cpp:

(JSC::DFG::capabilityLevel):

  • heap/MarkedBlock.h:

(JSC::MarkedBlock::Footer::offsetOfVM):

  • heap/PreciseAllocation.h:

(JSC::PreciseAllocation::offsetOfWeakSet):

  • heap/WeakSet.h:

(JSC::WeakSet::offsetOfVM):

  • jit/HostCallReturnValue.cpp: Removed.
  • jit/HostCallReturnValue.h: Removed.
  • jit/JITOperations.cpp:
  • jit/JITOperationsMSVC64.cpp: Removed.
  • jit/JITStubsMSVC64.asm:
  • llint/LLIntEntrypoint.cpp:

(JSC::LLInt::getHostCallReturnValueEntrypoint):

  • llint/LLIntEntrypoint.h:
  • llint/LLIntSlowPaths.cpp:

(JSC::LLInt::handleHostCall):
(JSC::LLInt::commonCallEval):

  • llint/LLIntThunks.cpp:

(JSC::LLInt::getHostCallReturnValueThunk):

  • llint/LLIntThunks.h:
  • llint/LowLevelInterpreter.cpp:

(JSC::CLoop::execute):

  • llint/LowLevelInterpreter32_64.asm:
  • llint/LowLevelInterpreter64.asm:
  • runtime/JSCellInlines.h:

(JSC::tryAllocateCellHelper):

  • runtime/JSGlobalObject.h:

(JSC::JSGlobalObject::offsetOfVM):

  • runtime/VM.cpp:

(JSC::VM::VM):

  • runtime/VM.h:

(JSC::VM::offsetOfEncodedHostCallReturnValue):

9:44 PM Changeset in webkit [267819] by Lauro Moura
  • 2 edits in trunk/LayoutTests

[GLIB] Missing bits from last gardening

Unreviewed test gardening.

  • platform/gtk/TestExpectations:
9:35 PM Changeset in webkit [267818] by Peng Liu
  • 3 edits in trunk/Source/WebKit

[Media in GPU Process] Enable IPC message handlers of RemoteMediaSessionHelper
https://bugs.webkit.org/show_bug.cgi?id=217152

Reviewed by Eric Carlson.

  • WebProcess/GPU/GPUProcessConnection.cpp:

(WebKit::GPUProcessConnection::dispatchMessage):

  • WebProcess/GPU/media/ios/RemoteMediaSessionHelper.cpp:

(WebKit::RemoteMediaSessionHelper::RemoteMediaSessionHelper):

8:21 PM Changeset in webkit [267817] by wilander@apple.com
  • 12 edits in trunk

Storage Access API: Enable per-page storage access scope and align test cases
https://bugs.webkit.org/show_bug.cgi?id=217077
<rdar://problem/69017878>

Reviewed by Brent Fulgham.

It was decided in https://github.com/privacycg/storage-access/issues/3 that
browsers should grant storage access for all same-site resources on the whole
page, not just the requesting iframe.

Source/WebCore:

No new tests. Existing tests aligned, including
LayoutTests/http/tests/storageAccess/request-and-grant-access-with-per-page-scope-access-from-another-frame.html
which no longer calls
internals.settings.setStorageAccessAPIPerPageScopeEnabled(true)
to opt in to the setting that is now the default.

  • dom/DocumentStorageAccess.cpp:

(WebCore::DocumentStorageAccess::requestStorageAccess):

Changed the settings check to do the reverse, i.e. assume
per-page access by default and per-frame access as the
exception.

  • dom/DocumentStorageAccess.h:

Changed the default setting for m_storageAccessScope to per-page.

  • page/Settings.yaml:

Changed the default to true for
storageAccessAPIPerPageScopeEnabled.

Source/WebKit:

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::hasStorageAccess):

Added a call to WebPage::hasPageLevelStorageAccess()
and an early return if it returns true.

LayoutTests:

  • http/tests/storageAccess/request-and-grant-access-cross-origin-sandboxed-iframe-from-prevalent-domain-with-user-interaction-and-access-from-right-frame.html:
  • http/tests/storageAccess/request-and-grant-access-cross-origin-sandboxed-iframe-from-prevalent-domain-with-user-interaction-but-access-from-wrong-frame.html:
  • http/tests/storageAccess/request-and-grant-access-then-detach-should-not-have-access.html:
  • http/tests/storageAccess/request-and-grant-access-then-navigate-cross-site-should-not-have-access.html:

All of the above now explicitly call
internals.settings.setStorageAccessAPIPerPageScopeEnabled(false)
to opt out of the new default setting.

  • http/tests/storageAccess/request-and-grant-access-with-per-page-scope-access-from-another-frame.html:

Changed to assume per-page is the default.

8:06 PM Changeset in webkit [267816] by Lauro Moura
  • 6 edits
    3 adds in trunk/LayoutTests

[GLIB] Gardening some failures

Unreviewed test gardening.

  • platform/glib/TestExpectations:
  • platform/glib/imported/w3c/web-platform-tests/css/css-transforms/animation/transform-interpolation-computed-value-expected.txt: Added.
  • platform/glib/imported/w3c/web-platform-tests/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_navigation_download_allow_downloads.sub.tentative-expected.txt:
  • platform/glib/imported/w3c/web-platform-tests/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_navigation_download_block_downloads.sub.tentative-expected.txt:
  • platform/gtk-wayland/TestExpectations:
  • platform/gtk/TestExpectations:
5:45 PM Changeset in webkit [267815] by Jonathan Bedard
  • 2 edits
    2 adds in trunk/Tools

[webkitscmpy] Add Commit object
https://bugs.webkit.org/show_bug.cgi?id=216403
<rdar://problem/68702779>

Reviewed by Dewei Zhu.

  • Scripts/libraries/webkitscmpy/webkitscmpy/init.py: Bump version number.
  • Scripts/libraries/webkitscmpy/webkitscmpy/commit.py: Added.

(Commit):
(Commit._parse_hash): Given a hash, verify that the provided argument is
Actually a git hash.
(Commit._parse_revision): Given a string or integer, verify the provided
argument is a valid SVN revision and return the revision as an integer.
(Commit._parse_identifier): Given a string or integer, verify the provided
argument is a valid identifier and return the identifier and branch.
(Commit.parse): Given a string representing a commit hash, svn revision or
identifier, return a commit object.
(Commit.init):
(Commit.pretty_print): Return a long string displaying the metadata for the commit
(Commit.repr): Return a one-line representation of the commit.
(Commit.hash):
(Commit.cmp): Compare two commit objects.

  • Scripts/libraries/webkitscmpy/webkitscmpy/test/commit_unittest.py: Added.

(TestCommit):
(TestCommit.test_parse_hash):
(TestCommit.test_parse_revision):
(TestCommit.test_parse_identifier):
(TestCommit.test_parse):
(TestCommit.test_pretty_print):

5:40 PM Changeset in webkit [267814] by Ross Kirsling
  • 13 edits
    1 add in trunk

[JSC] Implement item method proposal
https://bugs.webkit.org/show_bug.cgi?id=217115

Reviewed by Yusuke Suzuki.

JSTests:

  • stress/item-method.js: Added.
  • test262/config.yaml: Unskip tests.

Source/JavaScriptCore:

This patch implements {Array, %TypedArray%, String}.prototype.item, which reached Stage 3 at TC39 last week:
https://github.com/tc39/proposal-item-method/

This method behaves like the [] operator except:

  • it recognizes negative indices (-1 through -length, without wrapping)
  • it returns undefined *without* calling getters for out-of-bounds indices

The primary motivation for this is as a layering improvement for Web APIs (see, e.g., NodeList.prototype.item),
but the primary visible benefit for JavaScript users is negative indexation.

  • builtins/ArrayPrototype.js:

(item):

  • builtins/StringPrototype.js:

(item):

  • builtins/TypedArrayPrototype.js:

(item):

  • runtime/ArrayPrototype.cpp:

(JSC::ArrayPrototype::finishCreation):

  • runtime/JSTypedArrayViewPrototype.cpp:

(JSC::JSTypedArrayViewPrototype::finishCreation):

  • runtime/StringPrototype.cpp:

LayoutTests:

  • inspector/model/remote-object-get-properties-expected.txt:
  • js/Object-getOwnPropertyNames-expected.txt:
  • js/script-tests/Object-getOwnPropertyNames.js:

Adjust tests.

5:15 PM Changeset in webkit [267813] by weinig@apple.com
  • 647 edits in trunk/Source/WebCore

[WebIDL] Make Exposed mandatory for IDL interfaces
https://bugs.webkit.org/show_bug.cgi?id=217101

Reviewed by Darin Adler.

Add [Exposed] to all IDL interfaces that were missing it and enforce its
requirement.

  • bindings/scripts/CodeGeneratorJS.pm:
  • bindings/scripts/preprocess-idls.pl:

Remove default "Window" exposed behavior and require it on all interfaces
and callback interfaces with constants that don't specify LegacyNoInterfaceObject.

  • Modules/airplay/WebKitPlaybackTargetAvailabilityEvent.idl:
  • Modules/applepay/ApplePayError.idl:
  • Modules/applepay/ApplePaySession.idl:
  • Modules/applepay/ApplePaySetup.idl:
  • Modules/applepay/ApplePaySetupFeature.idl:
  • Modules/encryptedmedia/MediaKeyEncryptionScheme.idl:
  • Modules/encryptedmedia/MediaKeyMessageEvent.idl:
  • Modules/encryptedmedia/MediaKeySession.idl:
  • Modules/encryptedmedia/MediaKeySessionType.idl:
  • Modules/encryptedmedia/MediaKeyStatusMap.idl:
  • Modules/encryptedmedia/MediaKeySystemAccess.idl:
  • Modules/encryptedmedia/MediaKeys.idl:
  • Modules/encryptedmedia/MediaKeysRequirement.idl:
  • Modules/encryptedmedia/legacy/WebKitMediaKeyMessageEvent.idl:
  • Modules/encryptedmedia/legacy/WebKitMediaKeyNeededEvent.idl:
  • Modules/encryptedmedia/legacy/WebKitMediaKeySession.idl:
  • Modules/encryptedmedia/legacy/WebKitMediaKeys.idl:
  • Modules/entriesapi/DOMFileSystem.idl:
  • Modules/entriesapi/FileSystemDirectoryEntry.idl:
  • Modules/entriesapi/FileSystemDirectoryReader.idl:
  • Modules/entriesapi/FileSystemEntry.idl:
  • Modules/entriesapi/FileSystemFileEntry.idl:
  • Modules/gamepad/Gamepad.idl:
  • Modules/gamepad/GamepadButton.idl:
  • Modules/gamepad/GamepadEvent.idl:
  • Modules/geolocation/Geolocation.idl:
  • Modules/geolocation/GeolocationCoordinates.idl:
  • Modules/geolocation/GeolocationPosition.idl:
  • Modules/geolocation/GeolocationPositionError.idl:
  • Modules/geolocation/PositionOptions.idl:
  • Modules/highlight/HighlightMap.idl:
  • Modules/highlight/HighlightRangeGroup.idl:
  • Modules/mediacapabilities/AudioConfiguration.idl:
  • Modules/mediacapabilities/MediaCapabilities.idl:
  • Modules/mediacapabilities/MediaCapabilitiesDecodingInfo.idl:
  • Modules/mediacapabilities/MediaCapabilitiesEncodingInfo.idl:
  • Modules/mediacapabilities/MediaCapabilitiesInfo.idl:
  • Modules/mediacapabilities/MediaDecodingConfiguration.idl:
  • Modules/mediacapabilities/MediaEncodingConfiguration.idl:
  • Modules/mediacapabilities/VideoConfiguration.idl:
  • Modules/mediasource/MediaSource.idl:
  • Modules/mediasource/SourceBuffer.idl:
  • Modules/mediasource/SourceBufferList.idl:
  • Modules/mediastream/CanvasCaptureMediaStreamTrack.idl:
  • Modules/mediastream/MediaDeviceInfo.idl:
  • Modules/mediastream/MediaDevices.idl:
  • Modules/mediastream/MediaStream.idl:
  • Modules/mediastream/MediaStreamTrack.idl:
  • Modules/mediastream/MediaStreamTrackEvent.idl:
  • Modules/mediastream/OverconstrainedError.idl:
  • Modules/mediastream/OverconstrainedErrorEvent.idl:
  • Modules/mediastream/RTCCertificate.idl:
  • Modules/mediastream/RTCConfiguration.idl:
  • Modules/mediastream/RTCDTMFSender.idl:
  • Modules/mediastream/RTCDTMFToneChangeEvent.idl:
  • Modules/mediastream/RTCDataChannel.idl:
  • Modules/mediastream/RTCDataChannelEvent.idl:
  • Modules/mediastream/RTCIceCandidate.idl:
  • Modules/mediastream/RTCIceTransport.idl:
  • Modules/mediastream/RTCPeerConnection.idl:
  • Modules/mediastream/RTCPeerConnectionIceEvent.idl:
  • Modules/mediastream/RTCRtpReceiver.idl:
  • Modules/mediastream/RTCRtpSender.idl:
  • Modules/mediastream/RTCRtpTransceiver.idl:
  • Modules/mediastream/RTCSessionDescription.idl:
  • Modules/mediastream/RTCStatsReport.idl:
  • Modules/mediastream/RTCTrackEvent.idl:
  • Modules/notifications/Notification.idl:
  • Modules/paymentrequest/PaymentRequest.idl:
  • Modules/remoteplayback/RemotePlayback.idl:
  • Modules/speech/SpeechSynthesis.idl:
  • Modules/speech/SpeechSynthesisEvent.idl:
  • Modules/speech/SpeechSynthesisUtterance.idl:
  • Modules/speech/SpeechSynthesisVoice.idl:
  • Modules/webaudio/AnalyserNode.idl:
  • Modules/webaudio/AudioBuffer.idl:
  • Modules/webaudio/AudioBufferSourceNode.idl:
  • Modules/webaudio/AudioContext.idl:
  • Modules/webaudio/AudioDestinationNode.idl:
  • Modules/webaudio/AudioListener.idl:
  • Modules/webaudio/AudioNode.idl:
  • Modules/webaudio/AudioParam.idl:
  • Modules/webaudio/AudioParamMap.idl:
  • Modules/webaudio/AudioProcessingEvent.idl:
  • Modules/webaudio/AudioScheduledSourceNode.idl:
  • Modules/webaudio/BaseAudioContext.idl:
  • Modules/webaudio/BiquadFilterNode.idl:
  • Modules/webaudio/ChannelMergerNode.idl:
  • Modules/webaudio/ChannelSplitterNode.idl:
  • Modules/webaudio/ConstantSourceNode.idl:
  • Modules/webaudio/ConvolverNode.idl:
  • Modules/webaudio/DelayNode.idl:
  • Modules/webaudio/DynamicsCompressorNode.idl:
  • Modules/webaudio/GainNode.idl:
  • Modules/webaudio/IIRFilterNode.idl:
  • Modules/webaudio/MediaElementAudioSourceNode.idl:
  • Modules/webaudio/MediaStreamAudioDestinationNode.idl:
  • Modules/webaudio/MediaStreamAudioSourceNode.idl:
  • Modules/webaudio/OfflineAudioCompletionEvent.idl:
  • Modules/webaudio/OfflineAudioContext.idl:
  • Modules/webaudio/OscillatorNode.idl:
  • Modules/webaudio/PannerNode.idl:
  • Modules/webaudio/PeriodicWave.idl:
  • Modules/webaudio/ScriptProcessorNode.idl:
  • Modules/webaudio/StereoPannerNode.idl:
  • Modules/webaudio/WaveShaperNode.idl:
  • Modules/webaudio/WebKitAudioContext.idl:
  • Modules/webaudio/WebKitAudioPannerNode.idl:
  • Modules/webaudio/WebKitOfflineAudioContext.idl:
  • Modules/webdatabase/Database.idl:
  • Modules/webdatabase/SQLError.idl:
  • Modules/webdatabase/SQLResultSet.idl:
  • Modules/webdatabase/SQLResultSetRowList.idl:
  • Modules/webdatabase/SQLTransaction.idl:
  • Modules/webgpu/GPUBufferUsage.idl:
  • Modules/webgpu/GPUCanvasContext.idl:
  • Modules/webgpu/GPUColorWrite.idl:
  • Modules/webgpu/GPUOutOfMemoryError.idl:
  • Modules/webgpu/GPUShaderStage.idl:
  • Modules/webgpu/GPUTextureUsage.idl:
  • Modules/webgpu/GPUValidationError.idl:
  • Modules/webgpu/Navigator+GPU.idl:
  • Modules/webgpu/WebGPU.idl:
  • Modules/webgpu/WebGPUAdapter.idl:
  • Modules/webgpu/WebGPUBindGroup.idl:
  • Modules/webgpu/WebGPUBindGroupLayout.idl:
  • Modules/webgpu/WebGPUBuffer.idl:
  • Modules/webgpu/WebGPUCommandBuffer.idl:
  • Modules/webgpu/WebGPUCommandEncoder.idl:
  • Modules/webgpu/WebGPUComputePassEncoder.idl:
  • Modules/webgpu/WebGPUComputePipeline.idl:
  • Modules/webgpu/WebGPUDevice.idl:
  • Modules/webgpu/WebGPUPipelineLayout.idl:
  • Modules/webgpu/WebGPUProgrammablePassEncoder.idl:
  • Modules/webgpu/WebGPUQueue.idl:
  • Modules/webgpu/WebGPURenderPassEncoder.idl:
  • Modules/webgpu/WebGPURenderPipeline.idl:
  • Modules/webgpu/WebGPUSampler.idl:
  • Modules/webgpu/WebGPUShaderModule.idl:
  • Modules/webgpu/WebGPUSwapChain.idl:
  • Modules/webgpu/WebGPUTexture.idl:
  • Modules/webgpu/WebGPUTextureView.idl:
  • Modules/webxr/XRInputSourceEvent.idl:
  • Modules/webxr/XRInputSourcesChangeEvent.idl:
  • Modules/webxr/XRReferenceSpaceEvent.idl:
  • Modules/webxr/XRSessionEvent.idl:
  • WebCore.xcodeproj/project.pbxproj:
  • animation/AnimationPlaybackEvent.idl:
  • animation/AnimationTimeline.idl:
  • animation/DocumentTimeline.idl:
  • animation/WebAnimation.idl:
  • css/CSSConditionRule.idl:
  • css/CSSFontFaceRule.idl:
  • css/CSSGroupingRule.idl:
  • css/CSSImportRule.idl:
  • css/CSSKeyframeRule.idl:
  • css/CSSKeyframesRule.idl:
  • css/CSSMediaRule.idl:
  • css/CSSNamespaceRule.idl:
  • css/CSSPageRule.idl:
  • css/CSSRuleList.idl:
  • css/CSSStyleDeclaration.idl:
  • css/CSSStyleRule.idl:
  • css/CSSStyleSheet.idl:
  • css/CSSSupportsRule.idl:
  • css/DOMCSSNamespace.idl:
  • css/DeprecatedCSSOMCounter.idl:
  • css/DeprecatedCSSOMPrimitiveValue.idl:
  • css/DeprecatedCSSOMRGBColor.idl:
  • css/DeprecatedCSSOMRect.idl:
  • css/DeprecatedCSSOMValue.idl:
  • css/DeprecatedCSSOMValueList.idl:
  • css/FontFace.idl:
  • css/FontFaceSet.idl:
  • css/MediaQueryListEvent.idl:
  • css/typedom/StylePropertyMap.idl:
  • dom/AbortAlgorithm.idl:
  • dom/AnimationEvent.idl:
  • dom/Attr.idl:
  • dom/BeforeLoadEvent.idl:
  • dom/BeforeUnloadEvent.idl:
  • dom/CDATASection.idl:
  • dom/CharacterData.idl:
  • dom/ClipboardEvent.idl:
  • dom/Comment.idl:
  • dom/CompositionEvent.idl:
  • dom/CustomElementRegistry.idl:
  • dom/DOMImplementation.idl:
  • dom/DOMRectList.idl:
  • dom/DOMStringList.idl:
  • dom/DOMStringMap.idl:
  • dom/DataTransfer.idl:
  • dom/DataTransferItem.idl:
  • dom/DataTransferItemList.idl:
  • dom/DeviceMotionEvent.idl:
  • dom/DeviceOrientationEvent.idl:
  • dom/Document.idl:
  • dom/DocumentFragment.idl:
  • dom/DocumentType.idl:
  • dom/DragEvent.idl:
  • dom/Element.idl:
  • dom/FocusEvent.idl:
  • dom/HashChangeEvent.idl:
  • dom/IdleDeadline.idl:
  • dom/InputEvent.idl:
  • dom/KeyboardEvent.idl:
  • dom/MouseEvent.idl:
  • dom/MutationEvent.idl:
  • dom/MutationObserver.idl:
  • dom/MutationRecord.idl:
  • dom/NamedNodeMap.idl:
  • dom/Node.idl:
  • dom/NodeFilter.idl:
  • dom/NodeIterator.idl:
  • dom/NodeList.idl:
  • dom/OverflowEvent.idl:
  • dom/PageTransitionEvent.idl:
  • dom/PopStateEvent.idl:
  • dom/ProcessingInstruction.idl:
  • dom/Range.idl:
  • dom/SecurityPolicyViolationEvent.idl:
  • dom/ShadowRoot.idl:
  • dom/StaticRange.idl:
  • dom/Text.idl:
  • dom/TextEvent.idl:
  • dom/Touch.idl:
  • dom/TouchEvent.idl:
  • dom/TouchList.idl:
  • dom/TransitionEvent.idl:
  • dom/TreeWalker.idl:
  • dom/UIEvent.idl:
  • dom/WebKitAnimationEvent.idl:
  • dom/WebKitTransitionEvent.idl:
  • dom/WheelEvent.idl:
  • dom/XMLDocument.idl:
  • html/DOMTokenList.idl:
  • html/HTMLAllCollection.idl:
  • html/HTMLAnchorElement.idl:
  • html/HTMLAppletElement.idl:
  • html/HTMLAreaElement.idl:
  • html/HTMLAttachmentElement.idl:
  • html/HTMLAudioElement.idl:
  • html/HTMLBRElement.idl:
  • html/HTMLBaseElement.idl:
  • html/HTMLBodyElement.idl:
  • html/HTMLButtonElement.idl:
  • html/HTMLCanvasElement.idl:
  • html/HTMLCollection.idl:
  • html/HTMLDListElement.idl:
  • html/HTMLDataElement.idl:
  • html/HTMLDataListElement.idl:
  • html/HTMLDetailsElement.idl:
  • html/HTMLDirectoryElement.idl:
  • html/HTMLDivElement.idl:
  • html/HTMLDocument.idl:
  • html/HTMLElement.idl:
  • html/HTMLEmbedElement.idl:
  • html/HTMLFieldSetElement.idl:
  • html/HTMLFontElement.idl:
  • html/HTMLFormControlsCollection.idl:
  • html/HTMLFormElement.idl:
  • html/HTMLFrameElement.idl:
  • html/HTMLFrameSetElement.idl:
  • html/HTMLHRElement.idl:
  • html/HTMLHeadElement.idl:
  • html/HTMLHeadingElement.idl:
  • html/HTMLHtmlElement.idl:
  • html/HTMLIFrameElement.idl:
  • html/HTMLImageElement.idl:
  • html/HTMLInputElement.idl:
  • html/HTMLKeygenElement.idl:
  • html/HTMLLIElement.idl:
  • html/HTMLLabelElement.idl:
  • html/HTMLLegendElement.idl:
  • html/HTMLLinkElement.idl:
  • html/HTMLMapElement.idl:
  • html/HTMLMarqueeElement.idl:
  • html/HTMLMediaElement.idl:
  • html/HTMLMenuElement.idl:
  • html/HTMLMenuItemElement.idl:
  • html/HTMLMetaElement.idl:
  • html/HTMLMeterElement.idl:
  • html/HTMLModElement.idl:
  • html/HTMLOListElement.idl:
  • html/HTMLObjectElement.idl:
  • html/HTMLOptGroupElement.idl:
  • html/HTMLOptionElement.idl:
  • html/HTMLOptionsCollection.idl:
  • html/HTMLOutputElement.idl:
  • html/HTMLParagraphElement.idl:
  • html/HTMLParamElement.idl:
  • html/HTMLPictureElement.idl:
  • html/HTMLPreElement.idl:
  • html/HTMLProgressElement.idl:
  • html/HTMLQuoteElement.idl:
  • html/HTMLScriptElement.idl:
  • html/HTMLSelectElement.idl:
  • html/HTMLSlotElement.idl:
  • html/HTMLSourceElement.idl:
  • html/HTMLSpanElement.idl:
  • html/HTMLStyleElement.idl:
  • html/HTMLTableCaptionElement.idl:
  • html/HTMLTableCellElement.idl:
  • html/HTMLTableColElement.idl:
  • html/HTMLTableElement.idl:
  • html/HTMLTableRowElement.idl:
  • html/HTMLTableSectionElement.idl:
  • html/HTMLTemplateElement.idl:
  • html/HTMLTextAreaElement.idl:
  • html/HTMLTimeElement.idl:
  • html/HTMLTitleElement.idl:
  • html/HTMLTrackElement.idl:
  • html/HTMLUListElement.idl:
  • html/HTMLUnknownElement.idl:
  • html/HTMLVideoElement.idl:
  • html/MediaController.idl:
  • html/MediaEncryptedEvent.idl:
  • html/MediaError.idl:
  • html/RadioNodeList.idl:
  • html/TimeRanges.idl:
  • html/ValidityState.idl:
  • html/WebKitMediaKeyError.idl:
  • html/canvas/CanvasCompositing.idl:
  • html/canvas/CanvasDrawImage.idl:
  • html/canvas/CanvasDrawPath.idl:
  • html/canvas/CanvasFillStrokeStyles.idl:
  • html/canvas/CanvasFilters.idl:
  • html/canvas/CanvasImageData.idl:
  • html/canvas/CanvasImageSmoothing.idl:
  • html/canvas/CanvasPath.idl:
  • html/canvas/CanvasPathDrawingStyles.idl:
  • html/canvas/CanvasRect.idl:
  • html/canvas/CanvasRenderingContext2D.idl:
  • html/canvas/CanvasShadowStyles.idl:
  • html/canvas/CanvasState.idl:
  • html/canvas/CanvasText.idl:
  • html/canvas/CanvasTextDrawingStyles.idl:
  • html/canvas/CanvasTransform.idl:
  • html/canvas/CanvasUserInterface.idl:
  • html/canvas/PaintRenderingContext2D.idl:
  • html/canvas/WebGLActiveInfo.idl:
  • html/canvas/WebGLBuffer.idl:
  • html/canvas/WebGLContextEvent.idl:
  • html/canvas/WebGLFramebuffer.idl:
  • html/canvas/WebGLProgram.idl:
  • html/canvas/WebGLQuery.idl:
  • html/canvas/WebGLRenderbuffer.idl:
  • html/canvas/WebGLSampler.idl:
  • html/canvas/WebGLShader.idl:
  • html/canvas/WebGLShaderPrecisionFormat.idl:
  • html/canvas/WebGLSync.idl:
  • html/canvas/WebGLTexture.idl:
  • html/canvas/WebGLTransformFeedback.idl:
  • html/canvas/WebGLUniformLocation.idl:
  • html/canvas/WebGLVertexArrayObject.idl:
  • html/track/AudioTrack.idl:
  • html/track/AudioTrackList.idl:
  • html/track/DataCue.idl:
  • html/track/TextTrack.idl:
  • html/track/TextTrackCue.idl:
  • html/track/TextTrackCueGeneric.idl:
  • html/track/TextTrackCueList.idl:
  • html/track/TextTrackList.idl:
  • html/track/TrackEvent.idl:
  • html/track/VTTCue.idl:
  • html/track/VTTRegion.idl:
  • html/track/VTTRegionList.idl:
  • html/track/VideoTrack.idl:
  • html/track/VideoTrackList.idl:
  • loader/appcache/DOMApplicationCache.idl:
  • mathml/MathMLElement.idl:
  • mathml/MathMLMathElement.idl:
  • page/BarProp.idl:
  • page/Crypto.idl:
  • page/DOMSelection.idl:
  • page/DOMWindow.idl:
  • page/GlobalCrypto.idl:
  • page/GlobalPerformance.idl:
  • page/History.idl:
  • page/IntersectionObserver.idl:
  • page/IntersectionObserverEntry.idl:
  • page/Location.idl:
  • page/Navigator+IsLoggedIn.idl:
  • page/Navigator.idl:
  • page/PerformanceNavigation.idl:
  • page/PerformancePaintTiming.idl:
  • page/PerformanceTiming.idl:
  • page/RemoteDOMWindow.idl:
  • page/ResizeObserver.idl:
  • page/ResizeObserverEntry.idl:
  • page/Screen.idl:
  • page/UndoItem.idl:
  • page/UndoManager.idl:
  • page/UserMessageHandler.idl:
  • page/UserMessageHandlersNamespace.idl:
  • page/VisualViewport.idl:
  • page/WebKitNamespace.idl:
  • page/WebKitPoint.idl:
  • plugins/DOMMimeType.idl:
  • plugins/DOMMimeTypeArray.idl:
  • plugins/DOMPlugin.idl:
  • plugins/DOMPluginArray.idl:
  • storage/Storage.idl:
  • storage/StorageEvent.idl:
  • svg/SVGAElement.idl:
  • svg/SVGAltGlyphDefElement.idl:
  • svg/SVGAltGlyphElement.idl:
  • svg/SVGAltGlyphItemElement.idl:
  • svg/SVGAngle.idl:
  • svg/SVGAnimateColorElement.idl:
  • svg/SVGAnimateElement.idl:
  • svg/SVGAnimateMotionElement.idl:
  • svg/SVGAnimateTransformElement.idl:
  • svg/SVGAnimatedAngle.idl:
  • svg/SVGAnimatedBoolean.idl:
  • svg/SVGAnimatedEnumeration.idl:
  • svg/SVGAnimatedInteger.idl:
  • svg/SVGAnimatedLength.idl:
  • svg/SVGAnimatedLengthList.idl:
  • svg/SVGAnimatedNumber.idl:
  • svg/SVGAnimatedNumberList.idl:
  • svg/SVGAnimatedPreserveAspectRatio.idl:
  • svg/SVGAnimatedRect.idl:
  • svg/SVGAnimatedString.idl:
  • svg/SVGAnimatedTransformList.idl:
  • svg/SVGAnimationElement.idl:
  • svg/SVGCircleElement.idl:
  • svg/SVGClipPathElement.idl:
  • svg/SVGComponentTransferFunctionElement.idl:
  • svg/SVGCursorElement.idl:
  • svg/SVGDefsElement.idl:
  • svg/SVGDescElement.idl:
  • svg/SVGElement.idl:
  • svg/SVGEllipseElement.idl:
  • svg/SVGFEBlendElement.idl:
  • svg/SVGFEColorMatrixElement.idl:
  • svg/SVGFEComponentTransferElement.idl:
  • svg/SVGFECompositeElement.idl:
  • svg/SVGFEConvolveMatrixElement.idl:
  • svg/SVGFEDiffuseLightingElement.idl:
  • svg/SVGFEDisplacementMapElement.idl:
  • svg/SVGFEDistantLightElement.idl:
  • svg/SVGFEDropShadowElement.idl:
  • svg/SVGFEFloodElement.idl:
  • svg/SVGFEFuncAElement.idl:
  • svg/SVGFEFuncBElement.idl:
  • svg/SVGFEFuncGElement.idl:
  • svg/SVGFEFuncRElement.idl:
  • svg/SVGFEGaussianBlurElement.idl:
  • svg/SVGFEImageElement.idl:
  • svg/SVGFEMergeElement.idl:
  • svg/SVGFEMergeNodeElement.idl:
  • svg/SVGFEMorphologyElement.idl:
  • svg/SVGFEOffsetElement.idl:
  • svg/SVGFEPointLightElement.idl:
  • svg/SVGFESpecularLightingElement.idl:
  • svg/SVGFESpotLightElement.idl:
  • svg/SVGFETileElement.idl:
  • svg/SVGFETurbulenceElement.idl:
  • svg/SVGFilterElement.idl:
  • svg/SVGFontElement.idl:
  • svg/SVGFontFaceElement.idl:
  • svg/SVGFontFaceFormatElement.idl:
  • svg/SVGFontFaceNameElement.idl:
  • svg/SVGFontFaceSrcElement.idl:
  • svg/SVGFontFaceUriElement.idl:
  • svg/SVGForeignObjectElement.idl:
  • svg/SVGGElement.idl:
  • svg/SVGGeometryElement.idl:
  • svg/SVGGlyphElement.idl:
  • svg/SVGGlyphRefElement.idl:
  • svg/SVGGradientElement.idl:
  • svg/SVGGraphicsElement.idl:
  • svg/SVGHKernElement.idl:
  • svg/SVGImageElement.idl:
  • svg/SVGLength.idl:
  • svg/SVGLengthList.idl:
  • svg/SVGLineElement.idl:
  • svg/SVGLinearGradientElement.idl:
  • svg/SVGMPathElement.idl:
  • svg/SVGMarkerElement.idl:
  • svg/SVGMaskElement.idl:
  • svg/SVGMatrix.idl:
  • svg/SVGMetadataElement.idl:
  • svg/SVGMissingGlyphElement.idl:
  • svg/SVGNumber.idl:
  • svg/SVGNumberList.idl:
  • svg/SVGPathElement.idl:
  • svg/SVGPathSeg.idl:
  • svg/SVGPathSegArcAbs.idl:
  • svg/SVGPathSegArcRel.idl:
  • svg/SVGPathSegClosePath.idl:
  • svg/SVGPathSegCurvetoCubicAbs.idl:
  • svg/SVGPathSegCurvetoCubicRel.idl:
  • svg/SVGPathSegCurvetoCubicSmoothAbs.idl:
  • svg/SVGPathSegCurvetoCubicSmoothRel.idl:
  • svg/SVGPathSegCurvetoQuadraticAbs.idl:
  • svg/SVGPathSegCurvetoQuadraticRel.idl:
  • svg/SVGPathSegCurvetoQuadraticSmoothAbs.idl:
  • svg/SVGPathSegCurvetoQuadraticSmoothRel.idl:
  • svg/SVGPathSegLinetoAbs.idl:
  • svg/SVGPathSegLinetoHorizontalAbs.idl:
  • svg/SVGPathSegLinetoHorizontalRel.idl:
  • svg/SVGPathSegLinetoRel.idl:
  • svg/SVGPathSegLinetoVerticalAbs.idl:
  • svg/SVGPathSegLinetoVerticalRel.idl:
  • svg/SVGPathSegList.idl:
  • svg/SVGPathSegMovetoAbs.idl:
  • svg/SVGPathSegMovetoRel.idl:
  • svg/SVGPatternElement.idl:
  • svg/SVGPoint.idl:
  • svg/SVGPointList.idl:
  • svg/SVGPolygonElement.idl:
  • svg/SVGPolylineElement.idl:
  • svg/SVGPreserveAspectRatio.idl:
  • svg/SVGRadialGradientElement.idl:
  • svg/SVGRect.idl:
  • svg/SVGRectElement.idl:
  • svg/SVGRenderingIntent.idl:
  • svg/SVGSVGElement.idl:
  • svg/SVGScriptElement.idl:
  • svg/SVGSetElement.idl:
  • svg/SVGStopElement.idl:
  • svg/SVGStringList.idl:
  • svg/SVGStyleElement.idl:
  • svg/SVGSwitchElement.idl:
  • svg/SVGSymbolElement.idl:
  • svg/SVGTRefElement.idl:
  • svg/SVGTSpanElement.idl:
  • svg/SVGTextContentElement.idl:
  • svg/SVGTextElement.idl:
  • svg/SVGTextPathElement.idl:
  • svg/SVGTextPositioningElement.idl:
  • svg/SVGTitleElement.idl:
  • svg/SVGTransform.idl:
  • svg/SVGTransformList.idl:
  • svg/SVGUnitTypes.idl:
  • svg/SVGUseElement.idl:
  • svg/SVGVKernElement.idl:
  • svg/SVGViewElement.idl:
  • svg/SVGViewSpec.idl:
  • svg/SVGZoomEvent.idl:
  • workers/Worker.idl:
  • workers/service/ExtendableEvent.idl:
  • workers/service/ExtendableEventInit.idl:
  • workers/service/FetchEvent.idl:
  • worklets/Worklet.idl:
  • xml/DOMParser.idl:
  • xml/XMLHttpRequestProgressEvent.idl:
  • xml/XMLSerializer.idl:
  • xml/XPathEvaluator.idl:
  • xml/XPathExpression.idl:
  • xml/XPathResult.idl:
  • xml/XSLTProcessor.idl:
5:13 PM Changeset in webkit [267812] by keith_miller@apple.com
  • 6 edits in trunk

CSS Selector an-plus-b serialization is incorrect
https://bugs.webkit.org/show_bug.cgi?id=217108

Reviewed by Darin Adler.

LayoutTests/imported/w3c:

Rebasline tests for correct an-plus-b serialization

  • web-platform-tests/css/cssom/selectorSerialize-expected.txt:
  • web-platform-tests/css/selectors/anplusb-selector-parsing-expected.txt:

Source/WebCore:

Right now we don't differentiate our CSS serialization for
an-plus-b expressions from any other CSS sytnax. This is
incorrect, according to the CSS spec an-plus-b expressions have
custom serialization rules. See:
https://www.w3.org/TR/css-syntax-3/#serializing-anb

One thing of note is for constant an-plus-b expressions (i.e. a is
zero so the resulting string is just a number), we get the string
from JSC::VM's numeric string cache.

  • css/parser/CSSSelectorParser.cpp:

(WebCore::CSSSelectorParser::consumePseudo):
(WebCore::serializeANPlusB):

5:01 PM Changeset in webkit [267811] by James Darpinian
  • 4 edits in trunk

Expose pvrtc extension without vendor prefix and remove redundant WebGL 2 extensions
https://bugs.webkit.org/show_bug.cgi?id=217110

Reviewed by Kenneth Russell.

Extensions are tested in LayoutTests/webgl

  • html/canvas/WebGL2RenderingContext.cpp:

(WebCore::WebGL2RenderingContext::getExtension):
(WebCore::WebGL2RenderingContext::getSupportedExtensions):

  • html/canvas/WebGLRenderingContext.cpp:

(WebCore::WebGLRenderingContext::getExtension):
(WebCore::WebGLRenderingContext::getSupportedExtensions):

4:51 PM Changeset in webkit [267810] by Jonathan Bedard
  • 8 edits in trunk/Tools

[webkitscmpy] Check if a git checkout is linked to an SVN checkout
https://bugs.webkit.org/show_bug.cgi?id=216888
<rdar://problem/69446322>

Reviewed by Dewei Zhu.

  • Scripts/libraries/webkitscmpy/webkitscmpy/init.py: Increment library version.
  • Scripts/libraries/webkitscmpy/webkitscmpy/local/git.py:

(Git.info): Run git svn info if in a Git-SVN checkout.
(Git.is_svn): Check if in a Git-SVN checkout.
(Git.is_git): Return True.

  • Scripts/libraries/webkitscmpy/webkitscmpy/local/scm.py:

(Scm.is_svn): Return False.
(Scm.is_git): Ditto.

  • Scripts/libraries/webkitscmpy/webkitscmpy/local/svn.py:

(Svn.is_svn): Return True.

  • Scripts/libraries/webkitscmpy/webkitscmpy/mocks/local/git.py:

(Git.init): Add git svn commands.

  • Scripts/libraries/webkitscmpy/webkitscmpy/test/git_unittest.py:

(TestGit.test_scm_type):
(TestGit.test_info):

  • Scripts/libraries/webkitscmpy/webkitscmpy/test/svn_unittest.py:

(TestSvn.test_scm_type):

4:23 PM Changeset in webkit [267809] by Simon Fraser
  • 2 edits in trunk/Source/WebCore

Adjuster::computeEventListenerRegionTypes() should use ENABLE(WHEEL_EVENT_REGIONS) not a platform #ifdef
https://bugs.webkit.org/show_bug.cgi?id=217146

Reviewed by Tim Horton.

Use ENABLE(WHEEL_EVENT_REGIONS) instead of !PLATFORM(IOS_FAMILY).

  • style/StyleAdjuster.cpp:

(WebCore::Style::Adjuster::computeEventListenerRegionTypes):

3:28 PM Changeset in webkit [267808] by ysuzuki@apple.com
  • 6 edits in trunk/Source/JavaScriptCore

[JSC] Common slow paths should be JIT operations
https://bugs.webkit.org/show_bug.cgi?id=217141

Reviewed by Saam Barati.

Unlike LLInt slow paths, common (common means common between LLInt and Baseline) slow paths can be called from baseline JIT code. Thus, they should be JIT operations.

  • llint/LLIntSlowPaths.cpp:

(JSC::LLInt::llint_slow_path_checkpoint_osr_exit_from_inlined_call):
(JSC::LLInt::llint_slow_path_checkpoint_osr_exit):
(JSC::LLInt::slow_path_checkpoint_osr_exit_from_inlined_call): Deleted.
(JSC::LLInt::slow_path_checkpoint_osr_exit): Deleted.

  • llint/LLIntSlowPaths.h:
  • llint/LowLevelInterpreter.asm:
  • runtime/CommonSlowPaths.cpp:

(JSC::JSC_DEFINE_COMMON_SLOW_PATH):
(JSC::iteratorOpenTryFastImpl):
(JSC::iteratorNextTryFastImpl):
(JSC::SLOW_PATH_DECL): Deleted.
(JSC::iterator_open_try_fast): Deleted.
(JSC::iterator_next_try_fast): Deleted.

  • runtime/CommonSlowPaths.h:
2:22 PM Changeset in webkit [267807] by basuke.suzuki@sony.com
  • 18 edits
    4 copies
    3 adds in trunk/Source

[PlayStation][WinCairo] Enable WebDriver target on PlayStation and client for WinCairo
https://bugs.webkit.org/show_bug.cgi?id=216908

Reviewed by Don Olmstead.

Source/JavaScriptCore:

Implement automation session correctly for PlayStation and WinCairo.

  • inspector/remote/RemoteInspector.h:
  • inspector/remote/socket/RemoteInspectorConnectionClient.cpp:

(Inspector::RemoteInspectorConnectionClient::parseTargetListJSON):

  • inspector/remote/socket/RemoteInspectorConnectionClient.h:
  • inspector/remote/socket/RemoteInspectorSocket.cpp:

(Inspector::RemoteInspector::stopInternal):
(Inspector::RemoteInspector::requestAutomationSession):
(Inspector::RemoteInspector::startAutomationSession):

Source/WebDriver:

Extend WebDriver client binary to support connection to remote device for both PlayStation
and WinCairo. We've implemented a simple web server to accept WebDriver request natively and bypass them
to RemoteInspector.

  • Capabilities.h:
  • HTTPServer.h:
  • PlatformPlayStation.cmake: Added.
  • PlatformWin.cmake:
  • SessionHost.h:

(WebDriver::SessionHost::setHostAddress):

  • WebDriverMain.cpp:

(main):
(dllLauncherEntryPoint):

  • WebDriverService.cpp:

(WebDriver::printUsageStatement):
(WebDriver::WebDriverService::run):
(WebDriver::WebDriverService::connectToBrowser):

  • WebDriverService.h:
  • gtk/WebDriverServiceGtk.cpp:

(WebDriver::WebDriverService::platformInit):

  • playstation/WebDriverServicePlayStation.cpp: Copied from Source\WebDriver\win\WebDriverServiceWin.cpp.

(WebDriver::WebDriverService::platformInit):
(WebDriver::WebDriverService::platformCapabilities):
(WebDriver::WebDriverService::platformCompareBrowserVersions):
(WebDriver::WebDriverService::platformValidateCapability const):
(WebDriver::WebDriverService::platformMatchCapability const):
(WebDriver::WebDriverService::platformParseCapabilities const):
(WebDriver::WebDriverService::platformSupportProxyType const):

  • socket/CapabilitiesSocket.cpp: Copied from Source\WebDriver\socket\SessionHostSocket.cpp.

(WebDriver::CapabilitiesSocket::parseCapabilities):

  • socket/CapabilitiesSocket.h: Copied from Source\WebDriver\socket\HTTPServerSocket.cpp.
  • socket/HTTPParser.cpp: Added.

(WebDriver::HTTPParser::parse):
(WebDriver::HTTPParser::handlePhase):
(WebDriver::HTTPParser::abortProcess):
(WebDriver::HTTPParser::parseFirstLine):
(WebDriver::HTTPParser::readLine):
(WebDriver::HTTPParser::expectedBodyLength const):

  • socket/HTTPParser.h: Copied from Source\WebDriver\HTTPServer.h.

(WebDriver::HTTPParser::pullMessage):

  • socket/HTTPServerSocket.cpp:

(WebDriver::HTTPServer::listen):
(WebDriver::HTTPServer::disconnect):
(WebDriver::HTTPServer::doAccept):
(WebDriver::HTTPServer::didClose):
(WebDriver::HTTPRequestHandler::connect):
(WebDriver::HTTPRequestHandler::reset):
(WebDriver::HTTPRequestHandler::didReceive):
(WebDriver::HTTPRequestHandler::sendResponse):
(WebDriver::HTTPRequestHandler::packHTTPMessage const):
(WebDriver::HTTPRequestHandler::didClose):

  • socket/SessionHostSocket.cpp:

(WebDriver::SessionHost::dispatchMap):
(WebDriver::SessionHost::sendWebInspectorEvent):
(WebDriver::SessionHost::connectToBrowser):
(WebDriver::SessionHost::isConnected const):
(WebDriver::SessionHost::didClose):
(WebDriver::SessionHost::parseTargetList):
(WebDriver::SessionHost::receivedSetTargetList):
(WebDriver::SessionHost::receivedSendMessageToFrontend):
(WebDriver::SessionHost::startAutomationSession):
(WebDriver::SessionHost::setTargetList):
(WebDriver::SessionHost::sendMessageToBackend):

  • win/WebDriverServiceWin.cpp:

(WebDriver::WebDriverService::platformInit):
(WebDriver::WebDriverService::platformParseCapabilities const):

  • wpe/WebDriverServiceWPE.cpp:

(WebDriver::WebDriverService::platformInit):

1:54 PM Changeset in webkit [267806] by wenson_hsieh@apple.com
  • 2 edits in trunk/Source/WebKit

[GPU Process] Canvas layout tests occasionally crash the web process under PutImageData::apply
https://bugs.webkit.org/show_bug.cgi?id=217140

Reviewed by Tim Horton.

When destroying a RemoteImageBuffer, logic exists in the superclass (DisplayList::ImageBuffer) that attempts
to flush any remaining display list items. However, this currently doesn't work as intended, since we've already
finished destroying the subclass, so the superclass' call to flushDrawingContext() calls `DisplayList::
ImageBuffer::flushDrawingContext() rather than RemoteImageBuffer::flushDrawingContext()`. Rather than flushing
display list items to the GPU process, this has the effect of attempting to replay these display list items to
the drawing context (which is backed by a DisplayList anyways), so this ends up having no tangible effect.

However, if one of these display list items happens to be PutImageData, we'll end up hitting an assertion due
to being unable to apply it without a Delegate. To fix this, hoist the call to flushDrawingContext() out to
~RemoteImageBuffer(), rather than ~DisplayList::ImageBuffer().

  • WebProcess/GPU/graphics/RemoteImageBuffer.h:

(WebKit::RemoteImageBuffer::~RemoteImageBuffer):

1:53 PM Changeset in webkit [267805] by Jonathan Bedard
  • 4 edits in trunk/Tools

[webkitpy] Use webkitcorepy's auto installer for html5lib
https://bugs.webkit.org/show_bug.cgi?id=217130
<rdar://problem/69798724>

Rubber-stamped by Aakash Jain.

  • Scripts/webkitpy/init.py: Add html5lib, webencodings and genshi.
  • Scripts/webkitpy/thirdparty/init.py:

(AutoinstallImportHook.find_module): Remove html5lib.
(AutoinstallImportHook._install_mechanize):Ditto.
(AutoinstallImportHook._install_beautifulsoup): Ditto.
(AutoinstallImportHook._install_html5lib): Deleted.

1:51 PM Changeset in webkit [267804] by pvollan@apple.com
  • 3 edits in trunk/Source/WebKit

[macOS] Deny mach-lookup to the analytics service in the WebContent process
https://bugs.webkit.org/show_bug.cgi?id=217137
<rdar://problem/69019193>

Reviewed by Brent Fulgham.

Only internal OS variants should have access to the 'com.apple.analyticsd' service.

  • UIProcess/Cocoa/WebProcessPoolCocoa.mm:

(WebKit::diagnosticServices):

  • WebProcess/com.apple.WebProcess.sb.in:
1:29 PM Changeset in webkit [267803] by Alan Coon
  • 1 copy in tags/Safari-610.1.28.1.10

Tag Safari-610.1.28.1.10.

1:27 PM Changeset in webkit [267802] by achristensen@apple.com
  • 2 edits in trunk/Source/WebKit

REGRESSION[267763] RELEASE_ASSERT in allNetworkProcesses hit when registering legacy protocol handlers before instantiating any WebKit objects
https://bugs.webkit.org/show_bug.cgi?id=217142
<rdar://problem/69778879>

Reviewed by Brady Eidson.

RELEASE_ASSERT(RunLoop::isMain()) was crashing because WTF::initializeMainThread hadn't been called.
This wasn't a problem before r267763 because the assertion did not exist. Rather than remove the assertion (which I think is important to have)
let's just initialize WebKit threading at these SPI entry points.
This unfortunately can't be tested with our current infrastructure because TestsController's constructor calls initializeMainThread.

  • UIProcess/WebProcessPool.cpp:

(WebKit::WebProcessPool::registerGlobalURLSchemeAsHavingCustomProtocolHandlers):
(WebKit::WebProcessPool::unregisterGlobalURLSchemeAsHavingCustomProtocolHandlers):

1:27 PM Changeset in webkit [267801] by Alan Coon
  • 8 edits in branches/safari-610.1.28.1-branch/Source

Versioning.

WebKit-7610.1.28.1.10

12:24 PM Changeset in webkit [267800] by Alan Bujtas
  • 4 edits
    2 adds in trunk

[LFC][Integration] Enable <wbr> content
https://bugs.webkit.org/show_bug.cgi?id=217065

Reviewed by Antti Koivisto.

Source/WebCore:

Enable <wbr> content now that IFC fully supports it.

Test: fast/text/wbr-simple.html

  • layout/integration/LayoutIntegrationCoverage.cpp:

(WebCore::LayoutIntegration::canUseForLineLayoutWithReason):

LayoutTests:

  • fast/text/wbr-simple-expected.html: Added.
  • fast/text/wbr-simple.html: Added.
12:06 PM Changeset in webkit [267799] by youenn@apple.com
  • 7 edits in trunk/Source/WebCore

Handle deprecation warnings from libwebrtc headers
https://bugs.webkit.org/show_bug.cgi?id=217126
<rdar://problem/69747375>

Reviewed by Tim Horton.

Disable deprecation warnings coming from libwebrtc headers.

  • Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.h:
  • Modules/mediastream/libwebrtc/LibWebRTCObservers.h:
  • Modules/mediastream/libwebrtc/LibWebRTCRtpTransceiverBackend.h:
  • Modules/mediastream/libwebrtc/LibWebRTCUtils.cpp:
  • platform/mediastream/libwebrtc/LibWebRTCProvider.h:
  • testing/MockLibWebRTCPeerConnection.h:
11:37 AM Changeset in webkit [267798] by Ryan Haddad
  • 26 edits
    2 deletes in trunk

Unreviewed, reverting r267788.

Broke internal builds.

Reverted changeset:

"MediaRecorder should support isTypeSupported"
https://bugs.webkit.org/show_bug.cgi?id=216856
https://trac.webkit.org/changeset/267788

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

Unreviewed, reverting r267795.
https://bugs.webkit.org/show_bug.cgi?id=217135

Incorrect fix.

Reverted changeset:

"REGRESSION(r259582): Build fails on aarch64 Linux with WebKit
2.30.1 on LLIntOffsetsExtractor.cpp.o"
https://bugs.webkit.org/show_bug.cgi?id=217079
https://trac.webkit.org/changeset/267795

10:45 AM WebKitGTK/2.30.x edited by Michael Catanzaro
(diff)
10:12 AM WebKitGTK/2.30.x edited by Michael Catanzaro
(diff)
10:10 AM Changeset in webkit [267796] by weinig@apple.com
  • 57 edits
    4 copies
    13 deletes in trunk

Remove code behind ENABLE(MEDIA_SESSION), no ports enable it
https://bugs.webkit.org/show_bug.cgi?id=216831

Reviewed by Alex Christensen.

.:

  • Source/cmake/OptionsFTW.cmake:
  • Source/cmake/WebKitFeatures.cmake:

Remove option to build with MEDIA_SESSION, no one was doing it.

Source/WebCore:

  • CMakeLists.txt:
  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:

Remove media session related files.

  • Modules/airplay/PlaybackTargetClientContextIdentifier.h: Added.
  • Modules/airplay/WebMediaSessionManager.cpp: Added.
  • Modules/airplay/WebMediaSessionManager.h: Added.
  • Modules/airplay/WebMediaSessionManagerClient.h: Added.
  • Modules/mediasession: Removed.
  • platform/mediasession: Removed.

Delete Modules/mediasession and platform/mediasession. Move files that
were actually used for the WIRELESS_PLAYBACK_TARGET feature to
Modules/airplay where other parts of that feature are implemented.

  • dom/Document.cpp:
  • dom/Document.h:
  • dom/EventTargetFactory.in:
  • html/HTMLMediaElement.cpp:
  • html/HTMLMediaElement.h:
  • page/ChromeClient.h:
  • page/Page.cpp:
  • page/Page.h:
  • testing/Internals.cpp:
  • testing/Internals.h:
  • testing/Internals.idl:

Remove all code inside ENABLE(MEDIA_SESSION).

Source/WebKit:

Removes all code in ENABLE(MEDIA_SESSION) and all media session
related SPI. It was never enabled and nothing ever adopted it.

  • Sources.txt:
  • SourcesCocoa.txt:
  • WebKit.xcodeproj/project.pbxproj:

Remove media session related files.

  • Shared/API/APIObject.h:
  • Shared/API/c/WKBase.h:
  • Shared/WebCoreArgumentCoders.cpp:
  • Shared/WebCoreArgumentCoders.h:
  • Shared/WebMediaSessionMetadata.cpp: Removed.
  • Shared/WebMediaSessionMetadata.h: Removed.
  • UIProcess/API/APIUIClient.h:
  • UIProcess/API/C/WKAPICast.h:
  • UIProcess/API/C/WKContext.cpp:
  • UIProcess/API/C/WKContext.h:
  • UIProcess/API/C/WKMediaSessionFocusManager.cpp: Removed.
  • UIProcess/API/C/WKMediaSessionFocusManager.h: Removed.
  • UIProcess/API/C/WKMediaSessionMetadata.cpp: Removed.
  • UIProcess/API/C/WKMediaSessionMetadata.h: Removed.
  • UIProcess/API/C/WKPage.cpp:
  • UIProcess/API/C/WKPagePrivate.h:
  • UIProcess/API/C/WKPageUIClient.h:
  • UIProcess/WebMediaSessionFocusManager.cpp: Removed.
  • UIProcess/WebMediaSessionFocusManager.h: Removed.
  • UIProcess/WebMediaSessionFocusManagerClient.cpp: Removed.
  • UIProcess/WebMediaSessionFocusManagerClient.h: Removed.
  • UIProcess/WebPageProxy.cpp:
  • UIProcess/WebPageProxy.h:
  • UIProcess/WebPageProxy.messages.in:
  • UIProcess/WebProcessPool.cpp:
  • UIProcess/WebProcessPool.h:
  • WebProcess/WebCoreSupport/WebChromeClient.cpp:
  • WebProcess/WebCoreSupport/WebChromeClient.h:
  • WebProcess/WebPage/WebPage.cpp:
  • WebProcess/WebPage/WebPage.h:
  • WebProcess/WebPage/WebPage.messages.in:

Remove all code in ENABLE(MEDIA_SESSION).

Tools:

  • Scripts/webkitperl/FeatureList.pm:

Remove support for building with MEDIA_SESSION enabled.

  • WebKitTestRunner/TestController.cpp:

(WTR::TestController::createOtherPage):
(WTR::TestController::createWebViewWithOptions):
Update names to new 'unused' naming.

LayoutTests:

Remove always skipped Media Session tests.

10:07 AM Changeset in webkit [267795] by commit-queue@webkit.org
  • 4 edits in trunk/Source

REGRESSION(r259582): Build fails on aarch64 Linux with WebKit 2.30.1 on LLIntOffsetsExtractor.cpp.o
https://bugs.webkit.org/show_bug.cgi?id=217079

Patch by Mike Gorse <mgorse@suse.com> on 2020-09-30
Reviewed by Michael Catanzaro.

Source/JavaScriptCore:

  • assembler/LinkBuffer.cpp:

(JSC::LinkBuffer::copyCompactAndLinkCode): DOn't compile in a call to
dumpJITMemory if JIT is disabled; leads to a build failure.

Source/WTF:

  • wtf/PlatformEnable.h: Only define USE_JUMP_ISLANDS if JIT is enabled.
9:40 AM Changeset in webkit [267794] by Andres Gonzalez
  • 6 edits in trunk/Source/WebCore

Fix for multiple layout tests in accessibility isolated tree mode.
https://bugs.webkit.org/show_bug.cgi?id=217093

Reviewed by Chris Fleizach and Darin Adler.

Fix for the following layout tests in accessibility isolated tree mode:
accessibility/aria-menubar-menuitems.html
accessibility/aria-orientation.html
accessibility/set-selected-editable.html
accessibility/removed-continuation-element-causes-crash.html

  • accessibility/AXObjectCache.cpp:

(WebCore::AXObjectCache::handleAttributeChange):
Update the isolated tree when the id attribute is modified. This is
needed for all tests that assign an id attribute to an element in JS,
in order to retrieve its accessibility object via AccessibilityController::accessibleElementById.
In addition, changed the handling of the lang attribute to just update
the isolated tree instead of posting a notification which is not used.

(WebCore::AXObjectCache::updateIsolatedTree):
Update the AXIsolatedObject IdentifierAttribute property.
Replaced the updateNodeCheckedState method with the more general updateNodeProperty.

  • accessibility/AXObjectCache.h:
  • accessibility/isolatedtree/AXIsolatedObject.cpp:

(WebCore::AXIsolatedObject::initializeAttributeData):
The ComputedRoleString property needs to be isolatedCopied.

  • accessibility/isolatedtree/AXIsolatedTree.cpp:

(WebCore::AXIsolatedTree::generateSubtree):
Instead of having an out parameter in createSubtree to collect the NodeChanges
that need to be added to the tree, we now add each individual pending
append as the live tree is traversed. This solves the issue manifest in
some tests where during the creation of the subtree, applyPendingChanges
was called and node properties were not updated because the nodes were
not added to the tree yet.

(WebCore::AXIsolatedTree::createSubtree): See above comment for generateSubtree.
(WebCore::AXIsolatedTree::updateNode):
(WebCore::AXIsolatedTree::updateNodeProperty):
Replaces updateNodeCheckedState to allow update of any individual property.

(WebCore::AXIsolatedTree::removeNode): Also remove the entry from m_nodeMap.
(WebCore::AXIsolatedTree::removeSubtree):
(WebCore::AXIsolatedTree::applyPendingChanges):
(WebCore::AXIsolatedTree::NodeChange::NodeChange):
Deleted, using aggregate initialization.

(WebCore::AXIsolatedTree::updateNodeCheckedState): Became updateNodeProperty.
(WebCore::AXIsolatedTree::appendNodeChanges): Deleted, not needed any longer.

  • accessibility/isolatedtree/AXIsolatedTree.h:
9:34 AM Changeset in webkit [267793] by Brian Burg
  • 2 edits in trunk/Source/WebKit

Web Inspector: exempt API::SharedJSContext from remote inspection and automatic inspection
https://bugs.webkit.org/show_bug.cgi?id=217109
<rdar://problem/69386559>

Reviewed by Mark Lam.

We have seen occasional unexpected spins underneath pauseWaitingForRemoteInspection() waiting
for this JSContext. Since it does not evaluate JavaScript and is WebKit-internal, simply disable
remote inspection for the JSContext.

  • UIProcess/API/Cocoa/APISerializedScriptValueCocoa.mm:

(API::SharedJSContext::ensureContext):

9:30 AM Changeset in webkit [267792] by timothy_horton@apple.com
  • 2 edits in trunk/Source/WebKit

REGRESSION (r265009): Web Share API can no longer be invoked if a previous invocation was dismissed using the close button
https://bugs.webkit.org/show_bug.cgi?id=216913
<rdar://problem/69659878>

Reviewed by Darin Adler.

No new tests; not able to test without UI tests that actually use UIActivityViewController.

  • UIProcess/Cocoa/WKShareSheet.mm:

(-[WKShareSheet presentWithShareDataArray:inRect:]):
-presentationControllerDidDismiss is not called if the UIActivityViewController is
programmatically dismissed, so we need to revert to observing completion via
UIActivityViewController's -completionWithItemsHandler.

In order to avoid regressing bug 214894 by doing so, we also need to
make sure that we're actually not presented anymore, as -completionWithItemsHandler
can be called multiple times before the share sheet is actually dismissed.

9:04 AM Changeset in webkit [267791] by weinig@apple.com
  • 29 edits in trunk

Re-align DocumentAndElementEventHandlers.idl, GlobalEventHandlers.idl and WindowEventHandlers.idl with the HTML spec
https://bugs.webkit.org/show_bug.cgi?id=217088

Reviewed by Darin Adler.

LayoutTests/imported/w3c:

Update results for more passing tests.

  • web-platform-tests/html/dom/idlharness.https-expected.txt:
  • web-platform-tests/html/webappapis/scripting/events/event-handler-attributes-body-window-expected.txt:
  • web-platform-tests/html/webappapis/scripting/events/event-handler-attributes-windowless-body-expected.txt:
  • web-platform-tests/mathml/relations/html5-tree/math-global-event-handlers.tentative-expected.txt:

Source/WebCore:

Re-align DocumentAndElementEventHandlers.idl, GlobalEventHandlers.idl and WindowEventHandlers.idl with
the HTML spec, adding commented out variants of properties we don't yet support. The actual changes are:

  • onwebkitanimation* handlers moved from DocumentAndElementEventHandlers to GlobalEventHandlers (and were removed from DOMWindow as they are now redundant).
  • onrejectionhandled/onunhandledrejection handlers move from GlobalEventHandlers to WindowEventHandlers

Updated results for more existing tests that now pass.

  • dom/DocumentAndElementEventHandlers.idl:
  • dom/GlobalEventHandlers.idl:
  • page/DOMWindow.idl:
  • page/WindowEventHandlers.idl:
  • workers/WorkerGlobalScope.idl:

LayoutTests:

Update results for more passing tests.

  • fast/dom/event-handler-attributes-expected.txt:
  • js/dom/dom-static-property-for-in-iteration-expected.txt:
  • platform/glib/imported/w3c/web-platform-tests/mathml/relations/html5-tree/math-global-event-handlers.tentative-expected.txt:
  • platform/gtk/imported/w3c/web-platform-tests/html/dom/idlharness.https-expected.txt:
  • platform/gtk/js/dom/dom-static-property-for-in-iteration-expected.txt:
  • platform/ios-wk2/imported/w3c/web-platform-tests/html/dom/idlharness.https-expected.txt:
  • platform/ios-wk2/imported/w3c/web-platform-tests/mathml/relations/html5-tree/math-global-event-handlers.tentative-expected.txt:
  • platform/ios-wk2/js/dom/dom-static-property-for-in-iteration-expected.txt:
  • platform/mac-wk1/imported/w3c/web-platform-tests/html/dom/idlharness.https-expected.txt:
  • platform/mac-wk1/imported/w3c/web-platform-tests/mathml/relations/html5-tree/math-global-event-handlers.tentative-expected.txt:
  • platform/mac-wk2/imported/w3c/web-platform-tests/html/dom/idlharness.https-expected.txt:
  • platform/mac-wk2/imported/w3c/web-platform-tests/mathml/relations/html5-tree/math-global-event-handlers.tentative-expected.txt:
  • platform/mac-wk2/js/dom/dom-static-property-for-in-iteration-expected.txt:
  • platform/wpe/imported/w3c/web-platform-tests/html/dom/idlharness.https-expected.txt:
  • platform/wpe/js/dom/dom-static-property-for-in-iteration-expected.txt:
8:00 AM Changeset in webkit [267790] by Alan Bujtas
  • 5 edits
    2 moves in trunk/Source/WebCore

[LFC][IFC] Rename LineBreaker to InlineContentBreaker
https://bugs.webkit.org/show_bug.cgi?id=217119

Reviewed by Antti Koivisto.

This class is responsible for breaking inline content.

  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • layout/inlineformatting/InlineContentBreaker.cpp: Renamed from Source/WebCore/layout/inlineformatting/InlineLineBreaker.cpp.

(WebCore::Layout::isTextContentOnly):
(WebCore::Layout::isVisuallyEmptyWhitespaceContentOnly):
(WebCore::Layout::isNonContentRunsOnly):
(WebCore::Layout::firstTextRunIndex):
(WebCore::Layout::lastContentRunIndex):
(WebCore::Layout::isWrappingAllowed):
(WebCore::Layout::shouldKeepBeginningOfLineWhitespace):
(WebCore::Layout::lastWrapOpportunityIndex):
(WebCore::Layout::InlineContentBreaker::isContentWrappingAllowed const):
(WebCore::Layout::InlineContentBreaker::shouldKeepEndOfLineWhitespace const):
(WebCore::Layout::InlineContentBreaker::processInlineContent):
(WebCore::Layout::InlineContentBreaker::processOverflowingContent const):
(WebCore::Layout::InlineContentBreaker::processOverflowingTextContent const):
(WebCore::Layout::InlineContentBreaker::wordBreakBehavior const):
(WebCore::Layout::InlineContentBreaker::tryBreakingTextRun const):
(WebCore::Layout::InlineContentBreaker::ContinuousContent::append):
(WebCore::Layout::InlineContentBreaker::ContinuousContent::reset):

  • layout/inlineformatting/InlineContentBreaker.h: Renamed from Source/WebCore/layout/inlineformatting/InlineLineBreaker.h.

(WebCore::Layout::InlineContentBreaker::ContinuousContent::logicalWidth const):
(WebCore::Layout::InlineContentBreaker::ContinuousContent::logicalLeft const):
(WebCore::Layout::InlineContentBreaker::ContinuousContent::collapsibleLogicalWidth const):
(WebCore::Layout::InlineContentBreaker::ContinuousContent::nonCollapsibleLogicalWidth const):
(WebCore::Layout::InlineContentBreaker::ContinuousContent::hasTrailingCollapsibleContent const):
(WebCore::Layout::InlineContentBreaker::ContinuousContent::isFullyCollapsible const):
(WebCore::Layout::InlineContentBreaker::ContinuousContent::runs const):
(WebCore::Layout::InlineContentBreaker::setHyphenationDisabled):
(WebCore::Layout::InlineContentBreaker::ContinuousContent::Run::Run):

  • layout/inlineformatting/InlineLineBuilder.cpp:

(WebCore::Layout::LineCandidate::InlineContent::continuousContent const):
(WebCore::Layout::LineBuilder::placeInlineContent):
(WebCore::Layout::LineBuilder::handleFloatsAndInlineContent):
(WebCore::Layout::LineBuilder::commitPartialContent):

  • layout/inlineformatting/InlineLineBuilder.h:
7:18 AM Changeset in webkit [267789] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WTF

[GTK] Chassis type check fails if the value is quoted
https://bugs.webkit.org/show_bug.cgi?id=217123

Patch by Alexander Mikhaylenko <alexm@gnome.org> on 2020-09-30
Reviewed by Carlos Garcia Campos.

Sometimes the chassis type can be quoted, in this case we'll fail to
parse it and fall back to desktop type. Unquote the string before
attempting to parse it.

  • wtf/glib/ChassisType.cpp:

(WTF::readMachineInfoChassisType):

7:12 AM Changeset in webkit [267788] by youenn@apple.com
  • 26 edits
    2 adds in trunk

MediaRecorder should support isTypeSupported
https://bugs.webkit.org/show_bug.cgi?id=216856

Reviewed by Darin Adler.

LayoutTests/imported/w3c:

  • web-platform-tests/mediacapture-record/MediaRecorder-mimetype-expected.txt:
  • web-platform-tests/mediacapture-record/MediaRecorder-peerconnection.https-expected.txt:
  • web-platform-tests/mediacapture-record/idlharness.window-expected.txt:
  • web-platform-tests/mediacapture-record/passthrough/MediaRecorder-passthrough.https-expected.txt:
  • web-platform-tests/mediacapture-record/passthrough/MediaRecorder-passthrough.https.html:

Remove JS console log error line.

Source/WebCore:

Introduce MediaRecorder::isMimeTypeSupported whose result is exposed as MediaRecoder.isTypeSupported.
Cocoa port allows mp4 audio and video mime types, with H264 and AAC codecs.
Add a routine to get the mime type from the MediaRecorderPrivate.
Store it in MediaRecorder and add a mimeType getter.

Test: http/wpt/mediarecorder/mimeType.html

  • Modules/mediarecorder/MediaRecorder.cpp:

(WebCore::MediaRecorder::isTypeSupported):
(WebCore::MediaRecorder::create):

  • Modules/mediarecorder/MediaRecorder.h:
  • Modules/mediarecorder/MediaRecorder.idl:
  • Modules/mediarecorder/MediaRecorderProvider.cpp:

(WebCore::MediaRecorderProvider::isSupported):

  • Modules/mediarecorder/MediaRecorderProvider.h:
  • platform/mediarecorder/MediaRecorderPrivate.cpp:

(WebCore::MediaRecorderPrivate::mimeType const):

  • platform/mediarecorder/MediaRecorderPrivate.h:
  • platform/mediarecorder/MediaRecorderPrivateAVFImpl.cpp:

(WebCore::MediaRecorderPrivateAVFImpl::fetchData):

  • platform/mediarecorder/MediaRecorderPrivateAVFImpl.h:
  • platform/mediarecorder/MediaRecorderPrivateMock.cpp:

(WebCore::MediaRecorderPrivateMock::mimeType const):

  • platform/mediarecorder/MediaRecorderPrivateMock.h:
  • platform/mediastream/MediaStreamPrivate.h:

Source/WebKit:

Stop passing mimeType for each data blob.
Instead, compute it on WebProcess side.

  • GPUProcess/webrtc/RemoteMediaRecorder.cpp:

(WebKit::RemoteMediaRecorder::fetchData):

  • GPUProcess/webrtc/RemoteMediaRecorder.h:
  • GPUProcess/webrtc/RemoteMediaRecorder.messages.in:
  • WebProcess/GPU/webrtc/MediaRecorderPrivate.cpp:

(WebKit::MediaRecorderPrivate::MediaRecorderPrivate):
(WebKit::MediaRecorderPrivate::fetchData):
(WebKit::MediaRecorderPrivate::mimeType const):

  • WebProcess/GPU/webrtc/MediaRecorderPrivate.h:

LayoutTests:

  • http/wpt/mediarecorder/mimeType-expected.txt: Added.
  • http/wpt/mediarecorder/mimeType.html: Added.
7:10 AM Changeset in webkit [267787] by Philippe Normand
  • 17 edits
    4 adds in trunk

[GStreamer] Internal audio rendering support
https://bugs.webkit.org/show_bug.cgi?id=207634

Reviewed by Xabier Rodriguez-Calvar.

.:

  • Source/cmake/FindWPEBackend_fdo.cmake: Check for the audio extension header initially

shipped in the 1.8.0 release.

  • Source/cmake/GStreamerChecks.cmake: Check and enable external audio rendering support if

the WPEBackend-FDO audio extension was found.

Source/WebCore:

This patch introduces two features regarding audio rendering:

  1. Internal audio mixing enabled at runtime with the WEBKIT_GST_ENABLE_AUDIO_MIXER=1

environment variable. When this is enabled, the WebProcess will have its GStreamer backends
render to dedicated WebKit audio sinks. Those will forward buffers to a singleton audio
mixer. The resulting audio stream will then be rendered through the default audio sink
(PulseAudio in most cases). Using this approach, applications will maintain a single
connection to the audio daemon.

  1. For WPE, external audio pass-through. To enable this, the application has to register an

audio receiver using the WPEBackend-FDO wpe_audio_register_receiver() API. When this is
enabled, the WebKit audio sinks running in the WebProcess will forward audio samples to the
UIProcess, using a Wayland protocol defined in the WPEBackend-FDO backend and exposed
through its audio extension. This client-side rendering support allows applications to have
full control on the audio samples rendering.

The Internal mode should be considered a technology preview and can't be enabled by default
yet, because audiomixer lacks some features such as reverse playback support. External audio
rendering policy is covered by a new WPE API test.

  • platform/GStreamer.cmake:
  • platform/audio/gstreamer/AudioDestinationGStreamer.cpp:

(WebCore::AudioDestinationGStreamer::AudioDestinationGStreamer): Create sink depending on
selected audio rendering policy and probe platform for a working audio output device only
when the WebKit custom audio sink hasn't been selected. This is needed only for the
autoaudiosink case.

  • platform/audio/gstreamer/AudioSourceProviderGStreamer.cpp:

(WebCore::AudioSourceProviderGStreamer::configureAudioBin): Instead of creating a new sink,
embed the one provided by the player into the audio bin. The resulting bin becomes the
player audio sink and it's able to render both to the WebAudio provider and the usual sink, as before.

  • platform/audio/gstreamer/AudioSourceProviderGStreamer.h:
  • platform/graphics/gstreamer/GStreamerAudioMixer.cpp: Added.

(WebCore::GStreamerAudioMixer::isAllowed): The mixer requires a recent GStreamer version and
the inter plugin (shipped in gst-plugins-bad until version 1.20 at least).
(WebCore::GStreamerAudioMixer::singleton): Entry point for the mixer. This is where the
singleton is created.
(WebCore::GStreamerAudioMixer::GStreamerAudioMixer): Configure the standalone mixer
pipeline.
(WebCore::GStreamerAudioMixer::~GStreamerAudioMixer):
(WebCore::GStreamerAudioMixer::ensureState): Lazily start/stop the mixer, depending on the
number of incoming streams. The pipeline starts when the first incoming stream is connected,
and stops when the last stream disappears.
(WebCore::GStreamerAudioMixer::registerProducer): Client pipelines require an interaudiosink, they
will render to that sink, which internally forwards data to a twin interaudiosrc element,
connected to the audiomixer.
(WebCore::GStreamerAudioMixer::unregisterProducer): Get rid of an interaudiosink and its interaudiosrc.
This is called by the WebKit audio sink when the element is being disposed.

  • platform/graphics/gstreamer/GStreamerAudioMixer.h: Added.
  • platform/graphics/gstreamer/GStreamerCommon.cpp:

(WebCore::initializeGStreamerAndRegisterWebKitElements): Register new audio sink element.
(WebCore::createPlatformAudioSink): New utility function to create an audio sink based on
the desired and implied runtime rendering policy.
(WebCore::initializeGStreamerAndRegisterWebKitElements):

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

(WebCore::MediaPlayerPrivateGStreamer::~MediaPlayerPrivateGStreamer):
(WebCore::MediaPlayerPrivateGStreamer::seek): Drive-by clean-up, no need to create the seek
Mediatime before the early return checking this is a live stream.
(WebCore::setSyncOnClock): Fixup code style in this method.
(WebCore::MediaPlayerPrivateGStreamer::createAudioSink):
(WebCore::MediaPlayerPrivateGStreamer::audioSink const):

  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.h:
  • platform/graphics/gstreamer/WebKitAudioSinkGStreamer.cpp: Added. This sink can either

forward incoming samples to the shared audiomixer running in its own pipeline, or forward
samples to the UIProcess using the WPEBackend-FDO audio extension.
(AudioPacketHolder::AudioPacketHolder): Wrapper around audio buffers, in charge of creating
the corresponding memfd descriptor and also keeping track of the corresponding
wpe_audio_packet_export.
(AudioPacketHolder::~AudioPacketHolder):
(AudioPacketHolder::map): Create the memfd descriptor and return it along with the buffer size.
(webKitAudioSinkHandleSample): Forward incoming samples using the WPEBackend-FDO audio
extension. The wpe_audio_source start is synchronized with the buffer flow.
(webKitAudioSinkConfigure): When internal mixing has been requested, create an
interaudiosink to which samples will be sent. Internally the interaudiosink will forward
data to its interaudiosrc which is connected to the audiomixer. Otherwise, if external
rendering has been requested, create an appsink in order to relay samples to the UIProcess.
(webKitAudioSinkDispose):
(getInternalVolumeObject): When internal mixing is enabled, volume and mute states are
tracked within the audiomixer sink pads. Otherwise our audio sink manages this using a volume
element.
(webKitAudioSinkSetProperty): Proxy volume and mute properties from the internal volume proxy.
(webKitAudioSinkGetProperty): Ditto.
(webKitAudioSinkChangeState): Keep the WPE audio source state synchronized with the element
state, in order to know when the pause/resume notifications should be sent to the UIProcess.
This is also where maintain the relationship between the interaudiosink and the audiomixer, when
it's enabled.
(webkit_audio_sink_class_init):
(webkitAudioSinkNew):

  • platform/graphics/gstreamer/WebKitAudioSinkGStreamer.h: Added.

Tools:

  • Scripts/webkitpy/style/checker.py: White-list the new audio sink from the style checker.
  • TestWebKitAPI/Tests/WebKit/file-with-video.html: New utility functions to pause and seek in the video.
  • TestWebKitAPI/Tests/WebKitGLib/TestWebKitWebView.cpp: WPE test for external audio

rendering support. A video file is loaded through the webview and the test receives
notifications during playback. In order to reduce timeout risks, a seek near the end of the
video is performed early on.
(AudioRenderingWebViewTest::setup):
(AudioRenderingWebViewTest::teardown):
(AudioRenderingWebViewTest::AudioRenderingWebViewTest):
(AudioRenderingWebViewTest::handleStart):
(AudioRenderingWebViewTest::handleStop):
(AudioRenderingWebViewTest::handlePause):
(AudioRenderingWebViewTest::handleResume):
(AudioRenderingWebViewTest::handlePacket):
(AudioRenderingWebViewTest::waitUntilPaused):
(AudioRenderingWebViewTest::waitUntilEOS):
(AudioRenderingWebViewTest::state const):
(beforeAll):

6:38 AM Changeset in webkit [267786] by Alan Bujtas
  • 5 edits in trunk/Source/WebCore

[LFC][IFC] Merge LineBreaker::CandidateContent and ContinuousContent
https://bugs.webkit.org/show_bug.cgi?id=217113

Reviewed by Antti Koivisto.

This patch simplifies the connection between the LineBuilder and the LineBreaker by using the same structure to track candidate runs.
LineBreaker::CandidateContent is also a continuous content (it has to be) so we can just use this structure in LineCandidate::InlineContent (m_continuousContent)
and pass it in to the LineBreaker when we hit a wrapping opportunity.

  • layout/inlineformatting/InlineLineBreaker.cpp:

(WebCore::Layout::isTextContentOnly):
(WebCore::Layout::isVisuallyEmptyWhitespaceContentOnly):
(WebCore::Layout::isNonContentRunsOnly):
(WebCore::Layout::firstTextRunIndex):
(WebCore::Layout::lastContentRunIndex):
(WebCore::Layout::lastWrapOpportunityIndex):
(WebCore::Layout::LineBreaker::isContentWrappingAllowed const):
(WebCore::Layout::LineBreaker::shouldKeepEndOfLineWhitespace const):
(WebCore::Layout::LineBreaker::processInlineContent):
(WebCore::Layout::LineBreaker::processOverflowingContent const):
(WebCore::Layout::LineBreaker::tryBreakingTextRun const):
(WebCore::Layout::LineBreaker::ContinuousContent::append):
(WebCore::Layout::LineBreaker::ContinuousContent::reset):
(WebCore::Layout::ContinuousContent::runs const): Deleted.
(WebCore::Layout::ContinuousContent::isEmpty const): Deleted.
(WebCore::Layout::ContinuousContent::logicalWidth const): Deleted.
(WebCore::Layout::ContinuousContent::logicalLeft const): Deleted.
(WebCore::Layout::ContinuousContent::hasTrailingCollapsibleContent const): Deleted.
(WebCore::Layout::ContinuousContent::isFullyCollapsible const): Deleted.
(WebCore::Layout::ContinuousContent::ContinuousContent): Deleted.
(WebCore::Layout::ContinuousContent::nonCollapsibleLogicalWidth const): Deleted.
(WebCore::Layout::ContinuousContent::hasTextContentOnly const): Deleted.
(WebCore::Layout::ContinuousContent::isVisuallyEmptyWhitespaceContentOnly const): Deleted.
(WebCore::Layout::ContinuousContent::firstTextRunIndex const): Deleted.
(WebCore::Layout::ContinuousContent::lastContentRunIndex const): Deleted.
(WebCore::Layout::ContinuousContent::hasNonContentRunsOnly const): Deleted.

  • layout/inlineformatting/InlineLineBreaker.h:

(WebCore::Layout::LineBreaker::ContinuousContent::logicalWidth const):
(WebCore::Layout::LineBreaker::ContinuousContent::logicalLeft const):
(WebCore::Layout::LineBreaker::ContinuousContent::collapsibleLogicalWidth const):
(WebCore::Layout::LineBreaker::ContinuousContent::nonCollapsibleLogicalWidth const):
(WebCore::Layout::LineBreaker::ContinuousContent::hasTrailingCollapsibleContent const):
(WebCore::Layout::LineBreaker::ContinuousContent::isFullyCollapsible const):
(WebCore::Layout::LineBreaker::ContinuousContent::runs const):
(WebCore::Layout::LineBreaker::ContinuousContent::Run::Run):
(WebCore::Layout::LineBreaker::Run::Run): Deleted.

  • layout/inlineformatting/InlineLineBuilder.cpp:

(WebCore::Layout::LineCandidate::InlineContent::continuousContent const):
(WebCore::Layout::LineCandidate::InlineContent::appendInlineItem):
(WebCore::Layout::LineCandidate::InlineContent::reset):
(WebCore::Layout::LineCandidate::reset):
(WebCore::Layout::LineBuilder::placeInlineContent):
(WebCore::Layout::LineBuilder::nextContentForLine):
(WebCore::Layout::LineBuilder::handleFloatsAndInlineContent):
(WebCore::Layout::LineBuilder::commitPartialContent):
(WebCore::Layout::LineCandidate::InlineContent::runs const): Deleted.
(WebCore::Layout::LineCandidate::InlineContent::logicalWidth const): Deleted.
(WebCore::Layout::LineCandidate::InlineContent::collapsibleTrailingWidth const): Deleted.

  • layout/inlineformatting/InlineLineBuilder.h:
5:00 AM Changeset in webkit [267785] by Philippe Normand
  • 3 edits in trunk/Tools

[Flatpak SDK] Bump libwpe and wpebackend-fdo
https://bugs.webkit.org/show_bug.cgi?id=217122

Reviewed by Carlos Garcia Campos.

  • buildstream/elements/sdk/libwpe.bst: Bump to 1.8.0 and switch to Meson build system.
  • buildstream/elements/sdk/wpebackend-fdo.bst: Bump to 1.9.0 development version and switch

to Meson build system.

3:00 AM Changeset in webkit [267784] by commit-queue@webkit.org
  • 2 edits in trunk/Tools

Fix assertion in linux_get_crash_log.py using Python 2.7
https://bugs.webkit.org/show_bug.cgi?id=217121

Patch by Nikolas Zimmermann <nzimmermann@igalia.com> on 2020-09-30
Reviewed by Philippe Normand.

Fix assertion in linux_get_crash_log.py using Python 2.7:
worker/6: UnicodeEncodeError(ascii' codec can't encode character u'\u201c' in position 85: ordinal not in range(128)') raised:

Encode data as utf-8 before passing on to communicate().

  • Scripts/webkitpy/port/linux_get_crash_log.py:

(GDBCrashLogGenerator.generate_crash_log):

12:19 AM Changeset in webkit [267783] by ysuzuki@apple.com
  • 26 edits in trunk/Source

Always use OperationPtrTag for all operations and annotate operations in CSS JIT
https://bugs.webkit.org/show_bug.cgi?id=217117

Reviewed by Mark Lam.

Source/JavaScriptCore:

For JIT-caging, we would like to annotate all operations consistently with OperationPtrTag.
This patch replaces B3CCallPtrTag and CSSOperationPtrTag with OperationPtrTag and handle these
operations as Operation in JIT-caging.

We also collect and annotate all the operations called in CSS JIT and define them with JSC_DEFINE_JIT_OPERATION.

  • b3/B3LowerMacros.cpp:
  • b3/B3LowerMacrosAfterOptimizations.cpp:
  • b3/B3MathExtras.cpp:
  • b3/B3ReduceLoopStrength.cpp:

(JSC::B3::ReduceLoopStrength::reduceByteCopyLoopsToMemcpy):

  • b3/B3ReduceStrength.cpp:
  • b3/air/AirCCallSpecial.cpp:

(JSC::B3::Air::CCallSpecial::generate):

  • b3/testb3_5.cpp:

(testCallSimple):
(testCallRare):
(testCallRareLive):
(testCallSimplePure):
(testCallFunctionWithHellaArguments):
(testCallFunctionWithHellaArguments2):
(testCallFunctionWithHellaArguments3):
(testCallSimpleDouble):
(testCallSimpleFloat):
(testCallFunctionWithHellaDoubleArguments):
(testCallFunctionWithHellaFloatArguments):
(testLinearScanWithCalleeOnStack):

  • b3/testb3_6.cpp:

(testInterpreter):

  • b3/testb3_7.cpp:

(testLICMPure):
(testLICMPureSideExits):
(testLICMPureWritesPinned):
(testLICMPureWrites):
(testLICMReadsLocalState):
(testLICMReadsPinned):
(testLICMReads):
(testLICMPureNotBackwardsDominant):
(testLICMPureFoiledByChild):
(testLICMPureNotBackwardsDominantFoiledByChild):
(testLICMExitsSideways):
(testLICMWritesLocalState):
(testLICMWrites):
(testLICMFence):
(testLICMWritesPinned):
(testLICMControlDependent):
(testLICMControlDependentNotBackwardsDominant):
(testLICMControlDependentSideExits):
(testLICMReadsPinnedWritesPinned):
(testLICMReadsWritesDifferentHeaps):
(testLICMReadsWritesOverlappingHeaps):
(testLICMDefaultCall):
(testShuffleDoesntTrashCalleeSaves):

  • ftl/FTLOutput.h:

(JSC::FTL::Output::callWithoutSideEffects):
(JSC::FTL::Output::operation):

  • runtime/JSCPtrTag.h:
  • wasm/WasmAirIRGenerator.cpp:

(JSC::Wasm::AirIRGenerator::emitCCall):

  • wasm/WasmB3IRGenerator.cpp:

(JSC::Wasm::B3IRGenerator::addTableGet):
(JSC::Wasm::B3IRGenerator::addTableSet):
(JSC::Wasm::B3IRGenerator::addRefFunc):
(JSC::Wasm::B3IRGenerator::addTableSize):
(JSC::Wasm::B3IRGenerator::addTableGrow):
(JSC::Wasm::B3IRGenerator::addTableFill):
(JSC::Wasm::B3IRGenerator::addGrowMemory):
(JSC::Wasm::B3IRGenerator::setGlobal):
(JSC::Wasm::B3IRGenerator::emitWriteBarrierForJSWrapper):
(JSC::Wasm::B3IRGenerator::addOp<OpType::I32Popcnt>):
(JSC::Wasm::B3IRGenerator::addOp<OpType::I64Popcnt>):

Source/WebCore:

  • css/SelectorChecker.cpp:

(WebCore::isFrameFocused): Deleted.
(WebCore::doesShadowTreeContainFocusedElement): Deleted.
(WebCore::SelectorChecker::matchesFocusPseudoClass): Deleted.
(WebCore::SelectorChecker::matchesDirectFocusPseudoClass): Deleted.

  • css/SelectorChecker.h:
  • css/SelectorCheckerTestFunctions.h:

(WebCore::isFrameFocused):
(WebCore::matchesDirectFocusPseudoClass):
(WebCore::doesShadowTreeContainFocusedElement):
(WebCore::matchesFocusPseudoClass):

  • cssjit/CSSPtrTag.h:
  • cssjit/FunctionCall.h:

(WebCore::FunctionCall::FunctionCall):
(WebCore::FunctionCall::setFunctionAddress):
(WebCore::FunctionCall::prepareAndCall):

  • cssjit/SelectorCompiler.cpp:

(WebCore::SelectorCompiler::JSC_DEFINE_JIT_OPERATION):
(WebCore::SelectorCompiler::addPseudoClassType):
(WebCore::SelectorCompiler::SelectorCodeGenerator::generateAddStyleRelation):
(WebCore::SelectorCompiler::SelectorCodeGenerator::modulo):
(WebCore::SelectorCompiler::SelectorCodeGenerator::generateElementMatching):
(WebCore::SelectorCompiler::SelectorCodeGenerator::generateSynchronizeStyleAttribute):
(WebCore::SelectorCompiler::SelectorCodeGenerator::generateSynchronizeAllAnimatedSVGAttribute):
(WebCore::SelectorCompiler::attributeValueSpaceSeparatedListContains):
(WebCore::SelectorCompiler::SelectorCodeGenerator::generateElementAttributeValueMatching):
(WebCore::SelectorCompiler::SelectorCodeGenerator::generateElementAttributeValueExactMatching):
(WebCore::SelectorCompiler::SelectorCodeGenerator::generateElementAttributeFunctionCallValueMatching):
(WebCore::SelectorCompiler::SelectorCodeGenerator::generateElementFunctionCallTest):
(WebCore::SelectorCompiler::SelectorCodeGenerator::generateElementIsActive):
(WebCore::SelectorCompiler::SelectorCodeGenerator::generateElementIsHovered):
(WebCore::SelectorCompiler::SelectorCodeGenerator::generateElementIsInLanguage):
(WebCore::SelectorCompiler::SelectorCodeGenerator::generateElementHasPlaceholderShown):
(WebCore::SelectorCompiler::SelectorFragment::appendUnoptimizedPseudoClassWithContext): Deleted.
(WebCore::SelectorCompiler::addStyleRelationFunction): Deleted.
(WebCore::SelectorCompiler::moduloHelper): Deleted.
(WebCore::SelectorCompiler::attributeValueSpaceSeparetedListContains): Deleted.
(WebCore::SelectorCompiler::SelectorCodeGenerator::generateContextFunctionCallTest): Deleted.
(WebCore::SelectorCompiler::elementIsActive): Deleted.
(WebCore::SelectorCompiler::elementIsHovered): Deleted.
(WebCore::SelectorCompiler::makeContextStyleUniqueIfNecessaryAndTestIsPlaceholderShown): Deleted.
(WebCore::SelectorCompiler::isPlaceholderShown): Deleted.

  • dom/StyledElement.cpp:

(WebCore::StyledElement::synchronizeStyleAttributeInternalImpl):
(WebCore::StyledElement::synchronizeStyleAttributeInternal): Deleted.

  • dom/StyledElement.h:

(WebCore::StyledElement::synchronizeStyleAttributeInternal const):

  • style/ElementRuleCollector.cpp:

(WebCore::Style::ElementRuleCollector::collectMatchingRules):

  • svg/SVGElement.cpp:

(WebCore::SVGElement::synchronizeAllAnimatedSVGAttribute): Deleted.

  • svg/SVGElement.h:
12:02 AM Changeset in webkit [267782] by mmaxfield@apple.com
  • 10 edits in trunk/Source

[GPU Process] Remove FontHandle
https://bugs.webkit.org/show_bug.cgi?id=217076

Reviewed by Wenson Hsieh.

Source/WebCore:

The only reason FontHandle exists is to be an internally-nullable wrapper around WebCore::Font.
However, this codepath is only ever invoked with non-null fonts, so there's no point in having
this wrapper. This patch replaces it with just Ref<Font>.

No new tests because there is no behavior change.

  • WebCore.xcodeproj/project.pbxproj:
  • loader/cache/CachedFont.h:
  • platform/graphics/Font.cpp:

(WebCore::FontHandle::FontHandle): Deleted.

  • platform/graphics/Font.h:
  • platform/graphics/displaylists/DisplayListItems.h:

(WebCore::DisplayList::DrawGlyphs::encode const):
(WebCore::DisplayList::DrawGlyphs::decode):

  • platform/graphics/mac/FontCustomPlatformData.h:

Source/WebKit:

  • Shared/Cocoa/WebCoreArgumentCodersCocoa.mm:

(IPC::ArgumentCoder<Ref<Font>>::encodePlatformData):
(IPC::ArgumentCoder<Ref<Font>>::decodePlatformData):
(IPC::ArgumentCoder<FontHandle>::encodePlatformData): Deleted.
(IPC::ArgumentCoder<FontHandle>::decodePlatformData): Deleted.

  • Shared/WebCoreArgumentCoders.cpp:

(IPC::ArgumentCoder<Ref<Font>>::encode):
(IPC::createFont):
(IPC::ArgumentCoder<Ref<Font>>::decode):
(IPC::ArgumentCoder<FontHandle>::encode): Deleted.
(IPC::ArgumentCoder<FontHandle>::decode): Deleted.

  • Shared/WebCoreArgumentCoders.h:

Sep 29, 2020:

10:56 PM Changeset in webkit [267781] by Simon Fraser
  • 9 edits
    2 copies in trunk/Source/WebCore

[LFC Display] Basic text display
https://bugs.webkit.org/show_bug.cgi?id=217120

Reviewed by Zalan Bujtas.

Add basic text painting to LFC display. Display::TextBox() represents a run of text.
Display::TreeBuilder gains code to build the inline tree by traversing runs, and
CSSPainter gets the ability to paint text boxes.

  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • display/DisplayTreeBuilder.cpp:

(WebCore::Display::TreeBuilder::buildInlineDisplayTree const):
(WebCore::Display::TreeBuilder::recursiveBuildDisplayTree const):
(WebCore::Display::outputDisplayBox):

  • display/DisplayTreeBuilder.h:
  • display/css/DisplayBox.h:

(WebCore::Display::Box::isTextBox const):

  • display/css/DisplayCSSPainter.cpp:

(WebCore::Display::CSSPainter::paintBoxContent):

  • display/css/DisplayStyle.cpp:

(WebCore::Display::Style::Style):
(WebCore::Display::Style::autoWrap const):
(WebCore::Display::Style::preserveNewline const):
(WebCore::Display::Style::collapseWhiteSpace const):

  • display/css/DisplayStyle.h:

(WebCore::Display::Style::color const):
(WebCore::Display::Style::fontCascade const):
(WebCore::Display::Style::fontMetrics const):
(WebCore::Display::Style::whiteSpace const):
(WebCore::Display::Style::tabSize const):

  • display/css/DisplayTextBox.cpp: Copied from Source/WebCore/display/DisplayTreeBuilder.h.

(WebCore::Display::TextBox::TextBox):
(WebCore::Display::m_text):
(WebCore::Display::TextBox::debugDescription const):

  • display/css/DisplayTextBox.h: Copied from Source/WebCore/display/DisplayTreeBuilder.h.

(WebCore::Display::TextBox::expansion const):
(WebCore::Display::TextBox::text const):

8:27 PM Changeset in webkit [267780] by wenson_hsieh@apple.com
  • 2 edits in trunk/Source/WebCore

We should avoid making connections to the GPU Process during garbage collection
https://bugs.webkit.org/show_bug.cgi?id=217112

Reviewed by Tim Horton.

Currently, it's possible to establish a connection to the GPU process from the web content process in the middle
of garbage collection. This may occur if GC occurs after a canvas element and its image buffer has been created,
but before the image buffer has initialized its backend (which, in the case of using the GPU process for
rendering, is a RemoteRenderingBackend). While estimating memory cost for the canvas element, if a remote
rendering backend has not been created yet, we end up creating it underneath ensureBackendCreated(), and
subsequently block the web process until the GPU process is finished creating the proxy rendering backend.

When running layout tests in fast/canvas, this causes some layout tests to occasionally hit assertions under
RemoteImageBufferMessageHandler::waitForCreateImageBufferBackend, due to accessing m_remoteRenderingBackend
(a weak pointer).

To fix this, in the case where the image buffer does not yet have a rendering backend, we should simply return 0
instead of telling the GPU process to allocate the actual image buffer and then returning a non-zero cost.

  • platform/graphics/ConcreteImageBuffer.h:
8:17 PM Changeset in webkit [267779] by rniwa@webkit.org
  • 5 edits
    2 adds in trunk

Crash while loading a confluence page
https://bugs.webkit.org/show_bug.cgi?id=217111

Reviewed by Wenson Hsieh.

Source/WebCore:

The crash was caused by MutationObserver::disconnect attempting to unregister
a MutationObserverRegistration from a Node after it had already been removed once.

This happens when MutationObserverRegistration remains in MutationObserver
when there is an ongoing transient mutation observation.

Fixed the bug by setting a boolean MutationObserverRegistration when we've stopped
the observation in MutationObserverRegistration::stopObserving and not unregistering it
in subsequent calls to MutationObserver::disconnect.

Test: fast/dom/MutationObserver/disconnect-twice.html

  • dom/MutationObserver.cpp:

(WebCore::MutationObserver::disconnect):

  • dom/MutationObserverRegistration.cpp:

(WebCore::MutationObserverRegistration::stopObserving): Added.

  • dom/MutationObserverRegistration.h:

LayoutTests:

Added a regression test.

  • fast/dom/MutationObserver/disconnect-twice-expected.txt: Added.
  • fast/dom/MutationObserver/disconnect-twice.html: Added.
7:45 PM Changeset in webkit [267778] by Hector Lopez
  • 3 edits in trunk/LayoutTests

REGRESSION(r267402): [ macOS iOS Release ] imported/w3c/web-platform-tests/user-timing/measure-l3.any.worker.html is a flaky failure
https://bugs.webkit.org/show_bug.cgi?id=217118

Unreviewed test gardening.

  • platform/ios-wk2/TestExpectations:
  • platform/mac/TestExpectations:
6:59 PM Changeset in webkit [267777] by don.olmstead@sony.com
  • 18 edits in trunk/Source/WebCore

[WebGPU] Add platform guards
https://bugs.webkit.org/show_bug.cgi?id=217095

Reviewed by Darin Adler.

Add platform guards around Apple specific implementations. The WebGPU implementation
on Apple platforms is guarded by USE(METAL). Additionally guard uses of the WHLSL
compiler.

No new tests. No change in behavior.

  • Modules/webgpu/GPUCanvasContext.cpp:

(WebCore::GPUCanvasContext::platformLayer const):

  • platform/graphics/gpu/GPUBindGroup.h:
  • platform/graphics/gpu/GPUBindGroupAllocator.h:
  • platform/graphics/gpu/GPUBindGroupLayout.h:
  • platform/graphics/gpu/GPUBuffer.h:
  • platform/graphics/gpu/GPUCommandBuffer.h:
  • platform/graphics/gpu/GPUComputePassEncoder.h:
  • platform/graphics/gpu/GPUComputePipeline.h:
  • platform/graphics/gpu/GPUDevice.h:
  • platform/graphics/gpu/GPUProgrammablePassEncoder.h:
  • platform/graphics/gpu/GPUQueue.h:
  • platform/graphics/gpu/GPURenderPassEncoder.h:
  • platform/graphics/gpu/GPURenderPipeline.h:
  • platform/graphics/gpu/GPUSampler.h:
  • platform/graphics/gpu/GPUShaderModule.h:
  • platform/graphics/gpu/GPUSwapChain.h:
  • platform/graphics/gpu/GPUTexture.h:
6:37 PM Changeset in webkit [267776] by Karl Rackler
  • 2 edits in trunk/LayoutTests

REGRESSION: [ iOS release wk2 ] compositing/debug-borders-dynamic.html is a flaky image failure
https://bugs.webkit.org/show_bug.cgi?id=217114

Unreviewed test gardening.

  • platform/ios-simulator-wk2/TestExpectations:
6:29 PM Changeset in webkit [267775] by weinig@apple.com
  • 22 edits
    5 deletes in trunk/Source

[Preferences] Adopt shared preferences configuration and script in WebKit
https://bugs.webkit.org/show_bug.cgi?id=217075

Reviewed by Darin Adler.

Source/WebKit:

  • Shared/WebPreferences.yaml: Removed.
  • Shared/WebPreferencesDebug.yaml: Removed.
  • Shared/WebPreferencesExperimental.yaml: Removed.
  • Shared/WebPreferencesInternal.yaml: Removed.
  • Scripts/GeneratePreferences.rb: Removed.
  • WebKit.xcodeproj/project.pbxproj:

Remove yaml preferences and preference generator in favor of shared one
in WTF.

  • CMakeLists.txt:
  • DerivedSources.make:

Update preference generation to use the shared script and preference files.

  • Configurations/BaseTarget.xcconfig:

Add new variable, WTF_BUILD_SCRIPTS_DIR, that points to directory where the
shared generator and preference files live for use as input to the generation.

  • DerivedSources-input.xcfilelist:

Update for new location of script and preference files.

  • Scripts/PreferencesTemplates/WebPreferencesDefinitions.h.erb:
  • Scripts/PreferencesTemplates/WebPreferencesExperimentalFeatures.cpp.erb:
  • Scripts/PreferencesTemplates/WebPreferencesInternalDebugFeatures.cpp.erb:
  • Scripts/PreferencesTemplates/WebPreferencesStoreDefaultsMap.cpp.erb:

Port support for multiple conditionally-defined defaultValues from WebKitLegacy,
keeping the same DEFAULT_VALUE_FOR_* macro naming and using the macro definitions
in place of existing <%= @pref.defaultValue %> idiom. Also updates for rename
from @internalDebugFeatures to @internalFeatures.

  • Shared/WebPreferencesDefaultValues.cpp:
  • Shared/WebPreferencesDefaultValues.h:

Remove defaults that are now fully specified in the preference files.

  • UIProcess/API/Cocoa/WKWebViewConfiguration.mm:

(-[WKWebViewConfiguration init]):
Replace removed DEFAULT_APPLE_PAY_ENABLED, with the now generated DEFAULT_VALUE_FOR_ApplePayEnabled.

Source/WebKitLegacy/mac:

  • Scripts/generate-preferences.sh:

Update to account for new interface requiring the full path to each template.

Source/WTF:

  • Scripts/GeneratePreferences.rb:

Simplify input by passing the templates as complete paths, rather than by name + template directory.

  • Scripts/Preferences/WebPreferences.yaml:
  • Scripts/Preferences/WebPreferencesDebug.yaml:
  • Scripts/Preferences/WebPreferencesExperimental.yaml:
  • Scripts/Preferences/WebPreferencesInternal.yaml:

Fix some mistakes / things left out to make WebKit defaults and names match current WebKit names and defaults.

  • wtf/CMakeLists.txt:

Copy all the preferences and scripts into WTF_SCRIPTS_DIR so it can be accessed by WebKit.

6:05 PM Changeset in webkit [267774] by Andres Gonzalez
  • 2 edits in trunk/Tools

Modify END_AX_OBJC_EXCEPTIONS macro to assert to aid debugging of layout tests.
https://bugs.webkit.org/show_bug.cgi?id=217096

Reviewed by Chris Fleizach.

ASSERT_NOT_REACHED on thrown exceptions. This will tell us immediately
the location of a failure instead of silently swallowing the exception
and posibly causing a hang/timeout much harder to find after the fact.

  • WebKitTestRunner/InjectedBundle/mac/AccessibilityCommonMac.h:
5:13 PM Changeset in webkit [267773] by jer.noble@apple.com
  • 4 edits in trunk/Source/WebCore

Fullscreen mode on mlb.com shows white letterboxing when video aspect ratio does not match screen
https://bugs.webkit.org/show_bug.cgi?id=217060
<rdar://problem/68936043>

Reviewed by Darin Adler.

Add a Quirk which sets the background color of fullscreen elements on mlb.com to black.

  • page/Quirks.cpp:

(WebCore::Quirks::needsBlackFullscreenBackgroundQuirk const):

  • page/Quirks.h:
  • style/UserAgentStyle.cpp:

(WebCore::Style::UserAgentStyle::ensureDefaultStyleSheetsForElement):

4:38 PM Changeset in webkit [267772] by wenson_hsieh@apple.com
  • 2 edits in trunk/Source/WebKit

[GPU Process] RemoteImageBufferProxy should ensure the state stack of the context is cleared before destruction
https://bugs.webkit.org/show_bug.cgi?id=208876

Reviewed by Tim Horton.

When running canvas layout tests in debug WebKit, the assertion in ~GraphicsContext() which verifies that
m_stack.isEmpty() fires. This occurs because the matching call to restore may still be buffered in the web
process when the remote image buffer proxy in the GPU process is destroyed; however, this may also occur if the
web process terminates without having sent the matching calls to restore the graphics context.

We can fix both of these scenarios by manually unwinding the context's state stack when destroying the
RemoteImageBufferProxy. Original patch by Said Abou-Hallawa.

  • GPUProcess/graphics/RemoteImageBufferProxy.h:

(WebKit::RemoteImageBufferProxy::~RemoteImageBufferProxy):

4:35 PM Changeset in webkit [267771] by don.olmstead@sony.com
  • 2 edits
    1 add in trunk

[CMake][WebGPU] Add FindDawn module
https://bugs.webkit.org/show_bug.cgi?id=217097

Reviewed by Darin Adler.

Add a FindDawn CMake module to use for a WebGPU implementation on non-Cocoa platforms.
If ENABLE_WEBGPU is on for WinCairo it will attempt to detect Dawn.

  • Source/cmake/FindDawn.cmake: Added.
  • Source/cmake/OptionsWinCairo.cmake:
4:31 PM Changeset in webkit [267770] by James Darpinian
  • 3 edits in trunk/Source/ThirdParty/ANGLE

Fix EXT_color_buffer_half_float on iOS
https://bugs.webkit.org/show_bug.cgi?id=217107

Reviewed by Kenneth Russell.

  • src/libANGLE/Context.cpp:

(gl::Context::generateSupportedExtensions const):

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

(rx::nativegl_gl::GenerateTextureFormatCaps):

4:24 PM Changeset in webkit [267769] by Peng Liu
  • 2 edits in trunk/Source/WebCore

[Media in GPU Process] Use VideoLayerManager to manage layers of MediaPlayerPrivateRemote
https://bugs.webkit.org/show_bug.cgi?id=216995

Reviewed by Wenson Hsieh.

A follow-up patch to remove WEBCORE_EXPORT of the VideoLayerManagerObjC constructor.
The constructor is inline, so it does not require WEBCORE_EXPORT.

  • platform/graphics/avfoundation/objc/VideoLayerManagerObjC.h:

(WebCore::VideoLayerManagerObjC::VideoLayerManagerObjC):

3:57 PM Changeset in webkit [267768] by stephan.szabo@sony.com
  • 3 edits in trunk/Source/WebKit

[PlayStation] Build fix for GPU Process after r267725
https://bugs.webkit.org/show_bug.cgi?id=217098

Unreviewed build fix.

Update playstation specific code for signature changes in the above.
Fix MediaPlayerPrivateRemote constructor when RELEASE_LOG_DISABLED was specified.

  • GPUProcess/media/playstation/RemoteMediaPlayerProxyPlayStation.cpp:
  • WebProcess/GPU/media/MediaPlayerPrivateRemote.cpp:
3:04 PM Changeset in webkit [267767] by Alan Coon
  • 3 edits in branches/safari-611.1.2-branch/Source/WebKitLegacy/mac

Cherry-pick r267756. rdar://problem/69765230

Unreviewed, reverting r267397.

SPI is still used <rdar://problem/69749992>

Reverted changeset:

"Remove deprecated script and stylesheet injection SPI,
replaced with more inclusively-named SPI"
https://bugs.webkit.org/show_bug.cgi?id=214936
https://trac.webkit.org/changeset/267397

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

2:52 PM Changeset in webkit [267766] by keith_miller@apple.com
  • 9 edits in trunk

CSS serialization expects comments between certain tokens
https://bugs.webkit.org/show_bug.cgi?id=216947

Reviewed by Darin Adler.

LayoutTests/imported/w3c:

The serialize-consecutive-tokens test now passes as expected. We fail the anplusb-selector-parsing
test because we consider n-b to be a DimensionToken followed by a NumberToken but this is incorrect.
I'll fix that test in a follow up patch.

  • web-platform-tests/css/css-syntax/serialize-consecutive-tokens-expected.txt:
  • web-platform-tests/css/selectors/anplusb-selector-parsing-expected.txt:

Source/WebCore:

This patch brings us up to spec on inserting comments while
serializing CSS tokens. The spec says that we should always be
able to round trip a serialized output. Weirdly, for reasons I
don't understand, the spec requires a comment rather than
whitespace so that's what this patch does. Since there are 32
token types building a table for every combination would have been
massive. Instead, this patch uses a constexpr function to generate
the table for the set of next (non-delimiter) tokens that require
a separating comment. This makes it a bit more readable while,
hopefully, not sacrificing too much performance. For delimiters
requiring separating comments, we check for those in a helper
lambda after checking the token table.

  • css/parser/CSSParserToken.cpp:

(WebCore::buildNextTokenNeedsCommentTable):
(WebCore::CSSParserToken::serialize const):

  • css/parser/CSSParserToken.h:
  • css/parser/CSSParserTokenRange.cpp:

(WebCore::CSSParserTokenRange::serialize const):

LayoutTests:

Rebasline CSS tests for better serialization. The css-selectorText
test produces different output since we tokenize the <an-plus-b>
syntax incorrectly. I don't know if this means we evaluate it
incorrectly, however. In a follow up patch I will fix the the
tokenization issue so the comments will no longer appear.

  • fast/dom/css-selectorText-expected.txt:
2:51 PM Changeset in webkit [267765] by Ross Kirsling
  • 11 edits
    677 adds
    363 deletes in trunk/JSTests

Update test262 (2020.09.29)
https://bugs.webkit.org/show_bug.cgi?id=217102

Reviewed by Darin Adler.

  • .gitattributes:
  • test262/config.yaml:
  • test262/expectations.yaml:
  • test262/latest-changes-summary.txt:
  • test262/test/:
  • test262/test262-Revision.txt:
2:50 PM Changeset in webkit [267764] by Jonathan Bedard
  • 4 edits in trunk

[watchOS] AVKitSPI build fixes
https://bugs.webkit.org/show_bug.cgi?id=217070
<rdar://problem/69724883>

Rubber-stamped by Eric Carlson.

Source/WebCore/PAL:

  • pal/spi/cocoa/AVKitSPI.h: Explicitly import AVPlayer.h and UIKit.h.

Tools:

  • Scripts/configure-xcode-for-embedded-development: Copy AVKit headers for watchOS.
2:43 PM Changeset in webkit [267763] by achristensen@apple.com
  • 88 edits in trunk

Move NetworkProcessProxy ownership from WebProcessPool to WebsiteDataStore
https://bugs.webkit.org/show_bug.cgi?id=216041

Reviewed by Brady Eidson.

Source/WebKit:

This patch moves the things on WebProcessPool associated with NetworkProcessProxy ownership and moves them
to WebsiteDataStore. It's pretty mechanical, but it reaches its fingers into a lot of things. Some comments
on interesting parts are below.

Why am I doing this? I'm glad you asked.

WKWebView had a fundamental cookie problem before this change. It had a WKWebsiteDataStore that could point to a cookie store on disk
that could be used in multiple network processes at the same time. This led to problems with cookies being received over the network
in those different processes being unable to be shared until they were written to disk, something that does not happen immediately, especially
on iOS. This problem is even worse with session cookies, which should be kept in memory and never be written to disk. Those processes
did not use shared memory to share the cookies. They just didn't share them, which led to cookie incorrectness. This was unfortunately
the default configuration if you call [[WKWebView alloc] init] more than once, which many developers do. There was also occasional cookie
corruption and loss from multiple processes writing cookies to the same file. All these problems can be worked around by doing what Safari does:
manually setting the WKProcessPool of all WKWebViewConfigurations to the same process pool to only use one network process. This is not intuitive
or well documented, and even though I have spent the majority of WWDC labs for the last 3 years telling developers to do it, most developers do not.
The default behavior should not lead to cookie incorrectness, corruption, or loss. This accomplishes that.

A bigger problem that can't really be worked around well is what we were doing in our WKHTTPCookieStore API. Many developers call setCookie:completionHandler:
to "log in" the user by setting a cookie, then in the completion handler, they open a WKWebView to their page and expect the cookie to be sent. Before this
change, we would not know which process pool to set the cookie in so we would guess. If there were no process pools, we would start writing to disk and hope
it writes fast enough. We can't wait for it to complete because it causes hangs like rdar://problem/66961066. This solution allows to start the network
process of that WebsiteDataStore and set the cookie in that process. We now know that is the only process this WebsiteDataStore will ever use. Now, users
will be able to actually be logged in all the time in such apps.

  • NetworkProcess/Cookies/WebCookieManager.cpp:

(WebKit::WebCookieManager::setHTTPCookieAcceptPolicy):
(WebKit::WebCookieManager::getHTTPCookieAcceptPolicy):

  • NetworkProcess/Cookies/WebCookieManager.h:
  • NetworkProcess/Cookies/WebCookieManager.messages.in:
  • NetworkProcess/Cookies/curl/WebCookieManagerCurl.cpp:

(WebKit::WebCookieManager::platformSetHTTPCookieAcceptPolicy):

  • NetworkProcess/Cookies/mac/WebCookieManagerMac.mm:

(WebKit::WebCookieManager::platformSetHTTPCookieAcceptPolicy):

  • NetworkProcess/Cookies/soup/WebCookieManagerSoup.cpp:

(WebKit::WebCookieManager::platformSetHTTPCookieAcceptPolicy):

  • NetworkProcess/NetworkProcess.cpp:

(WebKit::NetworkProcess::initializeNetworkProcess):
(WebKit::NetworkProcess::ensureSession):
(WebKit::NetworkProcess::storageSession const):
(WebKit::NetworkProcess::forEachNetworkStorageSession):
(WebKit::NetworkProcess::defaultStorageSession const): Deleted.

  • NetworkProcess/NetworkProcess.h:
  • NetworkProcess/NetworkProcessCreationParameters.cpp:

(WebKit::NetworkProcessCreationParameters::encode const):
(WebKit::NetworkProcessCreationParameters::decode):

  • NetworkProcess/NetworkProcessCreationParameters.h:
  • NetworkProcess/WebStorage/LocalStorageDatabase.cpp:

(WebKit::LocalStorageDatabase::close):

  • NetworkProcess/cocoa/NetworkProcessCocoa.mm:

(WebKit::NetworkProcess::platformInitializeNetworkProcessCocoa):
(WebKit::saveCookies):
(WebKit::NetworkProcess::platformCreateDefaultStorageSession const): Deleted.

  • NetworkProcess/curl/NetworkProcessCurl.cpp:

(WebKit::NetworkProcess::platformCreateDefaultStorageSession const): Deleted.

  • NetworkProcess/mac/RemoteNetworkingContext.mm:

(WebKit::RemoteNetworkingContext::ensureWebsiteDataStoreSession):

  • NetworkProcess/soup/NetworkProcessSoup.cpp:

(WebKit::NetworkProcess::platformCreateDefaultStorageSession const): Deleted.

  • Platform/IPC/Attachment.h:
  • Shared/WebsiteDataStoreParameters.cpp:

(WebKit::WebsiteDataStoreParameters::encode const):
(WebKit::WebsiteDataStoreParameters::decode):

  • Shared/WebsiteDataStoreParameters.h:
  • UIProcess/API/APIHTTPCookieStore.cpp:

(API::HTTPCookieStore::HTTPCookieStore):
(API::HTTPCookieStore::~HTTPCookieStore):
(API::HTTPCookieStore::cookies):
(API::HTTPCookieStore::cookiesForURL):
(API::HTTPCookieStore::setCookies):
(API::HTTPCookieStore::deleteCookie):
(API::HTTPCookieStore::deleteAllCookies):
(API::HTTPCookieStore::setHTTPCookieAcceptPolicy):
(API::HTTPCookieStore::registerObserver):
(API::HTTPCookieStore::cookieManagerDestroyed):
(API::HTTPCookieStore::registerForNewProcessPoolNotifications): Deleted.
(API::HTTPCookieStore::unregisterForNewProcessPoolNotifications): Deleted.

  • UIProcess/API/APIHTTPCookieStore.h:
  • UIProcess/API/C/WKContext.cpp:

(WKContextSetUseSeparateServiceWorkerProcess):
(WKContextSetPrimaryWebsiteDataStore):
(WKContextGetCookieManager): Deleted.
(WKContextSetAllowsAnySSLCertificateForServiceWorkerTesting): Deleted.
(WKContextTerminateNetworkProcess): Deleted.
(WKContextGetNetworkProcessIdentifier): Deleted.

  • UIProcess/API/C/WKContext.h:
  • UIProcess/API/C/WKContextPrivate.h:
  • UIProcess/API/C/WKPage.cpp:

(WKPageGetWebsiteDataStore):

  • UIProcess/API/C/WKPage.h:
  • UIProcess/API/C/WKWebsiteDataStoreRef.cpp:

(WKWebsiteDataStoreTerminateNetworkProcess):
(WKWebsiteDataStoreGetNetworkProcessIdentifier):

  • UIProcess/API/C/WKWebsiteDataStoreRef.h:
  • UIProcess/API/Cocoa/WKProcessPool.mm:

(-[WKProcessPool _setUseSeparateServiceWorkerProcess:]):
(-[WKProcessPool _terminateNetworkProcess]): Deleted.
(-[WKProcessPool _sendNetworkProcessWillSuspendImminently]): Deleted.
(-[WKProcessPool _sendNetworkProcessPrepareToSuspend:]): Deleted.
(-[WKProcessPool _sendNetworkProcessDidResume]): Deleted.
(-[WKProcessPool _networkProcessIdentifier]): Deleted.
(-[WKProcessPool _makeNextNetworkProcessLaunchFailForTesting]): Deleted.
(-[WKProcessPool _synthesizeAppIsBackground:]): Deleted.
(-[WKProcessPool _setAllowsAnySSLCertificateForServiceWorker:]): Deleted.
(-[WKProcessPool _networkProcessHasEntitlementForTesting:]): Deleted.

  • UIProcess/API/Cocoa/WKProcessPoolPrivate.h:
  • UIProcess/API/Cocoa/WKWebsiteDataStore.mm:

(-[WKWebsiteDataStore _networkProcessHasEntitlementForTesting:]):
(-[WKWebsiteDataStore _terminateNetworkProcess]):
(-[WKWebsiteDataStore _sendNetworkProcessPrepareToSuspend:]):
(-[WKWebsiteDataStore _sendNetworkProcessWillSuspendImminently]):
(-[WKWebsiteDataStore _sendNetworkProcessDidResume]):
(-[WKWebsiteDataStore _synthesizeAppIsBackground:]):
(-[WKWebsiteDataStore _networkProcessIdentifier]):
(+[WKWebsiteDataStore _makeNextNetworkProcessLaunchFailForTesting]):

  • UIProcess/API/Cocoa/WKWebsiteDataStorePrivate.h:
  • UIProcess/API/glib/WebKitCookieManager.cpp:

(_WebKitCookieManagerPrivate::cookieManager const):
(_WebKitCookieManagerPrivate::~_WebKitCookieManagerPrivate):
(webkitCookieManagerCreate):
(webkit_cookie_manager_set_persistent_storage):
(webkit_cookie_manager_set_accept_policy):
(webkit_cookie_manager_get_accept_policy):
(webkit_cookie_manager_add_cookie):
(webkit_cookie_manager_get_cookies):
(webkit_cookie_manager_delete_cookie):

  • UIProcess/API/glib/WebKitWebContext.cpp:

(webkitWebContextConstructed):
(webkit_web_context_prefetch_dns):

  • UIProcess/Automation/WebAutomationSession.cpp:

(WebKit::WebAutomationSession::addSingleCookie):
(WebKit::WebAutomationSession::deleteAllCookies):

  • UIProcess/AuxiliaryProcessProxy.h:
  • UIProcess/Cocoa/LegacyCustomProtocolManagerClient.h:
  • UIProcess/Cocoa/WebProcessPoolCocoa.mm:

(WebKit::WebProcessPool::updateProcessSuppressionState):
(WebKit::WebProcessPool::platformInitialize):
(WebKit::WebProcessPool::platformInitializeNetworkProcess):
(WebKit::WebProcessPool::networkProcessHasEntitlementForTesting): Deleted.
(WebKit::WebProcessPool::xpcEndpointMessage const): Deleted.
(WebKit::WebProcessPool::sendNetworkProcessXPCEndpointToWebProcess): Deleted.

  • UIProcess/Downloads/DownloadProxy.cpp:

(WebKit::DownloadProxy::cancel):
(WebKit::DownloadProxy::publishProgress):
(WebKit::DownloadProxy::didReceiveAuthenticationChallenge):
(WebKit::DownloadProxy::willSendRequest):
(WebKit::DownloadProxy::decideDestinationWithSuggestedFilenameAsync):

  • UIProcess/Downloads/DownloadProxyMap.cpp:

(WebKit::DownloadProxyMap::DownloadProxyMap):
(WebKit::DownloadProxyMap::applicationDidEnterBackground):
(WebKit::DownloadProxyMap::applicationWillEnterForeground):
(WebKit::DownloadProxyMap::createDownloadProxy):
(WebKit::DownloadProxyMap::downloadFinished):
(WebKit::DownloadProxyMap::invalidate):

  • UIProcess/Downloads/DownloadProxyMap.h:
  • UIProcess/Network/CustomProtocols/LegacyCustomProtocolManagerProxy.cpp:

(WebKit::LegacyCustomProtocolManagerProxy::startLoading):
(WebKit::LegacyCustomProtocolManagerProxy::stopLoading):
(WebKit::LegacyCustomProtocolManagerProxy::invalidate):

  • UIProcess/Network/NetworkProcessProxy.cpp:

(WebKit::NetworkProcessProxy::allNetworkProcesses):
(WebKit::defaultProcess):
(WebKit::NetworkProcessProxy::defaultNetworkProcess):
(WebKit::NetworkProcessProxy::terminate):
(WebKit::NetworkProcessProxy::didTerminate):
(WebKit::NetworkProcessProxy::sendCreationParametersToNewProcess):
(WebKit::anyProcessPoolAlwaysRunsAtBackgroundPriority):
(WebKit::anyProcessPoolShouldTakeUIBackgroundAssertion):
(WebKit::NetworkProcessProxy::NetworkProcessProxy):
(WebKit::NetworkProcessProxy::~NetworkProcessProxy):
(WebKit::NetworkProcessProxy::getLaunchOptions):
(WebKit::NetworkProcessProxy::createDownloadProxy):
(WebKit::NetworkProcessProxy::networkProcessCrashed):
(WebKit::NetworkProcessProxy::didReceiveMessage):
(WebKit::NetworkProcessProxy::didClose):
(WebKit::NetworkProcessProxy::didReceiveAuthenticationChallenge):
(WebKit::NetworkProcessProxy::didFinishLaunching):
(WebKit::NetworkProcessProxy::setDomainsWithUserInteraction):
(WebKit::NetworkProcessProxy::addSession):
(WebKit::NetworkProcessProxy::removeSession):
(WebKit::NetworkProcessProxy::websiteDataStoreFromSessionID):
(WebKit::NetworkProcessProxy::establishWorkerContextConnectionToNetworkProcess):
(WebKit::anyProcessPoolHasForegroundWebProcesses):
(WebKit::anyProcessPoolHasBackgroundWebProcesses):
(WebKit::NetworkProcessProxy::updateProcessAssertion):
(WebKit::NetworkProcessProxy::hasSession const): Deleted.

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

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

  • UIProcess/WebCookieManagerProxy.cpp:

(WebKit::WebCookieManagerProxy::WebCookieManagerProxy):
(WebKit::WebCookieManagerProxy::~WebCookieManagerProxy):
(WebKit::WebCookieManagerProxy::getHostnamesWithCookies):
(WebKit::WebCookieManagerProxy::deleteCookiesForHostnames):
(WebKit::WebCookieManagerProxy::deleteAllCookies):
(WebKit::WebCookieManagerProxy::deleteCookie):
(WebKit::WebCookieManagerProxy::deleteAllCookiesModifiedSince):
(WebKit::WebCookieManagerProxy::setCookies):
(WebKit::WebCookieManagerProxy::getAllCookies):
(WebKit::WebCookieManagerProxy::getCookies):
(WebKit::WebCookieManagerProxy::startObservingCookieChanges):
(WebKit::WebCookieManagerProxy::stopObservingCookieChanges):
(WebKit::WebCookieManagerProxy::setHTTPCookieAcceptPolicy):
(WebKit::WebCookieManagerProxy::getHTTPCookieAcceptPolicy):
(WebKit::WebCookieManagerProxy::supplementName): Deleted.
(WebKit::WebCookieManagerProxy::create): Deleted.
(WebKit::WebCookieManagerProxy::processPoolDestroyed): Deleted.
(WebKit::WebCookieManagerProxy::processDidClose): Deleted.
(WebKit::WebCookieManagerProxy::refWebContextSupplement): Deleted.
(WebKit::WebCookieManagerProxy::derefWebContextSupplement): Deleted.

  • UIProcess/WebCookieManagerProxy.h:

(WebKit::WebCookieManagerProxy::create):

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::setControlledByAutomation):
(WebKit::WebPageProxy::disableServiceWorkerEntitlementInNetworkProcess):
(WebKit::WebPageProxy::clearServiceWorkerEntitlementOverride):
(WebKit::WebPageProxy::preconnectTo):
(WebKit::WebPageProxy::didCommitLoadForFrame):
(WebKit::WebPageProxy::logFrameNavigation):
(WebKit::WebPageProxy::dumpAdClickAttribution):
(WebKit::WebPageProxy::clearAdClickAttribution):
(WebKit::WebPageProxy::setAdClickAttributionOverrideTimerForTesting):
(WebKit::WebPageProxy::setAdClickAttributionConversionURLForTesting):
(WebKit::WebPageProxy::markAdClickAttributionsAsExpiredForTesting):

  • UIProcess/WebProcessPool.cpp:

(WebKit::WebProcessPool::urlSchemesWithCustomProtocolHandlers):
(WebKit::WebProcessPool::WebProcessPool):
(WebKit::WebProcessPool::~WebProcessPool):
(WebKit::WebProcessPool::languageChanged):
(WebKit::WebProcessPool::sendMemoryPressureEvent):
(WebKit::WebProcessPool::networkProcessCrashed):
(WebKit::WebProcessPool::establishWorkerContextConnectionToNetworkProcess):
(WebKit::WebProcessPool::removeFromServiceWorkerProcesses):
(WebKit::WebProcessPool::tryTakePrewarmedProcess):
(WebKit::WebProcessPool::initializeNewWebProcess):
(WebKit::WebProcessPool::processDidFinishLaunching):
(WebKit::WebProcessPool::createWebPage):
(WebKit::WebProcessPool::updateServiceWorkerUserAgent):
(WebKit::WebProcessPool::pageBeginUsingWebsiteDataStore):
(WebKit::WebProcessPool::download):
(WebKit::WebProcessPool::resumeDownload):
(WebKit::WebProcessPool::registerURLSchemeAsSecure):
(WebKit::WebProcessPool::registerURLSchemeAsBypassingContentSecurityPolicy):
(WebKit::WebProcessPool::registerURLSchemeAsLocal):
(WebKit::WebProcessPool::registerURLSchemeAsNoAccess):
(WebKit::WebProcessPool::registerGlobalURLSchemeAsHavingCustomProtocolHandlers):
(WebKit::WebProcessPool::unregisterGlobalURLSchemeAsHavingCustomProtocolHandlers):
(WebKit::WebProcessPool::setCacheModel):
(WebKit::WebProcessPool::setCacheModelSynchronouslyForTesting):
(WebKit::WebProcessPool::createDownloadProxy):
(WebKit::WebProcessPool::terminateServiceWorkers):
(WebKit::WebProcessPool::serviceWorkerProcesses):
(WebKit::WebProcessPool::updateProcessAssertions):
(WebKit::WebProcessPool::isServiceWorkerPageID const):
(WebKit::WebProcessPool::setUseSeparateServiceWorkerProcess):
(WebKit::WebProcessPool::hasServiceWorkerForegroundActivityForTesting const):
(WebKit::WebProcessPool::hasServiceWorkerBackgroundActivityForTesting const):
(WebKit::WebProcessPool::setLegacyCustomProtocolManagerClient): Deleted.
(WebKit::WebProcessPool::networkingProcessConnection): Deleted.
(WebKit::WebProcessPool::ensureNetworkProcess): Deleted.
There seems to be a lot of code removal here, but most of it was duplicate code with
WebsiteDataStore::parameters which is used instead. That which was not duplicate was
moved to NetworkProcessProxy::sendCreationParametersToNewProcess. This was the hardest part of this patch.
(WebKit::WebProcessPool::getNetworkProcessConnection): Deleted.
(WebKit::WebProcessPool::networkProcessIdentifier): Deleted.
(WebKit::WebProcessPool::synthesizeAppIsBackground): Deleted.
(WebKit::WebProcessPool::sendSyncToNetworkingProcess): Deleted.
(WebKit::WebProcessPool::clearCachedCredentials): Deleted.
(WebKit::WebProcessPool::terminateNetworkProcess): Deleted.
(WebKit::WebProcessPool::sendNetworkProcessPrepareToSuspendForTesting): Deleted.
(WebKit::WebProcessPool::sendNetworkProcessWillSuspendImminentlyForTesting): Deleted.
(WebKit::WebProcessPool::sendNetworkProcessDidResume): Deleted.
(WebKit::WebProcessPool::flushCookies): Deleted.
(WebKit::WebProcessPool::didCommitCrossSiteLoadWithDataTransfer): Deleted.

  • UIProcess/WebProcessPool.h:

(WebKit::WebProcessPool::sendToNetworkingProcess): Deleted.
(WebKit::WebProcessPool::sendToNetworkingProcessRelaunchingIfNecessary): Deleted.

  • UIProcess/WebProcessProxy.cpp:

(WebKit::WebProcessProxy::setWebsiteDataStore):
(WebKit::WebProcessProxy::getNetworkProcessConnection):
(WebKit::WebProcessProxy::didFinishLaunching):

  • UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm:

(WebKit::WebsiteDataStore::networkProcessHasEntitlementForTesting):
(WebKit::WebsiteDataStore::sendNetworkProcessXPCEndpointToWebProcess):
(WebKit::WebsiteDataStore::sendNetworkProcessXPCEndpointToAllWebProcesses):

  • UIProcess/WebsiteData/WebsiteDataStore.cpp:

(WebKit::WebsiteDataStore::forEachWebsiteDataStore):
(WebKit::WebsiteDataStore::WebsiteDataStore):
(WebKit::WebsiteDataStore::~WebsiteDataStore):
(WebKit::WebsiteDataStore::registerWithSessionIDMap):
(WebKit::WebsiteDataStore::existingDataStoreForSessionID):
(WebKit::WebsiteDataStore::networkProcess):
(WebKit::WebsiteDataStore::networkProcess const):
(WebKit::WebsiteDataStore::fetchDataAndApply):
(WebKit::WebsiteDataStore::removeData):
(WebKit::WebsiteDataStore::setServiceWorkerTimeoutForTesting):
(WebKit::WebsiteDataStore::resetServiceWorkerTimeoutForTesting):
(WebKit::WebsiteDataStore::setMaxStatisticsEntries):
(WebKit::WebsiteDataStore::setPruneEntriesDownTo):
(WebKit::WebsiteDataStore::setGrandfatheringTime):
(WebKit::WebsiteDataStore::setMinimumTimeBetweenDataRecordsRemoval):
(WebKit::WebsiteDataStore::dumpResourceLoadStatistics):
(WebKit::WebsiteDataStore::isPrevalentResource):
(WebKit::WebsiteDataStore::isGrandfathered):
(WebKit::WebsiteDataStore::setPrevalentResource):
(WebKit::WebsiteDataStore::setPrevalentResourceForDebugMode):
(WebKit::WebsiteDataStore::isVeryPrevalentResource):
(WebKit::WebsiteDataStore::setVeryPrevalentResource):
(WebKit::WebsiteDataStore::setShouldClassifyResourcesBeforeDataRecordsRemoval):
(WebKit::WebsiteDataStore::setSubframeUnderTopFrameDomain):
(WebKit::WebsiteDataStore::isRegisteredAsSubFrameUnder):
(WebKit::WebsiteDataStore::setSubresourceUnderTopFrameDomain):
(WebKit::WebsiteDataStore::isRegisteredAsSubresourceUnder):
(WebKit::WebsiteDataStore::setSubresourceUniqueRedirectTo):
(WebKit::WebsiteDataStore::setSubresourceUniqueRedirectFrom):
(WebKit::WebsiteDataStore::setTopFrameUniqueRedirectTo):
(WebKit::WebsiteDataStore::setTopFrameUniqueRedirectFrom):
(WebKit::WebsiteDataStore::isRegisteredAsRedirectingTo):
(WebKit::WebsiteDataStore::clearPrevalentResource):
(WebKit::WebsiteDataStore::resetParametersToDefaultValues):
(WebKit::WebsiteDataStore::submitTelemetry):
(WebKit::WebsiteDataStore::scheduleClearInMemoryAndPersistent):
(WebKit::WebsiteDataStore::getResourceLoadStatisticsDataSummary):
(WebKit::WebsiteDataStore::scheduleCookieBlockingUpdate):
(WebKit::WebsiteDataStore::scheduleStatisticsAndDataRecordsProcessing):
(WebKit::WebsiteDataStore::statisticsDatabaseHasAllTables):
(WebKit::WebsiteDataStore::setLastSeen):
(WebKit::WebsiteDataStore::domainIDExistsInDatabase):
(WebKit::WebsiteDataStore::mergeStatisticForTesting):
(WebKit::WebsiteDataStore::insertExpiredStatisticForTesting):
(WebKit::WebsiteDataStore::setNotifyPagesWhenDataRecordsWereScanned):
(WebKit::WebsiteDataStore::setIsRunningResourceLoadStatisticsTest):
(WebKit::WebsiteDataStore::getAllStorageAccessEntries):
(WebKit::WebsiteDataStore::setTimeToLiveUserInteraction):
(WebKit::WebsiteDataStore::logUserInteraction):
(WebKit::WebsiteDataStore::hasHadUserInteraction):
(WebKit::WebsiteDataStore::isRelationshipOnlyInDatabaseOnce):
(WebKit::WebsiteDataStore::clearUserInteraction):
(WebKit::WebsiteDataStore::setGrandfathered):
(WebKit::WebsiteDataStore::setUseITPDatabase):
(WebKit::WebsiteDataStore::setCrossSiteLoadWithLinkDecorationForTesting):
(WebKit::WebsiteDataStore::resetCrossSiteLoadsWithLinkDecorationForTesting):
(WebKit::WebsiteDataStore::deleteCookiesForTesting):
(WebKit::WebsiteDataStore::hasLocalStorageForTesting const):
(WebKit::WebsiteDataStore::hasIsolatedSessionForTesting const):
(WebKit::WebsiteDataStore::setResourceLoadStatisticsShouldDowngradeReferrerForTesting):
(WebKit::WebsiteDataStore::setThirdPartyCookieBlockingMode):
(WebKit::WebsiteDataStore::setResourceLoadStatisticsShouldEnbleSameSiteStrictEnforcementForTesting):
(WebKit::WebsiteDataStore::setResourceLoadStatisticsFirstPartyWebsiteDataRemovalModeForTesting):
(WebKit::WebsiteDataStore::setResourceLoadStatisticsToSameSiteStrictCookiesForTesting):
(WebKit::WebsiteDataStore::setResourceLoadStatisticsFirstPartyHostCNAMEDomainForTesting):
(WebKit::WebsiteDataStore::setResourceLoadStatisticsThirdPartyCNAMEDomainForTesting):
(WebKit::WebsiteDataStore::syncLocalStorage):
(WebKit::WebsiteDataStore::setCacheMaxAgeCapForPrevalentResources):
(WebKit::WebsiteDataStore::resetCacheMaxAgeCapForPrevalentResources):
(WebKit::WebsiteDataStore::processPools const):
(WebKit::WebsiteDataStore::allowSpecificHTTPSCertificateForHost):
(WebKit::WebsiteDataStore::getNetworkProcessConnection):
(WebKit::WebsiteDataStore::networkProcessCrashed):
(WebKit::WebsiteDataStore::terminateNetworkProcess):
(WebKit::WebsiteDataStore::sendNetworkProcessPrepareToSuspendForTesting):
(WebKit::WebsiteDataStore::sendNetworkProcessWillSuspendImminentlyForTesting):
(WebKit::WebsiteDataStore::sendNetworkProcessDidResume):
(WebKit::WebsiteDataStore::setResourceLoadStatisticsEnabled):
(WebKit::WebsiteDataStore::setStatisticsTestingCallback):
(WebKit::WebsiteDataStore::setResourceLoadStatisticsDebugMode):
(WebKit::WebsiteDataStore::isResourceLoadStatisticsEphemeral const):
(WebKit::WebsiteDataStore::setAdClickAttributionDebugMode):
(WebKit::WebsiteDataStore::flushCookies):
(WebKit::WebsiteDataStore::setAllowsAnySSLCertificateForWebSocket):
(WebKit::WebsiteDataStore::clearCachedCredentials):
(WebKit::WebsiteDataStore::parameters):
(WebKit::WebsiteDataStore::getLocalStorageDetails):
(WebKit::WebsiteDataStore::resetQuota):
(WebKit::WebsiteDataStore::networkProcessHasEntitlementForTesting):
(WebKit::WebsiteDataStore::renameOriginInWebsiteData):
(WebKit::WebsiteDataStore::hasAppBoundSession const):
(WebKit::WebsiteDataStore::clearAppBoundSession):
(WebKit::WebsiteDataStore::forwardAppBoundDomainsToITPIfInitialized):
(WebKit::WebsiteDataStore::setAppBoundDomainsForITP):
(WebKit::WebsiteDataStore::updateBundleIdentifierInNetworkProcess):
(WebKit::WebsiteDataStore::clearBundleIdentifierInNetworkProcess):
(WebKit::WebsiteDataStore::makeNextNetworkProcessLaunchFailForTesting):
(WebKit::WebsiteDataStore::shouldMakeNextNetworkProcessLaunchFailForTesting):
(WebKit::WebsiteDataStore::maybeRegisterWithSessionIDMap): Deleted.
(WebKit::WebsiteDataStore::existingNonDefaultDataStoreForSessionID): Deleted.
(WebKit::WebsiteDataStore::processPoolForCookieStorageOperations): Deleted.
(WebKit::WebsiteDataStore::isAssociatedProcessPool const): Deleted.
(WebKit::WebsiteDataStore::pendingCookies const): Deleted.
(WebKit::WebsiteDataStore::addPendingCookie): Deleted.
(WebKit::WebsiteDataStore::removePendingCookie): Deleted.
(WebKit::WebsiteDataStore::clearPendingCookies): Deleted.
(WebKit::WebsiteDataStore::didCreateNetworkProcess): Deleted.

  • UIProcess/WebsiteData/WebsiteDataStore.h:
  • UIProcess/WebsiteData/curl/WebsiteDataStoreCurl.cpp:

(WebKit::WebsiteDataStore::setNetworkProxySettings):

  • UIProcess/WebsiteData/soup/WebsiteDataStoreSoup.cpp:

(WebKit::WebsiteDataStore::platformSetNetworkParameters):
(WebKit::WebsiteDataStore::setPersistentCredentialStorageEnabled):

  • UIProcess/glib/WebProcessProxyGLib.cpp:

(WebKit::WebProcessProxy::platformGetLaunchOptions):

  • UIProcess/soup/WebCookieManagerProxySoup.cpp:

(WebKit::WebCookieManagerProxy::setCookiePersistentStorage):

  • UIProcess/soup/WebProcessPoolSoup.cpp:

(WebKit::WebProcessPool::platformInitializeNetworkProcess):
(WebKit::WebProcessPool::setIgnoreTLSErrors):
(WebKit::WebProcessPool::setNetworkProxySettings):

  • WebProcess/Network/NetworkProcessConnectionInfo.h:

Tools:

Most changes to tests are just calling a function on the WKWebsiteDataStore instead of the WKProcessPool
because we want to do something with the network process and it has a new owner.
Exceptions are noted inline.

  • TestWebKitAPI/Tests/WebKit/NetworkProcessCrashWithPendingConnection.mm:

(TestWebKitAPI::TEST):

  • TestWebKitAPI/Tests/WebKitCocoa/Download.mm:

(TestWebKitAPI::downloadAtRate):

  • TestWebKitAPI/Tests/WebKitCocoa/IDBCheckpointWAL.mm:

(TEST):

  • TestWebKitAPI/Tests/WebKitCocoa/IDBDeleteRecovery.mm:

(TEST):

  • TestWebKitAPI/Tests/WebKitCocoa/IDBIndexUpgradeToV2.mm:

(TEST):

  • TestWebKitAPI/Tests/WebKitCocoa/IDBObjectStoreInfoUpgradeToV2.mm:

(TEST):

  • TestWebKitAPI/Tests/WebKitCocoa/IndexedDBDatabaseProcessKill.mm:

(TEST):

  • TestWebKitAPI/Tests/WebKitCocoa/IndexedDBMultiProcess.mm:

(TEST):

  • TestWebKitAPI/Tests/WebKitCocoa/IndexedDBPersistence.mm:

(TEST):

  • TestWebKitAPI/Tests/WebKitCocoa/IndexedDBSuspendImminently.mm:

(TEST):

  • TestWebKitAPI/Tests/WebKitCocoa/IndexedDBTempFileSize.mm:

(TEST):

  • TestWebKitAPI/Tests/WebKitCocoa/LocalStoragePersistence.mm:

(TEST):

  • TestWebKitAPI/Tests/WebKitCocoa/NetworkProcess.mm:

(TEST):

  • TestWebKitAPI/Tests/WebKitCocoa/NetworkProcessCrashNonPersistentDataStore.mm:

(checkRecoveryAfterCrash):

  • TestWebKitAPI/Tests/WebKitCocoa/ProcessSwapOnNavigation.mm:
  • TestWebKitAPI/Tests/WebKitCocoa/ResourceLoadStatistics.mm:

(TEST):
This test was making a WKWebsiteDataStore, getting its resource load statistics directory,
putting things in that directory, then starting the network process and making sure everything
works when initializing the network process. Now, network process initialization happens when a
WKWebsiteDataStore is instantiated, so we need to put things there before instantiating a WKWebsiteDataStore.

  • TestWebKitAPI/Tests/WebKitCocoa/ServiceWorkerBasic.mm:

Before this change, each WKProcessPool had its own network process, which holds the service worker registry
for the WebsiteDataStores used with that process pool. Now, the network process still needs to have a service
worker registry in it, but when we receive a message from it looking for a web process to run the service
worker, we go arbitrarily to the first process pool that has a process we can use. This logic is in
WebProcessPool::establishWorkerContextConnectionToNetworkProcess. Because we use the first process pool each
time, setting the custom user agent to two different things in two different process pools causes only one
to be used. This is not a problem in practice, though, because the only application that uses the SPI to
set a service worker's custom user agent is Safari, which only has one process pool. This test still verifies
that a user ageint is correctly sent.
Similarly, the tests that count service worker processes either have different results or need to be run with
one process pool per parent process. To keep the results the same, I separated the tests into different
TEST(ServiceWorkers, ...) macros which are run in separate parent processes.
The test RestoreFromDiskNonDefaultStore needs to use the same data store for both WKWebViews now because otherwise
there was a race condition in the startup of a new network process that wasn't there before because we were using the
same process pool and therefore the same network process. I added spinning the run loop and sleeping to be able to
reproduce the race condition failure and I use the same WKWebsiteDataStore to use the same network process, which was
the intent of using the same WKProcessPool before. The test still tests that the registration is re-used when we are
not using the default data store.

  • TestWebKitAPI/Tests/WebKitCocoa/ServiceWorkerBasic.mm:
  • TestWebKitAPI/Tests/WebKitCocoa/WKHTTPCookieStore.mm:

(-[CheckSessionCookieUIDelegate webView:runJavaScriptAlertPanelWithMessage:initiatedByFrame:completionHandler:]):
(-[CheckSessionCookieUIDelegate waitForMessage]):
(-[CheckSessionCookieUIDelegate alertCookieHTML]):
(TEST):
This is the whole point of me doing this.
I took a test that was flaky only on iOS (because of different NSHTTPCookieStorage syncing behavior) and made
it flaky nowhere (fingers crossed!) and added a test that correctly handles session cookies like we could not
before this change.
I also re-used some test infrastructure and made it stop using process-global static variables for test state.

  • TestWebKitAPI/Tests/WebKitCocoa/WKURLSchemeHandler-leaks.mm:

(TEST):

  • TestWebKitAPI/Tests/WebKitCocoa/WebsiteDataStoreCustomPaths.mm:

(runWebsiteDataStoreCustomPaths):
(TEST):

  • TestWebKitAPI/Tests/WebKitObjC/CustomProtocolsTest.mm:

(-[CloseWhileStartingProtocol startLoading]):
(TestWebKitAPI::runTest):

  • WebKitTestRunner/TestController.cpp:

(WTR::TestController::resetStateToConsistentValues):
(WTR::TestController::findAndDumpWebKitProcessIdentifiers):
(WTR::TestController::networkProcessDidCrash):
(WTR::TestController::terminateNetworkProcess):
(WTR::TestController::platformAdjustContext):
WKContextSetAllowsAnySSLCertificateForServiceWorkerTesting is not needed, so I removed it.
WKContextSetPrimaryWebsiteDataStore isn't needed any more because WKContextRef (WebProcessPool) doesn't
own a network process any more, so it doesn't care which is the default WebsiteDataStore.
In fact, the "default" WebsiteDataStore isn't really important in the network process any more.

2:41 PM Changeset in webkit [267762] by timothy_horton@apple.com
  • 2 edits in trunk/Source/WebKit

Enable the Web Share Level 2 feature wherever Web Share is enabled
https://bugs.webkit.org/show_bug.cgi?id=217105

Reviewed by Beth Dakin.

No new tests; there are already tests that enable this.

  • Shared/WebPreferencesExperimental.yaml:
2:38 PM Changeset in webkit [267761] by Darin Adler
  • 79 edits
    1 add in trunk

Refactor test runner code to cut down on copy/paste code and long-winded repetitive idioms
https://bugs.webkit.org/show_bug.cgi?id=217028

Reviewed by Sam Weinig.

Source/JavaScriptCore:

  • API/JSRetainPtr.h: Added support for JSClassRef.

Tools:

I did a lot of simplifying, but even more is possible. For some reason, the test
code is a hotbed of repeated idioms, and copy and paste rather than helper functions.
Even after the refactoring, I have some doubts about the way this code is written with
so much repeated marshaling for each function.

  • DumpRenderTree/AccessibilityController.cpp:

(AccessibilityController::makeWindowObject): Use setGlobalObjectProperty.
(AccessibilityController::createJSClass): Replaced getJSClass with this. Return a
JSRetainPtr to make it clear this passes ownership to the caller.

  • DumpRenderTree/AccessibilityController.h: Updated for the above.
  • DumpRenderTree/AccessibilityUIElement.cpp:

(uiElementCountForSearchPredicateCallback): Removed unneeded initialization of
JSRetainPtr, which starts out null.

  • DumpRenderTree/Bindings/CodeGeneratorDumpRenderTree.pm:

(_platformTypeConstructor): Use toOptionalBool and createJSString.
(_returnExpression): Use makeValue.

  • DumpRenderTree/GCController.cpp:

(GCController::GCController): Deleted.
(GCController::~GCController): Deleted.
(collectCallback): Use a reference and auto.
(collectOnAlternateThreadCallback): Ditto.
(getJSObjectCountCallback): Ditto.
(GCController::makeWindowObject): Use setGlobalObjectProperty.
(AccessibilityController::createJSClass): Replaced getJSClass with this. Return a
JSRetainPtr to make it clear this passes ownership to the caller.

  • DumpRenderTree/GCController.h: Updated for the above.
  • DumpRenderTree/TestRunner.cpp:

(encodeHostNameCallback): Use createJSString.
(execCommandCallback): Ditto.
(findStringCallback): Ditto.
(isCommandEnabledCallback): Ditto.
(overridePreferenceCallback): Ditto.
(queueLoadCallback): Ditto.
(queueLoadHTMLStringCallback): Ditto.
(TestRunner::makeWindowObject): Use setGlobalObjectProperty.
(TestRunner::createJSClass): Replaced getJSClass with this. Return a
JSRetainPtr to make it clear this passes ownership to the caller.
(TestRunner::staticValues): Made return value const*.
(TestRunner::staticFunctions): Ditto.
(TestRunner::waitToDumpWatchdogTimerFired): Simplified printing.
(TestRunner::cacheTestRunnerCallback): Updated to use object pointers as hash
table values instead of values, since callbacks need to be objects.
(TestRunner::callTestRunnerCallback): Ditto.
(TestRunner::clearTestRunnerCallbacks): Ditto.
(TestRunner::setOpenPanelFiles): Use arrayLength.

  • DumpRenderTree/TestRunner.h: Updated for the above.
  • DumpRenderTree/ios/AccessibilityControllerIOS.mm:

(AccessibilityController::platformName const): Use createJSString.

  • DumpRenderTree/ios/AccessibilityUIElementIOS.mm:

(createEmptyJSString): Dleted.
(AccessibilityUIElement::stringForTextMarkerRange): Use createJSString.
(AccessibilityUIElement::attributesOfLinkedUIElements): Ditto.
(AccessibilityUIElement::attributesOfDocumentLinks): Ditto.
(AccessibilityUIElement::attributesOfChildren): Ditto.
(AccessibilityUIElement::allAttributes): Ditto.
(AccessibilityUIElement::stringAttributeValue): Ditto.
(AccessibilityUIElement::parameterizedAttributeNames): Ditto.
(AccessibilityUIElement::role): Ditto.
(AccessibilityUIElement::subrole): Ditto.
(AccessibilityUIElement::roleDescription): Ditto.
(AccessibilityUIElement::computedRoleString): Ditto.
(AccessibilityUIElement::title): Ditto.
(AccessibilityUIElement::orientation const): Ditto.
(AccessibilityUIElement::language): Ditto.
(AccessibilityUIElement::valueDescription): Ditto.
(AccessibilityUIElement::ariaDropEffects const): Ditto.
(AccessibilityUIElement::boundsForRange): Ditto.
(AccessibilityUIElement::attributesOfColumnHeaders): Ditto.
(AccessibilityUIElement::attributesOfRowHeaders): Ditto.
(AccessibilityUIElement::attributesOfColumns): Ditto.
(AccessibilityUIElement::attributesOfRows): Ditto.
(AccessibilityUIElement::attributesOfVisibleCells): Ditto.
(AccessibilityUIElement::attributesOfHeader): Ditto.
(AccessibilityUIElement::selectedTextRange): Ditto.
(AccessibilityUIElement::accessibilityValue const): Ditto.
(AccessibilityUIElement::documentEncoding): Ditto.
(AccessibilityUIElement::documentURI): Ditto.

  • DumpRenderTree/mac/AccessibilityCommonMac.h: Removed unneeded "extern".
  • DumpRenderTree/mac/AccessibilityCommonMac.mm:

(searchPredicateParameterizedAttributeForSearchCriteria): Use arrayLength.
Removed unneeded call to JSValueToObject after JSValueIsObject.

  • DumpRenderTree/mac/AccessibilityControllerMac.mm:

(AccessibilityController::platformName const): Use createJSString.

  • DumpRenderTree/mac/AccessibilityUIElementMac.mm:

(createEmptyJSString): Deleted.
(selectTextParameterizedAttributeForCriteria): Use arrayLength.
Removed unneeded call to JSValueToObject after JSValueIsObject.
(searchTextParameterizedAttributeForCriteria): Ditto.
(AccessibilityUIElement::accessibilityValue const): Use createJSString.
(AccessibilityUIElement::documentEncoding): Ditto.
(AccessibilityUIElement::documentURI): Ditto.

  • DumpRenderTree/mac/FrameLoadDelegate.mm:

(-[FrameLoadDelegate didClearWindowObjectInStandardWorldForFrame:]):
Use auto. Pass fewer arguments to makeWindowObject. Simplified object
creation code by using adoptNS instead of release.
(-[FrameLoadDelegate didClearWindowObjectForFrame:inIsolatedWorld:]):
Use createJSString.

  • DumpRenderTree/mac/TestRunnerMac.mm:

(TestRunner::findString): Use arrayLength.

  • DumpRenderTree/win/FrameLoadDelegate.cpp:

(FrameLoadDelegate::didClearWindowObjectForFrameInStandardWorld):
Pass fewer arguments to makeWindowObject.

  • DumpRenderTree/win/TextInputController.cpp:

(TextInputController::makeWindowObject): Use setGlobalObjectProperty.
(TextInputController::createJSClass): Replaced getJSClass with this. Return a
JSRetainPtr to make it clear this passes ownership to the caller.
(TextInputController::staticValues): Made return value const*.
(TextInputController::staticFunctions): Ditto.

  • DumpRenderTree/win/TextInputController.h: Updated for above.
  • TestRunnerShared/Bindings/JSBasics.cpp:

(WTR::toOptionalBool): Renamed from JSValueMakeBooleanOrNull.
(WTR::toOptionalDouble): Added.
(WTR::makeValue): Added with overloads for various types.
Replaced JSValueToNullableBoolean and JSValueMakeStringOrNull.
(WTR::createJSString): Added with overloads for various types.
(WTR::property): Added.
(WTR::stringProperty): Added.
(WTR::booleanProperty): Added.
(WTR::numericProperty): Added.
(WTR::objectProperty): Refactored to call property.
(WTR::arrayLength): Added.
(WTR::setGlobalObjectProperty): Added.
(WTR::call): Refactored to let objectProperty do more of the null checking.
(WTR::callConstructor): Ditto.

  • TestRunnerShared/Bindings/JSBasics.h: Updated for the above.
  • TestRunnerShared/Bindings/JSWrappable.h: Reduced includes a bit.
  • TestRunnerShared/Bindings/JSWrapper.h: Added setGlobalObjectProperty.
  • TestRunnerShared/UIScriptContext/UIScriptContext.cpp:

(UIScriptContext::UIScriptContext): Pass fewer arguments to makeWindowObject.
(UIScriptContext::runUIScript): Use createJSString.
(UIScriptContext::objectFromRect const): Use setProperty.

  • TestRunnerShared/UIScriptContext/UIScriptController.h: Updated for the above.
  • TestRunnerShared/UIScriptContext/UIScriptControllerShared.cpp:

(WTR::toDeviceOrientation): Use createJSString and JSStringIsEqualToUTF8CString.
(WTR::UIScriptController::makeWindowObject): Use setGlobalObjectProperty.

  • TestRunnerShared/cocoa/LayoutTestSpellChecker.mm:

(-[LayoutTestSpellChecker setResultsFromJSValue:inContext:]): Use createJSString
and removed unneeded use of lroundl.

  • WebKitTestRunner/DictionaryFunctions.h: Added. Contains convenience functions

for dealing with WKDictionaryRef.

  • WebKitTestRunner/EventSenderProxy.h: Initialize data members.
  • WebKitTestRunner/GeolocationProviderMock.cpp:

(GeolocationProviderMock::setPosition): Use Optional instead of separate bool.

  • WebKitTestRunner/GeolocationProviderMock.h: Updated for the above.
  • WebKitTestRunner/InjectedBundle/AccessibilityController.cpp:

(WTR::AccessibilityController::makeWindowObject): Use setGlobalObjectProperty.

  • WebKitTestRunner/InjectedBundle/AccessibilityController.h: Updated for the above.
  • WebKitTestRunner/InjectedBundle/Bindings/CodeGeneratorTestRunner.pm:

(_generateImplementationFile): Use static initialization and a lambda instead of
an if statement to initialize.
(_platformTypeConstructor): Use toOptionalBool and createJSString. Also added
support for nullable doubles and used auto a bit more.
(_returnExpression): Use makeValue.

  • InjectedBundle/Bindings/TestRunner.idl: Made the optional arguments to the

setMockGeolocationPosition function "double?" instead of "object".

  • WebKitTestRunner/InjectedBundle/EventSendingController.cpp:

(WTR::getMenuItemChildrenCallback): Use auto and not JSValueToObject.
(WTR::arrayLength): Moved to JSBasics.h/cpp.
(WTR::parseTouchModifier): Added. Factored out of the
EventSendingController::setTouchModifier function.
(WTR::parseModifierArray): Use createJSString and remove unneeded ignored
exception out argument, since that is optional. Also added overload that
gets the context.
(WTR::EventSendingController::EventSendingController): Deleted.
(WTR::EventSendingController::~EventSendingController): Deleted.
(WTR::createMouseMessageBody): Use adoptWK and setValue. Return a WKRetainPtr.
(WTR::EventSendingController::mouseDown): Use postSynchronousPageMessage.
(WTR::EventSendingController::mouseUp): Ditto.
(WTR::EventSendingController::mouseMoveTo): Use setValue and
postSynchronousPageMessages.
(WTR::EventSendingController::mouseForceClick): Ditto.
(WTR::EventSendingController::startAndCancelMouseForceClick): Ditto.
(WTR::EventSendingController::mouseForceDown): Ditto.
(WTR::EventSendingController::mouseForceUp): Ditto.
(WTR::EventSendingController::mouseForceChanged): Ditto.
(WTR::EventSendingController::leapForward): Ditto.
(WTR::EventSendingController::scheduleAsynchronousClick): Use postPageMessage.
(WTR::createKeyDownMessageBody): Use setValue.
(WTR::EventSendingController::keyDown): Use postSynchronousPageMessage.
(WTR::EventSendingController::scheduleAsynchronousKeyDown): Use postPageMessage.
(WTR::EventSendingController::mouseScrollBy): Use setValue and postPageMessage.
(WTR::EventSendingController::mouseScrollByWithWheelAndMomentumPhases): Use
setValue and postPageMessage.
(WTR::EventSendingController::continuousMouseScrollBy): Use setValue and
postSynchronousPageMessage.
(WTR::EventSendingController::contextClick): Use auto and not JSValueToObject.
(WTR::toMonitorWheelEventsOptions): Use booleanProperty.
(WTR::EventSendingController::addTouchPoint): Use setValue and postSynchronousPageMessage.
(WTR::EventSendingController::updateTouchPoint): Ditto.
(WTR::EventSendingController::setTouchModifier): Ditto.
(WTR::EventSendingController::setTouchPointRadius): Ditto.
(WTR::EventSendingController::touchStart): Ditto.
(WTR::EventSendingController::touchMove): Ditto.
(WTR::EventSendingController::touchEnd): Ditto.
(WTR::EventSendingController::touchCancel): Ditto.
(WTR::EventSendingController::clearTouchPoints): Ditto.
(WTR::EventSendingController::releaseTouchPoint): Ditto.
(WTR::EventSendingController::cancelTouchPoint): Ditto.
(WTR::EventSendingController::makeWindowObject): Use setGlobalObjectProperty.

  • WebKitTestRunner/InjectedBundle/EventSendingController.h: Updated for the above.

Deleted various unneeded functions.

  • WebKitTestRunner/InjectedBundle/GCController.cpp:

(WTR::GCController::GCController): Deleted.
(WTR::GCController::~GCController): Deleted.
(WTR::GCController::makeWindowObject): Use setGlobalObjectProperty.

  • WebKitTestRunner/InjectedBundle/GCController.h: Updated for the above.

Also marked the class final.

  • WebKitTestRunner/InjectedBundle/InjectedBundle.cpp:

(WTR::InjectedBundle::didCreatePage): Use booleanValue.
(WTR::InjectedBundle::didReceiveMessage): Use toWK.
(WTR::InjectedBundle::postPageMessage): Added.
(WTR::InjectedBundle::reportLiveDocuments): Use postPageMessage.
(WTR::InjectedBundle::didReceiveMessageToPage): Use dictionaryValue,
booleanValue, postPageMessage, value, and more to streamline.
(WTR::InjectedBundle::booleanForKey): Deleted.
(WTR::InjectedBundle::stringForKey): Deleted.
(WTR::InjectedBundle::beginTesting): Use booleanValue.
(WTR::InjectedBundle::done): Use stringValue.
(WTR::InjectedBundle::closeOtherPages): Use setValue and toWK.
(WTR::InjectedBundle::dumpToStdErr): Use postPageMessage
(WTR::InjectedBundle::outputText): Use toWK.
(WTR::InjectedBundle::postNewBeforeUnloadReturnValue): Use postPageMessage.
(WTR::InjectedBundle::postAddChromeInputField): Ditto.
(WTR::InjectedBundle::postRemoveChromeInputField): Ditto.
(WTR::InjectedBundle::postFocusWebView): Ditto.
(WTR::InjectedBundle::postSetBackingScaleFactor): Ditto.
(WTR::InjectedBundle::postSetWindowIsKey): Use toWK.
(WTR::InjectedBundle::postSetViewSize): Use setValue and toWK.
(WTR::InjectedBundle::postSimulateWebNotificationClick): Use postPageMessage.
(WTR::InjectedBundle::postSetAddsVisitedLinks): Ditto.
(WTR::InjectedBundle::setGeolocationPermission): Ditto.
(WTR::InjectedBundle::setMockGeolocationPosition): Use setValue and postPageMessage,
and use Optional instead of bool/double pairs.
(WTR::InjectedBundle::setMockGeolocationPositionUnavailableError): Use postPageMessage.
(WTR::InjectedBundle::isGeolocationProviderActive const): Use toWK and booleanValue.
(WTR::InjectedBundle::imageCountInGeneralPasteboard const): Use toWK and uint64Value.
(WTR::InjectedBundle::setUserMediaPermission): Use postPageMessage.
(WTR::InjectedBundle::resetUserMediaPermission): Ditto.
(WTR::InjectedBundle::setUserMediaPersistentPermissionForOrigin): Use setValue
and postPageMessage.
(WTR::InjectedBundle::userMediaPermissionRequestCountForOrigin const): Ditto.
(WTR::InjectedBundle::resetUserMediaPermissionRequestCountForOrigin): Uset setValue
and uint64Value.
(WTR::InjectedBundle::setCustomPolicyDelegate): Use setValue and postPageMessage.
(WTR::InjectedBundle::setHidden): Ditto.
(WTR::InjectedBundle::setCacheModel): Ditto.
(WTR::InjectedBundle::shouldProcessWorkQueue const): Use toWK and booleanValue.
(WTR::InjectedBundle::processWorkQueue): Use postPageMessage.
(WTR::InjectedBundle::queueBackNavigation): Ditto.
(WTR::InjectedBundle::queueForwardNavigation): Ditto.
(WTR::InjectedBundle::queueLoad): Use setValue and postPageMessage.
(WTR::InjectedBundle::queueLoadHTMLString): Ditto.
(WTR::InjectedBundle::queueReload): Ditto.
(WTR::InjectedBundle::queueLoadingScript): Ditto.
(WTR::InjectedBundle::queueNonLoadingScript): Ditto.
(WTR::postMessage): Added. Overloads for many types to keep caller code streamlined.
(WTR::postSynchronousMessage): Ditto.
(WTR::postPageMessage): Ditto.
(WTR::postSynchronousPageMessage): Ditto.

  • WebKitTestRunner/InjectedBundle/InjectedBundle.h: Updated for the above.
  • WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:

(WTR::propertyValue): Deleted. Use functions from JSBasics.h instead.
(WTR::propertyValueDouble): Ditto.
(WTR::propertyValueInt): Ditto.
(WTR::numericWindowProperty): Renamed from numericWindowPropertyValue for brevity
and for consistency with JSBasics.h functions.
(WTR::dumpPath): Use stringProperty, objectProperty, and makeString.
(WTR::rangeToStr): Use auto, numericProperty, and makeString.
(WTR::NavigationTypeToString): Use toWK.
(WTR::string): Renamed from securityOriginToStr. Use makeString.
(WTR::frameToStr): Use auto.
(WTR::InjectedBundlePage::resetAfterTest): Removed unneeded local.
(WTR::dumpFrameDescriptionSuitableForTestResult): Use auto.
(WTR::dumpRequestDescriptionSuitableForTestResult): Ditto.
(WTR::dumpErrorDescriptionSuitableForTestResult): Use auto and toWK.
(WTR::dumpFrameScrollPosition): Update for name change.
(WTR::toJS): Deleted. Use functions from JSBasics.h instead.
(WTR::hasDocumentElement): Use objectProperty.
(WTR::InjectedBundlePage::didClearWindowForFrame): Use setGlobalObjectProperty,
and pass fewer arguments to makeWindowObject.
(WTR::InjectedBundlePage::decidePolicyForNavigationAction): Streamline code a bit.
(WTR::InjectedBundlePage::decidePolicyForResponse): Use makeString.
(WTR::lastFileURLPathComponent): Ditto.
(WTR::InjectedBundlePage::willSetStatusbarText): Ditto.
(WTR::InjectedBundlePage::didReachApplicationCacheOriginQuota): Ditto.
(WTR::InjectedBundlePage::didExceedDatabaseQuota): Ditto.
(WTR::InjectedBundlePage::shouldBeginEditing): Ditto.
(WTR::InjectedBundlePage::shouldEndEditing): Ditto.

  • WebKitTestRunner/InjectedBundle/TestRunner.cpp:

(WTR::TestRunner::TestRunner): Use toWK.
(WTR::page): Added.
(WTR::mainFrame): Added.
(WTR::mainFrameJSContext): Added.
(WTR::TestRunner::display): Use page.
(WTR::TestRunner::displayAndTrackRepaints): Use page.
(WTR::toWK): Added overload for double.
(WTR::createWKDictionary): Added.
(WTR::postSynchronousMessageWithReturnValue): Added.
(WTR::postSynchronousMessageReturningBoolean): Added.
(WTR::postSynchronousPageMessageWithReturnValue): Added.
(WTR::postSynchronousPageMessageReturningBoolean): Added.
(WTR::postSynchronousPageMessageReturningUInt64): Added.
(WTR::postSynchronousMessageReturningUInt64): Added.
(WTR::overridePreference): Added.
(WTR::TestRunner::shouldDumpPixels const): Use postSynchronousMessageReturningBoolean.
(WTR::TestRunner::setDumpPixels): Use postSynchronousMessage.
(WTR::TestRunner::whatToDump const): Use postSynchronousMessageReturningUInt64.
(WTR::TestRunner::setWhatToDump): Use postSynchronousMessage.
(WTR::TestRunner::setWaitUntilDone): Use postSynchronousMessage.
(WTR::TestRunner::shouldWaitUntilDone const): Use postSynchronousMessageReturningBoolean.
(WTR::TestRunner::setShouldDumpFrameLoadCallbacks): Use postSynchronousMessage.
(WTR::TestRunner::shouldDumpFrameLoadCallbacks): Use postSynchronousMessageReturningBoolean.
(WTR::TestRunner::addUserScript): Use page.
(WTR::TestRunner::addUserStyleSheet): Ditto.
(WTR::TestRunner::execCommand): Ditto.
(WTR::findOptionsFromArray): Use mainFrameJSContext, arrayLength, and createJSString.
(WTR::TestRunner::findString): Use page.
(WTR::TestRunner::findStringMatchesInPage): Ditto.
(WTR::TestRunner::replaceFindMatchesAtIndices): Use mainFrameJSContext and arrayLength and
removed unneeded call to std::round.
(WTR::TestRunner::clearAllDatabases): Use postSynchronousMessage.
(WTR::TestRunner::syncLocalStorage): Ditto.
(WTR::TestRunner::clearAllApplicationCaches): Use page.
(WTR::TestRunner::clearApplicationCacheForOrigin): Ditto.
(WTR::TestRunner::setAppCacheMaximumSize): Ditto.
(WTR::TestRunner::applicationCacheDiskUsageForOrigin): Ditto.
(WTR::stringArrayToJS): Tweaked coding style a bit.
(WTR::TestRunner::originsWithApplicationCache): Use page.
(WTR::TestRunner::isCommandEnabled): Ditto.
(WTR::TestRunner::setCanOpenWindows): Use postSynchronousMessage.
(WTR::TestRunner::setXSSAuditorEnabled): Use overridePreference.
(WTR::TestRunner::setMediaDevicesEnabled): Ditto.
(WTR::TestRunner::setWebRTCMDNSICECandidatesEnabled): Ditto.
(WTR::TestRunner::setCustomUserAgent): Use postSynchronousMessage.
(WTR::TestRunner::setWebAPIStatisticsEnabled): Use overridePreference.
(WTR::TestRunner::setModernMediaControlsEnabled): Ditto.
(WTR::TestRunner::setWebGL2Enabled): Ditto.
(WTR::TestRunner::setWritableStreamAPIEnabled): Ditto.
(WTR::TestRunner::setTransformStreamAPIEnabled): Ditto.
(WTR::TestRunner::setReadableByteStreamAPIEnabled): Ditto.
(WTR::TestRunner::setEncryptedMediaAPIEnabled): Ditto.
(WTR::TestRunner::setPictureInPictureAPIEnabled): Ditto.
(WTR::TestRunner::setGenericCueAPIEnabled): Ditto.
(WTR::TestRunner::setAllowsAnySSLCertificate): Use postSynchronousPageMessage.
(WTR::TestRunner::setShouldSwapToEphemeralSessionOnNextNavigation): Ditto.
(WTR::TestRunner::setShouldSwapToDefaultSessionOnNextNavigation): Ditto.
(WTR::TestRunner::setPluginsEnabled): Use overridePreference.
(WTR::TestRunner::isPageBoxVisible): Use mainFrame.
(WTR::TestRunner::setValueForUser): Removed local.
(WTR::TestRunner::setAudioResult): Ditto.
(WTR::TestRunner::clearBackForwardList): Use page.
(WTR::TestRunner::makeWindowObject): Use setGlobalObjectProperty.
(WTR::TestRunner::showWebInspector): Use page.
(WTR::TestRunner::closeWebInspector): Ditto.
(WTR::TestRunner::evaluateInWebInspector): Ditto.
(WTR::TestRunner::worldIDForWorld): Use range-based for loop.
(WTR::TestRunner::evaluateScriptInIsolatedWorld): Use mainFrame.
(WTR::TestRunner::setTextDirection): Use mainFrame.
(WTR::TestRunner::didReceiveServerRedirectForProvisionalNavigation const):
Use postSynchronousPageMessageReturningBoolean.
(WTR::TestRunner::clearDidReceiveServerRedirectForProvisionalNavigation):
Use postSynchronousPageMessage.
(WTR::cacheTestRunnerCallback): Changed map to store objects instead of values.
(WTR::callTestRunnerCallback): Simplify since map has objects. Use mainFrameJSContext.
(WTR::TestRunner::clearTestRunnerCallbacks): Ditto.
(WTR::TestRunner::setAlwaysAcceptCookies): Use postSynchronousMessage.
(WTR::TestRunner::setOnlyAcceptFirstPartyCookies): Use auto and toWK.
(WTR::TestRunner::setUserStyleSheetEnabled): Use toWK.
(WTR::TestRunner::setUserStyleSheetLocation): Use page.
(WTR::TestRunner::setTabKeyCyclesThroughElements): Ditto.
(WTR::TestRunner::grantWebNotificationPermission): Ditto.
(WTR::TestRunner::denyWebNotificationPermission): Ditto.
(WTR::TestRunner::removeAllWebNotificationPermissions): Use mainFrameJSContext.
(WTR::TestRunner::simulateWebNotificationClick): Ditto.
(WTR::TestRunner::setMockGeolocationPosition): Use Optional<double> instead of bool/double
pairs, letting the IDL bindings do the work for us.
(WTR::TestRunner::setMockGeolocationPositionUnavailableError): Removed local.
(WTR::TestRunner::isDoingMediaCapture const): Use postSynchronousPageMessageReturningBoolean.
(WTR::TestRunner::setUserMediaPersistentPermissionForOrigin): Removed locals.
(WTR::TestRunner::userMediaPermissionRequestCountForOrigin const): Ditto.
(WTR::TestRunner::resetUserMediaPermissionRequestCountForOrigin): DItto.
(WTR::TestRunner::callShouldCloseOnWebView): Use mainFrame.
(WTR::TestRunner::queueLoad): Ditto.
(WTR::TestRunner::queueLoadHTMLString): Removed a local.
(WTR::TestRunner::queueLoadingScript): Ditto.
(WTR::TestRunner::queueNonLoadingScript): Ditto.
(WTR::TestRunner::setRejectsProtectionSpaceAndContinueForAuthenticationChallenges):
Use postPageMessage.
(WTR::TestRunner::setHandlesAuthenticationChallenges): Ditto.
(WTR::TestRunner::setShouldLogCanAuthenticateAgainstProtectionSpace): Ditto.
(WTR::TestRunner::setShouldLogDownloadCallbacks): Ditto.
(WTR::TestRunner::setAuthenticationUsername): Ditto.
(WTR::TestRunner::setAuthenticationPassword): Ditto.
(WTR::TestRunner::secureEventInputIsEnabled const): Use postSynchronousPageMessageReturningBoolean.
(WTR::TestRunner::setBlockAllPlugins): Use postPageMessage.
(WTR::TestRunner::setPluginSupportedMode): Ditto.
(WTR::TestRunner::failNextNewCodeBlock): Use mainFrameJSContext.
(WTR::TestRunner::numberOfDFGCompiles): Ditto.
(WTR::TestRunner::neverInlineFunction): Ditto.
(WTR::TestRunner::setShouldDecideNavigationPolicyAfterDelay): Use postPageMessage.
(WTR::TestRunner::setShouldDecideResponsePolicyAfterDelay): Ditto.
(WTR::TestRunner::setNavigationGesturesEnabled): Ditto.
(WTR::TestRunner::setIgnoresViewportScaleLimits): Ditto.
(WTR::TestRunner::setShouldDownloadUndisplayableMIMETypes): Ditto.
(WTR::TestRunner::setShouldAllowDeviceOrientationAndMotionAccess): Ditto.
(WTR::TestRunner::terminateNetworkProcess): Use postSynchronousPageMessage.
(WTR::TestRunner::terminateServiceWorkers): Ditto.
(WTR::TestRunner::setUseSeparateServiceWorkerProcess): Ditto.
(WTR::TestRunner::runUIScript): Use postPageMessage.
(WTR::TestRunner::runUIScriptImmediately): Ditto.
(WTR::TestRunner::runUIScriptCallback): Use mainFrameJSContext.
(WTR::TestRunner::setAllowedMenuActions): Use mainFrameJSContext, arrayLength,
and postPageMessage.
(WTR::TestRunner::installCustomMenuAction): Use postPageMessage.
(WTR::TestRunner::clearStatisticsDataForDomain): Use postSynchronousMessage.
(WTR::TestRunner::doesStatisticsDomainIDExistInDatabase): Use
postSynchronousPageMessageReturningBoolean.
(WTR::TestRunner::setStatisticsEnabled): Use postSynchronousMessage.
(WTR::TestRunner::isStatisticsEphemeral): Use postSynchronousPageMessageReturningBoolean.
(WTR::TestRunner::setStatisticsDebugMode): Use postMessage.
(WTR::TestRunner::setStatisticsPrevalentResourceForDebugMode): Ditto.
(WTR::TestRunner::setStatisticsLastSeen): Ditto.
(WTR::TestRunner::setStatisticsMergeStatistic): Ditto.
(WTR::TestRunner::setStatisticsExpiredStatistic): Ditto.
(WTR::TestRunner::setStatisticsPrevalentResource): Ditto.
(WTR::TestRunner::setStatisticsVeryPrevalentResource): Ditto.
(WTR::TestRunner::dumpResourceLoadStatistics): Use postSynchronousPageMessage.
(WTR::TestRunner::isStatisticsPrevalentResource): Use postSynchronousPageMessageReturningBoolean.
(WTR::TestRunner::isStatisticsVeryPrevalentResource): Ditto.
(WTR::TestRunner::isStatisticsRegisteredAsSubresourceUnder): Ditto.
(WTR::TestRunner::isStatisticsRegisteredAsSubFrameUnder): Ditto.
(WTR::TestRunner::isStatisticsRegisteredAsRedirectingTo): Ditto.
(WTR::TestRunner::setStatisticsHasHadUserInteraction): Use postMessage.
(WTR::TestRunner::isStatisticsHasHadUserInteraction): Use postSynchronousPageMessageReturningBoolean.
(WTR::TestRunner::isStatisticsOnlyInDatabaseOnce): Ditto.
(WTR::TestRunner::setStatisticsGrandfathered): Use postSynchronousMessage.
(WTR::TestRunner::setUseITPDatabase): Ditto.
(WTR::TestRunner::isStatisticsGrandfathered): Use postSynchronousPageMessageReturningBoolean.
(WTR::TestRunner::setStatisticsSubframeUnderTopFrameOrigin): Use postSynchronousMessage.
(WTR::TestRunner::setStatisticsSubresourceUnderTopFrameOrigin): Ditto.
(WTR::TestRunner::setStatisticsSubresourceUniqueRedirectTo): Ditto.
(WTR::TestRunner::setStatisticsSubresourceUniqueRedirectFrom): Ditto.
(WTR::TestRunner::setStatisticsTopFrameUniqueRedirectTo): Ditto.
(WTR::TestRunner::setStatisticsTopFrameUniqueRedirectFrom): Ditto.
(WTR::TestRunner::setStatisticsCrossSiteLoadWithLinkDecoration): Ditto.
(WTR::TestRunner::setStatisticsTimeToLiveUserInteraction): Ditto.
(WTR::TestRunner::statisticsDidRunTelemetryCallback): Use mainFrameJSContext.
(WTR::TestRunner::statisticsProcessStatisticsAndDataRecords): Use postSynchronousMessage.
(WTR::TestRunner::statisticsUpdateCookieBlocking): Use postMessage.
(WTR::TestRunner::statisticsSubmitTelemetry): Use postSynchronousMessage.
(WTR::TestRunner::setStatisticsNotifyPagesWhenDataRecordsWereScanned): Ditto.
(WTR::TestRunner::setStatisticsIsRunningTest): Ditto.
(WTR::TestRunner::setStatisticsShouldClassifyResourcesBeforeDataRecordsRemoval): Ditto.
(WTR::TestRunner::setStatisticsMinimumTimeBetweenDataRecordsRemoval): Ditto.
(WTR::TestRunner::setStatisticsGrandfatheringTime): Ditto.
(WTR::TestRunner::setStatisticsMaxStatisticsEntries): Ditto.
(WTR::TestRunner::setStatisticsPruneEntriesDownTo): Ditto.
(WTR::TestRunner::statisticsClearInMemoryAndPersistentStore): Use postMessage.
(WTR::TestRunner::statisticsClearInMemoryAndPersistentStoreModifiedSinceHours): Ditto.
(WTR::TestRunner::statisticsClearThroughWebsiteDataRemoval): Ditto.
(WTR::TestRunner::statisticsDeleteCookiesForHost): Use postSynchronousMessage.
(WTR::TestRunner::isStatisticsHasLocalStorage): Use postSynchronousPageMessageReturningBoolean.
(WTR::TestRunner::setStatisticsCacheMaxAgeCap): Use postSynchronousMessage.
(WTR::TestRunner::hasStatisticsIsolatedSession): Use postSynchronousPageMessageReturningBoolean.
(WTR::TestRunner::setStatisticsShouldDowngradeReferrer): Use postMessage.
(WTR::TestRunner::setStatisticsShouldBlockThirdPartyCookies): Ditto.
(WTR::TestRunner::setStatisticsFirstPartyWebsiteDataRemovalMode): Ditto.
(WTR::TestRunner::statisticsSetToSameSiteStrictCookies): Ditto.
(WTR::TestRunner::statisticsSetFirstPartyHostCNAMEDomain): Ditto.
(WTR::TestRunner::statisticsSetThirdPartyCNAMEDomain): Ditto.
(WTR::TestRunner::statisticsResetToConsistentState): Ditto.
(WTR::TestRunner::getAllStorageAccessEntries): Ditto.
(WTR::makeDomainsValue): Factored out. Use mainFrameJSContext.
(WTR::TestRunner::callDidReceiveAllStorageAccessEntriesCallback): Use makeDomainsValue.
(WTR::TestRunner::loadedSubresourceDomains): Use postMessage.
(WTR::TestRunner::callDidReceiveLoadedSubresourceDomainsCallback): Use makeDomainsValue.
(WTR::TestRunner::addMockMediaDevice): Use postSynchronousMessage.
(WTR::TestRunner::clearMockMediaDevices): Ditto.
(WTR::TestRunner::removeMockMediaDevice): Ditto.
(WTR::TestRunner::resetMockMediaDevices): Ditto.
(WTR::TestRunner::setMockCameraOrientation): Ditto.
(WTR::TestRunner::isMockRealtimeMediaSourceCenterEnabled): Use
postSynchronousMessageReturningBoolean.
(WTR::TestRunner::connectMockGamepad): Use postSynchronousMessage.
(WTR::TestRunner::disconnectMockGamepad): Ditto.
(WTR::TestRunner::setMockGamepadDetails): Ditto.
(WTR::TestRunner::setMockGamepadAxisValue): Ditto.
(WTR::TestRunner::setMockGamepadButtonValue): Ditto.
(WTR::TestRunner::setOpenPanelFiles): Use mainFrameJSContext, arrayLength, createJSString,
and postPageMessage.
(WTR::TestRunner::setOpenPanelFilesMediaIcon): Use mainFrameJSContext and postPageMessage.
(WTR::TestRunner::removeAllSessionCredentials): Use postMessage.
(WTR::TestRunner::clearDOMCache): Use postSynchronousMessage.
(WTR::TestRunner::clearDOMCaches): Ditto.
(WTR::TestRunner::hasDOMCache): Use postSynchronousPageMessageReturningBoolean.
(WTR::TestRunner::domCacheSize): Use postSynchronousPageMessageReturningUInt64.
(WTR::TestRunner::setAllowStorageQuotaIncrease): Use postSynchronousPageMessage.
(WTR::TestRunner::getApplicationManifestThen): Use postMessage.
(WTR::TestRunner::injectUserScript): Use postSynchronousMessage.
(WTR::TestRunner::sendDisplayConfigurationChangedMessageForTesting): Ditto.
(WTR::TestRunner::setServiceWorkerFetchTimeout): Ditto.
(WTR::TestRunner::addTestKeyToKeychain): Ditto.
(WTR::TestRunner::cleanUpKeychain): Ditto.
(WTR::TestRunner::keyExistsInKeychain): Use postSynchronousPageMessageReturningBoolean.
(WTR::TestRunner::serverTrustEvaluationCallbackCallsCount): Use
postSynchronousMessageReturningUInt64.
(WTR::TestRunner::setShouldDismissJavaScriptAlertsAsynchronously): Use
postSynchronousMessage.
(WTR::TestRunner::abortModal): Ditto.
(WTR::TestRunner::dumpAdClickAttribution): Use postSynchronousPageMessage.
(WTR::TestRunner::clearAdClickAttribution): Ditto.
(WTR::TestRunner::clearAdClickAttributionsThroughWebsiteDataRemoval): Ditto.
(WTR::TestRunner::setAdClickAttributionOverrideTimerForTesting): Ditto.
(WTR::TestRunner::setAdClickAttributionConversionURLForTesting): Ditto.
(WTR::TestRunner::markAdClickAttributionsAsExpiredForTesting): Ditto.
(WTR::TestRunner::setOffscreenCanvasEnabled): Use overridePreference.
(WTR::TestRunner::hasAppBoundSession): Use postSynchronousPageMessageReturningBoolean.
(WTR::TestRunner::clearAppBoundSession): Use postSynchronousMessage.
(WTR::TestRunner::setAppBoundDomains): Use mainFrameJSContext, arrayLength, createJSString,
and toWK.
(WTR::TestRunner::postMessage): Added.

  • WebKitTestRunner/InjectedBundle/TestRunner.h: Updated for the above. Also changed

overridePreference ot a static member function.

  • WebKitTestRunner/InjectedBundle/TextInputController.cpp:

(WTR::TextInputController::TextInputController): Deleted.
(WTR::TextInputController::~TextInputController): Deleted.
(WTR::TextInputController::makeWindowObject): Use setGlobalObjectProperty.
(WTR::arrayLength): Deleted. Use the one from JSBasics.h now.
(WTR::createCompositionHighlightData): Use setValue.

  • WebKitTestRunner/InjectedBundle/TextInputController.h: Updated for the above.
  • WebKitTestRunner/InjectedBundle/ios/AccessibilityControllerIOS.mm:

(WTR::AccessibilityController::platformName): Use createJSString.

  • WebKitTestRunner/InjectedBundle/ios/AccessibilityUIElementIOS.mm:

(WTR::createEmptyJSString): Deleted. Use createJSString from JSBasics.h now.
(WTR::AccessibilityUIElement::attributesOfLinkedUIElements): Use createJSString.
(WTR::AccessibilityUIElement::attributesOfDocumentLinks): Ditto.
(WTR::AccessibilityUIElement::attributesOfChildren): Ditto.
(WTR::AccessibilityUIElement::allAttributes): Ditto.
(WTR::AccessibilityUIElement::stringDescriptionOfAttributeValue): Ditto.
(WTR::AccessibilityUIElement::stringAttributeValue): Ditto.
(WTR::AccessibilityUIElement::parameterizedAttributeNames): Ditto.
(WTR::AccessibilityUIElement::role): Ditto.
(WTR::AccessibilityUIElement::subrole): Ditto.
(WTR::AccessibilityUIElement::computedRoleString): Ditto.
(WTR::AccessibilityUIElement::title): Ditto.
(WTR::AccessibilityUIElement::orientation const): Ditto.
(WTR::AccessibilityUIElement::language): Ditto.
(WTR::AccessibilityUIElement::valueDescription): Ditto.
(WTR::AccessibilityUIElement::isFocused const): Ditto.
(WTR::AccessibilityUIElement::isSelectedOptionActive const): Ditto.
(WTR::AccessibilityUIElement::isIndeterminate const): Ditto.
(WTR::AccessibilityUIElement::ariaDropEffects const): Ditto.
(WTR::AccessibilityUIElement::boundsForRange): Ditto.
(WTR::AccessibilityUIElement::attributesOfColumnHeaders): Ditto.
(WTR::AccessibilityUIElement::attributesOfRowHeaders): Ditto.
(WTR::AccessibilityUIElement::attributesOfColumns): Ditto.
(WTR::AccessibilityUIElement::attributesOfRows): Ditto.
(WTR::AccessibilityUIElement::attributesOfVisibleCells): Ditto.
(WTR::AccessibilityUIElement::attributesOfHeader): Ditto.
(WTR::AccessibilityUIElement::clearSelectedChildren const): Ditto.
(WTR::AccessibilityUIElement::accessibilityValue const): Ditto.
(WTR::AccessibilityUIElement::documentEncoding): Ditto.
(WTR::AccessibilityUIElement::documentURI): Ditto.
(WTR::AccessibilityUIElement::isSelectable const): Ditto.
(WTR::AccessibilityUIElement::isMultiSelectable const): Ditto.
(WTR::AccessibilityUIElement::isVisible const): Ditto.
(WTR::AccessibilityUIElement::isOffScreen const): Ditto.
(WTR::AccessibilityUIElement::isCollapsed const): Ditto.
(WTR::AccessibilityUIElement::isSingleLine const): Ditto.
(WTR::AccessibilityUIElement::isMultiLine const): Ditto.
(WTR::AccessibilityUIElement::takeFocus): Ditto.
(WTR::AccessibilityUIElement::takeSelection): Ditto.
(WTR::AccessibilityUIElement::addSelection): Ditto.
(WTR::AccessibilityUIElement::removeSelection): Ditto.
(WTR::AccessibilityUIElement::stringForTextMarkerRange): Ditto.

  • WebKitTestRunner/InjectedBundle/ios/EventSenderProxyIOS.mm:

(WTR::EventSenderProxy::EventSenderProxy): Initialize in the class definition.
(WTR::EventSenderProxy::~EventSenderProxy): Deleted.

  • WebKitTestRunner/InjectedBundle/mac/AccessibilityCommonMac.mm:

(WTR::makeJSArray): Return a JSObjectRef. Renamed from makeArrayRefForArray.
(WTR::makeJSObject): Return a JSObjectRef. Renamed from makeObjectRefForDictionary.
(WTR::makeValueRefForValue): Updated for the above.
(WTR::searchPredicateParameterizedAttributeForSearchCriteria): Use toWTFString
and arrayLength.

  • WebKitTestRunner/InjectedBundle/mac/AccessibilityControllerMac.mm:

(WTR::AccessibilityController::platformName): Use createJSString.

  • WebKitTestRunner/InjectedBundle/mac/AccessibilityUIElementMac.mm:

(WTR::createEmptyJSString): Deleted. Use createJSString from JSBasics.h instead.
(WTR::convertVectorToObjectArray): Deleted.
(WTR::makeJSArray): Renamed from convertVectorToObjectArray.
(WTR::selectTextParameterizedAttributeForCriteria): Use toWTFString and arrayLength.
(WTR::searchTextParameterizedAttributeForCriteria): Ditto.
(WTR::AccessibilityUIElement::rowHeaders const): Use makeJSArray.
(WTR::AccessibilityUIElement::columnHeaders const): Ditto.
(WTR::AccessibilityUIElement::uiElementArrayAttributeValue const): Ditto.
(WTR::AccessibilityUIElement::searchTextWithCriteria): Ditto.
(WTR::AccessibilityUIElement::accessibilityValue const): Use createJSString.
(WTR::AccessibilityUIElement::documentEncoding): Ditto.
(WTR::AccessibilityUIElement::documentURI): Ditto.

  • WebKitTestRunner/InjectedBundle/mac/TestRunnerMac.mm:

(WTR::TestRunner::inspectorTestStubURL): Remove locals.

  • WebKitTestRunner/StringFunctions.h: Added toWKString overload that converts from

a JSValueRef, JSStringRef, or JSRetainPtr<JSStringRef> and toWK overload that converts
from a const char*.

  • WebKitTestRunner/TestController.cpp:

(WTR::TestController::initialize): Use toWK.
(WTR::TestController::generateContextConfiguration const): Ditto.
(WTR::TestController::resetPreferencesToConsistentValues): Ditto.
(WTR::TestController::resetStateToConsistentValues): Use setValue.
(WTR::TestController::updateLiveDocumentsAfterTest): Ditto.
(WTR::TestController::checkForWorldLeaks): Use toWK.
(WTR::contentExtensionJSONPath): Use toSTD.
(WTR::TestController::configureContentExtensionForTest): Use toWK.
(WTR::TestController::didReceiveKeyDownMessageFromInjectedBundle): Use stringValue
and uint64Value.
(WTR::TestController::didReceiveLiveDocumentsList): Use dictionaryValue and
uint64Value.
(WTR::TestController::didReceiveMessageFromInjectedBundle): Use dictionaryValue,
stringValue, uint64Value, doubleValue, booleanValue.
(WTR::TestController::didReceiveSynchronousMessageFromInjectedBundle): Ditto.
(WTR::TestController::setBlockAllPlugins): Use toWK.
(WTR::TestController::setPluginSupportedMode): Ditto.
(WTR::TestController::canAuthenticateAgainstProtectionSpace): Use auto.
(WTR::TestController::didFinishNavigation): Removed local.
(WTR::TestController::didReceiveAuthenticationChallenge): Use auto and toWTFString
instead of toSTD.
(WTR::TestController::setMockGeolocationPosition): Use Optional instead of pairs
of bool and double.
(WTR::TestController::handleCheckOfUserMediaPermissionForOrigin): Use toWK.
(WTR::TestController::decidePolicyForUserMediaPermissionRequestIfPossible): Ditto.
(WTR::TestController::updateBundleIdentifierInNetworkProcess): Use toWK.

  • WebKitTestRunner/TestController.h: Updated for the above.
  • WebKitTestRunner/TestInvocation.cpp:

(WTR::postPageMessage): Added.
(WTR::TestInvocation::TestIncovation): Use toWTFString.
(WTR::TestInvocation::createTestSettingsDictionary): Use auto and setValue.
(WTR::TestInvocation::invoke): Use postPageMessage and setValue.
(WTR::TestInvocation::didReceiveMessageFromInjectedBundle): Use postPageMessage
and stringValue.
(WTR::TestInvocation::didReceiveSynchronousMessageFromInjectedBundle): Use
dictionaryValue, booleanValue, value, stringValue, doubleValue, and
optionalDoubleValue.
(WTR::TestInvocation::uiScriptDidComplete): Use postPageMessage and setValue.
(WTR::TestInvocation::didBeginSwipe): Use postPageMessage.
(WTR::TestInvocation::willEndSwipe): Ditto.
(WTR::TestInvocation::didEndSwipe): Ditto.
(WTR::TestInvocation::didRemoveSwipeSnapshot): Ditto.
(WTR::TestInvocation::notifyDownloadDone): Ditto.
(WTR::TestInvocation::didClearStatisticsInMemoryAndPersistentStore): Ditto.
(WTR::TestInvocation::didClearStatisticsThroughWebsiteDataRemoval): Ditto.
(WTR::TestInvocation::didSetShouldDowngradeReferrer): Ditto.
(WTR::TestInvocation::didSetShouldBlockThirdPartyCookies): Ditto.
(WTR::TestInvocation::didSetFirstPartyWebsiteDataRemovalMode): Ditto.
(WTR::TestInvocation::didSetToSameSiteStrictCookies): Ditto.
(WTR::TestInvocation::didSetFirstPartyHostCNAMEDomain): Ditto.
(WTR::TestInvocation::didSetThirdPartyCNAMEDomain): Ditto.
(WTR::TestInvocation::didResetStatisticsToConsistentState): Ditto.
(WTR::TestInvocation::didSetBlockCookiesForHost): Ditto.
(WTR::TestInvocation::didSetStatisticsDebugMode): Ditto.
(WTR::TestInvocation::didSetPrevalentResourceForDebugMode): Ditto.
(WTR::TestInvocation::didSetLastSeen): Ditto.
(WTR::TestInvocation::didMergeStatistic): Ditto.
(WTR::TestInvocation::didSetExpiredStatistic): Ditto.
(WTR::TestInvocation::didSetPrevalentResource): Ditto.
(WTR::TestInvocation::didSetVeryPrevalentResource): Ditto.
(WTR::TestInvocation::didSetHasHadUserInteraction): Ditto.
(WTR::TestInvocation::didReceiveAllStorageAccessEntries): Ditto.
(WTR::TestInvocation::didReceiveLoadedSubresourceDomains): Ditto.
(WTR::TestInvocation::didRemoveAllSessionCredentials): Ditto.
(WTR::TestInvocation::didSetAppBoundDomains): Ditto.
(WTR::TestInvocation::performCustomMenuAction): Ditto.

  • WebKitTestRunner/WebKitTestRunner.xcodeproj/project.pbxproj:

Added JSBasics.h to DictionaryFunctions.h to appropriate targets.

  • WebKitTestRunner/WorkQueueManager.cpp:

(WTR::ScriptItem::ScriptItem): Use toWK.
(WTR::WorkQueueManager::queueLoadHTMLString): Ditto.

  • WebKitTestRunner/cocoa/UIScriptControllerCocoa.h: Make most functions private.
  • WebKitTestRunner/cocoa/UIScriptControllerCocoa.mm:

(WTR::UIScriptControllerCocoa::overridePreference): Use toWTFString.

  • WebKitTestRunner/ios/UIScriptControllerIOS.h: Marked the class final and made

most functions private.

  • WebKitTestRunner/ios/UIScriptControllerIOS.mm:

(WTR::arrayLength): Deleted. Use the one in JSBasics.h.
(WTR::parseModifierArray): Use the new toWTFString overload.
(WTR::UIScriptControllerIOS::typeCharacterUsingHardwareKeyboard): Ditto.

  • WebKitTestRunner/mac/EventSenderProxy.mm:

(WTR::EventSenderProxy::EventSenderProxy): Initialize in the class definition.
(WTR::EventSenderProxy::keyDown): Use toWTFString.

  • WebKitTestRunner/mac/UIScriptControllerMac.h: Marked the class final and made

most functions private.

2:22 PM Changeset in webkit [267760] by Aditya Keerthi
  • 9 edits in trunk/Source

[macCatalyst] Focus rings are not painted
https://bugs.webkit.org/show_bug.cgi?id=217073
<rdar://problem/46794111>

Reviewed by Darin Adler.

Source/WebCore:

The logic which paints focus rings on Cocoa platforms is incorrectly
guarded by the ENABLE(FULL_KEYBOARD_ACCESS) flag. This flag is only
enabled on macOS and iOS, resulting in an empty implementation for
GraphicsContext::drawFocusRing on macCatalyst.

To fix, remove the incorrect usage of ENABLE(FULL_KEYBOARD_ACCESS).

  • platform/graphics/cocoa/GraphicsContextCocoa.mm:

(WebCore::GraphicsContext::drawFocusRing):

  • rendering/RenderImage.cpp:

(WebCore::RenderImage::paintAreaElementFocusRing):

  • rendering/RenderThemeIOS.h:
  • rendering/RenderThemeIOS.mm:

(WebCore::RenderThemeIOS::platformFocusRingColor const):

Source/WebCore/PAL:

  • pal/spi/ios/UIKitSPI.h:

Ensure needed interfaces are available on all IOS_FAMILY platforms.

Source/WebKit:

  • UIProcess/Cocoa/WebProcessPoolCocoa.mm:

(WebKit::WebProcessPool::platformInitializeWebProcess):

Ensure that a default focus ring color is specified on macCatalyst.

1:51 PM Changeset in webkit [267759] by Alan Bujtas
  • 2 edits in trunk/Source/WebCore

[LFC][IFC] Make sure <wbr> gets an inline box too.
https://bugs.webkit.org/show_bug.cgi?id=217100

Reviewed by Antti Koivisto.

<wbr> behaves similarly to <br> when it comes to line breaking. They are not committed to LineBreaker but instead we post-process them.
In this patch the <wbr> content is added to the LineCandidate list as a special item (same as with <br>) and later submitted to the current line as a zero width run.
This behavior matches the spec (and FF) but does not match current trunk/rendering.

  • layout/inlineformatting/InlineLineBuilder.cpp:

(WebCore::Layout::LineCandidate::InlineContent::trailingWordBreakOpportunity const):
(WebCore::Layout::LineCandidate::InlineContent::appendTrailingLineBreak):
(WebCore::Layout::LineCandidate::InlineContent::appendtrailingWordBreakOpportunity):
(WebCore::Layout::LineCandidate::InlineContent::appendInlineItem):
(WebCore::Layout::LineCandidate::InlineContent::reset):
(WebCore::Layout::LineBuilder::placeInlineContent):
(WebCore::Layout::LineBuilder::nextContentForLine):
(WebCore::Layout::LineCandidate::InlineContent::appendLineBreak): Deleted.
(WebCore::Layout::LineCandidate::InlineContent::setTrailingLineBreak): Deleted.

1:40 PM Changeset in webkit [267758] by weinig@apple.com
  • 44 edits
    2 deletes in trunk

Remove IndexedDBWorkers runtime setting now since it is always true
https://bugs.webkit.org/show_bug.cgi?id=217090

Reviewed by Darin Adler.

Source/WebCore:

Removes IndexedDBWorkers runtime setting, allowing us to remove a bunch
of special cases for WorkerGlobalScope constructors. Now instead of explicitly
adding the IndexedDB constructors to WorkerGlobalScope, we use the Exposed
mechanism to have the generators do this for us. While going through each of
the IndexedDB IDLs, I also re-alligned with the current spec, adding comments
for missing functionality as necessary.

  • Modules/indexeddb/IDBCursor.idl:
  • Modules/indexeddb/IDBCursorWithValue.idl:
  • Modules/indexeddb/IDBDatabase.idl:
  • Modules/indexeddb/IDBFactory.idl:
  • Modules/indexeddb/IDBIndex.idl:
  • Modules/indexeddb/IDBKeyRange.idl:
  • Modules/indexeddb/IDBObjectStore.idl:
  • Modules/indexeddb/IDBOpenDBRequest.idl:
  • Modules/indexeddb/IDBRequest.idl:
  • Modules/indexeddb/IDBTransaction.idl:
  • Modules/indexeddb/IDBVersionChangeEvent.idl:
  • Modules/indexeddb/WorkerGlobalScope+IndexedDatabase.idl:
  • page/RuntimeEnabledFeatures.h:

(WebCore::RuntimeEnabledFeatures::setIndexedDBWorkersEnabled): Deleted.
(WebCore::RuntimeEnabledFeatures::indexedDBWorkersEnabled const): Deleted.

  • testing/InternalSettings.cpp:

(WebCore::InternalSettings::Backup::Backup):
(WebCore::InternalSettings::Backup::restoreTo):
(WebCore::InternalSettings::setIndexedDBWorkersEnabled): Deleted.

  • testing/InternalSettings.h:
  • testing/InternalSettings.idl:
  • workers/WorkerGlobalScope.idl:

LayoutTests:

Removes calls to setIndexedDBWorkersEnabled, which hasn't been required in quite some time,
and removes workers-disabled.html test, as it is no longer possible nor desirable to do this.

  • http/tests/security/cross-origin-worker-indexeddb-allowed.html:
  • http/tests/security/cross-origin-worker-indexeddb.html:
  • http/tests/security/resources/cross-origin-iframe-for-worker-indexeddb.html:
  • http/tests/security/resources/document-for-cross-origin-worker-indexeddb.html:
  • platform/wincairo/TestExpectations:
  • storage/indexeddb/basics-workers.html:
  • storage/indexeddb/cursor-advance-workers.html:
  • storage/indexeddb/deletedatabase-delayed-by-open-and-versionchange-workers.html:
  • storage/indexeddb/dont-commit-on-blocked-private.html:
  • storage/indexeddb/dont-commit-on-blocked.html:
  • storage/indexeddb/index-basics-workers.html:
  • storage/indexeddb/modern/workers-disabled-expected.txt: Removed.
  • storage/indexeddb/modern/workers-disabled.html: Removed.
  • storage/indexeddb/objectstore-basics-workers.html:
  • storage/indexeddb/open-twice-workers.html:
  • storage/indexeddb/pending-activity-workers.html:
  • storage/indexeddb/pending-version-change-on-exit-private.html:
  • storage/indexeddb/pending-version-change-on-exit.html:
  • storage/indexeddb/pending-version-change-stuck-private.html:
  • storage/indexeddb/pending-version-change-stuck-works-with-terminate-private.html:
  • storage/indexeddb/pending-version-change-stuck-works-with-terminate.html:
  • storage/indexeddb/pending-version-change-stuck.html:
  • storage/indexeddb/transaction-complete-workers-private.html:
  • storage/indexeddb/transaction-complete-workers.html:
  • storage/indexeddb/unprefix-workers.html:
1:13 PM Changeset in webkit [267757] by Jonathan Bedard
  • 2 edits in trunk/Tools

[tvOS] [watchOS] Add support in libTestWTFAlwaysMissing-iOS-v2.tbd
https://bugs.webkit.org/show_bug.cgi?id=217068
<rdar://problem/69724742>

Rubber-stamped by Aakash Jain.

  • TestWebKitAPI/Tests/WTF/darwin/libTestWTFAlwaysMissing-iOS-v2.tbd: Add watchOS and tvOS.
12:16 PM Changeset in webkit [267756] by achristensen@apple.com
  • 3 edits in trunk/Source/WebKitLegacy/mac

Unreviewed, reverting r267397.

SPI is still used <rdar://problem/69749992>

Reverted changeset:

"Remove deprecated script and stylesheet injection SPI,
replaced with more inclusively-named SPI"
https://bugs.webkit.org/show_bug.cgi?id=214936
https://trac.webkit.org/changeset/267397

11:24 AM Changeset in webkit [267755] by Ryan Haddad
  • 2 edits in trunk/Tools

URL for Apple-iOS-14-Simulator-Debug-WK2-Tests is broken on the dashboard
https://bugs.webkit.org/show_bug.cgi?id=217094

Reviewed by Aakash Jain.

  • BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Scripts/WebKitBuildbot.js:

(WebKitBuildbot): Remove a space in the queue name.

11:12 AM Changeset in webkit [267754] by ysuzuki@apple.com
  • 24 edits in trunk/Source/JavaScriptCore

[JSC] Annotate JIT operation functions called from B3 etc.
https://bugs.webkit.org/show_bug.cgi?id=217082

Reviewed by Saam Barati.

There are many math functions that are called from B3 etc. We should make them JIT operations to complete JIT-caging.

  • b3/B3LowerMacros.cpp:
  • b3/B3LowerMacrosAfterOptimizations.cpp:
  • b3/B3MathExtras.cpp:
  • b3/B3ReduceLoopStrength.cpp:

(JSC::B3::JSC_DEFINE_JIT_OPERATION):
(JSC::B3::ReduceLoopStrength::reduceByteCopyLoopsToMemcpy):
(JSC::B3::fastForwardCopy32): Deleted.

  • b3/B3ReduceLoopStrength.h:

(JSC::B3::fastForwardCopy32):

  • b3/B3ReduceStrength.cpp:
  • dfg/DFGAbstractInterpreterInlines.h:

(JSC::DFG::AbstractInterpreter<AbstractStateType>::executeEffects):

  • dfg/DFGArithMode.cpp:

(JSC::DFG::arithUnaryFunction):
(JSC::DFG::arithUnaryOperation):
(WTF::printInternal):

  • dfg/DFGArithMode.h:
  • dfg/DFGByteCodeParser.cpp:

(JSC::DFG::ByteCodeParser::handleIntrinsicCall):

  • dfg/DFGOperations.cpp:
  • dfg/DFGOperations.h:
  • dfg/DFGSpeculativeJIT.cpp:

(JSC::DFG::SpeculativeJIT::compileArithMod):
(JSC::DFG::SpeculativeJIT::compileArithRounding):

  • ftl/FTLLowerDFGToB3.cpp:

(JSC::FTL::DFG::LowerDFGToB3::compileArithPow):

  • ftl/FTLOutput.cpp:

(JSC::FTL::Output::doubleTrunc):
(JSC::FTL::Output::doubleUnary):
(JSC::FTL::Output::doubleStdPow):
(JSC::FTL::Output::doublePow): Deleted.

  • ftl/FTLOutput.h:
  • jit/SpecializedThunkJIT.h:

(JSC::SpecializedThunkJIT::callDoubleToDouble):

  • jit/ThunkGenerators.cpp:
  • runtime/MathCommon.cpp:

(JSC::Math::log1pDoubleImpl):
(JSC::Math::log1pFloatImpl):
(JSC::Math::log1p):
(JSC::Math::JSC_DEFINE_JIT_OPERATION):
(JSC::Math::roundDoubleImpl):

  • runtime/MathCommon.h:
  • runtime/MathObject.cpp:

(JSC::JSC_DEFINE_HOST_FUNCTION):

  • runtime/Operations.h:

(JSC::jsRemainder):

11:00 AM Changeset in webkit [267753] by sihui_liu@apple.com
  • 8 edits
    3 adds in trunk

IndexedDB Index Corruption after upgrade from iOS 13 to iOS 14
https://bugs.webkit.org/show_bug.cgi?id=216962
<rdar://problem/69587004>

Reviewed by Brady Eidson.

Source/WebCore:

There is an implementation error in r255318, which updated index ID in database IndexInfo and IndexRecords
tables: it made changes to original table while iterating records of it. This means modified records can
be modified again, which leads to that two indices have the same index ID. As index ID is supposed to be unique,
some indices and index records cannot be populated and clients will find some indices are missing.

To fix this, we need to change the implementation of ID update and deal with already corrupted tables. For index
ID update, now we create a temporary table for storing the updated records, and replace the original table with
temporary table at the end of iteration. For the corruption issue, we check if IndexInfo table has duplicate
index IDs. If it has, we try recovering IndexInfo and IndexRecords table by removing records with duplicate
index IDs, assigning new IDs to duplicate indices, and adding records with updated index IDs.

API tests: IndexedDB.IndexUpgradeToV2WithMultipleIndices

IndexedDB.IndexUpgradeToV2WithMultipleIndicesHaveSameID

  • Modules/indexeddb/server/SQLiteIDBBackingStore.cpp:

(WebCore::IDBServer::indexInfoTableSchema):
(WebCore::IDBServer::SQLiteIDBBackingStore::createAndPopulateInitialDatabaseInfo):
(WebCore::IDBServer::SQLiteIDBBackingStore::migrateIndexInfoTableForIDUpdate):
(WebCore::IDBServer::SQLiteIDBBackingStore::migrateIndexRecordsTableForIDUpdate):
(WebCore::IDBServer::SQLiteIDBBackingStore::removeExistingIndex):
(WebCore::IDBServer::SQLiteIDBBackingStore::addExistingIndex):
(WebCore::IDBServer::SQLiteIDBBackingStore::handleDuplicateIndexIDs):
(WebCore::IDBServer::SQLiteIDBBackingStore::extractExistingDatabaseInfo):
(WebCore::IDBServer::SQLiteIDBBackingStore::createIndex):
(WebCore::IDBServer::SQLiteIDBBackingStore::updateOneIndexForAddRecord):

  • Modules/indexeddb/server/SQLiteIDBBackingStore.h:
  • Modules/indexeddb/shared/IDBIndexInfo.h:

(WebCore::IDBIndexInfo::setIdentifier):

  • Modules/indexeddb/shared/IDBObjectStoreInfo.cpp:

(WebCore::IDBObjectStoreInfo::addExistingIndex):

Tools:

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/WebKitCocoa/IDBIndexUpgradeToV2.mm:

(runMultipleIndicesTestWithDatabase):
(TEST):

  • TestWebKitAPI/Tests/WebKitCocoa/IDBIndexUpgradeToV2WithMultipleIndices.html: Added.
  • TestWebKitAPI/Tests/WebKitCocoa/IndexUpgradeWithMultipleIndices.sqlite3: Added.
  • TestWebKitAPI/Tests/WebKitCocoa/IndexUpgradeWithMultipleIndicesHaveSameID.sqlite3: Added.
10:55 AM Changeset in webkit [267752] by Alan Coon
  • 1 copy in tags/Safari-611.1.1.2

Tag Safari-611.1.1.2.

10:51 AM Changeset in webkit [267751] by Alan Coon
  • 8 edits in branches/safari-611.1.1-branch/Source

Versioning.

WebKit-7611.1.1.2

10:38 AM Changeset in webkit [267750] by achristensen@apple.com
  • 73 edits
    251 deletes in trunk

Remove plist-based ResourceLoadStatistics storage, which has been replaced by database-based storage
https://bugs.webkit.org/show_bug.cgi?id=217063

Reviewed by John Wilander.

Source/WebCore:

ResourceLoadStatistics was initially implemented using plists to store the persistent data on disk.
This caused some performance issues, so a sqlite database backend was implemented and transitioned to.
Now that the transition is complete, let's remove the old plist backend.

  • page/RuntimeEnabledFeatures.h:

(WebCore::RuntimeEnabledFeatures::setIsITPDatabaseEnabled): Deleted.
(WebCore::RuntimeEnabledFeatures::isITPDatabaseEnabled const): Deleted.

Source/WebKit:

  • NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.h:
  • NetworkProcess/Classifier/ResourceLoadStatisticsMemoryStore.cpp:

(WebKit::ResourceLoadStatisticsMemoryStore::setPersistentStorage): Deleted.
(WebKit::ResourceLoadStatisticsMemoryStore::syncStorageIfNeeded): Deleted.
(WebKit::ResourceLoadStatisticsMemoryStore::syncStorageImmediately): Deleted.

  • NetworkProcess/Classifier/ResourceLoadStatisticsMemoryStore.h:
  • NetworkProcess/Classifier/ResourceLoadStatisticsPersistentStorage.cpp: Removed.
  • NetworkProcess/Classifier/ResourceLoadStatisticsPersistentStorage.h: Removed.
  • NetworkProcess/Classifier/ResourceLoadStatisticsStore.cpp:

(WebKit::ResourceLoadStatisticsStore::processStatisticsAndDataRecords):
(WebKit::ResourceLoadStatisticsStore::grandfatherExistingWebsiteData):

  • NetworkProcess/Classifier/ResourceLoadStatisticsStore.h:
  • NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp:

(WebKit::WebResourceLoadStatisticsStore::WebResourceLoadStatisticsStore):
(WebKit::WebResourceLoadStatisticsStore::~WebResourceLoadStatisticsStore):
(WebKit::WebResourceLoadStatisticsStore::didDestroyNetworkSession):
(WebKit::WebResourceLoadStatisticsStore::populateMemoryStoreFromDisk):
(WebKit::WebResourceLoadStatisticsStore::scheduleClearInMemoryAndPersistent):
(WebKit::WebResourceLoadStatisticsStore::flushAndDestroyPersistentStore): Deleted.

  • NetworkProcess/Classifier/WebResourceLoadStatisticsStore.h:
  • NetworkProcess/NetworkProcess.cpp:

(WebKit::NetworkProcess::didClose):
(WebKit::NetworkProcess::initializeNetworkProcess):
(WebKit::NetworkProcess::setUseITPDatabase): Deleted.

  • NetworkProcess/NetworkProcess.h:

(WebKit::NetworkProcess::isITPDatabaseEnabled const): Deleted.

  • NetworkProcess/NetworkProcess.messages.in:
  • NetworkProcess/NetworkProcessCreationParameters.cpp:

(WebKit::NetworkProcessCreationParameters::encode const):
(WebKit::NetworkProcessCreationParameters::decode):

  • NetworkProcess/NetworkProcessCreationParameters.h:
  • NetworkProcess/NetworkSession.cpp:

(WebKit::NetworkSession::destroyResourceLoadStatistics):
(WebKit::NetworkSession::flushAndDestroyPersistentStore): Deleted.

  • NetworkProcess/NetworkSession.h:
  • Shared/WebPreferencesInternal.yaml:
  • Sources.txt:
  • SourcesCocoa.txt:
  • UIProcess/API/C/WKPreferences.cpp:

(WKPreferencesSetIsITPDatabaseEnabled): Deleted.
(WKPreferencesGetIsITPDatabaseEnabled): Deleted.

  • UIProcess/API/C/WKPreferencesRef.h:
  • UIProcess/API/C/WKWebsiteDataStoreRef.cpp:

(WKWebsiteDataStoreStatisticsResetToConsistentState):
(WKWebsiteDataStoreSetUseITPDatabase): Deleted.

  • UIProcess/API/C/WKWebsiteDataStoreRef.h:
  • UIProcess/API/Cocoa/WKPreferences.mm:

(-[WKPreferences _isITPDatabaseEnabled]): Deleted.

  • UIProcess/API/Cocoa/WKPreferencesPrivate.h:
  • UIProcess/API/Cocoa/WKWebsiteDataStore.mm:

(-[WKWebsiteDataStore _setUseITPDatabase:completionHandler:]): Deleted.

  • UIProcess/API/Cocoa/WKWebsiteDataStorePrivate.h:
  • UIProcess/Cocoa/WebProcessPoolCocoa.mm:

(WebKit::WebProcessPool::platformInitializeNetworkProcess):

  • UIProcess/Network/NetworkProcessProxy.cpp:

(WebKit::NetworkProcessProxy::setUseITPDatabase): Deleted.

  • UIProcess/Network/NetworkProcessProxy.h:
  • UIProcess/WebsiteData/WebsiteDataStore.cpp:

(WebKit::WebsiteDataStore::setUseITPDatabase): Deleted.

  • UIProcess/WebsiteData/WebsiteDataStore.h:
  • UIProcess/ios/ResourceLoadStatisticsPersistentStorageIOS.mm: Removed.
  • WebKit.xcodeproj/project.pbxproj:

Source/WTF:

  • Scripts/Preferences/WebPreferencesInternal.yaml:

Tools:

These three tests API tests have been removed:

ResourceLoadStatistics.ChildProcessesNotLaunched
ResourceLoadStatistics.GrandfatherCallback
ResourceLoadStatistics.ShouldNotGrandfatherOnStartup

Each of those tests has a corresponding test that ends with "Database" that tests the database backend,
so the only test coverage loss was of the code that was removed.

  • TestWebKitAPI/Tests/WebKitCocoa/ResourceLoadStatistics.mm:

(ensureITPFileIsCreated):
(TEST):
(isITPDatabaseEnabled): Deleted.

  • WebKitTestRunner/InjectedBundle/Bindings/TestRunner.idl:
  • WebKitTestRunner/InjectedBundle/TestRunner.cpp:

(WTR::TestRunner::setUseITPDatabase): Deleted.

  • WebKitTestRunner/InjectedBundle/TestRunner.h:
  • WebKitTestRunner/TestController.cpp:

(WTR::TestController::setUseITPDatabase): Deleted.

  • WebKitTestRunner/TestController.h:
  • WebKitTestRunner/TestInvocation.cpp:

(WTR::TestInvocation::didReceiveSynchronousMessageFromInjectedBundle):

LayoutTests:

  • http/tests/resourceLoadStatistics/add-blocking-to-redirect-database-expected.txt: Removed.
  • http/tests/resourceLoadStatistics/add-blocking-to-redirect-database.html: Removed.
  • http/tests/resourceLoadStatistics/aggregate-sorted-data-no-storage-access-database-expected.txt: Removed.
  • http/tests/resourceLoadStatistics/aggregate-sorted-data-no-storage-access-database.html: Removed.
  • http/tests/resourceLoadStatistics/aggregate-sorted-data-no-storage-access-expected.txt:
  • http/tests/resourceLoadStatistics/blocking-in-web-worker-script-import-database-expected.txt: Removed.
  • http/tests/resourceLoadStatistics/blocking-in-web-worker-script-import-database.html: Removed.
  • http/tests/resourceLoadStatistics/cap-cache-max-age-for-prevalent-resource-database-expected.txt: Removed.
  • http/tests/resourceLoadStatistics/cap-cache-max-age-for-prevalent-resource-database.html: Removed.
  • http/tests/resourceLoadStatistics/capped-lifetime-for-cookie-set-in-js-database-expected.txt: Removed.
  • http/tests/resourceLoadStatistics/capped-lifetime-for-cookie-set-in-js-database.html: Removed.
  • http/tests/resourceLoadStatistics/capped-lifetime-for-cookie-set-in-js-with-link-decoration-same-site-database-expected.txt: Removed.
  • http/tests/resourceLoadStatistics/capped-lifetime-for-cookie-set-in-js-with-link-decoration-same-site-database.html: Removed.
  • http/tests/resourceLoadStatistics/capped-lifetime-for-cookie-set-in-js-with-link-fragment-from-prevalent-resource-database-expected.txt: Removed.
  • http/tests/resourceLoadStatistics/capped-lifetime-for-cookie-set-in-js-with-link-fragment-from-prevalent-resource-database.html: Removed.
  • http/tests/resourceLoadStatistics/capped-lifetime-for-cookie-set-in-js-with-link-query-and-fragment-from-prevalent-resource-database-expected.txt: Removed.
  • http/tests/resourceLoadStatistics/capped-lifetime-for-cookie-set-in-js-with-link-query-and-fragment-from-prevalent-resource-database.html: Removed.
  • http/tests/resourceLoadStatistics/capped-lifetime-for-cookie-set-in-js-with-link-query-from-prevalent-resource-database-expected.txt: Removed.
  • http/tests/resourceLoadStatistics/capped-lifetime-for-cookie-set-in-js-with-link-query-from-prevalent-resource-database.html: Removed.
  • http/tests/resourceLoadStatistics/capped-lifetime-for-cookie-set-in-js-without-link-decoration-from-prevalent-resource-database-expected.txt: Removed.
  • http/tests/resourceLoadStatistics/capped-lifetime-for-cookie-set-in-js-without-link-decoration-from-prevalent-resource-database.html: Removed.
  • http/tests/resourceLoadStatistics/classify-as-non-prevalent-based-on-mixed-statistics-database-expected.txt: Removed.
  • http/tests/resourceLoadStatistics/classify-as-non-prevalent-based-on-mixed-statistics-database.html: Removed.
  • http/tests/resourceLoadStatistics/classify-as-non-prevalent-based-on-sub-frame-under-top-frame-origins-database-expected.txt: Removed.
  • http/tests/resourceLoadStatistics/classify-as-non-prevalent-based-on-sub-frame-under-top-frame-origins-database.html: Removed.
  • http/tests/resourceLoadStatistics/classify-as-non-prevalent-based-on-subresource-under-top-frame-origins-database-expected.txt: Removed.
  • http/tests/resourceLoadStatistics/classify-as-non-prevalent-based-on-subresource-under-top-frame-origins-database.html: Removed.
  • http/tests/resourceLoadStatistics/classify-as-non-prevalent-based-on-subresource-unique-redirects-to-database-expected.txt: Removed.
  • http/tests/resourceLoadStatistics/classify-as-non-prevalent-based-on-subresource-unique-redirects-to-database.html: Removed.
  • http/tests/resourceLoadStatistics/classify-as-prevalent-based-on-mixed-statistics-database-expected.txt: Removed.
  • http/tests/resourceLoadStatistics/classify-as-prevalent-based-on-mixed-statistics-database.html: Removed.
  • http/tests/resourceLoadStatistics/classify-as-prevalent-based-on-sub-frame-under-top-frame-origins-database-expected.txt: Removed.
  • http/tests/resourceLoadStatistics/classify-as-prevalent-based-on-sub-frame-under-top-frame-origins-database.html: Removed.
  • http/tests/resourceLoadStatistics/classify-as-prevalent-based-on-subresource-redirect-collusion-database-expected.txt: Removed.
  • http/tests/resourceLoadStatistics/classify-as-prevalent-based-on-subresource-redirect-collusion-database.html: Removed.
  • http/tests/resourceLoadStatistics/classify-as-prevalent-based-on-subresource-redirect-to-prevalent-database-expected.txt: Removed.
  • http/tests/resourceLoadStatistics/classify-as-prevalent-based-on-subresource-redirect-to-prevalent-database.html: Removed.
  • http/tests/resourceLoadStatistics/classify-as-prevalent-based-on-subresource-under-top-frame-origins-database-expected.txt: Removed.
  • http/tests/resourceLoadStatistics/classify-as-prevalent-based-on-subresource-under-top-frame-origins-database.html: Removed.
  • http/tests/resourceLoadStatistics/classify-as-prevalent-based-on-subresource-unique-redirects-to-database-expected.txt: Removed.
  • http/tests/resourceLoadStatistics/classify-as-prevalent-based-on-subresource-unique-redirects-to-database.html: Removed.
  • http/tests/resourceLoadStatistics/classify-as-prevalent-based-on-top-frame-redirect-collusion-database-expected.txt: Removed.
  • http/tests/resourceLoadStatistics/classify-as-prevalent-based-on-top-frame-redirect-collusion-database.html: Removed.
  • http/tests/resourceLoadStatistics/classify-as-prevalent-based-on-top-frame-redirect-to-prevalent-database-expected.txt: Removed.
  • http/tests/resourceLoadStatistics/classify-as-prevalent-based-on-top-frame-redirect-to-prevalent-database.html: Removed.
  • http/tests/resourceLoadStatistics/classify-as-prevalent-based-on-top-frame-unique-redirects-to-database-expected.txt: Removed.
  • http/tests/resourceLoadStatistics/classify-as-prevalent-based-on-top-frame-unique-redirects-to-database.html: Removed.
  • http/tests/resourceLoadStatistics/classify-as-very-prevalent-based-on-mixed-statistics-database-expected.txt: Removed.
  • http/tests/resourceLoadStatistics/classify-as-very-prevalent-based-on-mixed-statistics-database.html: Removed.
  • http/tests/resourceLoadStatistics/clear-in-memory-and-persistent-store-database-expected.txt: Removed.
  • http/tests/resourceLoadStatistics/clear-in-memory-and-persistent-store-database.html: Removed.
  • http/tests/resourceLoadStatistics/clear-in-memory-and-persistent-store-one-hour-database-expected.txt: Removed.
  • http/tests/resourceLoadStatistics/clear-in-memory-and-persistent-store-one-hour-database.html: Removed.
  • http/tests/resourceLoadStatistics/cookie-deletion-database-expected.txt: Removed.
  • http/tests/resourceLoadStatistics/cookie-deletion-database.html: Removed.
  • http/tests/resourceLoadStatistics/cookies-with-and-without-user-interaction-database-expected.txt: Removed.
  • http/tests/resourceLoadStatistics/cookies-with-and-without-user-interaction-database.html: Removed.
  • http/tests/resourceLoadStatistics/count-third-party-script-import-in-worker-database-expected.txt: Removed.
  • http/tests/resourceLoadStatistics/count-third-party-script-import-in-worker-database.html: Removed.
  • http/tests/resourceLoadStatistics/count-third-party-script-import-in-worker-expected.txt:
  • http/tests/resourceLoadStatistics/count-third-party-script-loads-database-expected.txt: Removed.
  • http/tests/resourceLoadStatistics/count-third-party-script-loads-database.html: Removed.
  • http/tests/resourceLoadStatistics/count-third-party-script-loads-expected.txt:
  • http/tests/resourceLoadStatistics/delete-script-accessible-cookies-database-expected.txt: Removed.
  • http/tests/resourceLoadStatistics/delete-script-accessible-cookies-database.html: Removed.
  • http/tests/resourceLoadStatistics/do-not-block-top-level-navigation-redirect-database-expected.txt: Removed.
  • http/tests/resourceLoadStatistics/do-not-block-top-level-navigation-redirect-database.html: Removed.
  • http/tests/resourceLoadStatistics/do-not-capture-statistics-for-simple-top-navigations-database-expected.txt: Removed.
  • http/tests/resourceLoadStatistics/do-not-capture-statistics-for-simple-top-navigations-database.html: Removed.
  • http/tests/resourceLoadStatistics/do-not-remove-blocking-in-redirect-database-expected.txt: Removed.
  • http/tests/resourceLoadStatistics/do-not-remove-blocking-in-redirect-database.html: Removed.
  • http/tests/resourceLoadStatistics/do-not-switch-session-on-navigation-to-prevalent-without-interaction-database-expected.txt: Removed.
  • http/tests/resourceLoadStatistics/do-not-switch-session-on-navigation-to-prevalent-without-interaction-database.php: Removed.
  • http/tests/resourceLoadStatistics/dont-count-third-party-image-as-third-party-script-database-expected.txt: Removed.
  • http/tests/resourceLoadStatistics/dont-count-third-party-image-as-third-party-script-database.html: Removed.
  • http/tests/resourceLoadStatistics/dont-count-third-party-image-as-third-party-script-expected.txt:
  • http/tests/resourceLoadStatistics/downgrade-document-referrer-nested-third-party-iframe.html:
  • http/tests/resourceLoadStatistics/downgrade-document-referrer-third-party-iframe.html:
  • http/tests/resourceLoadStatistics/downgraded-referrer-for-navigation-with-link-query-from-prevalent-resource-database-expected.txt: Removed.
  • http/tests/resourceLoadStatistics/downgraded-referrer-for-navigation-with-link-query-from-prevalent-resource-database.html: Removed.
  • http/tests/resourceLoadStatistics/enable-debug-mode-database-expected.txt: Removed.
  • http/tests/resourceLoadStatistics/enable-debug-mode-database.html: Removed.
  • http/tests/resourceLoadStatistics/enforce-samesite-strict-based-on-top-frame-unique-redirects-to-database-expected.txt: Removed.
  • http/tests/resourceLoadStatistics/enforce-samesite-strict-based-on-top-frame-unique-redirects-to-database.html: Removed.
  • http/tests/resourceLoadStatistics/exemptDomains/app-bound-domains-exempt-from-website-data-deletion-database.html:
  • http/tests/resourceLoadStatistics/grandfathering-database-expected.txt: Removed.
  • http/tests/resourceLoadStatistics/grandfathering-database.html: Removed.
  • http/tests/resourceLoadStatistics/leave-empty-document-referrer-alone-third-party-iframe.html:
  • http/tests/resourceLoadStatistics/log-cross-site-load-with-link-decoration-database-expected.txt: Removed.
  • http/tests/resourceLoadStatistics/log-cross-site-load-with-link-decoration-database.html: Removed.
  • http/tests/resourceLoadStatistics/log-cross-site-load-with-link-decoration-expected.txt:
  • http/tests/resourceLoadStatistics/log-delayed-client-side-redirects-database-expected.txt: Removed.
  • http/tests/resourceLoadStatistics/log-delayed-client-side-redirects-database.html: Removed.
  • http/tests/resourceLoadStatistics/log-delayed-client-side-redirects-expected.txt:
  • http/tests/resourceLoadStatistics/many-inserts-only-insert-once.html:
  • http/tests/resourceLoadStatistics/merge-statistic-does-not-overwrite-database-expected.txt: Removed.
  • http/tests/resourceLoadStatistics/merge-statistic-does-not-overwrite-database.html: Removed.
  • http/tests/resourceLoadStatistics/merge-statistic-does-overwrite-database-expected.txt: Removed.
  • http/tests/resourceLoadStatistics/merge-statistic-does-overwrite-database.html: Removed.
  • http/tests/resourceLoadStatistics/merge-statistic-does-partially-overwrite-database-expected.txt: Removed.
  • http/tests/resourceLoadStatistics/merge-statistic-does-partially-overwrite-database.html: Removed.
  • http/tests/resourceLoadStatistics/non-prevalent-resource-with-user-interaction-database-expected.txt: Removed.
  • http/tests/resourceLoadStatistics/non-prevalent-resource-with-user-interaction-database.html: Removed.
  • http/tests/resourceLoadStatistics/non-prevalent-resource-without-user-interaction-database-expected.txt: Removed.
  • http/tests/resourceLoadStatistics/non-prevalent-resource-without-user-interaction-database.html: Removed.
  • http/tests/resourceLoadStatistics/non-prevalent-resources-can-access-cookies-in-a-third-party-context-database-expected.txt: Removed.
  • http/tests/resourceLoadStatistics/non-prevalent-resources-can-access-cookies-in-a-third-party-context-database.html: Removed.
  • http/tests/resourceLoadStatistics/non-sandboxed-iframe-redirect-ip-to-localhost-to-ip-database-expected.txt: Removed.
  • http/tests/resourceLoadStatistics/non-sandboxed-iframe-redirect-ip-to-localhost-to-ip-database.html: Removed.
  • http/tests/resourceLoadStatistics/non-sandboxed-iframe-redirect-localhost-to-ip-to-localhost-database-expected.txt: Removed.
  • http/tests/resourceLoadStatistics/non-sandboxed-iframe-redirect-localhost-to-ip-to-localhost-database.html: Removed.
  • http/tests/resourceLoadStatistics/non-sandboxed-nesting-iframe-with-non-sandboxed-iframe-redirect-ip-to-localhost-to-ip-database-expected.txt: Removed.
  • http/tests/resourceLoadStatistics/non-sandboxed-nesting-iframe-with-non-sandboxed-iframe-redirect-ip-to-localhost-to-ip-database.html: Removed.
  • http/tests/resourceLoadStatistics/non-sandboxed-nesting-iframe-with-non-sandboxed-iframe-redirect-localhost-to-ip-to-localhost-database-expected.txt: Removed.
  • http/tests/resourceLoadStatistics/non-sandboxed-nesting-iframe-with-non-sandboxed-iframe-redirect-localhost-to-ip-to-localhost-database.html: Removed.
  • http/tests/resourceLoadStatistics/non-sandboxed-nesting-iframe-with-sandboxed-iframe-redirect-ip-to-localhost-to-ip-database-expected.txt: Removed.
  • http/tests/resourceLoadStatistics/non-sandboxed-nesting-iframe-with-sandboxed-iframe-redirect-ip-to-localhost-to-ip-database.html: Removed.
  • http/tests/resourceLoadStatistics/non-sandboxed-nesting-iframe-with-sandboxed-iframe-redirect-localhost-to-ip-to-localhost-database-expected.txt: Removed.
  • http/tests/resourceLoadStatistics/non-sandboxed-nesting-iframe-with-sandboxed-iframe-redirect-localhost-to-ip-to-localhost-database.html: Removed.
  • http/tests/resourceLoadStatistics/operating-dates-all-but-cookies-removed-statistics-with-no-user-interaction-database-expected.txt: Removed.
  • http/tests/resourceLoadStatistics/operating-dates-all-but-cookies-removed-statistics-with-no-user-interaction-database.html: Removed.
  • http/tests/resourceLoadStatistics/operating-dates-all-but-cookies-removed-statistics-with-no-user-interaction-expected.txt:
  • http/tests/resourceLoadStatistics/operating-dates-all-website-data-removed-database-expected.txt: Removed.
  • http/tests/resourceLoadStatistics/operating-dates-all-website-data-removed-database.html: Removed.
  • http/tests/resourceLoadStatistics/ping-to-prevalent-resource-database-expected.txt: Removed.
  • http/tests/resourceLoadStatistics/ping-to-prevalent-resource-database.html: Removed.
  • http/tests/resourceLoadStatistics/prevalent-resource-handled-keydown-database-expected.txt: Removed.
  • http/tests/resourceLoadStatistics/prevalent-resource-handled-keydown-database.html: Removed.
  • http/tests/resourceLoadStatistics/prevalent-resource-unhandled-keydown-database-expected.txt: Removed.
  • http/tests/resourceLoadStatistics/prevalent-resource-unhandled-keydown-database.html: Removed.
  • http/tests/resourceLoadStatistics/prevalent-resource-with-user-interaction-database-expected.txt: Removed.
  • http/tests/resourceLoadStatistics/prevalent-resource-with-user-interaction-database.html: Removed.
  • http/tests/resourceLoadStatistics/prevalent-resource-with-user-interaction-timeout-database-expected.txt: Removed.
  • http/tests/resourceLoadStatistics/prevalent-resource-with-user-interaction-timeout-database.html: Removed.
  • http/tests/resourceLoadStatistics/prevalent-resource-without-user-interaction-database-expected.txt: Removed.
  • http/tests/resourceLoadStatistics/prevalent-resource-without-user-interaction-database.html: Removed.
  • http/tests/resourceLoadStatistics/prune-statistics-database-expected.txt: Removed.
  • http/tests/resourceLoadStatistics/prune-statistics-database.html: Removed.
  • http/tests/resourceLoadStatistics/remove-website-data-for-origin-deletes-link-decoration-database-expected.txt: Removed.
  • http/tests/resourceLoadStatistics/remove-website-data-for-origin-deletes-link-decoration-database.html: Removed.
  • http/tests/resourceLoadStatistics/remove-website-data-for-origin-deletes-link-decoration-expected.txt:
  • http/tests/resourceLoadStatistics/remove-website-data-for-origin-deletes-mixed-statistics-entries-database-expected.txt: Removed.
  • http/tests/resourceLoadStatistics/remove-website-data-for-origin-deletes-mixed-statistics-entries-database.html: Removed.
  • http/tests/resourceLoadStatistics/remove-website-data-for-origin-deletes-third-party-script-loads-database-expected.txt: Removed.
  • http/tests/resourceLoadStatistics/remove-website-data-for-origin-deletes-third-party-script-loads-database.html: Removed.
  • http/tests/resourceLoadStatistics/remove-website-data-for-origin-deletes-third-party-script-loads-expected.txt:
  • http/tests/resourceLoadStatistics/sandboxed-iframe-redirect-ip-to-localhost-to-ip-database-expected.txt: Removed.
  • http/tests/resourceLoadStatistics/sandboxed-iframe-redirect-ip-to-localhost-to-ip-database.html: Removed.
  • http/tests/resourceLoadStatistics/sandboxed-iframe-redirect-localhost-to-ip-to-localhost-database-expected.txt: Removed.
  • http/tests/resourceLoadStatistics/sandboxed-iframe-redirect-localhost-to-ip-to-localhost-database.html: Removed.
  • http/tests/resourceLoadStatistics/sandboxed-nesting-iframe-with-non-sandboxed-iframe-redirect-ip-to-localhost-to-ip-database-expected.txt: Removed.
  • http/tests/resourceLoadStatistics/sandboxed-nesting-iframe-with-non-sandboxed-iframe-redirect-ip-to-localhost-to-ip-database.html: Removed.
  • http/tests/resourceLoadStatistics/sandboxed-nesting-iframe-with-non-sandboxed-iframe-redirect-localhost-to-ip-to-localhost-database-expected.txt: Removed.
  • http/tests/resourceLoadStatistics/sandboxed-nesting-iframe-with-non-sandboxed-iframe-redirect-localhost-to-ip-to-localhost-database.html: Removed.
  • http/tests/resourceLoadStatistics/sandboxed-nesting-iframe-with-sandboxed-iframe-redirect-ip-to-localhost-to-ip-database-expected.txt: Removed.
  • http/tests/resourceLoadStatistics/sandboxed-nesting-iframe-with-sandboxed-iframe-redirect-ip-to-localhost-to-ip-database.html: Removed.
  • http/tests/resourceLoadStatistics/sandboxed-nesting-iframe-with-sandboxed-iframe-redirect-localhost-to-ip-to-localhost-database-expected.txt: Removed.
  • http/tests/resourceLoadStatistics/sandboxed-nesting-iframe-with-sandboxed-iframe-redirect-localhost-to-ip-to-localhost-database.html: Removed.
  • http/tests/resourceLoadStatistics/set-custom-prevalent-resource-in-debug-mode-database-expected.txt: Removed.
  • http/tests/resourceLoadStatistics/set-custom-prevalent-resource-in-debug-mode-database.html: Removed.
  • http/tests/resourceLoadStatistics/standalone-web-application-exempt-from-website-data-deletion-database-expected.txt: Removed.
  • http/tests/resourceLoadStatistics/standalone-web-application-exempt-from-website-data-deletion-database.html: Removed.
  • http/tests/resourceLoadStatistics/strip-referrer-to-origin-for-prevalent-subresource-redirects-database-expected.txt: Removed.
  • http/tests/resourceLoadStatistics/strip-referrer-to-origin-for-prevalent-subresource-redirects-database.html: Removed.
  • http/tests/resourceLoadStatistics/strip-referrer-to-origin-for-prevalent-subresource-requests-database-expected.txt: Removed.
  • http/tests/resourceLoadStatistics/strip-referrer-to-origin-for-prevalent-subresource-requests-database.html: Removed.
  • http/tests/resourceLoadStatistics/switch-session-on-navigation-to-prevalent-with-interaction-database-expected.txt: Removed.
  • http/tests/resourceLoadStatistics/switch-session-on-navigation-to-prevalent-with-interaction-database.php: Removed.
  • http/tests/resourceLoadStatistics/telemetry-generation-advanced-functionality-database-expected.txt: Removed.
  • http/tests/resourceLoadStatistics/telemetry-generation-advanced-functionality-database.html: Removed.
  • http/tests/resourceLoadStatistics/telemetry-generation-basic-functionality-database-expected.txt: Removed.
  • http/tests/resourceLoadStatistics/telemetry-generation-basic-functionality-database.html: Removed.
  • http/tests/resourceLoadStatistics/telemetry-generation-expected.txt:
  • http/tests/resourceLoadStatistics/third-party-cookie-blocking-database-expected.txt: Removed.
  • http/tests/resourceLoadStatistics/third-party-cookie-blocking-database.html: Removed.
  • http/tests/resourceLoadStatistics/third-party-cookie-blocking-ephemeral-database-expected.txt: Removed.
  • http/tests/resourceLoadStatistics/third-party-cookie-blocking-ephemeral-database.html: Removed.
  • http/tests/resourceLoadStatistics/third-party-cookie-blocking-on-sites-without-user-interaction-database-expected.txt: Removed.
  • http/tests/resourceLoadStatistics/third-party-cookie-blocking-on-sites-without-user-interaction-database.html: Removed.
  • http/tests/resourceLoadStatistics/user-interaction-in-cross-origin-sub-frame-database-expected.txt: Removed.
  • http/tests/resourceLoadStatistics/user-interaction-in-cross-origin-sub-frame-database.html: Removed.
  • http/tests/resourceLoadStatistics/user-interaction-only-reported-once-within-short-period-of-time-database-expected.txt: Removed.
  • http/tests/resourceLoadStatistics/user-interaction-only-reported-once-within-short-period-of-time-database.html: Removed.
  • http/tests/resourceLoadStatistics/user-interaction-reported-after-website-data-removal-database-expected.txt: Removed.
  • http/tests/resourceLoadStatistics/user-interaction-reported-after-website-data-removal-database.html: Removed.
  • http/tests/resourceLoadStatistics/website-data-removal-for-site-navigated-to-with-link-decoration-database-expected.txt: Removed.
  • http/tests/resourceLoadStatistics/website-data-removal-for-site-navigated-to-with-link-decoration-database.html: Removed.
  • http/tests/resourceLoadStatistics/website-data-removal-for-site-navigated-to-with-link-decoration-expected.txt:
  • http/tests/resourceLoadStatistics/website-data-removal-for-site-with-user-interaction-database-expected.txt: Removed.
  • http/tests/resourceLoadStatistics/website-data-removal-for-site-with-user-interaction-database.html: Removed.
  • http/tests/resourceLoadStatistics/website-data-removal-for-site-without-user-interaction-database-expected.txt: Removed.
  • http/tests/resourceLoadStatistics/website-data-removal-for-site-without-user-interaction-database.html: Removed.
  • http/tests/storageAccess/aggregate-sorted-data-with-storage-access-database-expected.txt: Removed.
  • http/tests/storageAccess/aggregate-sorted-data-with-storage-access-database.html: Removed.
  • http/tests/storageAccess/aggregate-sorted-data-with-storage-access-expected.txt:
  • http/tests/storageAccess/deny-due-to-no-interaction-under-general-third-party-cookie-blocking-database-expected.txt: Removed.
  • http/tests/storageAccess/deny-due-to-no-interaction-under-general-third-party-cookie-blocking-database.html: Removed.
  • http/tests/storageAccess/deny-storage-access-under-opener-database-expected.txt: Removed.
  • http/tests/storageAccess/deny-storage-access-under-opener-database.html: Removed.
  • http/tests/storageAccess/deny-storage-access-under-opener-if-auto-dismiss-database-expected.txt: Removed.
  • http/tests/storageAccess/deny-storage-access-under-opener-if-auto-dismiss-database.html: Removed.
  • http/tests/storageAccess/deny-with-prompt-does-not-preserve-gesture-database-expected.txt: Removed.
  • http/tests/storageAccess/deny-with-prompt-does-not-preserve-gesture-database.html: Removed.
  • http/tests/storageAccess/deny-without-prompt-preserves-gesture-database-expected.txt: Removed.
  • http/tests/storageAccess/deny-without-prompt-preserves-gesture-database.html: Removed.
  • http/tests/storageAccess/grant-storage-access-under-opener-at-popup-user-gesture-database-expected.txt: Removed.
  • http/tests/storageAccess/grant-storage-access-under-opener-at-popup-user-gesture-database.html: Removed.
  • http/tests/storageAccess/grant-with-prompt-preserves-gesture-database-expected.txt: Removed.
  • http/tests/storageAccess/grant-with-prompt-preserves-gesture-database.html: Removed.
  • http/tests/storageAccess/grant-with-prompt-under-general-third-party-cookie-blocking-database-expected.txt: Removed.
  • http/tests/storageAccess/grant-with-prompt-under-general-third-party-cookie-blocking-database.html: Removed.
  • http/tests/storageAccess/has-storage-access-crash-database-expected.txt: Removed.
  • http/tests/storageAccess/has-storage-access-crash-database.html: Removed.
  • http/tests/storageAccess/has-storage-access-false-by-default-database-expected.txt: Removed.
  • http/tests/storageAccess/has-storage-access-false-by-default-database.html: Removed.
  • http/tests/storageAccess/has-storage-access-false-by-default-ephemeral-database-expected.txt: Removed.
  • http/tests/storageAccess/has-storage-access-false-by-default-ephemeral-database.html: Removed.
  • http/tests/storageAccess/has-storage-access-from-prevalent-domain-with-user-interaction-database-expected.txt: Removed.
  • http/tests/storageAccess/has-storage-access-from-prevalent-domain-with-user-interaction-database.html: Removed.
  • http/tests/storageAccess/has-storage-access-true-if-third-party-has-cookies-database-expected.txt: Removed.
  • http/tests/storageAccess/has-storage-access-true-if-third-party-has-cookies-database.html: Removed.
  • http/tests/storageAccess/has-storage-access-true-if-third-party-has-cookies-ephemeral-database-expected.txt: Removed.
  • http/tests/storageAccess/has-storage-access-true-if-third-party-has-cookies-ephemeral-database.html: Removed.
  • http/tests/storageAccess/has-storage-access-under-general-third-party-cookie-blocking-with-cookie-database-expected.txt: Removed.
  • http/tests/storageAccess/has-storage-access-under-general-third-party-cookie-blocking-with-cookie-database.html: Removed.
  • http/tests/storageAccess/has-storage-access-under-general-third-party-cookie-blocking-without-cookie-database-expected.txt: Removed.
  • http/tests/storageAccess/has-storage-access-under-general-third-party-cookie-blocking-without-cookie-database.html: Removed.
  • http/tests/storageAccess/remove-requesting-iframe-database-expected.txt: Removed.
  • http/tests/storageAccess/remove-requesting-iframe-database.html: Removed.
  • http/tests/storageAccess/request-and-grant-access-cross-origin-non-sandboxed-iframe-database-expected.txt: Removed.
  • http/tests/storageAccess/request-and-grant-access-cross-origin-non-sandboxed-iframe-database.html: Removed.
  • http/tests/storageAccess/request-and-grant-access-cross-origin-sandboxed-iframe-database-expected.txt: Removed.
  • http/tests/storageAccess/request-and-grant-access-cross-origin-sandboxed-iframe-database.html: Removed.
  • http/tests/storageAccess/request-and-grant-access-cross-origin-sandboxed-iframe-from-prevalent-domain-with-user-interaction-and-access-from-right-frame-database-expected.txt: Removed.
  • http/tests/storageAccess/request-and-grant-access-cross-origin-sandboxed-iframe-from-prevalent-domain-with-user-interaction-and-access-from-right-frame-database.html: Removed.
  • http/tests/storageAccess/request-and-grant-access-cross-origin-sandboxed-iframe-from-prevalent-domain-with-user-interaction-but-access-from-wrong-frame-database-expected.txt: Removed.
  • http/tests/storageAccess/request-and-grant-access-cross-origin-sandboxed-iframe-from-prevalent-domain-with-user-interaction-but-access-from-wrong-frame-database.html: Removed.
  • http/tests/storageAccess/request-and-grant-access-cross-origin-sandboxed-iframe-from-prevalent-domain-with-user-interaction-database-expected.txt: Removed.
  • http/tests/storageAccess/request-and-grant-access-cross-origin-sandboxed-iframe-from-prevalent-domain-with-user-interaction-database.html: Removed.
  • http/tests/storageAccess/request-and-grant-access-cross-origin-sandboxed-iframe-from-prevalent-domain-without-user-interaction-database-expected.txt: Removed.
  • http/tests/storageAccess/request-and-grant-access-cross-origin-sandboxed-iframe-from-prevalent-domain-without-user-interaction-database.html: Removed.
  • http/tests/storageAccess/request-and-grant-access-cross-origin-sandboxed-nested-iframe-database-expected.txt: Removed.
  • http/tests/storageAccess/request-and-grant-access-cross-origin-sandboxed-nested-iframe-database.html: Removed.
  • http/tests/storageAccess/request-and-grant-access-then-detach-should-not-have-access-database-expected.txt: Removed.
  • http/tests/storageAccess/request-and-grant-access-then-detach-should-not-have-access-database.html: Removed.
  • http/tests/storageAccess/request-and-grant-access-then-navigate-cross-site-should-not-have-access-database-expected.txt: Removed.
  • http/tests/storageAccess/request-and-grant-access-then-navigate-cross-site-should-not-have-access-database.html: Removed.
  • http/tests/storageAccess/request-and-grant-access-then-navigate-same-site-should-have-access-database-expected.txt: Removed.
  • http/tests/storageAccess/request-and-grant-access-then-navigate-same-site-should-have-access-database.html: Removed.
  • http/tests/storageAccess/request-storage-access-crash-database-expected.txt: Removed.
  • http/tests/storageAccess/request-storage-access-crash-database.html: Removed.
  • http/tests/storageAccess/request-storage-access-cross-origin-sandboxed-iframe-with-unique-origin-database-expected.txt: Removed.
  • http/tests/storageAccess/request-storage-access-cross-origin-sandboxed-iframe-with-unique-origin-database.html: Removed.
  • http/tests/storageAccess/request-storage-access-cross-origin-sandboxed-iframe-without-allow-token-database-expected.txt: Removed.
  • http/tests/storageAccess/request-storage-access-cross-origin-sandboxed-iframe-without-allow-token-database.html: Removed.
  • http/tests/storageAccess/request-storage-access-cross-origin-sandboxed-iframe-without-user-gesture-database-expected.txt: Removed.
  • http/tests/storageAccess/request-storage-access-cross-origin-sandboxed-iframe-without-user-gesture-database.html: Removed.
  • http/tests/storageAccess/request-storage-access-same-origin-iframe-database-expected.txt: Removed.
  • http/tests/storageAccess/request-storage-access-same-origin-iframe-database.html: Removed.
  • http/tests/storageAccess/request-storage-access-same-origin-sandboxed-iframe-database-expected.txt: Removed.
  • http/tests/storageAccess/request-storage-access-same-origin-sandboxed-iframe-database.html: Removed.
  • http/tests/storageAccess/request-storage-access-same-origin-sandboxed-iframe-without-allow-token-database-expected.txt: Removed.
  • http/tests/storageAccess/request-storage-access-same-origin-sandboxed-iframe-without-allow-token-database.html: Removed.
  • http/tests/storageAccess/request-storage-access-top-frame-database-expected.txt: Removed.
  • http/tests/storageAccess/request-storage-access-top-frame-database.html: Removed.
  • http/tests/webAPIStatistics/canvas-read-and-write-data-collection-expected.txt:
  • http/tests/webAPIStatistics/font-load-data-collection-expected.txt:
  • http/tests/webAPIStatistics/navigator-functions-accessed-data-collection-expected.txt:
  • http/tests/webAPIStatistics/screen-functions-accessed-data-collection-expected.txt:
  • platform/gtk/TestExpectations:
  • platform/ios-wk2/TestExpectations:
  • platform/ios/TestExpectations:
  • platform/mac-wk2/TestExpectations:
  • platform/wk2/TestExpectations:
  • platform/wpe/TestExpectations:
10:36 AM Changeset in webkit [267749] by Alan Coon
  • 2 edits in branches/safari-610-branch/Source/WebCore

Cherry-pick r267722. rdar://problem/69586659

Cherry-pick r266899. rdar://problem/69586659

Integrator's note: as some of the symbols present on trunk are not available on branch, special modifications had to be made to this cherry-pick to build.

Address a post-commit review comment after r266887
https://bugs.webkit.org/show_bug.cgi?id=216257

Reviewed by Darin Adler.

Remove a check that currently makes us conditionally set IsComputedStyleInvalidFlag if there is a computed
style in rare data. There should be no change in behavior; this just makes the code a bit simpler.

  • dom/Element.cpp: (WebCore::Element::invalidateStyle): (WebCore::Element::storeDisplayContentsStyle):

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

git-svn-id: https://svn.webkit.org/repository/webkit/branches/safari-610-branch@267722 268f45cc-cd09-0410-ab3c-d52691b4dbfc

10:34 AM Changeset in webkit [267748] by Alan Coon
  • 4 edits
    2 adds in branches/safari-610-branch

Cherry-pick r267721. rdar://problem/69586659

Cherry-pick r266887. rdar://problem/69586659

Integrator's note: as some of the symbols present on trunk are not available on branch, special modifications had to be made to this cherry-pick to build.

REGRESSION (r257839): clickpay.com - password placeholder text cannot be replaced
https://bugs.webkit.org/show_bug.cgi?id=216257
<rdar://problem/68150686>

Reviewed by Antti Koivisto.

Source/WebCore:

On clickpay.com, the field in the login form that contains the text "Password" is actually a plain text input,
referred to by the site's script as the "null text input". The page adds a focus event listener to this null
text input, and inside of this focus event listener, it reveals a hidden password field by removing an inline
display: none; style rule on the real password input element, programmatically focuses it, and then hides the
null text input by setting it to display: none; via inline style.

However, after the changes in r257839, we no longer attempt to do a style update upon programmatic focus in the
case where the programmatically focused element does not have a renderer yet (this applies to the password field
in this scenario, because it previously had display: none;). When we determine whether the newly displayed
password field is focusable using Element::isVisibleWithoutResolvingFullStyle, we then attempt to use either
the existing computed RenderStyle on the element, or perform a partial computed style resolution using the
ResolveComputedStyleMode::RenderedOnly flag.

But in the case where ElementRareData's computed style exists, it is not guaranteed to be up to date if the
inline style changed since the computed style was last set. In the context of this bug, it's actually Safari's
AutoFill logic (embedded in the injected bundle) that ends up asking for the computed style of the password
input, forcing it to be created and set (though, as demonstrated in the layout test, simply grabbing the
computed style is sufficient to replicate the bug outside of Safari).

The end result is that we'll use this stale computed style, which still believes that the password input is not
displayed, and we end up not focusing the element due to believing that the password input is hidden. To fix
this, we would need to either check whether the element has an invalid style (i.e. needsStyleRecalc()) before
attempting to use the existing computed style, or clear out the ElementRareData computed style anytime the
element's style is invalidated. However, both of these approaches will cause us to perform partial style
resolution much more aggressively, leading to a 2-3% regression in Speedometer.

To address the bug without hampering our performance wins from r257839, we add a new node flag so that we can
remember when computed styles are no longer valid due to style invalidation, and consult this flag in
Element::isVisibleWithoutResolvingFullStyle to avoid using the existing computed style.

Test: fast/forms/programmatic-focus-after-display.html

  • dom/Element.cpp: (WebCore::Element::invalidateStyle): (WebCore::Element::resolveComputedStyle): (WebCore::Element::isVisibleWithoutResolvingFullStyle const):
  • dom/Node.h: (WebCore::Node::setHasValidStyle):

LayoutTests:

Add a new layout test to verify that the bug does not occur. See WebCore/ChangeLog for more details.

  • fast/forms/programmatic-focus-after-display-expected.txt: Added.
  • fast/forms/programmatic-focus-after-display.html: Added.

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

git-svn-id: https://svn.webkit.org/repository/webkit/branches/safari-610-branch@267721 268f45cc-cd09-0410-ab3c-d52691b4dbfc

10:21 AM Changeset in webkit [267747] by Alan Coon
  • 2 edits in branches/safari-611.1.2-branch/Source/WebCore

Cherry-pick r267706. rdar://problem/69751604

REGRESSION (r267329): Crash due to null-dereference of frame pointer in DOMSelection::rangeCount
https://bugs.webkit.org/show_bug.cgi?id=217053

Reviewed by Sam Weinig.

Later as a follow-up it would be nice to add a test case, but not obvious how to
make a simple one quickly.

  • page/DOMSelection.cpp: (WebCore::DOMSelection::rangeCount const): Fixed the null check.

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

9:52 AM Changeset in webkit [267746] by Alan Coon
  • 4 edits
    2 deletes in branches/safari-610-branch

Revert r266887. rdar://problem/69586659

9:52 AM Changeset in webkit [267745] by Alan Coon
  • 2 edits in branches/safari-610-branch/Source/WebCore

Revert r266899. rdar://problem/69586659

9:47 AM Changeset in webkit [267744] by Chris Dumez
  • 70 edits
    2 copies
    11 adds in trunk

Add stubs for AudioWorklet
https://bugs.webkit.org/show_bug.cgi?id=217059

Reviewed by Eric Carlson.

LayoutTests/imported/w3c:

Rebaseline WPT tests now that AudioWorklet / AudioWorkletNode / AudioParamMap interfaces are exposed.

  • web-platform-tests/webaudio/idlharness.https.window-expected.txt:
  • web-platform-tests/webaudio/the-audio-api/the-audiobuffersourcenode-interface/active-processing.https-expected.txt:
  • web-platform-tests/webaudio/the-audio-api/the-audiocontext-interface/processing-after-resume.https-expected.txt:
  • web-platform-tests/webaudio/the-audio-api/the-audioparam-interface/k-rate-audioworklet-connections.https-expected.txt:
  • web-platform-tests/webaudio/the-audio-api/the-audioparam-interface/k-rate-audioworklet.https-expected.txt:
  • web-platform-tests/webaudio/the-audio-api/the-audioparam-interface/k-rate-stereo-panner-expected.txt:
  • web-platform-tests/webaudio/the-audio-api/the-audioworklet-interface/audioworklet-addmodule-resolution.https-expected.txt:
  • web-platform-tests/webaudio/the-audio-api/the-audioworklet-interface/audioworklet-audioparam-iterable.https-expected.txt:
  • web-platform-tests/webaudio/the-audio-api/the-audioworklet-interface/audioworklet-audioparam-size.https-expected.txt:
  • web-platform-tests/webaudio/the-audio-api/the-audioworklet-interface/audioworklet-audioparam.https-expected.txt:
  • web-platform-tests/webaudio/the-audio-api/the-audioworklet-interface/audioworklet-messageport.https-expected.txt:
  • web-platform-tests/webaudio/the-audio-api/the-audioworklet-interface/audioworklet-postmessage-sharedarraybuffer.https-expected.txt:
  • web-platform-tests/webaudio/the-audio-api/the-audioworklet-interface/audioworklet-suspend.https-expected.txt:
  • web-platform-tests/webaudio/the-audio-api/the-audioworklet-interface/audioworkletglobalscope-sample-rate.https-expected.txt:
  • web-platform-tests/webaudio/the-audio-api/the-audioworklet-interface/audioworkletglobalscope-timing-info.https-expected.txt:
  • web-platform-tests/webaudio/the-audio-api/the-audioworklet-interface/audioworkletnode-automatic-pull.https-expected.txt:
  • web-platform-tests/webaudio/the-audio-api/the-audioworklet-interface/audioworkletnode-channel-count.https-expected.txt:
  • web-platform-tests/webaudio/the-audio-api/the-audioworklet-interface/audioworkletnode-construction.https-expected.txt:
  • web-platform-tests/webaudio/the-audio-api/the-audioworklet-interface/audioworkletnode-constructor-options.https-expected.txt:
  • web-platform-tests/webaudio/the-audio-api/the-audioworklet-interface/audioworkletnode-disconnected-input.https-expected.txt:
  • web-platform-tests/webaudio/the-audio-api/the-audioworklet-interface/audioworkletnode-onerror.https-expected.txt:
  • web-platform-tests/webaudio/the-audio-api/the-audioworklet-interface/audioworkletnode-output-channel-count.https-expected.txt:
  • web-platform-tests/webaudio/the-audio-api/the-audioworklet-interface/audioworkletprocessor-options.https-expected.txt:
  • web-platform-tests/webaudio/the-audio-api/the-audioworklet-interface/audioworkletprocessor-process-frozen-array.https-expected.txt:
  • web-platform-tests/webaudio/the-audio-api/the-audioworklet-interface/audioworkletprocessor-process-zero-outputs.https-expected.txt:
  • web-platform-tests/webaudio/the-audio-api/the-audioworklet-interface/audioworkletprocessor-promises.https-expected.txt:
  • web-platform-tests/webaudio/the-audio-api/the-audioworklet-interface/baseaudiocontext-audioworklet.https-expected.txt:
  • web-platform-tests/webaudio/the-audio-api/the-audioworklet-interface/extended-audioworkletnode-with-parameters.https-expected.txt:
  • web-platform-tests/webaudio/the-audio-api/the-audioworklet-interface/process-getter.https-expected.txt:
  • web-platform-tests/webaudio/the-audio-api/the-audioworklet-interface/process-parameters.https-expected.txt:
  • web-platform-tests/webaudio/the-audio-api/the-audioworklet-interface/processor-construction-port.https-expected.txt:
  • web-platform-tests/webaudio/the-audio-api/the-audioworklet-interface/simple-input-output.https-expected.txt:
  • web-platform-tests/webaudio/the-audio-api/the-audioworklet-interface/suspended-context-messageport.https-expected.txt:
  • web-platform-tests/webaudio/the-audio-api/the-channelmergernode-interface/active-processing.https-expected.txt:
  • web-platform-tests/webaudio/the-audio-api/the-convolvernode-interface/active-processing.https-expected.txt:
  • web-platform-tests/webaudio/the-audio-api/the-mediaelementaudiosourcenode-interface/cors-check.https-expected.txt:
  • web-platform-tests/webaudio/the-audio-api/the-mediaelementaudiosourcenode-interface/no-cors.https-expected.txt:

Source/WebCore:

Add stubs for AudioWorklet, AudioWorkletNode and AudioParamMap:

No new tests, rebaselined existing tests.

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

(WebCore::convertEnumerationToString):

  • Modules/webaudio/AudioNode.h:
  • Modules/webaudio/AudioParamMap.cpp: Added.

(WebCore::AudioParamMap::initializeMapLike):
(WebCore::AudioParamMap::add):

  • Modules/webaudio/AudioParamMap.h: Added.

(WebCore::AudioParamMap::create):
(WebCore::AudioParamMap::map const):

  • Modules/webaudio/AudioParamMap.idl: Added.
  • Modules/webaudio/AudioWorklet.cpp: Added.

(WebCore::AudioWorklet::create):
(WebCore::AudioWorklet::AudioWorklet):

  • Modules/webaudio/AudioWorklet.h: Added.
  • Modules/webaudio/AudioWorklet.idl: Added.
  • Modules/webaudio/AudioWorkletNode.cpp: Added.

(WebCore::AudioWorkletNode::create):
(WebCore::AudioWorkletNode::AudioWorkletNode):
(WebCore::AudioWorkletNode::~AudioWorkletNode):
(WebCore::AudioWorkletNode::process):

  • Modules/webaudio/AudioWorkletNode.h: Added.

(WebCore::AudioWorkletNode::parameters):
(WebCore::AudioWorkletNode::port):

  • Modules/webaudio/AudioWorkletNode.idl: Added.
  • Modules/webaudio/AudioWorkletNodeOptions.h: Added.
  • Modules/webaudio/AudioWorkletNodeOptions.idl: Added.
  • Modules/webaudio/BaseAudioContext.cpp:

(WebCore::BaseAudioContext::BaseAudioContext):

  • Modules/webaudio/BaseAudioContext.h:

(WebCore::BaseAudioContext::audioWorklet):

  • Modules/webaudio/BaseAudioContext.idl:
  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • bindings/js/WebCoreBuiltinNames.h:
  • css/DOMCSSPaintWorklet.cpp:

(WebCore::DOMCSSPaintWorklet::ensurePaintWorklet):
(WebCore::PaintWorklet::addModule):

  • css/DOMCSSPaintWorklet.h:
  • dom/Document.cpp:

(WebCore::Document::ensurePaintWorklet):

  • dom/Document.h:
  • dom/EventNames.h:
  • page/Settings.yaml:
  • worklets/Worklet.cpp:

(WebCore::Worklet::addModule):

  • worklets/Worklet.h:
  • worklets/Worklet.idl:
  • worklets/WorkletOptions.h: Copied from Source/WebCore/worklets/Worklet.idl.
  • worklets/WorkletOptions.idl: Copied from Source/WebCore/worklets/Worklet.idl.

Source/WebKit:

Add experimental feature flag for AudioWorklet API.

  • Shared/WebPreferencesExperimental.yaml:

LayoutTests:

Skip tests that are timing out because we don't support Worklet.addModule() yet.

9:47 AM Changeset in webkit [267743] by Jonathan Bedard
  • 2 edits in trunk/Tools

[resultsdbpy] Restrict incoming traffic to localhost
https://bugs.webkit.org/show_bug.cgi?id=217089
<rdar://problem/69749845>

Reviewed by Aakash Jain.

  • Scripts/libraries/resultsdbpy/resultsdbpy/model/docker-compose.yml: Restrict incoming traffic to localhost.
9:41 AM Changeset in webkit [267742] by wenson_hsieh@apple.com
  • 18 edits in trunk/Source/WebCore

[GPU Process] Several layout tests in fast/canvas crash under GraphicsContext::clipToImageBuffer
https://bugs.webkit.org/show_bug.cgi?id=217026
<rdar://problem/69663834>

Reviewed by Simon Fraser.

When using the GPU Process for rendering, calling GraphicsContext::clipToImageBuffer currently results in a
crash, due to the platform CGContextRef being null. This causes the following 4 canvas-related tests to fail:

  • fast/canvas/2d.fillText.gradient.html
  • fast/canvas/2d.text.draw.fill.maxWidth.gradient.html
  • fast/canvas/canvas-text-alignment.html
  • fast/canvas/gradient-text-with-shadow.html

In all four of these tests, the clipToImageBuffer call comes from CanvasRenderingContext2D::drawTextInternal
method, while creating the image used to provide the mask when there is a gradient or pattern fill. This is
tricky to support when using the GPU process with display list items, since ImageBuffers cannot be generally
sent to the GPU process through IPC. Instead of painting an ImageBuffer and sending it over IPC, we can
introduce a new GraphicsContext method that clips to an image that is painted via a WTF::Function that is
passed in, and receives a GraphicsContext&. When using a display-list-backed GraphicsContext, we can create
a new DisplayList recording context and use the given Function to populate the display list with items,
which can then be sent to the GPU process through IPC. When using a platform CGContextRef-backed
GraphicsContext, we instead create a new ImageBuffer compatible with the current context, and then use this
ImageBuffer to call clipToImageBuffer. We then refactor drawTextInternal so that it uses this new
GraphicsContext method. See below for more details.

  • html/canvas/CanvasRenderingContext2D.cpp:

(WebCore::CanvasRenderingContext2D::drawTextInternal):

Refactor this to use clipToDrawingCommands instead of clipToImageBuffer.

  • platform/graphics/GraphicsContext.cpp:

(WebCore::GraphicsContext::clipToDrawingCommands):

Introduce a new GraphicsContext method that takes a function which draws into a given GraphicsContext. When
there is no GraphicsContextImpl present, we create a new ImageBuffer compatible with this GraphicsContext,
paint into it using the given Function, and lastly pass this painted ImageBuffer into clipToImageBuffer.

  • platform/graphics/GraphicsContext.h:
  • platform/graphics/GraphicsContextImpl.h:
  • platform/graphics/cairo/GraphicsContextImplCairo.cpp:

(WebCore::GraphicsContextImplCairo::clipToDrawingCommands):

Add an unimplemented method stub. Since the only call site of GraphicsContext::clipToDrawingCommands is behind
a USE(CG) guard, leaving this unimplemented for the time being won't result in any regression in behavior.

  • platform/graphics/cairo/GraphicsContextImplCairo.h:
  • platform/graphics/cg/GraphicsContextCG.cpp:

(WebCore::GraphicsContext::clipToImageBuffer):

It's not strictly necessary to fix these layout tests, but we should still add a check for clipToImageBuffer
here with a call to GraphicsContextImpl::clipToImageBuffer even though clipToImageBuffer is unimplemented,
to ensure that we at least avoid crashing if anything calls into this codepath.

  • platform/graphics/displaylists/DisplayList.h:
  • platform/graphics/displaylists/DisplayListDrawingContext.h:

(WebCore::DisplayList::DrawingContext::takeDisplayList):

Add a helper function to extract the DisplayList out of a DisplayList::DrawingContext.

  • platform/graphics/displaylists/DisplayListItems.cpp:

(WebCore::DisplayList::ClipToDrawingCommands::ClipToDrawingCommands):
(WebCore::DisplayList::ClipToDrawingCommands::apply const):

Apply the ClipToDrawingCommands item by using DisplayList::Replayer to replay the given display list items
back in a new platform CG-backed image buffer in the GPU process.

(WebCore::DisplayList::operator<<):

  • platform/graphics/displaylists/DisplayListItems.h:

(WebCore::DisplayList::ClipToDrawingCommands::create):
(WebCore::DisplayList::ClipToDrawingCommands::destination const):
(WebCore::DisplayList::ClipToDrawingCommands::colorSpace const):
(WebCore::DisplayList::ClipToDrawingCommands::drawingCommands const):
(WebCore::DisplayList::ClipToDrawingCommands::encode const):
(WebCore::DisplayList::ClipToDrawingCommands::decode):
(WebCore::DisplayList::Item::encode const):
(WebCore::DisplayList::Item::decode):

Add a new ClipToDrawingCommands display list item, with support for IPC encoding and decoding.

  • platform/graphics/displaylists/DisplayListRecorder.cpp:

(WebCore::DisplayList::Recorder::clipToDrawingCommands):

Implement the display-list-backed clipToDrawingCommands method by creating a new DisplayList::DrawingContext
and playing the given drawing function back into the DrawingContext. This populates the recording context with
a display list, which we can use to create a serializable display list item.

  • platform/graphics/displaylists/DisplayListRecorder.h:
  • platform/graphics/nicosia/cairo/NicosiaCairoOperationRecorder.cpp:

(Nicosia::CairoOperationRecorder::clipToDrawingCommands):

Add another unimplemented method stub.

  • platform/graphics/nicosia/cairo/NicosiaCairoOperationRecorder.h:
  • platform/graphics/win/GraphicsContextImplDirect2D.cpp:

(WebCore::GraphicsContextImplDirect2D::clipToDrawingCommands):

Add another unimplemented method stub.

  • platform/graphics/win/GraphicsContextImplDirect2D.h:
9:34 AM Changeset in webkit [267741] by Alan Bujtas
  • 3 edits in trunk/Source/WebCore

[Media in GPU Process] Use VideoLayerManager to manage layers of MediaPlayerPrivateRemote
https://bugs.webkit.org/show_bug.cgi?id=216995

Patch by Peng Liu <Peng Liu> on 2020-09-29
Reviewed by Zalan Bujtas.

A follow-up patch to fix a build failure.

  • platform/graphics/avfoundation/objc/VideoLayerManagerObjC.h:
  • platform/graphics/avfoundation/objc/VideoLayerManagerObjC.mm:

(WebCore::VideoLayerManagerObjC::~VideoLayerManagerObjC):

9:27 AM Changeset in webkit [267740] by aakash_jain@apple.com
  • 2 edits in trunk/Tools

Limit number of tests to log in case of large number of JSC test failures
https://bugs.webkit.org/show_bug.cgi?id=217085

Reviewed by Jonathan Bedard.

  • BuildSlaveSupport/ews-build/steps.py:

(AnalyzeJSCTestsResults.start):

9:27 AM Changeset in webkit [267739] by aakash_jain@apple.com
  • 2 edits in trunk/Tools

[ews] Refactor NUM_API_FAILURES_TO_DISPLAY
https://bugs.webkit.org/show_bug.cgi?id=217086

Reviewed by Jonathan Bedard.

  • BuildSlaveSupport/ews-build/steps.py:

(AnalyzeAPITestsResults):
(AnalyzeAPITestsResults.analyzeResults):

9:04 AM Changeset in webkit [267738] by pvollan@apple.com
  • 5 edits in trunk

[macOS] Deny access to 'com.apple.awdd' in the WebContent sandbox
https://bugs.webkit.org/show_bug.cgi?id=216975

Reviewed by Darin Adler.

Source/WebKit:

This has already been done on iOS in <https://trac.webkit.org/changeset/254376>, and should be done on macOS as well.

  • WebProcess/com.apple.WebProcess.sb.in:

LayoutTests:

  • fast/sandbox/mac/sandbox-mach-lookup-expected.txt:
  • fast/sandbox/mac/sandbox-mach-lookup.html:
9:03 AM Changeset in webkit [267737] by aakash_jain@apple.com
  • 3 edits in trunk/Tools

Limit maximum number of webkitpy failures to display
https://bugs.webkit.org/show_bug.cgi?id=217087

Reviewed by Jonathan Bedard.

  • BuildSlaveSupport/ews-build/steps.py:

(WebKitPyTest):
(WebKitPyTest.getResultSummary):

  • BuildSlaveSupport/ews-build/steps_unittest.py:

(test_lot_of_failures): Added unit-tests.

9:02 AM Changeset in webkit [267736] by aakash_jain@apple.com
  • 1 edit
    1 add in trunk/Tools

[build.webkit.org] Add unit-test to detect invalid triggers in config.json
https://bugs.webkit.org/show_bug.cgi?id=216898

Reviewed by Jonathan Bedard.

  • BuildSlaveSupport/build.webkit.org-config/loadConfig_unittest.py: Added.

(ConfigDotJSONTest):
(ConfigDotJSONTest.get_config):
(ConfigDotJSONTest.test_builder_keys):
(ConfigDotJSONTest.test_multiple_scheduers_for_builder):
(ConfigDotJSONTest.test_schduler_contains_valid_builder_name):
(ConfigDotJSONTest.test_single_builder_for_triggerable_scheduler):

8:52 AM Changeset in webkit [267735] by Chris Lord
  • 11 edits
    3 adds in trunk/Source/WebCore

Implement asynchronous OffscreenCanvas placeholder updates for TextureMapperGL-based compositor
https://bugs.webkit.org/show_bug.cgi?id=202798

Reviewed by Simon Fraser.

Implement asynchronous updates for users of the Nicosia compositor
(i.e. GTK, WPE). This allows OffscreenCanvas-controlled canvases to
update visually while the main thread is blocked.

No new tests. Covered by existing tests.

  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • html/HTMLCanvasElement.cpp:

(WebCore::HTMLCanvasElement::transferControlToOffscreen):

  • html/OffscreenCanvas.cpp:

(WebCore::OffscreenCanvas::create):
(WebCore::OffscreenCanvas::setPlaceholderCanvas):
(WebCore::OffscreenCanvas::pushBufferToPlaceholder):
(WebCore::OffscreenCanvas::commitToPlaceholderCanvas):

  • html/OffscreenCanvas.h:
  • html/canvas/PlaceholderRenderingContext.cpp:

(WebCore::PlaceholderRenderingContext::PlaceholderRenderingContext):
(WebCore::PlaceholderRenderingContext::platformLayer const):

  • html/canvas/PlaceholderRenderingContext.h:
  • platform/TextureMapper.cmake:
  • platform/graphics/ImageBufferPipe.cpp: Added.

(WebCore::ImageBufferPipe::create):

  • platform/graphics/ImageBufferPipe.h: Added.
  • platform/graphics/nicosia/NicosiaImageBufferPipe.cpp: Added.

(Nicosia::NicosiaImageBufferPipeSource::NicosiaImageBufferPipeSource):
(Nicosia::NicosiaImageBufferPipeSource::handle):
(Nicosia::NicosiaImageBufferPipeSource::platformLayer const):
(Nicosia::NicosiaImageBufferPipeSource::swapBuffersIfNeeded):
(Nicosia::NicosiaImageBufferPipe::NicosiaImageBufferPipe):
(Nicosia::NicosiaImageBufferPipe::source const):
(Nicosia::NicosiaImageBufferPipe::platformLayer const):
(WebCore::ImageBufferPipe::create):

  • platform/graphics/texmap/TextureMapperPlatformLayerProxy.cpp:

(WebCore::TextureMapperPlatformLayerProxy::activateOnCompositingThread):
(WebCore::TextureMapperPlatformLayerProxy::scheduleUpdateOnCompositorThread):

  • rendering/RenderLayerBacking.cpp:

(WebCore::RenderLayerBacking::updateConfiguration):
(WebCore::RenderLayerBacking::containsPaintedContent const):
(WebCore::RenderLayerBacking::contentChanged):

6:19 AM Changeset in webkit [267734] by Antti Koivisto
  • 11 edits in trunk/Source/WebCore

[LFC][Integration] Generalize run iterator for non-text runs
https://bugs.webkit.org/show_bug.cgi?id=217083

Reviewed by Zalan Bujtas.

Add RunIterator base for TextRunIterator.
Add type traits.
Naming improvements.

  • dom/Position.cpp:

(WebCore::Position::upstream const):
(WebCore::Position::downstream const):

  • editing/TextIterator.cpp:

(WebCore::TextIterator::handleTextRun):

  • layout/integration/LayoutIntegrationLineLayout.cpp:

(WebCore::LayoutIntegration::LineLayout::textRunsFor const):
(WebCore::LayoutIntegration::LineLayout::runFor const):
(WebCore::LayoutIntegration::LineLayout::elementRunFor const): Deleted.

  • layout/integration/LayoutIntegrationLineLayout.h:
  • layout/integration/LayoutIntegrationRunIterator.cpp:

(WebCore::LayoutIntegration::RunIterator::RunIterator):
(WebCore::LayoutIntegration::RunIterator::traverseNextTextRunInVisualOrder):
(WebCore::LayoutIntegration::RunIterator::traverseNextTextRunInTextOrder):
(WebCore::LayoutIntegration::RunIterator::operator== const):
(WebCore::LayoutIntegration::RunIterator::atEnd const):
(WebCore::LayoutIntegration::TextRunIterator::TextRunIterator):
(WebCore::LayoutIntegration::runFor):
(WebCore::LayoutIntegration::TextRunIterator::traverseNextInVisualOrder): Deleted.
(WebCore::LayoutIntegration::TextRunIterator::traverseNextInTextOrder): Deleted.
(WebCore::LayoutIntegration::TextRunIterator::operator== const): Deleted.
(WebCore::LayoutIntegration::TextRunIterator::atEnd const): Deleted.
(WebCore::LayoutIntegration::ElementRunIterator::ElementRunIterator): Deleted.
(WebCore::LayoutIntegration::ElementRunIterator::atEnd const): Deleted.
(WebCore::LayoutIntegration::elementRunFor): Deleted.

  • layout/integration/LayoutIntegrationRunIterator.h:

(WebCore::LayoutIntegration::RunIterator::RunIterator):
(WebCore::LayoutIntegration::RunIterator::operator!= const):
(WebCore::LayoutIntegration::RunIterator::operator* const):
(WebCore::LayoutIntegration::RunIterator::operator-> const):
(WebCore::LayoutIntegration::TextRunIterator::TextRunIterator):
(WebCore::LayoutIntegration::TextRunIterator::operator++):
(WebCore::LayoutIntegration::TextRunIterator::operator* const):
(WebCore::LayoutIntegration::TextRunIterator::operator-> const):
(WebCore::LayoutIntegration::TextRunIterator::get const):
(WebCore::LayoutIntegration::Run::isText const):
(WebCore::LayoutIntegration::Run::minimumCaretOffset const):
(WebCore::LayoutIntegration::Run::maximumCaretOffset const):
(WebCore::LayoutIntegration::TextRun::isLastTextRunOnLine const):
(WebCore::LayoutIntegration::TextRun::isLastTextRun const):
(isType):
(WebCore::LayoutIntegration::TextRunIterator::operator bool const): Deleted.
(WebCore::LayoutIntegration::TextRunIterator::operator!= const): Deleted.
(WebCore::LayoutIntegration::TextRunIterator::operator== const): Deleted.
(WebCore::LayoutIntegration::ElementRunIterator::ElementRunIterator): Deleted.
(WebCore::LayoutIntegration::ElementRunIterator::operator bool const): Deleted.
(WebCore::LayoutIntegration::ElementRunIterator::operator* const): Deleted.
(WebCore::LayoutIntegration::ElementRunIterator::operator-> const): Deleted.
(WebCore::LayoutIntegration::TextRun::isLastOnLine const): Deleted.
(WebCore::LayoutIntegration::TextRun::isLast const): Deleted.

  • layout/integration/LayoutIntegrationRunIteratorLegacyPath.h:

(WebCore::LayoutIntegration::LegacyPath::isText const):
(WebCore::LayoutIntegration::LegacyPath::minimumCaretOffset const):
(WebCore::LayoutIntegration::LegacyPath::maximumCaretOffset const):
(WebCore::LayoutIntegration::LegacyPath::isLastTextRunOnLine const):
(WebCore::LayoutIntegration::LegacyPath::isLastTextRun const):
(WebCore::LayoutIntegration::LegacyPath::isLastOnLine const): Deleted.
(WebCore::LayoutIntegration::LegacyPath::isLast const): Deleted.

  • layout/integration/LayoutIntegrationRunIteratorModernPath.h:

(WebCore::LayoutIntegration::ModernPath::isText const):
(WebCore::LayoutIntegration::ModernPath::minimumCaretOffset const):
(WebCore::LayoutIntegration::ModernPath::maximumCaretOffset const):
(WebCore::LayoutIntegration::ModernPath::isLastTextRunOnLine const):
(WebCore::LayoutIntegration::ModernPath::isLastTextRun const):
(WebCore::LayoutIntegration::ModernPath::isLastOnLine const): Deleted.
(WebCore::LayoutIntegration::ModernPath::isLast const): Deleted.

  • rendering/RenderLineBreak.cpp:

(WebCore::RenderLineBreak::linesBoundingBox const):
(WebCore::RenderLineBreak::boundingBoxForRenderTreeDump const):
(WebCore::RenderLineBreak::absoluteRects const):
(WebCore::RenderLineBreak::absoluteQuads const):

  • rendering/RenderText.cpp:

(WebCore::containsOffset):

6:12 AM Changeset in webkit [267733] by Alan Bujtas
  • 6 edits in trunk/Source/WebCore

[LFC][IFC] LineBreaker renames
https://bugs.webkit.org/show_bug.cgi?id=217067

Reviewed by Antti Koivisto.

The following functions and structures have evolved over time. Let's sync up their names.

LineBreaker::shouldWrapInlineContent -> processInlineContent -> it's not just a "should wrap now" function anymore.
LineBreaker::tryWrappingInlineContent -> processOverflowingContent -> It does both wrapping and breaking.
LineBreaker::wrapTextContent -> processOverflowingTextContent same as above
struct WrappedTextContent -> TrailingTextContent -> it holds information about the trailing content after wrapping/breaking.
LineBreaker::Result::Action::Split -> Break -> closer to spec term.
(This patch also changes some unsigned to size_t.)

  • layout/inlineformatting/InlineFormattingContext.cpp:

(WebCore::Layout::InlineFormattingContext::lineLayout):

  • layout/inlineformatting/InlineLineBreaker.cpp:

(WebCore::Layout::LineBreaker::processInlineContent):
(WebCore::Layout::LineBreaker::processOverflowingContent const):
(WebCore::Layout::LineBreaker::processOverflowingTextContent const):
(WebCore::Layout::LineBreaker::tryBreakingTextRun const):
(WebCore::Layout::LineBreaker::shouldWrapInlineContent): Deleted.
(WebCore::Layout::LineBreaker::tryWrappingInlineContent const): Deleted.
(WebCore::Layout::LineBreaker::wrapTextContent const): Deleted.

  • layout/inlineformatting/InlineLineBreaker.h:
  • layout/inlineformatting/InlineLineBuilder.cpp:

(WebCore::Layout::LineBuilder::layoutInlineContent):
(WebCore::Layout::LineBuilder::placeInlineContent):
(WebCore::Layout::LineBuilder::nextContentForLine):
(WebCore::Layout::LineBuilder::handleFloatsAndInlineContent):

  • layout/inlineformatting/InlineLineBuilder.h:
2:04 AM Changeset in webkit [267732] by ysuzuki@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

Unreviewed, attempt to fix WinCairo build failure part 2
https://bugs.webkit.org/show_bug.cgi?id=217071

  • ftl/FTLOperations.h:
1:50 AM Changeset in webkit [267731] by ysuzuki@apple.com
  • 3 edits in trunk/Source/JavaScriptCore

Unreviewed, attempt to fix WinCairo build failure
https://bugs.webkit.org/show_bug.cgi?id=217071

  • ftl/FTLOperations.h:
  • tools/JSDollarVM.cpp:
12:44 AM Changeset in webkit [267730] by commit-queue@webkit.org
  • 6 edits
    2 adds in trunk

Data URL image is not rendered if there is whitespace between the mime type and and "base64" string
https://bugs.webkit.org/show_bug.cgi?id=216900

Patch by Said Abou-Hallawa <sabouhallawa@apple.com> on 2020-09-29
Reviewed by Darin Adler.

LayoutTests/imported/w3c:

  • web-platform-tests/fetch/data-urls/processing.any-expected.txt:
  • web-platform-tests/fetch/data-urls/processing.any.worker-expected.txt:

Source/WebCore:

According to https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/Data_URIs,
spaces are allowed in the data URL to allow better formatting. This
means spaces may appear before and after the comma and the semicolon
(if it exits in the Data URL).

Test: fast/images/image-data-url-with-spaces.html

  • platform/network/DataURLDecoder.cpp:

(WebCore::DataURLDecoder::DecodeTask::process):

LayoutTests:

In the new test, 16 cases are included to cover all the permutations of
adding spaces before and after the comma and the semicolon. PNG and JPEG
formats are used to ensure the mime type is tested.

  • fast/images/image-data-url-with-spaces-expected.html: Added.
  • fast/images/image-data-url-with-spaces.html: Added.
12:20 AM Changeset in webkit [267729] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebKit

[GTK] Stop using the default website data store for the inspector
https://bugs.webkit.org/show_bug.cgi?id=217034

Patch by Carlos Garcia Campos <cgarcia@igalia.com> on 2020-09-29
Reviewed by Michael Catanzaro.

The GTK should never use the default website data store. Use a dedicated website data store for the inspector
with its own configuration to store persistent data.

  • UIProcess/Inspector/gtk/WebInspectorProxyGtk.cpp:

(WebKit::inspectorWebsiteDataStore):
(WebKit::WebInspectorProxy::platformCreateFrontendPage):

Sep 28, 2020:

11:25 PM Changeset in webkit [267728] by Jonathan Bedard
  • 3 edits in trunk/Tools

[webkitpy] Use webkitcorepy's auto installer for pycodestyle (Follow-up fix)
https://bugs.webkit.org/show_bug.cgi?id=215427
<rdar://problem/66931291>

Unreviewed follow-up fix.

Conflict resolution at some point broke the original change.

  • Scripts/webkitpy/style/checkers/python.py: Import directly from pycodestyle.
  • Scripts/webkitpy/thirdparty/init.py:

(AutoinstallImportHook._install_pycodestyle): Deleted.

10:51 PM Changeset in webkit [267727] by ysuzuki@apple.com
  • 131 edits in trunk/Source

Use JSC_DECLARE_JIT_OPERATION / JSC_DECLARE_CUSTOM_GETTER / JSC_DECLARE_CUSTOM_SETTER
https://bugs.webkit.org/show_bug.cgi?id=217071

Reviewed by Keith Miller.

Source/JavaScriptCore:

This patch changes how to define JIT_OPERATIONs including custom getters and setters.
We introduce JSC_DECLARE_JIT_OPERATION etc. to declare and define them. This is useful
to perform some additional things (like, JIT-caging registering) for each function.

Source/WebCore:

No behavior change.

Source/WTF:

Add the following macros.

  1. JSC_DECLARE_JIT_OPERATION
  2. JSC_DEFINE_JIT_OPERATION
  3. JSC_DECLARE_CUSTOM_GETTER
  4. JSC_DEFINE_CUSTOM_GETTER
  5. JSC_DECLARE_CUSTOM_SETTER
  6. JSC_DEFINE_CUSTOM_SETTER
  • wtf/PlatformCallingConventions.h:
9:54 PM Changeset in webkit [267726] by mark.lam@apple.com
  • 21 edits in trunk

Add Bounds Check Elimination validation for debugging.
https://bugs.webkit.org/show_bug.cgi?id=217055
rdar://69122891

Reviewed by Keith Miller.

Source/JavaScriptCore:

Added a JSC_validateBoundsCheckElimination option (with alias
JSC_validateBCE) that adds an AssertInBounds whenever a CheckInBounds
node is elided.

  • dfg/DFGAbstractInterpreterInlines.h:

(JSC::DFG::AbstractInterpreter<AbstractStateType>::executeEffects):

  • dfg/DFGClobberize.h:

(JSC::DFG::clobberize):

  • dfg/DFGDoesGC.cpp:

(JSC::DFG::doesGC):

  • dfg/DFGFixupPhase.cpp:

(JSC::DFG::FixupPhase::fixupNode):

  • dfg/DFGIntegerCheckCombiningPhase.cpp:

(JSC::DFG::IntegerCheckCombiningPhase::handleBlock):

  • dfg/DFGIntegerRangeOptimizationPhase.cpp:
  • dfg/DFGNodeType.h:
  • dfg/DFGOperations.h:
  • dfg/DFGPredictionPropagationPhase.cpp:
  • dfg/DFGSafeToExecute.h:

(JSC::DFG::safeToExecute):

  • dfg/DFGSpeculativeJIT32_64.cpp:

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

  • dfg/DFGSpeculativeJIT64.cpp:

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

  • dfg/DFGValidate.cpp:
  • ftl/FTLCapabilities.cpp:

(JSC::FTL::canCompile):

  • ftl/FTLLowerDFGToB3.cpp:

(JSC::FTL::DFG::LowerDFGToB3::validateAIState):
(JSC::FTL::DFG::LowerDFGToB3::compileNode):
(JSC::FTL::DFG::LowerDFGToB3::compileAssertNotEmpty):
(JSC::FTL::DFG::LowerDFGToB3::compileAssertInBounds):

  • ftl/FTLOperations.cpp:

(JSC::FTL::operationReportBoundsCheckEliminationErrorAndCrash):

  • ftl/FTLOperations.h:
  • runtime/OptionsList.h:

Tools:

Added --validateBCE=true to ftl-no-cjit-validate-sampling-profiler
and ftl-eager-no-cjit.

  • Scripts/run-jsc-stress-tests:
9:52 PM Changeset in webkit [267725] by Peng Liu
  • 15 edits
    1 copy in trunk/Source

[Media in GPU Process] Use VideoLayerManager to manage layers of MediaPlayerPrivateRemote
https://bugs.webkit.org/show_bug.cgi?id=216995

Reviewed by Eric Carlson.

Source/WebCore:

No new tests since no functional changes.

  • Headers.cmake:

Export TextTrackRepresentation and VideoLayerManager.

  • WebCore.xcodeproj/project.pbxproj:

Add VideoLayerManager.h.
Export TextTrackRepresentation, WebVideoContainerLayer and VideoLayerManager.

  • platform/graphics/TextTrackRepresentation.cpp:
  • platform/graphics/TextTrackRepresentation.h:

Minor clean-up.

  • platform/graphics/VideoLayerManager.h: Added.

Add this interface so that we can use VideoLayerManager in the C++ code.

  • platform/graphics/avfoundation/objc/VideoLayerManagerObjC.h:
  • platform/graphics/avfoundation/objc/VideoLayerManagerObjC.mm:

(WebCore::VideoLayerManagerObjC::videoInlineLayer const):
(WebCore::VideoLayerManagerObjC::videoFullscreenLayer const):
(WebCore::VideoLayerManagerObjC::videoFullscreenFrame const):
(WebCore::VideoLayerManagerObjC::updateVideoFullscreenInlineImage):
Fix the issue when RELEASE_LOG_DISABLED is defined and add WEBCORE_EXPORT
to some functions.

Source/WebKit:

This patch removes the remote hosting layer in the GPU process for video fullscreen and
picture-in-picture. We don't need to keep a layer in the GPU process for video fullscreen
and picture-in-picture because no rendering will be done for that layer. We don't need
EnterFullscreen, ExitFullscreen and SetVideoFullscreenFrameFenced IPC messages after removing
the layer because the RemoteMediaPlayerPrivateRemote in the web process can deal with
the video presentation mode change.

  • GPUProcess/media/RemoteMediaPlayerProxy.h:
  • GPUProcess/media/RemoteMediaPlayerProxy.messages.in:
  • GPUProcess/media/cocoa/RemoteMediaPlayerProxyCocoa.mm:

(WebKit::RemoteMediaPlayerProxy::prepareForPlayback):
(WebKit::RemoteMediaPlayerProxy::enterFullscreen): Deleted.
(WebKit::RemoteMediaPlayerProxy::exitFullscreen): Deleted.
(WebKit::RemoteMediaPlayerProxy::setVideoFullscreenFrameFenced): Deleted.
Remove unused IPC messages after removing the remote hosting layer for video fullscreen
and picture-in-picture.

  • GPUProcess/media/gstreamer/RemoteMediaPlayerProxyGStreamer.cpp:

(WebKit::RemoteMediaPlayerProxy::prepareForPlayback):
(WebKit::RemoteMediaPlayerProxy::enterFullscreen): Deleted.
(WebKit::RemoteMediaPlayerProxy::exitFullscreen): Deleted.
Ditto.

  • WebProcess/GPU/media/MediaPlayerPrivateRemote.cpp:

(WebKit::MediaPlayerPrivateRemote::MediaPlayerPrivateRemote):
(WebKit::MediaPlayerPrivateRemote::~MediaPlayerPrivateRemote):
(WebKit::MediaPlayerPrivateRemote::prepareForPlayback):
Remove the code related to the remote hosting layer for video fullscreen and picture-in-picture.
(WebKit::MediaPlayerPrivateRemote::platformLayer const):
(WebKit::MediaPlayerPrivateRemote::setVideoFullscreenLayer):
Use VideoLayerManager to manage the layer.
(WebKit::MediaPlayerPrivateRemote::setVideoFullscreenFrame): Ditto.
(WebKit::MediaPlayerPrivateRemote::requiresTextTrackRepresentation const): Ditto.
(WebKit::MediaPlayerPrivateRemote::setTextTrackRepresentation): Ditto.
(WebKit::MediaPlayerPrivateRemote::syncTextTrackBounds): Ditto.
(WebKit::MediaPlayerPrivateRemote::setVideoFullscreenFrameFenced): Deleted.

  • WebProcess/GPU/media/MediaPlayerPrivateRemote.h:

Need to move the Logger up in the data members so that other members can use it
in the constructor, e.g., VideoLayerManager.

  • WebProcess/GPU/media/cocoa/MediaPlayerPrivateRemoteCocoa.mm:

(WebKit::MediaPlayerPrivateRemote::MediaPlayerPrivateRemote):
(WebKit::MediaPlayerPrivateRemote::createVideoFullscreenLayer):
(WebKit::MediaPlayerPrivateRemote::setVideoFullscreenFrame): Deleted.
(WebKit::MediaPlayerPrivateRemote::setTextTrackRepresentation): Deleted.
(WebKit::MediaPlayerPrivateRemote::syncTextTrackBounds): Deleted.
Simplify the implementation by managing layers with VideoLayerManager.

9:10 PM Changeset in webkit [267724] by commit-queue@webkit.org
  • 4 edits
    2 adds in trunk

webkitfullscreenchange does not fire for shadow DOM elements
https://bugs.webkit.org/show_bug.cgi?id=216607

Patch by Tetsuharu Ohzeki <Tetsuharu Ohzeki> on 2020-09-28
Reviewed by Ryosuke Niwa.

Source/WebCore:

This bug was caused by the webkitfullscreenchange event being fired
but without _composed_ flag set.

This patch fixed the bug by making it composed as defined as
the step 3-2 of https://fullscreen.spec.whatwg.org/#run-the-fullscreen-steps.
so that event listeners outside shadow tree could observe it.

Test: fast/shadow-dom/fullscreen-in-shadow-event-should-propagate.html

  • dom/FullscreenManager.cpp:

(WebCore::FullscreenManager::dispatchFullscreenChangeOrErrorEvent):

LayoutTests:

Added a regression test for making an element inside a shadow tree full screen,
and listening to webkitfullscreenchange outside the shadow tree.

  • fast/shadow-dom/fullscreen-in-shadow-event-should-propagate-expected.txt: Added.
  • fast/shadow-dom/fullscreen-in-shadow-event-should-propagate.html: Added.
  • platform/ios-wk2/TestExpectations:

Other testcases related to fullscreen API in fast/shadow-dom/ are also
disabled for ios-wk2.

8:49 PM Changeset in webkit [267723] by Devin Rousso
  • 19 edits in trunk

Web Inspector: add checkbox to local override popover to allow it to skip the network
https://bugs.webkit.org/show_bug.cgi?id=217031

Reviewed by Brian Burg.

Source/WebInspectorUI:

  • UserInterface/Models/LocalResourceOverride.js:

(WI.LocalResourceOverride):
(WI.LocalResourceOverride.create):
(WI.LocalResourceOverride.fromJSON):
(WI.LocalResourceOverride.prototype.toJSON):
(WI.LocalResourceOverride.prototype.get type): Added.
(WI.LocalResourceOverride.prototype.saveIdentityToCookie):
Introduce a WI.LocalResourceOverride.Type that is used when handling request/response
interceptions to determined the Network command for continuing.

  • UserInterface/Controllers/NetworkManager.js:

(WI.NetworkManager.supportsOverridingRequestsWithResponses): Added.
(WI.NetworkManager.supportsOverridingResponses): Added.
(WI.NetworkManager.prototype.initializeTarget):
(WI.NetworkManager.prototype.addLocalResourceOverride):
(WI.NetworkManager.prototype.removeLocalResourceOverride):
(WI.NetworkManager.prototype.requestIntercepted):
(WI.NetworkManager.prototype.responseIntercepted):
(WI.NetworkManager.prototype._commandArgumentsForInterception):
(WI.NetworkManager.prototype._addInterception): Added.
(WI.NetworkManager.prototype._removeInterception): Added.
(WI.NetworkManager.prototype._handleResourceOverrideDisabledChanged):
(WI.NetworkManager.supportsLocalResourceOverrides): Deleted.
Add logic for Network.interceptRequestWithResponse in Network.requestIntercepted.
Drive-by: refactor common logic into member functions.

  • UserInterface/Views/LocalResourceOverridePopover.js:

(WI.LocalResourceOverridePopover.prototype.get serializedData):
(WI.LocalResourceOverridePopover.prototype.show):

  • UserInterface/Views/LocalResourceOverridePopover.css:

(.popover .local-resource-override-popover-content .add-header + .reference-page-link-container): Added.
(.popover .local-resource-override-popover-content .options td): Added.
(.popover .local-resource-override-popover-content .reference-page-link-container): Deleted.
Add an "Options" row containing a "[ ] Skip Network" checkbox for controlling whether
Network.interceptWithResponse or Network.interceptRequestWithResponse is used.

  • UserInterface/Models/Resource.js:

(WI.Resource.prototype.async createLocalResourceOverride):

  • UserInterface/Views/ContextMenuUtilities.js:

(WI.appendContextMenuItemsForSourceCode):

  • UserInterface/Views/FontResourceContentView.js:

(WI.FontResourceContentView.prototype.contentAvailable):

  • UserInterface/Views/ImageResourceContentView.js:

(WI.ImageResourceContentView.prototype.contentAvailable):

  • UserInterface/Views/LocalResourceOverrideTreeElement.js:

(WI.LocalResourceOverrideTreeElement.prototype.willDismissPopover):

  • UserInterface/Views/OpenResourceDialog.js:

(WI.OpenResourceDialog.prototype._addLocalResourceOverrides):

  • UserInterface/Views/ResourceContentView.js:

(WI.ResourceContentView):
(WI.ResourceContentView.prototype.closed):

  • UserInterface/Views/SourcesNavigationSidebarPanel.js:

(WI.SourcesNavigationSidebarPanel):
(WI.SourcesNavigationSidebarPanel.prototype._willDismissLocalOverridePopover):
(WI.SourcesNavigationSidebarPanel.prototype._addLocalOverride):
(WI.SourcesNavigationSidebarPanel.prototype._removeResourceOverride):
(WI.SourcesNavigationSidebarPanel.prototype._populateCreateResourceContextMenu):
Rename supportsLocalResourceOverrides to supportsOverridingResponses for clarity.

  • Localizations/en.lproj/localizedStrings.js:

LayoutTests:

  • http/tests/inspector/network/local-resource-override-basic.html:
  • http/tests/inspector/network/local-resource-override-main-resource.html:
  • http/tests/inspector/network/local-resource-override-script-tag.html:
  • http/tests/inspector/network/resource-response-inspector-override.html:

Add expected parameter for WI.LocalResourceOverride.create calls.

5:38 PM Changeset in webkit [267722] by Alan Coon
  • 2 edits in branches/safari-610-branch/Source/WebCore

Cherry-pick r266899. rdar://problem/69586659

Integrator's note: as some of the symbols present on trunk are not available on branch, special modifications had to be made to this cherry-pick to build.

Address a post-commit review comment after r266887
https://bugs.webkit.org/show_bug.cgi?id=216257

Reviewed by Darin Adler.

Remove a check that currently makes us conditionally set IsComputedStyleInvalidFlag if there is a computed
style in rare data. There should be no change in behavior; this just makes the code a bit simpler.

  • dom/Element.cpp: (WebCore::Element::invalidateStyle): (WebCore::Element::storeDisplayContentsStyle):

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

5:38 PM Changeset in webkit [267721] by Alan Coon
  • 4 edits
    2 adds in branches/safari-610-branch

Cherry-pick r266887. rdar://problem/69586659

Integrator's note: as some of the symbols present on trunk are not available on branch, special modifications had to be made to this cherry-pick to build.

REGRESSION (r257839): clickpay.com - password placeholder text cannot be replaced
https://bugs.webkit.org/show_bug.cgi?id=216257
<rdar://problem/68150686>

Reviewed by Antti Koivisto.

Source/WebCore:

On clickpay.com, the field in the login form that contains the text "Password" is actually a plain text input,
referred to by the site's script as the "null text input". The page adds a focus event listener to this null
text input, and inside of this focus event listener, it reveals a hidden password field by removing an inline
display: none; style rule on the real password input element, programmatically focuses it, and then hides the
null text input by setting it to display: none; via inline style.

However, after the changes in r257839, we no longer attempt to do a style update upon programmatic focus in the
case where the programmatically focused element does not have a renderer yet (this applies to the password field
in this scenario, because it previously had display: none;). When we determine whether the newly displayed
password field is focusable using Element::isVisibleWithoutResolvingFullStyle, we then attempt to use either
the existing computed RenderStyle on the element, or perform a partial computed style resolution using the
ResolveComputedStyleMode::RenderedOnly flag.

But in the case where ElementRareData's computed style exists, it is not guaranteed to be up to date if the
inline style changed since the computed style was last set. In the context of this bug, it's actually Safari's
AutoFill logic (embedded in the injected bundle) that ends up asking for the computed style of the password
input, forcing it to be created and set (though, as demonstrated in the layout test, simply grabbing the
computed style is sufficient to replicate the bug outside of Safari).

The end result is that we'll use this stale computed style, which still believes that the password input is not
displayed, and we end up not focusing the element due to believing that the password input is hidden. To fix
this, we would need to either check whether the element has an invalid style (i.e. needsStyleRecalc()) before
attempting to use the existing computed style, or clear out the ElementRareData computed style anytime the
element's style is invalidated. However, both of these approaches will cause us to perform partial style
resolution much more aggressively, leading to a 2-3% regression in Speedometer.

To address the bug without hampering our performance wins from r257839, we add a new node flag so that we can
remember when computed styles are no longer valid due to style invalidation, and consult this flag in
Element::isVisibleWithoutResolvingFullStyle to avoid using the existing computed style.

Test: fast/forms/programmatic-focus-after-display.html

  • dom/Element.cpp: (WebCore::Element::invalidateStyle): (WebCore::Element::resolveComputedStyle): (WebCore::Element::isVisibleWithoutResolvingFullStyle const):
  • dom/Node.h: (WebCore::Node::setHasValidStyle):

LayoutTests:

Add a new layout test to verify that the bug does not occur. See WebCore/ChangeLog for more details.

  • fast/forms/programmatic-focus-after-display-expected.txt: Added.
  • fast/forms/programmatic-focus-after-display.html: Added.

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

4:58 PM Changeset in webkit [267720] by Karl Rackler
  • 2 edits in branches/safari-610-branch/LayoutTests

REGRESSION: [ iOS wk2 ] ( safari-610-branch ) fast/events/touch/ios/pointer-events-with-modifiers.html is a constant crash
rdar://69722963

Unreviewed test gardening.

  • platform/ios-simulator-wk2/TestExpectations:
4:48 PM Changeset in webkit [267719] by rniwa@webkit.org
  • 1 edit
    2 adds in trunk/LayoutTests

Document.p.contains returns true for nodes in shadow tree
https://bugs.webkit.org/show_bug.cgi?id=189164

Reviewed by Darin Adler.

Added a regression after r267220 had fixed this bug.

  • fast/shadow-dom/document-contains-returns-false-for-node-inside-shadow-tree-expected.txt: Added.
  • fast/shadow-dom/document-contains-returns-false-for-node-inside-shadow-tree.html: Added.
4:18 PM Changeset in webkit [267718] by Alan Coon
  • 1 copy in tags/Safari-611.1.1.1

Tag Safari-611.1.1.1.

3:09 PM Changeset in webkit [267717] by Alan Coon
  • 8 edits in branches/safari-611.1.1-branch/Source

Versioning.

WebKit-7611.1.1.1

3:05 PM Changeset in webkit [267716] by Alan Coon
  • 55 edits in branches/safari-610-branch/Source/WebCore

Apply patch. rdar://problem/69594082

2:11 PM Changeset in webkit [267715] by Keith Rollin
  • 2 edits in trunk

Print message saying what project is being built
https://bugs.webkit.org/show_bug.cgi?id=216865
<rdar://problem/69408135>

Reviewed by Andy Estes.

XCBuild removes the progress messages saying which project/target is
being built. We can't show the target, but update the Makefiles to at
least show which project is being built.

  • Makefile.shared:
1:26 PM Changeset in webkit [267714] by weinig@apple.com
  • 6 edits
    5 moves
    2 adds in trunk/Source

[Preferences] Move GeneratePreferences.rb and yaml configuration files to WTF to be shared
https://bugs.webkit.org/show_bug.cgi?id=217056

Reviewed by Darin Adler.

Move GeneratePreferences.rb and WebPreferences*.yaml files from WebKitLegacy to WTF, and install them into the existing
$SDKROOT/usr/local/install/wtf/Scripts for use by down stack projects.

Source/WebKitLegacy:

  • WebKitLegacy.xcodeproj/project.pbxproj:

Source/WebKitLegacy/mac:

Also adds new script, generate-preferences.sh, to make editing / reviewing the invocation a bit easier as you don't
have to use the tiny editor in the Run Scripts phase pane.

Adds new build variable, WTF_BUILD_SCRIPTS_DIR, to easily specify the new location of the moved files.

  • Configurations/WebKitLegacy.xcconfig:
  • Scripts/GeneratePreferences.rb: Removed.
  • Scripts/generate-preferences.sh: Added.
  • WebView/WebPreferences.yaml: Removed.
  • WebView/WebPreferencesDebug.yaml: Removed.
  • WebView/WebPreferencesExperimental.yaml: Removed.
  • WebView/WebPreferencesInternal.yaml: Removed.

Source/WTF:

  • Scripts/GeneratePreferences.rb: Copied from Source/WebKitLegacy/mac/Scripts/GeneratePreferences.rb.
  • Scripts/Preferences: Added.
  • Scripts/Preferences/WebPreferences.yaml: Copied from Source/WebKitLegacy/mac/WebView/WebPreferences.yaml.
  • Scripts/Preferences/WebPreferencesDebug.yaml: Copied from Source/WebKitLegacy/mac/WebView/WebPreferencesDebug.yaml.
  • Scripts/Preferences/WebPreferencesExperimental.yaml: Copied from Source/WebKitLegacy/mac/WebView/WebPreferencesExperimental.yaml.
  • Scripts/Preferences/WebPreferencesInternal.yaml: Copied from Source/WebKitLegacy/mac/WebView/WebPreferencesInternal.yaml.
  • WTF.xcodeproj/project.pbxproj:
1:21 PM Changeset in webkit [267713] by eric.carlson@apple.com
  • 10 edits in trunk/Source

[GPUP] Out-of-band TextTracks
https://bugs.webkit.org/show_bug.cgi?id=217062
<rdar://problem/68739969>

Reviewed by Jer Noble.
Source/WebCore:

Add support for passing out-of-band TextTracks to a media engine running in the GPU process.

No new tests, this can only be tested with a specific hardware setup.

  • html/HTMLMediaElement.cpp:

(WebCore::toPlatform):

  • platform/graphics/PlatformTextTrack.h: Put instance variables into a struct so

state can be encoded and decoded.
(WebCore::PlatformTextTrackData::PlatformTextTrackData):
(WebCore::PlatformTextTrackData::decode):
(WebCore::PlatformTextTrackData::encode const):
(WebCore::PlatformTextTrackClient::privateTrack):
(WebCore::PlatformTextTrack::create):
(WebCore::PlatformTextTrack::createOutOfBand):
(WebCore::PlatformTextTrack::type const):
(WebCore::PlatformTextTrack::kind const):
(WebCore::PlatformTextTrack::mode const):
(WebCore::PlatformTextTrack::label const):
(WebCore::PlatformTextTrack::language const):
(WebCore::PlatformTextTrack::url const):
(WebCore::PlatformTextTrack::uniqueId const):
(WebCore::PlatformTextTrack::isDefault const):
(WebCore::PlatformTextTrack::client const):
(WebCore::PlatformTextTrack::data const):
(WebCore::PlatformTextTrack::PlatformTextTrack):
(WebCore::PlatformTextTrack::captionMenuOffItem): Deleted.
(WebCore::PlatformTextTrack::captionMenuAutomaticItem): Deleted.

  • platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:

(WebCore::mediaDescriptionForKind):
(WebCore::MediaPlayerPrivateAVFoundationObjC::synchronizeTextTrackState):

Source/WebKit:

  • GPUProcess/media/RemoteMediaPlayerProxy.cpp:

(WebKit::RemoteMediaPlayerProxy::outOfBandTrackSources):

  • GPUProcess/media/RemoteMediaPlayerProxyConfiguration.h:

(WebKit::RemoteMediaPlayerProxyConfiguration::encode const):
(WebKit::RemoteMediaPlayerProxyConfiguration::decode):

  • Scripts/webkit/messages.py:
  • WebProcess/GPU/media/RemoteMediaPlayerManager.cpp:

(WebKit::RemoteMediaPlayerManager::createRemoteMediaPlayer):

  • WebProcess/GPU/media/RemoteMediaPlayerManager.h:
1:06 PM Changeset in webkit [267712] by Matt Lewis
  • 3 edits in trunk/Tools

Fix Build triggers for iOS, watchOS, and tvOS
https://bugs.webkit.org/show_bug.cgi?id=217057

Reviewed by Jonathan Bedard.

  • BuildSlaveSupport/build.webkit.org-config/wkbuild.py:
  • BuildSlaveSupport/build.webkit.org-config/wkbuild_unittest.py:

(ShouldBuildTest):
(ShouldBuildTest.test_should_build):

1:04 PM Changeset in webkit [267711] by Fujii Hironori
  • 7 edits
    2 adds in trunk

[TextureMapper] Enable a depth buffer for preserve-3d
https://bugs.webkit.org/show_bug.cgi?id=90078

Reviewed by Don Olmstead.

Source/WebCore:

Test: transforms/3d/general/preserve-3d.html

  • platform/graphics/egl/GLContextEGL.cpp:

(WebCore::GLContextEGL::getEGLConfig):

  • platform/graphics/texmap/TextureMapper.h:

(WebCore::TextureMapper::beginPreserves3D): Added a new virtual method.
(WebCore::TextureMapper::endPreserves3D): Ditto.

  • platform/graphics/texmap/TextureMapperGL.cpp:

(WebCore::TextureMapperGL::beginPainting):
(WebCore::createProjectionMatrix): Swapped nearValue and farValue
so that the depth buffer works as expected.
(WebCore::TextureMapperGL::beginPreserves3D): Added.
(WebCore::TextureMapperGL::endPreserves3D): Ditto.

  • platform/graphics/texmap/TextureMapperGL.h:
  • platform/graphics/texmap/TextureMapperLayer.cpp:

(WebCore::TextureMapperLayer::paintSelfAndChildren): Call
beginPreserves3D() and endPreserves3D() if m_state.preserves3D.

LayoutTests:

  • transforms/3d/general/preserve-3d-expected.html: Added.
  • transforms/3d/general/preserve-3d.html: Added.
12:54 PM Changeset in webkit [267710] by Jonathan Bedard
  • 3 edits in trunk/Tools

[webkitpy] Use webkitcorepy's auto installer for pycodestyle
https://bugs.webkit.org/show_bug.cgi?id=215427
<rdar://problem/66931291>

Reviewed by Darin Adler.

  • Scripts/webkitpy/init.py: Add pycodestyle.
  • Scripts/webkitpy/thirdparty/init.py:

(AutoinstallImportHook.find_module): Remove pycodestyle.

11:23 AM Changeset in webkit [267709] by Devin Rousso
  • 23 edits
    1 add in trunk

[iOS] unable to airplay directly loaded fullscreen video
https://bugs.webkit.org/show_bug.cgi?id=216858
<rdar://problem/68746321>

Reviewed by Eric Carlson.

Source/WebCore:

It's possible that MediaPlayerPrivate::wirelessVideoPlaybackDisabled is queried before a
"real" MediaPlayerPrivate (i.e. not NullMediaPlayerPrivate) is initialized through one
of the registered MediaPlayerFactory "engine"s. It's further possible that the value
returned by MediaPlayerPrivate::wirelessVideoPlaybackDisabled will change as the new
"real" MediaPlayerPrivate may have different logic. In this case, the MediaPlayer
doesn't update its client (and therefore nothing "up" the tree, including the client's
clients) with the new MediaPlayerPrivate::wirelessVideoPlaybackDisabled value, meaning
that the old value will still be used.

Add piping such that when the MediaPlayerFactory "engine" changes, the MediaPlayer
notifies its client (which is further piped "up" the tree to the client's clients) which
eventually causes MediaPlayerPrivate::wirelessVideoPlaybackDisabled to be re-evaluated.

  • html/HTMLMediaElement.cpp:

(WebCore::HTMLMediaElement::mediaEngineWasUpdated):

  • page/Page.h:
  • page/Page.cpp:

(WebCore::Page::playbackControlsMediaEngineChanged): Added.

  • page/ChromeClient.h:

(WebCore::ChromeClient::playbackControlsMediaEngineChanged): Added.

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

(WebCore::PlaybackSessionModelMediaElement::mediaEngineChanged): Added.

Source/WebKit:

It's possible that MediaPlayerPrivate::wirelessVideoPlaybackDisabled is queried before a
"real" MediaPlayerPrivate (i.e. not NullMediaPlayerPrivate) is initialized through one
of the registered MediaPlayerFactory "engine"s. It's further possible that the value
returned by MediaPlayerPrivate::wirelessVideoPlaybackDisabled will change as the new
"real" MediaPlayerPrivate may have different logic. In this case, the MediaPlayer
doesn't update its client (and therefore nothing "up" the tree, including the client's
clients) with the new MediaPlayerPrivate::wirelessVideoPlaybackDisabled value, meaning
that the old value will still be used.

Add piping such that when the MediaPlayerFactory "engine" changes, the MediaPlayer
notifies its client (which is further piped "up" the tree to the client's clients) which
eventually causes MediaPlayerPrivate::wirelessVideoPlaybackDisabled to be re-evaluated.

  • WebProcess/WebCoreSupport/WebChromeClient.h:
  • WebProcess/WebCoreSupport/WebChromeClient.cpp:

(WebKit::WebChromeClient::playbackControlsMediaEngineChanged): Added.

  • WebProcess/cocoa/PlaybackSessionManager.h:
  • WebProcess/cocoa/PlaybackSessionManager.mm:

(WebKit::PlaybackSessionManager::mediaEngineChanged): Added.

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

(-[WKWebView _wirelessVideoPlaybackDisabled]): Added.

  • UIProcess/Cocoa/PlaybackSessionManagerProxy.h:
  • UIProcess/Cocoa/PlaybackSessionManagerProxy.mm:

(WebKit::PlaybackSessionManagerProxy::wirelessVideoPlaybackDisabled): Added.
Create additional functions for piping data to tests.

Source/WebKitLegacy/mac:

It's possible that MediaPlayerPrivate::wirelessVideoPlaybackDisabled is queried before a
"real" MediaPlayerPrivate (i.e. not NullMediaPlayerPrivate) is initialized through one
of the registered MediaPlayerFactory "engine"s. It's further possible that the value
returned by MediaPlayerPrivate::wirelessVideoPlaybackDisabled will change as the new
"real" MediaPlayerPrivate may have different logic. In this case, the MediaPlayer
doesn't update its client (and therefore nothing "up" the tree, including the client's
clients) with the new MediaPlayerPrivate::wirelessVideoPlaybackDisabled value, meaning
that the old value will still be used.

Add piping such that when the MediaPlayerFactory "engine" changes, the MediaPlayer
notifies its client (which is further piped "up" the tree to the client's clients) which
eventually causes MediaPlayerPrivate::wirelessVideoPlaybackDisabled to be re-evaluated.

  • WebCoreSupport/WebChromeClient.h:
  • WebCoreSupport/WebChromeClient.mm:

(WebChromeClient::playbackControlsMediaEngineChanged): Added.

  • WebView/WebViewInternal.h:
  • WebView/WebView.mm:

(-[WebView _playbackControlsMediaEngineChanged]): Added.

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/MediaDocument.mm: Added.

(MediaDocument.WirelessPlaybackEnabled):

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
11:23 AM Changeset in webkit [267708] by Alan Coon
  • 8 edits in branches/safari-611.1.2-branch/Source

Versioning.

WebKit-7611.1.2

11:16 AM Changeset in webkit [267707] by Alan Coon
  • 1 copy in branches/safari-611.1.2-branch

New branch.

11:14 AM Changeset in webkit [267706] by Darin Adler
  • 2 edits in trunk/Source/WebCore

REGRESSION (r267329): Crash due to null-dereference of frame pointer in DOMSelection::rangeCount
https://bugs.webkit.org/show_bug.cgi?id=217053

Reviewed by Sam Weinig.

Later as a follow-up it would be nice to add a test case, but not obvious how to
make a simple one quickly.

  • page/DOMSelection.cpp:

(WebCore::DOMSelection::rangeCount const): Fixed the null check.

10:46 AM Changeset in webkit [267705] by aakash_jain@apple.com
  • 6 edits in trunk/Tools

Notify igalia team about pre-existing test failures and build failures for WPE and GTK queues
https://bugs.webkit.org/show_bug.cgi?id=217052

Reviewed by Jonathan Bedard.

  • BuildSlaveSupport/ews-build/send_email.py:

(send_email_to_bot_watchers): Moved the logic here to determine whether to email igalia folks.

  • BuildSlaveSupport/ews-build/steps.py:

(AnalyzeCompileWebKitResults.send_email_for_preexisting_build_failure): Passed builder_name parameter.
(AnalyzeJSCTestsResults.send_email_for_flaky_failure):
(AnalyzeJSCTestsResults.send_email_for_pre_existing_failure):
(ReRunWebKitTests.send_email_for_flaky_failure):
(AnalyzeLayoutTestsResults.send_email_for_flaky_failure):
(AnalyzeLayoutTestsResults.send_email_for_pre_existing_failure):
(AnalyzeAPITestsResults.send_email_for_flaky_failure):
(AnalyzeAPITestsResults.send_email_for_pre_existing_failure):

  • BuildSlaveSupport/ews-build/steps_unittest.py:

(TestAnalyzeJSCTestsResults.configureStep): Drive-by fix to improve unit-test.

  • BuildSlaveSupport/ews-build/emails.json: Added IGALIA_GTK_WPE_EMAILS. Renamed BOT_WATCHERS_EMAILS to APPLE_BOT_WATCHERS_EMAILS.
  • BuildSlaveSupport/ews-build/email_unittest.py: Updated unit-test.
10:07 AM Changeset in webkit [267704] by Matt Lewis
  • 3 edits in trunk/Tools

Unreviewed dashboard fix.

  • BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Scripts/Dashboard.js:
  • BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Scripts/WebKitBuildbot.js:

(WebKitBuildbot):

10:05 AM Changeset in webkit [267703] by Alan Bujtas
  • 2 edits in trunk/LayoutTests

Unreviewed, test gardening.

9:07 AM Changeset in webkit [267702] by Chris Dumez
  • 4 edits in trunk/LayoutTests

Unreviewed, mark webaudio/the-audio-api/the-analysernode-interface/test-analyser-output.html as flaky instead of skipping it entirely.

This test is no longer timing out.

LayoutTests/imported/w3c:

  • web-platform-tests/webaudio/the-audio-api/the-analysernode-interface/test-analyser-output-expected.txt:

LayoutTests:

8:37 AM Changeset in webkit [267701] by Aditya Keerthi
  • 29 edits
    4 adds in trunk

[macOS] Update the appearance of editable date/time controls to match the system
https://bugs.webkit.org/show_bug.cgi?id=216616
<rdar://problem/69004603>

Reviewed by Devin Rousso.

Source/WebCore:

The default appearance of editable components within the date/time
control should closely match NSDatePicker.

  1. Focused components should have rounded corners

This is achieved by adding the border-radius property to the
datetime-edit fields.

  1. Use a raised colon separator for time inputs

The colon should be raised as it is surrounded two numbers. However,
since the colon is rendered in its own <div>, it remains lowered. To
raise the colon, the "ss03" font-feature-setting is enabled. Note that
this can cause issues with fonts that use "ss03" for a different purpose.
However, since we do not have support for the @font-feature-values rule
in CSS, there is currently no way to workaround this problem. Instead,
the issue should be fixed once we gain CSS support.

  1. Components should have a fixed width, and the width of the control should match the content

Since the control is not guaranteed to use a monospace font, the current
design results in editable components being resized each time the value
changes. To fix this issue, the display type was changed to inline-block
and the min-width of a component is computed at runtime. See below for
more details.

  • css/html.css:

Added UA stylesheet code that was removed from RenderTheme.

(input::-webkit-datetime-edit):
(input::-webkit-datetime-edit-year-field,):

Display inline-block allows us to set a fixed width for individual
components. The text is center-aligned so that changes are not
jarring. Finally, the font property is now "inherit !important",
as it does not make sense for the font used in a component to
differ from the control's font.

(input::-webkit-datetime-edit-year-field:focus,): Add rounded corners on focus.

  • html/shadow/DateTimeFieldElement.cpp:

(WebCore::DateTimeFieldElement::DateTimeFieldElement):

  • html/shadow/DateTimeFieldElements.cpp: Call setHasCustomStyleResolveCallbacks() to compute min-width.

(WebCore::DateTimeMillisecondFieldElement::DateTimeMillisecondFieldElement): Drive-by fix - milliseconds component has 3 digits.

  • html/shadow/DateTimeNumericFieldElement.cpp:

(WebCore::DateTimeNumericFieldElement::resolveCustomStyle):

The min-width of a numeric field should be the largest possible width
depending on the font, the largest digit character in the font and the
length of the field. Ten possible values are tested (0-9).

  • html/shadow/DateTimeNumericFieldElement.h:
  • html/shadow/DateTimeSymbolicFieldElement.cpp:

(WebCore::DateTimeSymbolicFieldElement::resolveCustomStyle):

The min-width of a symbolic field should be the largest symbol given
a font. Two (meridiem) to twelve (month) values may be tested.

  • html/shadow/DateTimeSymbolicFieldElement.h:
  • rendering/RenderTheme.cpp:
  • rendering/RenderTheme.h: Moved code to html.css.
  • rendering/RenderThemeMac.h:
  • rendering/RenderThemeMac.mm: Moved code to html.css.
  • style/UserAgentStyle.cpp:

(WebCore::Style::UserAgentStyle::ensureDefaultStyleSheetsForElement): Moved code to html.css.

  • style/UserAgentStyle.h:

LayoutTests:

Updated stylesheets so that font properties are not set on inner elements
of the control and rebaselined existing tests.

  • fast/forms/date/date-editable-components/date-editable-components-focus-and-blur-events.html:
  • fast/forms/date/date-editable-components/date-editable-components-mouse-events.html:
  • fast/forms/date/date-pseudo-elements.html:
  • fast/forms/datetimelocal/datetimelocal-editable-components/datetimelocal-editable-components-focus-and-blur-events.html:
  • fast/forms/datetimelocal/datetimelocal-editable-components/datetimelocal-editable-components-mouse-events.html:
  • fast/forms/time/time-editable-components/time-editable-components-focus-and-blur-events.html:
  • fast/forms/time/time-editable-components/time-editable-components-mouse-events.html:
  • platform/ios-wk2/imported/w3c/web-platform-tests/html/rendering/widgets/appearance/default-styles-expected.txt:
  • platform/ios-wk2/imported/w3c/web-platform-tests/html/rendering/widgets/baseline-alignment-and-overflow.tentative-expected.txt:

The newly failing tests for <input type=week> are a false negative.
Previously, the style for this input type was empty, causing some
tests to incorrectly pass. The new failures are consistent with the
other date/time inputs, see the rest of the expectations for specifics.

  • platform/mac-catalina/fast/forms/date/date-input-rendering-basic-expected.txt:
  • platform/mac-catalina/fast/forms/time/time-input-rendering-basic-expected.txt: Added.
  • platform/mac-mojave/fast/forms/date/date-input-rendering-basic-expected.txt:
  • platform/mac-mojave/fast/forms/time/time-input-rendering-basic-expected.txt: Added.
  • platform/mac-wk2/fast/forms/date/date-input-rendering-basic-expected.txt:
  • platform/mac-wk2/fast/forms/date/date-pseudo-elements-expected.txt:
  • platform/mac-wk2/fast/forms/time/time-input-rendering-basic-expected.txt:
8:00 AM Changeset in webkit [267700] by Alan Bujtas
  • 5 edits
    2 adds in trunk

[LFC][Floats] Add support for clear on float box
https://bugs.webkit.org/show_bug.cgi?id=217045

Reviewed by Antti Koivisto.

Source/WebCore:

When the float box also has to clear other floats, we need to adjust the initial
vertical position from where we start searching for available space.
(This patch also fixes a previous find&replace renaming and addresses a post-landing comment.)

Test: fast/layoutformattingcontext/float-with-clear-simple.html

  • layout/floats/FloatingContext.cpp:

(WebCore::Layout::FloatingContext::positionForFloat const):
(WebCore::Layout::FloatingContext::positionForNonFloatingFloatAvoider const):
(WebCore::Layout::FloatingContext::absoluteCoordinates const):
(WebCore::Layout::FloatingContext::absoluteBoxGeometryCoordinates const): Deleted.

  • layout/floats/FloatingContext.h:

LayoutTests:

  • fast/layoutformattingcontext/float-with-clear-simple-expected.html: Added.
  • fast/layoutformattingcontext/float-with-clear-simple.html: Added.
7:55 AM Changeset in webkit [267699] by Aditya Keerthi
  • 8 edits in trunk/Source/WebCore

Crash under DateTimeEditElement::blurFromField
https://bugs.webkit.org/show_bug.cgi?id=216930
<rdar://problem/69308322>

Reviewed by Ryosuke Niwa.

DateTimeEditElement::blurFromField incorrectly invoked
HTMLElement::dispatchBlurEvent, as it was not the element being blurred.
Accessing member variables after this call is unsafe, as there is
nothing protecting the DateTimeEditElement.

To fix, the problematic methods were removed entirely, and replaced
with a new approach to responding to blur events within a DateTimeEditElement.

The blur event's relatedTarget is now compared to the fields within the
DateTimeEditElement, in order to determine when to close the calendar.
This approach is safe, since the relatedTarget is protected by
Document::setFocusedElement.

  • html/BaseDateAndTimeInputType.cpp:

(WebCore::BaseDateAndTimeInputType::elementDidBlur): Remove unnecessary call.

If the input has editable fields, closing the calendar is handled by the
new codepath. Running this code unconditionally will result in a flash of the
calendar when clicking on a part of the input type that doesn't contain
an editable field.

  • html/shadow/DateTimeEditElement.cpp:

(WebCore::DateTimeEditElement::didBlurFromField):

Check if the event's relatedTarget is another field within the same
DateTimeEditElement. If yes, the calendar should remain open.

  • html/shadow/DateTimeEditElement.h:
  • html/shadow/DateTimeFieldElement.cpp:

(WebCore::DateTimeFieldElement::defaultEventHandler):

Call handleBlurEvent() if a blur event occurs. This was previously done by
the now-removed dispatchBlurEvent override.

(WebCore::DateTimeFieldElement::handleBlurEvent):

  • html/shadow/DateTimeFieldElement.h:
  • html/shadow/DateTimeNumericFieldElement.cpp:

(WebCore::DateTimeNumericFieldElement::handleBlurEvent):

  • html/shadow/DateTimeNumericFieldElement.h:
7:34 AM Changeset in webkit [267698] by youenn@apple.com
  • 3 edits in trunk/Source/WebKit

Make sure our calls to AVCaptureDevice requestAccessForMediaType do processing on the main thread
https://bugs.webkit.org/show_bug.cgi?id=216974

Reviewed by Darin Adler.

The completion handler to [AVCaptureDeviceClass requestAccessForMediaType:] may sometimes be called in a background thread on iOS.
Make sure to hop to the main thread if that is the case.
Also make sure to ref/weakref lambda captured variables.

  • UIProcess/Cocoa/UIDelegate.h:
  • UIProcess/Cocoa/UIDelegate.mm:

(WebKit::requestAccessForMediaType):
(WebKit::UIDelegate::UIClient::decidePolicyForUserMediaPermissionRequest):

6:42 AM Changeset in webkit [267697] by Antti Koivisto
  • 12 edits
    4 moves in trunk/Source/WebCore

[LFC][Integration] Move run iterator to LayoutIntegration namespace
https://bugs.webkit.org/show_bug.cgi?id=217046

Reviewed by Zalan Bujtas.

Also use name 'Modern' for LFC and 'Legacy' for the old inline tree path.

Also rename box->run for more consistent terminology.

  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • dom/Position.cpp:

(WebCore::Position::upstream const):
(WebCore::Position::downstream const):

  • editing/TextIterator.cpp:

(WebCore::TextIterator::advance):
(WebCore::TextIterator::handleTextNode):
(WebCore::TextIterator::handleTextRun):
(WebCore::TextIterator::handleTextNodeFirstLetter):
(WebCore::TextIterator::handleTextBox): Deleted.

  • editing/TextIterator.h:
  • layout/integration/LayoutIntegrationLineLayout.cpp:

(WebCore::LayoutIntegration::LineLayout::textRunsFor const):
(WebCore::LayoutIntegration::LineLayout::elementRunFor const):
(WebCore::LayoutIntegration::LineLayout::paint):
(WebCore::LayoutIntegration::LineLayout::textBoxesFor const): Deleted.
(WebCore::LayoutIntegration::LineLayout::elementBoxFor const): Deleted.

  • layout/integration/LayoutIntegrationLineLayout.h:
  • layout/integration/LayoutIntegrationRunIterator.cpp: Renamed from Source/WebCore/rendering/line/LineLayoutTraversal.cpp.

(WebCore::LayoutIntegration::TextRunIterator::TextRunIterator):
(WebCore::LayoutIntegration::TextRunIterator::traverseNextInVisualOrder):
(WebCore::LayoutIntegration::TextRunIterator::traverseNextInTextOrder):
(WebCore::LayoutIntegration::TextRunIterator::operator== const):
(WebCore::LayoutIntegration::TextRunIterator::atEnd const):
(WebCore::LayoutIntegration::firstTextRunFor):
(WebCore::LayoutIntegration::firstTextRunInTextOrderFor):
(WebCore::LayoutIntegration::textRunsFor):
(WebCore::LayoutIntegration::ElementRunIterator::ElementRunIterator):
(WebCore::LayoutIntegration::ElementRunIterator::atEnd const):
(WebCore::LayoutIntegration::elementRunFor):

  • layout/integration/LayoutIntegrationRunIterator.h: Renamed from Source/WebCore/rendering/line/LineLayoutTraversal.h.

(WebCore::LayoutIntegration::TextRunIterator::TextRunIterator):
(WebCore::LayoutIntegration::TextRunIterator::operator++):
(WebCore::LayoutIntegration::TextRunIterator::operator!= const):
(WebCore::LayoutIntegration::TextRunIterator::operator* const):
(WebCore::LayoutIntegration::TextRunIterator::operator-> const):
(WebCore::LayoutIntegration::ElementRunIterator::ElementRunIterator):
(WebCore::LayoutIntegration::ElementRunIterator::operator* const):
(WebCore::LayoutIntegration::ElementRunIterator::operator-> const):
(WebCore::LayoutIntegration::TextRunRange::TextRunRange):
(WebCore::LayoutIntegration::TextRunRange::begin const):
(WebCore::LayoutIntegration::Run::Run):
(WebCore::LayoutIntegration::Run::rect const):
(WebCore::LayoutIntegration::Run::baseline const):
(WebCore::LayoutIntegration::Run::isLeftToRightDirection const):
(WebCore::LayoutIntegration::Run::isHorizontal const):
(WebCore::LayoutIntegration::Run::dirOverride const):
(WebCore::LayoutIntegration::Run::isLineBreak const):
(WebCore::LayoutIntegration::Run::useLineBreakBoxRenderTreeDumpQuirk const):
(WebCore::LayoutIntegration::TextRun::hasHyphen const):
(WebCore::LayoutIntegration::TextRun::TextRun):
(WebCore::LayoutIntegration::TextRun::text const):
(WebCore::LayoutIntegration::TextRun::localStartOffset const):
(WebCore::LayoutIntegration::TextRun::localEndOffset const):
(WebCore::LayoutIntegration::TextRun::length const):
(WebCore::LayoutIntegration::TextRun::isLastOnLine const):
(WebCore::LayoutIntegration::TextRun::isLast const):

  • layout/integration/LayoutIntegrationRunIteratorLegacyPath.h: Renamed from Source/WebCore/rendering/line/LineLayoutTraversalComplexPath.h.

(WebCore::LayoutIntegration::LegacyPath::LegacyPath):
(WebCore::LayoutIntegration::LegacyPath::operator== const):
(WebCore::LayoutIntegration::LegacyPath::nextInlineTextBoxInTextOrder const):

  • layout/integration/LayoutIntegrationRunIteratorModernPath.h: Renamed from Source/WebCore/rendering/line/LineLayoutTraversalDisplayRunPath.h.

(WebCore::LayoutIntegration::ModernPath::ModernPath):
(WebCore::LayoutIntegration::ModernPath::operator== const):
(WebCore::LayoutIntegration::ModernPath::rect const):

  • rendering/RenderLineBreak.cpp:

(WebCore::RenderLineBreak::linesBoundingBox const):
(WebCore::RenderLineBreak::boundingBoxForRenderTreeDump const):
(WebCore::RenderLineBreak::absoluteRects const):
(WebCore::RenderLineBreak::absoluteQuads const):

  • rendering/RenderText.cpp:

(WebCore::RenderText::absoluteRects const):
(WebCore::collectAbsoluteQuadsForNonComplexPaths):
(WebCore::RenderText::firstRunLocation const):
(WebCore::RenderText::linesBoundingBox const):
(WebCore::RenderText::caretMinOffset const):
(WebCore::RenderText::caretMaxOffset const):
(WebCore::RenderText::countRenderedCharacterOffsetsUntil const):
(WebCore::containsOffset):
(WebCore::RenderText::hasRenderedText const):

  • rendering/RenderTreeAsText.cpp:

(WebCore::RenderTreeAsText::writeRenderObject):
(WebCore::writeTextRun):
(WebCore::write):
(WebCore::writeTextBox): Deleted.

5:25 AM Changeset in webkit [267696] by commit-queue@webkit.org
  • 3 edits in trunk/LayoutTests

Fix test failures inadventently introduced in r267644
https://bugs.webkit.org/show_bug.cgi?id=217049

Patch by Angelos Oikonomopoulos <angelos@igalia.com> on 2020-09-28
Reviewed by Adrian Perez de Castro.

r267644 strips trailing whitespace in two LayoutTests/js/*expected.txt files
but doesn't update the corresponding js string literals to not produce such.

  • js/script-tests/parser-syntax-check.js:
  • js/script-tests/regexp-sticky.js:
1:20 AM WebKitGTK/StableRelease edited by Philippe Normand
(diff)
1:18 AM Changeset in webkit [267695] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.30/Source/WebKit

Merge r267655 - [SOUP] WebSocket: cookies set in request don't appear in the inspector
https://bugs.webkit.org/show_bug.cgi?id=217012

Reviewed by Michael Catanzaro.

Cookies are set by libsoup and we are notifying about the handshake being sent before the cookie header is added
to the request.

  • NetworkProcess/soup/WebSocketTaskSoup.cpp:

(WebKit::WebSocketTask::WebSocketTask): Connect to SoupMessage::starting to notify the web process the handshake
request has been sent.

1:18 AM Changeset in webkit [267694] by Carlos Garcia Campos
  • 4 edits in releases/WebKitGTK/webkit-2.30/Source

Merge r267621 - [SOUP] Do not set site for cookies twice in case of redirection
https://bugs.webkit.org/show_bug.cgi?id=217010

Reviewed by Michael Catanzaro.

Source/WebCore:

Only set is-toplevel-navigation on SoupMessage when same site info is present.

  • platform/network/soup/ResourceRequestSoup.cpp:

(WebCore::ResourceRequest::updateSoupMessageMembers const):

Source/WebKit:

ResourceRequest::updateSoupMessage() already fills the same site information, but we are duplicating the code in
NetworkDataTaskSoup::continueHTTPRedirection().

  • NetworkProcess/soup/NetworkDataTaskSoup.cpp:

(WebKit::NetworkDataTaskSoup::continueHTTPRedirection): Do not set same site information here, it will be done
again in NetworkDataTaskSoup::createRequest().

1:18 AM Changeset in webkit [267693] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.30/Source/WebCore

Merge r267620 - [SOUP] Slack.com is not working, new messages do not load due to WebSocket authentication failure issue
https://bugs.webkit.org/show_bug.cgi?id=149551

Reviewed by Michael Catanzaro.

The problem is that we are not including all the cookies in the web socket request. There are two cookies with
the Lax same-site policy set, that are not included for the websocket request.

  • Modules/websockets/ThreadableWebSocketChannel.cpp:

(WebCore::ThreadableWebSocketChannel::webSocketConnectRequest): Add same site information to WebSocket requests.

Note: See TracTimeline for information about the timeline view.