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

Timeline



Apr 12, 2021:

11:11 PM Changeset in webkit [275865] by calvaris@igalia.com
  • 3 edits in trunk/LayoutTests

[GTK] media/track/text-track-cue-is-reachable.html is flaky crashing in X11 release
https://bugs.webkit.org/show_bug.cgi?id=210370

Unreviewed.

  • platform/gtk-wayland/TestExpectations:
  • platform/gtk/TestExpectations: Unflagged test.
11:11 PM Changeset in webkit [275864] by Fujii Hironori
  • 24 edits in trunk/LayoutTests

[WinCairo] Unreviewed test gardening

  • platform/wincairo-wk1/TestExpectations:
  • platform/wincairo-wk1/http/tests/security/401-logout/401-logout-expected.txt:
  • platform/wincairo/TestExpectations:
  • platform/wincairo/css1/text_properties/vertical_align-expected.txt:
  • platform/wincairo/css1/text_properties/word_spacing-expected.txt:
  • platform/wincairo/css2.1/t100801-c544-valgn-03-d-agi-expected.txt:
  • platform/wincairo/css2.1/t1602-c546-txt-align-00-b-expected.txt:
  • platform/wincairo/fast/css-generated-content/after-duplicated-after-split-expected.txt:
  • platform/wincairo/fast/css/child-style-can-override-visited-style-expected.txt:
  • platform/wincairo/fast/css/input-search-padding-expected.txt:
  • platform/wincairo/fast/css/word-space-extra-expected.txt:
  • platform/wincairo/fast/dom/HTMLProgressElement/progress-element-expected.txt:
  • platform/wincairo/fast/inline-block/003-expected.txt:
  • platform/wincairo/fast/text/basic/012-expected.txt:
  • platform/wincairo/fast/text/basic/013-expected.txt:
  • platform/wincairo/fast/text/basic/015-expected.txt:
  • platform/wincairo/fast/text/text-letter-spacing-expected.txt:
  • platform/wincairo/fast/text/textIteratorNilRenderer-expected.txt:
  • platform/wincairo/fast/text/wbr-expected.txt:
  • platform/wincairo/fast/text/whitespace/018-expected.txt:
  • platform/wincairo/fast/text/whitespace/span-in-word-space-causes-overflow-expected.txt:
  • platform/wincairo/fonts/sans-serif-expected.txt:
  • platform/wincairo/fonts/serif-expected.txt:
10:58 PM Changeset in webkit [275863] by calvaris@igalia.com
  • 2 edits in trunk/LayoutTests

[GStreamer] media/media-source/media-source-seek-back.html is flaky crashing with 3 kinds of traces
https://bugs.webkit.org/show_bug.cgi?id=210528

Unreviewed.

  • platform/glib/TestExpectations: Unflagged test.
10:57 PM Changeset in webkit [275862] by calvaris@igalia.com
  • 2 edits in trunk/LayoutTests

[GTK] webrtc/video-update-often.html is flaky crashing
https://bugs.webkit.org/show_bug.cgi?id=210360

Unreviewed.

  • platform/gtk-wayland/TestExpectations: Unflag test, it's

passing.

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

[CoreIPC] Crash in logDiagnosticMessage code
https://bugs.webkit.org/show_bug.cgi?id=224390

Patch by Julian Gonzalez <julian_a_gonzalez@apple.com> on 2021-04-12
Reviewed by Chris Dumez.

Source/WebKit:

Create new WebPageProxy::logDiagnosticMessage APIs designed to be called on messages that
need sanity checking, and hook that up to IPC handlers (while leaving existing APIs
for all other callers).

Test: ipc/analytics-logger-crash.html

  • NetworkProcess/NetworkSession.cpp:

(WebKit::NetworkSession::logDiagnosticMessageWithValue):

  • UIProcess/ProvisionalPageProxy.cpp:

(WebKit::ProvisionalPageProxy::logDiagnosticMessageFromWebProcess):
(WebKit::ProvisionalPageProxy::logDiagnosticMessageWithEnhancedPrivacyFromWebProcess):
(WebKit::ProvisionalPageProxy::logDiagnosticMessageWithValueDictionaryFromWebProcess):
(WebKit::ProvisionalPageProxy::didReceiveMessage):

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

(WebKit::WebPageProxy::logDiagnosticMessageFromWebProcess):
(WebKit::WebPageProxy::logDiagnosticMessageWithResultFromWebProcess):
(WebKit::WebPageProxy::logDiagnosticMessageWithValueFromWebProcess):
(WebKit::WebPageProxy::logDiagnosticMessageWithEnhancedPrivacyFromWebProcess):
(WebKit::WebPageProxy::logDiagnosticMessageWithValueDictionaryFromWebProcess):
(WebKit::WebPageProxy::logDiagnosticMessageWithDomainFromWebProcess):

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

(WebKit::WebDiagnosticLoggingClient::logDiagnosticMessage):
(WebKit::WebDiagnosticLoggingClient::logDiagnosticMessageWithResult):
(WebKit::WebDiagnosticLoggingClient::logDiagnosticMessageWithValue):
(WebKit::WebDiagnosticLoggingClient::logDiagnosticMessageWithEnhancedPrivacy):
(WebKit::WebDiagnosticLoggingClient::logDiagnosticMessageWithValueDictionary):
(WebKit::WebDiagnosticLoggingClient::logDiagnosticMessageWithDomain):

LayoutTests:

Add a test for this crasher.

  • ipc/analytics-logger-crash-expected.txt: Added.
  • ipc/analytics-logger-crash.html: Added.
9:43 PM Changeset in webkit [275860] by mark.lam@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

Interpreter::executeProgram() should install its VMEntryScope at the top.
https://bugs.webkit.org/show_bug.cgi?id=224450
rdar://76530841

Reviewed by Yusuke Suzuki.

"top" includes before any VM code that can throw exceptions is run.

  • interpreter/Interpreter.cpp:

(JSC::Interpreter::executeProgram):

9:19 PM Changeset in webkit [275859] by rniwa@webkit.org
  • 4 edits in trunk/Source/WebCore

TextManipulationController should use weak pointers to Node
https://bugs.webkit.org/show_bug.cgi?id=215913

Reviewed by Wenson Hsieh.

Use WeakHashSet for m_manipulatedTextsWithNewContent, m_textNodesWithNewRenderer, and m_manipulatedNodes.

Also made TextManipulationController::removeNode take Node& instead of Node*.

  • dom/Node.cpp:

(WebCore::Node::~Node):
(WebCore::Node::moveNodeToNewDocument):

  • editing/TextManipulationController.cpp:

(WebCore::TextManipulationController::observeParagraphs):
(WebCore::TextManipulationController::didCreateRendererForElement):
(WebCore::TextManipulationController::didUpdateContentForText):
(WebCore::TextManipulationController::didCreateRendererForTextNode):
(WebCore::TextManipulationController::scheduleObservationUpdate):
(WebCore::TextManipulationController::replace):
(WebCore::TextManipulationController::removeNode):

  • editing/TextManipulationController.h:
7:25 PM Changeset in webkit [275858] by don.olmstead@sony.com
  • 3 edits
    2 deletes in trunk/Source/WebCore

Remove GraphicsContextGLOpenGLPrivate
https://bugs.webkit.org/show_bug.cgi?id=224446

Reviewed by Myles C. Maxfield.

GraphicsContextGLOpenGLPrivate is dead code. It requires AppleWin to turn on WebGL which
it does not. This removes all references to it.

  • platform/graphics/opengl/GraphicsContextGLOpenGL.h:
  • platform/graphics/opengl/GraphicsContextGLOpenGLES.cpp:

(WebCore::GraphicsContextGLOpenGL::create): Deleted.
(WebCore::GraphicsContextGLOpenGL::GraphicsContextGLOpenGL): Deleted.
(WebCore::GraphicsContextGLOpenGL::~GraphicsContextGLOpenGL): Deleted.
(WebCore::GraphicsContextGLOpenGL::setContextLostCallback): Deleted.
(WebCore::GraphicsContextGLOpenGL::setErrorMessageCallback): Deleted.
(WebCore::GraphicsContextGLOpenGL::makeContextCurrent): Deleted.
(WebCore::GraphicsContextGLOpenGL::checkGPUStatus): Deleted.
(WebCore::GraphicsContextGLOpenGL::isGLES2Compliant const): Deleted.
(WebCore::GraphicsContextGLOpenGL::platformLayer const): Deleted.

  • platform/graphics/opengl/GraphicsContextGLOpenGLPrivate.cpp: Removed.
  • platform/graphics/opengl/GraphicsContextGLOpenGLPrivate.h: Removed.
7:06 PM Changeset in webkit [275857] by Peng Liu
  • 9 edits in trunk/Source/WebKitLegacy/mac

Fix some issues hidden by unified build
https://bugs.webkit.org/show_bug.cgi?id=224457

Reviewed by Eric Carlson.

Some small fixes and clean-up. The issues are hidden by the unified build mechanism
and were found in a local build.

  • DOM/DOMTokenList.mm:
  • Plugins/WebPluginController.mm:
  • WebCoreSupport/WebFrameLoaderClient.h:
  • WebView/WebDataSource.mm:
  • WebView/WebFrameView.mm:
  • WebView/WebHTMLViewInternal.h:
  • WebView/WebImmediateActionController.mm:
  • WebView/WebPDFView.mm:
7:04 PM Changeset in webkit [275856] by Ross Kirsling
  • 6 edits
    1 add in trunk/Source/JavaScriptCore

ICU 69 deprecates ubrk_safeClone in favor of ubrk_clone
https://bugs.webkit.org/show_bug.cgi?id=224093

Reviewed by Yusuke Suzuki.

In a shining example of "disappointing library practices", ICU 69 deprecates ubrk_safeClone in favor of
a new *draft* API ubrk_clone, meaning that no function with this functionality is exposed by default.

This patch introduces a function cloneUBreakIterator to abstract over this change; however, since we need to:

  1. confine the effects of disabling U_HIDE_DRAFT_API to a non-unified implementation file
  2. still be able to include ubrk.h from IntlSegmenter.h to instantiate ICUDeleter<ubrk_close> (*not* clone!)

...the new helper function is introduced in a *headerless* implementation file, IntlWorkaround.cpp.

  • JavaScriptCore.xcodeproj/project.pbxproj:
  • Sources.txt:
  • runtime/IntlSegmenter.cpp:

(JSC::IntlSegmenter::segment const):

  • runtime/IntlSegmenter.h:
  • runtime/IntlSegments.cpp:

(JSC::IntlSegments::createSegmentIterator):

  • runtime/IntlWorkaround.cpp: Added.

(JSC::cloneUBreakIterator):

6:25 PM Changeset in webkit [275855] by commit-queue@webkit.org
  • 20 edits in trunk

Unreviewed, reverting r275793.
https://bugs.webkit.org/show_bug.cgi?id=224466

Caused crashes on <http://facebook.com|facebook.com>

Reverted changeset:

"calc() simplification for a multiplication should apply the
multiplication to each value of an addition"
https://bugs.webkit.org/show_bug.cgi?id=224376
https://trac.webkit.org/changeset/275793

6:06 PM Changeset in webkit [275854] by basuke.suzuki@sony.com
  • 2 edits in trunk/Source/WTF

[PlayStation] Enable WTFCrashWithInfo implementation
https://bugs.webkit.org/show_bug.cgi?id=224458

Reviewed by Don Olmstead.

Enable WTFCrashWithInfo implementation for PlayStation platform. It is x86_64 and uses clang
so that it can share Darwin's implemetation with us.

  • wtf/Assertions.cpp:
5:48 PM Changeset in webkit [275853] by aakash_jain@apple.com
  • 5 edits in trunk/Tools

Make Commit Queue robust by adding few git commands to clean up repository
https://bugs.webkit.org/show_bug.cgi?id=224444

Reviewed by Jonathan Bedard.

  • CISupport/ews-build/steps.py:

(CleanGitRepo): Build step to run few commands to cleanup git repository.
(CleanGitRepo.run):
(CleanGitRepo.getResultSummary): Custom failure message.

  • CISupport/ews-build/steps_unittest.py: Added unit-tests.
  • CISupport/ews-build/factories.py:

(CommitQueueFactory.init):

  • CISupport/ews-build/factories_unittest.py:

(TestCommitQueueFactory.test_commit_queue_factory): Updated unit-test.

5:47 PM Changeset in webkit [275852] by Alan Bujtas
  • 2 edits in trunk/Source/WebCore

Unreviewed, reverting r275761.

Caused InlineBox invalidation bugs.

Reverted changeset:

"[RenderTreeBuilder] Cleanup the inline box wrappers when
moving subtrees"
https://bugs.webkit.org/show_bug.cgi?id=224342
https://commits.webkit.org/r275761

5:45 PM Changeset in webkit [275851] by Robert Jenner
  • 2 edits in trunk/LayoutTests

[ BigSur wk2 arm64 ] 4 webrtc/ Layout-tests are consistently timing out
https://bugs.webkit.org/show_bug.cgi?id=223043

Uneviewed test gardening.

  • platform/mac/TestExpectations: Adding crash to test expectations while test is under review.
5:36 PM Changeset in webkit [275850] by don.olmstead@sony.com
  • 4 edits in trunk/Source/JavaScriptCore

Inspector code is wrongly including some private headers
https://bugs.webkit.org/show_bug.cgi?id=224456

Reviewed by Alex Christensen.

These files were including some headers using #include <JavaScriptCore/Foo.h> style instead
of "Foo.h" style. This caused a build error when attempting to revive the Mac CMake build
since those headers were private and private headers are generated after the JavaScriptCore
build. No other ports were have ENABLE_INSPECTOR_ALTERNATE_DISPATCHERS turned on so the
issue hadn't manifested until now.

  • API/JSContextRefInspectorSupport.h:
  • inspector/augmentable/AlternateDispatchableAgent.h:
  • inspector/augmentable/AugmentableInspectorController.h:
5:33 PM Changeset in webkit [275849] by Chris Gambrell
  • 177 edits
    5 moves
    19 adds
    18 deletes in trunk/LayoutTests

[LayoutTests] Convert http/tests/security convert PHP to Python
https://bugs.webkit.org/show_bug.cgi?id=222668
<rdar://problem/74993152>

Reviewed by Jonathan Bedard.

  • TestExpectations:
  • http/tests/blink/sendbeacon/connect-src-beacon-allowed.html:
  • http/tests/contentextensions/block-cookies-in-csp-report.py:
  • http/tests/css/resources/webfont-request.py:

(get_request_count): Deleted.
(set_request_count): Deleted.

  • http/tests/local/script-crossorigin-loads-file-scheme.html:
  • http/tests/media/resources/serve_video.py: Added.

(answering):

  • http/tests/resources/portabilityLayer.py:

(get_cookies): Add trailing newline.
(get_request): PHP equivalent of $_REQUEST which is used by numerous scripts.
(get_count): Added trailing newline.
(get_state): Added trailing newline.
(set_state): Changed open file's name to prevent confusion with parameter.
(step_state): Added trailing newline.

  • http/tests/security/401-logout/401-logout-expected.txt:
  • http/tests/security/401-logout/401-logout.php: Removed.
  • http/tests/security/401-logout/401-logout.py: Added.
  • http/tests/security/canvas-remote-read-remote-video-allowed-anonymous.html:
  • http/tests/security/canvas-remote-read-remote-video-allowed-with-credentials.html:
  • http/tests/security/canvas-remote-read-remote-video-blocked-no-crossorigin.html:
  • http/tests/security/contentSecurityPolicy/1.1/frame-ancestors/frame-ancestors-in-report-only-ignored.html:
  • http/tests/security/contentSecurityPolicy/1.1/frame-ancestors/report-frame-ancestors-cross-origin-expected.txt:
  • http/tests/security/contentSecurityPolicy/1.1/frame-ancestors/report-frame-ancestors-cross-origin-https-expected.txt:
  • http/tests/security/contentSecurityPolicy/1.1/frame-ancestors/report-frame-ancestors-cross-origin-https.html:
  • http/tests/security/contentSecurityPolicy/1.1/frame-ancestors/report-frame-ancestors-cross-origin.html:
  • http/tests/security/contentSecurityPolicy/1.1/frame-ancestors/report-frame-ancestors-same-origin-expected.txt:
  • http/tests/security/contentSecurityPolicy/1.1/frame-ancestors/report-frame-ancestors-same-origin-https-expected.txt:
  • http/tests/security/contentSecurityPolicy/1.1/frame-ancestors/report-frame-ancestors-same-origin-https.html:
  • http/tests/security/contentSecurityPolicy/1.1/frame-ancestors/report-frame-ancestors-same-origin.html:
  • http/tests/security/contentSecurityPolicy/1.1/report-uri-effective-directive-expected.txt:
  • http/tests/security/contentSecurityPolicy/1.1/report-uri-effective-directive.py:
  • http/tests/security/contentSecurityPolicy/1.1/resources/testScriptHash.php: Removed.
  • http/tests/security/contentSecurityPolicy/1.1/resources/testScriptHash.py: Added.
  • http/tests/security/contentSecurityPolicy/1.1/script-blocked-sends-multiple-reports-expected.txt:
  • http/tests/security/contentSecurityPolicy/1.1/script-blocked-sends-multiple-reports.py:
  • http/tests/security/contentSecurityPolicy/1.1/scripthash-allowed-by-enforced-policy-and-blocked-by-report-policy-expected.txt:
  • http/tests/security/contentSecurityPolicy/1.1/scripthash-allowed-by-enforced-policy-and-blocked-by-report-policy.py:
  • http/tests/security/contentSecurityPolicy/1.1/scripthash-allowed-by-enforced-policy-and-blocked-by-report-policy2-expected.txt:
  • http/tests/security/contentSecurityPolicy/1.1/scripthash-allowed-by-enforced-policy-and-blocked-by-report-policy2.py:
  • http/tests/security/contentSecurityPolicy/1.1/scripthash-allowed-by-legacy-enforced-policy-and-blocked-by-report-policy-expected.txt:
  • http/tests/security/contentSecurityPolicy/1.1/scripthash-allowed-by-legacy-enforced-policy-and-blocked-by-report-policy.py:
  • http/tests/security/contentSecurityPolicy/1.1/scripthash-allowed-by-legacy-enforced-policy-and-blocked-by-report-policy2-expected.txt:
  • http/tests/security/contentSecurityPolicy/1.1/scripthash-allowed-by-legacy-enforced-policy-and-blocked-by-report-policy2.py:
  • http/tests/security/contentSecurityPolicy/1.1/scripthash-blocked-by-enforced-policy-and-allowed-by-report-policy-expected.txt:
  • http/tests/security/contentSecurityPolicy/1.1/scripthash-blocked-by-enforced-policy-and-allowed-by-report-policy.py:
  • http/tests/security/contentSecurityPolicy/1.1/scripthash-blocked-by-legacy-enforced-policy-and-allowed-by-report-policy.py:
  • http/tests/security/contentSecurityPolicy/1.1/scripthash-blocked-by-legacy-enforced-policy-and-blocked-by-report-policy-expected.txt:
  • http/tests/security/contentSecurityPolicy/1.1/scripthash-blocked-by-legacy-enforced-policy-and-blocked-by-report-policy.py:
  • http/tests/security/contentSecurityPolicy/1.1/scripthash-blocked-by-legacy-enforced-policy-and-blocked-by-report-policy2-expected.txt:
  • http/tests/security/contentSecurityPolicy/1.1/scripthash-blocked-by-legacy-enforced-policy-and-blocked-by-report-policy2.py:
  • http/tests/security/contentSecurityPolicy/1.1/scripthash-tests.html:
  • http/tests/security/contentSecurityPolicy/1.1/scriptnonce-allowed-by-enforced-policy-and-blocked-by-report-policy.py:
  • http/tests/security/contentSecurityPolicy/1.1/scriptnonce-allowed-by-enforced-policy-and-blocked-by-report-policy2.py:
  • http/tests/security/contentSecurityPolicy/1.1/scriptnonce-allowed-by-legacy-enforced-policy-and-blocked-by-report-policy.py:
  • http/tests/security/contentSecurityPolicy/1.1/scriptnonce-allowed-by-legacy-enforced-policy-and-blocked-by-report-policy2.py:
  • http/tests/security/contentSecurityPolicy/1.1/scriptnonce-blocked-by-enforced-policy-and-allowed-by-report-policy-expected.txt:
  • http/tests/security/contentSecurityPolicy/1.1/scriptnonce-blocked-by-enforced-policy-and-allowed-by-report-policy.py:
  • http/tests/security/contentSecurityPolicy/1.1/scriptnonce-blocked-by-legacy-enforced-policy-and-allowed-by-report-policy.py:
  • http/tests/security/contentSecurityPolicy/1.1/scriptnonce-blocked-by-legacy-enforced-policy-and-blocked-by-report-policy.py:
  • http/tests/security/contentSecurityPolicy/1.1/scriptnonce-blocked-by-legacy-enforced-policy-and-blocked-by-report-policy2.py:
  • http/tests/security/contentSecurityPolicy/block-all-mixed-content/insecure-css-in-iframe-report-only-expected.txt:
  • http/tests/security/contentSecurityPolicy/block-all-mixed-content/resources/frame-with-insecure-css-report-only.py:
  • http/tests/security/contentSecurityPolicy/connect-src-beacon-allowed.html:
  • http/tests/security/contentSecurityPolicy/connect-src-beacon-blocked-expected.txt:
  • http/tests/security/contentSecurityPolicy/connect-src-beacon-blocked.html:
  • http/tests/security/contentSecurityPolicy/eval-allowed-in-report-only-mode-and-sends-report-expected.txt:
  • http/tests/security/contentSecurityPolicy/eval-allowed-in-report-only-mode-and-sends-report.py:
  • http/tests/security/contentSecurityPolicy/eval-blocked-and-sends-report-expected.txt:
  • http/tests/security/contentSecurityPolicy/eval-blocked-and-sends-report.html:
  • http/tests/security/contentSecurityPolicy/report-and-enforce-expected.txt:
  • http/tests/security/contentSecurityPolicy/report-and-enforce.py:
  • http/tests/security/contentSecurityPolicy/report-blocked-data-uri-expected.txt:
  • http/tests/security/contentSecurityPolicy/report-blocked-data-uri.py:
  • http/tests/security/contentSecurityPolicy/report-blocked-file-uri-expected.txt:
  • http/tests/security/contentSecurityPolicy/report-blocked-file-uri.py:
  • http/tests/security/contentSecurityPolicy/report-blocked-uri-and-do-not-follow-redirect-when-sending-report-expected.txt:
  • http/tests/security/contentSecurityPolicy/report-blocked-uri-and-do-not-follow-redirect-when-sending-report.py:
  • http/tests/security/contentSecurityPolicy/report-blocked-uri-cross-origin-expected.txt:
  • http/tests/security/contentSecurityPolicy/report-blocked-uri-cross-origin.py:
  • http/tests/security/contentSecurityPolicy/report-blocked-uri-expected.txt:
  • http/tests/security/contentSecurityPolicy/report-blocked-uri.py:
  • http/tests/security/contentSecurityPolicy/report-cross-origin-no-cookies-expected.txt:
  • http/tests/security/contentSecurityPolicy/report-cross-origin-no-cookies-when-private-browsing-enabled-expected.txt:
  • http/tests/security/contentSecurityPolicy/report-cross-origin-no-cookies-when-private-browsing-enabled.py:
  • http/tests/security/contentSecurityPolicy/report-cross-origin-no-cookies-when-private-browsing-toggled-expected.txt:
  • http/tests/security/contentSecurityPolicy/report-cross-origin-no-cookies-when-private-browsing-toggled.php: Removed.
  • http/tests/security/contentSecurityPolicy/report-cross-origin-no-cookies-when-private-browsing-toggled.py: Added.
  • http/tests/security/contentSecurityPolicy/report-cross-origin-no-cookies.py:
  • http/tests/security/contentSecurityPolicy/report-document-uri-after-blocked-redirect.html:
  • http/tests/security/contentSecurityPolicy/report-multiple-violations-01.php: Removed.
  • http/tests/security/contentSecurityPolicy/report-multiple-violations-01.py: Added.
  • http/tests/security/contentSecurityPolicy/report-multiple-violations-02.php: Removed.
  • http/tests/security/contentSecurityPolicy/report-multiple-violations-02.py: Added.
  • http/tests/security/contentSecurityPolicy/report-only-connect-src-beacon-redirect-blocked-expected.txt:
  • http/tests/security/contentSecurityPolicy/report-only-connect-src-beacon-redirect-blocked.php: Removed.
  • http/tests/security/contentSecurityPolicy/report-only-connect-src-beacon-redirect-blocked.py: Added.
  • http/tests/security/contentSecurityPolicy/report-only-connect-src-xmlhttprequest-redirect-to-blocked.php: Removed.
  • http/tests/security/contentSecurityPolicy/report-only-connect-src-xmlhttprequest-redirect-to-blocked.py: Added.
  • http/tests/security/contentSecurityPolicy/report-only-expected.txt:
  • http/tests/security/contentSecurityPolicy/report-only-from-header-expected.txt:
  • http/tests/security/contentSecurityPolicy/report-only-from-header.py:
  • http/tests/security/contentSecurityPolicy/report-only-upgrade-insecure-expected.txt:
  • http/tests/security/contentSecurityPolicy/report-only-upgrade-insecure.py:
  • http/tests/security/contentSecurityPolicy/report-only.py:
  • http/tests/security/contentSecurityPolicy/report-same-origin-no-cookies-when-private-browsing-toggled-expected.txt:
  • http/tests/security/contentSecurityPolicy/report-same-origin-no-cookies-when-private-browsing-toggled.py:
  • http/tests/security/contentSecurityPolicy/report-same-origin-with-cookies-expected.txt:
  • http/tests/security/contentSecurityPolicy/report-same-origin-with-cookies-when-private-browsing-enabled-expected.txt:
  • http/tests/security/contentSecurityPolicy/report-same-origin-with-cookies-when-private-browsing-enabled.py:
  • http/tests/security/contentSecurityPolicy/report-same-origin-with-cookies.py:
  • http/tests/security/contentSecurityPolicy/report-status-code-zero-when-using-https-expected.txt:
  • http/tests/security/contentSecurityPolicy/report-status-code-zero-when-using-https.html:
  • http/tests/security/contentSecurityPolicy/report-uri-expected.txt:
  • http/tests/security/contentSecurityPolicy/report-uri-from-child-frame-expected.txt:
  • http/tests/security/contentSecurityPolicy/report-uri-from-child-frame.html:
  • http/tests/security/contentSecurityPolicy/report-uri-from-inline-javascript-expected.txt:
  • http/tests/security/contentSecurityPolicy/report-uri-from-inline-javascript.py:
  • http/tests/security/contentSecurityPolicy/report-uri-from-javascript-expected.txt:
  • http/tests/security/contentSecurityPolicy/report-uri-from-javascript.py:
  • http/tests/security/contentSecurityPolicy/report-uri-in-meta-tag-ignored.html:
  • http/tests/security/contentSecurityPolicy/report-uri-scheme-relative-expected.txt:
  • http/tests/security/contentSecurityPolicy/report-uri-scheme-relative.py:
  • http/tests/security/contentSecurityPolicy/report-uri.py:
  • http/tests/security/contentSecurityPolicy/resources/echo-report.php: Removed.
  • http/tests/security/contentSecurityPolicy/resources/echo-report.py: Added.
  • http/tests/security/contentSecurityPolicy/resources/generate-csp-report.php: Removed.
  • http/tests/security/contentSecurityPolicy/resources/generate-csp-report.py: Added.
  • http/tests/security/contentSecurityPolicy/resources/go-to-echo-report.js:

(window.onload):

  • http/tests/security/contentSecurityPolicy/resources/go-to-echo-report.py:
  • http/tests/security/contentSecurityPolicy/resources/image-document-default-src-none-iframe.py:
  • http/tests/security/contentSecurityPolicy/resources/redir.php: Removed.
  • http/tests/security/contentSecurityPolicy/resources/report-file-path.php: Removed.
  • http/tests/security/contentSecurityPolicy/resources/report_file_path.py: Added.
  • http/tests/security/contentSecurityPolicy/resources/save-report-and-redirect-to-save-report.php: Removed.
  • http/tests/security/contentSecurityPolicy/resources/save-report-and-redirect-to-save-report.py: Added.
  • http/tests/security/contentSecurityPolicy/resources/save-report.php: Removed.
  • http/tests/security/contentSecurityPolicy/resources/save-report.py: Added.
  • http/tests/security/contentSecurityPolicy/resources/save_report.py: Added.

(not_being_called):
(save_report):

  • http/tests/security/contentSecurityPolicy/resources/worker.php: Removed.
  • http/tests/security/contentSecurityPolicy/resources/worker.py: Added.
  • http/tests/security/contentSecurityPolicy/resources/xhr-redirect-not-allowed.py:
  • http/tests/security/contentSecurityPolicy/same-origin-plugin-document-blocked-in-child-window-report-expected.txt:
  • http/tests/security/contentSecurityPolicy/same-origin-plugin-document-blocked-in-child-window-report.py:
  • http/tests/security/contentSecurityPolicy/worker-connect-src-allowed.html:
  • http/tests/security/contentSecurityPolicy/worker-connect-src-blocked.html:
  • http/tests/security/contentSecurityPolicy/worker-eval-blocked.html:
  • http/tests/security/contentSecurityPolicy/worker-function-function-blocked.html:
  • http/tests/security/contentSecurityPolicy/worker-importscripts-blocked.html:
  • http/tests/security/contentSecurityPolicy/worker-multiple-csp-headers.html:
  • http/tests/security/contentSecurityPolicy/worker-script-src.html:
  • http/tests/security/contentSecurityPolicy/worker-set-timeout-blocked.html:
  • http/tests/security/contentSecurityPolicy/worker-without-own-csp.html:
  • http/tests/security/contentSecurityPolicy/xmlhttprequest-protected-resource-does-not-crash.html:
  • http/tests/security/cookies/cookies-wrong-domain-rejected-result.php: Removed.
  • http/tests/security/cookies/cookies-wrong-domain-rejected-result.py: Added.
  • http/tests/security/cookies/cookies-wrong-domain-rejected.py:
  • http/tests/security/cookies/resources/first-party-cookie-allow.xsl:
  • http/tests/security/cookies/resources/set-a-cookie.php: Removed.
  • http/tests/security/cookies/resources/set-a-cookie.py: Added.
  • http/tests/security/cookies/resources/third-party-cookie-blocking.xsl:
  • http/tests/security/cookies/third-party-cookie-blocking-main-frame.html:
  • http/tests/security/cookies/third-party-cookie-blocking-user-action.html:
  • http/tests/security/cookies/third-party-cookie-blocking.html:
  • http/tests/security/credentials-from-different-domains.html:
  • http/tests/security/credentials-iframes-allowCrossOriginSubresourcesToAskForCredentials-expected.txt:
  • http/tests/security/credentials-iframes-expected.txt:
  • http/tests/security/import-module-crossorigin-loads.html:
  • http/tests/security/import-script-crossorigin-loads-omit.html:
  • http/tests/security/isolatedWorld/bypass-main-world-csp-worker.html:
  • http/tests/security/module-crossorigin-error-event-information-expected.txt:
  • http/tests/security/module-crossorigin-error-event-information.html:
  • http/tests/security/module-crossorigin-loads-correctly-credentials.html:
  • http/tests/security/module-crossorigin-loads-omit.html:
  • http/tests/security/module-crossorigin-onerror-information-expected.txt:
  • http/tests/security/module-crossorigin-onerror-information.html:
  • http/tests/security/private-browsing-http-auth-expected.txt:
  • http/tests/security/private-browsing-http-auth.html:
  • http/tests/security/referrer-policy-header-expected.txt:
  • http/tests/security/referrer-policy-header.html:
  • http/tests/security/resources/basic-auth.php: Removed.
  • http/tests/security/resources/basic-auth.py: Added.
  • http/tests/security/resources/cors-basic-auth.php: Removed.
  • http/tests/security/resources/cors-basic-auth.py: Added.
  • http/tests/security/resources/cors-script.php: Removed.
  • http/tests/security/resources/cors-script.py: Added.
  • http/tests/security/resources/credentials-from-different-domains-continued-1.html:
  • http/tests/security/resources/credentials-from-different-domains-continued-2.html:
  • http/tests/security/resources/credentials-iframes-different-domain.html:
  • http/tests/security/resources/credentials-iframes-same-domain.html:
  • http/tests/security/resources/credentials-main-resource.py:
  • http/tests/security/resources/import-module-crossorigin-loads-src.js:
  • http/tests/security/resources/reference-movie-cross-origin-allow.php: Removed.
  • http/tests/security/resources/reference-movie-cross-origin-allow.py: Added.
  • http/tests/security/resources/serve-referrer-policy-and-test.php: Removed.
  • http/tests/security/resources/serve-referrer-policy-and-test.py: Added.
  • http/tests/security/resources/video-cross-origin-allow-credentials.php: Removed.
  • http/tests/security/resources/video-cross-origin-allow-credentials.py: Added.
  • http/tests/security/resources/video-cross-origin-allow.php: Removed.
  • http/tests/security/resources/video-cross-origin-allow.py: Added.
  • http/tests/security/script-crossorigin-error-event-information-expected.txt:
  • http/tests/security/script-crossorigin-error-event-information.html:
  • http/tests/security/script-crossorigin-loads-correctly-credentials.html:
  • http/tests/security/script-crossorigin-loads-correctly.html:
  • http/tests/security/script-crossorigin-onerror-information-expected.txt:
  • http/tests/security/script-crossorigin-onerror-information.html:
  • http/tests/security/script-no-crossorigin-error-event-should-be-sanitized.html:
  • http/tests/security/script-no-crossorigin-onerror-should-be-sanitized.html:
  • http/tests/security/sync-xhr-partition.html:
  • http/tests/security/video-cross-origin-caching.html:
  • http/tests/security/video-cross-origin-readback.html:
  • http/tests/security/webaudio-render-remote-audio-allowed-crossorigin-redirect.html:
  • http/tests/security/webaudio-render-remote-audio-allowed-crossorigin.html:
  • http/tests/security/webaudio-render-remote-audio-blocked-no-crossorigin-redirect.html:
  • http/tests/security/webaudio-render-remote-audio-blocked-no-crossorigin.html:
  • http/tests/security/xssAuditor/report-script-tag-and-do-not-follow-redirect-when-sending-report-expected.txt:
  • http/tests/security/xssAuditor/report-script-tag-and-do-not-follow-redirect-when-sending-report.html:
  • http/tests/security/xssAuditor/report-script-tag-expected.txt:
  • http/tests/security/xssAuditor/report-script-tag-full-block-and-do-not-follow-redirect-when-sending-report-expected.txt:
  • http/tests/security/xssAuditor/report-script-tag-full-block-and-do-not-follow-redirect-when-sending-report.html:
  • http/tests/security/xssAuditor/report-script-tag-full-block-expected.txt:
  • http/tests/security/xssAuditor/report-script-tag-replace-state-expected.txt:
  • http/tests/security/xssAuditor/resources/echo-intertag.pl:
  • http/tests/security/xssAuditor/resources/tag-with-pause.py:
  • http/tests/ssl/curl/certificate-and-authentication.html:
  • platform/mac-wk1/TestExpectations:
  • platform/mac-wk1/http/tests/security/contentSecurityPolicy/report-document-uri-after-blocked-redirect-expected.txt:
  • platform/win/TestExpectations:
  • platform/win/http/tests/security/contentSecurityPolicy/report-document-uri-after-blocked-redirect-expected.txt:
  • platform/wk2/TestExpectations:
  • platform/wk2/http/tests/security/contentSecurityPolicy/block-all-mixed-content/insecure-css-in-iframe-report-only-expected.txt:
5:14 PM Changeset in webkit [275848] by Robert Jenner
  • 2 edits in trunk/LayoutTests

[ BigSur Debug wk2 ARM64 ] webrtc/disable-encryption.html is a flakey timeout
https://bugs.webkit.org/show_bug.cgi?id=224463

Unreviewed test gardening.

  • platform/mac-wk2/TestExpectations: Updating test expectations to Pass Timeout while test is reviewed.
4:54 PM Changeset in webkit [275847] by jiewen_tan@apple.com
  • 2 edits in trunk/Source/WebKit

Force the WebAuthn compatible mode to always show UI
https://bugs.webkit.org/show_bug.cgi?id=224402
<rdar://75757362>

Reviewed by Brent Fulgham.

Covered by manual tests.

  • UIProcess/WebAuthentication/Cocoa/LocalConnection.mm:

(WebKit::LocalConnection::verifyUser):

4:43 PM Changeset in webkit [275846] by sihui_liu@apple.com
  • 8 edits in trunk/Source/WebKit

Create WebIDBServer only when it is needed
https://bugs.webkit.org/show_bug.cgi?id=224305
rdar://71962196

Reviewed by Alex Christensen.

Currently each WebIDBServer has a separate thread, so we don't want to create or keep WebIDBServer if it's not
in use. There are two cases where network process needs a WebIDBServer:

  1. handle requests from UI process to collect or remove data
  2. handle requests from Web process to perform IDB operations

Previously, we created a WebIDBServer when network process connects to a web process, but that does not mean web
process will perform IDB operations and we may create a thread that's not used. To avoid this, add a new message
AddIDBConnection for web process to ensure network process has WebIDBServer when it's about to perform operation.

Also, previously network process removes a WebIDBServer when session is removed and WebIDBServer is not binded
with any web process connection. Now we remove WebIDBServer when it's done handling requests, that is count of
pending requests from UI process is 0 and WebIDBServer is not binded with web process connection. We also remove
WebIDBServer at when network process is about to be destroyed (NetworkProcess::didClose) so we can break the
reference cycle of NetworkProcess-WebIDBServer-IDBServer, and make sure thread exits.

  • NetworkProcess/IndexedDB/WebIDBServer.cpp:

(WebKit::WebIDBServer::create):
(WebKit::WebIDBServer::WebIDBServer):
(WebKit::m_closeCallback):
(WebKit::WebIDBServer::~WebIDBServer):
(WebKit::WebIDBServer::getOrigins):
(WebKit::WebIDBServer::closeAndDeleteDatabasesModifiedSince):
(WebKit::WebIDBServer::closeAndDeleteDatabasesForOrigins):
(WebKit::WebIDBServer::renameOrigin):
(WebKit::WebIDBServer::removeConnection):
(WebKit::WebIDBServer::close):
(WebKit::WebIDBServer::tryClose):

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

(WebKit::NetworkConnectionToWebProcess::addIDBConnection):

  • NetworkProcess/NetworkConnectionToWebProcess.h:
  • NetworkProcess/NetworkConnectionToWebProcess.messages.in:
  • NetworkProcess/NetworkProcess.cpp:

(WebKit::NetworkProcess::didClose):
(WebKit::NetworkProcess::createNetworkConnectionToWebProcess):
(WebKit::NetworkProcess::destroySession):
(WebKit::NetworkProcess::createWebIDBServer):
(WebKit::NetworkProcess::connectionToWebProcessClosed):
(WebKit::NetworkProcess::removeWebIDBServerIfPossible): Deleted. Move the removal code to WebIDBServer.

  • WebProcess/Databases/IndexedDB/WebIDBConnectionToServer.cpp:

(WebKit::WebIDBConnectionToServer::WebIDBConnectionToServer):

4:14 PM Changeset in webkit [275845] by BJ Burg
  • 12 edits in trunk/Source

Modernize uses of ConsoleClient
https://bugs.webkit.org/show_bug.cgi?id=224398

Reviewed by David Kilzer.

ConsoleClient acts like a delegate, so its callers
should be using weak references to it.

Source/JavaScriptCore:

  • inspector/JSGlobalObjectInspectorController.cpp:

(Inspector::JSGlobalObjectInspectorController::consoleClient const):

  • inspector/JSGlobalObjectInspectorController.h:
  • runtime/ConsoleClient.h:
  • runtime/ConsoleObject.cpp:

(JSC::consoleLogWithLevel):
(JSC::JSC_DEFINE_HOST_FUNCTION):

  • runtime/JSGlobalObject.cpp:

(JSC::JSGlobalObject::init):
(JSC::JSGlobalObject::setConsoleClient):

  • runtime/JSGlobalObject.h:

(JSC::JSGlobalObject::consoleClient const):
(JSC::JSGlobalObject::setConsoleClient): Deleted.

Source/WebCore:

  • bindings/js/ScriptCachedFrameData.cpp:

(WebCore::ScriptCachedFrameData::restore):

  • bindings/js/ScriptController.cpp:

(WebCore::ScriptController::initScriptForWindowProxy):

  • bindings/js/WindowProxy.cpp:

(WebCore::WindowProxy::setDOMWindow):

  • workers/WorkerOrWorkletScriptController.cpp:

(WebCore::WorkerOrWorkletScriptController::initScriptWithSubclass):

4:12 PM Changeset in webkit [275844] by Alan Coon
  • 1 copy in tags/Safari-611.1.22.4.1

Tag Safari-611.1.22.4.1.

4:06 PM Changeset in webkit [275843] by Alan Coon
  • 8 edits in branches/safari-611.1.22.4-branch/Source

Versioning.

WebKit-7611.1.22.4.1

3:46 PM Changeset in webkit [275842] by Alan Coon
  • 1 copy in branches/safari-611.1.22.4-branch

New branch.

3:41 PM Changeset in webkit [275841] by commit-queue@webkit.org
  • 10 edits in trunk/Source/ThirdParty/ANGLE

REGRESSION (Metal ANGLE): [Catalina] 6 consistent WebGL failures / timeouts
https://bugs.webkit.org/show_bug.cgi?id=224016
<rdar://problem/76070325>

Patch by John Cunningham <johncunnigham@apple.com>
Patch by Dean Jackson <dino@apple.com> on 2021-04-12
Reviewed by Dean Jackson.

Implement a workaround for Intel GPUs where we explicitly type cast floating
point values to booleans. This is only needed for Catalina systems.

  • include/GLSLANG/ShaderLang.h:
  • include/platform/FeaturesMtl.h:
  • src/compiler/translator/TranslatorMetalDirect.cpp:

(sh::TranslatorMetalDirect::translateImpl):

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

(sh::Rewriter::Rewriter):
(sh::AddExplicitTypeCasts):

  • src/compiler/translator/TranslatorMetalDirect/AddExplicitTypeCasts.h:
  • src/compiler/translator/TranslatorMetalDirect/AstHelpers.cpp:

(sh::SubVector):
(sh::CoerceSimple):

  • src/compiler/translator/TranslatorMetalDirect/AstHelpers.h:
  • src/libANGLE/renderer/metal/DisplayMtl.mm:

(rx::DisplayMtl::initializeFeatures):

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

(rx::ShaderMtl::compile):

3:01 PM Changeset in webkit [275840] by ysuzuki@apple.com
  • 22 edits in trunk/Source/JavaScriptCore

[JSC] Do not copy StringSwitchJumpTable
https://bugs.webkit.org/show_bug.cgi?id=224414

Reviewed by Keith Miller.

Previously, we were copying UnlinkedStringJumpTable to CodeBlock's StringJumpTable because we embed CodeLocation pointer
inside CodeBlock's StringJumpTable. This is copying a mostly identical hashtable to each CodeBlock even in DFG and FTL. This
even prevents us from inlining op_switch_string in DFG and FTL because (1) we don't want to copy this string tables collected from
each inlined CodeBlock into a new DFG / FTL CodeBlock and (2) we cannot ref/deref StringImpl inside DFG / FTL compilers so copying
these tables in the compiler threads need additional "DesiredStringSwitchJumpTable" etc.

In this patch, we stop copying StringSwitchJumpTable. We decouple CodeLocation pointers from the hashtable so that we can use
UnlinkedStringJumpTable in UnlinkedCodeBlock. UnlinkedStringJumpTable's hashtable inclues m_indexInTable in each entry so that
we can have array of CodeLocation pointers in CodeBlock's JITData to have JIT jump targets separately. This design prevents us
from copying unnecessary hashtables, and even this paves the way to inlining switch_string in DFG and FTL.

  • bytecode/BytecodeDumper.cpp:

(JSC::CodeBlockBytecodeDumper<Block>::dumpStringSwitchJumpTables):

  • bytecode/CodeBlock.cpp:

(JSC::CodeBlock::finishCreation):
(JSC::CodeBlock::shrinkToFit):

  • bytecode/CodeBlock.h:

(JSC::CodeBlock::stringSwitchJumpTable):
(JSC::CodeBlock::numberOfUnlinkedStringSwitchJumpTables const):
(JSC::CodeBlock::unlinkedStringSwitchJumpTable):
(JSC::CodeBlock::numberOfStringSwitchJumpTables const): Deleted.

  • bytecode/JumpTable.h:

(JSC::StringJumpTable::ctiForValue const):
(JSC::StringJumpTable::offsetForValue): Deleted.
(JSC::StringJumpTable::ctiForValue): Deleted.
(JSC::StringJumpTable::clear): Deleted.

  • bytecode/PreciseJumpTargetsInlines.h:
  • bytecode/UnlinkedCodeBlock.h:

(JSC::UnlinkedStringJumpTable::offsetForValue const):
(JSC::UnlinkedCodeBlock::numberOfUnlinkedStringSwitchJumpTables const):
(JSC::UnlinkedCodeBlock::unlinkedStringSwitchJumpTable):
(JSC::UnlinkedStringJumpTable::offsetForValue): Deleted.
(JSC::UnlinkedCodeBlock::numberOfStringSwitchJumpTables const): Deleted.
(JSC::UnlinkedCodeBlock::stringSwitchJumpTable): Deleted.

  • bytecode/UnlinkedCodeBlockGenerator.cpp:

(JSC::UnlinkedCodeBlockGenerator::finalize):

  • bytecode/UnlinkedCodeBlockGenerator.h:

(JSC::UnlinkedCodeBlockGenerator::numberOfUnlinkedStringSwitchJumpTables const):
(JSC::UnlinkedCodeBlockGenerator::addUnlinkedStringSwitchJumpTable):
(JSC::UnlinkedCodeBlockGenerator::unlinkedStringSwitchJumpTable):
(JSC::UnlinkedCodeBlockGenerator::numberOfStringSwitchJumpTables const): Deleted.
(JSC::UnlinkedCodeBlockGenerator::addStringSwitchJumpTable): Deleted.
(JSC::UnlinkedCodeBlockGenerator::stringSwitchJumpTable): Deleted.

  • bytecompiler/BytecodeGenerator.cpp:

(JSC::BytecodeGenerator::beginSwitch):
(JSC::prepareJumpTableForStringSwitch):
(JSC::BytecodeGenerator::endSwitch):

  • dfg/DFGByteCodeParser.cpp:

(JSC::DFG::ByteCodeParser::parseBlock):

  • dfg/DFGJITCompiler.cpp:

(JSC::DFG::JITCompiler::link):

  • dfg/DFGOperations.cpp:

(JSC::DFG::JSC_DEFINE_JIT_OPERATION):

  • ftl/FTLLowerDFGToB3.cpp:

(JSC::FTL::DFG::LowerDFGToB3::switchStringSlow):

  • ftl/FTLOperations.cpp:

(JSC::FTL::JSC_DEFINE_JIT_OPERATION):

  • jit/JIT.cpp:

(JSC::JIT::link):

  • jit/JIT.h:

(JSC::SwitchRecord::SwitchRecord):

  • jit/JITOpcodes.cpp:

(JSC::JIT::emit_op_switch_string):

  • jit/JITOpcodes32_64.cpp:

(JSC::JIT::emit_op_switch_string):

  • jit/JITOperations.cpp:

(JSC::JSC_DEFINE_JIT_OPERATION):

  • llint/LLIntSlowPaths.cpp:

(JSC::LLInt::LLINT_SLOW_PATH_DECL):

  • runtime/CachedTypes.cpp:

(JSC::CachedStringJumpTable::encode):
(JSC::CachedStringJumpTable::decode const):
(JSC::CachedCodeBlockRareData::encode):
(JSC::CachedCodeBlockRareData::decode const):

2:28 PM Changeset in webkit [275839] by Chris Dumez
  • 2 edits in trunk/Source/WebKit

Make sure AuxiliaryProcessProxy::sendMessage() is called on the main thread
https://bugs.webkit.org/show_bug.cgi?id=224448

Reviewed by Geoffrey Garen.

Make sure AuxiliaryProcessProxy::sendMessage() is called on the main thread. This is a follow-up to
Bug 224377 but for trunk.

  • UIProcess/AuxiliaryProcessProxy.cpp:

(WebKit::AuxiliaryProcessProxy::sendMessage):
(WebKit::AuxiliaryProcessProxy::didFinishLaunching):
(WebKit::AuxiliaryProcessProxy::replyToPendingMessages):

2:28 PM Changeset in webkit [275838] by Chris Dumez
  • 9 edits
    4 adds in trunk

webaudio/AudioListener/audiolistener-set-position.html is leaking PannerNodes
https://bugs.webkit.org/show_bug.cgi?id=224399

Reviewed by Geoffrey Garen.

LayoutTests/imported/w3c:

Rebaseline existing WPT test. It is still passing but the exception message is different.

  • web-platform-tests/webaudio/the-audio-api/the-audiocontext-interface/audiocontext-suspend-resume-expected.txt:

Source/WebCore:

The test was leaking all its nodes and contexts due to several logic issues in our code.

Tests: webaudio/OfflineAudioContext/offlineaudiocontext-can-only-render-once.html

webaudio/OfflineAudioContext/offlineaudiocontext-leak-after-rendering-with-nodes.html

  • Modules/webaudio/AudioScheduledSourceNode.cpp:

(WebCore::AudioScheduledSourceNode::AudioScheduledSourceNode):
(WebCore::AudioScheduledSourceNode::virtualHasPendingActivity const):
(WebCore::AudioScheduledSourceNode::finish):

  • Modules/webaudio/AudioScheduledSourceNode.h:
  1. Stop using an ActiveDOMObject::PendingActivity to keep our wrapper alive as this was causing a reference cycle. PendingActivity keeps a ref to |this| and this is ref'ing the PendingActivity. 2 things could break the cycle:
    • finish() gets called but the audio context may go away without finish getting called.
    • didBecomeMarkedForDeletion() gets called. However, it was getting called from AudioNode::markNodeForDeletionIfNecessary(). This function would early return if m_normalRefCount is not 0. Here m_normalRefCount could NOT be 0, since PendingActity was ref'ing the Node.
  2. Instead of a PendingActivity, we now override ActiveDOMObject::virtualHasPendingActivity() to keep the wrapper alive. The behavior is the same since its return true when the state is not finished and the node has not been marked for deletion. However, I added a condition to make sure it starts returning false as soon as the context is closed. There is also no need to keep the JS wrapper alive if there is no 'ended' event listener.
  • Modules/webaudio/BaseAudioContext.cpp:

(WebCore::BaseAudioContext::lazyInitialize):
Early return if lazyInitialize() gets called for an audiocontext is closed. Nothing prevents JS from
creating an AudioNode after the AudioContext is closed. Constructing an AudioNode ends up lazy
initializing the audio context. In such case, we would already early return in release because if the
m_isAudioThreadFinished check. However, we would crash in debug because of the m_isAudioThreadFinished
ASSERT().

  • Modules/webaudio/BaseAudioContext.h:

Make clear() member function protected so it can get called by OfflineAudioContext when rendering is
complete.

  • Modules/webaudio/OfflineAudioContext.cpp:

(WebCore::OfflineAudioContext::uninitialize):
Stop rejecting the suspend promises when the OfflineAudioContext gets uninitialized. Previously this
would only happen on navigation so we did not notice the issue. However, the OfflineAudioContext now
gets uninitialized as soon as it is done rendering and rejecting those promises in this case would
start causing test failures.

(WebCore::OfflineAudioContext::didFinishOfflineRendering):

  • Stop clearing the m_didStartOfflineRendering flag when rendering is finished. This flag is called rendering started in the WebAudio specification [1]. As per the specification, it gets set to true in startRendering() and never gets reset to false. This means that an offline audio context cannot start rendering again once it is done rendering. I have added a layout test for this behavior change and verified that this test is passing is both Firefox and Chrome. [1] https://webaudio.github.io/web-audio-api/#dom-offlineaudiocontext-startrendering
  • Call uninitialize() and clear() when rendering has finished to clear as much memory as possible as soon as we can. This is acceptable because it is no longer possible to start rendering again once it's finished. Previously, uninitialize() / clear() would only happen when navigating away and when the document would get destroyed.

LayoutTests:

Add layout test coverage.

  • webaudio/OfflineAudioContext/offlineaudiocontext-can-only-render-once-expected.txt: Added.
  • webaudio/OfflineAudioContext/offlineaudiocontext-can-only-render-once.html: Added.
  • webaudio/OfflineAudioContext/offlineaudiocontext-leak-after-rendering-with-nodes-expected.txt: Added.
  • webaudio/OfflineAudioContext/offlineaudiocontext-leak-after-rendering-with-nodes.html: Added.
1:31 PM Changeset in webkit [275837] by Alan Bujtas
  • 2 edits in trunk/LayoutTests

ASSERTION FAILED: &layoutState().establishedFormattingState(layoutBox.formattingContextRoot()) == this in WebCore::Layout::FormattingState::boxGeometry
https://bugs.webkit.org/show_bug.cgi?id=219905
<rdar://problem/72350516>

The underlying issue (non-synchronized settings update) has been addressed by r275810.

Reviewed by Simon Fraser.

  • platform/mac-wk2/TestExpectations:
1:25 PM Changeset in webkit [275836] by Ruben Turcios
  • 1 copy in tags/Safari-612.1.10.2

Tag Safari-612.1.10.2.

12:38 PM Changeset in webkit [275835] by commit-queue@webkit.org
  • 19 edits
    6 copies
    3 adds in trunk/Source

Initial implementation of WebChromeClient::enumerateImmersiveXRDevices() and XRDeviceProxy
https://bugs.webkit.org/show_bug.cgi?id=224353

Patch by Ada Chan <ada.chan@apple.com> on 2021-04-12
Source/WebCore:

Reviewed by Dean Jackson.

Remove PlatformXRDeviceCocoa as WebKit::XRDeviceProxy will be implementing PlatformXR::Device.
Implement the encode/decode methods to enable PlatformXR::Device::FrameData to
be sent over IPC.

  • platform/xr/PlatformXR.h:

(PlatformXR::Device::trackingAndRenderingClient const):
(PlatformXR::Device::FrameData::FloatQuaternion::encode const):
(PlatformXR::Device::FrameData::FloatQuaternion::decode):
(PlatformXR::Device::FrameData::Pose::encode const):
(PlatformXR::Device::FrameData::Pose::decode):
(PlatformXR::Device::FrameData::Fov::encode const):
(PlatformXR::Device::FrameData::Fov::decode):
(PlatformXR::Device::FrameData::View::encode const):
(PlatformXR::Device::FrameData::View::decode):
(PlatformXR::Device::FrameData::StageParameters::encode const):
(PlatformXR::Device::FrameData::StageParameters::decode):
(PlatformXR::Device::FrameData::LayerData::encode const):
(PlatformXR::Device::FrameData::LayerData::decode):
(PlatformXR::Device::FrameData::encode const):
(PlatformXR::Device::FrameData::decode):

  • platform/xr/cocoa/PlatformXRCocoa.h:

(): Deleted.

Source/WebKit:

Reviewed by Dean Jackson

  • Add XRDeviceProxy which implements PlatformXR::Device.
  • Implement WebChromeClient::enumerateImmersiveXRDevices(), which calls PlatformXRSystemProxy

to get the list of XRDeviceProxy.

  • XRDeviceProxy goes through PlatformXRSystemProxy to handle its operations.

PlatformXRSystemProxy sends messages over IPC to PlatformXRSystem on the UI process side,
which handles XR device discovery and manages sessions via the PlatformXRCoordinator interface.
PlatformXRSystem::xrCoordinator() returns null for now and will be handled in a later patch.

  • DerivedSources-input.xcfilelist:
  • DerivedSources-output.xcfilelist:
  • DerivedSources.make:
  • Platform/Logging.h:
  • Scripts/webkit/messages.py:

(types_that_cannot_be_forward_declared):
(headers_for_type):

  • Shared/Cocoa/XRDeviceProxy.h: Added.
  • Shared/Cocoa/XRDeviceProxy.mm: Added.

(WebKit::XRDeviceProxy::create):
(WebKit::XRDeviceProxy::XRDeviceProxy):
Initialize its data members based on the XRDeviceInfo passed in.
Keep a weak pointer to PlatformXRSystemProxy (as PlatformXRSystemProxy has
strong references to its list of XRDeviceProxy).
(WebKit::XRDeviceProxy::sessionDidEnd):
Notify the TrackingAndRenderingClient that the session has ended.
(WebKit::XRDeviceProxy::initializeTrackingAndRendering):
(WebKit::XRDeviceProxy::shutDownTrackingAndRendering):
(WebKit::XRDeviceProxy::views const):
Return left and right views if the device supports stereo rendering.
Otherwise return just one view.
(WebKit::XRDeviceProxy::requestFrame):

  • Shared/WebCoreArgumentCoders.h:
  • SourcesCocoa.txt:
  • UIProcess/Cocoa/PlatformXRCoordinator.h: Copied from Source/WebCore/platform/xr/cocoa/PlatformXRCocoa.h.

Initial interface for communicating with the platform regarding XR devices and sessions.
For now, the interface covers session creation and termination, and scheduling frame updates.

  • UIProcess/Cocoa/PlatformXRSystem.h: Copied from Source/WebCore/platform/xr/cocoa/PlatformXRCocoa.h.
  • UIProcess/Cocoa/PlatformXRSystem.messages.in: Copied from Source/WebCore/platform/xr/cocoa/PlatformXRCocoa.h.
  • UIProcess/Cocoa/PlatformXRSystem.mm: Added.

(WebKit::PlatformXRSystem::PlatformXRSystem):
(WebKit::PlatformXRSystem::~PlatformXRSystem):
(WebKit::PlatformXRSystem::invalidate):
End any existing session on invalidation.
(WebKit::PlatformXRSystem::enumerateImmersiveXRDevices):
(WebKit::PlatformXRSystem::initializeTrackingAndRendering):
(WebKit::PlatformXRSystem::shutDownTrackingAndRendering):
(WebKit::PlatformXRSystem::requestFrame):
(WebKit::PlatformXRSystem::xrCoordinator):

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::didAttachToRunningProcess):
Set up the PlatformXRSystem held by the WebPageProxy.
(WebKit::WebPageProxy::resetState):
Invalidate m_xrSystem so existing session is ended properly.

  • UIProcess/WebPageProxy.h:
  • UIProcess/mac/HighPerformanceGPUManager.h:

Include WeakHashSet.h due to recent type change of m_processesRequiringHighPerformance
from HashSet to WeakHashSet.

  • WebKit.xcodeproj/project.pbxproj:
  • WebProcess/WebCoreSupport/WebChromeClient.cpp:

(WebKit::WebChromeClient::enumerateImmersiveXRDevices):
Get the list of XRDeviceInfo that represents the immersive devices returned
from PlatformXRSystem. Reuse any existing XRDeviceProxy instances that have the same
XRDeviceIdentifier. Otherwise, create new ones.

  • WebProcess/WebCoreSupport/WebChromeClient.h:
  • WebProcess/WebPage/Cocoa/WebPageCocoa.mm:

(WebKit::WebPage::xrSystemProxy):

  • WebProcess/WebPage/WebPage.h:
  • WebProcess/cocoa/PlatformXRSystemProxy.h: Copied from Source/WebCore/platform/xr/cocoa/PlatformXRCocoa.h.
  • WebProcess/cocoa/PlatformXRSystemProxy.messages.in: Copied from Source/WebCore/platform/xr/cocoa/PlatformXRCocoa.h.
  • WebProcess/cocoa/PlatformXRSystemProxy.mm: Added.

(WebKit::PlatformXRSystemProxy::PlatformXRSystemProxy):
(WebKit::PlatformXRSystemProxy::~PlatformXRSystemProxy):
(WebKit::PlatformXRSystemProxy::enumerateImmersiveXRDevices):
(WebKit::PlatformXRSystemProxy::initializeTrackingAndRendering):
(WebKit::PlatformXRSystemProxy::shutDownTrackingAndRendering):
(WebKit::PlatformXRSystemProxy::requestFrame):
(WebKit::PlatformXRSystemProxy::sessionDidEnd):
(WebKit::PlatformXRSystemProxy::deviceByIdentifier):

12:31 PM Changeset in webkit [275834] by graouts@webkit.org
  • 5 edits in trunk

border-image-width computed values should be a calc() value if it contains a percentage
https://bugs.webkit.org/show_bug.cgi?id=224420

Reviewed by Simon Fraser.

LayoutTests/imported/w3c:

We now pass the final test that was a FAIL result for the border-image-width computed style test.
We also pass a fair few border-image-width interpolation tests since we used to fail them as a
result of the expected value being expected to be a resolved value rather than a calc() value
due the computed style we returned for such values. There are a few PASS results than became
FAIL results because we now correctly expect a calc() value, but we return the keyframe value
as-is for 0 and 1 progress, a bug we will fix shortly.

  • web-platform-tests/css/css-backgrounds/animations/border-image-width-interpolation-expected.txt:
  • web-platform-tests/css/css-backgrounds/parsing/border-image-width-computed-expected.txt:

Source/WebCore:

When handling calc() values containing a percentage, we must retain the calc() form when creating
the computed style for border-image-width.

  • css/CSSToStyleMap.cpp:

(WebCore::CSSToStyleMap::mapNinePieceImageQuad):

12:20 PM Changeset in webkit [275833] by Ruben Turcios
  • 8 edits in branches/safari-612.1.10-branch/Source

Versioning.

WebKit-7612.1.10.2

12:01 PM Changeset in webkit [275832] by commit-queue@webkit.org
  • 6 edits
    1 add in trunk/Source/ThirdParty/ANGLE

Crash in webgl/2.0.y/conformance/glsl/misc/uninitialized-local-global-variables.html ANGLE+METAL
https://bugs.webkit.org/show_bug.cgi?id=223923

Anonymous structs require a name in MSL, add a default name ANGLEunnamed$id to any structs.
Also add a unit test to ensure this works.
Patch by Kyle Piddington <Kyle Piddington> on 2021-04-12
Reviewed by Kenneth Russell.

  • src/compiler/translator/TranslatorMetalDirect.cpp:

(sh::TranslatorMetalDirect::translateImpl):

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

(sh::Separator::Separator):
(sh::SeparateCompoundStructDeclarations):

  • src/compiler/translator/TranslatorMetalDirect/SeparateCompoundStructDeclarations.h:
  • src/tests/BUILD.gn:
  • src/tests/angle_unittests.gni:
  • src/tests/compiler_tests/MSLOutput_Test.cpp:
11:48 AM Changeset in webkit [275831] by youenn@apple.com
  • 9 edits in trunk

Block loading for port 10080
https://bugs.webkit.org/show_bug.cgi?id=224432

Reviewed by Alex Christensen.

LayoutTests/imported/w3c:

  • web-platform-tests/fetch/api/request/request-bad-port.any-expected.txt:
  • web-platform-tests/fetch/api/request/request-bad-port.any.js:
  • web-platform-tests/fetch/api/request/request-bad-port.any.worker-expected.txt:
  • web-platform-tests/websockets/Create-blocked-port.any-expected.txt:
  • web-platform-tests/websockets/Create-blocked-port.any.js:
  • web-platform-tests/websockets/Create-blocked-port.any.worker-expected.txt:

Source/WTF:

Follow Chrome and Firefox by blocking port 10080.

  • wtf/URL.cpp:

(WTF::portAllowed):

11:45 AM Changeset in webkit [275830] by youenn@apple.com
  • 12 edits
    3 adds in trunk

Add support for RTCEncodedFrame metadata
https://bugs.webkit.org/show_bug.cgi?id=224430

Reviewed by Eric Carlson.

Source/WebCore:

Expose metadata given from backend.
Audio sender side uses a regular TransformableFrameInterface instead of a TransformableAudioFrameInterface.
Make sure to not call GetHeader() in that case.

Test: http/wpt/webrtc/metadata-transform.html

  • Modules/mediastream/RTCEncodedAudioFrame.cpp:

(WebCore::RTCEncodedAudioFrame::timestamp const):
(WebCore::RTCEncodedAudioFrame::getMetadata):

  • Modules/mediastream/RTCEncodedAudioFrame.h:
  • Modules/mediastream/RTCEncodedAudioFrame.idl:
  • Modules/mediastream/RTCEncodedVideoFrame.cpp:

(WebCore::RTCEncodedVideoFrame::timestamp const):
(WebCore::RTCEncodedVideoFrame::getMetadata):

  • Modules/mediastream/RTCEncodedVideoFrame.h:
  • Modules/mediastream/RTCEncodedVideoFrame.idl:
  • Modules/mediastream/RTCRtpTransformableFrame.h:
  • Modules/mediastream/libwebrtc/LibWebRTCRtpTransformBackend.cpp:

(WebCore::LibWebRTCRtpTransformBackend::Transform):

  • Modules/mediastream/libwebrtc/LibWebRTCRtpTransformableFrame.cpp:

(WebCore::LibWebRTCRtpTransformableFrame::LibWebRTCRtpTransformableFrame):
(WebCore::LibWebRTCRtpTransformableFrame::timestamp const):
(WebCore::LibWebRTCRtpTransformableFrame::audioMetadata const):
(WebCore::LibWebRTCRtpTransformableFrame::videoMetadata const):

  • Modules/mediastream/libwebrtc/LibWebRTCRtpTransformableFrame.h:

LayoutTests:

  • http/wpt/webrtc/metadata-transform-expected.txt: Added.
  • http/wpt/webrtc/metadata-transform-worker.js: Added.

(onrtctransform.process):
(onrtctransform):

  • http/wpt/webrtc/metadata-transform.html: Added.
10:37 AM Changeset in webkit [275829] by weinig@apple.com
  • 3 edits in trunk/Source/WebCore

Remove unused 'DefaultDefineOwnProperty' extended attribute support
https://bugs.webkit.org/show_bug.cgi?id=224436

Reviewed by Antti Koivisto.

The old CSSStyleDeclaration named-getter based implementation was
the last user so this can now be removed.

  • bindings/scripts/CodeGeneratorJS.pm:

(InstanceOverridesDefineOwnProperty):

  • bindings/scripts/IDLAttributes.json:
10:26 AM Changeset in webkit [275828] by weinig@apple.com
  • 75 edits in trunk/LayoutTests/imported/w3c

Update WPT css/css-color tests
https://bugs.webkit.org/show_bug.cgi?id=224419

Reviewed by Antti Koivisto.

Update to the latest version of the css/css-color tests.

  • web-platform-tests/css/css-color/META.yml:
  • web-platform-tests/css/css-color/hex-001-expected.html:
  • web-platform-tests/css/css-color/hex-001.html:
  • web-platform-tests/css/css-color/hex-002-expected.html:
  • web-platform-tests/css/css-color/hex-002.html:
  • web-platform-tests/css/css-color/hex-003-expected.html:
  • web-platform-tests/css/css-color/hex-003.html:
  • web-platform-tests/css/css-color/hex-004-expected.html:
  • web-platform-tests/css/css-color/hex-004.html:
  • web-platform-tests/css/css-color/hsl-001-expected.html:
  • web-platform-tests/css/css-color/hsl-001.html:
  • web-platform-tests/css/css-color/hsl-002-expected.html:
  • web-platform-tests/css/css-color/hsl-002.html:
  • web-platform-tests/css/css-color/hsl-003-expected.html:
  • web-platform-tests/css/css-color/hsl-003.html:
  • web-platform-tests/css/css-color/hsl-004-expected.html:
  • web-platform-tests/css/css-color/hsl-004.html:
  • web-platform-tests/css/css-color/hsl-005-expected.html:
  • web-platform-tests/css/css-color/hsl-005.html:
  • web-platform-tests/css/css-color/hsl-006-expected.html:
  • web-platform-tests/css/css-color/hsl-006.html:
  • web-platform-tests/css/css-color/hsl-007-expected.html:
  • web-platform-tests/css/css-color/hsl-007.html:
  • web-platform-tests/css/css-color/hsl-008-expected.html:
  • web-platform-tests/css/css-color/hsl-008.html:
  • web-platform-tests/css/css-color/hsla-001-expected.html:
  • web-platform-tests/css/css-color/hsla-001.html:
  • web-platform-tests/css/css-color/hsla-002-expected.html:
  • web-platform-tests/css/css-color/hsla-002.html:
  • web-platform-tests/css/css-color/hsla-003-expected.html:
  • web-platform-tests/css/css-color/hsla-003.html:
  • web-platform-tests/css/css-color/hsla-004-expected.html:
  • web-platform-tests/css/css-color/hsla-004.html:
  • web-platform-tests/css/css-color/hsla-005-expected.html:
  • web-platform-tests/css/css-color/hsla-005.html:
  • web-platform-tests/css/css-color/hsla-006-expected.html:
  • web-platform-tests/css/css-color/hsla-006.html:
  • web-platform-tests/css/css-color/hsla-007-expected.html:
  • web-platform-tests/css/css-color/hsla-007.html:
  • web-platform-tests/css/css-color/hsla-008-expected.html:
  • web-platform-tests/css/css-color/hsla-008.html:
  • web-platform-tests/css/css-color/rgb-001-expected.html:
  • web-platform-tests/css/css-color/rgb-001.html:
  • web-platform-tests/css/css-color/rgb-002-expected.html:
  • web-platform-tests/css/css-color/rgb-002.html:
  • web-platform-tests/css/css-color/rgb-003-expected.html:
  • web-platform-tests/css/css-color/rgb-003.html:
  • web-platform-tests/css/css-color/rgb-004-expected.html:
  • web-platform-tests/css/css-color/rgb-004.html:
  • web-platform-tests/css/css-color/rgb-005-expected.html:
  • web-platform-tests/css/css-color/rgb-005.html:
  • web-platform-tests/css/css-color/rgb-006-expected.html:
  • web-platform-tests/css/css-color/rgb-006.html:
  • web-platform-tests/css/css-color/rgb-007-expected.html:
  • web-platform-tests/css/css-color/rgb-007.html:
  • web-platform-tests/css/css-color/rgb-008-expected.html:
  • web-platform-tests/css/css-color/rgb-008.html:
  • web-platform-tests/css/css-color/rgba-001-expected.html:
  • web-platform-tests/css/css-color/rgba-001.html:
  • web-platform-tests/css/css-color/rgba-002-expected.html:
  • web-platform-tests/css/css-color/rgba-002.html:
  • web-platform-tests/css/css-color/rgba-003-expected.html:
  • web-platform-tests/css/css-color/rgba-003.html:
  • web-platform-tests/css/css-color/rgba-004-expected.html:
  • web-platform-tests/css/css-color/rgba-004.html:
  • web-platform-tests/css/css-color/rgba-005-expected.html:
  • web-platform-tests/css/css-color/rgba-005.html:
  • web-platform-tests/css/css-color/rgba-006-expected.html:
  • web-platform-tests/css/css-color/rgba-006.html:
  • web-platform-tests/css/css-color/rgba-007-expected.html:
  • web-platform-tests/css/css-color/rgba-007.html:
  • web-platform-tests/css/css-color/rgba-008-expected.html:
  • web-platform-tests/css/css-color/rgba-008.html:
  • web-platform-tests/css/css-color/w3c-import.log:
10:18 AM Changeset in webkit [275827] by commit-queue@webkit.org
  • 9 edits in trunk

[GStreamer][WebRTC] An audio track should be muted when capture is interrupted by the OS.
https://bugs.webkit.org/show_bug.cgi?id=196606

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

Source/WebCore:

Add basic interruption support in the audio capture source and mock audio capture source.

  • platform/mediastream/gstreamer/GStreamerAudioCaptureSource.cpp:

(WebCore::GStreamerAudioCaptureSource::interrupted const):
(WebCore::GStreamerAudioCaptureSource::setInterruptedForTesting):

  • platform/mediastream/gstreamer/GStreamerAudioCaptureSource.h:
  • platform/mediastream/gstreamer/GStreamerCapturer.cpp:

(WebCore::GStreamerCapturer::setupPipeline):
(WebCore::GStreamerCapturer::interrupted const):
(WebCore::GStreamerCapturer::setInterrupted):

  • platform/mediastream/gstreamer/GStreamerCapturer.h:
  • platform/mediastream/gstreamer/MockRealtimeAudioSourceGStreamer.cpp:

(WebCore::MockRealtimeAudioSourceGStreamer::setInterruptedForTesting):

  • platform/mediastream/gstreamer/MockRealtimeAudioSourceGStreamer.h:

LayoutTests:

  • platform/glib/TestExpectations: fast/mediastream/media-stream-track-interrupted.html is now passing.
9:53 AM Changeset in webkit [275826] by weinig@apple.com
  • 6 edits in trunk

Update color-contrast() to support a target contrast ratio
https://bugs.webkit.org/show_bug.cgi?id=224411

Reviewed by Antti Koivisto.

Source/WebCore:

Updated fast/css/parsing-color-contrast.html with new test cases.

  • css/CSSValueKeywords.in:

Add new keywords, AA and AA-large which are constants for contrast ratios of 4.5
and 3.0 respectively.

  • css/parser/CSSPropertyParserHelpers.cpp:

(WebCore::CSSPropertyParserHelpers::parseColorFunctionParameters):
Remove now incorrect comment about adding support for fallback as fallback
has been removed from the spec.

(WebCore::CSSPropertyParserHelpers::selectFirstColorThatMeetsOrExceedsTargetContrast):
(WebCore::CSSPropertyParserHelpers::selectFirstColorWithHighestContrast):
(WebCore::CSSPropertyParserHelpers::parseColorContrastFunctionParameters):
Add support for the new optional target contrast ratio in color-contrast() that was
recently added to CSS Color 5.

LayoutTests:

Add tests and update results for target contrast ratios in color-contrast().

  • fast/css/parsing-color-contrast-expected.txt:
  • fast/css/parsing-color-contrast.html:
9:49 AM Changeset in webkit [275825] by Antti Koivisto
  • 7 edits
    2 adds in trunk

Descendant style relations are sometimes reset when they shouldn't
https://bugs.webkit.org/show_bug.cgi?id=224431
rdar://76267783

Reviewed by Sam Weinig.
Source/WebCore:

Some style relations computed during resolution of descendants are set on a parent element.
The parent element shouldn't reset them unless we are actually also computing the descendants.

Test: fast/css/first-letter-style-relation-crash.html

  • dom/Element.cpp:

(WebCore::Element::resetStyleRelations):
(WebCore::Element::resetChildStyleRelations):
(WebCore::Element::resetAllDescendantStyleRelations):

Split resetStyleRelations into separate parts.

  • dom/Element.h:

(WebCore::Element::styleAffectedByEmpty const):
(WebCore::Element::childrenAffectedByForwardPositionalRules const):
(WebCore::Element::descendantsAffectedByForwardPositionalRules const):
(WebCore::Element::childrenAffectedByBackwardPositionalRules const):
(WebCore::Element::descendantsAffectedByBackwardPositionalRules const):
(WebCore::Element::childrenAffectedByPropertyBasedBackwardPositionalRules const):
(WebCore::Element::setStyleAffectedByEmpty):
(WebCore::Element::setChildrenAffectedByForwardPositionalRules):
(WebCore::Element::setDescendantsAffectedByForwardPositionalRules):
(WebCore::Element::setChildrenAffectedByBackwardPositionalRules):
(WebCore::Element::setDescendantsAffectedByBackwardPositionalRules):
(WebCore::Element::setChildrenAffectedByPropertyBasedBackwardPositionalRules):

  • dom/ElementRareData.h:

(WebCore::ElementRareData::resetStyleRelations): Deleted.

  • dom/Node.h:

(WebCore::Node::StyleBitfields::clearFlags):
(WebCore::Node::clearStyleFlags):
(WebCore::Node::StyleBitfields::dynamicStyleRelations const): Deleted.
(WebCore::Node::StyleBitfields::setDynamicStyleRelation): Deleted.
(WebCore::Node::StyleBitfields::clearDynamicStyleRelations): Deleted.
(WebCore::Node::hasDynamicStyleRelationFlag const): Deleted.
(WebCore::Node::setDynamicStyleRelationFlag): Deleted.

Remove the meaningless DynamicStyleRelation concept and merge these flags with the others.

  • style/StyleTreeResolver.cpp:

(WebCore::Style::TreeResolver::resolveElement):
(WebCore::Style::TreeResolver::resolveComposedTree):

Only clear the descendant or child style relation bits if we are actually re-resolving
descendants or children.

LayoutTests:

  • fast/css/first-letter-style-relation-crash-expected.txt: Added.
  • fast/css/first-letter-style-relation-crash.html: Added.
9:36 AM Changeset in webkit [275824] by youenn@apple.com
  • 23 edits in trunk/LayoutTests/imported/w3c

Update WPT streams test to ToT
https://bugs.webkit.org/show_bug.cgi?id=224284

Reviewed by Alex Christensen.

  • web-platform-tests/streams/README.md:
  • web-platform-tests/streams/piping/general.any-expected.txt:
  • web-platform-tests/streams/piping/general.any.js:

(promise_test.t.const.rs.new.ReadableStream.start):

  • web-platform-tests/streams/piping/general.any.worker-expected.txt:
  • web-platform-tests/streams/readable-byte-streams/bad-buffers-and-views.any-expected.txt:
  • web-platform-tests/streams/readable-byte-streams/bad-buffers-and-views.any.js:
  • web-platform-tests/streams/readable-byte-streams/bad-buffers-and-views.any.worker-expected.txt:
  • web-platform-tests/streams/readable-byte-streams/general.any-expected.txt:
  • web-platform-tests/streams/readable-byte-streams/general.any.js:

(test):

  • web-platform-tests/streams/readable-byte-streams/general.any.worker-expected.txt:
  • web-platform-tests/streams/readable-streams/async-iterator.any-expected.txt:
  • web-platform-tests/streams/readable-streams/async-iterator.any.js:

(promise_test.async const):
(promise_test):

  • web-platform-tests/streams/readable-streams/async-iterator.any.worker-expected.txt:
  • web-platform-tests/streams/readable-streams/default-reader.any-expected.txt:
  • web-platform-tests/streams/readable-streams/default-reader.any.js:

(promise_test.t.const.rs.new.ReadableStream.start):

  • web-platform-tests/streams/readable-streams/default-reader.any.worker-expected.txt:
  • web-platform-tests/streams/readable-streams/general.any-expected.txt:
  • web-platform-tests/streams/readable-streams/general.any.js:

(promise_test):

  • web-platform-tests/streams/readable-streams/general.any.worker-expected.txt:
  • web-platform-tests/streams/transform-streams/patched-global.any-expected.txt:
  • web-platform-tests/streams/transform-streams/patched-global.any.js:
  • web-platform-tests/streams/transform-streams/patched-global.any.worker-expected.txt:
8:08 AM Changeset in webkit [275823] by commit-queue@webkit.org
  • 3 edits
    2 adds in trunk

Clamp overridingContentLogicalWidth/Height to zero
https://bugs.webkit.org/show_bug.cgi?id=224310

Patch by Rob Buis <rbuis@igalia.com> on 2021-04-12
Reviewed by Sergio Villar Senin.

Source/WebCore:

Clamp overridingContentLogicalWidth/Height to zero.

Test: fast/css-grid-layout/negative-overriding-content-logical-height-crash.html

  • rendering/RenderBox.h:

(WebCore::RenderBox::overridingContentLogicalWidth const):
(WebCore::RenderBox::overridingContentLogicalHeight const):

LayoutTests:

Add test for this.

  • fast/css-grid-layout/negative-overriding-content-logical-height-crash-expected.txt: Added.
  • fast/css-grid-layout/negative-overriding-content-logical-height-crash.html: Added.
6:52 AM Changeset in webkit [275822] by youenn@apple.com
  • 5 edits in trunk/LayoutTests

[ macOS wk2 ] webrtc/libwebrtc/release-while-creating-offer.html is a flakey text failure
https://bugs.webkit.org/show_bug.cgi?id=224256
<rdar://problem/76296126>

Reviewed by Eric Carlson.

Pass a valid candidate to remove the rejection message.

  • platform/mac-wk2/TestExpectations:
  • webrtc/libwebrtc/release-while-creating-offer-expected.txt:
  • webrtc/libwebrtc/release-while-creating-offer.html:
  • webrtc/libwebrtc/release-while-setting-local-description.html:
6:46 AM WebKitGTK/2.32.x edited by Philippe Normand
(diff)
6:41 AM Changeset in webkit [275821] by commit-queue@webkit.org
  • 4 edits
    2 adds in trunk

[MSE][GStreamer] Crash in WebCore::PlaybackPipeline::addSourceBuffer when setting duration and preload is set to none
https://bugs.webkit.org/show_bug.cgi?id=224260

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

Source/WebCore:

Disable delayed loading for the GStreamer MSE player, we want the MSE source element to be
configured ASAP, otherwise the playback pipeline will fail in various ways (duration
notifications sent too early, crashes in addSourceBuffer, crashes in attachTracks, and so
on).

Test: media/media-source/media-source-no-preload-set-duration-crash.html

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

(WebCore::MediaPlayerPrivateGStreamerMSE::durationChanged):

LayoutTests:

  • media/media-source/media-source-no-preload-set-duration-crash-expected.txt: Added.
  • media/media-source/media-source-no-preload-set-duration-crash.html: Added.
6:23 AM Changeset in webkit [275820] by Philippe Normand
  • 2 edits in trunk/Tools/buildstream

Unreviewed, update libsoup 2.99.3 ref

  • elements/sdk/libsoup3.bst: Previous ref had 2.99.2 version set in meson.build.
6:15 AM Changeset in webkit [275819] by youenn@apple.com
  • 18 edits
    3 adds in trunk

Make sure all frames get transformed when overriding a transform with another one
https://bugs.webkit.org/show_bug.cgi?id=224367

Reviewed by Eric Carlson.

Source/WebCore:

We were previously removing the old transform, then attaching the new transforn.
There was a time where no transform was attached and a few samples could get missed.
To prevent this, we add a new code path where we transfer a backend from one transform to another.
In that case, we synchronoulsy change the input callback from the old one to the new one instead of setting it to null in between.

Test: http/wpt/webrtc/change-encoded-transform.html

  • Modules/mediastream/RTCRtpReceiver.cpp:

(WebCore::RTCRtpReceiver::setTransform):

  • Modules/mediastream/RTCRtpReceiver.h:
  • Modules/mediastream/RTCRtpReceiverBackend.h:
  • Modules/mediastream/RTCRtpScriptTransform.cpp:

(WebCore::RTCRtpScriptTransform::~RTCRtpScriptTransform):
(WebCore::RTCRtpScriptTransform::willClearBackend):
(WebCore::RTCRtpScriptTransform::clear):

  • Modules/mediastream/RTCRtpScriptTransform.h:
  • Modules/mediastream/RTCRtpScriptTransformer.cpp:

(WebCore::RTCRtpScriptTransformer::clear):

  • Modules/mediastream/RTCRtpScriptTransformer.h:
  • Modules/mediastream/RTCRtpSender.cpp:

(WebCore::RTCRtpSender::setTransform):

  • Modules/mediastream/RTCRtpSender.h:
  • Modules/mediastream/RTCRtpSenderBackend.h:
  • Modules/mediastream/RTCRtpTransform.cpp:

(WebCore::RTCRtpTransform::from):
(WebCore::RTCRtpTransform::attachToReceiver):
(WebCore::RTCRtpTransform::attachToSender):
(WebCore::RTCRtpTransform::backendTransferedToNewTransform):

  • Modules/mediastream/RTCRtpTransform.h:

(WebCore::RTCRtpTransform::takeBackend):

  • Modules/mediastream/libwebrtc/LibWebRTCRtpReceiverBackend.cpp:

(WebCore::LibWebRTCRtpReceiverBackend::rtcRtpTransformBackend):

  • Modules/mediastream/libwebrtc/LibWebRTCRtpReceiverBackend.h:
  • Modules/mediastream/libwebrtc/LibWebRTCRtpSenderBackend.cpp:

(WebCore::LibWebRTCRtpSenderBackend::LibWebRTCRtpSenderBackend):
(WebCore::LibWebRTCRtpSenderBackend::rtcRtpTransformBackend):

  • Modules/mediastream/libwebrtc/LibWebRTCRtpSenderBackend.h:

LayoutTests:

  • http/wpt/webrtc/change-encoded-transform-expected.txt: Added.
  • http/wpt/webrtc/change-encoded-transform.html: Added.
  • http/wpt/webrtc/change-encoded-transform.js: Added.

(appendToBuffer):
(onrtctransform.process):
(onrtctransform):

5:26 AM Changeset in webkit [275818] by commit-queue@webkit.org
  • 3 edits
    2 adds in trunk

Out of memory crash with find('a'.repeat(230))
https://bugs.webkit.org/show_bug.cgi?id=223787

Source/WebCore:

Patch by Frédéric Wang <fwang@igalia.com> on 2021-04-12
Reviewed by Ryosuke Niwa.

SearchBuffer::SearchBuffer allocates a buffer whose capacity is at least 8 times the size of
the searched text and at least 8192. It's possible to hit an out-of-memory crash by passing
a very long string to window.find. Since there is no reason to search for arbitrary large
text, limit it to a maximum length of 64kB.

Test: editing/find/find-long-string-crash.html

  • page/DOMWindow.cpp:

(WebCore::DOMWindow::find const): Exit early if the string length is larger than a limit.

LayoutTests:

Patch by Frederic Wang <fred.wang@free.fr> on 2021-04-12
Reviewed by Ryosuke Niwa.

Add regression test.

  • editing/find/find-short-and-long-strings-expected.txt: Added.
  • editing/find/find-short-and-long-strings.html: Added.
2:26 AM Changeset in webkit [275817] by Chris Lord
  • 17 edits
    4 adds in trunk/Source/WebCore

Refactor font loading to make it possible for Worker to implement it
https://bugs.webkit.org/show_bug.cgi?id=224277

Reviewed by Darin Adler.

Introduce FontLoadRequest and FontLoadRequestClient as an abstraction
separate from CachedFont and CachedFontClient to allow for separate
implementations. Also move Document-specific font-loading behaviour
from CSSFontSelector into Document and add non-Document specific
accessors to ScriptExecutionContext.

These changes should allow for custom font loading to be implementable
on a Worker, which will be necessary for FontFace support in
OffscreenCanvas.

No new tests, no change in behavior.

  • Headers.cmake: Added FontLoadRequest.h, CachedFontLoadRequest.h and DocumentFontLoader.h.
  • Sources.txt: Added DocumentFontLoader.cpp.
  • WebCore.xcodeproj/project.pbxproj: Added files listed above.
  • css/CSSFontFace.cpp: Update to not require Document for custom font loading.

(WebCore::CSSFontFace::appendSources):

  • css/CSSFontFaceSource.cpp: Update to use FontLoadRequest instead of CachedFont.

(WebCore::CSSFontFaceSource::CSSFontFaceSource):
(WebCore::CSSFontFaceSource::~CSSFontFaceSource):
(WebCore::CSSFontFaceSource::opportunisticallyStartFontDataURLLoading):
(WebCore::CSSFontFaceSource::fontLoaded):
(WebCore::CSSFontFaceSource::load):
(WebCore::CSSFontFaceSource::font):
(WebCore::CSSFontFaceSource::isSVGFontFaceSource const):

  • css/CSSFontFaceSource.h:
  • css/CSSFontFaceSrcValue.cpp: Update to use FontLoadRequest and ScriptExecutionContext instead of CachedResourceLoader.

(WebCore::CSSFontFaceSrcValue::fontLoadRequest):

  • css/CSSFontFaceSrcValue.h:
  • css/CSSFontSelector.cpp: Remove Document-specific code.

(WebCore::CSSFontSelector::CSSFontSelector):
(WebCore::CSSFontSelector::~CSSFontSelector):
(WebCore::CSSFontSelector::clearFonts):

  • css/CSSFontSelector.h:
  • dom/Document.cpp: Implement ScriptExecutionContext::fontLoadRequest and ::beginLoadingFontSoon.

(WebCore::Document::~Document):
(WebCore::Document::removedLastRef):
(WebCore::Document::resolveStyle):
(WebCore::Document::suspendFontLoading):
(WebCore::Document::fontLoadRequest):
(WebCore::Document::beginLoadingFontSoon):
(WebCore::Document::suspend):
(WebCore::Document::resume):

  • dom/Document.h:
  • dom/DocumentFontLoader.cpp: Added. New class to handle Document-specific font-loading code that was previously in CSSFontSelector and CSSFontFaceSrcValue.

(WebCore::DocumentFontLoader::DocumentFontLoader):
(WebCore::DocumentFontLoader::~DocumentFontLoader):
(WebCore::DocumentFontLoader::cachedFont):
(WebCore::DocumentFontLoader::beginLoadingFontSoon):
(WebCore::DocumentFontLoader::loadPendingFonts):
(WebCore::DocumentFontLoader::fontLoadingTimerFired):
(WebCore::DocumentFontLoader::stopLoadingAndClearFonts):
(WebCore::DocumentFontLoader::suspendFontLoading):
(WebCore::DocumentFontLoader::resumeFontLoading):

  • dom/DocumentFontLoader.h:
  • dom/ScriptExecutionContext.cpp: Add functions to initiate font load requests.

(WebCore::ScriptExecutionContext::fontLoadRequest):

  • dom/ScriptExecutionContext.h:

(WebCore::ScriptExecutionContext::beginLoadingFontSoon):

  • loader/DocumentLoader.cpp: CSSFontSelector::suspendFontLoadingTimer is now Document::suspendFontLoading.

(WebCore::DocumentLoader::stopLoading):

  • loader/FontLoadRequest.h: Added. An interface to manage font loading that abstracts some of the behaviour of CachedResource, CachedFont and CachedFontClient.

(WebCore::FontLoadRequestClient::fontLoaded):
(WebCore::FontLoadRequestClient::isCachedFontLoadRequest const):

  • loader/cache/CachedFontLoadRequest.h: Added. An implementation of FontLoadRequest for CachedFont.
  • workers/WorkerGlobalScope.cpp: Remove now-redundant CSSFontSelector call.

(WebCore::WorkerGlobalScope::~WorkerGlobalScope):

1:13 AM Changeset in webkit [275816] by Adrian Perez de Castro
  • 17 edits in trunk/Source

[WPE][GTK] Use g_object_notify_by_pspec() whenever possible
https://bugs.webkit.org/show_bug.cgi?id=224366

Reviewed by Carlos Garcia Campos.

Keep a static array with the GParamSpec pointer for each property, and trigger
property change notifications using g_object_notify_by_pspec() to avoid looking
up by its name each time.

Source/WebCore:

No new tests needed.

  • platform/graphics/gstreamer/TextCombinerPadGStreamer.cpp:

(webkit_text_combiner_pad_class_init):

Source/WebKit:

  • Shared/API/glib/WebKitURIRequest.cpp:

(webkit_uri_request_class_init):
(webkit_uri_request_set_uri):

  • UIProcess/API/glib/WebKitDownload.cpp:

(webkitDownloadDecideDestination):
(webkit_download_class_init):
(webkitDownloadSetResponse):
(webkitDownloadNotifyProgress):
(webkit_download_set_destination):
(webkit_download_set_allow_overwrite):

  • UIProcess/API/glib/WebKitEditorState.cpp:

(webkit_editor_state_class_init):
(webkitEditorStateSetTypingAttributes):

  • UIProcess/API/glib/WebKitGeolocationManager.cpp:

(webkitGeolocationManagerSetEnableHighAccuracy):
(webkit_geolocation_manager_class_init):

  • UIProcess/API/glib/WebKitInputMethodContext.cpp:

(webkit_input_method_context_class_init):
(webkit_input_method_context_set_input_purpose):
(webkit_input_method_context_set_input_hints):

  • UIProcess/API/glib/WebKitSettings.cpp:

(webkit_settings_class_init):
(webkit_settings_set_enable_javascript):
(webkit_settings_set_auto_load_images):
(webkit_settings_set_load_icons_ignoring_image_load_setting):
(webkit_settings_set_enable_offline_web_application_cache):
(webkit_settings_set_enable_html5_local_storage):
(webkit_settings_set_enable_html5_database):
(webkit_settings_set_enable_xss_auditor):
(webkit_settings_set_enable_frame_flattening):
(webkit_settings_set_enable_java):
(webkit_settings_set_javascript_can_open_windows_automatically):
(webkit_settings_set_enable_hyperlink_auditing):
(webkit_settings_set_default_font_family):
(webkit_settings_set_monospace_font_family):
(webkit_settings_set_serif_font_family):
(webkit_settings_set_sans_serif_font_family):
(webkit_settings_set_cursive_font_family):
(webkit_settings_set_fantasy_font_family):
(webkit_settings_set_pictograph_font_family):
(webkit_settings_set_default_font_size):
(webkit_settings_set_default_monospace_font_size):
(webkit_settings_set_minimum_font_size):
(webkit_settings_set_default_charset):
(webkit_settings_set_enable_developer_extras):
(webkit_settings_set_enable_resizable_text_areas):
(webkit_settings_set_enable_tabs_to_links):
(webkit_settings_set_enable_dns_prefetching):
(webkit_settings_set_enable_caret_browsing):
(webkit_settings_set_enable_fullscreen):
(webkit_settings_set_print_backgrounds):
(webkit_settings_set_enable_webaudio):
(webkit_settings_set_enable_webgl):
(webkit_settings_set_allow_modal_dialogs):
(webkit_settings_set_zoom_text_only):
(webkit_settings_set_javascript_can_access_clipboard):
(webkit_settings_set_media_playback_requires_user_gesture):
(webkit_settings_set_media_playback_allows_inline):
(webkit_settings_set_draw_compositing_indicators):
(webkit_settings_set_enable_site_specific_quirks):
(webkit_settings_set_enable_page_cache):
(webkit_settings_set_user_agent):
(webkit_settings_set_enable_smooth_scrolling):
(webkit_settings_set_enable_write_console_messages_to_stdout):
(webkit_settings_set_enable_media_stream):
(webkit_settings_set_enable_mock_capture_devices):
(webkit_settings_set_enable_spatial_navigation):
(webkit_settings_set_enable_mediasource):
(webkit_settings_set_enable_encrypted_media):
(webkit_settings_set_enable_media_capabilities):
(webkit_settings_set_allow_file_access_from_file_urls):
(webkit_settings_set_allow_universal_access_from_file_urls):
(webkit_settings_set_allow_top_navigation_to_data_urls):
(webkit_settings_set_hardware_acceleration_policy):
(webkit_settings_set_enable_back_forward_navigation_gestures):
(webkit_settings_set_enable_javascript_markup):
(webkit_settings_set_enable_media):
(webkit_settings_set_media_content_types_requiring_hardware_support):

  • UIProcess/API/glib/WebKitWebContext.cpp:

(webkitWebContextGetProperty):
(webkitWebContextSetProperty):
(webkit_web_context_class_init):
(webkit_web_context_set_use_system_appearance_for_scrollbars):

  • UIProcess/API/glib/WebKitWebResource.cpp:

(webkit_web_resource_class_init):
(webkitWebResourceUpdateURI):
(webkitWebResourceSetResponse):

  • UIProcess/API/glib/WebKitWebView.cpp:

(webkitWebViewSetIsLoading):
(webkitWebViewIsPlayingAudioChanged):
(webkitWebViewUpdateFavicon):
(webkit_web_view_class_init):
(webkitWebViewLoadChanged):
(webkitWebViewDidChangePageID):
(webkit_web_view_set_is_muted):
(webkit_web_view_set_settings):
(webkit_web_view_set_zoom_level):
(webkit_web_view_set_editable):

  • UIProcess/API/glib/WebKitWindowProperties.cpp:

(webkit_window_properties_class_init):
(webkitWindowPropertiesSetGeometry):
(webkitWindowPropertiesSetToolbarVisible):
(webkitWindowPropertiesSetMenubarVisible):
(webkitWindowPropertiesSetStatusbarVisible):
(webkitWindowPropertiesSetLocationbarVisible):
(webkitWindowPropertiesSetScrollbarsVisible):
(webkitWindowPropertiesSetResizable):
(webkitWindowPropertiesSetFullscreen):

  • UIProcess/API/gtk/WebKitColorChooserRequest.cpp:

(webkit_color_chooser_request_class_init):
(webkit_color_chooser_request_set_rgba):

  • UIProcess/API/gtk/WebKitPrintOperation.cpp:

(webkit_print_operation_class_init):
(webkit_print_operation_set_print_settings):
(webkit_print_operation_set_page_setup):

  • UIProcess/API/gtk/WebKitWebInspector.cpp:

(webkit_web_inspector_class_init):

  • WebProcess/InjectedBundle/API/glib/WebKitWebPage.cpp:

(webkitWebPageSetURI):
(webkit_web_page_class_init):

1:05 AM Changeset in webkit [275815] by youenn@apple.com
  • 2 edits in trunk/Source/WebCore

Use DestructionThread::Main for RTCRtpScriptTransform
https://bugs.webkit.org/show_bug.cgi?id=224368
<rdar://76404727>

Reviewed by Eric Carlson.

It is safer to make it DestructionThread::Main to guarantee it is destroyed in main thread.

  • Modules/mediastream/RTCRtpScriptTransform.h:

Apr 11, 2021:

11:02 PM Changeset in webkit [275814] by commit-queue@webkit.org
  • 4 edits in trunk/Tools

Unreviewed, reverting r275801.
https://bugs.webkit.org/show_bug.cgi?id=224423

run-jsc-stress-tests output includes a lot of texts

Reverted changeset:

"[JSC] detect infrastructure failure for remote stress tests"
https://bugs.webkit.org/show_bug.cgi?id=222601
https://trac.webkit.org/changeset/275801

8:02 PM Changeset in webkit [275813] by Ruben Turcios
  • 8 edits in trunk/Source

Versioning.

WebKit-7612.1.12

8:00 PM Changeset in webkit [275812] by Ruben Turcios
  • 1 copy in branches/safari-612.1.11-branch

New branch.

3:53 PM Changeset in webkit [275811] by Cameron McCormack
  • 4 edits
    4 adds in trunk

Fix initial horizontal scrollbar position when vertical scrollbar is on the left.
https://bugs.webkit.org/show_bug.cgi?id=224409

Reviewed by Darin Adler.

Source/WebCore:

Scrollable elements that place their vertical scrollbar on the left
(e.g. when they're direction: rtl or when the OS language is RTL and
the relevant setting to always follow OS scrollbar side is used) have
an incorrect scroll origin, which leads to creating a horizontal
scrollbar with an incorrect initial offset. This is because
RenderLayerScrollableArea::computeScrollDimensions runs prior to the
scrollbars being created. So whenever we start or stop having a
(non-overlay) vertical scrollbar on the left, we need to recompute
the scroll origin and fix up the horizontal scrollbar's offset.

Tests: fast/scrolling/rtl-scrollbars-initial-position-dynamic.html

fast/scrolling/rtl-scrollbars-initial-position.html

  • rendering/RenderLayerScrollableArea.cpp:

(WebCore::RenderLayerScrollableArea::computeScrollDimensions):
(WebCore::RenderLayerScrollableArea::computeScrollOrigin): Split this
out of computeScrollDimensions so we can call it from
updateScrollbarsAfterLayout and updateScrollbarsAfterStyleChange, and
have it ask the horizontal scrollbar to update its offset. We could
condition this on the scroll origin actually having changed, but
that's going to be a similar check that Scrollbar::offsetDidChange
does to ensure the offset value did indeed change. We don't want to
condition this on shouldPlaceBlockDirectionScrollbarOnLeft(), since
that's dependent on the current style, and we may be reacting to a
style change removed the vertical scrollbar on the left.
(WebCore::RenderLayerScrollableArea::updateScrollbarsAfterLayout):
(WebCore::RenderLayerScrollableArea::updateScrollbarsAfterStyleChange):

  • rendering/RenderLayerScrollableArea.h:

LayoutTests:

  • fast/scrolling/rtl-scrollbars-initial-position-dynamic-expected.html: Added.
  • fast/scrolling/rtl-scrollbars-initial-position-dynamic.html: Added.
  • fast/scrolling/rtl-scrollbars-initial-position-expected.html: Added.
  • fast/scrolling/rtl-scrollbars-initial-position.html: Added.
1:11 PM Changeset in webkit [275810] by weinig@apple.com
  • 16 edits in trunk

Simplify WebKitTestRunner preference reset to be more like DRT
https://bugs.webkit.org/show_bug.cgi?id=224410

Reviewed by Darin Adler.

Source/WebKit:

Add WKPreferencesStartBatchingUpdates/WKPreferencesEndBatchingUpdates
to support batching preferences updates by clients.

  • UIProcess/API/C/WKPreferences.cpp:

(WKPreferencesStartBatchingUpdates):
(WKPreferencesEndBatchingUpdates):

  • UIProcess/API/C/WKPreferencesRefPrivate.h:
  • UIProcess/WebPreferences.h:

Tools:

  • Use boolWebPreferenceFeatures consistently for accessibilityIsolatedTreeMode
  • Adopt new WKPreferencesStartBatchingUpdates/WKPreferencesEndBatchingUpdates to ensure all preferences updates are batched.
  • Move all preference overrides that can be moved (two still require some specialized handling for now) to TestOptions defaults.
  • Remove now unnecessary platformResetPreferencesToConsistentValues() platform configuration point.
  • WebKitTestRunner/Options.cpp:

(WTR::handleOptionAccessibilityIsolatedTreeMode):

  • WebKitTestRunner/Options.h:
  • WebKitTestRunner/TestController.cpp:

(WTR::TestController::initialize):
(WTR::batchUpdatePreferences):
(WTR::TestController::resetPreferencesToConsistentValues):
(WTR::TestController::resetStateToConsistentValues):

  • WebKitTestRunner/TestController.h:

(WTR::TestController::accessibilityIsolatedTreeMode const): Deleted.

  • WebKitTestRunner/TestOptions.cpp:

(WTR::TestOptions::defaults):

  • WebKitTestRunner/TestOptions.h:

(WTR::TestOptions::accessibilityIsolatedTreeMode const):

  • WebKitTestRunner/gtk/TestControllerGtk.cpp:

(WTR::TestController::platformResetStateToConsistentValues):
(WTR::TestController::platformResetPreferencesToConsistentValues): Deleted.

  • WebKitTestRunner/ios/TestControllerIOS.mm:

(WTR::TestController::platformResetStateToConsistentValues):
(WTR::TestController::platformResetPreferencesToConsistentValues): Deleted.

  • WebKitTestRunner/mac/TestControllerMac.mm:

(WTR::TestController::platformResetPreferencesToConsistentValues): Deleted.

  • WebKitTestRunner/win/TestControllerWin.cpp:

(WTR::TestController::platformResetPreferencesToConsistentValues): Deleted.

  • WebKitTestRunner/wpe/TestControllerWPE.cpp:

(WTR::TestController::platformResetPreferencesToConsistentValues): Deleted.

12:33 PM Changeset in webkit [275809] by Darin Adler
  • 3 edits in trunk/Source/WebCore

[Mac] Add a missing null check to slider thumb focus rendering
https://bugs.webkit.org/show_bug.cgi?id=224418
rdar://76450584

Reviewed by Sam Weinig.

  • rendering/RenderThemeMac.h: Changed updateFocusedState to take a pointer.
  • rendering/RenderThemeMac.mm:

(WebCore::RenderThemeMac::updateFocusedState): Check pointer for null. This was the
missing null check.
(WebCore::RenderThemeMac::paintSliderThumb): Pass delegate pointer instead of reference.
Also made sure we always update the focused state. Old code took the approach of just not
updating focus state when it encountered null for the focus delegate, but that's not a
good strategy. In future we may also want to change the focusDelegate function signature
to make it clear it will never return null, but that's not critical right now.
(WebCore::RenderThemeMac::setSearchCellState): Update since updateFocusedState now
takes a pointer.

10:06 AM Changeset in webkit [275808] by weinig@apple.com
  • 26 edits
    2 moves
    1 add
    1 delete in trunk

Reduce compile time and binary size cost of enabling proper CSSStyleDeclaration property access behavior
https://bugs.webkit.org/show_bug.cgi?id=222518
<rdar://problem/75136887>

Reviewed by Darin Adler.

LayoutTests/imported/w3c:

  • web-platform-tests/css/cssom/cssstyledeclaration-properties-expected.txt:

Update test result now that it is passing.

Source/WebCore:

Re-implement proper (not using named-getters) support for the CSSStyleDeclaration bindings
using a new DelegateToSharedSyntheticAttribute extended atttribute which allows IDL attributes
to share a custom getter / setter implementation and delegate their implementation to it. When
using this functionality, the synthetic attribute's implementation is passed the original property
name so it can implement functionality based on it.

We use this for CSSStyleDeclaration by breaking the huge list of generated properties into
four groups, each with their own synthetic attribute. The groups are based on the different
transformation rules in the spec.

  • bindings/js/JSDOMAttribute.h:

(WebCore::IDLAttribute::setPassingPropertyName):
(WebCore::IDLAttribute::getPassingPropertyName):
Add overloads of get/set that pass the property name to the provided function. These can't
be simple overloads of get/set as MSVC does not allow overloading with only a non-type
template parameters differentiating.

  • bindings/scripts/CodeGeneratorJS.pm:

(GenerateInterface):
Eagerly generate the any synthetic attributes before the rest of code generation,
matching the behavior of other synthetic constructions like map/set/stringifiers.

(GetAttributeGetterName):
(GetAttributeSetterName):
Add special cases to getter/setter name generation to forward to the generated
name of the synthetic attribute when delegating.

(GenerateImplementation):
Extract attribute function forward declaration genation into a new GenerateAttributeGetterAndSetterDeclaration
subroutine and use it for generation of both normal and synthetic attributes. Also adds
synthetic attributes to the list of attributes to generate function implementations for.

(GenerateAttributeGetterAndSetterDeclaration):
Extracted from GenerateImplementation. Adds extra condition to bail if DelegateToSharedSyntheticAttribute
is specified.

(GenerateAttributeGetterBodyDefinition):
Add support for the new CallWith=PropertyName extended attribute by adding a PropertyName
argument to the signature of getter body if it is present. Removes now unnecessary support
for the CSSProperty extended attribute.

(GenerateAttributeGetterTrampolineDefinition):
Switch function name from get to getPassingPropertyName if CallWith=PropertyName is specified.

(GenerateAttributeGetterDefinition):
Adds extra condition to bail if DelegateToSharedSyntheticAttribute is specified.

(GenerateAttributeSetterBodyDefinition):
Add support for the new CallWith=PropertyName extended attribute by adding a PropertyName
argument to the signature of getter body if it is present. Removes now unnecessary support
for the CSSProperty extended attribute.

(GenerateAttributeSetterTrampolineDefinition):
Switch function name from get to getPassingPropertyName if CallWith=PropertyName is specified.

(GenerateAttributeSetterDefinition):
Adds extra condition to bail if DelegateToSharedSyntheticAttribute is specified.

(GenerateCallWith):
Add support for the PropertyName value to CallWith.

(MakeSharedSyntheticAttribute):
Helper to generate the synthetic attribute from the base attribute with DelegateToSharedSyntheticAttribute
specefied. Maintains all existing extended attributes of the base attribute except
DelegateToSharedSyntheticAttribute is replaced with IsSharedSyntheticAttribute to avoid
infinite recursion.

(AddSharedSyntheticAttributesIfNeeded):
Helper to find all delegating attributes and generate / store the synthetic attributes.

(GetSharedSyntheticAttribute):
Helper to get the corresponding synthetic attribute given an attribute with
DelegateToSharedSyntheticAttribute specified on it.

  • bindings/scripts/IDLAttributes.json:

Removes CSSProperty. Adds DelegateToSharedSyntheticAttribute. Adds PropertyName value to
CallWith and SetterCallWith.

  • css/CSSStyleDeclaration.cpp:

(WebCore::lookupCSSPropertyFromIDLAttribute):
(WebCore::CSSStyleDeclaration::propertyValueForCamelCasedIDLAttribute):
(WebCore::CSSStyleDeclaration::setPropertyValueForCamelCasedIDLAttribute):
(WebCore::CSSStyleDeclaration::propertyValueForWebKitCasedIDLAttribute):
(WebCore::CSSStyleDeclaration::setPropertyValueForWebKitCasedIDLAttribute):
(WebCore::CSSStyleDeclaration::propertyValueForDashedIDLAttribute):
(WebCore::CSSStyleDeclaration::setPropertyValueForDashedIDLAttribute):
(WebCore::CSSStyleDeclaration::propertyValueForEpubCasedIDLAttribute):
(WebCore::CSSStyleDeclaration::setPropertyValueForEpubCasedIDLAttribute):
(WebCore::CSSStyleDeclaration::namedItem): Deleted.
(WebCore::CSSStyleDeclaration::setNamedItem): Deleted.
(WebCore::CSSStyleDeclaration::supportedPropertyNames const): Deleted.

  • css/CSSStyleDeclaration.h:

Replace named-getter based implementation with helpers based on the definitions
in the CSSOM spec (plus one special set for 'epub' specializations we currently
maintain).

  • css/CSSStyleDeclaration.idl:

Remove !ENABLE_ATTRIBUTE_BASED_PROPERTIES_FOR_CSS_STYLE_DECLARATION sections now that
we can fully support ENABLE_ATTRIBUTE_BASED_PROPERTIES_FOR_CSS_STYLE_DECLARATION.

  • css/makeprop.pl:

Remove !ENABLE_ATTRIBUTE_BASED_PROPERTIES_FOR_CSS_STYLE_DECLARATION sections now that
we can fully support ENABLE_ATTRIBUTE_BASED_PROPERTIES_FOR_CSS_STYLE_DECLARATION.
Replaces CSSProperty extended attributes with DelegateToSharedSyntheticAttribute and
CallWith=PropertyName, which together allow us to implement all the attributes with just
8 implementation functions.

  • bindings/scripts/test/BindingTestGlobalConstructors.idl:
  • bindings/scripts/test/JS/JSTestCSSProperty.cpp: Removed.
  • bindings/scripts/test/JS/JSTestCSSProperty.h: Removed.
  • bindings/scripts/test/JS/JSTestDelegateToSharedSyntheticAttribute.cpp: Added.
  • bindings/scripts/test/JS/JSTestDelegateToSharedSyntheticAttribute.h: Added.
  • bindings/scripts/test/JS/JSTestGlobalObject.cpp:
  • bindings/scripts/test/SupplementalDependencies.dep:
  • bindings/scripts/test/TestCSSProperty.idl: Removed.
  • bindings/scripts/test/TestDelegateToSharedSyntheticAttribute.idl: Added.

Replace CSSProperty tests with DelegateToSharedSyntheticAttribute tests and update results
all around for new generation.

Source/WTF:

  • wtf/PlatformEnable.h:

Remove ENABLE_ATTRIBUTE_BASED_PROPERTIES_FOR_CSS_STYLE_DECLARATION, as it is now the default and on everwhere.

LayoutTests:

  • fast/css/style-enumerate-properties-expected.txt:
  • fast/css/style-enumerate-properties.html:
  • fast/dom/domListEnumeration-expected.txt:
  • fast/dom/domListEnumeration.html:

Remove existing tests for iteration order, which is not standardized, and not consistent among
browsers. Adds a new one that checks invariants of the 4 groupings of properties which we currently
expect to hold, at least in our implementation.

  • fast/dom/CSSStyleDeclaration/cssstyledeclaration-properties-descriptor-expected.txt:
  • fast/dom/CSSStyleDeclaration/cssstyledeclaration-properties-descriptor.html:

Update now that the properties are proper attributes on the prototype.

  • js/dom/put-override-should-not-use-ic.html:

Switch to using a DOMStringList as the object that overrides put, since CSSStyleDeclaration no longer does.

  • transitions/transitions-parsing-expected.txt:
  • transitions/transitions-parsing.html:

Remove Object.keys() aspect of the test, which is no longer meaningful since the
properties should no longer exist in the result set.

7:35 AM Changeset in webkit [275807] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebCore

Store InputType in a Ref before calling setValueAsDecimal
https://bugs.webkit.org/show_bug.cgi?id=223535

Patch by Rob Buis <rbuis@igalia.com> on 2021-04-11
Reviewed by Ryosuke Niwa.

Store InputType in a Ref before calling setValueAsDecimal.

  • html/InputType.cpp:

(WebCore::InputType::applyStep):

5:04 AM WebKitGTK/2.32.x edited by Philippe Normand
(diff)

Apr 10, 2021:

7:57 PM Changeset in webkit [275806] by achristensen@apple.com
  • 10 edits in trunk/Source/WebKit

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

Reviewed by Chris Dumez.

  • UIProcess/Cocoa/WebProcessProxyCocoa.mm:

(WebKit::WebProcessProxy::requestHighPerformanceGPU):
(WebKit::WebProcessProxy::releaseHighPerformanceGPU):

  • UIProcess/WebProcessPool.cpp:

(WebKit::WebProcessPool::~WebProcessPool):
(WebKit::WebProcessPool::enableProcessTermination):
(WebKit::WebProcessPool::shouldTerminate):
(WebKit::WebProcessPool::disconnectProcess):
(WebKit::WebProcessPool::startedUsingGamepads):
(WebKit::WebProcessPool::stoppedUsingGamepads):
(WebKit::WebProcessPool::processStoppedUsingGamepads):
(WebKit::WebProcessPool::gamepadConnected):
(WebKit::WebProcessPool::gamepadDisconnected):

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

(WebKit::WebProcessProxy::~WebProcessProxy):
(WebKit::WebProcessProxy::shutDown):
(WebKit::WebProcessProxy::maybeShutDown):
(WebKit::WebProcessProxy::canTerminateAuxiliaryProcess):

  • UIProcess/mac/HighPerformanceGPUManager.mm:

(WebKit::HighPerformanceGPUManager::addProcessRequiringHighPerformance):
(WebKit::HighPerformanceGPUManager::removeProcessRequiringHighPerformance):
(WebKit::HighPerformanceGPUManager::updateState):

5:48 PM Changeset in webkit [275805] by Chris Dumez
  • 8 edits in trunk/Source/WebKit

Crash under WebProcessProxy::shouldSendPendingMessage()
https://bugs.webkit.org/show_bug.cgi?id=224377
<rdar://75329251>

Reviewed by David Kilzer.

We are crashing with a null-dereference of pendingMessage.encoder inside WebProcessProxy::shouldSendPendingMessage().
However, pendingMessage.encoder is a UniqueRef<> and thus cannot be null. Also, we know that the WebProcessProxy
is alive because WebProcessProxy::didFinishLaunching() has a protector.

One thing that I believe could theoretically happen and would not be safe though is AuxiliaryProcessProxy::sendMessage()
being called on a non-main thread. Sending IPC off the main thread is safe in general and something we commonly do with
an IPC::Connection. To make this safe, IPC::Connection uses a Lock to protect its vector of messages. However, sending
IPC via an AuxiliaryProcessProxy is currently not thread safe as it relies on the process state (which gets updated on
the main thread) and access to the m_pendingMessages is not synchronized.

As a speculative fix, I have added logic in AuxiliaryProcessProxy::sendMessage() to dispatch to the main thread if
we're not already on it. I have also used WTF::DestructionThread::MainRunLoop to make sure all AuxiliaryProcessProxy
objects get destroyed on the main thread.

In a follow-up, I am planning to add a release assertion in AuxiliaryProcessProxy::sendMessage() to make sure we're
on a main thread. We'll then be able to drop the "dispatching the main thread" logic. For now though, I think we
should start with the "dispatch to main thread" logic, so that we have a patch that we can cherry-pick to a branch.

  • UIProcess/AuxiliaryProcessProxy.cpp:

(WebKit::AuxiliaryProcessProxy::sendMessage):
(WebKit::AuxiliaryProcessProxy::didFinishLaunching):
(WebKit::AuxiliaryProcessProxy::replyToPendingMessages):

  • UIProcess/AuxiliaryProcessProxy.h:
  • UIProcess/GPU/GPUProcessProxy.h:
  • UIProcess/Network/NetworkProcessProxy.h:
  • UIProcess/Plugins/PluginProcessProxy.h:
  • UIProcess/WebAuthentication/WebAuthnProcessProxy.cpp:

(WebKit::WebAuthnProcessProxy::singleton):

  • UIProcess/WebProcessProxy.h:
3:41 PM Changeset in webkit [275804] by Chris Dumez
  • 3 edits
    2 adds in trunk

Regression(r275668) Potential null pointer deref in AudioParam::exponentialRampToValueAtTime(float, double)
https://bugs.webkit.org/show_bug.cgi?id=224400
<rdar://76450376>

Reviewed by Ryosuke Niwa.

Source/WebCore:

In r275668, I added null-checks for the AudioContext in AudioParam, now that it holds a WeakPtr to its
context. However, I missed a null-check in AudioParam::exponentialRampToValueAtTime(). This patch adds
the missing check.

Test: webaudio/AudioParam/audioparam-exponentialRampToValueAtTime-nocontext-crash.html

  • Modules/webaudio/AudioParam.cpp:

LayoutTests:

Add layout test coverage.

  • webaudio/AudioParam/audioparam-exponentialRampToValueAtTime-nocontext-crash-expected.txt: Added.
  • webaudio/AudioParam/audioparam-exponentialRampToValueAtTime-nocontext-crash.html: Added.
3:37 PM Changeset in webkit [275803] by Chris Dumez
  • 4 edits in trunk/LayoutTests

[ macOS ] imported/w3c/web-platform-tests/webaudio/the-audio-api/the-analysernode-interface/realtimeanalyser-fft-scaling.html is a flakey text failure
https://bugs.webkit.org/show_bug.cgi?id=223966
<rdar://problem/76028345>

Reviewed by Darin Adler.

LayoutTests/imported/w3c:

Update test as per:

Make sure subtests are run one after another, not in parallel, so that PASS lines are printed out in a
consistent order.

  • web-platform-tests/webaudio/the-audio-api/the-analysernode-interface/realtimeanalyser-fft-scaling.html:

LayoutTests:

Unskip test that should no longer be flaky.

  • platform/mac/TestExpectations:
3:02 PM Changeset in webkit [275802] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebKit

Properly use CompletionHandler when USE_OPENGL_OR_ES is set to OFF
https://bugs.webkit.org/show_bug.cgi?id=224149

Patch by Charlène Wendling <julianaito@posteo.jp> on 2021-04-10
Reviewed by Fujii Hironori.

  • WebProcess/WebPage/CoordinatedGraphics/LayerTreeHost.h:

(WebKit::LayerTreeHost::forceRepaintAsync):

1:14 PM Changeset in webkit [275801] by Angelos Oikonomopoulos
  • 4 edits in trunk/Tools

[JSC] detect infrastructure failure for remote stress tests
https://bugs.webkit.org/show_bug.cgi?id=222601

Reviewed by Yusuke Suzuki.

run-jsc-stress-tests currently detects failures by the absence of
a failure file (that is generated by each failing test). This is
fragile to begin with, as it assumes that tests that fail to run
(e.g. because of an error in the runner script) are successful by
default.

However, the main motivation for this patch is to make execution
more robust when using remote hosts. Currently,
--gnu-parallel-runner will transparently reschedule jobs on a
different host when a remote host goes away. But detectFailures
expects to be able to connect to all hosts and fetch the failure
files, which fails if a remote host is still down when the run
finishes.

Instead, this patch changes the runners to always generate a status
file with the exit code. detectFailures then fetches all status
files from all hosts that are live on exit. Tests that failed to
run are explicitly accounted for as 'noreport' and are set to
ERROR in the final report.

  • Scripts/run-javascriptcore-tests:

(runJSCStressTests):

  • Scripts/run-jsc-stress-tests:
  • Scripts/webkitruby/jsc-stress-test-writer-default.rb:
12:00 PM Changeset in webkit [275800] by ysuzuki@apple.com
  • 9 edits in trunk/Source/JavaScriptCore

[JSC] B3 reduce-double-to-float should reduce only when constant double is canonical one to reduced float value
https://bugs.webkit.org/show_bug.cgi?id=224403
<rdar://problem/76259599>

Reviewed by Mark Lam.

When reducing double-constant value to float in B3, we should check whether the double value is a canonical one
which can be converted back from the reduced float value. For example, double 1.1 is not the one since it is truncated
into float 1.1 by removing some bits.

static_cast<double>(static_cast<float>(1.1)) != 1.1

Reducing such a double to float changes the semantics.

  • b3/B3ConstDoubleValue.cpp:

(JSC::B3::ConstDoubleValue::dumpMeta const):

  • b3/B3ConstFloatValue.cpp:

(JSC::B3::ConstFloatValue::dumpMeta const):

  • b3/B3ReduceDoubleToFloat.cpp:
  • b3/B3ReduceStrength.cpp:
  • b3/testb3.h:

(populateWithInterestingValues):

  • b3/testb3_1.cpp:

(run):

  • b3/testb3_3.cpp:

(testConvertDoubleToFloatToDouble):
(testConvertDoubleToFloatEqual):

  • ftl/FTLLowerDFGToB3.cpp:

(JSC::FTL::DFG::JSC_DEFINE_JIT_OPERATION_WITH_ATTRIBUTES):
(JSC::FTL::DFG::LowerDFGToB3::crash):
(JSC::FTL::DFG::ftlUnreachable): Deleted.

10:56 AM Changeset in webkit [275799] by sihui_liu@apple.com
  • 8 edits in trunk/Source/WebKit

Unreviewed, reverting r275794, r275784, r275779

r275779 caused bots to crash and r275794, r275784 didn't fully fix it; reverting the patches to investigate.

Reverted changeset:

"Create WebIDBServer only when it is needed"
https://bugs.webkit.org/show_bug.cgi?id=224305
https://commits.webkit.org/r275779

10:11 AM Changeset in webkit [275798] by Chris Dumez
  • 13 edits
    1 add in trunk

[ macOS ] 3 webaudio/OfflineAudioContext/ layout-tests are flakey text failures
https://bugs.webkit.org/show_bug.cgi?id=224387
<rdar://problem/76468058>

Reviewed by Eric Carlson.

Source/WebCore:

Replace internals.numberOfBaseAudioContexts() test infrastructure with
internals.baseAudioContextIdentifier() & internals.isBaseAudioContextAlive().
This allows tests to check if specific BaseAudioContext instances created by the
tests are actually alive. As a result, the tests are no longer impacted by tests
running before them (and potentially leaking, see Bug 224399) or in parallel to
them in the same process.

This is the same approach we used for leak testing Documents (internals.documentIdentifier()
& internals.isDocumentAlive()).

  • Modules/webaudio/BaseAudioContext.cpp:

(WebCore::generateAudioContextID):
(WebCore::liveAudioContexts):
(WebCore::BaseAudioContext::BaseAudioContext):
(WebCore::BaseAudioContext::~BaseAudioContext):
(WebCore::BaseAudioContext::isContextAlive):

  • Modules/webaudio/BaseAudioContext.h:

(WebCore::BaseAudioContext::contextID const):

  • testing/Internals.cpp:

(WebCore::Internals::countMatchesForText):
(WebCore::Internals::baseAudioContextIdentifier):
(WebCore::Internals::isBaseAudioContextAlive):

  • testing/Internals.h:
  • testing/Internals.idl:

LayoutTests:

Update OfflineAudioContext leak tests to use the new test infrastructure. They are no longer impacted
by tests running before them or in parallel to them.

  • webaudio/OfflineAudioContext/offlineaudiocontext-leak-after-rendering-expected.txt:
  • webaudio/OfflineAudioContext/offlineaudiocontext-leak-after-rendering.html:
  • webaudio/OfflineAudioContext/offlineaudiocontext-leak-expected.txt:
  • webaudio/OfflineAudioContext/offlineaudiocontext-leak-while-suspended-expected.txt:
  • webaudio/OfflineAudioContext/offlineaudiocontext-leak-while-suspended.html:
  • webaudio/OfflineAudioContext/offlineaudiocontext-leak.html:
  • webaudio/resources/audiocontext-leak-test.js: Added.

(didGCAtLeastOneContext):
(gcAndCheckForContextLeaks):

9:12 AM Changeset in webkit [275797] by mark.lam@apple.com
  • 35 edits
    2 adds in trunk

Enable VMTraps checks in RETURN_IF_EXCEPTION.
https://bugs.webkit.org/show_bug.cgi?id=224078
rdar://75037057

Reviewed by Keith Miller.

JSTests:

  • stress/watchdog-fire-while-in-forEachInIterable.js: Added.

Source/JavaScriptCore:

In pre-existing code, termination of a VM's execution can already be requested
asynchronously (with respect to the mutator thread). For example, sources of such
a request can be a watchdog timer firing, or a request to stop execution issued
from a main web thread to a worker thread.

This request is made by firing the VMTraps::NeedTermination event on VMTraps.
Firing the event here only means setting a flag to indicate the presence of the
request. We still have to wait till the mutator thread reaches one of the
pre-designated polling check points to call VMTraps::handleTraps() in order to
service the request. As a result of this need to wait for a polling check point,
if the mutator is executing in a long running C++ loop, then a termination request
may not be serviced for a long time.

However, we observed that a lot of our C++ loops already have RETURN_IF_EXCEPTION
checks. Hence, if we can check VMTraps::needHandling() there, we can service the
VMTraps events more frequently even in a lot of C++ loops, and get a better response.

Full details of what this patch changes:

  1. Shorten some type and methods names in the VMTraps class to make code easier to read e.g. EventType => Event, needTrapHandling => needHandling.
  1. Remove the VMTraps::Mask class. Mask was introduced so that we can express a concatenation of multiple VMTraps events to form a bit mask in a simple way. In the end, it isn't flexible enough but makes the code more complicated than necessary. It is now replaced by the simpler solution of using macros to define the Events as bit fields. Having Events as bit fields intrinsically make them easy to concatenate (bitwise or) or filter (bitwise and).

Also removed the unused VMTraps::Error class.

  1. Make VMTraps::BitField a uint32_t. There was always unused padding in VMTraps to allow for this. So, we'll just extend it to a full 32-bit to make it easier to add more events in the future for other uses.
  1. Add NeedExceptionHandling as a VMTrap::Event.
  1. Make VMTraps::m_trapBits Atomic. This makes it easier to set and clear the NeedExceptionHandling bit from the mutator without a lock.
  1. RETURN_IF_EXCEPTION now checks VMTraps::m_trapBits (via VMTraps::needHandling()) instead of checking VM::m_exception. If the VMTraps::m_trapBits is non-null, the macro will call VM:hasExceptionsAfterHandlingTraps() to service VMTraps events as appropriate before returning whether an exception is being thrown. The result of VM:hasExceptionsAfterHandlingTraps() will determine if RETURN_IF_EXCEPTION returns or not.

VM:hasExceptionsAfterHandlingTraps() is intentionally designed to take a minimum
of arguments (just the VM as this pointer). This is because RETURN_IF_EXCEPTION
is called from many places, and we would like to minimize code size bloating
from this change.

  1. Simplify paramaters of VMTraps::handleTraps().

NeedDebuggerBreak's callFrame argument was always vm.topCallFrame anyway.
So, the patch makes it explicit, and removes the callFrame parameter.

NeedWatchdogCheck's globalObject argument should have always been
vm.entryScope->globalObject(), and we can remove the globalObject parameter.

Before this, we pass in whichever globalObject was convenient to grab hold of.
However, the idea of the watchdog is to time out the current script executing
on the stack. Hence, it makes sense to identify thay script by the globalObject
in use at VM entry.

So far, the only clients that uses the watchdog mechanism only operates in
scenarios with only one globalObject anyway. So this formalization to use
VMEntryScope's globalObject does not change the expected behavior.

  1. Make the execution of termination more robust. Before reading this, please read the description of the Events in VMTraps.h first, especially the section on NeedTermination.

Here's the life cycle of a termination:

  1. a client requests termination of the current execution stack by calling VM::notifyNeedTermination(). notifyNeedTermination() does 2 things:
  1. fire the NeedTermination event on VMTraps.
  1. set the VM::m_terminationInProgress flag.
  1. Firing the NeedTermination event on VMTraps means setting the NeedTermination bit on VMTraps::m_trapBits. This bit will be polled by the mutator thread later at various designated points (including RETURN_IF_EXCEPTION, which we added in this patch).

Once the mutator sees the NeedTermination bit is set, it will clear the bit
and throw the TerminationException (see VMTraps::handleTraps()). This is
unless the mutator thread is currently in a DeferTermination scope (see (8)
below). If in a DeferTermination scope, then it will not throw the
TerminationException.

Since the NeedTermination bit is cleared, the VM will no longer call
VMTraps::handleTraps() to service the event. If the mutator thread is in
a DeferTermination scope, then on exiting the scope (at scope destruction),
the scope will see that VM::m_terminationInProgress is set, and throw the
deferred TerminationException then.

  1. The TerminationException will trigger unwinding out of the current stack until we get to the outermost VMEntryScope.
  1. At the the outermost VMEntryScope, we will clear VM::m_terminationInProgress if the NeedTermination bit in VMtraps::m_trapBits is cleared.

If the NeedTermination bit is set, then that means we haven't thrown the
TerminationException yet. Currently, clients expect that we must throw the
TerminationException if NeedTermination was requested (again, read comments
at the top of VMTraps.h).

If the NeedTermination bit is set, we'll leave VM::m_terminationInProgress
set until the next time we re-enter the VM and exit to the outermost
VMEntryScope.

  1. The purpose of VM::m_terminationInProgress is to provide a summary of the fact that the VM is in a state of trying to terminate the current stack.

Note that this state is first indicated by the NeedTermination bit being set
in VMTraps::m_trapBits. Then, in VMTraps::handleTraps(), the state is
handed of with the NeedTermination bit being cleared, and the
TerminationException being thrown.

While the VM is in this termination state, we need to prevent new DFG/FTL
JIT code from being compiled and run. The reason is the firing of the
NeedTermination event has invalidated DFG/FTL code on the stack, thereby
allowing their baseline / LLInt versions which have VMTraps polling checks
to run. We don't want to compile new DFG / FTL code and possibly get stuck
in loops in there before the termination is complete.

In operationOptimize(), we check if VM::m_terminationInProgress is set, and
prevent new DFG (and therefore FTL) code from being compiled if needed.
Note: it is easier to check a single flag, VM::m_terminationInProgress,
then to check both if the NeedTermination bit is set or if the
TerminationException is being being thrown.

  1. One complication of being able to service VMTraps in RETURN_IF_EXCEPTION checks is that some of our code (usually for lengthier initializations and bootstrapping) currently does not handle exceptions well, e.g. JSGlobalObject::init(). They rely on the code crashing if an exception is thrown while still initializing.

However, for a worker thread, a TerminationException (requested by the main
thread) may arrive before the initialization is complete. This can lead to
crashes because part of the initialization may be aborted in the presence of
an exception, while other parts still expect everything prior to have been
initialized correctly. For resource exhaustion cases (which is abnormal), it
is OK to crash. For the TerminationException (which can be part of normal
operation), we should not be crashing.

To work around this, we introduce a DeferTermination RAII scope object that we
deploy in this type of initialization code. With the scope in effect,

  1. if a TerminationException arrives but hasn't been thrown yet, it will be deferred till the scope ends before being thrown.
  2. if a TerminationException has already been thrown, the scope will stash the exception, clear it from the VM so that the initialization code can run to completion, and then re-throw the exception when the scope ends.

Currently, we only need to use the DeferTermination scope in a few places
where we know that initialization code will only run for a short period of time.

DeferTermination should not be used for code that can block waiting on an
external event for a long time. Obviously, doing so will prevent the VM
termination mechanism from working.

  1. Replaced llint_slow_path_check_if_exception_is_uncatchable_and_notify_profiler

and operationCheckIfExceptionIsUncatchableAndNotifyProfiler with
llint_slow_path_retrieve_and_clear_exception_if_catchable and
operationRetrieveAndClearExceptionIfCatchable.

The 2 runtime functions doesn't actually do anything to notify a profiler.
So, we drop that part of the name.

After returning from these runtime functions respectively, the previous LLInt
and JIT code, which calls these runtimes functions, would go on to load
VM::m_exception, and then store a nullptr there to clear it. This is wasteful.

This patch changes the runtime function to clear and return the Exception
instead. As a result, the calling LLInt and JIT code is simplified a bit.

Note also that clearing an exception now also entails clearing the
NeedExceptionHandling bit in VMTraps::m_trapBits in an atomic way. The above
change makes it easy to do this clearing with C++ code.

  1. Fix ScriptFunctionCall::call() to handle exceptions correctly. Previously,

it had one case where it propagates an exception, while another eats it.
Change this function to eat the exception in both cases. This is approproiate
because ScriptFunctionCall is only used to execute some Inspector instrumentation
calls. It doesn't make sense to propagate the exception back to user code.

  1. Fix the lazy initialization of JSGlobalObject::m_defaultCollator to be able to

handle the TerminationException.

  1. Not related to TerminationException, but this patch also fixes

MarkedArgumentBuffer::expandCapacity() to use Gigacage::tryMalloc() instead of
Gigacage::malloc(). This is needed as one of the fixes to make the
accompanying test case work.

This patch increases code size by 320K (144K for JSC, 176K for WebCore) measured
on x86_64.

  • CMakeLists.txt:
  • JavaScriptCore.xcodeproj/project.pbxproj:
  • assembler/MacroAssemblerARM64.h:

(JSC::MacroAssemblerARM64::branchTest32):

  • assembler/MacroAssemblerARMv7.h:

(JSC::MacroAssemblerARMv7::branchTest32):

  • assembler/MacroAssemblerMIPS.h:

(JSC::MacroAssemblerMIPS::branchTest32):

  • assembler/MacroAssemblerX86Common.h:

(JSC::MacroAssemblerX86Common::branchTest32):

  • bindings/ScriptFunctionCall.cpp:

(Deprecated::ScriptFunctionCall::call):

  • dfg/DFGSpeculativeJIT.cpp:

(JSC::DFG::SpeculativeJIT::compileCheckTraps):

  • ftl/FTLLowerDFGToB3.cpp:

(JSC::FTL::DFG::LowerDFGToB3::compileCheckTraps):

  • interpreter/Interpreter.cpp:

(JSC::Interpreter::executeProgram):
(JSC::Interpreter::executeCall):
(JSC::Interpreter::executeConstruct):
(JSC::Interpreter::execute):
(JSC::Interpreter::executeModuleProgram):

  • interpreter/InterpreterInlines.h:

(JSC::Interpreter::execute):

  • jit/JITOpcodes.cpp:

(JSC::JIT::emit_op_catch):
(JSC::JIT::emit_op_check_traps):

  • jit/JITOpcodes32_64.cpp:

(JSC::JIT::emit_op_catch):

  • jit/JITOperations.cpp:

(JSC::JSC_DEFINE_JIT_OPERATION):

  • jit/JITOperations.h:
  • llint/LLIntSlowPaths.cpp:

(JSC::LLInt::LLINT_SLOW_PATH_DECL):

  • llint/LLIntSlowPaths.h:
  • llint/LowLevelInterpreter.asm:
  • llint/LowLevelInterpreter32_64.asm:
  • llint/LowLevelInterpreter64.asm:
  • runtime/ArgList.cpp:

(JSC::MarkedArgumentBuffer::expandCapacity):

  • runtime/DeferTermination.h: Added.

(JSC::DeferTermination::DeferTermination):
(JSC::DeferTermination::~DeferTermination):

  • runtime/ExceptionScope.h:

(JSC::ExceptionScope::exception const):
(JSC::ExceptionScope::exception): Deleted.

  • runtime/JSGlobalObject.cpp:

(JSC::JSGlobalObject::init):
(JSC::JSGlobalObject::finishCreation):

  • runtime/LazyPropertyInlines.h:

(JSC::ElementType>::callFunc):

  • runtime/StringPrototype.cpp:

(JSC::JSC_DEFINE_HOST_FUNCTION):

  • runtime/VM.cpp:

(JSC::VM::hasExceptionsAfterHandlingTraps):
(JSC::VM::clearException):
(JSC::VM::setException):
(JSC::VM::throwTerminationException):
(JSC::VM::throwException):

  • runtime/VM.h:

(JSC::VM::terminationInProgress const):
(JSC::VM::setTerminationInProgress):
(JSC::VM::notifyNeedTermination):
(JSC::VM::DeferExceptionScope::DeferExceptionScope):
(JSC::VM::DeferExceptionScope::~DeferExceptionScope):
(JSC::VM::handleTraps): Deleted.
(JSC::VM::needTrapHandling): Deleted.
(JSC::VM::needTrapHandlingAddress): Deleted.
(JSC::VM::setException): Deleted.
(JSC::VM::clearException): Deleted.

  • runtime/VMEntryScope.cpp:

(JSC::VMEntryScope::~VMEntryScope):

  • runtime/VMTraps.cpp:

(JSC::VMTraps::tryInstallTrapBreakpoints):
(JSC::VMTraps::fireTrap):
(JSC::VMTraps::handleTraps):
(JSC::VMTraps::takeTopPriorityTrap):
(JSC::VMTraps::deferTermination):
(JSC::VMTraps::undoDeferTermination):

  • runtime/VMTraps.h:

(JSC::VMTraps::onlyContainsAsyncEvents):
(JSC::VMTraps::needHandling const):
(JSC::VMTraps::trapBitsAddress):
(JSC::VMTraps::isDeferringTermination const):
(JSC::VMTraps::notifyGrabAllLocks):
(JSC::VMTraps::hasTrapBit):
(JSC::VMTraps::clearTrapBit):
(JSC::VMTraps::setTrapBit):
(JSC::VMTraps::Mask::Mask): Deleted.
(JSC::VMTraps::Mask::allEventTypes): Deleted.
(JSC::VMTraps::Mask::bits const): Deleted.
(JSC::VMTraps::Mask::init): Deleted.
(JSC::VMTraps::interruptingTraps): Deleted.
(JSC::VMTraps::needTrapHandling): Deleted.
(JSC::VMTraps::needTrapHandlingAddress): Deleted.
(JSC::VMTraps::hasTrapForEvent): Deleted.
(JSC::VMTraps::setTrapForEvent): Deleted.
(JSC::VMTraps::clearTrapForEvent): Deleted.

Source/WebCore:

  1. Add DeferTermination in WorkerOrWorkletScriptController::initScript(). This allows us to avoid having to make all exception checking in WorkerOrWorkletScriptController::initScript() very thorough and complete. Currently, they aren't.
  1. Fix WorkerOrWorkletScriptController::evaluate() to handle the TerminationException.
  1. Fix JSEventListener::handleEvent() to handle the TerminationException correctly. Previously, in one case, it was checking scope.exception() for the exception, but the exception has already been taken out of there.
  • bindings/js/JSEventListener.cpp:

(WebCore::JSEventListener::handleEvent):

  • workers/WorkerOrWorkletScriptController.cpp:

(WebCore::WorkerOrWorkletScriptController::evaluate):
(WebCore::WorkerOrWorkletScriptController::initScript):

5:31 AM Changeset in webkit [275796] by Alan Bujtas
  • 3 edits in trunk/Source/WebCore

RenderFlexibleBox::m_hasDefiniteHeight should not need to be mutable
https://bugs.webkit.org/show_bug.cgi?id=224404

Reviewed by Antti Koivisto.

Let's just fix constness instead.

  • rendering/RenderFlexibleBox.cpp:

(WebCore::RenderFlexibleBox::childIntrinsicLogicalWidth):
(WebCore::RenderFlexibleBox::crossAxisIntrinsicExtentForChild):
(WebCore::RenderFlexibleBox::useChildAspectRatio):
(WebCore::RenderFlexibleBox::childMainSizeIsDefinite):
(WebCore::RenderFlexibleBox::childCrossSizeIsDefinite):
(WebCore::RenderFlexibleBox::childHasIntrinsicMainAxisSize):
(WebCore::RenderFlexibleBox::childIntrinsicLogicalWidth const): Deleted.
(WebCore::RenderFlexibleBox::crossAxisIntrinsicExtentForChild const): Deleted.
(WebCore::RenderFlexibleBox::useChildAspectRatio const): Deleted.
(WebCore::RenderFlexibleBox::childMainSizeIsDefinite const): Deleted.
(WebCore::RenderFlexibleBox::childCrossSizeIsDefinite const): Deleted.
(WebCore::RenderFlexibleBox::childHasIntrinsicMainAxisSize const): Deleted.

  • rendering/RenderFlexibleBox.h:
4:20 AM Changeset in webkit [275795] by aakash_jain@apple.com
  • 3 edits in trunk/Tools

Improve step description when compile-webkit step is skipped
https://bugs.webkit.org/show_bug.cgi?id=224373

Reviewed by Jonathan Bedard.

  • CISupport/ews-build/steps.py:

(CompileWebKit.getResultSummary): Set custom summary when this step is skipped.

  • CISupport/ews-build/steps_unittest.py: Updated unit-tests.
1:39 AM Changeset in webkit [275794] by sihui_liu@apple.com
  • 2 edits in trunk/Source/WebKit

Unreviewed, fix test crashes after r275779
https://bugs.webkit.org/show_bug.cgi?id=224305
rdar://71962196

  • NetworkProcess/IndexedDB/WebIDBServer.cpp:

(WebKit::WebIDBServer::WebIDBServer): rolling back change on setting thread name as we see crash in
pthread_setname_np.

Apr 9, 2021:

11:43 PM Changeset in webkit [275793] by graouts@webkit.org
  • 20 edits in trunk

calc() simplification for a multiplication should apply the multiplication to each value of an addition
https://bugs.webkit.org/show_bug.cgi?id=224376

Reviewed by Simon Fraser.

LayoutTests/imported/w3c:

Mark 99 WPT progressions.

  • web-platform-tests/css/css-backgrounds/animations/background-position-origin-interpolation-expected.txt:
  • web-platform-tests/css/css-shapes/animation/shape-outside-interpolation-expected.txt:
  • web-platform-tests/css/css-shapes/shape-outside/values/shape-margin-003-expected.txt:
  • web-platform-tests/css/css-shapes/shape-outside/values/shape-outside-circle-010-expected.txt:
  • web-platform-tests/css/css-shapes/shape-outside/values/shape-outside-circle-011-expected.txt:
  • web-platform-tests/css/css-shapes/shape-outside/values/shape-outside-ellipse-010-expected.txt:
  • web-platform-tests/css/css-shapes/shape-outside/values/shape-outside-ellipse-011-expected.txt:
  • web-platform-tests/css/css-shapes/shape-outside/values/shape-outside-inset-008-expected.txt:
  • web-platform-tests/css/css-shapes/shape-outside/values/shape-outside-inset-009-expected.txt:
  • web-platform-tests/css/css-shapes/shape-outside/values/shape-outside-polygon-006-expected.txt:
  • web-platform-tests/web-animations/animation-model/animation-types/interpolation-per-property-001-expected.txt:

Source/WebCore:

An expression such as calc(0.5 * (100% + 100px)) should be simplified to calc(50% + 50px). We produce
these types of expressions when blending between a percentage and a dimension, and they can also be
specified explicitly in style.

  • css/CSSCalculationValue.cpp:

(WebCore::CSSCalcOperationNode::combineChildren):

LayoutTests:

Rebase some non-WPT tests to account for new results.

  • css3/calc/simplification-expected.txt:
  • transitions/background-position-transitions-expected.txt:
  • transitions/background-position-transitions.html:
9:09 PM Changeset in webkit [275792] by Simon Fraser
  • 3 edits in trunk/Source/WebKit

[iOS WK2] CADisplayLink in the web process is used unintentionally
https://bugs.webkit.org/show_bug.cgi?id=224395

Reviewed by Tim Horton.

When RemoteLayerTreeDrawingArea called windowScreenDidChange() from its constructor,
m_page.drawingArea() was null which resulted in DisplayRefreshMonitor::create()
receiving a null DisplayRefreshMonitorFactory*, so it fell back to the legacy
DisplayRefreshMonitorIOS, instead of using RemoteLayerTreeDisplayRefreshMonitor.

Fix by sending windowScreenDidChange() from the UI process, with the synthetic
DisplayID generated from the webPageID(). This has the advantage that
WebPageProxy will also store the correct DisplayID, and is more similar to macOS.

  • UIProcess/ios/WKContentView.mm:

(-[WKContentView _commonInitializationWithProcessPool:configuration:]):

  • WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.mm:

(WebKit::RemoteLayerTreeDrawingArea::RemoteLayerTreeDrawingArea):

8:01 PM Changeset in webkit [275791] by Wenson Hsieh
  • 12 edits
    2 adds in trunk

REGRESSION (r271660): Tap highlight no longer shows when tapping clickable elements without touch event listeners
https://bugs.webkit.org/show_bug.cgi?id=224385
<rdar://problem/76462370>

Reviewed by Tim Horton.

Source/WebKit:

In r271660, I added a call to -finishInteraction when resetting the synthetic tap gesture to fix a bug where
it was possible for the tap highlight to remain indefinitely when tapping on a clickable element with a touchend
event listener. This was because the touch end deferring gesture defers -_singleTapDidReset: until after
-_didGetTapHighlightForRequest:…nodeHasBuiltInClickHandling:, where we receive the tap highlight information.

`
2021-04-09 13:05:27.141097-0700 -[WKContentView(WKInteraction) _singleTapIdentified:]
2021-04-09 13:05:27.148678-0700 -[WKContentView(WKInteraction) _didGetTapHighlightForRequest:…nodeHasBuiltInClickHandling:]
2021-04-09 13:05:27.162525-0700 -[WKContentView(WKInteraction) _singleTapRecognized:]
2021-04-09 13:05:27.162675-0700 ↳ -[WKContentView(WKInteraction) _showTapHighlight]
2021-04-09 13:05:27.163250-0700 -[WKContentView(WKInteraction) _singleTapDidReset:]
2021-04-09 13:05:51.849481-0700 ↳ -[WKContentView(WKInteraction) _finishInteraction]
`

However, in the case where there is no touchend event listener and when fast-click is active, we reset the tap
gesture before receiving the tap highlight information:

`
2021-04-09 13:05:51.836638-0700 -[WKContentView(WKInteraction) _singleTapIdentified:]
2021-04-09 13:05:51.846152-0700 -[WKContentView(WKInteraction) _singleTapRecognized:]
2021-04-09 13:05:51.847196-0700 -[WKContentView(WKInteraction) _singleTapDidReset:]
2021-04-09 13:05:51.848563-0700 -[WKContentView(WKInteraction) _didGetTapHighlightForRequest:…nodeHasBuiltInClickHandling:]
2021-04-09 13:05:51.848851-0700 ↳ -[WKContentView(WKInteraction) _showTapHighlight]
2021-04-09 13:05:51.849481-0700 ↳ -[WKContentView(WKInteraction) _finishInteraction]

`

Critically, this means that calling -_finishInteraction in -_singleTapDidReset: prematurely flagged the
tap highlight request as complete (by setting _isTapHighlightIDValid to NO) in the case where we aren't
deferring gestures, which caused us to avoid showing the tap highlight at all when we eventually receive the tap
highlight information.

To fix this, only fade out the tap highlight view in -_singleTapDidReset: if the tap highlight request has
already finished (i.e. _isTapHighlightIDValid has been set to NO). Additionally, split logic for fading out
the highlight view into a separate method, and add a BOOL flag to make the fading idempotent.

Test: fast/events/touch/ios/tap-highlight-during-synthetic-click.html

  • UIProcess/API/ios/WKWebViewPrivateForTestingIOS.h:
  • UIProcess/API/ios/WKWebViewTestingIOS.mm:

(-[WKWebView _tapHighlightViewRect]):

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

(-[WKContentView tapHighlightViewRect]):

Also add a testing-only method to report the frame of the tap highlight view. Note that this only attempts to
return the current frame of the tap highlight view instead of converting the frame to the coordinate system of
the content view (as other similar testing hooks do), since the tap highlight view only exists in the view
hierarchy for a brief duration.

(-[WKContentView _finishInteraction]):
(-[WKContentView _fadeTapHighlightViewIfNeeded]):
(-[WKContentView _singleTapDidReset:]):

Tools:

Add plumbing to expose the frame of the tap highlight view via UIScriptController.

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

(WTR::UIScriptController::tapHighlightViewRect const):

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

(WTR::UIScriptControllerIOS::tapHighlightViewRect const):

LayoutTests:

Add a new layout test that exercises 3 scenarios, using the new testing SPI:

  1. Tapping on a button that prevents the "touchend" event (and therefore prevents clicking) should cause

the tap highlight to not show up.

  1. Tapping on a button that has a "touchend" event listener and does not prevent default should cause the tap

highlight to show up.

  1. Tapping on a button with no event listeners should cause the tap highlight to show up.
  • fast/events/touch/ios/tap-highlight-during-synthetic-click-expected.txt: Added.
  • fast/events/touch/ios/tap-highlight-during-synthetic-click.html: Added.
  • resources/ui-helper.js:

(window.UIHelper.tapHighlightViewRect):

7:51 PM WebKitGTK/2.32.x edited by Michael Catanzaro
(diff)
7:11 PM Changeset in webkit [275790] by Simon Fraser
  • 6 edits in trunk/Source/WebCore

scrollingTreeNodeDidScroll() should just trigger a rendering udpate
https://bugs.webkit.org/show_bug.cgi?id=224394

Reviewed by Tim Horton.

After handling wheel events on the scrolling thread,
ThreadedScrollingTree::scrollingTreeNodeDidScroll() appends to a queue of pending updates
and then triggers applyPendingScrollUpdates() on the main thread to process those updates.
However, every rendering update also processes pending scroll updates via
synchronizeStateFromScrollingTree(), so it's simpler if we just trigger a rendering update.

  • page/scrolling/AsyncScrollingCoordinator.cpp:

(WebCore::AsyncScrollingCoordinator::scrollingThreadAddedPendingUpdate):
(WebCore::AsyncScrollingCoordinator::scheduleRenderingUpdate):

  • page/scrolling/AsyncScrollingCoordinator.h:
  • page/scrolling/ThreadedScrollingTree.cpp:

(WebCore::ThreadedScrollingTree::scrollingTreeNodeDidScroll):

  • page/scrolling/mac/ScrollingCoordinatorMac.mm:

(WebCore::ScrollingCoordinatorMac::scheduleTreeStateCommit):

  • page/scrolling/nicosia/ScrollingCoordinatorNicosia.cpp:

(WebCore::ScrollingCoordinatorNicosia::scheduleTreeStateCommit):

6:55 PM Changeset in webkit [275789] by Brent Fulgham
  • 2 edits in trunk/Source/WebKit

[iOS] Correct process-info rules to restrict to self
https://bugs.webkit.org/show_bug.cgi?id=224383
<rdar://problem/66582454>

Reviewed by Eric Carlson.

The sandbox allows 'process-info' by default, so our allow rules have no real impact.
We need to deny access first, as we do on macOS, so that the allow rules have meaning.

I reviewed the macOS sandbox, and made sure the iOS sandbox allows the same items.

  • Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb:
6:00 PM Changeset in webkit [275788] by Alexey Shvayka
  • 34 edits in trunk

Remove className() and toStringName() from the method table
https://bugs.webkit.org/show_bug.cgi?id=224247

Reviewed by Darin Adler.

Source/JavaScriptCore:

ES6 introduced Symbol.toStringTag to customize Object.prototype.toString return value.
It was adopted by WebIDL spec, Chrome's DevTools, Node.js etc. There is no reason to
keep 2 method table methods, each with only 1 call site, instead of using the symbol.

Also, it's a bit confusing that for some objects, method table's className() returns
different result than JSCell::className(VM&).

This change:

  1. Removes JSProxy's className() / toStringName() methods because its target() is a global object that never has these overrides and uses Symbol.toStringTag instead.
  1. Removes DebuggerScope's className() / toStringName() overrides because its objectAtScope() has these methods extremely rarely (e.g. with (new Date) {}), and its not displayed by Web Inspector.
  1. Merges JSCallbackObject's className() / toStringName() methods into Symbol.toStringTag branch of getOwnPropertySlot(), with permissive property attributes. To avoid any possible breakage, we make sure that it will be shadowed by a structure property.
  1. Reworks JSObject::calculatedClassName() to rely on Symbol.toStringTag, matching Chrome's DevTools behavior. On its own, it's a nice change for Web Inspector. We make sure to lookup Symbol.toStringTag if constructor.name inference fails to avoid confusion when extending builtins.
  1. Removes now unused className() from the method table.
  1. Removes toStringName() override from JSFinalizationRegistry because its builtin tag [1] is already "Object".
  1. Introduces BooleanObjectType for Boolean wrapper object, and Boolean.prototype as it's also required to have a BooleanData internal slot [2].
  1. Reworks Object.prototype.toString to determine builtin tag [1] based on JSType rather than performing method table call. It's guaranteed that a) the set of types we are checking against won't be expanded, and b) objects with these types have correct className.
  1. Removes now unused toStringTag() from the method table.

This patch is performance-neutral and carefully preserves current behavior for API objects,
including isPokerBros() hack.

[1]: https://tc39.es/ecma262/#sec-object.prototype.tostring (steps 5-14)
[2]: https://tc39.es/ecma262/#sec-properties-of-the-boolean-prototype-object

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

(JSC::JSCallbackObject<Parent>::getOwnPropertySlot):
(JSC::JSCallbackObject<Parent>::className): Deleted.
(JSC::JSCallbackObject<Parent>::toStringName): Deleted.

  • API/tests/testapiScripts/testapi.js:
  • debugger/DebuggerScope.cpp:

(JSC::DebuggerScope::className): Deleted.
(JSC::DebuggerScope::toStringName): Deleted.

  • debugger/DebuggerScope.h:
  • runtime/BooleanObject.cpp:

(JSC::BooleanObject::toStringName): Deleted.

  • runtime/BooleanObject.h:

(JSC::BooleanObject::createStructure):

  • runtime/BooleanPrototype.h:
  • runtime/ClassInfo.h:
  • runtime/DateInstance.cpp:

(JSC::DateInstance::toStringName): Deleted.

  • runtime/DateInstance.h:
  • runtime/ErrorInstance.cpp:

(JSC::ErrorInstance::toStringName): Deleted.

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

(JSC::JSCell::className): Deleted.
(JSC::JSCell::toStringName): Deleted.

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

(JSC::JSFinalizationRegistry::toStringName): Deleted.

  • runtime/JSFinalizationRegistry.h:
  • runtime/JSObject.cpp:

(JSC::JSObject::calculatedClassName):
(JSC::JSObject::className): Deleted.
(JSC::isPokerBros): Deleted.
(JSC::JSObject::toStringName): Deleted.

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

(JSC::JSProxy::className): Deleted.
(JSC::JSProxy::toStringName): Deleted.

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

(WTF::printInternal):

  • runtime/JSType.h:
  • runtime/NumberObject.cpp:

(JSC::NumberObject::toStringName): Deleted.

  • runtime/NumberObject.h:

(JSC::NumberObject::createStructure):

  • runtime/ObjectPrototype.cpp:

(JSC::isPokerBros):
(JSC::inferBuiltinTag):
(JSC::objectPrototypeToString):

  1. Removes jsNontrivialString() because it's assertion may fail in case of iOS hack.
  2. Utilizes AtomStringImpl to avoid allocating StringImpl for a small fixed set of strings.
  • runtime/RegExpObject.cpp:

(JSC::RegExpObject::toStringName): Deleted.

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

(JSC::StringObject::toStringName): Deleted.

  • runtime/StringObject.h:

LayoutTests:

  • inspector/model/remote-object-get-properties-expected.txt:
  • inspector/model/remote-object-get-properties.html:
5:45 PM Changeset in webkit [275787] by Jean-Yves Avenard
  • 17 edits
    2 adds in trunk

Media Session action should default to the MediaElement's default when no MediaSession handler are set
https://bugs.webkit.org/show_bug.cgi?id=224278
<rdar://problem/76339841>

Reviewed by Youenn Fablet .

Source/WebCore:

When a media session doesn't explicitly define an action handler, we use the media element
default action of the same type.
Media Session doesn't track a particular media element, instead it loosely defines a guessed playback state
that tracks if some element in the current document is playing and not muted or otherwise paused.
(see https://w3c.github.io/mediasession/#playback-state-model)
We therefore need to determine what is currently the most suitable media element available in this document.
Unlike the Media Controller and the Now Playing policy that will only ever select a media
if it is currently playing and not muted, for the Media Session we may have to interact with paused media elements.
For this we add a new PlaybackControlsPurpose named MediaSession defining new search criterias.
A media element will be up for selection if it's playable (according to autoplay policy). From then,
the best element will be selected accoring to its visibility, its size, if it's beeing played previously and
the last time it was interacted with.

Test: media/media-session/default-actionHandlers.html

  • Modules/mediasession/MediaSession.cpp:

(WebCore::platformCommandForMediaSessionAction): New convenience method to convert one datatype into another.
(WebCore::MediaSession::callActionHandler): Use user defined handler if present or run the related action on
the most suitable media element
(WebCore::MediaSession::activeMediaElement const): Determine the currently active media element in the current
Media Session's document.

  • Modules/mediasession/MediaSession.h:
  • html/HTMLMediaElement.cpp:

(WebCore::mediaElementSessionInfoForSession): Add new hasEverNotifiedAboutPlaying member.
(WebCore::preferMediaControlsForCandidateSessionOverOtherCandidateSession): Amend sorting algorithm to cater
for the MediaSession criterias described above.
(WebCore::mediaSessionMayBeConfusedWithMainContent): When using MediaSession purpose, there is no possible
ambiguity, amend as such.
(WebCore::HTMLMediaElement::bestMediaElementForRemoteControls): Renamed from bestMediaElementForShowingPlaybackControlsManager
method to better match how the method is actually used.

  • html/HTMLMediaElement.h:
  • html/MediaElementSession.cpp:

(WebCore::MediaElementSession::canShowControlsManager const): Amend for new Media Session criterias.
(WebCore::MediaElementSession::didReceiveRemoteControlCommand): Always let MediaSession manage the actions handling.

  • html/MediaElementSession.h:
  • page/Page.cpp:

(WebCore::Page::playbackControlsManagerUpdateTimerFired): amend following method rename.

  • platform/audio/cocoa/MediaSessionManagerCocoa.mm:

(WebCore::MediaSessionManagerCocoa::nowPlayingEligibleSession): amend following method rename.

  • testing/Internals.cpp:

(WebCore::Internals::bestMediaElementForRemoteControls): Renamed from bestMediaElementForShowingPlaybackControlsManager as above.
(WebCore::Internals::sendMediaSessionAction): amend following method rename.

  • testing/Internals.h: Rename method
  • testing/Internals.idl: Rename method

LayoutTests:

  • media/audio-background-playback-playlist-expected.txt: Renamed method
  • media/audio-background-playback-playlist.html: Renamed method
  • media/media-session/default-actionHandlers-expected.txt: Added.
  • media/media-session/default-actionHandlers.html: Added.
  • platform/mac/media/video-best-element-for-playback-controls-purpose-expected.txt: Renamed method
  • platform/mac/media/video-best-element-for-playback-controls-purpose.html: Renamed method
5:03 PM Changeset in webkit [275786] by Wenson Hsieh
  • 2 edits in trunk/Source/WebKit

Web process crashes if image extraction is requested for an element that is pending image extraction
https://bugs.webkit.org/show_bug.cgi?id=224397
<rdar://problem/76472254>

Reviewed by Tim Horton.

Add a missing null check, so that we don't append (and then end up attempting to call) a null completion handler
in the case where image extraction is re-requested for an element that already has a pending image extraction
request.

This is currently not possible to reliably test this; in a future patch, I will add testing infrastructure that
will allow us to simulate image extraction requests and responses at the client layer.

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::requestImageExtraction):

4:56 PM Changeset in webkit [275785] by Robert Jenner
  • 2 edits in trunk/LayoutTests

[ macOS ] webgl/1.0.3/conformance/glsl/constructors/glsl-construct-ivec2.html is a flakey timeout
https://bugs.webkit.org/show_bug.cgi?id=224396

Unreviewed test gardening.

  • platform/mac/TestExpectations: Updating test expectations to Pass Timeout while test is reviewed.
4:54 PM Changeset in webkit [275784] by sihui_liu@apple.com
  • 2 edits in trunk/Source/WebKit

Unreviewed, fix for test crashes after r275779.
https://bugs.webkit.org/show_bug.cgi?id=224305
rdar://71962196

  • NetworkProcess/NetworkProcess.cpp:

(WebKit::NetworkProcess::createWebIDBServer): hitting an assertion when deref the WeakPtr, so rolling back to
old impl.

4:33 PM Changeset in webkit [275783] by jer.noble@apple.com
  • 2 edits in trunk/Source/WebKit

[Cocoa] Don't set LD_RUNPATH_SEARCH_PATHS in the WebKit project file.
https://bugs.webkit.org/show_bug.cgi?id=224392

Reviewed by Eric Carlson.

  • WebKit.xcodeproj/project.pbxproj:
3:20 PM Changeset in webkit [275782] by Russell Epstein
  • 1 copy in tags/Safari-612.1.10.1

Tag Safari-612.1.10.1.

3:20 PM Changeset in webkit [275781] by Russell Epstein
  • 1 delete in tags/Safari-612.1.10.1

Delete tag.

3:09 PM Changeset in webkit [275780] by Fujii Hironori
  • 2 edits in trunk/Source/WebCore

[Cairo][GPUP] GraphicsContextGLOpenGL::paintToCanvas can't paint into a remote canvas
https://bugs.webkit.org/show_bug.cgi?id=224271

Reviewed by Don Olmstead.

WebGL canvas tests were failing for WinCairo port since r274327
enabled GPU process for canvas rendering. In the current
implementation of WebKitTestRunner, 2D canvases are in GPU
process, while WebGL canvases are in WebContent process. Remote
canvases in GPU process failed to drawImage() with a WebGL canvas
what is in WebContent process.

GraphicsContextGLOpenGL::paintToCanvas of Cairo port was painting
directly into PlatformContextCairo. It also should use
GraphicsContext::drawNativeImage as well as CG port does.

  • platform/graphics/cairo/GraphicsContextGLCairo.cpp:

(WebCore::GraphicsContextGLOpenGL::paintToCanvas):

3:04 PM Changeset in webkit [275779] by sihui_liu@apple.com
  • 8 edits in trunk/Source/WebKit

Create WebIDBServer only when it is needed
https://bugs.webkit.org/show_bug.cgi?id=224305
rdar://71962196

Reviewed by Alex Christensen.

Currently each WebIDBServer comes with a thread, so we don't want to keep WebIDBServer if it's not in use.
Now there are two cases where network process needs a WebIDBServer:

  1. handle requests from UI process to collect or remove data
  2. handle requests from Web process to perform IDB operations

We created a WebIDBServer when network process connects to a web process, and we should create it when
web process is about to perform IDB operations. Also, we should remove WebIDBServer if it's done handling
requests, i.e count of pending requests from UI process is 0 and WebIDBServer is not associated with any web
process connection.

  • NetworkProcess/IndexedDB/WebIDBServer.cpp:

(WebKit::WebIDBServer::create):
(WebKit::WebIDBServer::WebIDBServer): Add SessionID to thread name so we know which session to blame in crash
traces.
(WebKit::m_closeCallback):
(WebKit::WebIDBServer::getOrigins):
(WebKit::WebIDBServer::closeAndDeleteDatabasesModifiedSince):
(WebKit::WebIDBServer::closeAndDeleteDatabasesForOrigins):
(WebKit::WebIDBServer::renameOrigin):
(WebKit::WebIDBServer::removeConnection):
(WebKit::WebIDBServer::tryClose):

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

(WebKit::NetworkConnectionToWebProcess::addIDBConnection):

  • NetworkProcess/NetworkConnectionToWebProcess.h:
  • NetworkProcess/NetworkConnectionToWebProcess.messages.in: Add a message for web process to ask network process

to create WebIDBServer if not exists, and associate the web process connection with WebIDBServer.

  • NetworkProcess/NetworkProcess.cpp:

(WebKit::NetworkProcess::createNetworkConnectionToWebProcess):
(WebKit::NetworkProcess::destroySession):
(WebKit::NetworkProcess::createWebIDBServer):
(WebKit::NetworkProcess::connectionToWebProcessClosed):
(WebKit::NetworkProcess::removeWebIDBServerIfPossible): Deleted. Move the removal code to WebIDBServer.

  • WebProcess/Databases/IndexedDB/WebIDBConnectionToServer.cpp:

(WebKit::WebIDBConnectionToServer::WebIDBConnectionToServer):

2:56 PM Changeset in webkit [275778] by aakash_jain@apple.com
  • 2 edits in trunk/Tools

git-webkit find doesn't work well with unicode characters in author name (follow-up fix)
https://bugs.webkit.org/show_bug.cgi?id=223686

Reviewed by Jonathan Bedard.

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

(Info.main): Updated the error message.

1:37 PM Changeset in webkit [275777] by Russell Epstein
  • 13 edits in branches/safari-612.1.10-branch/Source

Cherry-pick r275775. rdar://problem/76467684

WTF SoftLinking macros can cause collisions with their target functions
https://bugs.webkit.org/show_bug.cgi?id=224379
<rdar://76434202>

Reviewed by Eric Carlson.

Source/WebCore:

Don't include the SoftLinkLibxslt.h file in the .cpp file.

  • xml/SoftLinkLibxslt.cpp:
  • xml/SoftLinkLibxslt.h:

Source/WebCore/PAL:

  • pal/cf/CoreMediaSoftLink.h:
  • pal/cocoa/MediaToolboxSoftLink.h:
  • pal/cocoa/OpenGLSoftLinkCocoa.h:
  • pal/cocoa/PassKitSoftLink.h:
  • pal/ios/UIKitSoftLink.h:
  • pal/spi/cocoa/AccessibilitySupportSoftLink.cpp:
  • pal/spi/cocoa/AccessibilitySupportSoftLink.h:

Source/WTF:

Do not declare an inline version of the target function, as this will collide if the target function
becomes inlined. Instead, callers should use the explicit softLink_Library_Function() syntax, or
the LibrarySoftLinking.h headers should use #defines to re-declare the function name.

  • wtf/cocoa/SoftLinking.h:

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

1:37 PM Changeset in webkit [275776] by Russell Epstein
  • 4 edits in branches/safari-612.1.10-branch/Source

Cherry-pick r275736. rdar://problem/76467285

Fix incorrect compile-time macro for CFNETWORK_NSURLSESSION_ATTRIBUTED_BUNDLE_IDENTIFIER
https://bugs.webkit.org/show_bug.cgi?id=224347
<rdar://problem/76353792>

Reviewed by Brent Fulgham.

Source/WebCore/PAL:

  • pal/spi/cf/CFNetworkSPI.h:

Source/WebKit:

  • NetworkProcess/cocoa/NetworkSessionCocoa.mm: (WebKit::NetworkSessionCocoa::NetworkSessionCocoa): (WebKit::NetworkSessionCocoa::SessionSet::initializeEphemeralStatelessSessionIfNeeded):

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

1:31 PM Changeset in webkit [275775] by jer.noble@apple.com
  • 13 edits in trunk/Source

WTF SoftLinking macros can cause collisions with their target functions
https://bugs.webkit.org/show_bug.cgi?id=224379
<rdar://76434202>

Reviewed by Eric Carlson.

Source/WebCore:

Don't include the SoftLinkLibxslt.h file in the .cpp file.

  • xml/SoftLinkLibxslt.cpp:
  • xml/SoftLinkLibxslt.h:

Source/WebCore/PAL:

  • pal/cf/CoreMediaSoftLink.h:
  • pal/cocoa/MediaToolboxSoftLink.h:
  • pal/cocoa/OpenGLSoftLinkCocoa.h:
  • pal/cocoa/PassKitSoftLink.h:
  • pal/ios/UIKitSoftLink.h:
  • pal/spi/cocoa/AccessibilitySupportSoftLink.cpp:
  • pal/spi/cocoa/AccessibilitySupportSoftLink.h:

Source/WTF:

Do not declare an inline version of the target function, as this will collide if the target function
becomes inlined. Instead, callers should use the explicit softLink_Library_Function() syntax, or
the LibrarySoftLinking.h headers should use #defines to re-declare the function name.

  • wtf/cocoa/SoftLinking.h:
12:57 PM Changeset in webkit [275774] by graouts@webkit.org
  • 6 edits
    1 delete in trunk/LayoutTests

Remove tests under css3/shapes which are superseded by tests at imported/w3c/web-platform-tests/css/css-shapes
https://bugs.webkit.org/show_bug.cgi?id=224378

Reviewed by Dean Jackson.

  • TestExpectations:
  • css3/shapes/shape-outside-invalid-001-expected.txt: Removed.
  • css3/shapes/shape-outside-invalid-001.html: Removed.
  • css3/shapes/shape-outside-invalid-circle-000-expected.txt: Removed.
  • css3/shapes/shape-outside-invalid-circle-000.html: Removed.
  • css3/shapes/shape-outside-invalid-circle-001-expected.txt: Removed.
  • css3/shapes/shape-outside-invalid-circle-001.html: Removed.
  • css3/shapes/shape-outside-invalid-circle-002-expected.txt: Removed.
  • css3/shapes/shape-outside-invalid-circle-002.html: Removed.
  • css3/shapes/shape-outside-invalid-circle-003-expected.txt: Removed.
  • css3/shapes/shape-outside-invalid-circle-003.html: Removed.
  • css3/shapes/shape-outside-invalid-ellipse-001-expected.txt: Removed.
  • css3/shapes/shape-outside-invalid-ellipse-001.html: Removed.
  • css3/shapes/shape-outside-invalid-ellipse-002-expected.txt: Removed.
  • css3/shapes/shape-outside-invalid-ellipse-002.html: Removed.
  • css3/shapes/shape-outside-invalid-ellipse-003-expected.txt: Removed.
  • css3/shapes/shape-outside-invalid-ellipse-003.html: Removed.
  • css3/shapes/shape-outside-invalid-ellipse-004-expected.txt: Removed.
  • css3/shapes/shape-outside-invalid-ellipse-004.html: Removed.
  • css3/shapes/shape-outside-invalid-ellipse-005-expected.txt: Removed.
  • css3/shapes/shape-outside-invalid-ellipse-005.html: Removed.
  • css3/shapes/shape-outside-invalid-ellipse-006-expected.txt: Removed.
  • css3/shapes/shape-outside-invalid-ellipse-006.html: Removed.
  • css3/shapes/shape-outside-invalid-inset-001-expected.txt: Removed.
  • css3/shapes/shape-outside-invalid-inset-001.html: Removed.
  • css3/shapes/shape-outside-invalid-inset-002-expected.txt: Removed.
  • css3/shapes/shape-outside-invalid-inset-002.html: Removed.
  • css3/shapes/shape-outside-invalid-inset-003-expected.txt: Removed.
  • css3/shapes/shape-outside-invalid-inset-003.html: Removed.
  • css3/shapes/shape-outside-invalid-inset-004-expected.txt: Removed.
  • css3/shapes/shape-outside-invalid-inset-004.html: Removed.
  • css3/shapes/shape-outside-path-no-crash-expected.txt: Removed.
  • css3/shapes/shape-outside-path-no-crash.html: Removed.
  • css3/shapes/shape-outside/shape-box/shape-outside-box-002-expected.html: Removed.
  • css3/shapes/shape-outside/shape-box/shape-outside-box-002.html: Removed.
  • css3/shapes/shape-outside/shape-box/shape-outside-box-003-expected.html: Removed.
  • css3/shapes/shape-outside/shape-box/shape-outside-box-003.html: Removed.
  • css3/shapes/shape-outside/shape-box/shape-outside-box-004-expected.html: Removed.
  • css3/shapes/shape-outside/shape-box/shape-outside-box-004.html: Removed.
  • css3/shapes/shape-outside/shape-box/shape-outside-box-006-expected.html: Removed.
  • css3/shapes/shape-outside/shape-box/shape-outside-box-006.html: Removed.
  • css3/shapes/shape-outside/shape-box/shape-outside-box-007-expected.html: Removed.
  • css3/shapes/shape-outside/shape-box/shape-outside-box-007.html: Removed.
  • css3/shapes/shape-outside/shape-box/shape-outside-box-008-expected.html: Removed.
  • css3/shapes/shape-outside/shape-box/shape-outside-box-008.html: Removed.
  • css3/shapes/shape-outside/shape-box/w3c-import.log: Removed.
  • css3/shapes/shape-outside/shape-image/gradients/shape-outside-linear-gradient-001-expected.html: Removed.
  • css3/shapes/shape-outside/shape-image/gradients/shape-outside-linear-gradient-001.html: Removed.
  • css3/shapes/shape-outside/shape-image/gradients/shape-outside-linear-gradient-002-expected.html: Removed.
  • css3/shapes/shape-outside/shape-image/gradients/shape-outside-linear-gradient-002.html: Removed.
  • css3/shapes/shape-outside/shape-image/gradients/shape-outside-linear-gradient-003-expected.html: Removed.
  • css3/shapes/shape-outside/shape-image/gradients/shape-outside-linear-gradient-003.html: Removed.
  • css3/shapes/shape-outside/shape-image/gradients/shape-outside-linear-gradient-004-expected.html: Removed.
  • css3/shapes/shape-outside/shape-image/gradients/shape-outside-linear-gradient-004.html: Removed.
  • css3/shapes/shape-outside/shape-image/gradients/shape-outside-radial-gradient-001-expected.txt: Removed.
  • css3/shapes/shape-outside/shape-image/gradients/shape-outside-radial-gradient-001.html: Removed.
  • css3/shapes/shape-outside/shape-image/gradients/shape-outside-radial-gradient-002-expected.txt: Removed.
  • css3/shapes/shape-outside/shape-image/gradients/shape-outside-radial-gradient-002.html: Removed.
  • css3/shapes/shape-outside/shape-image/gradients/shape-outside-radial-gradient-003-expected.txt: Removed.
  • css3/shapes/shape-outside/shape-image/gradients/shape-outside-radial-gradient-003.html: Removed.
  • css3/shapes/shape-outside/shape-image/gradients/shape-outside-radial-gradient-004-expected.txt: Removed.
  • css3/shapes/shape-outside/shape-image/gradients/shape-outside-radial-gradient-004.html: Removed.
  • css3/shapes/shape-outside/shape-image/gradients/w3c-import.log: Removed.
  • css3/shapes/shape-outside/shape-image/shape-image-000-expected.html: Removed.
  • css3/shapes/shape-outside/shape-image/shape-image-000.html: Removed.
  • css3/shapes/shape-outside/shape-image/shape-image-001-expected.html: Removed.
  • css3/shapes/shape-outside/shape-image/shape-image-001.html: Removed.
  • css3/shapes/shape-outside/shape-image/shape-image-002-expected.html: Removed.
  • css3/shapes/shape-outside/shape-image/shape-image-002.html: Removed.
  • css3/shapes/shape-outside/shape-image/shape-image-003-expected.html: Removed.
  • css3/shapes/shape-outside/shape-image/shape-image-003.html: Removed.
  • css3/shapes/shape-outside/shape-image/shape-image-004-expected.html: Removed.
  • css3/shapes/shape-outside/shape-image/shape-image-004.html: Removed.
  • css3/shapes/shape-outside/shape-image/shape-image-005-expected.html: Removed.
  • css3/shapes/shape-outside/shape-image/shape-image-005.html: Removed.
  • css3/shapes/shape-outside/shape-image/shape-image-006-expected.html: Removed.
  • css3/shapes/shape-outside/shape-image/shape-image-006.html: Removed.
  • css3/shapes/shape-outside/shape-image/shape-image-007-expected.html: Removed.
  • css3/shapes/shape-outside/shape-image/shape-image-007.html: Removed.
  • css3/shapes/shape-outside/shape-image/shape-image-008-expected.html: Removed.
  • css3/shapes/shape-outside/shape-image/shape-image-008.html: Removed.
  • css3/shapes/shape-outside/shape-image/shape-image-009-expected.html: Removed.
  • css3/shapes/shape-outside/shape-image/shape-image-009.html: Removed.
  • css3/shapes/shape-outside/shape-image/shape-image-010-expected.html: Removed.
  • css3/shapes/shape-outside/shape-image/shape-image-010.html: Removed.
  • css3/shapes/shape-outside/shape-image/shape-image-011-expected.html: Removed.
  • css3/shapes/shape-outside/shape-image/shape-image-011.html: Removed.
  • css3/shapes/shape-outside/shape-image/shape-image-012-expected.html: Removed.
  • css3/shapes/shape-outside/shape-image/shape-image-012.html: Removed.
  • css3/shapes/shape-outside/shape-image/shape-image-013-expected.html: Removed.
  • css3/shapes/shape-outside/shape-image/shape-image-013.html: Removed.
  • css3/shapes/shape-outside/shape-image/shape-image-014-expected.html: Removed.
  • css3/shapes/shape-outside/shape-image/shape-image-014.html: Removed.
  • css3/shapes/shape-outside/shape-image/shape-image-015-expected.html: Removed.
  • css3/shapes/shape-outside/shape-image/shape-image-015.html: Removed.
  • css3/shapes/shape-outside/shape-image/shape-image-016-expected.html: Removed.
  • css3/shapes/shape-outside/shape-image/shape-image-016.html: Removed.
  • css3/shapes/shape-outside/shape-image/shape-image-017-expected.html: Removed.
  • css3/shapes/shape-outside/shape-image/shape-image-017.html: Removed.
  • css3/shapes/shape-outside/shape-image/shape-image-018-expected.html: Removed.
  • css3/shapes/shape-outside/shape-image/shape-image-018.html: Removed.
  • css3/shapes/shape-outside/shape-image/shape-image-019-expected.html: Removed.
  • css3/shapes/shape-outside/shape-image/shape-image-019.html: Removed.
  • css3/shapes/shape-outside/shape-image/shape-image-020-expected.html: Removed.
  • css3/shapes/shape-outside/shape-image/shape-image-020.html: Removed.
  • css3/shapes/shape-outside/shape-image/shape-image-021-expected.html: Removed.
  • css3/shapes/shape-outside/shape-image/shape-image-021.html: Removed.
  • css3/shapes/shape-outside/shape-image/shape-image-022-expected.html: Removed.
  • css3/shapes/shape-outside/shape-image/shape-image-022.html: Removed.
  • css3/shapes/shape-outside/shape-image/shape-image-023-expected.html: Removed.
  • css3/shapes/shape-outside/shape-image/shape-image-023.html: Removed.
  • css3/shapes/shape-outside/shape-image/shape-image-024-expected.html: Removed.
  • css3/shapes/shape-outside/shape-image/shape-image-024.html: Removed.
  • css3/shapes/shape-outside/shape-image/shape-image-025-expected.html: Removed.
  • css3/shapes/shape-outside/shape-image/shape-image-025.html: Removed.
  • css3/shapes/shape-outside/shape-image/support/animated.gif: Removed.
  • css3/shapes/shape-outside/shape-image/support/left-half-rectangle-20.png: Removed.
  • css3/shapes/shape-outside/shape-image/support/left-half-rectangle-20.svg: Removed.
  • css3/shapes/shape-outside/shape-image/support/left-half-rectangle-50.png: Removed.
  • css3/shapes/shape-outside/shape-image/support/left-half-rectangle-50.svg: Removed.
  • css3/shapes/shape-outside/shape-image/support/left-half-rectangle-70.png: Removed.
  • css3/shapes/shape-outside/shape-image/support/left-half-rectangle-70.svg: Removed.
  • css3/shapes/shape-outside/shape-image/support/left-half-rectangle.jpg: Removed.
  • css3/shapes/shape-outside/shape-image/support/left-half-rectangle.png: Removed.
  • css3/shapes/shape-outside/shape-image/support/left-half-rectangle.svg: Removed.
  • css3/shapes/shape-outside/shape-image/support/right-half-rectangle-20.png: Removed.
  • css3/shapes/shape-outside/shape-image/support/right-half-rectangle-50.png: Removed.
  • css3/shapes/shape-outside/shape-image/support/right-half-rectangle-70.png: Removed.
  • css3/shapes/shape-outside/shape-image/support/right-half-rectangle-70.svg: Removed.
  • css3/shapes/shape-outside/shape-image/support/right-half-rectangle.gif: Removed.
  • css3/shapes/shape-outside/shape-image/support/right-half-rectangle.jpg: Removed.
  • css3/shapes/shape-outside/shape-image/support/right-half-rectangle.png: Removed.
  • css3/shapes/shape-outside/shape-image/support/right-half-rectangle.svg: Removed.
  • css3/shapes/shape-outside/shape-image/support/w3c-import.log: Removed.
  • css3/shapes/shape-outside/shape-image/w3c-import.log: Removed.
  • css3/shapes/shape-outside/supported-shapes/circle/shape-outside-circle-013-expected.html: Removed.
  • css3/shapes/shape-outside/supported-shapes/circle/shape-outside-circle-013.html: Removed.
  • css3/shapes/shape-outside/supported-shapes/circle/shape-outside-circle-014-expected.html: Removed.
  • css3/shapes/shape-outside/supported-shapes/circle/shape-outside-circle-014.html: Removed.
  • css3/shapes/shape-outside/supported-shapes/circle/shape-outside-circle-015-expected.html: Removed.
  • css3/shapes/shape-outside/supported-shapes/circle/shape-outside-circle-015.html: Removed.
  • css3/shapes/shape-outside/supported-shapes/circle/shape-outside-circle-016-expected.html: Removed.
  • css3/shapes/shape-outside/supported-shapes/circle/shape-outside-circle-016.html: Removed.
  • css3/shapes/shape-outside/supported-shapes/circle/shape-outside-circle-017-expected.html: Removed.
  • css3/shapes/shape-outside/supported-shapes/circle/shape-outside-circle-017.html: Removed.
  • css3/shapes/shape-outside/supported-shapes/circle/shape-outside-circle-018-expected.html: Removed.
  • css3/shapes/shape-outside/supported-shapes/circle/shape-outside-circle-018.html: Removed.
  • css3/shapes/shape-outside/supported-shapes/circle/shape-outside-circle-019-expected.html: Removed.
  • css3/shapes/shape-outside/supported-shapes/circle/shape-outside-circle-019.html: Removed.
  • css3/shapes/shape-outside/supported-shapes/circle/shape-outside-circle-020-expected.html: Removed.
  • css3/shapes/shape-outside/supported-shapes/circle/shape-outside-circle-020.html: Removed.
  • css3/shapes/shape-outside/supported-shapes/circle/shape-outside-circle-021-expected.html: Removed.
  • css3/shapes/shape-outside/supported-shapes/circle/shape-outside-circle-021.html: Removed.
  • css3/shapes/shape-outside/supported-shapes/circle/shape-outside-circle-022-expected.html: Removed.
  • css3/shapes/shape-outside/supported-shapes/circle/shape-outside-circle-022.html: Removed.
  • css3/shapes/shape-outside/supported-shapes/circle/shape-outside-circle-024-expected.html: Removed.
  • css3/shapes/shape-outside/supported-shapes/circle/shape-outside-circle-024.html: Removed.
  • css3/shapes/shape-outside/supported-shapes/circle/shape-outside-circle-025-expected.html: Removed.
  • css3/shapes/shape-outside/supported-shapes/circle/shape-outside-circle-025.html: Removed.
  • css3/shapes/shape-outside/supported-shapes/circle/shape-outside-circle-026-expected.html: Removed.
  • css3/shapes/shape-outside/supported-shapes/circle/shape-outside-circle-026.html: Removed.
  • css3/shapes/shape-outside/supported-shapes/circle/shape-outside-circle-027-expected.html: Removed.
  • css3/shapes/shape-outside/supported-shapes/circle/shape-outside-circle-027.html: Removed.
  • css3/shapes/shape-outside/supported-shapes/circle/shape-outside-circle-028-expected.html: Removed.
  • css3/shapes/shape-outside/supported-shapes/circle/shape-outside-circle-028.html: Removed.
  • css3/shapes/shape-outside/supported-shapes/circle/shape-outside-circle-029-expected.html: Removed.
  • css3/shapes/shape-outside/supported-shapes/circle/shape-outside-circle-029.html: Removed.
  • css3/shapes/shape-outside/supported-shapes/circle/shape-outside-circle-030-expected.html: Removed.
  • css3/shapes/shape-outside/supported-shapes/circle/shape-outside-circle-030.html: Removed.
  • css3/shapes/shape-outside/supported-shapes/circle/shape-outside-circle-031-expected.html: Removed.
  • css3/shapes/shape-outside/supported-shapes/circle/shape-outside-circle-031.html: Removed.
  • css3/shapes/shape-outside/supported-shapes/circle/w3c-import.log: Removed.
  • css3/shapes/shape-outside/supported-shapes/ellipse/shape-outside-ellipse-013-expected.html: Removed.
  • css3/shapes/shape-outside/supported-shapes/ellipse/shape-outside-ellipse-013.html: Removed.
  • css3/shapes/shape-outside/supported-shapes/ellipse/shape-outside-ellipse-014-expected.html: Removed.
  • css3/shapes/shape-outside/supported-shapes/ellipse/shape-outside-ellipse-014.html: Removed.
  • css3/shapes/shape-outside/supported-shapes/ellipse/shape-outside-ellipse-016-expected.html: Removed.
  • css3/shapes/shape-outside/supported-shapes/ellipse/shape-outside-ellipse-016.html: Removed.
  • css3/shapes/shape-outside/supported-shapes/ellipse/shape-outside-ellipse-018-expected.html: Removed.
  • css3/shapes/shape-outside/supported-shapes/ellipse/shape-outside-ellipse-018.html: Removed.
  • css3/shapes/shape-outside/supported-shapes/ellipse/shape-outside-ellipse-019-expected.html: Removed.
  • css3/shapes/shape-outside/supported-shapes/ellipse/shape-outside-ellipse-019.html: Removed.
  • css3/shapes/shape-outside/supported-shapes/ellipse/shape-outside-ellipse-020-expected.html: Removed.
  • css3/shapes/shape-outside/supported-shapes/ellipse/shape-outside-ellipse-020.html: Removed.
  • css3/shapes/shape-outside/supported-shapes/ellipse/shape-outside-ellipse-021-expected.html: Removed.
  • css3/shapes/shape-outside/supported-shapes/ellipse/shape-outside-ellipse-021.html: Removed.
  • css3/shapes/shape-outside/supported-shapes/ellipse/shape-outside-ellipse-022-expected.html: Removed.
  • css3/shapes/shape-outside/supported-shapes/ellipse/shape-outside-ellipse-022.html: Removed.
  • css3/shapes/shape-outside/supported-shapes/ellipse/shape-outside-ellipse-023-expected.html: Removed.
  • css3/shapes/shape-outside/supported-shapes/ellipse/shape-outside-ellipse-023.html: Removed.
  • css3/shapes/shape-outside/supported-shapes/ellipse/shape-outside-ellipse-024-expected.html: Removed.
  • css3/shapes/shape-outside/supported-shapes/ellipse/shape-outside-ellipse-024.html: Removed.
  • css3/shapes/shape-outside/supported-shapes/ellipse/shape-outside-ellipse-025-expected.html: Removed.
  • css3/shapes/shape-outside/supported-shapes/ellipse/shape-outside-ellipse-025.html: Removed.
  • css3/shapes/shape-outside/supported-shapes/ellipse/shape-outside-ellipse-030-expected.html: Removed.
  • css3/shapes/shape-outside/supported-shapes/ellipse/shape-outside-ellipse-030.html: Removed.
  • css3/shapes/shape-outside/supported-shapes/ellipse/shape-outside-ellipse-031-expected.html: Removed.
  • css3/shapes/shape-outside/supported-shapes/ellipse/shape-outside-ellipse-031.html: Removed.
  • css3/shapes/shape-outside/supported-shapes/ellipse/w3c-import.log: Removed.
  • css3/shapes/shape-outside/supported-shapes/inset/shape-outside-inset-010-expected.html: Removed.
  • css3/shapes/shape-outside/supported-shapes/inset/shape-outside-inset-010.html: Removed.
  • css3/shapes/shape-outside/supported-shapes/inset/shape-outside-inset-011-expected.html: Removed.
  • css3/shapes/shape-outside/supported-shapes/inset/shape-outside-inset-011.html: Removed.
  • css3/shapes/shape-outside/supported-shapes/inset/shape-outside-inset-012-expected.html: Removed.
  • css3/shapes/shape-outside/supported-shapes/inset/shape-outside-inset-012.html: Removed.
  • css3/shapes/shape-outside/supported-shapes/inset/shape-outside-inset-013-expected.html: Removed.
  • css3/shapes/shape-outside/supported-shapes/inset/shape-outside-inset-013.html: Removed.
  • css3/shapes/shape-outside/supported-shapes/inset/shape-outside-inset-014-expected.html: Removed.
  • css3/shapes/shape-outside/supported-shapes/inset/shape-outside-inset-014.html: Removed.
  • css3/shapes/shape-outside/supported-shapes/inset/shape-outside-inset-015-expected.html: Removed.
  • css3/shapes/shape-outside/supported-shapes/inset/shape-outside-inset-015.html: Removed.
  • css3/shapes/shape-outside/supported-shapes/inset/w3c-import.log: Removed.
  • css3/shapes/shape-outside/supported-shapes/polygon/shape-outside-polygon-007-expected.html: Removed.
  • css3/shapes/shape-outside/supported-shapes/polygon/shape-outside-polygon-007.html: Removed.
  • css3/shapes/shape-outside/supported-shapes/polygon/shape-outside-polygon-008-expected.html: Removed.
  • css3/shapes/shape-outside/supported-shapes/polygon/shape-outside-polygon-008.html: Removed.
  • css3/shapes/shape-outside/supported-shapes/polygon/shape-outside-polygon-009-expected.html: Removed.
  • css3/shapes/shape-outside/supported-shapes/polygon/shape-outside-polygon-009.html: Removed.
  • css3/shapes/shape-outside/supported-shapes/polygon/shape-outside-polygon-010-expected.html: Removed.
  • css3/shapes/shape-outside/supported-shapes/polygon/shape-outside-polygon-010.html: Removed.
  • css3/shapes/shape-outside/supported-shapes/polygon/shape-outside-polygon-011-expected.html: Removed.
  • css3/shapes/shape-outside/supported-shapes/polygon/shape-outside-polygon-011.html: Removed.
  • css3/shapes/shape-outside/supported-shapes/polygon/shape-outside-polygon-012-expected.html: Removed.
  • css3/shapes/shape-outside/supported-shapes/polygon/shape-outside-polygon-012.html: Removed.
  • css3/shapes/shape-outside/supported-shapes/polygon/shape-outside-polygon-013-expected.html: Removed.
  • css3/shapes/shape-outside/supported-shapes/polygon/shape-outside-polygon-013.html: Removed.
  • css3/shapes/shape-outside/supported-shapes/polygon/shape-outside-polygon-014-expected.html: Removed.
  • css3/shapes/shape-outside/supported-shapes/polygon/shape-outside-polygon-014.html: Removed.
  • css3/shapes/shape-outside/supported-shapes/polygon/shape-outside-polygon-015-expected.html: Removed.
  • css3/shapes/shape-outside/supported-shapes/polygon/shape-outside-polygon-015.html: Removed.
  • css3/shapes/shape-outside/supported-shapes/polygon/shape-outside-polygon-016-expected.html: Removed.
  • css3/shapes/shape-outside/supported-shapes/polygon/shape-outside-polygon-016.html: Removed.
  • css3/shapes/shape-outside/supported-shapes/polygon/shape-outside-polygon-017-expected.html: Removed.
  • css3/shapes/shape-outside/supported-shapes/polygon/shape-outside-polygon-017.html: Removed.
  • css3/shapes/shape-outside/supported-shapes/polygon/w3c-import.log: Removed.
  • css3/shapes/shape-outside/supported-shapes/support/rounded-rectangle.js: Removed.
  • css3/shapes/shape-outside/supported-shapes/support/subpixel-utils.js: Removed.
  • css3/shapes/shape-outside/supported-shapes/support/test-utils.js: Removed.
  • css3/shapes/shape-outside/supported-shapes/support/w3c-import.log: Removed.
  • css3/shapes/shape-outside/values/shape-image-threshold-000-expected.txt: Removed.
  • css3/shapes/shape-outside/values/shape-image-threshold-000.html: Removed.
  • css3/shapes/shape-outside/values/shape-image-threshold-001-expected.txt: Removed.
  • css3/shapes/shape-outside/values/shape-image-threshold-001.html: Removed.
  • css3/shapes/shape-outside/values/shape-image-threshold-002-expected.txt: Removed.
  • css3/shapes/shape-outside/values/shape-image-threshold-002.html: Removed.
  • css3/shapes/shape-outside/values/shape-image-threshold-003-expected.txt: Removed.
  • css3/shapes/shape-outside/values/shape-image-threshold-003.html: Removed.
  • css3/shapes/shape-outside/values/shape-margin-000-expected.txt: Removed.
  • css3/shapes/shape-outside/values/shape-margin-000.html: Removed.
  • css3/shapes/shape-outside/values/shape-margin-001-expected.txt: Removed.
  • css3/shapes/shape-outside/values/shape-margin-001.html: Removed.
  • css3/shapes/shape-outside/values/shape-margin-002-expected.txt: Removed.
  • css3/shapes/shape-outside/values/shape-margin-002.html: Removed.
  • css3/shapes/shape-outside/values/shape-margin-003-expected.txt: Removed.
  • css3/shapes/shape-outside/values/shape-margin-003.html: Removed.
  • css3/shapes/shape-outside/values/shape-margin-004-expected.txt: Removed.
  • css3/shapes/shape-outside/values/shape-margin-004.html: Removed.
  • css3/shapes/shape-outside/values/shape-margin-005-expected.txt: Removed.
  • css3/shapes/shape-outside/values/shape-margin-005.html: Removed.
  • css3/shapes/shape-outside/values/shape-outside-box-000-expected.txt: Removed.
  • css3/shapes/shape-outside/values/shape-outside-box-000.html: Removed.
  • css3/shapes/shape-outside/values/shape-outside-circle-000-expected.txt: Removed.
  • css3/shapes/shape-outside/values/shape-outside-circle-000.html: Removed.
  • css3/shapes/shape-outside/values/shape-outside-circle-001-expected.txt: Removed.
  • css3/shapes/shape-outside/values/shape-outside-circle-001.html: Removed.
  • css3/shapes/shape-outside/values/shape-outside-circle-002-expected.txt: Removed.
  • css3/shapes/shape-outside/values/shape-outside-circle-002.html: Removed.
  • css3/shapes/shape-outside/values/shape-outside-circle-003-expected.txt: Removed.
  • css3/shapes/shape-outside/values/shape-outside-circle-003.html: Removed.
  • css3/shapes/shape-outside/values/shape-outside-circle-004-expected.txt: Removed.
  • css3/shapes/shape-outside/values/shape-outside-circle-004.html: Removed.
  • css3/shapes/shape-outside/values/shape-outside-circle-005-expected.txt: Removed.
  • css3/shapes/shape-outside/values/shape-outside-circle-005.html: Removed.
  • css3/shapes/shape-outside/values/shape-outside-circle-006-expected.txt: Removed.
  • css3/shapes/shape-outside/values/shape-outside-circle-006.html: Removed.
  • css3/shapes/shape-outside/values/shape-outside-circle-007-expected.txt: Removed.
  • css3/shapes/shape-outside/values/shape-outside-circle-007.html: Removed.
  • css3/shapes/shape-outside/values/shape-outside-circle-008-expected.txt: Removed.
  • css3/shapes/shape-outside/values/shape-outside-circle-008.html: Removed.
  • css3/shapes/shape-outside/values/shape-outside-circle-009-expected.txt: Removed.
  • css3/shapes/shape-outside/values/shape-outside-circle-009.html: Removed.
  • css3/shapes/shape-outside/values/shape-outside-circle-010-expected.txt: Removed.
  • css3/shapes/shape-outside/values/shape-outside-circle-010.html: Removed.
  • css3/shapes/shape-outside/values/shape-outside-circle-011-expected.txt: Removed.
  • css3/shapes/shape-outside/values/shape-outside-circle-011.html: Removed.
  • css3/shapes/shape-outside/values/shape-outside-computed-shape-000-expected.txt: Removed.
  • css3/shapes/shape-outside/values/shape-outside-computed-shape-000.html: Removed.
  • css3/shapes/shape-outside/values/shape-outside-computed-shape-001-expected.txt: Removed.
  • css3/shapes/shape-outside/values/shape-outside-computed-shape-001.html: Removed.
  • css3/shapes/shape-outside/values/shape-outside-ellipse-000-expected.txt: Removed.
  • css3/shapes/shape-outside/values/shape-outside-ellipse-000.html: Removed.
  • css3/shapes/shape-outside/values/shape-outside-ellipse-002-expected.txt: Removed.
  • css3/shapes/shape-outside/values/shape-outside-ellipse-002.html: Removed.
  • css3/shapes/shape-outside/values/shape-outside-ellipse-003-expected.txt: Removed.
  • css3/shapes/shape-outside/values/shape-outside-ellipse-003.html: Removed.
  • css3/shapes/shape-outside/values/shape-outside-ellipse-004-expected.txt: Removed.
  • css3/shapes/shape-outside/values/shape-outside-ellipse-004.html: Removed.
  • css3/shapes/shape-outside/values/shape-outside-ellipse-006-expected.txt: Removed.
  • css3/shapes/shape-outside/values/shape-outside-ellipse-006.html: Removed.
  • css3/shapes/shape-outside/values/shape-outside-ellipse-007-expected.txt: Removed.
  • css3/shapes/shape-outside/values/shape-outside-ellipse-007.html: Removed.
  • css3/shapes/shape-outside/values/shape-outside-ellipse-008-expected.txt: Removed.
  • css3/shapes/shape-outside/values/shape-outside-ellipse-008.html: Removed.
  • css3/shapes/shape-outside/values/shape-outside-ellipse-009-expected.txt: Removed.
  • css3/shapes/shape-outside/values/shape-outside-ellipse-009.html: Removed.
  • css3/shapes/shape-outside/values/shape-outside-inset-000-expected.txt: Removed.
  • css3/shapes/shape-outside/values/shape-outside-inset-000.html: Removed.
  • css3/shapes/shape-outside/values/shape-outside-inset-001-expected.txt: Removed.
  • css3/shapes/shape-outside/values/shape-outside-inset-001.html: Removed.
  • css3/shapes/shape-outside/values/shape-outside-inset-002-expected.txt: Removed.
  • css3/shapes/shape-outside/values/shape-outside-inset-002.html: Removed.
  • css3/shapes/shape-outside/values/shape-outside-inset-003-expected.txt: Removed.
  • css3/shapes/shape-outside/values/shape-outside-inset-003.html: Removed.
  • css3/shapes/shape-outside/values/shape-outside-inset-004-expected.txt: Removed.
  • css3/shapes/shape-outside/values/shape-outside-inset-004.html: Removed.
  • css3/shapes/shape-outside/values/shape-outside-inset-005-expected.txt: Removed.
  • css3/shapes/shape-outside/values/shape-outside-inset-005.html: Removed.
  • css3/shapes/shape-outside/values/shape-outside-inset-006-expected.txt: Removed.
  • css3/shapes/shape-outside/values/shape-outside-inset-006.html: Removed.
  • css3/shapes/shape-outside/values/shape-outside-inset-007-expected.txt: Removed.
  • css3/shapes/shape-outside/values/shape-outside-inset-007.html: Removed.
  • css3/shapes/shape-outside/values/shape-outside-inset-008-expected.txt: Removed.
  • css3/shapes/shape-outside/values/shape-outside-inset-008.html: Removed.
  • css3/shapes/shape-outside/values/shape-outside-inset-009-expected.txt: Removed.
  • css3/shapes/shape-outside/values/shape-outside-inset-009.html: Removed.
  • css3/shapes/shape-outside/values/shape-outside-polygon-000-expected.txt: Removed.
  • css3/shapes/shape-outside/values/shape-outside-polygon-000.html: Removed.
  • css3/shapes/shape-outside/values/shape-outside-polygon-001-expected.txt: Removed.
  • css3/shapes/shape-outside/values/shape-outside-polygon-001.html: Removed.
  • css3/shapes/shape-outside/values/shape-outside-polygon-002-expected.txt: Removed.
  • css3/shapes/shape-outside/values/shape-outside-polygon-002.html: Removed.
  • css3/shapes/shape-outside/values/shape-outside-polygon-003-expected.txt: Removed.
  • css3/shapes/shape-outside/values/shape-outside-polygon-003.html: Removed.
  • css3/shapes/shape-outside/values/shape-outside-polygon-004-expected.txt: Removed.
  • css3/shapes/shape-outside/values/shape-outside-polygon-004.html: Removed.
  • css3/shapes/shape-outside/values/shape-outside-polygon-005-expected.txt: Removed.
  • css3/shapes/shape-outside/values/shape-outside-polygon-005.html: Removed.
  • css3/shapes/shape-outside/values/shape-outside-polygon-006-expected.txt: Removed.
  • css3/shapes/shape-outside/values/shape-outside-polygon-006.html: Removed.
  • css3/shapes/shape-outside/values/shape-outside-shape-arguments-000-expected.txt: Removed.
  • css3/shapes/shape-outside/values/shape-outside-shape-arguments-000.html: Removed.
  • css3/shapes/shape-outside/values/shape-outside-shape-arguments-001-expected.txt: Removed.
  • css3/shapes/shape-outside/values/shape-outside-shape-arguments-001.html: Removed.
  • css3/shapes/shape-outside/values/shape-outside-shape-box-pair-000-expected.txt: Removed.
  • css3/shapes/shape-outside/values/shape-outside-shape-box-pair-000.html: Removed.
  • css3/shapes/shape-outside/values/shape-outside-shape-inherit-000-expected.txt: Removed.
  • css3/shapes/shape-outside/values/shape-outside-shape-inherit-000.html: Removed.
  • css3/shapes/shape-outside/values/shape-outside-shape-initial-000-expected.txt: Removed.
  • css3/shapes/shape-outside/values/shape-outside-shape-initial-000.html: Removed.
  • css3/shapes/shape-outside/values/shape-outside-shape-none-000-expected.txt: Removed.
  • css3/shapes/shape-outside/values/shape-outside-shape-none-000.html: Removed.
  • css3/shapes/shape-outside/values/shape-outside-shape-notation-000-expected.txt: Removed.
  • css3/shapes/shape-outside/values/shape-outside-shape-notation-000.html: Removed.
  • css3/shapes/shape-outside/values/support/parsing-utils.js: Removed.
  • css3/shapes/shape-outside/values/support/w3c-import.log: Removed.
  • css3/shapes/shape-outside/values/w3c-import.log: Removed.
  • css3/shapes/spec-examples/shape-outside-001-expected.html: Removed.
  • css3/shapes/spec-examples/shape-outside-001.html: Removed.
  • css3/shapes/spec-examples/shape-outside-002-expected.html: Removed.
  • css3/shapes/spec-examples/shape-outside-002.html: Removed.
  • css3/shapes/spec-examples/shape-outside-003-expected.html: Removed.
  • css3/shapes/spec-examples/shape-outside-003.html: Removed.
  • css3/shapes/spec-examples/shape-outside-004-expected.html: Removed.
  • css3/shapes/spec-examples/shape-outside-004.html: Removed.
  • css3/shapes/spec-examples/shape-outside-005-expected.html: Removed.
  • css3/shapes/spec-examples/shape-outside-005.html: Removed.
  • css3/shapes/spec-examples/shape-outside-006-expected.html: Removed.
  • css3/shapes/spec-examples/shape-outside-006.html: Removed.
  • css3/shapes/spec-examples/shape-outside-007-expected.html: Removed.
  • css3/shapes/spec-examples/shape-outside-007.html: Removed.
  • css3/shapes/spec-examples/shape-outside-008-expected.html: Removed.
  • css3/shapes/spec-examples/shape-outside-008.html: Removed.
  • css3/shapes/spec-examples/shape-outside-010-expected.txt: Removed.
  • css3/shapes/spec-examples/shape-outside-010.html: Removed.
  • css3/shapes/spec-examples/shape-outside-011-expected.txt: Removed.
  • css3/shapes/spec-examples/shape-outside-011.html: Removed.
  • css3/shapes/spec-examples/shape-outside-012-expected.txt: Removed.
  • css3/shapes/spec-examples/shape-outside-012.html: Removed.
  • css3/shapes/spec-examples/shape-outside-013-expected.txt: Removed.
  • css3/shapes/spec-examples/shape-outside-013.html: Removed.
  • css3/shapes/spec-examples/shape-outside-014-expected.txt: Removed.
  • css3/shapes/spec-examples/shape-outside-014.html: Removed.
  • css3/shapes/spec-examples/shape-outside-015-expected.txt: Removed.
  • css3/shapes/spec-examples/shape-outside-015.html: Removed.
  • css3/shapes/spec-examples/shape-outside-016-expected.txt: Removed.
  • css3/shapes/spec-examples/shape-outside-016.html: Removed.
  • css3/shapes/spec-examples/shape-outside-017-expected.txt: Removed.
  • css3/shapes/spec-examples/shape-outside-017.html: Removed.
  • css3/shapes/spec-examples/shape-outside-018-expected.txt: Removed.
  • css3/shapes/spec-examples/shape-outside-018.html: Removed.
  • css3/shapes/spec-examples/shape-outside-019-expected.txt: Removed.
  • css3/shapes/spec-examples/shape-outside-019.html: Removed.
  • css3/shapes/spec-examples/support/circle-no-shadow.png: Removed.
  • css3/shapes/spec-examples/support/circle-shadow.png: Removed.
  • css3/shapes/spec-examples/support/rounded-triangle.svg: Removed.
  • css3/shapes/spec-examples/support/spec-example-utils.js: Removed.
  • css3/shapes/spec-examples/support/w3c-import.log: Removed.
  • css3/shapes/spec-examples/w3c-import.log: Removed.
  • css3/shapes/w3c-import.log: Removed.
  • platform/glib/TestExpectations:
  • platform/ios/TestExpectations:
  • platform/mac-wk2/TestExpectations:
  • platform/wincairo/TestExpectations:
12:49 PM Changeset in webkit [275773] by Sam Sneddon
  • 7 edits in trunk/Tools

Make TestInput take a Test object, not a path
https://bugs.webkit.org/show_bug.cgi?id=224329

Reviewed by Jonathan Bedard.

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

(LayoutTestRunner.run_tests): Remove test_to_skip argument; skipped tests aren't for the runner.

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

(LayoutTestRunnerTests._run_tests): TestInput expects a Test.
(LayoutTestRunnerTests.test_interrupt_if_at_failure_limits): TestInput expects a Test.
(SharderTests.get_test_input): TestInput expects a Test.

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

(Manager._collect_tests):
Move duplicated code from Manager.run and Manager.print_expectations here.
(Manager._tests_to_run):
Renamed from Manager._prepare_lists; now just gives tests to run.
(Manager._test_input_for_file): Now takes a Test, not a str; device_type changes behaviour and shouldn't have any default.
(Manager._test_is_slow): device_type changes behaviour and shouldn't have any default.
(Manager._test_should_dump_jsconsolelog_in_stderr): device_type changes behaviour and shouldn't have any default.
(Manager._get_test_inputs): device_type changes behaviour and shouldn't have any default.
(Manager._update_worker_count): device_type changes behaviour and shouldn't have any default.
(Manager._set_up_run): device_type changes behaviour and shouldn't have any default.
(Manager.run):
Largely just change for Manager._collect_tests, also renaming the sets to match their
clearer names in print_expectations.
Additionally, now generate skip results here, as they aren't to do with actually running
tests, they're about test selection.
(Manager._run_test_subset): Remove tests_to_skip argument, devie_type is required.
(Manager._run_tests): Remove tests_to_skip argument, devie_type is required.
(Manager._print_expectation_line_for_test): Now takes a Test, not a str; device_type changes behaviour and shouldn't have any default.
(Manager._print_expectations_for_subset): Change default of tests_to_skip to avoid set/dict oddness.
(Manager.print_expectations): Largely change for Manager._collect_tests.

  • Scripts/webkitpy/layout_tests/models/test.py:

(Test): Use attrs to avoid having to define cmp, hash, repr, etc.

  • Scripts/webkitpy/layout_tests/models/test_input.py:

(TestInput.init): Take a Test, not a str.
(TestInput.test_name): Maintain compatibility with code reading TestInput.test_name for now.

  • Scripts/webkitpy/layout_tests/models/test_run_results.py:

(TestRunResults.merge): Fix merging of dicts-of-sets, rather than overwriting the sets.
(TestRunResults.merge.merge_dict_sets): Implement the merging.

12:05 PM Changeset in webkit [275772] by commit-queue@webkit.org
  • 6 edits in trunk

[css-grid] Set hasIntrinsicWidth & hasIntrinsicHeight properties for SVG element's intrinsic size
https://bugs.webkit.org/show_bug.cgi?id=223504

Patch by Ziran Sun <Ziran Sun> on 2021-04-09
Reviewed by Javier Fernandez.

Source/WebCore:

In RenderReplaced::computeReplacedLogicalWidth/RenderReplaced::computeReplacedLogicalHeight(),
hasIntrinsicWidth and hasIntrinsicHeight are decided by whether the value is bigger than 0.
This is not alway true. The SVG element sets its hasIntrinsicWidth/hasIntrinsicHeight property
in line with its lengthType(). This change adds checks for SVG element cases specifically.

  • platform/graphics/FloatSize.h:
  • rendering/RenderReplaced.cpp:

(WebCore::RenderReplaced::computeReplacedLogicalWidth const):
(WebCore::RenderReplaced::computeReplacedLogicalHeight const):

  • rendering/svg/RenderSVGRoot.cpp:

(WebCore::RenderSVGRoot::computeIntrinsicRatioInformation const):

LayoutTests:

Enable 4 tests that pass now.

11:55 AM EarlyWarningSystem edited by aakash_jain@apple.com
(diff)
11:35 AM Changeset in webkit [275771] by Said Abou-Hallawa
  • 3 edits in trunk/LayoutTests

[ macOS wk2 ARM64 ] fast/images/async-image-background-change.html is a flakey timeout
https://bugs.webkit.org/show_bug.cgi?id=223469

Reviewed by Darin Adler.

If the event 'webkitImageFrameReady' fires before registering its listener,
the test will timeout.

Make sure the event listener is registered before changing the background
of the element.

  • fast/images/async-image-background-change.html:
  • platform/mac-wk2/TestExpectations:
11:33 AM Changeset in webkit [275770] by Alan Coon
  • 1 copy in tags/Safari-611.2.2

Tag Safari-611.2.2.

11:32 AM Changeset in webkit [275769] by Wenson Hsieh
  • 7 edits in trunk/LayoutTests

REGRESSION (r273154): 3 layout tests in editing/selection/ios are consistently failing
https://bugs.webkit.org/show_bug.cgi?id=224375
<rdar://problem/76420167>

Reviewed by Tim Horton.

Rebaseline some layout tests after enabling form control refresh on iOS.

  • editing/selection/ios/do-not-hide-selection-in-visible-field-expected.txt:
  • editing/selection/ios/do-not-hide-selection-in-visible-field.html:
  • editing/selection/ios/show-selection-in-transformed-container-2-expected.txt:
  • editing/selection/ios/show-selection-in-transformed-container-2.html:
  • editing/selection/ios/show-selection-in-transformed-container-expected.txt:
  • editing/selection/ios/show-selection-in-transformed-container.html:
11:31 AM Changeset in webkit [275768] by Chris Dumez
  • 30 edits
    1 add in trunk/Source/WebKit

Need to propagate and use 'canShowWhileLocked' in the GPU Process
https://bugs.webkit.org/show_bug.cgi?id=224345
<rdar://76011262>

Reviewed by Tim Horton.

The GPUProcess was previously creating a single visibility propagation view even though
it was potentially serving several web views. Also, it would also pass
canShowWhileLocked=false when constructing the visibility propagation view, ignoring
the value of WKWebViewConfiguration._canShowWhileLocked. This would lead to issues for
apps relying on WKWebView to show content on the lock screen.

To address the issue, we now have the RemoteRenderingBackend construct its own
visibility propagation view in the GPUProcess. The GPUProcess constructs a
RemoteRenderingBackend per WebPage being served so this is convenient. When sending the
IPC to the GPUProcess to construct the RemoteRenderingBackend, the WebProcess now sends
the page identifier as well as the value of the canShowWhileLocked flag so that we
can use the correct canShowWhileLocked flag when constructing the visibility propagation
view.

The logic in the UIProcess for dealing with GPUProcess visibility propagation views
is now almost identical to WebProcess visibility propagation views. They are stored on
the WebPageProxy and get swapped on process-swap (since a new WebPage gets created).

  • GPUProcess/GPUConnectionToWebProcess.cpp:

(WebKit::GPUConnectionToWebProcess::createRenderingBackend):

  • GPUProcess/GPUConnectionToWebProcess.h:
  • GPUProcess/GPUConnectionToWebProcess.messages.in:
  • GPUProcess/GPUProcess.cpp:

(WebKit::GPUProcess::initializeGPUProcess):

  • GPUProcess/GPUProcess.h:
  • GPUProcess/graphics/RemoteRenderingBackend.cpp:

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

  • GPUProcess/graphics/RemoteRenderingBackend.h:
  • GPUProcess/graphics/RemoteRenderingBackendCreationParameters.h: Added.

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

  • UIProcess/Cocoa/WebPageProxyCocoa.mm:

(WebKit::WebPageProxy::didCreateContextInWebProcessForVisibilityPropagation):
(WebKit::WebPageProxy::didCreateContextInGPUProcessForVisibilityPropagation):

  • UIProcess/GPU/GPUProcessProxy.cpp:

(WebKit::GPUProcessProxy::getGPUProcessConnection):
(WebKit::GPUProcessProxy::didCreateContextForVisibilityPropagation):

  • UIProcess/GPU/GPUProcessProxy.h:
  • UIProcess/GPU/GPUProcessProxy.messages.in:
  • UIProcess/PageClient.h:

(WebKit::PageClient::didCreateContextInWebProcessForVisibilityPropagation):

  • UIProcess/ProvisionalPageProxy.cpp:

(WebKit::ProvisionalPageProxy::ProvisionalPageProxy):
(WebKit::ProvisionalPageProxy::didCreateContextInWebProcessForVisibilityPropagation):
(WebKit::ProvisionalPageProxy::didCreateContextInGPUProcessForVisibilityPropagation):
(WebKit::ProvisionalPageProxy::didReceiveMessage):

  • UIProcess/ProvisionalPageProxy.h:

(WebKit::ProvisionalPageProxy::contextIDForVisibilityPropagationInWebProcess const):
(WebKit::ProvisionalPageProxy::contextIDForVisibilityPropagationInGPUProcess const):

  • UIProcess/SuspendedPageProxy.cpp:

(WebKit::SuspendedPageProxy::SuspendedPageProxy):

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

(WebKit::WebPageProxy::swapToProvisionalPage):
(WebKit::WebPageProxy::resetState):
(WebKit::WebPageProxy::gpuProcessCrashed):

  • UIProcess/WebPageProxy.h:
  • UIProcess/WebPageProxy.messages.in:
  • UIProcess/WebProcessProxy.cpp:
  • UIProcess/WebProcessProxy.h:
  • UIProcess/ios/PageClientImplIOS.h:
  • UIProcess/ios/PageClientImplIOS.mm:

(WebKit::PageClientImpl::didCreateContextInWebProcessForVisibilityPropagation):

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

(-[WKContentView _commonInitializationWithProcessPool:configuration:]):
(-[WKContentView _setupVisibilityPropagationViewForWebProcess]):
(-[WKContentView _setupVisibilityPropagationViewForGPUProcess]):
(-[WKContentView _removeVisibilityPropagationViewForWebProcess]):
(-[WKContentView _processDidExit]):
(-[WKContentView _gpuProcessCrashed]):
(-[WKContentView _didRelaunchProcess]):
(-[WKContentView _webProcessDidCreateContextForVisibilityPropagation]):

  • WebKit.xcodeproj/project.pbxproj:
  • WebProcess/GPU/graphics/RemoteRenderingBackendProxy.cpp:

(WebKit::RemoteRenderingBackendProxy::create):
(WebKit::RemoteRenderingBackendProxy::RemoteRenderingBackendProxy):
(WebKit::RemoteRenderingBackendProxy::~RemoteRenderingBackendProxy):
(WebKit::RemoteRenderingBackendProxy::connectToGPUProcess):
(WebKit::RemoteRenderingBackendProxy::reestablishGPUProcessConnection):
(WebKit::RemoteRenderingBackendProxy::messageSenderDestinationID const):
(WebKit::RemoteRenderingBackendProxy::waitForDidCreateImageBufferBackend):
(WebKit::RemoteRenderingBackendProxy::waitForDidFlush):
(WebKit::RemoteRenderingBackendProxy::createImageBuffer):
(WebKit::RemoteRenderingBackendProxy::sharedMemoryForGetImageData):
(WebKit::RemoteRenderingBackendProxy::destroyGetImageDataSharedMemory):
(WebKit::RemoteRenderingBackendProxy::getDataURLForImageBuffer):
(WebKit::RemoteRenderingBackendProxy::getDataForImageBuffer):
(WebKit::RemoteRenderingBackendProxy::getBGRADataForImageBuffer):
(WebKit::RemoteRenderingBackendProxy::getShareableBitmap):
(WebKit::RemoteRenderingBackendProxy::cacheNativeImage):
(WebKit::RemoteRenderingBackendProxy::cacheFont):
(WebKit::RemoteRenderingBackendProxy::deleteAllFonts):
(WebKit::RemoteRenderingBackendProxy::releaseRemoteResource):
(WebKit::RemoteRenderingBackendProxy::sendWakeupMessage):
(WebKit::RemoteRenderingBackendProxy::didAppendData):
(WebKit::RemoteRenderingBackendProxy::createItemBuffer):
(WebKit::RemoteRenderingBackendProxy::renderingBackendIdentifier const):

  • WebProcess/GPU/graphics/RemoteRenderingBackendProxy.h:
  • WebProcess/WebPage/WebPage.cpp:

(WebKit::m_lastNavigationWasAppBound):
(WebKit::WebPage::updatePreferences):
(WebKit::WebPage::ensureRemoteRenderingBackendProxy):

10:19 AM Changeset in webkit [275767] by Russell Epstein
  • 5 edits in branches/safari-611-branch/Source/WebCore

Cherry-pick r274819. rdar://problem/76373741

AVAudioSessionCaptureDeviceManager should use crossThreadCopy
https://bugs.webkit.org/show_bug.cgi?id=223565
<rdar://75480589>

Reviewed by Youenn Fablet.

Tested manually, this can only be tested on device.

  • platform/mediastream/CaptureDevice.h: Change access restriction for member variables from private: to protected: so derived classes can access them directly.
  • platform/mediastream/ios/AVAudioSessionCaptureDevice.h:
  • platform/mediastream/ios/AVAudioSessionCaptureDevice.mm: (WebCore::AVAudioSessionCaptureDevice::AVAudioSessionCaptureDevice): New constructor. (WebCore::AVAudioSessionCaptureDevice::isolatedCopy const): New.
  • platform/mediastream/ios/AVAudioSessionCaptureDeviceManager.mm: (WebCore::AVAudioSessionCaptureDeviceManager::refreshAudioCaptureDevices): Use WTFMove(deviceList).isolatedCopy() when moving from AVAudioSession queue to main thread. (WebCore::AVAudioSessionCaptureDeviceManager::getCaptureDevices): Ditto.

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

10:19 AM Changeset in webkit [275766] by Russell Epstein
  • 3 edits in branches/safari-611-branch/Source/WebKit

Cherry-pick r274377. rdar://problem/76412582

AX: PDF frame conversion routines need to be updated
https://bugs.webkit.org/show_bug.cgi?id=223138

Reviewed by Darin Adler.

PDF bounding boxes are wrong in WebKit because.

1) There's no way for PDF objects to get the primary screen height. So we need to be able to return the primary

screen height from an object in the PDF hierarchy.

2) The WKPDFPluginAccessibilityObject's position was not being converted correctly.

  • WebProcess/Plugins/PDF/PDFPlugin.mm: (-[WKPDFPluginAccessibilityObject accessibilityAttributeValue:]): (-[WKPDFPluginAccessibilityObject ALLOW_DEPRECATED_IMPLEMENTATIONS_END]): (WebKit::PDFPlugin::boundsOnScreen const):
  • WebProcess/WebPage/mac/WKAccessibilityWebPageObjectMac.mm: (-[WKAccessibilityWebPageObject accessibilityAttributeValue:]):

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

9:43 AM Changeset in webkit [275765] by Darin Adler
  • 9 edits in trunk/Source

[Cocoa] Reduce usage of autorelease, fix mistakes noticed nearby code using autorelease
https://bugs.webkit.org/show_bug.cgi?id=224340

Reviewed by Anders Carlsson.

Source/WebCore:

  • bridge/objc/objc_instance.h: Added a static member function isInStringValue to

help factor the _web_description method better.

  • bridge/objc/objc_instance.mm:

(JSC::Bindings::ObjcInstance::stringValue const): Removed unneeded WTF prefixes.
(JSC::Bindings::ObjcInstance::isInStringValue): Added.
(-[NSObject _web_description]): Moved this out of the C++ namespace since it's an
Objective-C class implementation. Refactored for simplicity.

Source/WebKit:

  • NetworkProcess/cocoa/NetworkDataTaskCocoa.h: Use RetainPtr<NSURLRequest> instead of

strong NSURLRequest*& for the in/out argument of the
applySniffingPoliciesAndBindRequestToInferfaceIfNeeded function.

  • NetworkProcess/cocoa/NetworkDataTaskCocoa.mm:

(WebKit::NetworkDataTaskCocoa::applySniffingPoliciesAndBindRequestToInferfaceIfNeeded):
Updated to use RetainPtr instead of strong. Also fixed some incorrect uses of %llu
to log NSUInteger and uint64_t, switching to "%lu" (and casting to unsigned long to
retain 32-bit compatibility) and "%" PRIu64 respectively.
(WebKit::NetworkDataTaskCocoa::NetworkDataTaskCocoa): Ditto.
(WebKit::NetworkDataTaskCocoa::willPerformHTTPRedirection): Ditto.

  • NetworkProcess/cocoa/NetworkSessionCocoa.mm:

(setIgnoreHSTS): Added. Helper function so the code that makes a mutableCopy is isolated
in a helper function for clarity. A good counterpart to the existing ignoreHSTS function.
(updateIgnoreStrictTransportSecuritySetting): Changed to use a RetainPtr<NSURLRequest>
in/out argument instead of an argument plus a return value, obviating the need to use
autorelease and making this easier to read. Used setIgnoreHSTS for brevity in implementation.
(-[WKNetworkSessionDelegate URLSession:task:willPerformHTTPRedirection:newRequest:completionHandler:]):
Update for change to updateIgnoreStrictTransportSecuritySetting.
(-[WKNetworkSessionDelegate URLSession:task:_schemeUpgraded:completionHandler:]): Ditto.
(WebKit::proxyDictionary): Return a RetainPtr instead of something autoreleased.
(WebKit::NetworkSessionCocoa::NetworkSessionCocoa): Call get() on the result of the
proxyDictionary function.

  • UIProcess/API/Cocoa/WKBrowsingContextController.mm:

(makePolicyDecisionBlock): Return a BlockPtr instead of an autoreleased block.
Also use a lambda and retainWK for better clarity on capture semantics rather than
doing a WKRetain in the caller and a WKRelease in the block.
(setUpPagePolicyClient): Call get() on the result of the
makePolicyDecisionBlock function.

  • WebProcess/WebPage/RemoteLayerTree/PlatformCAAnimationRemote.mm:

(WebKit::animationValueFromKeyframeValue): Return a RetainPtr instead of an
autoreleased object.
(WebKit::createAnimation): Call get() on the result of the
animationValueFromKeyframeValue function.

9:38 AM Changeset in webkit [275764] by Brent Fulgham
  • 3 edits in trunk/Source/WebKit

[Cocoa] Silence a CFNetwork preference file access warning
https://bugs.webkit.org/show_bug.cgi?id=224344
<rdar://problem/75839558>

Reviewed by Eric Carlson.

Silence sandbox telemetry and reports when CFNetwork attempts to read an unimportant preference
when executing in the WebContent process. This has been confirmed to be a silent/safe failiure
case (just returns false) and is not needed in the WebContent process.

  • Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb:
  • WebProcess/com.apple.WebProcess.sb.in:
8:58 AM Changeset in webkit [275763] by graouts@webkit.org
  • 24 edits in trunk

calc() values resulting from blending mixed type lengths should be simplified
https://bugs.webkit.org/show_bug.cgi?id=224322

Reviewed by Sam Weinig.

LayoutTests/imported/w3c:

Mark 84 WPT progressions.

  • web-platform-tests/css/css-backgrounds/animations/background-position-origin-interpolation-expected.txt:
  • web-platform-tests/css/css-backgrounds/animations/border-image-width-interpolation-expected.txt:
  • web-platform-tests/css/css-backgrounds/animations/border-radius-interpolation-expected.txt:
  • web-platform-tests/css/css-shapes/animation/shape-outside-composition-expected.txt:
  • web-platform-tests/css/css-shapes/animation/shape-outside-interpolation-expected.txt:
  • web-platform-tests/css/css-sizing/animation/max-height-composition-expected.txt:
  • web-platform-tests/css/css-sizing/animation/max-width-composition-expected.txt:
  • web-platform-tests/css/css-sizing/animation/min-height-composition-expected.txt:
  • web-platform-tests/css/css-sizing/animation/min-width-composition-expected.txt:
  • web-platform-tests/css/css-transitions/animations/vertical-align-composition-expected.txt:
  • web-platform-tests/css/css-transitions/animations/vertical-align-interpolation-expected.txt:
  • web-platform-tests/css/css-values/animations/calc-interpolation-expected.txt:
  • web-platform-tests/web-animations/animation-model/animation-types/interpolation-per-property-001-expected.txt:

Source/WebCore:

While we simplify calc() values upon parsing such that operations are resolved and
values are sorted (percentages first then alphabetically by unit), we didn't do this
when creating calc() values during blending of lengths of mixed types.

  • css/CSSCalculationValue.cpp:

(WebCore::CSSCalcValue::create const):

LayoutTests:

Modify a few tests to account for the correct serialization.

  • fast/css/object-position/parsing-object-position-expected.txt:
  • fast/css/object-position/parsing-object-position.html:
  • fast/shapes/shape-outside-floats/shape-outside-animation-expected.txt:
  • fast/shapes/shape-outside-floats/shape-outside-animation.html:
  • transitions/background-position-transitions.html:
  • transitions/background-position-transitions-expected.txt:
  • transitions/resources/transition-test-helpers.js: set computedValue such that

failures print out the actual value instead of "undefined".

8:02 AM Changeset in webkit [275762] by Chris Gambrell
  • 4 edits
    5 adds
    5 deletes in trunk/LayoutTests

[LayoutTests] Convert http/tests/cookies convert PHP to Python
https://bugs.webkit.org/show_bug.cgi?id=223891
<rdar://problem/75965634>

Reviewed by Jonathan Bedard.

  • http/tests/cookies/multiple-redirect-and-set-cookie.php: Removed.
  • http/tests/cookies/multiple-redirect-and-set-cookie.py: Added.

(redirect_url):
(redirect_to_step):
(step0):
(step2):

  • http/tests/cookies/resources/cookie-utilities.php: Removed.
  • http/tests/cookies/resources/cookie_utilities.py: Added.

(hostname_is_equal_to_string):
(reset_cookies_for_current_origin):
(reset_cookies):
(should_reset_cookies):
(wk_set_cookie):

  • http/tests/cookies/same-site/set-first-party-cross-site-cookies.php: Removed.
  • http/tests/cookies/same-site/set-first-party-cross-site-cookies.py: Added.
  • http/tests/cookies/same-site/set-first-party-same-site-cookies.php: Removed.
  • http/tests/cookies/same-site/set-first-party-same-site-cookies.py: Added.
  • http/tests/cookies/same-site/user-load-cross-site-redirect.php: Removed.
  • http/tests/cookies/same-site/user-load-cross-site-redirect.py: Added.
  • platform/gtk/TestExpectations:
  • platform/mac/TestExpectations:
  • platform/wpe/TestExpectations:
6:48 AM Changeset in webkit [275761] by Alan Bujtas
  • 2 edits in trunk/Source/WebCore

[RenderTreeBuilder] Cleanup the inline box wrappers when moving subtrees
https://bugs.webkit.org/show_bug.cgi?id=224342
<rdar://76349279>

Reviewed by Antti Koivisto.

When an inline box is moved over to a different BFC (<span>), any inline level descendant (<span><img></span>) should release its inline box wrapper. This inline box wrapper (e.g. InlineFlowBox)
will eventually be destroy during the subsequent line layout of the original BFC.

  • rendering/updating/RenderTreeBuilder.cpp:

(WebCore::RenderTreeBuilder::move):

6:25 AM Changeset in webkit [275760] by Aditya Keerthi
  • 10 edits in trunk

[iOS][FCR] Use context menus for text input datalist dropdowns
https://bugs.webkit.org/show_bug.cgi?id=224287
<rdar://problem/76351317>

Reviewed by Wenson Hsieh.

Source/WebKit:

Use context menus rather than popovers to present suggested values for
text inputs with an associated datalist element.

  • Platform/spi/ios/UIKitSPI.h:
  • UIProcess/API/ios/WKWebViewPrivateForTestingIOS.h:

Expose _isShowingDatalistSuggestions for testing. Previously, the test
runner traversed the view hierarchy in order to determine whether the
suggestions were visible. However, that approach is not reliable since
we no longer own the presented view, and UIKit could change the
implementation details of context menus.

  • UIProcess/API/ios/WKWebViewTestingIOS.mm:

(-[WKWebView _isShowingDataListSuggestions]):

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

(-[WKContentView doAfterEditorStateUpdateAfterFocusingElement:]):

Add a mechanism to perform actions after an editor state update when
focusing an element. If an update is not expected, run the block
immediately.

See below for details on why this is necessary.

(-[WKContentView _didUpdateEditorState]):

Run any pending blocks that were awaiting an editor state update.

(-[WKContentView isShowingDataListSuggestions]):

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

(-[WKDataListSuggestionsDropdown invalidate]):
(-[WKDataListSuggestionsDropdown didSelectOptionAtIndex:]):
(-[WKDataListSuggestionsDropdown _showSuggestions]):

Present a context menu displaying the suggestions if one is not already
presented.

Note that focusing text fields can result in automatic zooming of the
webview. This zooming occurs after an editor state update for focused
elements. The presentation of the context menu is deferred to run
after an editor state update to ensure any zooming occurs before
showing the menu. Without this deferred presentation mechanism, the
context menu can be presented before the state update, partially
obscuring the webview and resulting in an incorrect zoom once the
update occurs.

If a menu is already presented, use updateVisibleMenuWithBlock: to
update the contents of the menu.

(-[WKDataListSuggestionsDropdown _updateTextSuggestions]):
(-[WKDataListSuggestionsDropdown _updateSuggestionsMenuElements]):
(-[WKDataListSuggestionsDropdown _removeContextMenuInteraction]):
(-[WKDataListSuggestionsDropdown _suggestionsMenuDidPresent]):
(-[WKDataListSuggestionsDropdown _suggestionsMenuDidDismiss]):
(-[WKDataListSuggestionsDropdown _preferredEdgeInsetsForSuggestionsMenu]):

By default, context menus can obscure the presenting element if there
are too many options. Inset the menu so that it does not overlap the
text field. Present the menu above the text field if there is less
space underneath the field.

(-[WKDataListSuggestionsDropdown contextMenuInteraction:previewForHighlightingMenuWithConfiguration:]):
(-[WKDataListSuggestionsDropdown _contextMenuInteraction:styleForMenuWithConfiguration:]):
(-[WKDataListSuggestionsDropdown contextMenuInteraction:configurationForMenuAtLocation:]):
(-[WKDataListSuggestionsDropdown contextMenuInteraction:willDisplayMenuForConfiguration:animator:]):
(-[WKDataListSuggestionsDropdown contextMenuInteraction:willEndForConfiguration:animator:]):

Tools:

  • WebKitTestRunner/ios/UIScriptControllerIOS.mm:

(WTR::UIScriptControllerIOS::isShowingDataListSuggestions const):

Use the exposed information from the webview to determine whether the
datalist suggestions are visible, rather than traversing the view
hierarchy.

4:43 AM Changeset in webkit [275759] by commit-queue@webkit.org
  • 6 edits in trunk

[GTK][WPE] Bump libsoup3 version to 2.99.3
https://bugs.webkit.org/show_bug.cgi?id=224362

Patch by Carlos Garcia Campos <cgarcia@igalia.com> on 2021-04-09
Reviewed by Žan Doberšek.

.:

  • Source/cmake/OptionsGTK.cmake:
  • Source/cmake/OptionsWPE.cmake:

Source/WebCore:

  • platform/network/soup/GUniquePtrSoup.h:
  • platform/network/soup/ResourceResponseSoup.cpp:

(WebCore::ResourceResponse::platformSuggestedFilename const):

4:35 AM Changeset in webkit [275758] by commit-queue@webkit.org
  • 4 edits
    2 adds in trunk

[css-flexbox] max-height percentages are wrongly resolved for replaced grid items in nested percentage flexboxes
https://bugs.webkit.org/show_bug.cgi?id=223931

Patch by Ziran Sun <Ziran Sun> on 2021-04-09
Reviewed by Javier Fernandez.

LayoutTests/imported/w3c:

  • web-platform-tests/css/css-flexbox/percentage-max-height-004-expected.html: Added.
  • web-platform-tests/css/css-flexbox/percentage-max-height-004.html: Added.

Source/WebCore:

This change is to make sure that when overridingContainingBlockContentLogicalHeight of a replaced's containing block
element is indefinite, % max-height of the replaced element is resolved to none.

Test: imported/w3c/web-platform-tests/css/css-flexbox/percentage-max-height-004.html

  • rendering/RenderBoxModelObject.cpp:

(WebCore::RenderBoxModelObject::hasAutoHeightOrContainingBlockWithAutoHeight const):

3:58 AM WebKitGTK/2.32.x edited by Philippe Normand
(diff)
3:56 AM Changeset in webkit [275757] by Philippe Normand
  • 2 edits in trunk/Source/WebCore

Unreviewed, GStreamer Thunder decryptor build fix after r275599

  • platform/graphics/gstreamer/eme/WebKitThunderDecryptorGStreamer.cpp:

(decrypt):

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

Teardown shadow root renderers on SlotAssignment::didChangeSlot
https://bugs.webkit.org/show_bug.cgi?id=221386

Patch by Carlos Garcia Campos <cgarcia@igalia.com> on 2021-04-09
Reviewed by Ryosuke Niwa.

This reverts r272900 to move the call to RenderTreeUpdater::tearDownRenderers() from hostChildElementDidChange()
to didChangeSlot(). This ensures the renderers are also cleared for other shadow root trees not using details
element.

  • dom/SlotAssignment.cpp:

(WebCore::SlotAssignment::addSlotElementByName):
(WebCore::SlotAssignment::didChangeSlot):

  • dom/SlotAssignment.h:

(WebCore::ShadowRoot::hostChildElementDidChange):

2:35 AM WebKitGTK/2.32.x edited by Philippe Normand
(diff)
2:34 AM WebKitGTK/2.32.x edited by Philippe Normand
(diff)
2:29 AM Changeset in webkit [275755] by commit-queue@webkit.org
  • 4 edits in trunk

[GStreamer] fast/canvas/canvas-createPattern-video-loading.html is failing since r218170
https://bugs.webkit.org/show_bug.cgi?id=173410

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

Source/WebCore:

When a flush has been requested by the GL video sink, allocate a new copy of the sample
which has to be released. The copy is necessary so that the video dimensions can still be
fetched and also for canvas rendering. The release is necessary because the sample might
have been allocated by a hardware decoder and memory might have to be reclaimed by a
non-sysmem buffer pool.

  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:

(WebCore::MediaPlayerPrivateGStreamer::flushCurrentBuffer):
(WebCore::MediaPlayerPrivateGStreamer::paint):

LayoutTests:

  • platform/gtk/TestExpectations: Unflag now-passing test.
2:17 AM Changeset in webkit [275754] by commit-queue@webkit.org
  • 6 edits in trunk

[css-grid] Fix min/max widths of grid affected by ancestor
https://bugs.webkit.org/show_bug.cgi?id=222100

Patch by Ziran Sun <Ziran Sun> on 2021-04-09
LayoutTests/imported/w3c:

Reviewed by Javier Fernandez.

  • web-platform-tests/css/css-grid/grid-items/grid-items-percentage-paddings-002-expected.txt:
  • web-platform-tests/css/css-grid/grid-items/grid-items-percentage-paddings-vertical-lr-002-expected.txt:
  • web-platform-tests/css/css-grid/grid-items/grid-items-percentage-paddings-vertical-rl-002-expected.txt:

Source/WebCore:

Reviewed by Reviewed by Javier Fernandez.

It's a reland of r273435, which got reverted because it broke
imported/w3c/web-platform-tests/css/css-flexbox/percentage-max-height-003.html. This change
narrows down the fix specificallly to the case when logical-width is recomputed.
We need to recalculate min/max widths of child that depend on the ancestor.
Before update logical-width, for element that needs preferredWidth recalcution,
it is necessary to make sure that min/max widths are set dirty.

This change is an import of chromium CL at
https://chromium-review.googlesource.com/c/chromium/src/+/527640/
Only the parts that apply to this issue are imported.

Tests were already imported in WPT.

  • rendering/RenderBlock.cpp:

(WebCore::shouldRecalculateMinMaxWidthsAffectedByAncestor):
(WebCore::RenderBlock::recomputeLogicalWidth):

2:17 AM Changeset in webkit [275753] by commit-queue@webkit.org
  • 2 edits in trunk/Tools/buildstream

[Flatpak SDK] Update to libsoup 2.99.3
https://bugs.webkit.org/show_bug.cgi?id=224361

Patch by Philippe Normand <pnormand@igalia.com> on 2021-04-09
Reviewed by Carlos Garcia Campos.

  • elements/sdk/libsoup3.bst:
2:11 AM Changeset in webkit [275752] by graouts@webkit.org
  • 2 edits in trunk/LayoutTests

[ Mac WK2 ] compositing/animation/keyframe-order.html is a flakey image failure
https://bugs.webkit.org/show_bug.cgi?id=221359

Reviewed by Dean Jackson.

Attempt to make this test more stable by awaiting the resolution of the animation.ready
promise as well as UIHelper.renderingUpdate() to ensure the animation has been committed.

  • compositing/animation/keyframe-order.html:
2:06 AM WebKitGTK/2.32.x edited by Philippe Normand
(diff)
1:54 AM Changeset in webkit [275751] by ysuzuki@apple.com
  • 5 edits
    4 adds in trunk

ServiceWorker should save module scripts
https://bugs.webkit.org/show_bug.cgi?id=224356
<rdar://problem/75634897>

Reviewed by Youenn Fablet.

Source/WebCore:

Test: http/wpt/service-workers/persistent-modules.html

In this patch, we call setScriptResource / scriptResource while loading service-worker module scripts in module loaders,
so that we can ensure that they are saved on the disk.

  • bindings/js/ScriptModuleLoader.cpp:

(WebCore::ScriptModuleLoader::notifyFinished):

  • bindings/js/WorkerModuleScriptLoader.cpp:

(WebCore::WorkerModuleScriptLoader::load):
(WebCore::WorkerModuleScriptLoader::notifyFinished):
(WebCore::WorkerModuleScriptLoader::notifyClientFinished):

  • bindings/js/WorkerModuleScriptLoader.h:

LayoutTests:

  • http/wpt/service-workers/persistent-modules-expected.txt: Added.
  • http/wpt/service-workers/persistent-modules.html: Added.
  • http/wpt/service-workers/resources/persistent-imported-module-script.py: Added.

(main):

  • http/wpt/service-workers/resources/persistent-module-worker.js: Added.
Note: See TracTimeline for information about the timeline view.