Timeline



Jan 11, 2021:

11:04 PM Changeset in webkit [271390] by Fujii Hironori
  • 6 edits in trunk/LayoutTests

[WinCairo] Unreviewed test gardening

  • platform/wincairo/TestExpectations:
  • platform/wincairo/fast/clip/overflow-border-radius-combinations-expected.txt:
  • platform/wincairo/fast/clip/overflow-border-radius-composited-expected.txt:
  • platform/wincairo/fast/clip/overflow-border-radius-transformed-expected.txt:
  • platform/wincairo/fast/inline-block/tricky-baseline-expected.txt:
8:36 PM Changeset in webkit [271389] by Lauro Moura
  • 2 edits in trunk/Tools

[WPE] Gardening API test crash

Unreviewed test gardening.

  • TestWebKitAPI/glib/TestExpectations.json:
6:52 PM Changeset in webkit [271388] by Simon Fraser
  • 3 edits
    3 adds in trunk

Safari 14 on 2x display renders NYS DMV page as blurry
https://bugs.webkit.org/show_bug.cgi?id=220528
<rdar://problem/71440246>

Reviewed by Tim Horton.

Source/WebCore:

Certain combinations of nested perspective and transform cause Core Animation to
rasterize at unit scale, which makes layers blurry on Retina displays.

Enable code that was already used on iOS to set layer rasterization scale.

Test: compositing/contents-scale/hidpi-tests/rasterization-scale.html

  • platform/graphics/ca/cocoa/PlatformCALayerCocoa.mm:

(WebCore::PlatformCALayerCocoa::setContentsScale):

LayoutTests:

  • compositing/contents-scale/hidpi-tests/rasterization-scale-expected.html: Added.
  • compositing/contents-scale/hidpi-tests/rasterization-scale.html: Added.
5:11 PM Changeset in webkit [271387] by Peng Liu
  • 5 edits in trunk/Source

Receiving two enter/exit fullscreen delegate callbacks on iPad when presenting fullscreen elements
https://bugs.webkit.org/show_bug.cgi?id=218688

Reviewed by Darin Adler.

Source/WebCore:

On iPads, when a video enters/exits fullscreen standby, we should not call the
video fullscreen delegate callbacks.

  • platform/ios/VideoFullscreenInterfaceAVKit.h:
  • platform/ios/VideoFullscreenInterfaceAVKit.mm:

(VideoFullscreenInterfaceAVKit::setupFullscreen):
(VideoFullscreenInterfaceAVKit::exitFullscreen):

Source/WebKit:

  • UIProcess/Cocoa/VideoFullscreenManagerProxy.mm:

(WebKit::VideoFullscreenManagerProxy::didExitFullscreen):
(WebKit::VideoFullscreenManagerProxy::didEnterFullscreen):

4:54 PM Changeset in webkit [271386] by Megan Gardner
  • 4 edits
    2 adds in trunk

Double tap to select does not work if the page clears selections on tap, like grammarly.com does
https://bugs.webkit.org/show_bug.cgi?id=220454
Source/WebKit:

rdar://67757411

Reviewed by Wenson Hsieh.

Double tap to select content did not work on grammerly.com on iPad because this is a desktop website run on a touch-based device,
and there was a script running that would clear the selection on a mouseDown event. When we would send synthetic click events to the page
we would first update the selection and then on completion of the tap, we would dispatch a mouseDown and mouseUp event on iOS. On Mac, we
update the selection between the mouseDown and the mouseUp, so in order to bring us more in line with mac/mouse behaviors, we are now saving
the information needed to update the selection when we believe we are in the middle of a potential tap, and then setting the selection between
these two events. This makes for a more expected change of events, and does not let grammerly.com clear a valid selection based off of synthetic
clicks.

Test: fast/events/touch/ios/double-tap-on-editable-content-for-selection-with-clear-on-touch.html

  • WebProcess/WebPage/WebPage.h:
  • WebProcess/WebPage/ios/WebPageIOS.mm:

(WebKit::WebPage::completeSyntheticClick):
(WebKit::WebPage::setSelectionRange):
(WebKit::WebPage::selectTextWithGranularityAtPoint):

LayoutTests:

Reviewed by Wenson Hsieh.

  • fast/events/touch/ios/double-tap-on-editable-content-for-selection-with-clear-on-touch-expected.txt: Added.
  • fast/events/touch/ios/double-tap-on-editable-content-for-selection-with-clear-on-touch.html: Added.
4:11 PM Changeset in webkit [271385] by Fujii Hironori
  • 2 edits in trunk/Source/WebCore

[WinCairo] Unreviewed build fix for r271353
https://bugs.webkit.org/show_bug.cgi?id=220407

CrossOriginAccessControl.cpp(225): error C3861: 'isInNetworkProcess': identifier not found

  • platform/RuntimeApplicationChecks.h:

(WebCore::isInWebProcess):
(WebCore::isInGPUProcess):
(WebCore::isInNetworkProcess):

3:54 PM Changeset in webkit [271384] by Kate Cheney
  • 3 edits in trunk/Source/WebKit

Crash in pageDidComputePageRects()
https://bugs.webkit.org/show_bug.cgi?id=220518
<rdar://problem/71065870>

Reviewed by Ryosuke Niwa.

Make _printOperation a weak pointer and check it before use.
Since WKPrintingView is ref counted, a reference could still exist
even if _printOperation is nil. Remove the comment as it is not a
justification for a raw pointer.

  • UIProcess/mac/WKPrintingView.h:
  • UIProcess/mac/WKPrintingView.mm:

(-[WKPrintingView _adjustPrintingMarginsForHeaderAndFooter]):
(-[WKPrintingView _firstPrintedPageNumber]):
(-[WKPrintingView _lastPrintedPageNumber]):
(-[WKPrintingView _preparePDFDataForPrintingOnSecondaryThread]):
(pageDidComputePageRects):
(-[WKPrintingView _askPageToComputePageRects]):
(-[WKPrintingView knowsPageRange:]):
(-[WKPrintingView _drawPreview:]):
(-[WKPrintingView drawRect:]):
(-[WKPrintingView _drawPageBorderWithSizeOnMainThread:]):
(-[WKPrintingView drawPageBorderWithSize:]):
(-[WKPrintingView rectForPage:]):
(-[WKPrintingView locationOfPrintRect:]):
(-[WKPrintingView beginDocument]):
(-[WKPrintingView endDocument]):

3:30 PM Changeset in webkit [271383] by achristensen@apple.com
  • 2 edits in trunk/Source/WebCore

Use sendWithAsyncReply instead of dataCallback for icon loading
https://bugs.webkit.org/show_bug.cgi?id=220381

  • loader/DocumentLoader.cpp:

(WebCore::DocumentLoader::stopLoading):
Use the original version of the patch that didn't break WK1 tests.

2:57 PM Changeset in webkit [271382] by commit-queue@webkit.org
  • 3 edits
    2 adds in trunk

Relax assertion in Element::dispatchFocusOutEvent() for non-web process case
https://bugs.webkit.org/show_bug.cgi?id=220478

Patch by Julian Gonzalez <julian_a_gonzalez@apple.com> on 2021-01-11
Reviewed by Ryosuke Niwa.

Source/WebCore:

Relax an assertion in Element::dispatchFocusOutEvent()
(and Element::dispatchFocusInEvent()) that can mistakenly
fire in DumpRenderTree. Also, use
RELEASE_ASSERT_WITH_SECURITY_IMPLICATION() instead of
ASSERT_WITH_SECURITY_IMPLICATION().

Test: editing/inserting/caret-surround.html

  • dom/Element.cpp:

(WebCore::Element::dispatchFocusInEvent):
(WebCore::Element::dispatchFocusOutEvent):

LayoutTests:

Add a test that verifies we do not crash
due to the assertion failure.

  • editing/inserting/caret-surround-expected.txt: Added.
  • editing/inserting/caret-surround.html: Added.
2:29 PM Changeset in webkit [271381] by commit-queue@webkit.org
  • 14 edits in trunk

Make SpeechRecognition permission error more informative
https://bugs.webkit.org/show_bug.cgi?id=220436

Patch by Sihui Liu <sihui_liu@appe.com> on 2021-01-11
Reviewed by Youenn Fablet.

Source/WebKit:

Make SpeechRecognitionPermissionManager complete requests with an optional SpeechRecognitionError instead of a
boolean value.

  • UIProcess/SpeechRecognitionPermissionManager.cpp:

(WebKit::SpeechRecognitionPermissionManager::~SpeechRecognitionPermissionManager):
(WebKit::SpeechRecognitionPermissionManager::request):
(WebKit::SpeechRecognitionPermissionManager::startProcessingRequest):
(WebKit::SpeechRecognitionPermissionManager::continueProcessingRequest):
(WebKit::SpeechRecognitionPermissionManager::completeCurrentRequest):
(WebKit::SpeechRecognitionPermissionManager::requestSpeechRecognitionServiceAccess):
(WebKit::SpeechRecognitionPermissionManager::requestMicrophoneAccess):
(WebKit::SpeechRecognitionPermissionManager::requestUserPermission):

  • UIProcess/SpeechRecognitionPermissionManager.h:
  • UIProcess/SpeechRecognitionPermissionRequest.h:

(WebKit::SpeechRecognitionPermissionRequest::create):
(WebKit::SpeechRecognitionPermissionRequest::complete):
(WebKit::SpeechRecognitionPermissionRequest::SpeechRecognitionPermissionRequest):

  • UIProcess/SpeechRecognitionServer.cpp:

(WebKit::SpeechRecognitionServer::requestPermissionForRequest):

  • UIProcess/SpeechRecognitionServer.h:
  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::requestSpeechRecognitionPermission):

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

(WebKit::WebProcessProxy::createSpeechRecognitionServer):

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/SpeechRecognition.mm:

(TestWebKitAPI::TEST):

LayoutTests:

  • fast/speechrecognition/permission-error-expected.txt:
  • fast/speechrecognition/permission-error.html:
2:16 PM Changeset in webkit [271380] by Wenson Hsieh
  • 2 edits in trunk/Tools
ASSERTION FAILED: !event
event.type == NSEventTypeLeftMouseDown event.type == NSEventTypeRightMouseDown event.type == NSEventTypeOtherMouseDown

https://bugs.webkit.org/show_bug.cgi?id=220520
<rdar://problem/73007898>

Reviewed by Tim Horton.

Fix the assertion by synthesizing a "mouse down" event instead of "mouse entered".

  • TestWebKitAPI/Tests/mac/AcceptsFirstMouse.mm:

(TestWebKitAPI::TEST):

2:00 PM Changeset in webkit [271379] by commit-queue@webkit.org
  • 6 edits in trunk

Keep newly created IDBObjectStores in deleted map when IDBTransaction is aborted
https://bugs.webkit.org/show_bug.cgi?id=220483
<rdar://problem/71934293>

Patch by Sihui Liu <sihui_liu@appe.com> on 2021-01-11
Reviewed by Darin Adler.

Source/WebCore:

When an upgrade transaction is aborted, we move objects from m_deletedObjectStores to m_referencedObjectStores
to revert the deletion operation. When updating m_referencedObjectStores, we did not check whether key already
exists (this can happen when an object store gets deleted and a new object store with the same name is
created; see updated layout test). Therefore, some object store in m_referencedObjectStores would be replaced
and destroyed (since m_referencedObjectStores holds unique pointers) when the object store is referenced by JS
object.

Test: storage/indexeddb/modern/abort-objectstore-info.html

  • Modules/indexeddb/IDBTransaction.cpp:

(WebCore::IDBTransaction::internalAbort):

LayoutTests:

  • storage/indexeddb/modern/abort-objectstore-info-expected.txt:
  • storage/indexeddb/modern/abort-objectstore-info-private-expected.txt:
  • storage/indexeddb/modern/resources/abort-objectstore-info.js:

(prepareDatabase):
(secondUpgradeNeeded):
(checkState):

1:36 PM Changeset in webkit [271378] by commit-queue@webkit.org
  • 24 edits in trunk/Source

Use sendWithAsyncReply instead of dataCallback for icon loading
https://bugs.webkit.org/show_bug.cgi?id=220381

Patch by Alex Christensen <achristensen@webkit.org> on 2021-01-11
Reviewed by Youenn Fablet.

Source/WebCore:

Behavior covered by IconLoading API tests.

  • loader/DocumentLoader.cpp:

(WebCore::DocumentLoader::stopLoading):
(WebCore::DocumentLoader::didGetLoadDecisionForIcon):
(WebCore::DocumentLoader::finishedLoadingIcon):
(WebCore::DocumentLoader::notifyFinishedLoadingIcon): Deleted.

  • loader/DocumentLoader.h:
  • loader/FrameLoaderClient.h:

Source/WebKit:

  • Scripts/webkit/messages.py:
  • Shared/API/APIData.cpp:

(API::Data::create):

  • Shared/API/APIData.h:

(API::Data::create):

  • UIProcess/API/APIIconLoadingClient.h:

(API::IconLoadingClient::getLoadDecisionForIcon):

  • UIProcess/API/mac/WKView.mm:

(-[WKView maybeInstallIconLoadingClient]):

  • UIProcess/Cocoa/IconLoadingDelegate.h:
  • UIProcess/Cocoa/IconLoadingDelegate.mm:

(WebKit::IconLoadingDelegate::IconLoadingClient::getLoadDecisionForIcon):

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::getLoadDecisionForIcon):
(WebKit::WebPageProxy::finishedLoadingIcon): Deleted.

  • UIProcess/WebPageProxy.h:
  • UIProcess/WebPageProxy.messages.in:
  • WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:

(WebKit::WebFrameLoaderClient::finishedLoadingIcon): Deleted.

  • WebProcess/WebCoreSupport/WebFrameLoaderClient.h:
  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::didGetLoadDecisionForIcon):

  • WebProcess/WebPage/WebPage.h:
  • WebProcess/WebPage/WebPage.messages.in:

Source/WebKitLegacy/mac:

  • WebCoreSupport/WebFrameLoaderClient.h:
  • WebCoreSupport/WebFrameLoaderClient.mm:

(WebFrameLoaderClient::prepareForDataSourceReplacement):
(WebFrameLoaderClient::getLoadDecisionForIcons):
(WebFrameLoaderClient::finishedLoadingIcon):

1:33 PM Changeset in webkit [271377] by Peng Liu
  • 4 edits in trunk/LayoutTests

A video element needs to ignore the request to enter/exit fullscreen before the current fullscreen mode change is completed
https://bugs.webkit.org/show_bug.cgi?id=220466

Reviewed by Jer Noble.

A follow-up patch of r271341 to fix a layout test timeout (and failure, see webkit.org/b/183490).

  • media/modern-media-controls/media-controller/media-controller-fullscreen-change-expected.txt:
  • media/modern-media-controls/media-controller/media-controller-fullscreen-change.html:
  • platform/mac/TestExpectations:
1:12 PM Changeset in webkit [271376] by Russell Epstein
  • 1 copy in tags/Safari-611.1.9.11

Tag Safari-611.1.9.11.

1:11 PM Changeset in webkit [271375] by commit-queue@webkit.org
  • 4 edits in trunk/Source/WebCore

Take aspect-ratio into account for percentage resolution
https://bugs.webkit.org/show_bug.cgi?id=220143

Patch by Rob Buis <rbuis@igalia.com> on 2021-01-11
Reviewed by Darin Adler.

Address review feedback that I misinterpreted and did not
include in r271293.

  • rendering/RenderBlock.cpp:

(WebCore::RenderBlock::availableLogicalHeightForPercentageComputation const):

  • rendering/RenderBox.cpp:

(WebCore::inlineSizeFromAspectRatio):
(WebCore::RenderBox::computeLogicalHeight const):
(WebCore::RenderBox::availableLogicalHeightUsing const):
(WebCore::RenderBox::computePositionedLogicalHeightUsing const):
(WebCore::RenderBox::computeLogicalWidthFromAspectRatio const):

  • rendering/RenderBox.h:

(WebCore::RenderBox::blockSizeFromAspectRatio):

12:20 PM Changeset in webkit [271374] by BJ Burg
  • 2 edits in trunk/Source/WebKit

Web Inspector: add nullptr check for WebInspectorProxy::m_extensionsController
https://bugs.webkit.org/show_bug.cgi?id=220485
<rdar://72496401>

Reviewed by Devin Rousso.

  • UIProcess/Inspector/WebInspectorProxy.cpp:

(WebKit::WebInspectorProxy::frontendLoaded):

12:13 PM Changeset in webkit [271373] by Devin Rousso
  • 21 edits
    4 adds in trunk

Web Inspector: Debugger: allow breakpoint actions to be evaluated as a user gesture
https://bugs.webkit.org/show_bug.cgi?id=200275

Reviewed by Brian Burg.

Source/JavaScriptCore:

  • inspector/protocol/Debugger.json:
  • debugger/Breakpoint.h:

Add an optional emulateUserGesture property to Debugger.BreakpointAction.

  • debugger/Debugger.h:

(JSC::Debugger::Client::debuggerScopeExtensionObject): Renamed from scopeExtensionObject.
(JSC::Debugger::Client::debuggerWillEvaluate): Added.
(JSC::Debugger::Client::debuggerDidEvaluate): Added.

  • debugger/Debugger.cpp:

(JSC::Debugger::evaluateBreakpointCondition):
(JSC::Debugger::evaluateBreakpointActions):
Consult the Debugger::Client before and after evaluating each Breakpoint::Action.
Currently this is used by WebCore::PageDebuggerAgent to push onto or pop from a stack of
WebCore::UserGestureEmulationScope, each corresponding to a Breakpoint::Action that
has been set with emulateUserGesture.

  • inspector/agents/InspectorDebuggerAgent.h:
  • inspector/agents/InspectorDebuggerAgent.cpp:

(Inspector::parseBreakpointOptions):
(Inspector::InspectorDebuggerAgent::debuggerScopeExtensionObject): Renamed from scopeExtensionObject.

Source/WebCore:

Tests: inspector/debugger/breakpoint-action-emulateUserGesture.html

inspector/debugger/breakpoint-action-emulateUserGesture-userIsInteracting.html

  • inspector/agents/page/PageDebuggerAgent.cpp:
  • inspector/agents/page/PageDebuggerAgent.h:

(WebCore::PageDebuggerAgent::debuggerWillEvaluate): Added.
(WebCore::PageDebuggerAgent::debuggerDidEvaluate): Added.
Maintain a stack of UserGestureEmulationScope whenever evaluating breakpoint actions (but
only add/remove items if the current action is set to emulateUserGesture).

  • inspector/agents/page/UserGestureEmulationScope.h:

Make it fast allocated so it can be used with UniqueRef.

Source/WebInspectorUI:

  • UserInterface/Models/BreakpointAction.js:

(WI.BreakpointAction.supportsEmulateUserAction): Added.
(WI.BreakpointAction.fromJSON):
(WI.BreakpointAction.prototype.toJSON):
(WI.BreakpointAction.prototype.set type):
(WI.BreakpointAction.prototype.set data):
(WI.BreakpointAction.prototype.get emulateUserGesture): Added.
(WI.BreakpointAction.prototype.set emulateUserGesture): Added.
Add an _emulateUserGesture property to match Debugger.BreakpointAction.

  • UserInterface/Views/BreakpointActionView.js:

(WI.BreakpointActionView):
(WI.BreakpointActionView.prototype._updateBody):
(WI.BreakpointActionView.prototype._handleEmulateUserGestureCheckboxChange): Added.

  • UserInterface/Views/BreakpointActionView.css:

(.breakpoint-action-block-body .description): Added.
(.breakpoint-action-block-body > .flex):
(.breakpoint-action-block-body > .description): Deleted.
Add a "[ ] Emulate User Gesture" under the log/evaluate/probe input.

  • UserInterface/Models/Breakpoint.js:

(WI.Breakpoint):
(WI.Breakpoint.prototype.addAction):
(WI.Breakpoint.prototype.removeAction):
(WI.Breakpoint.prototype._handleBreakpointActionModified): Renamed from _handleBreakpointActionChanged.
Drive-by: combine TypeChanged and DataChanged into a single Modified event since all
the listeners currently have the same callback.

  • UserInterface/Views/LogContentView.js:

(WI.LogContentView):
(WI.LogContentView.prototype._handleEmulateInUserGestureSettingChanged):
Drive-by: only show the "Emulate User Gesture" checkbox when it's supported.

  • Localizations/en.lproj/localizedStrings.js:

LayoutTests:

  • inspector/debugger/breakpoint-action-emulateUserGesture.html: Added.
  • inspector/debugger/breakpoint-action-emulateUserGesture-expected.txt: Added.
  • inspector/debugger/breakpoint-action-emulateUserGesture-userIsInteracting.html: Added.
  • inspector/debugger/breakpoint-action-emulateUserGesture-userIsInteracting-expected.txt: Added.
12:12 PM Changeset in webkit [271372] by Russell Epstein
  • 8 edits in branches/safari-611.1.9-branch/Source

Versioning.

WebKit-7611.1.9.11

12:10 PM Changeset in webkit [271371] by BJ Burg
  • 2 edits in trunk/Tools

Unreviewed, update my contributor information.

  • Scripts/webkitpy/common/config/contributors.json:
11:52 AM Changeset in webkit [271370] by Russell Epstein
  • 2 edits in branches/safari-611-branch/Source/WebCore

Cherry-pick r271364. rdar://problem/73001152

[LFC][Integration] Factor marked text style collection code out of InlineTextBox
https://bugs.webkit.org/show_bug.cgi?id=220249
<rdar://problem/72976067>

Unreviewed build fix after 271350.

  • rendering/MarkedTextStyle.cpp: (WebCore::resolveStyleForMarkedText):

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

11:26 AM Changeset in webkit [271369] by youenn@apple.com
  • 5 edits in trunk

WebProcessPool::establishWorkerContextConnectionToNetworkProcess should make sure to remove the selected process from the cache
https://bugs.webkit.org/show_bug.cgi?id=220503

Reviewed by Darin Adler.

Source/WebKit:

In case we reuse an existing web process, make sure to remove it from web process cache.
Covered by API test.

  • UIProcess/WebProcessCache.cpp:

(WebKit::WebProcessCache::addProcessIfPossible):
(WebKit::WebProcessCache::addProcess):

  • UIProcess/WebProcessPool.cpp:

(WebKit::WebProcessPool::establishWorkerContextConnectionToNetworkProcess):

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/ServiceWorkerBasic.mm:
10:48 AM Changeset in webkit [271368] by commit-queue@webkit.org
  • 3 edits
    5 adds in trunk

Keep newly created IDBIndex objects in deleted map when IDBTransaction is aborted
https://bugs.webkit.org/show_bug.cgi?id=220489
<rdar://problem/70498831>

Patch by Sihui Liu <sihui_liu@appe.com> on 2021-01-11
Reviewed by Youenn Fablet.

Source/WebCore:

When an upgrade transaction is aborted, we move objects from m_deletedIndexes to m_referencedIndexes to revert
the index deletion operation. When updating m_referencedIndexes, we did not check whether key already exists.
Therefore, some indexes in m_referencedIndexes would be replaced and destroyed (since m_referencedIndexes holds
unique pointers) when the index is still referenced by JS.

Tests: storage/indexeddb/modern/abort-index-info-private.html

storage/indexeddb/modern/abort-index-info.html

  • Modules/indexeddb/IDBObjectStore.cpp:

(WebCore::IDBObjectStore::rollbackForVersionChangeAbort):

LayoutTests:

  • storage/indexeddb/modern/abort-index-info-expected.txt: Added.
  • storage/indexeddb/modern/abort-index-info-private-expected.txt: Added.
  • storage/indexeddb/modern/abort-index-info-private.html: Added.
  • storage/indexeddb/modern/abort-index-info.html: Added.
  • storage/indexeddb/modern/resources/abort-index-info.js: Added.

(prepareDatabase):
(versionChangeSuccessCallback.secondRequest.onerror):
(versionChangeSuccessCallback):
(secondUpgradeNeeded):
(checkState):

10:12 AM Changeset in webkit [271367] by Antti Koivisto
  • 3 edits
    2 adds in trunk

REGRESSION (r258321): CSS rules using :first-of-type are applied to any/all siblings in a group under certain circumstances
https://bugs.webkit.org/show_bug.cgi?id=218256
<rdar://problem/70749584>

Reviewed by Simon Fraser.

Source/WebCore:

More accurate invalidation for :hover resulted in smaller style updates that revealed a bug in the way we
mark style non-shareable. We reset style relation bits when resolving the parent but may fail to set them again if we
don't re-resolve all children.

Test case by Eben Packwood.

Test: fast/css/positional-selector-style-sharing.html

  • style/StyleRelations.cpp:

(WebCore::Style::commitRelationsToRenderStyle):

Just mark all styles affected by relations non-shareable. This is achieved via various bit tests but there
is no reason not to set the simplest no-sharing bit. Since this forces real style resolution the parent
bits will also get properly reset.

LayoutTests:

  • fast/css/positional-selector-style-sharing-expected.html: Added.
  • fast/css/positional-selector-style-sharing.html: Added.
10:04 AM Changeset in webkit [271366] by aakash_jain@apple.com
  • 2 edits in trunk/Tools

[build.webkit.org] Stop using deprecated addFactoryArguments method
https://bugs.webkit.org/show_bug.cgi?id=220513

Reviewed by Jonathan Bedard.

  • CISupport/build-webkit-org/steps.py:
9:58 AM Changeset in webkit [271365] by Brent Fulgham
  • 2 edits in trunk/Source/WebKit

[macOS] Enable the client decoder entitlement for the GPU Process
https://bugs.webkit.org/show_bug.cgi?id=220441
<rdar://problem/72899054>

Reviewed by Darin Adler.

The GPU process needs the client decoder entitlement we use in the WebContent process
to properly handle MSE content.

  • Scripts/process-entitlements.sh:
9:38 AM Changeset in webkit [271364] by Antti Koivisto
  • 2 edits in trunk/Source/WebCore

[LFC][Integration] Factor marked text style collection code out of InlineTextBox
https://bugs.webkit.org/show_bug.cgi?id=220249
<rdar://problem/72976067>

Unreviewed build fix after 271350.

  • rendering/MarkedTextStyle.cpp:

(WebCore::resolveStyleForMarkedText):

9:12 AM Changeset in webkit [271363] by Russell Epstein
  • 1 copy in branches/safari-611-branch

New branch.

8:56 AM Changeset in webkit [271362] by weinig@apple.com
  • 46 edits
    2 adds in trunk

LayoutTests/imported/w3c:
Support lab(), lch(), gray() and color(lab ...) colors
https://bugs.webkit.org/show_bug.cgi?id=205675

Reviewed by Simon Fraser.

Update tests to use rectangles rather than text to make anti-aliasing differences
not cause failures. These changes will be upstreamed to the WebPlatformTests.

  • web-platform-tests/css/css-color/lab-001-expected.html:
  • web-platform-tests/css/css-color/lab-001.html:
  • web-platform-tests/css/css-color/lab-002-expected.html:
  • web-platform-tests/css/css-color/lab-002.html:
  • web-platform-tests/css/css-color/lab-003-expected.html:
  • web-platform-tests/css/css-color/lab-003.html:
  • web-platform-tests/css/css-color/lab-004-expected.html:
  • web-platform-tests/css/css-color/lab-004.html:
  • web-platform-tests/css/css-color/lab-005-expected.html:
  • web-platform-tests/css/css-color/lab-005.html:
  • web-platform-tests/css/css-color/lab-006-expected.html:
  • web-platform-tests/css/css-color/lab-006.html:
  • web-platform-tests/css/css-color/lab-007-expected.html:
  • web-platform-tests/css/css-color/lab-007.html:
  • web-platform-tests/css/css-color/lch-001-expected.html:
  • web-platform-tests/css/css-color/lch-001.html:
  • web-platform-tests/css/css-color/lch-002-expected.html:
  • web-platform-tests/css/css-color/lch-002.html:
  • web-platform-tests/css/css-color/lch-003-expected.html:
  • web-platform-tests/css/css-color/lch-003.html:
  • web-platform-tests/css/css-color/lch-004-expected.html:
  • web-platform-tests/css/css-color/lch-004.html:
  • web-platform-tests/css/css-color/lch-005-expected.html:
  • web-platform-tests/css/css-color/lch-005.html:
  • web-platform-tests/css/css-color/lch-006-expected.html:
  • web-platform-tests/css/css-color/lch-006.html:
  • web-platform-tests/css/css-color/lch-007-expected.html:
  • web-platform-tests/css/css-color/lch-007.html:

Source/WebCore:
Support lab(), lch() and color(lab ...) colors
https://bugs.webkit.org/show_bug.cgi?id=205675

Reviewed by Simon Fraser.

Original patch by Simon Fraser.

This adds parsing support for lab(), lch() and color(lab ...) CSS colors
(https://www.w3.org/TR/css-color-4/) and color type, conversion, and serialization
support for Lab and color type and conversion support for LCH (we store these color
canonically as Lab<float>, so serialization of LCH is never needed, much like HSL).

This change does not add support for the host platform layer (e.g. CoreGraphics, etc)
understanding of the Lab colorspace, and as such, when creating host color objects
(for instance via the cachedCGColor() helper) Lab<float> colors are converted to sRGB
first and then the host color is made. The ramification of this is for platforms that
use backingstores with greater than sRGB gamuts, Lab colors will be clampted to sRGB.
This should be rectified in a follow up change that adds proper creation of these host
objects but is being left off the initial change to limit changes.

Some of the imported tests have been updated to use rectangles rather than text to
avoid anti-aliasing issues and will be upstreamed to WPT following landing.

Tests:

fast/css/parsing-lab-colors.html
imported/w3c/web-platform-tests/css/css-color/lab-001.html
imported/w3c/web-platform-tests/css/css-color/lab-002.html
imported/w3c/web-platform-tests/css/css-color/lab-003.html
imported/w3c/web-platform-tests/css/css-color/lab-004.html
imported/w3c/web-platform-tests/css/css-color/lab-005.html
imported/w3c/web-platform-tests/css/css-color/lab-006.html
imported/w3c/web-platform-tests/css/css-color/lab-007.html
imported/w3c/web-platform-tests/css/css-color/lch-001.html
imported/w3c/web-platform-tests/css/css-color/lch-002.html
imported/w3c/web-platform-tests/css/css-color/lch-003.html
imported/w3c/web-platform-tests/css/css-color/lch-004.html
imported/w3c/web-platform-tests/css/css-color/lch-005.html
imported/w3c/web-platform-tests/css/css-color/lch-006.html
imported/w3c/web-platform-tests/css/css-color/lch-007.html

  • css/CSSValueKeywords.in:

Add "lab" and "lch" keywords.

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

(WebCore::CSSPropertyParserHelpers::parseOptionalAlpha):
(WebCore::CSSPropertyParserHelpers::parseLabParameters):
(WebCore::CSSPropertyParserHelpers::parseLCHParameters):
(WebCore::CSSPropertyParserHelpers::parseGrayParameters):
(WebCore::CSSPropertyParserHelpers::parseColorFunctionParameters):
(WebCore::CSSPropertyParserHelpers::parseColorFunction):
Add support for parsing "lab(...)", "lch(...)", "gray(...)"
and "color(lab ...)", all of which create Lab<float> colors.

Also adds explicit UnitlessZeroQuirk flag to angle parsing to
allow parsing of newer specs that don't want to allow unitless zero
for angles. For now, I have left FIXMEs for the properties that
should probably disable it. This was not strictly necessary for this
change (as lch actaully allows unitless angles now), but it seems
like a solid move forward.

  • platform/graphics/Color.h:

(WebCore::Color::Color):
Add overload of the Color constructor that takes a Lab<float> matching other
ColorSpace types.

  • platform/graphics/ColorConversion.cpp:

(WebCore::convertFromD50WhitePointToD65WhitePoint):
(WebCore::convertFromD65WhitePointToD50WhitePoint):
(WebCore::toXYZA):
(WebCore::toLab):
(WebCore::toLCHA):

  • platform/graphics/ColorConversion.h:

(WebCore::toLab):
(WebCore::toLCHA):
Add conversions to/from Lab to D65 white point XYZA (the white point we expect XYZA to be in), and conversion
from Lch to/from Lab.

  • platform/graphics/ColorSerialization.cpp:

(WebCore::serialization):
(WebCore::serializationForCSS):
(WebCore::serializationForHTML):
(WebCore::serializationForRenderTreeAsText):

  • platform/graphics/ColorSerialization.h:

Add serialization for Lab colors. We currently always serialize using the lab()
notation, which appears to be correct for at least colors declared using lab(),
lch() and gray(). Unclear if it is correct for colors declared with color(lab ...).
Opened https://github.com/w3c/csswg-drafts/issues/5825 to track getting a resolution
for "color(lab ...)".

  • platform/graphics/ColorSpace.cpp:

(WebCore::operator<<):

  • platform/graphics/ColorSpace.h:

Add Lab as a ColorSpace and text stream dumping for it.

  • platform/graphics/ColorTypes.h:

(WebCore::Lab::Lab):
(WebCore::asColorComponents):
(WebCore::asLab):
Add Lab color type.

(WebCore::LCHA::LCHA):
(WebCore::asLCHA):
Add LCHA color type.

(WebCore::callWithColorType):
Add Lab to callWithColorType since it is now a valid ColorSpace.

  • platform/graphics/cg/ColorSpaceCG.cpp:

(WebCore::labColorSpaceRef):

  • platform/graphics/cg/ColorSpaceCG.h:

(WebCore::cachedCGColorSpace):
For now, return the sRGB color space to indicate to callers that they should do a conversion.

LayoutTests:
Support lab(), lch(), gray() and color(lab ...) colors
https://bugs.webkit.org/show_bug.cgi?id=205675

Reviewed by Simon Fraser.

Original patch by Simon Fraser.

Parsing tests for lab/lch/gray colors.

  • TestExpectations: Unskip lab/lch tests.
  • fast/css/parsing-lab-colors-expected.txt: Added.
  • fast/css/parsing-lab-colors.html: Added.
8:44 AM Changeset in webkit [271361] by aakash_jain@apple.com
  • 4 edits in trunk/Tools

[ews] Add python 3 support - part 1
https://bugs.webkit.org/show_bug.cgi?id=220510

Reviewed by Jonathan Bedard.

  • CISupport/ews-build/email_unittest.py:
  • CISupport/ews-build/loadConfig.py:
  • CISupport/ews-build/loadConfig_unittest.py:
7:11 AM Changeset in webkit [271360] by yoshiaki.jitsukawa@sony.com
  • 18 edits
    12 copies
    12 adds in trunk

[PlayStation] Add MiniBrowser
https://bugs.webkit.org/show_bug.cgi?id=220359

Reviewed by Don Olmstead.

.:

Enable Fullscreen API.

  • Source/cmake/OptionsPlayStation.cmake:

Source/WebCore:

Add WidgetPlayStation to support custom cursor.

Load CA certs in CurlSSLHandle::platformInitialize().

  • PlatformPlayStation.cmake: Add WidgetPlayStation.cpp
  • platform/Widget.cpp: Allow PlayStation specific implementation.
  • platform/network/playstation/CurlSSLHandlePlayStation.cpp:

(WebCore::CurlSSLHandle::platformInitialize): Load CA certs.

  • platform/playstation/WidgetPlayStation.cpp: Added.

(WebCore::Widget::~Widget):
(WebCore::Widget::setFrameRect):
(WebCore::Widget::paint):
(WebCore::Widget::setFocus):
(WebCore::Widget::setCursor): Call hostWindow()'s setCursor().
(WebCore::Widget::show):
(WebCore::Widget::hide):
(WebCore::Widget::setIsSelected):

Source/WebKit:

Add WKRunloop API to allow an external program to run WebKit's generic runloop.

  • UIProcess/API/C/playstation/WKRunLoop.cpp: Added.

(WKRunLoopRunMain):
(WKRunLoopStopMain):
(WKRunLoopCallOnMainThread):
(WKRunLoopInitializeMain):

  • UIProcess/API/C/playstation/WKRunLoop.h: Added.

Add private WKPagePaint() to draw contents to bitmap.
Remove unused WKPageSetSize() implementation.

  • UIProcess/API/C/playstation/WKPagePrivatePlayStation.cpp:

(drawPageBackground):
(WKPageHandleMouseEvent): Fix button click event handling.
(WKPagePaint):

  • UIProcess/API/C/playstation/WKPagePrivatePlayStation.h:

Add WKView API to set view client along with fullscreen API and visibility state API.

  • UIProcess/API/C/playstation/WKView.cpp:

(WKViewGetPage):
(WKViewSetSize):
(WKViewSetFocus):
(WKViewSetActive):
(WKViewSetVisible):
(WKViewWillEnterFullScreen):
(WKViewDidEnterFullScreen):
(WKViewWillExitFullScreen):
(WKViewDidExitFullScreen):
(WKViewRequestExitFullScreen):
(WKViewIsFullScreen):
(WKViewSetViewClient):

  • UIProcess/API/C/playstation/WKView.h:
  • UIProcess/API/C/playstation/WKViewClient.h: Added.
  • UIProcess/API/playstation/APIViewClient.h: Added.
  • UIProcess/playstation/PageClientImpl.cpp:
  • UIProcess/playstation/PageClientImpl.h:
  • UIProcess/playstation/PlayStationWebView.cpp:
  • UIProcess/playstation/PlayStationWebView.h:

Allow rendering without accelerated compositing.

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::updatePreferences):

  • PlatformPlayStation.cmake: Add relevant sources and include directories.

Tools:

Add PlayStation MiniBrowser sources and CMakeLists.txt.

  • MiniBrowser/playstation/CMakeLists.txt: Added.
  • MiniBrowser/playstation/ImageButton.cpp: Added.
  • MiniBrowser/playstation/ImageButton.h: Added.
  • MiniBrowser/playstation/MainWindow.cpp: Added.
  • MiniBrowser/playstation/MainWindow.h: Added.
  • MiniBrowser/playstation/StringUtils.h: Added.
  • MiniBrowser/playstation/TitleBar.cpp: Added.
  • MiniBrowser/playstation/TitleBar.h: Added.
  • MiniBrowser/playstation/ToolkittenUtils.h: Added.
  • MiniBrowser/playstation/URLBar.cpp: Added.
  • MiniBrowser/playstation/URLBar.h: Added.
  • MiniBrowser/playstation/WebContext.cpp: Added.
  • MiniBrowser/playstation/WebContext.h: Added.
  • MiniBrowser/playstation/WebViewWindow.cpp: Added.
  • MiniBrowser/playstation/WebViewWindow.h: Added.
  • MiniBrowser/playstation/main.cpp: Added.

(loadLibraryOrExit):
(initialize):
(ApplicationClient::updateApplication):
(main):

  • PlatformPlayStation.cmake: Added.
6:56 AM Changeset in webkit [271359] by Alan Bujtas
  • 3 edits in trunk/Source/WebCore

[LFC][IFC] InlineBox::setHasContent should be called when the inline box actually has some content
https://bugs.webkit.org/show_bug.cgi?id=220245

Reviewed by Antti Koivisto.

Do not call setHasContent unless the inline box has actual content (excluding border and padding).
However the "will stretch the line" logic checks against borders and paddings so move that over to
Quirks::inlineLevelBoxAffectsLineBox.
This change makes Quirks::inlineLevelBoxAffectsLineBox the only client of LineBox::isConsideredEmpty.

  • layout/inlineformatting/InlineFormattingContextGeometry.cpp:

(WebCore::Layout::LineBoxBuilder::constructInlineLevelBoxes):

  • layout/inlineformatting/InlineFormattingContextQuirks.cpp:

(WebCore::Layout::InlineFormattingContext::Quirks::inlineLevelBoxAffectsLineBox const):

5:04 AM Changeset in webkit [271358] by commit-queue@webkit.org
  • 7 edits in trunk/Source

WebKit::IPC::Encoder needs definitions of all custom enum values at the Encoder definition time
https://bugs.webkit.org/show_bug.cgi?id=220410

Patch by Kimmo Kinnunen <kkinnunen@apple.com> on 2021-01-11
Reviewed by Darin Adler.

Change WTF::EnumTraits to have either EnumTraits::values or EnumTraits::isValidEnum().
Source/WebCore:

Change here needed to conform to the new protocol. Fixes an issue with the template usage
in WebKit::IPC::Encoder, see WebKit and WTF ChangeLogs for discussion.

  • platform/ContextMenuItem.h:

(WTF::EnumTraits<WebCore::ContextMenuAction>::isValidEnum):

Source/WebKit:

Fixes the upcoming problem where Encoder::encode(E) function is moved from Encoder
to other class, such as EncoderBase, and where we do not want to add redundant includes.
See the WTF/ ChangeLog for discussiong wrt why they were needed before.

  • Scripts/webkit/messages.py:
  • Scripts/webkit/tests/MessageNames.h:

(WTF::EnumTraits<IPC::MessageName>::isValidEnum):

Source/WTF:

Previously, if clients wanted to check isValidEnum for custom enum, they had to:

1) Define HasCustomIsValidEnum<TheirEnum> : true_type {};
2) Define new function template isValidEnum() for TheirEnum
3) Ensure that their isValidEnum() was defined before the definition of the call to

the isValidEnum().

This has the problem that isValidEnum() cannot be called in generic code, because
at the definition time generic code typically does not have all the types in scope
that will be used at instantiation time.
Each isValidEnum() is their own function template, C++ does not have function template
specialization.

After the change, clients need to:

1) Define EnumTraits<TheirEnum> { bool isValidEnum(...) }

Fix by using the fact that WTF::EnumTraits is a class and that can have template
specializations.

Consistent with the EnumTraits::values case:

a) Automatic case? --> Define EnumTraits::values
b) Manual/custom case? --> Define EnumTraits::isValidEnum()

  • wtf/EnumTraits.h:

(WTF::isValidEnum):

3:44 AM Changeset in webkit [271357] by svillar@igalia.com
  • 4 edits in trunk/Source/WebCore

[css-multicol] Restore placeholders on multicolumn children position changes.
https://bugs.webkit.org/show_bug.cgi?id=218501

Reviewed by Zalan Bujtas.

Whenever there is a placeholder in a multicolumn flow ("column-span: all") it must be ensured that the spanner
associated to that placeholder is properly restored as a child of the multicolumn flow when the element with
"column-span:all" is moved out of the multicolumn flow (for example by removing it, by making it out-of-flow
or because an ancestor becomes another multicolumn flow).

This was smoothly handled by the current code for the in-flow -> out-of-flow transition but not the other way
around, i.e in the case of making the placeholder (or an ancestor) an absolutely positioned element.

  • rendering/updating/RenderTreeBuilder.cpp:

(WebCore::RenderTreeBuilder::normalizeTreeAfterStyleChange): restore column spanners then the element becomes
out-of-flow as it's removed from the multicolumn flow.

  • rendering/updating/RenderTreeBuilderMultiColumn.cpp:

(WebCore::RenderTreeBuilder::MultiColumn::createFragmentedFlow): Call the newly created method
restoreColumnSpannersForContainer().
(WebCore::RenderTreeBuilder::MultiColumn::restoreColumnSpannersForContainer): Refactored from createFragmentedFlow()
as it's now used by normalizeTreeAfterStyleChange().

  • rendering/updating/RenderTreeBuilderMultiColumn.h:
3:15 AM Changeset in webkit [271356] by svillar@igalia.com
  • 2 edits in trunk/Source/WebCore

[css-multicol] Update fragment flow state on element insertion when element position changes
https://bugs.webkit.org/show_bug.cgi?id=202805

Reviewed by Zalan Bujtas.

Let's imagine the following scenario:

<div1 style="columns: 2">

<div2 style="columns:2; position: absolute">

<div3 style="column-span:all">

The generated render tree is more or less the following:

DIV
|RenderMultiColumnFlow

|DIV

|RenderMultiColumnFlow
| |
RenderMultiColumnSpannerPlaceholder
|DIV
|
RenderMultiColumnSet

both <div1> and <div2> generate RenderMultiColumnFlows because they're multicolumn containers while the <div3> becomes a spanner and leaves
a placeholder in the place where it's supposed to be as it's a "column-span:all". Note that <div2> is absolutely positioned so it isn't really
part of the column flow of <div1> (there is no RenderMultiColumnSet for <div1>). Now if the <div2> becomes a statically positioned container
(i.e. style="position:static") then it should be inserted (actually its whole subtree) in the <div1> multicolumn flow.

That insertion implies doing 2 things, first notify the RenderMultiColumnFlow of <div1> that a new child was inserted and secondly update the
flow state of the subtree which starts in <div2> so they acknowledge <div1> as their enclosing fragment flow. The former was properly done.
However the latter was not done at all, meaning that they would be treated as not belonging to any multicolumn flow when they actually did.

  • rendering/updating/RenderTreeBuilder.cpp:

(WebCore::RenderTreeBuilder::childFlowStateChangesAndAffectsParentBlock): call initializeFragmentedFlowStateOnInsertion().

2:31 AM Changeset in webkit [271355] by calvaris@igalia.com
  • 5 edits in trunk

[GStreamer] Add support to build with native audio and video
https://bugs.webkit.org/show_bug.cgi?id=220087

Reviewed by Philippe Normand.

.:

  • Source/cmake/GStreamerDefinitions.cmake: Enable TEXT_SINK.
  • Source/cmake/WebKitFeatures.cmake: Declare TEXT_SINK, NATIVE_VIDEO and NATIVE_AUDIO.

Source/WebCore:

We enable native audio and video in the pipeline depending on the
build flags.

  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:

(WebCore::setPlaybackFlags):
(WebCore::MediaPlayerPrivateGStreamer::createGSTPlayBin):

12:43 AM Changeset in webkit [271354] by Carlos Garcia Campos
  • 3 edits in trunk/Source/WebKit

[GTK] System font scaling not applied to 'font-size: XXXpt'
https://bugs.webkit.org/show_bug.cgi?id=218450

Reviewed by Žan Doberšek.

Apply the text scale factor as WebPageProxy text zoom factor, instead of changing the default font size in
settings that only applies to default fonts and it was incorrectly calculated.

  • UIProcess/API/glib/WebKitSettings.cpp:

(webKitSettingsDispose):
(webKitSettingsConstructed):

  • UIProcess/API/glib/WebKitWebView.cpp:

(webkitWebViewConstructed):
(webkitWebViewDispose):
(webkit_web_view_set_zoom_level):
(webkit_web_view_get_zoom_level):

12:35 AM Changeset in webkit [271353] by Carlos Garcia Campos
  • 9 edits
    1 add in trunk/Source/WebCore

[GStreamer] Do not use the registry scanner singleton from the UI process
https://bugs.webkit.org/show_bug.cgi?id=220407

Patch by Carlos Garcia Campos <cgarcia@igalia.com> and Philippe Normand <pnormand@igalia.com> on 2021-01-11
Reviewed by Xabier Rodriguez-Calvar.

  • platform/RuntimeApplicationChecks.h:

(WebCore::isInNetworkProcess): Simplify ifdefs a bit and allow for glib implementation in a separate file.

  • platform/SourcesGLib.txt:
  • platform/glib/RuntimeApplicationChecksGLib.cpp: Added.

(WebCore::isInWebProcess): Implementation based on program filename.
(WebCore::isInNetworkProcess): Ditto.

  • platform/graphics/gstreamer/GStreamerRegistryScanner.cpp:

(WebCore::GStreamerRegistryScanner::getSupportedDecodingTypes): Static function to get the supported MIME types
for decoding. It uses the singleton if called from the web process or creates a new instance otherwise.
(WebCore::GStreamerRegistryScanner::GStreamerRegistryScanner): Initialize gst when not in the web process.

  • platform/graphics/gstreamer/GStreamerRegistryScanner.h:
  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:

(WebCore::MediaPlayerPrivateGStreamer::getSupportedTypes): Use GStreamerRegistryScanner::getSupportedDecodingTypes().

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

(WebCore::GStreamerRegistryScannerMSE::getSupportedDecodingTypes): Static function to get the supported MIME
types for decoding. It uses the singleton if called from the web process or creates a new instance otherwise.

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

(WebCore::MediaPlayerPrivateGStreamerMSE::getSupportedTypes): Use GStreamerRegistryScannerMSE::getSupportedDecodingTypes().

Jan 10, 2021:

9:40 PM Changeset in webkit [271352] by ysuzuki@apple.com
  • 5 edits in trunk/Source/JavaScriptCore

[JSC] JITCage's Gate mechanism is used in ARM64E even if JITCage is disable
https://bugs.webkit.org/show_bug.cgi?id=220500

Reviewed by Mark Lam.

We should ensure that Gate mechanism just works even if ENABLE(JIT_CAGE) is OFF in ARM64E since
in LLInt we are always using Gate even if ENABLE(JIT_CAGE) is OFF. It makes LLInt code
significantly simpler: we do not want to have multiple implementations for ARM64E for ENABLE(JIT_CAGE) ON/OFF
in LLInt if it is not necessary in terms of performance. And it didn't cause performance regression.
So for simplicity, we are always using Gate in LLInt.

However, when disabling ENABLE(JIT_CAGE), we accidentally disabled Gate mechanism too in LLInt.
It makes ARM64E broken if ENABLE(JIT_CAGE) is OFF. This patch makes Gate work even if ENABLE(JIT_CAGE) is OFF,
and this is the expected design.

  • llint/LLIntData.cpp:

(JSC::LLInt::initialize):

  • llint/LLIntEntrypoint.cpp:

(JSC::LLInt::setFunctionEntrypoint):
(JSC::LLInt::setEvalEntrypoint):
(JSC::LLInt::setProgramEntrypoint):
(JSC::LLInt::setModuleProgramEntrypoint):

  • llint/LLIntThunks.cpp:
  • llint/LLIntThunks.h:
11:13 AM Changeset in webkit [271351] by Alan Bujtas
  • 6 edits in trunk/Source/WebCore

[LFC][IFC] Make "inline level box affects line box geometry" logic more explicit
https://bugs.webkit.org/show_bug.cgi?id=220232

Reviewed by Antti Koivisto.

Since InlineLevelBox::isEmpty makes little sense in case of non-inline-boxes (e.g. <br>), let's make
the following set of changes:

  1. Introduce InlineLevelBox::setHasContent for inline boxes only (<span>has content</span>, <div>root inlinebox has content</div>)
  2. Both atomic and line box logic is moved to InlineFormattingContext::Quirks::inlineLevelBoxAffectsLineBox

This is also in preparation for getting rid of the is-considered-empty concept for line/line box.

  • layout/inlineformatting/InlineFormattingContext.h:
  • layout/inlineformatting/InlineFormattingContextGeometry.cpp:

(WebCore::Layout::LineBoxBuilder::constructInlineLevelBoxes):
(WebCore::Layout::LineBoxBuilder::computeLineBoxHeightAndAlignInlineLevelBoxesVertically):

  • layout/inlineformatting/InlineFormattingContextQuirks.cpp:

(WebCore::Layout::InlineFormattingContext::Quirks::inlineLevelBoxAffectsLineBox const):
(WebCore::Layout::InlineFormattingContext::Quirks::shouldInlineLevelBoxStretchLineBox const): Deleted.

  • layout/inlineformatting/InlineLineBox.cpp:

(WebCore::Layout::LineBox::InlineLevelBox::setHasContent):

  • layout/inlineformatting/InlineLineBox.h:

(WebCore::Layout::LineBox::InlineLevelBox::hasContent const):
(WebCore::Layout::LineBox::InlineLevelBox::isEmpty const): Deleted.
(WebCore::Layout::LineBox::InlineLevelBox::setIsNonEmpty): Deleted.

10:09 AM Changeset in webkit [271350] by Antti Koivisto
  • 7 edits
    2 adds in trunk

[LFC][Integration] Factor marked text style collection code out of InlineTextBox
https://bugs.webkit.org/show_bug.cgi?id=220249

Reviewed by Zalan Bujtas.

Source/WebCore:

This makes it possible to use the code from LFC painting.

  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • rendering/InlineTextBox.cpp:

(WebCore::InlineTextBox::paint):
(WebCore::InlineTextBox::MarkedTextStyle::areBackgroundMarkedTextStylesEqual): Deleted.
(WebCore::InlineTextBox::MarkedTextStyle::areForegroundMarkedTextStylesEqual): Deleted.
(WebCore::InlineTextBox::MarkedTextStyle::areDecorationMarkedTextStylesEqual): Deleted.
(WebCore::InlineTextBox::StyledMarkedText::StyledMarkedText): Deleted.
(WebCore::InlineTextBox::computeStyleForUnmarkedMarkedText const): Deleted.
(WebCore::InlineTextBox::resolveStyleForMarkedText): Deleted.
(WebCore::InlineTextBox::subdivideAndResolveStyle): Deleted.
(WebCore::InlineTextBox::coalesceAdjacentMarkedTexts): Deleted.

  • rendering/InlineTextBox.h:
  • rendering/MarkedTextStyle.cpp: Added.

(WebCore::resolveStyleForMarkedText):
(WebCore::computeStyleForUnmarkedMarkedText):
(WebCore::subdivideAndResolveStyle):
(WebCore::coalesceAdjacentMarkedTexts):

  • rendering/MarkedTextStyle.h: Added.

(WebCore::MarkedTextStyle::areBackgroundMarkedTextStylesEqual):
(WebCore::MarkedTextStyle::areForegroundMarkedTextStylesEqual):
(WebCore::MarkedTextStyle::areDecorationMarkedTextStylesEqual):
(WebCore::StyledMarkedText::StyledMarkedText):

LayoutTests:

Mark http/wpt/css/css-highlight-api/highlight-text-cascade.html failing.

This test requires CSS4 highlight pseudo element inheritance (https://bugs.webkit.org/show_bug.cgi?id=220325)
which we (or anyone else) don't support.

It was passing by accident because the code was getting '::highlight' pseudo element style from a wrong element
(containing block instead of inline element) in certain cases. Renderer was found via InlineBox parent() which doesn't
match render tree parent in case inline culling optimization is active. The correct way is to use render tree parent.

4:04 AM Changeset in webkit [271349] by Antti Koivisto
  • 14 edits in trunk/Source/WebCore

Remove InlineBox::hasSelectedChildren bit
https://bugs.webkit.org/show_bug.cgi?id=220240

Reviewed by Sam Weinig.

It is only needed for selection gap painting and easily computed.

  • rendering/ComplexLineLayout.cpp:

(WebCore::ComplexLineLayout::constructLine):

  • rendering/InlineBox.h:

(WebCore::InlineBox::setCanHaveLeftExpansion):
(WebCore::InlineBox::InlineBoxBitfields::InlineBoxBitfields):
(WebCore::InlineBox::hasEllipsisBox const):
(WebCore::InlineBox::canHaveLeftExpansion const):
(WebCore::InlineBox::hasSelectedChildren const): Deleted.
(WebCore::InlineBox::setHasSelectedChildren): Deleted.

  • rendering/RenderBlockFlow.cpp:

(WebCore::RenderBlockFlow::inlineSelectionGaps):

  • rendering/RenderLineBreak.cpp:

(WebCore::RenderLineBreak::setSelectionState): Deleted.

  • rendering/RenderLineBreak.h:
  • rendering/RenderListMarker.cpp:

(WebCore::RenderListMarker::setSelectionState): Deleted.

  • rendering/RenderListMarker.h:
  • rendering/RenderReplaced.cpp:

(WebCore::RenderReplaced::setSelectionState): Deleted.

  • rendering/RenderReplaced.h:
  • rendering/RenderText.cpp:

(WebCore::RenderText::setSelectionState):

  • rendering/RenderTextLineBoxes.cpp:

(WebCore::RenderTextLineBoxes::setSelectionState): Deleted.

  • rendering/RenderTextLineBoxes.h:
  • rendering/RootInlineBox.h:

Jan 9, 2021:

5:14 AM Changeset in webkit [271348] by Alan Bujtas
  • 20 edits
    2 adds in trunk

play.google.com: App preview images are clipped
https://bugs.webkit.org/show_bug.cgi?id=220470
<rdar://problem/60258531>

Reviewed by Simon Fraser.

Source/WebCore:

"The baseline of an 'inline-block' is the baseline of its last line box in the normal flow, unless it has either no in-flow line boxes
or if its 'overflow' property has a computed value other than 'visible', in which case the baseline is the bottom margin edge."
https://www.w3.org/TR/CSS22/visudet.html#leading

Test: fast/inline/inline-block-baseline-with-overflow-not-visible.html

  • rendering/RenderBlockFlow.cpp:

(WebCore::RenderBlockFlow::inlineBlockBaseline const):

LayoutTests:

Progressions (matching FF and Chrome).

  • fast/inline/inline-block-baseline-with-overflow-not-visible-expected.html: Added.
  • fast/inline/inline-block-baseline-with-overflow-not-visible.html: Added.
4:31 AM Changeset in webkit [271347] by Alan Bujtas
  • 4 edits in trunk/Source/WebCore

[LFC][IFC] Use the bottom margin edge as the baseline for inline-block when overflow is not visible
https://bugs.webkit.org/show_bug.cgi?id=220481

Reviewed by Antti Koivisto.

"The baseline of an 'inline-block' is the baseline of its last line box in the normal flow, unless it has either no in-flow line boxes
or if its 'overflow' property has a computed value other than 'visible', in which case the baseline is the bottom margin edge."
https://www.w3.org/TR/CSS22/visudet.html#leading

  • layout/inlineformatting/InlineFormattingContextGeometry.cpp:

(WebCore::Layout::LineBoxBuilder::constructInlineLevelBoxes):

4:01 AM Changeset in webkit [271346] by Lauro Moura
  • 2 edits in trunk/Tools

[GStreamer] Build failure with gst-build: Missing gst/audio/audio.h
https://bugs.webkit.org/show_bug.cgi?id=220494

Reviewed by Philippe Normand.

Make the tests include the audio headers for gst/audio/audio. It is
included in TestUIClient through WebPreferences -> IPC::Decoder ->
SharedBuffer -> GStreamerCommon.

  • TestWebKitAPI/glib/CMakeLists.txt:

Jan 8, 2021:

10:04 PM Changeset in webkit [271345] by Kocsen Chung
  • 1 copy in tags/Safari-610.4.3.1.3

Tag Safari-610.4.3.1.3.

10:01 PM Changeset in webkit [271344] by Kocsen Chung
  • 1 copy in tags/Safari-610.4.3.0.2

Tag Safari-610.4.3.0.2.

8:31 PM Changeset in webkit [271343] by Alexey Shvayka
  • 12 edits
    2 adds in trunk

Implement @copyDataProperties in C++ to optimize object rest / spread
https://bugs.webkit.org/show_bug.cgi?id=193618

Reviewed by Yusuke Suzuki.

JSTests:

  • microbenchmarks/object-rest-destructuring.js: Added.
  • microbenchmarks/object-spread.js: Added.
  • stress/object-rest-deconstruct.js:
  • stress/object-spread.js:

Source/JavaScriptCore:

Since @copyDataProperties is inherently polymorphic, implementing it in JS is not beneficial.
This patch:

  1. Merges almost identical @copyDataProperties variants and moves them to C++, avoiding allocations of JSArray instances and Identifier wrappers.
  2. Skips non-observable Get? calls, leveraging slot.isTaintedByOpaqueObject().
  3. Performs DefineOwnProperty? via putDirectMayBeIndex(), since the spec guarantees property creation to be successful [1]: target is an newly created object that is not yet accessible to userland code. It's impossible for target to be non-extensible nor have a non-configurable property.
  4. Introduces a fast path similar to Object.assign, but: a) with no checks on target, because it's guaranteed to be an extensible JSFinalObject; b) with less checks on source, since we are performing putDirect() and don't care about

read-only properties nor proto.

Altogether, these changes result in 3.1x speed-up for object rest / spread.
Also, this patch removes unnecessary target return and @isObject check.

[1]: https://tc39.es/ecma262/#sec-copydataproperties (step 6.c.ii.2, note the "!" prefix)

  • builtins/BuiltinNames.h:
  • builtins/GlobalOperations.js:

(globalPrivate.speciesConstructor):
(globalPrivate.copyDataProperties): Deleted.
(globalPrivate.copyDataPropertiesNoExclusions): Deleted.

  • bytecode/BytecodeIntrinsicRegistry.h:
  • bytecode/LinkTimeConstant.h:
  • bytecompiler/NodesCodegen.cpp:

(JSC::ObjectPatternNode::bindValue const):
(JSC::ObjectSpreadExpressionNode::emitBytecode):
(JSC::BytecodeIntrinsicNode::emit_intrinsic_defineEnumerableWritableConfigurableDataProperty): Deleted.

  • runtime/JSGlobalObject.cpp:

(JSC::JSGlobalObject::init):

  • runtime/JSGlobalObjectFunctions.cpp:

(JSC::canPerformFastPropertyEnumerationForCopyDataProperties):
(JSC::JSC_DEFINE_HOST_FUNCTION):

  • runtime/JSGlobalObjectFunctions.h:
7:40 PM Changeset in webkit [271342] by beidson@apple.com
  • 1 edit
    3 deletes in trunk/LayoutTests

Removing broken test from r271337 until I can fix it.
https://bugs.webkit.org/show_bug.cgi?id=220486

Unreviewed test gardening.

  • http/tests/loading/blob-load-fail-expected.txt: Removed.
  • http/tests/loading/blob-load-fail.html: Removed.
  • http/tests/loading/resources/remote-blob.php: Removed.
7:11 PM Changeset in webkit [271341] by Peng Liu
  • 5 edits in trunk

A video element needs to ignore the request to enter/exit fullscreen before the current fullscreen mode change is completed
https://bugs.webkit.org/show_bug.cgi?id=220466

Reviewed by Jer Noble.

Source/WebCore:

Fix a flaky layout test: media/media-fullscreen-inline.html

  • html/HTMLVideoElement.cpp:

(WebCore::HTMLVideoElement::webkitEnterFullscreen):
(WebCore::HTMLVideoElement::webkitExitFullscreen):

LayoutTests:

  • media/media-fullscreen-inline-expected.txt:
  • media/media-fullscreen.js:

(async beginfullscreen):

5:58 PM Changeset in webkit [271340] by Jonathan Bedard
  • 11 edits
    1 copy
    2 adds in trunk/Tools

[webkitscmpy] Provide command to automatically configure git-svn
https://bugs.webkit.org/show_bug.cgi?id=220442
<rdar://problem/72908233>

Reviewed by Yusuke Suzuki.

Add commands to update repository and connect a git repository to a subversion repository.

  • Scripts/git-webkit: Define subversion URL.
  • Scripts/libraries/webkitscmpy/setup.py: Bump version.
  • Scripts/libraries/webkitscmpy/webkitscmpy/init.py: Ditto.
  • Scripts/libraries/webkitscmpy/webkitscmpy/local/git.py:

(Git.pull): Add function to update repository with the remote.

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

(Scm.pull): Add function to update repository with the remote.

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

(Svn.init): Suppress exception when metadata cache is invalid.
(Svn.pull): Add function to update repository with the remote.

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

(Git): Use tabs in git config, add 'git svn fetch' and 'git pull' commands.

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

(Svn.init): Add 'svn up' command.

  • Scripts/libraries/webkitscmpy/webkitscmpy/program/init.py:

(main): Add Pull and SetupGitSvn commands.

  • Scripts/libraries/webkitscmpy/webkitscmpy/program/command.py:

(Command.parser): Support use of the default parser.

  • Scripts/libraries/webkitscmpy/webkitscmpy/program/pull.py: Added.

(Pull): Update the current repository from its remote.

  • Scripts/libraries/webkitscmpy/webkitscmpy/program/setup_git_svn.py: Added.

(SetupGitSvn): Add command which populates the .git config file with information
linking to a subversion repository.

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

(TestSetupGitSvn):
(TestSetupGitSvn.test_svn):
(TestSetupGitSvn.test_empty):
(TestSetupGitSvn.test_add):

5:54 PM Changeset in webkit [271339] by Russell Epstein
  • 4 edits
    3 adds in branches/safari-610.4.3.0-branch

Cherry-pick r271337. rdar://problem/72941197

BlobLoader lifetime cleanup.
<rdar://problem/70498831> and https://bugs.webkit.org/show_bug.cgi?id=220486

Reviewed by Chris Dumez.

Source/WebCore:

Test: LayoutTests/http/tests/loading/blob-load-fail.html

  • fileapi/Blob.cpp: (WebCore::Blob::loadBlob): (WebCore::Blob::text): (WebCore::Blob::arrayBuffer):
  • fileapi/Blob.h:

LayoutTests:

  • http/tests/loading/blob-load-fail-expected.txt: Added.
  • http/tests/loading/blob-load-fail.html: Added.
  • http/tests/loading/resources/remote-blob.php: Added.

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

5:54 PM Changeset in webkit [271338] by Russell Epstein
  • 4 edits
    3 adds in branches/safari-610.4.3.1-branch

Cherry-pick r271337. rdar://problem/72941242

BlobLoader lifetime cleanup.
<rdar://problem/70498831> and https://bugs.webkit.org/show_bug.cgi?id=220486

Reviewed by Chris Dumez.

Source/WebCore:

Test: LayoutTests/http/tests/loading/blob-load-fail.html

  • fileapi/Blob.cpp: (WebCore::Blob::loadBlob): (WebCore::Blob::text): (WebCore::Blob::arrayBuffer):
  • fileapi/Blob.h:

LayoutTests:

  • http/tests/loading/blob-load-fail-expected.txt: Added.
  • http/tests/loading/blob-load-fail.html: Added.
  • http/tests/loading/resources/remote-blob.php: Added.

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

5:49 PM Changeset in webkit [271337] by beidson@apple.com
  • 4 edits
    3 adds in trunk

BlobLoader lifetime cleanup.
<rdar://problem/70498831> and https://bugs.webkit.org/show_bug.cgi?id=220486

Reviewed by Chris Dumez.

Source/WebCore:

Test: LayoutTests/http/tests/loading/blob-load-fail.html

  • fileapi/Blob.cpp:

(WebCore::Blob::loadBlob):
(WebCore::Blob::text):
(WebCore::Blob::arrayBuffer):

  • fileapi/Blob.h:

LayoutTests:

  • http/tests/loading/blob-load-fail-expected.txt: Added.
  • http/tests/loading/blob-load-fail.html: Added.
  • http/tests/loading/resources/remote-blob.php: Added.
5:19 PM Changeset in webkit [271336] by Russell Epstein
  • 3 edits in branches/safari-610.4.3.1-branch/Source/JavaScriptCore

Revert "Cherry-pick r271240. rdar://problem/72935325"

This reverts commit r271315.

5:18 PM Changeset in webkit [271335] by Alan Coon
  • 3 edits in branches/safari-610.4.3.0-branch/Source/JavaScriptCore

Revert r271240. rdar://problem/72935204

4:10 PM Changeset in webkit [271334] by commit-queue@webkit.org
  • 5 edits in trunk/Source/ThirdParty/ANGLE

Failures of attribute location conformance tests with Metal backend
https://bugs.webkit.org/show_bug.cgi?id=220137

Patch by Kyle Piddington <Kyle Piddington> on 2021-01-08
Reviewed by Dean Jackson.

  • src/compiler/translator/TranslatorMetalDirect/EmitMetal.cpp:

(GenMetalTraverser::emitAttributeDeclaration):

  • src/libANGLE/renderer/metal/mtl_glslang_mtl_utils.mm:

(rx::mtl::updateShaderAttributes):
(rx::mtl::GlslangGetMSL):

4:03 PM Changeset in webkit [271333] by commit-queue@webkit.org
  • 4 edits in trunk/Source

Unreviewed, reverting r271331.
https://bugs.webkit.org/show_bug.cgi?id=220487

Wasn't ready for review.

Reverted changeset:

"[macOS] Reset user directory suffix before getting sandbox
directory"
https://bugs.webkit.org/show_bug.cgi?id=220358
https://trac.webkit.org/changeset/271331

4:00 PM Changeset in webkit [271332] by ysuzuki@apple.com
  • 5 edits in trunk/Source

[JSC] Disable JITCage compile time in old iOS
https://bugs.webkit.org/show_bug.cgi?id=220477

Reviewed by Darin Adler.

Source/JavaScriptCore:

  • runtime/Gate.h: This is required in LLInt ARM64E.
  • runtime/Options.cpp:

Source/WTF:

ENABLE(JIT_CAGE) becomes false in old iOS.

  • wtf/PlatformEnable.h:
3:49 PM Changeset in webkit [271331] by pvollan@apple.com
  • 4 edits in trunk/Source

[macOS] Reset user directory suffix before getting sandbox directory
https://bugs.webkit.org/show_bug.cgi?id=220358
<rdar://problem/57616019>

Reviewed by Brent Fulgham.

Source/WebCore/PAL:

Declare functions to get and set user directory suffix.

  • pal/spi/cocoa/CoreServicesSPI.h:

Source/WebKit:

Reset user directory suffix before getting sandbox data vault directory. We do not want to include the user directory suffix,
since the compiled sandbox should be shared by all WebKit processes of the same type. Also, creating the data vault directory
can fail under some circumstances if the user directory suffix is not empty.

  • Shared/mac/AuxiliaryProcessMac.mm:

(WebKit::AuxiliaryProcess::initializeSandbox):

3:31 PM Changeset in webkit [271330] by jer.noble@apple.com
  • 4 edits in trunk/Tools

Unreviewed test gardening. Attempting to diagnose failing PiP API tests by enabling more logging
during the test run, to be collected after a failed test.

  • DumpRenderTree/DumpRenderTree.xcodeproj/xcshareddata/xcschemes/DumpRenderTree.xcscheme:
  • TestWebKitAPI/TestWebKitAPI.xcodeproj/xcshareddata/xcschemes/TestWebKitAPI.xcscheme:
  • TestWebKitAPI/Tests/WebKitCocoa/ExitFullscreenOnEnterPiP.mm:

(TestWebKitAPI::TEST):

  • TestWebKitAPI/Tests/WebKitCocoa/ExitPiPOnSuspendVideoElement.mm:

(TestWebKitAPI::TEST):

  • TestWebKitAPI/Tests/WebKitCocoa/WKWebViewCloseAllMediaPresentations.mm:

(TEST):

3:19 PM Changeset in webkit [271329] by Patrick Angle
  • 4 edits
    1 add in trunk/Source/WebInspectorUI

Web Inspector: Font Details sidebar - Improve visibility of values by emphasizing them/de-emphasizing range information
https://bugs.webkit.org/show_bug.cgi?id=219996

Reviewed by Devin Rousso.

Create a separate element to hold secondary axis information like minimum, maxiumum, and default values to make
sure attention is drawn to the actual value.

  • Localizations/en.lproj/localizedStrings.js:
  • UserInterface/Main.html:
  • UserInterface/Views/FontDetailsPanel.css: Added.

(.sidebar > .panel.details.style-font > .content .details-section > .content > .group > .row.simple > .value .secondary):

  • UserInterface/Views/FontDetailsPanel.js:

(WI.FontDetailsPanel.prototype._formatSimpleSingleValue):
(WI.FontDetailsPanel.prototype._formatVariationValue):
(WI.FontDetailsPanel.prototype._createVariationValueElement):

  • Both _formatSimpleSingleValue and _formatVariationValue now use _createVariationValueElement when they need to

display secondary information alongside the value.

2:57 PM Changeset in webkit [271328] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

[ Big Sur ] imported/w3c/web-platform-tests/mimesniff/mime-types/charset-parameter.window.html if failing
https://bugs.webkit.org/show_bug.cgi?id=220332

Unreviewed test gardening.

  • platform/mac/TestExpectations: Mark test as flaky.
2:57 PM Changeset in webkit [271327] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

REGRESSION: [macOS] imported/w3c/web-platform-tests/webrtc/protocol/crypto-suite.https.html is a flaky failure
https://bugs.webkit.org/show_bug.cgi?id=220077

Unreviewed test gardening.

  • platform/mac/TestExpectations: Mark test as flaky.
2:47 PM Changeset in webkit [271326] by commit-queue@webkit.org
  • 6 edits in trunk

Add support for source caching between platforms
https://bugs.webkit.org/show_bug.cgi?id=220439
rdar://72905725

Patch by Ryan Hostetler <rhost@apple.com> on 2021-01-08
Reviewed by Andy Estes.

.:

Include WebInspectorUI Source during any installsrc phase.

  • Source/Makefile:

Source/ThirdParty:

Include all libwebrtc target soruces in the installsrc phase.

Source/ThirdParty/libwebrtc:

Include libwebrtc Source during any installsrc phase.

  • Makefile:
2:45 PM Changeset in webkit [271325] by Peng Liu
  • 5 edits in trunk

PlaybackSessionManager::m_clientCounts is not updated correctly when a video enters picture-in-picture from fullscreen
https://bugs.webkit.org/show_bug.cgi?id=220435

Reviewed by Jer Noble.

Source/WebKit:

A follow-up patch to fix an assertion failure on Mac.
VideoFullscreenManager::exitVideoFullscreenToModeWithoutAnimation() should not call
removeClientForContext() on Mac because didCleanupFullscreen() will do that.

Fix layout test: media/element-containing-pip-video-going-into-fullscreen.html

  • WebProcess/cocoa/VideoFullscreenManager.mm:

(WebKit::VideoFullscreenManager::exitVideoFullscreenToModeWithoutAnimation):

LayoutTests:

  • media/element-containing-pip-video-going-into-fullscreen-expected.txt:
  • media/element-containing-pip-video-going-into-fullscreen.html:
2:42 PM Changeset in webkit [271324] by mmaxfield@apple.com
  • 3 edits in trunk/LayoutTests

fast/text/canvas-color-fonts/COLR.html prematurely exits
https://bugs.webkit.org/show_bug.cgi?id=220453
<rdar://problem/71056602>

Reviewed by Sam Weinig.

The test is asynchronous and I forgot to mark it as such.

  • fast/text/canvas-color-fonts/COLR.html:
  • platform/mac-wk1/TestExpectations:
2:41 PM Changeset in webkit [271323] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

[Mojave] imported/w3c/web-platform-tests/html/semantics/document-metadata/the-meta-element/pragma-directives/attr-meta-http-equiv-refresh/parsing.html is a flaky failure
https://bugs.webkit.org/show_bug.cgi?id=220484

Unreviewed test gardening.

  • platform/mac/TestExpectations: Mark test as flaky.
2:35 PM Changeset in webkit [271322] by Wenson Hsieh
  • 4 edits in trunk

[macOS] -[WKWebView acceptsFirstMouse:] sometimes crashes in IPC::Connection::createSyncMessageEncoder
https://bugs.webkit.org/show_bug.cgi?id=220469
<rdar://problem/72319199>

Reviewed by Chris Dumez.

Source/WebKit:

When sending IPC to the web process from the UI process, it's possible for the WebProcessProxy's IPC
connection to be null in the case where the web process is still in the act of launching. In the case of
asynchronous IPC, we handle this by queueing the IPC message on the WebProcessProxy in the case where the
connection hasn't been created yet (refer to AuxiliaryProcessProxy::sendMessage). However, in the case where
we're sending a sync message, we assume that the IPC connection exists in MessageSender::sendSync, which
causes us to crash with a null dereference.

To fix this, remove the debug assertion in MessageSender::sendSync and return a null SendSyncResult in the
case where the connection has not been created.

Test: WebKit2.AcceptsFirstMouseDuringWebProcessLaunch

  • Platform/IPC/MessageSender.h:

Tools:

Add an API test that exercises the crash by calling into -acceptsFirstMouse: during web process launch.

  • TestWebKitAPI/Tests/mac/AcceptsFirstMouse.mm:

(TestWebKitAPI::TEST):

2:18 PM Changeset in webkit [271321] by Peng Liu
  • 2 edits in trunk/Source/WebCore

REGRESSION (r271273): Crash in WebCore::HTMLMediaElement::setVideoFullscreenGravity
https://bugs.webkit.org/show_bug.cgi?id=220467

Reviewed by Darin Adler.

Add a null check in VideoFullscreenModelVideoElement::setVideoLayerGravity().

Fix layout test crashes:

  • media/controls/pip-placeholder-without-video-controls.html
  • media/element-containing-pip-video-going-into-fullscreen.html
  • platform/cocoa/VideoFullscreenModelVideoElement.mm:

(WebCore::VideoFullscreenModelVideoElement::setVideoLayerGravity):

1:49 PM Changeset in webkit [271320] by commit-queue@webkit.org
  • 5 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
LayoutTests/imported/w3c:

Patch by Alex Christensen <achristensen@webkit.org> on 2021-01-08
Reviewed by Tim Horton.

  • web-platform-tests/user-timing/measure-l3.any.js:

(test):

LayoutTests:

<rdar://problem/69774340>

Patch by Alex Christensen <achristensen@webkit.org> on 2021-01-08
Reviewed by Tim Horton.

r268928 wasn't sufficient. This test still failed about 1/500 runs for me, but after further truncation of less significant bits
it successfully ran 10000 times with no failures.

  • platform/ios-wk2/TestExpectations:
  • platform/mac/TestExpectations:
1:10 PM Changeset in webkit [271319] by Patrick Angle
  • 5 edits in trunk/Source/WebInspectorUI

Web Inspector: Promote experimental "Show independent Styles sidebar" setting to "Elements" settings pane and enable by default
https://bugs.webkit.org/show_bug.cgi?id=218126

Reviewed by Devin Rousso.

  • Localizations/en.lproj/localizedStrings.js:
  • UserInterface/Base/Setting.js:
  • Remove experimental naming from setting and enable by default.
  • UserInterface/Views/RulesStyleDetailsSidebarPanel.js:

(WI.RulesStyleDetailsSidebarPanel.prototype.get allowExclusivePresentation):
(WI.RulesStyleDetailsSidebarPanel):

  • UserInterface/Views/SettingsTabContentView.js:

(WI.SettingsTabContentView.prototype._createElementsSettingsView):
(WI.SettingsTabContentView.prototype._createExperimentalSettingsView):

  • Move setting to "Elements" settings pane.
12:33 PM Changeset in webkit [271318] by jiewen_tan@apple.com
  • 3 edits in trunk/Source/WebKit

[WebAuthn] Adopt new UI for the update flow
https://bugs.webkit.org/show_bug.cgi?id=219713
<rdar://problem/72154988>

Reviewed by Brent Fulgham.

Covered by manual tests.

  • Platform/spi/Cocoa/AuthenticationServicesCoreSPI.h:

(NS_ERROR_ENUM):

  • UIProcess/WebAuthentication/Cocoa/AuthenticatorPresenterCoordinator.mm:

(WebKit::AuthenticatorPresenterCoordinator::updatePresenter):

12:23 PM Changeset in webkit [271317] by ap@apple.com
  • 3 edits in trunk/Source/JavaScriptCore

JavaScriptCore API headers contain project style includes
https://bugs.webkit.org/show_bug.cgi?id=220449
rdar://problem/71493605

Reviewed by Yusuke Suzuki.

  • API/JSStringRefCF.h:
  • API/JavaScriptCore.h:
12:16 PM Changeset in webkit [271316] by Fujii Hironori
  • 6 edits in trunk

[Win] Enable ENABLE_USERSELECT_ALL for -webkit-user-select:all support
https://bugs.webkit.org/show_bug.cgi?id=118740

Reviewed by Don Olmstead.

.:

This change also fixes the assertion failure of
editing/inserting/insert-list-user-select-none-crash.html
(Bug 216256).

  • Source/cmake/OptionsFTW.cmake: Removed the line disabling ENABLE_USERSELECT_ALL.
  • Source/cmake/OptionsWin.cmake: Ditto.

LayoutTests:

  • platform/win/TestExpectations:
  • platform/wincairo/TestExpectations:
12:10 PM Changeset in webkit [271315] by Alan Coon
  • 3 edits in branches/safari-610.4.3.1-branch/Source/JavaScriptCore

Cherry-pick r271240. rdar://problem/72935325

The scratch register should be different from the target register when calling validateUntaggedPtr.
https://bugs.webkit.org/show_bug.cgi?id=220397
rdar://72771069

Reviewed by Yusuke Suzuki.

  • assembler/MacroAssemblerARM64E.h: (JSC::MacroAssemblerARM64E::validateUntaggedPtr):
  • Added an ASSERT to enforce this invariant.
  • jit/ThunkGenerators.cpp: (JSC::emitPointerValidation):
  • emitPointerValidation() was reusing the target register as the scratch register. This is a hold over from the previous way of doing the validation (which had a bug). With the validation bug fixed, this register reuse is no longer allowed.

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

12:10 PM Changeset in webkit [271314] by Alan Coon
  • 2 edits in branches/safari-610.4.3.1-branch/Source/JavaScriptCore

Cherry-pick r271144. rdar://problem/72935460

propertyNameEnumerator must check it can still take the fast path after getGenericPropertyNames
https://bugs.webkit.org/show_bug.cgi?id=219957
<rdar://71156284>

Reviewed by Yusuke Suzuki.

We need to check if we still canAccessPropertiesQuicklyForEnumeration on
structureAfterGettingPropertyNames, since we might call out out to a proxy's
getPrototypeOf callback through getGenericPropertyNames.

  • runtime/JSPropertyNameEnumerator.h: (JSC::propertyNameEnumerator):

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

12:04 PM Changeset in webkit [271313] by Alan Coon
  • 3 edits in branches/safari-610.4.3.0-branch/Source/JavaScriptCore

Cherry-pick r271240. rdar://problem/72935204

The scratch register should be different from the target register when calling validateUntaggedPtr.
https://bugs.webkit.org/show_bug.cgi?id=220397
rdar://72771069

Reviewed by Yusuke Suzuki.

  • assembler/MacroAssemblerARM64E.h: (JSC::MacroAssemblerARM64E::validateUntaggedPtr):
  • Added an ASSERT to enforce this invariant.
  • jit/ThunkGenerators.cpp: (JSC::emitPointerValidation):
  • emitPointerValidation() was reusing the target register as the scratch register. This is a hold over from the previous way of doing the validation (which had a bug). With the validation bug fixed, this register reuse is no longer allowed.

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

12:04 PM Changeset in webkit [271312] by Alan Coon
  • 3 edits in branches/safari-610.4.3.0-branch/Source/JavaScriptCore

Revert r271240. rdar://problem/72935204

11:56 AM Changeset in webkit [271311] by commit-queue@webkit.org
  • 3 edits in trunk/Tools

Stop using MediaRecorder in API test WebKit2.SpeechRecognitionErrorWhenStartingAudioCaptureOnDifferentPage
https://bugs.webkit.org/show_bug.cgi?id=220347

Patch by Sihui Liu <sihui_liu@appe.com> on 2021-01-08
Reviewed by Youenn Fablet.

Because MediaRecorder (with real backend) is only supported in some recent MacOS versions now.

  • TestWebKitAPI/Tests/WebKitCocoa/SpeechRecognition.mm:

(TestWebKitAPI::TEST):

  • TestWebKitAPI/Tests/WebKitCocoa/speechrecognition-basic.html:
11:54 AM Changeset in webkit [271310] by Alan Coon
  • 8 edits in branches/safari-610.4.3.1-branch/Source

Versioning.

WebKit-7610.4.3.1.3

11:53 AM Changeset in webkit [271309] by Alan Coon
  • 3 edits in branches/safari-610.4.3.0-branch/Source/JavaScriptCore

Cherry-pick r271240. rdar://problem/72935204

The scratch register should be different from the target register when calling validateUntaggedPtr.
https://bugs.webkit.org/show_bug.cgi?id=220397
rdar://72771069

Reviewed by Yusuke Suzuki.

  • assembler/MacroAssemblerARM64E.h: (JSC::MacroAssemblerARM64E::validateUntaggedPtr):
  • Added an ASSERT to enforce this invariant.
  • jit/ThunkGenerators.cpp: (JSC::emitPointerValidation):
  • emitPointerValidation() was reusing the target register as the scratch register. This is a hold over from the previous way of doing the validation (which had a bug). With the validation bug fixed, this register reuse is no longer allowed.

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

11:52 AM Changeset in webkit [271308] by Alan Coon
  • 2 edits in branches/safari-610.4.3.0-branch/Source/JavaScriptCore

Cherry-pick r271144. rdar://problem/72935400

propertyNameEnumerator must check it can still take the fast path after getGenericPropertyNames
https://bugs.webkit.org/show_bug.cgi?id=219957
<rdar://71156284>

Reviewed by Yusuke Suzuki.

We need to check if we still canAccessPropertiesQuicklyForEnumeration on
structureAfterGettingPropertyNames, since we might call out out to a proxy's
getPrototypeOf callback through getGenericPropertyNames.

  • runtime/JSPropertyNameEnumerator.h: (JSC::propertyNameEnumerator):

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

11:37 AM Changeset in webkit [271307] by Alan Coon
  • 8 edits in branches/safari-610.4.3.0-branch/Source

Versioning.

WebKit-7610.4.3.0.2

11:34 AM Changeset in webkit [271306] by Jonathan Bedard
  • 9 edits in trunk/Tools

[webkitcorepy] Add standard mechanism for packaging pip packages (work-around)
https://bugs.webkit.org/show_bug.cgi?id=220468
<rdar://problem/72935720>

Reviewed by Stephanie Lewis.

Temporary change to make these packages easier to pip install.

  • Scripts/libraries/resultsdbpy/resultsdbpy/init.py: Bump version.
  • Scripts/libraries/resultsdbpy/setup.py: Use string instead of version object.
  • Scripts/libraries/webkitcorepy/setup.py: Ditto.
  • Scripts/libraries/webkitcorepy/webkitcorepy/init.py: Bump version.
  • Scripts/libraries/webkitflaskpy/setup.py: Use string instead of version object.
  • Scripts/libraries/webkitflaskpy/webkitflaskpy/init.py: Bump version.
  • Scripts/libraries/webkitscmpy/setup.py: Use string instead of version object.
  • Scripts/libraries/webkitscmpy/webkitscmpy/init.py: Bump version.
10:52 AM Changeset in webkit [271305] by Alexey Shvayka
  • 4 edits
    2 adds in trunk

for/in over a Proxy should not call GetOwnProperty? trap twice per property
https://bugs.webkit.org/show_bug.cgi?id=189034

Reviewed by Yusuke Suzuki.

JSTests:

  • microbenchmarks/for-in-proxy.js: Added.
  • stress/for-in-redefine-enumerable.js:
  • stress/proxy-for-in.js: Added.

Source/JavaScriptCore:

Although the spec [1] doesn't normatively require calling GetOwnProperty?
only once per property, this is what V8 and SpiderMonkey do.

Since Enumerable? property attribute is checked by has_enumerable_property
bytecode op, this patch avoids another observable GetOwnProperty? call
by using DontEnumPropertiesMode::Include exclusively for Proxy objects.

A side effect of this change: if a property becomes Enumerable? after
OwnPropertyKeys? trap was called, it will be enumerated, which matches
the spec [2] and developer expectations.

This patch advances provided microbenchmark by 100%.

[1]: https://tc39.es/ecma262/#sec-enumerate-object-properties
[2]: https://tc39.es/ecma262/#sec-%foriniteratorprototype%.next (step 7.b.iii)

  • runtime/JSPropertyNameEnumerator.cpp:

(JSC::getEnumerablePropertyNames):

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

Unreviewed, add missing scope.release() in JSModuleNamespaceObject
https://bugs.webkit.org/show_bug.cgi?id=220465

  • runtime/JSModuleNamespaceObject.cpp:

(JSC::JSModuleNamespaceObject::getOwnPropertyNames):

10:18 AM Changeset in webkit [271303] by commit-queue@webkit.org
  • 9 edits
    1 add in trunk

[WASM-References] Add optional default value parameter for Table.constructor, Table.grow and Table.set
https://bugs.webkit.org/show_bug.cgi?id=220323

Patch by Dmitry Bezhetskov <dbezhetskov> on 2021-01-08
Reviewed by Yusuke Suzuki.

JSTests:

Add tests for Table.grow, Table.set and Table ctor with optional initializing parameter.
Spec: https://webassembly.github.io/reference-types/js-api/index.html#tables.

  • wasm/references/table_js_api.js: Added.

(Pelmen):
(testTableGrowForExternrefTables):
(async testTableGrowForFuncrefTables):
(testTableConstructorForExternrefTables):
(async testTableConstructorForFuncrefTables):
(async testTableSetForFuncrefTables):

Source/JavaScriptCore:

Introduce the new optional parameter "defaultValue" for Table.grow(numOfElementsToAdd, [defaultValue]).
It is used to initialize newly added table elements.
Introduce the new optional parameter "defaultValue" for Table({initial: N, element:type}, [defaultValue]).
After Table is created we append initial times defaultValue to table if it is present.
Also add type check for funcref's table for Table.grow, Table ctor and Table.set.
Spec: https://webassembly.github.io/reference-types/js-api/index.html#tables.

  • wasm/WasmOperations.cpp:

(JSC::Wasm::JSC_DEFINE_JIT_OPERATION):

  • wasm/WasmTable.cpp:

(JSC::Wasm::Table::grow):

  • wasm/WasmTable.h:

(JSC::Wasm::Table::isFuncrefTable const):

  • wasm/js/JSWebAssemblyTable.cpp:

(JSC::JSWebAssemblyTable::grow):

  • wasm/js/JSWebAssemblyTable.h:
  • wasm/js/WebAssemblyTableConstructor.cpp:

(JSC::JSC_DEFINE_HOST_FUNCTION):

  • wasm/js/WebAssemblyTablePrototype.cpp:

(JSC::JSC_DEFINE_HOST_FUNCTION):

10:01 AM Changeset in webkit [271302] by commit-queue@webkit.org
  • 3 edits in trunk/Source/WebCore

[GStreamer] Player audio sink needs to be initialized earlier
https://bugs.webkit.org/show_bug.cgi?id=220462

Patch by Philippe Normand <pnormand@igalia.com> on 2021-01-08
Reviewed by Xabier Rodriguez-Calvar.

Currently the player initializes the audio sink in the load method but that's not enough in
situations where the player has an audiosourceprovider. So initialize it from the
constructor early on, to ensure that the audio provider sink bin is valid.

  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:

(WebCore::MediaPlayerPrivateGStreamer::MediaPlayerPrivateGStreamer):
(WebCore::MediaPlayerPrivateGStreamer::createGSTPlayBin):

  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.h:
9:03 AM Changeset in webkit [271301] by youenn@apple.com
  • 4 edits
    4 adds in trunk/LayoutTests

Fix count failure check in LayoutTests/webrtc/h264-high.html
https://bugs.webkit.org/show_bug.cgi?id=220234
<rdar://problem/72791771>

Reviewed by Eric Carlson.

Frame size error check should check for count being 50 instead of 20.
Update code to use a max variable instead.
Move common code between the two tests in webrtc/h264-profile-tests.js.
Add ios specific expectations since high resolutions do not seem to be supported there.

  • platform/ios/webrtc/h264-baseline-expected.txt: Added.
  • platform/ios/webrtc/h264-high-expected.txt: Added.
  • platform/mac-wk2/TestExpectations:
  • webrtc/h264-baseline.html:
  • webrtc/h264-high.html:
  • webrtc/h264-profile-tests.js: Added.

(async waitForVideoSize):
(testProfile):
(async testResolutions.async resolutions):
(async testResolutions):

9:02 AM Changeset in webkit [271300] by commit-queue@webkit.org
  • 2 edits
    1 add in trunk/JSTests

[WASM-References] Add linking tests
https://bugs.webkit.org/show_bug.cgi?id=220314

Patch by Dmitry Bezhetskov <dbezhetskov> on 2021-01-08
Reviewed by Yusuke Suzuki.

Added linking tests for the ref-types spec.
Disabled a few failed minor cases and created apropriate bugs.

  • wasm.yaml:
  • wasm/references-spec-tests/linking.wast.js: Added.
8:58 AM Changeset in webkit [271299] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebCore

[Mojave Debug] ASSERTION FAILED: !m_requests.contains(clientIdentifier) in WebKit::SpeechRecognitionServer::start()
https://bugs.webkit.org/show_bug.cgi?id=220426
<rdar://problem/72897083>

Patch by Sihui Liu <sihui_liu@appe.com> on 2021-01-08
Reviewed by Youenn Fablet.

We should send end event to mark the end of recognition. Otherwise, SpeechRecognitionServer does not know the
request is finished and won't remove it from map.

  • Modules/speech/SpeechRecognizer.cpp:

(WebCore::SpeechRecognizer::resetRecognition):

8:53 AM Changeset in webkit [271298] by ysuzuki@apple.com
  • 3 edits
    1 add in trunk

[JSC] AtomicsIsLockFree's AI result is wrong
https://bugs.webkit.org/show_bug.cgi?id=220452
<rdar://problem/71228690>

Reviewed by Mark Lam.

JSTests:

  • stress/atomics-is-lock-free-and-zero.js: Added.

Source/JavaScriptCore:

The result type should be SpecBoolean. This leads to FTL unreachable in the test code.

  • dfg/DFGAbstractInterpreterInlines.h:

(JSC::DFG::AbstractInterpreter<AbstractStateType>::executeEffects):

8:30 AM Changeset in webkit [271297] by ysuzuki@apple.com
  • 4 edits
    2 adds in trunk

[JSC] DFG/FTL Atomics should assume non-typed-array input with storage-edge
https://bugs.webkit.org/show_bug.cgi?id=220451
<rdar://problem/71237065>

Reviewed by Mark Lam.

JSTests:

  • stress/atomics-and-multiple-typed-arrays.js: Added.

(foo):

  • stress/atomics-and-string.js: Added.

(foo):

Source/JavaScriptCore:

Atomics implementation assumed that it only gets TypedArray via checkArray filter if storage-edge exists. But this is wrong.
String and the other cases can put storage-edge while it is not TypedArray. We should check whether this is one of TypedArray,
and if it is not, we should make it generic one instead of using fast TypedArray path.

  • dfg/DFGArrayMode.h:

(JSC::DFG::ArrayMode::isOneOfTypedArrayView const):

  • dfg/DFGFixupPhase.cpp:

(JSC::DFG::FixupPhase::fixupNode):

7:45 AM Changeset in webkit [271296] by Chris Dumez
  • 4 edits in trunk

Make it safe to re-enter HashMap::clear()
https://bugs.webkit.org/show_bug.cgi?id=220445

Reviewed by Geoffrey Garen.

Source/WTF:

Make it safe to re-enter HashMap::clear(). This will fix some crashes on the GPUProcess bots
due to DisplayList::clear() re-entering via HashMap::clear().

  • wtf/HashTable.h:

(WTF::KeyTraits>::clear):

Tools:

Add API test coverage.

  • TestWebKitAPI/Tests/WTF/HashMap.cpp:

(TestWebKitAPI::TEST):

7:26 AM Changeset in webkit [271295] by youenn@apple.com
  • 10 edits in trunk

PaintFrameForMedia has a null identifier when media player is a media stream track video player
https://bugs.webkit.org/show_bug.cgi?id=220411

Reviewed by Wenson Hsieh.

Source/WebCore:

MediaStreamTrack video player is running in WebProcess as WebProcess gets each video sample.
There is no corresponding remote media player.
Disable the GPU code path for painting the video element and use the in-process one instead.

Covered by test in GPU process mode.

  • platform/graphics/GraphicsContext.cpp:

(WebCore::GraphicsContext::paintFrameForMedia):

  • platform/graphics/GraphicsContextImpl.h:
  • platform/graphics/cairo/GraphicsContextImplCairo.h:
  • platform/graphics/displaylists/DisplayListRecorder.cpp:

(WebCore::DisplayList::Recorder::canPaintFrameForMedia const):
(WebCore::DisplayList::Recorder::paintFrameForMedia):

  • platform/graphics/displaylists/DisplayListRecorder.h:
  • platform/graphics/nicosia/cairo/NicosiaCairoOperationRecorder.h:
  • platform/graphics/win/GraphicsContextImplDirect2D.h:

LayoutTests:

  • gpu-process/TestExpectations:
7:22 AM Changeset in webkit [271294] by youenn@apple.com
  • 9 edits in trunk/Source/WebKit

Service Worker is no longer inspectable
https://bugs.webkit.org/show_bug.cgi?id=220406
<rdar://problem/72883757>

Reviewed by Per Arne Vollan.

We were sending the sandbox extension later when enabling remote inspector.
But this is not soon enough for inspecting service workers.
For that reason, send the sandbox extension at process init time based on whether develop menu is on or not.

Manually tested by validating that Develop Menu can list running service workers.

  • Shared/WebProcessCreationParameters.cpp:

(WebKit::WebProcessCreationParameters::encode const):
(WebKit::WebProcessCreationParameters::decode):

  • Shared/WebProcessCreationParameters.h:
  • UIProcess/Cocoa/WebProcessPoolCocoa.mm:

(WebKit::WebProcessPool::platformInitializeWebProcess):

  • UIProcess/Cocoa/WebProcessProxyCocoa.mm:

(WebKit::WebProcessProxy::shouldEnableRemoteInspector):
(WebKit::WebProcessProxy::enableRemoteInspectorIfNeeded):

  • UIProcess/WebProcessProxy.h:
  • WebProcess/WebProcess.h:
  • WebProcess/WebProcess.messages.in:
  • WebProcess/cocoa/WebProcessCocoa.mm:

(WebKit::WebProcess::platformInitializeWebProcess):
(WebKit::WebProcess::enableRemoteWebInspector):

5:29 AM Changeset in webkit [271293] by commit-queue@webkit.org
  • 6 edits in trunk

Take aspect-ratio into account for percentage resolution
https://bugs.webkit.org/show_bug.cgi?id=220143

Patch by Rob Buis <rbuis@igalia.com> on 2021-01-08
Reviewed by Darin Adler.

Source/WebCore:

Add aspect-ratio handling to containing block available height
computations to fix percentage resolution on its children.

  • rendering/RenderBlock.cpp:

(WebCore::RenderBlock::availableLogicalHeightForPercentageComputation const):

  • rendering/RenderBox.cpp:

(WebCore::RenderBox::availableLogicalHeightUsing const):
(WebCore::blockSizeFromAspectRatio): Deleted.

  • rendering/RenderBox.h:

(WebCore::RenderBox::blockSizeFromAspectRatio):

LayoutTests:

Enable some tests that pass now.

5:27 AM Changeset in webkit [271292] by Chris Lord
  • 7 edits in trunk

[WPE] Enable smooth-motion and kinetic scrolling on touchpads
https://bugs.webkit.org/show_bug.cgi?id=219942

Reviewed by Žan Doberšek.

Source/WebKit:

Interpret axis motion events with a zero value as axis stop events and
send the appropriate wheel event phase. This enables kinetic scrolling
when using touchpads and other smooth-scrolling devices.

  • UIProcess/API/wpe/PageClientImpl.cpp:

(WebKit::PageClientImpl::doneWithTouchEvent):

  • UIProcess/API/wpe/WPEView.cpp:

(WKWPE::m_backend):

  • UIProcess/API/wpe/WPEView.h:

Tools:

  • wpe/backends/WindowViewBackend.cpp:

Update to Wayland protocol 5 and interpret axis stop, discrete and
smooth axis motion events.

5:18 AM Changeset in webkit [271291] by youenn@apple.com
  • 3 edits in trunk

Make sure that if NetworkProcess clears DOMCache, it also clears service worker registrations
https://bugs.webkit.org/show_bug.cgi?id=220408
<rdar://problem/72360003>

Reviewed by Alex Christensen.

It is expected that clearing DOM cache mandates clearing service worker registrations
as service workers expect cache entries added at install time to stay.
It is hard for clients to enforce this so it is best to handle it in Network Process.
When DOMCache is cleared, service worker registrations will also be cleared.
The reverse is not guaranteed.
Covered by API test.

  • NetworkProcess/NetworkProcess.cpp:

(WebKit::NetworkProcess::deleteWebsiteData):
(WebKit::NetworkProcess::deleteWebsiteDataForOrigins):
(WebKit::NetworkProcess::deleteAndRestrictWebsiteDataForRegistrableDomains):

5:16 AM Changeset in webkit [271290] by Philippe Normand
  • 8 edits in trunk

[GStreamer] WebAudio provider should clean-up its bin when the client disappears
https://bugs.webkit.org/show_bug.cgi?id=219245

Reviewed by Xabier Rodriguez-Calvar.

Source/WebCore:

Clean-up elements downstream of the deinterleave element when the provider client changes or
is removed.

  • platform/audio/gstreamer/AudioSourceProviderGStreamer.cpp:

(WebCore::copyGStreamerBuffersToAudioChannel):
(WebCore::AudioSourceProviderGStreamer::provideInput):
(WebCore::AudioSourceProviderGStreamer::handleSample):
(WebCore::AudioSourceProviderGStreamer::setClient):
(WebCore::AudioSourceProviderGStreamer::handleRemovedDeinterleavePad):
(WebCore::AudioSourceProviderGStreamer::deinterleavePadsConfigured):

  • platform/graphics/gstreamer/GStreamerCommon.cpp:

(WebCore::disconnectSimpleBusMessageCallback): Drive-by, remove bus signal handler.
(WebCore::connectSimpleBusMessageCallback):

  • platform/mediastream/gstreamer/GStreamerMediaStreamSource.cpp: Drive-by, define

GST_CAT_DEFAULT earlier so that all GST_DEBUG call sites actually log something.

LayoutTests:

Unflag tests no longer crashing.

  • platform/glib/TestExpectations:
  • platform/gtk-wayland/TestExpectations:
  • platform/gtk/TestExpectations:
2:28 AM Changeset in webkit [271289] by calvaris@igalia.com
  • 2 edits in trunk/Source/WebCore

[GStreamer][EME][Thunder] Accept no protection system specific caps for CENC
https://bugs.webkit.org/show_bug.cgi?id=220088

Reviewed by Philippe Normand.

For example in CMAF it could happen that you don't have protection
events and hence no protection system in the caps. We need to
allow those cases.

  • platform/graphics/gstreamer/eme/WebKitThunderDecryptorGStreamer.cpp:
1:59 AM Changeset in webkit [271288] by svillar@igalia.com
  • 7 edits in trunk/Source/WebCore

[WebXR] Initial implemention of device initialization/shutdown with OpenXR
https://bugs.webkit.org/show_bug.cgi?id=216925

Reviewed by Darin Adler.

Added a very basic initialization and shutdown processes of XR devices using OpenXR. So far we're just creating and destroying
the XR session. Follow up patches will add the required machinery to get frame data from OpenXR.

  • Modules/webxr/WebXRSession.cpp:

(WebCore::WebXRSession::WebXRSession): Call initializeTrackingAndRendering().
(WebCore::WebXRSession::~WebXRSession): Call shutdownTrackingAndRendering().
(WebCore::WebXRSession::shutdown): Ditto.

  • Modules/webxr/WebXRSystem.h:
  • platform/xr/PlatformXR.h: New virtual methods to initialize/shutdown devices.
  • platform/xr/openxr/PlatformXROpenXR.cpp:

(PlatformXR::OpenXRDevice::OpenXRDevice): Initialize m_session.
(PlatformXR::OpenXRDevice::~OpenXRDevice): Call shutdownTrackingAndRendering().
(PlatformXR::toXrViewConfigurationType): New method. Translates from SessionMode to XrViewConfigurationType.
(PlatformXR::OpenXRDevice::initializeTrackingAndRendering): New method. Creates a session with a given mode.
(PlatformXR::OpenXRDevice::resetSession): Destroys session.
(PlatformXR::OpenXRDevice::shutdownTrackingAndRendering):

  • platform/xr/openxr/PlatformXROpenXR.h:
  • testing/WebFakeXRDevice.h: Added empty implementations for the new virtual methods.

Jan 7, 2021:

11:34 PM Changeset in webkit [271287] by commit-queue@webkit.org
  • 10 edits in trunk/Source/WebKit

Use WeakHashSet instead of HashSet<T*>
https://bugs.webkit.org/show_bug.cgi?id=220455

Patch by Alex Christensen <achristensen@webkit.org> on 2021-01-07
Reviewed by Geoffrey Garen.

  • NetworkProcess/NetworkSession.cpp:

(WebKit::NetworkSession::invalidateAndCancel):
(WebKit::NetworkSession::registerNetworkDataTask):
(WebKit::NetworkSession::unregisterNetworkDataTask):

  • NetworkProcess/NetworkSession.h:

(WebKit::NetworkSession::registerNetworkDataTask): Deleted.
(WebKit::NetworkSession::unregisterNetworkDataTask): Deleted.

  • UIProcess/WebPageGroup.cpp:

(WebKit::WebPageGroup::addPage):
(WebKit::WebPageGroup::removePage):
(WebKit::WebPageGroup::setPreferences):

  • UIProcess/WebPageGroup.h:
  • UIProcess/WebPageProxy.cpp:

(WebKit::m_limitsNavigationsToAppBoundDomains):
(WebKit::WebPageProxy::~WebPageProxy):

  • UIProcess/WebPreferences.cpp:

(WebKit::WebPreferences::~WebPreferences):
(WebKit::WebPreferences::addPage):
(WebKit::WebPreferences::removePage):
(WebKit::WebPreferences::update):
(WebKit::WebPreferences::updateBoolValueForInternalDebugFeatureKey):

  • UIProcess/WebPreferences.h:
  • WebProcess/Geolocation/WebGeolocationManager.cpp:

(WebKit::WebGeolocationManager::registerWebPage):
(WebKit::WebGeolocationManager::unregisterWebPage):
(WebKit::WebGeolocationManager::setEnableHighAccuracyForPage):
(WebKit::WebGeolocationManager::isUpdating const):
(WebKit::WebGeolocationManager::isHighAccuracyEnabled const):

  • WebProcess/Geolocation/WebGeolocationManager.h:

(WebKit::WebGeolocationManager::isUpdating const): Deleted.
(WebKit::WebGeolocationManager::isHighAccuracyEnabled const): Deleted.

11:12 PM Changeset in webkit [271286] by pvollan@apple.com
  • 3 edits in trunk/Source/WebKit

[iOS] Silence diagnostics sandbox violations
https://bugs.webkit.org/show_bug.cgi?id=220414

Reviewed by Darin Adler.

For performance reasons, silence benign diagnostics sandbox violations in the WebContent process on iOS.
Additionally, remove logging for a sysctl in the Networking process' sandbox, since it is known to be used.

  • Resources/SandboxProfiles/ios/com.apple.WebKit.Networking.sb:
  • Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb:
9:30 PM Changeset in webkit [271285] by Paulo Matos
  • 2 edits in trunk/Tools

Fix mktemp call for busybox mktemp
https://bugs.webkit.org/show_bug.cgi?id=220422

Reviewed by Alexey Proskuryakov.

Busybox mktemp requires the template to have 6 Xs.
GNU mktemp doesn't care so use 6 Xs in order to ensure this will work if busybox mktemp is installed.

  • Scripts/run-jsc-stress-tests:
8:38 PM Changeset in webkit [271284] by Alan Bujtas
  • 5 edits
    2 adds in trunk

paypal.com: text at the bottom of the page is not aligned properly
https://bugs.webkit.org/show_bug.cgi?id=220444
<rdar://problem/60356338>

Reviewed by Simon Fraser.

Source/WebCore:

This patch addresses the case when we try to align text content inside an inline level box with display type of inline-block.

While ideally only the inline level boxes would participate in the vertical alignment process, in legacy line layout we align the text content as well.
The verticalAlignApplies() function filters out the cases when the text content should default to baseline. It was checking against "inline" to
ensure
"<div style="vertical-align: top">foobar</div>" works and it missed the following case "<div style="display: inline-block; vertical-align:top">foobar</div>" <- inline level box but "foobar" should be baseline aligned.

Tests: fast/inline/incorrect-vertical-alignment-inside-inline-block.html

  • rendering/InlineFlowBox.cpp:

(WebCore::verticalAlignApplies):

LayoutTests:

  • fast/css/vertical-align-block-elements-expected.html:
  • fast/css/vertical-align-block-elements.html:
  • fast/inline/incorrect-vertical-alignment-inside-inline-block-expected.html: Added.
  • fast/inline/incorrect-vertical-alignment-inside-inline-block.html: Added.
7:59 PM Changeset in webkit [271283] by Kate Cheney
  • 4 edits in trunk/Source/WebKit

Error in layout tests: "Passed ITP enabled state (0) does not match TCC setting (1)"
https://bugs.webkit.org/show_bug.cgi?id=220385
<rdar://problem/70730482>

Reviewed by Darin Adler.

No new tests, this has no behavior change. It will fix excessive
logging when running tests.

We do not need to log a discrepancy between these states
for WebKitTestRunner or TestWebKitAPI because they are sometimes treated
like web browsers but need to turn ITP on/off for specific tests, so
these states will not always match.

  • NetworkProcess/cocoa/NetworkSessionCocoa.mm:

(WebKit::activateSessionCleanup):

  • Shared/Cocoa/DefaultWebBrowserChecks.h:
  • Shared/Cocoa/DefaultWebBrowserChecks.mm:

(WebKit::isRunningTest):
(WebKit::isParentProcessAFullWebBrowser):
(WebKit::isFullWebBrowser):
(WebKit::shouldBeTreatedAsFullBrowser): Deleted.

7:58 PM Changeset in webkit [271282] by achristensen@apple.com
  • 2 edits in trunk/Source/WebKit

Remove assertions in MESSAGE_CHECK definition
https://bugs.webkit.org/show_bug.cgi?id=220401

  • Platform/IPC/Connection.h:

The unit test associated with r271263 hits these assertions in debug builds.
Since we plan to increase this type of unit testing, I remove the assertions.

6:17 PM Changeset in webkit [271281] by Kocsen Chung
  • 1 copy in tags/Safari-610.4.3.1.2

Tag Safari-610.4.3.1.2.

6:11 PM Changeset in webkit [271280] by Kocsen Chung
  • 8 edits in branches/safari-610.4.3.1-branch/Source

Versioning.

WebKit-7610.4.3.1.2

5:36 PM Changeset in webkit [271279] by mark.lam@apple.com
  • 12 edits in trunk/Source

Work around Clang bug in builtin_return_address().
https://bugs.webkit.org/show_bug.cgi?id=220432
rdar://71648468

Reviewed by Yusuke Suzuki.

Source/JavaScriptCore:

Clang's builtin_return_address() currently sometimes returns a PAC signed pointer
and sometimes not. This patch works around that by always ensuring that the pointer
is not signed.

Also changed the ReturnAddressPtr to store a signed pointer.

  • assembler/MacroAssemblerCodeRef.h:

(JSC::ReturnAddressPtr::ReturnAddressPtr):
(JSC::ReturnAddressPtr::untaggedValue const):
(JSC::MacroAssemblerCodePtr::MacroAssemblerCodePtr):

  • interpreter/AbstractPC.h:

(JSC::AbstractPC::AbstractPC):

  • interpreter/CallFrame.h:
  • jit/JIT.cpp:

(JSC::ctiPatchCallByReturnAddress):

  • jit/JITOpcodes.cpp:

(JSC::JIT::privateCompileHasIndexedProperty):

  • jit/JITOpcodes32_64.cpp:

(JSC::JIT::privateCompileHasIndexedProperty):

  • jit/JITOperations.cpp:

(JSC::JSC_DEFINE_JIT_OPERATION):
(JSC::unprofiledMul): Deleted.
(JSC::profiledMul): Deleted.
(JSC::unprofiledSub): Deleted.
(JSC::profiledSub): Deleted.

  • jit/JITPropertyAccess.cpp:

(JSC::JIT::privateCompilePutByVal):
(JSC::JIT::privateCompilePutPrivateNameWithCachedId):
(JSC::JIT::privateCompilePutByValWithCachedId):

  • runtime/JSCPtrTag.h:

Source/WebKit:

  • PluginProcess/mac/PluginProcessShim.mm:

(WebKit::shimCFStringCompare):

  • We go direct to ptrauth.h instead of using the WTF PtrTag abstraction because this file appears to be going out of its way to avoid importing config.h. Because of this, importing PtrTag.h results in a lot of build error complications. Rather than jump thru many hoops to make importing PtrTag.h work and because all we really want is only to use ptrauth_strip(), importing ptrauth.h is simpler.
5:02 PM Changeset in webkit [271278] by Jonathan Bedard
  • 2 edits in trunk/Tools

[webkitscmpy] Split program into separate files (Follow-up fix)
https://bugs.webkit.org/show_bug.cgi?id=220369
<rdar://problem/72856906>

Unreviewed follow-up fix.

  • Scripts/libraries/webkitscmpy/setup.py: Add program to directories to export.
4:51 PM Changeset in webkit [271277] by Russell Epstein
  • 1 copy in tags/Safari-610.4.3.0.1

Tag Safari-610.4.3.0.1.

4:51 PM Changeset in webkit [271276] by Russell Epstein
  • 1 copy in tags/Safari-610.4.3.1.1

Tag Safari-610.4.3.1.1.

4:45 PM Changeset in webkit [271275] by rniwa@webkit.org
  • 2 edits in trunk/Tools

compare-results should be able to compare PLUM3 results
https://bugs.webkit.org/show_bug.cgi?id=220443

Reviewed by Simon Fraser.

Added the support to compare PLUM3 results.

  • Scripts/compare-results:

(plum3Breakdown): Added.
(detectPLUM3): Added.
(PLUM3Results): Added.
(detectBenchmark): Detect PLUM3.
(biggerIsBetter): PLUM3 is a smaller-is-better benchmark.
(main): Added PLUM3.

4:35 PM Changeset in webkit [271274] by Jonathan Bedard
  • 3 edits
    4 copies
    5 adds
    2 deletes in trunk/Tools

[webkitscmpy] Split program into separate files
https://bugs.webkit.org/show_bug.cgi?id=220369
<rdar://problem/72856906>

Reviewed by Dewei Zhu.

  • Scripts/libraries/webkitscmpy/webkitscmpy/init.py: Bump version.
  • Scripts/libraries/webkitscmpy/webkitscmpy/canonicalize: Move to webkitscmpy/program/canonicalize.
  • Scripts/libraries/webkitscmpy/webkitscmpy/mocks/local/git.py: Update imports.
  • Scripts/libraries/webkitscmpy/webkitscmpy/program: Moved from webkitscmpy/program.py.
  • Scripts/libraries/webkitscmpy/webkitscmpy/program.py: Moved to webkitscmpy/program.
  • Scripts/libraries/webkitscmpy/webkitscmpy/program/init.py: Moved from webkitscmpy/program.py.
  • Scripts/libraries/webkitscmpy/webkitscmpy/program/canonicalize: Moved from webkitscmpy/canonicalize.
  • Scripts/libraries/webkitscmpy/webkitscmpy/program/canonicalize/committer.py: Ditto.
  • Scripts/libraries/webkitscmpy/webkitscmpy/program/canonicalize/message.py: Ditto.
  • Scripts/libraries/webkitscmpy/webkitscmpy/program/checkout.py: Moved from webkitscmpy/program.py.
  • Scripts/libraries/webkitscmpy/webkitscmpy/program/command.py: Moved from webkitscmpy/program.py.
  • Scripts/libraries/webkitscmpy/webkitscmpy/program/find.py: Moved from webkitscmpy/program.py.
4:30 PM Changeset in webkit [271273] by Peng Liu
  • 2 edits in trunk/Source/WebKit

PlaybackSessionManager::m_clientCounts is not updated correctly when a video enters picture-in-picture from fullscreen
https://bugs.webkit.org/show_bug.cgi?id=220435

Reviewed by Eric Carlson.

  • WebProcess/cocoa/VideoFullscreenManager.mm:

(WebKit::VideoFullscreenManager::enterVideoFullscreenForVideoElement):
When a fullscreen video enters picture-in-picture, we should not call addClientForContext()
because m_clientCounts was updated when the video entered fullscreen.
(WebKit::VideoFullscreenManager::exitVideoFullscreenToModeWithoutAnimation):
We need to call removeClientForContext() in this function like didCleanupFullscreen() does.

4:29 PM Changeset in webkit [271272] by Russell Epstein
  • 1 copy in tags/Safari-611.1.9.10

Tag Safari-611.1.9.10.

4:22 PM Changeset in webkit [271271] by Russell Epstein
  • 8 edits in branches/safari-611.1.9-branch/Source

Versioning.

WebKit-7611.1.9.10

4:18 PM Changeset in webkit [271270] by eric.carlson@apple.com
  • 11 edits in trunk/Source

[Mac] Add runtime logging to format reader and WebM parser
https://bugs.webkit.org/show_bug.cgi?id=220423
<rdar://problem/72896655>

Reviewed by Andy Estes.

Source/WebCore:

Add a shared Logger to Document that can be used by singletons or objects that don't
have access to a Document. To ensure that the shared logger doesn't log activity
from a private session, it is disabled if *any* Document in the process doesn't
allow logging.

  • WebCore.xcodeproj/project.pbxproj:
  • dom/Document.cpp:

(WebCore::sharedLoggerOwner):
(WebCore::staticSharedLogger):
(WebCore::Document::sharedLogger):
(WebCore::Document::configureSharedLogger):
(WebCore::Document::addToDocumentsMap):
(WebCore::Document::removeFromDocumentsMap):
(WebCore::m_selection):
(WebCore::Document::~Document):

  • dom/Document.h:
  • platform/graphics/cocoa/SourceBufferParserWebM.cpp:

(WTF::LogArgument<webm::TrackType>::toString):
(WebCore::logChannel):
(WebCore::logClassName):
(WebCore::SourceBufferParserWebM::appendData):
(WebCore::SourceBufferParserWebM::setLogger):
(WebCore::SourceBufferParserWebM::OnElementBegin):
(WebCore::SourceBufferParserWebM::OnElementEnd):
(WebCore::SourceBufferParserWebM::OnEbml):
(WebCore::SourceBufferParserWebM::OnSegmentBegin):
(WebCore::SourceBufferParserWebM::OnInfo):
(WebCore::SourceBufferParserWebM::OnClusterBegin):
(WebCore::SourceBufferParserWebM::OnTrackEntry):
(WebCore::SourceBufferParserWebM::OnBlockBegin):
(WebCore::SourceBufferParserWebM::OnBlockEnd):
(WebCore::SourceBufferParserWebM::OnSimpleBlockBegin):
(WebCore::SourceBufferParserWebM::OnSimpleBlockEnd):
(WebCore::SourceBufferParserWebM::OnBlockGroupBegin):
(WebCore::SourceBufferParserWebM::OnBlockGroupEnd):
(WebCore::SourceBufferParserWebM::OnFrame):

  • platform/graphics/cocoa/SourceBufferParserWebM.h:

Source/WebKit:

Use the Document::sharedLogger to log format and track reader state changes
and errors.

  • Shared/mac/MediaFormatReader/MediaFormatReader.cpp:

(WebKit::nextLogIdentifier):
(WebKit::logChannel):
(WebKit::logClassName):
(WebKit::MediaFormatReader::parseByteSource):
(WebKit::MediaFormatReader::didParseTracks):
(WebKit::MediaFormatReader::copyProperty):
(WebKit::MediaFormatReader::nextTrackReaderLogIdentifier const):

  • Shared/mac/MediaFormatReader/MediaFormatReader.h:
  • Shared/mac/MediaFormatReader/WebKit::MediaTrackReader.cpp:

(WebKit::MediaTrackReader::MediaTrackReader):
(WebKit::MediaTrackReader::finishParsing):
(WebKit::MediaTrackReader::mediaTypeString const):
(WebKit::MediaTrackReader::copyProperty):
(WebKit::MediaTrackReader::finalize):
(WebKit::MediaTrackReader::logChannel const):

  • Shared/mac/MediaFormatReader/WebKit::MediaTrackReader.h:
3:56 PM Changeset in webkit [271269] by Alexey Shvayka
  • 124 edits
    3 adds
    2 deletes in trunk

[JSC] Simplify get*PropertyNames() methods and EnumerationMode
https://bugs.webkit.org/show_bug.cgi?id=212954

Reviewed by Yusuke Suzuki.

JSTests:

  • ChakraCore.yaml:
  • ChakraCore/test/Basics/enum.baseline-jsc: Removed.
  • microbenchmarks/for-in-on-object-with-lazily-materialized-properties.js:

Removed because ErrorInstance no longer materializes properties during for/in enumeration.

  • microbenchmarks/object-keys-cloned-arguments.js: Added.
  • microbenchmarks/object-keys-error-object.js: Added.
  • stress/arguments-properties-order.js: Added.
  • stress/for-in-tests.js:
  • stress/for-in-typed-array.js:

Source/JavaScriptCore:

Before this change, OwnPropertyKeys? overrides were sometimes implemented
inconsistently, via different get*PropertyNames() methods that duplicated logic
(e.g. ErrorInstance, RegExpObject, and StringObject).

This patch:

  1. Introduces a clear convention to implement OwnPropertyKeys? overrides: if it's defined by the spec, getOwnPropertyNames() method is used; otherwise, non-materialized properties are enumerated / reified in getOwnSpecialPropertyNames(). While no class should define both methods, we don't assert this to support inheritance.

Removes getOwnNonIndexPropertyNames() from the method table and converts it to instance
method; its overrides were renamed to getOwnSpecialPropertyNames() and exempted from
calling the no-op base method.

This approach was chosen, instead of getOwnNonIndexPropertyNames() override, because
for/in enumeration must be sure there are no enumerable properties between
getEnumerableLength() and the first structure property.

Also, removes getStructurePropertyNames() from the method table as it's unreasonable
to override it.

  1. Extracts JSObject::getOwnIndexPropertyNames() instance method to enforce correct enumeration order in getOwnPropertyNames() overrides: special indices => butterfly storage => special properties => non-reified static => structure properties.

Loose mode arguments were fixed to enumerate indices from butterfly storage before
special properties [1], aligning JSC with V8 and SpiderMonkey.

  1. Reworks for/in enumeration so the special properties always come before structure ones, aligning enumeration order of String objects [2] and typed arrays [3] that have expando properties with the spec, V8, and SpiderMonkey.

Removes getPropertyNames() and getGenericPropertyNames() from the method table, along
with their overrides, because ES7 disabled customization of for/in enumeration [4].
Instead, JSObject::getPropertyNames() instance method and getEnumerablePropertyNames()
are introduced, featuring a loop instead of recursion.

Also, this enabled dropping hard-to-follow JSObjectPropertiesMode bit and simplifying
EnumerationMode to an enum.

for/in and Object.keys microbenchmarks are neutral. This change does not affect
JSPropertyNameEnumerator caching, nor fast paths of its bytecodes.

[1]: https://tc39.es/ecma262/#sec-createmappedargumentsobject (steps 15-16 and 20-21)
[2]: https://tc39.es/ecma262/#sec-string-exotic-objects-ownpropertykeys
[3]: https://tc39.es/ecma262/#sec-integer-indexed-exotic-objects-ownpropertykeys
[4]: https://github.com/tc39/ecma262/pull/367

  • API/JSAPIValueWrapper.h:

Remove OverridesAnyFormOfGetPropertyNames structure flag as it should never be queried
from JSCell instances.

  • API/JSCallbackObject.h:
  • API/JSCallbackObjectFunctions.h:

(JSC::JSCallbackObject<Parent>::getOwnSpecialPropertyNames):
(JSC::JSCallbackObject<Parent>::getOwnNonIndexPropertyNames): Deleted.

  • API/JSObjectRef.cpp:

(JSObjectCopyPropertyNames):

  • bindings/ScriptValue.cpp:

(Inspector::jsToInspectorValue):

  • bytecode/ObjectAllocationProfileInlines.h:

(JSC::ObjectAllocationProfileBase<Derived>::possibleDefaultPropertyCount):
Use DontEnumPropertyMode::Include as the intent is to count all properties, even
private symbols. EnumerationMode() defaults did exclude non-enumerable properties.

  • debugger/DebuggerScope.cpp:

(JSC::DebuggerScope::getOwnPropertyNames):

  • debugger/DebuggerScope.h:
  • runtime/ClassInfo.h:
  • runtime/ClonedArguments.cpp:

(JSC::ClonedArguments::getOwnSpecialPropertyNames):
Don't materialize DontEnum properties unless it's DontEnumPropertiesMode::Include,
advancing provided microbenchmark by ~23%.

(JSC::ClonedArguments::getOwnPropertyNames): Deleted.

  • runtime/ClonedArguments.h:
  • runtime/EnumerationMode.h:

Explicitly specify enum type to reduce its size.

(JSC::EnumerationMode::EnumerationMode): Deleted.
(JSC::EnumerationMode::includeDontEnumProperties): Deleted.
(JSC::EnumerationMode::includeJSObjectProperties): Deleted.

  • runtime/ErrorInstance.cpp:

(JSC::ErrorInstance::getOwnSpecialPropertyNames):
Don't materialize DontEnum properties unless it's DontEnumPropertiesMode::Include,
advancing provided microbenchmark by a factor of 5.

(JSC::ErrorInstance::getOwnNonIndexPropertyNames): Deleted.
(JSC::ErrorInstance::getStructurePropertyNames): Deleted.

  • runtime/ErrorInstance.h:
  • runtime/GenericArguments.h:
  • runtime/GenericArgumentsInlines.h:

(JSC::GenericArguments<Type>::getOwnPropertyNames):

  • runtime/JSArray.cpp:

(JSC::JSArray::getOwnSpecialPropertyNames):
(JSC::JSArray::getOwnNonIndexPropertyNames): Deleted.

  • runtime/JSArray.h:
  • runtime/JSCell.cpp:

(JSC::JSCell::getOwnPropertyNames):
(JSC::JSCell::getOwnSpecialPropertyNames):
(JSC::JSCell::getOwnNonIndexPropertyNames): Deleted.
(JSC::JSCell::getPropertyNames): Deleted.
(JSC::JSCell::getStructurePropertyNames): Deleted.
(JSC::JSCell::getGenericPropertyNames): Deleted.

  • runtime/JSCell.h:
  • runtime/JSFunction.cpp:

(JSC::JSFunction::getOwnSpecialPropertyNames):
(JSC::JSFunction::getOwnNonIndexPropertyNames): Deleted.

  • runtime/JSFunction.h:
  • runtime/JSGenericTypedArrayView.h:
  • runtime/JSGenericTypedArrayViewInlines.h:

(JSC::JSGenericTypedArrayView<Adaptor>::getOwnPropertyNames):

  • runtime/JSGlobalObject.h:

Remove OverridesAnyFormOfGetPropertyNames structure flag as it's inherited from
JSSymbolTableObject, and JSGlobalObject itself doesn't override getOwn*PropertyNames().

  • runtime/JSLexicalEnvironment.cpp:

(JSC::JSLexicalEnvironment::getOwnSpecialPropertyNames):
(JSC::JSLexicalEnvironment::getOwnNonIndexPropertyNames): Deleted.

  • runtime/JSLexicalEnvironment.h:
  • runtime/JSModuleEnvironment.cpp:

(JSC::JSModuleEnvironment::getOwnSpecialPropertyNames):
(JSC::JSModuleEnvironment::getOwnNonIndexPropertyNames): Deleted.

  • runtime/JSModuleEnvironment.h:
  • runtime/JSModuleNamespaceObject.cpp:

(JSC::JSModuleNamespaceObject::getOwnPropertyNames):
Call getOwnNonIndexPropertyNames() directly, guarded by includeSymbolProperties() check,
since module namespace objects can't have string properties besides m_names.
(See https://tc39.es/ecma262/#sec-module-namespace-exotic-objects-defineownproperty-p-desc)

  • runtime/JSModuleNamespaceObject.h:
  • runtime/JSONObject.cpp:

(JSC::Stringifier::Holder::appendNextProperty):
(JSC::Walker::walk):

  • runtime/JSObject.cpp:

(JSC::JSObject::getNonReifiedStaticPropertyNames):
(JSC::JSObject::getPropertyNames):
(JSC::JSObject::getOwnPropertyNames):
(JSC::JSObject::getOwnSpecialPropertyNames):
(JSC::JSObject::getOwnIndexedPropertyNames):
(JSC::JSObject::getOwnNonIndexPropertyNames):
(JSC::getClassPropertyNames): Deleted.
(JSC::JSObject::getStructurePropertyNames): Deleted.
(JSC::JSObject::getGenericPropertyNames): Deleted.

  • runtime/JSObject.h:

(JSC::JSObject::getOwnSpecialPropertyNames):

  • runtime/JSPropertyNameEnumerator.cpp:

(JSC::getEnumerablePropertyNames):

  • runtime/JSPropertyNameEnumerator.h:

(JSC::propertyNameEnumerator):

  • runtime/JSProxy.cpp:

(JSC::JSProxy::getOwnPropertyNames):
(JSC::JSProxy::getPropertyNames): Deleted.
(JSC::JSProxy::getStructurePropertyNames): Deleted.
(JSC::JSProxy::getGenericPropertyNames): Deleted.

  • runtime/JSProxy.h:
  • runtime/JSSymbolTableObject.cpp:

(JSC::JSSymbolTableObject::getOwnSpecialPropertyNames):
(JSC::JSSymbolTableObject::getOwnNonIndexPropertyNames): Deleted.

  • runtime/JSSymbolTableObject.h:
  • runtime/JSTypeInfo.h:

(JSC::TypeInfo::overridesGetOwnPropertyNames const):
(JSC::TypeInfo::overridesGetOwnSpecialPropertyNames const):
(JSC::TypeInfo::overridesAnyFormOfGetOwnPropertyNames const):
(JSC::TypeInfo::overridesGetPropertyNames const): Deleted.
(JSC::TypeInfo::overridesAnyFormOfGetPropertyNames const): Deleted.

  • runtime/ObjectConstructor.cpp:

(JSC::objectConstructorGetOwnPropertyDescriptors):
(JSC::JSC_DEFINE_HOST_FUNCTION):
(JSC::defineProperties):
(JSC::setIntegrityLevel):
(JSC::testIntegrityLevel):
(JSC::ownPropertyKeys):

  • runtime/ProxyObject.cpp:

(JSC::ProxyObject::performGetOwnPropertyNames):
(JSC::ProxyObject::getOwnPropertyNames):
(JSC::ProxyObject::getPropertyNames): Deleted.
(JSC::ProxyObject::getOwnNonIndexPropertyNames): Deleted.
(JSC::ProxyObject::getStructurePropertyNames): Deleted.
(JSC::ProxyObject::getGenericPropertyNames): Deleted.

  • runtime/ProxyObject.h:

Remove IsQuickPropertyAccessAllowedForEnumeration flag from ProxyObject's structure
since canAccessPropertiesQuicklyForEnumeration() now checks for method overrides.

  • runtime/RegExpObject.cpp:

(JSC::RegExpObject::getOwnSpecialPropertyNames):
(JSC::RegExpObject::getOwnNonIndexPropertyNames): Deleted.
(JSC::RegExpObject::getPropertyNames): Deleted.
(JSC::RegExpObject::getGenericPropertyNames): Deleted.

  • runtime/RegExpObject.h:
  • runtime/StringObject.cpp:

(JSC::StringObject::getOwnPropertyNames):
(JSC::StringObject::getOwnNonIndexPropertyNames): Deleted.

  • runtime/StringObject.h:
  • runtime/Structure.cpp:

(JSC::Structure::validateFlags):
Strengthen overridesGetOwn*PropertyNames and overridesGetPrototype asserts into
equivalence tests.

(JSC::Structure::getPropertyNamesFromStructure):
(JSC::Structure::canAccessPropertiesQuicklyForEnumeration const):

  • runtime/Structure.h:
  • runtime/StructureInlines.h:

(JSC::Structure::canCacheOwnPropertyNames const):

  • tools/JSDollarVM.cpp:

Remove OverridesAnyFormOfGetPropertyNames structure flag as it's inherited from
JSArray, and RuntimeArray itself doesn't override getOwn*PropertyNames().

Source/WebCore:

Adjust for changes in JSC's MethodTable, TypeInfo, and EnumerationMode.

No new tests, no behavior change.

  • animation/KeyframeEffect.cpp:

(WebCore::processKeyframeLikeObject):

  • bindings/js/JSDOMConvertRecord.h:
  • bindings/js/JSDOMWindowCustom.cpp:

(WebCore::JSDOMWindow::getOwnPropertyNames):

  • bindings/js/JSLocationCustom.cpp:

(WebCore::JSLocation::getOwnPropertyNames):

  • bindings/js/JSRemoteDOMWindowCustom.cpp:

(WebCore::JSRemoteDOMWindow::getOwnPropertyNames):

  • bindings/js/SerializedScriptValue.cpp:

(WebCore::CloneSerializer::serialize):

  • bindings/scripts/CodeGeneratorJS.pm:

(GenerateGetOwnPropertyNames):
(GenerateHeader):

  • bindings/scripts/test/JS/*: Updated.
  • bridge/NP_jsobject.cpp:
  • bridge/runtime_array.cpp:

(JSC::RuntimeArray::getOwnPropertyNames):

  • bridge/runtime_array.h:
  • bridge/runtime_object.cpp:

(JSC::Bindings::RuntimeObject::getOwnPropertyNames):

  • bridge/runtime_object.h:

Source/WebKit:

Adjust for changes in JSC's MethodTable, TypeInfo, and EnumerationMode.

No new tests, no behavior change.

  • WebProcess/Plugins/Netscape/JSNPObject.cpp:

(WebKit::JSNPObject::getOwnPropertyNames):

  • WebProcess/Plugins/Netscape/JSNPObject.h:
  • WebProcess/Plugins/Netscape/NPJSObject.cpp:

(WebKit::NPJSObject::enumerate):

Source/WebKitLegacy/mac:

  • Plugins/Hosted/NetscapePluginInstanceProxy.mm:

(WebKit::NetscapePluginInstanceProxy::enumerate):

3:56 PM Changeset in webkit [271268] by Russell Epstein
  • 1 copy in tags/Safari-611.1.9.4

Tag Safari-611.1.9.4.

3:24 PM Changeset in webkit [271267] by commit-queue@webkit.org
  • 4 edits in trunk/Source

Unreviewed, reverting r271192.
https://bugs.webkit.org/show_bug.cgi?id=220440

Reverted changeset:

"NSCrossWebsiteTrackingUsageDescription is not working on Mac,
ITP is always enabled"
https://bugs.webkit.org/show_bug.cgi?id=220190
https://trac.webkit.org/changeset/271192

3:17 PM Changeset in webkit [271266] by Russell Epstein
  • 4 edits in branches/safari-610.4.3.1-branch/Source

Revert "Cherry-pick r271192. rdar://problem/72894099"

This reverts commit r271251.

3:17 PM Changeset in webkit [271265] by ysuzuki@apple.com
  • 12 edits
    4 adds in trunk

[JSC] New expression and value function call should reserve function register if arguments include assignments
https://bugs.webkit.org/show_bug.cgi?id=220429
<rdar://problem/70598359>

Reviewed by Alexey Shvayka.

JSTests:

  • stress/comma-value-func-call-resolve.js: Added.

(shouldBe):
(fn.x):
(fn):

  • stress/construct-overwritten-variable.js:

(shouldThrow):
(new.x.x): Deleted.

  • stress/construct-spread-overwritten-variable-2.js:

(shouldThrow):
(new.x.x): Deleted.

  • stress/construct-spread-overwritten-variable.js:

(shouldThrow):
(new.x.x): Deleted.

  • stress/destructuring-func-call-resolve.js: Added.

(shouldBe):
(fn.x):
(fn):
(fn2.x):
(fn2):

  • stress/resolve-func-call-resolve.js: Added.

(shouldBe):
(fn.x):
(fn):

  • stress/tagged-template-call-resolve.js: Added.

(shouldBe):
(fn.x):
(fn):

  • test262/expectations.yaml:

Source/JavaScriptCore:

If the following code is executed, we need to reserve |x| before evaluating arguments since arguments can override
local |x| variable before calling it.

new x(x = 1)

We found there are two places we are not doing this.

  1. new expression
  2. function value call (it is checking isLocation(), but we can still use local variables for function if we use comma expression)

We introduced hasAssignment flag to ArgumentsNode, and reserve a function in a new temporary register if arguments include assignments.
We also need to increment assignmentCount in destructuring assignment.

  • bytecompiler/NodesCodegen.cpp:

(JSC::NewExprNode::emitBytecode):
(JSC::FunctionCallValueNode::emitBytecode):

  • parser/ASTBuilder.h:

(JSC::ASTBuilder::createArguments):

  • parser/NodeConstructors.h:

(JSC::ArgumentsNode::ArgumentsNode):

  • parser/Nodes.h:
  • parser/Parser.cpp:

(JSC::Parser<LexerType>::parseDestructuringPattern):
(JSC::Parser<LexerType>::parseArguments):

  • parser/SyntaxChecker.h:

(JSC::SyntaxChecker::createArguments):

3:10 PM Changeset in webkit [271264] by commit-queue@webkit.org
  • 5 edits in trunk/Source/WebKit

Use smart pointers in UIDelegate and NavigationState
https://bugs.webkit.org/show_bug.cgi?id=220394
<rdar://problem/72496374>

Patch by Alex Christensen <achristensen@webkit.org> on 2021-01-07
Reviewed by Geoff Garen.

UIDelegate and NavigationState are owned by WKWebView, but the clients are owned by WebPageProxy,
which is independently reference counted and can have a different lifetime.
There should be no raw C++ references between the two, so use WeakPtr instead.
Also, use WeakObjCPtr<WKWebView> instead of a raw C++ WKWebView*

  • UIProcess/Cocoa/NavigationState.h:
  • UIProcess/Cocoa/NavigationState.mm:

(WebKit::NavigationState::NavigationState):
(WebKit::NavigationState::~NavigationState):
(WebKit::NavigationState::navigationGestureDidBegin):
(WebKit::NavigationState::navigationGestureWillEnd):
(WebKit::NavigationState::navigationGestureDidEnd):
(WebKit::NavigationState::willRecordNavigationSnapshot):
(WebKit::NavigationState::navigationGestureSnapshotWasRemoved):
(WebKit::NavigationState::didRequestPasswordForQuickLookDocument):
(WebKit::NavigationState::didFirstPaint):
(WebKit::NavigationState::NavigationClient::NavigationClient):
(WebKit::NavigationState::NavigationClient::webGLLoadPolicy const):
(WebKit::NavigationState::NavigationClient::resolveWebGLLoadPolicy const):
(WebKit::NavigationState::NavigationClient::didChangeBackForwardList):
(WebKit::NavigationState::NavigationClient::willGoToBackForwardListItem):
(WebKit::NavigationState::NavigationClient::decidePolicyForNavigationAction):
(WebKit::NavigationState::NavigationClient::contentRuleListNotification):
(WebKit::NavigationState::NavigationClient::decidePolicyForNavigationResponse):
(WebKit::NavigationState::NavigationClient::didStartProvisionalNavigation):
(WebKit::NavigationState::NavigationClient::didStartProvisionalLoadForFrame):
(WebKit::NavigationState::NavigationClient::didReceiveServerRedirectForProvisionalNavigation):
(WebKit::NavigationState::NavigationClient::willPerformClientRedirect):
(WebKit::NavigationState::NavigationClient::didPerformClientRedirect):
(WebKit::NavigationState::NavigationClient::didCancelClientRedirect):
(WebKit::NavigationState::NavigationClient::didFailProvisionalNavigationWithError):
(WebKit::NavigationState::NavigationClient::didFailProvisionalLoadWithErrorForFrame):
(WebKit::NavigationState::NavigationClient::didCommitNavigation):
(WebKit::NavigationState::NavigationClient::didCommitLoadForFrame):
(WebKit::NavigationState::NavigationClient::didFinishDocumentLoad):
(WebKit::NavigationState::NavigationClient::didFinishNavigation):
(WebKit::NavigationState::NavigationClient::didFinishLoadForFrame):
(WebKit::NavigationState::NavigationClient::didFailNavigationWithError):
(WebKit::NavigationState::NavigationClient::didFailLoadWithErrorForFrame):
(WebKit::NavigationState::NavigationClient::didSameDocumentNavigation):
(WebKit::NavigationState::NavigationClient::renderingProgressDidChange):
(WebKit::NavigationState::NavigationClient::shouldBypassContentModeSafeguards const):
(WebKit::NavigationState::NavigationClient::didReceiveAuthenticationChallenge):
(WebKit::NavigationState::NavigationClient::shouldAllowLegacyTLS):
(WebKit::NavigationState::NavigationClient::didNegotiateModernTLS):
(WebKit::NavigationState::NavigationClient::processDidTerminate):
(WebKit::NavigationState::NavigationClient::processDidBecomeResponsive):
(WebKit::NavigationState::NavigationClient::processDidBecomeUnresponsive):
(WebKit::NavigationState::NavigationClient::webCryptoMasterKey):
(WebKit::NavigationState::NavigationClient::navigationActionDidBecomeDownload):
(WebKit::NavigationState::NavigationClient::navigationResponseDidBecomeDownload):
(WebKit::NavigationState::NavigationClient::contextMenuDidCreateDownload):
(WebKit::NavigationState::NavigationClient::didStartLoadForQuickLookDocumentInMainFrame):
(WebKit::NavigationState::NavigationClient::didFinishLoadForQuickLookDocumentInMainFrame):
(WebKit::NavigationState::NavigationClient::decidePolicyForSOAuthorizationLoad):
(WebKit::NavigationState::HistoryClient::HistoryClient):
(WebKit::NavigationState::HistoryClient::didNavigateWithNavigationData):
(WebKit::NavigationState::HistoryClient::didPerformClientRedirect):
(WebKit::NavigationState::HistoryClient::didPerformServerRedirect):
(WebKit::NavigationState::HistoryClient::didUpdateHistoryTitle):

  • UIProcess/Cocoa/UIDelegate.h:
  • UIProcess/Cocoa/UIDelegate.mm:

(WebKit::UIDelegate::ContextMenuClient::ContextMenuClient):
(WebKit::UIDelegate::ContextMenuClient::menuFromProposedMenu):
(WebKit::UIDelegate::UIClient::UIClient):
(WebKit::UIDelegate::UIClient::createNewPage):
(WebKit::UIDelegate::UIClient::runJavaScriptAlert):
(WebKit::UIDelegate::UIClient::runJavaScriptConfirm):
(WebKit::UIDelegate::UIClient::runJavaScriptPrompt):
(WebKit::UIDelegate::UIClient::requestStorageAccessConfirm):
(WebKit::UIDelegate::UIClient::decidePolicyForGeolocationPermissionRequest):
(WebKit::UIDelegate::UIClient::didResignInputElementStrongPasswordAppearance):
(WebKit::UIDelegate::UIClient::canRunBeforeUnloadConfirmPanel const):
(WebKit::UIDelegate::UIClient::runBeforeUnloadConfirmPanel):
(WebKit::UIDelegate::UIClient::exceededDatabaseQuota):
(WebKit::UIDelegate::UIClient::takeFocus):
(WebKit::UIDelegate::UIClient::handleAutoplayEvent):
(WebKit::UIDelegate::UIClient::canRunModal const):
(WebKit::UIDelegate::UIClient::runModal):
(WebKit::UIDelegate::UIClient::headerHeight):
(WebKit::UIDelegate::UIClient::footerHeight):
(WebKit::UIDelegate::UIClient::drawHeader):
(WebKit::UIDelegate::UIClient::drawFooter):
(WebKit::UIDelegate::UIClient::pageDidScroll):
(WebKit::UIDelegate::UIClient::focus):
(WebKit::UIDelegate::UIClient::unfocus):
(WebKit::UIDelegate::UIClient::unavailablePluginButtonClicked):
(WebKit::UIDelegate::UIClient::didExceedBackgroundResourceLimitWhileInForeground):
(WebKit::UIDelegate::UIClient::didNotHandleWheelEvent):
(WebKit::UIDelegate::UIClient::setIsResizable):
(WebKit::UIDelegate::UIClient::setWindowFrame):
(WebKit::UIDelegate::UIClient::windowFrame):
(WebKit::UIDelegate::UIClient::mouseDidMoveOverElement):
(WebKit::UIDelegate::UIClient::toolbarsAreVisible):
(WebKit::UIDelegate::UIClient::didClickAutoFillButton):
(WebKit::UIDelegate::UIClient::showPage):
(WebKit::UIDelegate::UIClient::saveDataToFileInDownloadsFolder):
(WebKit::UIDelegate::UIClient::decidePolicyForNotificationPermissionRequest):
(WebKit::UIDelegate::UIClient::configurationForLocalInspector):
(WebKit::UIDelegate::UIClient::didAttachLocalInspector):
(WebKit::UIDelegate::UIClient::willCloseLocalInspector):
(WebKit::UIDelegate::UIClient::runOpenPanel):
(WebKit::UIDelegate::UIClient::shouldAllowDeviceOrientationAndMotionAccess):
(WebKit::UIDelegate::UIClient::didChangeFontAttributes):
(WebKit::UIDelegate::UIClient::decidePolicyForUserMediaPermissionRequest):
(WebKit::UIDelegate::UIClient::checkUserMediaPermissionForOrigin):
(WebKit::UIDelegate::UIClient::mediaCaptureStateDidChange):
(WebKit::UIDelegate::UIClient::reachedApplicationCacheOriginQuota):
(WebKit::UIDelegate::UIClient::printFrame):
(WebKit::UIDelegate::UIClient::close):
(WebKit::UIDelegate::UIClient::fullscreenMayReturnToInline):
(WebKit::UIDelegate::UIClient::didEnterFullscreen):
(WebKit::UIDelegate::UIClient::didExitFullscreen):
(WebKit::UIDelegate::UIClient::shouldIncludeAppLinkActionsForElement):
(WebKit::UIDelegate::UIClient::actionsForElement):
(WebKit::UIDelegate::UIClient::didNotHandleTapAsClick):
(WebKit::UIDelegate::UIClient::presentingViewController):
(WebKit::UIDelegate::UIClient::dataDetectionContext):
(WebKit::UIDelegate::UIClient::requestPointerLock):
(WebKit::UIDelegate::UIClient::didLosePointerLock):
(WebKit::UIDelegate::UIClient::didShowSafeBrowsingWarning):
(WebKit::UIDelegate::UIClient::confirmPDFOpening):
(WebKit::UIDelegate::UIClient::runWebAuthenticationPanel):
(WebKit::UIDelegate::UIClient::hasVideoInPictureInPictureDidChange):
(WebKit::UIDelegate::UIClient::imageOrMediaDocumentSizeChanged):
(WebKit::UIDelegate::UIClient::decidePolicyForSpeechRecognitionPermissionRequest):

3:09 PM Changeset in webkit [271263] by commit-queue@webkit.org
  • 3 edits in trunk/Source/WebKit

Assertion failure in WebPageProxy::stopURLSchemeTask,
https://bugs.webkit.org/show_bug.cgi?id=220401

Patch by Alex Christensen <achristensen@webkit.org> on 2021-01-07
Reviewed by Ryosuke Niwa.

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::startURLSchemeTaskShared):
(WebKit::WebPageProxy::stopURLSchemeTask):
(WebKit::WebPageProxy::loadSynchronousURLSchemeTask):

  • UIProcess/WebURLSchemeHandler.cpp:

(WebKit::WebURLSchemeHandler::processForTaskIdentifier const):
(WebKit::WebURLSchemeHandler::stopTask):
(WebKit::WebURLSchemeHandler::removeTaskFromPageMap):

3:09 PM Changeset in webkit [271262] by Wenson Hsieh
  • 4 edits in trunk

Text fields should not be translated while typing
https://bugs.webkit.org/show_bug.cgi?id=220431
<rdar://problem/71724918>

Reviewed by Tim Horton.

Source/WebCore:

Don't vend text nodes or newly created elements inside input elements for translation (i.e. text manipulation)
if the input element was modified by the user. Note that this check is right before the call to
observeParagraphs as opposed to when we schedule the observation update, since edit commands may create
renderers for text nodes and other elements before the m_lastChangeWasUserEdit flag has been set.

Test: TextManipulation.StartTextManipulationDoesNotExtractUserModifiedText

  • editing/TextManipulationController.cpp:

(WebCore::TextManipulationController::scheduleObservationUpdate):

Tools:

Add an API test that modifies text in two input fields (by executing an edit command, and then by
programmatically setting the value attribute). The test verifies that only the latter (programmatic) value
change propagates a text manipulation update to the client layer.

  • TestWebKitAPI/Tests/WebKitCocoa/TextManipulation.mm:

(TestWebKitAPI::TEST):

2:40 PM Changeset in webkit [271261] by eric.carlson@apple.com
  • 2 edits in trunk/Source/WebCore

[MSE] Fix potential crash in SourceBufferPrivateAVFObjC::destroyParser
https://bugs.webkit.org/show_bug.cgi?id=220434

Reviewed by Jer Noble.

  • platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.mm:

(WebCore::SourceBufferPrivateAVFObjC::destroyParser): NULL-check
m_mediaSource->player() before using it.

2:30 PM Changeset in webkit [271260] by commit-queue@webkit.org
  • 4 edits in trunk

make clean/installsrc fail: You cannot specify -alltargets and also specify individual targets.
https://bugs.webkit.org/show_bug.cgi?id=220370
rdar://72834872

Patch by Ryan Hostetler <rhost@apple.com> on 2021-01-07
Reviewed by Andy Estes.

.:

Update hardcoded '-alltargets' to use new XCODE_TARGET variable.

  • Makefile.shared:

Source/ThirdParty/libwebrtc:

Use new XCODE_TARGET variable to set boringssl target on watchOS builds.

  • Makefile:
2:06 PM Changeset in webkit [271259] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

[ Mac ] http/wpt/service-workers/service-worker-spinning-install.https.html is flaky failing
https://bugs.webkit.org/show_bug.cgi?id=219516

Unreviewed test gardening.

  • platform/mac-wk2/TestExpectations: Mark test as flaky.
1:15 PM Changeset in webkit [271258] by commit-queue@webkit.org
  • 6 edits in trunk/Tools

[webkitscmpy] Use .git/config to verify if repository is git-svn
https://bugs.webkit.org/show_bug.cgi?id=220427
<rdar://problem/72899735>

Patch by Jonathan Bedard <JonWBedard@gmail.com> on 2021-01-07
Reviewed by Dewei Zhu.

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

(Git.is_svn): Use .git/config to verify if a repository is git-svn.

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

(Git): Populate .git/config if the provided path is writeable.

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

(TestFind.test_revision_git_svn): Use a temporary directory so files
can be written.

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

(TestGit.test_scm_type): Use a temporary directory so files can be written.
(TestGit.test_info): Ditto.
(TestGit.test_commit_revision): Ditto.

12:56 PM Changeset in webkit [271257] by commit-queue@webkit.org
  • 5 edits in trunk

[CMake] Add USE_APPLE_ICU option
https://bugs.webkit.org/show_bug.cgi?id=220081

Patch by Monson Shao <holymonson@gmail.com> on 2021-01-07
Reviewed by Yusuke Suzuki.

Add USE_APPLE_ICU option to allow non-Mac ports (GTK or JSCOnly) on Darwin could build with
non-Apple ICU.

.:

  • Source/cmake/OptionsCommon.cmake:
  • Source/cmake/WebKitFindPackage.cmake:

Source/WTF:

  • CMakeLists.txt:
12:56 PM Changeset in webkit [271256] by Russell Epstein
  • 1 edit in branches/safari-610.4.3.0-branch/Source/JavaScriptCore/dfg/DFGConstantFoldingPhase.cpp

Unreviewed build fix, rdar://problem/72894016

./dfg/DFGConstantFoldingPhase.cpp:710:33: error: non-void function 'foldConstants' should return a value [-Wreturn-type]

12:54 PM Changeset in webkit [271255] by Russell Epstein
  • 1 edit in branches/safari-610.4.3.1-branch/Source/JavaScriptCore/dfg/DFGConstantFoldingPhase.cpp

Unreviewed build fix, rdar://problem/72894016

./dfg/DFGConstantFoldingPhase.cpp:710:33: error: non-void function 'foldConstants' should return a value [-Wreturn-type]

12:26 PM Changeset in webkit [271254] by Fujii Hironori
  • 2 edits in trunk/Source/WebCore

[WinCairo] WebGL isn't shown in non-AC mode
https://bugs.webkit.org/show_bug.cgi?id=220380

Reviewed by Kenneth Russell.

If WinCairo disabled accelerated compositing, no WebGL were shown.
GraphicsContextGLOpenGL::readCompositedResults wasn't implemented
for !PLATFORM(COCOA).

  • platform/graphics/opengl/GraphicsContextGLOpenGL.cpp:

(WebCore::GraphicsContextGLOpenGL::readCompositedResults):

12:17 PM Changeset in webkit [271253] by aestes@apple.com
  • 7 edits
    8 moves
    2 adds in trunk/Source

[Mac] Prepend "Media" to FormatReader, SampleCursor, and TrackReader class names
https://bugs.webkit.org/show_bug.cgi?id=220424

Reviewed by Eric Carlson.

Source/WebCore:

  • platform/graphics/cocoa/SourceBufferParserWebM.h:

Source/WebKit:

Also moved MediaSampleByteRange into its own file from MediaTrackReader.cpp.

  • MediaFormatReaderPlugIn/MediaFormatReaderPlugIn.cpp:
  • Shared/API/c/mac/WKMediaFormatReader.cpp: Renamed from Source/WebKit/Shared/API/c/mac/WKFormatReader.cpp.
  • Shared/API/c/mac/WKMediaFormatReader.h: Renamed from Source/WebKit/Shared/API/c/mac/WKFormatReader.h.
  • Shared/mac/MediaFormatReader/CoreMediaWrapped.h: Updated DECLARE_CORE_MEDIA_TRAITS to account for renaming.
  • Shared/mac/MediaFormatReader/MediaFormatReader.cpp: Renamed from Source/WebKit/Shared/mac/MediaFormatReader/FormatReader.cpp.
  • Shared/mac/MediaFormatReader/MediaFormatReader.h: Renamed from Source/WebKit/Shared/mac/MediaFormatReader/FormatReader.h.
  • Shared/mac/MediaFormatReader/MediaSampleByteRange.cpp: Added.
  • Shared/mac/MediaFormatReader/MediaSampleByteRange.h: Added.
  • Shared/mac/MediaFormatReader/MediaSampleCursor.cpp: Renamed from Source/WebKit/Shared/mac/MediaFormatReader/SampleCursor.cpp.
  • Shared/mac/MediaFormatReader/MediaSampleCursor.h: Renamed from Source/WebKit/Shared/mac/MediaFormatReader/SampleCursor.h.
  • Shared/mac/MediaFormatReader/MediaTrackReader.cpp: Renamed from Source/WebKit/Shared/mac/MediaFormatReader/TrackReader.cpp.
  • Shared/mac/MediaFormatReader/MediaTrackReader.h: Renamed from Source/WebKit/Shared/mac/MediaFormatReader/TrackReader.h.
  • SourcesCocoa.txt:
  • WebKit.xcodeproj/project.pbxproj:
12:02 PM Changeset in webkit [271252] by Russell Epstein
  • 8 edits in branches/safari-610.4.3.0-branch/Source

Versioning.

WebKit-7610.4.3.0.1

12:01 PM Changeset in webkit [271251] by Russell Epstein
  • 4 edits in branches/safari-610.4.3.1-branch/Source

Cherry-pick r271192. rdar://problem/72894099

NSCrossWebsiteTrackingUsageDescription is not working on Mac, ITP is always enabled
https://bugs.webkit.org/show_bug.cgi?id=220190
<rdar://problem/72744909>

Reviewed by Brent Fulgham.

Source/WebKit:

Consider the presence of the NSCrossWebsiteTrackingUsageDescription
key as an indication to disable ITP for WKWebView until we implement
a mechanism for disabling it in WKWebView like we do for iOS to avoid
compatibility bugs.

  • Shared/Cocoa/DefaultWebBrowserChecks.mm: (WebKit::determineITPStateInternal):

Source/WTF:

  • wtf/PlatformUse.h:

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

11:58 AM Changeset in webkit [271250] by Russell Epstein
  • 8 edits in branches/safari-610.4.3.1-branch/Source

Versioning.

WebKit-7610.4.3.1.1

11:53 AM Changeset in webkit [271249] by Russell Epstein
  • 1 copy in branches/safari-610.4.3.1-branch

New branch.

11:53 AM Changeset in webkit [271248] by Russell Epstein
  • 1 copy in branches/safari-610.4.3.0-branch

New branch.

11:50 AM Changeset in webkit [271247] by Russell Epstein
  • 5 edits in branches/safari-610-branch/Source/JavaScriptCore

Cherry-pick r271143. rdar://problem/72893965

Validate every instruction in AssemblerBuffer
https://bugs.webkit.org/show_bug.cgi?id=218104
<rdar://problem/69433094>

Reviewed by Saam Barati.

  • assembler/AssemblerBuffer.cpp: (JSC::threadSpecificAssemblerHashes):
  • assembler/AssemblerBuffer.h: (JSC::AssemblerBuffer::AssemblerBuffer): (JSC::AssemblerBuffer::~AssemblerBuffer): (JSC::AssemblerBuffer::releaseAssemblerData): (JSC::AssemblerBuffer::releaseAssemblerHashes): (JSC::AssemblerBuffer::putIntegralUnchecked): (JSC::AssemblerBuffer::grow): (JSC::AssemblerBuffer::outOfLineGrow): (JSC::ARM64EHash::update): Deleted. (JSC::ARM64EHash::finalHash const): Deleted. (): Deleted. (JSC::AssemblerBuffer::hash const): Deleted.
  • assembler/LinkBuffer.cpp: (JSC::LinkBuffer::copyCompactAndLinkCode):
  • assembler/LinkBuffer.h:

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

11:50 AM Changeset in webkit [271246] by Russell Epstein
  • 4 edits in branches/safari-610-branch/Source/JavaScriptCore

Cherry-pick r271034. rdar://problem/72894016

DFG should make sure replacement watchpoint is fired before folding to PutByOffset
https://bugs.webkit.org/show_bug.cgi?id=220031
<rdar://72045350>

Reviewed by Saam Barati.

  • dfg/DFGByteCodeParser.cpp: (JSC::DFG::ByteCodeParser::presenceConditionIfConsistent): (JSC::DFG::ByteCodeParser::checkPresence): (JSC::DFG::ByteCodeParser::checkPresenceForReplace): (JSC::DFG::ByteCodeParser::load): (JSC::DFG::ByteCodeParser::store): (JSC::DFG::ByteCodeParser::presenceLike): Deleted. (JSC::DFG::ByteCodeParser::checkPresenceLike): Deleted.
  • dfg/DFGConstantFoldingPhase.cpp: (JSC::DFG::ConstantFoldingPhase::tryFoldAsPutByOffset):
  • runtime/Structure.cpp: (JSC::Structure::dump const):

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

11:49 AM Changeset in webkit [271245] by Chris Dumez
  • 12 edits
    1 add in trunk

[GPUProcess] Implement GPUProcess crash recovery for MediaElementAudioSourceNode
https://bugs.webkit.org/show_bug.cgi?id=220391

Reviewed by Geoffrey Garen.

Source/WebCore:

When audio is playing using WebAudio and a MediaElementAudioSourceNode, make sure that
audio resumes playing seemlessly after a GPUProcess crash.

  • html/HTMLMediaElement.cpp:

(WebCore::HTMLMediaElement::mediaEngineWasUpdated):
(WebCore::HTMLMediaElement::mediaPlayerEngineUpdated):
Reconstruct the audioSourceProvider (and add the audioSourceNode as its client) as soon
as possible after the media engine was (re-)initialized in mediaPlayerEngineUpdated(),
instead of doing it asynchronously in mediaEngineWasUpdated(). This does not run script
so it is safe to call synchronously. If the GPUProcess crashes while a
MediaElementAudioSourceNode is playing, MediaElementAudioSourceNode::process() needs the
audioSourceProvider to get the input audio. If we don't eagerly construct the
audioSourceProvider here, then it may happen on the audio rendering thread, when the
MediaElementAudioSourceNode actually needs it, which would not be safe.

(WebCore::HTMLMediaElement::mediaPlayerWillInitializeMediaEngine):
(WebCore::HTMLMediaElement::mediaPlayerDidInitializeMediaEngine):
As mentioned earlier, MediaElementAudioSourceNode::process() runs on the audio thread
and accesses HTMLMediaElement::audioSourceProvider(), which calls
MediaPlayer::audioSourceProvider(), which calls
MediaPlayerPrivate::audioSourceProvider(). To be thread-safe, we need to make sure we
hold the MediaElementAudioSourceNode's process lock while the MediaPlayerPrivate is
being reconstructed in MediaPlayer (which happens when the GPUProcess crashes).

  • html/HTMLMediaElement.h:
  • platform/graphics/MediaPlayer.cpp:

(WebCore::MediaPlayer::loadWithNextMediaEngine):

  • platform/graphics/MediaPlayer.h:

(WebCore::MediaPlayerClient::mediaPlayerWillInitializeMediaEngine):
(WebCore::MediaPlayerClient::mediaPlayerDidInitializeMediaEngine):
Add new MediaPlayerClient interface functions that are called before and after the
MediaPlayerPrivate gets (re-)constructed. This is needed by the HTMLMediaElement
to hold a lock while this is happening.

Source/WebKit:

When audio is playing using WebAudio and a MediaElementAudioSourceNode, make sure that
audio resumes playing seemlessly after a GPUProcess crash.

  • WebProcess/GPU/GPUProcessConnection.h:

Subclass CanMakeWeakPtr<> so that clients can hold a weak pointer to a GPUProcessConnection.

  • WebProcess/GPU/media/RemoteAudioSourceProvider.cpp:

(WebKit::RemoteAudioSourceProvider::create):
(WebKit::RemoteAudioSourceProvider::RemoteAudioSourceProvider):
(WebKit::RemoteAudioSourceProvider::close):
(WebKit::RemoteAudioSourceProvider::hasNewClient):

  • WebProcess/GPU/media/RemoteAudioSourceProvider.h:

Associate the RemoteAudioSourceProvider with a specific GPUProcessConnection instead of always
using the latest connection via WebProcess::ensureGPUProcessConnection(). In the event of a
GPUProcess crash, MediaPlayer will reconstruct its MediaPlayerPrivate which will reconstruct
a new RemoteAudioSourceProvider (since RemoteAudioSourceProvider is owned by
MediaPlayerPrivateRemote). As a result, RemoteAudioSourceProvider does not need to do anything
to deal with a GPUProcess crash. However, we need to make sure it only interacts with the
GPUProcessConnection that existed when it was constructed.

Tools:

Add API test coverage.

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/WebKitCocoa/GPUProcess.mm:

(TEST):

  • TestWebKitAPI/Tests/WebKitCocoa/webaudio-createMediaElementSource.html: Added.
11:34 AM Changeset in webkit [271244] by commit-queue@webkit.org
  • 8 edits
    2 deletes in trunk/Tools

LayoutTestFinder should be in charge of finding layout tests
https://bugs.webkit.org/show_bug.cgi?id=220025

Patch by Sam Sneddon <Sam Sneddon> on 2021-01-07
Reviewed by Jonathan Bedard.

  • Scripts/webkitpy/layout_tests/controllers/layout_test_finder.py:

(_is_reference_html_file): Formerly Port.is_reference_html_file
(_has_supported_extension): Formerly Port._has_supported_extension
(LayoutTestFinder.init): Define self._w3c_resource_files
(LayoutTestFinder.find_tests): Change to call within the class
(LayoutTestFinder.find_tests_by_path): Formerly Port.tests
(LayoutTestFinder._expanded_paths): Formerly Port._expanded_paths
(LayoutTestFinder._real_tests): Formerly Port._real_tests
(LayoutTestFinder._is_test_file): Formerly Port._is_test_file
(LayoutTestFinder._is_w3c_resource_file): Formerly Port._is_w3c_resource_file
(LayoutTestFinder.find_touched_tests): Update for the above

  • Scripts/webkitpy/layout_tests/controllers/layout_test_finder_unittest.py:

(MockLayoutTestFinder):
(MockLayoutTestFinder._real_tests): Move this from the former MockPort.tests
(LayoutTestFinderTests.make_finder): Similar to the make_port in base_unittest.py
(LayoutTestFinderTests.touched_files): Adjust for MockLayoutTestFinder
(LayoutTestFinderTests):
(LayoutTestFinderTests.test_is_reference_html_file): Add test to check references are subset of tests
(LayoutTestFinderTests.test_find_no_paths_specified): Formerly PortTest.test_find_no_paths_specified
(LayoutTestFinderTests.test_find_one_test): Formerly PortTest.test_find_one_test
(LayoutTestFinderTests.test_find_glob): Formerly PortTest.test_find_glob
(LayoutTestFinderTests.test_find_with_skipped_directories): Formerly PortTest.test_find_with_skipped_directories
(LayoutTestFinderTests.test_find_with_skipped_directories_2): Formerly PortTest.test_find_with_skipped_directories_2
(LayoutTestFinderTests.test_is_test_file): Formerly PortTest.test_is_test_file
(LayoutTestFinderTests.test_is_w3c_resource_file): Formerly PortTest.test_is_w3c_resource_file
(test_touched_but_skipped_test): Adjust for MockLayoutTestFinder
(MockPort): Deleted.
(LayoutTestFinderTests.test_touched_test): Deleted.
(LayoutTestFinderTests.test_expected_touched_test): Deleted.
(LayoutTestFinderTests.test_platform_expected_touched_test): Deleted.
(LayoutTestFinderTests.test_platform_duplicate_touched_test): Deleted.
(LayoutTestFinderTests.test_touched_but_skipped_test): Deleted.

  • Scripts/webkitpy/layout_tests/models/test_input.py:

(TestInput.init): Remove unused reference_files and should_run_pixel_tests
(TestInput.repr): Remove unused should_run_pixel_tests

  • Scripts/webkitpy/port/base.py:

(Port.tests): Deleted.
(Port._expanded_paths): Deleted.
(Port._real_tests): Deleted.
(Port.is_w3c_resource_file): Deleted.
(Port.is_reference_html_file): Deleted.
(Port._has_supported_extension): Deleted.
(Port._is_test_file): Deleted.

  • Scripts/webkitpy/port/base_unittest.py:

(PortTest.test_find_no_paths_specified): Deleted.
(PortTest.test_find_one_test): Deleted.
(PortTest.test_find_glob): Deleted.
(PortTest.test_find_with_skipped_directories): Deleted.
(PortTest.test_find_with_skipped_directories_2): Deleted.
(PortTest.test_is_test_file): Deleted.
(PortTest.test_is_reference_html_file): Deleted.
(PortTest.test_tests): Deleted.
(PortTest.test_is_w3c_resource_file): Deleted.
(test_jhbuild_wrapper): Deleted.
(test_ref_tests_platform_directory): Deleted.
(test_commits_for_upload): Deleted.

  • Scripts/webkitpy/port/factory.py:

(PortFactory): Remove mock_drt

  • Scripts/webkitpy/port/mock_drt.py: Removed.
  • Scripts/webkitpy/port/mock_drt_unittest.py: Removed.
  • Scripts/webkitpy/tool/commands/queries.py:

(PrintExpectations.execute): Adjust for Port.tests moving to LayoutTestFinder
(PrintBaselines.execute): Adjust for Port._real_tests moving to LayoutTestFinder

10:47 AM Changeset in webkit [271243] by commit-queue@webkit.org
  • 14 edits in trunk/Source/WebKit

WebKit IPC message names should indicate if the message is synchronous
https://bugs.webkit.org/show_bug.cgi?id=220319

Patch by Kimmo Kinnunen <kkinnunen@apple.com> on 2021-01-07
Reviewed by Chris Dumez.

Order WebKit IPC MessageName enumerators by listing asynchronous
messages first. This enables relatively efficient implementation of
isMessageSync().

Remove MessageFlags::SyncMessage. This information is already stored
in the MessageName -- a message is either synchronous or asynchronous,
but not both.

  • Platform/IPC/Connection.cpp:

(IPC::Connection::createSyncMessageEncoder):

  • Platform/IPC/Decoder.cpp:

(IPC::Decoder::alignBufferPosition):

  • Platform/IPC/Decoder.h:

(IPC::Decoder::isSyncMessage const):

  • Platform/IPC/Encoder.cpp:

(IPC::Encoder::grow):

  • Platform/IPC/Encoder.h:
  • Platform/IPC/MessageArgumentDescriptions.h:
  • Platform/IPC/MessageFlags.h:
  • Scripts/webkit/messages.py:
  • Scripts/webkit/messages_unittest.py:

(GeneratedFileContentsTest):

  • Scripts/webkit/model.py:

(check_global_model_inputs):

  • Scripts/webkit/model_unittest.py:

(test_mismatch_message_attribute_sync):

  • Scripts/webkit/tests/MessageArgumentDescriptions.cpp:
  • Scripts/webkit/tests/MessageNames.cpp:

(IPC::description):
(IPC::receiverName):
(IPC::isValidMessageName):

  • Scripts/webkit/tests/MessageNames.h:

(IPC::messageIsSync):

10:17 AM Changeset in webkit [271242] by ysuzuki@apple.com
  • 3 edits in trunk/JSTests

Unreviewed, check ICU header version instead of ICU version
https://bugs.webkit.org/show_bug.cgi?id=220419

Since open-source WebKit is built against old ICU header, we sometimes disable features based on ICU header version.
So, need to check features based on ICU header version instead of ICU version.

  • stress/intl-datetimeformat-format-range-should-check-practically-equal.js:

(vm.icuHeaderVersion):
(vm.icuVersion): Deleted.

  • stress/intl-datetimeformat-format-range-to-parts-should-check-practically-equal.js:

(vm.icuHeaderVersion):
(vm.icuVersion): Deleted.

10:03 AM Changeset in webkit [271241] by ysuzuki@apple.com
  • 2 edits in trunk/JSTests

Unreviewed, adjust test262 result
https://bugs.webkit.org/show_bug.cgi?id=220420

test262 bot is using Catalina's ICU.

  • test262/config.yaml:
9:33 AM Changeset in webkit [271240] by mark.lam@apple.com
  • 3 edits in trunk/Source/JavaScriptCore

The scratch register should be different from the target register when calling validateUntaggedPtr.
https://bugs.webkit.org/show_bug.cgi?id=220397
rdar://72771069

Reviewed by Yusuke Suzuki.

  • assembler/MacroAssemblerARM64E.h:

(JSC::MacroAssemblerARM64E::validateUntaggedPtr):

  • Added an ASSERT to enforce this invariant.
  • jit/ThunkGenerators.cpp:

(JSC::emitPointerValidation):

  • emitPointerValidation() was reusing the target register as the scratch register. This is a hold over from the previous way of doing the validation (which had a bug). With the validation bug fixed, this register reuse is no longer allowed.
9:23 AM Changeset in webkit [271239] by commit-queue@webkit.org
  • 3 edits
    2 adds in trunk

Null check global object in Blob::stream
https://bugs.webkit.org/show_bug.cgi?id=220393
<rdar://problem/71626701>

Patch by Alex Christensen <achristensen@webkit.org> on 2021-01-07
Reviewed by Chris Dumez.

Source/WebCore:

Sometimes during a frame teardown we could dereference null.
Attached a test that hit it about 10% of the time for me in WebKitTestRunner before this change.

Test: fast/files/blob-stream-crash.html

  • fileapi/Blob.cpp:

(WebCore::Blob::stream):

LayoutTests:

  • fast/files/blob-stream-crash-expected.txt: Added.
  • fast/files/blob-stream-crash.html: Added.
9:13 AM Changeset in webkit [271238] by commit-queue@webkit.org
  • 4 edits in trunk

ASSERTION FAILED: !m_messageReceiverMapCount under WebKit::SpeechRecognitionServer::~SpeechRecognitionServer()
https://bugs.webkit.org/show_bug.cgi?id=220404

Patch by Sihui Liu <sihui_liu@appe.com> on 2021-01-07
Reviewed by Youenn Fablet.

Source/WebKit:

API test: WebKit2.SpeechRecognitionPageIsDestroyed

  • UIProcess/WebProcessProxy.cpp:

(WebKit::WebProcessProxy::destroySpeechRecognitionServer):

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/SpeechRecognition.mm:

(-[SpeechRecognitionPermissionUIDelegate webView:createWebViewWithConfiguration:forNavigationAction:windowFeatures:]):
(-[SpeechRecognitionNavigationDelegate webView:decidePolicyForNavigationAction:preferences:decisionHandler:]):
(-[SpeechRecognitionNavigationDelegate webView:didFinishNavigation:]):
(TestWebKitAPI::TEST):

9:04 AM Changeset in webkit [271237] by commit-queue@webkit.org
  • 10 edits
    1 copy
    4 adds in trunk/Source/WebKit

WebKit IPC builtin messages should be part of the model
https://bugs.webkit.org/show_bug.cgi?id=220318

Patch by Kimmo Kinnunen <kkinnunen@apple.com> on 2021-01-07
Reviewed by Chris Dumez.

Add IPC and AsyncReply message receivers to the IPC model
so that their messages can be part of the generator dynamic logic instead of
being part of the static textual templates.

IPC receiver is a built-in message receiver that has few async messages.

AsyncReply receiver is a built-in message receiver that has one async message
for each message declared as 'Async' in any receiver.

This helps to refine features such as "is message asynchronous" more easily.

Adds new test case TestWithIfMessage to check a case that went wrong when
making the change.

Moves parsing tests to parser_unittest.py so that TestWithIfMessage does not
need to be added to the parsing tests. The said test is not intended to exercises
anything particular in the parsing.

Adds test logic for asserting MessageNames.{h,cpp} and MessageArgumentDescriptions.cpp
are as expected.

  • Scripts/generate-message-receiver.py:

(main):

  • Scripts/webkit/messages.py:
  • Scripts/webkit/model.py:

(check_global_model_inputs):
(generate_global_model):

  • Scripts/webkit/model_unittest.py:
  • Scripts/webkit/tests/MessageNames.cpp:

(IPC::description):
(IPC::receiverName):
(IPC::isValidMessageName):

  • Scripts/webkit/tests/MessageNames.h:
8:36 AM Changeset in webkit [271236] by Patrick Angle
  • 7 edits
    1 copy
    1 add in trunk/Source/WebInspectorUI

Web Inspector: console.takeHeapSnapshot() appears to have no effect
https://bugs.webkit.org/show_bug.cgi?id=219987

Reviewed by Devin Rousso.

Added a banner that appears above the snapshots data grid when there are new (unseen) snapshots that are being
filtered by either the selected time range or filter text.

  • Localizations/en.lproj/localizedStrings.js:
  • UserInterface/Main.html:
  • UserInterface/Views/BannerView.css: Added.

(.banner-view):
(.banner-view > button):
(.banner-view > .dismiss):

  • UserInterface/Views/BannerView.js: Added.

(WI.BannerView.prototype._handleActionButtonClicked):
(WI.BannerView.prototype._handleDismissButtonClicked):
(WI.BannerView):

  • Added WI.BannerView to handle layout and styling of banners.
  • UserInterface/Views/HeapAllocationsTimelineView.css:

(.timeline-view.heap-allocations > .banner-view + .data-grid):

  • UserInterface/Views/HeapAllocationsTimelineView.js:

(WI.HeapAllocationsTimelineView):
(WI.HeapAllocationsTimelineView.prototype.layout):

  • Take note of any new records that are immediately hidden.

(WI.HeapAllocationsTimelineView.prototype.reset):
(WI.HeapAllocationsTimelineView.prototype.filterDidChange):
(WI.HeapAllocationsTimelineView.prototype._updateUnseenRecordsBannerView):

  • Check that unseen messages are still hidden and add/remove the banner as appropriate.

(WI.HeapAllocationsTimelineView.prototype._handleUnseenRecordsBannerClearFiltersClicked):
(WI.HeapAllocationsTimelineView.prototype._handleUnseenRecordsBannerDismissClicked):

  • UserInterface/Views/TimelineRecordingContentView.js:

(WI.TimelineRecordingContentView):
(WI.TimelineRecordingContentView.prototype._handleTimelineViewNeedsFiltersCleared):

  • Handle the WI.TimelineView.Event.NeedsFiltersCleared event.
  • UserInterface/Views/TimelineView.js:
  • Added WI.TimelineView.Event.NeedsFiltersCleared event.
7:58 AM Changeset in webkit [271235] by Lauro Moura
  • 6 edits in trunk

REGRESSION(r270425) [GTK] wheel scrolling stopped working
https://bugs.webkit.org/show_bug.cgi?id=219547

Reviewed by Carlos Garcia Campos.

Source/WebCore:

Return early if the frame was already deleted.

Needed for fast/events/wheel-event-destroys-frame.html

  • page/EventHandler.cpp:

(WebCore::EventHandler::wheelEventWasProcessedByMainThread):

Source/WebKit:

In GTK we may have the case where the async scrolling is disabled at
runtime despite being compiled with ASYNC_SCROLLING/SCROLLING_THREAD.
In these cases, the wheel events still need to be dispatched through
the main thread.

  • WebProcess/WebPage/EventDispatcher.cpp:

(WebKit::EventDispatcher::wheelEvent):

LayoutTests:

  • platform/gtk/fast/scrolling/overflow-scrollable-after-back-expected.txt:

Rebaseline with the extra scroll events arriving

2:38 AM Changeset in webkit [271234] by cathiechen
  • 9 edits
    8 adds in trunk/LayoutTests/imported/w3c

Update WPT test suite for intersection-observer
https://bugs.webkit.org/show_bug.cgi?id=220403

Reviewed by Rob Buis.

Sync WPT intersection-observer tests with 5a3a1b414d32952355eae7c949c109424979b988.

  • web-platform-tests/intersection-observer/cross-document-root-expected.txt: Added.
  • web-platform-tests/intersection-observer/cross-document-root.html: Added.
  • web-platform-tests/intersection-observer/explicit-root-different-document.tentative-expected.txt: Added.
  • web-platform-tests/intersection-observer/explicit-root-different-document.tentative.html: Added.
  • web-platform-tests/intersection-observer/intersection-ratio-ib-split.html:
  • web-platform-tests/intersection-observer/not-in-containing-block-chain.tentative-expected.txt: Added.
  • web-platform-tests/intersection-observer/not-in-containing-block-chain.tentative.html: Added.
  • web-platform-tests/intersection-observer/observer-attributes-expected.txt:
  • web-platform-tests/intersection-observer/observer-attributes.html:
  • web-platform-tests/intersection-observer/resources/cross-origin-child-iframe.sub.html:
  • web-platform-tests/intersection-observer/resources/same-origin-grand-child-iframe.html:
  • web-platform-tests/intersection-observer/same-document-with-document-root-expected.txt: Added.
  • web-platform-tests/intersection-observer/same-document-with-document-root.html: Added.
  • web-platform-tests/intersection-observer/same-origin-grand-child-iframe.sub.html:
  • web-platform-tests/intersection-observer/target-in-different-window.html:
  • web-platform-tests/intersection-observer/w3c-import.log:
2:11 AM Changeset in webkit [271233] by Lauro Moura
  • 2 edits in trunk/Tools/buildstream

[Flatpak SDK] Update GTK4 to 4.0.0
https://bugs.webkit.org/show_bug.cgi?id=219983

Reviewed by Philippe Normand.

  • elements/sdk/gtk.bst: Bump to 4.0.0
2:05 AM Changeset in webkit [271232] by commit-queue@webkit.org
  • 4 edits in trunk/Source/WebCore

Only update the resources when rendering SVG selected text
https://bugs.webkit.org/show_bug.cgi?id=218486

Patch by Carlos Garcia Campos <cgarcia@igalia.com> on 2021-01-07
Reviewed by Ryosuke Niwa.

Instead of calling SVGResourcesCache::clientStyleChanged() that marks the renderer for layout and parent
resource invalidation, add a helper class SVGResourcesCache::SetStyleForScope() that just updates the resources
for the new style on construction and restores the previous one on destruction.

  • rendering/svg/SVGInlineTextBox.cpp:

(WebCore::SVGInlineTextBox::paintText): Use SVGResourcesCache::SetStyleForScope().

  • rendering/svg/SVGResourcesCache.cpp:

(WebCore::SVGResourcesCache::SetStyleForScope::SetStyleForScope): Call setStyle() with the new style.
(WebCore::SVGResourcesCache::SetStyleForScope::~SetStyleForScope): Call setStyle() with the previous style.
(WebCore::SVGResourcesCache::SetStyleForScope::setStyle): Set the given style if needed.

  • rendering/svg/SVGResourcesCache.h:
2:02 AM Changeset in webkit [271231] by Carlos Garcia Campos
  • 10 edits in trunk

[GTK] Build failures with GTK4 3.99.5.1
https://bugs.webkit.org/show_bug.cgi?id=219844

Reviewed by Philippe Normand.

Source/WebCore:

  • platform/gtk/GtkVersioning.h:

(gtk_window_resize):
(gtk_window_get_size):

Source/WebKit:

  • UIProcess/API/gtk/WebKitWebViewBase.cpp:

(webkitWebViewBaseSizeAllocate):

Source/WTF:

  • wtf/Platform.h:

Tools:

  • MiniBrowser/gtk/BrowserSearchBox.c:

(browserSearchBoxSizeAllocate):

  • MiniBrowser/gtk/BrowserWindow.c:

(webViewReadyToShow):

  • MiniBrowser/gtk/CMakeLists.txt:
1:02 AM Changeset in webkit [271230] by mark.lam@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

Remove some aliases of obsolete JSC options.
https://bugs.webkit.org/show_bug.cgi?id=220402

Reviewed by Yusuke Suzuki.

  • runtime/OptionsList.h:
12:31 AM Changeset in webkit [271229] by youenn@apple.com
  • 2 edits in trunk/Source/WebKit

WKWebView should expose navigator.mediaDevices when content is loaded from app bundle
https://bugs.webkit.org/show_bug.cgi?id=220184
<rdar://problem/72792032>

Reviewed by Eric Carlson.

In case of non HTTP or HTTPS origins, getUserMedia was always denied.
This patch updates the code by allowing getUserMedia prompts for other protocols.
In that case, the user is presented the prompt with the application name since the origin domain does not mean anything.
Manually tested.

  • UIProcess/Cocoa/MediaPermissionUtilities.mm:

(WebKit::alertMessageText):

12:16 AM Changeset in webkit [271228] by jiewen_tan@apple.com
  • 3 edits in trunk/Source/WebKit

Unreviewed, a build fix after r271221

  • Platform/spi/Cocoa/NearFieldSPI.h:
  • UIProcess/WebAuthentication/Cocoa/NfcService.mm:

(WebKit::NfcService::isAvailable):
(WebKit::NfcService::platformStartDiscovery):
Changed back to sharedHardwareManager.

12:10 AM Changeset in webkit [271227] by youenn@apple.com
  • 4 edits in trunk/Source/ThirdParty/libwebrtc

Remove non-inclusive language from libwebrtc
https://bugs.webkit.org/show_bug.cgi?id=220101
<rdar://problem/72727968>

Reviewed by Beth Dakin.

Remove logging erroneously added in https://trac.webkit.org/changeset/271150.
Remove non-inclusive language from Source/webrtc/rtc_base/message_digest.h as done in
https://webrtc-review.googlesource.com/c/src/+/200701.

  • Source/webrtc/rtc_base/message_digest.h:
  • Source/webrtc/sdk/objc/components/video_codec/RTCVideoDecoderH264.mm:

(-[RTCVideoDecoderH264 init]):
(-[RTCVideoDecoderH264 decodeData:size:timeStamp:]):

  • Source/webrtc/sdk/objc/components/video_codec/RTCVideoEncoderH264.mm:

(-[RTCVideoEncoderH264 initWithCodecInfo:]):
(-[RTCVideoEncoderH264 encode:codecSpecificInfo:frameTypes:]):
(-[RTCVideoEncoderH264 frameWasEncoded:flags:sampleBuffer:codecSpecificInfo:width:height:renderTimeMs:timestamp:rotation:isKeyFrameRequired:]):

Note: See TracTimeline for information about the timeline view.