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

Timeline



Jun 30, 2021:

11:32 PM Changeset in webkit [279452] by wilander@apple.com
  • 5 edits
    3 moves in trunk/Source/WebCore

PCM: Change import from CryptoKitCBridging to CryptoKitPrivate
https://bugs.webkit.org/show_bug.cgi?id=227556
<rdar://79992592>

Reviewed by Alex Christensen.

Source/WebCore:

No new tests since no functionality is changed.

  • loader/cocoa/PrivateClickMeasurementCocoa.mm:

Changed import from CryptoKitCBridgingSoftLink.h to CryptoKitPrivateSoftLink.h.

Source/WebCore/PAL:

  • PAL.xcodeproj/project.pbxproj:
  • pal/PlatformMac.cmake:
  • pal/cocoa/CryptoKitPrivateSoftLink.h: Renamed from Source/WebCore/PAL/pal/cocoa/CryptoKitCBridgingSoftLink.h.
  • pal/cocoa/CryptoKitPrivateSoftLink.mm: Renamed from Source/WebCore/PAL/pal/cocoa/CryptoKitCBridgingSoftLink.mm.
  • pal/spi/cocoa/CryptoKitPrivateSPI.h: Renamed from Source/WebCore/PAL/pal/spi/cocoa/CryptoKitCBridgingSPI.h.
11:32 PM Changeset in webkit [279451] by graouts@webkit.org
  • 26 edits
    1 copy
    1 add in trunk/Source

[Model] [macOS] Add support for rendering model resources
https://bugs.webkit.org/show_bug.cgi?id=227530
<rdar://problem/79968206>

Reviewed by Dean Jackson.

Source/WebCore:

On macOS, ASVInlinePreview requires an instance in both the WebProcess and the UIProcess to exist with a matching UUID.

On the WebCore side, in the WebProcess, after writing the model resource as a file to disk, we create an instance when a
<model> element is created and message the UIProcess through the ChromeClient providing the UUID generated for it. When
the UIProcess is done processing this message, it will reply with another message which calls into
HTMLModelElement::inlinePreviewDidObtainContextId() with the matching UUID and a context ID for the remote context.
We can then set that remote context ID on our ASVInlinePreview instance.

We also introduce a HTMLModelElement::platformLayer() method such that RenderLayerBacking::updateConfiguration() can call
it to host the ASVInlinePreview layer.

  • Modules/model-element/HTMLModelElement.cpp:

(WebCore::HTMLModelElement::~HTMLModelElement):
(WebCore::HTMLModelElement::setSourceURL):
(WebCore::HTMLModelElement::notifyFinished):

  • Modules/model-element/HTMLModelElement.h:
  • Modules/model-element/HTMLModelElementCocoa.mm: Added.

(WebCore::HTMLModelElement::createFile):
(WebCore::HTMLModelElement::clearFile):
(WebCore::HTMLModelElement::modelDidChange):
(WebCore::HTMLModelElement::inlinePreviewDidObtainContextId):
(WebCore::HTMLModelElement::platformLayer const):

  • SourcesCocoa.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • loader/EmptyClients.cpp:

(WebCore::EmptyChromeClient::modelElementDidCreatePreview const):

  • loader/EmptyClients.h:
  • page/ChromeClient.h:

(WebCore::ChromeClient::modelElementDidCreatePreview const):

  • platform/Logging.h:
  • rendering/RenderLayerBacking.cpp:

(WebCore::RenderLayerBacking::updateConfiguration):

Source/WebCore/PAL:

Declare the ASVInlinePreview class for macOS.

  • PAL.xcodeproj/project.pbxproj:
  • pal/spi/mac/SystemPreviewSPI.h: Added.

Source/WebKit:

On macOS, ASVInlinePreview requires an instance in both the WebProcess and the UIProcess to exist with a matching UUID.

On the WebKit side, in the UIProcess, we receive a message from the WebProcess when the ASVInlinePreview in that process
was created with its generated UUID. We provide this to the ModelElementController, set the remote connection up and load
the file. When those tasks complete successfully we message back the WebProcess with the UUID and the provided ElementContext
to talk back to the HTMLModelElement instance that initiated the message to the UIProcess in the first place.

  • UIProcess/Cocoa/ModelElementControllerCocoa.mm:

(WebKit::ModelElementController::modelElementDidCreatePreview):

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

(WebKit::WebPageProxy::modelElementDidCreatePreview):
(WebKit::WebPageProxy::modelElementPreviewDidObtainContextId):

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

(WebKit::WebChromeClient::modelElementDidCreatePreview const):

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

(WebKit::WebPage::modelElementDidCreatePreview):
(WebKit::WebPage::modelElementPreviewDidObtainContextId):

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

Source/WTF:

Add a new compile-time flag indicating the availability of the ASVInlinePreview SPI on macOS.
We only define it when the header itself is present for now to avoid issues with older macOS
12 SDKs, but ultimately we will only use the macOS version check.

  • wtf/PlatformHave.h:
11:09 PM Changeset in webkit [279450] by Chris Dumez
  • 4 edits in trunk

Regression(r278737): WebContent crash when calling [WKWebView loadHTMLString:] with an invalid URL
https://bugs.webkit.org/show_bug.cgi?id=227560
<rdar://79815425>

Reviewed by Alex Christensen.

Source/WebKit:

Make sure the parsed URL is valid in WebPage::loadData() before getting its protocol and calling
LegacySchemeRegistry::registerURLSchemeAsHandledBySchemeHandler() with it. Passing a null String
to LegacySchemeRegistry::registerURLSchemeAsHandledBySchemeHandler() causes crashes.

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::loadData):

Tools:

Add API test coverage.

  • TestWebKitAPI/Tests/WebKitCocoa/LoadAlternateHTMLString.mm:

(TEST):

11:07 PM Changeset in webkit [279449] by sbarati@apple.com
  • 8 edits in trunk

Turn off data ICs by default
https://bugs.webkit.org/show_bug.cgi?id=227334
<rdar://problem/79802812>

Reviewed by Yusuke Suzuki.

JSTests:

  • microbenchmarks/deltablue-varargs.js:
  • microbenchmarks/richards-try-catch.js:

Source/JavaScriptCore:

There are GC crashes that are caused by access data IC sharing. This
patch is both turning off data IC sharing by default, and turning off data
ICs by default.

We should re-enable this once we figure out the issue:
https://bugs.webkit.org/show_bug.cgi?id=227551

Some of our testing modes are still running with data ICs on, so the code doesn't
bit rot. And a select few tests are running with data IC sharing on, for
similar reasons, even though we know it has issues. If those tests start
crashing, we'll just disable sharing completely until the issue is resolved.

  • bytecode/PolymorphicAccess.cpp:

(JSC::PolymorphicAccess::regenerate):

  • runtime/OptionsList.h:

Tools:

  • Scripts/run-jsc-stress-tests:
7:12 PM Changeset in webkit [279448] by ysuzuki@apple.com
  • 6 edits
    1 add in trunk

[JSC] Stop generating default parameter code if class constructor is called without 'new'
https://bugs.webkit.org/show_bug.cgi?id=227547
rdar://78821453

Reviewed by Mark Lam.

JSTests:

  • stress/calling-non-callable-constructors.js: Added.

(shouldThrow):

Source/JavaScriptCore:

We already do not generate body bytecode when class constructor is called without 'new' because many features including "super()" assume
that they generate bytecode only when it is called as a constructor. But we are not doing that for default parameters' bytecode generation.
This patch stops generating bytecode for default parameters if class constructor is called without 'new'.

  • bytecompiler/BytecodeGenerator.cpp:

(JSC::BytecodeGenerator::generate):
(JSC::BytecodeGenerator::BytecodeGenerator):

  • runtime/ConstructorKind.h:
7:03 PM Changeset in webkit [279447] by ysuzuki@apple.com
  • 15 edits in trunk

[JSC] Private names should be handled by usedVariables mechanism
https://bugs.webkit.org/show_bug.cgi?id=227476
rdar://76049469

Reviewed by Saam Barati.
Source/JavaScriptCore:

Private name handling in the current parser has many problems.

  1. The parser backtracks when it sees destructuring assignment, arrow function etc. In that case, the discarded code must not have any effect on the outside of that code. However, private name handling is annotating "used" of the upper scopes, which is wrong.
  2. In class expression, private name lookup intentionally skips the class-scope when parsing class heritage. But this is not correct since CodeBlock will perform lookup on the normal scope chain and this will look into the class-scope inconsistently. This means that we could encounter different private name at runtime. (it is tested in the added test).
  3. We skip inner function parsing when it is parsed previously. At that case, we must preserve private name annotation, but restored function information does not preserve that.

This patch changes how private name is handled.

  1. We were anyway defining #XXX variables which holds private symbols. So we track "use" information by the mechanism used for usual variables. We remove Used / Declared bits from PrivateNameEntry since they are not necessary at runtime, and these information is handled / tracked in Parser's Scope. For backtracking, we already have a mechanism to roll-back m_usedVariables, so using variable mechanism automatically fixes the problem.
  2. We define class-head-scope separately from class-scope. class-heritage expression can see class name, but it cannot use private names. Previously, our implementation attempted to achieve that by hacky way: skipping this class-scope for private names only while parsing class-heritage. But this was wrong since it does not consider CodeBlock's linking phase as described in the problem (2). Instead, we just define class-head-scope which holds class constructor name.
  3. We clean up popScopeInternal to populate lexical-variables and function-stack. Previously, we are stealing them before popping the scope when necessary, but this is a hack and a bit wrong since scope's popping operation needs to access these information in some cases. Instead, popScopeInternal populates them after popping the scope.
  • bytecompiler/BytecodeGenerator.cpp:

(JSC::BytecodeGenerator::pushClassHeadLexicalScope):
(JSC::BytecodeGenerator::popClassHeadLexicalScope):

  • bytecompiler/BytecodeGenerator.h:
  • bytecompiler/NodesCodegen.cpp:

(JSC::ClassExprNode::emitBytecode):

  • parser/ASTBuilder.h:

(JSC::ASTBuilder::createClassExpr):
(JSC::ASTBuilder::createBlockStatement):
(JSC::ASTBuilder::createForLoop):
(JSC::ASTBuilder::createForInLoop):
(JSC::ASTBuilder::createForOfLoop):
(JSC::ASTBuilder::createTryStatement):
(JSC::ASTBuilder::createSwitchStatement):

  • parser/NodeConstructors.h:

(JSC::ForNode::ForNode):
(JSC::TryNode::TryNode):
(JSC::ClassExprNode::ClassExprNode):
(JSC::SwitchNode::SwitchNode):
(JSC::BlockNode::BlockNode):
(JSC::EnumerationNode::EnumerationNode):
(JSC::ForInNode::ForInNode):
(JSC::ForOfNode::ForOfNode):

  • parser/Nodes.cpp:

(JSC::ScopeNode::ScopeNode):
(JSC::ProgramNode::ProgramNode):
(JSC::ModuleProgramNode::ModuleProgramNode):
(JSC::EvalNode::EvalNode):
(JSC::FunctionNode::FunctionNode):
(JSC::VariableEnvironmentNode::VariableEnvironmentNode):

  • parser/Nodes.h:

(JSC::VariableEnvironmentNode::VariableEnvironmentNode): Deleted.

  • parser/Parser.cpp:

(JSC::isPrivateFieldName):
(JSC::Parser<LexerType>::parseInner):
(JSC::Parser<LexerType>::parseForStatement):
(JSC::Parser<LexerType>::parseSwitchStatement):
(JSC::Parser<LexerType>::parseTryStatement):
(JSC::Parser<LexerType>::parseBlockStatement):
(JSC::Parser<LexerType>::parseFunctionDeclarationStatement):
(JSC::Parser<LexerType>::parseFunctionInfo):
(JSC::Parser<LexerType>::parseClass):
(JSC::Parser<LexerType>::parseBinaryExpression):
(JSC::Parser<LexerType>::parseMemberExpression):
(JSC::Parser<LexerType>::usePrivateName): Deleted.

  • parser/Parser.h:

(JSC::Scope::finalizeLexicalEnvironment):
(JSC::Scope::takeLexicalEnvironment):
(JSC::Scope::takeDeclaredVariables):
(JSC::Scope::takeFunctionDeclarations):
(JSC::Scope::forEachUsedVariable):
(JSC::Scope::usePrivateName):
(JSC::Scope::currentUsedVariablesSize):
(JSC::Parser::popScopeInternal):
(JSC::Parser::popScope):
(JSC::Parser<LexerType>::parse):
(JSC::Scope::copyUndeclaredPrivateNamesTo): Deleted.
(JSC::Scope::hasUsedButUndeclaredPrivateNames const): Deleted.
(JSC::Parser::privateNameScope): Deleted.
(JSC::Parser::copyUndeclaredPrivateNamesToOuterScope): Deleted.

  • parser/SyntaxChecker.h:

(JSC::SyntaxChecker::createClassExpr):
(JSC::SyntaxChecker::createBlockStatement):
(JSC::SyntaxChecker::createForLoop):
(JSC::SyntaxChecker::createForInLoop):
(JSC::SyntaxChecker::createForOfLoop):
(JSC::SyntaxChecker::createTryStatement):
(JSC::SyntaxChecker::createSwitchStatement):

  • parser/VariableEnvironment.cpp:

(JSC::VariableEnvironmentEntry::dump const):
(JSC::VariableEnvironment::declarePrivateField):
(JSC::VariableEnvironment::declarePrivateAccessor):
(JSC::VariableEnvironment::declarePrivateMethod):
(JSC::VariableEnvironment::dump const):

  • parser/VariableEnvironment.h:

(JSC::VariableEnvironment::declarePrivateField):
(JSC::VariableEnvironment::privateNameEnvironment):
(JSC::VariableEnvironment::addPrivateNamesFrom):
(JSC::PrivateNameEntry::isUsed const): Deleted.
(JSC::PrivateNameEntry::isDeclared const): Deleted.
(JSC::PrivateNameEntry::setIsUsed): Deleted.
(JSC::PrivateNameEntry::setIsDeclared): Deleted.
(JSC::VariableEnvironment::usePrivateName): Deleted.
(JSC::VariableEnvironment::copyPrivateNamesTo const): Deleted.
(JSC::VariableEnvironment::copyUndeclaredPrivateNamesTo const): Deleted.

5:48 PM Changeset in webkit [279446] by Chris Dumez
  • 4 edits
    1 delete in trunk/LayoutTests

REGRESSION (r279427) [ Mac ] imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/css-module/integrity.html is failing
https://bugs.webkit.org/show_bug.cgi?id=227557
<rdar://problem/79993241>

Unreviewed, silence console logging to address test flakiness.

LayoutTests/imported/w3c:

  • web-platform-tests/html/semantics/scripting-1/the-script-element/css-module/integrity-expected.txt:

LayoutTests:

  • TestExpectations:
  • platform/mac-wk1/imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/css-module/integrity-expected.txt: Removed.
5:16 PM Changeset in webkit [279445] by Jonathan Bedard
  • 8 edits in trunk/Tools

[webkitscmpy] Cache identifiers in Git checkouts
https://bugs.webkit.org/show_bug.cgi?id=225616
<rdar://problem/77789230>

Reviewed by Dewei Zhu.

Computing identifiers in git can be slow, especially if you need to compute
multiple. Caching all identifiers for a branch is not much more expensive than calculating a single identifier. Additionally, caching all identifiers
lets us build a performant subversion mapping, bypassing git-svn.

  • Scripts/libraries/webkitcorepy/setup.py:
  • Scripts/libraries/webkitcorepy/webkitcorepy/init.py:
  • Scripts/libraries/webkitscmpy/webkitscmpy/local/git.py:

(Git.Cache): Class holding a cache allowing quick mapping between hashes, identifiers and revisions.
(Git.Cache.init): Load cache from json file on disk.
(Git.Cache.path): Path to location of cache on disk.
(Git.Cache._fill): Populate revision and hash to identifier dictionaries.
(Git.Cache.populate): Parse git-log and populate cache.
(Git.Cache.hash): Given an identifier or revision, find the hash.
(Git.Cache.revision): Given an identifier or hash, find the revision.
(Git.Cache.identifier): Given a hash or revision, determine the identifier.
(Git.init): Instantiate cache.
(Git.commit): Check cache before running expensive commands.

  • Scripts/libraries/webkitscmpy/webkitscmpy/mocks/local/git.py: Add git log mock.
  • Scripts/libraries/webkitscmpy/webkitscmpy/test/git_unittest.py:

(TestGit.test_tag): Surpress logging.
(TestGit.test_checkout): Ditto.
(TestGit.test_no_log): Ditto.
(TestGit.test_order): Ditto.
(test_cache): Verify identifier cache.
(test_revision_cache): Verify revision cache.

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

(SummarizedResultsTest.test_svn_revision_git): Surpress logging.

  • Scripts/webkitpy/port/base_unittest.py:

(PortTest.test_commits_for_upload_git_svn): Surpress logging.

4:54 PM Changeset in webkit [279444] by Megan Gardner
  • 11 edits in trunk

Add ID and versioning support for AppHighlights
https://bugs.webkit.org/show_bug.cgi?id=227279

Reviewed by Tim Horton.

Source/WebCore:

AppHighlights.AppHighlightRestoreFromStorage
AppHighlights.AppHighlightCreateAndRestoreAndDropBytes
AppHighlights.AppHighlightCreateAndRestoreWithLaterVersion
AppHighlights.AppHighlightCreateAndRestoreWithExtraBytes
AppHighlights.AppHighlightRestoreFromStorageV0
AppHighlights.AppHighlightRestoreFromStorageV1

Reformat the storage of Highlight Data to allow for accurate deletion of active
highlights, as well as making them more robust and future-proof. Support decoding v0
highlights as well.

  • Modules/highlight/AppHighlightRangeData.cpp:

(WebCore::AppHighlightRangeData::NodePathComponent::decode):
(WebCore::AppHighlightRangeData::encode const):
(WebCore::AppHighlightRangeData::decode):

  • Modules/highlight/AppHighlightRangeData.h:

(WebCore::AppHighlightRangeData::NodePathComponent::NodePathComponent):
(WebCore::AppHighlightRangeData::AppHighlightRangeData):
(WebCore::AppHighlightRangeData::identifier const):
(WebCore::AppHighlightRangeData::startOffset const):
(WebCore::AppHighlightRangeData::endOffset const):

  • Modules/highlight/AppHighlightStorage.cpp:

(WebCore::createAppHighlightRangeData):

Source/WebKit:

Reformat the storage of Highlight Data to allow for accurate deletion of active
highlights, as well as making them more robust and future-proof.

Also found an issue with creating SharedBuffers from the memory map, in that the ipcHandle size
should be used instead of the sharedMemory->size().

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::restoreAppHighlightsAndScrollToIndex):

Source/WTF:

Allow PersistentDecoders to rewind, to help support v0 highlight data.

  • wtf/persistence/PersistentDecoder.cpp:

(WTF::Persistence::Decoder::Decoder):
(WTF::Persistence::Decoder::rewind):

  • wtf/persistence/PersistentDecoder.h:

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/WKAppHighlights.mm:

(TestWebKitAPI::createAppHighlightWithHTML):
(TestWebKitAPI::createWebViewForAppHighlightsWithHTML):
(TestWebKitAPI::TEST):

4:53 PM Changeset in webkit [279443] by rniwa@webkit.org
  • 13 edits
    5 adds in trunk

RemotePlayback must keep its media element alive when there is a pending activity
https://bugs.webkit.org/show_bug.cgi?id=227471
<rdar://79694015>

Reviewed by Geoffrey Garen.

Source/WebCore:

Fixed the bug that the media element's JS wrapper can be collected while there is still
a pending activity for RemotePlayback. In fact, the newly added test demonstrates that
the media element can be deleted without this patch.

This patch also introduces new extended IDL interface attribute GenerateAddOpaqueRoot
to make adding an opaque root as a part of visitChildren easy in the DOM code.

Test: media/remoteplayback-watch-availability-gc.html

  • Modules/remoteplayback/RemotePlayback.cpp:

(WebCore::RemotePlayback::ownerNode const):

  • Modules/remoteplayback/RemotePlayback.h:
  • Modules/remoteplayback/RemotePlayback.idl:
  • bindings/scripts/CodeGeneratorJS.pm:

(InstanceNeedsVisitChildren):
(GenerateImplementation):

  • bindings/scripts/IDLAttributes.json:
  • bindings/scripts/test/BindingTestGlobalConstructors.idl:
  • bindings/scripts/test/JS/JSTestGenerateAddOpaqueRoot.cpp: Added.

(WebCore::JSTestGenerateAddOpaqueRootDOMConstructor::prototypeForStructure):
(WebCore::JSTestGenerateAddOpaqueRootDOMConstructor::initializeProperties):
(WebCore::JSTestGenerateAddOpaqueRootPrototype::finishCreation):
(WebCore::JSTestGenerateAddOpaqueRoot::JSTestGenerateAddOpaqueRoot):
(WebCore::JSTestGenerateAddOpaqueRoot::finishCreation):
(WebCore::JSTestGenerateAddOpaqueRoot::createPrototype):
(WebCore::JSTestGenerateAddOpaqueRoot::prototype):
(WebCore::JSTestGenerateAddOpaqueRoot::getConstructor):
(WebCore::JSTestGenerateAddOpaqueRoot::destroy):
(WebCore::JSC_DEFINE_CUSTOM_GETTER):
(WebCore::jsTestGenerateAddOpaqueRoot_someAttributeGetter):
(WebCore::JSTestGenerateAddOpaqueRoot::subspaceForImpl):
(WebCore::JSTestGenerateAddOpaqueRoot::visitChildrenImpl):
(WebCore::JSTestGenerateAddOpaqueRoot::analyzeHeap):
(WebCore::JSTestGenerateAddOpaqueRootOwner::isReachableFromOpaqueRoots):
(WebCore::JSTestGenerateAddOpaqueRootOwner::finalize):
(WebCore::toJSNewlyCreated):
(WebCore::toJS):
(WebCore::JSTestGenerateAddOpaqueRoot::toWrapped):

  • bindings/scripts/test/JS/JSTestGenerateAddOpaqueRoot.h: Added.

(WebCore::JSTestGenerateAddOpaqueRoot::create):
(WebCore::JSTestGenerateAddOpaqueRoot::createStructure):
(WebCore::JSTestGenerateAddOpaqueRoot::subspaceFor):
(WebCore::wrapperOwner):
(WebCore::wrapperKey):
(WebCore::toJS):
(WebCore::toJSNewlyCreated):

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

(WebCore::jsTestGlobalObject_TestGenerateAddOpaqueRootConstructorGetter):
(WebCore::JSC_DEFINE_CUSTOM_GETTER):

  • bindings/scripts/test/SupplementalDependencies.dep:
  • bindings/scripts/test/TestGenerateAddOpaqueRoot.idl: Added.
  • testing/Internals.cpp:

(WebCore::Internals::isElementAlive const):
(WebCore::Internals::mediaElementCount):

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

LayoutTests:

Added a GC test.

  • media/remoteplayback-watch-availability-gc-expected.txt: Added.
  • media/remoteplayback-watch-availability-gc.html: Added.
4:51 PM Changeset in webkit [279442] by achristensen@apple.com
  • 2 edits in trunk/Source/WebCore

REGRESSION(r278391) Sometimes load durations show up as large negative numbers in WebInspector
https://bugs.webkit.org/show_bug.cgi?id=227413
<rdar://79801896>

Reviewed by Chris Dumez.

In r278391 I changed the meaning of members of NetworkLoadMetrics from Seconds deltas from fetchStart
to the MonotonicTime at which each event occurred. I also changed InspectorNetworkAgent::didFinishLoading
accordingly, but I overlooked the fact that sometimes we get empty NetworkLoadMetrics that have been marked as complete,
such as from NetworkResourceLoader::didFinishWithRedirectResponse which indicates that it is complete but
members such as responseEnd are still 0. Rather than check if it is complete, check if the member is nonzero.

The layout test http/tests/inspector/network/resource-timing.html would fail on AS Macs when run after other tests before this change.

  • inspector/agents/InspectorNetworkAgent.cpp:

(WebCore::InspectorNetworkAgent::didFinishLoading):

4:36 PM Changeset in webkit [279441] by mark.lam@apple.com
  • 4 edits in trunk/Source/JavaScriptCore

ARM64: Disable selection of BFI instruction variants by default.
https://bugs.webkit.org/show_bug.cgi?id=227554
rdar://79978150

Reviewed by Saam Barati.

We suspect that this may have caused some hangs. Disabling while we investigate.

  • b3/B3LowerToAir.cpp:
  • b3/testb3_2.cpp:

(testInsertBitField32):
(testInsertBitField64):

  • runtime/OptionsList.h:
4:15 PM Changeset in webkit [279440] by Truitt Savell
  • 2 edits in trunk/LayoutTests/imported/w3c

Update test expectations for imported/w3c/web-platform-tests/html/rendering/non-replaced-elements/flow-content-0/dialog.html after the changes in r279427
https://bugs.webkit.org/show_bug.cgi?id=227553

Unreviewed test gardening.

  • web-platform-tests/html/rendering/non-replaced-elements/flow-content-0/dialog-expected.txt:
3:51 PM Changeset in webkit [279439] by rniwa@webkit.org
  • 15 edits in trunk/Source

Use WeakHashMap and WeakPtr with Node in more places
https://bugs.webkit.org/show_bug.cgi?id=227192
<rdar://problem/79828322>

Reviewed by Geoffrey Garen.

Source/WebCore:

Deploy WeakHashMap and WeakPtr with Node/Element in more places.

  • dom/Document.cpp:

(WebCore::Document::elementForAccessKey):
(WebCore::Document::buildAccessKeyCache):
(WebCore::Document::registerForVisibilityStateChangedCallbacks):
(WebCore::Document::unregisterForVisibilityStateChangedCallbacks):
(WebCore::Document::visibilityStateChanged):

  • dom/Document.h:
  • dom/VisibilityChangeClient.h:
  • html/FormController.cpp:

(WebCore::FormKeyGenerator::formKey):
(WebCore::FormKeyGenerator::willDeleteForm):

  • html/HTMLAnchorElement.cpp:

(WebCore::rootEditableElementMap):
(WebCore::HTMLAnchorElement::rootEditableElementForSelectionOnMouseDown const):
(WebCore::HTMLAnchorElement::clearRootEditableElementForSelectionOnMouseDown):
(WebCore::HTMLAnchorElement::setRootEditableElementForSelectionOnMouseDown):

  • inspector/agents/InspectorDOMAgent.cpp:

(WebCore::InspectorDOMAgent::bind):
(WebCore::InspectorDOMAgent::unbind):
(WebCore::InspectorDOMAgent::nodeForId):
(WebCore::InspectorDOMAgent::pushNodePathToFrontend):
(WebCore::InspectorDOMAgent::boundNodeId):
(WebCore::InspectorDOMAgent::willDestroyDOMNode):
(WebCore::InspectorDOMAgent::mediaMetricsTimerFired):

  • inspector/agents/InspectorDOMAgent.h:
  • inspector/agents/InspectorLayerTreeAgent.cpp:

(WebCore::InspectorLayerTreeAgent::bindPseudoElement):
(WebCore::InspectorLayerTreeAgent::unbindPseudoElement):

  • inspector/agents/InspectorLayerTreeAgent.h:
  • style/StyleSharingResolver.h:

Source/WTF:

  • wtf/WeakHashMap.h:

(WTF::WeakHashMap::WeakHashMapIteratorBase::makePeek): Fixed type mismatch errors.
(WTF::WeakHashMap::ensure): Made this function return AddResult like HashMap::ensure.
(WTF::WeakHashMap::take): Added.
(WTF::WeakHashMap::removeIf): Fixed the bug that the callback was called with the iterator
of m_impl and not WeakHashMapIterator.

  • wtf/WeakHashSet.h:

(WTF::HashTraits<Ref<WeakPtrImpl<Counter>>>::isReleasedWeakValue): Moved to WeakPtr.h

  • wtf/WeakPtr.h:

(WTF::HashTraits<Ref<WeakPtrImpl<Counter>>>::isReleasedWeakValue): Moved from WeakHashSet.h

3:34 PM Changeset in webkit [279438] by Alan Coon
  • 1 copy in tags/Safari-612.1.21

Tag Safari-612.1.21.

3:25 PM Changeset in webkit [279437] by Truitt Savell
  • 2 edits in trunk/LayoutTests

[ MacOS wk1 ] crypto/workers/subtle/hrsa-postMessage-worker.html is flaky failing.
https://bugs.webkit.org/show_bug.cgi?id=227540.

Unreviewed test gardnening.

Patch by Ayumi Kojima <Ayumi Kojima> on 2021-06-30

  • platform/mac-wk1/TestExpectations:
3:18 PM Changeset in webkit [279436] by Alan Coon
  • 7 edits in branches/safari-612.1.21-branch/Source/JavaScriptCore

Revert r279249. rdar://problem/79987808

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

Revert r279253. rdar://problem/79987808

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

Updated to use smart pointers in MutationObserver.
https://bugs.webkit.org/show_bug.cgi?id=227518

Patch by venky dass <yaranamavenkataramana@apple.com> on 2021-06-30
Reviewed by Ryosuke Niwa.

  • dom/MutationObserver.cpp:

(WebCore::MutationObserver::~MutationObserver):
(WebCore::MutationObserver::disconnect):
(WebCore::MutationObserver::observationStarted):
(WebCore::MutationObserver::observationEnded):
(WebCore::MutationObserver::isReachableFromOpaqueRoots const):
(WebCore::MutationObserver::deliver):

  • dom/MutationObserver.h:
  • dom/MutationObserverRegistration.h:
3:09 PM Changeset in webkit [279433] by Truitt Savell
  • 2 edits in trunk/LayoutTests

[BigSur wk2] imported/w3c/web-platform-tests/webrtc/simplecall-no-ssrcs.https.html is a flaky failure
https://bugs.webkit.org/show_bug.cgi?id=227536

Unreviewed test gardening

Patch by Eric Hutchison <Eric Hutchison> on 2021-06-30

  • platform/mac-wk2/TestExpectations:
2:16 PM Changeset in webkit [279432] by Truitt Savell
  • 20 edits
    2 moves
    2 deletes in trunk

Unreviewed, reverting r279405.

Casued 50+ webrtc crashes on Big Sur Debug

Reverted changeset:

"[Cocoa] Migrate WebRTC UDP socket handling to NW API"
https://bugs.webkit.org/show_bug.cgi?id=227210
https://commits.webkit.org/r279405

2:01 PM Changeset in webkit [279431] by Russell Epstein
  • 1 copy in tags/Safari-612.1.18.11.3

Tag Safari-612.1.18.11.3.

1:40 PM Changeset in webkit [279430] by timothy_horton@apple.com
  • 2 edits in trunk/Source/WebKit

Fix the build.

  • UIProcess/ios/ProcessAssertionIOS.mm:
1:07 PM Changeset in webkit [279429] by Darin Adler
  • 4 edits in trunk

CSS specification prohibits numbers with trailing decimal point (e.g. "1.px"), but we allow them
https://bugs.webkit.org/show_bug.cgi?id=227517

Reviewed by Sam Weinig.

LayoutTests/imported/w3c:

  • web-platform-tests/css/css-syntax/decimal-points-in-numbers-expected.txt:

Expect a pass instead of a fail.

Source/WebCore:

Test: imported/w3c/web-platform-tests/css/css-syntax/decimal-points-in-numbers.html

  • css/parser/CSSParserFastPaths.cpp:

(WebCore::parseCSSNumber): Added. Checks for the trailing decimal point. Also uses
std::optional instead of a bool plus an out argument; should refactor the other functions
to work that way at some point.
(WebCore::parseSimpleLength): Use parseCSSNumber and isASCIIAlphaCaselessEqual.
(WebCore::parseSimpleAngle): Ditto.
(WebCore::parseTransformNumberArguments): Ditto.

12:48 PM Changeset in webkit [279428] by Russell Epstein
  • 8 edits in branches/safari-612.1.18.11-branch/Source

Versioning.

WebKit-7612.1.18.11.3

11:43 AM Changeset in webkit [279427] by Chris Dumez
  • 392 edits
    93 copies
    2 moves
    1054 adds
    67 deletes in trunk/LayoutTests

Resync html WPT tests from upstream
https://bugs.webkit.org/show_bug.cgi?id=227460

Reviewed by Sam Weinig.

Resync html WPT tests from upstream a38612f39e7752c3532.

LayoutTests/imported/w3c:

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

LayoutTests:

  • TestExpectations:
  • platform/mac-wk2/imported/w3c/web-platform-tests/html/dom/idlharness.https-expected.txt:
  • tests-options.json:
11:33 AM Changeset in webkit [279426] by commit-queue@webkit.org
  • 6 edits in trunk/Source/ThirdParty/ANGLE

ASSERT in webgl/1.0.x/conformance/glsl/misc/uninitialized-local-global-variables.html IdGen ASSERT(*base != '_');
https://bugs.webkit.org/show_bug.cgi?id=227482

Patch by Kimmo Kinnunen <kkinnunen@apple.com> on 2021-06-30
Reviewed by Kenneth Russell.

Give unnamed structs normal "_<number>" name.
The original code thought it gave "ANGLEunnamed<number>", but in reality it
gave "
unnamed<number>".
Since other constructs already create names of form "_<number>", it is unwarranted to
special case this particular case to give "_unnamed<number>" or "ANGLE_unnamed<number" or
"ANGLE_<number>".

  • src/compiler/translator/TranslatorMetalDirect/SeparateCompoundStructDeclarations.cpp:
  • src/tests/compiler_tests/MSLOutput_test.cpp:

(TEST_F):

11:31 AM Changeset in webkit [279425] by Chris Dumez
  • 43 edits
    59 adds
    1 delete in trunk/LayoutTests

Resync workers WPT tests from upstream
https://bugs.webkit.org/show_bug.cgi?id=227512

Reviewed by Sam Weinig.

LayoutTests/imported/w3c:

Resync workers WPT tests from upstream a38612f39e7752c353208.

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

LayoutTests:

  • tests-options.json:
11:29 AM Changeset in webkit [279424] by commit-queue@webkit.org
  • 3 edits in trunk

toDataURL image upside down if premultipliedAlpha=false
https://bugs.webkit.org/show_bug.cgi?id=156129
<rdar://problem/53942867>

Patch by Kimmo Kinnunen <kkinnunen@apple.com> on 2021-06-30
Reviewed by Kenneth Russell.

Flip the result PixelBuffer of GraphicsContextGL::paintRenderingResultsToPixelBuffer()
along the y-axis manually with memcpy.
ReadPixels returns the pixels upside down.
The PixelBuffer code-path is only used for reading unpremultiplied
image contents so that toDataURL() can encode the premultipliedAlpha=false
WebGL content as was rendered.

Other code-paths, such as Context2D.drawImage and drawing to the document,
use GraphicsContextGL::paintRenderingResultsToCanvas().
In those cases y-flip is done by constructing a ImageBuffer for the PixelBuffer
and then using y-flip transform to draw the ImageBuffer to the target ImageBuffer
using GraphicsContext.

Fixes webgl/1.0.x/conformance/canvas/to-data-url-test.html

  • platform/graphics/opengl/GraphicsContextGLOpenGL.cpp:

(WebCore::GraphicsContextGLOpenGL::paintRenderingResultsToPixelBuffer):

11:26 AM Changeset in webkit [279423] by Wenson Hsieh
  • 4 edits in trunk

[iOS] [Live Text] "Text from Camera" should not be shown in callout bar when selecting text
https://bugs.webkit.org/show_bug.cgi?id=227535
rdar://79936981

Reviewed by Devin Rousso.

Source/WebKit:

Match new system behavior in rdar://79758142 by not showing the "Text from Camera" item in the callout bar when
the selection is a (non-collapsed) range.

Test: WebKit.CaptureTextFromCamera

  • UIProcess/ios/WKContentViewInteraction.mm:

(-[WKContentView canPerformActionForWebView:withSender:]):

Tools:

Add an API test to exercise the change. See WebKit ChangeLog for more detail.

  • TestWebKitAPI/Tests/WebKitCocoa/WKContentViewEditingActions.mm:

(canPerformActionWithSender):
(TEST):

11:14 AM Changeset in webkit [279422] by Patrick Angle
  • 4 edits
    2 adds in trunk

Web Inspector: Styles: Autocomplete should support function completions
https://bugs.webkit.org/show_bug.cgi?id=227097

Reviewed by Devin Rousso.

Source/WebInspectorUI:

Covered by new test:

  • inspector/unit-tests/css-keyword-completions.html

Add support for completing autocompleting values as part of a CSS function in the Styles sidebar panel.

  • UserInterface/Models/CSSKeywordCompletions.js:

(WI.CSSKeywordCompletions.forPartialPropertyName):
(WI.CSSKeywordCompletions.forPartialPropertyValue):
Tokenize the provided partial value text to correct provide completion for functions, like env(.

  • UserInterface/Views/SpreadsheetStyleProperty.js:

(WI.SpreadsheetStyleProperty.prototype._nameCompletionDataProvider):
(WI.SpreadsheetStyleProperty.prototype._valueCompletionDataProvider):
Moved logic to WI.CSSKeywordCompletions.

LayoutTests:

  • inspector/unit-tests/css-keyword-completions-expected.txt: Added.
  • inspector/unit-tests/css-keyword-completions.html: Added.
10:45 AM Changeset in webkit [279421] by zhifei_fang@apple.com
  • 2 edits in trunk/Tools

[webkit.css] make the active tab more obvious
https://bugs.webkit.org/show_bug.cgi?id=227515

Reviewed by Jonathan Bedard.

  • Scripts/libraries/resultsdbpy/resultsdbpy/view/static/library/css/webkit.css:

(.tabs .tab.active .link):

10:09 AM Changeset in webkit [279420] by graouts@webkit.org
  • 23 edits
    3 adds in trunk/Source

[Model] [iOS] Add support for displaying <model> in fullscreen
https://bugs.webkit.org/show_bug.cgi?id=227443
<rdar://problem/79859937>

Reviewed by Sam Weinig.

Source/WebCore:

Expose a new enterFullscreen() method on HTMLModelElement allowing to enter a fullscreen AR experience
where the resource may be displayed in the user's environment. This differs from the existing
Element.requestFullscreen() method since the experience is provided by the platform and we're not
presenting the inline <model> element in a fullscreen window.

From the WebProcess side, this requires obtaining a reference to the content layer for the <model> element
and sending it in an IPC message to the UIProcess.

  • Modules/model-element/HTMLModelElement.cpp:

(WebCore::HTMLModelElement::enterFullscreen):

  • Modules/model-element/HTMLModelElement.h:
  • Modules/model-element/HTMLModelElement.idl:
  • loader/EmptyClients.cpp:

(WebCore::EmptyChromeClient::takeModelElementFullscreen const):

  • loader/EmptyClients.h:
  • page/ChromeClient.h:

(WebCore::ChromeClient::takeModelElementFullscreen const):

  • platform/graphics/GraphicsLayer.h:

(WebCore::GraphicsLayer::contentsLayerIDForModel const):

  • platform/graphics/ca/GraphicsLayerCA.cpp:

(WebCore::GraphicsLayerCA::contentsLayerIDForModel const):

  • platform/graphics/ca/GraphicsLayerCA.h:

Source/WebCore/PAL:

Declare additional ASVInlinePreview methods required for fullscreen support.

  • pal/spi/ios/SystemPreviewSPI.h:

Source/WebKit:

Displaying a model element in fullscreen requires making some calls on the ASVInlinePreview object
created by a WKModelView. We send the content layer ID we receive through an IPC call from the
WebProcess to the new ModelElementController. We then look at the remote layer tree for a node
matching that ID and find its related UIView. If we find a WKModelView, as expected, we can carry
on and call -[ASVInlinePreview createFullscreenInstanceWithInitialFrame:previewOptions:completionHandler:]
to enter fullscreen using the presentingViewController provided by the UI client, and then observe
when we exit fullscreen using -[ASVInlinePreview observeDismissFullscreenWithCompletionHandler:]
to make sure the presenting view controller is removed.

  • Sources.txt:
  • SourcesCocoa.txt:
  • UIProcess/Cocoa/ModelElementControllerCocoa.mm: Added.

(WebKit::ModelElementController::takeModelElementFullscreen):

  • UIProcess/ModelElementController.cpp: Added.

(WebKit::ModelElementController::ModelElementController):

  • UIProcess/ModelElementController.h: Added.

(WebKit::ModelElementController::page):

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::didAttachToRunningProcess):
(WebKit::WebPageProxy::resetState):
(WebKit::WebPageProxy::takeModelElementFullscreen):

  • UIProcess/WebPageProxy.h:
  • UIProcess/WebPageProxy.messages.in:
  • WebKit.xcodeproj/project.pbxproj:
  • WebProcess/WebCoreSupport/WebChromeClient.cpp:

(WebKit::WebChromeClient::takeModelElementFullscreen const):

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

(WebKit::WebPage::takeModelElementFullscreen):

  • WebProcess/WebPage/WebPage.h:
9:43 AM Changeset in webkit [279419] by Alan Coon
  • 7 edits in branches/safari-612.1.21-branch/Source/WebKit

Cherry-pick r279411. rdar://problem/79970312

Unreviewed, reverting r279155.

Caused a PLT5 regression

Reverted changeset:

"[macOS] Suspend WebProcesses that are in the process cache"
https://bugs.webkit.org/show_bug.cgi?id=227269
https://commits.webkit.org/r279155

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

9:43 AM Changeset in webkit [279418] by Alan Coon
  • 4 edits in branches/safari-612.1.21-branch/Source

Cherry-pick r279392. rdar://problem/79970322

WebKit_iosmac build failure: SystemPreviewSPI.h:29:9: fatal error: 'AssetViewer/ARQuickLookWebKitItem.h' file not found
https://bugs.webkit.org/show_bug.cgi?id=227507
<rdar://problem/79902043>

Reviewed by Dean Jackson.

When we added new SPIs in Source/WebCore/PAL/pal/spi/ios/SystemPreviewSPI.h as part of r279312 we also included this file
from a new file that is compiled on Catalyst. This revealed an issue where existing SPIs included in that file weren't
actually available on Catalyst. We now make sure we compile those out on Catalyst.

Source/WebCore/PAL:

  • pal/spi/ios/SystemPreviewSPI.h:

Source/WTF:

  • wtf/PlatformHave.h:

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

9:43 AM Changeset in webkit [279417] by Alan Coon
  • 4 edits
    4 deletes in branches/safari-612.1.21-branch

Cherry-pick r279382. rdar://problem/79970297

Unreviewed, reverting r279250.
https://bugs.webkit.org/show_bug.cgi?id=227499

Sometimes causes YouTube audio to cut out

Reverted changeset:

"[Cocoa] Last few seconds of 'audio/webm; codecs=vorbis'
appended to a SampleBuffer are not played"
https://bugs.webkit.org/show_bug.cgi?id=226069
https://commits.webkit.org/r279250

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

9:43 AM Changeset in webkit [279416] by Alan Coon
  • 9 edits
    1 add in branches/safari-612.1.21-branch/Source

Cherry-pick r279365. rdar://problem/79969742

Enable Probabilistic Guard Malloc for RuleData and RuleFeature vectors
https://bugs.webkit.org/show_bug.cgi?id=227446

Reviewed by Geoffrey Garen.

Source/WebCore:

Help for catching a crash.

  • style/RuleFeature.cpp: (WebCore::Style::RuleFeatureSet::collectFeatures): (WebCore::Style::RuleFeatureSet::add):
  • style/RuleFeature.h:
  • style/RuleSet.h:
  • style/StyleScopeRuleSets.cpp: (WebCore::Style::makeRuleSet): (WebCore::Style::ensureInvalidationRuleSets):

Source/WTF:

Add SystemMalloc type that can be used with containers like Vector and
ProbabilisticGuardMalloc alias for it on Mac/iOS platforms.

  • WTF.xcodeproj/project.pbxproj:
  • wtf/CMakeLists.txt:
  • wtf/SystemMalloc.h: Added. (WTF::SystemMalloc::malloc): (WTF::SystemMalloc::tryMalloc): (WTF::SystemMalloc::zeroedMalloc): (WTF::SystemMalloc::tryZeroedMalloc): (WTF::SystemMalloc::realloc): (WTF::SystemMalloc::tryRealloc): (WTF::SystemMalloc::free):
  • wtf/Vector.h: (WTF::Malloc>::appendVector):

Include all template parameters for the appendVector argument.

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

9:39 AM Changeset in webkit [279415] by Truitt Savell
  • 2 edits in trunk/LayoutTests

[MacOS wk1] fast/shadow-dom/style-resolver-sharing.html is a flaky failure
https://bugs.webkit.org/show_bug.cgi?id=227516

Unreviewed test gardening

Patch by Eric Hutchison <Eric Hutchison> on 2021-06-30

  • platform/mac-wk1/TestExpectations:
9:31 AM Changeset in webkit [279414] by ntim@apple.com
  • 18 edits
    2 adds
    1 delete in trunk

Add modal dialog UA styles
https://bugs.webkit.org/show_bug.cgi?id=226175

Reviewed by Antti Koivisto.

This adds an :-internal-modal-dialog pseudo class and a test to make sure it does not leak.

This improves WPT results a lot and expectations have been updated. Some tests start failing,
but those are mainly top-layer related (which isn't implemented yet).

LayoutTests/imported/w3c:

  • web-platform-tests/html/rendering/non-replaced-elements/flow-content-0/dialog-expected.txt:
  • web-platform-tests/html/semantics/interactive-elements/the-dialog-element/abspos-dialog-layout-expected.txt:
  • web-platform-tests/html/semantics/interactive-elements/the-dialog-element/centering-expected.txt:

Source/WebCore:

  • css/CSSSelector.cpp:

(WebCore::CSSSelector::selectorText const):

  • css/CSSSelector.h:
  • css/SelectorChecker.cpp:

(WebCore::SelectorChecker::checkOne const):

  • css/SelectorCheckerTestFunctions.h:

(WebCore::matchesModalDialogPseudoClass):

  • css/SelectorPseudoClassAndCompatibilityElementMap.in:
  • css/dialog.css:

(dialog:-internal-modal-dialog):

  • css/parser/CSSSelectorParser.cpp:

(WebCore::CSSSelectorParser::consumePseudo):

  • cssjit/SelectorCompiler.cpp:

(WebCore::SelectorCompiler::JSC_DEFINE_JIT_OPERATION):
(WebCore::SelectorCompiler::addPseudoClassType):

  • html/HTMLDialogElement.cpp:

(WebCore::HTMLDialogElement::showModal):
(WebCore::HTMLDialogElement::parseAttribute):
(WebCore::HTMLDialogElement::isModal const):

  • html/HTMLDialogElement.h:

LayoutTests:

  • TestExpectations:
  • fast/css/pseudo-class-internal-expected.txt: Added.
  • fast/css/pseudo-class-internal.html: Added.
  • platform/ios-wk2/imported/w3c/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/abspos-dialog-layout-expected.txt:
  • platform/ios-wk2/imported/w3c/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/centering-expected.txt: Removed.
9:28 AM Changeset in webkit [279413] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebCore

REGRESSION(r278884): [Nicosia] Fix empty stack check in CairoOperationRecorder::restore()
https://bugs.webkit.org/show_bug.cgi?id=227525

Patch by Carlos Garcia Campos <cgarcia@igalia.com> on 2021-06-30
Reviewed by Myles C. Maxfield.

We keep our own state stack, with a state added at construction, so we should check our stack instead.

  • platform/graphics/nicosia/cairo/NicosiaCairoOperationRecorder.cpp:

(Nicosia::CairoOperationRecorder::restore):

8:37 AM Changeset in webkit [279412] by Chris Dumez
  • 4 edits in trunk/Source/WebKit

Unreviewed, reverting r276969.

Causes previous assertion to get released before the new one
is taken (asynchronously)

Reverted changeset:

"[iOS] Use async API to take RunningBoard assertions"
https://bugs.webkit.org/show_bug.cgi?id=225324
https://commits.webkit.org/r276969

8:22 AM Changeset in webkit [279411] by Chris Dumez
  • 7 edits in trunk/Source/WebKit

Unreviewed, reverting r279155.

Caused a PLT5 regression

Reverted changeset:

"[macOS] Suspend WebProcesses that are in the process cache"
https://bugs.webkit.org/show_bug.cgi?id=227269
https://commits.webkit.org/r279155

7:13 AM Changeset in webkit [279410] by commit-queue@webkit.org
  • 2 edits in trunk/JSTests

Unskip interpreter-wasm.js on ARM and MIPS
https://bugs.webkit.org/show_bug.cgi?id=227295

Patch by Mikhail R. Gadelha <Mikhail R. Gadelha> on 2021-06-30
Reviewed by Caio Araujo Neponoceno de Lima.

Changed the testcase to be guarded by $vm.isWasmSupported(), so the
test will be executed once wasm is available in the arch

  • microbenchmarks/interpreter-wasm.js:

(key.in.Module.Module.hasOwnProperty): Deleted.
(quit_): Deleted.
(locateFile): Deleted.
(ENVIRONMENT_IS_NODE.read_): Deleted.
(ENVIRONMENT_IS_NODE.readBinary): Deleted.
(ENVIRONMENT_IS_NODE.quit_): Deleted.
(ENVIRONMENT_IS_NODE.Module.string_appeared_here): Deleted.
(else.read_): Deleted.
(else.readBinary): Deleted.
(else.quit_): Deleted.
(else): Deleted.
(else.xhr.onload): Deleted.
(else.readAsync): Deleted.
(else.setWindowTitle): Deleted.
(key.in.moduleOverrides.moduleOverrides.hasOwnProperty): Deleted.
(dynamicAlloc): Deleted.
(getNativeTypeSize): Deleted.
(warnOnce): Deleted.
(convertJsFunctionToWasm): Deleted.
(addFunctionWasm): Deleted.
(removeFunctionWasm): Deleted.
(): Deleted.
(setTempRet0): Deleted.
(setValue): Deleted.
(assert): Deleted.
(getCFunc): Deleted.
(toC.string_appeared_here): Deleted.
(convertReturnValue): Deleted.
(ccall): Deleted.
(UTF8ArrayToString): Deleted.
(UTF8ToString): Deleted.
(stringToUTF8Array): Deleted.
(stringToUTF8): Deleted.
(lengthBytesUTF8): Deleted.
(allocateUTF8OnStack): Deleted.
(writeArrayToMemory): Deleted.
(writeAsciiToMemory): Deleted.
(updateGlobalBufferAndViews): Deleted.
(callRuntimeCallbacks): Deleted.
(preRun): Deleted.
(initRuntime): Deleted.
(preMain): Deleted.
(exitRuntime): Deleted.
(postRun): Deleted.
(addOnPreRun): Deleted.
(addOnPostRun): Deleted.
(addRunDependency): Deleted.
(removeRunDependency): Deleted.
(hasPrefix): Deleted.
(isDataURI): Deleted.
(isFileURI): Deleted.
(getBinary): Deleted.
(getBinaryPromise): Deleted.
(createWasm.receiveInstance): Deleted.
(createWasm.receiveInstantiatedSource): Deleted.
(createWasm.instantiateArrayBuffer): Deleted.
(createWasm.instantiateAsync.): Deleted.
(createWasm.instantiateAsync): Deleted.
(createWasm): Deleted.
(ATINIT.push.func): Deleted.
(demangle): Deleted.
(demangleAll): Deleted.
(_emscripten_get_sbrk_ptr): Deleted.
(_emscripten_memcpy_big): Deleted.
(abortOnCannotGrowMemory): Deleted.
(_emscripten_resize_heap): Deleted.
(PATH.splitPath): Deleted.
(PATH.normalizeArray): Deleted.
(PATH.normalize): Deleted.
(PATH.dirname): Deleted.
(PATH.basename): Deleted.
(PATH.extname): Deleted.
(PATH.join): Deleted.
(PATH.join2): Deleted.
(SYSCALLS.printChar): Deleted.
(SYSCALLS.getStr): Deleted.
(SYSCALLS.get64): Deleted.
(_fd_write): Deleted.
(_setTempRet0): Deleted.
(_wasm_call_ctors.Module.string_appeared_here): Deleted.
(_main.Module.string_appeared_here): Deleted.
(_malloc.Module.string_appeared_here): Deleted.
(
_errno_location.Module.string_appeared_here): Deleted.
(_free.Module.string_appeared_here): Deleted.
(stackSave.Module.string_appeared_here): Deleted.
(stackAlloc.Module.string_appeared_here): Deleted.
(stackRestore.Module.string_appeared_here): Deleted.
(growWasmMemory.Module.string_appeared_here): Deleted.
(dynCall_ii.Module.string_appeared_here): Deleted.
(dynCall_iiii.Module.string_appeared_here): Deleted.
(dynCall_jiji.Module.string_appeared_here): Deleted.
(ExitStatus): Deleted.
(dependenciesFulfilled): Deleted.
(callMain): Deleted.
(run.doRun): Deleted.
(run): Deleted.
(exit): Deleted.

6:36 AM Changeset in webkit [279409] by ntim@apple.com
  • 14 edits
    5 adds
    2 deletes in trunk/LayoutTests

Re-import html/semantics/interactive-elements/the-dialog-element WPT
https://bugs.webkit.org/show_bug.cgi?id=227523

Reviewed by Antti Koivisto.

WPT Revision: https://github.com/web-platform-tests/wpt/commit/616577e3962171d2ffe41472e13f6353e6ea43ef

LayoutTests/imported/w3c:

  • resources/import-expectations.json:
  • resources/resource-files.json:
  • web-platform-tests/html/semantics/interactive-elements/the-dialog-element/abspos-dialog-layout-expected.txt:
  • web-platform-tests/html/semantics/interactive-elements/the-dialog-element/abspos-dialog-layout.html:
  • web-platform-tests/html/semantics/interactive-elements/the-dialog-element/centering-expected.txt:
  • web-platform-tests/html/semantics/interactive-elements/the-dialog-element/centering-iframe.sub.html:
  • web-platform-tests/html/semantics/interactive-elements/the-dialog-element/centering.html:
  • web-platform-tests/html/semantics/interactive-elements/the-dialog-element/dialog-audio-video-crash.html: Added.
  • web-platform-tests/html/semantics/interactive-elements/the-dialog-element/dialog-form-submission-expected.txt:
  • web-platform-tests/html/semantics/interactive-elements/the-dialog-element/dialog-form-submission.html:
  • web-platform-tests/html/semantics/interactive-elements/the-dialog-element/dialog-not-in-tree-crash.html: Added.
  • web-platform-tests/html/semantics/interactive-elements/the-dialog-element/dialog-scrolled-viewport-expected.txt: Removed.
  • web-platform-tests/html/semantics/interactive-elements/the-dialog-element/dialog-scrolled-viewport.html: Removed.
  • web-platform-tests/html/semantics/interactive-elements/the-dialog-element/focus-after-close-expected.txt: Added.
  • web-platform-tests/html/semantics/interactive-elements/the-dialog-element/focus-after-close.html: Added.
  • web-platform-tests/html/semantics/interactive-elements/the-dialog-element/w3c-import.log:

LayoutTests:

  • platform/ios-wk2/imported/w3c/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/abspos-dialog-layout-expected.txt:
  • platform/ios-wk2/imported/w3c/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/centering-expected.txt: Added.
  • platform/ios-wk2/imported/w3c/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/dialog-form-submission-expected.txt:
5:53 AM Changeset in webkit [279408] by ntim@apple.com
  • 8 edits in trunk

Support -internal- prefix for pseudo classes and rename :-webkit-direct-focus to :-internal-direct-focus
https://bugs.webkit.org/show_bug.cgi?id=227522

Reviewed by Antti Koivisto.

:-webkit-direct-focus was already UA-sheet only, so I took an opportunity to rename it here, also just to
test that the script is working. Test updated accordingly.

Source/WebCore:

  • css/CSSSelector.cpp:

(WebCore::CSSSelector::selectorText const):

  • css/SelectorPseudoClassAndCompatibilityElementMap.in:
  • css/html.css:

(:-internal-direct-focus):
(:-webkit-direct-focus): Deleted.

  • css/makeSelectorPseudoClassAndCompatibilityElementMap.py:

(enumerablePseudoType):

LayoutTests:

  • fast/shadow-dom/direct-focus-pseudo-does-not-match-in-author-stylesheet.html:
  • fast/shadow-dom/direct-focus-pseudo-does-not-match-in-author-stylesheet-expected.txt:
3:19 AM Changeset in webkit [279407] by timothy_horton@apple.com
  • 2 edits in trunk/Source/WTF

Fix the build.

  • wtf/PlatformHave.h:

This is not available on the simulator; disable it.

3:18 AM Changeset in webkit [279406] by ntim@apple.com
  • 25 edits in trunk

Implement support for <dialog> element close event
https://bugs.webkit.org/show_bug.cgi?id=227493

Reviewed by Antti Koivisto.

With this change, the m_isOpen flag of HTMLDialogElement is only changed on attribute change, so attribute changes can
be detected more easily to fire this new "close" event.

Test: web-platform-tests/html/semantics/interactive-elements/the-dialog-element/dialog-close.html
Adjusted existing test expectations for new close event.

LayoutTests/imported/w3c:

  • web-platform-tests/html/browsers/the-window-object/security-window/window-security.https-expected.txt:
  • web-platform-tests/html/browsers/the-window-object/window-properties.https-expected.txt:
  • web-platform-tests/html/dom/idlharness.https-expected.txt:
  • web-platform-tests/mathml/relations/html5-tree/math-global-event-handlers.tentative-expected.txt:
  • web-platform-tests/html/semantics/interactive-elements/the-dialog-element/dialog-close-expected.txt:
  • web-platform-tests/html/webappapis/scripting/events/event-handler-all-global-events-expected.txt:
  • web-platform-tests/html/webappapis/scripting/events/event-handler-attributes-body-window-expected.txt:
  • web-platform-tests/html/webappapis/scripting/events/event-handler-attributes-windowless-body-expected.txt:

Source/WebCore:

  • dom/GlobalEventHandlers.idl:
  • html/HTMLAttributeNames.in:
  • html/HTMLDialogElement.cpp:

(WebCore::dialogCloseEventSender):
(WebCore::HTMLDialogElement::~HTMLDialogElement):
(WebCore::HTMLDialogElement::show):
(WebCore::HTMLDialogElement::showModal):
(WebCore::HTMLDialogElement::close):
(WebCore::HTMLDialogElement::dispatchPendingEvent):
(WebCore::HTMLDialogElement::parseAttribute):
(WebCore::HTMLDialogElement::setOpen):
(WebCore::HTMLDialogElement::toggleOpen): Deleted.

  • html/HTMLDialogElement.h:
  • html/HTMLElement.cpp:

(WebCore::HTMLElement::createEventHandlerNameMap):

LayoutTests:

  • platform/glib/imported/w3c/web-platform-tests/mathml/relations/html5-tree/math-global-event-handlers.tentative-expected.txt:
  • platform/gtk/imported/w3c/web-platform-tests/html/dom/idlharness.https-expected.txt:
  • platform/ios-wk2/imported/w3c/web-platform-tests/html/dom/idlharness.https-expected.txt:
  • platform/ios-wk2/imported/w3c/web-platform-tests/mathml/relations/html5-tree/math-global-event-handlers.tentative-expected.txt:
  • platform/mac-wk1/imported/w3c/web-platform-tests/html/dom/idlharness.https-expected.txt:
  • platform/mac-wk1/imported/w3c/web-platform-tests/mathml/relations/html5-tree/math-global-event-handlers.tentative-expected.txt:
  • platform/mac-wk2/imported/w3c/web-platform-tests/html/dom/idlharness.https-expected.txt:
  • platform/mac-wk2/imported/w3c/web-platform-tests/mathml/relations/html5-tree/math-global-event-handlers.tentative-expected.txt:
  • platform/wpe/imported/w3c/web-platform-tests/html/dom/idlharness.https-expected.txt:
1:46 AM Changeset in webkit [279405] by youenn@apple.com
  • 20 edits
    1 copy
    2 moves
    1 add in trunk

[Cocoa] Migrate WebRTC UDP socket handling to NW API
https://bugs.webkit.org/show_bug.cgi?id=227210
LayoutTests/imported/w3c:

Reviewed by Eric Carlson.

Rebasing tests as timing changes a bit.
This aligns with Chrome and Firefox behavior.

  • web-platform-tests/webrtc/no-media-call-expected.txt:
  • web-platform-tests/webrtc/promises-call-expected.txt:

Source/ThirdParty/libwebrtc:

Reviewed by Eric Carlson.

  • Configurations/libwebrtc.iOS.exp:
  • Configurations/libwebrtc.iOSsim.exp:
  • Configurations/libwebrtc.mac.exp:

Source/WebCore:

Reviewed by Eric Carlson.

Add infrastructure to new experimental feature flag for NW backed UDP sockets.

  • page/RuntimeEnabledFeatures.h:

(WebCore::RuntimeEnabledFeatures::webRTCPlatformTCPSocketsEnabled const):
(WebCore::RuntimeEnabledFeatures::setWebRTCPlatformTCPSocketsEnabled):
(WebCore::RuntimeEnabledFeatures::webRTCPlatformUDPSocketsEnabled const):
(WebCore::RuntimeEnabledFeatures::setWebRTCPlatformUDPSocketsEnabled):

Source/WebKit:

Reviewed by Eric Carlson.

Migrate UDP socket handling from WebRTC physical socket server to nw API for Cocoa ports.

For each UDP socket opened, we open a nw_listener that will listen to inbound connections.
On inbound connection, we receive a nw_connection that we store in a address -> connection map.

Whenever sending a packet, we look at the remote address.
If needed, we create a nw_connection to that particular remote address and store it in the address -> connection map.
We then use the pre-existing or newly created nw_connection to send the packet.

Make sure to cancel NW connection in case of failure before releasing the socket.

Covered by existing tests

  • NetworkProcess/webrtc/NetworkRTCProvider.cpp:

(WebKit::NetworkRTCProvider::createUDPSocket):
(WebKit::NetworkRTCProvider::createClientTCPSocket):

  • NetworkProcess/webrtc/NetworkRTCProvider.h:

(WebKit::NetworkRTCProvider::setPlatformTCPSocketsEnabled):
(WebKit::NetworkRTCProvider::setPlatformUDPSocketsEnabled):

  • NetworkProcess/webrtc/NetworkRTCProvider.messages.in:
  • NetworkProcess/webrtc/NetworkRTCTCPSocketCocoa.h: Copied from Source/WebKit/NetworkProcess/webrtc/NetworkRTCSocketCocoa.h.
  • NetworkProcess/webrtc/NetworkRTCTCPSocketCocoa.mm: Renamed from Source/WebKit/NetworkProcess/webrtc/NetworkRTCSocketCocoa.mm.

(WebKit::tcpSocketQueue):
(WebKit::NetworkRTCTCPSocketCocoa::createClientTCPSocket):
(WebKit::NetworkRTCTCPSocketCocoa::NetworkRTCTCPSocketCocoa):
(WebKit::NetworkRTCTCPSocketCocoa::close):
(WebKit::NetworkRTCTCPSocketCocoa::setOption):
(WebKit::NetworkRTCTCPSocketCocoa::createMessageBuffer):
(WebKit::NetworkRTCTCPSocketCocoa::sendTo):

  • NetworkProcess/webrtc/NetworkRTCUDPSocketCocoa.h: Added.

(WTF::DefaultHash<rtc::SocketAddress>::hash):
(WTF::DefaultHash<rtc::SocketAddress>::equal):
(WTF::HashTraits<rtc::SocketAddress>::emptyValue):
(WTF::HashTraits<rtc::SocketAddress>::constructDeletedValue):
(WTF::HashTraits<rtc::SocketAddress>::isDeletedValue):

  • NetworkProcess/webrtc/NetworkRTCUDPSocketCocoa.mm: Added.

(WebKit::NetworkRTCUDPSocketCocoaConnections::create):
(WebKit::NetworkRTCUDPSocketCocoaConnections::WTF_GUARDED_BY_LOCK):
(WebKit::udpSocketQueue):
(WebKit::NetworkRTCUDPSocketCocoa::createUDPSocket):
(WebKit::NetworkRTCUDPSocketCocoa::NetworkRTCUDPSocketCocoa):
(WebKit::NetworkRTCUDPSocketCocoa::~NetworkRTCUDPSocketCocoa):
(WebKit::NetworkRTCUDPSocketCocoa::close):
(WebKit::NetworkRTCUDPSocketCocoa::setOption):
(WebKit::NetworkRTCUDPSocketCocoa::sendTo):
(WebKit::NetworkRTCUDPSocketCocoaConnections::NetworkRTCUDPSocketCocoaConnections):
(WebKit::NetworkRTCUDPSocketCocoaConnections::close):
(WebKit::NetworkRTCUDPSocketCocoaConnections::setOption):
(WebKit::processUDPData):
(WebKit::NetworkRTCUDPSocketCocoaConnections::createNWConnection):
(WebKit::NetworkRTCUDPSocketCocoaConnections::setupNWConnection):
(WebKit::NetworkRTCUDPSocketCocoaConnections::sendTo):

  • SourcesCocoa.txt:
  • WebKit.xcodeproj/project.pbxproj:
  • WebProcess/Network/webrtc/LibWebRTCSocketFactory.cpp:

(WebKit::LibWebRTCSocketFactory::setConnection):

Source/WTF:

Reviewed by Eric Carlson.

Add a new experimental flag for NW backed UDP sockets.

  • Scripts/Preferences/WebPreferencesExperimental.yaml:

LayoutTests:

<rdar://problem/79859045>

Reviewed by Eric Carlson.

  • platform/ios-simulator-wk2/TestExpectations:

Mark test as failed, as this test is using unsupported API (transport).

12:56 AM Changeset in webkit [279404] by Carlos Garcia Campos
  • 3 edits in trunk/Source/WebCore

[SOUP] Implement CertificateInfo::summary
https://bugs.webkit.org/show_bug.cgi?id=227484

Reviewed by Michael Catanzaro.

GLib now provides API to get the information required to fill the CertificateSummary.

  • platform/network/soup/CertificateInfo.h:

(WebCore::CertificateInfo::summary const): Deleted.

  • platform/network/soup/CertificateInfoSoup.cpp:

(WebCore::CertificateInfo::summary const):

12:50 AM Changeset in webkit [279403] by commit-queue@webkit.org
  • 2 edits in trunk/LayoutTests

[GLIB] mark fast/text/international/system-language/navigator-language/navigator-language-en{,-US}.html as passing
https://bugs.webkit.org/show_bug.cgi?id=227513

These tests use the declarative language override feature in the test
harness, which is currently not supported on glib platforms. These
tests likely pass by coincidence in the testing environment.
Unreviewed test gardening.

Patch by Arcady Goldmints-Orlov <Arcady Goldmints-Orlov> on 2021-06-30

  • platform/glib/TestExpectations:
12:30 AM Changeset in webkit [279402] by graouts@webkit.org
  • 8 edits
    2 adds in trunk/Source

[Model] [iOS] Add support for manipulating <model> inline
https://bugs.webkit.org/show_bug.cgi?id=227448
<rdar://problem/79863579>

Reviewed by Tim Horton.

Source/WebCore/PAL:

Declare additional ASVInlinePreview methods.

  • pal/spi/ios/SystemPreviewSPI.h:

Source/WebKit:

ASVInlinePreview instances allow for UITouch and UIEvent objects to be forwarded in order to manipulate
the object inline. We create a UIGestureRecognizer subclass that is attached to WKModelView and forwards
touchesBegan: and similar UIResponder messages over to the ASVInlinePreview managed by the WKModelView.
This allows multiple <model> elements to be manipulated at once.

We will add support for disallowing such interaction with an attribute and/or a call to preventDefault()
at a later time.

  • SourcesCocoa.txt:
  • UIProcess/RemoteLayerTree/ios/RemoteLayerTreeViews.h:
  • UIProcess/RemoteLayerTree/ios/RemoteLayerTreeViews.mm:

(WebKit::collectDescendantViewsAtPoint):
(-[UIView _web_findDescendantViewAtPoint:withEvent:]):

  • UIProcess/ios/WKModelInteractionGestureRecognizer.h: Added.
  • UIProcess/ios/WKModelInteractionGestureRecognizer.mm: Added.

(-[WKModelInteractionGestureRecognizer touchesBegan:withEvent:]):
(-[WKModelInteractionGestureRecognizer touchesMoved:withEvent:]):
(-[WKModelInteractionGestureRecognizer touchesEnded:withEvent:]):
(-[WKModelInteractionGestureRecognizer touchesCancelled:withEvent:]):

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

(-[WKModelView initWithModel:]):

  • WebKit.xcodeproj/project.pbxproj:

Jun 29, 2021:

10:37 PM Changeset in webkit [279401] by ntim@apple.com
  • 23 edits
    1 add in trunk

Implement form[method=dialog]
https://bugs.webkit.org/show_bug.cgi?id=226172

Reviewed by Chris Dumez.

Marked relevant WPT as pass & unskipped relevant test.

LayoutTests/imported/w3c:

  • web-platform-tests/html/dom/reflection-forms-expected.txt:
  • web-platform-tests/html/semantics/interactive-elements/the-dialog-element/dialog-form-submission-expected.txt:

Source/WebCore:

  • html/HTMLFormControlElement.h:

(WebCore::HTMLFormControlElement::resultForDialogSubmit const):

  • html/HTMLFormElement.cpp:

(WebCore::HTMLFormElement::submit):
(WebCore::HTMLFormElement::submitDialog):

  • html/HTMLFormElement.h:
  • html/HTMLInputElement.cpp:

(WebCore::HTMLInputElement::resultForDialogSubmit const):

  • html/HTMLInputElement.h:
  • html/ImageInputType.cpp:

(WebCore::ImageInputType::resultForDialogSubmit const):

  • html/ImageInputType.h:
  • html/InputType.cpp:

(WebCore::InputType::resultForDialogSubmit const):

  • html/InputType.h:
  • loader/FormSubmission.cpp:

(WebCore::FormSubmission::Attributes::parseMethodType):
(WebCore::FormSubmission::FormSubmission):
(WebCore::FormSubmission::create):
(WebCore::FormSubmission::populateFrameLoadRequest):
(WebCore::FormSubmission::requestURL const):

  • loader/FormSubmission.h:

(WebCore::FormSubmission::Attributes::methodString):
(WebCore::FormSubmission::data const):
(WebCore::FormSubmission::returnValue const):

LayoutTests:

  • platform/gtk/imported/w3c/web-platform-tests/html/dom/reflection-forms-expected.txt:
  • platform/ios-wk2/imported/w3c/web-platform-tests/html/dom/reflection-forms-expected.txt:
  • platform/ios-wk2/imported/w3c/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/dialog-form-submission-expected.txt: Added.
  • platform/ios/imported/w3c/web-platform-tests/html/dom/reflection-forms-expected.txt:
  • platform/mac-wk2/imported/w3c/web-platform-tests/html/dom/reflection-forms-expected.txt:
  • platform/mac/imported/w3c/web-platform-tests/html/dom/reflection-forms-expected.txt:
  • platform/wpe/imported/w3c/web-platform-tests/html/dom/reflection-forms-expected.txt:
  • TestExpectations:
7:13 PM Changeset in webkit [279400] by Chris Dumez
  • 15 edits
    10 adds
    4 deletes in trunk/LayoutTests

Resync speech-api WPT tests from upstream
https://bugs.webkit.org/show_bug.cgi?id=227503

Reviewed by Sam Weinig.

LayoutTests/imported/w3c:

Resync speech-api WPT tests from upstream a38612f39e7752c353208.

  • web-platform-tests/speech-api/*: Updated.

LayoutTests:

  • platform/ios/TestExpectations:
  • platform/mac/TestExpectations:
7:12 PM Changeset in webkit [279399] by commit-queue@webkit.org
  • 1 edit
    2 deletes in trunk/LayoutTests

[GLIB] Unreviewed test gardening, update baselines after r279169
https://bugs.webkit.org/show_bug.cgi?id=227407

Patch by Arcady Goldmints-Orlov <Arcady Goldmints-Orlov> on 2021-06-29

  • platform/glib/imported/w3c/web-platform-tests/content-security-policy/frame-ancestors/frame-ancestors-nested-cross-in-same-none-block-expected.txt: Removed.
  • platform/glib/imported/w3c/web-platform-tests/content-security-policy/frame-ancestors/frame-ancestors-nested-cross-in-same-self-block-expected.txt: Removed.
6:09 PM Changeset in webkit [279398] by Chris Dumez
  • 16 edits
    1 copy
    13 adds in trunk/LayoutTests

Resync css/cssom WPT tests from upstream
https://bugs.webkit.org/show_bug.cgi?id=227506

Reviewed by Sam Weinig.

Resync css/cssom WPT tests from upstream a38612f39e7752c353208.

  • resources/resource-files.json:
  • web-platform-tests/css/cssom/*: Updated.
5:14 PM Changeset in webkit [279397] by Devin Rousso
  • 2 edits in trunk/LayoutTests

5 media/modern-media-controls/* tests are failing constantly on Catalina
https://bugs.webkit.org/show_bug.cgi?id=227319
<rdar://problem/79693462>

Unreviewed test gardening.

  • platform/mac-wk2/TestExpectations:

Skip these tests on Catalina while the underlying issue is investigated.

5:09 PM Changeset in webkit [279396] by Truitt Savell
  • 2 edits in trunk/LayoutTests

[ BigSur ] webrtc/multi-audio.html is now flaky failing.
https://bugs.webkit.org/show_bug.cgi?id=223043.

Unreviewed test gardnening.

Patch by Ayumi Kojima <Ayumi Kojima> on 2021-06-29

  • platform/mac/TestExpectations:
4:51 PM Changeset in webkit [279395] by Amir Mark Jr.
  • 2 edits in trunk/LayoutTests

[BigSur WK1] imported/w3c/web-platform-tests/media-source/mediasource-config-change-webm-v* is consistently failing.
https://bugs.webkit.org/show_bug.cgi?id=221300.

Unreviewed test gardening.

Updating prior test expectations.

  • platform/mac-wk1/TestExpectations:
4:49 PM Changeset in webkit [279394] by zhifei_fang@apple.com
  • 2 edits in trunk/Tools

Add new argument of device os version for reporting JavaScriptCore test result
https://bugs.webkit.org/show_bug.cgi?id=227363

Reviewed by Dewei Zhu.

  • Scripts/run-javascriptcore-tests:

(configurationForUpload):

4:48 PM Changeset in webkit [279393] by jh718.park@samsung.com
  • 2 edits in trunk/Source/JavaScriptCore

Remove "function declared ‘static’ but never defined" build warnings since r278971.
https://bugs.webkit.org/show_bug.cgi?id=227436

This patch removes the build warnings below.
warning: ‘bool JSC::cannotBeIdentPartOrEscapeStart(LChar)’ declared ‘static’ but never defined [-Wunused-function]

Reviewed by Michael Catanzaro.

  • runtime/LiteralParser.cpp: Add definitions for cannotBeIdentPartOrEscapeStart.

(JSC::cannotBeIdentPartOrEscapeStart):

3:50 PM Changeset in webkit [279392] by graouts@webkit.org
  • 4 edits in trunk/Source

WebKit_iosmac build failure: SystemPreviewSPI.h:29:9: fatal error: 'AssetViewer/ARQuickLookWebKitItem.h' file not found
https://bugs.webkit.org/show_bug.cgi?id=227507
<rdar://problem/79902043>

Reviewed by Dean Jackson.

When we added new SPIs in Source/WebCore/PAL/pal/spi/ios/SystemPreviewSPI.h as part of r279312 we also included this file
from a new file that is compiled on Catalyst. This revealed an issue where existing SPIs included in that file weren't
actually available on Catalyst. We now make sure we compile those out on Catalyst.

Source/WebCore/PAL:

  • pal/spi/ios/SystemPreviewSPI.h:

Source/WTF:

  • wtf/PlatformHave.h:
3:25 PM Changeset in webkit [279391] by commit-queue@webkit.org
  • 4 edits in trunk

Encoding specified in the 'charset' attribute should have precedence over 'content' attribute
https://bugs.webkit.org/show_bug.cgi?id=227464

Patch by Johnson Zhou <qiaosong_zhou@apple.com> on 2021-06-29
LayoutTests/imported/w3c:

Reviewed by Geoffrey Garen.

  • web-platform-tests/html/syntax/parsing/meta-inhead-insertion-mode-expected.txt:

Source/WebCore:

Reviewed by Geoffrey Garen.

Puts precedence on 'charset' attribute by breaking out of the parsing process.

This test passes Firefox and Chrome. Tested using
http://wpt.live/html/syntax/parsing/meta-inhead-insertion-mode.html

  • html/parser/HTMLMetaCharsetParser.cpp:

(WebCore::HTMLMetaCharsetParser::encodingFromMetaAttributes):

3:17 PM Changeset in webkit [279390] by Truitt Savell
  • 3 edits in trunk/LayoutTests

Updating test expectations for webanimations/css-transition-retargeting-during-ready-promise.html
https://bugs.webkit.org/show_bug.cgi?id=215335

Unreviewed test gardening

Patch by Eric Hutchison <Eric Hutchison> on 2021-06-29

  • platform/mac-wk1/TestExpectations:
  • platform/mac/TestExpectations:
3:04 PM Changeset in webkit [279389] by Chris Dumez
  • 104 edits
    2 copies
    3 moves
    55 adds
    8 deletes in trunk/LayoutTests

Resync service-worker WPT tests from upstream
https://bugs.webkit.org/show_bug.cgi?id=227490

Reviewed by Geoffrey Garen.

LayoutTests/imported/w3c:

Resync service-worker WPT tests from upstream a38612f39e7752c353208.

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

LayoutTests:

2:51 PM Changeset in webkit [279388] by Cameron McCormack
  • 2 edits in trunk/Source/WebKit

Don't null check destination in the RemoteRenderingBackend::nextDestinationImageBufferAfterApply main loop
https://bugs.webkit.org/show_bug.cgi?id=227475

Reviewed by Wenson Hsieh.

We already null check it and return early as part of the
MESSAGE_CHECK_WITH_RETURN_VALUE call just above.

  • GPUProcess/graphics/RemoteRenderingBackend.cpp:

(WebKit::RemoteRenderingBackend::nextDestinationImageBufferAfterApplyingDisplayLists):

2:50 PM Changeset in webkit [279387] by Truitt Savell
  • 2 edits in trunk/LayoutTests

REGRESSION: accessibility/table-title.html is a flaky timeout on BigSur wk2 Debug
https://bugs.webkit.org/show_bug.cgi?id=227504

Unreviewed test gardening

Patch by Ayumi Kojima <Ayumi Kojima> on 2021-06-29

  • platform/mac-wk2/TestExpectations:
2:17 PM Changeset in webkit [279386] by Truitt Savell
  • 2 edits in trunk/LayoutTests

[Big Sur Release wk2 arm64] fast/css/sticky/sticky-left.html is a flaky image failure

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

Unreviewed test gardnening

Patch by Eric Hutchison <Eric Hutchison> on 2021-06-29

  • platform/mac-wk2/TestExpectations:
2:03 PM Changeset in webkit [279385] by Chris Dumez
  • 80 edits
    4 moves
    77 adds
    6 deletes in trunk/LayoutTests

Resync IDL interfaces from upstream web-platform-tests
https://bugs.webkit.org/show_bug.cgi?id=227485

Reviewed by Sam Weinig.

LayoutTests/imported/w3c:

Resync IDL interfaces from upstream web-platform-tests a38612f39e7752c353208.

  • web-platform-tests/content-security-policy/securitypolicyviolation/idlharness.window-expected.txt:
  • web-platform-tests/css/css-images/idlharness.html:
  • web-platform-tests/css/cssom/idlharness-expected.txt:
  • web-platform-tests/css/cssom/idlharness.html:
  • web-platform-tests/fetch/cors-rfc1918/idlharness.tentative.any-expected.txt: Removed.
  • web-platform-tests/fetch/cors-rfc1918/idlharness.tentative.any.html: Removed.
  • web-platform-tests/fetch/cors-rfc1918/idlharness.tentative.any.js: Removed.
  • web-platform-tests/fetch/cors-rfc1918/idlharness.tentative.any.worker-expected.txt: Removed.
  • web-platform-tests/fetch/cors-rfc1918/idlharness.tentative.any.worker.html: Removed.
  • web-platform-tests/fetch/cors-rfc1918/w3c-import.log: Removed.
  • web-platform-tests/geolocation-API/idlharness.https.window-expected.txt:
  • web-platform-tests/html/dom/idlharness.worker-expected.txt:
  • web-platform-tests/mediacapture-streams/idlharness.https.window-expected.txt:
  • web-platform-tests/mediacapture-streams/idlharness.https.window.js:

(async idl_array):

  • web-platform-tests/payment-request/idlharness.https.window-expected.txt:
  • web-platform-tests/pointerevents/idlharness.window-expected.txt:
  • web-platform-tests/uievents/idlharness.window-expected.txt:
  • web-platform-tests/wasm/jsapi/idlharness.any-expected.txt:
  • web-platform-tests/wasm/jsapi/idlharness.any.worker-expected.txt:

Update / rebaseline a few tests due to IDL interface changes.

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

LayoutTests:

Rebaseline a few tests.

  • platform/mac-wk1/imported/w3c/web-platform-tests/html/dom/idlharness.https-expected.txt:
  • platform/mac-wk2/imported/w3c/web-platform-tests/html/dom/idlharness.https-expected.txt:
2:01 PM Changeset in webkit [279384] by Chris Dumez
  • 2 edits
    2 adds in trunk/LayoutTests/imported/w3c

Resync intersection-observer WPT tests from upstream
https://bugs.webkit.org/show_bug.cgi?id=227500

Reviewed by Sam Weinig.

Resync intersection-observer WPT tests from upstream a38612f39e7752c353208.

  • web-platform-tests/intersection-observer/target-is-root-expected.txt: Added.
  • web-platform-tests/intersection-observer/target-is-root.html: Added.
  • web-platform-tests/intersection-observer/w3c-import.log:
1:36 PM Changeset in webkit [279383] by Darin Adler
  • 4 edits in trunk

CSS style sheets loaded by HTMLLinkElement do not fall back correctly when charset is an invalid encoding name
https://bugs.webkit.org/show_bug.cgi?id=227498

Reviewed by Sam Weinig.

LayoutTests/imported/w3c:

  • web-platform-tests/css/css-syntax/charset/page-windows-1251-charset-attribute-bogus-expected.txt:

Expect a pass instead of a fail.

Source/WebCore:

  • html/HTMLLinkElement.cpp:

(WebCore::HTMLLinkElement::process): Check for invalid text encoding names rather than
just empty string.

1:21 PM Changeset in webkit [279382] by commit-queue@webkit.org
  • 4 edits
    3 deletes in trunk

Unreviewed, reverting r279250.
https://bugs.webkit.org/show_bug.cgi?id=227499

Sometimes causes YouTube audio to cut out

Reverted changeset:

"[Cocoa] Last few seconds of 'audio/webm; codecs=vorbis'
appended to a SampleBuffer are not played"
https://bugs.webkit.org/show_bug.cgi?id=226069
https://commits.webkit.org/r279250

12:27 PM Changeset in webkit [279381] by Jonathan Bedard
  • 3 edits
    2 adds in trunk/Tools

[webkitcorepy] Add NestedFuzzyDict
https://bugs.webkit.org/show_bug.cgi?id=227150
<rdar://problem/79475464>

Reviewed by Dewei Zhu.

  • Scripts/libraries/webkitcorepy/setup.py: Bump version.
  • Scripts/libraries/webkitcorepy/webkitcorepy/init.py: Ditto.
  • Scripts/libraries/webkitcorepy/webkitcorepy/nested_fuzzy_dict.py: Added.

(NestedFuzzyDict):
(NestedFuzzyDict.assert_valid_key): Ensure that the provided key is fuzz-able.
(NestedFuzzyDict.init): Construct the object the same way a dictionary is constructed.
(NestedFuzzyDict.getitem): Split provided keyname and fuzzy match the second part.
(NestedFuzzyDict.get): Ditto.
(NestedFuzzyDict.getitem): Return the complete keyname and value.
(NestedFuzzyDict.setitem): Add value to dictionary.
(NestedFuzzyDict.update): Given a dictionary, insert it's contents into this object.
(NestedFuzzyDict.keys): Iterate through all keys in the object.
(NestedFuzzyDict.values): Iterate through all values in the object.
(NestedFuzzyDict.items): Iterate through all key/value pairs in the object.
(NestedFuzzyDict.dict): Return a standard dictionary with the contents of this object.
(NestedFuzzyDict.repr):
(NestedFuzzyDict.str):

  • Scripts/libraries/webkitcorepy/webkitcorepy/tests/nested_fuzzy_dict_unittest.py: Added.

(TestNestedFuzzyDict):
(TestNestedFuzzyDict.test_constructor):
(TestNestedFuzzyDict.test_index):
(TestNestedFuzzyDict.test_get):
(TestNestedFuzzyDict.test_getitem):
(TestNestedFuzzyDict.test_set):
(TestNestedFuzzyDict.test_dict):

12:07 PM Changeset in webkit [279380] by commit-queue@webkit.org
  • 9 edits
    1 move in trunk

xhr.send(URLSearchParams) should align default Content-Type header field with Chrome and Firefox
https://bugs.webkit.org/show_bug.cgi?id=227477

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

LayoutTests/imported/w3c:

  • web-platform-tests/xhr/setrequestheader-content-type-expected.txt:

Source/WebCore:

  • xml/XMLHttpRequest.cpp:

(WebCore::XMLHttpRequest::send):

  • xml/XMLHttpRequest.h:
  • xml/XMLHttpRequest.idl:

LayoutTests:

  • platform/ios-wk2/TestExpectations:
  • platform/ios/imported/w3c/web-platform-tests/xhr/setrequestheader-content-type-expected.txt: Removed.
  • platform/mac-wk1/imported/w3c/web-platform-tests/xhr/setrequestheader-content-type-expected.txt: Added.
  • platform/mac/TestExpectations:
11:55 AM Changeset in webkit [279379] by commit-queue@webkit.org
  • 3 edits in trunk/Source/WebCore

Fix more -Wreturn-type warnings
https://bugs.webkit.org/show_bug.cgi?id=227497

Unreviewed. This is getting stupid.

Patch by Michael Catanzaro <Michael Catanzaro> on 2021-06-29

  • page/EventHandler.cpp:

(WebCore::EventHandler::scrollDistance):
(WebCore::EventHandler::handleKeyboardScrolling):

  • page/KeyboardScroll.cpp:

(WebCore::unitVectorForScrollDirection):

11:41 AM Changeset in webkit [279378] by commit-queue@webkit.org
  • 9 edits in trunk/Source/JavaScriptCore

Add a new pattern to instruction selector to use SBX and SBFIZ supported by ARM64
https://bugs.webkit.org/show_bug.cgi?id=227203

Patch by Yijia Huang <Yijia Huang> on 2021-06-29
Reviewed by Filip Pizlo.

This patch includes two modifications:

  1. Introduce a strength reduction rule for sign extending bitfield.
  2. Add Signed Bitfield Extract (SBFX) and Signed Bitfield Insert in Zero (SBFIZ) to Air opcode to serve instruction selector.

### Part A Sign extending from a variable bit-width ###


According to Bit Twiddling Hacks, there are two ways to sign extend bitfield.
(https://graphics.stanford.edu/~seander/bithacks.html#VariableSignExtend)

int bf; sign extend this width-bit number to bfsx
int width;
number of bits representing the number in bf
int bfsx; resulting sign-extended number

Approach 1
mask1 = (1 << width) - 1
mask2 = 1 << (width - 1)
bf = bf & mask1 zero bits in bf above position width
bfsx = (bf mask2) - mask2

Approach 2
amount = CHAR_BIT * sizeof(bf) - width
bfsx = (bf << amount) >> amount

Then, a new strength reduction rule is introduced:

Turn this: ((bf & mask1) mask2) - mask2
Into this: (bf << amount) >> amount


### Part B SBFX ###


Given instruction:
sbfx Rd, Rn, lsb, width

Signed Bitfield Extract (SBFX) extracts width number of adjacent bits at lsb position
from a register Rn, sign-extends them to the size of the register, and writes the
result to the destination register Rd.

The equivalent patterns of this instruction are:

Pattern 1:

bf = src >> lsb
dst = ((bf & mask1) mask2) - mask2
mask1 = (1 << width) - 1
mask2 = 1 << (width - 1) (mask2 << 1) - 1 = mask1

Pattern 2:

bf = src >> lsb
amount = CHAR_BIT * sizeof(bf) - width
dst = (bf << amount) >> amount

Then, (bf << amount) >> amount is selected as the canonical form with the strength reduction
rule introduced above.

Given B3 IR:
Int @0 = ArgumentReg(%x0)
Int @1 = lsb
Int @2 = amount
Int @3 = ZShr(@0, @1)
Int @4 = Shl(@3, @2)
Int @5 = SShr(@4, @2)
Void@6 = Return(@5, Terminal)

Before Adding BIC:
Old optimized AIR
Urshift %x0, lsb, %x0, @3
Lshift %x0, amount, %x0, @4
Rshift %x0, amount, %x0, @5
Ret %x0, @6

After Adding BIC:
New optimized AIR
ExtractSignedBitfield %x0, lsb, width, %x0, @5
Ret %x0, @6


### Part B SBFIZ ###


Given instruction:
sbfiz Rd, Rn, lsb, width

Signed Bitfield Insert in Zero (SBFIZ) zeroes the destination register Rd and copies
width number of contiguous bits from a source register Rn into lsb position in the
destination register, sign-extending the most significant bit of the transferred value.

The equivalent patterns of this instruction are:

Pattern 1:

bfsx = ((src & mask1) mask2) - mask2
dst = bfsx << lsb
mask1 = (1 << width) - 1
mask2 = 1 << (width - 1) (mask2 << 1) - 1 = mask1

Pattern 2:

amount = CHAR_BIT * sizeof(bf) - width
bfsx = (src << amount) >> amount
dst = bfsx << lsb

Then, ((src << amount) >> amount) << lsb is selected as the canonical form with the
strength reduction rule introduced above.

Given B3 IR:
Int @0 = ArgumentReg(%x0)
Int @1 = lsb
Int @2 = amount
Int @3 = Shl(@0, @2)
Int @4 = SShr(@3, @2)
Int @5 = Shl(@4, @1)
Void@6 = Return(@5, Terminal)

Before Adding BIC:
Old optimized AIR
Lshift %x0, amount, %x0, @3
Rshift %x0, amount, %x0, @4
Lshift %x0, lsb, %x0, @5
Ret %x0, @6

After Adding BIC:
New optimized AIR
InsertSignedBitfieldInZero %x0, lsb, width, %x0, @5
Ret %x0, @6

  • assembler/MacroAssemblerARM64.h:

(JSC::MacroAssemblerARM64::insertSignedBitfieldInZero32):
(JSC::MacroAssemblerARM64::insertSignedBitfieldInZero64):
(JSC::MacroAssemblerARM64::extractSignedBitfield32):
(JSC::MacroAssemblerARM64::extractSignedBitfield64):

  • assembler/testmasm.cpp:

(JSC::testInsertSignedBitfieldInZero32):
(JSC::testInsertSignedBitfieldInZero64):
(JSC::testExtractSignedBitfield32):
(JSC::testExtractSignedBitfield64):

  • b3/B3LowerToAir.cpp:
  • b3/B3ReduceStrength.cpp:
  • b3/air/AirOpcode.opcodes:
  • b3/testb3.h:
  • b3/testb3_2.cpp:

(addBitTests):

  • b3/testb3_3.cpp:

(testInsertSignedBitfieldInZero32):
(testInsertSignedBitfieldInZero64):
(testExtractSignedBitfield32):
(testExtractSignedBitfield64):

11:07 AM Changeset in webkit [279377] by Jonathan Bedard
  • 3 edits
    2 copies in trunk/Tools

[webkitcorepy] Add MeasureTime python tool
https://bugs.webkit.org/show_bug.cgi?id=227313
<rdar://problem/79689588>

Reviewed by Dewei Zhu.

  • Scripts/libraries/webkitcorepy/setup.py: Bump version.
  • Scripts/libraries/webkitcorepy/webkitcorepy/init.py: Ditto.
  • Scripts/libraries/webkitcorepy/webkitcorepy/init.py: Export MeasureTime object.
  • Scripts/libraries/webkitcorepy/webkitcorepy/measure_time.py: Added.

(MeasureTime): Provide class which logs time elapsed in context.

  • Scripts/libraries/webkitcorepy/webkitcorepy/tests/measure_time_unittest.py: Added.

(MeasureTimeTests):

11:00 AM Changeset in webkit [279376] by Alan Coon
  • 13 edits
    2 adds in branches/safari-612.1.21-branch

Cherry-pick r279361. rdar://problem/79923766

REGRESSION (r279310): Occasional crash when focusing login fields on iPad with a software keyboard
https://bugs.webkit.org/show_bug.cgi?id=227472
rdar://79876040

Reviewed by Tim Horton.

Source/WebKit:

I added a mechanism in r279310 to defer calling -[WKContentView _setSuppressSoftwareKeyboard:NO] until we've
gotten a response from the web process containing an up-to-date autocorrection context. However, in the case
where the WKWebView client sets _suppressSoftwareKeyboard to YES and then immediately to NO underneath the
scope of a call to -_webView:willStartInputSession:, we'll end up calling into -_setSuppressSoftwareKeyboard:
inside the scope of -requestAutocorrectionContextWithCompletionHandler:, when we've received an
autocorrection context while sync-waiting. This is problematic because it breaks UIKeyboardTaskQueue's state,
since the call to -_setSuppressSoftwareKeyboard: will attempt to enqueue a new task after the previous task's
context has already returned execution to the parent.

To fix this, we instead invoke self._suppressSoftwareKeyboard = NO; *before* calling the completion block in
-_handleAutocorrectionContext:. This allows the request for an autocorrection context underneath
-_setSuppressSoftwareKeyboard: to be handled (and completed) as a child task of the previous task, which keeps
UIKeyboardTaskQueue in a valid state.

Test: fast/forms/ios/suppress-software-keyboard-while-focusing-input.html

  • UIProcess/ios/WKContentViewInteraction.mm: (-[WKContentView _handleAutocorrectionContext:]):

Tools:

Make it possible to induce the crash (prior to the fix) by introducing two new testing primitives on iOS:

  • UIScriptController.suppressSoftwareKeyboard, a readwrite attribute that can be used to suppress the

appearance of the software keyboard on iOS by calling -[WKWebView _setSuppressSoftwareKeyboard:].

  • UIScriptController.willStartInputSessionCallback, a callback that is invoked when we're about to start a

UI-process-side input session. On iOS, this corresponds to
-[_WKInputDelegate _webView:willStartInputSession:].

  • TestRunnerShared/UIScriptContext/Bindings/UIScriptController.idl:
  • TestRunnerShared/UIScriptContext/UIScriptContext.h:
  • TestRunnerShared/UIScriptContext/UIScriptController.h: (WTR::UIScriptController::suppressSoftwareKeyboard const): (WTR::UIScriptController::setSuppressSoftwareKeyboard):
  • TestRunnerShared/UIScriptContext/UIScriptControllerShared.cpp: (WTR::UIScriptController::setWillStartInputSessionCallback): (WTR::UIScriptController::willStartInputSessionCallback const):
  • WebKitTestRunner/cocoa/TestRunnerWKWebView.h:
  • WebKitTestRunner/cocoa/TestRunnerWKWebView.mm: (-[TestRunnerWKWebView initWithFrame:configuration:]): (-[TestRunnerWKWebView resetInteractionCallbacks]): (-[TestRunnerWKWebView _webView:willStartInputSession:]):
  • WebKitTestRunner/ios/TestControllerIOS.mm: (WTR::TestController::platformResetStateToConsistentValues):

Make sure that we revert _suppressSoftwareKeyboard to NO, in case a layout test ends while leaving this on,
to prevent subsequent layout tests from behaving in unexpected ways.

  • WebKitTestRunner/ios/UIScriptControllerIOS.h:
  • WebKitTestRunner/ios/UIScriptControllerIOS.mm: (WTR::UIScriptControllerIOS::setWillStartInputSessionCallback): (WTR::UIScriptControllerIOS::suppressSoftwareKeyboard const): (WTR::UIScriptControllerIOS::setSuppressSoftwareKeyboard):

LayoutTests:

Add a new layout test to exercise the crash. See Tools and Source/WebKit ChangeLogs for more information.
This new test suppresses and then immediately un-suppresses the software keyboard inside the
-_webView:willStartInputSession: input delegate hook while focusing a regular text field.

  • fast/forms/ios/suppress-software-keyboard-while-focusing-input-expected.txt: Added.
  • fast/forms/ios/suppress-software-keyboard-while-focusing-input.html: Added.

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

10:11 AM Changeset in webkit [279375] by jer.noble@apple.com
  • 12 edits
    3 adds in trunk

Loading WebM hangs if server sends only small amount of data
https://bugs.webkit.org/show_bug.cgi?id=226217
<rdar://problem/78709010>

Source/WebCore/PAL:

Reviewed by Eric Carlson.

  • pal/cf/CoreMediaSoftLink.cpp:
  • pal/cf/CoreMediaSoftLink.h:
  • pal/spi/cf/CoreMediaSPI.h:

Source/WebKit:

Reviewed by Eric Carlson.

Test: http/tests/media/video-webm-stall.html

Adopt FigThread{Un,}RegisterAbortAction() when blocking against track parsing.

CoreMedia will attempt to abort reads during AVPlayer teardown, but because the parsing
thread is blocked on a Condition variable in WebKit code, the abort request has no effect.
Adopt methods from CoreMedia to run code during an abort request, and wrap these calls in a
stack-based object. The new AbortAction object takes a Condition variable to notify during
an abort, and its aborted() state can be queried by the Condition's predicate.

Drive-by Fix: enable running an unsigned MTFormatReaderPlugin in the GPU process for
engineering builds.

  • Configurations/BaseTarget.xcconfig:
  • GPUProcess/mac/GPUProcessMac.mm:

(WebKit::GPUProcess::initializeProcess):

  • Shared/mac/MediaFormatReader/MediaFormatReader.cpp:

(WebKit::AbortAction::AbortAction):
(WebKit::AbortAction::~AbortAction):
(WebKit::AbortAction::aborted const):
(WebKit::AbortAction::action):
(WebKit::MediaFormatReader::copyProperty):
(WebKit::MediaFormatReader::copyTrackArray):

LayoutTests:

Reviewed by NOBODY Eric Carlson.

  • http/tests/media/resources/.htaccess: Added.
  • http/tests/media/video-webm-stall-expected.txt: Added.
  • http/tests/media/video-webm-stall.html: Added.
8:19 AM Changeset in webkit [279374] by yoshiaki.jitsukawa@sony.com
  • 5 edits in trunk/LayoutTests

P-384 EC public JWK key in layout tests is wrong
https://bugs.webkit.org/show_bug.cgi?id=227432

Reviewed by Chris Dumez.

Fix the y value of the JWK keys. The y value was derived from the x value with openssl,
using EC_POINT_set_compressed_coordinates_GFp() and EC_POINT_get_affine_coordinates_GFp(),
and was verified with EC_KEY_check_key().

  • crypto/subtle/ec-import-key-malformed-parameters.html:
  • crypto/subtle/ecdh-import-jwk-public-key-p384.html:
  • crypto/subtle/ecdsa-import-jwk-public-key-alg-384.html:
  • crypto/workers/subtle/resources/ec-import-jwk-key-public.js:
6:53 AM Changeset in webkit [279373] by commit-queue@webkit.org
  • 3 edits in trunk/Source/ThirdParty/ANGLE

ANGLE Metal primitive restart range computation could index with size_t
https://bugs.webkit.org/show_bug.cgi?id=227449

Patch by Kimmo Kinnunen <kkinnunen@apple.com> on 2021-06-29
Reviewed by Kenneth Russell.

Make the calculateRestartRanges() a bit simpler in order
for it to be easier to understand.

  • src/libANGLE/renderer/metal/BufferMtl.h:

(rx::IndexRange::IndexRange):
Add documentation what the mtl::IndexRange is.
Add constructor so that std::vector::emplace_back() works.

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

(rx::calculateRestartRanges):
Index with size_t to make it simpler to understand if the index
overflows or not.
Use reinterpret_cast in order to not accidentally cast away
const from mtl::BufferRef::mapReadOnly().
Skip the non-marker elements with continue to avoid deep nesting.
Give a name to the restart range marker value.
Remove intermediate variable value = bufferData[i] as it is never
used more than once. This simplifies the code as the do-while loop
does not need to check the if condition as the loop ending condition
already checks.
Make the array a returned result instead of out variable.

(rx::BufferMtl::getRestartIndices):

6:52 AM Changeset in webkit [279372] by commit-queue@webkit.org
  • 2 edits in trunk/Source/ThirdParty/ANGLE

ANGLE Metal primitive restart range computation should not be done unless primitive restart is enabled
https://bugs.webkit.org/show_bug.cgi?id=227452

Patch by Kimmo Kinnunen <kkinnunen@apple.com> on 2021-06-29
Reviewed by Kenneth Russell.

Primitive restart needs to scan the whole index buffer for values.
This should not be done unless needed.

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

(rx::VertexArrayMtl::getDrawIndices):
First check for primitive restart enabledness.
Compute the primitive restart values after this.
The algoritm should succeed when the count of primitive
restart ranges is zero, and it does not do much of work.
Use the restart range vector as reference, so that no copy
would be done.
Add spaces the if statements, comments and references.
Move the else arm of the if statement with return statement
to body of the function to reduce nesting.

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

Nullptr crash in HTMLStackItem::create via DocumentFragment::parseHTML
https://bugs.webkit.org/show_bug.cgi?id=227390

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

Source/WebCore:

DOM manipulation can mean document.body() can return null, causing the
crash/ASSERT in DocumentFragment::parseHTML in the test case. Since the
only use of it was to force InBody insertion mode, instead use a fake body element.

Test: editing/pasteboard/paste-create-fragment-crash.html

  • editing/cocoa/WebContentReaderCocoa.mm:

(WebCore::createFragment):

LayoutTests:

Add test for this.

  • editing/pasteboard/paste-create-fragment-crash-expected.txt: Added.
  • editing/pasteboard/paste-create-fragment-crash.html: Added.
2:38 AM Changeset in webkit [279370] by commit-queue@webkit.org
  • 3 edits
    2 adds in trunk

Crash in SharedBuffer::data
https://bugs.webkit.org/show_bug.cgi?id=227173

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

Source/WebCore:

Null check data in openFunc.

Test: fast/xsl/xslt-transformToDocument-crash.html

  • xml/parser/XMLDocumentParserLibxml2.cpp:

(WebCore::openFunc):

LayoutTests:

  • fast/xsl/xslt-transformToDocument-crash-expected.txt: Added.
  • fast/xsl/xslt-transformToDocument-crash.html: Added.
2:12 AM Changeset in webkit [279369] by Carlos Garcia Campos
  • 2 edits in trunk/Source/WebKit

[GTK][WPE] Check GApplication has a valid ID before trying to create the flatpack info
https://bugs.webkit.org/show_bug.cgi?id=227344

Reviewed by Michael Catanzaro.

Show a warning if GApplication is used but app ID is nullptr.

  • UIProcess/Launcher/glib/BubblewrapLauncher.cpp:

(WebKit::createFlatpakInfo):

1:11 AM Changeset in webkit [279368] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebCore

OES_texture_float should implicitly enable EXT_float_blend
https://bugs.webkit.org/show_bug.cgi?id=227456
<rdar://79804439>

Patch by Kimmo Kinnunen <kkinnunen@apple.com> on 2021-06-29
Reviewed by Kenneth Russell.

Tested by webgl/1.0.x/conformance/extensions/oes-texture-float.html

  • html/canvas/OESTextureFloat.cpp:

(WebCore::OESTextureFloat::OESTextureFloat):
Request EXT_float_blend when user requests OES_texture_float.
WEBGL_color_buffer_float and EXT_color_buffer_float already have
the code.

12:59 AM Changeset in webkit [279367] by Carlos Garcia Campos
  • 2 edits in trunk/Source/WebKit

[GTK][WPE] Bubblewrap: allow to set DBus proxy logging per proxy
https://bugs.webkit.org/show_bug.cgi?id=227447

Reviewed by Michael Catanzaro.

It's currently global using env var WEBKIT_ENABLE_DBUS_PROXY_LOGGING. Add WEBKIT_ENABLE_A11Y_DBUS_PROXY_LOGGING
to enable logging only on a11y bus.

  • UIProcess/Launcher/glib/BubblewrapLauncher.cpp:

(WebKit::XDGDBusProxyLauncher::launch):
(WebKit::bindA11y):
(WebKit::bubblewrapSpawn):

12:25 AM Changeset in webkit [279366] by youenn@apple.com
  • 15 edits
    9 deletes in trunk/Source

Remove RemoteAudioMediaStreamTrackRenderer and RemoteAudioMediaStreamTrackRendererManager
https://bugs.webkit.org/show_bug.cgi?id=227438

Reviewed by Eric Carlson.

Source/WebCore:

  • platform/mediastream/cocoa/AudioMediaStreamTrackRendererInternalUnit.cpp:

(WebCore::LocalAudioMediaStreamTrackRendererInternalUnit::start):
(WebCore::LocalAudioMediaStreamTrackRendererInternalUnit::stop):
Add some logging.

Source/WebKit:

Remove code no longer enabled.
This code was obsoleted by RemoteAudioMediaStreamTrackRendererInternalUnitManager and friends.
Update GPUProcess to not exit if RemoteAudioMediaStreamTrackRendererInternalUnitManager has some units,
like was done by RemoteAudioMediaStreamTrackRendererManager.

  • DerivedSources.make:
  • GPUProcess/GPUConnectionToWebProcess.cpp:

(WebKit::GPUConnectionToWebProcess::GPUConnectionToWebProcess):
(WebKit::GPUConnectionToWebProcess::~GPUConnectionToWebProcess):
(WebKit::GPUConnectionToWebProcess::allowsExitUnderMemoryPressure const):

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

(WebKit::GPUProcess::audioMediaStreamTrackRendererQueue): Deleted.

  • GPUProcess/GPUProcess.h:
  • GPUProcess/webrtc/RemoteAudioMediaStreamTrackRenderer.cpp: Removed.
  • GPUProcess/webrtc/RemoteAudioMediaStreamTrackRenderer.h: Removed.
  • GPUProcess/webrtc/RemoteAudioMediaStreamTrackRenderer.messages.in: Removed.
  • GPUProcess/webrtc/RemoteAudioMediaStreamTrackRendererInternalUnitManager.cpp:

(WebKit::renderCallback):
(WebKit::RemoteAudioMediaStreamTrackRendererInternalUnitManager::Unit::Unit):
(WebKit::RemoteAudioMediaStreamTrackRendererInternalUnitManager::Unit::start):

  • GPUProcess/webrtc/RemoteAudioMediaStreamTrackRendererInternalUnitManager.h:

(WebKit::RemoteAudioMediaStreamTrackRendererInternalUnitManager::hasUnits):

  • GPUProcess/webrtc/RemoteAudioMediaStreamTrackRendererManager.cpp: Removed.
  • GPUProcess/webrtc/RemoteAudioMediaStreamTrackRendererManager.h: Removed.
  • GPUProcess/webrtc/RemoteAudioMediaStreamTrackRendererManager.messages.in: Removed.
  • Scripts/webkit/messages.py:

(types_that_cannot_be_forward_declared):

  • Sources.txt:
  • SourcesCocoa.txt:
  • WebKit.xcodeproj/project.pbxproj:
  • WebProcess/GPU/webrtc/AudioMediaStreamTrackRenderer.cpp: Removed.
  • WebProcess/GPU/webrtc/AudioMediaStreamTrackRenderer.h: Removed.
  • WebProcess/GPU/webrtc/AudioMediaStreamTrackRendererIdentifier.h: Removed.
12:19 AM Changeset in webkit [279365] by Antti Koivisto
  • 9 edits
    1 add in trunk/Source

Enable Probabilistic Guard Malloc for RuleData and RuleFeature vectors
https://bugs.webkit.org/show_bug.cgi?id=227446

Reviewed by Geoffrey Garen.

Source/WebCore:

Help for catching a crash.

  • style/RuleFeature.cpp:

(WebCore::Style::RuleFeatureSet::collectFeatures):
(WebCore::Style::RuleFeatureSet::add):

  • style/RuleFeature.h:
  • style/RuleSet.h:
  • style/StyleScopeRuleSets.cpp:

(WebCore::Style::makeRuleSet):
(WebCore::Style::ensureInvalidationRuleSets):

Source/WTF:

Add SystemMalloc type that can be used with containers like Vector and
ProbabilisticGuardMalloc alias for it on Mac/iOS platforms.

  • WTF.xcodeproj/project.pbxproj:
  • wtf/CMakeLists.txt:
  • wtf/SystemMalloc.h: Added.

(WTF::SystemMalloc::malloc):
(WTF::SystemMalloc::tryMalloc):
(WTF::SystemMalloc::zeroedMalloc):
(WTF::SystemMalloc::tryZeroedMalloc):
(WTF::SystemMalloc::realloc):
(WTF::SystemMalloc::tryRealloc):
(WTF::SystemMalloc::free):

  • wtf/Vector.h:

(WTF::Malloc>::appendVector):

Include all template parameters for the appendVector argument.

12:14 AM Changeset in webkit [279364] by commit-queue@webkit.org
  • 8 edits in trunk

CSS scroll snap should allow scrolling to the middle of snap areas that overflow the snapport
https://bugs.webkit.org/show_bug.cgi?id=223021
<rdar://problem/75518606>

Patch by Martin Robinson <mrobinson@igalia.com> on 2021-06-29
Reviewed by Simon Fraser.

LayoutTests/imported/w3c:

  • web-platform-tests/css/css-scroll-snap/overflowing-snap-areas-expected.txt: Update test

expectations to reflect newly passing tests.

Source/WebCore:

No new tests. This is covered by existing tests and, in particular, a WPT test:

  • web-platform-tests/css/css-scroll-snap/overflowing-snap-areas.html
  • page/scrolling/ScrollSnapOffsetsInfo.cpp:

(WebCore::searchForPotentialSnapPoints): Record when the target snap offset happens to
fall in the interior of a snap area that overflows the snap port.
(WebCore::closestSnapOffsetWithInfoAndAxis): When this happens and we are in a spec-compliant
sitaution, just snap to the original target offset.

LayoutTests:

Update some existing tests that were relying on non-spec compliant behavior. These tests
used snap areas that were larger than the snapport and didn't expect that the parent
scroller could scroll into them.

  • css3/scroll-snap/scroll-snap-click-scrollbar-gutter.html: This test used snap areas that

overflow the snapport, thus meant that it relied on non-spec compliant behavior. Rework it so
that the snap areas do not overflow, maintaining the existing behavior.

  • tiled-drawing/scrolling/scroll-snap/scroll-snap-mandatory-mainframe-vertical-then-horizontal.html: Ditto.
  • tiled-drawing/scrolling/scroll-snap/scroll-snap-proximity-overflow.html: Ditto.
Note: See TracTimeline for information about the timeline view.