Timeline



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:]):

Jan 6, 2021:

11:52 PM Changeset in webkit [271226] by mark.lam@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

Fix a dataMemoryTempRegister use violation in FTLLowerDFGToB3's compileLoopHint().
https://bugs.webkit.org/show_bug.cgi?id=220399

Reviewed by Yusuke Suzuki.

This was tripping an assertion failure on the invalid use of the dataMemoryTempRegister
during a Debug build JSC stress test run with DoesGC validation enabled.

  • ftl/FTLLowerDFGToB3.cpp:

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

10:28 PM Changeset in webkit [271225] by ysuzuki@apple.com
  • 14 edits
    16 adds
    1 delete in trunk/JSTests

[JSC] Update test262
https://bugs.webkit.org/show_bug.cgi?id=220398

Reviewed by Mark Lam.

  • test262/expectations.yaml:
  • test262/harness/testIntl.js:
  • test262/latest-changes-summary.txt:
  • test262/test/built-ins/TypedArray/prototype/includes/BigInt/detached-buffer-during-fromIndex-returns-false-for-zero.js: Added.

(testWithBigIntTypedArrayConstructors):

  • test262/test/built-ins/TypedArray/prototype/includes/BigInt/detached-buffer-during-fromIndex-returns-true-for-undefined.js: Added.

(testWithBigIntTypedArrayConstructors):

  • test262/test/built-ins/TypedArray/prototype/includes/detached-buffer-during-fromIndex-returns-false-for-zero.js: Added.

(testWithTypedArrayConstructors):

  • test262/test/built-ins/TypedArray/prototype/includes/detached-buffer-during-fromIndex-returns-true-for-undefined.js: Added.

(testWithTypedArrayConstructors):

  • test262/test/built-ins/TypedArray/prototype/includes/detached-buffer-tointeger.js: Removed.
  • test262/test/built-ins/TypedArray/prototype/indexOf/BigInt/detached-buffer-during-fromIndex-returns-minus-one-for-undefined.js: Added.

(testWithBigIntTypedArrayConstructors):

  • test262/test/built-ins/TypedArray/prototype/indexOf/BigInt/detached-buffer-during-fromIndex-returns-minus-one-for-zero.js: Added.

(testWithBigIntTypedArrayConstructors):

  • test262/test/built-ins/TypedArray/prototype/indexOf/detached-buffer-during-fromIndex-returns-minus-one-for-undefined.js: Added.

(testWithTypedArrayConstructors):

  • test262/test/built-ins/TypedArray/prototype/indexOf/detached-buffer-during-fromIndex-returns-minus-one-for-zero.js: Added.

(testWithTypedArrayConstructors):

  • test262/test/built-ins/TypedArray/prototype/join/BigInt/detached-buffer-during-fromIndex-returns-single-comma.js: Added.

(testWithBigIntTypedArrayConstructors):

  • test262/test/built-ins/TypedArray/prototype/join/BigInt/detached-buffer.js:

(let.obj.toString):
(testWithBigIntTypedArrayConstructors):
(obj.toString): Deleted.

  • test262/test/built-ins/TypedArray/prototype/join/detached-buffer-during-fromIndex-returns-single-comma.js: Added.

(testWithTypedArrayConstructors):

  • test262/test/built-ins/TypedArray/prototype/join/detached-buffer.js:

(let.obj.toString):
(testWithTypedArrayConstructors):
(obj.toString): Deleted.

  • test262/test/built-ins/TypedArray/prototype/lastIndexOf/BigInt/detached-buffer-during-fromIndex-returns-minus-one-for-undefined.js: Added.

(testWithBigIntTypedArrayConstructors):

  • test262/test/built-ins/TypedArray/prototype/lastIndexOf/BigInt/detached-buffer-during-fromIndex-returns-minus-one-for-zero.js: Added.

(testWithBigIntTypedArrayConstructors):

  • test262/test/built-ins/TypedArray/prototype/lastIndexOf/detached-buffer-during-fromIndex-returns-minus-one-for-undefined.js: Added.

(testWithTypedArrayConstructors):

  • test262/test/built-ins/TypedArray/prototype/lastIndexOf/detached-buffer-during-fromIndex-returns-minus-one-for-zero.js: Added.

(testWithTypedArrayConstructors):

  • test262/test/built-ins/TypedArrayConstructors/internals/GetOwnProperty/BigInt/index-prop-desc.js:

(testWithBigIntTypedArrayConstructors):

  • test262/test/built-ins/TypedArrayConstructors/internals/Set/detached-buffer.js:

(testWithTypedArrayConstructors):

  • test262/test/intl402/DateTimeFormat/prototype/formatRange/date-same-returns-single-date.js: Added.
  • test262/test/intl402/DateTimeFormat/prototype/formatRangeToParts/date-same-returns-single-date.js: Added.

(zip):
(compare):

  • test262/test/intl402/Intl/getCanonicalLocales/canonicalized-tags.js:
  • test262/test/intl402/Intl/getCanonicalLocales/preferred-grandfathered.js:
  • test262/test/intl402/Intl/getCanonicalLocales/preferred-variant.js:
  • test262/test/intl402/Locale/extensions-grandfathered.js:
  • test262/test/intl402/Locale/likely-subtags-grandfathered.js:

(of.regularGrandfathered.const.extra.of.extras.i.test):

  • test262/test262-Revision.txt:
10:11 PM Changeset in webkit [271224] by ysuzuki@apple.com
  • 3 edits
    2 adds in trunk

[JSC] DateTimeFormat#formatRange should generate the same output to DateTimeFormat#format if startDate and endDate are "practically-equal"
https://bugs.webkit.org/show_bug.cgi?id=220395

Reviewed by Ross Kirsling.

JSTests:

Imported some test262 tests. Updated, fixed some issues (formatToParts test was using format, we should upstream it to test262), and added more tests.

  • stress/intl-datetimeformat-format-range-should-check-practically-equal.js: Added.

(shouldBe):
(vm.icuVersion):

  • stress/intl-datetimeformat-format-range-to-parts-should-check-practically-equal.js: Added.

(shouldBe):
(zip):
(compare):
(vm.icuVersion):

Source/JavaScriptCore:

Intl.DateTimeFormat.formatRange(startDate, endDate) also needs to generate the same formatted string to the Intl.DateTimeFormat.format
if startDate and endDate are *practically-equal* (spec term). However, due to CLDR, just using udtitvfmt_format generates different
formatted string to udat_format's result even though startDate and endDate are the same.

new Intl.DateTimeFormat("en", { dateStyle: "long", timeStyle: "short" }).format(new Date())
"December 12, 2019 at 11:48 AM"
new Intl.DateTimeFormat("en", { dateStyle: "long", timeStyle: "short" }).formatRange(new Date(), new Date())
"December 12, 2019, 11:48 AM"

In Intl.DateTimeFormat#formatRangeToParts, we deploys *practically-equal* checking to avoid this issue. The same thing should be done in
Intl.DateTimeFormat#formatRange too.

In this patch, we stop using udtitvfmt_format if ICU version is 64 or later to perform *practically-equal* checking.

[1]: https://github.com/tc39/proposal-intl-DateTimeFormat-formatRange/issues/19

  • runtime/IntlDateTimeFormat.cpp:

(JSC::formattedValueFromDateRange):
(JSC::dateFieldsPracticallyEqual):
(JSC::IntlDateTimeFormat::formatRange):
(JSC::IntlDateTimeFormat::formatRangeToParts):
(JSC::definitelyAfterGregorianCalendarChangeDate): Deleted.

10:11 PM Changeset in webkit [271223] by commit-queue@webkit.org
  • 4 edits in trunk

Fix aspect ratio handling in RenderBox::computeLogicalWidthInFragment
https://bugs.webkit.org/show_bug.cgi?id=220138

Patch by Rob Buis <rbuis@igalia.com> on 2021-01-06
Reviewed by Simon Fraser.

Source/WebCore:

The existing code does not respect min/max-height in the logical height
calculation, the computeLogicalWidthFromAspectRatio helper does, so use
it.

  • rendering/RenderBox.cpp:

(WebCore::RenderBox::computeLogicalWidthInFragment const):

LayoutTests:

Enable some tests that pass now.

6:56 PM Changeset in webkit [271222] by ap@apple.com
  • 2 edits in trunk

Make svn status ignore Python 3 pycache directories.

Unreviewed.

Python 2 *.pyc files are still inconsistently handled via svn:ignore on each
directory, but it is not worth cleaning up before GitHub move.

  • Tools: Added property svn:global-ignores.
5:50 PM Changeset in webkit [271221] by jiewen_tan@apple.com
  • 10 edits in trunk/Source/WebKit

[WebAuthn] Adopt new UI for the Client PIN and dismiss flow
https://bugs.webkit.org/show_bug.cgi?id=219712
<rdar://problem/72154935>

Reviewed by Brent Fulgham.

Covered by manual tests.

This patch does the following few things:

  1. It tweaks the WebAuthn process as a UI view service to be able to run NearField in the background.
  2. It adopts new SPI for security keys' client pin support.
  3. It adopts new SPI to dismiss the UI when necessary.
  • Platform/spi/Cocoa/AuthenticationServicesCoreSPI.h:

(NS_ERROR_ENUM):
Adds new SPI.

  • Scripts/process-entitlements.sh:

Tweaks WebAuthn process for NFC.

  • UIProcess/WebAuthentication/Cocoa/AuthenticationServicesCoreSoftLink.h:
  • UIProcess/WebAuthentication/Cocoa/AuthenticationServicesCoreSoftLink.mm:

Paperwork.

  • UIProcess/WebAuthentication/Cocoa/AuthenticatorPresenterCoordinator.h:
  • UIProcess/WebAuthentication/Cocoa/AuthenticatorPresenterCoordinator.mm:

(WebKit::AuthenticatorPresenterCoordinator::~AuthenticatorPresenterCoordinator):
(WebKit::AuthenticatorPresenterCoordinator::updatePresenter):
(WebKit::AuthenticatorPresenterCoordinator::requestPin):
(WebKit::AuthenticatorPresenterCoordinator::dimissPresenter):
(WebKit::AuthenticatorPresenterCoordinator::setPin):
Adopts new SPIs.

  • UIProcess/WebAuthentication/Cocoa/NfcService.mm:

(WebKit::NfcService::platformStartDiscovery):
Tweaks NFC.

  • UIProcess/WebAuthentication/Cocoa/WKASCAuthorizationPresenterDelegate.mm:

(-[WKASCAuthorizationPresenterDelegate authorizationPresenter:credentialRequestedForLoginChoice:authenticatedContext:completionHandler:]):
(-[WKASCAuthorizationPresenterDelegate authorizationPresenter:validateUserEnteredPIN:completionHandler:]):
Adopts new SPIs.

4:49 PM Changeset in webkit [271220] by Fujii Hironori
  • 4 edits in trunk

[GTK][CMake] Add a build switch USE_OPENGL_OR_ES to be able to disable OpenGL and ES
https://bugs.webkit.org/show_bug.cgi?id=220183

Reviewed by Kenneth Russell.

.:

r270477 removed ENABLE_GRAPHICS_CONTEXT_GL macro and build switch,
but GTK port still needs the build switch. Revert r270477
partially to restore the build switch and rename it to
USE_OPENGL_OR_ES.

  • Source/cmake/OptionsGTK.cmake:

Source/WebCore:

  • platform/graphics/x11/PlatformDisplayX11.cpp: Include <X11/Xutil.h> for XGetVisualInfo.
4:16 PM Changeset in webkit [271219] by jer.noble@apple.com
  • 29 edits in trunk/Source

[Cocoa] Revert audioTimePitchAlgorithm to "TimeDomain" from "Spectral"
https://bugs.webkit.org/show_bug.cgi?id=220341

Reviewed by Youenn Fablet.

Source/WebCore:

The "Spectral" pitch correction algorithm has notable deficiencies when applied to spoken
content; notably, transient propagation is missing, and the resulting audio sounds "robotic".

Revert to "TimeDomain", which is both more computationally inexpensive, and both propogates
transients and is optimized for non-harmonic content like speech.

Add a setting to allow clients to customize this behavior, e.g., if those clients would prefer
optimizing for music over speech.

Drive-by fix: re-apply the pitch algorithm after the AVPlayerItem reaches the "readyToPlay"
status to work around an AVFoundation bug.

  • html/HTMLMediaElement.cpp:

(WebCore::HTMLMediaElement::loadResource):

  • page/Settings.yaml:
  • page/SettingsBase.h:
  • platform/graphics/MediaPlayer.cpp:

(WebCore::MediaPlayer::setPitchCorrectionAlgorithm):

  • platform/graphics/MediaPlayer.h:
  • platform/graphics/MediaPlayerEnums.h:
  • platform/graphics/MediaPlayerPrivate.h:

(WebCore::MediaPlayerPrivateInterface::setPitchCorrectionAlgorithm):

  • platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.h:
  • platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:

(WebCore::audioTimePitchAlgorithmForMediaPlayerPitchCorrectionAlgorithm):
(WebCore::MediaPlayerPrivateAVFoundationObjC::createAVPlayerItem):
(WebCore::MediaPlayerPrivateAVFoundationObjC::setPreservesPitch):
(WebCore::MediaPlayerPrivateAVFoundationObjC::setPitchCorrectionAlgorithm):
(WebCore::MediaPlayerPrivateAVFoundationObjC::playerItemStatusDidChange):

Source/WebCore/PAL:

  • pal/cocoa/AVFoundationSoftLink.h:
  • pal/cocoa/AVFoundationSoftLink.mm:

Source/WebKit:

Add a private preference to control what pitch correction algorithm will be used by MediaPlayer.

  • GPUProcess/media/RemoteMediaPlayerProxy.cpp:

(WebKit::RemoteMediaPlayerProxy::setPitchCorrectionAlgorithm):

  • GPUProcess/media/RemoteMediaPlayerProxy.h:
  • GPUProcess/media/RemoteMediaPlayerProxy.messages.in:
  • UIProcess/API/Cocoa/WKPreferences.mm:

(-[WKPreferences _pitchCorrectionAlgorithm]):
(-[WKPreferences _setPitchCorrectionAlgorithm:]):

  • UIProcess/API/Cocoa/WKPreferencesPrivate.h:
  • WebProcess/GPU/media/MediaPlayerPrivateRemote.cpp:

(WebKit::MediaPlayerPrivateRemote::setPitchCorrectionAlgorithm):

  • WebProcess/GPU/media/MediaPlayerPrivateRemote.h:
  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::updatePreferences):

Source/WebKitLegacy/mac:

Add a private preference to control what pitch correction algorithm will be used by MediaPlayer.

  • WebView/WebPreferenceKeysPrivate.h:
  • WebView/WebPreferences.mm:

(-[WebPreferences _pitchCorrectionAlgorithm]):
(-[WebPreferences _setPitchCorrectionAlgorithm:]):

  • WebView/WebPreferencesPrivate.h:
  • WebView/WebView.mm:

(-[WebView _preferencesChanged:]):

Source/WTF:

Add a private preference to control what pitch correction algorithm will be used by MediaPlayer.

  • Scripts/Preferences/WebPreferences.yaml:
3:45 PM Changeset in webkit [271218] by Aditya Keerthi
  • 3 edits
    2 adds in trunk

[macOS] Text inside form controls is off center on burton.com
https://bugs.webkit.org/show_bug.cgi?id=220376
<rdar://problem/72833977>

Reviewed by Devin Rousso.

Source/WebCore:

<select> elements on burton.com specify an empty size attribute. This
results in the "select:matches([size], [multiple]), select[size][multiple]"
ruleset being applied, which adds the rule "align-items: flex-start". That
rules causes the text within the element to be aligned to the top.

This rule is necessary for <select multiple> and <select> elements with
a size attribute greater than or equal to 2, which both have a listbox
appearance (a popup menu is not shown when clicking the element).
However, <select> elements with a size attribute less than or equal to 1
have a menulist appearance and display a popup when clicked.

<select size> also displays a popup when clicked, and like other browsers
it should have vertically centered text. WebKit already has an additional
ruleset for size="0" and size="1" to preserve the menulist appearance.
Consequently, we can augment the ruleset to include size="", removing the
"align-items: flex-start" rule for <select size> and ensuring the text is
vertically centered.

Test: fast/forms/select-empty-size.html

  • css/html.css:

(select:is([size], [multiple]), select[size][multiple]):

Update ruleset to use :is(), instead of the obsolete :matches().

(select:is([size=""], [size="0"], [size="1"])):

Add [size=""] to the list of matching attributes, since <select size>
should not have a listbox appearance. The new appearance matches
Chrome and Firefox.

LayoutTests:

Added a test to verify that the appearance of a <select> element with
an empty size attribute is the same as one without a size attribute.

  • fast/forms/select-empty-size-expected.html: Added.
  • fast/forms/select-empty-size.html: Added.
3:39 PM Changeset in webkit [271217] by ysuzuki@apple.com
  • 5 edits in trunk/Source

[JSC] Replace JSBigInt::toUint64 with JSBigInt::toBigUInt64
https://bugs.webkit.org/show_bug.cgi?id=220378

Reviewed by Darin Adler.

Source/JavaScriptCore:

This patch replaces JSBigInt::toUint64 with JSBigInt::toBigUInt64.
Rough purposes of these functions are the same, and JSBigInt::toBigUInt64
has the semantics defined in the ECMA262 spec. While the behavior is
slightly different[1], this difference does not matter for the clients of
JSBigInt::toUint64.

[1]: JSBigInt::toUint64 fails conversion if JSBigInt is out of range of uint64_t,

while JSBigInt::toBigUInt64 always generates uint64_t by computing mod UINT64_MAX.

  • runtime/JSBigInt.cpp:

(JSC::JSBigInt::toUint64Heap): Deleted.

  • runtime/JSBigInt.h:

Source/WebKit:

  • WebProcess/WebPage/IPCTestingAPI.cpp:

(WebKit::IPCTestingAPI::convertToUint64):
(WebKit::IPCTestingAPI::encodeNumericType):

3:28 PM Changeset in webkit [271216] by Devin Rousso
  • 2 edits in trunk/Source/WebCore

[iOS] REGRESSION(r265088): "pointerdown" doesn't fire using a trackpad after double-tapping
https://bugs.webkit.org/show_bug.cgi?id=220072

Reviewed by Antoine Quint.

r265088 made it such that pointer events are not created for mouse events if there is an
existing entry for any touch event in m_activePointerIdsToCapturingData. Unfortunately,
entries only appear to be removed from m_activePointerIdsToCapturingData from three places:

  • when the single tap gesture recognizer resets (-[WKContentView _singleTapDidReset:])
  • if a potential tap cannot be committed (-[WKContentView _commitPotentialTapFailed])
  • after a synthetic click (-[WKContentView _didCompleteSyntheticClick])

AFAICT (and seeing how there's a gesture recognizer for double-tap, long press, etc.), this
does not include other situations like the second tap of a double-tap. In order to fix this:

  • eagerly touchWithIdentifierWasRemoved when dispatching "pointerup" for a touch event
  • (just in case) don't prevent the pointer event for mouse events if the existing touch event has been cancelled or is not currently pressed
  • page/PointerCaptureController.cpp:

(WebCore::PointerCaptureController::dispatchEventForTouchAtIndex):
(WebCore::PointerCaptureController::pointerEventForMouseEvent):

3:11 PM Changeset in webkit [271215] by Kate Cheney
  • 2 edits in trunk/Tools

Storage access prompt does not appear on MiniBrowser
https://bugs.webkit.org/show_bug.cgi?id=220379
<rdar://problem/72861088>

Reviewed by Darin Adler.

ITP should be on-by-default in MiniBrowser.

  • MiniBrowser/mac/SettingsController.m:

(-[SettingsController initWithMenu:]):

2:36 PM Changeset in webkit [271214] by aestes@apple.com
  • 24 edits in trunk/Source

[Mac] Replace most uses of HAVE(MT_PLUGIN_FORMAT_READER) with ENABLE(WEBM_FORMAT_READER)
https://bugs.webkit.org/show_bug.cgi?id=220374
<rdar://problem/72600426>

Reviewed by Eric Carlson.

Source/WebCore:

  • page/RuntimeEnabledFeatures.h:
  • platform/audio/PlatformMediaSessionManager.cpp:

(WebCore::PlatformMediaSessionManager::webMFormatReaderEnabled):
(WebCore::PlatformMediaSessionManager::setWebMFormatReaderEnabled):

  • platform/audio/PlatformMediaSessionManager.h:
  • platform/graphics/avfoundation/objc/AVAssetMIMETypeCache.mm:

(WebCore::AVAssetMIMETypeCache::canDecodeExtendedType):
(WebCore::AVAssetMIMETypeCache::initializeCache):

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

(WebCore::registerFormatReaderIfNecessary):
(WebCore::willUseWebMFormatReaderForType):

  • platform/graphics/cocoa/SourceBufferParserWebM.cpp:

(WebCore::canLoadFormatReader):

Source/WebKit:

  • Shared/API/c/mac/WKFormatReader.cpp:

(WKFormatReaderCreate):
(WKFormatReaderStartOnMainThread):

  • Shared/WebPreferencesDefaultValues.cpp:
  • Shared/WebPreferencesDefaultValues.h:
  • Shared/mac/MediaFormatReader/CoreMediaWrapped.cpp:
  • Shared/mac/MediaFormatReader/CoreMediaWrapped.h:
  • Shared/mac/MediaFormatReader/FormatReader.cpp:
  • Shared/mac/MediaFormatReader/FormatReader.h:
  • Shared/mac/MediaFormatReader/SampleCursor.cpp:
  • Shared/mac/MediaFormatReader/SampleCursor.h:
  • Shared/mac/MediaFormatReader/TrackReader.cpp:
  • Shared/mac/MediaFormatReader/TrackReader.h:
  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::updatePreferences):

  • WebProcess/cocoa/WebProcessCocoa.mm:

(WebKit::WebProcess::platformInitializeWebProcess):

Source/WTF:

  • Scripts/Preferences/WebPreferencesExperimental.yaml:
  • wtf/PlatformEnableCocoa.h:
1:08 PM Changeset in webkit [271213] by Chris Dumez
  • 3 edits in trunk/Source/WebKit

[GPUProcess] RemoteAudioSourceProviderManager should be a WorkQueueMessageReceiver
https://bugs.webkit.org/show_bug.cgi?id=220371

Reviewed by Youenn Fablet.

RemoteAudioSourceProviderManager should be a WorkQueueMessageReceiver (not a ThreadMessageReceiver),
since it uses a WorkQueue (not a WTF::Thread). This simplifies the code a bit.

  • WebProcess/GPU/media/RemoteAudioSourceProviderManager.cpp:

(WebKit::RemoteAudioSourceProviderManager::setConnection):
(WebKit::RemoteAudioSourceProviderManager::addProvider):
(WebKit::RemoteAudioSourceProviderManager::removeProvider):

  • WebProcess/GPU/media/RemoteAudioSourceProviderManager.h:
12:35 PM Changeset in webkit [271212] by Wenson Hsieh
  • 13 edits
    1 copy in trunk/Source/WebKit

[Concurrent Display Lists] GPU process should not immediately sleep after reading all available display list items
https://bugs.webkit.org/show_bug.cgi?id=219586
<rdar://problem/72275412>

Reviewed by Chris Dumez.

This patch adds a mechanism for the GPU process to wait for a short duration (~30 microseconds) after it has
finished reading all available data in its shared item buffer; if the web process writes additional data to the
item buffer (thereby bumping the unread bytes counter) during this time, we immediately resume processing the
new display list items in the GPU process, rather than wait for a new wakeup message.

This allows us to avoid the cost of going to sleep just to immediately wake up in the GPU process, in the case
where the web process is writing display list items at a very fast rate and the GPU process just happens to
catch up (i.e. advance unreadBytes() to 0).

See below for more details.

  • GPUProcess/GPUConnectionToWebProcess.cpp:

(WebKit::GPUConnectionToWebProcess::createRenderingBackend):

Refactor the rendering backend creation message from the web process to the GPU process, so that the rendering
backend creation arguments are encapsulated in a single struct, RemoteRenderingBackendCreationParameters. This
struct contains the rendering backend identifier and, on Cocoa platforms, a mach send right that can be used to
construct the corresponding display list wakeup semaphore in the GPU process.

  • GPUProcess/GPUConnectionToWebProcess.h:
  • GPUProcess/GPUConnectionToWebProcess.messages.in:
  • GPUProcess/graphics/DisplayListReaderHandle.h:

(WebKit::DisplayListReaderHandle::startWaiting):
(WebKit::DisplayListReaderHandle::stopWaiting):

Add helper methods for the GPU process to start and stop waiting for new items. See the call site in
RemoteRenderingBackend for more detail, as well as the comments in SharedDisplayListHandle below.

  • GPUProcess/graphics/RemoteRenderingBackend.cpp:

(WebKit::RemoteRenderingBackend::create):
(WebKit::RemoteRenderingBackend::RemoteRenderingBackend):

Refactor this codepath to take RemoteRenderingBackendCreationParameters instead of just an identifier.

(WebKit::RemoteRenderingBackend::nextDestinationImageBufferAfterApplyingDisplayLists):

In the case where we received the wakeup message due to exceeding the display list item count hysteresis, wait
for a short duration using the semaphore after we hit an unread count of 0. This allows the web process to write
more items and signal the semaphore, so that we can resume reading in the GPU process.

(WebKit::RemoteRenderingBackend::wakeUpAndApplyDisplayList):
(WebKit::RemoteRenderingBackend::setNextItemBufferToRead):

  • GPUProcess/graphics/RemoteRenderingBackend.h:
  • Shared/GPUProcessWakeupMessageArguments.h:

(WebKit::GPUProcessWakeupMessageArguments::encode const):
(WebKit::GPUProcessWakeupMessageArguments::decode):

Plumb a GPUProcessWakeupReason enum flag over to the GPU process, via wake-up arguments. This flag is used by
the GPU process to determine whether we should expect additional items to eventually enter the stream, and
whether we should eagerly go to sleep after processing all known items. In other words, if the wakeup message is
being sent as a result of flushing the image buffer, we don't want to unnecessarily wait for more items;
however, if the wakeup message is being sent as a result of exceeding the (currently) 512-item hysteresis, then
we can probably expect more items to stream in, so it's more optimal to wait after finishing all known display
list items.

  • Shared/RemoteRenderingBackendCreationParameters.h: Copied from Source/WebKit/Shared/GPUProcessWakeupMessageArguments.h.

(WebKit::RemoteRenderingBackendCreationParameters::encode const):
(WebKit::RemoteRenderingBackendCreationParameters::decode):

See above for more details.

  • Shared/SharedDisplayListHandle.h:

(WebKit::SharedDisplayListHandle::header const):

Adds a new WaitingStatus enum type internal to SharedDisplayListHandle and its subclasses, which is used to
coordinate the act of waiting for new item data in the GPU process. A shared display list handle now contains
an atomic waitingStatus flag indicating whether the GPU process is in the process of waiting for more items,
and also whether the web process has acknowledged the fact that the GPU process is waiting (thereby putting the
GPU process in a state where it is waiting to resume processing). Along with this enum, we also add two new
8-byte values to the header section: an offset to begin reading item data after resuming, and 8 bytes for an
identifier indicating the new destination (for the purposes of display list rendering, this is a
RenderingResourceIdentifier, though this will be different for WebGL).

+--> NotWaiting <--+
| | |
| | | [3a]
| [3b] | [1] |
| | |

Resuming +----> Waiting

|
| [2] |
+------------------+

There are three main ways in which this state machine may transition, numbered [1]-[3] in the above diagram.

[1] When the GPU process finishes processing available items, it enters Waiting state, indicating that it is now

waiting for additional item data. This corresponds to the call to DisplayListReaderHandle::startWaiting.

[2] When the web process bumps the unread count of an item buffer, if it has a pending wakeup message or would

otherwise need to schedule a pending wakeup message, see if we can instead simply tell the GPU process to
resume processing, instead of sending a wakeup message. This corresponds to a call to the helper method
DisplayListWriterHandle::tryToResume.

[3] If the maximum wait duration (~30 microseconds) has passed (i.e. scenario 3a) or if the web process has

transitioned us from Waiting to Resuming state (i.e. scenario 3b), then transition back to NotWaiting. In
both scenarios, this corresponds to a call to DisplayListReaderHandle::stopWaiting. In the case where we
transitioned from Resuming state, we can immediately continue processing display list items.

In the case where we successfully resume, we're essentially "re-waking" the GPU process without the overhead of
an additional IPC message, using the same shared display list handle. Since this would've otherwise been a
separate wakeup message, we need to be careful that we continue processing display list items from the correct
offset into the shared display list handle, and using the correct destination image buffer. This is because the
writable offset of the item buffer may have been reset in the middle of waiting by the web process, or the
destination image buffer may have changed while waiting. To handle these scenarios, we introduce the
ResumeReadingInformation struct, which contains both of these pieces of information. An instance of this
struct exists in the shared memory header section; this is written by the web process immediately prior to
transitioning to Resuming state, and read by the GPU process when transitioning from Resuming to NotWaiting.

  • WebKit.xcodeproj/project.pbxproj:
  • WebProcess/GPU/graphics/DisplayListWriterHandle.h:

(WebKit::DisplayListWriterHandle::tryToResume):

Add a helper method for the web process to try and notify the GPU process that it should try and resume
display list processing. See the call site in RemoteRenderingBackendProxy for more detail, as well as the
comments in SharedDisplayListHandle above.

  • WebProcess/GPU/graphics/RemoteRenderingBackendProxy.cpp:

(WebKit::RemoteRenderingBackendProxy::connectToGPUProcess):
(WebKit::RemoteRenderingBackendProxy::didAppendData):

Rather than always schedule (or send) a wakeup message here in the case where the unread count is 0, see if we
can instead tell the GPU process to stop waiting and resume display list processing. To do this, we use the new
DisplayListWriterHandle::tryToResume method, giving it the new offset to begin reading items from as well as the
destination image buffer to which we should apply display list items. If we successfully tell the GPU process to
resume reading, then we can clear out (or avoid storing) wakeup message arguments and avoid sending an IPC
wakeup message.

  • WebProcess/GPU/graphics/RemoteRenderingBackendProxy.h:
12:31 PM Changeset in webkit [271211] by ap@apple.com
  • 2 edits in trunk/Tools

Assorted fixes for bisect-builds
https://bugs.webkit.org/show_bug.cgi?id=220158

Reviewed by Jonathan Bedard.

Switched to Python 3.
Many trivial Python style changes.
Simplified arguments, and cleaned up output.
Switched from run-safari to run-minibrowser on macOS, as run-safari currently
doesn't work on regular macOS installations.

  • Scripts/bisect-builds:

(QueueDescriptor): New class that holds a description of a queue, or a "platform",
as coming from a string like mac-catalina or mac-catalina-x86_64-release. Used for
matching arguments to an existing archive directory on the server.
(trac_link): Added. The tool now prints a trac link for seeing where the regression
was introduced.
(bisect_builds): Fixed arithmetic mistakes. Got rid of an unnecessary while-true loop,
as the function was already recursive.
(host_platform_name): The script now defaults to current platform, so -p argument
is mostly to select simulator.
(main): Moved code from "if name == 'main'" block into main function for
consistency.

12:10 PM Changeset in webkit [271210] by Alan Bujtas
  • 2 edits in trunk/Source/WebCore

[LFC][IFC] "display: -webkit-inline-box" generates an inline level box
https://bugs.webkit.org/show_bug.cgi?id=220373.
<rdar://problem/72138270>

Reviewed by David Kilzer.

  • layout/layouttree/LayoutBox.cpp:

(WebCore::Layout::Box::isInlineLevelBox const):

12:08 PM Changeset in webkit [271209] by Ryan Haddad
  • 3 edits in trunk/LayoutTests

[Mac] inspector/debugger/tail-deleted-frames/tail-deleted-frames-intermediate-frames.html is a flaky timeout
https://bugs.webkit.org/show_bug.cgi?id=218725

Unreviewed test gardening.

This isn't specific to Rosetta, so move the expectation to mac-wk2.

  • platform/mac-wk2/TestExpectations:
  • platform/mac/TestExpectationsRosetta:
12:02 PM Changeset in webkit [271208] by graouts@webkit.org
  • 3 edits in trunk/LayoutTests

REGRESSION (2020-10-23): webanimations/accelerated-animation-with-easing.html is flaky on Mac Debug
https://bugs.webkit.org/show_bug.cgi?id=220187
<rdar://problem/72796329>

Reviewed by Dean Jackson.

Ensure there were two stable presentation updates prior to starting animations and two after that to ensure
they are visually running accelerated.

  • platform/mac/TestExpectations:
  • webanimations/accelerated-animation-with-easing.html:
11:35 AM Changeset in webkit [271207] by commit-queue@webkit.org
  • 8 edits
    1 copy in trunk

Add SPI to determine whether a regex is supported in WKContentRuleList
https://bugs.webkit.org/show_bug.cgi?id=220095
Source/WebKit:

<rdar://problem/72058626>

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

This is a more efficient way than making a little rule list and seeing if it compiles.
Here, we don't need access to the disk, and we don't need to hop to another thread and back.
Covered by API tests.

  • UIProcess/API/APIContentRuleList.cpp:

(API::ContentRuleList::supportsRegularExpression):

  • UIProcess/API/APIContentRuleList.h:
  • UIProcess/API/Cocoa/WKContentRuleList.mm:

(+[WKContentRuleList _supportsRegularExpression:]):

  • UIProcess/API/Cocoa/WKContentRuleListInternal.h:
  • UIProcess/API/Cocoa/WKContentRuleListPrivate.h: Copied from Source/WebKit/UIProcess/API/Cocoa/WKContentRuleListInternal.h.
  • WebKit.xcodeproj/project.pbxproj:

Tools:

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

  • TestWebKitAPI/Tests/WebKitCocoa/ContentRuleListNotification.mm:

(TEST):

11:31 AM Changeset in webkit [271206] by commit-queue@webkit.org
  • 7 edits in trunk/Source/WebKit

Modernize WebContextMenu
https://bugs.webkit.org/show_bug.cgi?id=219969

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

This is old code, complete with a raw pointer.
Use references instead of pointers where possible,
and WeakPtr instead of a raw pointer.

  • WebProcess/InjectedBundle/API/c/WKBundlePage.cpp:

(WKBundlePageClickMenuItem):
(WKBundlePageCopyContextMenuItems):

  • WebProcess/WebCoreSupport/WebContextMenuClient.cpp:

(WebKit::WebContextMenuClient::showContextMenu):

  • WebProcess/WebPage/WebContextMenu.cpp:

(WebKit::WebContextMenu::WebContextMenu):

  • WebProcess/WebPage/WebContextMenu.h:

(WebKit::WebContextMenu::create):

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::contextMenu):
(WebKit::WebPage::contextMenuAtPointInWindow):
(WebKit::handleContextMenuEvent):
(WebKit::WebPage::contextMenuForKeyEvent):

11:22 AM Changeset in webkit [271205] by commit-queue@webkit.org
  • 10 edits in trunk

Stop speech recognition if page becomes invisible
https://bugs.webkit.org/show_bug.cgi?id=220073
<rdar://problem/72710704>

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

Source/WebKit:

We should not allow speech recognition on page invisible to user, because page may get content of captured audio
without user's notice. To do this, we should:

  1. deny speech recognition request on invisibile page
  2. abort ongoing speech recognition if page becomes invisible

API test: WebKit2.SpeechRecognitionPageBecomesInvisible

  • UIProcess/SpeechRecognitionPermissionManager.cpp:

(WebKit::SpeechRecognitionPermissionManager::continueProcessingRequest):

  • UIProcess/SpeechRecognitionServer.cpp:

(WebKit::SpeechRecognitionServer::abortForPageIsBecomingInvisible):

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

(WebKit::WebPageProxy::dispatchActivityStateChange):

  • UIProcess/WebProcessProxy.cpp:

(WebKit::WebProcessProxy::pageIsBecomingInvisible):

  • UIProcess/WebProcessProxy.h:

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/SpeechRecognition.mm: updated

WebKit2.SpeechRecognitionErrorWhenStartingAudioCaptureOnDifferentPage for updated behavior.
(TestWebKitAPI::TEST):

  • TestWebKitAPI/cocoa/TestWKWebView.mm:

(-[TestWKWebView _setUpTestWindow:]): set the origin of host window to be the origin of frame of TestWKWebView.

11:19 AM Changeset in webkit [271204] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

Unreviewed, reverting r271165.

Caused the test to fail on bots

Reverted changeset:

https://trac.webkit.org/changeset/271165

10:14 AM Changeset in webkit [271203] by Jonathan Bedard
  • 3 edits in trunk/Tools

[webkitscmpy] Add command to canonicalize unpushed commits (Follow-up fix)
https://bugs.webkit.org/show_bug.cgi?id=219982
<rdar://problem/72427536>

Reviewed by Aakash Jain.

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

(Canonicalize.main): git filter-branch requires the repository root.

9:49 AM Changeset in webkit [271202] by commit-queue@webkit.org
  • 2 edits in trunk/LayoutTests

[GPU process] Add Layout tests failures to LayoutTests/gpu-process/TestExpectations
https://bugs.webkit.org/show_bug.cgi?id=220070

Patch by Rini Patel <rini_patel@apple.com> on 2021-01-06
Reviewed by Darin Adler.

  • gpu-process/TestExpectations:
9:32 AM Changeset in webkit [271201] by commit-queue@webkit.org
  • 8 edits in trunk/Source/WebKit

Use sendWithAsyncReply instead of iOS-specific GenericCallbacks
https://bugs.webkit.org/show_bug.cgi?id=220346

Patch by Alex Christensen <achristensen@webkit.org> on 2021-01-06
Reviewed by Darin Adler.

  • UIProcess/WebPageProxy.h:
  • UIProcess/WebPageProxy.messages.in:
  • UIProcess/ios/WKContentViewInteraction.mm:

(-[WKContentView _accessibilityRetrieveRectsEnclosingSelectionOffset:withGranularity:]):
(-[WKContentView _accessibilityRetrieveRectsAtSelectionOffset:withText:completionHandler:]):
(selectionChangedWithGesture):
(selectionChangedWithTouch):
(-[WKContentView changeSelectionWithGestureAt:withGesture:withState:withFlags:]):
(-[WKContentView changeSelectionWithTouchAt:withSelectionTouch:baseIsStart:withFlags:]):
(-[WKContentView changeSelectionWithTouchesFrom:to:withGesture:withState:]):
(-[WKContentView updateCurrentFocusedElementInformation:]):

  • UIProcess/ios/WebPageProxyIOS.mm:

(WebKit::WebPageProxy::requestFocusedElementInformation):
(WebKit::WebPageProxy::selectWithGesture):
(WebKit::WebPageProxy::updateSelectionWithTouches):
(WebKit::WebPageProxy::selectWithTwoTouches):
(WebKit::WebPageProxy::requestRectsForGranularityWithSelectionOffset):
(WebKit::WebPageProxy::requestRectsAtSelectionOffsetWithText):
(WebKit::WebPageProxy::gestureCallback): Deleted.
(WebKit::WebPageProxy::touchesCallback): Deleted.
(WebKit::WebPageProxy::selectionRectsCallback): Deleted.
(WebKit::WebPageProxy::focusedElementInformationCallback): Deleted.

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

(WebKit::WebPage::requestFocusedElementInformation):
(WebKit::WebPage::selectWithGesture):
(WebKit::WebPage::updateSelectionWithTouches):
(WebKit::WebPage::selectWithTwoTouches):
(WebKit::WebPage::getRectsForGranularityWithSelectionOffset):
(WebKit::WebPage::getRectsAtSelectionOffsetWithText):

6:50 AM Changeset in webkit [271200] by graouts@webkit.org
  • 2 edits in trunk/Source/WebCore

Remove the unused RenderStyle::setHasPseudoStyle()
https://bugs.webkit.org/show_bug.cgi?id=219893

Reviewed by Darin Adler.

This function no longer has any call sites.

  • rendering/style/RenderStyle.h:

(WebCore::RenderStyle::NonInheritedFlags::setHasPseudoStyle): Deleted.
(WebCore::RenderStyle::setHasPseudoStyle): Deleted.

5:45 AM Changeset in webkit [271199] by Lauro Moura
  • 2 edits in trunk/Tools

[Flatpak SDK] coredumpctl invocation when using a local SDK repo fallbacks to the remote repo
https://bugs.webkit.org/show_bug.cgi?id=219934

Reviewed by Philippe Normand.

Some commands run in flatpak may end up calling other commands on the
host through flatpak-spawn that would enter the flatpak environment
again. One such command happens when getting crash logs, which invokes
webkit-flatpak with --gdb-stack-trace.

Before this commit, the WEBKIT_FLATPAK_USER_DIR is not forwarded,
making flatpakutils.py to download the regular UserFlatpak SDK instead
of using the one in the mentioned variable.

  • Scripts/webkitpy/port/linux_get_crash_log.py:

(GDBCrashLogGenerator._get_trace_from_flatpak):

2:37 AM Changeset in webkit [271198] by pvollan@apple.com
  • 2 edits in trunk/Source/WebKit

[iOS] Silence selected sandbox violation reports
https://bugs.webkit.org/show_bug.cgi?id=220320

Reviewed by Darin Adler.

For performance reasons, benign sandbox violations in the WebContent process can be silenced on iOS.

  • Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb:
1:56 AM Changeset in webkit [271197] by Philippe Normand
  • 7 edits in trunk/Source/WebCore

REGRESSION[r270947][GStreamer]: Deadlocks audio rendering
https://bugs.webkit.org/show_bug.cgi?id=220112

Reviewed by Chris Dumez.

This patch fixes the mentioned regression by making the webaudiosrc element wait on the
dispatch condition only if it wasn't done synchronously. Additionally several race
conditions are now fixed in the AudioDestination, by ensuring the start and stop completion
handlers are invoked only after the corresponding pipeline state has been reached. Also the
AudioDestination now correctly notifies its parent node of is-playing changes.

  • platform/audio/gstreamer/AudioDestinationGStreamer.cpp:

(WebCore::AudioDestinationGStreamer::AudioDestinationGStreamer):
(WebCore::AudioDestinationGStreamer::~AudioDestinationGStreamer):
(WebCore::AudioDestinationGStreamer::handleMessage):
(WebCore::AudioDestinationGStreamer::start):
(WebCore::AudioDestinationGStreamer::startRendering):
(WebCore::AudioDestinationGStreamer::stop):
(WebCore::AudioDestinationGStreamer::stopRendering):
(WebCore::AudioDestinationGStreamer::notifyStartupResult):
(WebCore::AudioDestinationGStreamer::notifyStopResult):
(WebCore::AudioDestinationGStreamer::notifyIsPlaying):

  • platform/audio/gstreamer/AudioDestinationGStreamer.h:
  • platform/audio/gstreamer/WebKitWebAudioSourceGStreamer.cpp:

(webkit_web_audio_src_class_init):
(webKitWebAudioSrcConstructed):
(webKitWebAudioSrcSetProperty):
(webKitWebAudioSrcGetProperty):
(webKitWebAudioSrcAllocateBuffers):
(webKitWebAudioSrcRenderAndPushFrames):
(webKitWebAudioSrcRenderIteration):
(webKitWebAudioSrcChangeState):
(webkitWebAudioSourceSetDispatchToRenderThreadFunction):

  • platform/audio/gstreamer/WebKitWebAudioSourceGStreamer.h:
  • platform/graphics/gstreamer/GStreamerCommon.cpp:

(WebCore::webkitGstSetElementStateSynchronously):

  • platform/graphics/gstreamer/GStreamerCommon.h:

(WebCore::webkitGstSetElementStateSynchronously):

1:12 AM Changeset in webkit [271196] by youenn@apple.com
  • 5 edits in trunk/LayoutTests

REGRESSION (r267227): imported/w3c/web-platform-tests/xhr/event-timeout.any.html is a flaky failure
https://bugs.webkit.org/show_bug.cgi?id=216961
<rdar://problem/69548545>

Reviewed by Darin Adler.

LayoutTests/imported/w3c:

  • web-platform-tests/xhr/event-timeout.any.js:

(test.step):
Increase the timeout to 1 second since 10ms might be too small to get consistent results now that we are doing an IPC message to network process to check load is not yet finished.

LayoutTests:

  • platform/glib/TestExpectations:
  • platform/ios-simulator-wk2/TestExpectations:
12:16 AM Changeset in webkit [271195] by pvollan@apple.com
  • 2 edits in trunk/Source/WebKit

[iOS] Add missing endpoint in sandbox message filter
https://bugs.webkit.org/show_bug.cgi?id=219731
<rdar://problem/71566760>

Reviewed by Darin Adler.

Add missing endpoint in the WebContent process' sandbox message filter on iOS.

  • Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb:

Jan 5, 2021:

11:26 PM Changeset in webkit [271194] by eric.carlson@apple.com
  • 20 edits in trunk/Source

[Cocoa] WebM format reader doesn't work with a url in a <source> element
https://bugs.webkit.org/show_bug.cgi?id=219961
<rdar://problem/72399014>

Reviewed by Andy Estes.

Source/WebCore:

Work around a CoreMedia bug that makes the format reader fail to load when the
AVURLAssetOutOfBandMIMETypeKeyis included in the AVURLAsset options dictionary.
Also include some cleanup:

  • Move the code to check for WebM MIME types from MediaPlayerPrivateAVFoundationObjC to AVAssetMIMETypeCache.
  • Don't use RuntimeEnabledFeatures in MediaPlayerPrivateAVFoundationObjC.
  • Register the WebM format reader when creating an AVURLAsset for a WebM url instead of when checking the MIME type.
  • Cleanup WebM "codecs" parameter parsing.
  • It is a layering violation to use RuntimeSettings from inside of /platform.
  • platform/audio/PlatformMediaSessionManager.cpp:

(WebCore::PlatformMediaSessionManager::webMFormatReaderEnabled):
(WebCore::PlatformMediaSessionManager::setWebMFormatReaderEnabled):
(WebCore::PlatformMediaSessionManager::vorbisDecoderEnabled):
(WebCore::PlatformMediaSessionManager::setVorbisDecoderEnabled):

  • platform/audio/PlatformMediaSessionManager.h:
  • platform/graphics/TrackPrivateBase.cpp:

(WebCore::TrackPrivateBase::defaultEnabled const):

  • platform/graphics/TrackPrivateBase.h:
  • platform/graphics/avfoundation/objc/AVAssetMIMETypeCache.mm:

(WebCore::AVAssetMIMETypeCache::canDecodeExtendedType):
(WebCore::AVAssetMIMETypeCache::initializeCache):

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

(WebCore::registerFormatReaderIfNecessary):
(WebCore::willUseWebMFormatReaderForType):
(WebCore::MediaPlayerPrivateAVFoundationObjC::createAVAssetForURL):
(WebCore::MediaPlayerPrivateAVFoundationObjC::supportsTypeAndCodecs):
(WebCore::ensureFormatReaderIsRegistered): Deleted.
(WebCore::isFormatReaderAvailable): Deleted.

  • platform/graphics/cocoa/AudioTrackPrivateWebM.cpp:

(WebCore::AudioTrackPrivateWebM::defaultEnabled const):

  • platform/graphics/cocoa/AudioTrackPrivateWebM.h:
  • platform/graphics/cocoa/SourceBufferParserWebM.cpp:

(WebCore::SourceBufferParserWebM::webmMIMETypes):
(WebCore::canLoadFormatReader):
(WebCore::SourceBufferParserWebM::isWebMFormatReaderAvailable):
(WebCore::SourceBufferParserWebM::isContentTypeSupported):

  • platform/graphics/cocoa/SourceBufferParserWebM.h:
  • platform/graphics/cocoa/VideoTrackPrivateWebM.cpp:

(WebCore::VideoTrackPrivateWebM::defaultEnabled const):

  • platform/graphics/cocoa/VideoTrackPrivateWebM.h:
  • platform/graphics/cocoa/WebMAudioUtilitiesCocoa.mm:

(WebCore::isVorbisDecoderAvailable):

Source/WebKit:

Only enable a WebM track when the it has FlagEnabled element, or when we see that
it has media samples. This is necessary because there are WebM files with empty tracks,
and CoreMedia won't play a file if any enabled track doesn't have samples.

  • Shared/mac/MediaFormatReader/FormatReader.cpp:

(WebKit::FormatReader::didParseTracks):

  • Shared/mac/MediaFormatReader/TrackReader.cpp:

(WebKit::TrackReader::create):
(WebKit::TrackReader::TrackReader):
(WebKit::TrackReader::finishParsing):
(WebKit::TrackReader::isEnabled const):
(WebKit::TrackReader::copyProperty):

  • Shared/mac/MediaFormatReader/TrackReader.h:
  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::updatePreferences):

  • WebProcess/cocoa/WebProcessCocoa.mm:

(WebKit::WebProcess::platformInitializeWebProcess):

9:59 PM Changeset in webkit [271193] by Wenson Hsieh
  • 9 edits in trunk/Source/WebKit

Refactor some logic around touch event deferring gesture recognizers
https://bugs.webkit.org/show_bug.cgi?id=220345

Reviewed by Tim Horton.

Rename _deferringGestureRecognizerForFoo to _touchStartDeferringGestureRecognizerForFoo, to make it clear
that these deferring gestures are only intended to defer native gestures until the "touchstart" event has been
handled.

This distinction becomes important once I introduce deferring gesture recognizers that defer the "touchend"
event, and prevent gestures that activate upon touch end (i.e. various types of tap gesture recognizers).

See below for more details.

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

(WebKit::WebPageProxy::handlePreventableTouchEvent):

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

(WebKit::PageClientImpl::doneDeferringTouchStart):
(WebKit::PageClientImpl::doneDeferringNativeGestures): Deleted.

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

(-[WKContentView setUpInteraction]):
(-[WKContentView cleanUpInteraction]):
(-[WKContentView _removeDefaultGestureRecognizers]):
(-[WKContentView _addDefaultGestureRecognizers]):
(-[WKContentView _webTouchEventsRecognized:]):
(-[WKContentView _touchStartDeferringGestures]):
(-[WKContentView _doneDeferringTouchStart:]):
(-[WKContentView gestureRecognizer:shouldRecognizeSimultaneouslyWithGestureRecognizer:]):
(-[WKContentView deferringGestureRecognizer:shouldDeferOtherGestureRecognizer:]):
(-[WKContentView _deferringGestureRecognizers]): Deleted.
(-[WKContentView _doneDeferringNativeGestures:]): Deleted.

Rename this to -_doneDeferringTouchStart:.

(-[WKContentView deferringGestureRecognizer:shouldDeferGesturesAfterEndingTouchesWithEvent:]):

Deleted. This logic has been moved to WKContentView (see below).

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

(-[WKDeferringGestureRecognizer touchesEnded:withEvent:]): Deleted.

Additionally refactor this code so that this fallback logic for lifting the gesture gate exists inside
WKContentView (after ending all touches), rather than inside the deferring gesture recognizer. While this
doesn't affect the extant touch start deferring gestures, it will ensure that touch end deferring gestures won't
get reset prematurely due to the web touch events gesture recognizer ending before the touch end deferring
gesture.

9:29 PM Changeset in webkit [271192] by Kate Cheney
  • 4 edits in trunk/Source

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:
7:55 PM Changeset in webkit [271191] by Simon Fraser
  • 3 edits
    2 adds in trunk

REGRESSION: animated iframe painted blank
https://bugs.webkit.org/show_bug.cgi?id=220231
Source/WebCore:

<rdar://problem/72793724>

Reviewed by Zalan Bujtas.

When an <iframe> on a fractional pixel boundary, on a non-Retina display, with
composited contents had its visibility toggled from 'hidden' to 'visible' we could
fail to parent the iframe content compositing layers, resulting in missing iframe
content.

This happened when the iframe's GraphicsLayer had a m_contentsClippingLayer (which
acts as the parent for the content layers) due to the fractional pixel offset.
When GraphicsLayerCA::setContentsVisible(true) was called, it would fail to call
noteSublayersChanged() because the iframe host layer has no m_contentsLayer,
but we do need to rebuild sublayers in this case.

Test: compositing/iframes/content-visibility-with-clipping.html

  • platform/graphics/ca/GraphicsLayerCA.cpp:

(WebCore::GraphicsLayerCA::setContentsVisible):

LayoutTests:

Reviewed by Zalan Bujtas.

  • compositing/iframes/content-visibility-with-clipping-expected.html: Added.
  • compositing/iframes/content-visibility-with-clipping.html: Added.
7:27 PM Changeset in webkit [271190] by Aditya Keerthi
  • 10 edits
    1 add in trunk

REGRESSION (r261157): Crash in WKSelectPopover when running as iPhone app on iPad
https://bugs.webkit.org/show_bug.cgi?id=220065
<rdar://problem/71932792>

Reviewed by Darin Adler.

Source/WebKit:

r261157 changed how WebKit determined the user interface idiom for
WKWebViews that were created in daemons. Since daemons do not create
UIApplications, WebKit cannot use UIDevice in these instances. Instead,
the user interface idiom determination logic was updated to include
a check for device hardware, using MobileGestalt, in cases where no
UIApplication was created.

Since WebKit only determines the user interface idiom once (then
storing the obtained value), the added determination logic breaks
down for iPhone apps on iPad. Consider the following sequence of
events, eventually leading to a crash when interacting with a
<select> element:

  1. A WKWebView is created prior to UIApplication initialization. This can be achieved by creating one in another class's "load" method.
  1. Since the app is physically running on an iPad, WebKit determines the user interface idiom to be "iPad" and saves this information.
  1. Once the app actually launches, UIApplication is initialized. Since this is an iPhone app on iPad, the actual user interface idiom is "iPhone". However, WebKit does not know this, since it uses the saved user interface idiom from (2).
  1. When tapping a <select> element, WebKit checks its saved idiom, an attempts to present a UIPopoverController (the standard behavior under the iPad idiom).
  1. However, since the actual idiom is iPhone, UIKit throws an NSInvalidArgumentException, since UIPopoverController should not be used when running under the iPhone idiom.

A simple fix for the crash would be to call into UIKit to check the
idiom each time it is required, rather than relying on the saved bit.
However, this does not address the more general issue, which is that
WebKit's saved idiom and the actual idiom can be out of sync.

Consequently, the approach taken is to update the saved idiom when
it changes. This should only occur when a UIApplication is initialized.
Hence, we listen for UIApplicationDidFinishLaunchingNotification,
and if the actual idiom is different from our saved idiom, we update the
saved idiom and also notify the WebProcess.

  • Shared/UserInterfaceIdiom.h:
  • Shared/UserInterfaceIdiom.mm:

(WebKit::updateCurrentUserInterfaceIdiom):

This method checks the actual idiom and updates the saved idiom if
they differ. Returns true only if the idiom was updated.

  • UIProcess/Cocoa/WebProcessPoolCocoa.mm:

(WebKit::WebProcessPool::registerNotificationObservers):

Listen for UIApplicationDidFinishLaunchingNotification if the idiom
can change (UIApplication is uninitialized). Then, if the actual
and saved idiom differ, notify all WebProcesses of the change.

(WebKit::WebProcessPool::unregisterNotificationObservers):

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

(WebKit::WebProcess::userInterfaceIdiomDidChange):

Update the saved idiom using the information from the UIProcess.

Tools:

Added an API test to exercise the previously crashing, and now fixed,
codepath. Note that the test will trivially pass on iPhones, since the
crash only occurs on iPads. See below for an explanation of how the
test functions on iPads.

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

(TestWebKitAPI::TEST):

Since TestWebKitAPI is not an application, [UIApplication sharedApplication]
is nil when the test creates a WKWebView. Consequently, when the WKWebView
is created, WebKit uses the device hardware information to determine the user
interface idiom (iPad). Now, before the test interacts with the WKWebView,
the user interface idiom is changed to an iPhone and the UIApplication is
initialized. Note that the UIApplicationDidFinishLaunchingNotification
is manually posted, since there is no UIApplicationDelegate.

Without the changes in this patch, the test will crash, since the user
interface idiom maintained by WebKit would not be updated, and would
remain iPad rather than iPhone. Hence, when focusing a select element, the test
would attempt to present a UIPopoverController. However, since the idiom
is actually iPhone, UIKit will throw an NSInvalidArgumentException.

After the changes in this patch, the test does crash, as the change to the
user interface idiom after UIApplication creation is recognized by WebKit,
and the attempt to present a UIPopoverController under the iPhone idiom
does not occur.

7:24 PM Changeset in webkit [271189] by Chris Dumez
  • 9 edits in trunk/Source

[iOS] Add a feature flag to stop leaking an XPC boost message to XPC services
https://bugs.webkit.org/show_bug.cgi?id=219453
<rdar://72834999>

Reviewed by Geoff Garen.

Source/WebKit:

Add a feature flag to stop leaking an XPC boost message to XPC services on builds where RunningBoard is
able to give the right priorities to our XPC services based on the type of RunningBoard assertion is being
held. There is no behavior change for the Network/WebContent processes since those were blocklisted in
RunningBoard (Turning on the RB_full_manage_WK_jetsam feature flag gives us the default RunningBoard
behavior without blocklisting). However, this allows the new GPUProcess to move to IDLE jetsam band when
homing out of MobileSafari, which makes the GPUProcess eligible for the freezer. Previously, the leaked
boost message would keep the GPUProcess in a higher jetsam band.

For now, the feature flag is off by default. I will turn it on later on.

  • FeatureFlags/WebKit.plist:

Add RB_full_manage_WK_jetsam feature flag but keep it off for now. On recent enough builds of RunningBoard, this
flag disables the blocklisting of the WebContent/Network processes in RunningBoard so that RunningBoard can now
set the priority of those processes (instead of us boosting our priority via boost messages).

  • GPUProcess/EntryPoint/Cocoa/XPCService/GPUService/Info-iOS.plist:
  • NetworkProcess/EntryPoint/Cocoa/XPCService/NetworkService/Info-iOS.plist:
  • WebAuthnProcess/EntryPoint/Cocoa/XPCService/WebAuthnService/Info-iOS.plist:
  • WebProcess/EntryPoint/Cocoa/XPCService/WebContentService/Info-iOS.plist:

Set _ProcessType=App so that RunningBoard is able to set the priority of our XPC services on iOS. Without
this change, we get a permission denied when RunningBoard attempts to set the priority of our XPC services.

  • UIProcess/Launcher/mac/ProcessLauncherMac.mm:

(WebKit::shouldLeakBoost):
Stop leaking a boost message on iOS when RUNNINGBOARD_WEBKIT_PRIORITY_SUPPORT compile-time flag is enabled
and when the RB_full_manage_WK_jetsam feature flag is enabled.

Source/WTF:

Add new RUNNINGBOARD_WEBKIT_PRIORITY_SUPPORT build time flag since we need a recent
enough build of RunningBoard to do this.

  • wtf/PlatformHave.h:
7:11 PM Changeset in webkit [271188] by Megan Gardner
  • 2 edits in trunk/Source/WebCore

Copy Localizable.strings file into the correct directory
https://bugs.webkit.org/show_bug.cgi?id=220029

Reviewed by Tim Horton.

After the changes in r269865, r269873, r269915, r269932, r269937 the localizable.strings
was not showing up in the right place in the production build to allow it to be correctly
localized. This skips the step of putting it in DerivedSources and just puts the
concatenated file in the final correct directory so we do not have to relay on Xcode build
doing the correct thing for us.

  • WebCore.xcodeproj/project.pbxproj:
7:03 PM Changeset in webkit [271187] by commit-queue@webkit.org
  • 8 edits in trunk/Source/WebKit

Use sendWithAsyncReply instead of AttributedStringForCharacterRangeCallback and FontAtSelectionCallback
https://bugs.webkit.org/show_bug.cgi?id=220344

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

  • UIProcess/Cocoa/WebViewImpl.mm:

(WebKit::WebViewImpl::updateFontManagerIfNeeded):
(WebKit::WebViewImpl::attributedSubstringForProposedRange):

  • UIProcess/WebPageProxy.h:
  • UIProcess/WebPageProxy.messages.in:
  • UIProcess/mac/WebPageProxyMac.mm:

(WebKit::WebPageProxy::attributedSubstringForCharacterRangeAsync):
(WebKit::WebPageProxy::fontAtSelection):
(WebKit::WebPageProxy::attributedStringForCharacterRangeCallback): Deleted.
(WebKit::WebPageProxy::fontAtSelectionCallback): Deleted.

  • WebProcess/WebPage/WebPage.h:
  • WebProcess/WebPage/WebPage.messages.in:
  • WebProcess/WebPage/mac/WebPageMac.mm:

(WebKit::WebPage::attributedSubstringForCharacterRangeAsync):
(WebKit::WebPage::fontAtSelection):

7:03 PM Changeset in webkit [271186] by ysuzuki@apple.com
  • 12 edits in trunk

[JSC] DFG/FTL DirectCall need to respect Wasm IC
https://bugs.webkit.org/show_bug.cgi?id=220339

Reviewed by Saam Barati.

We found that Wasm IC for fast calls are not used in several places.

  1. LLInt calls
  2. DFG/FTL DirectCall
  3. Virtual calls

We noticed this because of r271112. r271112 made wasm function loading from exports constant-folded in DFG/FTL.
And it emits DirectCall instead of Call in DFG/FTL. Then, we missed Wasm IC and get large performance regression
in JetStream2 richard-wasm.

In this patch, we use Wasm IC as much as possible. The key thing of this wasm IC is that it relies on callee.
So, if the place is just checking Executable, then we should not go to that IC. Fortunately, the above three checks
callee before using code pointer obtained for Wasm IC.

  1. LLInt call fast path first checks callee.
  2. DFG/FTL DirectCall requires callee is constant for wasm functions.
  3. Virtual calls are not storing generated codePtr.
  • dfg/DFGOperations.cpp:

(JSC::DFG::JSC_DEFINE_JIT_OPERATION):

  • jit/JITOperations.cpp:

(JSC::virtualForWithFunction):

  • llint/LLIntSlowPaths.cpp:

(JSC::LLInt::setUpCall):

6:27 PM Changeset in webkit [271185] by Russell Epstein
  • 8 edits in branches/safari-611.1.9-branch/Source

Versioning.

WebKit-7611.1.9.4

5:08 PM Changeset in webkit [271184] by wilander@apple.com
  • 4 edits in trunk/Source/WebKit

PCM: Experimental debug mode stops working after initial use
https://bugs.webkit.org/show_bug.cgi?id=220336
<rdar://problem/72398086>

Reviewed by Brent Fulgham.

The existing experimental PCM debug mode uses
RuntimeEnabledFeatures::sharedFeatures().privateClickMeasurementDebugModeEnabled()
which is not correct in the network process. This makes the flag to lose its
state after navigations in new tabs.

This patch moves the flag to be alongside the PCM feature flag in
WebKit::NetworkProcess.

  • NetworkProcess/NetworkProcess.cpp:

(WebKit::NetworkProcess::setPrivateClickMeasurementDebugMode):
(WebKit::NetworkProcess::privateClickMeasurementDebugModeEnabled const):

  • NetworkProcess/NetworkProcess.h:
  • NetworkProcess/PrivateClickMeasurementManager.cpp:

(WebKit::PrivateClickMeasurementManager::debugModeEnabled const):

4:44 PM Changeset in webkit [271183] by commit-queue@webkit.org
  • 5 edits
    10 moves
    8 adds
    5 deletes in trunk/Source/WebKit

WebKit IPC generator tests have duplicate receiver names, limiting the implementation
https://bugs.webkit.org/show_bug.cgi?id=220236

Patch by Kimmo Kinnunen <kkinnunen@apple.com> on 2021-01-05
Reviewed by Chris Dumez.

IPC test message receivers defined multiple receivers with same name.
Rename the test message receivers based on what feature they test. No
change in the non-test code.

The IPC works with message identifier defined by the MessageName type.
Having multiple clashing receiver names is problematic because a MessageName
is defined by pair <receiver name, message name>. Since different receivers
might have different kinds of messages with same message name, these might end
up mapping to two conflicting message kinds.

The rename of test classes makes the tests conform to the already used contract
that the MessageName is globally unique to each individual conceptual message
because the receiver names are unique.

This enables further implementations that make decisions based on the
message name. Example is to decide whether a message is synchronous or
not. This cannot be implemented generally if there is multiple different kinds of
messages with same name.

Rename the test message receiver files based on the receiver name. This is
more consistent with the existing convention used in the actual code.

Move the script test results from the Scripts/ directory to a tests/ subdirectory
of the tool. This is to not fill the Scripts/ directory with Scripts/webkit/ related
test result data.

Adds previously missing test result file MessageArgumentDescriptions.cpp, which was not added
when the feature was implemented.

Tested by existing tests and new model_unittest.py.

  • Scripts/Makefile: Removed.
  • Scripts/MessageNames.cpp: Removed.
  • Scripts/MessageNames.h: Removed.
  • Scripts/generate-message-receiver.py:

(main):

  • Scripts/test-legacyMessageReceiver.cpp: Removed.
  • Scripts/testMessageReceiver.cpp: Removed.
  • Scripts/webkit/messages.py:
  • Scripts/webkit/messages_unittest.py:

(ParsingTest.test_receiver):
(GeneratedFileContentsTest.assertGeneratedFileContentsEqual):

  • Scripts/webkit/model.py:

(Parameter.has_attribute):
(check_global_model):

  • Scripts/webkit/model_unittest.py: Added.

(ModelCheckTest):
(ModelCheckTest.test_duplicate_receivers):
(test_mismatch_message_attribute_sync):

  • Scripts/webkit/tests/Makefile: Added.
  • Scripts/webkit/tests/MessageArgumentDescriptions.cpp: Added.

(IPC::jsValueForArguments):
(IPC::jsValueForReplyArguments):
(IPC::messageArgumentDescriptions):
(IPC::messageReplyArgumentDescriptions):
(IPC::messageIsSync):

  • Scripts/webkit/tests/MessageNames.cpp: Added.

(IPC::description):
(IPC::receiverName):
(IPC::isValidMessageName):

  • Scripts/webkit/tests/MessageNames.h: Added.

(WTF::isValidEnum):

  • Scripts/webkit/tests/TestWithLegacyReceiver.messages.in: Renamed from Source/WebKit/Scripts/webkit/test-legacy.messages.in.
  • Scripts/webkit/tests/TestWithLegacyReceiverMessageReceiver.cpp: Added.

(Messages::TestWithLegacyReceiver::GetPluginProcessConnection::send):
(Messages::TestWithLegacyReceiver::TestMultipleAttributes::send):
(WebKit::TestWithLegacyReceiver::didReceiveTestWithLegacyReceiverMessage):
(WebKit::TestWithLegacyReceiver::didReceiveSyncTestWithLegacyReceiverMessage):

  • Scripts/webkit/tests/TestWithLegacyReceiverMessages.h: Renamed from Source/WebKit/Scripts/test-legacyMessages.h.

(Messages::TestWithLegacyReceiver::messageReceiverName):
(Messages::TestWithLegacyReceiver::LoadURL::name):
(Messages::TestWithLegacyReceiver::LoadSomething::name):
(Messages::TestWithLegacyReceiver::TouchEvent::name):
(Messages::TestWithLegacyReceiver::AddEvent::name):
(Messages::TestWithLegacyReceiver::LoadSomethingElse::name):
(Messages::TestWithLegacyReceiver::DidReceivePolicyDecision::name):
(Messages::TestWithLegacyReceiver::Close::name):
(Messages::TestWithLegacyReceiver::PreferencesDidChange::name):
(Messages::TestWithLegacyReceiver::SendDoubleAndFloat::name):
(Messages::TestWithLegacyReceiver::SendInts::name):
(Messages::TestWithLegacyReceiver::CreatePlugin::name):
(Messages::TestWithLegacyReceiver::RunJavaScriptAlert::name):
(Messages::TestWithLegacyReceiver::GetPlugins::name):
(Messages::TestWithLegacyReceiver::GetPluginProcessConnection::name):
(Messages::TestWithLegacyReceiver::TestMultipleAttributes::name):
(Messages::TestWithLegacyReceiver::TestParameterAttributes::name):
(Messages::TestWithLegacyReceiver::TemplateTest::name):
(Messages::TestWithLegacyReceiver::SetVideoLayerID::name):
(Messages::TestWithLegacyReceiver::DidCreateWebProcessConnection::name):
(Messages::TestWithLegacyReceiver::InterpretKeyEvent::name):
(Messages::TestWithLegacyReceiver::DeprecatedOperation::name):
(Messages::TestWithLegacyReceiver::ExperimentalOperation::name):

  • Scripts/webkit/tests/TestWithLegacyReceiverMessagesReplies.h: Renamed from Source/WebKit/Scripts/testMessagesReplies.h.
  • Scripts/webkit/tests/TestWithSuperclass.messages.in: Renamed from Source/WebKit/Scripts/webkit/test-superclass.messages.in.
  • Scripts/webkit/tests/TestWithSuperclassMessageReceiver.cpp: Renamed from Source/WebKit/Scripts/test-superclassMessageReceiver.cpp.

(WebKit::TestWithSuperclass::didReceiveMessage):
(WebKit::TestWithSuperclass::didReceiveSyncMessage):

  • Scripts/webkit/tests/TestWithSuperclassMessages.h: Renamed from Source/WebKit/Scripts/test-superclassMessages.h.

(Messages::TestWithSuperclass::messageReceiverName):
(Messages::TestWithSuperclass::LoadURL::name):
(Messages::TestWithSuperclass::TestAsyncMessage::name):
(Messages::TestWithSuperclass::TestAsyncMessage::asyncMessageReplyName):
(Messages::TestWithSuperclass::TestAsyncMessageWithNoArguments::name):
(Messages::TestWithSuperclass::TestAsyncMessageWithNoArguments::asyncMessageReplyName):
(Messages::TestWithSuperclass::TestAsyncMessageWithMultipleArguments::name):
(Messages::TestWithSuperclass::TestAsyncMessageWithMultipleArguments::asyncMessageReplyName):
(Messages::TestWithSuperclass::TestAsyncMessageWithConnection::name):
(Messages::TestWithSuperclass::TestAsyncMessageWithConnection::asyncMessageReplyName):
(Messages::TestWithSuperclass::TestSyncMessage::name):
(Messages::TestWithSuperclass::TestSynchronousMessage::name):

  • Scripts/webkit/tests/TestWithSuperclassMessagesReplies.h: Renamed from Source/WebKit/Scripts/test-superclassMessagesReplies.h.
  • Scripts/webkit/tests/TestWithoutAttributes.messages.in: Renamed from Source/WebKit/Scripts/webkit/test.messages.in.
  • Scripts/webkit/tests/TestWithoutAttributesMessageReceiver.cpp: Added.

(Messages::TestWithoutAttributes::GetPluginProcessConnection::send):
(Messages::TestWithoutAttributes::TestMultipleAttributes::send):
(WebKit::TestWithoutAttributes::didReceiveMessage):
(WebKit::TestWithoutAttributes::didReceiveSyncMessage):

  • Scripts/webkit/tests/TestWithoutAttributesMessages.h: Renamed from Source/WebKit/Scripts/testMessages.h.

(Messages::TestWithoutAttributes::messageReceiverName):
(Messages::TestWithoutAttributes::LoadURL::name):
(Messages::TestWithoutAttributes::LoadSomething::name):
(Messages::TestWithoutAttributes::TouchEvent::name):
(Messages::TestWithoutAttributes::AddEvent::name):
(Messages::TestWithoutAttributes::LoadSomethingElse::name):
(Messages::TestWithoutAttributes::DidReceivePolicyDecision::name):
(Messages::TestWithoutAttributes::Close::name):
(Messages::TestWithoutAttributes::PreferencesDidChange::name):
(Messages::TestWithoutAttributes::SendDoubleAndFloat::name):
(Messages::TestWithoutAttributes::SendInts::name):
(Messages::TestWithoutAttributes::CreatePlugin::name):
(Messages::TestWithoutAttributes::RunJavaScriptAlert::name):
(Messages::TestWithoutAttributes::GetPlugins::name):
(Messages::TestWithoutAttributes::GetPluginProcessConnection::name):
(Messages::TestWithoutAttributes::TestMultipleAttributes::name):
(Messages::TestWithoutAttributes::TestParameterAttributes::name):
(Messages::TestWithoutAttributes::TemplateTest::name):
(Messages::TestWithoutAttributes::SetVideoLayerID::name):
(Messages::TestWithoutAttributes::DidCreateWebProcessConnection::name):
(Messages::TestWithoutAttributes::InterpretKeyEvent::name):
(Messages::TestWithoutAttributes::DeprecatedOperation::name):
(Messages::TestWithoutAttributes::ExperimentalOperation::name):

  • Scripts/webkit/tests/TestWithoutAttributesMessagesReplies.h: Renamed from Source/WebKit/Scripts/test-legacyMessagesReplies.h.
4:35 PM Changeset in webkit [271182] by Jonathan Bedard
  • 7 edits
    5 adds in trunk/Tools

[webkitscmpy] Add command to canonicalize unpushed commits
https://bugs.webkit.org/show_bug.cgi?id=219982
<rdar://problem/72427536>

Reviewed by Dewei Zhu.

  • Scripts/git-webkit: Specify web-service for canonical identifier translation.
  • Scripts/libraries/webkitscmpy/setup.py: Add canonicalize directory to package.
  • Scripts/libraries/webkitscmpy/webkitscmpy/init.py: Bump version.
  • Scripts/libraries/webkitscmpy/webkitscmpy/canonicalize: Added.
  • Scripts/libraries/webkitscmpy/webkitscmpy/canonicalize/init.py: Added.

(Canonicalize): Command to edit history of unpushed commits on a branch.
(Canonicalize.parser):
(Canonicalize.main): Call git filter-branch to edit commit message and authorship
of unpushed commits.

  • Scripts/libraries/webkitscmpy/webkitscmpy/canonicalize/committer.py: Added.

(canonicalize): Given a name, email and a contributor mapping, return a canonical name
and email for the given author or committer.
(main): Print out the canonical author and committer to be parsed by git filter-branch.

  • Scripts/libraries/webkitscmpy/webkitscmpy/canonicalize/message.py: Added.

(main): Add the canonical identifier to a commit message.

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

(Contributor): Add unknown author regex.
(Contributor.from_scm_log):

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

(Git.init): Add git filter-branch mock. Note that this mock makes an effort to test
message.py and contributor.py, but not the shell script passed to the command.

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

(Command.main): Accept arbitrary kwargs.
(Find.main): Ditto.
(Checkout.main): Ditto.
(main): Allow caller to specify a string template for canonical identifiers in commit messages.

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

(TestCanonicalize):
(TestCanonicalize.test_invalid):
(TestCanonicalize.test_no_commits):
(TestCanonicalize.test_formated_identifier):
(TestCanonicalize.test_git_svn):
(TestCanonicalize.test_branch_commits):

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

media-source-webm.html: Handle frame size in HAVE_METADATA
https://bugs.webkit.org/show_bug.cgi?id=220046

Reviewed by Daniel Bates.

A follow-up patch to fix a failure on Big Sur. A 'resize' event can be fired before or
after the 'update' event. The test needs to support both cases.

  • media/media-source/media-source-webm-expected.txt:
  • media/media-source/media-source-webm.html:
4:22 PM Changeset in webkit [271180] by timothy_horton@apple.com
  • 2 edits in trunk/Source/WebKit

SourcesCocoa.txt should not be installed in the Web Content service bundle
https://bugs.webkit.org/show_bug.cgi?id=220338

Reviewed by Wenson Hsieh.

  • WebKit.xcodeproj/project.pbxproj:

Remove SourcesCocoa.txt from the target.

3:24 PM WikiStart edited by Jon Davis
Added November 2020 Meeting page link (diff)
3:22 PM November 2020 Meeting edited by Jon Davis
(diff)
3:21 PM IgaliaPrioritiesfor2021 created by Jon Davis
3:20 PM GPUProcess created by Jon Davis
3:17 PM WhatsChangingwithscrollingonmacOS created by Jon Davis
3:15 PM November 2020 Meeting edited by Jon Davis
(diff)
3:14 PM Changeset in webkit [271179] by commit-queue@webkit.org
  • 3 edits in trunk/Tools

[JSC] allow stress tests to opt out of parallel execution
https://bugs.webkit.org/show_bug.cgi?id=213373

Patch by Angelos Oikonomopoulos <Angelos Oikonomopoulos> on 2021-01-05
Reviewed by Yusuke Suzuki.

On memory-limited devices, some JSC stress tests may intermittently OOM when
they get scheduled along with another heavy JSC stress test. However, the tests
might be able to complete if run on their own.

This patch adds a serial! directive that causes a JSC stress test to only ever
be scheduled to run by itself. It's currently unused and needs to be enabled on
a test-by-test basis.

  • Scripts/run-jsc-stress-tests:
  • Scripts/webkitruby/jsc-stress-test-writer-default.rb:
3:13 PM SonyWebKit2020Retrospective created by Jon Davis
3:10 PM MovingWebKittoGit edited by Jon Davis
(diff)
3:10 PM November 2020 Meeting edited by Jon Davis
(diff)
3:09 PM MovingWebKittoGit edited by Jon Davis
(diff)
3:08 PM MovingWebKittoGit created by Jon Davis
3:05 PM November 2020 Meeting edited by Jon Davis
(diff)
3:04 PM CollaborationonStandardsinJSCACross-OrganizationalUpdate created by Jon Davis
3:03 PM November 2020 Meeting edited by Jon Davis
(diff)
3:02 PM Changeset in webkit [271178] by Peng Liu
  • 12 edits in trunk

[Media in GPU Process][MSE] SourceBuffer fires update and updateend events before the coded frames are removed
https://bugs.webkit.org/show_bug.cgi?id=220334

Reviewed by Eric Carlson.

Source/WebCore:

Add a completion handler parameter to SourceBufferPrivate::removeCodedFrames(),
and the caller (SourceBuffer) will fire update and updateend events when
the completion handler is called.

No new tests. Fix failures of the following tests:

  • imported/w3c/web-platform-tests/media-source/mediasource-config-change-webm-v-framesize.html
  • imported/w3c/web-platform-tests/media-source/mediasource-config-change-mp4-av-audio-bitrate.html
  • imported/w3c/web-platform-tests/media-source/mediasource-config-change-mp4-av-video-bitrate.html
  • Modules/mediasource/SourceBuffer.cpp:

(WebCore::SourceBuffer::removeTimerFired):

  • platform/graphics/SourceBufferPrivate.cpp:

(WebCore::SourceBufferPrivate::removeCodedFrames):

  • platform/graphics/SourceBufferPrivate.h:

(WebCore::SourceBufferPrivate::removeCodedFrames):

Source/WebKit:

Update the IPC message RemoteSourceBufferProxy::RemoveCodedFrames to implement
SourceBufferPrivateRemote::removeCodedFrames().

  • GPUProcess/media/RemoteSourceBufferProxy.cpp:

(WebKit::RemoteSourceBufferProxy::removeCodedFrames):

  • GPUProcess/media/RemoteSourceBufferProxy.h:
  • GPUProcess/media/RemoteSourceBufferProxy.messages.in:
  • WebProcess/GPU/media/SourceBufferPrivateRemote.cpp:

(WebKit::SourceBufferPrivateRemote::removeCodedFrames):

  • WebProcess/GPU/media/SourceBufferPrivateRemote.h:

LayoutTests:

  • gpu-process/TestExpectations:
3:02 PM WebKitStandardsPositions edited by Jon Davis
(diff)
2:54 PM WebKitStandardsPositions created by Jon Davis
2:45 PM AngleforWebGL edited by Jon Davis
(diff)
2:42 PM Changeset in webkit [271177] by Jon Davis
  • 1 edit
    1 add in trunk/Websites/webkit.org

Limit failed login attempts on webkit.org blog
https://bugs.webkit.org/show_bug.cgi?id=220032

Reviewed by Timothy Hatcher.

  • wp-content/plugins/limit-logins.php: Added.
2:40 PM Changeset in webkit [271176] by Jon Davis
  • 1 edit
    1 add in trunk/Websites/webkit.org

Disable public APIs on webkit.org blog
https://bugs.webkit.org/show_bug.cgi?id=220028

Reviewed by Timothy Hatcher.

  • wp-content/plugins/disable-public-apis.php: Added.
2:39 PM FuzzingaWKWebView-basedBrowserSession created by Jon Davis
2:37 PM Changeset in webkit [271175] by Jon Davis
  • 1 edit
    1 add in trunk/Websites/webkit.org

Enforce strong password changes on webkit.org blog
https://bugs.webkit.org/show_bug.cgi?id=220027

Reviewed by Timothy Hatcher.

  • wp-content/plugins/strong-passwords.php: Added.
2:36 PM November 2020 Meeting edited by Jon Davis
(diff)
2:36 PM November 2020 Meeting edited by Jon Davis
(diff)
2:36 PM November 2020 Meeting edited by Jon Davis
(diff)
2:35 PM AngleforWebGL created by Jon Davis
2:30 PM Changeset in webkit [271174] by Ryan Haddad
  • 9 edits in trunk

Unreviewed, reverting r271169.

Caused
TestWebKitAPI.WebKit2.SpeechRecognitionErrorWhenStartingAudioCaptureOnDifferentPage
to time out on macOS.

Reverted changeset:

"Stop speech recognition if page becomes invisible"
https://bugs.webkit.org/show_bug.cgi?id=220073
https://trac.webkit.org/changeset/271169

2:28 PM AppleWebKitGoalsfor2021 created by Jon Davis
1:08 PM Changeset in webkit [271173] by Ryan Haddad
  • 2 edits in trunk/Tools

Unreviewed, revert part of r271158 to fix builtins generator tests.

  • Scripts/webkitpy/codegen/main.py:

(BuiltinsGeneratorTests.wrappers_builtin_test):

12:57 PM Changeset in webkit [271172] by Beth Dakin
  • 4 edits in trunk/Websites/browserbench.org

Remove non-inclusive language from copy of JetStream 2.0 in Websites/
https://bugs.webkit.org/show_bug.cgi?id=220257

Reviewed by Darin Adler.

  • JetStream2.0/code-load/inspector-payload.js:

(WebInspector.DOMNode.WebInspector.Resource.WebInspector.ConsoleMessageView.prototype._formatWithSubstitutionString.styleFormatter):
(WebInspector.DOMNode.WebInspector.Resource.WebInspector.ConsoleMessageView.prototype._formatWithSubstitutionString.isAllowlistedProperty):
(WebInspector.DOMNode.WebInspector.Resource.WebInspector.ConsoleMessageView.prototype._formatWithSubstitutionString.isWhitelistedProperty): Deleted.

  • JetStream2.0/web-tooling-benchmark/browser.js:
  • JetStream2.0/web-tooling-benchmark/cli.js:
12:37 PM Changeset in webkit [271171] by commit-queue@webkit.org
  • 22 edits in trunk/Source/WebKit

Make WebPage::ForceRepaint use CompletionHandler instead of VoidCallback
https://bugs.webkit.org/show_bug.cgi?id=212269

Patch by Alex Christensen <achristensen@webkit.org> on 2021-01-05
Reviewed by Chris Dumez.

Fix a few unsafe pointer uses along the way.
No change in behavior.

  • UIProcess/API/C/WKPage.cpp:

(WKPageForceRepaint):

  • UIProcess/ViewGestureController.cpp:

(WebKit::ViewGestureController::forceRepaintIfNeeded):

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::forceRepaint):

  • UIProcess/WebPageProxy.h:
  • UIProcess/ios/fullscreen/WKFullScreenWindowControllerIOS.mm:

(-[WKFullScreenWindowController enterFullScreen]):
(-[WKFullScreenWindowController _completedExitFullScreen]):

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

(-[WKFullScreenWindowController dealloc]):
(-[WKFullScreenWindowController finishedExitFullScreenAnimation:]):
(-[WKFullScreenWindowController completeFinishExitFullScreenAnimationAfterRepaint]):

  • WebProcess/WebPage/CoordinatedGraphics/DrawingAreaCoordinatedGraphics.cpp:

(WebKit::DrawingAreaCoordinatedGraphics::forceRepaintAsync):

  • WebProcess/WebPage/CoordinatedGraphics/DrawingAreaCoordinatedGraphics.h:
  • WebProcess/WebPage/CoordinatedGraphics/LayerTreeHost.cpp:

(WebKit::LayerTreeHost::layerFlushTimerFired):
(WebKit::LayerTreeHost::forceRepaintAsync):
(WebKit::LayerTreeHost::renderNextFrame):

  • WebProcess/WebPage/CoordinatedGraphics/LayerTreeHost.h:

(WebKit::LayerTreeHost::forceRepaintAsync):

  • WebProcess/WebPage/DrawingArea.h:

(WebKit::DrawingArea::forceRepaintAsync):

  • WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.h:
  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::forceRepaint):

  • WebProcess/WebPage/WebPage.h:
  • WebProcess/WebPage/WebPage.messages.in:
  • WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.h:
  • WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:

(WebKit::TiledCoreAnimationDrawingArea::forceRepaintAsync):

12:33 PM Changeset in webkit [271170] by Fujii Hironori
  • 7 edits in trunk

[WinCairo][curl] Enable CURLSSLOPT_NATIVE_CA flag to use system's CA certs instead of cacert.pem
https://bugs.webkit.org/show_bug.cgi?id=220258

Reviewed by Don Olmstead.

.:

Libcurl 7.71 added a new flag CURLSSLOPT_NATIVE_CA to use the
operating system's native CA store only for Windows. Use the flag
for WinCairo port.

  • Source/cmake/OptionsWinCairo.cmake: Bumped the minimum Curl version.

Source/WebCore:

  • PlatformFTW.cmake: Removed the code copying pem file.
  • PlatformWin.cmake: Ditto.
  • platform/network/curl/CurlContext.cpp:

(WebCore::CurlHandle::enableSSLForHost):
(WebCore::CurlHandle::enableHttp): Set CURLOPT_SSL_OPTIONS with CURLSSLOPT_NATIVE_CA.

  • platform/network/win/CurlSSLHandleWin.cpp:

(WebCore::CurlSSLHandle::platformInitialize):
(WebCore::getCACertPathEnv): Deleted.

12:24 PM Changeset in webkit [271169] by commit-queue@webkit.org
  • 9 edits in trunk

Stop speech recognition if page becomes invisible
https://bugs.webkit.org/show_bug.cgi?id=220073
<rdar://problem/72710704>

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

Source/WebKit:

We should not allow speech recognition on page invisible to user, because page may get content of captured audio
without user's notice. To do this, we should:

  1. deny speech recognition request on invisibile page
  2. abort ongoing speech recognition if page becomes invisible

API test: WebKit2.SpeechRecognitionPageBecomesInvisible

  • UIProcess/SpeechRecognitionPermissionManager.cpp:

(WebKit::SpeechRecognitionPermissionManager::continueProcessingRequest):

  • UIProcess/SpeechRecognitionServer.cpp:

(WebKit::SpeechRecognitionServer::abortForPageIsBecomingInvisible):

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

(WebKit::WebPageProxy::dispatchActivityStateChange):

  • UIProcess/WebProcessProxy.cpp:

(WebKit::WebProcessProxy::pageIsBecomingInvisible):

  • UIProcess/WebProcessProxy.h:

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/SpeechRecognition.mm:

(TestWebKitAPI::TEST):

12:13 PM Changeset in webkit [271168] by ysuzuki@apple.com
  • 41 edits
    1 move
    3 adds in trunk

[WASM] [BigInt] Add I64 to BigInt conversion
https://bugs.webkit.org/show_bug.cgi?id=213528

Reviewed by Michael Saboff.

JSTests:

  • wasm/function-tests/function-import-return-value.js:

(assert.truthy):
(assert.throws):
(assert.eq):

  • wasm/function-tests/i64-conversion.js: Renamed from JSTests/wasm/function-tests/i64-from-js-exceptions.js.

(assert.eq.instance.exports.foo.valueOf):

  • wasm/js-api/global-error.js:
  • wasm/stress/i64-call.js: Added.

(async test):

  • wasm/stress/i64-extract.js: Added.

(testI64):

  • wasm/stress/immutable-globals.js:

(import.Builder.from.string_appeared_here.import.as.assert.from.string_appeared_here.i.assert.eq):

  • wasm/stress/multi-value-i64.js: Added.

(async test):

  • wasm/stress/mutable-globals.js:

LayoutTests/imported/w3c:

  • web-platform-tests/wasm/jsapi/constructor/instantiate-bad-imports.any-expected.txt:
  • web-platform-tests/wasm/jsapi/constructor/instantiate-bad-imports.any.worker-expected.txt:
  • web-platform-tests/wasm/jsapi/constructor/instantiate.any-expected.txt:
  • web-platform-tests/wasm/jsapi/constructor/instantiate.any.worker-expected.txt:
  • web-platform-tests/wasm/jsapi/global/constructor.any-expected.txt:
  • web-platform-tests/wasm/jsapi/global/constructor.any.worker-expected.txt:
  • web-platform-tests/wasm/jsapi/global/value-get-set.any-expected.txt:
  • web-platform-tests/wasm/jsapi/global/value-get-set.any.worker-expected.txt:
  • web-platform-tests/wasm/jsapi/instance/constructor-bad-imports.any-expected.txt:
  • web-platform-tests/wasm/jsapi/instance/constructor-bad-imports.any.worker-expected.txt:
  • web-platform-tests/wasm/jsapi/instance/constructor.any-expected.txt:
  • web-platform-tests/wasm/jsapi/instance/constructor.any.worker-expected.txt:
  • web-platform-tests/wasm/webapi/instantiateStreaming-bad-imports.any-expected.txt:
  • web-platform-tests/wasm/webapi/instantiateStreaming-bad-imports.any.worker-expected.txt:
  • web-platform-tests/wasm/webapi/instantiateStreaming.any-expected.txt:
  • web-platform-tests/wasm/webapi/instantiateStreaming.any.worker-expected.txt:

Source/JavaScriptCore:

This patch implements i64 to BigInt / BigInt to i64 support in WebAssembly to expose i64 features to JS.

  1. Arguments of exposed wasm functions can have i64.
  2. Returned values of exposed wasm functions can have i64.
  3. WebAssembly.Global can expose i64 value to JS.

Currently, we do not support fast JS->Wasm IC for wasm functions including i64 arguments. But this should be supported later
in https://bugs.webkit.org/show_bug.cgi?id=220053.

  • jsc.cpp:

(JSC_DEFINE_HOST_FUNCTION):

  • runtime/BigIntConstructor.cpp:

(JSC::JSC_DEFINE_HOST_FUNCTION):
(JSC::toBigInt): Deleted.

  • runtime/BigIntConstructor.h:
  • runtime/JSBigInt.cpp:

(JSC::JSBigInt::toBigUInt64Heap):

  • runtime/JSBigInt.h:
  • runtime/JSCJSValue.cpp:

(JSC::JSValue::toBigInt const):
(JSC::JSValue::toBigInt64 const):
(JSC::JSValue::toBigUInt64 const):

  • runtime/JSCJSValue.h:
  • wasm/WasmExceptionType.h:
  • wasm/WasmGlobal.cpp:

(JSC::Wasm::Global::get const):
(JSC::Wasm::Global::set):

  • wasm/WasmGlobal.h:
  • wasm/WasmOperations.cpp:

(JSC::Wasm::JSC_DEFINE_JIT_OPERATION):

  • wasm/WasmOperations.h:
  • wasm/js/JSToWasm.cpp:

(JSC::Wasm::marshallJSResult):
(JSC::Wasm::createJSToWasmWrapper):
(JSC::Wasm::boxWasmResult): Deleted.

  • wasm/js/WasmToJS.cpp:

(JSC::Wasm::wasmToJS):
(JSC::Wasm::handleBadI64Use): Deleted.

  • wasm/js/WebAssemblyFunction.cpp:

(JSC::JSC_DEFINE_HOST_FUNCTION):
(JSC::WebAssemblyFunction::jsCallEntrypointSlow):

  • wasm/js/WebAssemblyGlobalConstructor.cpp:

(JSC::JSC_DEFINE_HOST_FUNCTION):

  • wasm/js/WebAssemblyGlobalPrototype.cpp:

(JSC::JSC_DEFINE_HOST_FUNCTION):

  • wasm/js/WebAssemblyModuleRecord.cpp:

(JSC::WebAssemblyModuleRecord::link):

12:09 PM Changeset in webkit [271167] by Ryan Haddad
  • 2 edits in trunk/Source/WebCore

Unreviewed, reverting r271025.

Breaks internal builds

Reverted changeset:

"Copy Localizable.strings file into the correct directory"
https://bugs.webkit.org/show_bug.cgi?id=220029
https://trac.webkit.org/changeset/271025

12:00 PM Changeset in webkit [271166] by Chris Fleizach
  • 3 edits
    2 adds in trunk

AX: aria-orientation is ignored on input[type="range"]
https://bugs.webkit.org/show_bug.cgi?id=220222
<rdar://problem/72765547>

Reviewed by Zalan Bujtas.

Source/WebCore:

Check aria-orientation on range sliders.

Test: accessibility/mac/range-orientation.html

  • accessibility/AccessibilitySlider.cpp:

(WebCore::AccessibilitySlider::orientation const):

LayoutTests:

  • accessibility/mac/range-orientation.html: Added.
12:00 PM Changeset in webkit [271165] by dino@apple.com
  • 1 edit in trunk/LayoutTests/platform/mac-wk2/fast/dom/navigator-detached-no-crash-expected.txt

Rebaseline test now that WebXR is enabled.
rdar://72565503

  • platform/mac-wk2/fast/dom/navigator-detached-no-crash-expected.txt:
11:53 AM Changeset in webkit [271164] by Alexey Shvayka
  • 3 edits
    3 adds in trunk

We should have a DFG intrinsic for the construct case of the Object constructor
https://bugs.webkit.org/show_bug.cgi?id=155591

Reviewed by Yusuke Suzuki.

JSTests:

  • microbenchmarks/new-object-no-expected-function.js: Added.
  • stress/call-object-constructor-with-new.js: Added.
  • stress/dfg-builtin-constructor-cross-realm.js: Added.

Source/JavaScriptCore:

Given that a) ObjectConstructor behaves identically for Call? and Construct? with itself
as NewTarget [1] and b) handleConstantInternalFunction() returns early if NewTarget is altered,
this patch simply removes CodeForCall guard.

While new Object() is already optimized via BytecodeGenerator::emitExpectedFunctionSnippet(),
this change is a 4x speedup for rather rare usages like new window.Object().

[1]: https://tc39.es/ecma262/#sec-object-value (step 1)

  • dfg/DFGByteCodeParser.cpp:

(JSC::DFG::ByteCodeParser::handleConstantInternalFunction):

11:17 AM Changeset in webkit [271163] by aboya@igalia.com
  • 3 edits in trunk/Source/WebCore

[GStreamer] Use Ref<> in AudioTrackPrivateGStreamer::create()
https://bugs.webkit.org/show_bug.cgi?id=220324

Reviewed by Philippe Normand.

create() should return Ref<> when the return value can't be null.

This is a cleanup with no functional changes.

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

(WebCore::MediaPlayerPrivateGStreamer::notifyPlayerOfAudio):

10:44 AM Changeset in webkit [271162] by achristensen@apple.com
  • 13 edits in trunk/Source/WebKit

Use sendWithAsyncReply instead of ValidateCommandCallback
https://bugs.webkit.org/show_bug.cgi?id=220124

Reviewed by Chris Dumez.

  • UIProcess/API/C/WKPage.cpp:

(WKPageValidateCommand):

  • UIProcess/Cocoa/WebViewImpl.mm:

(WebKit::WebViewImpl::validateUserInterfaceItem):

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

(WebKit::WebPageProxy::validateCommand):
(WebKit::WebPageProxy::validateCommandCallback): Deleted.

  • UIProcess/WebPageProxy.h:
  • UIProcess/WebPageProxy.messages.in:
  • UIProcess/WebProcessPool.cpp:

(WebKit::WebProcessPool::~WebProcessPool):

  • UIProcess/WebProcessPool.h:
  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::validateCommand):

  • WebProcess/WebPage/WebPage.h:
  • WebProcess/WebPage/WebPage.messages.in:
10:43 AM Changeset in webkit [271161] by ap@apple.com
  • 2 edits in trunk/Tools

Revert part of https://trac.webkit.org/r271158
Update root level scripts in Tools/Scripts to Python 3

  • Scripts/make-dist: This also needed print_function.
10:41 AM Changeset in webkit [271160] by achristensen@apple.com
  • 8 edits in trunk/Source/WebKit

Use sendWithAsyncReply instead of FontAttributesCallback
https://bugs.webkit.org/show_bug.cgi?id=220123

Reviewed by Chris Dumez.

  • UIProcess/Cocoa/WebViewImpl.mm:

(WebKit::WebViewImpl::typingAttributesWithCompletionHandler):

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::requestFontAttributesAtSelectionStart):
(WebKit::WebPageProxy::fontAttributesCallback): Deleted.

  • UIProcess/WebPageProxy.h:
  • UIProcess/WebPageProxy.messages.in:
  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::requestFontAttributesAtSelectionStart):

  • WebProcess/WebPage/WebPage.h:
  • WebProcess/WebPage/WebPage.messages.in:
10:38 AM Changeset in webkit [271159] by ap@apple.com
  • 2 edits in trunk/Tools

Revert part of https://trac.webkit.org/r271158
Update root level scripts in Tools/Scripts to Python 3

  • Scripts/extract-dependencies-from-makefile: This print_function import

was necessary, the build is broken without it.

10:33 AM Changeset in webkit [271158] by ap@apple.com
  • 50 edits in trunk/Tools

Remove some unused variables from webkitpy
https://bugs.webkit.org/show_bug.cgi?id=220180

Reviewed by Aakash Jain, Sam Weinig and Jonathan Bedard.

  • Scripts/webkitpy/benchmark_runner/webdriver_benchmark_runner.py:
  • Scripts/webkitpy/benchmark_runner/webserver_benchmark_runner.py:
  • Scripts/webkitpy/codegen/main.py:
  • Scripts/webkitpy/common/checkout/changelog.py:
  • Scripts/webkitpy/common/checkout/checkout.py:
  • Scripts/webkitpy/common/checkout/scm/git.py:
  • Scripts/webkitpy/common/checkout/scm/svn.py:
  • Scripts/webkitpy/common/config/committers.py:
  • Scripts/webkitpy/common/config/contributionareas.py:
  • Scripts/webkitpy/common/message_pool.py:
  • Scripts/webkitpy/common/net/buildbot/buildbot.py:
  • Scripts/webkitpy/common/net/credentials.py:
  • Scripts/webkitpy/common/system/crashlogs.py:
  • Scripts/webkitpy/common/system/executive.py:
  • Scripts/webkitpy/common/system/profiler.py:
  • Scripts/webkitpy/common/system/user.py:
  • Scripts/webkitpy/generate_xcfilelists_lib/application.py:
  • Scripts/webkitpy/generate_xcfilelists_lib/generators.py:
  • Scripts/webkitpy/layout_tests/controllers/manager.py:
  • Scripts/webkitpy/layout_tests/controllers/single_test_runner.py:
  • Scripts/webkitpy/layout_tests/servers/apache_http_server.py:
  • Scripts/webkitpy/layout_tests/servers/http_server.py:
  • Scripts/webkitpy/layout_tests/views/buildbot_results.py:
  • Scripts/webkitpy/layout_tests/views/metered_stream.py:
  • Scripts/webkitpy/performance_tests/perftest.py:
  • Scripts/webkitpy/port/device_port.py:
  • Scripts/webkitpy/port/factory.py:
  • Scripts/webkitpy/port/leakdetector_valgrind.py:
  • Scripts/webkitpy/port/server_process.py:
  • Scripts/webkitpy/style/checkers/js.py:
  • Scripts/webkitpy/tool/bot/layouttestresultsreader.py:
  • Scripts/webkitpy/tool/bot/patchanalysistask.py:
  • Scripts/webkitpy/tool/bot/queueengine.py:
  • Scripts/webkitpy/tool/commands/download.py:
  • Scripts/webkitpy/tool/commands/earlywarningsystem.py:
  • Scripts/webkitpy/tool/commands/queues.py:
  • Scripts/webkitpy/tool/commands/suggestnominations.py:
  • Scripts/webkitpy/tool/commands/upload.py:
  • Scripts/webkitpy/tool/multicommandtool.py:
  • Scripts/webkitpy/tool/servers/rebaselineserver.py:
  • Scripts/webkitpy/tool/steps/commit.py:
  • Scripts/webkitpy/tool/steps/confirmdiff.py:
  • Scripts/webkitpy/tool/steps/haslanded.py:
  • Scripts/webkitpy/tool/steps/preparechangelog.py:
  • Scripts/webkitpy/tool/steps/promptforbugortitle.py:
  • Scripts/webkitpy/tool/steps/sortxcodeprojectfiles.py:
  • Scripts/webkitpy/tool/steps/suggestreviewers_unittest.py:
  • Scripts/webkitpy/w3c/test_exporter.py:
  • Scripts/webkitpy/xcode/simulated_device.py:
10:18 AM Changeset in webkit [271157] by Truitt Savell
  • 2 edits in trunk/LayoutTests

[ Big Sur ] fast/images/webp-as-image.html is failing
https://bugs.webkit.org/show_bug.cgi?id=220330

unreviewed test gardening.

  • platform/mac/TestExpectations:
10:17 AM Changeset in webkit [271156] by commit-queue@webkit.org
  • 8 edits in trunk/Source/WebKit

Use sendWithAsyncReply instead of RectForCharacterRangeCallback
https://bugs.webkit.org/show_bug.cgi?id=220125

Patch by Alex Christensen <achristensen@webkit.org> on 2021-01-05
Reviewed by Chris Dumez.

  • UIProcess/Cocoa/WebViewImpl.mm:

(WebKit::WebViewImpl::firstRectForCharacterRange):

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::firstRectForCharacterRangeAsync):
(WebKit::WebPageProxy::rectForCharacterRangeCallback): Deleted.

  • UIProcess/WebPageProxy.h:
  • UIProcess/WebPageProxy.messages.in:
  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::firstRectForCharacterRangeAsync):

  • WebProcess/WebPage/WebPage.h:
  • WebProcess/WebPage/WebPage.messages.in:
10:16 AM Changeset in webkit [271155] by Truitt Savell
  • 2 edits in trunk/LayoutTests

[ Big Sur ] fast/images/webp-as-image.html is failing
https://bugs.webkit.org/show_bug.cgi?id=220330

unreviewed test gardening.

  • platform/mac/TestExpectations:
10:16 AM Changeset in webkit [271154] by commit-queue@webkit.org
  • 18 edits
    1 add in trunk

Fail speech recognition when page is muted for audio capture
https://bugs.webkit.org/show_bug.cgi?id=220133
<rdar://problem/72745232>

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

Source/WebCore:

API test: WebKit2.SpeechRecognitionErrorWhenStartingAudioCaptureOnDifferentPage

  • Modules/speech/SpeechRecognitionCaptureSource.cpp:

(WebCore::SpeechRecognitionCaptureSource::mute):

  • Modules/speech/SpeechRecognitionCaptureSource.h:
  • Modules/speech/SpeechRecognitionCaptureSourceImpl.cpp:

(WebCore::SpeechRecognitionCaptureSourceImpl::mute):

  • Modules/speech/SpeechRecognitionCaptureSourceImpl.h:
  • Modules/speech/SpeechRecognizer.h:

(WebCore::SpeechRecognizer::source):

Source/WebKit:

We currently only allow one page to capture media at a time and we did this by muting (stop capture in) other
pages. To make speech recognition work with this behavior, two changes are made:

  1. when page is muted, mute audio capture source used for speech recognition on the page. This will

ultimately fail recognition.

  1. when speech recognition is about to start, make sure other pages are muted for capture.
  • UIProcess/SpeechRecognitionPermissionManager.h:

(WebKit::SpeechRecognitionPermissionManager::page):

  • UIProcess/SpeechRecognitionServer.cpp:

(WebKit::SpeechRecognitionServer::handleRequest):
(WebKit::SpeechRecognitionServer::mute):

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

(WebKit::UserMediaProcessManager::muteCaptureMediaStreamsExceptIn): Deleted.

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

(WebKit::WebPageProxy::activateMediaStreamCaptureInPage):
(WebKit::WebPageProxy::setMuted):

  • UIProcess/WebProcessProxy.cpp:

(WebKit::WebProcessProxy::muteCaptureInPagesExcept):
(WebKit::WebProcessProxy::pageMutedStateChanged):

  • UIProcess/WebProcessProxy.h:

Tools:

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

(-[SpeechRecognitionPermissionUIDelegate _webView:requestMediaCaptureAuthorization:decisionHandler:]):
(-[SpeechRecognitionPermissionUIDelegate _webView:checkUserMediaPermissionForURL:mainFrameURL:frameIdentifier:decisionHandler:]):
(TestWebKitAPI::TEST):

  • TestWebKitAPI/Tests/WebKitCocoa/speechrecognition-basic.html: Added.
10:15 AM Changeset in webkit [271153] by achristensen@apple.com
  • 17 edits in trunk/Source

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

Reviewed by Darin Adler.

Source/WebCore:

The former is more resistent to using a raw pointer after the object has been freed.

  • inspector/PageDebugger.cpp:

(WebCore::PageDebugger::setJavaScriptPaused):

  • page/CaptionUserPreferences.cpp:

(WebCore::CaptionUserPreferences::currentPage const):
(WebCore::CaptionUserPreferences::userPrefersCaptions const):
(WebCore::CaptionUserPreferences::setUserPrefersCaptions):
(WebCore::CaptionUserPreferences::userPrefersSubtitles const):
(WebCore::CaptionUserPreferences::setUserPrefersSubtitles):
(WebCore::CaptionUserPreferences::userPrefersTextDescriptions const):
(WebCore::CaptionUserPreferences::setUserPrefersTextDescriptions):
(WebCore::CaptionUserPreferences::updateCaptionStyleSheetOverride):

  • page/FrameTree.cpp:

(WebCore::FrameTree::find const):

  • page/PageGroup.cpp:

(WebCore::PageGroup::addPage):
(WebCore::PageGroup::removePage):
(WebCore::PageGroup::captionPreferencesChanged):

  • page/PageGroup.h:

(WebCore::PageGroup::pages const):
(WebCore::PageGroup:: const): Deleted.

  • page/PageGroupLoadDeferrer.cpp:

(WebCore::PageGroupLoadDeferrer::PageGroupLoadDeferrer):

  • page/UserContentProvider.cpp:

(WebCore::UserContentProvider::~UserContentProvider):
(WebCore::UserContentProvider::addPage):
(WebCore::UserContentProvider::removePage):
(WebCore::UserContentProvider::registerForUserMessageHandlerInvalidation):
(WebCore::UserContentProvider::unregisterForUserMessageHandlerInvalidation):
(WebCore::UserContentProvider::invalidateAllRegisteredUserMessageHandlerInvalidationClients):
(WebCore::UserContentProvider::invalidateInjectedStyleSheetCacheInAllFramesInAllPages):

  • page/UserContentProvider.h:
  • page/VisitedLinkStore.cpp:

(WebCore::VisitedLinkStore::~VisitedLinkStore):
(WebCore::VisitedLinkStore::addPage):
(WebCore::VisitedLinkStore::removePage):
(WebCore::VisitedLinkStore::invalidateStylesForAllLinks):
(WebCore::VisitedLinkStore::invalidateStylesForLink):

  • page/VisitedLinkStore.h:
  • plugins/PluginInfoProvider.cpp:

(WebCore::PluginInfoProvider::~PluginInfoProvider):
(WebCore::PluginInfoProvider::clearPagesPluginData):
(WebCore::PluginInfoProvider::refresh):
(WebCore::PluginInfoProvider::addPage):
(WebCore::PluginInfoProvider::removePage):

  • plugins/PluginInfoProvider.h:
  • storage/StorageEventDispatcher.cpp:

(WebCore::StorageEventDispatcher::dispatchLocalStorageEvents):
(WebCore::StorageEventDispatcher::dispatchLocalStorageEventsToFrames):

Source/WebKit:

  • WebProcess/InjectedBundle/InjectedBundle.cpp:

(WebKit::InjectedBundle::setAsynchronousSpellCheckingEnabled):
(WebKit::InjectedBundle::setUserStyleSheetLocation):
(WebKit::InjectedBundle::liveDocumentURLs):

  • WebProcess/WebStorage/StorageAreaMap.cpp:

(WebKit::StorageAreaMap::dispatchLocalStorageEvent):

10:08 AM Changeset in webkit [271152] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

REGRESSION: http/tests/inspector/network/resource-timing.html is a flaky failure
https://bugs.webkit.org/show_bug.cgi?id=220127

Reviewed by Alex Christensen.

  • http/tests/inspector/network/resource-timing.html: Ignore an

internal inspector error as was done in r270137.

9:59 AM Changeset in webkit [271151] by ap@apple.com
  • 29 edits in trunk/Tools

Update root level scripts in Tools/Scripts to Python 3
https://bugs.webkit.org/show_bug.cgi?id=220200

Reviewed by Darin Adler and Jonathan Bedard.

Mostly 2to3 inspired.

  • Scripts/check-for-global-bss-symbols-in-webkitgtk-libs:
  • Scripts/check-for-invalid-symbols-in-version-script:
  • Scripts/check-for-platform-layering-violations:
  • Scripts/clean-webkit:
  • Scripts/compare-results:
  • Scripts/compare-webkit-configurations:
  • Scripts/download-github-release.py:
  • Scripts/dump-webkit-tests-run:
  • Scripts/export-w3c-performance-wg-tests:
  • Scripts/extract-dependencies-from-makefile:
  • Scripts/extract-localizable-strings:
  • Scripts/find-duplicate-files:
  • Scripts/ic-stats.py:
  • Scripts/import-w3c-performance-wg-tests:
  • Scripts/make-dist:
  • Scripts/malloc-tree:
  • Scripts/mark-jsc-stress-test:
  • Scripts/open-layout-test:
  • Scripts/read-checksum-from-png:
  • Scripts/rebase-patch-after-webkit-move:
  • Scripts/run-gtk-tests:
  • Scripts/run-webdriver-tests:
  • Scripts/run-wpe-tests:
  • Scripts/sampstat:
  • Scripts/sync-feature-defines:
  • Scripts/sync-master-with-upstream:
  • Scripts/update-wasm-gcc-torture.py:
  • Scripts/validate-committer-lists:
9:55 AM Changeset in webkit [271150] by youenn@apple.com
  • 3 edits
    7 deletes 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.

  • Source/webrtc/build_overrides: Removed.
  • Source/webrtc/modules/audio_device/android: Removed.
  • Source/webrtc/rtc_base/win: Removed.
  • Source/webrtc/sdk/android: Removed.
  • Source/webrtc/tools_webrtc/msan: Removed.
  • Source/webrtc/tools_webrtc/ubsan: Removed.
  • Source/webrtc/tools_webrtc/vim: Removed.
9:47 AM Changeset in webkit [271149] by commit-queue@webkit.org
  • 8 edits in trunk/Source/WebKit

Use sendWithAsyncReply instead of SelectionContextCallback
https://bugs.webkit.org/show_bug.cgi?id=220121

Patch by Alex Christensen <achristensen@webkit.org> on 2021-01-05
Reviewed by Chris Dumez.

  • UIProcess/WebPageProxy.h:
  • UIProcess/WebPageProxy.messages.in:
  • UIProcess/ios/WKContentViewInteraction.mm:

(-[WKContentView _lookupForWebView:]):
(-[WKContentView requestDictationContext:]):

  • UIProcess/ios/WebPageProxyIOS.mm:

(WebKit::WebPageProxy::requestDictationContext):
(WebKit::WebPageProxy::getSelectionContext):
(WebKit::WebPageProxy::selectionContextCallback): Deleted.

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

(WebKit::WebPage::getSelectionContext):
(WebKit::WebPage::requestDictationContext):

9:33 AM Changeset in webkit [271148] by Andres Gonzalez
  • 2 edits in trunk/Source/WebCore

AXIsolatedObject::doAXStringForRange must return an isolatedCopy.
https://bugs.webkit.org/show_bug.cgi?id=220327

Reviewed by Chris Fleizach.

Fix oversight in doAXStringForRange that needs to return an isolatedCopy
from the main thread.
Ssame fix for caching the documentURI and documentEncoding in the
initialization of AXIsolatedObjects.

  • accessibility/isolatedtree/AXIsolatedObject.cpp:

(WebCore::AXIsolatedObject::initializeAttributeData):
(WebCore::AXIsolatedObject::doAXStringForRange const):

9:15 AM Changeset in webkit [271147] by youenn@apple.com
  • 6 edits in trunk

Enable WebRTC codecs in GPU process only for --use-gpu-process option
https://bugs.webkit.org/show_bug.cgi?id=220316

Reviewed by Alexey Proskuryakov.

Source/WebKit:

ADD C SPI used by TestController.
Manually tested.

  • UIProcess/API/C/WKPreferences.cpp:

(WKPreferencesSetWebRTCPlatformCodecsInGPUProcessEnabled):
(WKPreferencesGetWebRTCPlatformCodecsInGPUProcessEnabled):

  • UIProcess/API/C/WKPreferencesRefPrivate.h:

Tools:

  • Scripts/webkitpy/layout_tests/run_webkit_tests.py:

(parse_args):
Enable WebRTC codecs in GPU process experimental feature in gpu process mode.

  • WebKitTestRunner/TestController.cpp:

(WTR::TestController::resetPreferencesToConsistentValues):
By default, disable WebRTC codecs in GPU process experimental feature.

5:39 AM Changeset in webkit [271146] by Manuel Rego Casasnovas
  • 8 edits
    2 adds in trunk

[selectors] :focus should match inside the focus event
https://bugs.webkit.org/show_bug.cgi?id=220243

Reviewed by Frédéric Wang.

LayoutTests/imported/w3c:

Import focus-in-focus-event-001.html test from WPT.
Rebaseline 2 tests:

  • focus-autofocus.html now passes after fixing this bug.
  • focus-visible-005.html now fails, but it was passing because it was not checking anything due to this bug.
  • web-platform-tests/css/selectors/focus-in-focus-event-001-expected.txt: Added.
  • web-platform-tests/css/selectors/focus-in-focus-event-001.html: Added.
  • web-platform-tests/css/selectors/focus-visible-005-expected.txt: Rebaseline.
  • web-platform-tests/css/selectors/w3c-import.log:
  • web-platform-tests/html/semantics/selectors/pseudo-classes/focus-autofocus-expected.txt: Rebaesline.

Source/WebCore:

Before this patch this was working different in WebKit than Chromium and Firefox.
The specs are clear about the expected behavior for this:

A similar fix has been done on Blink in r201118 by <kochi@chromium.org>
(https://chromium.googlesource.com/chromium/src/+/cc49a6966f5ae6d89e86fbd3f53e4deea4e066ca).

Test: imported/w3c/web-platform-tests/css/selectors/focus-in-focus-event-001.html

  • dom/Document.cpp:

(WebCore::Document::setFocusedElement): Just moved the call to m_focusedElement->setFocus(true)
right before dispatching the events.

LayoutTests:

depend on the platform.
This issue has been fixed upstream in https://github.com/web-platform-tests/wpt/pull/27041
and these tests will be re-imported and unskipped in a follow-up patch.

2:17 AM Changeset in webkit [271145] by commit-queue@webkit.org
  • 5 edits
    1 add in trunk

[WASM-References] Added few unreached-invalid tests
https://bugs.webkit.org/show_bug.cgi?id=220311

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

JSTests:

Added unreached-invalid tests and fix error messages in existing tests.

  • wasm.yaml:
  • wasm/js-api/global-error.js:
  • wasm/references-spec-tests/unreached-invalid.wast.js: Added.

Source/JavaScriptCore:

Add semantic checks for parsing unreachable for the following intructions:
local.get/set.tee, global.get/set, br/br_if and call.

  • wasm/WasmFunctionParser.h:

(JSC::Wasm::FunctionParser<Context>::parseIndexForLocal):
(JSC::Wasm::FunctionParser<Context>::parseIndexForGlobal):
(JSC::Wasm::FunctionParser<Context>::parseFunctionIndex):
(JSC::Wasm::FunctionParser<Context>::parseBranchTarget):
(JSC::Wasm::FunctionParser<Context>::parseExpression):
(JSC::Wasm::FunctionParser<Context>::parseUnreachableExpression):

Note: See TracTimeline for information about the timeline view.