Timeline



May 21, 2021:

11:39 PM Changeset in webkit [277914] by Chris Dumez
  • 6 edits in trunk/Source

Remove WTF::holdLock() / WTF::holdLockIf()
https://bugs.webkit.org/show_bug.cgi?id=226135

Reviewed by Darin Adler.

Remove WTF::holdLock() / WTF::holdLockIf() because they are not compatible with
Clang Thread Safety Analysis. All call sites have been converted to use the Locker
constructor directly.

Source/JavaScriptCore:

  • heap/LockDuringMarking.h:

(JSC::lockDuringMarking):

Source/WebCore:

  • dom/Node.cpp:

(WebCore::Node::eventTargetDataConcurrently):

Source/WTF:

  • wtf/Locker.h:
10:49 PM Changeset in webkit [277913] by Chris Dumez
  • 120 edits in trunk

Replace LockHolder with Locker in local variables
https://bugs.webkit.org/show_bug.cgi?id=226133

Reviewed by Darin Adler.

Replace LockHolder with Locker in local variables. It is shorter and it allows switching the lock
type more easily since the compiler with deduce the lock type T for Locker<T>.

Source/JavaScriptCore:

  • API/JSCallbackObject.h:

(JSC::JSCallbackObjectData::JSPrivatePropertyMap::setPrivateProperty):
(JSC::JSCallbackObjectData::JSPrivatePropertyMap::deletePrivateProperty):
(JSC::JSCallbackObjectData::JSPrivatePropertyMap::visitChildren):

  • API/JSValue.mm:

(handerForStructTag):

  • API/tests/testapi.cpp:

(testCAPIViaCpp):

  • assembler/testmasm.cpp:

(JSC::run):

  • b3/air/testair.cpp:
  • b3/testb3_1.cpp:

(run):

  • bytecode/DirectEvalCodeCache.cpp:

(JSC::DirectEvalCodeCache::setSlow):
(JSC::DirectEvalCodeCache::clear):
(JSC::DirectEvalCodeCache::visitAggregateImpl):

  • bytecode/SuperSampler.cpp:

(JSC::initializeSuperSampler):
(JSC::resetSuperSamplerState):
(JSC::printSuperSamplerState):
(JSC::enableSuperSampler):
(JSC::disableSuperSampler):

  • dfg/DFGCommonData.cpp:

(JSC::DFG::CommonData::invalidate):
(JSC::DFG::CommonData::~CommonData):
(JSC::DFG::CommonData::installVMTrapBreakpoints):
(JSC::DFG::codeBlockForVMTrapPC):

  • dfg/DFGPlan.cpp:

(JSC::DFG::Plan::cleanMustHandleValuesIfNecessary):

  • dfg/DFGWorklist.cpp:

(JSC::DFG::Worklist::~Worklist):
(JSC::DFG::Worklist::finishCreation):
(JSC::DFG::Worklist::isActiveForVM const):
(JSC::DFG::Worklist::enqueue):
(JSC::DFG::Worklist::compilationState):
(JSC::DFG::Worklist::waitUntilAllPlansForVMAreReady):
(JSC::DFG::Worklist::removeAllReadyPlansForVM):
(JSC::DFG::Worklist::completeAllReadyPlansForVM):
(JSC::DFG::Worklist::visitWeakReferences):
(JSC::DFG::Worklist::removeDeadPlans):
(JSC::DFG::Worklist::removeNonCompilingPlansForVM):
(JSC::DFG::Worklist::queueLength):
(JSC::DFG::Worklist::dump const):
(JSC::DFG::Worklist::setNumberOfThreads):

  • dfg/DFGWorklistInlines.h:

(JSC::DFG::Worklist::iterateCodeBlocksForGC):

  • disassembler/Disassembler.cpp:
  • heap/BlockDirectory.cpp:

(JSC::BlockDirectory::addBlock):

  • heap/CodeBlockSetInlines.h:

(JSC::CodeBlockSet::iterateCurrentlyExecuting):

  • heap/ConservativeRoots.cpp:

(JSC::ConservativeRoots::add):

  • heap/Heap.cpp:

(JSC::Heap::Heap):
(JSC::Heap::lastChanceToFinalize):
(JSC::Heap::collectAsync):
(JSC::Heap::runBeginPhase):
(JSC::Heap::waitForCollector):
(JSC::Heap::requestCollection):
(JSC::Heap::notifyIsSafeToCollect):

  • heap/SlotVisitor.cpp:

(JSC::SlotVisitor::didReachTermination):

  • inspector/agents/InspectorScriptProfilerAgent.cpp:

(Inspector::InspectorScriptProfilerAgent::startTracking):
(Inspector::InspectorScriptProfilerAgent::trackingComplete):
(Inspector::InspectorScriptProfilerAgent::stopSamplingWhenDisconnecting):

  • inspector/remote/RemoteConnectionToTarget.cpp:

(Inspector::RemoteConnectionToTarget::setup):
(Inspector::RemoteConnectionToTarget::sendMessageToTarget):
(Inspector::RemoteConnectionToTarget::close):
(Inspector::RemoteConnectionToTarget::targetClosed):

  • inspector/remote/RemoteInspector.cpp:

(Inspector::RemoteInspector::registerTarget):
(Inspector::RemoteInspector::unregisterTarget):
(Inspector::RemoteInspector::updateTarget):
(Inspector::RemoteInspector::updateClientCapabilities):
(Inspector::RemoteInspector::setClient):
(Inspector::RemoteInspector::setupFailed):
(Inspector::RemoteInspector::setupCompleted):
(Inspector::RemoteInspector::stop):

  • inspector/remote/cocoa/RemoteConnectionToTargetCocoa.mm:

(Inspector::RemoteTargetHandleRunSourceGlobal):
(Inspector::RemoteTargetQueueTaskOnGlobalQueue):
(Inspector::RemoteTargetHandleRunSourceWithInfo):
(Inspector::RemoteConnectionToTarget::setup):
(Inspector::RemoteConnectionToTarget::targetClosed):
(Inspector::RemoteConnectionToTarget::close):
(Inspector::RemoteConnectionToTarget::sendMessageToTarget):
(Inspector::RemoteConnectionToTarget::queueTaskOnPrivateRunLoop):

  • inspector/remote/cocoa/RemoteInspectorCocoa.mm:

(Inspector::RemoteInspector::updateAutomaticInspectionCandidate):
(Inspector::RemoteInspector::sendMessageToRemote):
(Inspector::RemoteInspector::start):
(Inspector::RemoteInspector::setupXPCConnectionIfNeeded):
(Inspector::RemoteInspector::setParentProcessInformation):
(Inspector::RemoteInspector::xpcConnectionReceivedMessage):
(Inspector::RemoteInspector::xpcConnectionFailed):
(Inspector::RemoteInspector::pushListingsSoon):
(Inspector::RemoteInspector::receivedIndicateMessage):
(Inspector::RemoteInspector::receivedProxyApplicationSetupMessage):

  • inspector/remote/cocoa/RemoteInspectorXPCConnection.mm:

(Inspector::RemoteInspectorXPCConnection::close):
(Inspector::RemoteInspectorXPCConnection::closeFromMessage):
(Inspector::RemoteInspectorXPCConnection::deserializeMessage):
(Inspector::RemoteInspectorXPCConnection::handleEvent):

  • inspector/remote/glib/RemoteInspectorGlib.cpp:

(Inspector::RemoteInspector::start):
(Inspector::RemoteInspector::setupConnection):
(Inspector::RemoteInspector::pushListingsSoon):
(Inspector::RemoteInspector::sendMessageToRemote):
(Inspector::RemoteInspector::receivedGetTargetListMessage):
(Inspector::RemoteInspector::receivedDataMessage):
(Inspector::RemoteInspector::receivedCloseMessage):
(Inspector::RemoteInspector::setup):

  • inspector/remote/socket/RemoteInspectorConnectionClient.cpp:

(Inspector::RemoteInspectorConnectionClient::didReceive):

  • inspector/remote/socket/RemoteInspectorSocket.cpp:

(Inspector::RemoteInspector::didClose):
(Inspector::RemoteInspector::start):
(Inspector::RemoteInspector::pushListingsSoon):
(Inspector::RemoteInspector::setup):
(Inspector::RemoteInspector::setupInspectorClient):
(Inspector::RemoteInspector::frontendDidClose):
(Inspector::RemoteInspector::sendMessageToBackend):
(Inspector::RemoteInspector::startAutomationSession):

  • inspector/remote/socket/RemoteInspectorSocketEndpoint.cpp:

(Inspector::RemoteInspectorSocketEndpoint::listenInet):
(Inspector::RemoteInspectorSocketEndpoint::isListening):
(Inspector::RemoteInspectorSocketEndpoint::workerThread):
(Inspector::RemoteInspectorSocketEndpoint::createClient):
(Inspector::RemoteInspectorSocketEndpoint::disconnect):
(Inspector::RemoteInspectorSocketEndpoint::invalidateClient):
(Inspector::RemoteInspectorSocketEndpoint::invalidateListener):
(Inspector::RemoteInspectorSocketEndpoint::getPort const):
(Inspector::RemoteInspectorSocketEndpoint::recvIfEnabled):
(Inspector::RemoteInspectorSocketEndpoint::sendIfEnabled):
(Inspector::RemoteInspectorSocketEndpoint::send):
(Inspector::RemoteInspectorSocketEndpoint::acceptInetSocketIfEnabled):

  • interpreter/CLoopStack.cpp:

(JSC::CLoopStack::addToCommittedByteCount):
(JSC::CLoopStack::committedByteCount):

  • jit/ExecutableAllocator.cpp:

(JSC::dumpJITMemory):

  • jit/ICStats.cpp:

(JSC::ICStats::ICStats):
(JSC::ICStats::~ICStats):

  • jit/JITThunks.cpp:

(JSC::JITThunks::ctiStub):
(JSC::JITThunks::existingCTIStub):
(JSC::JITThunks::ctiSlowPathFunctionStub):

  • jit/JITWorklist.cpp:

(JSC::JITWorklist::Plan::compileInThread):
(JSC::JITWorklist::Plan::isFinishedCompiling):
(JSC::JITWorklist::JITWorklist):
(JSC::JITWorklist::completeAllForVM):
(JSC::JITWorklist::poll):
(JSC::JITWorklist::compileLater):
(JSC::JITWorklist::finalizePlans):

  • parser/SourceProvider.cpp:

(JSC::SourceProvider::getID):

  • profiler/ProfilerDatabase.cpp:

(JSC::Profiler::Database::ensureBytecodesFor):
(JSC::Profiler::Database::notifyDestruction):
(JSC::Profiler::Database::addCompilation):
(JSC::Profiler::Database::logEvent):
(JSC::Profiler::Database::addDatabaseToAtExit):
(JSC::Profiler::Database::removeDatabaseFromAtExit):
(JSC::Profiler::Database::removeFirstAtExitDatabase):

  • profiler/ProfilerUID.cpp:

(JSC::Profiler::UID::create):

  • runtime/DeferredWorkTimer.cpp:

(JSC::DeferredWorkTimer::scheduleWorkSoon):
(JSC::DeferredWorkTimer::didResumeScriptExecutionOwner):

  • runtime/SamplingProfiler.cpp:

(JSC::SamplingProfiler::timerLoop):
(JSC::SamplingProfiler::shutdown):
(JSC::SamplingProfiler::start):
(JSC::SamplingProfiler::noticeCurrentThreadAsJSCExecutionThread):
(JSC::SamplingProfiler::noticeJSLockAcquisition):
(JSC::SamplingProfiler::noticeVMEntry):
(JSC::SamplingProfiler::registerForReportAtExit):

  • runtime/Watchdog.cpp:

(JSC::Watchdog::startTimer):
(JSC::Watchdog::willDestroyVM):

  • tools/VMInspector.cpp:

(JSC::VMInspector::isValidExecutableMemory):

  • wasm/WasmBBQPlan.cpp:

(JSC::Wasm::BBQPlan::work):

  • wasm/WasmEntryPlan.cpp:

(JSC::Wasm::EntryPlan::ThreadCountHolder::ThreadCountHolder):
(JSC::Wasm::EntryPlan::ThreadCountHolder::~ThreadCountHolder):

  • wasm/WasmOMGPlan.cpp:

(JSC::Wasm::OMGPlan::work):

  • wasm/WasmPlan.cpp:

(JSC::Wasm::Plan::addCompletionTask):
(JSC::Wasm::Plan::waitForCompletion):
(JSC::Wasm::Plan::tryRemoveContextAndCancelIfLast):

  • wasm/WasmSignature.cpp:

(JSC::Wasm::SignatureInformation::signatureFor):
(JSC::Wasm::SignatureInformation::tryCleanup):

  • wasm/WasmWorklist.cpp:

(JSC::Wasm::Worklist::enqueue):
(JSC::Wasm::Worklist::completePlanSynchronously):
(JSC::Wasm::Worklist::stopAllPlansForContext):
(JSC::Wasm::Worklist::Worklist):
(JSC::Wasm::Worklist::~Worklist):

Source/WebCore:

  • Modules/webaudio/AsyncAudioDecoder.cpp:

(WebCore::AsyncAudioDecoder::AsyncAudioDecoder):
(WebCore::AsyncAudioDecoder::runLoop):

  • Modules/webdatabase/Database.cpp:

(WebCore::Database::performClose):
(WebCore::Database::inProgressTransactionCompleted):
(WebCore::Database::hasPendingTransaction):
(WebCore::Database::runTransaction):

  • Modules/webdatabase/DatabaseThread.cpp:

(WebCore::DatabaseThread::start):
(WebCore::DatabaseThread::databaseThread):
(WebCore::DatabaseThread::recordDatabaseOpen):
(WebCore::DatabaseThread::recordDatabaseClosed):
(WebCore::DatabaseThread::hasPendingDatabaseActivity const):

  • Modules/webdatabase/DatabaseTracker.cpp:

(WebCore::DatabaseTracker::canEstablishDatabase):
(WebCore::DatabaseTracker::retryCanEstablishDatabase):
(WebCore::DatabaseTracker::maximumSize):
(WebCore::DatabaseTracker::fullPathForDatabase):
(WebCore::DatabaseTracker::origins):
(WebCore::DatabaseTracker::databaseNames):
(WebCore::DatabaseTracker::detailsForNameAndOrigin):
(WebCore::DatabaseTracker::setDatabaseDetails):
(WebCore::DatabaseTracker::doneCreatingDatabase):
(WebCore::DatabaseTracker::openDatabases):
(WebCore::DatabaseTracker::addOpenDatabase):
(WebCore::DatabaseTracker::removeOpenDatabase):
(WebCore::DatabaseTracker::originLockFor):
(WebCore::DatabaseTracker::quota):
(WebCore::DatabaseTracker::setQuota):
(WebCore::DatabaseTracker::deleteOrigin):
(WebCore::DatabaseTracker::deleteDatabase):
(WebCore::DatabaseTracker::deleteDatabaseFile):
(WebCore::DatabaseTracker::removeDeletedOpenedDatabases):

  • Modules/webdatabase/SQLCallbackWrapper.h:

(WebCore::SQLCallbackWrapper::clear):
(WebCore::SQLCallbackWrapper::unwrap):

  • Modules/webdatabase/SQLTransaction.cpp:

(WebCore::SQLTransaction::enqueueStatement):
(WebCore::SQLTransaction::checkAndHandleClosedDatabase):
(WebCore::SQLTransaction::getNextStatement):

  • Modules/webdatabase/SQLTransactionBackend.cpp:

(WebCore::SQLTransactionBackend::doCleanup):

  • accessibility/isolatedtree/AXIsolatedTree.cpp:

(WebCore::AXIsolatedTree::clear):
(WebCore::AXIsolatedTree::generateSubtree):
(WebCore::AXIsolatedTree::createSubtree):
(WebCore::AXIsolatedTree::updateNode):
(WebCore::AXIsolatedTree::updateNodeProperty):
(WebCore::AXIsolatedTree::updateChildren):
(WebCore::AXIsolatedTree::focusedNode):
(WebCore::AXIsolatedTree::rootNode):
(WebCore::AXIsolatedTree::setFocusedNodeID):
(WebCore::AXIsolatedTree::removeNode):
(WebCore::AXIsolatedTree::removeSubtree):
(WebCore::AXIsolatedTree::applyPendingChanges):

  • page/scrolling/mac/ScrollingTreeMac.mm:

(ScrollingTreeMac::scrollingNodeForPoint):
(ScrollingTreeMac::eventListenerRegionTypesForPoint const):

  • platform/AbortableTaskQueue.h:
  • platform/audio/cocoa/CARingBuffer.cpp:

(WebCore::CARingBufferStorageVector::flush):
(WebCore::CARingBufferStorageVector::setCurrentFrameBounds):

  • platform/graphics/avfoundation/cf/MediaPlayerPrivateAVFoundationCF.cpp:

(WebCore::AVFWrapper::addToMap):
(WebCore::AVFWrapper::removeFromMap const):
(WebCore::AVFWrapper::periodicTimeObserverCallback):
(WebCore::AVFWrapper::processNotification):
(WebCore::AVFWrapper::loadPlayableCompletionCallback):
(WebCore::AVFWrapper::loadMetadataCompletionCallback):
(WebCore::AVFWrapper::seekCompletedCallback):
(WebCore::AVFWrapper::processCue):
(WebCore::AVFWrapper::legibleOutputCallback):
(WebCore::AVFWrapper::processShouldWaitForLoadingOfResource):
(WebCore::AVFWrapper::resourceLoaderShouldWaitForLoadingOfRequestedResource):

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

(-[WebCoreSharedBufferResourceLoaderDelegate setExpectedContentSize:]):
(-[WebCoreSharedBufferResourceLoaderDelegate updateData:complete:]):
(-[WebCoreSharedBufferResourceLoaderDelegate resourceLoader:shouldWaitForLoadingOfRequestedResource:]):
(-[WebCoreSharedBufferResourceLoaderDelegate resourceLoader:didCancelLoadingRequest:]):
(WebCore::ImageDecoderAVFObjC::setTrack):
(WebCore::ImageDecoderAVFObjC::createFrameImageAtIndex):

  • platform/graphics/gstreamer/ImageDecoderGStreamer.cpp:

(WebCore::ImageDecoderGStreamer::createFrameImageAtIndex):

  • platform/graphics/gstreamer/InbandTextTrackPrivateGStreamer.cpp:

(WebCore::InbandTextTrackPrivateGStreamer::handleSample):
(WebCore::InbandTextTrackPrivateGStreamer::notifyTrackOfSample):

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

(WebCore::MediaPlayerPrivateGStreamer::parseInitDataFromProtectionMessage):
(WebCore::MediaPlayerPrivateGStreamer::handleProtectionEvent):

  • platform/graphics/gstreamer/TrackPrivateBaseGStreamer.cpp:

(WebCore::TrackPrivateBaseGStreamer::tagsChanged):
(WebCore::TrackPrivateBaseGStreamer::notifyTrackOfTagsChanged):

  • platform/graphics/gstreamer/VideoSinkGStreamer.cpp:

(VideoRenderRequestScheduler::start):
(VideoRenderRequestScheduler::stop):
(VideoRenderRequestScheduler::drain):
(VideoRenderRequestScheduler::requestRender):

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

(transformInPlace):
(sinkEventHandler):
(webKitMediaCommonEncryptionDecryptIsFlushing):
(setContext):

  • platform/graphics/nicosia/NicosiaBuffer.cpp:

(Nicosia::Buffer::beginPainting):
(Nicosia::Buffer::completePainting):
(Nicosia::Buffer::waitUntilPaintingComplete):

  • platform/graphics/nicosia/NicosiaPlatformLayer.h:

(Nicosia::PlatformLayer::setSceneIntegration):
(Nicosia::PlatformLayer::createUpdateScope):
(Nicosia::CompositionLayer::updateState):
(Nicosia::CompositionLayer::flushState):
(Nicosia::CompositionLayer::commitState):
(Nicosia::CompositionLayer::accessPending):
(Nicosia::CompositionLayer::accessCommitted):

  • platform/graphics/nicosia/NicosiaScene.h:

(Nicosia::Scene::accessState):

  • platform/graphics/nicosia/NicosiaSceneIntegration.cpp:

(Nicosia::SceneIntegration::setClient):
(Nicosia::SceneIntegration::invalidate):
(Nicosia::SceneIntegration::requestUpdate):

  • platform/graphics/nicosia/texmap/NicosiaBackingStoreTextureMapperImpl.cpp:

(Nicosia::BackingStoreTextureMapperImpl::flushUpdate):
(Nicosia::BackingStoreTextureMapperImpl::takeUpdate):

  • platform/graphics/nicosia/texmap/NicosiaContentLayerTextureMapperImpl.cpp:

(Nicosia::ContentLayerTextureMapperImpl::~ContentLayerTextureMapperImpl):
(Nicosia::ContentLayerTextureMapperImpl::invalidateClient):
(Nicosia::ContentLayerTextureMapperImpl::flushUpdate):
(Nicosia::ContentLayerTextureMapperImpl::swapBuffersIfNeeded):

  • platform/graphics/nicosia/texmap/NicosiaImageBackingTextureMapperImpl.cpp:

(Nicosia::ImageBackingTextureMapperImpl::flushUpdate):
(Nicosia::ImageBackingTextureMapperImpl::takeUpdate):

  • platform/graphics/texmap/TextureMapperGCGLPlatformLayer.cpp:

(WebCore::TextureMapperGCGLPlatformLayer::swapBuffersIfNeeded):

  • platform/graphics/win/MediaPlayerPrivateMediaFoundation.cpp:

(WebCore::MediaPlayerPrivateMediaFoundation::load):
(WebCore::MediaPlayerPrivateMediaFoundation::naturalSize const):
(WebCore::MediaPlayerPrivateMediaFoundation::addListener):
(WebCore::MediaPlayerPrivateMediaFoundation::removeListener):
(WebCore::MediaPlayerPrivateMediaFoundation::notifyDeleted):
(WebCore::MediaPlayerPrivateMediaFoundation::setNaturalSize):
(WebCore::MediaPlayerPrivateMediaFoundation::AsyncCallback::Invoke):
(WebCore::MediaPlayerPrivateMediaFoundation::AsyncCallback::onMediaPlayerDeleted):
(WebCore::MediaPlayerPrivateMediaFoundation::CustomVideoPresenter::OnClockStart):
(WebCore::MediaPlayerPrivateMediaFoundation::CustomVideoPresenter::OnClockStop):
(WebCore::MediaPlayerPrivateMediaFoundation::CustomVideoPresenter::OnClockPause):
(WebCore::MediaPlayerPrivateMediaFoundation::CustomVideoPresenter::OnClockRestart):
(WebCore::MediaPlayerPrivateMediaFoundation::CustomVideoPresenter::OnClockSetRate):
(WebCore::MediaPlayerPrivateMediaFoundation::CustomVideoPresenter::ProcessMessage):
(WebCore::MediaPlayerPrivateMediaFoundation::CustomVideoPresenter::GetCurrentMediaType):
(WebCore::MediaPlayerPrivateMediaFoundation::CustomVideoPresenter::InitServicePointers):
(WebCore::MediaPlayerPrivateMediaFoundation::CustomVideoPresenter::ReleaseServicePointers):
(WebCore::MediaPlayerPrivateMediaFoundation::CustomVideoPresenter::SetVideoWindow):
(WebCore::MediaPlayerPrivateMediaFoundation::CustomVideoPresenter::GetVideoWindow):
(WebCore::MediaPlayerPrivateMediaFoundation::CustomVideoPresenter::SetVideoPosition):
(WebCore::MediaPlayerPrivateMediaFoundation::CustomVideoPresenter::GetVideoPosition):
(WebCore::MediaPlayerPrivateMediaFoundation::CustomVideoPresenter::RepaintVideo):
(WebCore::MediaPlayerPrivateMediaFoundation::VideoSamplePool::getSample):
(WebCore::MediaPlayerPrivateMediaFoundation::VideoSamplePool::returnSample):
(WebCore::MediaPlayerPrivateMediaFoundation::VideoSamplePool::areSamplesPending):
(WebCore::MediaPlayerPrivateMediaFoundation::VideoSamplePool::initialize):
(WebCore::MediaPlayerPrivateMediaFoundation::VideoSamplePool::clear):
(WebCore::MediaPlayerPrivateMediaFoundation::VideoScheduler::stopScheduler):
(WebCore::MediaPlayerPrivateMediaFoundation::VideoScheduler::scheduleSample):
(WebCore::MediaPlayerPrivateMediaFoundation::VideoScheduler::processSamplesInQueue):
(WebCore::MediaPlayerPrivateMediaFoundation::VideoScheduler::processSample):
(WebCore::MediaPlayerPrivateMediaFoundation::VideoScheduler::schedulerThreadProcPrivate):
(WebCore::MediaPlayerPrivateMediaFoundation::Direct3DPresenter::setVideoWindow):
(WebCore::MediaPlayerPrivateMediaFoundation::Direct3DPresenter::setDestinationRect):
(WebCore::MediaPlayerPrivateMediaFoundation::Direct3DPresenter::createVideoSamples):
(WebCore::MediaPlayerPrivateMediaFoundation::Direct3DPresenter::checkDeviceState):
(WebCore::MediaPlayerPrivateMediaFoundation::Direct3DPresenter::presentSample):
(WebCore::MediaPlayerPrivateMediaFoundation::Direct3DPresenter::paintCurrentFrame):
(WebCore::MediaPlayerPrivateMediaFoundation::Direct3DPresenter::createD3DDevice):

  • platform/image-decoders/ScalableImageDecoder.cpp:

(WebCore::ScalableImageDecoder::frameIsCompleteAtIndex const):
(WebCore::ScalableImageDecoder::frameHasAlphaAtIndex const):
(WebCore::ScalableImageDecoder::frameBytesAtIndex const):
(WebCore::ScalableImageDecoder::frameDurationAtIndex const):
(WebCore::ScalableImageDecoder::createFrameImageAtIndex):

  • platform/image-decoders/ScalableImageDecoder.h:
  • platform/ios/LegacyTileCache.mm:

(WebCore::LegacyTileCache::setTilesOpaque):
(WebCore::LegacyTileCache::doLayoutTiles):
(WebCore::LegacyTileCache::setCurrentScale):
(WebCore::LegacyTileCache::commitScaleChange):
(WebCore::LegacyTileCache::layoutTilesNow):
(WebCore::LegacyTileCache::layoutTilesNowForRect):
(WebCore::LegacyTileCache::removeAllNonVisibleTiles):
(WebCore::LegacyTileCache::removeAllTiles):
(WebCore::LegacyTileCache::removeForegroundTiles):
(WebCore::LegacyTileCache::setContentReplacementImage):
(WebCore::LegacyTileCache::contentReplacementImage const):
(WebCore::LegacyTileCache::tileCreationTimerFired):
(WebCore::LegacyTileCache::setNeedsDisplayInRect):
(WebCore::LegacyTileCache::updateTilingMode):
(WebCore::LegacyTileCache::setTilingMode):
(WebCore::LegacyTileCache::doPendingRepaints):
(WebCore::LegacyTileCache::flushSavedDisplayRects):
(WebCore::LegacyTileCache::prepareToDraw):

  • platform/ios/LegacyTileLayerPool.mm:

(WebCore::LegacyTileLayerPool::addLayer):
(WebCore::LegacyTileLayerPool::takeLayerWithSize):
(WebCore::LegacyTileLayerPool::setCapacity):
(WebCore::LegacyTileLayerPool::prune):
(WebCore::LegacyTileLayerPool::drain):

  • platform/ios/wak/WAKWindow.mm:

(-[WAKWindow setExposedScrollViewRect:]):
(-[WAKWindow exposedScrollViewRect]):

  • platform/ios/wak/WebCoreThread.mm:

(RunWebThread):
(StartWebThread):

  • platform/mediastream/gstreamer/RealtimeOutgoingAudioSourceLibWebRTC.cpp:

(WebCore::RealtimeOutgoingAudioSourceLibWebRTC::audioSamplesAvailable):
(WebCore::RealtimeOutgoingAudioSourceLibWebRTC::pullAudioData):

  • platform/network/cf/FormDataStreamCFNet.cpp:

(WebCore::openNextStream):
(WebCore::formFinalize):
(WebCore::formClose):

  • platform/network/curl/CurlRequest.cpp:

(WebCore::CurlRequest::setRequestPaused):
(WebCore::CurlRequest::setCallbackPaused):
(WebCore::CurlRequest::pausedStatusChanged):
(WebCore::CurlRequest::enableDownloadToFile):
(WebCore::CurlRequest::getDownloadedFilePath):
(WebCore::CurlRequest::writeDataToDownloadFileIfEnabled):
(WebCore::CurlRequest::closeDownloadFile):
(WebCore::CurlRequest::cleanupDownloadFile):

  • platform/network/curl/CurlSSLHandle.cpp:

(WebCore::CurlSSLHandle::allowAnyHTTPSCertificatesForHost):
(WebCore::CurlSSLHandle::canIgnoreAnyHTTPSCertificatesForHost const):
(WebCore::CurlSSLHandle::setClientCertificateInfo):
(WebCore::CurlSSLHandle::getSSLClientCertificate const):

  • platform/sql/SQLiteDatabase.cpp:

(WebCore::SQLiteDatabase::close):
(WebCore::SQLiteDatabase::maximumSize):
(WebCore::SQLiteDatabase::setMaximumSize):
(WebCore::SQLiteDatabase::pageSize):
(WebCore::SQLiteDatabase::freeSpaceSize):
(WebCore::SQLiteDatabase::totalSize):
(WebCore::SQLiteDatabase::runIncrementalVacuumCommand):
(WebCore::SQLiteDatabase::interrupt):
(WebCore::SQLiteDatabase::setAuthorizer):
(WebCore::constructAndPrepareStatement):

  • platform/sql/SQLiteStatement.cpp:

(WebCore::SQLiteStatement::step):

Source/WebKit:

  • NetworkProcess/IndexedDB/WebIDBServer.cpp:

(WebKit::m_closeCallback):
(WebKit::WebIDBServer::getOrigins):
(WebKit::WebIDBServer::closeAndDeleteDatabasesModifiedSince):
(WebKit::WebIDBServer::closeAndDeleteDatabasesForOrigins):
(WebKit::WebIDBServer::renameOrigin):
(WebKit::WebIDBServer::openDatabase):
(WebKit::WebIDBServer::deleteDatabase):
(WebKit::WebIDBServer::abortTransaction):
(WebKit::WebIDBServer::commitTransaction):
(WebKit::WebIDBServer::didFinishHandlingVersionChangeTransaction):
(WebKit::WebIDBServer::createObjectStore):
(WebKit::WebIDBServer::deleteObjectStore):
(WebKit::WebIDBServer::renameObjectStore):
(WebKit::WebIDBServer::clearObjectStore):
(WebKit::WebIDBServer::createIndex):
(WebKit::WebIDBServer::deleteIndex):
(WebKit::WebIDBServer::renameIndex):
(WebKit::WebIDBServer::putOrAdd):
(WebKit::WebIDBServer::getRecord):
(WebKit::WebIDBServer::getAllRecords):
(WebKit::WebIDBServer::getCount):
(WebKit::WebIDBServer::deleteRecord):
(WebKit::WebIDBServer::openCursor):
(WebKit::WebIDBServer::iterateCursor):
(WebKit::WebIDBServer::establishTransaction):
(WebKit::WebIDBServer::databaseConnectionPendingClose):
(WebKit::WebIDBServer::databaseConnectionClosed):
(WebKit::WebIDBServer::abortOpenAndUpgradeNeeded):
(WebKit::WebIDBServer::didFireVersionChangeEvent):
(WebKit::WebIDBServer::openDBRequestCancelled):
(WebKit::WebIDBServer::getAllDatabaseNamesAndVersions):
(WebKit::WebIDBServer::addConnection):
(WebKit::WebIDBServer::removeConnection):
(WebKit::WebIDBServer::close):

  • NetworkProcess/cache/CacheStorageEngine.cpp:

(WebKit::CacheStorage::Engine::writeSizeFile):
(WebKit::CacheStorage::Engine::readSizeFile):
(WebKit::CacheStorage::Engine::clearAllCachesFromDisk):
(WebKit::CacheStorage::Engine::deleteNonEmptyDirectoryOnBackgroundThread):

  • NetworkProcess/glib/DNSCache.cpp:

(WebKit::DNSCache::lookup):
(WebKit::DNSCache::update):
(WebKit::DNSCache::removeExpiredResponsesFired):
(WebKit::DNSCache::clear):

  • Shared/CoordinatedGraphics/threadedcompositor/CompositingRunLoop.cpp:

(WebKit::CompositingRunLoop::suspend):
(WebKit::CompositingRunLoop::resume):
(WebKit::CompositingRunLoop::scheduleUpdate):
(WebKit::CompositingRunLoop::stopUpdates):
(WebKit::CompositingRunLoop::updateTimerFired):

  • Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.cpp:

(WebKit::m_displayRefreshMonitor):
(WebKit::ThreadedCompositor::setScaleFactor):
(WebKit::ThreadedCompositor::setScrollPosition):
(WebKit::ThreadedCompositor::setViewportSize):
(WebKit::ThreadedCompositor::renderLayerTree):
(WebKit::ThreadedCompositor::sceneUpdateFinished):
(WebKit::ThreadedCompositor::updateSceneState):

  • UIProcess/API/glib/IconDatabase.cpp:

(WebKit::IconDatabase::populatePageURLToIconURLMap):
(WebKit::IconDatabase::clearLoadedIconsTimerFired):
(WebKit::IconDatabase::checkIconURLAndSetPageURLIfNeeded):
(WebKit::IconDatabase::loadIconForPageURL):
(WebKit::IconDatabase::iconURLForPageURL):
(WebKit::IconDatabase::setIconForPageURL):
(WebKit::IconDatabase::clear):

Source/WebKitLegacy:

  • Storage/InProcessIDBServer.cpp:

(InProcessIDBServer::InProcessIDBServer):
(InProcessIDBServer::deleteDatabase):
(InProcessIDBServer::openDatabase):
(InProcessIDBServer::abortTransaction):
(InProcessIDBServer::commitTransaction):
(InProcessIDBServer::didFinishHandlingVersionChangeTransaction):
(InProcessIDBServer::createObjectStore):
(InProcessIDBServer::deleteObjectStore):
(InProcessIDBServer::renameObjectStore):
(InProcessIDBServer::clearObjectStore):
(InProcessIDBServer::createIndex):
(InProcessIDBServer::deleteIndex):
(InProcessIDBServer::renameIndex):
(InProcessIDBServer::putOrAdd):
(InProcessIDBServer::getRecord):
(InProcessIDBServer::getAllRecords):
(InProcessIDBServer::getCount):
(InProcessIDBServer::deleteRecord):
(InProcessIDBServer::openCursor):
(InProcessIDBServer::iterateCursor):
(InProcessIDBServer::establishTransaction):
(InProcessIDBServer::databaseConnectionPendingClose):
(InProcessIDBServer::databaseConnectionClosed):
(InProcessIDBServer::abortOpenAndUpgradeNeeded):
(InProcessIDBServer::didFireVersionChangeEvent):
(InProcessIDBServer::openDBRequestCancelled):
(InProcessIDBServer::getAllDatabaseNamesAndVersions):
(InProcessIDBServer::closeAndDeleteDatabasesModifiedSince):

  • Storage/StorageAreaSync.cpp:

(WebKit::StorageAreaSync::syncTimerFired):
(WebKit::StorageAreaSync::performSync):

  • Storage/StorageTracker.cpp:

(WebKit::StorageTracker::finishedImportingOriginIdentifiers):
(WebKit::StorageTracker::syncImportOriginIdentifiers):
(WebKit::StorageTracker::syncFileSystemAndTrackerDatabase):
(WebKit::StorageTracker::setOriginDetails):
(WebKit::StorageTracker::syncSetOriginDetails):
(WebKit::StorageTracker::origins):
(WebKit::StorageTracker::deleteAllOrigins):
(WebKit::StorageTracker::syncDeleteAllOrigins):
(WebKit::StorageTracker::deleteOrigin):
(WebKit::StorageTracker::syncDeleteOrigin):
(WebKit::StorageTracker::canDeleteOrigin):
(WebKit::StorageTracker::cancelDeletingOrigin):
(WebKit::StorageTracker::diskUsageForOrigin):

Source/WebKitLegacy/mac:

  • WebView/WebView.mm:

(-[WebView _synchronizeCustomFixedPositionLayoutRect]):
(-[WebView _setCustomFixedPositionLayoutRectInWebThread:synchronize:]):
(-[WebView _setCustomFixedPositionLayoutRect:]):
(-[WebView _fetchCustomFixedPositionLayoutRect:]):

Source/WebKitLegacy/win:

  • Plugins/PluginMainThreadScheduler.cpp:

(WebCore::PluginMainThreadScheduler::scheduleCall):
(WebCore::PluginMainThreadScheduler::registerPlugin):
(WebCore::PluginMainThreadScheduler::unregisterPlugin):
(WebCore::PluginMainThreadScheduler::dispatchCallsForPlugin):

Source/WTF:

  • benchmarks/LockSpeedTest.cpp:
  • wtf/AutomaticThread.cpp:

(WTF::AutomaticThread::~AutomaticThread):
(WTF::AutomaticThread::join):
(WTF::AutomaticThread::start):

  • wtf/AutomaticThread.h:
  • wtf/MetaAllocator.cpp:

(WTF::MetaAllocatorHandle::shrink):
(WTF::MetaAllocator::addFreshFreeSpace):
(WTF::MetaAllocator::debugFreeSpaceSize):

  • wtf/ParallelHelperPool.cpp:

(WTF::ParallelHelperClient::ParallelHelperClient):
(WTF::ParallelHelperClient::~ParallelHelperClient):
(WTF::ParallelHelperClient::setTask):
(WTF::ParallelHelperClient::finish):
(WTF::ParallelHelperClient::doSomeHelping):
(WTF::ParallelHelperClient::runTask):
(WTF::ParallelHelperPool::~ParallelHelperPool):
(WTF::ParallelHelperPool::ensureThreads):
(WTF::ParallelHelperPool::doSomeHelping):

  • wtf/Seconds.cpp:

(WTF::sleep):

  • wtf/TimeWithDynamicClockType.cpp:

(WTF::sleep):

  • wtf/WorkerPool.cpp:

(WTF::WorkerPool::WorkerPool):
(WTF::WorkerPool::~WorkerPool):
(WTF::WorkerPool::postTask):

  • wtf/posix/ThreadingPOSIX.cpp:

(WTF::Thread::suspend):
(WTF::Thread::resume):
(WTF::Thread::getRegisters):

  • wtf/win/DbgHelperWin.cpp:

(WTF::DbgHelper::SymFromAddress):

  • wtf/win/ThreadingWin.cpp:

(WTF::Thread::suspend):
(WTF::Thread::resume):
(WTF::Thread::getRegisters):

Tools:

  • TestWebKitAPI/Tests/WTF/WorkQueue.cpp:

(TestWebKitAPI::TEST):

  • TestWebKitAPI/Tests/WTF/glib/WorkQueueGLib.cpp:

(TestWebKitAPI::TEST):

  • TestWebKitAPI/Tests/WebCore/AbortableTaskQueue.cpp:

(TestWebKitAPI::DeterministicScheduler::ThreadContext::waitMyTurn):
(TestWebKitAPI::DeterministicScheduler::ThreadContext::yieldToThread):

10:23 PM Changeset in webkit [277912] by Lauro Moura
  • 2 edits in trunk/WebDriverTests

[WebDriver] Gardening some GTK and WPE failures

Unreviewed test gardening.

9:34 PM Changeset in webkit [277911] by Chris Dumez
  • 20 edits in trunk

Stop using holdLock() in WebKit/WebKitLegacy/Tools as it is not compatible with Clang thread safety analysis
https://bugs.webkit.org/show_bug.cgi?id=226127

Reviewed by Alex Christensen.

Source/WebKit:

  • GPUProcess/webrtc/LibWebRTCCodecsProxy.mm:

(WebKit::LibWebRTCCodecsProxy::close):
(WebKit::LibWebRTCCodecsProxy::createH264Decoder):
(WebKit::LibWebRTCCodecsProxy::createH265Decoder):
(WebKit::LibWebRTCCodecsProxy::createVP9Decoder):
(WebKit::LibWebRTCCodecsProxy::releaseDecoder):
(WebKit::LibWebRTCCodecsProxy::createEncoder):
(WebKit::LibWebRTCCodecsProxy::releaseEncoder):
(WebKit::LibWebRTCCodecsProxy::allowsExitUnderMemoryPressure const):

  • Platform/IPC/Connection.cpp:

(IPC::Connection::SyncMessageState::enqueueMatchingMessages):
(IPC::Connection::SyncMessageState::processIncomingMessage):
(IPC::Connection::SyncMessageState::dispatchMessages):
(IPC::Connection::SyncMessageState::dispatchMessagesAndResetDidScheduleDispatchMessagesForConnection):

  • Shared/CoordinatedGraphics/threadedcompositor/ThreadedDisplayRefreshMonitor.cpp:

(WebKit::ThreadedDisplayRefreshMonitor::requestRefreshCallback):
(WebKit::ThreadedDisplayRefreshMonitor::requiresDisplayRefreshCallback):
(WebKit::ThreadedDisplayRefreshMonitor::invalidate):
(WebKit::ThreadedDisplayRefreshMonitor::displayRefreshCallback):

  • Shared/mac/MediaFormatReader/MediaSampleCursor.cpp:

(WebKit::MediaSampleCursor::copy):
(WebKit::MediaSampleCursor::getSampleMap const):

  • UIProcess/mac/WKPrintingView.mm:

(-[WKPrintingView _preparePDFDataForPrintingOnSecondaryThread]):
(prepareDataForPrintingOnSecondaryThread):

Source/WebKitLegacy/ios:

  • WebCoreSupport/WebFixedPositionContent.mm:

(-[WebFixedPositionContent scrollOrZoomChanged:]):
(-[WebFixedPositionContent overflowScrollPositionForLayer:changedTo:]):
(-[WebFixedPositionContent setViewportConstrainedLayers:stickyContainerMap:]):
(-[WebFixedPositionContent hasFixedOrStickyPositionLayers]):

Source/WebKitLegacy/win:

  • WebKitQuartzCoreAdditions/CAD3DRenderer.cpp:

(WKQCA::CAD3DRenderer::swapChain):
(WKQCA::CAD3DRenderer::renderAndPresent):
(WKQCA::CAD3DRenderer::renderToImage):

  • WebKitQuartzCoreAdditions/CAView.cpp:

(WKQCA::CAView::releaseAllD3DResources):
(WKQCA::CAView::CAView):
(WKQCA::CAView::~CAView):
(WKQCA::CAView::setLayer):
(WKQCA::CAView::update):
(WKQCA::CAView::drawToWindow):
(WKQCA::CAView::drawToImage):
(WKQCA::CAView::drawIntoDC):
(WKQCA::CAView::setShouldInvertColors):
(WKQCA::CAView::scheduleNextDraw):
(WKQCA::CAView::displayLinkReachedCAMediaTime):
(WKQCA::CAView::contextDidChange):
(WKQCA::CAView::updateSoon):
(WKQCA::CAView::updateViewsNow):
(WKQCA::CAView::d3dDevice9):

  • WebLocalizableStrings.cpp:

(findCachedString):
(cacheString):

Tools:

  • DumpRenderTree/JavaScriptThreading.cpp:

(runJavaScriptThread):
(startJavaScriptThreads):
(stopJavaScriptThreads):

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

(check_lock_guard):

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

(WebKitStyleTest.test_lock_guard):

  • TestWebKitAPI/Tests/WTF/Condition.cpp:
  • TestWebKitAPI/Tests/WTF/ThreadGroup.cpp:

(TestWebKitAPI::testThreadGroup):
(TestWebKitAPI::TEST):

  • WebKitTestRunner/InjectedBundle/AccessibilityController.cpp:

(WTR::AXThread::dispatch):
(WTR::AXThread::dispatchFunctionsFromAXThread):

  • WebKitTestRunner/InjectedBundle/mac/AccessibilityControllerMac.mm:

(WTR::AXThread::initializeRunLoop):

9:24 PM Changeset in webkit [277910] by Chris Dumez
  • 3 edits in trunk/Source/WebCore

Fix locking issue for AudioDestinationCocoa::m_isPlaying
https://bugs.webkit.org/show_bug.cgi?id=226129

Reviewed by Jer Noble.

Fix locking issue for AudioDestinationCocoa::m_isPlaying. The AudioDestinationCocoa::isPlaying()
getter fails to lock. isPlaying() may get called from the main thread and the audio rendering
thread. Since we cannot grab a lock on the rendering thread, use std::atomic<bool> type for
m_isPlaying.

  • platform/audio/cocoa/AudioDestinationCocoa.cpp:

(WebCore::AudioDestinationCocoa::setIsPlaying):
(WebCore::AudioDestinationCocoa::renderOnRenderingTheadIfPlaying):

  • platform/audio/cocoa/AudioDestinationCocoa.h:
8:13 PM Changeset in webkit [277909] by Chris Dumez
  • 92 edits in trunk/Source/JavaScriptCore

Stop using holdLock() in JSC as it is not compatible with Clang thread safety analysis
https://bugs.webkit.org/show_bug.cgi?id=226116

Reviewed by Mark Lam.

Stop using holdLock() in JSC as it is not compatible with Clang thread safety analysis
(WTF::CheckedLock). Use the Locker constructor instead.

I'll eventually get rid of the holdLock() definition once I have managed to get rid of
all its usages.

  • API/JSVirtualMachine.mm:

(+[JSVMWrapperCache addWrapper:forJSContextGroupRef:]):
(+[JSVMWrapperCache wrapperForJSContextGroupRef:]):
(-[JSVirtualMachine addExternalRememberedObject:]):
(-[JSVirtualMachine addManagedReference:withOwner:]):
(-[JSVirtualMachine removeManagedReference:withOwner:]):
(scanExternalObjectGraph):
(scanExternalRememberedSet):

  • API/glib/JSCVirtualMachine.cpp:

(addWrapper):
(removeWrapper):

  • API/tests/ExecutionTimeLimitTest.cpp:

(testExecutionTimeLimit):

  • assembler/PerfLog.cpp:

(JSC::PerfLog::PerfLog):
(JSC::PerfLog::log):

  • bytecode/StructureStubInfo.cpp:

(JSC::StructureStubInfo::visitAggregateImpl):
(JSC::StructureStubInfo::visitWeakReferences):

  • bytecode/StructureStubInfo.h:

(JSC::StructureStubInfo::considerCaching):
(JSC::StructureStubInfo::clearBufferedStructures):

  • bytecode/UnlinkedCodeBlock.cpp:

(JSC::UnlinkedCodeBlock::UnlinkedCodeBlock):
(JSC::UnlinkedCodeBlock::visitChildrenImpl):

  • bytecode/UnlinkedCodeBlockGenerator.cpp:

(JSC::UnlinkedCodeBlockGenerator::finalize):

  • dfg/DFGAbstractInterpreterInlines.h:

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

  • heap/BlockDirectory.cpp:

(JSC::BlockDirectory::~BlockDirectory):
(JSC::BlockDirectory::removeBlock):
(JSC::BlockDirectory::stopAllocatingForGood):
(JSC::BlockDirectory::parallelNotEmptyBlockSource):

  • heap/CodeBlockSet.cpp:

(JSC::CodeBlockSet::add):
(JSC::CodeBlockSet::remove):

  • heap/CodeBlockSetInlines.h:

(JSC::CodeBlockSet::iterate):

  • heap/CompleteSubspace.cpp:

(JSC::CompleteSubspace::allocatorForSlow):

  • heap/Heap.cpp:

(JSC::Heap::lastChanceToFinalize):
(JSC::Heap::runNotRunningPhase):
(JSC::Heap::runEndPhase):
(JSC::Heap::finishRelinquishingConn):
(JSC::visitSamplingProfiler):
(JSC::Heap::setBonusVisitorTask):
(JSC::Heap::runTaskInParallel):

  • heap/HeapSnapshotBuilder.cpp:

(JSC::HeapSnapshotBuilder::buildSnapshot):
(JSC::HeapSnapshotBuilder::analyzeNode):
(JSC::HeapSnapshotBuilder::analyzeEdge):
(JSC::HeapSnapshotBuilder::analyzePropertyNameEdge):
(JSC::HeapSnapshotBuilder::analyzeVariableNameEdge):
(JSC::HeapSnapshotBuilder::analyzeIndexEdge):
(JSC::HeapSnapshotBuilder::setOpaqueRootReachabilityReasonForCell):

  • heap/IsoAlignedMemoryAllocator.cpp:

(JSC::IsoAlignedMemoryAllocator::tryAllocateAlignedMemory):
(JSC::IsoAlignedMemoryAllocator::freeAlignedMemory):

  • heap/IsoCellSet.cpp:

(JSC::IsoCellSet::parallelNotEmptyMarkedBlockSource):
(JSC::IsoCellSet::addSlow):
(JSC::IsoCellSet::didRemoveBlock):
(JSC::IsoCellSet::sweepToFreeList):

  • heap/IsoCellSetInlines.h:

(JSC::IsoCellSet::forEachMarkedCellInParallel):

  • heap/IsoSubspace.cpp:

(JSC::IsoSubspace::IsoSubspace):

  • heap/IsoSubspacePerVM.cpp:

(JSC::IsoSubspacePerVM::forVM):

  • heap/LocalAllocator.cpp:

(JSC::LocalAllocator::LocalAllocator):
(JSC::LocalAllocator::~LocalAllocator):

  • heap/MachineStackMarker.cpp:

(JSC::MachineThreads::tryCopyOtherThreadStacks):
(JSC::MachineThreads::gatherConservativeRoots):

  • heap/MarkedBlock.cpp:

(JSC::MarkedBlock::Handle::stopAllocating):
(JSC::MarkedBlock::Handle::resumeAllocating):
(JSC::MarkedBlock::aboutToMarkSlow):
(JSC::MarkedBlock::Handle::didConsumeFreeList):
(JSC::MarkedBlock::noteMarkedSlow):
(JSC::MarkedBlock::Handle::dumpState):

  • heap/MarkedBlockInlines.h:

(JSC::MarkedBlock::Handle::isLive):

  • heap/MarkingConstraint.cpp:

(JSC::MarkingConstraint::doParallelWork):

  • heap/MarkingConstraintSolver.cpp:

(JSC::MarkingConstraintSolver::addParallelTask):
(JSC::MarkingConstraintSolver::runExecutionThread):

  • heap/ParallelSourceAdapter.h:
  • heap/SlotVisitor.cpp:

(JSC::SlotVisitor::updateMutatorIsStopped):
(JSC::SlotVisitor::drain):
(JSC::SlotVisitor::performIncrementOfDraining):
(JSC::SlotVisitor::drainFromShared):
(JSC::SlotVisitor::drainInParallelPassively):
(JSC::SlotVisitor::waitForTermination):
(JSC::SlotVisitor::donateAll):
(JSC::SlotVisitor::didRace):

  • heap/Subspace.cpp:

(JSC::Subspace::parallelDirectorySource):

  • heap/SubspaceInlines.h:

(JSC::Subspace::forEachMarkedCellInParallel):

  • inspector/JSInjectedScriptHost.cpp:
  • jit/ExecutableAllocator.cpp:
  • jsc.cpp:

(Worker::Worker):
(Worker::~Worker):
(Worker::dequeue):
(Workers::broadcast):
(Workers::report):
(Workers::tryGetReport):
(Workers::getReport):
(JSC_DEFINE_HOST_FUNCTION):

  • runtime/DeferredWorkTimer.cpp:

(JSC::DeferredWorkTimer::doWork):

  • runtime/ErrorInstance.cpp:

(JSC::ErrorInstance::finishCreation):

  • runtime/EvalExecutable.cpp:

(JSC::EvalExecutable::visitChildrenImpl):

  • runtime/FileBasedFuzzerAgentBase.cpp:

(JSC::FileBasedFuzzerAgentBase::getPrediction):

  • runtime/FunctionExecutable.cpp:

(JSC::FunctionExecutable::visitChildrenImpl):

  • runtime/JSArray.cpp:

(JSC::JSArray::shiftCountWithArrayStorage):
(JSC::JSArray::unshiftCountWithArrayStorage):

  • runtime/JSArrayBufferView.cpp:

(JSC::JSArrayBufferView::detach):
(JSC::JSArrayBufferView::slowDownAndWasteMemory):

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

(JSC::JSFinalizationRegistry::visitChildrenImpl):
(JSC::JSFinalizationRegistry::finalizeUnconditionally):
(JSC::JSFinalizationRegistry::takeDeadHoldingsValue):
(JSC::JSFinalizationRegistry::registerTarget):
(JSC::JSFinalizationRegistry::unregister):

  • runtime/JSGenericTypedArrayViewInlines.h:

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

  • runtime/JSGlobalObject.cpp:

(JSC::JSC_DEFINE_HOST_FUNCTION):

  • runtime/JSModuleNamespaceObject.cpp:

(JSC::JSModuleNamespaceObject::finishCreation):
(JSC::JSModuleNamespaceObject::visitChildrenImpl):

  • runtime/JSObject.cpp:

(JSC::JSObject::visitButterflyImpl):

  • runtime/JSRunLoopTimer.cpp:

(JSC::JSRunLoopTimer::Manager::timerDidFire):
(JSC::JSRunLoopTimer::Manager::registerVM):
(JSC::JSRunLoopTimer::Manager::unregisterVM):
(JSC::JSRunLoopTimer::Manager::scheduleTimer):
(JSC::JSRunLoopTimer::Manager::cancelTimer):
(JSC::JSRunLoopTimer::Manager::timeUntilFire):
(JSC::JSRunLoopTimer::timerDidFire):
(JSC::JSRunLoopTimer::setTimeUntilFire):
(JSC::JSRunLoopTimer::cancelTimer):
(JSC::JSRunLoopTimer::addTimerSetNotification):
(JSC::JSRunLoopTimer::removeTimerSetNotification):

  • runtime/JSSegmentedVariableObject.cpp:

(JSC::JSSegmentedVariableObject::findVariableIndex):
(JSC::JSSegmentedVariableObject::addVariables):
(JSC::JSSegmentedVariableObject::visitChildrenImpl):

  • runtime/ModuleProgramExecutable.cpp:

(JSC::ModuleProgramExecutable::visitChildrenImpl):

  • runtime/NarrowingNumberPredictionFuzzerAgent.cpp:

(JSC::NarrowingNumberPredictionFuzzerAgent::getPrediction):

  • runtime/ProgramExecutable.cpp:

(JSC::ProgramExecutable::visitChildrenImpl):

  • runtime/RandomizingFuzzerAgent.cpp:

(JSC::RandomizingFuzzerAgent::getPrediction):

  • runtime/RegExp.cpp:

(JSC::RegExp::compile):
(JSC::RegExp::matchConcurrently):
(JSC::RegExp::compileMatchOnly):
(JSC::RegExp::deleteCode):

  • runtime/SamplingProfiler.cpp:

(JSC::SamplingProfiler::takeSample):
(JSC::SamplingProfiler::stackTracesAsJSON):
(JSC::SamplingProfiler::reportTopFunctions):
(JSC::SamplingProfiler::reportTopBytecodes):

  • runtime/ScriptExecutable.cpp:

(JSC::ScriptExecutable::createTemplateObject):

  • runtime/SparseArrayValueMap.cpp:

(JSC::SparseArrayValueMap::add):
(JSC::SparseArrayValueMap::remove):
(JSC::SparseArrayValueMap::getConcurrently):
(JSC::SparseArrayValueMap::visitChildrenImpl):

  • runtime/Structure.cpp:

(JSC::Structure::changePrototypeTransition):
(JSC::Structure::toDictionaryTransition):
(JSC::Structure::nonPropertyTransitionSlow):
(JSC::Structure::setBrandTransition):

  • runtime/StructureCache.cpp:

(JSC::StructureCache::createEmptyStructure):
(JSC::StructureCache::emptyObjectStructureConcurrently):

  • runtime/VM.cpp:

(JSC::waitForVMDestruction):
(JSC::VM::~VM):
(JSC::VM::gatherScratchBufferRoots):
(JSC::VM::scratchBufferForSize):
(JSC::VM::clearScratchBuffers):
(JSC::VM::addLoopHintExecutionCounter):
(JSC::VM::getLoopHintExecutionCounter):
(JSC::VM::removeLoopHintExecutionCounter):

  • runtime/VMTraps.cpp:

(JSC::VMTraps::tryInstallTrapBreakpoints):
(JSC::VMTraps::invalidateCodeBlocksOnStack):
(JSC::VMTraps::willDestroyVM):
(JSC::VMTraps::fireTrap):
(JSC::VMTraps::handleTraps):
(JSC::VMTraps::takeTopPriorityTrap):

  • runtime/WeakMapImpl.cpp:

(JSC::WeakMapImpl<BucketType>::visitOutputConstraints):

  • runtime/WeakMapImpl.h:

(JSC::WeakMapImpl::finishCreation):

  • runtime/WeakMapImplInlines.h:

(JSC::WeakMapImpl<WeakMapBucket>::rehash):

  • runtime/WideningNumberPredictionFuzzerAgent.cpp:

(JSC::WideningNumberPredictionFuzzerAgent::getPrediction):

  • tools/CompilerTimingScope.cpp:
  • tools/FunctionOverrides.cpp:

(JSC::FunctionOverrides::FunctionOverrides):
(JSC::FunctionOverrides::reinstallOverrides):
(JSC::FunctionOverrides::initializeOverrideFor):

  • tools/Integrity.cpp:

(JSC::Integrity::Random::reloadAndCheckShouldAuditSlow):

  • tools/VMInspector.cpp:

(JSC::VMInspector::add):
(JSC::VMInspector::remove):
(JSC::VMInspector::codeBlockForMachinePC):

  • wasm/WasmBBQPlan.cpp:

(JSC::Wasm::BBQPlan::work):
(JSC::Wasm::BBQPlan::compileFunction):

  • wasm/WasmCalleeRegistry.h:

(JSC::Wasm::CalleeRegistry::registerCallee):
(JSC::Wasm::CalleeRegistry::unregisterCallee):

  • wasm/WasmCodeBlock.cpp:

(JSC::Wasm::CodeBlock::CodeBlock):
(JSC::Wasm::CodeBlock::waitUntilFinished):
(JSC::Wasm::CodeBlock::compileAsync):

  • wasm/WasmContext.cpp:

(JSC::Wasm::Context::scratchBufferForSize):

  • wasm/WasmEntryPlan.cpp:

(JSC::Wasm::EntryPlan::parseAndValidateModule):
(JSC::Wasm::EntryPlan::prepare):
(JSC::Wasm::EntryPlan::compileFunctions):

  • wasm/WasmEntryPlan.h:

(JSC::Wasm::EntryPlan::tryReserveCapacity):

  • wasm/WasmFaultSignalHandler.cpp:

(JSC::Wasm::trapHandler):

  • wasm/WasmInstance.cpp:

(JSC::Wasm::Instance::setFunctionWrapper):

  • wasm/WasmLLIntPlan.cpp:

(JSC::Wasm::LLIntPlan::compileFunction):
(JSC::Wasm::LLIntPlan::completeInStreaming):
(JSC::Wasm::LLIntPlan::didCompileFunctionInStreaming):
(JSC::Wasm::LLIntPlan::didFailInStreaming):

  • wasm/WasmMachineThreads.cpp:

(JSC::Wasm::resetInstructionCacheOnAllThreads):

  • wasm/WasmMemory.cpp:

(JSC::Wasm::Memory::growShared):

  • wasm/WasmModule.cpp:

(JSC::Wasm::Module::getOrCreateCodeBlock):

  • wasm/WasmOMGForOSREntryPlan.cpp:

(JSC::Wasm::OMGForOSREntryPlan::work):

  • wasm/WasmOMGPlan.cpp:

(JSC::Wasm::OMGPlan::work):

  • wasm/WasmOperations.cpp:

(JSC::Wasm::triggerOMGReplacementCompile):
(JSC::Wasm::JSC_DEFINE_JIT_OPERATION):

  • wasm/WasmSignatureInlines.h:

(JSC::Wasm::SignatureInformation::get):

  • wasm/WasmSlowPaths.cpp:

(JSC::LLInt::jitCompileAndSetHeuristics):
(JSC::LLInt::WASM_SLOW_PATH_DECL):

  • wasm/WasmStreamingCompiler.cpp:

(JSC::Wasm::StreamingCompiler::didCompileFunction):
(JSC::Wasm::StreamingCompiler::finalize):
(JSC::Wasm::StreamingCompiler::fail):
(JSC::Wasm::StreamingCompiler::cancel):

  • wasm/WasmStreamingPlan.cpp:

(JSC::Wasm::StreamingPlan::work):

  • wasm/WasmTable.cpp:

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

  • wasm/WasmThunks.cpp:

(JSC::Wasm::Thunks::stub):
(JSC::Wasm::Thunks::existingStub):

  • wasm/WasmWorklist.cpp:
  • wasm/js/JSWebAssemblyInstance.cpp:

(JSC::JSWebAssemblyInstance::visitChildrenImpl):

8:04 PM Changeset in webkit [277908] by Chris Dumez
  • 63 edits in trunk/Source/WebCore

Stop using holdLock() in WebCore as it is not compatible with Clang thread safety analysis
https://bugs.webkit.org/show_bug.cgi?id=226119

Reviewed by Sam Weinig.

Stop using holdLock() in WebCore as it is not compatible with Clang thread safety analysis
(WTF::CheckedLock). Use the Locker constructor directly instead.

This is a step towards getting rid of holdLock() entirely.

  • Modules/speech/SpeechRecognitionCaptureSourceImpl.cpp:

(WebCore::SpeechRecognitionCaptureSourceImpl::audioSamplesAvailable):

  • Modules/webaudio/AudioBuffer.cpp:

(WebCore::AudioBuffer::releaseMemory):
(WebCore::AudioBuffer::memoryCost const):

  • Modules/webaudio/AudioBufferSourceNode.cpp:

(WebCore::AudioBufferSourceNode::setBuffer):
(WebCore::AudioBufferSourceNode::startPlaying):

  • Modules/webaudio/AudioWorkletNode.cpp:

(WebCore::AudioWorkletNode::~AudioWorkletNode):
(WebCore::AudioWorkletNode::initializeAudioParameters):
(WebCore::AudioWorkletNode::setProcessor):

  • Modules/webaudio/ConvolverNode.cpp:

(WebCore::ConvolverNode::setBuffer):

  • Modules/webaudio/MediaElementAudioSourceNode.cpp:

(WebCore::MediaElementAudioSourceNode::setFormat):

  • Modules/webaudio/MediaStreamAudioSourceNode.cpp:

(WebCore::MediaStreamAudioSourceNode::setFormat):

  • Modules/webaudio/OscillatorNode.cpp:

(WebCore::OscillatorNode::setPeriodicWave):

  • Modules/webaudio/PannerNode.cpp:

(WebCore::PannerNode::setPanningModel):
(WebCore::PannerNode::setPosition):
(WebCore::PannerNode::setOrientation):
(WebCore::PannerNode::setDistanceModel):
(WebCore::PannerNode::setRefDistance):
(WebCore::PannerNode::setMaxDistance):
(WebCore::PannerNode::setRolloffFactor):
(WebCore::PannerNode::setConeOuterGain):
(WebCore::PannerNode::setConeOuterAngle):
(WebCore::PannerNode::setConeInnerAngle):

  • Modules/webaudio/ScriptProcessorNode.cpp:

(WebCore::ScriptProcessorNode::uninitialize):
(WebCore::ScriptProcessorNode::process):

  • Modules/webaudio/WaveShaperProcessor.cpp:

(WebCore::WaveShaperProcessor::setCurve):
(WebCore::WaveShaperProcessor::setOversample):

  • Modules/webdatabase/Database.cpp:

(WebCore::Database::performOpenAndVerify):

  • Modules/webdatabase/DatabaseManager.cpp:

(WebCore::DatabaseManager::addProposedDatabase):
(WebCore::DatabaseManager::removeProposedDatabase):
(WebCore::DatabaseManager::fullPathForDatabase):
(WebCore::DatabaseManager::detailsForNameAndOrigin):

  • Modules/webdatabase/DatabaseTracker.cpp:

(WebCore::DatabaseTracker::scheduleNotifyDatabaseChanged):
(WebCore::DatabaseTracker::notifyDatabasesChanged):

  • bindings/js/JSDOMGlobalObject.cpp:

(WebCore::JSDOMGlobalObject::visitChildrenImpl):

  • bindings/js/JSPaintWorkletGlobalScopeCustom.cpp:

(WebCore::JSPaintWorkletGlobalScope::visitAdditionalChildren):

  • css/CSSPaintImageValue.cpp:

(WebCore::CSSPaintImageValue::image):

  • css/DOMCSSPaintWorklet.cpp:

(WebCore::PaintWorklet::addModule):

  • dom/EventListenerMap.cpp:

(WebCore::EventListenerMap::clear):
(WebCore::EventListenerMap::replace):
(WebCore::EventListenerMap::add):
(WebCore::EventListenerMap::remove):
(WebCore::EventListenerMap::removeFirstEventListenerCreatedFromMarkup):

  • dom/EventTarget.cpp:

(WebCore::EventTarget::visitJSEventListeners):

  • dom/Node.cpp:

(WebCore::Node::ensureEventTargetData):
(WebCore::Node::clearEventTargetData):

  • html/CanvasBase.cpp:

(WebCore::CanvasBase::memoryCost const):
(WebCore::CanvasBase::externalMemoryCost const):
(WebCore::CanvasBase::setImageBuffer const):

  • html/HTMLCollection.cpp:

(WebCore::HTMLCollection::invalidateNamedElementCache const):

  • html/HTMLCollection.h:

(WebCore::HTMLCollection::memoryCost const):
(WebCore::HTMLCollection::setNamedItemCache const):

  • html/OffscreenCanvas.cpp:

(WebCore::OffscreenCanvas::pushBufferToPlaceholder):
(WebCore::OffscreenCanvas::commitToPlaceholderCanvas):

  • html/canvas/OESVertexArrayObject.cpp:

(WebCore::OESVertexArrayObject::deleteVertexArrayOES):
(WebCore::OESVertexArrayObject::bindVertexArrayOES):

  • html/canvas/WebGL2RenderingContext.cpp:

(WebCore::WebGL2RenderingContext::bindFramebuffer):
(WebCore::WebGL2RenderingContext::deleteFramebuffer):
(WebCore::WebGL2RenderingContext::vertexAttribIPointer):
(WebCore::WebGL2RenderingContext::deleteQuery):
(WebCore::WebGL2RenderingContext::beginQuery):
(WebCore::WebGL2RenderingContext::endQuery):
(WebCore::WebGL2RenderingContext::deleteSampler):
(WebCore::WebGL2RenderingContext::bindSampler):
(WebCore::WebGL2RenderingContext::deleteSync):
(WebCore::WebGL2RenderingContext::deleteTransformFeedback):
(WebCore::WebGL2RenderingContext::bindTransformFeedback):
(WebCore::WebGL2RenderingContext::beginTransformFeedback):
(WebCore::WebGL2RenderingContext::setIndexedBufferBinding):
(WebCore::WebGL2RenderingContext::deleteVertexArray):
(WebCore::WebGL2RenderingContext::bindVertexArray):
(WebCore::WebGL2RenderingContext::addMembersToOpaqueRoots):

  • html/canvas/WebGLContextGroup.cpp:

(WebCore::WebGLContextGroup::detachAndRemoveAllObjects):

  • html/canvas/WebGLFramebuffer.cpp:

(WebCore::WebGLFramebuffer::initializeAttachments):
(WebCore::WebGLFramebuffer::setAttachmentInternal):

  • html/canvas/WebGLObject.cpp:

(WebCore::WebGLObject::runDestructor):

  • html/canvas/WebGLRenderingContextBase.cpp:

(WebCore::WebGLRenderingContextBase::attachShader):
(WebCore::WebGLRenderingContextBase::bindBuffer):
(WebCore::WebGLRenderingContextBase::bindFramebuffer):
(WebCore::WebGLRenderingContextBase::bindRenderbuffer):
(WebCore::WebGLRenderingContextBase::bindTexture):
(WebCore::WebGLRenderingContextBase::deleteBuffer):
(WebCore::WebGLRenderingContextBase::deleteFramebuffer):
(WebCore::WebGLRenderingContextBase::deleteProgram):
(WebCore::WebGLRenderingContextBase::deleteRenderbuffer):
(WebCore::WebGLRenderingContextBase::deleteShader):
(WebCore::WebGLRenderingContextBase::deleteTexture):
(WebCore::WebGLRenderingContextBase::detachShader):
(WebCore::WebGLRenderingContextBase::useProgram):
(WebCore::WebGLRenderingContextBase::vertexAttribPointer):
(WebCore::WebGLRenderingContextBase::detachAndRemoveAllObjects):
(WebCore::WebGLRenderingContextBase::addMembersToOpaqueRoots):

  • platform/audio/ReverbConvolver.cpp:

(WebCore::ReverbConvolver::~ReverbConvolver):

  • platform/audio/cocoa/AudioDestinationCocoa.cpp:

(WebCore::AudioDestinationCocoa::start):
(WebCore::AudioDestinationCocoa::stop):
(WebCore::AudioDestinationCocoa::setIsPlaying):

  • platform/audio/gstreamer/AudioSourceProviderGStreamer.cpp:

(WebCore::AudioSourceProviderGStreamer::handleSample):
(WebCore::AudioSourceProviderGStreamer::clearAdapters):

  • platform/audio/gstreamer/WebKitWebAudioSourceGStreamer.cpp:

(webkitWebAudioSourceSetDispatchToRenderThreadFunction):

  • platform/graphics/DisplayRefreshMonitor.cpp:

(WebCore::DisplayRefreshMonitor::requestRefreshCallback):
(WebCore::DisplayRefreshMonitor::displayLinkFired):
(WebCore::DisplayRefreshMonitor::displayDidRefresh):

  • platform/graphics/FontCache.cpp:

(WebCore::FontCache::cachedFontPlatformData):
(WebCore::FontCache::fontForPlatformData):
(WebCore::FontCache::purgeInactiveFontData):
(WebCore::FontCache::inactiveFontCount):

  • platform/graphics/avfoundation/AudioSourceProviderAVFObjC.mm:

(WebCore::AudioSourceProviderAVFObjC::destroyMixIfNeeded):
(WebCore::AudioSourceProviderAVFObjC::createMixIfNeeded):
(WebCore::AudioSourceProviderAVFObjC::prepareCallback):
(WebCore::AudioSourceProviderAVFObjC::unprepareCallback):
(WebCore::AudioSourceProviderAVFObjC::processCallback):

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

(WebCore::MediaPlayerPrivateMediaStreamAVFObjC::destroyLayers):
(WebCore::MediaPlayerPrivateMediaStreamAVFObjC::rootLayerBoundsDidChange):

  • platform/graphics/cg/ColorCG.cpp:

(WebCore::cachedCGColor):

  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:

(WebCore::MediaPlayerPrivateGStreamer::hasFirstVideoSampleReachedSink const):
(WebCore::MediaPlayerPrivateGStreamer::pushTextureToCompositor):
(WebCore::MediaPlayerPrivateGStreamer::triggerRepaint):
(WebCore::MediaPlayerPrivateGStreamer::flushCurrentBuffer):
(WebCore::MediaPlayerPrivateGStreamer::paint):
(WebCore::MediaPlayerPrivateGStreamer::copyVideoTextureToPlatformTexture):
(WebCore::MediaPlayerPrivateGStreamer::waitForCDMAttachment):

  • platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp:

(webKitWebSrcConstructed):
(webKitWebSrcGetProperty):
(webKitWebSrcSetContext):
(webKitWebSrcCreate):
(webKitWebSrcMakeRequest):
(webKitWebSrcStop):
(webKitWebSrcGetSize):
(webKitWebSrcIsSeekable):
(webKitWebSrcDoSeek):
(webKitWebSrcQuery):
(webKitWebSrcUnLock):
(webKitWebSrcUnLockStop):
(webKitWebSrcSetMediaPlayer):
(webKitSrcPassedCORSAccessCheck):
(CachedResourceStreamingClient::responseReceived):
(CachedResourceStreamingClient::dataReceived):
(CachedResourceStreamingClient::accessControlCheckFailed):
(CachedResourceStreamingClient::loadFailed):
(CachedResourceStreamingClient::loadFinished):
(webKitSrcWouldTaintOrigin):

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

(isCDMProxyAvailable):
(attachCDMProxy):

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

(WebCore::MediaSourceTrackGStreamer::isReadyForMoreSamples):
(WebCore::MediaSourceTrackGStreamer::notifyWhenReadyForMoreSamples):
(WebCore::MediaSourceTrackGStreamer::enqueueObject):
(WebCore::MediaSourceTrackGStreamer::clearQueue):

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

(webKitMediaSrcActivateMode):
(webKitMediaSrcPadLinked):
(webKitMediaSrcLoop):
(webKitMediaSrcStreamFlush):

  • platform/graphics/mac/ColorMac.mm:

(WebCore::nsColor):

  • platform/graphics/nicosia/NicosiaImageBufferPipe.cpp:

(Nicosia::NicosiaImageBufferPipeSource::handle):

  • platform/ios/wak/WebCoreThread.mm:

(HandleDelegateSource):
(WebThreadAdoptAndRelease):
(WebCoreObjCDeallocOnWebThreadImpl):
(WebCoreObjCDeallocWithWebThreadLockImpl):
(HandleWebThreadReleaseSource):

  • platform/ios/wak/WebCoreThreadRun.cpp:
  • platform/mac/PublicSuffixMac.mm:

(WebCore::topPrivatelyControlledDomain):

  • platform/mediarecorder/MediaRecorderPrivateMock.cpp:

(WebCore::MediaRecorderPrivateMock::videoSampleAvailable):
(WebCore::MediaRecorderPrivateMock::audioSamplesAvailable):
(WebCore::MediaRecorderPrivateMock::fetchData):

  • platform/mediarecorder/cocoa/MediaRecorderPrivateWriterCocoa.mm:

(WebCore::MediaRecorderPrivateWriter::appendData):
(WebCore::MediaRecorderPrivateWriter::takeData):

  • platform/mediastream/RealtimeMediaSource.cpp:

(WebCore::RealtimeMediaSource::addAudioSampleObserver):
(WebCore::RealtimeMediaSource::removeAudioSampleObserver):
(WebCore::RealtimeMediaSource::addVideoSampleObserver):
(WebCore::RealtimeMediaSource::removeVideoSampleObserver):
(WebCore::RealtimeMediaSource::videoSampleAvailable):
(WebCore::RealtimeMediaSource::audioSamplesAvailable):

  • platform/mediastream/RealtimeOutgoingAudioSource.cpp:

(WebCore::RealtimeOutgoingAudioSource::~RealtimeOutgoingAudioSource):
(WebCore::RealtimeOutgoingAudioSource::AddSink):
(WebCore::RealtimeOutgoingAudioSource::RemoveSink):
(WebCore::RealtimeOutgoingAudioSource::sendAudioFrames):

  • platform/mediastream/RealtimeOutgoingVideoSource.cpp:

(WebCore::RealtimeOutgoingVideoSource::~RealtimeOutgoingVideoSource):
(WebCore::RealtimeOutgoingVideoSource::AddOrUpdateSink):
(WebCore::RealtimeOutgoingVideoSource::RemoveSink):
(WebCore::RealtimeOutgoingVideoSource::sendFrame):

  • platform/mediastream/mac/BaseAudioSharedUnit.cpp:

(WebCore::BaseAudioSharedUnit::addClient):
(WebCore::BaseAudioSharedUnit::removeClient):
(WebCore::BaseAudioSharedUnit::forEachClient const):
(WebCore::BaseAudioSharedUnit::clearClients):
(WebCore::BaseAudioSharedUnit::audioSamplesAvailable):

  • platform/mediastream/mac/WebAudioSourceProviderCocoa.mm:

(WebCore::WebAudioSourceProviderCocoa::prepare):

  • platform/network/cf/LoaderRunLoopCF.cpp:

(WebCore::loaderRunLoop):

  • platform/network/curl/CurlRequest.cpp:

(WebCore::CurlRequest::cancel):
(WebCore::CurlRequest::isCancelled):
(WebCore::CurlRequest::isCompletedOrCancelled):
(WebCore::CurlRequest::didCompleteTransfer):

  • platform/network/curl/CurlRequestScheduler.cpp:

(WebCore::CurlRequestScheduler::callOnWorkerThread):
(WebCore::CurlRequestScheduler::startThreadIfNeeded):
(WebCore::CurlRequestScheduler::stopThreadIfNoMoreJobRunning):
(WebCore::CurlRequestScheduler::stopThread):
(WebCore::CurlRequestScheduler::executeTasks):
(WebCore::CurlRequestScheduler::workerThread):
(WebCore::CurlRequestScheduler::startTransfer):
(WebCore::CurlRequestScheduler::finalizeTransfer):

  • platform/network/curl/CurlStreamScheduler.cpp:

(WebCore::CurlStreamScheduler::callOnWorkerThread):
(WebCore::CurlStreamScheduler::startThreadIfNeeded):
(WebCore::CurlStreamScheduler::stopThreadIfNoMoreJobRunning):
(WebCore::CurlStreamScheduler::executeTasks):

  • style/StyleBuilder.cpp:

(WebCore::Style::Builder::applyProperty):

  • workers/WorkerOrWorkletThread.cpp:

(WebCore::WorkerOrWorkletThread::workerOrWorkletThread):
(WebCore::WorkerOrWorkletThread::start):

  • worklets/PaintWorkletGlobalScope.cpp:

(WebCore::PaintWorkletGlobalScope::registerPaint):

  • worklets/PaintWorkletGlobalScope.h:
7:49 PM Changeset in webkit [277907] by Brent Fulgham
  • 9 edits in trunk/Source/WebKit

[Cocoa] Expand sandbox with missing sysctl-read handles for core CPU and cache features
https://bugs.webkit.org/show_bug.cgi?id=226126
<rdar://problem/78218756>

Reviewed by Per Arne Vollan.

Update our sandbox profiles to permit read access to a set of CPU and cache features that have been requested by
our sandbox and system framework teams. These have been judged to be safe to expose to our processes, and will
allow frameworks to make optimal use of the system WebKit is running on.

  • GPUProcess/mac/com.apple.WebKit.GPUProcess.sb.in:
  • NetworkProcess/mac/com.apple.WebKit.NetworkProcess.sb.in:
  • Resources/SandboxProfiles/ios/com.apple.WebKit.GPU.sb:
  • Resources/SandboxProfiles/ios/com.apple.WebKit.Networking.sb:
  • Resources/SandboxProfiles/ios/com.apple.WebKit.WebAuthn.sb:
  • Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb:
  • WebAuthnProcess/mac/com.apple.WebKit.WebAuthnProcess.sb.in:
  • WebProcess/com.apple.WebProcess.sb.in:
7:23 PM Changeset in webkit [277906] by weinig@apple.com
  • 14 edits in trunk/Source/WebKit

Make CGColorSpaceRef argument coding match other CF objects and use CGColorSpaceCreateWithPropertyList for fallback
https://bugs.webkit.org/show_bug.cgi?id=226112

Reviewed by Darin Adler.

This is a precursor to some color space type unification. This change:

  • Modernizes CF arugment coders to use ArgumentCoder specialization. It also means we now support encoding CF types both as plain types and RetainPtr<> types, with decoding being kept only supporing RetainPtr<>s, as decoding into non-smart pointer is not very useful.
  • Move CGColorSpaceRef coding to ArgumentCodersCF and use CGColorSpaceCopyPropertyList and CGColorSpaceCreateWithPropertyList as the fallback coding (if there is no name), matching what other libraries on macOS and iOS do.
  • Switch ColorSpaceData to be a struct wrapping an Optional<RetainPtr<CGColorSpaceRef>> and use the new shared coding. This will be replaced entirely in subsequent changes so I didn't want to change this too much now.
  • NetworkProcess/NetworkProcessCreationParameters.cpp:

(WebKit::NetworkProcessCreationParameters::encode const):
(WebKit::NetworkProcessCreationParameters::decode):

  • NetworkProcess/NetworkSessionCreationParameters.cpp:

(WebKit::NetworkSessionCreationParameters::encode const):
(WebKit::NetworkSessionCreationParameters::decode):

  • Shared/Cocoa/ArgumentCodersCocoa.mm:

(IPC::encodeDataInternal):
(IPC::decodeDataInternal):
(IPC::encodeDateInternal):
(IPC::decodeDateInternal):
(IPC::encodeNumberInternal):
(IPC::decodeNumberInternal):
(IPC::encodeSecureCodingInternal):
(IPC::decodeSecureCodingInternal):
(IPC::encodeStringInternal):
(IPC::decodeStringInternal):
(IPC::encodeURLInternal):
(IPC::decodeURLInternal):

  • Shared/Cocoa/WebCoreArgumentCodersCocoa.mm:

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

  • Shared/FontInfo.cpp:

(WebKit::FontInfo::encode const):
(WebKit::FontInfo::decode):

  • Shared/Plugins/PluginProcessCreationParameters.cpp:

(WebKit::PluginProcessCreationParameters::encode const):
(WebKit::PluginProcessCreationParameters::decode):

  • Shared/WebProcessCreationParameters.cpp:

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

  • Shared/cf/ArgumentCodersCF.cpp:

(IPC::typeFromCFTypeRef):
(IPC::ArgumentCoder<CFTypeRef>::encode):
(IPC::ArgumentCoder<RetainPtr<CFTypeRef>>::decode):
(IPC::ArgumentCoder<CFArrayRef>::encode):
(IPC::ArgumentCoder<RetainPtr<CFArrayRef>>::decode):
(IPC::ArgumentCoder<CFBooleanRef>::encode):
(IPC::ArgumentCoder<RetainPtr<CFBooleanRef>>::decode):
(IPC::ArgumentCoder<CFDataRef>::encode):
(IPC::ArgumentCoder<RetainPtr<CFDataRef>>::decode):
(IPC::ArgumentCoder<CFDateRef>::encode):
(IPC::ArgumentCoder<RetainPtr<CFDateRef>>::decode):
(IPC::ArgumentCoder<CFDictionaryRef>::encode):
(IPC::ArgumentCoder<RetainPtr<CFDictionaryRef>>::decode):
(IPC::ArgumentCoder<CFNumberRef>::encode):
(IPC::ArgumentCoder<RetainPtr<CFNumberRef>>::decode):
(IPC::ArgumentCoder<CFStringRef>::encode):
(IPC::ArgumentCoder<RetainPtr<CFStringRef>>::decode):
(IPC::ArgumentCoder<CFURLRef>::encode):
(IPC::ArgumentCoder<RetainPtr<CFURLRef>>::decode):
(IPC::ArgumentCoder<CGColorSpaceRef>::encode):
(IPC::ArgumentCoder<RetainPtr<CGColorSpaceRef>>::decode):
(IPC::ArgumentCoder<SecCertificateRef>::encode):
(IPC::ArgumentCoder<RetainPtr<SecCertificateRef>>::decode):
(IPC::ArgumentCoder<SecKeychainItemRef>::encode):
(IPC::ArgumentCoder<RetainPtr<SecKeychainItemRef>>::decode):
(IPC::ArgumentCoder<SecAccessControlRef>::encode):
(IPC::ArgumentCoder<RetainPtr<SecAccessControlRef>>::decode):
(IPC::ArgumentCoder<SecTrustRef>::encode):
(IPC::ArgumentCoder<RetainPtr<SecTrustRef>>::decode):
(IPC::encode): Deleted.
(IPC::decode): Deleted.

  • Shared/cf/ArgumentCodersCF.h:

(IPC::CFRetainPtrArgumentCoder::encode):

  • Shared/mac/ColorSpaceData.mm:

(WebKit::ColorSpaceData::encode const):
(WebKit::ColorSpaceData::decode):
(): Deleted.

  • Shared/mac/SecItemRequestData.cpp:

(WebKit::SecItemRequestData::encode const):
(WebKit::SecItemRequestData::decode):

  • Shared/mac/SecItemResponseData.cpp:

(WebKit::SecItemResponseData::encode const):
(WebKit::SecItemResponseData::decode):

  • Shared/mac/WebCoreArgumentCodersMac.mm:

(IPC::ArgumentCoder<WebCore::CertificateInfo>::encode):
(IPC::ArgumentCoder<WebCore::CertificateInfo>::decode):
(IPC::encodeNSError):
(IPC::decodeNSError):
(IPC::ArgumentCoder<WebCore::ContentFilterUnblockHandler>::encode):
(IPC::ArgumentCoder<WebCore::ContentFilterUnblockHandler>::decode):

7:07 PM Changeset in webkit [277905] by weinig@apple.com
  • 2 edits in trunk/Source/WebCore

All Netflix playback fails after r277740
https://bugs.webkit.org/show_bug.cgi?id=226120
<rdar://problem/78333782>

Reviewed by Eric Carlson.

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

(WebCore::CDMInstanceSessionFairPlayStreamingAVFObjC::updateLicense):
Add missing !.

6:53 PM Changeset in webkit [277904] by Chris Dumez
  • 23 edits in trunk/Source

Use CheckedCondition in more places
https://bugs.webkit.org/show_bug.cgi?id=226113

Reviewed by Darin Adler.

Use CheckedCondition in more places to benefit from Clang Thread Safety
Analysis.

Source/WebCore:

  • Modules/webdatabase/DatabaseTask.cpp:

(WebCore::DatabaseTaskSynchronizer::waitForTaskCompletion):
(WebCore::DatabaseTaskSynchronizer::taskCompleted):

  • Modules/webdatabase/DatabaseTask.h:

(WebCore::DatabaseTaskSynchronizer::WTF_GUARDED_BY_LOCK):

  • platform/audio/gstreamer/WebKitWebAudioSourceGStreamer.cpp:

(webKitWebAudioSrcRenderAndPushFrames):
(webKitWebAudioSrcRenderIteration):
(webKitWebAudioSrcChangeState):

  • platform/graphics/gstreamer/ImageDecoderGStreamer.cpp:

(WebCore::ImageDecoderGStreamer::setHasEOS):
(WebCore::ImageDecoderGStreamer::notifySample):
(WebCore::ImageDecoderGStreamer::InnerDecoder::handleMessage):
(WebCore::ImageDecoderGStreamer::InnerDecoder::preparePipeline):
(WebCore::ImageDecoderGStreamer::pushEncodedData):

  • platform/graphics/gstreamer/ImageDecoderGStreamer.h:
  • platform/graphics/gstreamer/MainThreadNotifier.h:
  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:

(WebCore::MediaPlayerPrivateGStreamer::~MediaPlayerPrivateGStreamer):
(WebCore::MediaPlayerPrivateGStreamer::pushTextureToCompositor):
(WebCore::MediaPlayerPrivateGStreamer::repaint):
(WebCore::MediaPlayerPrivateGStreamer::triggerRepaint):
(WebCore::MediaPlayerPrivateGStreamer::cancelRepaint):
(WebCore::MediaPlayerPrivateGStreamer::pushNextHolePunchBuffer):
(WebCore::MediaPlayerPrivateGStreamer::waitForCDMAttachment):
(WebCore::MediaPlayerPrivateGStreamer::cdmInstanceAttached):

  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.h:

(WebCore::MediaPlayerPrivateGStreamer::WTF_GUARDED_BY_LOCK):

  • platform/graphics/holepunch/MediaPlayerPrivateHolePunch.cpp:

(WebCore::MediaPlayerPrivateHolePunch::pushNextHolePunchBuffer):

  • platform/graphics/nicosia/NicosiaImageBufferPipe.cpp:

(Nicosia::NicosiaImageBufferPipeSource::handle):

  • platform/graphics/nicosia/texmap/NicosiaGCGLLayer.cpp:

(Nicosia::GCGLLayer::swapBuffersIfNeeded):

  • platform/graphics/texmap/TextureMapperPlatformLayerProxy.cpp:

(WebCore::TextureMapperPlatformLayerProxy::~TextureMapperPlatformLayerProxy):
(WebCore::TextureMapperPlatformLayerProxy::activateOnCompositingThread):
(WebCore::TextureMapperPlatformLayerProxy::invalidate):
(WebCore::TextureMapperPlatformLayerProxy::releaseUnusedBuffersTimerFired):
(WebCore::TextureMapperPlatformLayerProxy::swapBuffer):
(WebCore::TextureMapperPlatformLayerProxy::dropCurrentBufferWhilePreservingTexture):
(WebCore::TextureMapperPlatformLayerProxy::scheduleUpdateOnCompositorThread):
(WebCore::TextureMapperPlatformLayerProxy::compositorThreadUpdateTimerFired):

  • platform/graphics/texmap/TextureMapperPlatformLayerProxy.h:

(WebCore::TextureMapperPlatformLayerProxy::WTF_RETURNS_LOCK):
(WebCore::TextureMapperPlatformLayerProxy::WTF_GUARDED_BY_LOCK):

Source/WTF:

  • wtf/RunLoop.h:
  • wtf/SynchronizedFixedQueue.h:
  • wtf/WTFSemaphore.h:
  • wtf/WorkQueue.cpp:

(WTF::WorkQueue::concurrentApply):

  • wtf/generic/RunLoopGeneric.cpp:

(WTF::RunLoop::~RunLoop):
(WTF::RunLoop::populateTasks):
(WTF::RunLoop::runImpl):
(WTF::RunLoop::stop):
(WTF::RunLoop::wakeUpWithLock):
(WTF::RunLoop::wakeUp):
(WTF::RunLoop::schedule):
(WTF::RunLoop::scheduleAndWakeUpWithLock):
(WTF::RunLoop::TimerBase::~TimerBase):
(WTF::RunLoop::TimerBase::start):
(WTF::RunLoop::TimerBase::stop):
(WTF::RunLoop::TimerBase::isActive const):
(WTF::RunLoop::TimerBase::secondsUntilFire const):

  • wtf/win/RunLoopWin.cpp:

(WTF::RunLoop::TimerBase::timerFired):
(WTF::RunLoop::TimerBase::start):
(WTF::RunLoop::TimerBase::stop):
(WTF::RunLoop::TimerBase::isActive const):
(WTF::RunLoop::TimerBase::secondsUntilFire const):

6:33 PM Changeset in webkit [277903] by Wenson Hsieh
  • 12 edits
    2 adds in trunk/Source

[macOS] Adopt QLItem in WKImageExtractionPreviewController
https://bugs.webkit.org/show_bug.cgi?id=226114
rdar://76657718

Reviewed by Tim Horton.

Source/WebCore/PAL:

Add a PAL softlinking header for QuickLookUI on macOS.

  • PAL.xcodeproj/project.pbxproj:
  • pal/PlatformMac.cmake:
  • pal/mac/QuickLookUISoftLink.h: Added.
  • pal/mac/QuickLookUISoftLink.mm: Added.
  • pal/spi/mac/QuickLookMacSPI.h:

Add staging declarations for some new QuickLook SPI; these method declarations should be moved into the non-
internal-SDK section in the (near) future, once it is safe to do so.

Source/WebKit:

Adopt QLItem in WKImageExtractionPreviewController, and use it in place of WKImageExtractionPreviewItem.
This allows us to vend image previews based solely on image data, rather than a file on disk.

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

(-[WKImageExtractionPreviewController initWithPage:imageData:title:imageURL:]):
(-[WKImageExtractionPreviewController provideDataForItem:]):
(-[WKImageExtractionPreviewController previewPanel:previewItemAtIndex:]):
(-[WKImageExtractionPreviewItem initWithFileURL:title:imageURL:pageURL:]): Deleted.
(-[WKImageExtractionPreviewItem dealloc]): Deleted.
(-[WKImageExtractionPreviewItem previewItemURL]): Deleted.
(-[WKImageExtractionPreviewItem previewItemTitle]): Deleted.
(-[WKImageExtractionPreviewItem previewOptions]): Deleted.
(-[WKImageExtractionPreviewController initWithPage:fileURL:title:imageURL:]): Deleted.

  • UIProcess/mac/WKImmediateActionController.mm:

(-[WKImmediateActionController willDestroyView:]):

Adopt the new QuickLookUI softlinking header in PAL.

Source/WebKitLegacy/mac:

Adopt the new QuickLookUI softlinking header in PAL.

  • WebView/WebImmediateActionController.mm:

(-[WebImmediateActionController webViewClosed]):

Source/WTF:

Introduce SOFT_LINK_FRAMEWORK_IN_UMBRELLA_FOR_SOURCE_WITH_EXPORT, so that we can soft link frameworks that are
embedded inside other umbrella frameworks in PAL.

  • wtf/cocoa/SoftLinking.h:
5:46 PM Changeset in webkit [277902] by mark.lam@apple.com
  • 4 edits in trunk/Source/JavaScriptCore

Remove the unnecessary use of CompileOpStrictEqType.
https://bugs.webkit.org/show_bug.cgi?id=226121

Reviewed by Saam Barati and Robin Morisset.

We're already emitting template code. Might as well make the relevant condition
checks a build time check on the opcode type the template is specializing on
instead of a runtime check on a passed in CompileOpStrictEqType.

  • jit/JIT.h:
  • jit/JITOpcodes.cpp:

(JSC::JIT::compileOpStrictEq):
(JSC::JIT::emit_op_stricteq):
(JSC::JIT::emit_op_nstricteq):
(JSC::JIT::compileOpStrictEqJump):
(JSC::JIT::emit_op_jstricteq):
(JSC::JIT::emit_op_jnstricteq):

  • jit/JITOpcodes32_64.cpp:

(JSC::JIT::compileOpStrictEq):
(JSC::JIT::emit_op_stricteq):
(JSC::JIT::emit_op_nstricteq):
(JSC::JIT::compileOpStrictEqJump):
(JSC::JIT::emit_op_jstricteq):
(JSC::JIT::emit_op_jnstricteq):

5:13 PM Changeset in webkit [277901] by Dewei Zhu
  • 2 edits in trunk/Websites/perf.webkit.org

Fix a bug that incorrect timestamp is reported for Git repositories.
https://bugs.webkit.org/show_bug.cgi?id=225987

Reviewed by Ryosuke Niwa.

'datetime.fromtimestamp' will use the current timezone.
However, '/api/report-commits' will interprete it as a timestamp string from UTC.
In order to keep the consistency, we should always use 'datetime.utcfromtimestamp'.

  • tools/sync-commits.py: Use 'datetime.utcfromtimestamp' instead of 'datetime.fromtimestamp'.

(GitRepository._revision_from_tokens):

5:11 PM Changeset in webkit [277900] by Chris Dumez
  • 23 edits in trunk/Source/WTF

Stop using holdLock() in WTF as it is not compatible with Clang thread safety analysis
https://bugs.webkit.org/show_bug.cgi?id=226117

Reviewed by Darin Adler.

Stop using holdLock() in WTF as it is not compatible with Clang thread safety analysis
(WTF::CheckedLock) and use the Locker constructor instead.

This is a step towards getting rid of holdLock() completely.

  • benchmarks/ConditionSpeedTest.cpp:
  • wtf/ConcurrentPtrHashSet.cpp:

(WTF::ConcurrentPtrHashSet::deleteOldTables):
(WTF::ConcurrentPtrHashSet::clear):
(WTF::ConcurrentPtrHashSet::containsImplSlow const):
(WTF::ConcurrentPtrHashSet::sizeSlow const):
(WTF::ConcurrentPtrHashSet::resizeIfNecessary):

  • wtf/CountingLock.h:
  • wtf/HashTable.cpp:

(WTF::HashTableStats::recordCollisionAtCount):
(WTF::HashTableStats::dumpStats):

  • wtf/HashTable.h:

(WTF::invalidateIterators):
(WTF::addIterator):
(WTF::removeIterator):

  • wtf/LockedPrintStream.cpp:

(WTF::LockedPrintStream::vprintf):
(WTF::LockedPrintStream::flush):

  • wtf/MetaAllocator.cpp:

(WTF::MetaAllocatorHandle::~MetaAllocatorHandle):

  • wtf/MetaAllocator.h:

(WTF::MetaAllocator::allocate):
(WTF::MetaAllocator::currentStatistics):

  • wtf/ReadWriteLock.h:
  • wtf/StackShotProfiler.h:

(WTF::StackShotProfiler::profile):
(WTF::StackShotProfiler::run):

  • wtf/StackStats.cpp:

(WTF::StackStats::CheckPoint::CheckPoint):
(WTF::StackStats::CheckPoint::~CheckPoint):
(WTF::StackStats::probe):
(WTF::StackStats::LayoutCheckPoint::LayoutCheckPoint):
(WTF::StackStats::LayoutCheckPoint::~LayoutCheckPoint):

  • wtf/ThreadGroup.cpp:

(WTF::ThreadGroup::~ThreadGroup):
(WTF::ThreadGroup::add):

  • wtf/ThreadMessage.cpp:

(WTF::sendMessageScoped):

  • wtf/Threading.cpp:

(WTF::Thread::didExit):
(WTF::Thread::addToThreadGroup):
(WTF::Thread::removeFromThreadGroup):
(WTF::Thread::numberOfThreadGroups):

  • wtf/TimingScope.cpp:
  • wtf/WTFConfig.cpp:

(WTF::Config::permanentlyFreeze):

  • wtf/WTFSemaphore.h:
  • wtf/posix/ThreadingPOSIX.cpp:

(WTF::Thread::changePriority):
(WTF::Thread::waitForCompletion):
(WTF::Thread::detach):
(WTF::Thread::signal):
(WTF::Thread::establishPlatformSpecificHandle):

  • wtf/threads/BinarySemaphore.cpp:

(WTF::BinarySemaphore::signal):
(WTF::BinarySemaphore::waitUntil):

  • wtf/threads/Signals.cpp:

(WTF::SignalHandlers::add):
(WTF::registerThreadForMachExceptionHandling):
(WTF::activateSignalHandlersFor):

  • wtf/win/LanguageWin.cpp:

(WTF::platformLanguage):

  • wtf/win/ThreadingWin.cpp:

(WTF::Thread::changePriority):
(WTF::Thread::waitForCompletion):
(WTF::Thread::detach):
(WTF::Thread::establishPlatformSpecificHandle):

5:07 PM Changeset in webkit [277899] by Russell Epstein
  • 8 edits in branches/safari-612.1.15.0-branch/Source

Versioning.

WebKit-7612.1.15.0.5

4:36 PM Changeset in webkit [277898] by msaboff@apple.com
  • 13 edits in trunk/Source/bmalloc

[bmalloc] Rollout r276266 because WebKit processes are spending much more time in madvise
https://bugs.webkit.org/show_bug.cgi?id=226122

Unreviewed rollout.

Rolling out r276266 to do some automated testing. At the same time, we'll work on changing the madvise() decommitting to be more precise.

  • bmalloc/BPlatform.h:
  • bmalloc/Heap.cpp:

(bmalloc::Heap::scavenge):
(bmalloc::Heap::scavengeToHighWatermark):
(bmalloc::Heap::allocateSmallChunk):
(bmalloc::Heap::allocateSmallPage):
(bmalloc::Heap::allocateLarge):

  • bmalloc/Heap.h:
  • bmalloc/IsoDirectory.h:
  • bmalloc/IsoDirectoryInlines.h:

(bmalloc::passedNumPages>::takeFirstEligible):
(bmalloc::passedNumPages>::scavenge):
(bmalloc::passedNumPages>::scavengeToHighWatermark):

  • bmalloc/IsoHeapImpl.h:
  • bmalloc/IsoHeapImplInlines.h:

(bmalloc::IsoHeapImpl<Config>::scavengeToHighWatermark):

  • bmalloc/LargeMap.cpp:

(bmalloc::LargeMap::add):

  • bmalloc/LargeRange.h:

(bmalloc::LargeRange::LargeRange):
(bmalloc::merge):

  • bmalloc/Scavenger.cpp:

(bmalloc::Scavenger::Scavenger):
(bmalloc::Scavenger::timeSinceLastPartialScavenge):
(bmalloc::Scavenger::scavenge):
(bmalloc::Scavenger::partialScavenge):
(bmalloc::Scavenger::threadRunLoop):

  • bmalloc/Scavenger.h:
  • bmalloc/SmallPage.h:
4:09 PM Changeset in webkit [277897] by Russell Epstein
  • 1 copy in tags/Safari-612.1.15.0.4

Tag Safari-612.1.15.0.4.

4:04 PM Changeset in webkit [277896] by Diego Pino Garcia
  • 4 edits in trunk

Set CanvasImageSmoothing.imageSmoothingQuality value to 'low' as default
https://bugs.webkit.org/show_bug.cgi?id=225952

Reviewed by Sam Weinig.

Source/WebCore:

Covered by existing tests:

  • inspector/canvas/recording-2d-frameCount.html
  • inspector/canvas/recording-2d-full.html
  • inspector/canvas/recording-2d-memoryLimit.html
  • inspector/canvas/recording-2d-saves.html
  • inspector/canvas/recording-html-2d.html
  • html/canvas/CanvasRenderingContext2DBase.cpp:

LayoutTests:

Defined by spec:
https://html.spec.whatwg.org/multipage/canvas.html#canvasimagesmoothing

  • platform/gtk/TestExpectations:
3:46 PM Changeset in webkit [277895] by Ruben Turcios
  • 1 copy in tags/Safari-612.1.15.1.8

Tag Safari-612.1.15.1.8.

3:33 PM Changeset in webkit [277894] by Brent Fulgham
  • 3 edits in trunk/Source/WebKit

[Cocoa] Expand IOKit method filters to cover items encountered during testing
https://bugs.webkit.org/show_bug.cgi?id=226106
<rdar://problem/78327511>

Reviewed by Per Arne Vollan.

Allow additional IOKit methods based on testing results and the method values we hit during normal operations.

  • Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb:
  • WebProcess/com.apple.WebProcess.sb.in:
3:17 PM Changeset in webkit [277893] by Chris Dumez
  • 6 edits in trunk/Source/WebCore

Adopt CheckedLock in ScrollingTree and fix threading bug
https://bugs.webkit.org/show_bug.cgi?id=226109

Reviewed by Darin Adler.

Adopt CheckedLock in ScrollingTree and fix threading bug found by Clang Thread Safety
Analysis. In particular, ThreadedScrollingTree::willStartRenderingUpdate() was failing
to grab the lock before updating m_state. m_state definitely get modified from several
threads so synchronization is important.

  • page/scrolling/ScrollingTree.cpp:

(WebCore::ScrollingTree::handleWheelEvent):
(WebCore::ScrollingTree::traverseScrollingTree):
(WebCore::ScrollingTree::commitTreeState):
(WebCore::ScrollingTree::applyLayerPositions):
(WebCore::ScrollingTree::applyLayerPositionsInternal):
(WebCore::ScrollingTree::scrollBySimulatingWheelEventForTesting):

  • page/scrolling/ScrollingTree.h:

(WebCore::ScrollingTree::WTF_RETURNS_LOCK):
(WebCore::ScrollingTree::WTF_REQUIRES_LOCK):

  • page/scrolling/ThreadedScrollingTree.cpp:

(WebCore::ThreadedScrollingTree::ThreadedScrollingTree):
(WebCore::ThreadedScrollingTree::handleWheelEventAfterMainThread):
(WebCore::ThreadedScrollingTree::wheelEventWasProcessedByMainThread):
(WebCore::ThreadedScrollingTree::willSendEventToMainThread):
(WebCore::ThreadedScrollingTree::waitForEventToBeProcessedByMainThread):
(WebCore::ThreadedScrollingTree::invalidate):
(WebCore::ThreadedScrollingTree::willStartRenderingUpdate):
(WebCore::ThreadedScrollingTree::waitForRenderingUpdateCompletionOrTimeout):
(WebCore::ThreadedScrollingTree::didCompleteRenderingUpdate):
(WebCore::ThreadedScrollingTree::scheduleDelayedRenderingUpdateDetectionTimer):
(WebCore::ThreadedScrollingTree::delayedRenderingUpdateDetectionTimerFired):
(WebCore::ThreadedScrollingTree::displayDidRefreshOnScrollingThread):

  • page/scrolling/ThreadedScrollingTree.h:

(WebCore::ThreadedScrollingTree::WTF_RETURNS_LOCK):
(WebCore::ThreadedScrollingTree::WTF_GUARDED_BY_LOCK):

  • page/scrolling/mac/ScrollingTreeScrollingNodeDelegateMac.mm:

(WebCore::ScrollingTreeScrollingNodeDelegateMac::createTimer):

3:14 PM Changeset in webkit [277892] by Chris Dumez
  • 2 edits in trunk/Source/WebKit

Adopt CheckedLock in RemoteImageBufferProxy
https://bugs.webkit.org/show_bug.cgi?id=226098

Reviewed by Tim Horton.

Adopt CheckedLock in RemoteImageBufferProxy to benefit from Clang Thread Safety Analysis.
I had to use WTF_IGNORES_THREAD_SAFETY_ANALYSIS on one of the getter where we weren't
locking. My understanding is that the code is currently safe without the lock in this
case and I added a comment and assertions to clarify that.

  • WebProcess/GPU/graphics/RemoteImageBufferProxy.h:

(WebKit::RemoteImageBufferProxy::waitForDidFlushOnSecondaryThread):

2:39 PM Changeset in webkit [277891] by Ruben Turcios
  • 8 edits in branches/safari-612.1.15.1-branch/Source

Versioning.

WebKit-7612.1.15.1.8

2:29 PM Changeset in webkit [277890] by Chris Dumez
  • 3 edits in trunk/Source/WebKitLegacy

Adopt CheckedLock in StorageAreaSync
https://bugs.webkit.org/show_bug.cgi?id=226099

Reviewed by Sam Weinig.

Adopt CheckedLock in StorageAreaSync to benefit from Clang Thread Safety Analysis.

  • Storage/StorageAreaSync.cpp:

(WebKit::StorageAreaSync::markImported):
(WebKit::StorageAreaSync::blockUntilImportComplete):

  • Storage/StorageAreaSync.h:
2:28 PM Changeset in webkit [277889] by Chris Dumez
  • 3 edits in trunk/Source/WebCore

Adopt CheckedLock in AudioMediaStreamTrackRendererUnit
https://bugs.webkit.org/show_bug.cgi?id=226095

Reviewed by Eric Carlson.

Adopt CheckedLock in AudioMediaStreamTrackRendererUnit to benefit from Clang Thread Safety
Analysis. Also rename variables for clarity and fixes a bug where we failed to grab the
lock before checking m_shouldUpdateRenderSources on the render thread (even though the
variable gets updated on the main thread).

  • platform/mediastream/cocoa/AudioMediaStreamTrackRendererUnit.cpp:

(WebCore::AudioMediaStreamTrackRendererUnit::addSource):
(WebCore::AudioMediaStreamTrackRendererUnit::removeSource):
(WebCore::AudioMediaStreamTrackRendererUnit::updateRenderSourcesIfNecessary):
(WebCore::AudioMediaStreamTrackRendererUnit::render):

  • platform/mediastream/cocoa/AudioMediaStreamTrackRendererUnit.h:

(WebCore::AudioMediaStreamTrackRendererUnit::WTF_GUARDED_BY_LOCK):
(): Deleted.

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

Adopt CheckedLock in NetworkCache::Storage::TraverseOperation
https://bugs.webkit.org/show_bug.cgi?id=226101

Reviewed by Darin Adler.

Adopt CheckedLock in NetworkCache::Storage::TraverseOperation to benefit from Clang
Thread Safety Analysis.

  • NetworkProcess/cache/NetworkCacheStorage.cpp:

(WebKit::NetworkCache::Storage::TraverseOperation::WTF_GUARDED_BY_LOCK):
(WebKit::NetworkCache::Storage::traverse):

2:15 PM Changeset in webkit [277887] by Chris Dumez
  • 3 edits in trunk/Source/WebCore

Adopt CheckedLock / CheckedCondition in CDMProxy
https://bugs.webkit.org/show_bug.cgi?id=226103

Reviewed by Darin Adler.

Adopt CheckedLock / CheckedCondition in CDMProxy to benefit from Clang Thread Safety
Analysis.

  • platform/encryptedmedia/CDMProxy.cpp:

(WebCore::CDMProxy::updateKeyStore):
(WebCore::CDMProxy::keyHandle const):
(WebCore::CDMProxy::tryWaitForKeyHandle const):
(WebCore::CDMProxy::keyAvailable const):

  • platform/encryptedmedia/CDMProxy.h:
2:12 PM Changeset in webkit [277886] by Peng Liu
  • 2 edits in trunk/Source/WebCore

Video player enters a bad state after trying to enter picture-in-picture on YouTube.com videos
https://bugs.webkit.org/show_bug.cgi?id=226042

Reviewed by Daniel Bates.

The quirk shouldDisableEndFullscreenEventWhenEnteringPictureInPictureFromFull was
always true. This patch fixes that.

  • page/Quirks.cpp:

(WebCore::Quirks::shouldDisableEndFullscreenEventWhenEnteringPictureInPictureFromFullscreenQuirk const):

2:04 PM Changeset in webkit [277885] by Chris Dumez
  • 3 edits in trunk/Source/WebKit

Adopt CheckedLock in MediaFormatReader and fix threading bug
https://bugs.webkit.org/show_bug.cgi?id=226100

Reviewed by Darin Adler.

Adopt CheckedLock in MediaFormatReader and fix threading bug found by Clang Thread Safety
Analysis. In particular, parseByteSource() was failing to grab the lock before updating
m_parseTracksStatus in one of its branches.

  • Shared/mac/MediaFormatReader/MediaFormatReader.cpp:

(WebKit::MediaFormatReader::parseByteSource):
(WebKit::MediaFormatReader::didParseTracks):
(WebKit::MediaFormatReader::didProvideMediaData):
(WebKit::MediaFormatReader::finishParsing):
(WebKit::MediaFormatReader::copyProperty):
(WebKit::MediaFormatReader::copyTrackArray):

  • Shared/mac/MediaFormatReader/MediaFormatReader.h:
1:58 PM Changeset in webkit [277884] by aakash_jain@apple.com
  • 5 edits in trunk/Tools

Run layout tests in stress mode for 10 iterations on regular EWS layout-test queues
https://bugs.webkit.org/show_bug.cgi?id=226097

Reviewed by Jonathan Bedard.

  • CISupport/ews-build/factories.py:
  • CISupport/ews-build/factories_unittest.py:
  • CISupport/ews-build/steps.py:

(AnalyzePatch.getResultSummary):
(FindModifiedLayoutTests.init):
(FindModifiedLayoutTests.start):
(RunWebKitTestsInStressMode):
(RunWebKitTestsInStressMode.init):
(RunWebKitTestsInStressMode.setLayoutTestCommand):
(RunWebKitTestsInStressMode.doStepIf):

  • CISupport/ews-build/steps_unittest.py:
1:48 PM Changeset in webkit [277883] by Russell Epstein
  • 1 copy in tags/Safari-611.3.5

Tag Safari-611.3.5.

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

Introducing JITThunks::preinitializeCTIThunks().
https://bugs.webkit.org/show_bug.cgi?id=226105

Reviewed by Geoffrey Garen.

We're basically renaming JITThunks::preinitializeExtraCTIThunks() to
JITThunks::preinitializeCTIThunks() and making it not conditional on
#if ENABLE(EXTRA_CTI_THUNKS). Some thunks need to be initialized independent of
#if ENABLE(EXTRA_CTI_THUNKS).

  • jit/JITThunks.cpp:

(JSC::JITThunks::preinitializeCTIThunks):
(JSC::JITThunks::preinitializeExtraCTIThunks): Deleted.

  • jit/JITThunks.h:
  • runtime/VM.cpp:

(JSC::VM::VM):

1:20 PM Changeset in webkit [277881] by Chris Dumez
  • 5 edits in trunk/Source

[Cocoa] Unable to upload files that are stored in the cloud (without a local copy)
https://bugs.webkit.org/show_bug.cgi?id=226090
<rdar://77775887>

Reviewed by Darin Adler.

Source/WebKit:

Allow the network process to load / read dataless files stored in the cloud by allowing
the process to materialize such files. I initially only allowed the AsyncFileStream
thread to materialize the dataless files and this was enough to make the file upload
use cases work. However, I noticed that drag and dropping such file in the Safari URL
bar would fail loading, which I think is bad user experience. As a result, I have
decided to allow the materializing at network process level.

I have verified manually that I can now upload such dataless files via either file
picker or drag and drop (used https://blueimp.github.io/jQuery-File-Upload/). I have
also verified that drag and dropping such a file in the Safari URL bar successfuly
loads that file.

  • NetworkProcess/cocoa/NetworkProcessCocoa.mm:

(WebKit::NetworkProcess::platformInitializeNetworkProcessCocoa):

Source/WTF:

Add FileSystem API to allow/disallow the materializing of dataless files stored
in the cloud, at process or thread level.

  • wtf/FileSystem.h:
  • wtf/cocoa/FileSystemCocoa.mm:

(WTF::FileSystemImpl::toIOPolicyScope):
(WTF::FileSystemImpl::setAllowsMaterializingDatalessFiles):
(WTF::FileSystemImpl::allowsMaterializingDatalessFiles):

1:19 PM Changeset in webkit [277880] by Chris Dumez
  • 52 edits in trunk/Source

Replace more static Locks with CheckedLocks in WTF / WebCore
https://bugs.webkit.org/show_bug.cgi?id=226040

Reviewed by Darin Adler.

Replace more static Locks with CheckedLocks so that we can benefit from Clang Thread Safety Analysis.

Source/WebCore:

  • Modules/indexeddb/server/IDBSerializationContext.cpp:

(WebCore::IDBServer::IDBSerializationContext::getOrCreateForCurrentThread):
(WebCore::IDBServer::IDBSerializationContext::~IDBSerializationContext):

  • Modules/mediastream/RTCDataChannel.cpp:

(WebCore::WTF_REQUIRES_LOCK):
(WebCore::RTCDataChannel::detach):
(WebCore::RTCDataChannel::removeFromDataChannelLocalMapIfNeeded):
(WebCore::RTCDataChannel::handlerFromIdentifier):

  • Modules/webdatabase/Database.cpp:

(WebCore::WTF_REQUIRES_LOCK):
(WebCore::Database::Database):
(WebCore::Database::performOpenAndVerify):
(WebCore::Database::closeDatabase):
(WebCore::Database::getCachedVersion const):
(WebCore::Database::setCachedVersion):

  • Modules/webgpu/WebGPUDevice.cpp:

(WebCore::WebGPUDevice::instancesLock):
(WebCore::WebGPUDevice::~WebGPUDevice):

  • Modules/webgpu/WebGPUDevice.h:
  • Modules/webgpu/WebGPUPipeline.cpp:

(WebCore::WebGPUPipeline::instancesLock):
(WebCore::WebGPUPipeline::WebGPUPipeline):
(WebCore::WebGPUPipeline::~WebGPUPipeline):

  • Modules/webgpu/WebGPUPipeline.h:
  • Modules/websockets/WebSocket.cpp:

(WebCore::WebSocket::WebSocket):
(WebCore::WebSocket::~WebSocket):
(WebCore::WebSocket::allActiveWebSocketsLock):

  • Modules/websockets/WebSocket.h:
  • bridge/objc/WebScriptObject.mm:

(WebCore::getJSWrapper):
(WebCore::addJSWrapper):
(WebCore::removeJSWrapper):
(WebCore::removeJSWrapperIfRetainCountOne):

  • crypto/CryptoAlgorithmRegistry.cpp:

(WebCore::CryptoAlgorithmRegistry::singleton):
(WebCore::CryptoAlgorithmRegistry::identifier):
(WebCore::CryptoAlgorithmRegistry::name):
(WebCore::CryptoAlgorithmRegistry::create):
(WebCore::CryptoAlgorithmRegistry::registerAlgorithm):

  • crypto/CryptoAlgorithmRegistry.h:
  • dom/MessagePort.cpp:

(WebCore::MessagePort::deref const):
(WebCore::MessagePort::isExistingMessagePortLocallyReachable):
(WebCore::MessagePort::notifyMessageAvailable):
(WebCore::MessagePort::MessagePort):

  • dom/ScriptExecutionContext.cpp:

(WebCore::ScriptExecutionContext::contextIdentifier const):
(WebCore::ScriptExecutionContext::removeFromContextsMap):
(WebCore::ScriptExecutionContext::~ScriptExecutionContext):
(WebCore::ScriptExecutionContext::postTaskTo):

  • html/canvas/CanvasRenderingContext.cpp:

(WebCore::CanvasRenderingContext::instancesLock):
(WebCore::CanvasRenderingContext::CanvasRenderingContext):
(WebCore::CanvasRenderingContext::~CanvasRenderingContext):

  • html/canvas/CanvasRenderingContext.h:
  • html/canvas/WebGLProgram.cpp:

(WebCore::WebGLProgram::instancesLock):
(WebCore::WebGLProgram::WebGLProgram):
(WebCore::WebGLProgram::~WebGLProgram):

  • html/canvas/WebGLProgram.h:
  • html/canvas/WebGLRenderingContextBase.cpp:

(WebCore::WebGLRenderingContextBase::~WebGLRenderingContextBase):

  • inspector/InspectorCanvas.cpp:

(WebCore::InspectorCanvas::canvasElement const):
(WebCore:: const):

  • inspector/agents/InspectorCanvasAgent.cpp:

(WebCore::InspectorCanvasAgent::enable):

  • inspector/agents/InspectorNetworkAgent.cpp:

(WebCore::InspectorNetworkAgent::enable):
(WebCore::InspectorNetworkAgent::webSocketForRequestId):

  • inspector/agents/InspectorNetworkAgent.h:
  • inspector/agents/page/PageNetworkAgent.cpp:
  • inspector/agents/page/PageNetworkAgent.h:
  • inspector/agents/worker/WorkerNetworkAgent.cpp:
  • inspector/agents/worker/WorkerNetworkAgent.h:
  • page/SecurityPolicy.cpp:

(WebCore::WTF_REQUIRES_LOCK):
(WebCore::SecurityPolicy::isAccessAllowed):
(WebCore::SecurityPolicy::addOriginAccessAllowlistEntry):
(WebCore::SecurityPolicy::removeOriginAccessAllowlistEntry):
(WebCore::SecurityPolicy::resetOriginAccessAllowlists):
(WebCore::SecurityPolicy::allowAccessTo):

  • page/cocoa/ResourceUsageThreadCocoa.mm:

(WebCore::ResourceUsageThread::platformCollectCPUData):

  • page/linux/ResourceUsageThreadLinux.cpp:

(WebCore::ResourceUsageThread::platformCollectCPUData):

  • platform/GenericTaskQueue.cpp:

(WebCore::TaskDispatcher<Timer>::postTask):
(WebCore::TaskDispatcher<Timer>::sharedTimerFired):
(WebCore::TaskDispatcher<Timer>::pendingDispatchers):
(WebCore::TaskDispatcher<Timer>::dispatchOneTask):

  • platform/GenericTaskQueue.h:
  • platform/LegacySchemeRegistry.cpp:

(WebCore::allBuiltinSchemes):
(WebCore::WTF_REQUIRES_LOCK):
(WebCore::LegacySchemeRegistry::registerURLSchemeAsLocal):
(WebCore::LegacySchemeRegistry::removeURLSchemeRegisteredAsLocal):
(WebCore::LegacySchemeRegistry::registerURLSchemeAsHandledBySchemeHandler):
(WebCore::LegacySchemeRegistry::schemeIsHandledBySchemeHandler):
(WebCore::LegacySchemeRegistry::shouldTreatURLSchemeAsLocal):
(WebCore::LegacySchemeRegistry::registerURLSchemeAsNoAccess):
(WebCore::LegacySchemeRegistry::shouldTreatURLSchemeAsNoAccess):
(WebCore::LegacySchemeRegistry::registerURLSchemeAsDisplayIsolated):
(WebCore::LegacySchemeRegistry::shouldTreatURLSchemeAsDisplayIsolated):
(WebCore::LegacySchemeRegistry::registerURLSchemeAsSecure):
(WebCore::LegacySchemeRegistry::shouldTreatURLSchemeAsSecure):
(WebCore::LegacySchemeRegistry::canDisplayOnlyIfCanRequest):
(WebCore::LegacySchemeRegistry::registerAsCanDisplayOnlyIfCanRequest):
(WebCore::LegacySchemeRegistry::registerURLSchemeAsBypassingContentSecurityPolicy):
(WebCore::LegacySchemeRegistry::removeURLSchemeRegisteredAsBypassingContentSecurityPolicy):
(WebCore::LegacySchemeRegistry::schemeShouldBypassContentSecurityPolicy):
(WebCore::LegacySchemeRegistry::registerURLSchemeAsCachePartitioned):
(WebCore::LegacySchemeRegistry::shouldPartitionCacheForURLScheme):

  • platform/audio/mac/FFTFrameMac.cpp:

(WebCore::WTF_REQUIRES_LOCK):
(WebCore::FFTFrame::fftSetupForSize):

  • platform/graphics/MediaPlayer.cpp:

(WebCore::WTF_REQUIRES_LOCK):
(WebCore::installedMediaEngines):
(WebCore::MediaPlayer::resetMediaEngines):

  • platform/ios/QuickLook.mm:

(WebCore::WTF_REQUIRES_LOCK):
(WebCore::removeQLPreviewConverterForURL):
(WebCore::addQLPreviewConverterWithFileForURL):

  • platform/ios/WebSQLiteDatabaseTrackerClient.mm:

(WTF_REQUIRES_LOCK):
(+[WebDatabaseTransactionBackgroundTaskController startBackgroundTask]):
(+[WebDatabaseTransactionBackgroundTaskController endBackgroundTask]):

  • platform/network/mac/UTIUtilities.mm:

(WebCore::WTF_REQUIRES_LOCK):
(WebCore::UTIFromMIMEType):

  • platform/sql/SQLiteDatabase.cpp:

(WebCore::WTF_GUARDED_BY_LOCK):
(WebCore::SQLiteDatabase::setIsDatabaseOpeningForbidden):
(WebCore::SQLiteDatabase::open):

  • platform/sql/SQLiteDatabaseTracker.cpp:

(WebCore::SQLiteDatabaseTracker::WTF_GUARDED_BY_LOCK):
(WebCore::SQLiteDatabaseTracker::setClient):
(WebCore::SQLiteDatabaseTracker::incrementTransactionInProgressCount):
(WebCore::SQLiteDatabaseTracker::decrementTransactionInProgressCount):
(WebCore::SQLiteDatabaseTracker::hasTransactionInProgress):

  • platform/text/TextEncodingRegistry.cpp:

(WebCore::WTF_REQUIRES_LOCK):
(WebCore::newTextCodec):
(WebCore::atomCanonicalTextEncodingName):

  • workers/WorkerGlobalScope.cpp:

(WebCore::WTF_REQUIRES_LOCK):
(WebCore::WorkerGlobalScope::WorkerGlobalScope):
(WebCore::WorkerGlobalScope::~WorkerGlobalScope):
(WebCore::WorkerGlobalScope::releaseMemoryInWorkers):

  • workers/WorkerOrWorkletThread.cpp:

(WebCore::WorkerOrWorkletThread::workerOrWorkletThreadsLock):
(WebCore::WorkerOrWorkletThread::WorkerOrWorkletThread):
(WebCore::WorkerOrWorkletThread::~WorkerOrWorkletThread):
(WebCore::WorkerOrWorkletThread::releaseFastMallocFreeMemoryInAllThreads):

  • workers/WorkerOrWorkletThread.h:

Source/WTF:

  • wtf/Threading.cpp:

(WTF::Thread::allThreadsLock):
(WTF::Thread::create):
(WTF::Thread::didExit):

  • wtf/Threading.h:
  • wtf/URL.cpp:

(WTF::WTF_REQUIRES_LOCK):
(WTF::registerDefaultPortForProtocolForTesting):
(WTF::clearDefaultPortForProtocolMapForTesting):
(WTF::defaultPortForProtocol):

  • wtf/cf/LanguageCF.cpp:

(WTF::WTF_REQUIRES_LOCK):
(WTF::platformLanguageDidChange):
(WTF::platformUserPreferredLanguages):

  • wtf/text/StringView.cpp:

(WTF::StringView::invalidate):
(WTF::StringView::adoptUnderlyingString):
(WTF::StringView::setUnderlyingString):

  • wtf/unicode/icu/CollatorICU.cpp:

(WTF::Collator::Collator):
(WTF::Collator::~Collator):

1:19 PM Changeset in webkit [277879] by Brent Fulgham
  • 4 edits in trunk/Source/WebKit

[Cocoa] GPU Process should recognize that pathForProcessContainer() might fail and handle it gracefully
https://bugs.webkit.org/show_bug.cgi?id=226086
<rdar://problem/78288016>

Reviewed by Tim Horton.

The GPU Process implementation of gpuProcessCachesDirectory does not recognize that WebKit often runs without
a container (e.g., as part of a daemon process). In such cases, the GPU process will attempt to create a
cache directory someplace outside of its sandbox and fail, preventing caching from happening.

We need to use the same logic we use in the WebContent process to address this use case.

To avoid making this mistake again, let's consolidate the logic in one method, and use it in the multiple places
that have this same code.

  • UIProcess/Cocoa/WebProcessPoolCocoa.mm:

(WebKit::WebProcessPool::cacheDirectoryInContainerOrHomeDirectory): Added.
(WebKit::WebProcessPool::cookieStorageDirectory): Use the new 'cacheDirectoryInContainerOrHomeDirectory' method.
(WebKit::WebProcessPool::networkingCachesDirectory): Ditto.
(WebKit::WebProcessPool::webContentCachesDirectory): Ditto.

  • UIProcess/GPU/GPUProcessProxy.cpp:

(WebKit::gpuProcessCachesDirectory): Ditto.

  • UIProcess/WebProcessPool.h:
1:17 PM Changeset in webkit [277878] by Fujii Hironori
  • 6 edits in trunk/Source/WebCore

ASSERTION FAILED: m_imageBufferResult->colorSpace() == m_resultColorSpace in FilterEffect::copyPremultipliedResult
https://bugs.webkit.org/show_bug.cgi?id=225907

Reviewed by Said Abou-Hallawa.

FilterEffect::copyPremultipliedResult has the assertion ensuring
m_imageBufferResult->colorSpace() matches m_resultColorSpace.
However, it happened to fail in !USE(CG) ports.

FilterEffect::transformResultColorSpace does nothing if USE(CG),
but it calls ImageBuffer::transformColorSpace otherwise.

ImageBuffer::colorSpace() and ImageBufferBackend::colorSpace()
returned the old color space after ImageBuffer::transformColorSpace.
They should return the new color space.

After fixing the above problem, an assertion in
WebCore::convertImagePixels was going to fail. It asserts no color
space conversion happens.

FEColorMatrix, FEDropShadow and
ImageBufferBackend::convertToLuminanceMask were explicitly
specifying DestinationColorSpace::SRGB to getPixelBuffer. They
shouldn't convert the color space.

  • platform/graphics/ConcreteImageBuffer.h:
  • platform/graphics/ImageBufferBackend.cpp:

(WebCore::ImageBufferBackend::convertToLuminanceMask):

  • platform/graphics/cairo/ImageBufferCairoBackend.cpp:

(WebCore::ImageBufferCairoBackend::transformColorSpace):

  • platform/graphics/filters/FEColorMatrix.cpp:

(WebCore::FEColorMatrix::platformApplySoftware):

  • platform/graphics/filters/FEDropShadow.cpp:

(WebCore::FEDropShadow::platformApplySoftware):

1:12 PM Changeset in webkit [277877] by Chris Dumez
  • 7 edits in trunk/Source

Replace more static Locks with CheckedLocks in WebKit / WebKitLegacy
https://bugs.webkit.org/show_bug.cgi?id=226093

Reviewed by Darin Adler.

Replace more static Locks with CheckedLocks so that we can benefit from Clang Thread Safety Analysis.

Source/WebKit:

  • NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp:

(WebKit::WebResourceLoadStatisticsStore::resourceLoadStatisticsUpdated):
(WebKit::WebResourceLoadStatisticsStore::suspend):
(WebKit::WebResourceLoadStatisticsStore::resume):

  • NetworkProcess/Classifier/WebResourceLoadStatisticsStore.h:
  • Platform/IPC/Connection.cpp:

(IPC::WTF_REQUIRES_LOCK):
(IPC::addAsyncReplyHandler):
(IPC::clearAsyncReplyHandlers):
(IPC::CompletionHandler<void):

  • WebProcess/Network/WebSocketStream.cpp:

(WebKit::WebSocketStream::streamWithIdentifier):
(WebKit::WebSocketStream::networkProcessCrashed):
(WebKit::WebSocketStream::WebSocketStream):
(WebKit::WebSocketStream::~WebSocketStream):

Source/WebKitLegacy/mac:

  • DOM/DOMInternal.mm:

(getDOMWrapper):
(addDOMWrapper):
(removeDOMWrapper):

12:47 PM Changeset in webkit [277876] by eric.carlson@apple.com
  • 10 edits
    2 adds in trunk

[Cocoa] Update AudioSession buffer size handling
https://bugs.webkit.org/show_bug.cgi?id=225927
rdar://76920375

Reviewed by Jer Noble.

Source/WebCore:

Previously we only set the audio session buffer size when there was an active
MediaSession. This meant that when no audio was being played or captured, the buffer
size would be left at whatever size was appropriate for the last MediaSession
stopped. This was especially bad when the last MediaSession played WebAudio
or captured audio because those require a smaller buffer size than the default,
and was made even worse when using the GPU process because it may live for much
longer than the last web process that played audio. Fix this by using the low power
buffer size when playing audio or when there is no MediaSession at all.

Add AudioBufferSize API test.

  • Modules/webaudio/AudioContext.h:

Make mediaType() return None if the context is suspended or stopped so the media
session manager won't set the buffer size for WebAudio.

  • platform/audio/cocoa/MediaSessionManagerCocoa.h:
  • platform/audio/cocoa/MediaSessionManagerCocoa.mm:

(WebCore::MediaSessionManagerCocoa::updateSessionState): Always use "low power"
buffer size when there is no WebAudio or audio capture.
(WebCore::MediaSessionManagerCocoa::addSession): Cache supported hardware buffer sizes.
(WebCore::MediaSessionManagerCocoa::audioOutputDeviceChanged): Update cached buffer
sizes.

  • testing/Internals.cpp:

(WebCore::Internals::currentAudioBufferSize const): Expose current audio session buffer
size for testing.

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

Tools:

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/WebKit/audio-buffer-size.html: Added.
  • TestWebKitAPI/Tests/WebKitCocoa/AudioBufferSize.mm: Added.

(TestWebKitAPI::waitForBufferSizeChange):
(TestWebKitAPI::TEST):

  • TestWebKitAPI/Tests/WebKitCocoa/PreferredAudioBufferSize.mm:

(TEST_F):

12:24 PM Changeset in webkit [277875] by Chris Dumez
  • 11 edits in trunk/Source

Use CheckedLock more in cases where we try-lock
https://bugs.webkit.org/show_bug.cgi?id=226056

Reviewed by Alex Christensen.

Use CheckedLock more in cases where we try-lock to benefit from Clang
Thread Safety Analysis.

Source/WebCore:

  • Modules/webaudio/AudioParamTimeline.cpp:

(WebCore::AudioParamTimeline::setValueAtTime):
(WebCore::AudioParamTimeline::linearRampToValueAtTime):
(WebCore::AudioParamTimeline::exponentialRampToValueAtTime):
(WebCore::AudioParamTimeline::setTargetAtTime):
(WebCore::AudioParamTimeline::setValueCurveAtTime):
(WebCore::AudioParamTimeline::cancelScheduledValues):
(WebCore::AudioParamTimeline::cancelAndHoldAtTime):
(WebCore::AudioParamTimeline::valueForContextTime):
(WebCore::AudioParamTimeline::valuesForFrameRange):
(WebCore::AudioParamTimeline::hasValues const):

  • Modules/webaudio/AudioParamTimeline.h:
  • platform/audio/AudioDestination.h:

(WebCore::AudioDestination::WTF_GUARDED_BY_LOCK):
(WebCore::AudioDestination::AudioDestination):
(WebCore::AudioDestination::clearCallback):
(WebCore::AudioDestination::callRenderCallback):

  • platform/mediastream/cocoa/AudioMediaStreamTrackRendererUnit.cpp:

(WebCore::AudioMediaStreamTrackRendererUnit::addSource):
(WebCore::AudioMediaStreamTrackRendererUnit::removeSource):
(WebCore::AudioMediaStreamTrackRendererUnit::render):

  • platform/mediastream/cocoa/AudioMediaStreamTrackRendererUnit.h:

Source/WebKit:

  • WebProcess/GPU/webrtc/LibWebRTCCodecs.cpp:

(WebKit::LibWebRTCCodecs::releaseDecoder):
(WebKit::LibWebRTCCodecs::registerDecodeFrameCallback):
(WebKit::LibWebRTCCodecs::completedDecoding):
(WebKit::LibWebRTCCodecs::releaseEncoder):
(WebKit::LibWebRTCCodecs::registerEncodeFrameCallback):
(WebKit::LibWebRTCCodecs::completedEncoding):

  • WebProcess/GPU/webrtc/LibWebRTCCodecs.h:

(WebKit::LibWebRTCCodecs::Decoder::WTF_GUARDED_BY_LOCK):
(WebKit::LibWebRTCCodecs::Encoder::WTF_GUARDED_BY_LOCK):

Source/WTF:

  • wtf/Logger.cpp:
  • wtf/Logger.h:

(WTF::Logger::addObserver):
(WTF::Logger::removeObserver):
(WTF::Logger::log):
(WTF::Logger::logVerbose):
(WTF::Logger::WTF_RETURNS_LOCK):

12:04 PM Changeset in webkit [277874] by pvollan@apple.com
  • 5 edits in trunk/Source

Accessibility caption styles does not always reflect the selection
https://bugs.webkit.org/show_bug.cgi?id=226084
<rdar://75426845>

Reviewed by Chris Fleizach.

Source/WebCore:

Export a soft linked constant.

  • WebCore.xcodeproj/project.pbxproj:
  • platform/cf/MediaAccessibilitySoftLink.cpp:

Source/WebKit:

This is caused by a race between pushing the caption preference value to the WebContent process and receiving the notification in that process.
This patch addresses this by reposting the notification after having set the preference value in the WebContent process.

  • WebProcess/cocoa/WebProcessCocoa.mm:

(WebKit::captionProfilePreferenceKey):
(WebKit::dispatchSimulatedNotificationsForPreferenceChange):

11:54 AM Changeset in webkit [277873] by mmaxfield@apple.com
  • 2 edits in trunk/Source/WebKit

[Cocoa] REGRESSION(Sandbox): Font smoothing within Safari doesn't seem to respect AppleFontSmoothing
https://bugs.webkit.org/show_bug.cgi?id=226066
<rdar://problem/72795817>

Reviewed by Per Arne Vollan.

We accidentally blocked access to the relevant defaults database.

It turns out this is untestable. I can't use the actual functionality without actually setting the preference
for the whole user (and all their apps). And, I can't use sandbox_check() to make sure the file is readable
because it's in the user's home directory, so the path to check will be different for every user.

  • WebProcess/com.apple.WebProcess.sb.in:
11:24 AM Changeset in webkit [277872] by Wenson Hsieh
  • 3 edits in trunk/Source/WebKit

[iOS] Plumb element bounds when presenting QLPreviewController for image extraction
https://bugs.webkit.org/show_bug.cgi?id=226085
rdar://76020349

Reviewed by Tim Horton.

Include the previewed element's bounding rect when presenting QuickLook for image extraction. See the bug for
more details.

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

(-[WKActionSheetAssistant handleElementActionWithType:element:needsInteraction:]):

11:11 AM Changeset in webkit [277871] by Jonathan Bedard
  • 1 edit
    83 deletes in trunk/LayoutTests

[LayoutTests] Delete unused LayoutTests/svg resources
https://bugs.webkit.org/show_bug.cgi?id=226057
<rdar://problem/78284735>

Reviewed by Alexey Proskuryakov.

  • svg/W3C-SVG-1.1/resources/SVG-1.1-monolithic-fixed.dtd: Removed.
  • svg/W3C-SVG-1.1/resources/SVGImageTest.svg: Removed.
  • svg/W3C-SVG-1.1/resources/animation-extRef-image1.svg: Removed.
  • svg/W3C-SVG-1.1/resources/animation-extRef-image2.svg: Removed.
  • svg/W3C-SVG-1.1/resources/animation-extRef-image3.svg: Removed.
  • svg/W3C-SVG-1.1/resources/bullet-small.png: Removed.
  • svg/W3C-SVG-1.1/resources/bullet-white.png: Removed.
  • svg/W3C-SVG-1.1/resources/bullet.png: Removed.
  • svg/W3C-SVG-1.1/resources/bumpMap.png: Removed.
  • svg/W3C-SVG-1.1/resources/coords-units-01-f.png: Removed.
  • svg/W3C-SVG-1.1/resources/coords-units-01-f.svg: Removed.
  • svg/W3C-SVG-1.1/resources/diagarrow.png: Removed.
  • svg/W3C-SVG-1.1/resources/fillChangeColor.ICM: Removed.
  • svg/W3C-SVG-1.1/resources/filters-composite-01-f.svg: Removed.
  • svg/W3C-SVG-1.1/resources/gam030b.png: Removed.
  • svg/W3C-SVG-1.1/resources/gam045b.png: Removed.
  • svg/W3C-SVG-1.1/resources/gam056b.png: Removed.
  • svg/W3C-SVG-1.1/resources/gam100b.png: Removed.
  • svg/W3C-SVG-1.1/resources/gam200b.png: Removed.
  • svg/W3C-SVG-1.1/resources/greentopbutton.jpg: Removed.
  • svg/W3C-SVG-1.1/resources/image1.png: Removed.
  • svg/W3C-SVG-1.1/resources/image1_b.png: Removed.
  • svg/W3C-SVG-1.1/resources/image2_b.jpg: Removed.
  • svg/W3C-SVG-1.1/resources/image2_b.png: Removed.
  • svg/W3C-SVG-1.1/resources/leftarrow.png: Removed.
  • svg/W3C-SVG-1.1/resources/linking-uri-01-f-1st.png: Removed.
  • svg/W3C-SVG-1.1/resources/linking-uri-01-f-2nd.png: Removed.
  • svg/W3C-SVG-1.1/resources/linking-uri-01-f-3rd.png: Removed.
  • svg/W3C-SVG-1.1/resources/linking-uri-01-f-4th.png: Removed.
  • svg/W3C-SVG-1.1/resources/linking-uri-01-f-start.png: Removed.
  • svg/W3C-SVG-1.1/resources/linking-uri-03-f-1st.png: Removed.
  • svg/W3C-SVG-1.1/resources/linking-uri-03-f-start.png: Removed.
  • svg/W3C-SVG-1.1/resources/makealpha.svg: Removed.
  • svg/W3C-SVG-1.1/resources/myimage.jpg: Removed.
  • svg/W3C-SVG-1.1/resources/nav_bullet.png: Removed.
  • svg/W3C-SVG-1.1/resources/nav_down.png: Removed.
  • svg/W3C-SVG-1.1/resources/nav_downleft.png: Removed.
  • svg/W3C-SVG-1.1/resources/nav_downright.png: Removed.
  • svg/W3C-SVG-1.1/resources/nav_frame.png: Removed.
  • svg/W3C-SVG-1.1/resources/nav_left.png: Removed.
  • svg/W3C-SVG-1.1/resources/nav_noframe.png: Removed.
  • svg/W3C-SVG-1.1/resources/nav_right.png: Removed.
  • svg/W3C-SVG-1.1/resources/nav_svg.png: Removed.
  • svg/W3C-SVG-1.1/resources/nav_up.png: Removed.
  • svg/W3C-SVG-1.1/resources/nav_upleft.png: Removed.
  • svg/W3C-SVG-1.1/resources/nav_upright.png: Removed.
  • svg/W3C-SVG-1.1/resources/old-name-2-new-name1.html: Removed.
  • svg/W3C-SVG-1.1/resources/paths-data-01-f.png: Removed.
  • svg/W3C-SVG-1.1/resources/paths-data-01-f.svg: Removed.
  • svg/W3C-SVG-1.1/resources/paths-data-02-f.png: Removed.
  • svg/W3C-SVG-1.1/resources/paths-data-02-f.svg: Removed.
  • svg/W3C-SVG-1.1/resources/paths-data-03-f.png: Removed.
  • svg/W3C-SVG-1.1/resources/paths-data-04-f.png: Removed.
  • svg/W3C-SVG-1.1/resources/paths-data-04-f.svg: Removed.
  • svg/W3C-SVG-1.1/resources/plant.jpg: Removed.
  • svg/W3C-SVG-1.1/resources/rects_b.svg: Removed.
  • svg/W3C-SVG-1.1/resources/rightarrow.png: Removed.
  • svg/W3C-SVG-1.1/resources/shapes-ellipse-01-b.svg: Removed.
  • svg/W3C-SVG-1.1/resources/shapes-ellipse-01-f.png: Removed.
  • svg/W3C-SVG-1.1/resources/shapes-ellipse-01-f.svg: Removed.
  • svg/W3C-SVG-1.1/resources/shapes-rect-01-b.svg: Removed.
  • svg/W3C-SVG-1.1/resources/shapes-rect-01-f.png: Removed.
  • svg/W3C-SVG-1.1/resources/shapes-rect-01-f.svg: Removed.
  • svg/W3C-SVG-1.1/resources/struct-frag-01-B.svg: Removed.
  • svg/W3C-SVG-1.1/resources/struct-image-02.png: Removed.
  • svg/W3C-SVG-1.1/resources/svgRef4.css: Removed.
  • svg/W3C-SVG-1.1/resources/svgRef4.svg: Removed.
  • svg/W3C-SVG-1.1/resources/text-align-01-f.svg: Removed.
  • svg/W3C-SVG-1.1/resources/text-align-03-f.svg: Removed.
  • svg/W3C-SVG-1.1/resources/text-tref-01-f.svg: Removed.
  • svg/W3C-SVG-1.1/resources/text-ws-01-f.svg: Removed.
  • svg/W3C-SVG-1.1/resources/toc-sv.svg: Removed.
  • svg/W3C-SVG-1.1/resources/toc-svcmp.svg: Removed.
  • svg/W3C-SVG-1.1/resources/uparrow.png: Removed.
  • svg/as-image/resources/circle-nosize.svg: Removed.
  • svg/custom/resources/object-sizing-height-50p.svg: Removed.
  • svg/custom/resources/object-sizing-width-50p-height-50p.svg: Removed.
  • svg/custom/resources/object-sizing-width-50p-height-75p.svg: Removed.
  • svg/custom/resources/object-sizing-width-50p.svg: Removed.
  • svg/custom/resources/object-sizing-width-75p-height-50p.svg: Removed.
  • svg/dom/SVGScriptElement/resources/script-load2.js: Removed.
  • svg/dom/SVGScriptElement/resources/script-load3.js: Removed.
  • svg/dom/SVGScriptElement/resources/script-load4.js: Removed.
10:48 AM Changeset in webkit [277870] by Russell Epstein
  • 1 copy in tags/Safari-611.2.7.1.6

Tag Safari-611.2.7.1.6.

10:44 AM Changeset in webkit [277869] by Russell Epstein
  • 8 edits in branches/safari-611.2.7.1-branch/Source

Versioning.

WebKit-7611.2.7.1.6

10:16 AM Changeset in webkit [277868] by commit-queue@webkit.org
  • 4 edits in trunk

grid track size should reject unitless length
https://bugs.webkit.org/show_bug.cgi?id=189137

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

LayoutTests/imported/w3c:

Update improved test result.

  • web-platform-tests/quirks/unitless-length/excluded-properties-001-expected.txt:

Source/WebCore:

Reject unitless length's for grid track sizes in quirks mode.

Behavior matches Chrome and Firefox.

  • css/parser/CSSPropertyParser.cpp:

(WebCore::consumeGridBreadth):

10:07 AM Changeset in webkit [277867] by jer.noble@apple.com
  • 3 edits
    4 adds in trunk

[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
<rdar://78004793>

Reviewed by Eric Carlson.

Source/WebCore:

Test: platform/mac-bigsur/media/media-source/media-vorbis-partial.html

When parsing samples from a WebM file, the samples emitted by the parser can be very short in
duration, which is ineffecient both in storage costs in our SampleMap, as well as in decoding
CPU costs, as each sample must be fed into the decoder separately. So the parser will group
together these small samples into a larger "meta sample" with a duration no shorter than 2s.

However, at the end of a file, no more sample data will be appended, up to 2s of audio data
will not be emitted from the parser.

At the end of an append, always flush audio track data to ensure that all parsed samples are
emitted, regardless of their collective duration.

  • platform/graphics/cocoa/SourceBufferParserWebM.cpp:

(WebCore::SourceBufferParserWebM::appendData):

LayoutTests:

  • platform/mac-bigsur/media/media-source/content/test-vorbis-manifest.json: Added.
  • platform/mac-bigsur/media/media-source/content/test-vorbis.webm: Added.
  • platform/mac-bigsur/media/media-source/media-vorbis-partial-expected.txt: Added.
  • platform/mac-bigsur/media/media-source/media-vorbis-partial.html: Added.
10:03 AM Changeset in webkit [277866] by Russell Epstein
  • 2 edits in branches/safari-612.1.15.0-branch/Source/WebKit

Cherry-pick r277791. rdar://problem/78313265

[iOS] Add missing method in sandbox IOKit filter
https://bugs.webkit.org/show_bug.cgi?id=225975
<rdar://78212330>

Reviewed by Brent Fulgham.

Add missing method in IOSurfaceRootUserClient filter on iOS.

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

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

9:41 AM Changeset in webkit [277865] by Kate Cheney
  • 8 edits
    8 adds in trunk

FrameLoader::loadURL, FrameLoader::loadPostRequest not attributing requests as app bound
https://bugs.webkit.org/show_bug.cgi?id=225923
<rdar://problem/78160933>

Reviewed by Alex Christensen.

Source/WebCore:

Tests: http/tests/in-app-browser-privacy/app-bound-attribution-load-url.html

http/tests/in-app-browser-privacy/app-bound-attribution-ping-load.html
http/tests/in-app-browser-privacy/app-bound-attribution-post-request.html

Update FrameLoader::addExtraFieldsToRequest to add the app-bound
value to a request, like for loadURL, loadPostRequest, or ping loads.
Change the name to reflect this use case, which updates the request
but does not add any extra header fields.

Other cases are already covered in WebLoaderStrategy::loadResource.

  • loader/FrameLoader.cpp:

(WebCore::FrameLoader::loadURL):
(WebCore::FrameLoader::load):
The main navigation uses the old document loader, so we don't want to
set the app-bound value based on that. The request should have the
correct value already from the UIProcess.
(WebCore::FrameLoader::updateRequestAndAddExtraFields):
(WebCore::FrameLoader::loadPostRequest):
(WebCore::FrameLoader::loadResourceSynchronously):
We can remove setting the app bound value here now that we set the value in
addExtraFieldsToRequest.
(WebCore::FrameLoader::loadDifferentDocumentItem):
(WebCore::FrameLoader::addExtraFieldsToRequest): Deleted.

  • loader/FrameLoader.h:
  • loader/PingLoader.cpp:

(WebCore::PingLoader::loadImage):
(WebCore::PingLoader::sendPing):
(WebCore::PingLoader::sendViolationReport):

  • loader/ResourceLoader.cpp:

(WebCore::ResourceLoader::init):

  • loader/cache/CachedResource.cpp:

(WebCore::CachedResource::load):

LayoutTests:

  • http/tests/in-app-browser-privacy/app-bound-attribution-load-url-expected.txt: Added.
  • http/tests/in-app-browser-privacy/app-bound-attribution-load-url.html: Added.
  • http/tests/in-app-browser-privacy/app-bound-attribution-ping-load-expected.txt: Added.
  • http/tests/in-app-browser-privacy/app-bound-attribution-ping-load.html: Added.
  • http/tests/in-app-browser-privacy/app-bound-attribution-post-request-expected.txt: Added.
  • http/tests/in-app-browser-privacy/app-bound-attribution-post-request.html: Added.
  • http/tests/in-app-browser-privacy/resources/post.py: Added.
  • http/tests/navigation/resources/check-ping-app-bound-data.py: Added.
  • platform/ios-wk2/TestExpectations:

These tests rely on internal additions, so I will skip it here and
unskip in the future.

9:39 AM Changeset in webkit [277864] by youenn@apple.com
  • 2 edits in trunk/Source/WebCore

Add some logging for the 'FetchEvent is destroyed' case
https://bugs.webkit.org/show_bug.cgi?id=226071

Reviewed by Kate Cheney.

  • workers/service/FetchEvent.cpp:

(WebCore::FetchEvent::~FetchEvent):

9:26 AM Changeset in webkit [277863] by Russell Epstein
  • 8 edits in branches/safari-612.1.15.0-branch/Source

Versioning.

WebKit-7612.1.15.0.4

8:55 AM Changeset in webkit [277862] by imanol
  • 7 edits in trunk

Fix use after move bug in WebXRSession
https://bugs.webkit.org/show_bug.cgi?id=226074

Reviewed by Sergio Villar Senin.

Source/WebCore:

This patch fixes FrameData usage after move in WebXRSession, a regression from bug 226074.
It also removes an unneeded FrameData copy into WebXRFrame.

Tested by WebXR WPT.

  • Modules/webxr/WebXRFrame.cpp: Use frameData from session instead of holding an extra copy

(WebCore::WebXRFrame::populatePose):
(WebCore::WebXRFrame::getViewerPose):

  • Modules/webxr/WebXRFrame.h: Remove setFrameData and m_data.

(WebCore::WebXRFrame::setTime):

  • Modules/webxr/WebXRSession.cpp: Fix usage after move.

(WebCore::WebXRSession::onFrame):

  • platform/xr/PlatformXR.h:

(PlatformXR::Device::FrameData::copy const): Add missing members in the copy function.

LayoutTests:

Update WebXR test expectations.

  • platform/wpe/TestExpectations:
7:54 AM Changeset in webkit [277861] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebCore

Function paintRenderingResultsToCanvas expects a reference, not a
pointer. Fixed the compile error.
https://bugs.webkit.org/show_bug.cgi?id=226073

Patch by Eleni Maria Stea <hikiko> on 2021-05-21
Reviewed by Adrian Perez de Castro.

  • platform/graphics/nicosia/texmap/NicosiaGCGLLayer.cpp:

(Nicosia::GCGLLayer::swapBuffersIfNeeded):

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

Fixed unreached end of function compiler warning in DataURLDecoder.
https://bugs.webkit.org/show_bug.cgi?id=226079

Patch by Eleni Maria Stea <hikiko> on 2021-05-21
Reviewed by Adrian Perez de Castro.

  • platform/network/DataURLDecoder.cpp:

(WebCore::DataURLDecoder::decodeBase64):

7:21 AM Changeset in webkit [277859] by Jonathan Bedard
  • 1 edit
    251 deletes in trunk/LayoutTests

[LayoutTests] Delete unused imported/blink resources
https://bugs.webkit.org/show_bug.cgi?id=226047
<rdar://problem/78280660>

Reviewed by Dewei Zhu.

  • imported/blink/compositing/iframes/resources/subframe-with-fixed-position-element.html: Removed.
  • imported/blink/compositing/layer-creation/resources: Removed.
  • imported/blink/compositing/overflow/resources: Removed.
  • imported/blink/css3/blending/resources: Removed.
  • imported/blink/editing/execCommand/resources: Removed.
  • imported/blink/editing/selection/resources: Removed.
  • imported/blink/fast/canvas/resources: Removed.
  • imported/blink/fast/css/resources/ahem.html: Removed.
  • imported/blink/fast/css/resources/circle-small.svg: Removed.
  • imported/blink/fast/css/resources/font-face-local-file-frame.html: Removed.
  • imported/blink/fast/css/resources/media-query-with-cached-sheet-next.html: Removed.
  • imported/blink/fast/css/resources/resize-corner-tracking-touch-iframe.html: Removed.
  • imported/blink/fast/dom/HTMLDialogElement/resources: Removed.
  • imported/blink/fast/dom/HTMLImageElement/resources: Removed.
  • imported/blink/fast/dom/Range/resources: Removed.
  • imported/blink/fast/dom/Window/resources: Removed.
  • imported/blink/fast/dom/custom/resources: Removed.
  • imported/blink/fast/dom/shadow/resources: Removed.
  • imported/blink/fast/events/resources: Removed.
  • imported/blink/fast/events/touch/gesture/resources: Removed.
  • imported/blink/fast/events/touch/resources: Removed.
  • imported/blink/fast/forms/date-multiple-fields/resources: Removed.
  • imported/blink/fast/forms/datetimelocal-multiple-fields/resources: Removed.
  • imported/blink/fast/forms/month-multiple-fields/resources: Removed.
  • imported/blink/fast/forms/resources/popup-no-crash.html: Removed.
  • imported/blink/fast/forms/time-multiple-fields/resources: Removed.
  • imported/blink/fast/forms/week-multiple-fields/resources: Removed.
  • imported/blink/fast/frames/resources/detach-frame-nested-subframe.html: Removed.
  • imported/blink/fast/frames/resources/frame-set-location-badstring.html: Removed.
  • imported/blink/fast/html/imports/resources/async-child.html: Removed.
  • imported/blink/fast/html/imports/resources/async-root-child-1.html: Removed.
  • imported/blink/fast/html/imports/resources/async-root-child-2.html: Removed.
  • imported/blink/fast/html/imports/resources/async-root.html: Removed.
  • imported/blink/fast/html/imports/resources/child-frame-with-import.html: Removed.
  • imported/blink/fast/html/imports/resources/custom-element-hello-1.html: Removed.
  • imported/blink/fast/html/imports/resources/custom-element-hello-2.html: Removed.
  • imported/blink/fast/html/imports/resources/custom-element-hello-3.html: Removed.
  • imported/blink/fast/html/imports/resources/custom-element-hello-4.html: Removed.
  • imported/blink/fast/html/imports/resources/custom-element-hello-5.html: Removed.
  • imported/blink/fast/html/imports/resources/custom-element-hello-6.html: Removed.
  • imported/blink/fast/html/imports/resources/custom-element-hello-7.html: Removed.
  • imported/blink/fast/html/imports/resources/custom-element-hello-8.html: Removed.
  • imported/blink/fast/html/imports/resources/custom-element-hello-parent-12.html: Removed.
  • imported/blink/fast/html/imports/resources/custom-element-hello-parent-34.html: Removed.
  • imported/blink/fast/html/imports/resources/custom-element-hello-parent-56.html: Removed.
  • imported/blink/fast/html/imports/resources/custom-element-hello.html: Removed.
  • imported/blink/fast/html/imports/resources/custom-element-style.html: Removed.
  • imported/blink/fast/html/imports/resources/cycle-two-parents-2-b.html: Removed.
  • imported/blink/fast/html/imports/resources/cycle-two-parents-3-a.html: Removed.
  • imported/blink/fast/html/imports/resources/do-document-write.html: Removed.
  • imported/blink/fast/html/imports/resources/events-inline.html: Removed.
  • imported/blink/fast/html/imports/resources/hello-css.html: Removed.
  • imported/blink/fast/html/imports/resources/hello-legacy.html: Removed.
  • imported/blink/fast/html/imports/resources/hello-nodtd.html: Removed.
  • imported/blink/fast/html/imports/resources/import-custom-element-onload-child.html: Removed.
  • imported/blink/fast/html/imports/resources/import-custom-element-onload-grandchild.html: Removed.
  • imported/blink/fast/html/imports/resources/import-events-target.html: Removed.
  • imported/blink/fast/html/imports/resources/import-link-with-media-query.html: Removed.
  • imported/blink/fast/html/imports/resources/meta-encoding.html: Removed.
  • imported/blink/fast/html/imports/resources/nest-dup-2-parent.html: Removed.
  • imported/blink/fast/html/imports/resources/nest-dup-2.html: Removed.
  • imported/blink/fast/html/imports/resources/nest-dup-child.html: Removed.
  • imported/blink/fast/html/imports/resources/nest-dup-grand-parent.html: Removed.
  • imported/blink/fast/html/imports/resources/nest-dup-parent.html: Removed.
  • imported/blink/fast/html/imports/resources/nest-dup.html: Removed.
  • imported/blink/fast/html/imports/resources/no-encoding.html: Removed.
  • imported/blink/fast/html/imports/resources/nr1-i0.html: Removed.
  • imported/blink/fast/html/imports/resources/nr1-i1.html: Removed.
  • imported/blink/fast/html/imports/resources/nr1-i2.html: Removed.
  • imported/blink/fast/html/imports/resources/nr1-i3.html: Removed.
  • imported/blink/fast/html/imports/resources/nr1-i4.html: Removed.
  • imported/blink/fast/html/imports/resources/nr1-i5.html: Removed.
  • imported/blink/fast/html/imports/resources/nr2-i0.html: Removed.
  • imported/blink/fast/html/imports/resources/nr2-i1.html: Removed.
  • imported/blink/fast/html/imports/resources/nr2-i2.html: Removed.
  • imported/blink/fast/html/imports/resources/nr2-i3.html: Removed.
  • imported/blink/fast/html/imports/resources/nr2-i4.html: Removed.
  • imported/blink/fast/html/imports/resources/nr2-i5.html: Removed.
  • imported/blink/fast/html/imports/resources/nr2-i6.html: Removed.
  • imported/blink/fast/html/imports/resources/nr2-i7.html: Removed.
  • imported/blink/fast/html/imports/resources/nr3-i6.html: Removed.
  • imported/blink/fast/html/imports/resources/nr3-i7.html: Removed.
  • imported/blink/fast/html/imports/resources/nr4-i0.html: Removed.
  • imported/blink/fast/html/imports/resources/nr4-i1.html: Removed.
  • imported/blink/fast/html/imports/resources/nr4-i2.html: Removed.
  • imported/blink/fast/html/imports/resources/nr4-i3.html: Removed.
  • imported/blink/fast/html/imports/resources/nr4-i4.html: Removed.
  • imported/blink/fast/html/imports/resources/nr4-i5.html: Removed.
  • imported/blink/fast/html/imports/resources/nr4-i6.html: Removed.
  • imported/blink/fast/html/imports/resources/nr4-i7.html: Removed.
  • imported/blink/fast/html/imports/resources/nr4-i8.html: Removed.
  • imported/blink/fast/html/imports/resources/nr4-i9.html: Removed.
  • imported/blink/fast/html/imports/resources/nr4-ia.html: Removed.
  • imported/blink/fast/html/imports/resources/nr5-i9.html: Removed.
  • imported/blink/fast/html/imports/resources/nr5-ia.html: Removed.
  • imported/blink/fast/html/imports/resources/onload-root.html: Removed.
  • imported/blink/fast/html/imports/resources/script-document-write.html: Removed.
  • imported/blink/fast/html/imports/resources/script-leaf.html: Removed.
  • imported/blink/fast/html/imports/resources/script-prototype-test.html: Removed.
  • imported/blink/fast/html/imports/resources/setting-greet-var.html: Removed.
  • imported/blink/fast/html/imports/resources/shared-crash-child.html: Removed.
  • imported/blink/fast/html/imports/resources/shared-crash-dup.html: Removed.
  • imported/blink/fast/html/imports/resources/shared-crash-grandchild.html: Removed.
  • imported/blink/fast/html/imports/resources/shared-crash-root.html: Removed.
  • imported/blink/fast/html/imports/resources/style-basic-child-dynamic.html: Removed.
  • imported/blink/fast/html/imports/resources/style-basic-child.html: Removed.
  • imported/blink/fast/html/imports/resources/style-basic-grandchild.html: Removed.
  • imported/blink/fast/html/imports/resources/style-blue.html: Removed.
  • imported/blink/fast/html/imports/resources/style-link-block-child.html: Removed.
  • imported/blink/fast/html/imports/resources/style-link-child.html: Removed.
  • imported/blink/fast/html/imports/resources/style-link-grandchild.html: Removed.
  • imported/blink/fast/html/imports/resources/style-red-parent.html: Removed.
  • imported/blink/fast/html/imports/resources/style-red.html: Removed.
  • imported/blink/fast/html/imports/resources/style-target-blue.html: Removed.
  • imported/blink/fast/html/imports/resources/style-tree-order-dynamic-following.html: Removed.
  • imported/blink/fast/html/imports/resources/style-tree-order-dynamic-leading.html: Removed.
  • imported/blink/fast/html/imports/resources/style-tree-order-hide-import-green.html: Removed.
  • imported/blink/fast/html/imports/resources/style-tree-order-hide-import-red.html: Removed.
  • imported/blink/fast/html/imports/resources/style-tree-order-hide-link.html: Removed.
  • imported/blink/fast/html/imports/resources/style-tree-order-hide-shared.html: Removed.
  • imported/blink/fast/html/imports/resources/style-tree-order-hide-style.html: Removed.
  • imported/blink/fast/html/imports/resources/style-tree-order-hide-subimport-green.html: Removed.
  • imported/blink/fast/html/imports/resources/style-tree-order-hide-subimport-red.html: Removed.
  • imported/blink/fast/html/imports/resources/style-tree-order-hide-subimport.html: Removed.
  • imported/blink/fast/html/resources: Removed.
  • imported/blink/fast/images/resources: Removed.
  • imported/blink/fast/loader/resources/javascript-detached-frame-iframe.html: Removed.
  • imported/blink/fast/multicol/resources: Removed.
  • imported/blink/fast/parser/resources: Removed.
  • imported/blink/fast/repaint/resources: Removed.
  • imported/blink/fast/workers/resources: Removed.
  • imported/blink/fast/xsl/resources: Removed.
  • imported/blink/fullscreen/resources: Removed.
  • imported/blink/http/tests/css/resources/cors-ahem.php: Removed.
  • imported/blink/http/tests/css/resources/delayedCircle.php: Removed.
  • imported/blink/http/tests/css/resources/performance-info-with-cached-sheet-next.html: Removed.
  • imported/blink/http/tests/css/resources/referrer-check.php: Removed.
  • imported/blink/http/tests/history/resources/frameset-dest.html: Removed.
  • imported/blink/http/tests/history/resources/push-state-in-grandchild-child.html: Removed.
  • imported/blink/http/tests/history/resources/push-state-in-grandchild-grandchild.html: Removed.
  • imported/blink/http/tests/misc/resources/form-post-success.html: Removed.
  • imported/blink/http/tests/misc/resources/frame-with-form-action-using-replace-child.html: Removed.
  • imported/blink/http/tests/misc/resources/generatedimage.php: Removed.
  • imported/blink/http/tests/misc/resources/iframe-accept-ch.php: Removed.
  • imported/blink/http/tests/misc/resources/image-checks-for-dpr.php: Removed.
  • imported/blink/http/tests/misc/resources/image-checks-for-viewport-width.php: Removed.
  • imported/blink/http/tests/misc/resources/image-checks-for-width.php: Removed.
  • imported/blink/http/tests/misc/resources/image-slow-out-of-viewport.pl: Removed.
  • imported/blink/http/tests/misc/resources/nearly-empty-content-disposition.php: Removed.
  • imported/blink/http/tests/misc/resources/reentrant-beforeunload-helper.html: Removed.
  • imported/blink/http/tests/misc/resources/slow-frame-with-image.php: Removed.
  • imported/blink/http/tests/misc/resources/webtiming-cross-origin-and-back-redirect3.php: Removed.
  • imported/blink/http/tests/plugins/resources: Removed.
  • imported/blink/http/tests/resources/accept-ch.php: Removed.
  • imported/blink/http/tests/resources/dpr.php: Removed.
  • imported/blink/http/tests/resources/iframe-no-accept-ch.php: Removed.
  • imported/blink/http/tests/resources/no-last-modified.php: Removed.
  • imported/blink/http/tests/resources/slow-image-dimensions.php: Removed.
  • imported/blink/http/tests/resources/testharness-helpers.js: Removed.
  • imported/blink/http/tests/resources/testharness.css: Removed.
  • imported/blink/http/tests/resources/tripmine.php: Removed.
  • imported/blink/http/tests/security/contentSecurityPolicy/resources: Removed.
  • imported/blink/http/tests/security/mixedContent/resources: Removed.
  • imported/blink/http/tests/security/mixedContent/websocket/resources: Removed.
  • imported/blink/http/tests/security/resources/conditional-cors.php: Removed.
  • imported/blink/http/tests/security/resources/cors-font.php: Removed.
  • imported/blink/http/tests/security/resources/cors-hello.php: Removed.
  • imported/blink/http/tests/security/resources/cors-redir.php: Removed.
  • imported/blink/http/tests/security/resources/cors-redirect.php: Removed.
  • imported/blink/http/tests/security/resources/cors-style.php: Removed.
  • imported/blink/http/tests/security/resources/cross-origin-iframe-for-shared-worker.html: Removed.
  • imported/blink/http/tests/security/resources/doc-with-iframe.html: Removed.
  • imported/blink/http/tests/security/resources/echo-referrer-header.php: Removed.
  • imported/blink/http/tests/security/resources/green-background-allow-credentials-import.php: Removed.
  • imported/blink/http/tests/security/resources/green-background-allow-credentials.php: Removed.
  • imported/blink/http/tests/security/resources/green-background-allow-star-import.php: Removed.
  • imported/blink/http/tests/security/resources/green-background-allow-star.php: Removed.
  • imported/blink/http/tests/security/resources/green-if-cors-anonymous.php: Removed.
  • imported/blink/http/tests/security/resources/green-if-cors-credentialed.php: Removed.
  • imported/blink/http/tests/security/resources/iframe-crossorigin-script.html: Removed.
  • imported/blink/http/tests/security/resources/iframe-for-naked-global-object.html: Removed.
  • imported/blink/http/tests/security/resources/iframe-for-storage-blocking-changed-shared-worker.html: Removed.
  • imported/blink/http/tests/security/resources/image-wrapper-with-no-image.svg: Removed.
  • imported/blink/http/tests/security/resources/img-basic-auth.php: Removed.
  • imported/blink/http/tests/security/resources/post-origin-to-opener.html: Removed.
  • imported/blink/http/tests/security/resources/postmessage-document-origin.html: Removed.
  • imported/blink/http/tests/security/resources/redir.php: Removed.
  • imported/blink/http/tests/security/resources/referrer-attr-anchor-noreferrer-target.html: Removed.
  • imported/blink/http/tests/security/resources/referrer-attr-anchor-target.html: Removed.
  • imported/blink/http/tests/security/resources/referrer-on-client-redirect.html: Removed.
  • imported/blink/http/tests/security/resources/referrer-policy-conflicting-policies.html: Removed.
  • imported/blink/http/tests/security/resources/referrer-policy-script.php: Removed.
  • imported/blink/http/tests/security/resources/referrer-policy-start-crossorigin.html: Removed.
  • imported/blink/http/tests/security/resources/script-allow-credentials.php: Removed.
  • imported/blink/http/tests/security/resources/script-allow-star.php: Removed.
  • imported/blink/http/tests/security/resources/webaudio: Removed.
  • imported/blink/http/tests/security/resources/xorigincss7.html: Removed.
  • imported/blink/http/tests/svg/resources/delayCachedLoadScript.php: Removed.
  • imported/blink/http/tests/webfont/resources: Removed.
  • imported/blink/http/tests/websocket/resources: Removed.
  • imported/blink/http/tests/xmlhttprequest/resources/access-control-basic-post-success-no-content-type.php: Removed.
  • imported/blink/http/tests/xmlhttprequest/resources/access-control-preflight-request-header-sorted.php: Removed.
  • imported/blink/http/tests/xmlhttprequest/resources/access-control-preflight-request-headers-origin.php: Removed.
  • imported/blink/http/tests/xmlhttprequest/resources/access-control-preflight-request-invalid-status.php: Removed.
  • imported/blink/http/tests/xmlhttprequest/resources/access-control-preflight-request-must-not-contain-cookie.php: Removed.
  • imported/blink/http/tests/xmlhttprequest/resources/access-control-sandboxed-iframe-allow-origin-null-iframe.html: Removed.
  • imported/blink/http/tests/xmlhttprequest/resources/echo-random.php: Removed.
  • imported/blink/http/tests/xmlhttprequest/resources/echo-request-origin.php: Removed.
  • imported/blink/http/tests/xmlhttprequest/resources/frame-with-insecure-xhr.html: Removed.
  • imported/blink/http/tests/xmlhttprequest/resources/invalid-utf8-json.pl: Removed.
  • imported/blink/http/tests/xmlhttprequest/resources/json-response-overflow.php: Removed.
  • imported/blink/http/tests/xmlhttprequest/resources/multiple-send.html: Removed.
  • imported/blink/http/tests/xmlhttprequest/resources/navigation-abort-detaches-frame-subframe.html: Removed.
  • imported/blink/http/tests/xmlhttprequest/resources/noscript-check.html: Removed.
  • imported/blink/http/tests/xmlhttprequest/resources/post-echo.php: Removed.
  • imported/blink/http/tests/xmlhttprequest/resources/redirect-cors-origin-null-pass.php: Removed.
  • imported/blink/http/tests/xmlhttprequest/resources/redirect-cors-origin-null.php: Removed.
  • imported/blink/http/tests/xmlhttprequest/resources/redirect-loop.php: Removed.
  • imported/blink/http/tests/xmlhttprequest/resources/request-encoding4-doc.html: Removed.
  • imported/blink/http/tests/xmlhttprequest/resources/xmlhttprequest-in-unload-sync.html: Removed.
  • imported/blink/http/tests/xmlhttprequest/resources/xmlhttprequest-no-content-type-with-text.php: Removed.
  • imported/blink/http/tests/xmlhttprequest/workers/resources: Removed.
  • imported/blink/imported/web-platform-tests/screen-orientation/resources: Removed.
  • imported/blink/imported/web-platform-tests/shadow-dom/resources: Removed.
  • imported/blink/imported/web-platform-tests/webstorage/resources: Removed.
  • imported/blink/plugins/resources/empty2.html: Removed.
  • imported/blink/resources: Removed.
  • imported/blink/scrollbars/resources: Removed.
  • imported/blink/svg/animations/resources/animate-fill-freeze-with-repeatDur.svg: Removed.
  • imported/blink/svg/animations/resources/animate-no-matching-end-value.svg: Removed.
  • imported/blink/svg/animations/resources/animateMotion-fill-freeze.svg: Removed.
  • imported/blink/svg/animations/resources/animateMotion-fill-remove.svg: Removed.
  • imported/blink/svg/animations/resources/animateMotion-multiple.svg: Removed.
  • imported/blink/svg/animations/resources/animation-policy.svg: Removed.
  • imported/blink/svg/animations/resources/cyclic-syncbase.svg: Removed.
  • imported/blink/svg/animations/resources/discard-on-discard.svg: Removed.
  • imported/blink/svg/animations/resources/repeatn-remove-add-animation.svg: Removed.
  • imported/blink/svg/animations/resources/viewspec-checkaspectparams.svg: Removed.
  • imported/blink/svg/as-background-image/resources: Removed.
  • imported/blink/svg/as-image/resources/actually-xhtml-with-media.svg: Removed.
  • imported/blink/svg/as-image/resources/animated-rect-color.svg: Removed.
  • imported/blink/svg/as-image/resources/animated-visited-link.svg: Removed.
  • imported/blink/svg/as-image/resources/circle-200px-none.svg: Removed.
  • imported/blink/svg/as-image/resources/css-animation.svg: Removed.
  • imported/blink/svg/as-image/resources/default-font-settings.svg: Removed.
  • imported/blink/svg/as-image/resources/image-with-data-uri.svg: Removed.
  • imported/blink/svg/as-image/resources/image-with-svg-data-uri.svg: Removed.
  • imported/blink/svg/as-image/resources/svg-with-image-with-link.svg: Removed.
  • imported/blink/svg/custom/resources/draw-image-crash.svg: Removed.
  • imported/blink/svg/dom/resources/import-other-svg.svg: Removed.
  • imported/blink/svg/dom/resources/svg-with-animate-use.svg: Removed.
  • imported/blink/svg/dom/resources/svg-with-animate.svg: Removed.
7:17 AM WebKitGTK/2.32.x edited by Adrian Perez de Castro
(diff)
6:52 AM Changeset in webkit [277858] by Adrian Perez de Castro
  • 50 edits in trunk/Source

Non-unified build fixes, late-ish May 2021 edition
https://bugs.webkit.org/show_bug.cgi?id=225990

Unreviewed non-unified build fixes.

Source/JavaScriptCore:

  • jit/CCallHelpers.cpp: Add missing LinkBuffer.h header.

Source/WebCore:

No new tests needed.

  • Modules/indexeddb/server/MemoryObjectStore.cpp: Add missing pal/SessioID.h header.
  • Modules/webaudio/OfflineAudioContext.cpp: Add missing OfflineAudioCompletionEvent.h header.
  • Modules/webaudio/OfflineAudioContext.h: Add missing wtf/UniqueRef.h header.
  • Modules/websockets/WebSocketDeflateFramer.h: Add missing WebSocketExtensionProcessor.h

header, remove wtf/text/WTFString.h as it is already included by the former.

  • bindings/js/JSDOMConvertEnumeration.h: Add missing JSDOMGlobalObject.h header.
  • contentextensions/DFANode.cpp: Add missing wtf/HashMap.h header.
  • html/HTMLFrameElement.cpp: Add missing HTMLParserIdioms.h header.
  • html/HTMLHRElement.cpp: Ditto.
  • html/HTMLIFrameElement.cpp: Ditto.
  • html/HTMLLIElement.cpp: Ditto.
  • html/HTMLMetaElement.cpp: Add missing HTMLParserIdioms.h, Frame.h, and FrameView.h headers.
  • html/HTMLOutputElement.cpp:

(WebCore::HTMLOutputElement::parseAttribute): Add missing HTMLNames:: namespace prefix in
usage of HTMLNames::forAttr.
(WebCore::HTMLOutputElement::htmlFor): Ditto.

  • html/OffscreenCanvas.cpp: Add missing RuntimeEnabledFeatures.h header.
  • layout/formattingContexts/FormattingGeometry.cpp: Add missing FormattingQuirks.h header.
  • layout/formattingContexts/FormattingQuirks.cpp: Add missing FormattingGeometry.h header.
  • layout/formattingContexts/block/BlockFormattingGeometry.cpp: Add missing

BlockFormattingContext.h, BlockFormattingQuirks.h, and BlockMarginCollapse.h headers;
remove unneeded BlockFormattingState.h and FormattingContext.h headers.

  • layout/formattingContexts/block/BlockFormattingGeometry.h: Add missing forward

declaration for BlockFormattingContext.

  • layout/formattingContexts/block/BlockFormattingQuirks.cpp: Add missing

BlockFormattingContext.h and BlockMarginCollapse.h headers, remove unneeded
BlockFormattingState.h header.

  • layout/formattingContexts/block/PrecomputedBlockMarginCollapse.cpp: Add missing

BlockFormattingContext.h and BlockFormattingQuirks.h headers, remove unneeded
BlockFormattingState.h header.

  • layout/formattingContexts/block/tablewrapper/TableWrapperBlockFormattingContext.cpp:

Add missing BlockMarginCollapse.h header.

  • layout/formattingContexts/block/tablewrapper/TableWrapperBlockFormattingQuirks.cpp:

Add missing TableWrapperBlockFormattingContext.h header.

  • layout/formattingContexts/block/tablewrapper/TableWrapperBlockFormattingQuirks.h:

Add missing forward declaration for TableWrapperBlockFormattingContext.

  • layout/formattingContexts/flex/FlexFormattingGeometry.cpp: Add missing

FlexFormattingContext.h header, remove unneeded FlexFormattingState.h and
FormattingContext.h headers.

  • layout/formattingContexts/flex/FlexFormattingGeometry.h: Add missing forward declaration

for FlexFormattingContext.

  • layout/formattingContexts/inline/InlineFormattingGeometry.cpp: Add missing

InlineFormattingContext.h header, remove unneeded InlineLineBox.h header.

  • layout/formattingContexts/inline/InlineFormattingGeometry.h: Add missing InlineLineBox.h

and InlineLineBuilder.h headers, add missing forward declaration for
InlineFormattingContext.

  • layout/formattingContexts/inline/InlineFormattingQuirks.cpp: Add missing

InlineFormattingContext.h header.

  • layout/formattingContexts/inline/InlineFormattingQuirks.h: Add missing InlineLineBox.h

header, add missing forward declaration for InlineFormattingContext.

  • layout/formattingContexts/inline/InlineLineBuilder.cpp: Add missing

InlineFormattingQuirks.h header.

  • layout/formattingContexts/table/TableFormattingGeometry.cpp: Add missing

TableFormattingContext.h header, remove unneeded TableFormattingState.h header.

  • layout/formattingContexts/table/TableFormattingGeometry.h: Add missing TableGrid.h

header, add missing forward declaration for TableFormattingContext.

  • layout/formattingContexts/table/TableFormattingQuirks.cpp: Add missing

TableFormattingContext.h header.

  • layout/formattingContexts/table/TableFormattingQuirks.h: Add missing forward declaration

for TableFormattingContext.

  • layout/formattingContexts/table/TableLayout.cpp: Add missing TableFormattingGeometry.h

header.

  • page/FrameViewLayoutContext.cpp: Add missing StyleScope.h header.
  • page/ImageOverlayController.h: Add missing LayoutRect.h header.
  • page/PageConfiguration.h: Add missing wtf/HashSet.h header.
  • platform/network/soup/SoupNetworkSession.cpp: Add missing wtf/text/StringHash.h header.
  • style/StyleScopeRuleSets.cpp: Add missing StyleScope.h header.
  • style/Styleable.cpp: Ditto.
  • svg/SVGDocumentExtensions.cpp: Add missing SVGUseElement.h header.
  • svg/SVGDocumentExtensions.h: Add missing wtf/WeakHashSet.h header, add missing

forward declaration for SVGUseElement.

  • workers/WorkerGlobalScope.cpp: Add missing FontCustomPlatformData.h header.

Source/WebKit:

  • NetworkProcess/PreconnectTask.h: Add missing forward declaration for NetworkSession.
  • NetworkProcess/WebStorage/LocalStorageDatabase.h: Add missing wtf/HashMap.h header,

remove unneeded wtf/RefCounted.h header.

  • Shared/WebPageCreationParameters.cpp:

(WebKit::WebPageCreationParameters::decode): Add missing WebCore:: namespace prefix to
usage of WebCore::MediaProducer::MutedStateFlags.

6:42 AM Changeset in webkit [277857] by Lauro Moura
  • 4 edits in trunk

[GLIB] fast/canvas/canvas-conic-gradient-angle.html is failing since added in r277547
https://bugs.webkit.org/show_bug.cgi?id=225916

Reviewed by Adrian Perez de Castro.

Source/WebCore:

Covered by existing tests.

In some cases, like negative or large enough "from" angles, the angleStart
variable would fall outside of the 0-360 range, making the center offset
adjust to always fall in the last quadrant instead of the correct one.

This commit normalizes the starting angle to fall between 0-360 when
calculating the quadrant. While it makes the positive "from" angle test
cases to pass, there are still some issues with negative "from", drawing
slightly offset/slanted section borders, likely due to precision issues.

  • platform/graphics/cairo/GradientCairo.cpp:

(WebCore::normalizeAngle): Added helper.
(WebCore::addConicSector): Check quadrant with a normalized (0-360) angle.

LayoutTests:

  • platform/glib/TestExpectations: Unskip and mark as passing to override root dir.
6:11 AM Changeset in webkit [277856] by Alan Bujtas
  • 5 edits
    2 adds in trunk

[LFC][TFC][Quirks] Use box-sizing: border-box when computing cell height
https://bugs.webkit.org/show_bug.cgi?id=226063

Reviewed by Simon Fraser.

Source/WebCore:

Test: fast/layoutformattingcontext/table-simple-quirk-td-height-with-padding.html

  • layout/Verification.cpp:

(WebCore::Layout::LayoutContext::verifyAndOutputMismatchingLayoutTree):

  • layout/formattingContexts/table/TableFormattingContext.cpp:

(WebCore::Layout::TableFormattingContext::layoutCell):

  • layout/formattingContexts/table/TableFormattingGeometry.cpp:

(WebCore::Layout::TableFormattingGeometry::cellBoxContentHeight const):
(WebCore::Layout::TableFormattingGeometry::cellHeigh const): Deleted.

  • layout/formattingContexts/table/TableFormattingGeometry.h:

LayoutTests:

  • fast/layoutformattingcontext/table-simple-quirk-td-height-with-padding-expected.html: Added.
  • fast/layoutformattingcontext/table-simple-quirk-td-height-with-padding.html: Added.
5:23 AM Changeset in webkit [277855] by Chris Lord
  • 2 edits in trunk/Source/WebCore

[GTK] REGRESSION: Broken scrolling on element.io with async scrolling
https://bugs.webkit.org/show_bug.cgi?id=222265

Reviewed by Carlos Garcia Campos.

Fix transform order for layer clipping in TextureMapperLayer.

No new tests.

  • platform/graphics/texmap/TextureMapperLayer.cpp:

(WebCore::TextureMapperLayer::paintSelfAndChildren):

4:48 AM Changeset in webkit [277854] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebCore

Detect invalid InlinePathData in FillInlinePath
https://bugs.webkit.org/show_bug.cgi?id=225693

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

Detect invalid InlinePathData in FillInlinePath.

  • platform/graphics/displaylists/DisplayListItems.h:

(WebCore::DisplayList::InlinePathDataStorage::InlinePathDataStorage):
(WebCore::DisplayList::InlinePathDataStorage::isValid const):
(WebCore::DisplayList::FillInlinePath::FillInlinePath):
(WebCore::DisplayList::FillInlinePath::path const): Deleted.

3:16 AM Changeset in webkit [277853] by Sam Sneddon
  • 65 edits in trunk

Fix Python 3.6+ DeprecationWarnings about unknown escapes
https://bugs.webkit.org/show_bug.cgi?id=226018

Reviewed by Jonathan Bedard.

Fix Python 3.6+ DeprecationWarnings about unknown escapes

PerformanceTests:

  • JetStream2/RAMification.py:
  • JetStream2/RexBench/FlightPlanner/convert-nfdc.py:
  • RexBench/FlightPlanner/convert-nfdc.py:

Source/JavaScriptCore:

  • wasm/generateWasmB3IRGeneratorInlinesHeader.py:

Source/WebCore:

No new tests.

  • Modules/webgpu/WHLSL/WHLSLBuildStandardLibraryFunctionMap.py:

Tools:

  • CISupport/build-webkit-org/loadConfig.py:

(getTagsForBuilder):

  • CISupport/build-webkit-org/steps.py:

(RunGLibAPITests.commandComplete):
(RunWebDriverTests.commandComplete):

  • CISupport/ews-app/ews/common/bugzilla.py:

(BugzillaBeautifulSoup._parse_attachment_ids_request_query):

  • CISupport/ews-app/ews/common/buildbot.py:

(Buildbot._get_display_name_from_builder_name):

  • CISupport/ews-build/loadConfig.py:

(getTagsForBuilder):

  • CISupport/ews-build/steps.py:

(CleanUpGitIndexLock.start):
(FindModifiedLayoutTests):
(BuildLogLineObserver.init):
(PushCommitToWebKitRepo):

  • CISupport/ews-build/steps_unittest.py:
  • Scripts/ic-stats.py:
  • Scripts/libraries/webkitscmpy/webkitscmpy/remote/svn.py:

(Svn):

  • Scripts/webkitpy/common/checkout/changelog.py:

(parse_bug_id_from_changelog):
(ChangeLogEntry):
(update_with_unreviewed_message):
(set_reviewer):

  • Scripts/webkitpy/common/checkout/diff_parser.py:

(git_diff_to_svn_diff):

  • Scripts/webkitpy/common/checkout/diff_test_data.py:
  • Scripts/webkitpy/common/checkout/scm/commitmessage.py:

(_first_non_empty_line_after_index):
(CommitMessage.description):

  • Scripts/webkitpy/common/checkout/scm/git.py:

(Git.commit_success_regexp):
(Git.timestamp_of_revision):
(Git.git_commit_from_svn_revision):

  • Scripts/webkitpy/common/checkout/scm/scm.py:

(SCM.strip_r_from_svn_revision):

  • Scripts/webkitpy/common/checkout/scm/svn.py:

(SVN.commit_success_regexp):
(SVN.revisions_changing_file):

  • Scripts/webkitpy/common/checksvnconfigfile.py:

(check):

  • Scripts/webkitpy/common/config/contributionareas.py:

(ContributionAreas._split_camelcase):

  • Scripts/webkitpy/common/config/urls.py:
  • Scripts/webkitpy/common/find_files_unittest.py:

(TestWinNormalize.assert_filesystem_normalizes):

  • Scripts/webkitpy/common/net/bugzilla/bug.py:

(Bug.commit_revision):

  • Scripts/webkitpy/common/net/bugzilla/bugzilla.py:

(BugzillaQueries._parse_attachment_ids_request_query):
(Bugzilla._parse_bug_id_from_attachment_page):
(Bugzilla._parse_attachment_id_from_add_patch_to_bug_response):
(Bugzilla._check_create_bug_response):

  • Scripts/webkitpy/common/net/buildbot/buildbot.py:

(BuildBot._parse_current_build_cell):

  • Scripts/webkitpy/common/net/credentials.py:

(Credentials._parse_security_tool_output):

  • Scripts/webkitpy/common/net/resultsjsonparser_unittest.py:

(ParsedJSONResultsTest):

  • Scripts/webkitpy/common/system/crashlogs.py:

(CrashLogs.get_timestamp_from_log):

  • Scripts/webkitpy/common/system/crashlogs_unittest.py:
  • Scripts/webkitpy/common/system/platforminfo.py:

(PlatformInfo.available_sdks):

  • Scripts/webkitpy/common/system/user.py:

(User._wait_on_list_response):

  • Scripts/webkitpy/common/watchlist/watchlistparser.py:

(WatchListParser._rule_definitions_as_set):

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

(TestExpectationParser):
(TestExpectationParser._parse_modifiers):
(TestExpectationParser._tokenize_line):

  • Scripts/webkitpy/performance_tests/perftest.py:

(PerfTest):

  • Scripts/webkitpy/port/base.py:

(Port._natural_sort_key):

  • Scripts/webkitpy/port/driver.py:

(DriverOutput):
(Driver._check_for_driver_timeout):
(Driver._check_for_driver_crash_or_unresponsiveness):

  • Scripts/webkitpy/port/image_diff.py:

(ImageDiffer._read):

  • Scripts/webkitpy/port/win.py:

(WinPort.write_registry_value):

  • Scripts/webkitpy/pytest.ini:
  • Scripts/webkitpy/style/checker.py:

(CheckerDispatcher._should_skip_file_path):

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

(ChangeLogChecker.check_entry):

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

(CMakeChecker._process_line):
(CMakeChecker._check_no_space_cmds):
(CMakeChecker._check_one_space_cmds):
(CMakeChecker._check_non_lowercase_cmd):
(CMakeChecker._check_list_order):

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

(FileInfo.repository_name):
(check_for_non_standard_constructs):
(check_spacing):
(check_language):

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

(map_functions_to_dict):
(strip_trailing_blank_lines_and_comments):

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

(MessagesInChecker.check_WTF_prefix):

  • Scripts/webkitpy/style/patchreader.py:

(PatchReader.check):

  • Scripts/webkitpy/test/runner.py:
  • Scripts/webkitpy/test/runner_unittest.py:

(FakeLoader.init):

  • Scripts/webkitpy/tool/commands/analyzechangelog.py:

(AnalyzeChangeLog._enumerate_changelogs):

  • Scripts/webkitpy/tool/commands/queries.py:

(PrintBaselines.init):
(FindResolvedBugs.execute):

  • Scripts/webkitpy/tool/commands/upload.py:

(MarkBugFixed._determine_bug_id_and_svn_revision):

  • Scripts/webkitpy/tool/steps/promptforbugortitle.py:

(PromptForBugOrTitle.run):

  • Scripts/webkitpy/w3c/test_converter.py:

(_W3CTestConverter.init):
(_W3CTestConverter.read_webkit_prefixed_css_property_list):
(_W3CTestConverter.legacy_read_webkit_prefixed_css_property_list):

  • Scripts/webkitpy/w3c/test_parser.py:

(TestParser.support_files):

  • lldb/lldb_dump_class_layout.py:

(LLDBDebuggerInstance._get_first_file_architecture):

Websites/browserbench.org:

  • JetStream2.0/RexBench/FlightPlanner/convert-nfdc.py:
2:53 AM Changeset in webkit [277852] by youenn@apple.com
  • 18 edits
    7 adds in trunk/Source

Implement a remote Internal Unit in GPUProcess for audio MediaStreamTrack rendering
https://bugs.webkit.org/show_bug.cgi?id=225603
Source/WebCore:

<rdar://problem/78114391>

Reviewed by Eric Carlson.

Fixed the case where we were calling start even though a source was already being played.
This is more consistent since we are doing those checks for stop.
Reduce the code where we lock sources to the minimum.

In case we want to lock the sources copy in audio thread and we fail, continue rendering audio instead of dropping everything.
Add some main thread assertions in AudioMediaStreamTrackRendererUnit methods.

Manually tested.

  • platform/mediastream/cocoa/AudioMediaStreamTrackRendererUnit.cpp:

(WebCore::AudioMediaStreamTrackRendererUnit::addSource):
(WebCore::AudioMediaStreamTrackRendererUnit::removeSource):
(WebCore::AudioMediaStreamTrackRendererUnit::render):

Source/WebKit:

Reviewed by Eric Carlson.

Implement an InternalUnit by creating a ring buffer that gets written on WebProcess and read on GPUProcess by an audio unit.
In the previous implementation, each audio track was sent to GPUProcess that was doing the mixing.
Sending was done by sending IPC message for each audio sample, which was also processing inefficient.

We are now creating an Audio Unit in GPUProcess and similarly to WebAudio asking WebProcess to render audio in a buffer that will be actually rendered by the audio unit.
The mixing happens in WebProcess so only one buffer is shared between GPUProcess and WebProcess, and no IPC message is sent for each chunk.

The potential downside is that the mixing is done with fixed chunk size instead of chunk size requested by the audio unit.
This might trigger some latency or some overhead if the fixed chunk size is too far from what the audio unit is asking.

In case of GPUProcess crash, we keep the same format description but we delay recreation of the unit if the unit is stopped.

  • DerivedSources-input.xcfilelist:
  • DerivedSources-output.xcfilelist:
  • DerivedSources.make:
  • GPUProcess/GPUConnectionToWebProcess.cpp:

(WebKit::GPUConnectionToWebProcess::audioMediaStreamTrackRendererInternalUnitManager):
(WebKit::GPUConnectionToWebProcess::dispatchMessage):

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

(WebKit::RemoteAudioMediaStreamTrackRenderer::start):

  • GPUProcess/webrtc/RemoteAudioMediaStreamTrackRendererInternalUnitManager.cpp: Added.

(WebKit::RemoteAudioMediaStreamTrackRendererInternalUnitManager::RemoteAudioMediaStreamTrackRendererInternalUnitManager):
(WebKit::RemoteAudioMediaStreamTrackRendererInternalUnitManager::~RemoteAudioMediaStreamTrackRendererInternalUnitManager):
(WebKit::RemoteAudioMediaStreamTrackRendererInternalUnitManager::createUnit):
(WebKit::RemoteAudioMediaStreamTrackRendererInternalUnitManager::deleteUnit):
(WebKit::RemoteAudioMediaStreamTrackRendererInternalUnitManager::startUnit):
(WebKit::RemoteAudioMediaStreamTrackRendererInternalUnitManager::stopUnit):
(WebKit::RemoteAudioMediaStreamTrackRendererInternalUnitManager::setAudioOutputDevice):
(WebKit::renderCallback):
(WebKit::RemoteAudioMediaStreamTrackRendererInternalUnitManager::Unit::Unit):
(WebKit::RemoteAudioMediaStreamTrackRendererInternalUnitManager::Unit::~Unit):
(WebKit::RemoteAudioMediaStreamTrackRendererInternalUnitManager::Unit::start):
(WebKit::RemoteAudioMediaStreamTrackRendererInternalUnitManager::Unit::stop):
(WebKit::RemoteAudioMediaStreamTrackRendererInternalUnitManager::Unit::setAudioOutputDevice):
(WebKit::RemoteAudioMediaStreamTrackRendererInternalUnitManager::Unit::render):

  • GPUProcess/webrtc/RemoteAudioMediaStreamTrackRendererInternalUnitManager.h: Added.
  • GPUProcess/webrtc/RemoteAudioMediaStreamTrackRendererInternalUnitManager.messages.in: Added.
  • Scripts/webkit/messages.py:

(types_that_cannot_be_forward_declared):

  • Sources.txt:
  • SourcesCocoa.txt:
  • WebKit.xcodeproj/project.pbxproj:
  • WebProcess/GPU/GPUProcessConnection.h:
  • WebProcess/GPU/webrtc/AudioMediaStreamTrackRenderer.cpp:

(WebKit::AudioMediaStreamTrackRenderer::start):

  • WebProcess/GPU/webrtc/AudioMediaStreamTrackRenderer.h:
  • WebProcess/GPU/webrtc/AudioMediaStreamTrackRendererInternalUnitIdentifier.h: Added.
  • WebProcess/GPU/webrtc/AudioMediaStreamTrackRendererInternalUnitManager.cpp: Added.

(WebKit::AudioMediaStreamTrackRendererInternalUnitManager::add):
(WebKit::AudioMediaStreamTrackRendererInternalUnitManager::remove):
(WebKit::AudioMediaStreamTrackRendererInternalUnitManager::createRemoteInternalUnit):
(WebKit::AudioMediaStreamTrackRendererInternalUnitManager::gpuProcessConnectionClosed):
(WebKit::AudioMediaStreamTrackRendererInternalUnitManager::Proxy::Proxy):
(WebKit::AudioMediaStreamTrackRendererInternalUnitManager::Proxy::~Proxy):
(WebKit::AudioMediaStreamTrackRendererInternalUnitManager::Proxy::createRemoteUnit):
(WebKit::AudioMediaStreamTrackRendererInternalUnitManager::Proxy::initialize):
(WebKit::AudioMediaStreamTrackRendererInternalUnitManager::Proxy::start):
(WebKit::AudioMediaStreamTrackRendererInternalUnitManager::Proxy::storageChanged):
(WebKit::AudioMediaStreamTrackRendererInternalUnitManager::Proxy::stop):
(WebKit::AudioMediaStreamTrackRendererInternalUnitManager::Proxy::setAudioOutputDevice):
(WebKit::AudioMediaStreamTrackRendererInternalUnitManager::Proxy::retrieveFormatDescription):
(WebKit::AudioMediaStreamTrackRendererInternalUnitManager::Proxy::stopThread):
(WebKit::AudioMediaStreamTrackRendererInternalUnitManager::Proxy::startThread):
(WebKit::AudioMediaStreamTrackRendererInternalUnitManager::Proxy::restartIfNeeded):

  • WebProcess/GPU/webrtc/AudioMediaStreamTrackRendererInternalUnitManager.h: Added.
  • WebProcess/GPU/webrtc/AudioMediaStreamTrackRendererInternalUnitManager.messages.in: Added.
  • WebProcess/WebProcess.cpp:

(WebKit::WebProcess::audioMediaStreamTrackRendererInternalUnitManager):

  • WebProcess/WebProcess.h:
  • WebProcess/cocoa/UserMediaCaptureManager.cpp:

(WebKit::UserMediaCaptureManager::setupCaptureProcesses):

2:31 AM Changeset in webkit [277851] by Angelos Oikonomopoulos
  • 2 edits in trunk/JSTests

Unskip type-check-hoisting-phase-hoist-check-structure-on-tdz-this-value on MIPS
https://bugs.webkit.org/show_bug.cgi?id=226011

Unreviewed gardening.

Appears to no longer be flaky.

  • stress/type-check-hoisting-phase-hoist-check-structure-on-tdz-this-value.js:

May 20, 2021:

11:35 PM Changeset in webkit [277850] by sbarati@apple.com
  • 12 edits
    1 add in trunk

[ Catalina Release JSC] A large number of JSC test appear to be flaky failing
https://bugs.webkit.org/show_bug.cgi?id=225998
<rdar://problem/78235001>

Reviewed by Yusuke Suzuki.

JSTests:

  • stress/dont-link-virtual-calls-on-compiler-thread.js: Added.

Source/JavaScriptCore:

This patch is fixing some fallout from moving JIT::link() to a background
thread:

  1. We can't shrink the CodeBlock's constant pool on a background thread

since we read from it without grabbing a lock on the main thread (when
reading things off the stack in slow path calls).

  1. We can't create GCAwareJITStubRoutines on the compilation thread, since

creating a GCAwareJITStubRoutines adds to a global hash table inside Heap. This
means that we have to do that step of emitting virtual calls for eval when
we're finalizing code on the main thread.

This patch also makes it so that a baseline JIT compilation thread is
correctly marked as such.

  • heap/JITStubRoutineSet.cpp:

(JSC::JITStubRoutineSet::add):

  • jit/AssemblyHelpers.cpp:

(JSC::AssemblyHelpers::emitUnlinkedVirtualCall):
(JSC::AssemblyHelpers::emitVirtualCall):

  • jit/AssemblyHelpers.h:
  • jit/JIT.cpp:

(JSC::JIT::link):
(JSC::JIT::finalizeOnMainThread):

  • jit/JIT.h:
  • jit/JITCall.cpp:

(JSC::JIT::compileCallEvalSlowCase):

  • jit/JITCall32_64.cpp:

(JSC::JIT::compileCallEvalSlowCase):

  • jit/JITWorklist.cpp:
9:14 PM Changeset in webkit [277849] by commit-queue@webkit.org
  • 4 edits in trunk

WKRemoteObjectRegistry _invokeMethod needs to check for nil completionHandlers
https://bugs.webkit.org/show_bug.cgi?id=225941

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

Source/WebKit:

_invokeMethod's argument-checking loop needs to be run
even if replyInfo is nil, as otherwise we can perform an invocation
if a method signature specifies a completion handler even though
none is provided.

  • Shared/API/Cocoa/_WKRemoteObjectRegistry.mm:

(-[_WKRemoteObjectRegistry _invokeMethod:]):

Tools:

Add an IPC test with a nil (really malformed) completion handler
that makes sure the invocation is not performed.

  • TestWebKitAPI/Tests/WebKitCocoa/IPCTestingAPI.mm:

(-[IPCTestingAPIDelegate sayHello:completionHandler:]):
(-[IPCTestingAPIDelegate sayHelloWasCalled]):
(TEST):

8:15 PM Changeset in webkit [277848] by Kyle Piddington
  • 2 edits in trunk/Source/ThirdParty/ANGLE

[Metal ANGLE] Handle NAN constant folding correctly
https://bugs.webkit.org/show_bug.cgi?id=226052

NAN values (0.0f/0.0f) were being handled incorrectly. MSL was being emitted as lowercase 'nanf', instead of NAN
Check for an unlikely NAN case, and emit correct MSL

Reviewed by Dean Jackson.

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

(GenMetalTraverser::emitSingleConstant):

7:43 PM Changeset in webkit [277847] by Chris Dumez
  • 16 edits in trunk/Source/WTF

Use CheckedLock more in WTF
https://bugs.webkit.org/show_bug.cgi?id=226045

Reviewed by Darin Adler.

Use CheckedLock more in WTF to benefit from Clang Thread Safety Analysis.

  • wtf/CrossThreadQueue.h:

(WTF::CrossThreadQueue<DataType>::append):
(WTF::CrossThreadQueue<DataType>::waitForMessage):
(WTF::CrossThreadQueue<DataType>::tryGetMessage):
(WTF::CrossThreadQueue<DataType>::kill):
(WTF::CrossThreadQueue<DataType>::isKilled const):
(WTF::CrossThreadQueue<DataType>::isEmpty const):

  • wtf/CrossThreadTaskHandler.cpp:

(WTF::CrossThreadTaskHandler::postTaskReply):
(WTF::CrossThreadTaskHandler::handleTaskRepliesOnMainThread):

  • wtf/CrossThreadTaskHandler.h:

(WTF::CrossThreadTaskHandler::WTF_GUARDED_BY_LOCK):

  • wtf/CryptographicallyRandomNumber.cpp:
  • wtf/FastMalloc.cpp:

(WTF::MallocCallTracker::recordMalloc):
(WTF::MallocCallTracker::recordRealloc):
(WTF::MallocCallTracker::recordFree):
(WTF::MallocCallTracker::dumpStats):

  • wtf/MessageQueue.h:

(WTF::MessageQueue<DataType>::append):
(WTF::MessageQueue<DataType>::appendAndKill):
(WTF::MessageQueue<DataType>::appendAndCheckEmpty):
(WTF::MessageQueue<DataType>::prepend):
(WTF::MessageQueue<DataType>::waitForMessageFilteredWithTimeout):
(WTF::MessageQueue<DataType>::tryGetMessage):
(WTF::MessageQueue<DataType>::takeAllMessages):
(WTF::MessageQueue<DataType>::tryGetMessageIgnoringKilled):
(WTF::MessageQueue<DataType>::removeIf):
(WTF::MessageQueue<DataType>::isEmpty):
(WTF::MessageQueue<DataType>::kill):
(WTF::MessageQueue<DataType>::killed const):

  • wtf/OSLogPrintStream.cpp:

(WTF::OSLogPrintStream::vprintf):

  • wtf/OSLogPrintStream.h:
  • wtf/ParallelJobsGeneric.h:

(WTF::ParallelEnvironment::ThreadPrivate::WTF_GUARDED_BY_LOCK):

  • wtf/ParallelVectorIterator.h:

(WTF::ParallelVectorIterator::iterate):
(WTF::ParallelVectorIterator::WTF_GUARDED_BY_LOCK):

  • wtf/ReadWriteLock.cpp:

(WTF::ReadWriteLock::readLock):
(WTF::ReadWriteLock::readUnlock):
(WTF::ReadWriteLock::writeLock):
(WTF::ReadWriteLock::writeUnlock):

  • wtf/ReadWriteLock.h:

(WTF::ReadWriteLock::WTF_GUARDED_BY_LOCK):

7:37 PM Changeset in webkit [277846] by Aditya Keerthi
  • 2 edits in trunk/Source/WebKit

[iOS][FCR] <select> options are unnecessarily truncated
https://bugs.webkit.org/show_bug.cgi?id=226048
<rdar://problem/76008154>

Reviewed by Tim Horton.

  • UIProcess/ios/forms/WKFormSelectPicker.mm:

(-[WKSelectPicker createMenu]):

UIMenu's currently limit action titles to two lines. Use SPI to remove
the limit and avoid unnecessary truncation.

7:21 PM Changeset in webkit [277845] by Chris Dumez
  • 2 edits in trunk/Source/WebCore

Fix locking in PlatformCALayer
https://bugs.webkit.org/show_bug.cgi?id=226062

Reviewed by Tim Horton.

Fix locking issue in PlatformCALayer found by Clang Thread Safety Analysis.
We were locking before querying layerToPlatformLayerMap(), but failing to
do so when adding or removing from layerToPlatformLayerMap().

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

(WebCore::WTF_REQUIRES_LOCK):
(WebCore::PlatformCALayer::platformCALayerForLayer):
(WebCore::PlatformCALayerCocoa::commonInit):
(WebCore::PlatformCALayerCocoa::~PlatformCALayerCocoa):
(WebCore::layerToPlatformLayerMap): Deleted.

6:56 PM Changeset in webkit [277844] by Chris Dumez
  • 3 edits in trunk/Source/WebCore

Add missing lock in AXIsolatedTree::treeForID()
https://bugs.webkit.org/show_bug.cgi?id=226060
<rdar://problem/78287227>

Reviewed by Alex Christensen.

Add missing lock in AXIsolatedTree::treeForID(). This was found via Clang Thread Safety
Analysis. This was the only call site that was failing to grab the s_cacheLock before
calling treeIDCache().

  • accessibility/isolatedtree/AXIsolatedTree.cpp:

(WebCore::AXIsolatedTree::treeForID):
(WebCore::AXIsolatedTree::create):
(WebCore::AXIsolatedTree::removeTreeForPageID):
(WebCore::AXIsolatedTree::treeForPageID):

  • accessibility/isolatedtree/AXIsolatedTree.h:
6:28 PM Changeset in webkit [277843] by Chris Dumez
  • 2 edits in trunk/Source/WTF

Add missing locks in Language.cpp
https://bugs.webkit.org/show_bug.cgi?id=226059

Reviewed by Alex Christensen.

Add missing locks in Language.cpp. This was found via Clang Thread Safety Analysis.
Some of the overrideUserPreferredLanguages() call sites were failing to grab the
lock first.

Also use NeverDestroyed in preferredLanguagesOverride() instead of LazyNeverDestroyed
with std::call_once. All call sites are already grabbing a lock so there is no need
for extra synchronization.

  • wtf/Language.cpp:

(WTF::WTF_REQUIRES_LOCK):
(WTF::userPreferredLanguagesOverride):
(WTF::overrideUserPreferredLanguages):
(WTF::userPreferredLanguages):
(WTF::preferredLanguagesOverride): Deleted.

5:40 PM Changeset in webkit [277842] by Russell Epstein
  • 1 copy in tags/Safari-612.1.15.1.7

Tag Safari-612.1.15.1.7.

5:38 PM Changeset in webkit [277841] by Russell Epstein
  • 8 edits in branches/safari-612.1.15.1-branch/Source

Versioning.

WebKit-7612.1.15.1.7

5:24 PM Changeset in webkit [277840] by Chris Lord
  • 6 edits in trunk

[WPE] Spatial navigation tests fail with async overflow scrolling enabled
https://bugs.webkit.org/show_bug.cgi?id=225922

Reviewed by Simon Fraser.

Source/WebCore:

Add absoluteClippedOverflowRectForSpatialNavigation for when the
clipped overflow rect not taking into account composited scrolling is
necessary.

No new tests, covered by existing tests.

  • accessibility/AccessibilityRenderObject.cpp:

(WebCore::AccessibilityRenderObject::isOffScreen const):

  • page/SpatialNavigation.cpp:

(WebCore::hasOffscreenRect):

  • rendering/RenderObject.h:

(WebCore::RenderObject::absoluteClippedOverflowRectForSpatialNavigation const):
(WebCore::RenderObject::visibleRectContextForSpatialNavigation):

LayoutTests:

Some spatial navigation tests now pass on WPE.

  • platform/wpe/TestExpectations:
5:15 PM Changeset in webkit [277839] by achristensen@apple.com
  • 5 edits in trunk

Unreviewed, reverting r277606.
rdar://78283324

Source/WebKit:

Need to wait for more projects to migrate to new API.

Reverted changeset:

"[Cocoa] Remove prototype loadSimulatedRequest methods"
https://bugs.webkit.org/show_bug.cgi?id=223658
https://commits.webkit.org/r277606

Tools:

Need to wait for more projects to migrate

Reverted changeset:

"[Cocoa] Remove prototype loadSimulatedRequest methods"
https://bugs.webkit.org/show_bug.cgi?id=223658
https://commits.webkit.org/r277606

5:14 PM Changeset in webkit [277838] by sbarati@apple.com
  • 4 edits in trunk/Source/JavaScriptCore

Make polymorphic calls play nice with Data Call ICs
https://bugs.webkit.org/show_bug.cgi?id=225793

Reviewed by Robin Morisset.

This patch makes it so that Polymorphic stubs don't repatch when using
Data Call ICs. We add a branch to the Data IC fast path to see if we're
polymorphic. If we are, then we either call or tail call the polymorphic
stub, depending on the CallLinkInfo's call type. This patch also changes
the polymorphic stub to handle being called instead of jumped to, since that
will now happen for Data ICs of non tail calls.

  • bytecode/CallLinkInfo.cpp:

(JSC::CallLinkInfo::setMonomorphicCallee):
(JSC::CallLinkInfo::callee):
(JSC::CallLinkInfo::visitWeak):
(JSC::CallLinkInfo::emitFastPathImpl):
(JSC::CallLinkInfo::revertCallToStub):
(JSC::CallLinkInfo::setStub):
(JSC::CallLinkInfo::emitFirstInstructionForDataIC): Deleted.

  • bytecode/CallLinkInfo.h:
  • jit/Repatch.cpp:

(JSC::linkPolymorphicCall):

4:39 PM Changeset in webkit [277837] by Kate Cheney
  • 27 edits in trunk

Mark ServiceWorkerThreadProxy with a default app-bound value
https://bugs.webkit.org/show_bug.cgi?id=223201
<rdar://problem/77664416>

Reviewed by Youenn Fablet.

Source/WebCore:

Service worker loads have their own document loader, so they don't
always get properly marked as app-bound based on the main frame
navigation. Prior fixes handled some fetch events, synthetic
responses, and soft updates. But we need to set a default value when
we install the service worker.

We had to pick a best-effort heuristic to do this. If any client for
the worker is app-bound, then all loads with that worker will be
marked app-bound.

  • testing/ServiceWorkerInternals.cpp:

(WebCore::ServiceWorkerInternals::lastNavigationWasAppBound):

  • testing/ServiceWorkerInternals.h:
  • testing/ServiceWorkerInternals.idl:
  • workers/WorkerRunLoop.h:

To test this, I added a new API to ServiceWorkerInternals to get the
worker's app bound value.

  • workers/service/ServiceWorkerClientData.cpp:

(WebCore::ServiceWorkerClientData::isolatedCopy const):
(WebCore::ServiceWorkerClientData::from):

  • workers/service/ServiceWorkerClientData.h:

(WebCore::ServiceWorkerClientData::encode const):
(WebCore::ServiceWorkerClientData::decode):
Store the main navigation app-bound value when we register a client.

  • workers/service/ServiceWorkerContextData.cpp:

(WebCore::ServiceWorkerContextData::isolatedCopy const):

  • workers/service/ServiceWorkerContextData.h:

(WebCore::ServiceWorkerContextData::encode const):
(WebCore::ServiceWorkerContextData::decode):

  • workers/service/context/ServiceWorkerThreadProxy.cpp:

(WebCore::ServiceWorkerThreadProxy::ServiceWorkerThreadProxy):
(WebCore::ServiceWorkerThreadProxy::lastNavigationWasAppBound):

  • workers/service/context/ServiceWorkerThreadProxy.h:
  • workers/service/server/RegistrationDatabase.cpp:

(WebCore::RegistrationDatabase::importRecords):

  • workers/service/server/SWServer.cpp:

(WebCore::SWServer::updateWorker):
(WebCore::SWServer::clientIsAppBoundForRegistrableDomain):
Best-effort heuristic to mark a load as app bound if any client for
that origin was registered as app-bound.

Source/WebKit:

  • NetworkProcess/ServiceWorker/WebSWServerConnection.cpp:

(WebKit::WebSWServerConnection::controlClient):

  • NetworkProcess/ServiceWorker/WebSWServerToContextConnection.cpp:

(WebKit::WebSWServerToContextConnection::updateAppBoundValue):

  • NetworkProcess/ServiceWorker/WebSWServerToContextConnection.h:
  • Scripts/webkit/messages.py:

(headers_for_type):

  • WebProcess/Storage/WebSWContextManagerConnection.cpp:

(WebKit::WebSWContextManagerConnection::updateAppBoundValue):

  • WebProcess/Storage/WebSWContextManagerConnection.h:
  • WebProcess/Storage/WebSWContextManagerConnection.messages.in:

Tools:

Test coverage.

  • TestWebKitAPI/Tests/WebKitCocoa/InAppBrowserPrivacy.mm:

(-[SWAppBoundRequestMessageHandler userContentController:didReceiveScriptMessage:]):

4:31 PM Changeset in webkit [277836] by Amir Mark Jr.
  • 2 edits in trunk/LayoutTests

[macOS] imported/w3c/web-platform-tests/IndexedDB/blob-valid-before-commit.any.html is a flaky failure
https://bugs.webkit.org/show_bug.cgi?id=226050

Unreviewed test gardening.

  • platform/mac/TestExpectations:
4:06 PM Changeset in webkit [277835] by eric.carlson@apple.com
  • 7 edits in trunk/Source/WebKit

Allow GPU process log channels to be configured
https://bugs.webkit.org/show_bug.cgi?id=226036
<rdar://problem/78271211>

Reviewed by Jer Noble.

  • GPUProcess/GPUConnectionToWebProcess.cpp:

(WebKit::GPUConnectionToWebProcess::configureLoggingChannel): Configure WebCore and
WebKit logging channels because classes used in the GPU process use both.

  • GPUProcess/GPUConnectionToWebProcess.h:
  • GPUProcess/GPUConnectionToWebProcess.messages.in:
  • WebProcess/GPU/GPUProcessConnection.cpp:

(WebKit::GPUProcessConnection::configureLoggingChannel): Send configureLoggingChannel
message to the GPU process.

  • WebProcess/GPU/GPUProcessConnection.h:
  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::configureLoggingChannel): Send configureLoggingChannel to the
GPU process connection, if there is one.

4:03 PM Changeset in webkit [277834] by Brent Fulgham
  • 2 edits in trunk/Source/WebKit

[Cocoa] Adopt "com.apple.QuartzCore.webkit-limited-types" entitlement
https://bugs.webkit.org/show_bug.cgi?id=226044
<rdar://problem/60549120>

Reviewed by Per Arne Vollan.

WebKit should adopt the "com.apple.QuartzCore.webkit-limited-types" entitlement as a further hardening measure to help
QuartzCore limit the features accessible from the WebContent and GPU Process. WebKit only needs a subset of the
features of QuartzCore, and this entitlement allows the framework to block certain code paths.

Tested by existing rendering test cases.

  • Scripts/process-entitlements.sh:
4:01 PM Changeset in webkit [277833] by weinig@apple.com
  • 2 edits in trunk/Source/WebCore

Fix inverted ASSERT in sampleColor.

Rubber-stamped by Tim Horton.

  • page/PageColorSampler.cpp:

(WebCore::sampleColor):

3:33 PM Changeset in webkit [277832] by Russell Epstein
  • 1 copy in tags/Safari-612.1.15.1.6

Tag Safari-612.1.15.1.6.

3:30 PM Changeset in webkit [277831] by Ruben Turcios
  • 1 copy in tags/Safari-612.1.15.0.3

Tag Safari-612.1.15.0.3.

3:25 PM Changeset in webkit [277830] by Alexey Shvayka
  • 121 edits
    9 adds
    3 deletes in trunk

[WebIDL] Remove [ImplicitThis] and [CustomProxyToJSObject] extended attributes
https://bugs.webkit.org/show_bug.cgi?id=223758

Reviewed by Sam Weinig.

LayoutTests/imported/w3c:

  • web-platform-tests/WebIDL/ecmascript-binding/global-object-implicit-this-value.any-expected.txt: Added.
  • web-platform-tests/WebIDL/ecmascript-binding/global-object-implicit-this-value.any.html: Added.
  • web-platform-tests/WebIDL/ecmascript-binding/global-object-implicit-this-value.any.js: Added.
  • web-platform-tests/WebIDL/ecmascript-binding/global-object-implicit-this-value.any.worker-expected.txt: Added.
  • web-platform-tests/WebIDL/ecmascript-binding/global-object-implicit-this-value.any.worker.html: Added.
  • web-platform-tests/webaudio/the-audio-api/the-audioworklet-interface/audioworklet-registerprocessor-called-on-globalthis.https-expected.txt: Added.
  • web-platform-tests/webaudio/the-audio-api/the-audioworklet-interface/audioworklet-registerprocessor-called-on-globalthis.https.html: Added.
  • web-platform-tests/webaudio/the-audio-api/the-audioworklet-interface/processors/dummy-processor-globalthis.js: Added.

Source/WebCore:

This change introduces castThisValue<JSClass>, taking a step towards unification of |this|
value casting between IDLAttribute and IDLOperation. The helper uses compile-time inheritance
check to provide implicit |this| value for DOM global objects [1], replacing [ImplicitThis]
extended attribute, which was removed from the spec [2] a while ago.

IDLAttribute can't perform toThis() with ECMAMode::strict(), like IDLOperation now does,
because CustomValue getters are called with |this| value of JSGlobalObject type, which gets
tainted by JSScope::toThis(). #225397 will remove the need for toThis(), finally making |this|
value casting consistent between attributes and operations.

Also, this patch fixes Object.create(window).location to throw as per spec [1] by removing
prototype chain traversal from toJSDOMWindow(), which aligns WebKit with Blink and Gecko.

As DOM global objects are wrapped in proxies and require special casting, toJSDOMWindow() and
friends are merged into toJSDOMGlobalObject<JSClass>, which is aware of inheritance / JSProxy.
It replaces [CustomProxyToJSObject] extended attribute, which could be missed when adding new
DOM global objects, fixing worklets' global functions not to throw when called on globalThis.

This change reduces WebCore --release binary size by 0.2% (147 KB).

[1] https://heycam.github.io/webidl/#dfn-attribute-getter (step 1.1.2.3)
[2] https://github.com/heycam/webidl/pull/155

Tests: imported/w3c/web-platform-tests/WebIDL/ecmascript-binding/global-object-implicit-this-value.any.js

imported/w3c/web-platform-tests/webaudio/the-audio-api/the-audioworklet-interface/audioworklet-registerprocessor-called-on-globalthis.https.html
fast/css-custom-paint/registerPaintBindings.html
http/tests/security/listener/*.html

  • Headers.cmake:
  • Modules/webaudio/AudioWorkletGlobalScope.idl:
  • WebCore.xcodeproj/project.pbxproj:
  • bindings/js/JSDOMAttribute.h:

(WebCore::IDLAttribute::set):
(WebCore::IDLAttribute::setPassingPropertyName):
(WebCore::IDLAttribute::get):
(WebCore::IDLAttribute::getPassingPropertyName):

  • bindings/js/JSDOMCastThisValue.h: Added.

(WebCore::castThisValue):

  • bindings/js/JSDOMCastedThisErrorBehavior.h: Removed.
  • bindings/js/JSDOMGlobalObject.h:

(WebCore::toJSDOMGlobalObject):

  • bindings/js/JSDOMOperation.h:

(WebCore::IDLOperation::cast):

  • bindings/js/JSDOMWindowBase.cpp:
  • bindings/js/JSDOMWindowBase.h:

(WebCore::toJSDOMWindow):

  • bindings/js/JSDOMWindowCustom.cpp:

(WebCore::JSC_DEFINE_CUSTOM_GETTER):
(WebCore::IDLOperation<JSDOMWindow>::cast): Deleted.

  • bindings/js/JSDocumentCustom.cpp:

(WebCore::cachedDocumentWrapper):

  • bindings/js/JSEventTargetCustom.cpp:

(WebCore::jsEventTargetCast):

  • bindings/js/JSEventTargetCustom.h:

(WebCore::IDLOperation<JSEventTarget>::call):

  • bindings/js/JSRemoteDOMWindowBase.cpp:

(WebCore::toJSRemoteDOMWindow): Deleted.

  • bindings/js/JSRemoteDOMWindowBase.h:
  • bindings/js/JSWorkerGlobalScopeBase.cpp:

(WebCore::toJSDedicatedWorkerGlobalScope): Deleted.
(WebCore::toJSWorkerGlobalScope): Deleted.
(WebCore::toJSServiceWorkerGlobalScope): Deleted.

  • bindings/js/JSWorkerGlobalScopeBase.h:
  • bindings/js/JSWorkletGlobalScopeBase.cpp:

(WebCore::toJSWorkletGlobalScope): Deleted.

  • bindings/js/JSWorkletGlobalScopeBase.h:
  • bindings/scripts/CodeGeneratorJS.pm:

(ShouldGenerateToJSDeclaration):
(IsAcceleratedDOMAttribute):
(GenerateImplementation):

  • bindings/scripts/IDLAttributes.json:
  • bindings/scripts/test/JS/*: Updated.
  • inspector/InspectorController.cpp:

(WebCore::InspectorController::canAccessInspectedScriptState const):

  • page/DOMWindow.idl:
  • page/RemoteDOMWindow.idl:
  • workers/DedicatedWorkerGlobalScope.idl:
  • workers/WorkerGlobalScope.idl:
  • workers/service/ServiceWorkerGlobalScope.idl:
  • worklets/PaintWorkletGlobalScope.idl:
  • worklets/WorkletGlobalScope.idl:

Source/WebKit:

Use inherits<T> instead of toJSDOMWindow() if the value is never a JSProxy.

  • WebProcess/InjectedBundle/InjectedBundle.cpp:

(WebKit::InjectedBundle::reportException):

Source/WebKitLegacy/mac:

Use inherits<T> instead of toJSDOMWindow() if the value is never a JSProxy.

  • WebView/WebView.mm:

(+[WebView _reportException:inContext:]):

Source/WebKitLegacy/win:

Use inherits<T> instead of toJSDOMWindow() if the value is never a JSProxy.

  • WebView.cpp:

(WebView::reportException):

LayoutTests:

  • fast/css-custom-paint/registerPaintBindings.html:
  • http/tests/security/listener/*:

This is a progression: Blink and Gecko don't call event listeners belonging to destroyed frames.

  • js/property-of-window-as-prototype-expected.txt: Removed.
  • js/property-of-window-as-prototype.html: Removed.
3:14 PM Changeset in webkit [277829] by Alexey Shvayka
  • 10 edits
    2 adds in trunk

Align internal methods of WindowProperties object with the spec
https://bugs.webkit.org/show_bug.cgi?id=222918

Reviewed by Sam Weinig.

LayoutTests/imported/w3c:

  • web-platform-tests/WebIDL/ecmascript-binding/class-string-named-properties-object.window-expected.txt:
  • web-platform-tests/WebIDL/ecmascript-binding/class-string-named-properties-object.window.js:
  • web-platform-tests/WebIDL/ecmascript-binding/window-named-properties-object-expected.txt: Added.
  • web-platform-tests/WebIDL/ecmascript-binding/window-named-properties-object.html: Added.
  • web-platform-tests/html/browsers/origin/cross-origin-objects/cross-origin-objects.html:
  • web-platform-tests/html/browsers/the-window-object/named-access-on-the-window-object/window-named-properties-expected.txt:
  • web-platform-tests/html/browsers/the-window-object/named-access-on-the-window-object/window-named-properties.html:

Source/WebCore:

This patch:

  1. Implements PreventExtensions?, DefineOwnProperty?, and Delete? methods that always fail [1], ensuring Set? with altered receiver is passed through, indexed properties are rejected as well, and an exception is thrown if neccessary.

Adding a put() override would a) slow down global var creation and b) require factoring out most of
JSObject::putInlineSlow(). Instead, we prevent extensions on a structure while defining isExtensible()
override to cover that up.

  1. Corrects property attributes reported by GetOwnProperty? methods of cross-origin WindowProxy [2] and WindowProperties, bringing these objects in compliance with invariants of internal methods [3].
  1. Removes comments on cross-browser differences and priority order from GetOwnProperty? because it correctly implements the now detailed spec [4]. Browsing contexts precedence is covered by wpt/html/browsers/the-window-object/named-access-on-the-window-object/named-objects.html test.
  1. Asserts that WindowProperties Prototype? is an object, as guaranteed by its SetPrototypeOf?.

This change fully implements the current spec, aligning WebKit with Blink and Gecko.

[1] https://heycam.github.io/webidl/#named-properties-object-defineownproperty
[2] https://html.spec.whatwg.org/multipage/window-object.html#windowproxy-getownproperty (step 6.2)
[3] https://tc39.es/ecma262/#sec-invariants-of-the-essential-internal-methods
[4] https://html.spec.whatwg.org/multipage/window-object.html#dom-window-nameditem (step 2)

Tests: imported/w3c/web-platform-tests/WebIDL/ecmascript-binding/window-named-properties-object.html

imported/w3c/web-platform-tests/html/browsers/origin/cross-origin-objects/cross-origin-objects.html
imported/w3c/web-platform-tests/html/browsers/the-window-object/named-access-on-the-window-object/window-named-properties.html

  • bindings/js/JSDOMWindowCustom.cpp:

(WebCore::jsDOMWindowGetOwnPropertySlotRestrictedAccess):

  • bindings/js/JSDOMWindowProperties.cpp:

(WebCore::jsDOMWindowPropertiesGetOwnPropertySlotNamedItemGetter):
(WebCore::JSDOMWindowProperties::finishCreation):
(WebCore::JSDOMWindowProperties::getOwnPropertySlot):
(WebCore::JSDOMWindowProperties::deleteProperty):
(WebCore::JSDOMWindowProperties::deletePropertyByIndex):
(WebCore::JSDOMWindowProperties::preventExtensions):
(WebCore::JSDOMWindowProperties::isExtensible):
(WebCore::JSDOMWindowProperties::defineOwnProperty):

  • bindings/js/JSDOMWindowProperties.h:
3:10 PM Changeset in webkit [277828] by Adrian Perez de Castro
  • 4 edits
    1 delete in trunk

[Flatpak SDK] Remove PHP packages
https://bugs.webkit.org/show_bug.cgi?id=226037

Reviewed by Philippe Normand.

Remove the PHP package from the SDK now that the layout tests do not use PHP.

Tools/buildstream:

  • elements/test-infra.bst: Remove php.bst from the element list.
  • elements/test-infra/php.bst: Removed.

LayoutTests:

  • http/conf/flatpak-httpd.conf: Remove usage of mod_php7.
2:53 PM Changeset in webkit [277827] by Devin Rousso
  • 2 edits in trunk/Source/WebKit

REGRESSION(r277505): Crash under WTF::Detail::CallableWrapper<WebKit::WebPageProxy::setUnderPageBackgroundColorOverride(WebCore::Color&&)::$_10, void>::call
https://bugs.webkit.org/show_bug.cgi?id=225979
<rdar://problem/78130098>

Reviewed by Tim Horton.

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::setUnderPageBackgroundColorOverride):
Semi-speculative fix by checking the weakly-held PageClient before attempting to use it.
Dissasembly suggests this as the cause as the invalid access occurs early in the lambda.

2:46 PM Changeset in webkit [277826] by zhifei_fang@apple.com
  • 2 edits in trunk/Websites/perf.webkit.org

Need to use default git pull to remove the fake svn commit when syncing with SVN
https://bugs.webkit.org/show_bug.cgi?id=226039

Reviewed by Jonathan Bedard.

  • tools/sync-commits.py:

(GitRepository._fetch_remote):

2:28 PM Changeset in webkit [277825] by aakash_jain@apple.com
  • 3 edits in trunk/Tools

Use Python 3 for running various scripts on EWS
https://bugs.webkit.org/show_bug.cgi?id=226041

Reviewed by Jonathan Bedard.

  • CISupport/ews-build/steps.py: Use Python 3.

(CleanBuild):
(TriggerCrashLogSubmission):
(WaitForCrashCollection):
(ArchiveBuiltProduct):
(ExtractBuiltProduct):

  • CISupport/ews-build/steps_unittest.py: Updated unit-tests.
2:26 PM Changeset in webkit [277824] by Kyle Piddington
  • 10 edits in trunk/Source/ThirdParty/ANGLE

Red flashes zooming on Google Maps when using external monitor on multi-gpu systems
https://bugs.webkit.org/show_bug.cgi?id=225956
<rdar://77024179>

Reviewed by Dean Jackson.
IOSurface presentation swaps require that a command buffer is queued for execution before
swapping. Otherwise, we're liable to drop frames, or present old IOSurface buffers.
Ensure work flushed via glFlush completes before presenation by waiting for it to enqueue before
swapping a surface.

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

(rx::ContextMtl::flush):

  • src/libANGLE/renderer/metal/mtl_command_buffer.h:
  • src/libANGLE/renderer/metal/mtl_command_buffer.mm:

(rx::mtl::CommandBuffer::waitUntilScheduled):
(rx::mtl::CommandBuffer::commitImpl):

2:25 PM Changeset in webkit [277823] by dino@apple.com
  • 2 edits in trunk/Source/WebKit

Configure fullscreen view after it has transitioned
https://bugs.webkit.org/show_bug.cgi?id=226031
<rdar://problem/78277029>

Reviewed by Tim Horton.

Call an internal configuration method after the fullscreen transition.

  • UIProcess/ios/fullscreen/WKFullScreenWindowControllerIOS.mm:

(-[WKFullScreenWindowController beganEnterFullScreenWithInitialFrame:finalFrame:]):

2:11 PM Changeset in webkit [277822] by Brent Fulgham
  • 3 edits in trunk/Source/WebKit

[macOS] Allow access to the 'DiskImageURL' IOKit property
https://bugs.webkit.org/show_bug.cgi?id=226033
<rdar://problem/78199855>

Reviewed by Per Arne Vollan.

Access to certain disk image types is affected by the ability to read the DiskImageURL IOKit property. Since file
URLs may reference such locations (and indeed, telemetry shows that this is happening) we should grant this property
access to avoid users encountering file access errors when attempting to load content backed by relevant disk images.

  • GPUProcess/mac/com.apple.WebKit.GPUProcess.sb.in:
  • WebProcess/com.apple.WebProcess.sb.in:
2:07 PM Changeset in webkit [277821] by Chris Dumez
  • 2 edits in trunk/Source/WebCore

WebAudioBufferList::setSampleCount() should early return if computeBufferSizes() fails
https://bugs.webkit.org/show_bug.cgi?id=226028
rdar://78222414

Reviewed by Eric Carlson.

If computeBufferSizes() fails (returns WTF::nullopt), we now early return on release
builds, without modifying the WebAudioBufferList's internal state in any way. In
Debug, we would still hit the assertion.

  • platform/audio/cocoa/WebAudioBufferList.cpp:

(WebCore::WebAudioBufferList::setSampleCount):

12:59 PM Changeset in webkit [277820] by timothy_horton@apple.com
  • 3 edits in trunk/Source/WebKit

Move off UIKit IPI in WKMouseGestureRecognizer
https://bugs.webkit.org/show_bug.cgi?id=226030
rdar://78266173

Reviewed by Devin Rousso and Wenson Hsieh.

Use UIGestureRecognizerDelegate instead of IPI.

  • UIProcess/ios/WKContentViewInteraction.mm:

(-[WKContentView gestureRecognizer:shouldReceiveTouch:]):
(-[WKContentView gestureRecognizer:shouldReceivePress:]):

  • UIProcess/ios/WKMouseGestureRecognizer.mm:

(-[WKMouseGestureRecognizer _shouldReceiveTouch:forEvent:recognizerView:]): Deleted.
(-[WKMouseGestureRecognizer _shouldReceivePress:]): Deleted.

12:51 PM Changeset in webkit [277819] by Russell Epstein
  • 1 copy in tags/Safari-612.1.12.11

Tag Safari-612.1.12.11.

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

HTML parser should yield more aggressively
https://bugs.webkit.org/show_bug.cgi?id=224609
rdar://73458064

Reviewed by Darin Adler.

During page loading we may spend substantial amount of time in individual invocations of
the HTML parser. This can be a problem since it blocks rendering updates and so visual
page load progression.

Most of this time is not actually spend parsing, it rather goes into synchronous script
execution and DOM work triggered by scripts. This patch adds a more effective mechanism
where we may decide to yield the parser before executing a script.

  • dom/ScriptElement.h:
  • html/parser/HTMLDocumentParser.cpp:

(WebCore::HTMLDocumentParser::pumpTokenizerLoop):

  • html/parser/HTMLParserScheduler.cpp:

(WebCore::parserTimeLimit):
(WebCore::PumpSession::PumpSession):
(WebCore::HTMLParserScheduler::HTMLParserScheduler):
(WebCore::HTMLParserScheduler::shouldYieldBeforeExecutingScript):

Consider yielding before script execution after 16ms has elapsed and at least 256 tokens have been parsed.
Only yield for synchronous scripts.
Don't yield on very short inline scripts (this is an imperfect way to try to guess the execution cost).

  • html/parser/HTMLParserScheduler.h:

(WebCore::HTMLParserScheduler::shouldYieldBeforeToken):
(WebCore::HTMLParserScheduler::checkForYield):

Don't reset the token count, instead track the last yield check point.

  • html/parser/HTMLTreeBuilder.h:

(WebCore::HTMLTreeBuilder::scriptToProcess const):

12:34 PM Changeset in webkit [277817] by rmorisset@apple.com
  • 2 edits in trunk/Tools

The test of SmallSet.cpp should pass the right HashTrait to the HashSet it uses as a reference
https://bugs.webkit.org/show_bug.cgi?id=226027

Reviewed by Mark Lam.

SmallSet allows all values except for the max value.
So we test it on small values, including 0.

HashSet by default forbids 0, so it made the test crash.
We can trivially fix it by passing UnsignedWithZeroKeyHashTraits, which allows everything which is not max() or max()-1

  • TestWebKitAPI/Tests/WTF/SmallSet.cpp:

(TestWebKitAPI::testSmallSetOfUnsigned):

12:25 PM Changeset in webkit [277816] by Chris Dumez
  • 2 edits in trunk/Source/WebCore

[Hardening] Use CheckedArithmetics in WebAudioBufferList constructor
https://bugs.webkit.org/show_bug.cgi?id=226029
<rdar://78222665>

Reviewed by Eric Carlson.

  • platform/audio/cocoa/WebAudioBufferList.cpp:

(WebCore::WebAudioBufferList::WebAudioBufferList):

12:09 PM Changeset in webkit [277815] by Alan Coon
  • 3 edits in branches/safari-611-branch

Cherry-pick r277713. rdar://problem/78264364

allowsContentJavaScript API not applied from defaultWebpagePreferences
https://bugs.webkit.org/show_bug.cgi?id=225957

Reviewed by Wenson Hsieh.

New API test: WebKit.AllowsContentJavaScriptFromDefaultPreferences

  • UIProcess/API/APIWebsitePolicies.cpp: (API::WebsitePolicies::copy const): allowsContentJavaScript works fine on the per-navigation-level WKWebpagePreferences, but is ignored if applied on the WKWebViewConfiguration's defaultWebpagePreferences, because it is not copied in copy(). Copy it!

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

12:09 PM Changeset in webkit [277814] by Alan Coon
  • 5 edits
    1 add in branches/safari-611-branch

Cherry-pick r277613. rdar://problem/78264256

REGRESSION (r271119): Object methods defined with shorthand notation cannot access "caller" in non-strict mode
https://bugs.webkit.org/show_bug.cgi?id=225277

Reviewed by Darin Adler.

JSTests:

  • stress/caller-and-arguments-properties-for-functions-that-dont-have-them.js: Now covers #157461 and #157863.
  • stress/function-caller-cross-realm-via-call-apply.js: Added, coverage for #34553.
  • stress/function-hidden-as-caller.js: Also adds test case for #102276.

Source/JavaScriptCore:

This patch loosens function.caller to allow non-strict getters, setters, arrow functions,
and ES6 methods to be returned as callers, fixing web compatibility.

The intent of r230662 is preserved: generator / async functions are never exposed. There is
no good way to acquire wrapper function from the internal body one, nor from its arguments.
Also, this behavior is on standards track [1] (seems to be considered desirable).

[1]: https://github.com/claudepache/es-legacy-function-reflection/blob/master/spec.md#get-functionprototypecaller (step 14)

  • runtime/JSFunction.cpp: (JSC::JSC_DEFINE_CUSTOM_GETTER):

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

12:09 PM Changeset in webkit [277813] by Alan Coon
  • 2 edits in branches/safari-611-branch/Source/JavaScriptCore

Cherry-pick r277477. rdar://problem/78264390

[REGRESSION: r271876] Web Inspector: [Cocoa] Remote inspection crashes when using WEB_THREAD
https://bugs.webkit.org/show_bug.cgi?id=225794

Reviewed by Devin Rousso.

For WEB_THREAD, move callback in dispatchAsyncOnTarget to block scope to ensure it is available for the
lifetime of the block.

  • inspector/remote/cocoa/RemoteConnectionToTargetCocoa.mm: (Inspector::RemoteConnectionToTarget::dispatchAsyncOnTarget):

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

12:09 PM Changeset in webkit [277812] by Alan Coon
  • 2 edits in branches/safari-611-branch/Source/WebCore

Cherry-pick r277390. rdar://problem/78264321

TapStorage::lock freed while locked in AudioSourceProviderAVFObjC::destroyMixIfNeeded()
https://bugs.webkit.org/show_bug.cgi?id=225706
<rdar://77719381>

Reviewed by Ryosuke Niwa.

In r275933, an update was made to protect access to TapStorage during destruction by
locking its lock inside destroyMixIfNeeded(), but if TapStorage has a refCount==1
during that teardown, the lock itself is destroyed while it is still held. Add an
explicit scoping to the lock holder, and only deref the TapStorage outside that
locking scope.

  • platform/graphics/avfoundation/AudioSourceProviderAVFObjC.mm: (WebCore::AudioSourceProviderAVFObjC::destroyMixIfNeeded):

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

12:09 PM Changeset in webkit [277811] by Alan Coon
  • 2 edits in branches/safari-611-branch/Source/WebKit

Cherry-pick r277375. rdar://problem/78264303

Crash in WebPageProxy::endColorPicker()
https://bugs.webkit.org/show_bug.cgi?id=225679

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

Make sure that endColorPicker() and didEndColorPicker()
do not both attempt to null-out m_colorPicker.

  • UIProcess/WebPageProxy.cpp: (WebKit::WebPageProxy::endColorPicker): (WebKit::WebPageProxy::didEndColorPicker):

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

12:09 PM Changeset in webkit [277810] by Alan Coon
  • 2 edits in branches/safari-611-branch/Source/ThirdParty/libwebrtc

Cherry-pick r277332. rdar://problem/78264344

Improve usrsctp restart handling
https://bugs.webkit.org/show_bug.cgi?id=225638
<rdar://77582953>

Reviewed by Alex Christensen.

  • Source/third_party/usrsctp/usrsctplib/usrsctplib/netinet/sctp_input.c: (sctp_process_cookie_existing):

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

12:09 PM Changeset in webkit [277809] by Alan Coon
  • 4 edits in branches/safari-611-branch/Source/WebCore

Cherry-pick r277232. rdar://problem/78264335

Add bounds checks around calls to GlyphBuffer::stringOffsetAt()
https://bugs.webkit.org/show_bug.cgi?id=225335
<rdar://problem/75663608>

Reviewed by Simon Fraser and Geoff Garen.

We're getting crash reports that look like they're from string offsets being out-of-bounds.
These string offsets round-trip through Core Text, which is allowed to modify them, which
can end up making them out-of-bounds.

No new tests because I don't have a reproducible test case; just crash reports.

  • platform/graphics/FontCascade.cpp: (WebCore::computeUnderlineType):
  • platform/graphics/GlyphBuffer.h: (WebCore::GlyphBuffer::uncheckedStringOffsetAt const): (WebCore::GlyphBuffer::checkedStringOffsetAt const): (WebCore::GlyphBuffer::stringOffsetAt const): Deleted.
  • platform/graphics/WidthIterator.cpp: (WebCore::WidthIterator::applyFontTransforms): (WebCore::WidthIterator::applyExtraSpacingAfterShaping):

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

12:09 PM Changeset in webkit [277808] by Sam Sneddon
  • 1 edit
    1 add in trunk/Tools

Add tox file for webkitpy
https://bugs.webkit.org/show_bug.cgi?id=226016

Reviewed by Jonathan Bedard.

  • Scripts/webkitpy/tox.ini: Added.
12:08 PM Changeset in webkit [277807] by Alan Coon
  • 5 edits in branches/safari-611-branch/Source

Cherry-pick r276788. rdar://problem/78264378

Reduce memory footprint for background tabs
https://bugs.webkit.org/show_bug.cgi?id=225007

Reviewed by Chris Dumez.

Source/WebKit:

When a WebContent process contains only non-visible pages (e.g. if it is a background tab),
we should attempt to reduce our memory footprint after some time interval to help relieve
system-wide memory pressure. This is enabled only on Mac because iOS already does something
similar just before WebContent suspends.

One exception to this is that we don't do this proactive slimming for processes that are in
the back/forward cache or in the WebProcess cache. This is because dropping the memory cache
in those types of processes leads to perf regressions in benchmarks that do certain types of
cross-origin navigations. We'll use a separate mechanism for controlling the memory usage of
those processes; our current logic keeps those processes around until we are at the warning
or critical memory pressure level.

  • WebProcess/WebProcess.cpp: (WebKit::WebProcess::pageDidEnterWindow): (WebKit::WebProcess::pageWillLeaveWindow): (WebKit::WebProcess::nonVisibleProcessGraphicsCleanupTimerFired): (WebKit::WebProcess::nonVisibleProcessMemoryCleanupTimerFired): (WebKit::WebProcess::nonVisibleProcessCleanupTimerFired): Deleted.
  • WebProcess/WebProcess.h:

Source/WTF:

Add an option to slim background tabs by proactively calling WebCore::releaseMemory on Macs.

  • wtf/PlatformEnableCocoa.h:

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

11:44 AM Changeset in webkit [277806] by Chris Dumez
  • 3 edits in trunk/Source/WebKit

Use CheckedLock more in IPC::Connection
https://bugs.webkit.org/show_bug.cgi?id=226021

Reviewed by Darin Adler.

Use CheckedLock more in IPC::Connection. This is heavily multithreaded code and
it would benefit significantly from Clang Thread Safety Analysis.

  • Platform/IPC/Connection.cpp:

(IPC::Connection::SyncMessageState::processIncomingMessage):
(IPC::Connection::enqueueMatchingMessagesToMessageReceiveQueue):
(IPC::Connection::addMessageReceiveQueue):
(IPC::Connection::addWorkQueueMessageReceiver):
(IPC::Connection::addThreadMessageReceiver):
(IPC::Connection::removeMessageReceiveQueue):
(IPC::Connection::sendMessage):
(IPC::Connection::waitForMessage):
(IPC::Connection::pushPendingSyncRequestID):
(IPC::Connection::popPendingSyncRequestID):
(IPC::Connection::waitForSyncReply):
(IPC::Connection::processIncomingSyncReply):
(IPC::Connection::processIncomingMessage):
(IPC::Connection::installIncomingSyncMessageCallback):
(IPC::Connection::uninstallIncomingSyncMessageCallback):
(IPC::Connection::hasIncomingSyncMessage):
(IPC::Connection::connectionDidClose):
(IPC::Connection::sendOutgoingMessages):
(IPC::Connection::enqueueIncomingMessage):
(IPC::Connection::dispatchMessage):
(IPC::Connection::dispatchOneIncomingMessage):
(IPC::Connection::dispatchIncomingMessages):

  • Platform/IPC/Connection.h:

(IPC::Connection::WTF_GUARDED_BY_LOCK):

11:41 AM Changeset in webkit [277805] by Chris Dumez
  • 46 edits in trunk/Source/WebCore

Use CheckedLock more in WebCore
https://bugs.webkit.org/show_bug.cgi?id=226026

Reviewed by Geoffrey Garen.

Use CheckedLock more in WebCore to benefit from Clang Thread Safety Analysis.

  • Modules/indexeddb/IDBObjectStore.cpp:

(WebCore::IDBObjectStore::createIndex):
(WebCore::IDBObjectStore::index):
(WebCore::IDBObjectStore::deleteIndex):
(WebCore::IDBObjectStore::rollbackForVersionChangeAbort):
(WebCore::IDBObjectStore::visitReferencedIndexes const):
(WebCore::IDBObjectStore::renameReferencedIndex):

  • Modules/indexeddb/IDBObjectStore.h:
  • Modules/indexeddb/IDBTransaction.cpp:

(WebCore::IDBTransaction::objectStore):
(WebCore::IDBTransaction::internalAbort):
(WebCore::IDBTransaction::createObjectStore):
(WebCore::IDBTransaction::renameObjectStore):
(WebCore::IDBTransaction::renameIndex):
(WebCore::IDBTransaction::deleteObjectStore):
(WebCore::IDBTransaction::visitReferencedObjectStores const):

  • Modules/indexeddb/IDBTransaction.h:
  • Modules/indexeddb/client/IDBConnectionProxy.cpp:

(WebCore::IDBClient::IDBConnectionProxy::openDatabase):
(WebCore::IDBClient::IDBConnectionProxy::deleteDatabase):
(WebCore::IDBClient::IDBConnectionProxy::completeOpenDBRequest):
(WebCore::IDBClient::IDBConnectionProxy::saveOperation):
(WebCore::IDBClient::IDBConnectionProxy::completeOperation):
(WebCore::IDBClient::IDBConnectionProxy::fireVersionChangeEvent):
(WebCore::IDBClient::IDBConnectionProxy::notifyOpenDBRequestBlocked):
(WebCore::IDBClient::IDBConnectionProxy::establishTransaction):
(WebCore::IDBClient::IDBConnectionProxy::didStartTransaction):
(WebCore::IDBClient::IDBConnectionProxy::commitTransaction):
(WebCore::IDBClient::IDBConnectionProxy::didCommitTransaction):
(WebCore::IDBClient::IDBConnectionProxy::abortTransaction):
(WebCore::IDBClient::IDBConnectionProxy::didAbortTransaction):
(WebCore::IDBClient::IDBConnectionProxy::didCloseFromServer):
(WebCore::IDBClient::IDBConnectionProxy::connectionToServerLost):
(WebCore::IDBClient::IDBConnectionProxy::scheduleMainThreadTasks):
(WebCore::IDBClient::IDBConnectionProxy::handleMainThreadTasks):
(WebCore::IDBClient::IDBConnectionProxy::getAllDatabaseNamesAndVersions):
(WebCore::IDBClient::IDBConnectionProxy::didGetAllDatabaseNamesAndVersions):
(WebCore::IDBClient::IDBConnectionProxy::registerDatabaseConnection):
(WebCore::IDBClient::IDBConnectionProxy::unregisterDatabaseConnection):
(WebCore::IDBClient::IDBConnectionProxy::forgetActiveOperations):
(WebCore::IDBClient::IDBConnectionProxy::forgetTransaction):
(WebCore::IDBClient::IDBConnectionProxy::forgetActivityForCurrentThread):
(WebCore::IDBClient::IDBConnectionProxy::setContextSuspended):

  • Modules/indexeddb/client/IDBConnectionProxy.h:
  • Modules/mediastream/RTCRtpSFrameTransformer.cpp:

(WebCore::RTCRtpSFrameTransformer::setEncryptionKey):
(WebCore::RTCRtpSFrameTransformer::decryptFrame):
(WebCore::RTCRtpSFrameTransformer::encryptFrame):

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

(WebCore::RTCRtpScriptTransform::setTransformer):
(WebCore::RTCRtpScriptTransform::setupTransformer):
(WebCore::RTCRtpScriptTransform::clear):

  • Modules/mediastream/RTCRtpScriptTransform.h:
  • Modules/mediastream/libwebrtc/LibWebRTCDataChannelHandler.cpp:

(WebCore::LibWebRTCDataChannelHandler::setClient):
(WebCore::LibWebRTCDataChannelHandler::checkState):
(WebCore::LibWebRTCDataChannelHandler::OnMessage):
(WebCore::LibWebRTCDataChannelHandler::OnBufferedAmountChange):

  • Modules/mediastream/libwebrtc/LibWebRTCDataChannelHandler.h:
  • Modules/mediastream/libwebrtc/LibWebRTCRtpTransformBackend.cpp:

(WebCore::LibWebRTCRtpTransformBackend::setInputCallback):
(WebCore::LibWebRTCRtpTransformBackend::setOutputCallback):
(WebCore::LibWebRTCRtpTransformBackend::processTransformedFrame):
(WebCore::LibWebRTCRtpTransformBackend::Transform):

  • Modules/mediastream/libwebrtc/LibWebRTCRtpTransformBackend.h:
  • inspector/agents/WebHeapAgent.cpp:

(WebCore::SendGarbageCollectionEventsTask::addGarbageCollection):
(WebCore::SendGarbageCollectionEventsTask::reset):
(WebCore::SendGarbageCollectionEventsTask::timerFired):

  • page/ResourceUsageThread.cpp:

(WebCore::ResourceUsageThread::addObserver):
(WebCore::ResourceUsageThread::removeObserver):
(WebCore::ResourceUsageThread::waitUntilObservers):
(WebCore::ResourceUsageThread::notifyObservers):

  • page/ResourceUsageThread.h:
  • page/WheelEventTestMonitor.cpp:

(WebCore::WheelEventTestMonitor::clearAllTestDeferrals):
(WebCore::WheelEventTestMonitor::setTestCallbackAndStartMonitoring):
(WebCore::WheelEventTestMonitor::deferForReason):
(WebCore::WheelEventTestMonitor::removeDeferralForReason):
(WebCore::WheelEventTestMonitor::receivedWheelEvent):
(WebCore::WheelEventTestMonitor::checkShouldFireCallbacks):

  • page/WheelEventTestMonitor.h:

(WebCore::WheelEventTestMonitor::WTF_GUARDED_BY_LOCK):

  • page/scrolling/ScrollingTree.cpp:

(WebCore::ScrollingTree::computeWheelProcessingSteps):
(WebCore::ScrollingTree::determineWheelEventProcessing):
(WebCore::ScrollingTree::handleWheelEvent):
(WebCore::ScrollingTree::commitTreeState):
(WebCore::ScrollingTree::mainFrameScrollPosition const):
(WebCore::ScrollingTree::setMainFrameScrollPosition):
(WebCore::ScrollingTree::setGestureState):
(WebCore::ScrollingTree::gestureState):
(WebCore::ScrollingTree::eventTrackingTypeForPoint):
(WebCore::ScrollingTree::isRubberBandInProgressForNode):
(WebCore::ScrollingTree::setRubberBandingInProgressForNode):
(WebCore::ScrollingTree::isUserScrollInProgressForNode):
(WebCore::ScrollingTree::setUserScrollInProgressForNode):
(WebCore::ScrollingTree::clearNodesWithUserScrollInProgress):
(WebCore::ScrollingTree::isScrollSnapInProgressForNode):
(WebCore::ScrollingTree::setNodeScrollSnapInProgress):
(WebCore::ScrollingTree::setMainFramePinnedState):
(WebCore::ScrollingTree::setMainFrameCanRubberBand):
(WebCore::ScrollingTree::mainFrameCanRubberBandInDirection):
(WebCore::ScrollingTree::addPendingScrollUpdate):
(WebCore::ScrollingTree::takePendingScrollUpdates):
(WebCore::ScrollingTree::setScrollPinningBehavior):
(WebCore::ScrollingTree::scrollPinningBehavior):
(WebCore::ScrollingTree::willWheelEventStartSwipeGesture):
(WebCore::ScrollingTree::windowScreenDidChange):
(WebCore::ScrollingTree::displayID):
(WebCore::ScrollingTree::hasProcessedWheelEventsRecently):
(WebCore::ScrollingTree::willProcessWheelEvent):
(WebCore::ScrollingTree::nominalFramesPerSecond):
(WebCore::ScrollingTree::scrollingTreeAsText):

  • page/scrolling/ScrollingTree.h:
  • page/scrolling/ScrollingTreeLatchingController.cpp:

(WebCore::ScrollingTreeLatchingController::receivedWheelEvent):
(WebCore::ScrollingTreeLatchingController::latchingDataForEvent const):
(WebCore::ScrollingTreeLatchingController::latchedNodeID const):
(WebCore::ScrollingTreeLatchingController::latchedNodeAndSteps const):
(WebCore::ScrollingTreeLatchingController::nodeDidHandleEvent):
(WebCore::ScrollingTreeLatchingController::nodeWasRemoved):
(WebCore::ScrollingTreeLatchingController::clearLatchedNode):

  • page/scrolling/ScrollingTreeLatchingController.h:
  • platform/audio/HRTFDatabaseLoader.cpp:

(WebCore::HRTFDatabaseLoader::loadAsynchronously):
(WebCore::HRTFDatabaseLoader::waitForLoaderThreadCompletion):

  • platform/audio/HRTFDatabaseLoader.h:
  • platform/audio/cocoa/AudioDestinationCocoa.cpp:

(WebCore::AudioDestinationCocoa::hasEnoughFrames const):
(WebCore::AudioDestinationCocoa::render):
(WebCore::AudioDestinationCocoa::renderOnRenderingThead):

  • platform/audio/cocoa/AudioDestinationCocoa.h:
  • platform/encryptedmedia/CDMProxy.cpp:

(WebCore::CDMProxy::instance const):
(WebCore::CDMProxy::setInstance):
(WebCore::CDMProxy::startedWaitingForKey const):
(WebCore::CDMProxy::stoppedWaitingForKey const):

  • platform/encryptedmedia/CDMProxy.h:
  • platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.cpp:

(WebCore::MediaPlayerPrivateAVFoundation::MediaPlayerPrivateAVFoundation):
(WebCore::MediaPlayerPrivateAVFoundation::setDelayCallbacks const):
(WebCore::MediaPlayerPrivateAVFoundation::clearMainThreadPendingFlag):
(WebCore::MediaPlayerPrivateAVFoundation::scheduleMainThreadNotification):
(WebCore::MediaPlayerPrivateAVFoundation::dispatchNotification):

  • platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.h:
  • platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaStreamAVFObjC.h:
  • platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaStreamAVFObjC.mm:

(WebCore::MediaPlayerPrivateMediaStreamAVFObjC::processNewVideoSample):

  • platform/graphics/cg/IOSurfacePool.cpp:

(WebCore::IOSurfacePool::takeSurface):
(WebCore::IOSurfacePool::addSurface):
(WebCore::IOSurfacePool::setPoolSize):
(WebCore::IOSurfacePool::collectionTimerFired):
(WebCore::IOSurfacePool::discardAllSurfaces):

  • platform/graphics/cg/IOSurfacePool.h:

(WebCore::IOSurfacePool::WTF_GUARDED_BY_LOCK):

  • platform/graphics/cg/SubimageCacheWithTimer.cpp:

(WebCore::SubimageCacheWithTimer::pruneCacheTimerFired):
(WebCore::SubimageCacheWithTimer::subimage):
(WebCore::SubimageCacheWithTimer::clearImageAndSubimages):
(WebCore::SubimageCacheWithTimer::clearAll):

  • platform/graphics/cg/SubimageCacheWithTimer.h:
  • platform/graphics/cocoa/FontCacheCoreText.cpp:

(WebCore::FontDatabase::collectionForFamily):
(WebCore::FontDatabase::clear):

  • platform/network/cocoa/WebCoreNSURLSession.mm:

(WebCore::WebCoreNSURLSessionDataTaskClient::clearTask):
(WebCore::WebCoreNSURLSessionDataTaskClient::dataSent):
(WebCore::WebCoreNSURLSessionDataTaskClient::responseReceived):
(WebCore::WebCoreNSURLSessionDataTaskClient::shouldCacheResponse):
(WebCore::WebCoreNSURLSessionDataTaskClient::dataReceived):
(WebCore::WebCoreNSURLSessionDataTaskClient::redirectReceived):
(WebCore::WebCoreNSURLSessionDataTaskClient::accessControlCheckFailed):
(WebCore::WebCoreNSURLSessionDataTaskClient::loadFailed):
(WebCore::WebCoreNSURLSessionDataTaskClient::loadFinished):

  • platform/network/mac/WebCoreResourceHandleAsOperationQueueDelegate.h:
  • platform/network/mac/WebCoreResourceHandleAsOperationQueueDelegate.mm:

(-[WebCoreResourceHandleAsOperationQueueDelegate detachHandle]):
(-[WebCoreResourceHandleAsOperationQueueDelegate connection:willSendRequest:redirectResponse:]):
(-[WebCoreResourceHandleAsOperationQueueDelegate connection:canAuthenticateAgainstProtectionSpace:]):
(-[WebCoreResourceHandleAsOperationQueueDelegate connection:willCacheResponse:]):

  • storage/StorageQuotaManager.cpp:

(WebCore::StorageQuotaManager::requestSpaceOnBackgroundThread):
(WebCore::StorageQuotaManager::resetQuotaUpdatedBasedOnUsageForTesting):
(WebCore::StorageQuotaManager::resetQuotaForTesting):

  • storage/StorageQuotaManager.h:

(WebCore::StorageQuotaManager::WTF_GUARDED_BY_LOCK):

  • workers/WorkerOrWorkletScriptController.cpp:

(WebCore::WorkerOrWorkletScriptController::scheduleExecutionTermination):
(WebCore::WorkerOrWorkletScriptController::isTerminatingExecution const):

  • workers/WorkerOrWorkletScriptController.h:

(WebCore::WorkerOrWorkletScriptController::WTF_GUARDED_BY_LOCK):

11:25 AM Changeset in webkit [277804] by Wenson Hsieh
  • 5 edits in trunk/Source/WebCore

[GPU Process] ItemHandle::safeCopy is not actually safe, does no bounds-checking
https://bugs.webkit.org/show_bug.cgi?id=226022
rdar://78181677

Reviewed by Chris Dumez.

Currently, it's possible for DisplayList iteration to trigger out-of-bounds access when decoding inline display
list items; this patch adds hardening to prevent this. See below for more details.

  • platform/graphics/displaylists/DisplayListItemBuffer.cpp:

Add an ItemType argument to safeCopy, and use this ItemType instead of assuming that the item type of the
ItemHandle we're copying from hasn't changed since we've validated it.

(WebCore::DisplayList::ItemHandle::safeCopy const):

  • platform/graphics/displaylists/DisplayListItemBuffer.h:
  • platform/graphics/displaylists/DisplayListIterator.cpp:

(WebCore::DisplayList::DisplayList::Iterator::updateCurrentItem):

Verify that the remaining item buffer capacity is at least as large as paddedSizeOfTypeAndItem, such that we
won't go out of bounds when attempting to read from the item handle in safeCopy.

  • platform/graphics/displaylists/InMemoryDisplayList.cpp:

(WebCore::DisplayList::InMemoryDisplayList::ReadingClient::decodeItem):

11:12 AM Changeset in webkit [277803] by Ruben Turcios
  • 8 edits in branches/safari-612.1.15.0-branch/Source

Versioning.

WebKit-7612.1.15.0.3

11:08 AM Changeset in webkit [277802] by Chris Lord
  • 36 edits in trunk/Source/WebCore

Allow passing a VisibleRectContext when calculating the clipped overflow rect
https://bugs.webkit.org/show_bug.cgi?id=226007

Reviewed by Simon Fraser.

Refactor rendering classes to allow specifying a VisibleRectContext
when calculating the clipped overflow rect.

No new tests, this is just a small refactor.

  • accessibility/AccessibilityRenderObject.cpp:

(WebCore::AccessibilityRenderObject::isOffScreen const):

  • dom/DocumentMarkerController.cpp:

(WebCore::DocumentMarkerController::renderedRectsForMarkers):

  • page/SpatialNavigation.cpp:

(WebCore::hasOffscreenRect):

  • rendering/RenderBox.cpp:

(WebCore::RenderBox::clippedOverflowRect const):

  • rendering/RenderBox.h:
  • rendering/RenderElement.cpp:

(WebCore::RenderElement::mayCauseRepaintInsideViewport const):
(WebCore::RenderElement::isVisibleInDocumentRect const):

  • rendering/RenderInline.cpp:

(WebCore::RenderInline::clippedOverflowRect const):

  • rendering/RenderInline.h:
  • rendering/RenderLineBreak.h:
  • rendering/RenderObject.cpp:

(WebCore::RenderObject::pixelSnappedAbsoluteClippedOverflowRect const):
(WebCore::RenderObject::clippedOverflowRect const):
(WebCore::RenderObject::computeRect const):
(WebCore::absoluteRectsForRangeInText):

  • rendering/RenderObject.h:

(WebCore::RenderObject::absoluteClippedOverflowRectForRepaint const):
(WebCore::RenderObject::clippedOverflowRectForRepaint const):
(WebCore::RenderObject::outlineBoundsForRepaint const):
(WebCore::RenderObject::computeAbsoluteRepaintRect const):
(WebCore::RenderObject::computeRectForRepaint const):

  • rendering/RenderReplaced.cpp:

(WebCore::RenderReplaced::clippedOverflowRect const):

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

(WebCore::RenderTableCell::clippedOverflowRect const):

  • rendering/RenderTableCell.h:
  • rendering/RenderTableCol.cpp:

(WebCore::RenderTableCol::clippedOverflowRect const):

  • rendering/RenderTableCol.h:
  • rendering/RenderTableRow.cpp:

(WebCore::RenderTableRow::layout):
(WebCore::RenderTableRow::clippedOverflowRect const):

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

(WebCore::RenderText::clippedOverflowRect const):

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

(WebCore::RenderView::updateVisibleViewportRect):

  • rendering/svg/RenderSVGForeignObject.cpp:

(WebCore::RenderSVGForeignObject::clippedOverflowRect const):

  • rendering/svg/RenderSVGForeignObject.h:
  • rendering/svg/RenderSVGGradientStop.h:
  • rendering/svg/RenderSVGHiddenContainer.h:
  • rendering/svg/RenderSVGInline.cpp:

(WebCore::RenderSVGInline::clippedOverflowRect const):

  • rendering/svg/RenderSVGInline.h:
  • rendering/svg/RenderSVGModelObject.cpp:

(WebCore::RenderSVGModelObject::clippedOverflowRect const):

  • rendering/svg/RenderSVGModelObject.h:
  • rendering/svg/RenderSVGRoot.cpp:

(WebCore::RenderSVGRoot::clippedOverflowRect const):

  • rendering/svg/RenderSVGRoot.h:
  • rendering/svg/RenderSVGText.cpp:

(WebCore::RenderSVGText::clippedOverflowRect const):

  • rendering/svg/RenderSVGText.h:
  • rendering/svg/SVGRenderTreeAsText.cpp:
11:02 AM Changeset in webkit [277801] by Kate Cheney
  • 2 edits in trunk/Tools

Unreviewed contributor name update.

  • Scripts/webkitpy/common/config/contributors.json:
11:02 AM Changeset in webkit [277800] by Russell Epstein
  • 8 edits in branches/safari-612.1.15.1-branch/Source

Versioning.

WebKit-7612.1.15.1.6

10:43 AM Changeset in webkit [277799] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebCore

Add null checks in FrameSelection::selectFrameElementInParentIfFullySelected
https://bugs.webkit.org/show_bug.cgi?id=225973
<rdar://78200977>

Patch by Alex Christensen <achristensen@webkit.org> on 2021-05-20
Reviewed by Katherine Cheney.

  • editing/FrameSelection.cpp:

(WebCore::FrameSelection::selectFrameElementInParentIfFullySelected):

10:37 AM Changeset in webkit [277798] by Alan Coon
  • 8 edits in branches/safari-611-branch/Source

Versioning.

WebKit-7611.3.5

10:33 AM Changeset in webkit [277797] by Devin Rousso
  • 5 edits in trunk/Source/WebCore

[Modern Media Controls] add a suffix based on TextTrack::Kind when generating display names for TrackBase
https://bugs.webkit.org/show_bug.cgi?id=225995

Reviewed by Eric Carlson.

  • page/CaptionUserPreferencesMediaAF.cpp:

(WebCore::buildDisplayStringForTrackBase):

  • platform/LocalizedStrings.h:
  • platform/LocalizedStrings.cpp:

(WebCore::captionsTextTrackWithoutLabelMenuItemText): Added.
(WebCore::descriptionsTextTrackWithoutLabelMenuItemText): Added.
(WebCore::chaptersTextTrackWithoutLabelMenuItemText): Added.
(WebCore::metadataTextTrackWithoutLabelMenuItemText): Added.

  • en.lproj/Localizable.strings:
10:32 AM Changeset in webkit [277796] by Ruben Turcios
  • 2 edits in branches/safari-612.1.15.1-branch/Source/WebCore

Cherry-pick r277784. rdar://problem/78264934

CRASH: Null-pointer deref in MediaSessionManagerCocoa::setNowPlayingInfo()
https://bugs.webkit.org/show_bug.cgi?id=225999
<rdar://78232970>

Reviewed by Eric Carlson.

Null-check nowPlayingInfo.artwork->imageData before dereferencing.

  • platform/audio/cocoa/MediaSessionManagerCocoa.mm: (WebCore::MediaSessionManagerCocoa::setNowPlayingInfo):

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

10:32 AM Changeset in webkit [277795] by Ruben Turcios
  • 3 edits
    2 adds in branches/safari-612.1.15.1-branch

Cherry-pick r277726. rdar://problem/78260457

[Mac] MSE-based video pauses when put in background; PiP context menu disabled
https://bugs.webkit.org/show_bug.cgi?id=225958
<rdar://78130303>

Reviewed by Eric Carlson.

Source/WebCore:

Test: media/media-source/media-source-has-audio-video.html

In r277116, in order to reduce the CPU usage incurred when pushing state changes from
the GPU process to the WebContent process, state changes to hasAudio and hasVideo
were now only updated when the MediaPlayer indicated that its characteristicsChanged().
However, in SourceBufferPrivateAVFObjC, this call was performed too early, before the
SourceBuffer in the WebContent process had informed SourceBufferPrivate of newly added
audio and video tracks. Thus the cached values of hasAudio and hasVideo inside the
WebContent process were never updated.

Call characteristicsChanged() from the callback handler of didReceiveInitializationSegment(),
which will be called only after the WebContent process completes its handling of the
new initialization segment, which includes telling the SourceBufferPrivate in the GPU
process about newly added audio and video tracks.

  • platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.mm: (WebCore::SourceBufferPrivateAVFObjC::didParseInitializationData):

LayoutTests:

  • media/media-source/media-source-has-audio-video-expected.txt: Added.
  • media/media-source/media-source-has-audio-video.html: Added.

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

10:32 AM Changeset in webkit [277794] by Ruben Turcios
  • 2 edits in branches/safari-612.1.15.1-branch/Source/WebKit

Cherry-pick r277518. rdar://problem/78260425

Web Inspector: _WKInspector leaks WebInspectorUIProxy
https://bugs.webkit.org/show_bug.cgi?id=225815

Reviewed by Tim Horton.

Add a missing call in _WKInspector's destructor to destruct the WebInspectorUIProxy in API object storage.

  • UIProcess/API/Cocoa/_WKInspector.mm: (-[_WKInspector dealloc]):

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

10:28 AM Changeset in webkit [277793] by Devin Rousso
  • 3 edits in trunk/Source/WebCore

[Modern Media Controls] should not use codePointCompare as it doesn't take into account language specific sorting rules
https://bugs.webkit.org/show_bug.cgi?id=225993

Reviewed by Eric Carlson.

  • page/CaptionUserPreferences.cpp:

(WebCore::CaptionUserPreferences::sortedTrackListForMenu):

  • page/CaptionUserPreferencesMediaAF.cpp:

(WebCore::textTrackCompare):
(WebCore::CaptionUserPreferencesMediaAF::sortedTrackListForMenu):

10:08 AM Changeset in webkit [277792] by ggaren@apple.com
  • 13 edits in trunk/Source

GraphicsLayer::setName() causes heap fragmentation
https://bugs.webkit.org/show_bug.cgi?id=225838

Reviewed by Simon Fraser.

Profiling for heap fragmentation shows that GraphicsLayer::setName() is
a top contributor. Worth about 5MB maximum on GMail.

Use MAKE_STATIC_STRING_IMPL for our constant layer names so we end up
with only one copy and no heap allocation in the many cases that are
compile-time constants.

Source/WebCore:

  • display/compositing/DisplayLayerController.cpp:

(WebCore::Display::LayerController::setupRootLayerHierarchy):

  • page/PageOverlayController.cpp:

(WebCore::PageOverlayController::createRootLayersIfNeeded):
(WebCore::PageOverlayController::installPageOverlay):

  • platform/graphics/ca/GraphicsLayerCA.cpp:

(WebCore::GraphicsLayerCA::setContentsToSolidColor):
(WebCore::GraphicsLayerCA::setContentsToModel):
(WebCore::GraphicsLayerCA::updateBackdropFilters):
(WebCore::GraphicsLayerCA::updateContentsImage):
(WebCore::GraphicsLayerCA::updateClippingStrategy):
(WebCore::GraphicsLayerCA::updateContentsRects):

  • platform/graphics/ca/TileCoverageMap.cpp:

(WebCore::TileCoverageMap::TileCoverageMap):

  • platform/graphics/ca/win/CACFLayerTreeHost.cpp:

(WebCore::CACFLayerTreeHost::initialize):
(WebCore::CACFLayerTreeHost::updateDebugInfoLayer):

  • platform/graphics/texmap/coordinated/CoordinatedGraphicsLayer.cpp:

(WebCore::CoordinatedGraphicsLayer::flushCompositingStateForThisLayerOnly):

  • rendering/RenderLayerCompositor.cpp:

(WebCore::RenderLayerCompositor::updateLayerForTopOverhangArea):
(WebCore::RenderLayerCompositor::updateLayerForBottomOverhangArea):
(WebCore::RenderLayerCompositor::updateLayerForHeader):
(WebCore::RenderLayerCompositor::updateLayerForFooter):
(WebCore::RenderLayerCompositor::updateOverflowControlsLayers):
(WebCore::RenderLayerCompositor::ensureRootLayer):

Source/WebKit:

  • WebProcess/Inspector/WebInspectorClient.cpp:

(WebKit::WebInspectorClient::showPaintRect):

  • WebProcess/WebPage/CoordinatedGraphics/CompositingCoordinator.cpp:

(WebKit::CompositingCoordinator::CompositingCoordinator):

  • WebProcess/WebPage/CoordinatedGraphics/LayerTreeHost.cpp:

(WebKit::LayerTreeHost::LayerTreeHost):

  • WebProcess/WebPage/CoordinatedGraphics/LayerTreeHostTextureMapper.cpp:

(WebKit::LayerTreeHost::LayerTreeHost):

  • WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.mm:

(WebKit::RemoteLayerTreeDrawingArea::RemoteLayerTreeDrawingArea):

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

[iOS] Add missing method in sandbox IOKit filter
https://bugs.webkit.org/show_bug.cgi?id=225975
<rdar://78212330>

Reviewed by Brent Fulgham.

Add missing method in IOSurfaceRootUserClient filter on iOS.

  • Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb:
9:45 AM Changeset in webkit [277790] by Devin Rousso
  • 2 edits in trunk/Source/WebCore

[Modern Media Controls] should not include TextTrack when sorting TextTrackList if it doesn't have a desired TextTrack::Kind when CaptionDisplayMode::Manual
https://bugs.webkit.org/show_bug.cgi?id=225992

Reviewed by Eric Carlson.

  • page/CaptionUserPreferencesMediaAF.cpp:

(WebCore::CaptionUserPreferencesMediaAF::sortedTrackListForMenu):

9:13 AM Changeset in webkit [277789] by Peng Liu
  • 2 edits in trunk/Source/WebCore

AirPlay icon of the Vimeo.com video player is missing after reloading the page
https://bugs.webkit.org/show_bug.cgi?id=226005

Reviewed by Eric Carlson.

Some sites, e.g., vimeo.com, depends on the "webkitplaybacktargetavailabilitychanged"
event to setup the player related to AirPlay feature properly. When we reload a
page including media element(s), the element's media session will be constructed
with m_hasPlaybackTargets be true, so no "webkitplaybacktargetavailabilitychanged"
event will be fired.

This patch ensures that an HTMLMediaElement always fires that event when we
reload the page.

  • html/MediaElementSession.cpp:

(WebCore::MediaElementSession::MediaElementSession):

9:12 AM Changeset in webkit [277788] by Peng Liu
  • 2 edits in trunk/Source/WebCore

AirPlay icon of the Vimeo.com video player is missing
https://bugs.webkit.org/show_bug.cgi?id=226004

Reviewed by Eric Carlson.

With the optimizations in r276883, an HTMLMediaElement will activate its
MediaSession just before creating its MediaPlayer inside prepareForLoad()
or loadNextSourceChild(), and will deactivate its MediaSession after tearing
down its MediaPlayer inside mediaLoadingFailed().

However, with these changes, when a new HTMLMediaElement is created and an
event handler of "webkitplaybacktargetavailabilitychanged" is added to the element,
the element's MediaSession might be inactive when function
MediaSessionManageriOS::configureWireLessTargetMonitoring() runs, so its
MediaSession won't monitor wireless routes, and no "webkitplaybacktargetavailabilitychanged"
will be fired thereafter.

This patch fixes this issue by activating an HTMLMediaElement's MediaSession
when adding the first event handler to "webkitplaybacktargetavailabilitychanged" event.
It also keeps the MediaSession active if there is event handler to
"webkitplaybacktargetavailabilitychanged" after tearing down the HTMLMediaElement's
MediaPlayer (in HTMLMediaElement::mediaLoadingFailed()).

We can improve the fix by refactoring the way to activate/deactivate
an HTMLMediaElement's MediaSession.

  • html/HTMLMediaElement.cpp:

(WebCore::HTMLMediaElement::prepareForLoad):
(WebCore::HTMLMediaElement::loadNextSourceChild):
(WebCore::HTMLMediaElement::mediaLoadingFailed):
(WebCore::HTMLMediaElement::addEventListener):
(WebCore::HTMLMediaElement::createMediaPlayer):
Replace two mediaSession().setActive(true); in prepareForLoad()
and loadNextSourceChild() with one in createMediaPlayer().

9:11 AM Changeset in webkit [277787] by Chris Dumez
  • 26 edits in trunk

Use CheckedLock more in WebKit2 code
https://bugs.webkit.org/show_bug.cgi?id=226001

Reviewed by Alex Christensen.

Use CheckedLock more in WebKit2 code to benefit from Clang Thread Safety Analysis.

  • NetworkProcess/CustomProtocols/Cocoa/LegacyCustomProtocolManagerCocoa.mm:

(LegacyCustomProtocolManager::networkProcessCreated):
(WebKit::LegacyCustomProtocolManager::registerScheme):
(WebKit::LegacyCustomProtocolManager::unregisterScheme):
(WebKit::LegacyCustomProtocolManager::supportsScheme):
(WebKit::LegacyCustomProtocolManager::protocolForID):

  • NetworkProcess/CustomProtocols/LegacyCustomProtocolManager.cpp:

(WebKit::LegacyCustomProtocolManager::addCustomProtocol):
(WebKit::LegacyCustomProtocolManager::removeCustomProtocol):

  • NetworkProcess/CustomProtocols/LegacyCustomProtocolManager.h:
  • NetworkProcess/NetworkProcess.cpp:

(WebKit::NetworkProcess::addSessionStorageQuotaManager):
(WebKit::NetworkProcess::removeSessionStorageQuotaManager):
(WebKit::NetworkProcess::setSessionStorageQuotaManagerIDBRootPath):
(WebKit::NetworkProcess::resetQuota):
(WebKit::NetworkProcess::storageQuotaManager):

  • NetworkProcess/NetworkProcess.h:
  • NetworkProcess/WebStorage/StorageManagerSet.cpp:

(WebKit::StorageManagerSet::suspend):
(WebKit::StorageManagerSet::resume):

  • NetworkProcess/WebStorage/StorageManagerSet.h:
  • NetworkProcess/cocoa/LaunchServicesDatabaseObserver.h:
  • NetworkProcess/cocoa/LaunchServicesDatabaseObserver.mm:

(WebKit::LaunchServicesDatabaseObserver::LaunchServicesDatabaseObserver):
(WebKit::LaunchServicesDatabaseObserver::startObserving):
(WebKit::LaunchServicesDatabaseObserver::handleEvent):

  • Shared/BlockingResponseMap.h:

(BlockingResponseMap::waitForResponse):
(BlockingResponseMap::didReceiveResponse):

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

(WebKit::XPCEndpointClient::setEndpoint):
(WebKit::XPCEndpointClient::connection):

  • UIProcess/WebURLSchemeTask.cpp:

(WebKit::WebURLSchemeTask::request const):
(WebKit::WebURLSchemeTask::willPerformRedirection):
(WebKit::WebURLSchemeTask::didPerformRedirection):
(WebKit::WebURLSchemeTask::pageDestroyed):
(WebKit::WebURLSchemeTask::stop):
(WebKit::WebURLSchemeTask::nsRequest const):

  • UIProcess/WebURLSchemeTask.h:
  • UIProcess/mac/DisplayLink.cpp:

(WebKit::DisplayLink::addObserver):
(WebKit::DisplayLink::removeObserver):
(WebKit::DisplayLink::removeObservers):
(WebKit::DisplayLink::incrementFullSpeedRequestClientCount):
(WebKit::DisplayLink::decrementFullSpeedRequestClientCount):
(WebKit::DisplayLink::setPreferredFramesPerSecond):
(WebKit::DisplayLink::notifyObserversDisplayWasRefreshed):

  • UIProcess/mac/DisplayLink.h:
  • WebProcess/GPU/webrtc/LibWebRTCCodecs.cpp:

(WebKit::LibWebRTCCodecs::ensureGPUProcessConnectionOnMainThread):
(WebKit::LibWebRTCCodecs::ensureGPUProcessConnectionAndDispatchToThread):
(WebKit::LibWebRTCCodecs::createDecoder):
(WebKit::LibWebRTCCodecs::decodeFrame):
(WebKit::LibWebRTCCodecs::createEncoder):
(WebKit::LibWebRTCCodecs::encodeFrame):
(WebKit::LibWebRTCCodecs::setEncodeRates):
(WebKit::LibWebRTCCodecs::gpuProcessConnectionDidClose):
(WebKit::LibWebRTCCodecs::setLoggingLevel):

  • WebProcess/GPU/webrtc/LibWebRTCCodecs.h:
  • WebProcess/Plugins/PluginProcessConnectionManager.cpp:

(WebKit::PluginProcessConnectionManager::getPluginProcessConnection):
(WebKit::PluginProcessConnectionManager::removePluginProcessConnection):
(WebKit::PluginProcessConnectionManager::pluginProcessCrashed):

  • WebProcess/Plugins/PluginProcessConnectionManager.h:
  • WebProcess/WebPage/EventDispatcher.cpp:

(WebKit::EventDispatcher::addScrollingTreeForPage):
(WebKit::EventDispatcher::removeScrollingTreeForPage):
(WebKit::EventDispatcher::wheelEvent):
(WebKit::EventDispatcher::takeQueuedTouchEventsForPage):
(WebKit::EventDispatcher::touchEvent):
(WebKit::EventDispatcher::dispatchTouchEvents):
(WebKit::EventDispatcher::notifyScrollingTreesDisplayWasRefreshed):

  • WebProcess/WebPage/EventDispatcher.h:
  • WebProcess/WebPage/ViewUpdateDispatcher.cpp:

(WebKit::ViewUpdateDispatcher::visibleContentRectUpdate):
(WebKit::ViewUpdateDispatcher::dispatchVisibleContentRectUpdate):

  • WebProcess/WebPage/ViewUpdateDispatcher.h:
9:00 AM Changeset in webkit [277786] by commit-queue@webkit.org
  • 2 edits in trunk/Source/JavaScriptCore

$vm should have a function for checking if ASan is enabled similar to $vm.assertEnabled
https://bugs.webkit.org/show_bug.cgi?id=226019

Patch by Tuomas Karkkainen <tuomas.webkit@apple.com> on 2021-05-20
Reviewed by Mark Lam.

Add method $vm.asanEnabled(), which parallels $vm.assertEnabled(), and allows checking at
runtime whether the current JavaScriptCore build is instrumented with AddressSanitizer.

  • tools/JSDollarVM.cpp:
8:49 AM Changeset in webkit [277785] by youenn@apple.com
  • 3 edits in trunk/Source/ThirdParty/libwebrtc

Enable VCP for H264 baseline
https://bugs.webkit.org/show_bug.cgi?id=224043

Reviewed by Eric Carlson.

Enable VCP for baseline past BigSur/iOS14.
Add macros and introduce _useBaseline in addition to _useVCP for that purpose.

  • Source/webrtc/sdk/WebKit/VideoProcessingSoftLink.h:
  • Source/webrtc/sdk/objc/components/video_codec/RTCVideoEncoderH264.mm:

(-[RTCVideoEncoderH264 initWithCodecInfo:]):
(-[RTCVideoEncoderH264 configureCompressionSession]):

8:41 AM Changeset in webkit [277784] by jer.noble@apple.com
  • 2 edits in trunk/Source/WebCore

CRASH: Null-pointer deref in MediaSessionManagerCocoa::setNowPlayingInfo()
https://bugs.webkit.org/show_bug.cgi?id=225999
<rdar://78232970>

Reviewed by Eric Carlson.

Null-check nowPlayingInfo.artwork->imageData before dereferencing.

  • platform/audio/cocoa/MediaSessionManagerCocoa.mm:

(WebCore::MediaSessionManagerCocoa::setNowPlayingInfo):

8:33 AM Changeset in webkit [277783] by youenn@apple.com
  • 6 edits
    2 adds in trunk

<video> rendered inside <template> shows black for webcam stream (Safari 14.0.3 only)
https://bugs.webkit.org/show_bug.cgi?id=222115
<rdar://problem/74546659>

Reviewed by Eric Carlson.

Source/WebCore:

Update element visibility if changing of document. Add internals API to test this.

Test: fast/media/template-hidden.html

  • html/HTMLMediaElement.cpp:

(WebCore::HTMLMediaElement::didMoveToNewDocument):

  • testing/Internals.cpp:

(WebCore::Internals::isMediaElementHidden):

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

LayoutTests:

  • fast/media/template-hidden-expected.txt: Added.
  • fast/media/template-hidden.html: Added.
7:45 AM Changeset in webkit [277782] by Jonathan Bedard
  • 2 edits in trunk/Tools

[webkitpy] Forward booted simulators to children processes
https://bugs.webkit.org/show_bug.cgi?id=225933
<rdar://problem/78169900>

Rubber-stamped by Aakash Jain.

  • Scripts/webkitpy/api_tests/runner.py:

(setup_shard): Set DeviceManager global variable from parent process.
(Runner.command_for_port): Use Port's device manager instead of simulated device manager.
(Runner.run): Pass DeviceManager details to children processes.

6:48 AM Changeset in webkit [277781] by Sam Sneddon
  • 11 edits in trunk/Tools

Store whether a test is slow on TestInput
https://bugs.webkit.org/show_bug.cgi?id=224563

Reviewed by Jonathan Bedard.

Additionally, notably, this makes a TestResult store a TestInput rather than a
test_name string. With that there, we then don't need to punch through multiple
layers to find out whether a test is slow or not. Note that replacing the
test_name with a Test or TestInput as part of removing the 1:1 relationship
between files and tests.

With this done, we don't have to pass around a test_is_slow_fn, as we can directly
look at the result to determine whether or not it is slow.

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

(LayoutTestRunner.init): Remove test_is_slow_fn argument
(LayoutTestRunner._mark_interrupted_tests_as_skipped): Remove test_is_slow argument
(LayoutTestRunner._update_summary_with_result): Remove test_is_slow argument
(Worker._run_test_in_another_thread): Remove test_is_slow argument

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

(LayoutTestRunnerTests._runner): Remove test_is_slow_fn argument
(LayoutTestRunnerTests.test_update_summary_with_result): TestResult arg rename

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

(Manager): Improve docstring
(Manager.init): Tidy up reading tests-options.json
(Manager._test_input_for_file): Set is_slow
(Manager.run): Remove test_is_slow_fn argument
(Manager._look_for_new_crash_logs): Remove test_is_slow_fn/test_is_slow argument

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

(SingleTestRunner.init): Store TestInput object
(SingleTestRunner._test_name): Replacement getter
(SingleTestRunner._should_run_pixel_test): Replacement getter
(SingleTestRunner._should_dump_jsconsolelog_in_stderr): Replacement getter
(SingleTestRunner._reference_files): Replacement getter
(SingleTestRunner._timeout): Replacement getter
(SingleTestRunner._compare_output): Pass TestInput to TestResult
(SingleTestRunner._run_reftest): Pass TestInput to TestResult
(SingleTestRunner._compare_output_with_reference): Pass TestInput to TestResult

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

(TestInput): Add is_slow boolean

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

(TestResult.init): Rename test_name -> test_input, construct TestInput if we must
(TestResult.test_name): Replacement getter

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

(TestResultsTest.test_pickle_roundtrip): TestResult arg rename

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

(TestRunResults.add): Remove test_is_slow argument, look at TestResult

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

(summarized_results): Remove test_is_slow argument

  • Scripts/webkitpy/layout_tests/run_webkit_tests_integrationtest.py:

(RunTest.test_tests_options): Add a test that test-options.json works

6:31 AM Changeset in webkit [277780] by Alan Bujtas
  • 4 edits
    2 adds in trunk

[LFC][TFC] Available space distribution should account for the top and bottom table spacing
https://bugs.webkit.org/show_bug.cgi?id=226003

Reviewed by Antti Koivisto.

Source/WebCore:

The available space for the table content is the table width/height minus the left-right/top-bottom spacing, minus
the additional spacing between the rows/columns.

Tests: fast/inline/vertical-top-on-subpixel-makes-inline-box-overflow.html

fast/layoutformattingcontext/table-simple-row-height.html

  • layout/formattingContexts/table/TableLayout.cpp:

(WebCore::Layout::distributeAvailableSpace):

LayoutTests:

  • TestExpectations: rendering code disagrees here.
  • fast/layoutformattingcontext/table-simple-row-height-expected.html: Added.
  • fast/layoutformattingcontext/table-simple-row-height.html: Added.
6:24 AM Changeset in webkit [277779] by pvollan@apple.com
  • 2 edits in trunk/Source/WebKit

The test fast/images/eps-as-image.html is a constant crash
https://bugs.webkit.org/show_bug.cgi?id=225989
<rdar://77354349>

Reviewed by Maciej Stachowiak.

This is caused by an incorrect sandbox rule. A related service is referred to as an XPC service, but it should be a global name.

  • WebProcess/com.apple.WebProcess.sb.in:
6:21 AM Changeset in webkit [277778] by Aditya Keerthi
  • 4 edits
    2 adds in trunk

Value of a color input does not update visually when using setAttribute
https://bugs.webkit.org/show_bug.cgi?id=166930
<rdar://problem/29983218>

Reviewed by Simon Fraser.

Source/WebCore:

Test: fast/forms/color/color-input-set-attribute-value.html

  • html/ColorInputType.cpp:

(WebCore::ColorInputType::attributeChanged):

Update the color swatch when the value attribute is changed.

  • html/ColorInputType.h:

LayoutTests:

  • fast/forms/color/color-input-set-attribute-value-expected.html: Added.
  • fast/forms/color/color-input-set-attribute-value.html: Added.
1:00 AM Changeset in webkit [277777] by commit-queue@webkit.org
  • 5 edits
    2 adds in trunk

[css-flexbox] Wrong height of an empty table inside an orthogonal flex parent
https://bugs.webkit.org/show_bug.cgi?id=225339

Patch by Felipe Erias <Felipe Erias> on 2021-05-20
Reviewed by Sergio Villar Senin.
LayoutTests/imported/w3c:

Add a test for an empty table inside a flexbox container, where the logical heights of both elements
are orthogonal to each other (the table has vertical writing mode and the flexbox uses row direction).

This is a flipped version of table-as-item-specified-height.html.

  • web-platform-tests/css/css-flexbox/table-as-item-specified-width-vertical-expected.html: Added.
  • web-platform-tests/css/css-flexbox/table-as-item-specified-width-vertical.html: Added.

Source/WebCore:

When setting the height of an empty table, give precedence to the overriding value if it has been set.
Do not cache the height of that empty table as the intrinsic content height, because doing so may cause
layout problems (the table is actually empty and may be assigned a different height by its parent).

Test: imported/w3c/web-platform-tests/css/css-flexbox/table-as-item-specified-height.html

imported/w3c/web-platform-tests/css/css-flexbox/table-as-item-specified-width-vertical.html

  • rendering/RenderTable.cpp:

(WebCore::RenderTable::layout):

LayoutTests:

May 19, 2021:

11:46 PM Changeset in webkit [277776] by Jean-Yves Avenard
  • 6 edits in trunk/Source/WebCore

VP9 powerEfficient detection is broken in STP124
https://bugs.webkit.org/show_bug.cgi?id=225910
rdar://78144486

Reviewed by Darin Adler.

Change r273564 made an assumption that the first point of entry in the
media stack is when a PlatformMediaSessionManager is created and move
the initialization of some video codecs there.
However, this isn't always the case. Media Capabilities JS API can cause
queries to be made to the media engine without creating a media element.
We are unfortunately unable to properly write a test that would prevent
this regression to happen again as this is hardware dependent.

  • platform/audio/cocoa/MediaSessionManagerCocoa.h:
  • platform/audio/cocoa/MediaSessionManagerCocoa.mm:

(WebCore::MediaSessionManagerCocoa::MediaSessionManagerCocoa):
(WebCore::MediaSessionManagerCocoa::EnsureCodecsRegistered): Add method, use C++17 static
initializer which avoids any ambiguity in regards to thread-safety.

  • platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:
  • platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.mm:
  • platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaStreamAVFObjC.mm:
10:05 PM Changeset in webkit [277775] by Tomoki Imai
  • 5 edits
    2 adds in trunk

Scrolling must be done after the layout when doing full page zoom
https://bugs.webkit.org/show_bug.cgi?id=225730

Reviewed by Simon Fraser.

Source/WebCore:

Previously, the actual scroll was executed before the layout with the zoomed position.
It sometimes makes the scroll position exceed the page height, and cannot retain pageYOffset.
In the user experience perspective, the user may miss what they are looking at after zoom.

This patch makes the scroll happen after the layout, with the zoomed position.

Test: LayoutTests\fast\scrolling\page-y-offset-should-not-be-changed-after-zoom.html

  • page/Frame.cpp:

(WebCore::Frame::setPageAndTextZoomFactors): Makes the scroll happen after the layout.

Source/WebKit:

Add check to disallow negative or zero zoom value.

  • UIProcess/API/C/WKPage.cpp:

(WKPageSetPageZoomFactor):

LayoutTests:

Added a testcase to ensure that scroll position is not changed after zoom.

  • fast/scrolling/page-y-offset-should-not-be-changed-after-zoom-expected.txt: Added.
  • fast/scrolling/page-y-offset-should-not-be-changed-after-zoom.html: Added.
10:05 PM Changeset in webkit [277774] by Chris Dumez
  • 4 edits in trunk/Source/WebKit

[GPUProcess] It is not safe to call GraphicsContext::paintFrameForMedia() off the main thread
https://bugs.webkit.org/show_bug.cgi?id=225996

Reviewed by Simon Fraser.

It is not safe to call GraphicsContext::paintFrameForMedia() off the main thread because it
relies on the MediaPlayer / MediaPlayerPrivate objects, which are main-thread object. Making
this function thread-safe would be a significant amount of work. As a result, I am simply
calling callOnMainThreadAndWait() in RemoteRenderingBackend::applyMediaItem(). Note that this
code path is only used when painting a video to a canvas.

  • GPUProcess/graphics/RemoteRenderingBackend.cpp:

(WebKit::RemoteRenderingBackend::applyMediaItem):
Make sure we call paintFrameForMedia() on the main thread.

  • GPUProcess/media/RemoteMediaPlayerManagerProxy.cpp:

(WebKit::RemoteMediaPlayerManagerProxy::createMediaPlayer):
(WebKit::RemoteMediaPlayerManagerProxy::deleteMediaPlayer):
(WebKit::RemoteMediaPlayerManagerProxy::mediaPlayer):

  • GPUProcess/media/RemoteMediaPlayerManagerProxy.h:

Drop lock that is no longer needed now that mediaPlayer() is always called on the main thread.

8:34 PM Changeset in webkit [277773] by mark.lam@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

AbstractSlotVisitor::containsOpaqueRoot() should only declare didFindOpaqueRoot if the root is actually found.
https://bugs.webkit.org/show_bug.cgi?id=226000
rdar://78208014

Reviewed by Robin Morisset.

It was erroneously calling didFindOpaqueRoot() all the time even when the root is
not found. This only affects the GC verifier tool. It has no effect on production
code.

  • heap/AbstractSlotVisitorInlines.h:

(JSC::AbstractSlotVisitor::containsOpaqueRoot const):

7:26 PM Changeset in webkit [277772] by Devin Rousso
  • 18 edits
    3 adds in trunk

Add a way to create "wheel" events from gesture/touch events
https://bugs.webkit.org/show_bug.cgi?id=225788
<rdar://problem/76714308>

Reviewed by Simon Fraser.

Source/WebCore:

Test: fast/events/gesture/wheel-from-gesture.html

Other browsers have taken the approach of dispatching "wheel" events with ctrlKey and
deltaY when handling multi-touch pinch-to-zoom gestures. Add helper functions to do this.

  • platform/PlatformWheelEvent.h:
  • platform/PlatformWheelEvent.cpp:

(WebCore::PlatformWheelEvent::createFromGesture): Added.

Tools:

  • WebKitTestRunner/InjectedBundle/Bindings/EventSendingController.idl:
  • WebKitTestRunner/InjectedBundle/EventSendingController.h:
  • WebKitTestRunner/InjectedBundle/EventSendingController.cpp:

(WTR::EventSendingController::scaleGestureStart): Added.
(WTR::EventSendingController::scaleGestureChange): Added.
(WTR::EventSendingController::scaleGestureEnd): Added.

  • WebKitTestRunner/TestController.cpp:

(WTR::TestController::didReceiveSynchronousMessageFromInjectedBundle):

  • WebKitTestRunner/EventSenderProxy.h:
  • WebKitTestRunner/mac/EventSenderProxy.mm:

(EventSenderCGGesturePhaseFromNSEventPhase):
(-[EventSenderSyntheticEvent initPressureEventAtLocation:globalLocation:stage:pressure:stageTransition:phase:time:eventNumber:window:]):
(-[EventSenderSyntheticEvent initMagnifyEventAtLocation:globalLocation:magnification:phase:time:eventNumber:window:]): Added.
(-[EventSenderSyntheticEvent magnification]): Added.
(WTR::EventSenderProxy::mouseDown):
(WTR::EventSenderProxy::mouseUp):
(WTR::EventSenderProxy::sendMouseDownToStartPressureEvents):
(WTR::EventSenderProxy::beginPressureEvent):
(WTR::EventSenderProxy::pressureChangeEvent):
(WTR::EventSenderProxy::mouseForceClick):
(WTR::EventSenderProxy::startAndCancelMouseForceClick):
(WTR::EventSenderProxy::mouseMoveTo):
(WTR::EventSenderProxy::scaleGestureStart): Added.
(WTR::EventSenderProxy::scaleGestureChange): Added.
(WTR::EventSenderProxy::scaleGestureEnd): Added.
Allow tests to synthesize scale (a.k.a. magnify) gesture events.

  • WebKitTestRunner/InjectedBundle/ios/EventSenderProxyIOS.mm:

(WTR::EventSenderProxy::EventSenderProxy):
Drive-by: Rename eventNumber to m_eventNumber since it's a member variable.

  • DumpRenderTree/Scripts/generate-derived-sources.sh:
  • DumpRenderTree/DerivedSources.make:
  • WebKitTestRunner/Scripts/generate-derived-sources.sh:
  • WebKitTestRunner/DerivedSources.make:

Make sure to pass all feature flags when generating JS files from IDL files.

LayoutTests:

  • fast/events/gesture/wheel-from-gesture.html: Added.
  • fast/events/gesture/wheel-from-gesture-expected.txt: Added.
7:02 PM Changeset in webkit [277771] by Kocsen Chung
  • 1 copy in tags/Safari-612.1.15.1.5

Tag Safari-612.1.15.1.5.

6:54 PM Changeset in webkit [277770] by Kocsen Chung
  • 1 copy in tags/Safari-612.1.15.0.2

Tag Safari-612.1.15.0.2.

6:00 PM Changeset in webkit [277769] by Wenson Hsieh
  • 2 edits in trunk/Tools

Unreviewed, try to fix the internal build after r277740

It seems keyData was intended to be a String rather than a Vector<uint8_t>.

  • TestWebKitAPI/Tests/WebKitCocoa/EventAttribution.mm:

(TestWebKitAPI::TEST):

5:51 PM Changeset in webkit [277768] by Chris Dumez
  • 6 edits in trunk/Source/WebCore

Introduce SQLiteStatement::columnBlobView()
https://bugs.webkit.org/show_bug.cgi?id=225988

Reviewed by Alex Christensen.

Introduce SQLiteStatement::columnBlobView() to get a "view" to the blob instead
of copying the data. This is more efficient for call sites that do not need to
hold on the the Blob data.

  • Modules/indexeddb/server/SQLiteIDBBackingStore.cpp:

(WebCore::IDBServer::SQLiteIDBBackingStore::migrateIndexInfoTableForIDUpdate):
(WebCore::IDBServer::SQLiteIDBBackingStore::migrateIndexRecordsTableForIDUpdate):
(WebCore::IDBServer::SQLiteIDBBackingStore::addExistingIndex):
(WebCore::IDBServer::SQLiteIDBBackingStore::extractExistingDatabaseInfo):
(WebCore::IDBServer::SQLiteIDBBackingStore::deleteRecord):
(WebCore::IDBServer::SQLiteIDBBackingStore::getRecord):
(WebCore::IDBServer::SQLiteIDBBackingStore::getAllObjectStoreRecords):
(WebCore::IDBServer::SQLiteIDBBackingStore::uncheckedGetIndexRecordForOneKey):

  • Modules/indexeddb/server/SQLiteIDBCursor.cpp:

(WebCore::IDBServer::SQLiteIDBCursor::internalFetchNextRecord):

  • platform/sql/SQLiteStatement.cpp:

(WebCore::SQLiteStatement::columnBlob):
(WebCore::SQLiteStatement::columnBlobView):

  • platform/sql/SQLiteStatement.h:

(WebCore::SQLiteStatement::BlobView::BlobView):
(WebCore::SQLiteStatement::BlobView::data):
(WebCore::SQLiteStatement::BlobView::size):

  • workers/service/server/RegistrationDatabase.cpp:

(WebCore::RegistrationDatabase::importRecords):

5:33 PM Changeset in webkit [277767] by achristensen@apple.com
  • 83 edits
    63 adds in trunk

Add support for Navigation Timing Level 2
https://bugs.webkit.org/show_bug.cgi?id=184363

Reviewed by Ryosuke Niwa.

LayoutTests/imported/w3c:

  • web-platform-tests/navigation-timing/META.yml: Added.
  • web-platform-tests/navigation-timing/dom_interactive_image_document-expected.txt: Added.
  • web-platform-tests/navigation-timing/dom_interactive_image_document.html: Added.
  • web-platform-tests/navigation-timing/dom_interactive_media_document-expected.txt: Added.
  • web-platform-tests/navigation-timing/dom_interactive_media_document.html: Added.
  • web-platform-tests/navigation-timing/idlharness.window.js:
  • web-platform-tests/navigation-timing/nav2_test_attributes_exist-expected.txt: Added.
  • web-platform-tests/navigation-timing/nav2_test_attributes_exist.html: Added.

This test fails because we have not implemented transferSize, encodedBodySize, and decodedBodySize as noted in PerformanceResourceTiming.idl

  • web-platform-tests/navigation-timing/nav2_test_attributes_values-expected.txt: Added.
  • web-platform-tests/navigation-timing/nav2_test_attributes_values.html: Added.

This test fails because we have not implemented transferSize, encodedBodySize, and decodedBodySize as noted in PerformanceResourceTiming.idl

  • web-platform-tests/navigation-timing/nav2_test_document_open-expected.txt:
  • web-platform-tests/navigation-timing/nav2_test_document_open.html:
  • web-platform-tests/navigation-timing/nav2_test_document_replaced-expected.txt:
  • web-platform-tests/navigation-timing/nav2_test_document_replaced.html:
  • web-platform-tests/navigation-timing/nav2_test_frame_removed-expected.txt:
  • web-platform-tests/navigation-timing/nav2_test_instance_accessible_from_the_start-expected.txt:
  • web-platform-tests/navigation-timing/nav2_test_instance_accessible_from_the_start.html:
  • web-platform-tests/navigation-timing/nav2_test_instance_accessors-expected.txt: Added.
  • web-platform-tests/navigation-timing/nav2_test_instance_accessors.html: Added.
  • web-platform-tests/navigation-timing/nav2_test_navigate_iframe-expected.txt: Added.
  • web-platform-tests/navigation-timing/nav2_test_navigate_iframe.html: Added.
  • web-platform-tests/navigation-timing/nav2_test_navigate_within_document-expected.txt:
  • web-platform-tests/navigation-timing/nav2_test_navigate_within_document.html:
  • web-platform-tests/navigation-timing/nav2_test_navigation_type_backforward-expected.txt:
  • web-platform-tests/navigation-timing/nav2_test_navigation_type_backforward.html:
  • web-platform-tests/navigation-timing/nav2_test_navigation_type_navigate-expected.txt: Added.
  • web-platform-tests/navigation-timing/nav2_test_navigation_type_navigate.html: Added.
  • web-platform-tests/navigation-timing/nav2_test_navigation_type_reload-expected.txt:
  • web-platform-tests/navigation-timing/nav2_test_navigation_type_reload.html:
  • web-platform-tests/navigation-timing/nav2_test_redirect_chain_xserver_final_original_origin-expected.txt: Added.

This test fails because our test infrastructure doesn't support loading from www.localhost.

  • web-platform-tests/navigation-timing/nav2_test_redirect_chain_xserver_final_original_origin.html: Copied from LayoutTests/imported/w3c/web-platform-tests/navigation-timing/nav2_test_redirect_chain_xserver_partial_opt_in.html.
  • web-platform-tests/navigation-timing/nav2_test_redirect_chain_xserver_partial_opt_in-expected.txt:

This test fails because our test infrastructure doesn't support loading from www.localhost.

  • web-platform-tests/navigation-timing/nav2_test_redirect_chain_xserver_partial_opt_in.html:
  • web-platform-tests/navigation-timing/nav2_test_redirect_none-expected.txt: Added.
  • web-platform-tests/navigation-timing/nav2_test_redirect_none.html: Added.
  • web-platform-tests/navigation-timing/nav2_test_redirect_server-expected.txt:

This test failure needs further investigation.

  • web-platform-tests/navigation-timing/nav2_test_redirect_server.html:
  • web-platform-tests/navigation-timing/nav2_test_redirect_xserver-expected.txt:

This test fails because our test infrastructure doesn't support loading from www.localhost.

  • web-platform-tests/navigation-timing/nav2_test_redirect_xserver.html:
  • web-platform-tests/navigation-timing/nav2_test_unique_nav_instances-expected.txt: Added.

This test failure needs further investigation.

  • web-platform-tests/navigation-timing/nav2_test_unique_nav_instances.html: Added.
  • web-platform-tests/navigation-timing/po-navigation-expected.txt: Added.
  • web-platform-tests/navigation-timing/po-navigation.html: Added.
  • web-platform-tests/navigation-timing/resources/webperftestharness.js:

(test_namespace):
(test_attribute_exists):
(test_enum):

  • web-platform-tests/navigation-timing/secure-connection-start-reuse.https-expected.txt: Added.
  • web-platform-tests/navigation-timing/secure-connection-start-reuse.https.html: Added.
  • web-platform-tests/navigation-timing/secure_connection_start_non_zero.https-expected.txt:

This test has been marked as flaky. It needs to be fixed to not rely on no initial connection reuse.

  • web-platform-tests/navigation-timing/supported_navigation_type.any-expected.txt:
  • web-platform-tests/navigation-timing/supported_navigation_type.any.worker-expected.txt:
  • web-platform-tests/navigation-timing/test_document_onload-expected.txt: Added.
  • web-platform-tests/navigation-timing/test_document_onload.html: Added.

This test failure needs further investigation.

  • web-platform-tests/navigation-timing/unload-event-same-origin-check-expected.txt:
  • web-platform-tests/navigation-timing/unload-event-same-origin-check.html:
  • web-platform-tests/performance-timeline/META.yml: Added.
  • web-platform-tests/performance-timeline/buffered-flag-after-timeout.any.js: Added.

(async_test.t.t.step_timeout):

  • web-platform-tests/performance-timeline/buffered-flag-observer.any.js: Added.
  • web-platform-tests/performance-timeline/get-invalid-entries-expected.txt: Added.
  • web-platform-tests/performance-timeline/get-invalid-entries.html: Added.
  • web-platform-tests/performance-timeline/idlharness.any.js: Added.

(async idl_array):

  • web-platform-tests/performance-timeline/multiple-buffered-flag-observers.any.js: Added.

(promise_test):

  • web-platform-tests/performance-timeline/not-clonable-expected.txt: Added.
  • web-platform-tests/performance-timeline/not-clonable.html: Added.
  • web-platform-tests/performance-timeline/observer-buffered-false.any.js: Added.

(async_test.t.t.step_timeout):

  • web-platform-tests/performance-timeline/performanceentry-tojson.any.js: Added.

(test):

  • web-platform-tests/performance-timeline/po-callback-mutate.any.js: Added.

(async_test):

  • web-platform-tests/performance-timeline/po-disconnect-removes-observed-types.any.js: Added.

(async_test):

  • web-platform-tests/performance-timeline/po-disconnect.any.js: Added.

(async_test):
(test):

  • web-platform-tests/performance-timeline/po-entries-sort.any.js: Added.

(async_test):

  • web-platform-tests/performance-timeline/po-getentries.any.js: Added.

(async_test):

  • web-platform-tests/performance-timeline/po-mark-measure.any.js: Added.

(async_test):

  • web-platform-tests/performance-timeline/po-observe-expected.txt: Added.
  • web-platform-tests/performance-timeline/po-observe-repeated-type.any.js: Added.

(async_test):

  • web-platform-tests/performance-timeline/po-observe.html: Added.
  • web-platform-tests/performance-timeline/po-resource-expected.txt: Added.
  • web-platform-tests/performance-timeline/po-resource.html: Added.
  • web-platform-tests/performance-timeline/po-takeRecords.any.js: Added.

(async_test):

  • web-platform-tests/performance-timeline/resources/postmessage-entry.html: Added.
  • web-platform-tests/performance-timeline/resources/worker-invalid-entries.js: Added.
  • web-platform-tests/performance-timeline/resources/worker-with-performance-observer.js: Added.

(catch):

  • web-platform-tests/performance-timeline/supportedEntryTypes.any-expected.txt:

This test failure needs further investigation. It's a bindings generation problem I've unsuccessfully looked into before.

  • web-platform-tests/performance-timeline/supportedEntryTypes.any.js:

(test):

  • web-platform-tests/performance-timeline/supportedEntryTypes.any.worker-expected.txt:
  • web-platform-tests/performance-timeline/webtiming-resolution.any.js: Added.

(testTimeResolution):
(timeByUserTiming):

  • web-platform-tests/performance-timeline/worker-with-performance-observer-expected.txt: Added.
  • web-platform-tests/performance-timeline/worker-with-performance-observer.html: Added.
  • web-platform-tests/service-workers/service-worker/navigation-timing.https-expected.txt:

This existing test failure needs more investigation. We are probably close to a fix after this patch.

Source/WebCore:

This is basically just a new shape for exposing the same data as window.performance.navigation, but with a shape that fits better into the rest of the
performance timeline measurements that have been added to the web platform since performance.navigation.

I noted that exposing transfer size is problematic, and some of the tests for reading transfer size still fail.
There are still a few relatively minor test failures to fix in future patches. Each one is annotated in the LayoutTests ChangeLogs.

Tests: imported/w3c/web-platform-tests/navigation-timing/dom_interactive_image_document.html

imported/w3c/web-platform-tests/navigation-timing/dom_interactive_media_document.html
imported/w3c/web-platform-tests/navigation-timing/nav2_test_attributes_exist.html
imported/w3c/web-platform-tests/navigation-timing/nav2_test_attributes_values.html
imported/w3c/web-platform-tests/navigation-timing/nav2_test_instance_accessors.html
imported/w3c/web-platform-tests/navigation-timing/nav2_test_navigate_iframe.html
imported/w3c/web-platform-tests/navigation-timing/nav2_test_navigation_type_navigate.html
imported/w3c/web-platform-tests/navigation-timing/nav2_test_redirect_chain_xserver_final_original_origin.html
imported/w3c/web-platform-tests/navigation-timing/nav2_test_redirect_none.html
imported/w3c/web-platform-tests/navigation-timing/nav2_test_unique_nav_instances.html
imported/w3c/web-platform-tests/navigation-timing/po-navigation.html
imported/w3c/web-platform-tests/navigation-timing/secure-connection-start-reuse.https.html
imported/w3c/web-platform-tests/navigation-timing/test_document_onload.html
imported/w3c/web-platform-tests/performance-timeline/get-invalid-entries.html
imported/w3c/web-platform-tests/performance-timeline/not-clonable.html
imported/w3c/web-platform-tests/performance-timeline/po-observe.html
imported/w3c/web-platform-tests/performance-timeline/po-resource.html
imported/w3c/web-platform-tests/performance-timeline/worker-with-performance-observer.html

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

(WebCore::toJSNewlyCreated):

  • dom/Document.cpp:

(WebCore::Document::setReadyState):
Sometimes the ready state jumps right to Complete without hitting Interactive along the way.
When this happens, we want to mark both m_documentTiming.domComplete and m_documentTiming.domInteractive.

  • loader/DocumentLoader.cpp:

(WebCore::DocumentLoader::notifyFinished):
Call addNavigationTiming in notifyFinished to create the navigation timing object when we are done navigating

  • loader/ResourceLoader.cpp:

(WebCore::ResourceLoader::didFinishLoading):

  • loader/ResourceLoader.h:
  • loader/ResourceTiming.cpp:

(WebCore::ResourceTiming::fromLoad):
Add a URL parameter. Sometimes we need to use the request's URL and sometimes the response's. Different specs written at different times.
(WebCore::ResourceTiming::populateServerTiming const):
(WebCore::ResourceTiming::populateServerTiming): Deleted.

  • loader/ResourceTiming.h:

(WebCore::ResourceTiming::url const):
(WebCore::ResourceTiming::initiator const):
(WebCore::ResourceTiming::loadTiming const):
(WebCore::ResourceTiming::networkLoadMetrics const):

  • loader/SubresourceLoader.cpp:

(WebCore::SubresourceLoader::reportResourceTiming):

  • page/Performance.cpp:

(WebCore::Performance::getEntries const):
(WebCore::Performance::getEntriesByType const):
(WebCore::Performance::getEntriesByName const):
(WebCore::Performance::appendBufferedEntriesByType const):
(WebCore::Performance::addNavigationTiming):
(WebCore::Performance::registerPerformanceObserver):
(WebCore::Performance::queueEntry):
(WebCore::Performance::scheduleTaskIfNeeded):

  • page/Performance.h:
  • page/PerformanceEntry.h:

(WebCore::PerformanceEntry::startTime const):
(WebCore::PerformanceEntry::duration const):
(WebCore::PerformanceEntry::isResource const): Deleted.
(WebCore::PerformanceEntry::isMark const): Deleted.
(WebCore::PerformanceEntry::isMeasure const): Deleted.
(WebCore::PerformanceEntry::isPaint const): Deleted.

  • page/PerformanceMark.h:

(isType): Deleted.
SPECIALIZE_TYPE_TRAITS_BEGIN/END doesn't work well with PerformanceNavigationTiming which inherits from PerformanceResourceTiming which both have distinct types.
is<PerformanceResourceTiming> doesn't give us the info we need. I replaced that with "switch (entry->performanceEntryType())" in the one place it's used, and it works like a charm.
Also renamed type to performanceEntryType so it doesn't conflict with PerformanceNavigationTiming::type, which is specified in the idl.

  • page/PerformanceMeasure.h:

(isType): Deleted.

  • page/PerformanceNavigationTiming.cpp: Added.

(WebCore::toPerformanceNavigationTimingNavigationType):
(WebCore::PerformanceNavigationTiming::PerformanceNavigationTiming):
(WebCore::PerformanceNavigationTiming::millisecondsSinceOrigin const):
(WebCore::PerformanceNavigationTiming::sameOriginCheckFails const):
(WebCore::PerformanceNavigationTiming::unloadEventStart const):
(WebCore::PerformanceNavigationTiming::unloadEventEnd const):
(WebCore::PerformanceNavigationTiming::domInteractive const):
(WebCore::PerformanceNavigationTiming::domContentLoadedEventStart const):
(WebCore::PerformanceNavigationTiming::domContentLoadedEventEnd const):
(WebCore::PerformanceNavigationTiming::domComplete const):
(WebCore::PerformanceNavigationTiming::loadEventStart const):
(WebCore::PerformanceNavigationTiming::loadEventEnd const):
(WebCore::PerformanceNavigationTiming::type const):
(WebCore::PerformanceNavigationTiming::redirectCount const):
(WebCore::PerformanceNavigationTiming::startTime const):
(WebCore::PerformanceNavigationTiming::duration const):

  • page/PerformanceNavigationTiming.h: Added.
  • page/PerformanceNavigationTiming.idl: Copied from Source/WebCore/page/PerformanceObserver.idl.
  • page/PerformanceObserver.cpp:

(WebCore::PerformanceObserver::takeRecords):
(WebCore::PerformanceObserver::disconnect):
(WebCore::PerformanceObserver::deliver):
(WebCore::PerformanceObserver::supportedEntryTypes):

  • page/PerformanceObserver.h:
  • page/PerformanceObserver.idl:
  • page/PerformanceObserverEntryList.cpp:

(WebCore::PerformanceObserverEntryList::getEntriesByName const):

  • page/PerformancePaintTiming.h:

(isType): Deleted.

  • page/PerformanceResourceTiming.cpp:

(WebCore::PerformanceResourceTiming::PerformanceResourceTiming):
(WebCore::PerformanceResourceTiming::nextHopProtocol const):
(WebCore::PerformanceResourceTiming::redirectStart const):
(WebCore::PerformanceResourceTiming::redirectEnd const):
(WebCore::PerformanceResourceTiming::fetchStart const):
(WebCore::PerformanceResourceTiming::domainLookupStart const):
(WebCore::PerformanceResourceTiming::domainLookupEnd const):
(WebCore::PerformanceResourceTiming::connectStart const):
(WebCore::PerformanceResourceTiming::connectEnd const):
(WebCore::PerformanceResourceTiming::secureConnectionStart const):
(WebCore::PerformanceResourceTiming::requestStart const):
(WebCore::PerformanceResourceTiming::responseStart const):
(WebCore::PerformanceResourceTiming::responseEnd const):
(WebCore::PerformanceResourceTiming::networkLoadTimeToDOMHighResTimeStamp const):

  • page/PerformanceResourceTiming.h:

(WebCore::PerformanceResourceTiming::initiatorType const):
(isType): Deleted.

  • page/PerformanceResourceTiming.idl:
  • platform/network/BlobResourceHandle.cpp:

(WebCore::doNotifyFinish):

  • platform/network/NetworkLoadMetrics.h:
  • platform/network/ResourceHandleClient.h:

(WebCore::ResourceHandleClient::didFinishLoading):

  • platform/network/SynchronousLoaderClient.cpp:

(WebCore::SynchronousLoaderClient::didFinishLoading):

  • platform/network/SynchronousLoaderClient.h:
  • platform/network/cf/ResourceHandleCFURLConnectionDelegateWithOperationQueue.cpp:

(WebCore::ResourceHandleCFURLConnectionDelegateWithOperationQueue::didFinishLoading):
Pass metrics including the response end time from NSURLConnection so we don't assert in WebKitLegacy.

  • platform/network/cocoa/NetworkLoadMetrics.mm:

(WebCore::copyTimingData):
Use currentRequest instead of passing in the response so we can call it from didFinishLoading, where we don't have a response stored anywhere.
We're just looking for whether it's http or https, so the currentRequest (which is the request after all the redirects) fits our purpose.

  • platform/network/curl/ResourceHandleCurl.cpp:

(WebCore::ResourceHandle::handleDataURL):

  • platform/network/mac/WebCoreResourceHandleAsOperationQueueDelegate.mm:

(-[WebCoreResourceHandleAsOperationQueueDelegate connection:didReceiveResponse:]):
(-[WebCoreResourceHandleAsOperationQueueDelegate connectionDidFinishLoading:]):

Source/WebKit:

  • NetworkProcess/cocoa/NetworkSessionCocoa.mm:

(-[WKNetworkSessionDelegate URLSession:task:didFinishCollectingMetrics:]):
Mark reused TLS connections in complete metrics like I did in incomplete metrics in r277493.

Source/WebKitLegacy:

  • WebCoreSupport/PingHandle.h:

Source/WTF:

  • Scripts/Preferences/WebPreferencesExperimental.yaml:

LayoutTests:

Annoyingly secure_connection_start_non_zero.https.html becomes flaky with a correct implementation because it assumes
that no connection is reused. However, when running this test after other tests, another connection is often reused.

  • performance-api/paint-timing/performance-observer-first-contentful-paint-expected.txt:
  • performance-api/paint-timing/performance-observer-first-contentful-paint.html:
  • performance-api/performance-observer-api-expected.txt:
  • performance-api/performance-timeline-api-expected.txt:
  • performance-api/resources/timeline-api.js:
  • platform/mac-wk1/imported/w3c/web-platform-tests/navigation-timing/nav2_test_attributes_values-expected.txt:

Next hop protocol isn't implemented in ResourceHandle. That's probably no big deal because WebKitLegacy is deprecated and not used by Safari.

5:30 PM Changeset in webkit [277766] by Peng Liu
  • 2 edits in trunk/Source/WebCore

[iOS] Video playback pauses when switching apps (video enters picture-in-picture from fullscreen)
https://bugs.webkit.org/show_bug.cgi?id=225981

Reviewed by Jer Noble.

Similar to Mac, on iOS devices, we should not pause a video playback
when the video enters picture-in-picture from fullscreen.

  • html/HTMLMediaElement.cpp:

(WebCore::HTMLMediaElement::shouldOverrideBackgroundPlaybackRestriction const):

5:25 PM Changeset in webkit [277765] by Russell Epstein
  • 1 edit in branches/safari-612.1.15.0-branch/Source/JavaScriptCore/runtime/JSCJSValue.cpp

Unreviewed build fix, rdar://problem/78213427

./runtime/JSCJSValue.cpp:262:70: error: no member named 'callSetter' in 'JSC::GetterSetter'

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

ASSERTION FAILED: unwrapParamsOrException.exception().code() != ExistingExceptionError on http/wpt/preload/change-link-rel-attribute.html
https://bugs.webkit.org/show_bug.cgi?id=224845

Unreviewed test garedning.

Removing un-needed test expectation.

  • platform/mac-wk2/TestExpectations:
5:13 PM Changeset in webkit [277763] by weinig@apple.com
  • 34 edits in trunk/Source

Remove ImageBuffer::toBGRA() and replace its uses with the more general ImageBuffer::getPixelBuffer()
https://bugs.webkit.org/show_bug.cgi?id=225976

Reviewed by Said Abou-Hallawa.

Source/WebCore:

Removes ImageBuffer::toBGRA() and replaces it with the more verbose (but also more clear)
ImageBuffer::getPixelBuffer(). There were only two users of toBGRA(), MediaSample creation
from a <canvas> and PageColorSampler. For MediaSample, we likely should not be doing
readback this way, and should instead try to keep the data in the GPU process / on the GPU
when possible / necessary.

  • html/HTMLCanvasElement.cpp:

(WebCore::HTMLCanvasElement::toMediaSample):
Update calls to pass imageBuffer and share call to makeRenderingResultsAvailable().

  • page/PageColorSampler.cpp:

(WebCore::sampleColor):
Update ot use getPixelBuffer().

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

(WebCore::MediaSampleAVFObjC::createImageSample):
Update MediaSampleAVFObjC to use getPixelBuffer directly().

  • platform/graphics/gstreamer/MediaSampleGStreamer.cpp:

(WebCore::MediaSampleGStreamer::createImageSample):

  • platform/graphics/gstreamer/MediaSampleGStreamer.h:

(WebCore::MediaSampleGStreamer::createImageSample):

  • platform/mediastream/gstreamer/MockRealtimeVideoSourceGStreamer.cpp:

(WebCore::MockRealtimeVideoSourceGStreamer::updateSampleBuffer):
Update MediaSampleGStreamer to use getPixelBuffer directly().

  • platform/MediaSample.h:

Use #pragma once.

  • platform/graphics/ConcreteImageBuffer.h:
  • platform/graphics/ImageBuffer.h:
  • platform/graphics/ImageBufferBackend.cpp:

(WebCore::ImageBufferBackend::toBGRAData const): Deleted.

  • platform/graphics/ImageBufferBackend.h:
  • platform/graphics/cairo/ImageBufferCairoSurfaceBackend.cpp:

(WebCore::ImageBufferCairoSurfaceBackend::toBGRAData const): Deleted.

  • platform/graphics/cairo/ImageBufferCairoSurfaceBackend.h:
  • platform/graphics/cg/ImageBufferCGBitmapBackend.cpp:

(WebCore::ImageBufferCGBitmapBackend::toBGRAData const): Deleted.

  • platform/graphics/cg/ImageBufferCGBitmapBackend.h:
  • platform/graphics/cg/ImageBufferIOSurfaceBackend.cpp:

(WebCore::ImageBufferIOSurfaceBackend::toBGRAData const): Deleted.

  • platform/graphics/cg/ImageBufferIOSurfaceBackend.h:
  • platform/graphics/win/ImageBufferDirect2DBackend.cpp:

(WebCore::ImageBufferDirect2DBackend::toBGRAData const): Deleted.

  • platform/graphics/win/ImageBufferDirect2DBackend.h:

Remove toBGRA().

Source/WebKit:

Remove ImageBuffer::toBGRA().

  • GPUProcess/graphics/RemoteRenderingBackend.cpp:

(WebKit::RemoteRenderingBackend::getBGRADataForImageBuffer): Deleted.

  • GPUProcess/graphics/RemoteRenderingBackend.h:
  • GPUProcess/graphics/RemoteRenderingBackend.messages.in:
  • Shared/RemoteLayerTree/CGDisplayListImageBufferBackend.cpp:

(WebKit::CGDisplayListImageBufferBackend::toBGRAData const): Deleted.

  • Shared/RemoteLayerTree/CGDisplayListImageBufferBackend.h:
  • WebProcess/GPU/graphics/ImageBufferShareableBitmapBackend.cpp:

(WebKit::ImageBufferShareableBitmapBackend::toBGRAData const): Deleted.

  • WebProcess/GPU/graphics/ImageBufferShareableBitmapBackend.h:
  • WebProcess/GPU/graphics/RemoteImageBufferProxy.h:
  • WebProcess/GPU/graphics/RemoteRenderingBackendProxy.cpp:

(WebKit::RemoteRenderingBackendProxy::getBGRADataForImageBuffer): Deleted.

  • WebProcess/GPU/graphics/RemoteRenderingBackendProxy.h:
  • WebProcess/GPU/graphics/cocoa/ImageBufferShareableIOSurfaceBackend.cpp:

(WebKit::ImageBufferShareableIOSurfaceBackend::toBGRAData const): Deleted.

  • WebProcess/GPU/graphics/cocoa/ImageBufferShareableIOSurfaceBackend.h:
5:05 PM Changeset in webkit [277762] by Russell Epstein
  • 1 edit in branches/safari-612.1.15.1-branch/Source/JavaScriptCore/runtime/JSCJSValue.cpp

Unreviewed build fix, rdar://problem/78224090

./runtime/JSCJSValue.cpp:262:70: error: no member named 'callSetter' in 'JSC::GetterSetter'

4:10 PM Changeset in webkit [277761] by Chris Dumez
  • 2 edits in trunk/Source/WebKit

Simplify and make InjectedBundle::initialize() more robust
https://bugs.webkit.org/show_bug.cgi?id=225980

Reviewed by Geoffrey Garen.

Simplify and make InjectedBundle::initialize() more robust as we are seeing some flaky
crashes in this area (rdar://33894266).

In particular, the following changes were made:

  • Call dlopen_preflight() before dlopen() for extra robustness as we see some crashes under dlopen().
  • Call [NSBundle preflightAndReturnError:] before [NSBundle loadAndReturnError:] for extra robustness as we see some crashes under [NSBundle loadAndReturnError:].
  • Call [NSBundle loadAndReturnError:] instead of [NSBundle load] so that we get a useful NSError for logging.
  • Call [NSBundle initWithPath:] instead of [NSBundle initWithURL:] since we have a path and since [NSBundle initWithURL:] ends up calling [NSBundle initWithPath:] anyway. This avoids us having to construct a NSURL from our path.
  • Use NSBundle.executablePath instead of CFBundleCopyExecutableURL() since it is nicer and we have a NSBundle.
  • Use [NSString fileSystemRepresentation] to gets a file system representation of NSBundle.executablePath. Previously, we were relying on CFURLGetFileSystemRepresentation().
  • WebProcess/InjectedBundle/mac/InjectedBundleMac.mm:

(WebKit::InjectedBundle::initialize):

3:42 PM Changeset in webkit [277760] by Cameron McCormack
  • 7 edits in trunk/Source/WebCore

Remove unused GraphicsContextImpl constructor arguments
https://bugs.webkit.org/show_bug.cgi?id=225583

Reviewed by Simon Fraser.

  • platform/graphics/GraphicsContextImpl.cpp:

(WebCore::GraphicsContextImpl::GraphicsContextImpl):

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

(WebCore::GraphicsContextImplCairo::GraphicsContextImplCairo):

  • platform/graphics/displaylists/DisplayListRecorder.cpp:

(WebCore::DisplayList::Recorder::Recorder):

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

(Nicosia::CairoOperationRecorder::CairoOperationRecorder):

  • platform/graphics/win/GraphicsContextImplDirect2D.cpp:

(WebCore::GraphicsContextImplDirect2D::GraphicsContextImplDirect2D):

3:39 PM Changeset in webkit [277759] by mark.lam@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

Speed up debug validation in CacheableIdentifier::createFromIdentifierOwnedByCodeBlock().
https://bugs.webkit.org/show_bug.cgi?id=225948

Not reviewed.

Build fix after r277727.

  • bytecode/CodeBlock.cpp:

(JSC::CodeBlock::hasIdentifier):

3:30 PM Changeset in webkit [277758] by mark.lam@apple.com
  • 6 edits in trunk/Source/JavaScriptCore

Ripping out broken Baseline JIT rare case profiling.
https://bugs.webkit.org/show_bug.cgi?id=225983

Reviewed by Saam Barati and Robin Morisset.

The profiling has been broken in recent times. Fixing it to work does not appear
to improve performance. Ripping out the profiling appears to not hurt performance.
However, ripping out the profiling appears to save on code size generated for the
Baseline JIT.

Base New Diff

BaselineJIT: 73299112 (69.903481 MB) 65910128 (62.856796 MB) 0.90x (reduction)

DFG: 36850540 (35.143414 MB) 36374400 (34.689331 MB) 0.99x

Thunk: 23128652 (22.057201 MB) 22892292 (21.831791 MB) 0.99x

InlineCache: 22210972 (21.182034 MB) 22083508 (21.060474 MB) 0.99x

FTL: 6065064 (5.784096 MB) 6128080 (5.844193 MB) 1.01x

Wasm: 2305124 (2.198338 MB) 2309732 (2.202732 MB) 1.00x

YarrJIT: 1522712 (1.452171 MB) 1536104 (1.464943 MB) 1.01x

CSSJIT: 0 0

Uncategorized: 0 0

Cumulative diff since the start of this effort to put more code in JIT thunks:

Base New Diff

BaselineJIT: 89089964 (84.962811 MB) 65910128 (62.856796 MB) 0.74x (reduction)

DFG: 39117360 (37.305222 MB) 36374400 (34.689331 MB) 0.93x (reduction)

Thunk: 23230968 (22.154778 MB) 22892292 (21.831791 MB) 0.99x

InlineCache: 22027416 (21.006981 MB) 22083508 (21.060474 MB) 1.00x

FTL: 6575772 (6.271145 MB) 6128080 (5.844193 MB) 0.93x (reduction)

Wasm: 2302724 (2.196049 MB) 2309732 (2.202732 MB) 1.00x

YarrJIT: 1538956 (1.467663 MB) 1536104 (1.464943 MB) 1.00x

CSSJIT: 0 0

Uncategorized: 0 0

Benchmarking was done with Speedometer2 and JetSteam2 on an M1 Mac.

  • bytecode/CodeBlock.cpp:

(JSC::CodeBlock::JITData::size const):
(JSC::CodeBlock::dumpValueProfiles):
(JSC::CodeBlock::setRareCaseProfiles): Deleted.
(JSC::CodeBlock::rareCaseProfileForBytecodeIndex): Deleted.
(JSC::CodeBlock::rareCaseProfileCountForBytecodeIndex): Deleted.

  • bytecode/CodeBlock.h:

(JSC::CodeBlock::likelyToTakeSlowCase): Deleted.
(JSC::CodeBlock::couldTakeSlowCase): Deleted.

  • bytecode/ValueProfile.h:

(JSC::RareCaseProfile::RareCaseProfile): Deleted.
(JSC::getRareCaseProfileBytecodeIndex): Deleted.

  • dfg/DFGByteCodeParser.cpp:

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

  • jit/JIT.cpp:

(JSC::JIT::privateCompileSlowCases):

3:13 PM Changeset in webkit [277757] by ysuzuki@apple.com
  • 5 edits in trunk/Source/JavaScriptCore

[JSC} Remove exception checks from non-throwing function calls in Baseline JIT
https://bugs.webkit.org/show_bug.cgi?id=224920

Reviewed by Tadeu Zagallo.

These functions are not taking JSGlobalObject and will not throw an error.
Use callOperationNoExceptionCheck instead to avoid emitting unnecessary exception checks.

  • jit/JIT.cpp:

(JSC::JIT::emitEnterOptimizationCheck):

  • jit/JITOpcodes.cpp:

(JSC::JIT::emitSlow_op_new_object):
(JSC::JIT::emit_op_catch):
(JSC::JIT::emit_op_switch_imm):
(JSC::JIT::emitSlow_op_loop_hint):
(JSC::JIT::emit_op_profile_type):

  • jit/JITOpcodes32_64.cpp:

(JSC::JIT::emitSlow_op_new_object):
(JSC::JIT::emit_op_catch):
(JSC::JIT::emit_op_switch_imm):
(JSC::JIT::emit_op_profile_type):

  • jit/JITPropertyAccess.cpp:

(JSC::JIT::emitWriteBarrier):

2:41 PM Changeset in webkit [277756] by Ruben Turcios
  • 2 edits in branches/safari-612.1.15.0-branch/Tools

Revert "Cherry-pick r277608. rdar://problem/78207926"

This reverts commit r277724

2:36 PM Changeset in webkit [277755] by Ruben Turcios
  • 8 edits in branches/safari-612.1.15.0-branch/Source

Versioning.

WebKit-7612.1.15.0.2

2:31 PM Changeset in webkit [277754] by Ruben Turcios
  • 101 edits
    15 deletes in branches/safari-612.1.15.1-branch

Cherry-pick r277665. rdar://problem/78224090

Temporarily revert r276592 as it breaks some native apps
https://bugs.webkit.org/show_bug.cgi?id=225917

JSTests:

Unreviewed, revert.

  • microbenchmarks/put-slow-no-cache-array.js: Removed.
  • microbenchmarks/put-slow-no-cache-function.js: Removed.
  • microbenchmarks/put-slow-no-cache-js-proxy.js: Removed.
  • microbenchmarks/put-slow-no-cache-long-prototype-chain.js: Removed.
  • microbenchmarks/put-slow-no-cache.js: Removed.
  • microbenchmarks/reflect-set-with-receiver.js: Removed.
  • stress/custom-get-set-proto-chain-put.js: (getObjects): (let.base.of.getBases):
  • stress/module-namespace-access-set-fails.js: Removed.
  • stress/put-non-reified-static-accessor-or-custom.js: Removed.
  • stress/put-non-reified-static-function-or-custom.js: Removed.
  • stress/put-to-primitive-non-reified-static-custom.js: Removed.
  • stress/put-to-primitive.js: Removed.
  • stress/put-to-proto-chain-overrides-put.js: Removed.
  • stress/typed-array-canonical-numeric-index-string-set.js: Removed.

LayoutTests/imported/w3c:

Unreviewed, revert.

  • web-platform-tests/WebIDL/ecmascript-binding/interface-object-set-receiver-expected.txt: Removed.
  • web-platform-tests/WebIDL/ecmascript-binding/interface-object-set-receiver.html: Removed.
  • web-platform-tests/WebIDL/ecmascript-binding/interface-prototype-constructor-set-receiver-expected.txt:
  • web-platform-tests/WebIDL/ecmascript-binding/interface-prototype-constructor-set-receiver.html:

Source/JavaScriptCore:

Unreviewed, revert.

  • API/JSCallbackObject.h:
  • API/JSCallbackObjectFunctions.h: (JSC::JSCallbackObject<Parent>::put):
  • debugger/DebuggerScope.h:
  • runtime/ClassInfo.h:
  • runtime/ClonedArguments.h:
  • runtime/CustomGetterSetter.cpp: (JSC::callCustomSetter):
  • runtime/CustomGetterSetter.h:
  • runtime/ErrorConstructor.h:
  • runtime/ErrorInstance.h:
  • runtime/GenericArguments.h:
  • runtime/GenericArgumentsInlines.h: (JSC::GenericArguments<Type>::put):
  • runtime/GetterSetter.h:
  • runtime/JSArray.cpp: (JSC::JSArray::put):
  • runtime/JSArray.h:
  • runtime/JSArrayBufferView.cpp: (JSC::JSArrayBufferView::put):
  • runtime/JSArrayBufferView.h:
  • runtime/JSCJSValue.cpp: (JSC::JSValue::putToPrimitive):
  • runtime/JSCell.cpp: (JSC::JSCell::doPutPropertySecurityCheck):
  • runtime/JSCell.h:
  • runtime/JSFunction.cpp: (JSC::JSFunction::put):
  • runtime/JSFunction.h:
  • runtime/JSGenericTypedArrayView.h:
  • runtime/JSGlobalLexicalEnvironment.h:
  • runtime/JSGlobalObject.cpp: (JSC::JSGlobalObject::put):
  • runtime/JSGlobalObject.h:
  • runtime/JSLexicalEnvironment.h:
  • runtime/JSModuleEnvironment.h:
  • runtime/JSModuleNamespaceObject.h:
  • runtime/JSObject.cpp: (JSC::JSObject::doPutPropertySecurityCheck): (JSC::JSObject::putInlineSlow): (JSC::JSObject::prototypeChainMayInterceptStoreTo): (JSC::definePropertyOnReceiverSlow): Deleted. (JSC::JSObject::definePropertyOnReceiver): Deleted. (JSC::JSObject::putInlineFastReplacingStaticPropertyIfNeeded): Deleted.
  • runtime/JSObject.h: (JSC::JSObject::putByIndexInline): (JSC::JSObject::doPutPropertySecurityCheck): (JSC::JSObject::hasNonReifiedStaticProperties): Deleted.
  • runtime/JSObjectInlines.h: (JSC::JSObject::canPerformFastPutInlineExcludingProto): (JSC::JSObject::putInlineForJSObject): (JSC::JSObject::putDirectInternal): (JSC::JSObject::putInlineFast): Deleted.
  • runtime/JSProxy.h:
  • runtime/JSTypeInfo.h: (JSC::TypeInfo::overridesGetOwnPropertySlot const): (JSC::TypeInfo::overridesAnyFormOfGetOwnPropertyNames const): (JSC::TypeInfo::hasPutPropertySecurityCheck const): (JSC::TypeInfo::hasStaticPropertyTable const): Deleted. (JSC::TypeInfo::overridesPut const): Deleted.
  • runtime/Lookup.h: (JSC::putEntry): (JSC::lookupPut):
  • runtime/PropertySlot.h:
  • runtime/ProxyObject.cpp: (JSC::ProxyObject::put):
  • runtime/ProxyObject.h:
  • runtime/PutPropertySlot.h: (JSC::PutPropertySlot::PutPropertySlot): (JSC::PutPropertySlot::context const): (JSC::PutPropertySlot::type const): (JSC::PutPropertySlot::isInitialization const): (JSC::PutPropertySlot::isTaintedByOpaqueObject const): Deleted. (JSC::PutPropertySlot::setIsTaintedByOpaqueObject): Deleted.
  • runtime/ReflectObject.cpp: (JSC::JSC_DEFINE_HOST_FUNCTION):
  • runtime/RegExpObject.cpp: (JSC::RegExpObject::put):
  • runtime/RegExpObject.h:
  • runtime/StringObject.cpp: (JSC::StringObject::put):
  • runtime/StringObject.h:
  • runtime/StringPrototype.cpp: (JSC::StringPrototype::finishCreation): (JSC::StringPrototype::create):
  • runtime/StringPrototype.h:
  • runtime/Structure.cpp: (JSC::Structure::validateFlags):
  • runtime/Structure.h: (JSC::Structure::takesSlowPathInDFGForImpureProperty): (JSC::Structure::hasNonReifiedStaticProperties const): Deleted.
  • tools/JSDollarVM.cpp:

Source/WebCore:

Unreviewed, revert.

  • bindings/js/JSDOMWindowCustom.cpp: (WebCore::JSDOMWindow::doPutPropertySecurityCheck): (WebCore::JSDOMWindow::put):
  • bindings/js/JSLocationCustom.cpp: (WebCore::JSLocation::doPutPropertySecurityCheck):
  • bindings/js/JSRemoteDOMWindowCustom.cpp: (WebCore::JSRemoteDOMWindow::put):
  • bindings/scripts/CodeGeneratorJS.pm: (GeneratePut): (GenerateHeader):
  • bindings/scripts/test/JS/JSTestDomainSecurity.h:
  • bindings/scripts/test/JS/JSTestIndexedSetterNoIdentifier.cpp: (WebCore::JSTestIndexedSetterNoIdentifier::put):
  • bindings/scripts/test/JS/JSTestIndexedSetterNoIdentifier.h:
  • bindings/scripts/test/JS/JSTestIndexedSetterThrowingException.cpp: (WebCore::JSTestIndexedSetterThrowingException::put):
  • bindings/scripts/test/JS/JSTestIndexedSetterThrowingException.h:
  • bindings/scripts/test/JS/JSTestIndexedSetterWithIdentifier.cpp: (WebCore::JSTestIndexedSetterWithIdentifier::put):
  • bindings/scripts/test/JS/JSTestIndexedSetterWithIdentifier.h:
  • bindings/scripts/test/JS/JSTestInterface.h:
  • bindings/scripts/test/JS/JSTestNamedAndIndexedSetterNoIdentifier.cpp: (WebCore::JSTestNamedAndIndexedSetterNoIdentifier::put):
  • bindings/scripts/test/JS/JSTestNamedAndIndexedSetterNoIdentifier.h:
  • bindings/scripts/test/JS/JSTestNamedAndIndexedSetterThrowingException.cpp: (WebCore::JSTestNamedAndIndexedSetterThrowingException::put):
  • bindings/scripts/test/JS/JSTestNamedAndIndexedSetterThrowingException.h:
  • bindings/scripts/test/JS/JSTestNamedAndIndexedSetterWithIdentifier.cpp: (WebCore::JSTestNamedAndIndexedSetterWithIdentifier::put):
  • bindings/scripts/test/JS/JSTestNamedAndIndexedSetterWithIdentifier.h:
  • bindings/scripts/test/JS/JSTestNamedSetterNoIdentifier.cpp: (WebCore::JSTestNamedSetterNoIdentifier::put):
  • bindings/scripts/test/JS/JSTestNamedSetterNoIdentifier.h:
  • bindings/scripts/test/JS/JSTestNamedSetterThrowingException.cpp: (WebCore::JSTestNamedSetterThrowingException::put):
  • bindings/scripts/test/JS/JSTestNamedSetterThrowingException.h:
  • bindings/scripts/test/JS/JSTestNamedSetterWithIdentifier.cpp: (WebCore::JSTestNamedSetterWithIdentifier::put):
  • bindings/scripts/test/JS/JSTestNamedSetterWithIdentifier.h:
  • bindings/scripts/test/JS/JSTestNamedSetterWithIndexedGetter.cpp: (WebCore::JSTestNamedSetterWithIndexedGetter::put):
  • bindings/scripts/test/JS/JSTestNamedSetterWithIndexedGetter.h:
  • bindings/scripts/test/JS/JSTestNamedSetterWithIndexedGetterAndSetter.cpp: (WebCore::JSTestNamedSetterWithIndexedGetterAndSetter::put):
  • bindings/scripts/test/JS/JSTestNamedSetterWithIndexedGetterAndSetter.h:
  • bindings/scripts/test/JS/JSTestNamedSetterWithLegacyOverrideBuiltIns.cpp: (WebCore::JSTestNamedSetterWithLegacyOverrideBuiltIns::put):
  • bindings/scripts/test/JS/JSTestNamedSetterWithLegacyOverrideBuiltIns.h:
  • bindings/scripts/test/JS/JSTestNamedSetterWithLegacyUnforgeableProperties.cpp: (WebCore::JSTestNamedSetterWithLegacyUnforgeableProperties::put):
  • bindings/scripts/test/JS/JSTestNamedSetterWithLegacyUnforgeableProperties.h:
  • bindings/scripts/test/JS/JSTestNamedSetterWithLegacyUnforgeablePropertiesAndLegacyOverrideBuiltIns.cpp: (WebCore::JSTestNamedSetterWithLegacyUnforgeablePropertiesAndLegacyOverrideBuiltIns::put):
  • bindings/scripts/test/JS/JSTestNamedSetterWithLegacyUnforgeablePropertiesAndLegacyOverrideBuiltIns.h:
  • bindings/scripts/test/JS/JSTestPluginInterface.cpp: (WebCore::JSTestPluginInterface::put):
  • bindings/scripts/test/JS/JSTestPluginInterface.h:
  • bridge/objc/objc_runtime.h:
  • bridge/runtime_array.h:
  • bridge/runtime_object.h:

Source/WebKit:

Unreviewed, revert.

  • WebProcess/Plugins/Netscape/JSNPObject.h:

LayoutTests:

Unreviewed, revert

  • http/tests/security/cross-frame-access-object-getPrototypeOf-in-put-expected.txt:
  • http/tests/security/cross-frame-access-object-getPrototypeOf-in-put.html:
  • js/dom/reflect-set-onto-dom-expected.txt:
  • js/dom/script-tests/reflect-set-onto-dom.js:

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

2:31 PM Changeset in webkit [277753] by Ruben Turcios
  • 2 edits in branches/safari-612.1.15.1-branch/Tools

Revert "Cherry-pick r277608. rdar://problem/78207944"

This reverts commit r277723

2:23 PM Changeset in webkit [277752] by Ruben Turcios
  • 8 edits in branches/safari-612.1.15.1-branch/Source

Versioning.

WebKit-7612.1.15.1.5

2:18 PM Changeset in webkit [277751] by weinig@apple.com
  • 8 edits in trunk/Source

HTMLCanvasElement toDataURL and toBlob do unnecessary data copies through a CFDataRef
https://bugs.webkit.org/show_bug.cgi?id=225853

Reviewed by Darin Adler.

When trying to encode either a PixelBuffer or a ImageBuffer to an image for
blob or dataURL creation, we were using a method that required always first
creating a CFDataRef and then copying that CFDataRef's data into what we needed.

Instead, we can use a callback based CGDataConsumer and some passed around
functors to get the data directly as it is being encoded and process it as
needed. ScopedLambda is used to avoid unnecessary inlining or allocation that
a template based functor or WTF::Function would require respectively.

  • platform/graphics/cg/ImageBufferCGBackend.h:
  • platform/graphics/cg/ImageBufferCGBackend.cpp:

(WebCore::ImageBufferCGBackend::toCFData const): Deleted.
(WebCore::ImageBufferCGBackend::copyPlatformImageForEncoding const):
Factor out PlatformImagePtr creation into its own function. This replaces the
toCFData virtual function, and is used in conjunction with the data/dataURL
functions in ImageBufferCGBackend to produce the encoded data.

(WebCore::ImageBufferCGBackend::toData const):
(WebCore::ImageBufferCGBackend::toDataURL const):
Rework to use copyPlatformImageForEncoding and data/dataURL in ImageBufferCGBackend
to produce the encoded data.

  • platform/graphics/cg/ImageBufferIOSurfaceBackend.h:
  • platform/graphics/cg/ImageBufferIOSurfaceBackend.cpp:

(WebCore::ImageBufferIOSurfaceBackend::copyPlatformImageForEncoding const):
(WebCore::ImageBufferIOSurfaceBackend::toCFData const): Deleted.
Like toCFData before it, copyPlatformImageForEncoding is virtual allowing for this
override in ImageBufferIOSurfaceBackend.

  • platform/graphics/cg/ImageBufferUtilitiesCG.h:
  • platform/graphics/cg/ImageBufferUtilitiesCG.cpp:

(WebCore::encode):
(WebCore::encodeToVector):
(WebCore::encodeToDataURL):
(WebCore::data):
(WebCore::dataURL):
(WebCore::encodeImage): Deleted.
(WebCore::cfData): Deleted.
(WebCore::dataVector): Deleted.
Replace encodeImage(), which filled in a CFMutableDataRef, with overloads of data() and
dataURL() that now use a callback based CGDataConsumer and some callback functors to
allow the encoded data to be consumed as it is being created. Also makes use of new
base64Encoded() adapter to base64 encode directly in makeString().

2:00 PM Changeset in webkit [277750] by Chris Dumez
  • 25 edits in trunk

Drop "get" prefix from SQLiteStatement member functions as well as out-parameters
https://bugs.webkit.org/show_bug.cgi?id=225971

Reviewed by Darin Adler.

Source/WebCore:

Drop "get" prefix from SQLiteStatement member functions as well as out-parameters to
modernize the code a bit and follow WebKit style.

  • Modules/indexeddb/server/SQLiteIDBBackingStore.cpp:

(WebCore::IDBServer::createOrMigrateRecordsTableIfNecessary):
(WebCore::IDBServer::SQLiteIDBBackingStore::ensureValidBlobTables):
(WebCore::IDBServer::SQLiteIDBBackingStore::ensureValidIndexRecordsTable):
(WebCore::IDBServer::SQLiteIDBBackingStore::ensureValidIndexRecordsIndex):
(WebCore::IDBServer::SQLiteIDBBackingStore::ensureValidIndexRecordsRecordIndex):
(WebCore::IDBServer::SQLiteIDBBackingStore::ensureValidObjectStoreInfoTable):
(WebCore::IDBServer::SQLiteIDBBackingStore::migrateIndexInfoTableForIDUpdate):
(WebCore::IDBServer::SQLiteIDBBackingStore::migrateIndexRecordsTableForIDUpdate):
(WebCore::IDBServer::SQLiteIDBBackingStore::addExistingIndex):
(WebCore::IDBServer::SQLiteIDBBackingStore::extractExistingDatabaseInfo):
(WebCore::IDBServer::SQLiteIDBBackingStore::databaseNameAndVersionFromFile):
(WebCore::IDBServer::SQLiteIDBBackingStore::deleteUnusedBlobFileRecords):
(WebCore::IDBServer::SQLiteIDBBackingStore::deleteRecord):
(WebCore::IDBServer::SQLiteIDBBackingStore::getBlobRecordsForObjectStoreRecord):
(WebCore::IDBServer::SQLiteIDBBackingStore::getRecord):
(WebCore::IDBServer::SQLiteIDBBackingStore::getAllObjectStoreRecords):
(WebCore::IDBServer::SQLiteIDBBackingStore::uncheckedGetIndexRecordForOneKey):
(WebCore::IDBServer::SQLiteIDBBackingStore::getCount):
(WebCore::IDBServer::SQLiteIDBBackingStore::uncheckedGetKeyGeneratorValue):
(WebCore::IDBServer::SQLiteIDBBackingStore::deleteBackingStore):

  • Modules/indexeddb/server/SQLiteIDBCursor.cpp:

(WebCore::IDBServer::SQLiteIDBCursor::internalFetchNextRecord):

  • Modules/webdatabase/Database.cpp:

(WebCore::retrieveTextResultFromDatabase):
(WebCore::Database::performGetTableNames):

  • Modules/webdatabase/DatabaseTracker.cpp:

(WebCore::DatabaseTracker::fullPathForDatabaseNoLock):
(WebCore::DatabaseTracker::origins):
(WebCore::DatabaseTracker::databaseNamesNoLock):
(WebCore::DatabaseTracker::detailsForNameAndOrigin):
(WebCore::DatabaseTracker::setDatabaseDetails):
(WebCore::DatabaseTracker::quotaNoLock):
(WebCore::DatabaseTracker::removeDeletedOpenedDatabases):

  • Modules/webdatabase/SQLStatement.cpp:

(WebCore::SQLStatement::execute):

  • loader/appcache/ApplicationCacheStorage.cpp:

(WebCore::ApplicationCacheStorage::loadCacheGroup):
(WebCore::ApplicationCacheStorage::loadManifestHostHashes):
(WebCore::ApplicationCacheStorage::cacheGroupForURL):
(WebCore::ApplicationCacheStorage::fallbackCacheGroupForURL):
(WebCore::ApplicationCacheStorage::calculateQuotaForOrigin):
(WebCore::ApplicationCacheStorage::calculateUsageForOrigin):
(WebCore::ApplicationCacheStorage::calculateRemainingSizeForOriginExcludingCache):
(WebCore::ApplicationCacheStorage::verifySchemaVersion):
(WebCore::ApplicationCacheStorage::loadCache):
(WebCore::ApplicationCacheStorage::manifestURLs):
(WebCore::ApplicationCacheStorage::deleteCacheGroupRecord):
(WebCore::ApplicationCacheStorage::checkForDeletedResources):
(WebCore::ApplicationCacheStorage::flatFileAreaSize):

  • platform/network/curl/CookieJarDB.cpp:

(WebCore::CookieJarDB::verifySchemaVersion):
(WebCore::CookieJarDB::checkDatabaseValidity):
(WebCore::CookieJarDB::searchCookies):
(WebCore::CookieJarDB::getAllCookies):
(WebCore::CookieJarDB::allDomains):

  • platform/sql/SQLiteDatabase.cpp:

(WebCore::SQLiteDatabase::useWALJournalMode):
(WebCore::SQLiteDatabase::maximumSize):
(WebCore::SQLiteDatabase::pageSize):
(WebCore::SQLiteDatabase::freeSpaceSize):
(WebCore::SQLiteDatabase::totalSize):
(WebCore::SQLiteDatabase::clearAllTables):
(WebCore::SQLiteDatabase::turnOnIncrementalAutoVacuum):

  • platform/sql/SQLiteStatement.cpp:

(WebCore::SQLiteStatement::columnName):
(WebCore::SQLiteStatement::columnValue):
(WebCore::SQLiteStatement::columnText):
(WebCore::SQLiteStatement::columnDouble):
(WebCore::SQLiteStatement::columnInt):
(WebCore::SQLiteStatement::columnInt64):
(WebCore::SQLiteStatement::columnBlobAsString):
(WebCore::SQLiteStatement::columnBlob):

  • platform/sql/SQLiteStatement.h:
  • platform/win/SearchPopupMenuDB.cpp:

(WebCore::SearchPopupMenuDB::loadRecentSearches):
(WebCore::SearchPopupMenuDB::checkDatabaseValidity):
(WebCore::SearchPopupMenuDB::verifySchemaVersion):

  • workers/service/server/RegistrationDatabase.cpp:

(WebCore::RegistrationDatabase::ensureValidRecordsTable):
(WebCore::RegistrationDatabase::importRecords):

Source/WebKit:

Update code base due to SQLiteStatement API changes.

  • NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp:

(WebKit::ResourceLoadStatisticsDatabaseStore::currentTableAndIndexQueries):
(WebKit::ResourceLoadStatisticsDatabaseStore::missingUniqueIndices):
(WebKit::ResourceLoadStatisticsDatabaseStore::columnsForTable):
(WebKit::ResourceLoadStatisticsDatabaseStore::openAndUpdateSchemaIfNecessary):
(WebKit::ResourceLoadStatisticsDatabaseStore::isEmpty const):
(WebKit::ResourceLoadStatisticsDatabaseStore::relationshipExists const):
(WebKit::ResourceLoadStatisticsDatabaseStore::domainID const):
(WebKit::ResourceLoadStatisticsDatabaseStore::merge):
(WebKit::ResourceLoadStatisticsDatabaseStore::getThirdPartyDataForSpecificFirstPartyDomains const):
(WebKit::ResourceLoadStatisticsDatabaseStore::aggregatedThirdPartyData const):
(WebKit::ResourceLoadStatisticsDatabaseStore::recursivelyFindNonPrevalentDomainsThatRedirectedToThisDomain):
(WebKit::ResourceLoadStatisticsDatabaseStore::markAsPrevalentIfHasRedirectedToPrevalent):
(WebKit::ResourceLoadStatisticsDatabaseStore::findNotVeryPrevalentResources):
(WebKit::ResourceLoadStatisticsDatabaseStore::hasHadUserInteraction):
(WebKit::ResourceLoadStatisticsDatabaseStore::dumpResourceLoadStatistics):
(WebKit::ResourceLoadStatisticsDatabaseStore::predicateValueForDomain const):
(WebKit::ResourceLoadStatisticsDatabaseStore::getMostRecentlyUpdatedTimestamp const):
(WebKit::ResourceLoadStatisticsDatabaseStore::ensureResourceStatisticsForRegistrableDomain):
(WebKit::ResourceLoadStatisticsDatabaseStore::allDomains const):
(WebKit::ResourceLoadStatisticsDatabaseStore::cookieAccess):
(WebKit::ResourceLoadStatisticsDatabaseStore::hasUserGrantedStorageAccessThroughPrompt):
(WebKit::ResourceLoadStatisticsDatabaseStore::domainsToBlockAndDeleteCookiesFor const):
(WebKit::ResourceLoadStatisticsDatabaseStore::domainsToBlockButKeepCookiesFor const):
(WebKit::ResourceLoadStatisticsDatabaseStore::domainsWithUserInteractionAsFirstParty const):
(WebKit::ResourceLoadStatisticsDatabaseStore::domainsWithStorageAccess const):
(WebKit::ResourceLoadStatisticsDatabaseStore::domains const):
(WebKit::ResourceLoadStatisticsDatabaseStore::pruneStatisticsIfNeeded):
(WebKit::ResourceLoadStatisticsDatabaseStore::isCorrectSubStatisticsCount):
(WebKit::ResourceLoadStatisticsDatabaseStore::getDomainStringFromDomainID const):
(WebKit::ResourceLoadStatisticsDatabaseStore::appendSubStatisticList const):
(WebKit::ResourceLoadStatisticsDatabaseStore::resourceToString const):
(WebKit::ResourceLoadStatisticsDatabaseStore::domainIDExistsInDatabase):
(WebKit::ResourceLoadStatisticsDatabaseStore::updateOperatingDatesParameters):
(WebKit::ResourceLoadStatisticsDatabaseStore::buildPrivateClickMeasurementFromDatabase):
(WebKit::ResourceLoadStatisticsDatabaseStore::attributionToString):
(WebKit::ResourceLoadStatisticsDatabaseStore::privateClickMeasurementToString):
(WebKit::ResourceLoadStatisticsDatabaseStore::earliestTimesToSend):

  • NetworkProcess/WebStorage/LocalStorageDatabase.cpp:

(WebKit::LocalStorageDatabase::items const):
(WebKit::LocalStorageDatabase::item const):
(WebKit::LocalStorageDatabase::databaseIsEmpty const):

  • UIProcess/API/glib/IconDatabase.cpp:

(WebKit::IconDatabase::IconDatabase):
(WebKit::IconDatabase::populatePageURLToIconURLMap):
(WebKit::IconDatabase::iconIDForIconURL):
(WebKit::IconDatabase::iconData):
(WebKit::IconDatabase::loadIconForPageURL):

  • UIProcess/API/glib/IconDatabase.h:

Source/WebKitLegacy:

Update code base due to SQLiteStatement API changes.

  • Storage/StorageAreaSync.cpp:

(WebKit::StorageAreaSync::performImport):
(WebKit::StorageAreaSync::deleteEmptyDatabase):

  • Storage/StorageTracker.cpp:

(WebKit::StorageTracker::syncImportOriginIdentifiers):
(WebKit::StorageTracker::syncDeleteAllOrigins):
(WebKit::StorageTracker::databasePathForOrigin):

Source/WTF:

Add Vector constructor that takes in an array and a size.

  • wtf/Vector.h:

(WTF::Vector::Vector):

Tools:

Add API test coverage for new Vector constructor.

  • TestWebKitAPI/Tests/WTF/Vector.cpp:

(TestWebKitAPI::TEST):

1:56 PM Changeset in webkit [277749] by Kyle Piddington
  • 4 edits
    2 adds in trunk

ASSERT(!toType.isArray()) failure in sh::CoerceSimple due to vector array dereference
https://bugs.webkit.org/show_bug.cgi?id=225864
Source/ThirdParty/ANGLE:

<rdar://77968214>

Reviewed by Dean Jackson.

Fixed program translation error, additional issues with transform feedback shaders

  • src/compiler/translator/TranslatorMetalDirect/AddExplicitTypeCasts.cpp:
  • src/libANGLE/renderer/metal/ProgramMtl.mm:

(rx::ProgramMtl::reset):

LayoutTests:

<rdar://77968214>

Reviewed by Dean Jackson.

Fixed program translation error, additional issues with preloaded transform feedback shaders

  • fast/canvas/webgl/shader-vec-array-deref-no-crash-expected.txt: Added.
  • fast/canvas/webgl/shader-vec-array-deref-no-crash.html: Added.
1:49 PM Changeset in webkit [277748] by rmorisset@apple.com
  • 3 edits
    1 add in trunk

Fix typo in AirUseCounts
https://bugs.webkit.org/show_bug.cgi?id=225977
rdar://78210501

Reviewed by Mark Lam.

JSTests:

Add the testcase found by Tuomas.

  • stress/register-allocator-stress.js: Added.

(foo):

Source/JavaScriptCore:

I had just messed up a copy-and-paste, using "gp" instead of "fp" in code that deals with floating point values.
This did not show in my tests, probably because few functions have more floating point temporaries than non-floating-point.

  • b3/air/AirUseCounts.h:

(JSC::B3::Air::UseCounts::UseCounts):

1:30 PM Changeset in webkit [277747] by Wenson Hsieh
  • 5 edits
    2 adds in trunk/Source/WebCore

[macOS] Pull ServicesOverlayController::Highlight out into a separate helper class
https://bugs.webkit.org/show_bug.cgi?id=225968

Reviewed by Tim Horton.

Refactor some code for painting data detector highlights (DDHighlightRef), by pulling what is currently
ServicesOverlayController::Highlight out into a separate helper class. In a future patch, I plan on using this
functionality for the image overlay controller to support rendering data detector highlights there.

This patch also makes some minor adjustments:

  • Make DataDetectorHighlight capable of being stored in a WeakPtr, and have ServicesOverlayController

hold on to a WeakHashSet<DataDetectorHighlight> instead of a hash set of raw pointers. This additionally
makes it unnecessary to add methods for DataDetectorHighlight to notify ServicesOverlayController upon
creation or destruction, since we can simply add the newly created highlight to the weak set after creating
it, and since it's a WeakPtr, it will get cleaned up upon destruction.

  • Make DataDetectorHighlight::Type an enum class, and make m_dirtyHighlightTypes an OptionSet instead of

a raw bitmask.

  • Use auto in a few places where the type is apparent (e.g. in some places where we use adoptCF).
  • Make highlightFadeAnimationDuration a WTF::Seconds instead of a raw floating point value.
  • Add a FIXME in DataDetectorHighlight::paintContents about the need to refactor this painting logic so that

it does *not* use the platform CGContextRef directly.

No change in behavior.

  • SourcesCocoa.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • page/mac/ServicesOverlayController.h:

(WebCore::ServicesOverlayController::activeHighlight const):
(WebCore::ServicesOverlayController::Highlight::ddHighlight const): Deleted.
(WebCore::ServicesOverlayController::Highlight::range const): Deleted.
(WebCore::ServicesOverlayController::Highlight::layer const): Deleted.
(WebCore::ServicesOverlayController::Highlight::type const): Deleted.

  • page/mac/ServicesOverlayController.mm:

(WebCore::ServicesOverlayController::~ServicesOverlayController):
(WebCore::ServicesOverlayController::selectionRectsDidChange):
(WebCore::ServicesOverlayController::selectedTelephoneNumberRangesChanged):
(WebCore::ServicesOverlayController::invalidateHighlightsOfType):
(WebCore::ServicesOverlayController::buildPotentialHighlightsIfNeeded):
(WebCore::ServicesOverlayController::mouseIsOverHighlight const):
(WebCore::ServicesOverlayController::remainingTimeUntilHighlightShouldBeShown const):
(WebCore::ServicesOverlayController::removeAllPotentialHighlightsOfType):
(WebCore::ServicesOverlayController::buildPhoneNumberHighlights):
(WebCore::ServicesOverlayController::buildSelectionHighlight):
(WebCore::ServicesOverlayController::replaceHighlightsOfTypePreservingEquivalentHighlights):
(WebCore::ServicesOverlayController::findTelephoneNumberHighlightContainingSelectionHighlight):
(WebCore::ServicesOverlayController::determineActiveHighlight):
(WebCore::ServicesOverlayController::mouseEvent):
(WebCore::ServicesOverlayController::didScrollFrame):
(WebCore::ServicesOverlayController::handleClick):
(WebCore::ServicesOverlayController::shouldRemoveHighlightLayerAfterFadingOut const):
(WebCore::ServicesOverlayController::Highlight::createForSelection): Deleted.
(WebCore::ServicesOverlayController::Highlight::createForTelephoneNumber): Deleted.
(WebCore::ServicesOverlayController::Highlight::Highlight): Deleted.
(WebCore::ServicesOverlayController::Highlight::~Highlight): Deleted.
(WebCore::ServicesOverlayController::Highlight::setDDHighlight): Deleted.
(WebCore::ServicesOverlayController::Highlight::invalidate): Deleted.
(WebCore::ServicesOverlayController::Highlight::notifyFlushRequired): Deleted.
(WebCore::ServicesOverlayController::Highlight::paintContents): Deleted.
(WebCore::ServicesOverlayController::Highlight::deviceScaleFactor const): Deleted.
(WebCore::ServicesOverlayController::Highlight::fadeIn): Deleted.
(WebCore::ServicesOverlayController::Highlight::fadeOut): Deleted.
(WebCore::ServicesOverlayController::Highlight::didFinishFadeOutAnimation): Deleted.
(WebCore::ServicesOverlayController::highlightsAreEquivalent): Deleted.
(WebCore::ServicesOverlayController::didCreateHighlight): Deleted.
(WebCore::ServicesOverlayController::willDestroyHighlight): Deleted.

  • platform/mac/DataDetectorHighlight.h: Added.

(WebCore::DataDetectorHighlightClient::shouldRemoveHighlightLayerAfterFadingOut const):
(WebCore::DataDetectorHighlight::highlight const):
(WebCore::DataDetectorHighlight::range const):
(WebCore::DataDetectorHighlight::layer const):
(WebCore::DataDetectorHighlight::type const):

  • platform/mac/DataDetectorHighlight.mm: Added.

(WebCore::DataDetectorHighlight::createForSelection):
(WebCore::DataDetectorHighlight::createForTelephoneNumber):
(WebCore::DataDetectorHighlight::DataDetectorHighlight):
(WebCore::DataDetectorHighlight::setHighlight):
(WebCore::DataDetectorHighlight::invalidate):
(WebCore::DataDetectorHighlight::notifyFlushRequired):
(WebCore::DataDetectorHighlight::paintContents):
(WebCore::DataDetectorHighlight::deviceScaleFactor const):
(WebCore::DataDetectorHighlight::fadeIn):
(WebCore::DataDetectorHighlight::fadeOut):
(WebCore::DataDetectorHighlight::didFinishFadeOutAnimation):
(WebCore::areEquivalent):

12:53 PM Changeset in webkit [277746] by Russell Epstein
  • 1 copy in tags/Safari-612.1.15.1.4

Tag Safari-612.1.15.1.4.

12:44 PM Changeset in webkit [277745] by Russell Epstein
  • 8 edits in branches/safari-612.1.15.1-branch/Source

Versioning.

WebKit-7612.1.15.1.4

12:37 PM Changeset in webkit [277744] by Darin Adler
  • 34 edits
    1 add in trunk

Move CFStringRef and NSString support from StringBuilder into StringConcatenateCF
https://bugs.webkit.org/show_bug.cgi?id=225839

Reviewed by Sam Weinig.

Source/JavaScriptCore:

  • inspector/ConsoleMessage.cpp:

(Inspector::ConsoleMessage::ConsoleMessage): Use StringBuilder::clear instead of
StringBuilder::resize; no advantage to the latter after calling StringBuilder::toString.

  • runtime/JSONObject.cpp:

(JSC::Stringifier::Holder::appendNextProperty): Update for name change of
StringBuilder::resize to StringBuilder::shrink.

  • runtime/TypeSet.cpp:

(JSC::StructureShape::stringRepresentation): Ditto.

Source/WebCore:

  • Modules/airplay/WebMediaSessionManager.cpp:

(WebCore::mediaProducerStateString): Use StringBuilder exclusively instead of
mixing it with makeString. Also updated for StringBuilder::shrink name.

  • html/HTMLTextFormControlElement.cpp:

(WebCore::stripTrailingNewline): Updated for StringBuilder::shrink name.

  • page/CaptionUserPreferencesMediaAF.cpp:

(WebCore::CaptionUserPreferencesMediaAF::captionsTextColor const): Tweaked
coding style a bit.
(WebCore::appendCSS): Use variadic StringBuilder::append instead of many
separate calls.
(WebCore::CaptionUserPreferencesMediaAF::captionsDefaultFontCSS const):
Tweaked coding style a bit, and use variadic StrinBuilder::append calls
to reduce the number of calls and streamline the code.
(WebCore::CaptionUserPreferencesMediaAF::captionsStyleSheetOverride const):
Ditto. Also removed unnecessary checks that strings are empty before appending.

  • page/scrolling/ScrollingCoordinator.cpp:

(WebCore::ScrollingCoordinator::synchronousScrollingReasonsAsText):
Updated for StringBuilder::shrink name.

  • platform/LayoutUnit.h: Updated for saturatedSum/Difference names.
  • platform/network/cocoa/NetworkStorageSessionCocoa.mm:

(WebCore::NetworkStorageSession::cookiesForSession const): Tweaked codin
style a bit, and use variadic StrinBuilder::append calls to reduce the
number of calls and streamline the code.

  • rendering/RenderCounter.cpp:

(WebCore::planCounter): Updated for saturatedSum name.

  • style/StyleBuilderCustom.h:

(WebCore::Style::BuilderCustom::applyValueCounter): Ditto.

  • svg/SVGPathStringBuilder.cpp:

(WebCore::SVGPathStringBuilder::result): Updated for StringBuilder::shrink name.

  • testing/Internals.cpp:

(WebCore::Internals::pageMediaState): Ditto.

  • xml/XSLTProcessorLibxslt.cpp:

(WebCore::saveResultToString): Ditto.

Source/WebKit:

  • UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm:

(WebKit::WebsiteDataStore::platformSetNetworkParameters): Use makeString instead
of StringBuilder.

Source/WTF:

The new header makes CFStringRef and NSString work with string concatenation,
which means it now works with the variadic StringBuilder::append and makeString,
and still works with the single-argument StringBuilder::append. More efficient
that the old version because it does not allocate a temporary WTF::String for
the 16-bit character path.

Also made many other small improvements to the StringBuilder implementation.

  • WTF.xcodeproj/project.pbxproj: Added StringConcatenateCF.h.
  • wtf/CheckedArithmetic.h: Removed ConditionalCrashOnOverflow, which was only

here for use by StringBuilder, which does not use CheckedArithmetic any more.

  • wtf/PlatformFTW.cmake: Added StringConcatenateCF.h..
  • wtf/PlatformMac.cmake: Ditto.
  • wtf/PlatformWin.cmake: Ditto.
  • wtf/SaturatedArithmetic.h: Moved the contents of this file inside the

WTF namespace.
(WTF::signedAddInt32Overflows): Renamed this function. The type here is
important, and we are not doing anything to prevent type conversion or
create ambiguity, so it's good to be explicit in the function name.
(WTF::saturatedSum<int32_t>): Renamed this from saturatedAddition for
clarity. The function returns a sum, so that's a better name than calling
it "addition". Also, it's clearer to be explicit about the return type.
(WTF::signedSubtractInt32Overflows): Renamed. Same reason as above.
(WTF::saturatedDifference<int32_t>): Ditto.
(WTF::saturatedSum): Added. Does unsigned integer saturated addition.
This one can be written in a portable manner and still get really
efficient code on at least Intel and ARM64.
(WTF::saturatedSum): Added a function template that lets callers pass
larger number of arguments to saturatedSum, rather than exactly two.

  • wtf/text/StringBuilder.cpp:

(WTF::expandedCapacity): Renamed to use the term capacity rather than
length for the new required capacity.
(WTF::StringBuilder::didOverflow): Implement the new approach to
overflow, meaning we need to write the CRASH() here explicitly and
in the non-crashing mode, set m_length.
(WTF::StringBuilder::reifyString const): Changed the overflow check
into a RELEASE_ASSERT. This is now responsible for doing the check that
callers were doing earlier, so we want it in production builds. Also
simplified this since our m_length member is a simple integer now,
and removed the unused m_isReified.
(WTF::StringBuilder::shrink): Renamed this to shrink to match the
Vector::shrink function, since this has never supported making the
builder larger. Removed unnecessary overflow checks, since shrinking
cannot cause overflow.
(WTF::StringBuilder::allocateBuffer): Replaced two separate functions
with a single simpler function template. Removed extra overflow checks
because the StringImpl::tryCreateUninitialized function already does
the only overflow check we need. Also move to StringImpl::copyCharacters
for copying characters rather than using std::memcpy directly.
Removed code to set m_is8Bit and m_bufferCharacters.
(WTF::StringBuilder::reallocateBuffer): Replaced two separate
functions with a function template and a cover that calls the
appropriate instance of the template for places where we aren't
already in character-type-specific code paths. This version now
supports allocating a buffer for the first time in cases where
we have m_string and not m_buffer, which used to be handled at
the higher level. Removed code to set m_bufferCharacters.
(WTF::StringBuilder::reserveCapacity): Rewrote for simplicity.
By relying on the overflow checking inside reallocateBuffer and
allocateBuffer we no longer need checking of the passed-in value
at this level.
(WTF::StringBuilder::extendBufferForAppending): Removed the
version of this that takes additionalLength since it's
potentially confusing to have a family of functions that have the
same name and take the same type of argument, but interpret it
subtly differently. Streamlined the code using std::exchange.
This function now also includes the logic from the function named
extendBufferForAppendingWithoutOverflowCheck, which was subtly
misnamed since that was not the only semantic difference. Also
removed the ALWAYS_INLINE because the compiler will do the right
thing without such heavy handed advice.
(WTF::StringBuilder::extendBufferForAppendingSlowCase): Streamlined
this by using std::exchange and removed additional overflow checks
at this level since reallocateBuffer already does them. Also added
a check for the case where the new total length is 0, which would
not be handled correctly and efficiently by reallocateBuffer.
(WTF::StringBuilder::extendBufferForAppendingLChar): Renamed this
from extendBufferForAppending8, since it's now identical to calling
extendBufferForAppending<LChar>, except for inlining and linkage.
(WTF::StringBuilder::extendBufferForAppendingWithUpconvert):
Renamed this from extendBufferForAppending16. It is different from
the other extendBuffer functions because is supports upconverting
from LChar to UChar. Like the others it relies on allocateBuffer
for the overflow checking.
(WTF::StringBuilder::appendCharacters): Removed an unnecessary
assertion that the characters pointer is non-null; that will fail
in an obvious way without an assertion. Simplified the logic and
removed some invariant assertions that don't help us much. Changed
overflow checking by using saturatedSum to compute the new length.
In overflow cases, the new sum will be larger than the maximum
string length, but will fit in an unsigned, so we can pass it
down to lower levels and let functions like reallocateBuffer do
the actual overflow checking. Also use StringImpl::copyCharacters.
(WTF::StringBuilder::append): Removed the CFStringRef overload.
(WTF::StringBuilder::shouldShrinkToFit const): Rename this from
canShrink. Simplify the function a bit and remove the vague FIXME
that says "this should be tuned". That may be so, but the FIXME
is not really driving us to action.
(WTF::StringBuilder::shrinkToFit): Simplify by using the new
reallocateBuffer and std::exchange. Removed unneeded assertion
about overflow that doesn't help us maintain the invariant.
(WTF::StringBuilder::isAllASCII const): Was tempted to remove
this function, but for now just made it use the StringView
version for brevity.

  • wtf/text/StringBuilder.h: Removed many unneeded includes, and

notably included SaturatedArithmetic.h instead of
CheckedArithmetic.h because we now use the former instead of the
latter. Changed the overflow checking implementation to work
more simply based on saturated addition rather than Checked.
This allowed us to get rid of dependency on our own unique mode
for Checked, called ConditionalCrashOnOverflow. Removed a
comment about making a templatized version of StringBuilder.
We can do it if we like, but does not seem urgent. Moved
fucntion bodies out of the class definition so it's easier to
see what's going on in the class. Since m_length is now an
ordinary integer, the check for overflowed simply checks to see
if the length is larger than the maximum string length. When we
encounter overflow that is not about length computation, we set
the length to the maximum integer to indicate the failure.
Deleted the append overloads for CFStringRef and NSString.
Removed m_bufferCharacters, m_is8Bit, and m_isReified.
(WTF::StringBuilder::StringBuilder): Simplified the constructor
since we only have to initialize the m_shouldCrashOnOverflow member.
(WTF::StringBuilder::clear): Fixed a mistake where this was not
resetting the m_isReified flag.
(WTF::StringBuilder::swap): Updated for changes in the data members.
(WTF::StringBuilder::operator StringView const): Moved out of line.
Made sure to call the length() function so we crash if this is
called after overflow.
(WTF::StringBuilder::append): Remove some of the unnecessary checks
and special cases in the various versions of append. Most of the
checking is done inside appendCharacters, with only a few exceptions.
(WTF::StringBuilder::appendSubstring): Moved out of the class
definition without making significant changes.
(WTF::StringBuilder::appendCharacter): Ditto.
(WTF::StringBuilder::toString): Greatly simplified this function
by relying on overflow checking in the reifyString function instead
of doing it here and removing unneeded invariant assertions.
(WTF::StringBuilder::toStringPreserveCapacity const): Ditto.
(WTF::StringBuilder::toAtomString const): Rewrote this to streamline,
removing explicit overflow checks.
(WTF::StringBuilder::length const): Moved out of the class
definition without making significant changes.
(WTF::StringBuilder::capacity const): Ditto.
(WTF::StringBuilder::operator[] const): Ditto.
(WTF::StringBuilder::characters const): Implemented this operation
in the function template. Now rather than having this call the
characters8 and characters16 functions, they can call it.
(WTF::StringBuilder::getBufferCharacters<LChar>): Deleted.
(WTF::StringBuilder::getBufferCharacters<UChar>): Deleted.
(WTF::StringBuilder::appendFromAdapters): Use saturatedSum to
compute the required length, which allows the extendBuffer
functions to do overflow checking without having to take special
checked integer types for arguments.
(WTF::StringBuilder::equal): Implement using StringView.

  • wtf/text/StringBuilderJSON.cpp:

(WTF::StringBuilder::appendQuotedJSONString): Simplified the checked
arithmetic for computing the required capacity. Updated since we
removed m_bufferCharacters and changed the type of m_length.

  • wtf/text/cf/StringConcatenateCF.h: Added. Specializes StringTypeAdapter for

both CFStringRef and NSString *. If CFStringGetCStringPtr works for Latin-1, then
does the 8-bit code path, otherwise the 16-bit.

  • wtf/text/cocoa/TextStreamCocoa.mm: Include StringConcatenateCF.h, since it's

now needed to use CFStringRef with StringBuilder.

Tools:

  • TestWebKitAPI/Tests/WTF/SaturatedArithmeticOperations.cpp: Updated

tests for changes to SaturatedArithmetic.h.

  • TestWebKitAPI/Tests/WTF/StringBuilder.cpp: Updated tests for changes

to StringBuilder.

  • TestWebKitAPI/Tests/WebKit/GetUserMedia.mm:

(TestWebKitAPI::wkMediaCaptureStateString): Ditto.

  • WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:

Added include of StringConcatenateCF.h.
Added StringTypeAdapter for WKStringRef.
(WTR::styleDecToStr): Use ASCIILiteral instead of StringBuilder.
(WTR::string): Removed unneeded toWTFString since the WKStringRef
StringTypeAdapter takes care of it.
(WTR::string): Renamed from frameToStr. Use makeString.
(WTR::dumpResourceURL): Use append instead of appendLiteral.
(WTR::dumpFrameDescriptionSuitableForTestResult): Deleted.
(WTR::dumpLoadEvent): Use makeString.
(WTR::string): Renamed from a longer name. Return a String
instead of building in a StringBuilder. Use makeString.
(WTR::string): Ditto.
(WTR::dumpErrorDescriptionSuitableForTestResult): Removed
unneeded toWTFString.
(WTR::dumpFrameScrollPosition): Ditto.
(WTR::dumpDescendantFramesText): Ditto.
(WTR::InjectedBundlePage::dumpDOMAsWebArchive): Removed an
unneeded local variable.
(WTR::InjectedBundlePage::dump): Removed unneeded toWTFString.
(WTR::InjectedBundlePage::didReceiveTitleForFrame): Ditto.
(WTR::InjectedBundlePage::didFinishDocumentLoadForFrame):
Updated for functon name change.
(WTR::InjectedBundlePage::willSendRequestForFrame): Ditto.
Also use variadic append. Also use makeString.
(WTR::InjectedBundlePage::didReceiveResponseForResource): Ditto.
(WTR::InjectedBundlePage::didFinishLoadForResource): Ditto.
(WTR::InjectedBundlePage::didFailLoadForResource): Ditto.
(WTR::InjectedBundlePage::decidePolicyForNavigationAction): Ditto.
(WTR::InjectedBundlePage::decidePolicyForResponse): Ditto.
(WTR::InjectedBundlePage::willAddMessageToConsole): Ditto.
(WTR::InjectedBundlePage::willSetStatusbarText): Ditto.
(WTR::InjectedBundlePage::willRunJavaScriptPrompt): Ditto.
(WTR::InjectedBundlePage::didExceedDatabaseQuota): Ditto.
(WTR::InjectedBundlePage::shouldInsertNode): Ditto.
(WTR::InjectedBundlePage::shouldInsertText): Ditto.
(WTR::InjectedBundlePage::shouldDeleteRange): Ditto.
(WTR::InjectedBundlePage::shouldChangeSelectedRange): Ditto.
(WTR::InjectedBundlePage::shouldApplyStyle): Ditto.
(WTR::InjectedBundlePage::didBeginEditing): Ditto.
(WTR::InjectedBundlePage::didEndEditing): Ditto.
(WTR::InjectedBundlePage::didChange): Ditto.
(WTR::InjectedBundlePage::didChangeSelection): Ditto.
(WTR::InjectedBundlePage::dumpHistory): Ditto.

12:32 PM Changeset in webkit [277743] by Aditya Keerthi
  • 2 edits in trunk/Source/WebKit

[iOS][FCR] <select multiple> picker should collapse sections when tapping anywhere on a group header
https://bugs.webkit.org/show_bug.cgi?id=225974
<rdar://problem/77930033>

Reviewed by Wenson Hsieh.

Currently, the <select multiple> picker only collapses a section when
tapping on the disclosure button on the side of the group header. Instead,
a tap anywhere on the group header should collapse/expand the corresponding
section.

The new behavior is achieved by introducing WKSelectPickerGroupHeaderView,
a view that encapsulates the header label and disclosure icon. A tap
gesture recognizer is added to animate the icon, and notify the its
owner (WKSelectPickerTableViewController) when the view is tapped.

This patch also corrects the icon animation in RTL layouts, and corrects
the spacing between the header label and icon.

  • UIProcess/ios/forms/WKFormSelectPicker.mm:

(-[WKSelectPickerGroupHeaderView initWithGroupName:section:]):
(-[WKSelectPickerGroupHeaderView setCollapsed:animated:]):
(-[WKSelectPickerGroupHeaderView setDelegate:]):
(-[WKSelectPickerGroupHeaderView didTapHeader:]):
(+[WKSelectPickerGroupHeaderView preferredFont]):
(+[WKSelectPickerGroupHeaderView preferredMargin]):
(+[WKSelectPickerGroupHeaderView preferredHeight]):
(-[WKSelectPickerTableViewController tableView:heightForHeaderInSection:]):
(-[WKSelectPickerTableViewController tableView:viewForHeaderInSection:]):
(-[WKSelectPickerTableViewController didTapSelectPickerGroupHeaderView:]):

12:15 PM Changeset in webkit [277742] by aakash_jain@apple.com
  • 8 edits in trunk/Tools

Use Python 3 for running various scripts on build.webkit.org
https://bugs.webkit.org/show_bug.cgi?id=225929

Reviewed by Jonathan Bedard.

  • CISupport/build-webkit-org/steps.py: Use Python 3. Also removed ./ from invocation to match with ews code.

(TriggerCrashLogSubmission):
(WaitForCrashCollection):
(CleanBuildIfScheduled):
(DeleteStaleBuildFiles):
(ArchiveBuiltProduct):
(ArchiveMinifiedBuiltProduct):
(ExtractBuiltProduct):

  • CISupport/build-webkit-org/steps_unittest.py: Updated unit-tests.

(TestCleanBuildIfScheduled.test_success):
(TestCleanBuildIfScheduled.test_failure):

  • CISupport/built-product-archive: Updated shebang to Python 3.
  • CISupport/clean-build:
  • CISupport/delete-stale-build-files:
  • CISupport/trigger-crash-log-submission:
  • CISupport/wait-for-crash-collection:
12:05 PM Changeset in webkit [277741] by Kyle Piddington
  • 19 edits
    4 adds in trunk

Source/ThirdParty/ANGLE:
[ANGLE Metal] Support Provoking Vertex Emulation, Pass Fragment Output test suite.
https://bugs.webkit.org/show_bug.cgi?id=225842

Reviewed by Dean Jackson.

Add support for provoking vertex emulation. Metal only supports using the first vertex
of a primitive as a provoking vertex. To adapt, rewrite the index buffer on the fly when provoking vertex support is required. This method does not rewrite any primitives that would be
culled by primitive restart, such as simple triangles and lines. Triangle and line strips are re-written to line and triangle buffers. Tri fans and line loops are not supported for this
rewrite as of this patch.

  • ANGLE.xcodeproj/project.pbxproj:
  • src/libANGLE/renderer/metal/ContextMtl.h:
  • src/libANGLE/renderer/metal/ContextMtl.mm:

(rx::ContextMtl::ContextMtl):
(rx::ContextMtl::initialize):
(rx::ContextMtl::onDestroy):
(rx::ContextMtl::drawElementsImpl):
(rx::ContextMtl::flushCommandBufer):
(rx::ContextMtl::present):
(rx::ContextMtl::ensureCommandBufferReady):
(rx::ContextMtl::requiresIndexRewrite):

  • src/libANGLE/renderer/metal/ProgramMtl.h:
  • src/libANGLE/renderer/metal/ProgramMtl.mm:

(rx::ProgramMtl::ProgramMtl):
(rx::ProgramMtl::programHasFlatAttributes const):
(rx::ProgramMtl::linkImpl):

  • src/libANGLE/renderer/metal/ProvokingVertexHelper.h: Added.
  • src/libANGLE/renderer/metal/ProvokingVertexHelper.mm: Added.

(rx::primCountForIndexCount):
(rx::ProvokingVertexHelper::ProvokingVertexHelper):
(rx::ProvokingVertexHelper::onDestroy):
(rx::ProvokingVertexHelper::commitPreconditionCommandBuffer):
(rx::ProvokingVertexHelper::getComputeCommandEncoder):
(rx::ProvokingVertexHelper::ensureCommandBufferReady):
(rx::buildIndexBufferKey):
(rx::ProvokingVertexHelper::getSpecializedShader):
(rx::ProvokingVertexHelper::hasSpecializedShader):
(rx::ProvokingVertexHelper::prepareCommandEncoderForDescriptor):
(rx::ProvokingVertexHelper::preconditionIndexBuffer):

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

(std::hash<rx::mtl::ProvokingVertexComputePipelineDesc>::operator() const):

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

(rx::mtl::ProvokingVertexComputePipelineDesc::ProvokingVertexComputePipelineDesc):
(rx::mtl::ProvokingVertexComputePipelineDesc::operator=):
(rx::mtl::ProvokingVertexComputePipelineDesc::operator== const):
(rx::mtl::ProvokingVertexComputePipelineDesc::operator!= const):
(rx::mtl::ProvokingVertexComputePipelineDesc::hash const):
(rx::mtl::ProvokingVertexComputePipelineCache::ProvokingVertexComputePipelineCache):
(rx::mtl::ProvokingVertexComputePipelineCache::setComputeShader):
(rx::mtl::ProvokingVertexComputePipelineCache::clearPipelineStates):
(rx::mtl::ProvokingVertexComputePipelineCache::clear):
(rx::mtl::ProvokingVertexComputePipelineCache::getComputePipelineState):
(rx::mtl::ProvokingVertexComputePipelineCache::insertComputePipelineState):
(rx::mtl::ProvokingVertexComputePipelineCache::recreatePipelineStates):
(rx::mtl::ProvokingVertexComputePipelineCache::createComputePipelineState):
(rx::mtl::ProvokingVertexComputePipelineCache::~ProvokingVertexComputePipelineCache):

  • src/libANGLE/renderer/metal/mtl_utils.h:
  • src/libANGLE/renderer/metal/mtl_utils.mm:

(rx::mtl::CreateMslShader):

  • src/libANGLE/renderer/metal/shaders/mtl_default_shaders_src_autogen.inc:
  • src/libANGLE/renderer/metal/shaders/rewrite_indices.metal: Added.
  • src/libANGLE/renderer/metal/shaders/rewrite_indices_shared.h: Added.

LayoutTests:
[ANGLE Metal] Support provoking vertex emulation, pass fragmentOutput tests
https://bugs.webkit.org/show_bug.cgi?id=225842

Reviewed by Dean Jackson.

  • webgl/2.0.0/deqp/functional/gles3/fragmentoutput/array.int-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/fragmentoutput/array.uint-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/fragmentoutput/basic.int-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/fragmentoutput/basic.uint-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/fragmentoutput/random_00-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/fragmentoutput/random_01-expected.txt:
  • webgl/2.0.0/deqp/functional/gles3/fragmentoutput/random_02-expected.txt:
11:43 AM Changeset in webkit [277740] by weinig@apple.com
  • 110 edits in trunk

Update Base64 encoding/decoding to match more modern WebKit conventions
https://bugs.webkit.org/show_bug.cgi?id=225920

Reviewed by Chris Dumez.

Source/WebCore:

  • Updates to use new signatures for base64 encoding/decoding including utilizing the string type adaptor and makeString.
  • Replace out parameter based getDefaultWebCryptoMasterKey() with Optional<Vector<uint8_t>> defaultWebCryptoMasterKey().
  • Update synchronous loading code path to use uint8_t* consistently for data buffer representation.
  • Replace out parameters in quotedPrintableEncode/quotedPrintableDecode with Optional.
  • Modules/encryptedmedia/InitDataRegistry.cpp:

(WebCore::extractKeyIDsKeyids):
Update to use new base64URLDecode.

(WebCore::sanitizeKeyids):
Update to use new base64URLEncodeToString()

  • Modules/encryptedmedia/legacy/LegacyCDMSessionClearKey.cpp:

(WebCore::CDMSessionClearKey::update):
Update to use new base64Decode().

  • Modules/plugins/QuickTimePluginReplacement.mm:

(WebCore::jsValueWithDataInContext):
(WebCore::jsValueWithAVMetadataItemInContext):
Update to use new base64EncodeToString(). Replace string concatentation
using operator+ with makeString().

  • Modules/webauthn/AuthenticatorCoordinator.cpp:

(WebCore::AuthenticatorCoordinatorInternal::produceClientDataJson):
Update to use new base64URLEncodeToString().

  • Modules/webauthn/PublicKeyCredential.cpp:

(WebCore::PublicKeyCredential::PublicKeyCredential):
Update to use new base64URLEncodeToString().

  • Modules/websockets/WebSocketHandshake.cpp:

(WebCore::generateSecWebSocketKey):
(WebCore::WebSocketHandshake::getExpectedWebSocketAccept):
Update to use new base64URLEncodeToString().

  • crypto/SerializedCryptoKeyWrap.h:

Change from outparameter based getDefaultWebCryptoMasterKey() to new
Optional<Vector<uint8_t>> defaultWebCryptoMasterKey().

  • crypto/gcrypt/CryptoKeyECGCrypt.cpp:

(WebCore::CryptoKeyEC::platformAddFieldElements const):
Update to use new base64URLEncodeToString().

  • crypto/gcrypt/SerializedCryptoKeyWrapGCrypt.cpp:

(WebCore::defaultWebCryptoMasterKey):
(WebCore::getDefaultWebCryptoMasterKey): Deleted.
Update for new defaultWebCryptoMasterKey() signature.

  • crypto/keys/CryptoKeyAES.cpp:

(WebCore::CryptoKeyAES::importJwk):
(WebCore::CryptoKeyAES::exportJwk const):
Update to use new base64URLDecode / base64URLEncodeToString().

  • crypto/keys/CryptoKeyEC.cpp:

(WebCore::CryptoKeyEC::importJwk):
Update to use new base64URLDecode.

  • crypto/keys/CryptoKeyHMAC.cpp:

(WebCore::CryptoKeyHMAC::importJwk):
(WebCore::CryptoKeyHMAC::exportJwk const):
Update to use new base64URLDecode / base64URLEncodeToString().

  • crypto/keys/CryptoKeyRSA.cpp:

(WebCore::CryptoKeyRSA::importJwk):
(WebCore::CryptoKeyRSA::exportJwk const):
Update to use new base64URLDecode / base64URLEncodeToString().

  • crypto/mac/CryptoKeyECMac.cpp:

(WebCore::CryptoKeyEC::platformAddFieldElements const):
Update to use new base64URLEncodeToString().

  • crypto/mac/SerializedCryptoKeyWrapMac.mm:

(WebCore::createAndStoreMasterKey):
(WebCore::findMasterKey):
(WebCore::defaultWebCryptoMasterKey):
(WebCore::getDefaultWebCryptoMasterKey): Deleted.
Update for new defaultWebCryptoMasterKey() signature.

  • crypto/openssl/SerializedCryptoKeyWrapOpenSSL.cpp:

(WebCore::defaultWebCryptoMasterKey):
(WebCore::getDefaultWebCryptoMasterKey): Deleted.
Update for new defaultWebCryptoMasterKey() signature.

  • fileapi/FileReaderLoader.cpp:

(WebCore::FileReaderLoader::convertToDataURL):
Update to use new base64EncodeToString().

  • inspector/DOMPatchSupport.cpp:

(WebCore::DOMPatchSupport::createDigest):
Update to use new base64EncodeToString().

  • inspector/InspectorFrontendHost.cpp:

(WebCore::InspectorFrontendHost::showCertificate):
Update to use new base64URLDecode / base64URLEncodeToString().

  • inspector/NetworkResourcesData.cpp:

(WebCore::NetworkResourcesData::ResourceData::decodeDataToContent):
Update to use new base64EncodeToString().

  • inspector/agents/InspectorDOMAgent.cpp:

(WebCore::computeContentSecurityPolicySHA256Hash):
Update to use new base64Decode / base64EncodeToString().

  • inspector/agents/InspectorNetworkAgent.cpp:

(WebCore::Inspector::buildWebSocketMessage):
(WebCore::InspectorNetworkAgent::didReceiveData):
(WebCore::InspectorNetworkAgent::getSerializedCertificate):
(WebCore::InspectorNetworkAgent::interceptWithRequest):
(WebCore::InspectorNetworkAgent::interceptWithResponse):
(WebCore::InspectorNetworkAgent::interceptRequestWithResponse):
(WebCore::InspectorNetworkAgent::cachedResourceContent):
Update to use new base64Decode / base64EncodeToString().

  • inspector/agents/InspectorPageAgent.cpp:

(WebCore::InspectorPageAgent::dataContent):
(WebCore::InspectorPageAgent::archive):
Update to use new base64EncodeToString().

  • loader/FrameLoader.cpp:

(WebCore::FrameLoader::loadResourceSynchronously):
Switch to using Vector<uint8_t> buffer to match new loadResourceSynchronously
signature.

  • loader/LoaderStrategy.h:

Switch to using Vector<uint8_t> for the data buffer.

  • loader/PrivateClickMeasurement.cpp:

(WebCore::PrivateClickMeasurement::EphemeralSourceNonce::isValid const):
Update to use new base64URLDecode.

  • loader/ResourceCryptographicDigest.cpp:

(WebCore::parseCryptographicDigestImpl):
(WebCore::decodeEncodedResourceCryptographicDigest):
Update to use new base64Decode.

  • loader/archive/mhtml/MHTMLArchive.cpp:

(WebCore::MHTMLArchive::generateMHTMLData):
Switch to using new base64Encode and new quotedPrintableEncode.

  • loader/archive/mhtml/MHTMLParser.cpp:

(WebCore::MHTMLParser::parseNextPart):
Switch to using new base64Decode and new quotedPrintableDecode.

  • loader/cocoa/PrivateClickMeasurementCocoa.mm:

(WebCore::PrivateClickMeasurement::calculateAndUpdateSourceUnlinkableToken):
(WebCore::PrivateClickMeasurement::calculateAndUpdateSourceSecretToken):
Update to use new base64URLDecode / base64URLEncodeToString().

  • page/Base64Utilities.cpp:

(WebCore::Base64Utilities::btoa):
(WebCore::Base64Utilities::atob):
Update to use new base64Decode / base64EncodeToString().

  • page/Page.cpp:

(WebCore::Page::userStyleSheetLocationChanged):
Update to use new base64Decode.

  • platform/SharedBuffer.cpp:

(WebCore::SharedBuffer::append):

  • platform/SharedBuffer.h:

Add overload for append which allows passing in a uint8_t*.

  • platform/encryptedmedia/clearkey/CDMClearKey.cpp:

(WebCore::parseLicenseFormat):
(WebCore::extractKeyidsFromCencInitData):
(WebCore::extractKeyIdFromWebMInitData):
(WebCore::CDMInstanceSessionClearKey::removeSessionData):
Update to use new base64URLDecode / base64URLEncodeToString().

  • platform/graphics/avfoundation/CDMFairPlayStreaming.cpp:

(WebCore::extractSinfData):
Update to use new base64Decode.

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

(WebCore::CDMInstanceSessionFairPlayStreamingAVFObjC::requestLicense):
(WebCore::CDMInstanceSessionFairPlayStreamingAVFObjC::updateLicense):
(WebCore::CDMInstanceSessionFairPlayStreamingAVFObjC::didProvideRequests):
Update to use new base64Decode / base64EncodeToString().

  • platform/graphics/cairo/ImageBufferCairoBackend.cpp:

(WebCore::ImageBufferCairoBackend::toDataURL const):
Update to use new base64EncodeToString().

  • platform/graphics/cg/ImageBufferUtilitiesCG.cpp:

(WebCore::dataURL):
Update to use new base64EncodeToString().

  • platform/graphics/win/FontCustomPlatformData.cpp:

(WebCore::createUniqueFontName):
Update to use new base64EncodeToString().

  • platform/graphics/win/FontCustomPlatformDataCairo.cpp:

(WebCore::createUniqueFontName):
Update to use new base64EncodeToString().

  • platform/mac/SSLKeyGeneratorMac.mm:

(WebCore::signedPublicKeyAndChallengeString):
Update to use new base64EncodeToString().

  • platform/network/BlobRegistryImpl.cpp:

(WebCore::loadBlobResourceSynchronously):
Switch to using Vector<uint8_t> buffer to match new loadResourceSynchronously
signature.

  • platform/network/BlobResourceHandle.cpp:
  • platform/network/BlobResourceHandle.h:

(WebCore::BlobResourceHandle::loadResourceSynchronously):
Switch to using Vector<uint8_t> buffer to match new loadResourceSynchronously
signature.

  • platform/network/CredentialBase.cpp:
  • platform/network/CredentialBase.h:

(WebCore::CredentialBase::serializationForBasicAuthorizationHeader const):
Add helper to construct Basic auth header to replace duplicated logic in
call sites.

  • platform/network/DataURLDecoder.cpp:

(WebCore::DataURLDecoder::decodeBase64):
(WebCore::DataURLDecoder::decodeEscaped):
(WebCore::DataURLDecoder::decodeSynchronously):

  • platform/network/DataURLDecoder.h:

Update to use new base64Decode.

  • platform/network/ResourceHandle.cpp:
  • platform/network/ResourceHandle.h:

Switch to using Vector<uint8_t> for the data buffer in the synchronous load.

  • platform/network/SynchronousLoaderClient.cpp:

(WebCore::SynchronousLoaderClient::didReceiveData):

  • platform/network/SynchronousLoaderClient.h:

Switch to using Vector<uint8_t> buffer to match new loadResourceSynchronously
signature.

  • platform/network/cf/ResourceHandleCFNet.cpp:

(WebCore::applyBasicAuthorizationHeader):
Use new serializationForBasicAuthorizationHeader() helper.

(WebCore::ResourceHandle::platformLoadResourceSynchronously):
Switch to using Vector<uint8_t> for the data buffer in the synchronous load.

  • platform/network/curl/ResourceHandleCurl.cpp:

(WebCore::ResourceHandle::platformLoadResourceSynchronously):
(WebCore::ResourceHandle::handleDataURL):
Switch to using Vector<uint8_t> for the data buffer in the synchronous load.

  • platform/network/mac/ResourceHandleMac.mm:

(WebCore::applyBasicAuthorizationHeader):
Use new serializationForBasicAuthorizationHeader() helper.

(WebCore::ResourceHandle::platformLoadResourceSynchronously):
Switch to using Vector<uint8_t> for the data buffer in the synchronous load.

  • platform/network/soup/ResourceHandleSoup.cpp:

(WebCore::ResourceHandle::platformLoadResourceSynchronously):
Switch to using Vector<uint8_t> for the data buffer in the synchronous load.

  • platform/network/soup/SoupNetworkSession.cpp:

(WebCore::HostTLSCertificateSet::computeCertificateHash):
Update to use new base64EncodeToString().

  • platform/text/DecodeEscapeSequences.h:

(WebCore::decodeURLEscapeSequencesAsData):
Switch to returning Vector<uint8_t>.

  • platform/text/QuotedPrintable.cpp:
  • platform/text/QuotedPrintable.h:

(WebCore::lengthOfLineEndingAtIndex):
(WebCore::quotedPrintableEncode):
(WebCore::quotedPrintableDecode):
Replace uses of Vector<char> with Vector<uint8_t> and the out parameters
with Optional return values.

  • platform/win/SSLKeyGeneratorWin.cpp:

(WebCore::signedPublicKeyAndChallengeString):
Update to use new base64EncodeToString().

  • workers/service/server/SWScriptStorage.cpp:

(WebCore::SWScriptStorage::sha2Hash const):
Update to use new base64URLEncodeToString().

Source/WebKit:

  • NetworkProcess/NetworkConnectionToWebProcess.messages.in:
  • UIProcess/API/C/WKPage.cpp:

(WKPageSetPageNavigationClient):

  • UIProcess/WebPageProxy.messages.in:
  • UIProcess/WebURLSchemeHandler.h:
  • UIProcess/WebURLSchemeTask.cpp:

(WebKit::WebURLSchemeTask::didComplete):

  • UIProcess/WebURLSchemeTask.h:
  • WebProcess/Network/WebLoaderStrategy.cpp:

(WebKit::WebLoaderStrategy::loadResourceSynchronously):

  • WebProcess/Network/WebLoaderStrategy.h:
  • WebProcess/WebPage/WebURLSchemeHandlerProxy.cpp:

(WebKit::WebURLSchemeHandlerProxy::loadSynchronously):

  • WebProcess/WebPage/WebURLSchemeHandlerProxy.h:

Update to use uint8_t* data buffers more consistently for synchronous loads.

  • NetworkProcess/NetworkResourceLoader.cpp:

(WebKit::sendReplyToSynchronousRequest):
Update to use uint8_t* data buffers more consistently for synchronous loads.

  • NetworkProcess/PrivateClickMeasurementManager.cpp:

(WebKit::PrivateClickMeasurementManager::fireConversionRequest):
Update to use new base64URLDecode / base64URLEncodeToString().

  • NetworkProcess/cocoa/NetworkDataTaskCocoa.mm:

(WebKit::applyBasicAuthorizationHeader):
Use new serializationForBasicAuthorizationHeader() helper.

  • Shared/API/APIData.h:

(API::Data::create):
(API::Data::fastFreeBytes): Deleted.
Add new create function that takes ownership of a Vector's buffer rather
than copying it. Replace use of static functions with inline lambdas for
free-functions.

  • Shared/mac/AuxiliaryProcessMac.mm:

(WebKit::sandboxFilePath):
Use makeString and new base64URLEncoded().

  • UIProcess/API/Cocoa/_WKWebAuthenticationPanel.mm:

(produceClientDataJson):
Use new base64URLEncodeToString().

  • UIProcess/Automation/cairo/WebAutomationSessionCairo.cpp:

(WebKit::base64EncodedPNGData):
Use new base64EncodeToString().

  • UIProcess/Cocoa/NavigationState.mm:

(WebKit::NavigationState::NavigationClient::webCryptoMasterKey):
Use new defaultWebCryptoMasterKey() and new adopting API::Data::create function.

  • UIProcess/Inspector/glib/RemoteInspectorClient.cpp:

(WebKit::RemoteInspectorClient::setBackendCommands):
Use new base64EncodeToString().

  • UIProcess/Inspector/gtk/RemoteWebInspectorUIProxyGtk.cpp:

(WebKit::RemoteWebInspectorUIProxy::platformSave):
Use new base64Decode().

  • UIProcess/Inspector/gtk/WebInspectorUIProxyGtk.cpp:

(WebKit::WebInspectorUIProxy::platformSave):
Use new base64Decode().

  • UIProcess/Inspector/mac/RemoteWebInspectorUIProxyMac.mm:

(WebKit::RemoteWebInspectorUIProxy::platformSave):
Use new base64Decode().

  • UIProcess/Inspector/mac/WebInspectorUIProxyMac.mm:

(WebKit::WebInspectorUIProxy::platformSave):
Use new base64Decode().

  • UIProcess/Inspector/socket/RemoteInspectorClient.cpp:

(WebKit::RemoteInspectorClient::setBackendCommands):
Use new base64EncodeToString().

  • UIProcess/WebAuthentication/Cocoa/LocalAuthenticator.mm:

(WebKit::LocalAuthenticatorInternal::produceHashSet):
(WebKit::LocalAuthenticator::makeCredential):
(WebKit::LocalAuthenticator::getAssertion):
Use new base64EncodeToString().

  • UIProcess/WebAuthentication/Mock/MockHidConnection.cpp:

(WebKit::MockHidConnection::feedReports):
Use new base64Decode().

  • UIProcess/WebAuthentication/Mock/MockLocalConnection.mm:

(WebKit::MockLocalConnection::filterResponses const):
Use new base64EncodeToString().

Source/WebKitLegacy:

  • WebCoreSupport/WebResourceLoadScheduler.cpp:

(WebResourceLoadScheduler::loadResourceSynchronously):

  • WebCoreSupport/WebResourceLoadScheduler.h:

Update to match new signature. char -> uint8_t.

Source/WebKitLegacy/mac:

  • WebCoreSupport/WebChromeClient.mm:

(WebChromeClient::wrapCryptoKey const):
(WebChromeClient::unwrapCryptoKey const):
Update to use new Optional returning defaultWebCryptoMasterKey().

  • WebCoreSupport/WebInspectorClient.mm:

(WebInspectorFrontendClient::save):
Update to use new Optional returning base64Decode().

Source/WTF:

Bring base64 encoding/decoding up to more modern WebKit conventions by:

  • Replace use of "out parameter + bool" with Optional return values.
  • Using enum class for enumerations.
  • Replacing SignedOrUnsignedCharVectorAdapter/ConstSignedOrUnsignedCharVectorAdapter with appropriate function overloads.

Also adds a new StringTypeAdapter for inline base64 encoding data in either makeString()
or StringBuilder. To make this work, a few modifications were need to the base64Encode()
functions to support the fixed size writeTo() function.

First, the length of the encoded data is now computed up front depending on the policy.
This has been extracted into a new calculateBase64EncodedSize() function used by both
the adaptor and by base64Encode when passed a Vector. Previously, when encoding using
some policies, the size was an overestimate and the resulting Vector would be resized
down after encoding.

Second, base64EncodeInternal was made into a template function to allow for two new
base64Encode functions, one of which has a UChar* destination. These are used by the
adaptor to write the encoded data.

One additional small change is that now a optional map type parameter has been added
to all the encoders to allow using either the default map or the URL one as defined
in RFC 4648. This simplifies the implementation of the StringTypeAdapter and makes the
base64URLEncode/base64URLDecode functions into simple convenience functions that use
the right defaults for the generic encode/decode functions.

  • wtf/text/Base64.cpp:

(WTF::base64EncodeInternal):
(WTF::base64Encode):
(WTF::base64DecodeInternal):
(WTF::base64Decode):
(WTF::base64URLDecode):
(WTF::base64URLEncode): Deleted.

  • wtf/text/Base64.h:

(WTF::base64Decode):
(WTF::base64Encode):
(WTF::base64URLEncode):
(WTF::isBase64OrBase64URLCharacter):
(WTF::calculateBase64EncodedSize):
(WTF::base64Encoded):
(WTF::base64URLEncoded):
(WTF::StringTypeAdapter<Base64Specification>::StringTypeAdapter):
(WTF::StringTypeAdapter<Base64Specification>::length const):
(WTF::StringTypeAdapter<Base64Specification>::is8Bit const):
(WTF::StringTypeAdapter<Base64Specification>::writeTo const):

Tools:

Update to use updated base64 and defaultWebCryptoMasterKey() related
functions.

  • TestWebKitAPI/TCPServer.cpp:

(TestWebKitAPI::TCPServer::startSecureConnection):
(TestWebKitAPI::TCPServer::testCertificate):
(TestWebKitAPI::TCPServer::testPrivateKey):

  • TestWebKitAPI/Tests/WebCore/ISOBox.cpp:

(TestWebKitAPI::TEST):

  • TestWebKitAPI/Tests/WebCore/cocoa/PrivateClickMeasurementCocoa.mm:

(TestWebKitAPI::TEST):

  • TestWebKitAPI/Tests/WebCore/cocoa/SerializedCryptoKeyWrap.mm:

(TestWebKitAPI::TEST_F):

  • TestWebKitAPI/Tests/WebKitCocoa/Challenge.mm:

(testIdentity2):

  • TestWebKitAPI/Tests/WebKitCocoa/EventAttribution.mm:

(TestWebKitAPI::TEST):

  • TestWebKitAPI/Tests/mac/SSLKeyGenerator.mm:

(TestWebKitAPI::TEST_F):

  • TestWebKitAPI/cocoa/HTTPServer.mm:

(TestWebKitAPI::Connection::webSocketHandshake):

11:36 AM Changeset in webkit [277739] by Devin Rousso
  • 8 edits
    2 adds in trunk/Source/WebCore

[Apple Pay] use a dictionary ApplePayPaymentMethodModeDetails instead of a raw JSObject
https://bugs.webkit.org/show_bug.cgi?id=225903
<rdar://problem/78134060>

Reviewed by Andy Estes.

No change in functionality.

  • Modules/applepay/ApplePayPaymentMethodModeDetails.idl: Added.
  • Modules/applepay/ApplePayPaymentMethodModeDetails.h: Added.
  • Modules/applepay/paymentrequest/ApplePayPaymentHandler.cpp:

(WebCore::ApplePayPaymentHandler::didChangePaymentMethodMode):

  • DerivedSources-input.xcfilelist:
  • DerivedSources-output.xcfilelist:
  • DerivedSources.make:
  • PlatformMac.cmake:
  • SourcesCocoa.txt:
  • WebCore.xcodeproj/project.pbxproj:
11:17 AM Changeset in webkit [277738] by Alan Bujtas
  • 4 edits
    2 adds in trunk

Calculated width percent loses the floating point and cause line wrap
https://bugs.webkit.org/show_bug.cgi?id=225962

Reviewed by Antti Koivisto.

Source/WebCore:

Length::nonNanCalculatedValue unexpectedly floors non-integral values.

Test: fast/inline/unexpected-line-wrap-with-calc.html

  • platform/Length.cpp:

(WebCore::Length::nonNanCalculatedValue const):

  • platform/Length.h:

LayoutTests:

  • fast/inline/unexpected-line-wrap-with-calc-expected.html: Added.
  • fast/inline/unexpected-line-wrap-with-calc.html: Added.
11:10 AM Changeset in webkit [277737] by Russell Epstein
  • 1 copy in tags/Safari-612.1.15.1.3

Tag Safari-612.1.15.1.3.

11:09 AM Changeset in webkit [277736] by Russell Epstein
  • 8 edits in branches/safari-612.1.15.1-branch/Source

Versioning.

WebKit-7612.1.15.1.3

11:09 AM Changeset in webkit [277735] by Jonathan Bedard
  • 17 edits
    2 deletes in trunk/Tools

[webkitpy] Deprecate webkitpy/tool/grammar.py
https://bugs.webkit.org/show_bug.cgi?id=225943
<rdar://problem/78180111>

Reviewed by Stephanie Lewis.

  • Scripts/bisect-builds:
  • Scripts/webkitpy/layout_tests/controllers/layout_test_runner.py:

(LayoutTestRunner.run_tests):

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

(Printer.print_found):
(Printer.print_workers_and_shards):
(Printer._print_one_line_summary):

  • Scripts/webkitpy/test/printer.py:
  • Scripts/webkitpy/tool/bot/flakytestreporter.py:

(FlakyTestReporter._lookup_bug_for_flaky_test):
(FlakyTestReporter._create_bug_for_flaky_test):

  • Scripts/webkitpy/tool/commands/download.py:

(AbstractPatchProcessingCommand.execute):
(ProcessBugsMixin._fetch_list_of_patches_to_process):
(ProcessURLsMixin._fetch_list_of_patches_to_process):

  • Scripts/webkitpy/tool/commands/download_unittest.py:
  • Scripts/webkitpy/tool/commands/queries.py:
  • Scripts/webkitpy/tool/commands/suggestnominations.py:

(SuggestNominations._print_nominations):
(SuggestNominations._print_counts):

  • Scripts/webkitpy/tool/commands/upload.py:

(CleanPendingCommit._flags_to_clear_on_patch):
(PostCommits.execute):

  • Scripts/webkitpy/tool/grammar.py: Removed.
  • Scripts/webkitpy/tool/grammar_unittest.py: Removed.
  • Scripts/webkitpy/tool/multicommandtool.py:
  • Scripts/webkitpy/tool/steps/obsoletepatches.py:

(ObsoletePatches.run):

  • Scripts/webkitpy/tool/steps/preparechangelogforrevert.py:

(PrepareChangeLogForRevert._message_for_revert):

  • Scripts/webkitpy/tool/steps/preparechangelogforrevert_unittest.py:
  • Scripts/webkitpy/tool/steps/reopenbugafterrevert.py:

(ReopenBugAfterRevert.run):

11:09 AM Changeset in webkit [277734] by Russell Epstein
  • 1 delete in tags/Safari-612.1.15.1.3

Delete tag.

11:06 AM Changeset in webkit [277733] by Russell Epstein
  • 1 copy in tags/Safari-612.1.15.1.3

Tag Safari-612.1.15.1.3.

10:58 AM Changeset in webkit [277732] by Chris Dumez
  • 2 edits in trunk/Source/WebKit

Improve logging in ProcessThrottler::invalidateAllActivities()
https://bugs.webkit.org/show_bug.cgi?id=225766

Reviewed by Geoffrey Garen.

Improve logging in ProcessThrottler::invalidateAllActivities(). We now log the number
of foreground and background activities. Normally each activity logs when getting
invalidated so we know this number. However, some activities are "quiet" and do not
log when invalidated (e.g. activities taken for IPC).

  • UIProcess/ProcessThrottler.cpp:

(WebKit::ProcessThrottler::invalidateAllActivities):

10:57 AM Changeset in webkit [277731] by Aditya Keerthi
  • 2 edits in trunk/Source/WebKit

[iOS][FCR] <select multiple> picker checkmarks should use large symbol scale
https://bugs.webkit.org/show_bug.cgi?id=225936
<rdar://problem/77942151>

Reviewed by Wenson Hsieh.

  • UIProcess/ios/forms/WKFormSelectPicker.mm:

(-[WKSelectPickerTableViewController tableView:cellForRowAtIndexPath:]):

Set the cell's image view's preferredSymbolConfiguration to use a
UIImageSymbolScaleLarge scale, and a UIFontTextStyleBody text style
to support Dynamic Type sizes.

10:54 AM Changeset in webkit [277730] by commit-queue@webkit.org
  • 7 edits in trunk/Tools

[webkitscmpy] Apply logging options to every command
https://bugs.webkit.org/show_bug.cgi?id=225939

Patch by Jonathan Bedard <JonWBedard@gmail.com> on 2021-05-19
Reviewed by Aakash Jain.

  • Scripts/libraries/webkitscmpy/setup.py: Bump version.
  • Scripts/libraries/webkitscmpy/webkitscmpy/init.py: Ditto.
  • Scripts/libraries/webkitscmpy/webkitscmpy/program/init.py:

(main): Specify help for the LoggingGroup, apply logging group to all subparsers.

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

(Canonicalize.parser): Remove LoggingGroup.

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

(Info.parser): Remove LoggingGroup.

10:52 AM Changeset in webkit [277729] by Russell Epstein
  • 101 edits
    15 deletes in branches/safari-612.1.15.0-branch

Cherry-pick r277665. rdar://problem/78213427

Temporarily revert r276592 as it breaks some native apps
https://bugs.webkit.org/show_bug.cgi?id=225917

JSTests:

Unreviewed, revert.

  • microbenchmarks/put-slow-no-cache-array.js: Removed.
  • microbenchmarks/put-slow-no-cache-function.js: Removed.
  • microbenchmarks/put-slow-no-cache-js-proxy.js: Removed.
  • microbenchmarks/put-slow-no-cache-long-prototype-chain.js: Removed.
  • microbenchmarks/put-slow-no-cache.js: Removed.
  • microbenchmarks/reflect-set-with-receiver.js: Removed.
  • stress/custom-get-set-proto-chain-put.js: (getObjects): (let.base.of.getBases):
  • stress/module-namespace-access-set-fails.js: Removed.
  • stress/put-non-reified-static-accessor-or-custom.js: Removed.
  • stress/put-non-reified-static-function-or-custom.js: Removed.
  • stress/put-to-primitive-non-reified-static-custom.js: Removed.
  • stress/put-to-primitive.js: Removed.
  • stress/put-to-proto-chain-overrides-put.js: Removed.
  • stress/typed-array-canonical-numeric-index-string-set.js: Removed.

LayoutTests/imported/w3c:

Unreviewed, revert.

  • web-platform-tests/WebIDL/ecmascript-binding/interface-object-set-receiver-expected.txt: Removed.
  • web-platform-tests/WebIDL/ecmascript-binding/interface-object-set-receiver.html: Removed.
  • web-platform-tests/WebIDL/ecmascript-binding/interface-prototype-constructor-set-receiver-expected.txt:
  • web-platform-tests/WebIDL/ecmascript-binding/interface-prototype-constructor-set-receiver.html:

Source/JavaScriptCore:

Unreviewed, revert.

  • API/JSCallbackObject.h:
  • API/JSCallbackObjectFunctions.h: (JSC::JSCallbackObject<Parent>::put):
  • debugger/DebuggerScope.h:
  • runtime/ClassInfo.h:
  • runtime/ClonedArguments.h:
  • runtime/CustomGetterSetter.cpp: (JSC::callCustomSetter):
  • runtime/CustomGetterSetter.h:
  • runtime/ErrorConstructor.h:
  • runtime/ErrorInstance.h:
  • runtime/GenericArguments.h:
  • runtime/GenericArgumentsInlines.h: (JSC::GenericArguments<Type>::put):
  • runtime/GetterSetter.h:
  • runtime/JSArray.cpp: (JSC::JSArray::put):
  • runtime/JSArray.h:
  • runtime/JSArrayBufferView.cpp: (JSC::JSArrayBufferView::put):
  • runtime/JSArrayBufferView.h:
  • runtime/JSCJSValue.cpp: (JSC::JSValue::putToPrimitive):
  • runtime/JSCell.cpp: (JSC::JSCell::doPutPropertySecurityCheck):
  • runtime/JSCell.h:
  • runtime/JSFunction.cpp: (JSC::JSFunction::put):
  • runtime/JSFunction.h:
  • runtime/JSGenericTypedArrayView.h:
  • runtime/JSGlobalLexicalEnvironment.h:
  • runtime/JSGlobalObject.cpp: (JSC::JSGlobalObject::put):
  • runtime/JSGlobalObject.h:
  • runtime/JSLexicalEnvironment.h:
  • runtime/JSModuleEnvironment.h:
  • runtime/JSModuleNamespaceObject.h:
  • runtime/JSObject.cpp: (JSC::JSObject::doPutPropertySecurityCheck): (JSC::JSObject::putInlineSlow): (JSC::JSObject::prototypeChainMayInterceptStoreTo): (JSC::definePropertyOnReceiverSlow): Deleted. (JSC::JSObject::definePropertyOnReceiver): Deleted. (JSC::JSObject::putInlineFastReplacingStaticPropertyIfNeeded): Deleted.
  • runtime/JSObject.h: (JSC::JSObject::putByIndexInline): (JSC::JSObject::doPutPropertySecurityCheck): (JSC::JSObject::hasNonReifiedStaticProperties): Deleted.
  • runtime/JSObjectInlines.h: (JSC::JSObject::canPerformFastPutInlineExcludingProto): (JSC::JSObject::putInlineForJSObject): (JSC::JSObject::putDirectInternal): (JSC::JSObject::putInlineFast): Deleted.
  • runtime/JSProxy.h:
  • runtime/JSTypeInfo.h: (JSC::TypeInfo::overridesGetOwnPropertySlot const): (JSC::TypeInfo::overridesAnyFormOfGetOwnPropertyNames const): (JSC::TypeInfo::hasPutPropertySecurityCheck const): (JSC::TypeInfo::hasStaticPropertyTable const): Deleted. (JSC::TypeInfo::overridesPut const): Deleted.
  • runtime/Lookup.h: (JSC::putEntry): (JSC::lookupPut):
  • runtime/PropertySlot.h:
  • runtime/ProxyObject.cpp: (JSC::ProxyObject::put):
  • runtime/ProxyObject.h:
  • runtime/PutPropertySlot.h: (JSC::PutPropertySlot::PutPropertySlot): (JSC::PutPropertySlot::context const): (JSC::PutPropertySlot::type const): (JSC::PutPropertySlot::isInitialization const): (JSC::PutPropertySlot::isTaintedByOpaqueObject const): Deleted. (JSC::PutPropertySlot::setIsTaintedByOpaqueObject): Deleted.
  • runtime/ReflectObject.cpp: (JSC::JSC_DEFINE_HOST_FUNCTION):
  • runtime/RegExpObject.cpp: (JSC::RegExpObject::put):
  • runtime/RegExpObject.h:
  • runtime/StringObject.cpp: (JSC::StringObject::put):
  • runtime/StringObject.h:
  • runtime/StringPrototype.cpp: (JSC::StringPrototype::finishCreation): (JSC::StringPrototype::create):
  • runtime/StringPrototype.h:
  • runtime/Structure.cpp: (JSC::Structure::validateFlags):
  • runtime/Structure.h: (JSC::Structure::takesSlowPathInDFGForImpureProperty): (JSC::Structure::hasNonReifiedStaticProperties const): Deleted.
  • tools/JSDollarVM.cpp:

Source/WebCore:

Unreviewed, revert.

  • bindings/js/JSDOMWindowCustom.cpp: (WebCore::JSDOMWindow::doPutPropertySecurityCheck): (WebCore::JSDOMWindow::put):
  • bindings/js/JSLocationCustom.cpp: (WebCore::JSLocation::doPutPropertySecurityCheck):
  • bindings/js/JSRemoteDOMWindowCustom.cpp: (WebCore::JSRemoteDOMWindow::put):
  • bindings/scripts/CodeGeneratorJS.pm: (GeneratePut): (GenerateHeader):
  • bindings/scripts/test/JS/JSTestDomainSecurity.h:
  • bindings/scripts/test/JS/JSTestIndexedSetterNoIdentifier.cpp: (WebCore::JSTestIndexedSetterNoIdentifier::put):
  • bindings/scripts/test/JS/JSTestIndexedSetterNoIdentifier.h:
  • bindings/scripts/test/JS/JSTestIndexedSetterThrowingException.cpp: (WebCore::JSTestIndexedSetterThrowingException::put):
  • bindings/scripts/test/JS/JSTestIndexedSetterThrowingException.h:
  • bindings/scripts/test/JS/JSTestIndexedSetterWithIdentifier.cpp: (WebCore::JSTestIndexedSetterWithIdentifier::put):
  • bindings/scripts/test/JS/JSTestIndexedSetterWithIdentifier.h:
  • bindings/scripts/test/JS/JSTestInterface.h:
  • bindings/scripts/test/JS/JSTestNamedAndIndexedSetterNoIdentifier.cpp: (WebCore::JSTestNamedAndIndexedSetterNoIdentifier::put):
  • bindings/scripts/test/JS/JSTestNamedAndIndexedSetterNoIdentifier.h:
  • bindings/scripts/test/JS/JSTestNamedAndIndexedSetterThrowingException.cpp: (WebCore::JSTestNamedAndIndexedSetterThrowingException::put):
  • bindings/scripts/test/JS/JSTestNamedAndIndexedSetterThrowingException.h:
  • bindings/scripts/test/JS/JSTestNamedAndIndexedSetterWithIdentifier.cpp: (WebCore::JSTestNamedAndIndexedSetterWithIdentifier::put):
  • bindings/scripts/test/JS/JSTestNamedAndIndexedSetterWithIdentifier.h:
  • bindings/scripts/test/JS/JSTestNamedSetterNoIdentifier.cpp: (WebCore::JSTestNamedSetterNoIdentifier::put):
  • bindings/scripts/test/JS/JSTestNamedSetterNoIdentifier.h:
  • bindings/scripts/test/JS/JSTestNamedSetterThrowingException.cpp: (WebCore::JSTestNamedSetterThrowingException::put):
  • bindings/scripts/test/JS/JSTestNamedSetterThrowingException.h:
  • bindings/scripts/test/JS/JSTestNamedSetterWithIdentifier.cpp: (WebCore::JSTestNamedSetterWithIdentifier::put):
  • bindings/scripts/test/JS/JSTestNamedSetterWithIdentifier.h:
  • bindings/scripts/test/JS/JSTestNamedSetterWithIndexedGetter.cpp: (WebCore::JSTestNamedSetterWithIndexedGetter::put):
  • bindings/scripts/test/JS/JSTestNamedSetterWithIndexedGetter.h:
  • bindings/scripts/test/JS/JSTestNamedSetterWithIndexedGetterAndSetter.cpp: (WebCore::JSTestNamedSetterWithIndexedGetterAndSetter::put):
  • bindings/scripts/test/JS/JSTestNamedSetterWithIndexedGetterAndSetter.h:
  • bindings/scripts/test/JS/JSTestNamedSetterWithLegacyOverrideBuiltIns.cpp: (WebCore::JSTestNamedSetterWithLegacyOverrideBuiltIns::put):
  • bindings/scripts/test/JS/JSTestNamedSetterWithLegacyOverrideBuiltIns.h:
  • bindings/scripts/test/JS/JSTestNamedSetterWithLegacyUnforgeableProperties.cpp: (WebCore::JSTestNamedSetterWithLegacyUnforgeableProperties::put):
  • bindings/scripts/test/JS/JSTestNamedSetterWithLegacyUnforgeableProperties.h:
  • bindings/scripts/test/JS/JSTestNamedSetterWithLegacyUnforgeablePropertiesAndLegacyOverrideBuiltIns.cpp: (WebCore::JSTestNamedSetterWithLegacyUnforgeablePropertiesAndLegacyOverrideBuiltIns::put):
  • bindings/scripts/test/JS/JSTestNamedSetterWithLegacyUnforgeablePropertiesAndLegacyOverrideBuiltIns.h:
  • bindings/scripts/test/JS/JSTestPluginInterface.cpp: (WebCore::JSTestPluginInterface::put):
  • bindings/scripts/test/JS/JSTestPluginInterface.h:
  • bridge/objc/objc_runtime.h:
  • bridge/runtime_array.h:
  • bridge/runtime_object.h:

Source/WebKit:

Unreviewed, revert.

  • WebProcess/Plugins/Netscape/JSNPObject.h:

LayoutTests:

Unreviewed, revert

  • http/tests/security/cross-frame-access-object-getPrototypeOf-in-put-expected.txt:
  • http/tests/security/cross-frame-access-object-getPrototypeOf-in-put.html:
  • js/dom/reflect-set-onto-dom-expected.txt:
  • js/dom/script-tests/reflect-set-onto-dom.js:

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

9:53 AM Changeset in webkit [277728] by Chris Dumez
  • 13 edits in trunk/Source

[Hardening] CARingBuffer should validate the storage size before adopting it
https://bugs.webkit.org/show_bug.cgi?id=225928
<rdar://73575595>

Reviewed by Jer Noble.

We use a lot of SharedMemory-backed CARingBuffers. The pattern is that a process creates the
SharedMemory then sends a SharedMemory::Handle to another process, who adopts it as storage
for its CARingBuffer. Because the process that sends us the SharedMemory::Handle may not be
trusted, we need to validate that the size of the storage is sufficient based on the
CARingBuffer's format & frameCount.

Source/WebCore:

  • platform/audio/cocoa/CARingBuffer.cpp:

(WebCore::computeCapacityBytes):
(WebCore::computeSizeForBuffers):
(WebCore::CARingBuffer::adoptStorage):
(WebCore::CARingBuffer::initializeAfterAllocation):
(WebCore::CARingBuffer::allocate):
(WebCore::CARingBufferStorageVector::allocate):

  • platform/audio/cocoa/CARingBuffer.h:

Source/WebKit:

  • GPUProcess/media/RemoteAudioDestinationManager.cpp:
  • GPUProcess/webrtc/RemoteAudioMediaStreamTrackRenderer.cpp:

(WebKit::RemoteAudioMediaStreamTrackRenderer::audioSamplesStorageChanged):

  • GPUProcess/webrtc/RemoteMediaRecorder.cpp:

(WebKit::RemoteMediaRecorder::audioSamplesStorageChanged):

  • Shared/Cocoa/SharedRingBufferStorage.cpp:

(WebKit::ReadOnlySharedRingBufferStorage::size const):
(WebKit::ReadOnlySharedRingBufferStorage::allocate):
(WebKit::SharedRingBufferStorage::allocate):

  • Shared/Cocoa/SharedRingBufferStorage.h:
  • UIProcess/Cocoa/UserMediaCaptureManagerProxy.cpp:
  • UIProcess/SpeechRecognitionRemoteRealtimeMediaSource.cpp:

(WebKit::SpeechRecognitionRemoteRealtimeMediaSource::setStorage):

  • WebProcess/GPU/media/RemoteAudioSourceProviderManager.cpp:

(WebKit::RemoteAudioSourceProviderManager::RemoteAudio::setStorage):

  • WebProcess/cocoa/RemoteCaptureSampleManager.cpp:

(WebKit::RemoteCaptureSampleManager::RemoteAudio::setStorage):

9:49 AM Changeset in webkit [277727] by mark.lam@apple.com
  • 4 edits in trunk/Source/JavaScriptCore

Speed up debug validation in CacheableIdentifier::createFromIdentifierOwnedByCodeBlock().
https://bugs.webkit.org/show_bug.cgi?id=225948
rdar://78175542

Reviewed by Yusuke Suzuki.

  1. Introduce CodeBlock::hasIdentifier() so that we can encapsulate the identifier search better. Change CacheableIdentifier::createFromIdentifierOwnedByCodeBlock() to call this method instead of rolling its own identifier search.
  1. If the CodeBlock is pathological and has a ridiculous number of identifiers to search, create a cached hash set of the identifiers, and use that for doing the search instead.

Apparently, YouTube can have a single JS function with 2177689 bytecodes, where
a large portion of those are put_by_ids. The function also has some 17k+
identifiers. With that may bytecodes doing a validation search on 17k+
identifiers in a Debug build, the site can become un-useable. This optimization
brings it back from un-useable to barely tolerable on the Debug build.

  1. Also fetch the UnlinkedCodeBlock from the WriteBarrier field just once in CodeBlock::identifier() and CodeBlock::hasIdentifier(). This may not matter on a Release build, but it can add up on a Debug build, which is already slow. We should try to avoid doing redundant validation via the WriteBarrier access.
  • bytecode/CodeBlock.cpp:

(JSC::CodeBlock::identifier const):
(JSC::CodeBlock::hasIdentifier):

  • bytecode/CodeBlock.h:
  • runtime/CacheableIdentifierInlines.h:

(JSC::CacheableIdentifier::createFromIdentifierOwnedByCodeBlock):

9:43 AM Changeset in webkit [277726] by jer.noble@apple.com
  • 3 edits
    2 adds in trunk

[Mac] MSE-based video pauses when put in background; PiP context menu disabled
https://bugs.webkit.org/show_bug.cgi?id=225958
<rdar://78130303>

Reviewed by Eric Carlson.

Source/WebCore:

Test: media/media-source/media-source-has-audio-video.html

In r277116, in order to reduce the CPU usage incurred when pushing state changes from
the GPU process to the WebContent process, state changes to hasAudio and hasVideo
were now only updated when the MediaPlayer indicated that its characteristicsChanged().
However, in SourceBufferPrivateAVFObjC, this call was performed too early, before the
SourceBuffer in the WebContent process had informed SourceBufferPrivate of newly added
audio and video tracks. Thus the cached values of hasAudio and hasVideo inside the
WebContent process were never updated.

Call characteristicsChanged() from the callback handler of didReceiveInitializationSegment(),
which will be called only after the WebContent process completes its handling of the
new initialization segment, which includes telling the SourceBufferPrivate in the GPU
process about newly added audio and video tracks.

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

(WebCore::SourceBufferPrivateAVFObjC::didParseInitializationData):

LayoutTests:

  • media/media-source/media-source-has-audio-video-expected.txt: Added.
  • media/media-source/media-source-has-audio-video.html: Added.
9:34 AM Changeset in webkit [277725] by sbarati@apple.com
  • 5 edits in trunk/Source/JavaScriptCore

Link Baseline JIT code off the main thread
https://bugs.webkit.org/show_bug.cgi?id=225940

Reviewed by Yusuke Suzuki.

This patch makes JIT::link() able to run on compiler threads.
Most of what the function was already doing happily remains the
same. This patch moves a few operations to JIT::finalizeOnMainThread
for things that can't happen on the compiler thread:

  • Adding data to some global hash tables which aren't synchronized.
  • Setting the JITCode.
  • Setting the code pointer for exception handlers.
  • Some other metadata the Sampling Profiler looks at.
  • jit/JIT.cpp:

(JSC::JIT::compileAndLinkWithoutFinalizing):
(JSC::JIT::link):
(JSC::JIT::finalizeOnMainThread):
(JSC::JIT::privateCompile):
(JSC::JIT::compileWithoutLinking): Deleted.

  • jit/JIT.h:
  • jit/JITWorklist.cpp:

(JSC::JITWorklist::Plan::compileInThread):
(JSC::JITWorklist::Plan::finalize):
(JSC::JITWorklist::Plan::compileOnMainThreadNow):
(JSC::JITWorklist::compileLater):
(JSC::JITWorklist::compileOnMainThreadNow):
(JSC::JITWorklist::finalizePlans):
(JSC::JITWorklist::Plan::compileNow): Deleted.
(JSC::JITWorklist::compileNow): Deleted.

  • jit/JITWorklist.h:
9:23 AM Changeset in webkit [277724] by Russell Epstein
  • 2 edits in branches/safari-612.1.15.0-branch/Tools

Cherry-pick r277608. rdar://problem/78207926

Fix clean build after r277606
https://bugs.webkit.org/show_bug.cgi?id=223658

  • TestWebKitAPI/Tests/WebKitCocoa/ContentSecurityPolicy.mm: (TEST): Use API instead of removed API. Why EWS didn't find this, we may never know.

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

9:19 AM Changeset in webkit [277723] by Russell Epstein
  • 2 edits in branches/safari-612.1.15.1-branch/Tools

Cherry-pick r277608. rdar://problem/78207944

Fix clean build after r277606
https://bugs.webkit.org/show_bug.cgi?id=223658

  • TestWebKitAPI/Tests/WebKitCocoa/ContentSecurityPolicy.mm: (TEST): Use API instead of removed API. Why EWS didn't find this, we may never know.

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

8:47 AM Changeset in webkit [277722] by Antti Koivisto
  • 2 edits in trunk/Source/WebCore

Factor pseudo class invalidation code in Document::updateHoverActiveState into a lambda
https://bugs.webkit.org/show_bug.cgi?id=225966

Reviewed by Sam Weinig.

Cleanup.

  • dom/Document.cpp:

(WebCore::Document::updateHoverActiveState):

8:04 AM Changeset in webkit [277721] by Chris Dumez
  • 2 edits in trunk/Source/WebCore

Fix flaky assertion hit under AudioSummingJunction::removeOutput()
https://bugs.webkit.org/show_bug.cgi?id=225951

Reviewed by Eric Carlson.

Temporarily disable assertion preventing heap allocations on the audio thread
in AudioSummingJunction::removeOutput() as it is flakily hitting on the bots.

  • Modules/webaudio/AudioSummingJunction.cpp:

(WebCore::AudioSummingJunction::removeOutput):

7:47 AM Changeset in webkit [277720] by Wenson Hsieh
  • 2 edits in trunk/Source/WebCore

[GPU Process] Add more bounds checking and input validation in DisplayListIterator
https://bugs.webkit.org/show_bug.cgi?id=225937
rdar://71848559

Reviewed by Ryosuke Niwa.

Harden logic for iterating display list items.

  1. Check that the item type enum is valid after reading it from the cursor.
  2. In the case of out-of-line items, verify that the data length of the encoded object is limited to a

reasonable size (4 GB) and does not exceed the capacity of the current item buffer before attempting to read
and decode the item.

Note that in all cases, validation failure results in web process termination via a MESSAGE_CHECK initiated by
the GPU Process.

  • platform/graphics/displaylists/DisplayListIterator.cpp:

(WebCore::DisplayList::DisplayList::Iterator::updateCurrentItem):

Note that this additionally caps the size of any given out-of-line display list item to the (comfortably large)
numerical limit of uint32_t.

7:27 AM Changeset in webkit [277719] by commit-queue@webkit.org
  • 4 edits in trunk/Tools

Unreviewed, reverting r277444.
https://bugs.webkit.org/show_bug.cgi?id=225967

Broke api tests on iOS

Reverted changeset:

"[run-api-tests] Use Python 3 (Part 1)"
https://bugs.webkit.org/show_bug.cgi?id=225427
https://trac.webkit.org/changeset/277444

5:16 AM Changeset in webkit [277718] by youenn@apple.com
  • 2 edits in trunk/Source/WebCore

ASSERTION FAILED: unwrapParamsOrException.exception().code() != ExistingExceptionError on http/wpt/preload/change-link-rel-attribute.html
https://bugs.webkit.org/show_bug.cgi?id=224845
<rdar://problem/76928843>

Reviewed by Mark Lam.

Covered by existing tests.

  • crypto/SubtleCrypto.cpp:

(WebCore::SubtleCrypto::unwrapKey):
Remove debug assertion since there are valid cases where it can happen.

4:54 AM Changeset in webkit [277717] by commit-queue@webkit.org
  • 5 edits in trunk

https://bugs.webkit.org/show_bug.cgi?id=225964
Fix flex-aspect-ratio-002+004.html

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

LayoutTests/imported/w3c:

Import tests.

  • web-platform-tests/css/css-sizing/aspect-ratio/flex-aspect-ratio-002.html:
  • web-platform-tests/css/css-sizing/aspect-ratio/flex-aspect-ratio-004.html:

Source/WebCore:

Flex should not do transferred size suggestion for non-replaced aspect-ratio items:
https://drafts.csswg.org/css-flexbox-1/#min-size-auto

Tests: imported/web-platform-tests/css/css-sizing/aspect-ratio/flex-aspect-ratio-002.html

imported/web-platform-tests/css/css-sizing/aspect-ratio/flex-aspect-ratio-004.html

  • rendering/RenderFlexibleBox.cpp:

(WebCore::RenderFlexibleBox::adjustChildSizeForMinAndMax):

4:11 AM WebKitFlatpakSDK/GstBuild created by Philippe Normand
4:07 AM WebKitFlatpakSDK edited by Philippe Normand
(diff)

May 18, 2021:

10:21 PM Changeset in webkit [277716] by Ross Kirsling
  • 6 edits in trunk/Source/JavaScriptCore

[JSC] Prune CommonSlowPaths of JITPropertyAccess functions
https://bugs.webkit.org/show_bug.cgi?id=225953

Reviewed by Mark Lam.

A few bytecode operations with slow paths in JITPropertyAccess appear to have either redundant or unnecessary
"common" slow paths; namely, get_private_name and del_by_val already have LLInt slow paths, while in_by_id
and get_by_id_with_this can have their "common" slow path moved to be LLInt-specific.

  • llint/LLIntSlowPaths.cpp:

(JSC::LLInt::LLINT_SLOW_PATH_DECL):

  • llint/LLIntSlowPaths.h:
  • llint/LowLevelInterpreter.asm:
  • runtime/CommonSlowPaths.cpp:
  • runtime/CommonSlowPaths.h:
9:21 PM Changeset in webkit [277715] by Cameron McCormack
  • 12 edits in trunk

Record gradient and pattern filled canvas text in the correct coordinate system.
https://bugs.webkit.org/show_bug.cgi?id=222881
<rdar://75155310>

Reviewed by Myles C. Maxfield.

Source/WebCore:

When we draw canvas text with a gradient or pattern, we use
GraphicsContext::clipToDrawingCommands to set up a mask, which
we then draw a filled rectangle with. When GPUP canvas rendering is
enabled, Recorder::clipToDrawingCommands needs to ensure that the
commands that draw the text are recorded in a coordinate system that
matches the one that will be used to draw into the mask ImageBuffer
during replaying. (And for complete correctness, an otherwise fresh
GraphicsContext must be used for recording the text drawing commands,
since it's possible other GraphicsContext state could be
introspected.)

So we handle this by setting up a nested display list recorder,
targeting the same DisplayList but with a fresh GraphicsContext with
the right initial CTM, to record the nested drawing commands into.

The refactoring in https://trac.webkit.org/changeset/273291/webkit
dropped some code that set up the CTM for the nested drawing commands,
which is restored here.

  • html/canvas/CanvasRenderingContext2DBase.cpp:

(WebCore::CanvasRenderingContext2DBase::drawTextUnchecked):

  • platform/graphics/displaylists/DisplayListDrawGlyphsRecorder.h:

(WebCore::DisplayList::DrawGlyphsRecorder::drawGlyphsDeconstruction const):

  • platform/graphics/displaylists/DisplayListRecorder.cpp:

(WebCore::DisplayList::Recorder::Recorder):
(WebCore::DisplayList::Recorder::~Recorder):
(WebCore::DisplayList::Recorder::clipToDrawingCommands):

  • platform/graphics/displaylists/DisplayListRecorder.h:

LayoutTests:

Re-enable GPUP canvas rendering in the affected tests.

  • http/tests/canvas/color-fonts/fill-gradient-sbix-2.html:
  • http/tests/canvas/color-fonts/fill-gradient-sbix-3.html:
  • http/tests/canvas/color-fonts/fill-gradient-sbix-4.html:
  • http/tests/canvas/color-fonts/stroke-gradient-sbix-2.html:
  • http/tests/canvas/color-fonts/stroke-gradient-sbix-3.html:
  • http/tests/canvas/color-fonts/stroke-gradient-sbix-4.html:
8:24 PM Changeset in webkit [277714] by rmorisset@apple.com
  • 13 edits
    1 copy
    1 move
    3 adds
    1 delete in trunk

Make AirAllocateRegistersByGraphColoring use less memory
https://bugs.webkit.org/show_bug.cgi?id=225848

Reviewed by Filip Pizlo.

Source/JavaScriptCore:

We've had some jetsam problems caused by the main Air register allocator, which caused us to lower Options::maximumTmpsForGraphColoring.
Hence this patch tries to improve the memory usage of the allocator. It includes several changes:

  • Change the datastructure used for representing the interference graph. Before it was effectively a HashSet<std::pair<uint16_t, uint16_t>. Now, it is either a Bitvector (for n < 400 for now, can be tweaked easily), or a Vector<LikelyDenseUnsignedIntegerSet<uint16_t>> otherwise.

LikelyDenseUnsignedIntegerSet is a new datastructure introduced by this patch, it is either a HashSet if very sparse, or a BitVector + an amount to shift it by.
This is by far the largest memory reduction in this patch, it reduces the maximum memory used for an interference graph in tsf-wasm in JetStream2 from 16MB to 700kB, and in mruby-wasm.aotoki.dev from 262MB to 20MB (the later only happen when we increase Options::maximumTmpsForGraphColoring.. this is the exact function which caused us to lower it).
Its effect on smaller functions in JetStream2 is rarely as dramatic but always an improvement, and improvements between 2x and 5x are extremely common (10x to 30x are significantly rarer but do occur).

  • In order to easily test this change and any further change to this datastructure, the old approach was preserved as InterferenceHashSet, and a template to run two such datastructures in parallel, checking their equivalence was added: InstrumentedInterferenceGraph. Running with it and reportInterferenceGraphMemoryUse set to true was used to compute the numbers given above.
  • There was already some template parameter to change the size of the tmp indices from unsigned to uint16_t but the code failed to compile unless it was unsigned. I fixed this, made more consistent use of it, and switched to uint16_t in the very common case that we have less than 65k Tmps (we can have more despite the option because of spilling). This halved the memory usage of various other datastructures in the register allocator
  • unspillableTmps was a HashSet<unsigned>. Since it is often quite dense (often around 20% on JetStream2), I replaced it by a Bitvector instead
  • m_biases was a HashMap<IndexType, HashSet<IndexType>>. Since it is extremely rare that the sets have more than 8 elements (from looking at some instrumented run of JetStream2), I replaced it by HashMap<IndexType, SmallSet<IndexType>>. This not only significantly reduces memory, but nearly halves the time spent in assignColors(around 80ms -> 40ms in JetStream 2)
  • UseCounts was needlessly general: it is only used by the register allocator (all other references to UseCounts refer to the completely different B3::UseCounts), so there is no point in it computing, and then storing lots of irrelevant data. A float is also more than enough precision (especially since it is pretty much always 1, 10, 100, or 1000 in practice…). Also, since we only need it indexed by Tmps, we can use a Vector with AbsoluteTmpMapper instead of its HashMap. These changes are not just memory savings, they also make selectSpill way faster (570ms -> 250ms on my machine on JetStream2)
  • While I was at it, I did a couple of other tweaks to the logic of selectSpill. In particular, instead of having to check for isFastTmp every time, I just put the fast tmps directly in unspillableTmps, which prevents them from getting added to m_spillWorklist in the first place. This + a bit of clean-up (for example putting an early exit instead of setting score to infinity in the case of dead tmps) resulted in a further perf win (to roughly 200ms spent in selectSpill() on JetStream2)

All together, this patch reduces the time spent in the register allocator by roughly 15 to 20% in JetStream2 (tested both with the Briggs and the IRC allocators on my MBP 2019).

I do not yet have precise performance numbers for this exact patch, but benchmarking a previous version of it (with a less optimized interference graph) resulted in significant RAMification improvements (around 1%), and more surprisingly some JetStream2 improvements on weaker machines (e.g. an iPhone 7 gained > 1%). I believe these gains come either from less trashing of the caches, or less contention caused by the memory traffic.
I will try to update the bugzilla with more up-to-date thorough results when I get them.

This patch does not increase Options::maximumTmpsForGraphColoring, I intend to do that in a separate patch to make it easier to revert in case of a problem.

  • b3/B3ReduceLoopStrength.cpp:

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

  • b3/air/AirAllocateRegistersAndStackByLinearScan.cpp:
  • b3/air/AirAllocateRegistersByGraphColoring.cpp:

(JSC::B3::Air::allocateRegistersByGraphColoring):

  • b3/air/AirCode.h:

(JSC::B3::Air::Code::forEachFastTmp const):

  • b3/air/AirUseCounts.h:

(JSC::B3::Air::UseCounts::UseCounts):
(JSC::B3::Air::UseCounts::isConstDef const):
(JSC::B3::Air::UseCounts::numWarmUsesAndDefs const):
(JSC::B3::Air::UseCounts::dump const):

  • parser/Nodes.h:

Source/WTF:

Two changes: the addition of LikelyDenseUnsignedIntegerSet, and various improvements to Small(Ptr)Set.

The latter include:

  • Renaming SmallPtrSet into SmallSet, as it now supports integers as well as pointers.
  • Reducing its size by sharing the same storage for m_buffer and for m_smallStorage.

This is safe to do, because all operations branch on isSmall() which depends purely on m_capacity.

  • Adding trivial size(), isEmpty() and memoryUse() methods
  • Adding a comment at the top of the file explaining when to use, and (more importantly) not to use SmallSet.

LikelyDenseUnsignedIntegerSet is an even more specialized data structure, that can represent sets of unsigned integers very compactly if they are clustered.

Finally I added an outOfLineMemoryUse() method to BitVector, making it more convenient to compare the memory consumption of different data structures in the register allocator.

  • WTF.xcodeproj/project.pbxproj:
  • wtf/BitVector.h:
  • wtf/CMakeLists.txt:
  • wtf/LikelyDenseUnsignedIntegerSet.cpp: Copied from Source/WTF/wtf/SmallPtrSet.cpp.
  • wtf/LikelyDenseUnsignedIntegerSet.h: Added.

(WTF::LikelyDenseUnsignedIntegerSet::LikelyDenseUnsignedIntegerSet):
(WTF::LikelyDenseUnsignedIntegerSet::~LikelyDenseUnsignedIntegerSet):
(WTF::LikelyDenseUnsignedIntegerSet::contains const):
(WTF::LikelyDenseUnsignedIntegerSet::add):
(WTF::LikelyDenseUnsignedIntegerSet::size const):
(WTF::LikelyDenseUnsignedIntegerSet::iterator::iterator):
(WTF::LikelyDenseUnsignedIntegerSet::iterator::m_shift):
(WTF::LikelyDenseUnsignedIntegerSet::iterator::operator++):
(WTF::LikelyDenseUnsignedIntegerSet::iterator::operator* const):
(WTF::LikelyDenseUnsignedIntegerSet::iterator::operator== const):
(WTF::LikelyDenseUnsignedIntegerSet::iterator::operator!= const):
(WTF::LikelyDenseUnsignedIntegerSet::begin const):
(WTF::LikelyDenseUnsignedIntegerSet::end const):
(WTF::LikelyDenseUnsignedIntegerSet::memoryUse const):
(WTF::LikelyDenseUnsignedIntegerSet::validate const):
(WTF::LikelyDenseUnsignedIntegerSet::isBitVector const):
(WTF::LikelyDenseUnsignedIntegerSet::isValidValue const):
(WTF::LikelyDenseUnsignedIntegerSet::transitionToHashSet):
(WTF::LikelyDenseUnsignedIntegerSet::transitionToBitVector):

  • wtf/SmallPtrSet.h: Removed.
  • wtf/SmallSet.cpp: Renamed from Source/WTF/wtf/SmallPtrSet.cpp.
  • wtf/SmallSet.h: Added.

Tools:

Simply added some tests for SmallSet.

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/WTF/SmallSet.cpp: Added.

(TestWebKitAPI::testSmallSetOfUnsigned):
(TestWebKitAPI::testSmallSetOfPointers):
(TestWebKitAPI::testVectorsOfSmallSetsOfUnsigned):
(TestWebKitAPI::TEST):

8:10 PM Changeset in webkit [277713] by timothy_horton@apple.com
  • 3 edits in trunk

allowsContentJavaScript API not applied from defaultWebpagePreferences
https://bugs.webkit.org/show_bug.cgi?id=225957

Reviewed by Wenson Hsieh.

New API test: WebKit.AllowsContentJavaScriptFromDefaultPreferences

  • UIProcess/API/APIWebsitePolicies.cpp:

(API::WebsitePolicies::copy const):
allowsContentJavaScript works fine on the per-navigation-level WKWebpagePreferences,
but is ignored if applied on the WKWebViewConfiguration's defaultWebpagePreferences,
because it is not copied in copy(). Copy it!

8:03 PM Changeset in webkit [277712] by Kocsen Chung
  • 1 copy in tags/Safari-612.1.15.1.2

Tag Safari-612.1.15.1.2.

7:59 PM Changeset in webkit [277711] by Kocsen Chung
  • 8 edits in branches/safari-612.1.15.1-branch/Source

Versioning.

WebKit-7612.1.15.1.2

6:57 PM Changeset in webkit [277710] by timothy_horton@apple.com
  • 2 edits in trunk/Source/WebKit

REGRESSION (r277683): WebContent process crashing in unit tests
https://bugs.webkit.org/show_bug.cgi?id=225955
rdar://78184041

Unreviewed partial revert.

  • Shared/EntryPointUtilities/Cocoa/XPCService/XPCServiceEntryPoint.h:

(WebKit::XPCServiceInitializer):
Revert the CRASH() part of r277683 because it is causing mysterious unit testing failures.

6:51 PM Changeset in webkit [277709] by Chris Dumez
  • 15 edits in trunk/Source

Use WTF::Locker for locking BaseAudioContext's graph lock
https://bugs.webkit.org/show_bug.cgi?id=225935

Reviewed by Sam Weinig.

Source/WebCore:

Use WTF::Locker for locking BaseAudioContext's graph lock instead of our own AutoLocker.
Also use WTF::RecursiveLock instead of duplicating the recursive locking logic inside
BaseAudioContext. This means we no longer need lock() / tryLock() / unlock() functions
on BaseAudioContext. We now expose the BaseAudioContext's RecursiveLock via a graphLock()
getter and the caller sites can just use a Locker.

  • Modules/webaudio/AudioBufferSourceNode.cpp:

(WebCore::AudioBufferSourceNode::setBuffer):

  • Modules/webaudio/AudioNode.cpp:

(WebCore::AudioNode::connect):
(WebCore::AudioNode::disconnect):
(WebCore::AudioNode::setChannelCount):
(WebCore::AudioNode::setChannelCountMode):
(WebCore::AudioNode::setChannelInterpretation):
(WebCore::AudioNode::enableOutputsIfNecessary):
(WebCore::AudioNode::decrementConnectionCount):
(WebCore::AudioNode::deref):

  • Modules/webaudio/AudioWorkletNode.cpp:

(WebCore::AudioWorkletNode::create):

  • Modules/webaudio/BaseAudioContext.cpp:

(WebCore::BaseAudioContext::uninitialize):
(WebCore::BaseAudioContext::refSourceNode):
(WebCore::BaseAudioContext::addDeferredDecrementConnectionCount):
(WebCore::BaseAudioContext::handlePreRenderTasks):
(WebCore::BaseAudioContext::outputPosition):
(WebCore::BaseAudioContext::handlePostRenderTasks):
(WebCore::BaseAudioContext::deleteMarkedNodes):
(WebCore::BaseAudioContext::removeMarkedSummingJunction):
(WebCore::BaseAudioContext::handleDirtyAudioSummingJunctions):
(WebCore::BaseAudioContext::handleDirtyAudioNodeOutputs):

  • Modules/webaudio/BaseAudioContext.h:

(WebCore::BaseAudioContext::graphLock):
(WebCore::BaseAudioContext::isGraphOwner const):

  • Modules/webaudio/ChannelMergerNode.cpp:

(WebCore::ChannelMergerNode::ChannelMergerNode):

  • Modules/webaudio/ConvolverNode.cpp:

(WebCore::ConvolverNode::setBuffer):

  • Modules/webaudio/MediaElementAudioSourceNode.cpp:

(WebCore::MediaElementAudioSourceNode::setFormat):

  • Modules/webaudio/MediaStreamAudioSourceNode.cpp:

(WebCore::MediaStreamAudioSourceNode::setFormat):

  • Modules/webaudio/OfflineAudioContext.cpp:

(WebCore::OfflineAudioContext::suspendRendering):
(WebCore::OfflineAudioContext::shouldSuspend):
(WebCore::OfflineAudioContext::didSuspendRendering):

  • Modules/webaudio/OfflineAudioContext.h:
  • Modules/webaudio/WaveShaperNode.cpp:

(WebCore::WaveShaperNode::setOversample):

Source/WTF:

  • wtf/RecursiveLockAdapter.h:

(WTF::RecursiveLockAdapter::isOwner const):
Add isOwner() function that returns true if the current thread is holding the lock.
This is needed for WebAudio purposes.

6:47 PM Changeset in webkit [277708] by commit-queue@webkit.org
  • 2 edits in trunk/Tools

Unreviewed, reverting r277675.
https://bugs.webkit.org/show_bug.cgi?id=225954

Broke Mac API tests trying to fix iOS

Reverted changeset:

"[webkitpy] Forward booted simulators to children processes"
https://bugs.webkit.org/show_bug.cgi?id=225933
https://trac.webkit.org/changeset/277675

6:24 PM Changeset in webkit [277707] by Alan Coon
  • 1 copy in tags/Safari-612.1.15.1.1

Tag Safari-612.1.15.1.1.

6:07 PM Changeset in webkit [277706] by Alan Coon
  • 1 copy in tags/Safari-612.1.15.0.1

Tag Safari-612.1.15.0.1.

5:49 PM Changeset in webkit [277705] by Ruben Turcios
  • 1 copy in tags/Safari-612.1.15.2.1

Tag Safari-612.1.15.2.1.

5:46 PM Changeset in webkit [277704] by Ruben Turcios
  • 8 edits in branches/safari-612.1.15.2-branch/Source

Versioning.

WebKit-7612.1.15.2.1

5:42 PM Changeset in webkit [277703] by Alan Coon
  • 1 copy in tags/Safari-612.1.15.3.1

Tag Safari-612.1.15.3.1.

5:41 PM Changeset in webkit [277702] by Ruben Turcios
  • 5 edits
    2 adds in branches/safari-612.1.15.2-branch

Cherry-pick r277452. rdar://problem/78181636

REGRESSION (r276945): [iOS] Focus rings are too large
https://bugs.webkit.org/show_bug.cgi?id=225778
<rdar://problem/77858341>

Reviewed by Tim Horton.

Source/WebCore:

r276945 updated scaling logic to ensure that the scale of the base CTM
matches the device scale factor. The change itself makes our base CTM
more correct, but exposed a longstanding bug with our focus ring
implementation.

Focus rings are drawn using CoreGraphics, using CGFocusRingStyle. On
macOS, the style is initialized using NSInitializeCGFocusRingStyleForTime.
However, on iOS, we initialize the style ourselves, using UIKit constants.
Currently, the focus ring's style's radius is set to
+[UIFocusRingStyle cornerRadius], a constant of 8. This is the longstanding
issue. CGFocusRingStyle's radius is not a corner radius, but is the
width of the focus ring. In UIKit, this width is represented by
+[UIFocusRingStyle borderThickness], a constant of 3. WebKit has always
intended to match this width, as evidenced by the default outline-width
of 3px in the UA style sheet.

Considering the large disparity between the existing and expected radius
value, it may be surprising that this mistake has gone unnoticed since
2019, when focus rings were first introduced on iOS. This is where r276945
comes into play. Prior to r276945, the scale of the base CTM did not match
the device scale factor. This meant that CG scaled down the constant of 8
to 4 CSS pixels (1 (base CTM) / 2 (device scale factor)). After r276945,
the two scales are equal and the focus ring is drawn as 8 CSS pixels, much
larger than the expected 3px.

Test: fast/forms/ios/focus-ring-size.html

  • platform/graphics/cocoa/GraphicsContextCocoa.mm: (WebCore::drawFocusRingAtTime):

To fix, use the correct SPI to get the focus ring width,
+[UIFocusRingStyle borderThickness]. This ensures that focus rings have
the right width, following r276945.

The change also fixes focus ring repaint issues that arose from the
fact that the outline-width was 3px, but the painted width was 4px.

Source/WebCore/PAL:

  • pal/spi/ios/UIKitSPI.h:

LayoutTests:

Added a regression test to verify the size of the focus ring on iOS.
The test works by drawing an overlay on top of an input element, that
is just large enough to obscure the focus ring. If the focus ring is
too large, the ring will not obscured, leading to a mismatch failure.

  • fast/forms/ios/focus-ring-size-expected.html: Added.
  • fast/forms/ios/focus-ring-size.html: Added.

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

5:40 PM Changeset in webkit [277701] by Alan Coon
  • 5 edits
    2 adds in branches/safari-612.1.15.3-branch

Cherry-pick r277452. rdar://problem/78181647

REGRESSION (r276945): [iOS] Focus rings are too large
https://bugs.webkit.org/show_bug.cgi?id=225778
<rdar://problem/77858341>

Reviewed by Tim Horton.

Source/WebCore:

r276945 updated scaling logic to ensure that the scale of the base CTM
matches the device scale factor. The change itself makes our base CTM
more correct, but exposed a longstanding bug with our focus ring
implementation.

Focus rings are drawn using CoreGraphics, using CGFocusRingStyle. On
macOS, the style is initialized using NSInitializeCGFocusRingStyleForTime.
However, on iOS, we initialize the style ourselves, using UIKit constants.
Currently, the focus ring's style's radius is set to
+[UIFocusRingStyle cornerRadius], a constant of 8. This is the longstanding
issue. CGFocusRingStyle's radius is not a corner radius, but is the
width of the focus ring. In UIKit, this width is represented by
+[UIFocusRingStyle borderThickness], a constant of 3. WebKit has always
intended to match this width, as evidenced by the default outline-width
of 3px in the UA style sheet.

Considering the large disparity between the existing and expected radius
value, it may be surprising that this mistake has gone unnoticed since
2019, when focus rings were first introduced on iOS. This is where r276945
comes into play. Prior to r276945, the scale of the base CTM did not match
the device scale factor. This meant that CG scaled down the constant of 8
to 4 CSS pixels (1 (base CTM) / 2 (device scale factor)). After r276945,
the two scales are equal and the focus ring is drawn as 8 CSS pixels, much
larger than the expected 3px.

Test: fast/forms/ios/focus-ring-size.html

  • platform/graphics/cocoa/GraphicsContextCocoa.mm: (WebCore::drawFocusRingAtTime):

To fix, use the correct SPI to get the focus ring width,
+[UIFocusRingStyle borderThickness]. This ensures that focus rings have
the right width, following r276945.

The change also fixes focus ring repaint issues that arose from the
fact that the outline-width was 3px, but the painted width was 4px.

Source/WebCore/PAL:

  • pal/spi/ios/UIKitSPI.h:

LayoutTests:

Added a regression test to verify the size of the focus ring on iOS.
The test works by drawing an overlay on top of an input element, that
is just large enough to obscure the focus ring. If the focus ring is
too large, the ring will not obscured, leading to a mismatch failure.

  • fast/forms/ios/focus-ring-size-expected.html: Added.
  • fast/forms/ios/focus-ring-size.html: Added.

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

5:33 PM Changeset in webkit [277700] by Alan Coon
  • 8 edits in branches/safari-612.1.15.3-branch/Source

Versioning.

WebKit-7612.1.15.3.1

5:31 PM Changeset in webkit [277699] by Diego Pino Garcia
  • 4 edits in trunk/LayoutTests

[GTK] Unreviewed test gardening. Update two baselines of inspector test that were failing.

  • platform/gtk/TestExpectations:
  • platform/gtk/http/tests/inspector/network/resource-sizes-network-expected.txt:
  • platform/gtk/inspector/dom/getAccessibilityPropertiesForNode-expected.txt:
5:26 PM Changeset in webkit [277698] by Alan Bujtas
  • 3 edits in trunk/Source/WebCore

The containing block for a fixed renderer has to be a type of RenderBlock
https://bugs.webkit.org/show_bug.cgi?id=225924
<rdar://77968716>

Reviewed by Simon Fraser.

While an atomic inline level box with layout containment can certainly be the containing block for fixed (and absolute) boxes,
the current render tree logic requires a containing block to be the type of RenderBlock.

  • rendering/RenderElement.cpp:

(WebCore::nearestNonAnonymousContainingBlockIncludingSelf): make this function static so that we can call it from containingBlockForFixedPosition()
(WebCore::RenderElement::containingBlockForFixedPosition const):
(WebCore::RenderElement::containingBlockForAbsolutePosition const):

4:55 PM Changeset in webkit [277697] by Ruben Turcios
  • 5 edits
    2 adds in branches/safari-612.1.15.1-branch

Cherry-pick r277452. rdar://problem/78179698

REGRESSION (r276945): [iOS] Focus rings are too large
https://bugs.webkit.org/show_bug.cgi?id=225778
<rdar://problem/77858341>

Reviewed by Tim Horton.

Source/WebCore:

r276945 updated scaling logic to ensure that the scale of the base CTM
matches the device scale factor. The change itself makes our base CTM
more correct, but exposed a longstanding bug with our focus ring
implementation.

Focus rings are drawn using CoreGraphics, using CGFocusRingStyle. On
macOS, the style is initialized using NSInitializeCGFocusRingStyleForTime.
However, on iOS, we initialize the style ourselves, using UIKit constants.
Currently, the focus ring's style's radius is set to
+[UIFocusRingStyle cornerRadius], a constant of 8. This is the longstanding
issue. CGFocusRingStyle's radius is not a corner radius, but is the
width of the focus ring. In UIKit, this width is represented by
+[UIFocusRingStyle borderThickness], a constant of 3. WebKit has always
intended to match this width, as evidenced by the default outline-width
of 3px in the UA style sheet.

Considering the large disparity between the existing and expected radius
value, it may be surprising that this mistake has gone unnoticed since
2019, when focus rings were first introduced on iOS. This is where r276945
comes into play. Prior to r276945, the scale of the base CTM did not match
the device scale factor. This meant that CG scaled down the constant of 8
to 4 CSS pixels (1 (base CTM) / 2 (device scale factor)). After r276945,
the two scales are equal and the focus ring is drawn as 8 CSS pixels, much
larger than the expected 3px.

Test: fast/forms/ios/focus-ring-size.html

  • platform/graphics/cocoa/GraphicsContextCocoa.mm: (WebCore::drawFocusRingAtTime):

To fix, use the correct SPI to get the focus ring width,
+[UIFocusRingStyle borderThickness]. This ensures that focus rings have
the right width, following r276945.

The change also fixes focus ring repaint issues that arose from the
fact that the outline-width was 3px, but the painted width was 4px.

Source/WebCore/PAL:

  • pal/spi/ios/UIKitSPI.h:

LayoutTests:

Added a regression test to verify the size of the focus ring on iOS.
The test works by drawing an overlay on top of an input element, that
is just large enough to obscure the focus ring. If the focus ring is
too large, the ring will not obscured, leading to a mismatch failure.

  • fast/forms/ios/focus-ring-size-expected.html: Added.
  • fast/forms/ios/focus-ring-size.html: Added.

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

4:55 PM Changeset in webkit [277696] by Ruben Turcios
  • 2 edits in branches/safari-612.1.15.1-branch/Source/WebCore

Revert "Cherry-pick r277459. rdar://problem/78110796"

This reverts commit r277597.

4:55 PM Changeset in webkit [277695] by Ruben Turcios
  • 29 edits
    1 add
    1 delete in branches/safari-612.1.15.1-branch

Revert "Cherry-pick r277505. rdar://problem/78110796"

This reverts commit r277598.

4:55 PM Changeset in webkit [277694] by Ruben Turcios
  • 2 edits in branches/safari-612.1.15.1-branch/Source/WebCore

Revert "Cherry-pick r277594. rdar://problem/78130222"

This reverts commit r277621

4:55 PM Changeset in webkit [277693] by Ruben Turcios
  • 2 edits in branches/safari-612.1.15.1-branch/Source/WebCore

Revert "Cherry-pick r277603. rdar://problem/78130222"

This reverts commit r277623

4:55 PM Changeset in webkit [277692] by Simon Fraser
  • 10 edits in trunk/Source/WebCore

Layer names should not contain object addresses in release builds
https://bugs.webkit.org/show_bug.cgi?id=225926

Reviewed by Geoffrey Garen.

Avoid putting object addresses in layer name strings (which end up on CALayers)
to reduce string bloat.

RenderLayer::name() now calls a description() function on RenderObject, which
in turn calls the same on its Node. These description() functions don't put
object addresses in the string.

Alternatives considered: #ifdeffing in the debugDescription() implementations:
I decided not to because calling a function called debugFoo in release seems
wrong. It might also be useful to dump the string with addresses when debugging
in a release build.

Renaming debugDescription() to description() and passing a behavior enum:
Seems about as complicated as this change.

  • dom/Element.cpp:

(WebCore::appendAttributes):
(WebCore::Element::description const):
(WebCore::Element::debugDescription const):

  • dom/Element.h:
  • dom/Node.cpp:

(WebCore::Node::description const):

  • dom/Node.h:
  • dom/Text.cpp:

(WebCore::appendTextRepresentation):
(WebCore::Text::description const):
(WebCore::Text::debugDescription const):

  • dom/Text.h:
  • rendering/RenderLayer.cpp:

(WebCore::RenderLayer::name const):

  • rendering/RenderObject.cpp:

(WebCore::RenderObject::description const):

  • rendering/RenderObject.h:
4:34 PM Changeset in webkit [277691] by Robert Jenner
  • 2 edits in trunk/LayoutTests

Disable WebSQL in WebKitTestRunner
https://bugs.webkit.org/show_bug.cgi?id=224144

Unreviewed test gardening.

Disabling consant failing test for wk1. Test has already been disabled for wk2.

  • platform/mac-wk1/TestExpectations:
4:28 PM Changeset in webkit [277690] by Alan Coon
  • 17 edits in branches/safari-612.1.12-branch

Cherry-pick r277124. rdar://problem/78177934

Sampled Page Top Color: make hit tests consider elements with pointer-events: none
https://bugs.webkit.org/show_bug.cgi?id=225419

Reviewed by Tim Horton.

Source/WebCore:

Test: SampledPageTopColor.HitTestCSSPointerEventsNone

  • rendering/HitTestRequest.h: (WebCore::HitTestRequest::ignoreCSSPointerEventsProperty const): Added.
  • rendering/InlineBox.h: (WebCore::InlineBox::visibleToHitTesting const):
  • rendering/RenderElement.h: (WebCore::RenderElement::visibleToHitTesting const): Add RequestType::IgnoreCSSPointerEventsProperty that's used inside visibleToHitTesting to control whether style().pointerEvents() == PointerEvents::None is checked.
  • dom/Document.cpp: (WebCore::isValidPageSampleLocation): Include the new RequestType::IgnoreCSSPointerEventsProperty since we're not hit testing for interaction, rather we're hit testing in an attempt to see what will be painted.
  • rendering/EllipsisBox.cpp: (WebCore::EllipsisBox::nodeAtPoint):
  • rendering/InlineFlowBox.cpp: (WebCore::InlineFlowBox::nodeAtPoint):
  • rendering/InlineTextBox.cpp: (WebCore::InlineTextBox::nodeAtPoint):
  • rendering/RenderBlock.cpp: (WebCore::RenderBlock::nodeAtPoint):
  • rendering/RenderBox.cpp: (WebCore::RenderBox::nodeAtPoint):
  • rendering/RenderInline.cpp: (WebCore::RenderInline::hitTestCulledInline):
  • rendering/RenderTable.cpp: (WebCore::RenderTable::nodeAtPoint):
  • rendering/RenderWidget.cpp: (WebCore::RenderWidget::nodeAtPoint):
  • rendering/RootInlineBox.cpp: (WebCore::RootInlineBox::nodeAtPoint):
  • rendering/svg/RenderSVGRoot.cpp: (WebCore::RenderSVGRoot::nodeAtPoint): Pass the HitTestRequest to visibleToHitTesting.

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/SampledPageTopColor.mm: (TEST.SampledPageTopColor.HitTestCSSPointerEventsNone): Added.

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

4:28 PM Changeset in webkit [277689] by Alan Coon
  • 4 edits in branches/safari-612.1.12-branch

Cherry-pick r277123. rdar://problem/78177928

Sampled Page Top Color: don't snapshot if the hit test location is a canvas
https://bugs.webkit.org/show_bug.cgi?id=225418

Reviewed by Tim Horton.

Source/WebCore:

Tests: SampledPageTopColor.HitTestHTMLCanvasWithoutRenderingContext

SampledPageTopColor.HitTestHTMLCanvasWithRenderingContext

  • dom/Document.cpp: (WebCore::isValidPageSampleLocation):

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/SampledPageTopColor.mm: (TEST.SampledPageTopColor.HitTestHTMLCanvasWithoutRenderingContext): Added. (TEST.SampledPageTopColor.HitTestHTMLCanvasWithRenderingContext): Added.

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

4:15 PM Changeset in webkit [277688] by Aditya Keerthi
  • 18 edits
    1 add in trunk

[macOS] Titlebar separator doesn't show when WKWebView is scrolled
https://bugs.webkit.org/show_bug.cgi?id=220633
<rdar://problem/71094055>

Reviewed by Darin Adler.

Source/WebKit:

Starting in Big Sur, NSWindows with a titlebar display a separator if
there is a scrolled NSScrollView adjacent to the titlebar. Since
WKWebViews are scrollable views, but not backed by NSScrollView, we
need to adopt SPI to support this functionality.

This patch updates WKWebView to conform to the NSScrollViewSeparatorTrackingAdapter
protocol, ensuring the titlebar separator is displayed when
necessary. Note that since WKWebViews are not actually NSScrollView's we
don't already have the scroll position of the view in the UIProcess. To
determine whether or not the view is scrolled, this patch adds plumbing
so that the WebProcess can tell the UIProcess the new scroll position
when a page is scrolled.

Tests: WKWebViewTitlebarSeparatorTests.BackForwardCache

WKWebViewTitlebarSeparatorTests.ChangeTitlebarAdjacency
WKWebViewTitlebarSeparatorTests.ChangeViewVisibility
WKWebViewTitlebarSeparatorTests.NavigationResetsTitlebarAppearance
WKWebViewTitlebarSeparatorTests.ParentWhileScrolled
WKWebViewTitlebarSeparatorTests.ScrollWithTitlebarAdjacency
WKWebViewTitlebarSeparatorTests.ScrollWithoutTitlebarAdjacency

  • Platform/spi/mac/AppKitSPI.h:
  • UIProcess/API/mac/WKView.mm:

(-[WKView scrollViewFrame]):
(-[WKView hasScrolledContentsUnderTitlebar]):

  • UIProcess/API/mac/WKWebViewMac.mm:

(-[WKWebView scrollViewFrame]):
(-[WKWebView hasScrolledContentsUnderTitlebar]):

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

(WebKit::WebViewImpl::updateWindowAndViewFrames):

If the WKWebView's frame changes, update the titlebar adjacency
state and notify observers of the change.

(WebKit::WebViewImpl::viewWillMoveToWindowImpl):

Unregister the WKWebView as an NSScrollViewSeparatorTrackingAdapter if
it is removed from the window.

(WebKit::WebViewImpl::viewDidHide):

Hidden views are not adjacent to the titlebar.

(WebKit::WebViewImpl::viewDidUnhide):

An unhidden view may be adjacent to the titlebar.

(WebKit::WebViewImpl::pageDidScroll):

Use the scroll position of the page to determine whether or not the
WKWebView is scrolled.

(WebKit::WebViewImpl::scrollViewFrame):

Needed to conform to NSScrollViewSeparatorTrackingAdapter.

(WebKit::WebViewImpl::hasScrolledContentsUnderTitlebar):

Needed to conform to NSScrollViewSeparatorTrackingAdapter. Returns true
if the view is registered as an NSScrollViewSeparatorTrackingAdapter
and is scrolled.

(WebKit::WebViewImpl::updateTitlebarAdjacencyState):

The WKWebView needs to be registered as an NSScrollViewSeparatorTrackingAdapter
if it's adjacent to the titlebar and unregistered otherwise.

  • UIProcess/PageClient.h:

(WebKit::PageClient::pageDidScroll):

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::pageDidScroll):

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

(WebKit::PageClientImpl::didCommitLoadForMainFrame):

Reset the scroll position upon navigation, as pageDidScroll does not get
called when navigating.

(WebKit::PageClientImpl::pageDidScroll):

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::pageDidScroll):

Pass the current scroll position when the page is scrolled, so that the
UIProcess knows whether or not the page has a non-zero scroll position.

Source/WTF:

  • wtf/PlatformHave.h: Defined HAVE_NSSCROLLVIEW_SEPARATOR_TRACKING_ADAPTER.

Tools:

Added API tests to verify that the delegate implementation returns the
correct value for hasScrolledContentsUnderTitlebar depending on
the view's scroll position, visibility, and frame.

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/TestWebKitAPI/mac/AppKitSPI.h:
  • TestWebKitAPI/Tests/mac/WKWebViewTitlebarSeparatorTests.mm: Added.

(-[TitlebarSeparatorTestWKWebView initWithFrame:configuration:]):
(-[TitlebarSeparatorTestWKWebView separatorTrackingAdapter]):
(BackForwardCache):
(ChangeTitlebarAdjacency):
(ChangeViewVisibility):
(NavigationResetsTitlebarAppearance):
(ParentWhileScrolled):
(ScrollWithTitlebarAdjacency):
(ScrollWithoutTitlebarAdjacency):

4:08 PM Changeset in webkit [277687] by Ruben Turcios
  • 1 copy in branches/safari-612.1.15.3-branch

New branch.

4:08 PM Changeset in webkit [277686] by Ruben Turcios
  • 1 copy in branches/safari-612.1.15.2-branch

New branch.

4:07 PM Changeset in webkit [277685] by Alan Coon
  • 8 edits in branches/safari-612.1.12-branch/Source

Versioning.

WebKit-7612.1.12.11

4:05 PM Changeset in webkit [277684] by Alan Coon
  • 1 copy in tags/Safari-612.1.12.10

Tag Safari-612.1.12.10.

3:34 PM Changeset in webkit [277683] by timothy_horton@apple.com
  • 2 edits in trunk/Source/WebKit

REGRESSION (r275013): Trying to navigate in a WKWebView from a command line tool crashes the Web Content process
https://bugs.webkit.org/show_bug.cgi?id=225938
<rdar://problem/78029118>

Reviewed by Alex Christensen.

  • Shared/EntryPointUtilities/Cocoa/XPCService/XPCServiceEntryPoint.h:

(WebKit::XPCServiceInitializer):
Some kinds of processes do not have a bundle identifier, so requiring one
is simply not going to work.

Also, make the other exit()s in this function use CRASH() instead, so
that they make traditional crash logs instead of just exiting with a
non-zero error code (which is much quieter).

3:24 PM Changeset in webkit [277682] by Robert Jenner
  • 2 edits in trunk/LayoutTests

[BigSur] imported/w3c/web-platform-tests/css/css-counter-styles/tibetan/css3-counter-styles-156.html is consistently failing
https://bugs.webkit.org/show_bug.cgi?id=222118

Unreviewed test gardening.

Removing test expectation no longer needed.

  • platform/mac/TestExpectations:
3:06 PM Changeset in webkit [277681] by Russell Epstein
  • 2 edits in branches/safari-612.1.15.1-branch/Source/ThirdParty/ANGLE

Cherry-pick r277661. rdar://problem/78175007

Stop compiling ANGLE metal files twice
https://bugs.webkit.org/show_bug.cgi?id=225919
<rdar://78013511>

Reviewed by Dean Jackson.

ANGLE currently generates an unused default.metallib that conflicts with other default.metallibs being built.
Since it is unused, remove it.
What we currently do is put all the source bytes into gDefaultMetallibSrc and compile it at runtime.
This could be optimized to do it at compile time and use newLibraryWithData instead of newLibraryWithSource,
but that should be done separately.

  • ANGLE.xcodeproj/project.pbxproj:

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

2:30 PM Changeset in webkit [277680] by sbarati@apple.com
  • 25 edits in trunk/Source/JavaScriptCore

Add Data Call ICs that don't repatch and use them in the baseline JIT
https://bugs.webkit.org/show_bug.cgi?id=225321
<rdar://problem/77773796>

Reviewed by Michael Saboff.

This patch adds Data ICs for calls. Data ICs for calls work by loading a code
pointer from CallLinkInfo, and indirect calling that pointer. This means that
to repatch such an IC, all we need to do is replace a code pointer inside
CallLinkInfo. No need to repatch the JIT code.

The current implementation only does this for monomorphic calls. We still
repatch the JIT code for polymorphic calls. In a followup, we will also
opt polymorphic call ICs into data-based calls:
https://bugs.webkit.org/show_bug.cgi?id=225793

This patch only uses Data Call ICs for the Baseline JIT. Even with that, it
reduces the number of calls to cacheFlush by ~45% on JetStream2.

Performance is neutral on AS Macs, but it paves the way towards doing
unlinked JITting in JSC.

  • assembler/AbstractMacroAssembler.h:

(JSC::AbstractMacroAssembler::addLateLinkTask):

  • assembler/LinkBuffer.cpp:

(JSC::LinkBuffer::linkCode):
(JSC::LinkBuffer::performFinalization):

  • assembler/LinkBuffer.h:
  • bytecode/AccessCase.cpp:

(JSC::AccessCase::generateImpl):

  • bytecode/CallLinkInfo.cpp:

(JSC::CallLinkInfo::CallLinkInfo):
(JSC::CallLinkInfo::unlink):
(JSC::CallLinkInfo::fastPathStart):
(JSC::CallLinkInfo::slowPathStart):
(JSC::CallLinkInfo::doneLocation):
(JSC::CallLinkInfo::setMonomorphicCallee):
(JSC::CallLinkInfo::clearCallee):
(JSC::CallLinkInfo::emitFirstInstructionForDataIC):
(JSC::CallLinkInfo::emitFastPathImpl):
(JSC::CallLinkInfo::emitFastPath):
(JSC::CallLinkInfo::emitTailCallFastPath):
(JSC::CallLinkInfo::emitSlowPath):
(JSC::CallLinkInfo::emitDirectFastPath):
(JSC::CallLinkInfo::emitDirectTailCallFastPath):
(JSC::CallLinkInfo::initializeDirectCall):
(JSC::CallLinkInfo::setDirectCallTarget):
(JSC::CallLinkInfo::setSlowPathCallDestination):
(JSC::CallLinkInfo::revertCallToStub):
(JSC::CallLinkInfo::setStub):
(JSC::CallLinkInfo::callReturnLocation): Deleted.
(JSC::CallLinkInfo::patchableJump): Deleted.
(JSC::CallLinkInfo::hotPathBegin): Deleted.
(JSC::CallLinkInfo::setCallee): Deleted.

  • bytecode/CallLinkInfo.h:

(JSC::CallLinkInfo::calleeGPR const):
(JSC::CallLinkInfo::isDataIC const):
(JSC::CallLinkInfo::setUsesDataICs):
(JSC::CallLinkInfo::setCodeLocations):
(JSC::CallLinkInfo::offsetOfCallee):
(JSC::CallLinkInfo::offsetOfMonomorphicCallDestination):
(JSC::CallLinkInfo::offsetOfSlowPathCallDestination):
(JSC::CallLinkInfo::setCallLocations): Deleted.
(JSC::CallLinkInfo::hotPathOther): Deleted.
(JSC::CallLinkInfo::setStub): Deleted.

  • dfg/DFGJITCompiler.cpp:

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

  • dfg/DFGJITCompiler.h:

(JSC::DFG::JITCompiler::addJSCall):
(JSC::DFG::JITCompiler::addJSDirectCall):
(JSC::DFG::JITCompiler::JSCallRecord::JSCallRecord):
(JSC::DFG::JITCompiler::JSDirectCallRecord::JSDirectCallRecord):
(JSC::DFG::JITCompiler::addJSDirectTailCall): Deleted.
(JSC::DFG::JITCompiler::JSDirectTailCallRecord::JSDirectTailCallRecord): Deleted.

  • dfg/DFGOSRExitCompilerCommon.cpp:

(JSC::DFG::callerReturnPC):

  • dfg/DFGOperations.cpp:

(JSC::DFG::JSC_DEFINE_JIT_OPERATION):

  • dfg/DFGSpeculativeJIT32_64.cpp:

(JSC::DFG::SpeculativeJIT::emitCall):

  • dfg/DFGSpeculativeJIT64.cpp:

(JSC::DFG::SpeculativeJIT::emitCall):

  • ftl/FTLLowerDFGToB3.cpp:

(JSC::FTL::DFG::LowerDFGToB3::compileCallOrConstruct):
(JSC::FTL::DFG::LowerDFGToB3::compileDirectCallOrConstruct):
(JSC::FTL::DFG::LowerDFGToB3::compileTailCall):
(JSC::FTL::DFG::LowerDFGToB3::compileCallOrConstructVarargsSpread):
(JSC::FTL::DFG::LowerDFGToB3::compileCallOrConstructVarargs):

  • jit/CCallHelpers.cpp:

(JSC::CCallHelpers::emitJITCodeOver):

  • jit/CCallHelpers.h:
  • jit/JIT.cpp:

(JSC::JIT::link):

  • jit/JIT.h:
  • jit/JITCall.cpp:

(JSC::JIT::compileTailCall):
(JSC::JIT::compileOpCall):
(JSC::JIT::compileOpCallSlowCase):

  • jit/JITCall32_64.cpp:

(JSC::JIT::compileOpCall):
(JSC::JIT::compileOpCallSlowCase):

  • jit/JITOperations.cpp:

(JSC::JSC_DEFINE_JIT_OPERATION):

  • jit/PolymorphicCallStubRoutine.cpp:

(JSC::PolymorphicCallNode::unlink):

  • jit/Repatch.cpp:

(JSC::linkSlowPathTo):
(JSC::linkSlowFor):
(JSC::linkMonomorphicCall):
(JSC::linkDirectCall):
(JSC::revertCall):
(JSC::unlinkCall):
(JSC::linkPolymorphicCall):
(JSC::linkFor): Deleted.
(JSC::linkDirectFor): Deleted.
(JSC::unlinkFor): Deleted.

  • jit/Repatch.h:
  • wasm/js/WasmToJS.cpp:

(JSC::Wasm::wasmToJS):

2:25 PM Changeset in webkit [277679] by zhifei_fang@apple.com
  • 2 edits in trunk/Websites/perf.webkit.org

Clean up git svn mapping when git pull
https://bugs.webkit.org/show_bug.cgi?id=225934

Reviewed by Ryosuke Niwa.

  • tools/sync-commits.py:

(GitRepository._fetch_remote):

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

Allow SafariForWebKitDevelopment to launch successfully
https://bugs.webkit.org/show_bug.cgi?id=223551

Suggested by BJ Burg. Reviewed by Tim Horton.

  • UIProcess/Inspector/mac/WebInspectorUIProxyMac.mm:
2:04 PM Changeset in webkit [277677] by rniwa@webkit.org
  • 9 edits in trunk/Source/WebKit

Enabling IPC testing API should prevent WebContent process from getting terminated in more cases
https://bugs.webkit.org/show_bug.cgi?id=225906
<rdar://problem/78138794>

Rebaselined the tests.

  • Scripts/webkit/tests/TestWithIfMessageMessageReceiver.cpp:

(WebKit::TestWithIfMessage::didReceiveMessage):

  • Scripts/webkit/tests/TestWithImageDataMessageReceiver.cpp:

(WebKit::TestWithImageData::didReceiveMessage):
(WebKit::TestWithImageData::didReceiveSyncMessage):

  • Scripts/webkit/tests/TestWithLegacyReceiverMessageReceiver.cpp:

(WebKit::TestWithLegacyReceiver::didReceiveTestWithLegacyReceiverMessage):
(WebKit::TestWithLegacyReceiver::didReceiveSyncTestWithLegacyReceiverMessage):

  • Scripts/webkit/tests/TestWithSemaphoreMessageReceiver.cpp:

(WebKit::TestWithSemaphore::didReceiveMessage):
(WebKit::TestWithSemaphore::didReceiveSyncMessage):

  • Scripts/webkit/tests/TestWithStreamBufferMessageReceiver.cpp:

(WebKit::TestWithStreamBuffer::didReceiveMessage):

  • Scripts/webkit/tests/TestWithStreamMessageReceiver.cpp:

(WebKit::TestWithStream::didReceiveStreamMessage):

  • Scripts/webkit/tests/TestWithSuperclassMessageReceiver.cpp:

(WebKit::TestWithSuperclass::didReceiveSyncMessage):

  • Scripts/webkit/tests/TestWithoutAttributesMessageReceiver.cpp:

(WebKit::TestWithoutAttributes::didReceiveMessage):
(WebKit::TestWithoutAttributes::didReceiveSyncMessage):

1:59 PM Changeset in webkit [277676] by jer.noble@apple.com
  • 6 edits
    2 adds in trunk/Source/WebCore

[GPUP] RemoteAudioSession calls into AVAudioSession when GPUP is enabled, causing hangs
https://bugs.webkit.org/show_bug.cgi?id=223564
<rdar://74750291>

Reviewed by Eric Carlson.

Now that AudioSession can have two different implementations at runtime, it should be an
actual virtual class, whose concrete, per-platform implementations are derivations of the
base class. Make AudioSessionIOS and AudioSessionMac true subclasses of AudioSession, and
allow RemoteAudioSession to derive from that same base class (rather than AudioSessionIOS
or AudioSessionMac).

Also ensure AudioSessionIOS or AudioSessionMac is not accidentally created when calling
AudioSession::setSharedSession() by making the NeverDestroyed object holding the session
an Optional, and only lazily creating the session from AudioSession::sharedSession() if
one has not been explicitly set already.

  • platform/audio/AudioSession.cpp:

(WebCore::sharedAudioSession):
(WebCore::AudioSession::create):
(WebCore::AudioSession::sharedSession):
(WebCore::AudioSession::addInterruptionObserver):
(WebCore::AudioSession::removeInterruptionObserver):
(WebCore::AudioSession::beginInterruption):
(WebCore::AudioSession::endInterruption):
(WebCore::AudioSession::setIsPlayingToBluetoothOverride):
(WebCore::AudioSession::AudioSession): Deleted.

  • platform/audio/AudioSession.h:
  • platform/audio/ios/AudioSessionIOS.h: Added.
  • platform/audio/ios/AudioSessionIOS.mm:

(WebCore::AudioSessionIOS::AudioSessionIOS):
(WebCore::AudioSessionIOS::~AudioSessionIOS):
(WebCore::AudioSessionIOS::setCategory):
(WebCore::AudioSessionIOS::category const):
(WebCore::AudioSessionIOS::routeSharingPolicy const):
(WebCore::AudioSessionIOS::routingContextUID const):
(WebCore::AudioSessionIOS::setCategoryOverride):
(WebCore::AudioSessionIOS::categoryOverride const):
(WebCore::AudioSessionIOS::sampleRate const):
(WebCore::AudioSessionIOS::bufferSize const):
(WebCore::AudioSessionIOS::numberOfOutputChannels const):
(WebCore::AudioSessionIOS::maximumNumberOfOutputChannels const):
(WebCore::AudioSessionIOS::tryToSetActiveInternal):
(WebCore::AudioSessionIOS::preferredBufferSize const):
(WebCore::AudioSessionIOS::setPreferredBufferSize):
(WebCore::AudioSessionIOS::isMuted const):
(WebCore::AudioSessionIOS::handleMutedStateChange):
(WebCore::AudioSessionIOS::addInterruptionObserver):
(WebCore::AudioSessionIOS::removeInterruptionObserver):
(WebCore::AudioSessionIOS::beginInterruption):
(WebCore::AudioSessionIOS::endInterruption):
(WebCore::AudioSessionPrivate::AudioSessionPrivate): Deleted.
(WebCore::AudioSessionPrivate::~AudioSessionPrivate): Deleted.
(WebCore::AudioSession::AudioSession): Deleted.
(WebCore::AudioSession::~AudioSession): Deleted.
(WebCore::AudioSession::setCategory): Deleted.
(WebCore::AudioSession::category const): Deleted.
(WebCore::AudioSession::routeSharingPolicy const): Deleted.
(WebCore::AudioSession::routingContextUID const): Deleted.
(WebCore::AudioSession::setCategoryOverride): Deleted.
(WebCore::AudioSession::categoryOverride const): Deleted.
(WebCore::AudioSession::sampleRate const): Deleted.
(WebCore::AudioSession::bufferSize const): Deleted.
(WebCore::AudioSession::numberOfOutputChannels const): Deleted.
(WebCore::AudioSession::maximumNumberOfOutputChannels const): Deleted.
(WebCore::AudioSession::tryToSetActiveInternal): Deleted.
(WebCore::AudioSession::preferredBufferSize const): Deleted.
(WebCore::AudioSession::setPreferredBufferSize): Deleted.
(WebCore::AudioSession::isMuted const): Deleted.
(WebCore::AudioSession::handleMutedStateChange): Deleted.
(WebCore::AudioSession::addInterruptionObserver): Deleted.
(WebCore::AudioSession::removeInterruptionObserver): Deleted.
(WebCore::AudioSession::beginInterruption): Deleted.
(WebCore::AudioSession::endInterruption): Deleted.

  • platform/audio/mac/AudioSessionMac.h: Added.
  • platform/audio/mac/AudioSessionMac.mm:

(WebCore::AudioSessionMac::addSampleRateObserverIfNeeded const):
(WebCore::AudioSessionMac::handleSampleRateChange):
(WebCore::AudioSessionMac::addBufferSizeObserverIfNeeded const):
(WebCore::AudioSessionMac::handleBufferSizeChange):
(WebCore::AudioSessionMac::audioOutputDeviceChanged):
(WebCore::AudioSessionMac::setIsPlayingToBluetoothOverride):
(WebCore::AudioSessionMac::setCategory):
(WebCore::AudioSessionMac::setCategoryOverride):
(WebCore::AudioSessionMac::sampleRate const):
(WebCore::AudioSessionMac::bufferSize const):
(WebCore::AudioSessionMac::numberOfOutputChannels const):
(WebCore::AudioSessionMac::maximumNumberOfOutputChannels const):
(WebCore::AudioSessionMac::tryToSetActiveInternal):
(WebCore::AudioSessionMac::routeSharingPolicy const):
(WebCore::AudioSessionMac::routingContextUID const):
(WebCore::AudioSessionMac::preferredBufferSize const):
(WebCore::AudioSessionMac::setPreferredBufferSize):
(WebCore::AudioSessionMac::isMuted const):
(WebCore::AudioSessionMac::handleMutedStateChange):
(WebCore::AudioSessionMac::addMutedStateObserver):
(WebCore::AudioSessionMac::removeMutedStateObserver):
(): Deleted.
(WebCore::AudioSessionPrivate::addSampleRateObserverIfNeeded): Deleted.
(WebCore::AudioSessionPrivate::handleSampleRateChange): Deleted.
(WebCore::AudioSessionPrivate::addBufferSizeObserverIfNeeded): Deleted.
(WebCore::AudioSessionPrivate::handleBufferSizeChange): Deleted.
(WebCore::AudioSession::AudioSession): Deleted.
(WebCore::AudioSession::category const): Deleted.
(WebCore::AudioSession::audioOutputDeviceChanged): Deleted.
(WebCore::AudioSession::setIsPlayingToBluetoothOverride): Deleted.
(WebCore::AudioSession::setCategory): Deleted.
(WebCore::AudioSession::categoryOverride const): Deleted.
(WebCore::AudioSession::setCategoryOverride): Deleted.
(WebCore::AudioSession::sampleRate const): Deleted.
(WebCore::AudioSession::bufferSize const): Deleted.
(WebCore::AudioSession::numberOfOutputChannels const): Deleted.
(WebCore::AudioSession::maximumNumberOfOutputChannels const): Deleted.
(WebCore::AudioSession::tryToSetActiveInternal): Deleted.
(WebCore::AudioSession::routeSharingPolicy const): Deleted.
(WebCore::AudioSession::routingContextUID const): Deleted.
(WebCore::AudioSession::preferredBufferSize const): Deleted.
(WebCore::AudioSession::setPreferredBufferSize): Deleted.
(WebCore::AudioSession::isMuted const): Deleted.
(WebCore::AudioSession::handleMutedStateChange): Deleted.
(WebCore::AudioSession::addMutedStateObserver): Deleted.
(WebCore::AudioSession::removeMutedStateObserver): Deleted.

1:58 PM Changeset in webkit [277675] by Jonathan Bedard
  • 2 edits in trunk/Tools

[webkitpy] Forward booted simulators to children processes
https://bugs.webkit.org/show_bug.cgi?id=225933
<rdar://problem/78169900>

Rubber-stamped by Aakash Jain.

  • Scripts/webkitpy/api_tests/runner.py:

(setup_shard): Set DeviceManager global variable from parent process.
(Runner.command_for_port): Use Port's device manager instead of simulated device manager.
(Runner.run): Pass DeviceManager details to children processes.

1:49 PM Changeset in webkit [277674] by Robert Jenner
  • 2 edits in trunk/LayoutTests

Disable WebSQL in WebKitTestRunner
https://bugs.webkit.org/show_bug.cgi?id=224144

Unreviewed test gardening.

Remvoing test expectation that is causing this skipped test to run.

  • platform/mac-wk1/TestExpectations:
1:35 PM Changeset in webkit [277673] by aakash_jain@apple.com
  • 2 edits in trunk/Tools

[ews] Style fixes in steps_unittest.py
https://bugs.webkit.org/show_bug.cgi?id=225932

Reviewed by Jonathan Bedard.

  • CISupport/ews-build/steps_unittest.py:
1:26 PM Changeset in webkit [277672] by achristensen@apple.com
  • 15 edits
    3 copies in trunk/Source/WebKit

Unreviewed, reverting r277614.
<rdar://78167889>

Broke Mail

Reverted changeset:

"Remove API::Object::Type::BundlePageGroup"
https://bugs.webkit.org/show_bug.cgi?id=225611
https://commits.webkit.org/r277614

12:56 PM Changeset in webkit [277671] by zhifei_fang@apple.com
  • 3 edits in trunk/Websites/perf.webkit.org

Commits updater should ignore null revision identifier
https://bugs.webkit.org/show_bug.cgi?id=225911

Reviewed by Ryosuke Niwa.

  • public/include/commit-updater.php:
  • server-tests/api-report-commits-tests.js:
12:52 PM Changeset in webkit [277670] by Russell Epstein
  • 5 edits in branches/safari-612.1.15.1-branch/Source

Apply patch. rdar://problem/77799537

12:46 PM Changeset in webkit [277669] by commit-queue@webkit.org
  • 8 edits in trunk/Source/JavaScriptCore

Unreviewed, reverting r276655.
https://bugs.webkit.org/show_bug.cgi?id=225930

caused a 2% PLT regression

Reverted changeset:

"StructureStubInfo and PolymorphicAccess should account for
their non-GC memory"
https://bugs.webkit.org/show_bug.cgi?id=225113
https://trac.webkit.org/changeset/276655

12:03 PM Changeset in webkit [277668] by Jonathan Bedard
  • 2 edits in trunk/Tools

[lint-test-expectations] Change shebang to Python 3
https://bugs.webkit.org/show_bug.cgi?id=225898
<rdar://problem/78130334>

Reviewed by Aakash Jain.

  • Scripts/lint-test-expectations: Change shebang, remove version check.
11:59 AM Changeset in webkit [277667] by Chris Dumez
  • 4 edits in trunk/Source/WebCore

Use UTF-8 internally from Strings inside SQLiteStatement
https://bugs.webkit.org/show_bug.cgi?id=225890

Reviewed by Darin Adler.

Use UTF-8 internally from Strings inside SQLiteStatement. Our SQLite databases use UTF-8
internally for text encoding (since we open the database with sqlite3_open_v2() and not
sqlite3_open16()).

Previously, we were providing UTF-16 strings to SQLite, which meant it had to convert it
internally to UTF-8. Also, whenever we were requesting a string from SQLite, it had to
convert it from UTF-8 to UTF-16 before returning it to us. Our String constructed from
returned from SQLiteStatement would also be 16-bit encoded, even if all ASCII so we were
potentially wasting memory too.

We now provide UTF-8 to SQLite by using StringView::utf8(). We also request UTF-8 strings
from SQLite and rely on String::fromUTF8() to convert it to a WTF::String. For all ASCII
characters, this means we'll end up with a 8-bit String and save memory.

  • platform/sql/SQLiteStatement.cpp:

(WebCore::SQLiteStatement::bindText):
(WebCore::SQLiteStatement::getColumnName):
(WebCore::SQLiteStatement::getColumnText):

  • platform/sql/SQLiteStatement.h:
11:48 AM Changeset in webkit [277666] by Said Abou-Hallawa
  • 8 edits in trunk/Source

Allow logging minimal info about uploading media files
https://bugs.webkit.org/show_bug.cgi?id=225636
<rdar://problem/76639138>

Reviewed by Alex Christensen.

Source/WebCore:

Files can be uploaded to a server by many different ways: through a form
submit, an xhr, a file fetch or through a worker. r275103 handled the
form submit only. Instead of handling this case by case, we can add the
logging code in a shared place where all the file uploading goes through.

  • html/HTMLFormElement.cpp:

(WebCore::HTMLFormElement::submit):
Delete the code which was part of r275103.

  • page/Page.cpp:

(WebCore::Page::logMediaDiagnosticMessage const):

  • page/Page.h:

Make the Page be responsible for logging the media files info.

  • platform/network/FormData.cpp:

(WebCore::FormData::imageOrMediaFilesCount const):

  • platform/network/FormData.h:

Make the FormData count how many images or media files it has.

Source/WebKit:

  • WebProcess/Network/WebLoaderStrategy.cpp:

(WebKit::addParametersShared):
Centralize logging uploading the images and media files.

11:01 AM Changeset in webkit [277665] by keith_miller@apple.com
  • 101 edits
    15 deletes in trunk

Temporarily revert r276592 as it breaks some native apps
https://bugs.webkit.org/show_bug.cgi?id=225917

JSTests:

Unreviewed, revert.

  • microbenchmarks/put-slow-no-cache-array.js: Removed.
  • microbenchmarks/put-slow-no-cache-function.js: Removed.
  • microbenchmarks/put-slow-no-cache-js-proxy.js: Removed.
  • microbenchmarks/put-slow-no-cache-long-prototype-chain.js: Removed.
  • microbenchmarks/put-slow-no-cache.js: Removed.
  • microbenchmarks/reflect-set-with-receiver.js: Removed.
  • stress/custom-get-set-proto-chain-put.js:

(getObjects):
(let.base.of.getBases):

  • stress/module-namespace-access-set-fails.js: Removed.
  • stress/put-non-reified-static-accessor-or-custom.js: Removed.
  • stress/put-non-reified-static-function-or-custom.js: Removed.
  • stress/put-to-primitive-non-reified-static-custom.js: Removed.
  • stress/put-to-primitive.js: Removed.
  • stress/put-to-proto-chain-overrides-put.js: Removed.
  • stress/typed-array-canonical-numeric-index-string-set.js: Removed.

LayoutTests/imported/w3c:

Unreviewed, revert.

  • web-platform-tests/WebIDL/ecmascript-binding/interface-object-set-receiver-expected.txt: Removed.
  • web-platform-tests/WebIDL/ecmascript-binding/interface-object-set-receiver.html: Removed.
  • web-platform-tests/WebIDL/ecmascript-binding/interface-prototype-constructor-set-receiver-expected.txt:
  • web-platform-tests/WebIDL/ecmascript-binding/interface-prototype-constructor-set-receiver.html:

Source/JavaScriptCore:

Unreviewed, revert.

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

(JSC::JSCallbackObject<Parent>::put):

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

(JSC::callCustomSetter):

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

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

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

(JSC::JSArray::put):

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

(JSC::JSArrayBufferView::put):

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

(JSC::JSValue::putToPrimitive):

  • runtime/JSCell.cpp:

(JSC::JSCell::doPutPropertySecurityCheck):

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

(JSC::JSFunction::put):

  • runtime/JSFunction.h:
  • runtime/JSGenericTypedArrayView.h:
  • runtime/JSGlobalLexicalEnvironment.h:
  • runtime/JSGlobalObject.cpp:

(JSC::JSGlobalObject::put):

  • runtime/JSGlobalObject.h:
  • runtime/JSLexicalEnvironment.h:
  • runtime/JSModuleEnvironment.h:
  • runtime/JSModuleNamespaceObject.h:
  • runtime/JSObject.cpp:

(JSC::JSObject::doPutPropertySecurityCheck):
(JSC::JSObject::putInlineSlow):
(JSC::JSObject::prototypeChainMayInterceptStoreTo):
(JSC::definePropertyOnReceiverSlow): Deleted.
(JSC::JSObject::definePropertyOnReceiver): Deleted.
(JSC::JSObject::putInlineFastReplacingStaticPropertyIfNeeded): Deleted.

  • runtime/JSObject.h:

(JSC::JSObject::putByIndexInline):
(JSC::JSObject::doPutPropertySecurityCheck):
(JSC::JSObject::hasNonReifiedStaticProperties): Deleted.

  • runtime/JSObjectInlines.h:

(JSC::JSObject::canPerformFastPutInlineExcludingProto):
(JSC::JSObject::putInlineForJSObject):
(JSC::JSObject::putDirectInternal):
(JSC::JSObject::putInlineFast): Deleted.

  • runtime/JSProxy.h:
  • runtime/JSTypeInfo.h:

(JSC::TypeInfo::overridesGetOwnPropertySlot const):
(JSC::TypeInfo::overridesAnyFormOfGetOwnPropertyNames const):
(JSC::TypeInfo::hasPutPropertySecurityCheck const):
(JSC::TypeInfo::hasStaticPropertyTable const): Deleted.
(JSC::TypeInfo::overridesPut const): Deleted.

  • runtime/Lookup.h:

(JSC::putEntry):
(JSC::lookupPut):

  • runtime/PropertySlot.h:
  • runtime/ProxyObject.cpp:

(JSC::ProxyObject::put):

  • runtime/ProxyObject.h:
  • runtime/PutPropertySlot.h:

(JSC::PutPropertySlot::PutPropertySlot):
(JSC::PutPropertySlot::context const):
(JSC::PutPropertySlot::type const):
(JSC::PutPropertySlot::isInitialization const):
(JSC::PutPropertySlot::isTaintedByOpaqueObject const): Deleted.
(JSC::PutPropertySlot::setIsTaintedByOpaqueObject): Deleted.

  • runtime/ReflectObject.cpp:

(JSC::JSC_DEFINE_HOST_FUNCTION):

  • runtime/RegExpObject.cpp:

(JSC::RegExpObject::put):

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

(JSC::StringObject::put):

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

(JSC::StringPrototype::finishCreation):
(JSC::StringPrototype::create):

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

(JSC::Structure::validateFlags):

  • runtime/Structure.h:

(JSC::Structure::takesSlowPathInDFGForImpureProperty):
(JSC::Structure::hasNonReifiedStaticProperties const): Deleted.

  • tools/JSDollarVM.cpp:

Source/WebCore:

Unreviewed, revert.

  • bindings/js/JSDOMWindowCustom.cpp:

(WebCore::JSDOMWindow::doPutPropertySecurityCheck):
(WebCore::JSDOMWindow::put):

  • bindings/js/JSLocationCustom.cpp:

(WebCore::JSLocation::doPutPropertySecurityCheck):

  • bindings/js/JSRemoteDOMWindowCustom.cpp:

(WebCore::JSRemoteDOMWindow::put):

  • bindings/scripts/CodeGeneratorJS.pm:

(GeneratePut):
(GenerateHeader):

  • bindings/scripts/test/JS/JSTestDomainSecurity.h:
  • bindings/scripts/test/JS/JSTestIndexedSetterNoIdentifier.cpp:

(WebCore::JSTestIndexedSetterNoIdentifier::put):

  • bindings/scripts/test/JS/JSTestIndexedSetterNoIdentifier.h:
  • bindings/scripts/test/JS/JSTestIndexedSetterThrowingException.cpp:

(WebCore::JSTestIndexedSetterThrowingException::put):

  • bindings/scripts/test/JS/JSTestIndexedSetterThrowingException.h:
  • bindings/scripts/test/JS/JSTestIndexedSetterWithIdentifier.cpp:

(WebCore::JSTestIndexedSetterWithIdentifier::put):

  • bindings/scripts/test/JS/JSTestIndexedSetterWithIdentifier.h:
  • bindings/scripts/test/JS/JSTestInterface.h:
  • bindings/scripts/test/JS/JSTestNamedAndIndexedSetterNoIdentifier.cpp:

(WebCore::JSTestNamedAndIndexedSetterNoIdentifier::put):

  • bindings/scripts/test/JS/JSTestNamedAndIndexedSetterNoIdentifier.h:
  • bindings/scripts/test/JS/JSTestNamedAndIndexedSetterThrowingException.cpp:

(WebCore::JSTestNamedAndIndexedSetterThrowingException::put):

  • bindings/scripts/test/JS/JSTestNamedAndIndexedSetterThrowingException.h:
  • bindings/scripts/test/JS/JSTestNamedAndIndexedSetterWithIdentifier.cpp:

(WebCore::JSTestNamedAndIndexedSetterWithIdentifier::put):

  • bindings/scripts/test/JS/JSTestNamedAndIndexedSetterWithIdentifier.h:
  • bindings/scripts/test/JS/JSTestNamedSetterNoIdentifier.cpp:

(WebCore::JSTestNamedSetterNoIdentifier::put):

  • bindings/scripts/test/JS/JSTestNamedSetterNoIdentifier.h:
  • bindings/scripts/test/JS/JSTestNamedSetterThrowingException.cpp:

(WebCore::JSTestNamedSetterThrowingException::put):

  • bindings/scripts/test/JS/JSTestNamedSetterThrowingException.h:
  • bindings/scripts/test/JS/JSTestNamedSetterWithIdentifier.cpp:

(WebCore::JSTestNamedSetterWithIdentifier::put):

  • bindings/scripts/test/JS/JSTestNamedSetterWithIdentifier.h:
  • bindings/scripts/test/JS/JSTestNamedSetterWithIndexedGetter.cpp:

(WebCore::JSTestNamedSetterWithIndexedGetter::put):

  • bindings/scripts/test/JS/JSTestNamedSetterWithIndexedGetter.h:
  • bindings/scripts/test/JS/JSTestNamedSetterWithIndexedGetterAndSetter.cpp:

(WebCore::JSTestNamedSetterWithIndexedGetterAndSetter::put):

  • bindings/scripts/test/JS/JSTestNamedSetterWithIndexedGetterAndSetter.h:
  • bindings/scripts/test/JS/JSTestNamedSetterWithLegacyOverrideBuiltIns.cpp:

(WebCore::JSTestNamedSetterWithLegacyOverrideBuiltIns::put):

  • bindings/scripts/test/JS/JSTestNamedSetterWithLegacyOverrideBuiltIns.h:
  • bindings/scripts/test/JS/JSTestNamedSetterWithLegacyUnforgeableProperties.cpp:

(WebCore::JSTestNamedSetterWithLegacyUnforgeableProperties::put):

  • bindings/scripts/test/JS/JSTestNamedSetterWithLegacyUnforgeableProperties.h:
  • bindings/scripts/test/JS/JSTestNamedSetterWithLegacyUnforgeablePropertiesAndLegacyOverrideBuiltIns.cpp:

(WebCore::JSTestNamedSetterWithLegacyUnforgeablePropertiesAndLegacyOverrideBuiltIns::put):

  • bindings/scripts/test/JS/JSTestNamedSetterWithLegacyUnforgeablePropertiesAndLegacyOverrideBuiltIns.h:
  • bindings/scripts/test/JS/JSTestPluginInterface.cpp:

(WebCore::JSTestPluginInterface::put):

  • bindings/scripts/test/JS/JSTestPluginInterface.h:
  • bridge/objc/objc_runtime.h:
  • bridge/runtime_array.h:
  • bridge/runtime_object.h:

Source/WebKit:

Unreviewed, revert.

  • WebProcess/Plugins/Netscape/JSNPObject.h:

LayoutTests:

Unreviewed, revert

  • http/tests/security/cross-frame-access-object-getPrototypeOf-in-put-expected.txt:
  • http/tests/security/cross-frame-access-object-getPrototypeOf-in-put.html:
  • js/dom/reflect-set-onto-dom-expected.txt:
  • js/dom/script-tests/reflect-set-onto-dom.js:
10:55 AM Changeset in webkit [277664] by Alan Coon
  • 5 edits in branches/safari-612.1.12-branch

Cherry-pick r277044. rdar://problem/78160469

Sampled Page Top Color: don't snapshot if the hit test location is an image or has an animation
https://bugs.webkit.org/show_bug.cgi?id=225338

Reviewed by Tim Horton.

Source/WebCore:

Tests: SampledPageTopColor.HitTestHTMLImage

SampledPageTopColor.HitTestCSSBackgroundImage
SampledPageTopColor.HitTestCSSAnimation

  • dom/Document.h:
  • dom/Document.cpp: (WebCore::isValidPageSampleLocation): Added. (WebCore::samplePageColor): Added. (WebCore::Document::determineSampledPageTopColor): (WebCore::Document::isHitTestLocationThirdPartyFrame): Deleted. Refactor isHitTestLocationThirdPartyFrame (and the pixelColor lambda) into static functions that are right above Document::determineSampledPageTopColor for clarity and to allow for more flexibility. In order to check if the hit test node is an image (including having a CSS background-image) or has a CSS animation (or CSS transition), it's necessary to continue to hit test beyond one node as the image and/or node with the CSS animation may be an ancestor (or unrelated position: absolute node) to the HitTestResult::innerNode. `

<div style="background-image: url(...)">

<button>Lorum ipsum ... </button>

</div>

`

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/SampledPageTopColor.mm: (TEST.SampledPageTopColor.HitTestHTMLImage): (TEST.SampledPageTopColor.HitTestCSSBackgroundImage): (TEST.SampledPageTopColor.HitTestCSSAnimation):

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

10:55 AM Changeset in webkit [277663] by Alan Coon
  • 10 edits in branches/safari-612.1.12-branch

Cherry-pick r277030. rdar://problem/78160475

Sampled Page Top Color: take additional snapshots further down the page to see if the sampled top color is more than just a tiny strip
https://bugs.webkit.org/show_bug.cgi?id=225323

Reviewed by Beth Dakin.

Source/WebCore:

Add a SampledPageTopColorMinHeight setting that controls how far down the sampled page top
color needs to extend in order for us to not bail. If the value > 0, we take an additional
snapshot at (0, SampledPageTopColorMinHeight) and (width, SampledPageTopColorMinHeight),
comparing each to the snapshot directly above (e.g. (0, SampledPageTopColorMinHeight) is
compared to (0, 0)) using the SampledPageTopColorMaxDifference. Depending on the value, if
the color across the top of the page is only a small strip, these extra snapshot comparisons
will prevent a resulting color from being derived.

Tests: SampledPageTopColor.VerticalGradientBelowMaxDifference

SampledPageTopColor.VerticalGradientAboveMaxDifference

  • dom/Document.cpp: (WebCore::Document::determineSampledPageTopColor):

Source/WebKit:

Add a SampledPageTopColorMinHeight setting that controls how far down the sampled page top
color needs to extend in order for us to not bail. If the value > 0, we take an additional
snapshot at (0, SampledPageTopColorMinHeight) and (width, SampledPageTopColorMinHeight),
comparing each to the snapshot directly above (e.g. (0, SampledPageTopColorMinHeight) is
compared to (0, 0)) using the SampledPageTopColorMaxDifference. Depending on the value, if
the color across the top of the page is only a small strip, these extra snapshot comparisons
will prevent a resulting color from being derived.

  • UIProcess/API/Cocoa/WKWebViewConfigurationPrivate.h:
  • UIProcess/API/Cocoa/WKWebViewConfiguration.mm: (-[WKWebViewConfiguration init]): (-[WKWebViewConfiguration copyWithZone:]): (-[WKWebViewConfiguration _setSampledPageTopColorMinHeight:]): Added. (-[WKWebViewConfiguration _sampledPageTopColorMinHeight]): Added.
  • UIProcess/API/Cocoa/WKWebView.mm: (-[WKWebView _setupPageConfiguration:]): Provide SPI to configure the SampledPageTopColorMinHeight preference when creating the WKWebView.

Source/WTF:

Add a SampledPageTopColorMinHeight setting that controls how far down the sampled page top
color needs to extend in order for us to not bail. If the value > 0, we take an additional
snapshot at (0, SampledPageTopColorMinHeight) and (width, SampledPageTopColorMinHeight),
comparing each to the snapshot directly above (e.g. (0, SampledPageTopColorMinHeight) is
compared to (0, 0)) using the SampledPageTopColorMaxDifference. Depending on the value, if
the color across the top of the page is only a small strip, these extra snapshot comparisons
will prevent a resulting color from being derived.

  • Scripts/Preferences/WebPreferences.yaml:

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/SampledPageTopColor.mm: (createWebViewWithSampledPageTopColorMaxDifference): (createHTMLGradientWithColorStops): (TEST.SampledPageTopColor.ZeroMaxDifference): (TEST.SampledPageTopColor.NegativeMaxDifference): (TEST.SampledPageTopColor.SolidColor): (TEST.SampledPageTopColor.DifferentColorsWithoutOutlierBelowMaxDifference): (TEST.SampledPageTopColor.DifferentColorsWithLeftOutlierAboveMaxDifference): (TEST.SampledPageTopColor.DifferentColorsWithMiddleOutlierAboveMaxDifference): (TEST.SampledPageTopColor.DifferentColorsWithRightOutlierAboveMaxDifference): (TEST.SampledPageTopColor.DifferentColorsIndividuallyAboveMaxDifference): (TEST.SampledPageTopColor.DifferentColorsCumulativelyAboveMaxDifference): (TEST.SampledPageTopColor.VerticalGradientBelowMaxDifference): Added. (TEST.SampledPageTopColor.VerticalGradientAboveMaxDifference): Added. (TEST.SampledPageTopColor.DISABLED_DisplayP3): (TEST.SampledPageTopColor.ExperimentalUseSampledPageTopColorForScrollAreaBackgroundColor):

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

10:55 AM Changeset in webkit [277662] by Alan Coon
  • 2 edits in branches/safari-612.1.12-branch/Source/WebCore

Cherry-pick r276796. rdar://problem/78162377

Unreviewed, fix crashloop after r276744
<rdar://problem/77333886>

  • dom/Document.cpp: (WebCore::Document::determineSampledPageTopColor): Don't attempt to get the value from the Optional<Lab<float>> unless we know for sure that it's valid. This amounts to always making sure we either continue (or return if that snapshot is not an outlier) instead of only doing it if the snapshot is an outlier.

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

10:42 AM Changeset in webkit [277661] by achristensen@apple.com
  • 2 edits in trunk/Source/ThirdParty/ANGLE

Stop compiling ANGLE metal files twice
https://bugs.webkit.org/show_bug.cgi?id=225919
<rdar://78013511>

Reviewed by Dean Jackson.

ANGLE currently generates an unused default.metallib that conflicts with other default.metallibs being built.
Since it is unused, remove it.
What we currently do is put all the source bytes into gDefaultMetallibSrc and compile it at runtime.
This could be optimized to do it at compile time and use newLibraryWithData instead of newLibraryWithSource,
but that should be done separately.

  • ANGLE.xcodeproj/project.pbxproj:
10:33 AM Changeset in webkit [277660] by yoshiaki.jitsukawa@sony.com
  • 13 edits in trunk

[PlayStation] Fix PlayStation port
https://bugs.webkit.org/show_bug.cgi?id=225913

Reviewed by Don Olmstead.

Fix PlayStation port

.:

  • Source/cmake/OptionsPlayStation.cmake: Rename

PLAYSTATION_COPY_SHARED_LIBRARIES to PLAYSTATION_COPY_REQUIREMENTS and
let it copy more general files.
Touch ebootparam.ini by the playstation_tools_copy custom_target.

Source/JavaScriptCore:

  • jsc.cpp: Include LinkBuffer.h.

Source/WebCore:

  • PlatformPlayStation.cmake: Rename

PLAYSTATION_COPY_SHARED_LIBRARIES to PLAYSTATION_COPY_REQUIREMENTS.

  • accessibility/AccessibilityMenuList.cpp:

(WebCore::AccessibilityMenuList::didUpdateActiveOption):

  • platform/graphics/PixelBufferFormat.h: Include wtf/Optional.h.

Source/WTF:

  • wtf/PlatformPlayStation.cmake: Rename

PLAYSTATION_COPY_SHARED_LIBRARIES to PLAYSTATION_COPY_REQUIREMENTS.

Tools:

  • MiniBrowser/playstation/CMakeLists.txt: Rename

PLAYSTATION_COPY_SHARED_LIBRARIES to PLAYSTATION_COPY_REQUIREMENTS.

  • MiniBrowser/playstation/WebViewWindow.cpp:

(WebViewWindow::updateTitle): Add nullptr check.
(WebViewWindow::updateURL): Add nullptr check.

10:32 AM Changeset in webkit [277659] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebCore

Clean up code distinguishing between webgl/webgl2 contexts
https://bugs.webkit.org/show_bug.cgi?id=225887

Patch by Kenneth Russell <kbr@chromium.org> on 2021-05-18
Reviewed by Darin Adler.

Address code review feedback on earlier bug.

Covered by existing WebGL conformance tests.

  • html/HTMLCanvasElement.cpp:

(WebCore::HTMLCanvasElement::getContext):
(WebCore::HTMLCanvasElement::getContextWebGL):

10:04 AM Changeset in webkit [277658] by commit-queue@webkit.org
  • 3 edits in trunk/Source/WebKit

Add nil checks for LAContexts before inserting them in the dictionaries.
https://bugs.webkit.org/show_bug.cgi?id=225897

Patch by Garrett Davidson <garrett_davidson@apple.com> on 2021-05-18
Reviewed by Tim Horton.

In 225218 we stopped dropping requests that didn't have LAContexts. However, that let us
proceed only until we tried to put the (nil) LAContext in an NSDictionary to make a Sec*
call, which throws an exception. This patch adds proper nil checking before inserting the
contexts into the dictionaries.

Manually tested registration and assertion on macOS with and without LAContexts.

  • UIProcess/WebAuthentication/Cocoa/LocalAuthenticator.mm:

(WebKit::LocalAuthenticator::continueGetAssertionAfterUserVerification):

  • UIProcess/WebAuthentication/Cocoa/LocalConnection.mm:

(WebKit::LocalConnection::createCredentialPrivateKey const):

10:03 AM Changeset in webkit [277657] by Russell Epstein
  • 1 copy in tags/Safari-611.3.4

Tag Safari-611.3.4.

9:52 AM Changeset in webkit [277656] by Diego Pino Garcia
  • 3 edits in trunk/LayoutTests

[GLIB][GTK] Unreviewed test gardening. File several printing tests that were crashing under own bug.

Also updated baseline of tests that was failing.

  • platform/glib/fast/selectors/unqualified-hover-strict-expected.txt: Updated.
  • platform/gtk/TestExpectations:
9:07 AM Changeset in webkit [277655] by Chris Dumez
  • 2 edits in trunk/Source/WebKit

ReadOnlySharedRingBufferStorage::updateFrameBounds() should validate boundsBufferSize
https://bugs.webkit.org/show_bug.cgi?id=225918

Reviewed by Youenn Fablet.

ReadOnlySharedRingBufferStorage::updateFrameBounds() should validate boundsBufferSize since the
process writing the buffer size on the other end may not be trusted.

  • Shared/Cocoa/SharedRingBufferStorage.cpp:

(WebKit::ReadOnlySharedRingBufferStorage::updateFrameBounds):

8:55 AM Changeset in webkit [277654] by Diego Pino Garcia
  • 2 edits in trunk/LayoutTests

[GLIB] Unreviewed test gardening. Some mathml tests are failing in EWS GTK-WK2 but passing in post-commit bot.

  • platform/glib/TestExpectations:
8:35 AM Changeset in webkit [277653] by Chris Dumez
  • 6 edits in trunk/Source

Make sure SQLiteStatement objects get destroyed before the database is closed
https://bugs.webkit.org/show_bug.cgi?id=225881

Reviewed by Darin Adler.

Make sure SQLiteStatement objects get destroyed before the database is closed. There are 2 issues
with destroying a SQLiteStatement after a database is closed:

  1. The underlying call to close the sqlite database will fail if the database still has statements and we will leak the database.
  2. SQLiteStatement has a reference to the database so it cannot outlive the SQLiteDatabase.
  • Modules/webdatabase/DatabaseTracker.cpp:

(WebCore::DatabaseTracker::deleteOrigin):

  • platform/sql/SQLiteDatabase.cpp:

(WebCore::SQLiteDatabase::close):
(WebCore::SQLiteDatabase::incrementStatementCount):
(WebCore::SQLiteDatabase::decrementStatementCount):

  • platform/sql/SQLiteDatabase.h:
  • platform/sql/SQLiteStatement.cpp:

(WebCore::SQLiteStatement::SQLiteStatement):
(WebCore::SQLiteStatement::~SQLiteStatement):

7:34 AM Changeset in webkit [277652] by Diego Pino Garcia
  • 2 edits in trunk/LayoutTests

[GLIB] Unreviewed test gardening. fast/canvas/canvas-conic-gradient-angle.html is an image failure.

  • platform/glib/TestExpectations:
6:46 AM Changeset in webkit [277651] by Philippe Normand
  • 4 edits in trunk

[MediaStream][GStreamer] Flaky fast/mediastream/MediaStream-video-element-video-tracks-disabled.html
https://bugs.webkit.org/show_bug.cgi?id=225651

Reviewed by Alicia Boya Garcia.

Source/WebCore:

Push the black frame as soon as the corresponding track has been disabled. The black frame
is also now created once only and reused, instead of re-creating it 30 times per second (or
whatever the frame rate is). The cached frame is updated when the track dimensions change as
well.

  • platform/mediastream/gstreamer/GStreamerMediaStreamSource.cpp:

LayoutTests:

  • fast/mediastream/MediaStream-video-element-video-tracks-disabled.html: Delay the

notifyDone call to give the video element some time to render the black frame corresponding
to the disabled track. This might still flake on the bots, if that is the case we might need
to reassess how the test behaves or decide to mark it as expected flaky on glib ports.

6:23 AM Changeset in webkit [277650] by Alan Bujtas
  • 3 edits
    2 adds in trunk

Difficult to scroll calcalist.co.il webpage, scrolling gets 'stuck'
https://bugs.webkit.org/show_bug.cgi?id=225905
<rdar://77692680>

Reviewed by Simon Fraser.

Source/WebCore:

The (implicit) integral flooring on the line height may produce short containing block for the inline content.

Test: fast/inline/vertical-top-on-subpixel-makes-inline-box-overflow.html

  • rendering/InlineFlowBox.cpp:

(WebCore::InlineFlowBox::adjustMaxAscentAndDescent):

LayoutTests:

  • fast/inline/vertical-top-on-subpixel-makes-inline-box-overflow-expected.txt: Added.
  • fast/inline/vertical-top-on-subpixel-makes-inline-box-overflow.html: Added.
4:27 AM Changeset in webkit [277649] by Cameron McCormack
  • 2 edits
    6 adds in trunk/LayoutTests

Test expectation updates from bug 225728
https://bugs.webkit.org/show_bug.cgi?id=225902

Unreviewed test gardening.

  • platform/mac-bigsur/imported/w3c/web-platform-tests/mathml/relations/css-styling/ignored-properties-001-expected.txt: Added.
  • platform/mac-bigsur/imported/w3c/web-platform-tests/mathml/relations/css-styling/padding-border-margin/padding-002-expected.txt: Added.
  • platform/mac-wk2/TestExpectations:
4:10 AM Changeset in webkit [277648] by Adrian Perez de Castro
  • 4 edits in trunk/Source/JavaScriptCore

[JSCOnly] Non unified build fixes
https://bugs.webkit.org/show_bug.cgi?id=225872

Unreviewed non-unified build fixes.

  • jit/JITPropertyAccess.cpp: Add missing ThunkGenerators.h header.
  • jit/SlowPathCall.cpp: Add missing JITInlines.h and ThunkGenerators.h headers.
  • wasm/js/WebAssemblyFunctionBase.h: Add missing WasmFormat.h header.
3:01 AM Changeset in webkit [277647] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebCore

Use RefPtr for local ref counted objects of FrameSelection::setSelectionWithoutUpdatingAppearance
https://bugs.webkit.org/show_bug.cgi?id=225908

Patch by Frederic Wang <fwang@igalia.com> on 2021-05-18
Reviewed by Ryosuke Niwa.

A previous patch modified setSelectionWithoutUpdatingAppearance to take into account one
possible DOM mutation after focus change. This is a follow-up patch applying recommendation
from https://lists.webkit.org/pipermail/webkit-dev/2020-September/031386.html event if it is
not obvious whether any of the current uses is dangerous.

No new tests.

  • editing/FrameSelection.cpp:

(WebCore::FrameSelection::selectFrameElementInParentIfFullySelected): Use RefPtr for the
following variables:

  • parent: used in the non-trivial setFocusedFrame function (where it is however immediately

stored in a RefPtr).

  • ownerElement: used in the non-trivial function computeNodeIndex (which however only

performs simple tree navigation).

  • ownerElementParent: used as a this of the non-trivial function hasEditableStyle (which

however does not update style when computing editability).

1:44 AM Changeset in webkit [277646] by rniwa@webkit.org
  • 5 edits in trunk

ASSERTION FAILED: isReactionAllowed() in enqueueDisconnectedCallbackIfNeeded during document teardown
https://bugs.webkit.org/show_bug.cgi?id=224033

Reviewed by Maciej Stachowiak.

Source/WebCore:

Moved the bug assertion to after an early exit for when we're in the middle of destorying the document.

enqueueDisconnectedCallbackIfNeeded will be called on custom elements in these circumstances
but there is no correctness issue here since we exit early.

  • dom/CustomElementReactionQueue.cpp:

(WebCore::CustomElementReactionQueue::enqueueDisconnectedCallbackIfNeeded):

LayoutTests:

Removed flaky test expectation.

  • platform/ios-simulator/TestExpectations:
  • platform/mac/TestExpectations:
1:10 AM Changeset in webkit [277645] by youenn@apple.com
  • 3 edits in trunk/Source/WebKit

Resurrect WKWebView media controls API removed in https://bugs.webkit.org/show_bug.cgi?id=221929
https://bugs.webkit.org/show_bug.cgi?id=225696
<rdar://77863194>

Reviewed by Alex Christensen.

Revert closeAllMediaPresentations, pauseAllMediaPlayback, resumeAllMediaPlayback, suspendAllMediaPlayback and requestMediaPlaybackState.
Mark them as deprecated in favor of the latest API versions and implement them based on the latest API versions.
No change of behavior.

  • UIProcess/API/Cocoa/WKWebView.h:
  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView closeAllMediaPresentations:]):
(-[WKWebView pauseAllMediaPlayback:]):
(-[WKWebView resumeAllMediaPlayback:]):
(-[WKWebView suspendAllMediaPlayback:]):
(-[WKWebView requestMediaPlaybackState:]):

12:01 AM Changeset in webkit [277644] by commit-queue@webkit.org
  • 3 edits
    2 adds in trunk

SHOULD NEVER BE REACHED in FrameSelection::setSelectionWithoutUpdatingAppearance
https://bugs.webkit.org/show_bug.cgi?id=225219

Patch by Frederic Wang <fwang@igalia.com> on 2021-05-18
Reviewed by Ryosuke Niwa.

Source/WebCore:

When FrameSelection::selectFrameElementInParentIfFullySelected sets focus on the parent
frame, that can trigger DOM events, possibly making orphan the newSelection prepared before.
This patch fixes that issue by clearing the selection on that parent frame in such a
situation.

Test: editing/selection/selection-in-iframe-removed-assert.html

  • editing/FrameSelection.cpp:

(WebCore::FrameSelection::selectFrameElementInParentIfFullySelected): Check if the
newSelection became orphan and if so, clear it.

LayoutTests:

Add a regression test.

  • editing/selection/selection-in-iframe-removed-assert.html: Copied from

editing/selection/selection-in-iframe-removed-crash.html, with an additional
requestAnimationFrame.

  • editing/selection/selection-in-iframe-removed-assert-expected.txt: Added.

May 17, 2021:

11:34 PM Changeset in webkit [277643] by Chris Dumez
  • 3 edits in trunk/Source/WebCore

Drop unused SQLiteStatement::returnsAtLeastOneResult()
https://bugs.webkit.org/show_bug.cgi?id=225901

Reviewed by Darin Adler.

  • platform/sql/SQLiteStatement.cpp:

(WebCore::SQLiteStatement::returnsAtLeastOneResult): Deleted.

  • platform/sql/SQLiteStatement.h:
10:36 PM Changeset in webkit [277642] by Chris Dumez
  • 4 edits in trunk/Source/WebCore

Drop SQLiteStatement::return*Results() functions
https://bugs.webkit.org/show_bug.cgi?id=225899

Reviewed by Alex Christensen.

Drop SQLiteStatement::return*Results() functions. All of them are unused
except for returnTextResults(), which is used only once in SQLiteDatabase.

  • platform/sql/SQLiteDatabase.cpp:

(WebCore::SQLiteDatabase::clearAllTables):

  • platform/sql/SQLiteStatement.cpp:

(WebCore::SQLiteStatement::returnTextResults): Deleted.
(WebCore::SQLiteStatement::returnIntResults): Deleted.
(WebCore::SQLiteStatement::returnInt64Results): Deleted.
(WebCore::SQLiteStatement::returnDoubleResults): Deleted.

  • platform/sql/SQLiteStatement.h:
10:15 PM Changeset in webkit [277641] by rniwa@webkit.org
  • 6 edits in trunk/Source/WebKit

Enabling IPC testing API should prevent WebContent process from getting terminated in more cases
https://bugs.webkit.org/show_bug.cgi?id=225906

Reviewed by Wenson Hsieh.

Avoid hitting debug assertions in WebContent process when a dispatched message isn't processed
in a message receivers and don't kill WebContent process in GPU processs when RemoteRenderingBackend
receives a bad IPC message.

Also fixed a typo in encodeSharedMemory where we were exiting early when the protection was ReadWrite
instead of when it was not ReadWrite or ReadOnly.

These fixes are needed to land tests for recent GPU process fixes.

  • GPUProcess/graphics/RemoteRenderingBackend.cpp:
  • Scripts/webkit/messages.py:

(generate_message_handler):

  • WebProcess/WebPage/IPCTestingAPI.cpp:

(WebKit::IPCTestingAPI::encodeSharedMemory):

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::updatePreferences):

  • WebProcess/WebProcess.cpp:

(WebKit::WebProcess::ensureGPUProcessConnection):

9:26 PM Changeset in webkit [277640] by Lauro Moura
  • 3 edits
    1 copy
    5 deletes in trunk/LayoutTests

[GLIB] Garden a few tests and unify some expectations

Unreviewed test gardening.

Removed some deprecated WPE baselines, moving expectations from GTK to
Glib.

  • platform/glib/TestExpectations:
  • platform/glib/security/block-test-expected.txt: Renamed from LayoutTests/platform/gtk/security/block-test-expected.txt.
  • platform/gtk/TestExpectations:
  • platform/wpe/imported/w3c/web-platform-tests/fetch/api/basic/request-headers-case.any-expected.txt: Removed.
  • platform/wpe/imported/w3c/web-platform-tests/fetch/api/basic/request-headers-case.any.worker-expected.txt: Removed.
  • platform/wpe/imported/w3c/web-platform-tests/fetch/content-type/script.window-expected.txt: Removed.
  • platform/wpe/imported/w3c/web-platform-tests/mimesniff/mime-types/charset-parameter.window-expected.txt: Removed.
  • platform/wpe/security/block-test-expected.txt: Removed.
9:13 PM Changeset in webkit [277639] by Kocsen Chung
  • 2 edits in branches/safari-611-branch/Source/WebKit

Apply patch. rdar://problem/78137134

9:10 PM Changeset in webkit [277638] by Kocsen Chung
  • 8 edits in branches/safari-611-branch/Source

Versioning.

WebKit-7611.3.4

8:52 PM Changeset in webkit [277637] by Kocsen Chung
  • 1 copy in tags/Safari-611.2.7.0.4

Tag Safari-611.2.7.0.4.

8:49 PM Changeset in webkit [277636] by Kocsen Chung
  • 2 edits in branches/safari-611.2.7.0-branch/Source/WebKit

Apply patch. rdar://problem/78125245

8:45 PM Changeset in webkit [277635] by Kocsen Chung
  • 8 edits in branches/safari-611.2.7.0-branch/Source

Versioning.

WebKit-7611.2.7.0.4

8:39 PM Changeset in webkit [277634] by sihui_liu@apple.com
  • 4 edits in trunk/Source/WebCore

Remove SQLiteStatement::isColumnNull and its use
https://bugs.webkit.org/show_bug.cgi?id=225892

Reviewed by Chris Dumez.

SQLiteStatement::isColumnNull is only used in SQLiteIDBBackingStore and it is actually not needed, because
SQLiteIDBBackingStore can use getColumnText to evaluate the statement and get the result. So the check is
redundant.

  • Modules/indexeddb/server/SQLiteIDBBackingStore.cpp:

(WebCore::IDBServer::SQLiteIDBBackingStore::extractExistingDatabaseInfo):

  • platform/sql/SQLiteStatement.cpp:

(WebCore::SQLiteStatement::isColumnNull): Deleted.

  • platform/sql/SQLiteStatement.h:
7:35 PM Changeset in webkit [277633] by sbarati@apple.com
  • 4 edits in trunk/Source

Enable JS to emit sign posts and trace points under Options::exposeProfilersOnGlobalObject
https://bugs.webkit.org/show_bug.cgi?id=225895

Reviewed by Yusuke Suzuki.

Source/JavaScriptCore:

  • runtime/JSGlobalObject.cpp:

(JSC::asTracePointInt):
(JSC::JSC_DEFINE_HOST_FUNCTION):
(JSC::asSignpostString):
(JSC::JSGlobalObject::init):

Source/WTF:

  • wtf/SystemTracing.h:
7:34 PM Changeset in webkit [277632] by Diego Pino Garcia
  • 2 edits in trunk/LayoutTests

[GLIB] Unreviewed test gardening. imported/w3c/web-platform-tests/eventsource/eventsource-close.htm is crashing since r277601.

  • platform/gtk/TestExpectations:
7:33 PM Changeset in webkit [277631] by Wenson Hsieh
  • 8 edits in trunk

[GPU Process] Object identifiers with the deleted value should cause MESSAGE_CHECKs
https://bugs.webkit.org/show_bug.cgi?id=225886
rdar://78114708

Reviewed by Chris Dumez.

Source/WebCore:

Implement some stricter validation around object identifiers in when decoding display list items in the GPU
Process. Currently, we only check for the empty value (i.e. raw identifier value of 0) when iterating over these
items, but treat an identifier with the deleted value as valid; instead, we should be treating items with either
empty or deleted identifiers as invalid.

To address this, we introduce a new helper method, ObjectIdentifier::isValid, and turn existing checks for
!!identifier into identifier.isValid().

Test: DisplayListTests.InlineItemValidationFailure

  • platform/graphics/displaylists/DisplayListItems.h:

(WebCore::DisplayList::ClipToImageBuffer::isValid const):
(WebCore::DisplayList::DrawImageBuffer::isValid const):
(WebCore::DisplayList::DrawNativeImage::isValid const):
(WebCore::DisplayList::DrawPattern::isValid const):
(WebCore::DisplayList::PaintFrameForMedia::isValid const):
(WebCore::DisplayList::FlushContext::isValid const):
(WebCore::DisplayList::MetaCommandChangeItemBuffer::isValid const):
(WebCore::DisplayList::MetaCommandChangeDestinationImageBuffer::isValid const):

Source/WebKit:

See WebCore/ChangeLog for more details. Use ObjectIdentifier::isValid() instead of just checking for the empty
value, when determining whether an object identifier should trigger a message check to the web process.

  • GPUProcess/graphics/RemoteRenderingBackend.cpp:

(WebKit::RemoteRenderingBackend::nextDestinationImageBufferAfterApplyingDisplayLists):

Source/WTF:

See WebCore/ChangeLog for more details. Add a helper method on ObjectIdentifier that returns true only if it
is the empty value or deleted value.

  • wtf/ObjectIdentifier.h:

(WTF::ObjectIdentifier::isValid const):

Tools:

Adjust an existing API test to verify that the deleted object identifier value triggers an inline item decoding
failure.

  • TestWebKitAPI/Tests/WebCore/cg/DisplayListTestsCG.cpp:

(TestWebKitAPI::TEST):

7:19 PM Changeset in webkit [277630] by Diego Pino Garcia
  • 2 edits in trunk/LayoutTests

[GLIB] Unreviewed test gardening. imported/w3c/web-platform-tests/resource-timing/resource_connection_reuse_mixed_content.html is failing.

  • platform/glib/TestExpectations:
7:14 PM Changeset in webkit [277629] by Fujii Hironori
  • 3 edits in trunk/Source/WebCore

[Win] Unreviewed debug build fix for r277601.
https://bugs.webkit.org/show_bug.cgi?id=225855
<rdar://problem/78116715>

  • platform/network/curl/CookieJarDB.cpp:

(WebCore::CookieJarDB::executeSQLStatement):

  • platform/win/SearchPopupMenuDB.cpp:

(WebCore::SearchPopupMenuDB::executeSQLStatement):
Removed the undefined variables from debug messages.

6:52 PM Changeset in webkit [277628] by Kate Cheney
  • 5 edits
    1 add in trunk

WebFrameLoaderClient::dispatchWillSendRequest sometimes resets app-bound value
https://bugs.webkit.org/show_bug.cgi?id=225829
<rdar://problem/78034595>

Reviewed by Alex Christensen.

Source/WebKit:

webPage->injectedBundleResourceLoadClient().willSendRequestForFrame
can sometimes return a completely new request. We should make sure the
app-bound value is kept when this happens.

  • WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:

(WebKit::WebFrameLoaderClient::dispatchWillSendRequest):

Tools:

API test coverage.

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/WebKitCocoa/InAppBrowserPrivacy.mm:
  • TestWebKitAPI/Tests/WebKitCocoa/InAppBrowserPrivacyPlugIn.mm: Added.

(-[InAppBrowserPrivacyPlugIn webProcessPlugIn:didCreateBrowserContextController:]):
(-[InAppBrowserPrivacyPlugIn webProcessPlugInBrowserContextController:frame:willSendRequestForResource:request:redirectResponse:]):

6:33 PM Changeset in webkit [277627] by achristensen@apple.com
  • 14 edits
    9 copies in trunk

Unreviewed, reverting r277605.

Broke iOS tests

Reverted changeset:

"Remove _WKUserContentFilter and _WKUserContentExtensionStore"
https://bugs.webkit.org/show_bug.cgi?id=224391
https://commits.webkit.org/r277605

6:15 PM Changeset in webkit [277626] by Diego Pino Garcia
  • 1 edit
    10 adds in trunk/LayoutTests

[GLIB] Unreviewed test gardening. Reintroduce platform specific baselines removed in r277577 that are still needed.

  • platform/glib/imported/w3c/web-platform-tests/mathml/presentation-markup/operators/mo-stretch-properties-dynamic-001-expected.txt: Added.
  • platform/glib/imported/w3c/web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-stretchy-002-expected.txt: Added.
  • platform/glib/imported/w3c/web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-stretchy-003-expected.txt: Added.
  • platform/glib/imported/w3c/web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-symmetric-001-expected.txt: Added.
  • platform/glib/imported/w3c/web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-symmetric-006-expected.txt: Added.
  • platform/glib/imported/w3c/web-platform-tests/mathml/relations/css-styling/lengths-2-expected.txt: Added.
  • platform/gtk/imported/w3c/web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-stretchy-001-expected.txt: Added.
  • platform/wpe/imported/w3c/web-platform-tests/mathml/presentation-markup/operators/operator-dictionary-stretchy-001-expected.txt: Added.
6:06 PM Changeset in webkit [277625] by Robert Jenner
  • 2 edits in trunk/LayoutTests

REGRESSION(r277116): [ macOS Release wk2 ] media/modern-media-controls/pip-support/pip-support-enabled.html (layout-test) is a flaky text failure
https://bugs.webkit.org/show_bug.cgi?id=225521

Unreviewed test gardening.

Updating expectations to Pass Failure while test is reviewed.

  • platform/mac-wk2/TestExpectations:
5:56 PM Changeset in webkit [277624] by Alan Coon
  • 2 edits in branches/safari-612.1.15.0-branch/Source/WebCore

Cherry-pick r277600. rdar://problem/78130123

REGRESSION(r277425): Crash in FrameSelection::selectFrameElementInParentIfFullySelected
https://bugs.webkit.org/show_bug.cgi?id=225795

Patch by Frederic Wang <fwang@igalia.com> on 2021-05-17
Reviewed by Ryosuke Niwa.

r277425 claimed that in FrameSelection::setSelectionWithoutUpdatingAppearance,
!m_document->frame() was equivalent to !selectionEndpointsBelongToMultipleDocuments &&
!selectionIsInAnotherDocument && selectionIsInDetachedDocument, but it misses the case when
newSelection.document() is null. So this patch adds back this particular case to the
original "if" block. This patch also adds an ASSERT on m_document->frame().

No new tests.

  • editing/FrameSelection.cpp: (WebCore::FrameSelection::setSelectionWithoutUpdatingAppearance): Add back the case !m_document->frame() && !newSelection.document() to the first sanity check and ASSERT on m_document->frame() after the second sanity check.

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

5:44 PM Changeset in webkit [277623] by Alan Coon
  • 2 edits in branches/safari-612.1.15.1-branch/Source/WebCore

Cherry-pick r277603. rdar://problem/78130222

Null check m_resource in SubresourceLoader::didReceiveResponse
https://bugs.webkit.org/show_bug.cgi?id=225879

Reviewed by Chris Dumez.

Add ASSERT_NOT_REACHED and RELEASE_LOG_FAULT if m_resource is null.
This will help us notice this invalid state in debug builds and diagnose strange loading failures in simulated crash logs.
On further investigation, the crash fixed in r277594 was likely already fixed by something else, but that made it more robust.

  • loader/SubresourceLoader.cpp: (WebCore::SubresourceLoader::didReceiveResponse):

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

5:44 PM Changeset in webkit [277622] by Alan Coon
  • 2 edits in branches/safari-612.1.15.1-branch/Source/WebCore

Cherry-pick r277600. rdar://problem/78130132

REGRESSION(r277425): Crash in FrameSelection::selectFrameElementInParentIfFullySelected
https://bugs.webkit.org/show_bug.cgi?id=225795

Patch by Frederic Wang <fwang@igalia.com> on 2021-05-17
Reviewed by Ryosuke Niwa.

r277425 claimed that in FrameSelection::setSelectionWithoutUpdatingAppearance,
!m_document->frame() was equivalent to !selectionEndpointsBelongToMultipleDocuments &&
!selectionIsInAnotherDocument && selectionIsInDetachedDocument, but it misses the case when
newSelection.document() is null. So this patch adds back this particular case to the
original "if" block. This patch also adds an ASSERT on m_document->frame().

No new tests.

  • editing/FrameSelection.cpp: (WebCore::FrameSelection::setSelectionWithoutUpdatingAppearance): Add back the case !m_document->frame() && !newSelection.document() to the first sanity check and ASSERT on m_document->frame() after the second sanity check.

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

5:44 PM Changeset in webkit [277621] by Alan Coon
  • 2 edits in branches/safari-612.1.15.1-branch/Source/WebCore

Cherry-pick r277594. rdar://problem/78130222

Null check m_resource in SubresourceLoader::didReceiveResponse
https://bugs.webkit.org/show_bug.cgi?id=225879
<rdar://78084804>

Reviewed by Chris Dumez.

  • loader/SubresourceLoader.cpp: (WebCore::SubresourceLoader::didReceiveResponse):

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

5:41 PM Changeset in webkit [277620] by ggaren@apple.com
  • 4 edits in trunk/Source/JavaScriptCore

StructureRareData::m_replacementWatchpointSets should not be a pointer to a pointer
https://bugs.webkit.org/show_bug.cgi?id=225840

Reviewed by Mark Lam.

HashMap is already just one pointer. Making it a pointer to a pointer
causes heap fragmentation. Worth about 1MB on GMail.

  • runtime/Structure.cpp:

(JSC::Structure::ensurePropertyReplacementWatchpointSet):

  • runtime/StructureInlines.h:

(JSC::Structure::didReplaceProperty):
(JSC::Structure::propertyReplacementWatchpointSet):

  • runtime/StructureRareData.h:
5:26 PM Changeset in webkit [277619] by Wenson Hsieh
  • 2 edits in trunk/Source/WebKit

Unreviewed, fix the internal macOS build

Add a missing WebCore:: namespace before TranslationContextMenuInfo.
This error was likely masked by a using namespace WebCore; present in an earlier unified source.

  • UIProcess/Cocoa/WebViewImpl.mm:

(WebKit::WebViewImpl::handleContextMenuTranslation):

5:11 PM Changeset in webkit [277618] by Chris Dumez
  • 6 edits in trunk/Source/WebCore

Drop unnecessary SQLiteDatabase::updateLastChangesCount()
https://bugs.webkit.org/show_bug.cgi?id=225885

Reviewed by Alex Christensen.

Drop unnecessary SQLiteDatabase::updateLastChangesCount() and have SQLiteDatabase::lastChanges()
rely on sqlite3_changes() instead of sqlite3_total_changes(). We started using updateLastChangesCount()
+ sqlite3_total_changes() in https://commits.webkit.org/r130891 to address an issue in WebSQL
SQLResultSet.rowsAffected would not be 0 for SELECT statement. This patch reverts r130891 and instead
sets SQLResultSet.rowsAffected when the statement is not a read-only statement.

This is covered by storage/websql/execute-sql-rowsAffected.html which is still passing after
this change.

  • Modules/webdatabase/SQLStatement.cpp:

(WebCore::SQLStatement::execute):

  • platform/sql/SQLiteDatabase.cpp:

(WebCore::SQLiteDatabase::lastChanges):
(WebCore::SQLiteDatabase::updateLastChangesCount): Deleted.

  • platform/sql/SQLiteDatabase.h:
  • platform/sql/SQLiteStatement.cpp:

(WebCore::SQLiteStatement::step):
(WebCore::SQLiteStatement::isReadOnly):

  • platform/sql/SQLiteStatement.h:
5:09 PM Changeset in webkit [277617] by achristensen@apple.com
  • 2 edits in trunk/Source/WebCore

Fix Windows debug build.
https://bugs.webkit.org/show_bug.cgi?id=225855

  • platform/network/curl/CookieJarDB.cpp:

(WebCore::CookieJarDB::executeSQLStatement):

5:09 PM Changeset in webkit [277616] by Devin Rousso
  • 10 edits in trunk

[Modern Media Controls] promote submenus items if there is only one
https://bugs.webkit.org/show_bug.cgi?id=225883

Reviewed by Eric Carlson.

Source/WebCore:

As an example, if a <video> only has subtitles and not any other languages, the "Subtitles"
submenu should really be top-level (i.e. have "Subtitles" be the title of the entire
contextmenu instead of being a submenu of a title-less contextmenu) in the contextmenu shown
when tapping the tracks button.

Tests: media/modern-media-controls/tracks-support/auto-text-track.html

media/modern-media-controls/tracks-support/click-track-in-contextmenu.html
media/modern-media-controls/tracks-support/hidden-tracks.html
media/modern-media-controls/tracks-support/off-text-track.html
media/modern-media-controls/tracks-support/text-track-selected-via-media-api.html

  • Modules/mediacontrols/MediaControlsHost.cpp:

(WebCore::MediaControlsHost::showMediaControlsContextMenu):

Source/WebKit:

As an example, if a <video> only has subtitles and not any other languages, the "Subtitles"
submenu should really be top-level (i.e. have "Subtitles" be the title of the entire
contextmenu instead of being a submenu of a title-less contextmenu) in the contextmenu shown
when tapping the tracks button.

  • UIProcess/ios/WKActionSheetAssistant.mm:

(-[WKActionSheetAssistant showMediaControlsContextMenu:items:completionHandler:]):

LayoutTests:

  • media/modern-media-controls/tracks-support/auto-text-track.html:
  • media/modern-media-controls/tracks-support/click-track-in-contextmenu.html:
  • media/modern-media-controls/tracks-support/hidden-tracks.html:
  • media/modern-media-controls/tracks-support/off-text-track.html:
  • media/modern-media-controls/tracks-support/text-track-selected-via-media-api.html:
4:45 PM Changeset in webkit [277615] by Jonathan Bedard
  • 6 edits in trunk/Tools

[webkitscmpy] Support testing on machines without svn installed
https://bugs.webkit.org/show_bug.cgi?id=225891
<rdar://problem/78126369>

Reviewed by Dewei Zhu.

  • Scripts/libraries/webkitscmpy/setup.py: Bump version.
  • Scripts/libraries/webkitscmpy/webkitscmpy/init.py:
  • Scripts/libraries/webkitscmpy/webkitscmpy/local/scm.py:

(Scm.executable): Ensure whichcraft import support mock.

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

(Git.enter): Mock git executable location.

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

(Svn.enter): Mock svn executable location.

4:24 PM Changeset in webkit [277614] by achristensen@apple.com
  • 20 edits
    3 deletes in trunk

Remove API::Object::Type::BundlePageGroup
https://bugs.webkit.org/show_bug.cgi?id=225611

Reviewed by Brady Eidson.

Source/WebKit:

Its last use was removed in rdar://77775952

  • Shared/API/APIObject.h:
  • Shared/API/APIPageGroupHandle.cpp: Removed.
  • Shared/API/APIPageGroupHandle.h: Removed.
  • Shared/Cocoa/APIObject.mm:

(API::Object::newObject):

  • Shared/Cocoa/SharedRingBufferStorage.cpp:

(WebKit::SharedRingBufferStorage::setStorage):
(WebKit::SharedRingBufferStorage::allocate):

  • Shared/UserData.cpp:

(WebKit::UserData::encode):
(WebKit::UserData::decode):

  • Shared/mac/MediaFormatReader/MediaSampleCursor.h:
  • Sources.txt:
  • UIProcess/WebProcessProxy.cpp:

(WebKit::WebProcessProxy::transformHandlesToObjects):
(WebKit::WebProcessProxy::transformObjectsToHandles):

  • WebKit.xcodeproj/project.pbxproj:
  • WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInPageGroup.h:
  • WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInPageGroup.mm:

(-[WKWebProcessPlugInPageGroup identifier]): Deleted.
(-[WKWebProcessPlugInPageGroup dealloc]): Deleted.
(-[WKWebProcessPlugInPageGroup _apiObject]): Deleted.

  • WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInPageGroupInternal.h: Removed.
  • WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInBrowserContextController.h:
  • WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInBrowserContextController.mm:

(-[WKWebProcessPlugInBrowserContextController pageGroup]): Deleted.

  • WebProcess/WebPage/WebPageGroupProxy.h:
  • WebProcess/WebProcess.cpp:

(WebKit::WebProcess::transformHandlesToObjects):
(WebKit::WebProcess::transformObjectsToHandles):

Tools:

Some tests were trying to encode a page group, but it was unused so I just removed them.

  • TestWebKitAPI/Tests/WebKit/DOMWindowExtensionBasic.cpp:

(TestWebKitAPI::TEST):

  • TestWebKitAPI/Tests/WebKit/DocumentStartUserScriptAlertCrash.cpp:

(TestWebKitAPI::TEST):

  • TestWebKitAPI/Tests/WebKit/InjectedBundleDisableOverrideBuiltinsBehavior.cpp:

(TestWebKitAPI::TEST):

  • TestWebKitAPI/Tests/WebKit/InjectedBundleMakeAllShadowRootsOpen.cpp:

(TestWebKitAPI::TEST):

4:20 PM Changeset in webkit [277613] by Alexey Shvayka
  • 5 edits
    1 add in trunk

REGRESSION (r271119): Object methods defined with shorthand notation cannot access "caller" in non-strict mode
https://bugs.webkit.org/show_bug.cgi?id=225277

Reviewed by Darin Adler.

JSTests:

  • stress/caller-and-arguments-properties-for-functions-that-dont-have-them.js: Now covers #157461 and #157863.
  • stress/function-caller-cross-realm-via-call-apply.js: Added, coverage for #34553.
  • stress/function-hidden-as-caller.js: Also adds test case for #102276.

Source/JavaScriptCore:

This patch loosens function.caller to allow non-strict getters, setters, arrow functions,
and ES6 methods to be returned as callers, fixing web compatibility.

The intent of r230662 is preserved: generator / async functions are never exposed. There is
no good way to acquire wrapper function from the internal body one, nor from its arguments.
Also, this behavior is on standards track [1] (seems to be considered desirable).

[1]: https://github.com/claudepache/es-legacy-function-reflection/blob/master/spec.md#get-functionprototypecaller (step 14)

  • runtime/JSFunction.cpp:

(JSC::JSC_DEFINE_CUSTOM_GETTER):

4:12 PM Changeset in webkit [277612] by aakash_jain@apple.com
  • 7 edits
    1 add in trunk/Tools

Style checker should check for non-inclusive terminology
https://bugs.webkit.org/show_bug.cgi?id=213088

Reviewed by Jonathan Bedard.

Style checker should check for non-inclusive terminology so that we can avoid unintentional addition
of non-inclusive terminology in our codebase.

  • Scripts/webkitpy/style/checkers/inclusive_language.py: Added inclusive language checker.

(InclusiveLanguageChecker):
(InclusiveLanguageChecker.check):

  • Scripts/webkitpy/style/checkers/changelog.py: Check for inclusive language.
  • Scripts/webkitpy/style/checkers/cpp.py: Ditto.
  • Scripts/webkitpy/style/checkers/js.py: Ditto.
  • Scripts/webkitpy/style/checkers/python.py: Ditto.
  • Scripts/webkitpy/style/checkers/text.py: Ditto.
  • Scripts/report-non-inclusive-language: Ignore the newly added inclusive_language.py file.
4:03 PM Changeset in webkit [277611] by Alan Coon
  • 8 edits in branches/safari-612.1.12-branch/Source

Versioning.

WebKit-7612.1.12.10

4:00 PM Changeset in webkit [277610] by Alan Coon
  • 1 copy in tags/Safari-612.1.12.9

Tag Safari-612.1.12.9.

3:55 PM Changeset in webkit [277609] by berto@igalia.com
  • 2 edits in trunk/Source/WebCore

[GTK] [2.33.1] Fails to build when HAVE_OPENGL_ES_3 is on
https://bugs.webkit.org/show_bug.cgi?id=225867

Reviewed by Adrian Perez de Castro.

Include GLES3/gl3.h if HAVE_OPENGL_ES_3 is set.

  • platform/graphics/opengl/ExtensionsGLOpenGLES.h:
3:11 PM Changeset in webkit [277608] by achristensen@apple.com
  • 2 edits in trunk/Tools

Fix clean build after r277606
https://bugs.webkit.org/show_bug.cgi?id=223658

  • TestWebKitAPI/Tests/WebKitCocoa/ContentSecurityPolicy.mm:

(TEST):
Use API instead of removed API.
Why EWS didn't find this, we may never know.

2:26 PM Changeset in webkit [277607] by commit-queue@webkit.org
  • 8 edits in trunk/Source

Use kAudioObjectPropertyElementMain where available
https://bugs.webkit.org/show_bug.cgi?id=224635

Patch by Alex Christensen <achristensen@webkit.org> on 2021-05-17
Reviewed by Eric Carlson.

Source/WebCore:

  • platform/audio/mac/AudioHardwareListenerMac.cpp:

(WebCore::isAudioHardwareProcessRunning):
(WebCore::currentDeviceSupportedBufferSizes):
(WebCore::processIsRunningPropertyDescriptor):
(WebCore::outputDevicePropertyDescriptor):

  • platform/audio/mac/AudioSessionMac.mm:

(WebCore::defaultDevice):
(WebCore::defaultDeviceTransportIsBluetooth):
(WebCore::AudioSessionPrivate::addSampleRateObserverIfNeeded):
(WebCore::AudioSessionPrivate::addBufferSizeObserverIfNeeded):
(WebCore::AudioSession::sampleRate const):
(WebCore::AudioSession::bufferSize const):
(WebCore::AudioSession::maximumNumberOfOutputChannels const):
(WebCore::AudioSession::setPreferredBufferSize):
(WebCore::AudioSession::isMuted const):
(WebCore::AudioSession::addMutedStateObserver):
(WebCore::AudioSession::removeMutedStateObserver):

  • platform/mediastream/mac/CoreAudioCaptureDevice.cpp:

(WebCore::getDeviceInfo):
(WebCore::CoreAudioCaptureDevice::CoreAudioCaptureDevice):
(WebCore::CoreAudioCaptureDevice::relatedAudioDeviceIDs):

  • platform/mediastream/mac/CoreAudioCaptureDeviceManager.cpp:

(WebCore::deviceHasInputStreams):
(WebCore::deviceHasOutputStreams):
(WebCore::isValidCaptureDevice):
(WebCore::CoreAudioCaptureDeviceManager::coreAudioCaptureDevices):
(WebCore::computeAudioDeviceList):

  • platform/mediastream/mac/CoreAudioCaptureSource.cpp:

(WebCore::CoreAudioSharedUnit::defaultOutputDevice):

Source/WTF:

  • wtf/PlatformHave.h:
2:21 PM Changeset in webkit [277606] by commit-queue@webkit.org
  • 5 edits in trunk

[Cocoa] Remove prototype loadSimulatedRequest methods
https://bugs.webkit.org/show_bug.cgi?id=223658

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

Source/WebKit:

Now that rdar://75892301 is fixed we can remove the original API.

  • UIProcess/API/Cocoa/WKWebView.h:
  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView loadSimulatedRequest:withResponse:responseData:]): Deleted.
(-[WKWebView loadSimulatedRequest:withResponseHTMLString:]): Deleted.

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/WKWebViewLoadAPIs.mm:

(TEST):

2:13 PM Changeset in webkit [277605] by commit-queue@webkit.org
  • 14 edits
    9 deletes in trunk

Remove _WKUserContentFilter and _WKUserContentExtensionStore
https://bugs.webkit.org/show_bug.cgi?id=224391

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

Source/WebKit:

I removed their use in rdar://75889414
They were replaced by WKContentRuleList and WKContentRuleListStore.

  • UIProcess/API/Cocoa/WKUserContentController.mm:

(-[WKUserContentController _addUserContentFilter:]):
(-[WKUserContentController _removeAllUserContentFilters]):

  • UIProcess/API/Cocoa/WKUserContentControllerPrivate.h:
  • UIProcess/API/Cocoa/_WKUserContentExtensionStore.h:
  • UIProcess/API/Cocoa/_WKUserContentExtensionStore.mm:

(+[_WKUserContentExtensionStore defaultStore]):
(+[_WKUserContentExtensionStore storeWithURL:]):
(-[_WKUserContentExtensionStore compileContentExtensionForIdentifier:encodedContentExtension:completionHandler:]):
(-[_WKUserContentExtensionStore lookupContentExtensionForIdentifier:completionHandler:]):
(-[_WKUserContentExtensionStore removeContentExtensionForIdentifier:completionHandler:]):
(toUserContentRuleListStoreError): Deleted.
(-[_WKUserContentExtensionStore _apiObject]): Deleted.
(-[_WKUserContentExtensionStore _removeAllContentExtensions]): Deleted.
(-[_WKUserContentExtensionStore _invalidateContentExtensionVersionForIdentifier:]): Deleted.
(-[_WKUserContentExtensionStore _initWithWKContentRuleListStore:]): Deleted.
(-[_WKUserContentExtensionStore _contentRuleListStore]): Deleted.

  • UIProcess/API/Cocoa/_WKUserContentExtensionStoreInternal.h: Removed.
  • UIProcess/API/Cocoa/_WKUserContentExtensionStorePrivate.h: Removed.
  • UIProcess/API/Cocoa/_WKUserContentFilter.h:
  • UIProcess/API/Cocoa/_WKUserContentFilter.mm:

(-[_WKUserContentFilter _initWithWKContentRuleList:]):
(-[_WKUserContentFilter _apiObject]): Deleted.

  • UIProcess/API/Cocoa/_WKUserContentFilterInternal.h: Removed.
  • UIProcess/API/Cocoa/_WKUserContentFilterPrivate.h: Removed.
  • UIProcess/WebProcessPool.h:
  • WebKit.xcodeproj/project.pbxproj:

Tools:

  • MiniBrowser/mac/ExtensionManagerWindowController.m:

(-[ExtensionManagerWindowController init]):
(-[ExtensionManagerWindowController add:]):
(-[ExtensionManagerWindowController remove:]):

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

(TEST):

  • TestWebKitAPI/Tests/WebKitCocoa/_WKUserContentExtensionStore.mm: Removed.

These tests had already been copied to a version that uses WKContentRuleList.

  • WebKitTestRunner/cocoa/TestControllerCocoa.mm:

(WTR::TestController::resetContentExtensions):

  • WebKitTestRunner/mac/TestControllerMac.mm:

(WTR::TestController::configureContentExtensionForTest):

1:51 PM Changeset in webkit [277604] by Truitt Savell
  • 2 edits in trunk/LayoutTests

[ Mac ] imported/w3c/web-platform-tests/webaudio/the-audio-api/the-audioworklet-interface/audioworkletprocessor-process-frozen-array.https.html is a flaky failure
https://bugs.webkit.org/show_bug.cgi?id=225882

Unreviewed test gardening.

  • platform/mac/TestExpectations:
1:27 PM Changeset in webkit [277603] by achristensen@apple.com
  • 2 edits in trunk/Source/WebCore

Null check m_resource in SubresourceLoader::didReceiveResponse
https://bugs.webkit.org/show_bug.cgi?id=225879

Reviewed by Chris Dumez.

Add ASSERT_NOT_REACHED and RELEASE_LOG_FAULT if m_resource is null.
This will help us notice this invalid state in debug builds and diagnose strange loading failures in simulated crash logs.
On further investigation, the crash fixed in r277594 was likely already fixed by something else, but that made it more robust.

  • loader/SubresourceLoader.cpp:

(WebCore::SubresourceLoader::didReceiveResponse):

12:42 PM Changeset in webkit [277602] by Wenson Hsieh
  • 3 edits in trunk/Source/WebCore

[GPU Process] Validate DocumentMarkerLineStyle::Mode when decoding DrawDotsForDocumentMarker
https://bugs.webkit.org/show_bug.cgi?id=225874
rdar://77885775

Reviewed by Simon Fraser.

Add validation around the style mode enum in DrawDotsForDocumentMarker's DocumentMarkerLineStyle. To ensure
that these enum values are safely decoded when deserializing DrawDotsForDocumentMarker items from arbitrary
data, we store and read the style mode as DocumentMarkerLineStyle::Mode's underlying type: a uint8_t. Upon
item validation, we'll then return false from isValid() in the case where the underlying value is not a
valid DocumentMarkerLineStyle::Mode.

This is necessary because copying invalid enum class types triggers undefined behavior in C++, so we need to
avoid copying the enum value as a DocumentMarkerLineStyle::Mode prior to validation.

  • platform/graphics/displaylists/DisplayListItems.cpp:

(WebCore::DisplayList::operator<<):
(WebCore::DisplayList::DrawDotsForDocumentMarker::isValid const):

  • platform/graphics/displaylists/DisplayListItems.h:
12:26 PM Changeset in webkit [277601] by Chris Dumez
  • 24 edits in trunk/Source

Avoid more String creations when preparing SQLite statements
https://bugs.webkit.org/show_bug.cgi?id=225855

Reviewed by Alex Christensen.

Avoid more String creations when preparing SQLite statements by using ASCIILiteral. Also rename the
Source/WebCore:

SQLiteDatabase::prepareStatement() / SQLiteDatabase::executeCommand() overloads that take in a
String to make sure they are not called by mistake.

  • Modules/indexeddb/server/SQLiteIDBBackingStore.cpp:

(WebCore::IDBServer::v3RecordsTableSchema):
(WebCore::IDBServer::v3RecordsTableSchemaAlternate):
(WebCore::IDBServer::v3IndexRecordsTableSchema):
(WebCore::IDBServer::v3IndexRecordsTableSchemaAlternate):
(WebCore::IDBServer::blobRecordsTableSchema):
(WebCore::IDBServer::blobRecordsTableSchemaAlternate):
(WebCore::IDBServer::blobFilesTableSchema):
(WebCore::IDBServer::blobFilesTableSchemaAlternate):
(WebCore::IDBServer::createOrMigrateRecordsTableIfNecessary):
(WebCore::IDBServer::SQLiteIDBBackingStore::ensureValidRecordsTable):
(WebCore::IDBServer::SQLiteIDBBackingStore::ensureValidIndexRecordsTable):
(WebCore::IDBServer::SQLiteIDBBackingStore::ensureValidIndexRecordsIndex):
(WebCore::IDBServer::SQLiteIDBBackingStore::createAndPopulateInitialDatabaseInfo):
(WebCore::IDBServer::SQLiteIDBBackingStore::ensureValidObjectStoreInfoTable):
(WebCore::IDBServer::SQLiteIDBBackingStore::migrateIndexInfoTableForIDUpdate):
(WebCore::IDBServer::SQLiteIDBBackingStore::migrateIndexRecordsTableForIDUpdate):

  • Modules/indexeddb/server/SQLiteIDBCursor.cpp:

(WebCore::IDBServer::SQLiteIDBCursor::createSQLiteStatement):
(WebCore::IDBServer::SQLiteIDBCursor::resetAndRebindPreIndexStatementIfNecessary):

  • Modules/webdatabase/Database.cpp:

(WebCore::setTextValueInDatabase):
(WebCore::retrieveTextResultFromDatabase):
(WebCore::Database::performOpenAndVerify):

  • Modules/webdatabase/DatabaseTracker.cpp:

(WebCore::DatabaseTracker::openTrackerDatabase):
(WebCore::DatabaseTracker::deleteDatabaseFileIfEmpty):

  • Modules/webdatabase/SQLStatement.cpp:

(WebCore::SQLStatement::execute):

  • loader/appcache/ApplicationCacheStorage.cpp:

(WebCore::ApplicationCacheStorage::executeSQLCommand):
(WebCore::ApplicationCacheStorage::verifySchemaVersion):
(WebCore::ApplicationCacheStorage::openDatabase):
(WebCore::ApplicationCacheStorage::empty):
(WebCore::ApplicationCacheStorage::checkForDeletedResources):

  • loader/appcache/ApplicationCacheStorage.h:
  • platform/network/curl/CookieJarDB.cpp:

(WebCore::CookieJarDB::verifySchemaVersion):
(WebCore::CookieJarDB::createPrepareStatement):
(WebCore::executeSQLStatement):
(WebCore::CookieJarDB::executeSqlSlow):
(WebCore::CookieJarDB::executeSql):

  • platform/network/curl/CookieJarDB.h:
  • platform/sql/SQLiteDatabase.cpp:

(WebCore::SQLiteDatabase::setMaximumSize):
(WebCore::SQLiteDatabase::setSynchronous):
(WebCore::SQLiteDatabase::executeCommandSlow):
(WebCore::SQLiteDatabase::tableExists):
(WebCore::SQLiteDatabase::clearAllTables):
(WebCore::SQLiteDatabase::prepareStatementSlow):
(WebCore::SQLiteDatabase::prepareHeapStatementSlow):

  • platform/sql/SQLiteDatabase.h:
  • platform/sql/SQLiteTransaction.cpp:

(WebCore::SQLiteTransaction::begin):
(WebCore::SQLiteTransaction::commit):
(WebCore::SQLiteTransaction::rollback):

  • platform/win/SearchPopupMenuDB.cpp:

(WebCore::SearchPopupMenuDB::verifySchemaVersion):
(WebCore::executeSQLStatement):
(WebCore::SearchPopupMenuDB::executeSimpleSql):

  • platform/win/SearchPopupMenuDB.h:

Source/WebKit:

SQLiteDatabase::prepareStatement() / SQLiteDatabase::executeCommand() overloads that take in a
String to make sure they are not called by mistake.

  • NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp:

(WebKit::ResourceLoadStatisticsDatabaseStore::currentTableAndIndexQueries):
(WebKit::insertDistinctValuesInTableStatement):
(WebKit::ResourceLoadStatisticsDatabaseStore::migrateDataToNewTablesIfNecessary):
(WebKit::ResourceLoadStatisticsDatabaseStore::columnsForTable):
(WebKit::ResourceLoadStatisticsDatabaseStore::addMissingColumnsToTable):
(WebKit::ResourceLoadStatisticsDatabaseStore::renameColumnInTable):
(WebKit::ResourceLoadStatisticsDatabaseStore::insertDomainRelationshipList):
(WebKit::joinSubStatisticsForSorting):
(WebKit::ResourceLoadStatisticsDatabaseStore::aggregatedThirdPartyData const):
(WebKit::ResourceLoadStatisticsDatabaseStore::incrementRecordsDeletedCountForDomains):
(WebKit::ResourceLoadStatisticsDatabaseStore::markAsPrevalentIfHasRedirectedToPrevalent):
(WebKit::ResourceLoadStatisticsDatabaseStore::findNotVeryPrevalentResources):
(WebKit::ResourceLoadStatisticsDatabaseStore::grandfatherDataForDomains):
(WebKit::ResourceLoadStatisticsDatabaseStore::setDomainsAsPrevalent):
(WebKit::ResourceLoadStatisticsDatabaseStore::clearGrandfathering):
(WebKit::ResourceLoadStatisticsDatabaseStore::pruneStatisticsIfNeeded):
(WebKit::ResourceLoadStatisticsDatabaseStore::getSubStatisticStatement const):
(WebKit::ResourceLoadStatisticsDatabaseStore::appendSubStatisticList const):

  • NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.h:
  • NetworkProcess/WebStorage/LocalStorageDatabase.cpp:

(WebKit::LocalStorageDatabase::openDatabase):
(WebKit::LocalStorageDatabase::migrateItemTableIfNeeded):

  • UIProcess/API/glib/IconDatabase.cpp:

(WebKit::IconDatabase::createTablesIfNeeded):
(WebKit::IconDatabase::populatePageURLToIconURLMap):

Source/WebKitLegacy:

SQLiteDatabase::prepareStatement() / SQLiteDatabase::executeCommand() overloads that take in a
String to make sure they are not called by mistake.

  • Storage/StorageAreaSync.cpp:

(WebKit::StorageAreaSync::openDatabase):
(WebKit::StorageAreaSync::migrateItemTableIfNeeded):

  • Storage/StorageTracker.cpp:

(WebKit::StorageTracker::openTrackerDatabase):

12:09 PM Changeset in webkit [277600] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebCore

REGRESSION(r277425): Crash in FrameSelection::selectFrameElementInParentIfFullySelected
https://bugs.webkit.org/show_bug.cgi?id=225795

Patch by Frederic Wang <fwang@igalia.com> on 2021-05-17
Reviewed by Ryosuke Niwa.

r277425 claimed that in FrameSelection::setSelectionWithoutUpdatingAppearance,
!m_document->frame() was equivalent to !selectionEndpointsBelongToMultipleDocuments &&
!selectionIsInAnotherDocument && selectionIsInDetachedDocument, but it misses the case when
newSelection.document() is null. So this patch adds back this particular case to the
original "if" block. This patch also adds an ASSERT on m_document->frame().

No new tests.

  • editing/FrameSelection.cpp:

(WebCore::FrameSelection::setSelectionWithoutUpdatingAppearance): Add back the case
!m_document->frame() && !newSelection.document() to the first sanity check and ASSERT on
m_document->frame() after the second sanity check.

12:07 PM Changeset in webkit [277599] by dino@apple.com
  • 2 edits in trunk/LayoutTests

Skip WebXR tests again. They are flakey.

11:54 AM Changeset in webkit [277598] by Alan Coon
  • 29 edits
    1 add
    1 delete in branches/safari-612.1.15.1-branch

Cherry-pick r277505. rdar://problem/78110796

Promote -[WKWebView _pageExtendedBackgroundColor] SPI to -[WKWebView underPageBackgroundColor] API
https://bugs.webkit.org/show_bug.cgi?id=225615
<rdar://problem/76568094>

Reviewed by Wenson Hsieh.

Source/WebCore:

underPageBackgroundColor is a null_resettable property that will return (in order of validity)

  • the most recent non-null value provided
  • the CSS background-color of the <body> and/or <html> (this is the current value of _pageExtendedBackgroundColor)
  • the underlying platform view's background color

Modifications to this property will not have any effect until control is returned to the runloop.

Tests: WKWebViewUnderPageBackgroundColor.OnLoad

WKWebViewUnderPageBackgroundColor.SingleSolidColor
WKWebViewUnderPageBackgroundColor.SingleBlendedColor
WKWebViewUnderPageBackgroundColor.MultipleSolidColors
WKWebViewUnderPageBackgroundColor.MultipleBlendedColors
WKWebViewUnderPageBackgroundColor.KVO
WKWebViewUnderPageBackgroundColor.MatchesScrollView

  • page/Page.h: (WebCore::Page::underPageBackgroundColorOverride const): Added.
  • page/Page.cpp: (WebCore::Page::setUnderPageBackgroundColorOverride): Added. Hold the client-overriden value for underPageBackgroundColor so that it can be used when drawing the overscroll layer.
  • rendering/RenderLayerCompositor.cpp: (WebCore::RenderLayerCompositor::updateLayerForOverhangAreasBackgroundColor): Remove the experimental settings UseSampledPageTopColorForScrollAreaBackgroundColor and UseThemeColorForScrollAreaBackgroundColor now that clients can override the default overscroll area background color using -[WKWebView setUnderPageBackgroundColor:].
  • dom/Document.cpp: (WebCore::Document::themeColorChanged): It's no longer necessary to force the overscroll area to redraw since that'll be handled by a client calling -[WKWebView setUnderPageBackgroundColor:] (possibly in response to a -[WKWebView themeColor] KVO notification).

Source/WebKit:

underPageBackgroundColor is a null_resettable property that will return (in order of validity)

  • the most recent non-null value provided
  • the CSS background-color of the <body> and/or <html> (this is the current value of _pageExtendedBackgroundColor)
  • the underlying platform view's background color

Modifications to this property will not have any effect until control is returned to the runloop.

  • UIProcess/API/Cocoa/WKWebView.h:
  • UIProcess/API/Cocoa/WKWebViewPrivate.h:
  • UIProcess/API/Cocoa/WKWebView.mm: (-[WKWebView underPageBackgroundColor]): Added. (-[WKWebView setUnderPageBackgroundColor:]): Added. (+[WKWebView automaticallyNotifiesObserversOfUnderPageBackgroundColor]): Added.
  • UIProcess/API/ios/WKWebViewIOS.mm: (baseScrollViewBackgroundColor): (scrollViewBackgroundColor): Remove the experimental settings UseSampledPageTopColorForScrollAreaBackgroundColor and UseThemeColorForScrollAreaBackgroundColor now that clients can override the default overscroll area background color using -[WKWebView setUnderPageBackgroundColor:].
  • UIProcess/WebPageProxy.h:
  • UIProcess/WebPageProxy.cpp: (WebKit::WebPageProxy::underPageBackgroundColor const): Added. (WebKit::WebPageProxy::setUnderPageBackgroundColorOverride): Added. (WebKit::WebPageProxy::pageExtendedBackgroundColorDidChange): (WebKit::WebPageProxy::platformUnderPageBackgroundColor const): Added. (WebKit::WebPageProxy::scrollAreaBackgroundColor const): Deleted.
  • UIProcess/ios/WebPageProxyIOS.mm: (WebKit::WebPageProxy::platformUnderPageBackgroundColor const): Added.
  • UIProcess/mac/WebPageProxyMac.mm: (WebKit::WebPageProxy::platformUnderPageBackgroundColor const): Added. Store the client-overriden value for underPageBackgroundColor and manage state changes.
  • UIProcess/PageClient.h: (WebKit::PageClient::underPageBackgroundColorWillChange): Added. (WebKit::PageClient::underPageBackgroundColorDidChange): Added.
  • UIProcess/Cocoa/PageClientImplCocoa.h:
  • UIProcess/Cocoa/PageClientImplCocoa.mm: (WebKit::PageClientImplCocoa::underPageBackgroundColorWillChange): Added. (WebKit::PageClientImplCocoa::underPageBackgroundColorDidChange): Added. Add ObjC KVO support for -[WKWebView underPageBackgroundColor].
  • UIProcess/ios/PageClientImplIOS.h:
  • UIProcess/ios/PageClientImplIOS.mm: (WebKit::PageClientImpl::contentViewBackgroundColor): Added. Provide a way to get the backgroundColor of the WKContentView. This is needed on iOS because scrollViewBackgroundColor (now WebPageProxy::platformUnderPageBackgroundColor) would use this value before falling back to the underlying platform view's background color.
  • WebProcess/WebPage/WebPage.messages.in:
  • WebProcess/WebPage/WebPage.h:
  • WebProcess/WebPage/WebPage.cpp: (WebKit::WebPage::setUnderPageBackgroundColorOverride): Added. Pass the client-overriden value for underPageBackgroundColor to the WebProcess so that it can be used when drawing the overscroll layer.
  • UIProcess/ViewSnapshotStore.cpp: (WebKit::ViewSnapshotStore::recordSnapshot): Go back to using the pageExtendedBackgroundColor (before r273083).

Source/WTF:

underPageBackgroundColor is a null_resettable property that will return (in order of validity)

  • the most recent non-null value provided
  • the CSS background-color of the <body> and/or <html> (this is the current value of _pageExtendedBackgroundColor)
  • the underlying platform view's background color

Modifications to this property will not have any effect until control is returned to the runloop.

  • Scripts/Preferences/WebPreferencesInternal.yaml: Remove the experimental settings UseSampledPageTopColorForScrollAreaBackgroundColorand UseThemeColorForScrollAreaBackgroundColor now that clients can override the default overscroll area background color using -[WKWebView setUnderPageBackgroundColor:].

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/WKWebViewUnderPageBackgroundColor.mm: Renamed from PageExtendedBackgroundColor.mm. (defaultBackgroundColor): Added. (TEST.WKWebViewUnderPageBackgroundColor.OnLoad): (TEST.WKWebViewUnderPageBackgroundColor.SingleSolidColor): Added. (TEST.WKWebViewUnderPageBackgroundColor.SingleBlendedColor): Added. (TEST.WKWebViewUnderPageBackgroundColor.MultipleSolidColors): Added. (TEST.WKWebViewUnderPageBackgroundColor.MultipleBlendedColors): Added. (-[WKWebViewUnderPageBackgroundColorObserver initWithWebView:]): Added. (-[WKWebViewUnderPageBackgroundColorObserver observeValueForKeyPath:ofObject:change:context:]): Added. (TEST.WKWebViewUnderPageBackgroundColor.KVO): (TEST.WKWebViewUnderPageBackgroundColor.MatchesScrollView): Added. (TEST.WKWebViewUnderPageBackgroundColor.MultipleStyles): Deleted. (-[WKWebViewPageExtendedBackgroundColorObserver initWithWebView:]): Deleted. (-[WKWebViewPageExtendedBackgroundColorObserver observeValueForKeyPath:ofObject:change:context:]): Deleted.
  • TestWebKitAPI/Tests/WebKitCocoa/SampledPageTopColor.mm: (createWebViewWithSampledPageTopColorMaxDifference): (TEST.SampledPageTopColor.ExperimentalUseSampledPageTopColorForScrollAreaBackgroundColor): Deleted.
  • TestWebKitAPI/Tests/WebKitCocoa/WKWebViewThemeColor.mm: (createWebView): Deleted. (TEST.WKWebView.ExperimentalUseThemeColorForScrollAreaBackgroundColor): Deleted. Remove the experimental settings UseSampledPageTopColorForScrollAreaBackgroundColor and UseThemeColorForScrollAreaBackgroundColor now that clients can override the default overscroll area background color using -[WKWebView setUnderPageBackgroundColor:].
  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:

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

11:54 AM Changeset in webkit [277597] by Alan Coon
  • 2 edits in branches/safari-612.1.15.1-branch/Source/WebCore

Cherry-pick r277459. rdar://problem/78110796

[macOS] experimental "Use theme color for scroll area background" isn't working
https://bugs.webkit.org/show_bug.cgi?id=225726
<rdar://problem/77933000>

Reviewed by Tim Horton.

  • rendering/RenderLayerCompositor.cpp: (WebCore::RenderLayerCompositor::updateLayerForOverhangAreasBackgroundColor): (WebCore::RenderLayerCompositor::updateOverflowControlsLayers): Fix last remaining m_layerForOverhangAreas->setBackgroundColor to use the helper function RenderLayerCompositor::updateLayerForOverhangAreasBackgroundColor instead so that all paths that update the overscroll area color check the experimental settings too.

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

11:54 AM Changeset in webkit [277596] by Alan Coon
  • 2 edits in branches/safari-612.1.15.1-branch/Source/WebKit

Cherry-pick r277528. rdar://problem/78109685

REGRESSION (r269824): Random tile corruption when scrolling/zooming in macCatalyst
https://bugs.webkit.org/show_bug.cgi?id=225837
<rdar://problem/75053997>

Reviewed by Simon Fraser.

  • Shared/RemoteLayerTree/RemoteLayerBackingStore.mm: (WebKit::RemoteLayerBackingStore::swapToValidFrontBuffer): Mark the newly front buffer non-volatile before painting into it. This was lost in r269824. Oddly, this caused less trouble than one might expect, except on some particular hardware.

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

11:54 AM Changeset in webkit [277595] by Alan Coon
  • 35 edits in branches/safari-612.1.15.1-branch/Source

Cherry-pick r277453. rdar://problem/78108967

Add textIndicator bounce for AppHighlights on scroll.
https://bugs.webkit.org/show_bug.cgi?id=225727

Reviewed by Tim Horton.

  • Modules/highlight/AppHighlightStorage.cpp: (WebCore::AppHighlightStorage::attemptToRestoreHighlightAndScroll):
  • loader/EmptyClients.cpp: (WebCore::EmptyChromeClient::setTextIndicator const):
  • loader/EmptyClients.h:
  • page/ChromeClient.h:
  • page/TextIndicator.h:
  • page/cocoa/WebTextIndicatorLayer.h:
  • page/cocoa/WebTextIndicatorLayer.mm: (-[WebTextIndicatorLayer initWithFrame:textIndicator:margin:offset:]): (createBounceAnimation): (-[WebTextIndicatorLayer _animationDuration]):
  • page/mac/TextIndicatorWindow.h:
  • page/mac/TextIndicatorWindow.mm: (WebCore::TextIndicatorWindow::~TextIndicatorWindow): (WebCore::TextIndicatorWindow::clearTextIndicator): (WebCore::TextIndicatorWindow::setTextIndicator):

Use factored out textIndicator code to add a bounce to an appHighlight
when it is scrolled to.

  • UIProcess/Cocoa/WebViewImpl.h:
  • UIProcess/Cocoa/WebViewImpl.mm: (-[WKWindowVisibilityObserver _dictionaryLookupPopoverWillClose:]): (WebKit::WebViewImpl::setTextIndicator): (WebKit::WebViewImpl::clearTextIndicatorWithAnimation): (WebKit::WebViewImpl::dismissContentRelativeChildWindowsWithAnimationFromViewOnly): (WebKit::WebViewImpl::dismissContentRelativeChildWindowsFromViewOnly):
  • UIProcess/PageClient.h:
  • UIProcess/WebPageProxy.cpp: (WebKit::WebPageProxy::setTextIndicator): (WebKit::WebPageProxy::clearTextIndicator):
  • UIProcess/WebPageProxy.h:
  • UIProcess/ios/PageClientImplIOS.h:
  • UIProcess/ios/PageClientImplIOS.mm: (WebKit::PageClientImpl::setTextIndicator): (WebKit::PageClientImpl::clearTextIndicator): (WebKit::PageClientImpl::setTextIndicatorAnimationProgress):
  • UIProcess/ios/WKContentViewInteraction.h:
  • UIProcess/ios/WKContentViewInteraction.mm: (-[WKContentView setUpTextIndicator:]): (-[WKContentView clearTextIndicator:]): (-[WKContentView setTextIndicatorAnimationProgress:]): (-[WKContentView teardownTextIndicatorLayer]): (-[WKContentView startFadeOut]):
  • UIProcess/mac/PageClientImplMac.h:
  • UIProcess/mac/PageClientImplMac.mm: (WebKit::PageClientImpl::setTextIndicator): (WebKit::PageClientImpl::clearTextIndicator): (WebKit::PageClientImpl::didPerformDictionaryLookup):
  • UIProcess/mac/WKImmediateActionController.mm: (-[WKImmediateActionController _animationControllerForText]):
  • WebProcess/WebCoreSupport/WebChromeClient.cpp: (WebKit::WebChromeClient::setTextIndicator const):
  • WebProcess/WebCoreSupport/WebChromeClient.h:
  • WebProcess/WebPage/FindController.cpp: (WebKit::FindController::updateFindIndicator):
  • WebCoreSupport/WebChromeClient.h:

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

11:44 AM Changeset in webkit [277594] by achristensen@apple.com
  • 2 edits in trunk/Source/WebCore

Null check m_resource in SubresourceLoader::didReceiveResponse
https://bugs.webkit.org/show_bug.cgi?id=225879
<rdar://78084804>

Reviewed by Chris Dumez.

  • loader/SubresourceLoader.cpp:

(WebCore::SubresourceLoader::didReceiveResponse):

11:42 AM Changeset in webkit [277593] by Alan Coon
  • 8 edits in branches/safari-612.1.15.1-branch/Source

Versioning.

WebKit-7612.1.15.1.1

11:35 AM Changeset in webkit [277592] by Alan Coon
  • 35 edits in branches/safari-612.1.15.0-branch/Source

Cherry-pick r277453. rdar://problem/78112386

Add textIndicator bounce for AppHighlights on scroll.
https://bugs.webkit.org/show_bug.cgi?id=225727

Reviewed by Tim Horton.

  • Modules/highlight/AppHighlightStorage.cpp: (WebCore::AppHighlightStorage::attemptToRestoreHighlightAndScroll):
  • loader/EmptyClients.cpp: (WebCore::EmptyChromeClient::setTextIndicator const):
  • loader/EmptyClients.h:
  • page/ChromeClient.h:
  • page/TextIndicator.h:
  • page/cocoa/WebTextIndicatorLayer.h:
  • page/cocoa/WebTextIndicatorLayer.mm: (-[WebTextIndicatorLayer initWithFrame:textIndicator:margin:offset:]): (createBounceAnimation): (-[WebTextIndicatorLayer _animationDuration]):
  • page/mac/TextIndicatorWindow.h:
  • page/mac/TextIndicatorWindow.mm: (WebCore::TextIndicatorWindow::~TextIndicatorWindow): (WebCore::TextIndicatorWindow::clearTextIndicator): (WebCore::TextIndicatorWindow::setTextIndicator):

Use factored out textIndicator code to add a bounce to an appHighlight
when it is scrolled to.

  • UIProcess/Cocoa/WebViewImpl.h:
  • UIProcess/Cocoa/WebViewImpl.mm: (-[WKWindowVisibilityObserver _dictionaryLookupPopoverWillClose:]): (WebKit::WebViewImpl::setTextIndicator): (WebKit::WebViewImpl::clearTextIndicatorWithAnimation): (WebKit::WebViewImpl::dismissContentRelativeChildWindowsWithAnimationFromViewOnly): (WebKit::WebViewImpl::dismissContentRelativeChildWindowsFromViewOnly):
  • UIProcess/PageClient.h:
  • UIProcess/WebPageProxy.cpp: (WebKit::WebPageProxy::setTextIndicator): (WebKit::WebPageProxy::clearTextIndicator):
  • UIProcess/WebPageProxy.h:
  • UIProcess/ios/PageClientImplIOS.h:
  • UIProcess/ios/PageClientImplIOS.mm: (WebKit::PageClientImpl::setTextIndicator): (WebKit::PageClientImpl::clearTextIndicator): (WebKit::PageClientImpl::setTextIndicatorAnimationProgress):
  • UIProcess/ios/WKContentViewInteraction.h:
  • UIProcess/ios/WKContentViewInteraction.mm: (-[WKContentView setUpTextIndicator:]): (-[WKContentView clearTextIndicator:]): (-[WKContentView setTextIndicatorAnimationProgress:]): (-[WKContentView teardownTextIndicatorLayer]): (-[WKContentView startFadeOut]):
  • UIProcess/mac/PageClientImplMac.h:
  • UIProcess/mac/PageClientImplMac.mm: (WebKit::PageClientImpl::setTextIndicator): (WebKit::PageClientImpl::clearTextIndicator): (WebKit::PageClientImpl::didPerformDictionaryLookup):
  • UIProcess/mac/WKImmediateActionController.mm: (-[WKImmediateActionController _animationControllerForText]):
  • WebProcess/WebCoreSupport/WebChromeClient.cpp: (WebKit::WebChromeClient::setTextIndicator const):
  • WebProcess/WebCoreSupport/WebChromeClient.h:
  • WebProcess/WebPage/FindController.cpp: (WebKit::FindController::updateFindIndicator):
  • WebCoreSupport/WebChromeClient.h:

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

11:35 AM Changeset in webkit [277591] by Alan Coon
  • 5 edits
    2 adds in branches/safari-612.1.15.0-branch

Cherry-pick r277452. rdar://problem/78109565

REGRESSION (r276945): [iOS] Focus rings are too large
https://bugs.webkit.org/show_bug.cgi?id=225778
<rdar://problem/77858341>

Reviewed by Tim Horton.

Source/WebCore:

r276945 updated scaling logic to ensure that the scale of the base CTM
matches the device scale factor. The change itself makes our base CTM
more correct, but exposed a longstanding bug with our focus ring
implementation.

Focus rings are drawn using CoreGraphics, using CGFocusRingStyle. On
macOS, the style is initialized using NSInitializeCGFocusRingStyleForTime.
However, on iOS, we initialize the style ourselves, using UIKit constants.
Currently, the focus ring's style's radius is set to
+[UIFocusRingStyle cornerRadius], a constant of 8. This is the longstanding
issue. CGFocusRingStyle's radius is not a corner radius, but is the
width of the focus ring. In UIKit, this width is represented by
+[UIFocusRingStyle borderThickness], a constant of 3. WebKit has always
intended to match this width, as evidenced by the default outline-width
of 3px in the UA style sheet.

Considering the large disparity between the existing and expected radius
value, it may be surprising that this mistake has gone unnoticed since
2019, when focus rings were first introduced on iOS. This is where r276945
comes into play. Prior to r276945, the scale of the base CTM did not match
the device scale factor. This meant that CG scaled down the constant of 8
to 4 CSS pixels (1 (base CTM) / 2 (device scale factor)). After r276945,
the two scales are equal and the focus ring is drawn as 8 CSS pixels, much
larger than the expected 3px.

Test: fast/forms/ios/focus-ring-size.html

  • platform/graphics/cocoa/GraphicsContextCocoa.mm: (WebCore::drawFocusRingAtTime):

To fix, use the correct SPI to get the focus ring width,
+[UIFocusRingStyle borderThickness]. This ensures that focus rings have
the right width, following r276945.

The change also fixes focus ring repaint issues that arose from the
fact that the outline-width was 3px, but the painted width was 4px.

Source/WebCore/PAL:

  • pal/spi/ios/UIKitSPI.h:

LayoutTests:

Added a regression test to verify the size of the focus ring on iOS.
The test works by drawing an overlay on top of an input element, that
is just large enough to obscure the focus ring. If the focus ring is
too large, the ring will not obscured, leading to a mismatch failure.

  • fast/forms/ios/focus-ring-size-expected.html: Added.
  • fast/forms/ios/focus-ring-size.html: Added.

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

11:28 AM Changeset in webkit [277590] by Alan Coon
  • 8 edits in branches/safari-612.1.15.0-branch/Source

Versioning.

WebKit-7612.1.15.0.1

11:19 AM Changeset in webkit [277589] by youenn@apple.com
  • 5 edits
    3 adds in trunk

[ BigSur Debug wk2 ARM64 ] imported/w3c/web-platform-tests/webrtc-encoded-transform/sframe-transform-readable.html is flaky crashing
https://bugs.webkit.org/show_bug.cgi?id=225534
<rdar://problem/77679466>

Reviewed by Eric Carlson.

Source/WebCore:

In case the transform is stopped, the pipeTo operation will propagate the error/closure to the ReadableStream.
In that case, we need to stop enqueuing or we end up hitting the assert.
Handle this by adding a boolean which is set to true when SimpleReadableStreamSource::doCancel is called.
Make close and enqueue as no-op if that boolean is true.
Covered by test no longer crashing.

In addition, make sure to skip frames for which the array buffer is null as it might trigger debug asserts in libwebrtc.
Add a test to cover that case.

Test: http/wpt/webrtc/video-script-transform-keyframe-only.html

  • Modules/mediastream/RTCRtpScriptTransformer.cpp:

(WebCore::RTCRtpScriptTransformer::writable):

  • Modules/streams/ReadableStreamSource.cpp:

(WebCore::SimpleReadableStreamSource::doCancel):
(WebCore::SimpleReadableStreamSource::close):
(WebCore::SimpleReadableStreamSource::enqueue):

  • Modules/streams/ReadableStreamSource.h:

LayoutTests:

  • http/wpt/webrtc/video-script-transform-keyframe-only-expected.txt: Added.
  • http/wpt/webrtc/video-script-transform-keyframe-only-worker.js: Added.
  • http/wpt/webrtc/video-script-transform-keyframe-only.html: Added.
11:12 AM Changeset in webkit [277588] by jer.noble@apple.com
  • 3 edits
    2 adds in trunk

MediaSession action handlers aren't treated as having a user gesture
https://bugs.webkit.org/show_bug.cgi?id=225875

Reviewed by Eric Carlson.

Source/WebCore:

Test: media/media-session/user-gesture-action-handlers.html

We treat remote control commands as having a user gesture, but not when firing
a MediaSession action handler; we should treat them the same.

  • Modules/mediasession/MediaSession.cpp:

(WebCore::MediaSession::callActionHandler):

LayoutTests:

  • media/media-session/user-gesture-action-handlers-expected.txt: Added.
  • media/media-session/user-gesture-action-handlers.html: Added.
10:59 AM Changeset in webkit [277587] by Simon Fraser
  • 5 edits in trunk/Source/WebKit

Allow wheel events to be coalesced during scroll deceleration
https://bugs.webkit.org/show_bug.cgi?id=225834
<rdar://70402512>

Reviewed by Tim Horton.

When scrolling slows down towards the tail end of a momentum scroll, we can reduce our
commit frequency to save power, but we only want to do this on displays whose refresh rate
is higher than the default "update rendering" frequency.

We do this by leveraging the existing WebWheelEventCoalescer, which coalesces events
in the UI process. It tracks time since previous event, and coalesces when the
instantaneous velocity is less than 320 points per second (matching other frameworks
on the system).

WebWheelEventCoalescer needs to know when to enable coalescing, which it computes
on creation, and when the window is moved to a different screen with potentially
a different refresh rate.

  • Shared/WebWheelEventCoalescer.cpp:

(WebKit::WebWheelEventCoalescer::isInMomentumPhase):
(WebKit::WebWheelEventCoalescer::shouldDispatchEvent):

  • Shared/WebWheelEventCoalescer.h:

(WebKit::WebWheelEventCoalescer::shouldCoalesceEventsDuringDeceleration const):
(WebKit::WebWheelEventCoalescer::setShouldCoalesceEventsDuringDeceleration):

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::wheelEventCoalescer):
(WebKit::WebPageProxy::shouldCoalesceWheelEventsDuringDeceleration const):
(WebKit::WebPageProxy::windowScreenDidChange):

  • UIProcess/WebPageProxy.h:
9:53 AM Changeset in webkit [277586] by Chris Dumez
  • 11 edits in trunk/Source/WebCore

Move more logic from AudioDestinationNode to its subclasses
https://bugs.webkit.org/show_bug.cgi?id=225849

Reviewed by Sam Weinig.

Move more logic from AudioDestinationNode to its subclasses. In particular, AudioDestinationNode
contains a lot of things that are specific to real-time audio rendering and those should go to
DefaultAudioDestinationNode.

This allows us to move isPlayingAudioDidChange() from BaseAudioContext to AudioContext also.

  • Modules/webaudio/AudioContext.cpp:

(WebCore::AudioContext::isPlayingAudioDidChange):

  • Modules/webaudio/AudioContext.h:
  • Modules/webaudio/AudioDestinationNode.cpp:

(WebCore::AudioDestinationNode::renderQuantum):

  • Modules/webaudio/AudioDestinationNode.h:
  • Modules/webaudio/BaseAudioContext.cpp:
  • Modules/webaudio/BaseAudioContext.h:
  • Modules/webaudio/DefaultAudioDestinationNode.cpp:

(WebCore::DefaultAudioDestinationNode::createDestination):
(WebCore::DefaultAudioDestinationNode::framesPerBuffer const):
(WebCore::DefaultAudioDestinationNode::render):
(WebCore::DefaultAudioDestinationNode::setIsSilent):
(WebCore::DefaultAudioDestinationNode::isPlayingDidChange):
(WebCore::DefaultAudioDestinationNode::updateIsEffectivelyPlayingAudio):

  • Modules/webaudio/DefaultAudioDestinationNode.h:
  • Modules/webaudio/OfflineAudioDestinationNode.cpp:

(WebCore::OfflineAudioDestinationNode::OfflineAudioDestinationNode):
(WebCore::OfflineAudioDestinationNode::startRendering):
(WebCore::OfflineAudioDestinationNode::renderOnAudioThread):

  • Modules/webaudio/OfflineAudioDestinationNode.h:
9:31 AM Changeset in webkit [277585] by Ruben Turcios
  • 1 copy in branches/safari-612.1.15.1-branch

New branch.

9:31 AM Changeset in webkit [277584] by Peng Liu
  • 27 edits in trunk/Source

[GPUP] WebContent process should not pull audio session category from the GPU Process
https://bugs.webkit.org/show_bug.cgi?id=225826

Reviewed by Darin Adler.

Source/WebCore:

Change AudioSession::Category to be an enum class.

  • platform/audio/AudioSession.cpp:

(WebCore::AudioSession::categoryOverride const):
(WebCore::AudioSession::category const):

  • platform/audio/AudioSession.h:
  • platform/audio/cocoa/MediaSessionManagerCocoa.mm:

(WebCore::MediaSessionManagerCocoa::updateSessionState):

  • platform/audio/ios/AudioSessionIOS.mm:

(WebCore::AudioSessionPrivate::AudioSessionPrivate):
(WebCore::AudioSession::setCategory):
(WebCore::AudioSession::category const):

  • platform/audio/mac/AudioSessionMac.mm:

(WebCore::AudioSession::setCategory):

  • platform/audio/mac/SharedRoutingArbitrator.h:
  • platform/audio/mac/SharedRoutingArbitrator.mm:

(WebCore::SharedRoutingArbitrator::beginRoutingArbitrationForToken):

  • platform/mediastream/mac/BaseAudioSharedUnit.cpp:

(WebCore::BaseAudioSharedUnit::startUnit):

  • platform/mock/MockRealtimeAudioSource.cpp:

(WebCore::MockRealtimeAudioSource::startProducingData):

  • testing/Internals.cpp:

(WebCore::Internals::audioSessionCategory const):

Source/WebKit:

Remove category and routeSharingPolicy from RemoteAudioSessionConfiguration
because we should not pull these properties from the GPU process.

Remove IPC message RemoteAudioSession::ConfigurationChanged because it is not used.

  • GPUProcess/mac/LocalAudioSessionRoutingArbitrator.h:
  • GPUProcess/media/RemoteAudioSessionProxy.cpp:

(WebKit::RemoteAudioSessionProxy::configuration):

  • GPUProcess/media/RemoteAudioSessionProxy.h:
  • GPUProcess/media/RemoteAudioSessionProxyManager.cpp:

(WebKit::categoryCanMixWithOthers):
(WebKit::RemoteAudioSessionProxyManager::updateCategory):

  • UIProcess/Cocoa/UserMediaCaptureManagerProxy.cpp:
  • UIProcess/Media/AudioSessionRoutingArbitratorProxy.h:
  • WebProcess/GPU/media/RemoteAudioSession.cpp:

(WebKit::RemoteAudioSession::setCategory):
(WebKit::RemoteAudioSession::category const):
(WebKit::RemoteAudioSession::configurationChanged): Deleted.

  • WebProcess/GPU/media/RemoteAudioSession.h:
  • WebProcess/GPU/media/RemoteAudioSession.messages.in:
  • WebProcess/GPU/media/RemoteAudioSessionConfiguration.h:

(WebKit::RemoteAudioSessionConfiguration::encode const):
(WebKit::RemoteAudioSessionConfiguration::decode):

  • WebProcess/Speech/SpeechRecognitionRealtimeMediaSourceManager.cpp:

Source/WebKitLegacy/mac:

  • WebView/WebPreferences.mm:

(+[WebPreferences initialize]):
(-[WebPreferences setAudioSessionCategoryOverride:]):

9:31 AM Changeset in webkit [277583] by Ruben Turcios
  • 1 copy in branches/safari-612.1.15.0-branch

New branch.

8:30 AM Changeset in webkit [277582] by Diego Pino Garcia
  • 2 edits in trunk/LayoutTests

[GLIB] Unreviewed test gardening. Several OffscreenCanvas tests are failing since r277543.

  • platform/glib/TestExpectations:
8:18 AM Changeset in webkit [277581] by Diego Pino Garcia
  • 2 edits in trunk/LayoutTests

[GLIB] Unreviewed test gardening. Skip tests requiring support for 'display-p3'.

  • platform/glib/TestExpectations:
6:32 AM Changeset in webkit [277580] by commit-queue@webkit.org
  • 5 edits in trunk

will-change: contain should create a containing block
https://bugs.webkit.org/show_bug.cgi?id=225442

Patch by Rob Buis <rbuis@igalia.com> on 2021-05-17
Reviewed by Antti Koivisto.

Source/WebCore:

Make will-change: contain cause the element to be a containing block for both
position: fixed and position: absolute cases as well as create a CSS stacking
context for the element.

Tests: imported/w3c/web-platform-tests/css/css-contain/contain-paint-stacking-context-001b.html

imported/w3c/web-platform-tests/css/css-will-change/will-change-fixpos-cb-contain-1.html

  • rendering/style/WillChangeData.cpp:

(WebCore::WillChangeData::createsContainingBlockForOutOfFlowPositioned const):
(WebCore::WillChangeData::propertyCreatesStackingContext):

  • style/StyleBuilderCustom.h:

(WebCore::Style::BuilderCustom::applyValueWillChange):

LayoutTests:

Tests contain-paint-stacking-context-001b.html (testing
that will-change: contain creates a containing block) and
contain-paint-stacking-context-001b.html (which tests that
will-change: contain creates a CSS stacking context) now
pass, so no longer mark them as image failures.

3:09 AM Changeset in webkit [277579] by ntim@apple.com
  • 6 edits in trunk

will-change: position should not create a containing block for position: fixed elements
https://bugs.webkit.org/show_bug.cgi?id=225443

Reviewed by Antti Koivisto.

This partially undoes r276627 which made will-change: position create a CB for all out-of-flow elements:

  • Removed CSSPropertyPosition from createsContainingBlockForOutOfFlowPositioned() to not create a containing block

for position: fixed; children.

  • Added createsContainingBlockForAbsolutelyPositioned() with CSSPropertyPosition to still create a containing block

for position: absolute; children.

Enabled WPT (which covers both cases): css/css-will-change/will-change-fixpos-cb-position-1.html

Source/WebCore:

  • rendering/RenderElement.h:

(WebCore::RenderElement::canContainAbsolutelyPositionedObjects const):

  • rendering/style/WillChangeData.cpp:

(WebCore::WillChangeData::createsContainingBlockForAbsolutelyPositioned const):
(WebCore::WillChangeData::createsContainingBlockForOutOfFlowPositioned const):

  • rendering/style/WillChangeData.h:

LayoutTests:

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

REGRESSION(r277560): conditional attribute typos in IDLs for OffscreenCanvas, OffscreenCanvasRenderingContext2D
https://bugs.webkit.org/show_bug.cgi?id=225858

Unreviewed. Tweaking the for-worker conditional attribute values for the
OffscreenCanvas and OffscreenCanvasRenderingContext2D interfaces after
the r277560 refactoring. The mismatch in the conditional values left the
two interfaces outside any worker global space.

Patch by Zan Dobersek <zdobersek@igalia.com> on 2021-05-17

  • html/OffscreenCanvas.idl:
  • html/canvas/OffscreenCanvasRenderingContext2D.idl:
Note: See TracTimeline for information about the timeline view.