Timeline



Mar 30, 2021:

10:52 PM Changeset in webkit [275270] by Wenson Hsieh
  • 8 edits in trunk/Source/WebKit

[iOS] Fall back to context menu presentation after long pressing image overlay text
https://bugs.webkit.org/show_bug.cgi?id=223967
<rdar://problem/76028620>

Reviewed by Tim Horton.

Add support for this behavior; see <rdar://problem/76028620> for more details.

  • Shared/ios/InteractionInformationAtPosition.h:
  • Shared/ios/InteractionInformationAtPosition.mm:

(WebKit::InteractionInformationAtPosition::encode const):
(WebKit::InteractionInformationAtPosition::decode):

Add a couple of new flags (isSelected and isImageOverlayText) to indicate whether the interaction is over
selected text, and also whether the interaction is over text in an image overlay, respectively.

  • Shared/ios/InteractionInformationRequest.cpp:

(WebKit::InteractionInformationRequest::encode const):
(WebKit::InteractionInformationRequest::decode):
(WebKit::InteractionInformationRequest::isValidForRequest const):

Add a new position information request option to ignore user agent shadow root content.

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

Add a flag that's set when _imageExtractionTimeoutGestureRecognizer is recognized, and is about to present a
context menu, and is unset upon starting the context menu presentation.

(-[WKContentView setUpInteraction]):
(-[WKContentView cleanUpInteraction]):
(-[WKContentView gestureRecognizer:shouldRequireFailureOfGestureRecognizer:]):
(-[WKContentView gestureRecognizer:shouldBeRequiredToFailByGestureRecognizer:]):

Make the timeout gesture (_imageExtractionTimeoutGestureRecognizer) require the failure of the context menu
initiation gesture, such that this image extraction timeout gesture won't trigger if the context menu has
already been triggered.

(-[WKContentView _invalidateCurrentPositionInformation]):
(-[WKContentView _didCommitLoadForMainFrame]):

Pull logic for resetting cached position information into a helper, and call it inside
-_didCommitLoadForMainFrame.

(-[WKContentView _contextMenuInteraction:configurationForMenuAtLocation:completion:]):

Reset the new flag (_contextMenuWasTriggeredByImageExtractionTimeout) if necessary, and use its existing value
to determine whether we should ignore UA shadow root content when performing a hit-test for the context menu
configuration.

  • WebProcess/WebPage/ios/WebPageIOS.mm:

(WebKit::imageRendererAndImage):
(WebKit::imagePositionInformation):
(WebKit::elementPositionInformation):

Additionally supply the image URL and image data if includeImageData is set, even if the hit-tested node is
just a text node underneath an image element's overlay.

(WebKit::selectionPositionInformation):
(WebKit::WebPage::positionInformation):

Add support for the new position information flags.

10:48 PM Changeset in webkit [275269] by graouts@webkit.org
  • 11 edits
    2 deletes in trunk

Computed style for background-position should not use "left" and "top" keywords
https://bugs.webkit.org/show_bug.cgi?id=223878

Reviewed by Simon Fraser.

LayoutTests/imported/w3c:

Add 106 new PASS results.

  • web-platform-tests/css/css-backgrounds/animations/background-position-interpolation-expected.txt:
  • web-platform-tests/css/css-backgrounds/animations/background-position-origin-interpolation-expected.txt:
  • web-platform-tests/css/css-backgrounds/parsing/background-position-computed-expected.txt:
  • web-platform-tests/css/css-pseudo/first-letter-allowed-properties.html: Update the test per WPT PR #28284.

Source/WebCore:

  • css/CSSComputedStyleDeclaration.cpp:

(WebCore::ComputedStyleExtractor::valueForPropertyInStyle): Ensure querying the computed
style for background-position longhands passes in the RenderStyle for the calc() case.
(WebCore::createPositionListForLayer):

LayoutTests:

  • fast/backgrounds/background-position-parsing-2-expected.txt: Removed.
  • fast/backgrounds/background-position-parsing-2.html: We remove this test because it is incorrect

and superseded by WPT tests that we now pass, checking parsing of both valid and invalid values.

  • fast/css/background-position-serialize-expected.txt:
  • fast/css/background-position-serialize.html: Update this test to not expect "left" or "top".
  • transitions/resources/transition-test-helpers.js: Update the helper to not rely on keywords

to obtain x and y values from the computed style.

10:34 PM Changeset in webkit [275268] by Chris Dumez
  • 2 edits in trunk/Source/WebKit

ASSERT(m_sendPort) in IPC::Connection::open() when running some iOS unit tests
https://bugs.webkit.org/show_bug.cgi?id=223982
<rdar://75974285>

Reviewed by Alexey Proskuryakov.

If the UIProcess exits or severs it connection to the WebProcess while the WebProcess is
launching, the WebProcess ends up getting an invalid mach port upon initialization. This
is expected and XPCServiceInitializerDelegate::getConnectionIdentifier() was dealing with
this. getConnectionIdentifier() was checking if the port was invalid by checking if it was
MACH_PORT_NULL and calling exit() in such case. However, something has changed (likely
at OS level) and we are now sometimes getting MACH_PORT_DEAD instead of MACH_PORT_NULL.
The proper way to check if a mach port is valid is to call MACH_PORT_VALID(), which checks
for both MACH_PORT_NULL and MACH_PORT_DEAD. I therefore updated getConnectionIdentifier()
to use MACH_PORT_VALID() instead of an explicit check for MACH_PORT_NULL. This gets rid
of debug assertions we were seeing in the output of some iOS unit tests.

  • Shared/EntryPointUtilities/Cocoa/XPCService/XPCServiceEntryPoint.mm:

(WebKit::XPCServiceInitializerDelegate::getConnectionIdentifier):

9:25 PM Changeset in webkit [275267] by Chris Dumez
  • 40 edits
    1 copy
    1 add
    1 delete in trunk

Service Worker scripts use too much memory in the network process
https://bugs.webkit.org/show_bug.cgi?id=223808
<rdar://75637093>

Reviewed by Geoff Garen.

Source/WebCore:

Previously, the network process would store service worker scripts in a SQLite database.
When starting to use service workers, we would load all those scripts from the database
into memory. This would use a decent amount of memory in the network process.

To address the issue, the approach is this patch is to store the scripts as separate
files on the filesystem instead. This when, when loading them, we can simply mmap() them
and greatly reduce dirty memory usage.

Note that the service worker process (which may be the WebContent process) also keeps a
copy of the imported service worker scripts for the service workers it is running. More
work will be needed in a follow-up but we should be able to extend the approach so that
the service worker process would only have a mmap'd version of those scripts. This would
reduce dirty memory usage on the WebContent/ServiceWorker process side as well. I am
doing this separately though to reduce patch size and facilitate review.

No new tests, there should be no Web-facing behavior change, just a decreased
dirty memory usage in the network process when service workers are used.

I did manual memory testing with a very large service worker that had one ~100MB main
script, importing another ~100MB script.

Here are the memory results without my change:

  • Networking (Dirty): 238MB (cold) / 331MB (warm)
  • WebContent (Dirty): 441MB (cold) / 857MB (warm)

Here are the memory results with my change:

  • Networking (Dirty): 22MB (cold) / 14MB (warm)
  • WebContent (Dirty): 440MB (cold) / 438MB (warm)

This shows that ALL memory from the scripts in the network process is no longer marked
as dirty. We also see a significant progression in the WebProcess in the warm case, since
the scripts are coming from the network process as shared memory in this case. There is
no progression in the WebProcess in the cold case yet, since the script were just
downloaded and are coming from the WebProcess to the NetworkProcess. In a follow-up, the
network process could send shared memory back to the WebProcess, after saving the scripts
to disk, so that the WebProcess can replace the copies of its scripts and save more memory.

  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:

Add new SWScriptStorage class to the project.

  • inspector/agents/worker/ServiceWorkerAgent.cpp:

(WebCore::ServiceWorkerAgent::getInitializationInfo):
Convert the script type from SharedBuffer to String.

  • platform/SharedBuffer.cpp:

(WebCore::SharedBuffer::operator== const):
Fix assertions that were hitting when comparing to empty SharedBuffers (offset would be 0
and size would be 0). This was caught by API tests since we have some service worker API
tests that use empty worker scripts.

  • workers/WorkerScriptLoader.cpp:

(WebCore::WorkerScriptLoader::loadSynchronously):
Add some conversion from String to SharedBuffer to the script, and vice-versa, in the
service worker case.

  • workers/service/ServiceWorkerContextData.cpp:

(WebCore::ServiceWorkerContextData::isolatedCopy const):
(WebCore::scriptBufferToString):
(WebCore::stringToScriptBuffer):

  • workers/service/ServiceWorkerContextData.h:

(WebCore::ServiceWorkerContextData::ImportedScript::isolatedCopy const):
(WebCore::ServiceWorkerContextData::ImportedScript::decode):
(WebCore::ServiceWorkerContextData::decode):

  • Store scripts as SharedBuffer instead of String, so that they can hold mmap'd data.
  • Add scriptBufferToString() / stringToScriptBuffer() utility functions to convert script sources between String and SharedBuffer.
  • workers/service/context/ServiceWorkerThread.cpp:

(WebCore::ServiceWorkerThread::ServiceWorkerThread):
Convert from script from SharedBuffer to String.

  • workers/service/server/RegistrationDatabase.cpp:

(WebCore::recordsTableSchema):
Update database schema and bump version now that we no longer store the
service worker script inside the SQLite database. Instead, those scripts
are stored separately on the filesystem via SWScriptStorage.

(WebCore::ImportedScriptAttributes::encode const):
(WebCore::ImportedScriptAttributes::decode):
Introduce new ImportedScriptAttributes struct which contains all the data
members of ServiceWorkerContextData::ImportedScript, except for the actual
script source. We now save a HashMap of ImportedScriptAttributes in the
databasae instead of HashMap of ImportedScript since we no longer want to
store imported script sources in the database, but rather store them
separately on the file system.

(WebCore::stripScriptSources):
Utility function to convert a HashMap of ServiceWorkerContextData::ImportedScript
into a HashMap of ImportedScriptAttributes (identical but without the script
source), ready to save in the SQLite database.

(WebCore::populateScriptSourcesFromDisk):
Utility function to construct a HashMap of ServiceWorkerContextData::ImportedScript
from a HasMap of ImportedScriptAttributes, coming from the SQLiteDatabase. The
missing script sources are fetched from the disk via SWScriptStorage.

(WebCore::RegistrationDatabase::~RegistrationDatabase):
Make sure we destroy the SWScriptStorage on the background queue for thread-safety.

(WebCore::RegistrationDatabase::scriptStorageDirectory const):
Returns the path on the filesystem where service worker scripts are stored.

(WebCore::RegistrationDatabase::scriptStorage):
Constructs (if necessary) a SWScriptStorage and return it.

(WebCore::RegistrationDatabase::clearAll):
Make sure we clear all the service worker scripts on disk in addition to the database,
now that they are stored separately.

(WebCore::RegistrationDatabase::doPushChanges):

  • Stop storing the script sources in the SQLite database, and instead store them as separate

files on the file system via SWScriptStorage.

  • Improve logging
  • When done storing the scripts to disk, send these new mmap'd versions back to the SWServerWorker on the main thread, so that it can replace it's heavy script sources with these ones. This helps reduce memory usage.

(WebCore::RegistrationDatabase::importRecords):

  • Load the script sources from the disk via SWScriptStorage, now that they are no longer stored in the SQLite database.
  • Improve logging.
  • workers/service/server/RegistrationDatabase.h:
  • workers/service/server/RegistrationStore.cpp:

(WebCore::RegistrationStore::didSaveWorkerScriptsToDisk):

  • workers/service/server/RegistrationStore.h:

Pass scripts that were saved to disk from the store to the SWServerWorker so that it
can replace its scripts sources with those new mmap'd version, in order to save memory.

  • workers/service/server/SWScriptStorage.cpp: Added.

(WebCore::hashURL):
(WebCore::SWScriptStorage::SWScriptStorage):
(WebCore::SWScriptStorage::registrationDirectory const):
(WebCore::SWScriptStorage::scriptPath const):
(WebCore::SWScriptStorage::store):
(WebCore::SWScriptStorage::retrieve):
(WebCore::SWScriptStorage::clear):

  • workers/service/server/SWScriptStorage.h: Added.

Add SWScriptStorage to deal with the storage / retrieval of Service
Worker scripts to / from disk, as files on the file system. When
going a retrieval, we return a script as a SharedBuffer which usually contains
mmap'd() data (we don't use mmap() for files that are smaller than the PAGE_SIZE).
The scripts reside in a Scripts/ folder, beside the database. The scripts are separated
by origin (using SHA256 of the origin as folder name with salt), and then by registration (by
using SHA256 of the registration scope as subfolder name with salt). The file name for the script
is a SHA256 of the script URL with salt.

  • workers/service/server/SWServer.cpp:

(WebCore::SWServer::didSaveWorkerScriptsToDisk):
Pass scripts that were saved to disk from the store to the SWServerWorker so that it
can replace its scripts sources with those new mmap'd version, in order to save memory.

(WebCore::SWServer::updateWorker):
Convert script from String to SharedBuffer.

  • workers/service/server/SWServerJobQueue.cpp:

(WebCore::SWServerJobQueue::scriptFetchFinished):
Convert script from SharedBuffer to String.

  • workers/service/server/SWServerToContextConnection.cpp:

(WebCore::SWServerToContextConnection::setScriptResource):

  • workers/service/server/SWServerToContextConnection.h:

Take in a ServiceWorkerContextData::ImportedScript for convenience, instead of taking
all its data members as separate parameters.

  • workers/service/server/SWServerWorker.cpp:

(WebCore::SWServerWorker::SWServerWorker):

  • workers/service/server/SWServerWorker.h:

(WebCore::SWServerWorker::script const):
Use SharedBuffer type for script instead of String type, so that we can hold on the
mmap'd data and reduce memory usage.

Source/WebKit:

  • NetworkProcess/ServiceWorker/WebSWServerToContextConnection.messages.in:

Pass a ServiceWorkerContextData::ImportedScript struct in the SetScriptResource IPC
for convenience. We used to pass the ImportedScript data members separately.

  • NetworkProcess/cache/CacheStorageEngine.cpp:

(WebKit::CacheStorage::Engine::clearAllCachesFromDisk):
(WebKit::CacheStorage::Engine::clearCachesForOriginFromDirectories):
(WebKit::CacheStorage::Engine::deleteNonEmptyDirectoryOnBackgroundThread):

  • NetworkProcess/cache/CacheStorageEngine.h:
  • NetworkProcess/cache/NetworkCacheFileSystem.cpp:
  • NetworkProcess/cache/NetworkCacheFileSystem.h:
  • NetworkProcess/cache/NetworkCacheStorage.cpp:

(WebKit::NetworkCache::Storage::deleteOldVersions):
Drop deleteDirectoryRecursively() implementation and use the existing
FileSystem::deleteNonEmptyDirectory() in wtf instead.

  • NetworkProcess/cache/NetworkCacheData.cpp:

(WebKit::NetworkCache::Data::mapToFile const):
Moved some of the mapToFile() logic to WTF, so that it can be reused.

  • Shared/WebCoreArgumentCoders.cpp:

(IPC::encodeSharedBuffer):
(IPC::decodeSharedBuffer):
Update SharedBuffer's IPC argument coder to distinguish a null SharedBuffer
and an empty one. We now use SharedBuffer to store service worker script sources
and it is possible for the script sources to be empty (and they are in some of
our API tests).

  • WebProcess/Storage/WebSWContextManagerConnection.cpp:

(WebKit::WebSWContextManagerConnection::setScriptResource):
Pass a ServiceWorkerContextData::ImportedScript struct in the SetScriptResource IPC
for convenience. We used to pass the ImportedScript data members separately.

Source/WTF:

  • wtf/FileSystem.cpp:

(WTF::FileSystemImpl::deleteNonEmptyDirectory):
Add an implementation of FileSystem::deleteNonEmptyDirectory() on all supported platforms.
We previously only had implemetations for Cocoa and Windows.

(WTF::FileSystemImpl::mapToFile):
Moved most of the mapToFile() logic from NetworkCacheData::mapToFile() to FileSystem, so that
it can be reused by the new SWScriptStorage class. It creates the destination file, mmap's it,
writes the provided data to it and then returns the mmap'd file.

(WTF::FileSystemImpl::readOrMakeSalt):
Move readOrMakeSalt() from NetworkCacheData to FileSystem so that it can be reused by the new
SWScriptStorage.

  • wtf/FileSystem.h:

Tools:

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/WebKitCocoa/SimpleServiceWorkerRegistrations-4.sqlite3: Removed.

Drop outdated pre-baked service worker registration database as it is no longer
needed and it is a pain to keep up to date.

  • TestWebKitAPI/Tests/WTF/FileSystem.cpp:

(TestWebKitAPI::TEST_F):
Add API test coverage for FileSystem::deleteNonEmptyDirectory(). It is not a new API but it
had no tests, it used more in this patch and we now have an implementation on all supported
platforms.

  • TestWebKitAPI/Tests/WebKitCocoa/ServiceWorkerBasic.mm:
  • TestWebKitAPI/Tests/WebKitCocoa/WebsiteDataStoreCustomPaths.mm:
  • Tweak service worker tests so that they expect a version 6 database instead of version 5, since I updated the database scheme and bumped the version.
  • Update test that was relying on a pre-baked service worker database file (with old schema) and have it dynamically generate the database instead by loading a page that registers a service worker.
9:22 PM Changeset in webkit [275266] by Ruben Turcios
  • 1 copy in tags/Safari-611.1.21.0.12

Tag Safari-611.1.21.0.12.

9:20 PM Changeset in webkit [275265] by Devin Rousso
  • 6 edits in trunk/LayoutTests

[Catalina WK2] 5 media/modern-media-controls/tracks-support tests consistently timing out
https://bugs.webkit.org/show_bug.cgi?id=223673
<rdar://problem/75769577>

Unreviewed, check that the subtitlesMenu exists before attempting to look at its children.

  • 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:
9:18 PM Changeset in webkit [275264] by Ruben Turcios
  • 1 copy in tags/Safari-611.1.21.161.2

Tag Safari-611.1.21.161.2.

8:30 PM Changeset in webkit [275263] by clopez@igalia.com
  • 3 edits in trunk/LayoutTests

[GTK][WPE] Gardening of tests.

Unreviewed gardening

Update list of expected failures.

  • platform/glib/TestExpectations:
  • platform/gtk/TestExpectations:
8:01 PM Changeset in webkit [275262] by Devin Rousso
  • 4 edits in trunk/Source

REGRESSION(r274607): media controls script is visible in Web Inspector even without the engineering "Show WebKit-internal scripts" enabled
https://bugs.webkit.org/show_bug.cgi?id=223961

Reviewed by Yusuke Suzuki.

It turns out that Web Inspector will only ignore scripts that have a source URL directive
that matches __InjectedScript_*.js, not those that have a (source) URL matching that.

In addition to Web Inspector ignoring these scripts in the UI, it will also cause the
Debugger to not pause in scripts with a matching source URL directive (unless the
local build engineering only "Pause in WebKit-internal scripts" is enabled).

Source/JavaScriptCore:

  • Scripts/make-js-file-arrays.py:

(main):
Add a //# sourceURL=__InjectedScript_*.js to the contents before it's encoded.

Source/WebCore:

  • html/HTMLMediaElement.cpp:

(WebCore::HTMLMediaElement::ensureMediaControlsInjectedScript):
Change the ScriptSourceCode here to not have a URL and have make-js-file-arrays.py
add a //# sourceURL=__InjectedScript_*.js to the contents before it's encoded.

7:55 PM Changeset in webkit [275261] by weinig@apple.com
  • 18 edits
    1 copy
    2 adds in trunk/Source

JSGlobalObject's m_customGetterFunctionMap and m_customSetterFunctionMap should be sets, not maps, and should use both the identifier and function pointer as the key
https://bugs.webkit.org/show_bug.cgi?id=223613

Reviewed by Saam Barati.

Source/JavaScriptCore:

  • Adds a generic WeakGCSet class to go with the existing WeakGCMap.
  • Renames WeakGCMapBase to WeakGCHashTable, moves it to its own file and now uses it as the base class of both WeakGCSet and WeakGCMap.
  • Replaces JSGlobalObject's customGetterFunctionMap/customSetterFunctionMap with customGetterFunctionSet/customSetterFunctionSet, using the new WeakGCSet, and updates them to use both the function pointer and property name for the key, rather than just the function pointer which is what the previous code did. This allows multiple custom functions to use the same underlying function pointer as long as they have distinct property names, which is going to be used to optimize the bindings for CSSStyleDeclaration.

Add new files.

  • heap/Heap.cpp:

(JSC::Heap::runEndPhase):
(JSC::Heap::pruneStaleEntriesFromWeakGCHashTables):
(JSC::Heap::registerWeakGCHashTable):
(JSC::Heap::unregisterWeakGCHashTable):
(JSC::Heap::pruneStaleEntriesFromWeakGCMaps): Deleted.
(JSC::Heap::registerWeakGCMap): Deleted.
(JSC::Heap::unregisterWeakGCMap): Deleted.

  • heap/Heap.h:

Update for new name. WeakGCMapBase -> WeakGCHashTable.

  • runtime/JSCInlines.h:

Add WeakGCSetInlines.h

  • runtime/JSCustomGetterFunction.cpp:

(JSC::JSC_DEFINE_HOST_FUNCTION):
(JSC::JSCustomGetterFunction::JSCustomGetterFunction):
(JSC::JSCustomGetterFunction::create):

  • runtime/JSCustomGetterFunction.h:
  • runtime/JSCustomSetterFunction.cpp:

(JSC::JSC_DEFINE_HOST_FUNCTION):
(JSC::JSCustomSetterFunction::JSCustomSetterFunction):
(JSC::JSCustomSetterFunction::create):

  • runtime/JSCustomSetterFunction.h:

Add helper type CustomFunctionPointer and helper function customFunctionPointer()
to allow some generic hashing code to run on either JSCustomGetterFunction
or JSCustomSetterFunction.

  • runtime/JSGlobalObject.cpp:

(JSC::JSGlobalObject::JSGlobalObject):

  • runtime/JSGlobalObject.h:

(JSC::JSGlobalObject::WeakCustomGetterOrSetterHash::hash):
(JSC::JSGlobalObject::WeakCustomGetterOrSetterHash::equal):
(JSC::JSGlobalObject::customGetterFunctionSet):
(JSC::JSGlobalObject::customSetterFunctionSet):
(JSC::JSGlobalObject::customGetterFunctionMap): Deleted.
(JSC::JSGlobalObject::customSetterFunctionMap): Deleted.
Replace m_customGetterFunctionMap/m_customSetterFunctionMap with
m_customGetterFunctionSet/m_customSetterFunctionSet. As the key is included
in the value, it saves space to use a set rather than a map. We now also
hash and compare both the function pointer and the property name to allow
sharing implementations.

  • runtime/JSObject.cpp:

(JSC::WeakCustomGetterOrSetterHashTranslator::hash):
(JSC::WeakCustomGetterOrSetterHashTranslator::equal):
(JSC::createCustomGetterFunction):
(JSC::createCustomSetterFunction):
Update creation functions to use the new sets, making use of the
ensureValue function and a HashTranslator allowing the use of a
std::pair<PropertyName, FunctionPointer> as an alternative lookup
key. This allows us to avoid creating the JSCustomGetterFunction/JSCustomSetterFunction
pointer if one with the same property name and function pointer are
already in the set.

  • runtime/WeakGCHashTable.h: Added.

(JSC::WeakGCHashTable::~WeakGCHashTable):
Moved from WeakGCMap and renamed as it is now the base of both
WeakGCMap and WeakGCSet.

  • runtime/WeakGCMap.h:

Update to use new WeakGCHashTable base class.

  • runtime/WeakGCMapInlines.h:

(JSC::KeyTraitsArg>::WeakGCMap):
(JSC::KeyTraitsArg>::~WeakGCMap):
Update for new Heap function names for WeakGCHashTable.

  • runtime/WeakGCSet.h: Added.
  • runtime/WeakGCSetInlines.h: Added.

(JSC::TraitsArg>::WeakGCSet):
(JSC::TraitsArg>::~WeakGCSet):
(JSC::TraitsArg>::find):
(JSC::TraitsArg>::find const):
(JSC::TraitsArg>::contains const):
(JSC::TraitsArg>::pruneStaleEntries):
Added a minimal WeakGCSet based on WeakGCMap.

Source/WTF:

Adds a heterogenous HashSet::ensure, which allows lazy construction of the value to
insert into the HashSet only if the heterogenous key (e.g. a key + HashTranslator
that are not the same as the HashSet's ValueType) does not match any item in the
set. For example given a set of ExpensiveToConstruct, but uniquely identifiable
by CheapToConstruct:

HashSet<ExpensiveToConstruct> hashSet;
...
struct Translator {

static unsigned hash(const CheapToConstruct& key)
{

return key.hash();

}
static bool equal(const ExpensiveToConstruct& a, const CheapToConstruct& b)
{

return a == b;

}

};

hashSet.ensure<Translator>(CheapToConstruct { ... }, [] {

return ExpensiveToConstruct { ... };

});

This will be used by the custom getter/setter sets to avoid constructing the GC objects
unless they are really needed.

Also took the opertunity to replace some typedefs with usings, and fixed some comments.

  • wtf/HashSet.h:

(WTF::Traits>::ensure):

7:52 PM Changeset in webkit [275260] by jiewen_tan@apple.com
  • 11 edits
    6 adds in trunk

PCM: Introduce PrivateClickMeasurementNetworkLoader
https://bugs.webkit.org/show_bug.cgi?id=222217
<rdar://74817863>

Reviewed by Youenn Fablet.

Source/WebKit:

This patch refactors PrivateClickMeasurementManager to use a newly introduced PrivateClickMeasurementNetworkLoader
instead of the PingLoad to handle network traffics such that PCMM can receive and process response bodies.

PrivateClickMeasurementNetworkLoader is a stripped down version of the ServiceWorkerSoftUpdateLoader, which is also
a derived class of NetworkLoadClient.

Covered by new test contents within existing test files.

  • NetworkProcess/NetworkSession.cpp:

(WebKit::NetworkSession::NetworkSession):

  • NetworkProcess/NetworkSession.h:

(WebKit::NetworkSession::addPrivateClickMeasurementNetworkLoader):
(WebKit::NetworkSession::removePrivateClickMeasurementNetworkLoader):
Modifies the PCMM to use PCMNL. And then introduces a hash table to manage the lifetime of each PCMNL.

  • NetworkProcess/PrivateClickMeasurementManager.cpp:

(WebKit::PrivateClickMeasurementManager::PrivateClickMeasurementManager):
(WebKit::generateNetworkLoadParameters):
(WebKit::generateNetworkLoadParametersForHttpPost):
(WebKit::generateNetworkLoadParametersForHttpGet):
(WebKit::PrivateClickMeasurementManager::getTokenPublicKey):
(WebKit::PrivateClickMeasurementManager::getSignedUnlinkableToken):
(WebKit::PrivateClickMeasurementManager::fireConversionRequestImpl):
(WebKit::generateNetworkResourceLoadParameters): Deleted.
(WebKit::generateNetworkResourceLoadParametersForHttpPost): Deleted.
(WebKit::generateNetworkResourceLoadParametersForHttpGet): Deleted.

  • NetworkProcess/PrivateClickMeasurementManager.h:

(WebKit::PrivateClickMeasurementManager::setNetworkLoadFunction):
(WebKit::PrivateClickMeasurementManager::setPingLoadFunction): Deleted.
Modifies the PCMM to use PCMNL. Specifically, changes the token_public_key and unlinkable_token to be extracted
from the JSON content of the response.

  • NetworkProcess/PrivateClickMeasurementNetworkLoader.cpp: Added.

(WebKit::PrivateClickMeasurementNetworkLoader::start):
(WebKit::PrivateClickMeasurementNetworkLoader::PrivateClickMeasurementNetworkLoader):
(WebKit::PrivateClickMeasurementNetworkLoader::fail):
(WebKit::PrivateClickMeasurementNetworkLoader::willSendRedirectedRequest):
(WebKit::PrivateClickMeasurementNetworkLoader::didReceiveResponse):
(WebKit::PrivateClickMeasurementNetworkLoader::didReceiveBuffer):
(WebKit::PrivateClickMeasurementNetworkLoader::didFinishLoading):
(WebKit::PrivateClickMeasurementNetworkLoader::didFailLoading):
(WebKit::PrivateClickMeasurementNetworkLoader::didComplete):

  • NetworkProcess/PrivateClickMeasurementNetworkLoader.h: Added.

Introduces the PCMNL.

  • NetworkProcess/webrtc/RTCDataChannelRemoteManagerProxy.h:

Fixes an Unified Build issue.

  • Sources.txt:
  • WebKit.xcodeproj/project.pbxproj:

Some paperwork.

LayoutTests:

  • http/tests/privateClickMeasurement/resources/fraudPreventionTestURL.py:

Changes the token_public_key and unlinkable_token to be returned via JSON contents.

7:34 PM Changeset in webkit [275259] by Robert Jenner
  • 2 edits in trunk/LayoutTests

[ macOS Debug ] imported/w3c/web-platform-tests/cors/redirect-preflight.htm is a flakey text failure
https://bugs.webkit.org/show_bug.cgi?id=223976

Unreviewed test gardening.

  • platform/mac/TestExpectations: Updated test expectations to Pass Failure while test is reviewed.
7:26 PM Changeset in webkit [275258] by Robert Jenner
  • 2 edits in trunk/LayoutTests

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

Unreviewed test gardening.

  • platform/mac/TestExpectations: Updating test expectations to Pass Failure while test is reviewed.
7:21 PM Changeset in webkit [275257] by Robert Jenner
  • 2 edits in trunk/LayoutTests

[mac-wk2] LayoutTest fast/mediastream/getUserMedia-webaudio.html is a flaky timeout
https://bugs.webkit.org/show_bug.cgi?id=170960

Unreviewed test gardening.

  • platform/mac-wk2/TestExpectations: Updating test expectations to include Failure.
6:54 PM Changeset in webkit [275256] by Robert Jenner
  • 2 edits in trunk/LayoutTests

[ macOS ] inspector/protocol/condition.html is a flakey timeout
https://bugs.webkit.org/show_bug.cgi?id=223975

Unreviewed test gardening.

  • platform/mac/TestExpectations: Updated test expectations to Pass Timeout while test is reviewed.
6:50 PM Changeset in webkit [275255] by Alan Coon
  • 3 edits
    2 adds in branches/safari-611.1.21.0-branch

Cherry-pick r275214. rdar://problem/76032705

[LFC][Integration] Elements that overflow inline-blocks are not hit tested correctly
https://bugs.webkit.org/show_bug.cgi?id=223932
rdar://75888718

Reviewed by Zalan Bujtas.
Source/WebCore:

If an inline block has overflowing children (for example due to negative margin) we may fail to hit test them.

Test: fast/inline-block/hit-test-negative-margin-child.html

  • layout/integration/LayoutIntegrationLineLayout.cpp: (WebCore::LayoutIntegration::LineLayout::hitTest):

Always descend into inline blocks even if their run didn't hit.

LayoutTests:

  • fast/inline-block/hit-test-negative-margin-child-expected.txt: Added.
  • fast/inline-block/hit-test-negative-margin-child.html: Added.

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

6:50 PM Changeset in webkit [275254] by Alan Coon
  • 8 edits in branches/safari-611.1.21.0-branch/Source

Versioning.

WebKit-7611.1.21.0.12

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

Nullptr crash in Crash in WebCore::positionInParentBeforeNode(..) where a NULL check is missing.
https://bugs.webkit.org/show_bug.cgi?id=223639

Patch by Venky Dass <yaranamavenkataramana@apple.com> on 2021-03-30
Reviewed by Ryosuke Niwa.

Source/WebCore:

In positionInParentBeforeNode(..) there is a null check missing on a pointer - hence the crash.

Test: LayoutTests/editing/inserting/edit-style-and-insert-image.html

  • editing/ReplaceSelectionCommand.cpp:

(WebCore::ReplaceSelectionCommand::doApply):

LayoutTests:

Adding a regression test case.

  • editing/inserting/edit-style-and-insert-image-expected.txt: Added.
  • editing/inserting/edit-style-and-insert-image.html: Added.
6:19 PM Changeset in webkit [275252] by Robert Jenner
  • 2 edits in trunk/LayoutTests

[ macOS Debug ] imported/w3c/web-platform-tests/xhr/xhr-timeout-longtask.any.worker.html is a flakey text failure
https://bugs.webkit.org/show_bug.cgi?id=223973

unreviewed test gardening.

  • platform/mac/TestExpectations: Updated test expectations to Pass Failure while test is reviewed.
5:37 PM Changeset in webkit [275251] by Amir Mark Jr.
  • 2 edits in trunk/LayoutTests

[BigSur WK1 Debug] imported/w3c/web-platform-tests/xhr/event-upload-progress.any.html is a flaky failure
https://bugs.webkit.org/show_bug.cgi?id=223944

Unreviewed test gardening.

  • platform/mac-wk1/TestExpectations:
5:31 PM Changeset in webkit [275250] by Robert Jenner
  • 2 edits in trunk/LayoutTests

[ macOS wk2 ] imported/w3c/web-platform-tests/webaudio/the-audio-api/the-audiocontext-interface/processing-after-resume.https.html is a flakey text failure
https://bugs.webkit.org/show_bug.cgi?id=223969

Unreviewed test gardening.

  • platform/mac-wk2/TestExpectations: Updated test expectations to Pass Failure while test is reviewed.
4:57 PM Changeset in webkit [275249] by Robert Jenner
  • 2 edits in trunk/LayoutTests

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

Unreviewed test gardening.

  • platform/mac/TestExpectations: Updated test expectations to Pass Failure while test can be reviewed.
4:25 PM Changeset in webkit [275248] by jiewen_tan@apple.com
  • 2 edits in trunk/Source/WebKit

Allow WebAuthn process talk to the ASD
https://bugs.webkit.org/show_bug.cgi?id=223947
<rdar://75908828>

Reviewed by Brent Fulgham.

  • Resources/SandboxProfiles/ios/com.apple.WebKit.WebAuthn.sb:
4:12 PM Changeset in webkit [275247] by mark.lam@apple.com
  • 6 edits in trunk/Source

Add disableForwardingVPrintfStdErrToOSLog() and use it in the jsc shell.
https://bugs.webkit.org/show_bug.cgi?id=223963

Reviewed by Saam Barati.

Source/JavaScriptCore:

This prevents automatic forwarding of vprintf_stderr_common() to os_log_with_args(),
which results in duplicate output when using the jsc shell. As a result, ASSERT
fail messages and crash stack traces will be more readable.

  • jsc.cpp:

(main):

Source/WTF:

  • wtf/Assertions.cpp:

(WTF::disableForwardingVPrintfStdErrToOSLog):

  • wtf/Assertions.h:
  • wtf/WTFConfig.h:
4:05 PM Changeset in webkit [275246] by Ruben Turcios
  • 4 edits in branches/safari-612.1.9-branch/Source/WebKit/FeatureFlags

Apply patch. rdar://problem/76023886

Apply patch. rdar://76023886

4:03 PM Changeset in webkit [275245] by Robert Jenner
  • 3 edits in trunk/LayoutTests

[ Mac wk2 and iOS wk2 ] webrtc/libwebrtc/descriptionGetters.html is flaky failing.
https://bugs.webkit.org/show_bug.cgi?id=214084

Unreviewed test gardening.

  • platform/ios-wk2/TestExpectations: removed release tag, as it is occurring outside of release.
  • platform/mac-wk2/TestExpectations: removed release tag, as it is occurring outside of release.
4:00 PM Changeset in webkit [275244] by commit-queue@webkit.org
  • 4 edits in trunk/Source/WebKit

REGRESSION (r275172): Many com.apple.WebKit.Networking.Development crashes appearing in "other crashes"
https://bugs.webkit.org/show_bug.cgi?id=223952

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

Use OS_REASON_FLAG_NO_CRASH_REPORT to prevent crash reports. xpc_connection_kill didn't generate crash reports.

  • Platform/IPC/cocoa/ConnectionCocoa.mm:

(IPC::ConnectionTerminationWatchdog::watchdogTimerFired):
(IPC::Connection::kill):

  • Platform/spi/Cocoa/ReasonSPI.h:
  • UIProcess/Launcher/mac/ProcessLauncherMac.mm:

(WebKit::ProcessLauncher::platformInvalidate):

3:46 PM Changeset in webkit [275243] by mark.lam@apple.com
  • 6 edits
    2 adds in trunk/Source/JavaScriptCore

Add Options::exitOnResourceExhaustion() to enable exiting instead of crashing on resource exhaustion.
https://bugs.webkit.org/show_bug.cgi?id=223959
rdar://63934158

Reviewed by Tadeu Zagallo.

This is useful to unblock fuzzers from false positive crashes due to resource
exhaustion. Currently, this is only applied to StructureID exhaustion.

Since we're adding this facility, we might as well implement it in such a way that
it can be easily deployed for other types of resource exhaustion as well.

  • CMakeLists.txt:
  • JavaScriptCore.xcodeproj/project.pbxproj:
  • Sources.txt:
  • runtime/OptionsList.h:
  • runtime/ResourceExhaustion.cpp: Added.

(JSC::handleResourceExhaustion):

  • runtime/ResourceExhaustion.h: Added.
  • runtime/StructureIDTable.cpp:

(JSC::StructureIDTable::resize):

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

[macOS] Reduce logging for uninteresting sandbox violations
https://bugs.webkit.org/show_bug.cgi?id=223943
<rdar://problem/76014115>

Reviewed by Per Arne Vollan.

Testing has shown some IOKit properties needed by the macOS Network Process, and a handful of items needed when running in recovery mode. We should
allow these items to support proper function and to reduce telemetry for items that we don't need to learn more about.

  • NetworkProcess/mac/com.apple.WebKit.NetworkProcess.sb.in:
  • WebProcess/com.apple.WebProcess.sb.in:
3:01 PM Changeset in webkit [275241] by rniwa@webkit.org
  • 5 edits in trunk/Source/WebCore

Occasional debug assert in GenericTaskQueue::~GenericTaskQueue
https://bugs.webkit.org/show_bug.cgi?id=223913

Reviewed by Eric Carlson.

Eagerly initialize WeakPtrImpl so that we don't hit debug assertions.

Also made Performance object use EventLoop.

No new tests since there is no test case that reliably reproduces this issue.

  • dom/TaskSource.h:

(TaskSource): Added PerformanceTimeline.

  • page/Performance.cpp:

(WebCore::Performance::Performance):
(WebCore::Performance::contextDestroyed):
(WebCore::Performance::queueEntry): Use EventLoopTaskGroup instead of GenericTaskQueue to deliver entries.

  • page/Performance.h:
  • platform/GenericTaskQueue.h:

(WebCore::GenericTaskQueue::GenericTaskQueue): Eagerly initialize WeakPtrImpl.
Also assert that we're creating this object in the main thread.

3:01 PM Changeset in webkit [275240] by mmaxfield@apple.com
  • 4 edits in trunk/Source/WebKit

Address post-commit comments on r275180
https://bugs.webkit.org/show_bug.cgi?id=223915

Reviewed by Kimmo Kinnunen.

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

(WebKit::RemoteRenderingBackendProxy::waitForDidCreateImageBufferBackend):
(WebKit::RemoteRenderingBackendProxy::waitForDidFlush):
(WebKit::RemoteRenderingBackendProxy::sharedMemoryForGetImageData):
(WebKit::RemoteRenderingBackendProxy::waitForGetImageDataToComplete):
(WebKit::RemoteRenderingBackendProxy::getDataURLForImageBuffer):
(WebKit::RemoteRenderingBackendProxy::getDataForImageBuffer):
(WebKit::RemoteRenderingBackendProxy::getBGRADataForImageBuffer):
(WebKit::RemoteRenderingBackendProxy::getShareableBitmap):

  • WebProcess/GPU/graphics/RemoteRenderingBackendProxy.h:
2:51 PM Changeset in webkit [275239] by jonlee@apple.com
  • 5 edits in trunk/Source/WebKit

Remove obsolete WebGL2 feature flag
https://bugs.webkit.org/show_bug.cgi?id=223945

Reviewed by Darin Adler.

  • FeatureFlags/WebKit-appletvos.plist: Feature flag is not referenced anywhere.
  • FeatureFlags/WebKit-ios.plist:
  • FeatureFlags/WebKit-macos.plist:
  • FeatureFlags/WebKit-watchos.plist:
2:33 PM Changeset in webkit [275238] by Alan Coon
  • 3 edits
    2 adds in branches/safari-611.1.21.161-branch

Cherry-pick r275214. rdar://problem/76022033

[LFC][Integration] Elements that overflow inline-blocks are not hit tested correctly
https://bugs.webkit.org/show_bug.cgi?id=223932
rdar://75888718

Reviewed by Zalan Bujtas.
Source/WebCore:

If an inline block has overflowing children (for example due to negative margin) we may fail to hit test them.

Test: fast/inline-block/hit-test-negative-margin-child.html

  • layout/integration/LayoutIntegrationLineLayout.cpp: (WebCore::LayoutIntegration::LineLayout::hitTest):

Always descend into inline blocks even if their run didn't hit.

LayoutTests:

  • fast/inline-block/hit-test-negative-margin-child-expected.txt: Added.
  • fast/inline-block/hit-test-negative-margin-child.html: Added.

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

2:31 PM Changeset in webkit [275237] by Alan Coon
  • 8 edits in branches/safari-611.1.21.161-branch/Source

Versioning.

WebKit-7611.1.21.161.2

2:27 PM Changeset in webkit [275236] by Ruben Turcios
  • 1 copy in tags/Safari-612.1.8.1

Tag Safari-612.1.8.1.

2:23 PM Changeset in webkit [275235] by Peng Liu
  • 7 edits in trunk/Source

[GPUP] Add an IPC message to implement RemoteImageDecoderAVF::clearFrameBufferCache()
https://bugs.webkit.org/show_bug.cgi?id=223707

Reviewed by Youenn Fablet.

Source/WebCore:

No change in observable functionality.

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

Export method clearFrameBufferCache() so that we can call it from WebKit.

Source/WebKit:

  • GPUProcess/media/RemoteImageDecoderAVFProxy.cpp:

(WebKit::RemoteImageDecoderAVFProxy::deleteDecoder):
Replace const ImageDecoderIdentifier& with ImageDecoderIdentifier.
(WebKit::RemoteImageDecoderAVFProxy::encodedDataStatusChanged): Ditto.
(WebKit::RemoteImageDecoderAVFProxy::setExpectedContentSize): Ditto.
(WebKit::RemoteImageDecoderAVFProxy::setData): Ditto.
(WebKit::RemoteImageDecoderAVFProxy::createFrameImageAtIndex): Ditto.
(WebKit::RemoteImageDecoderAVFProxy::clearFrameBufferCache):

  • GPUProcess/media/RemoteImageDecoderAVFProxy.h:
  • GPUProcess/media/RemoteImageDecoderAVFProxy.messages.in:

Add IPC message clearFrameBufferCache(), and replace uint32_t with size_t
because IPC messages support it now.

  • WebProcess/GPU/media/RemoteImageDecoderAVF.cpp:

(WebKit::RemoteImageDecoderAVF::setData):
(WebKit::RemoteImageDecoderAVF::clearFrameBufferCache):
Implement the same behavior as ImageDecoderAVFObjC::clearFrameBufferCache().
This change will reduce the peak memory usage.

2:14 PM Changeset in webkit [275234] by Robert Jenner
  • 3 edits in trunk/LayoutTests

[ macOS iOS ] crypto/crypto-random-values-oom.html is a flakey timeout
https://bugs.webkit.org/show_bug.cgi?id=223949

Unreviewed test gardening.

  • platform/ios-simulator-wk2/TestExpectations: Updated expectations to Pass Timeout while test is reviewed.
  • platform/mac/TestExpectations: Updated expectations to Pass Timeout while test is reviewed.
1:59 PM Changeset in webkit [275233] by Ryan Haddad
  • 2 edits in trunk/Source/JavaScriptCore

Ensure that GlobalPropertyInfo is allocated on the stack.
https://bugs.webkit.org/show_bug.cgi?id=223911

Unreviewed test gardening.

Rebaseline builtins generator tests after r275212.

  • Scripts/tests/builtins/expected/WebCoreJSBuiltins.h-result:
1:57 PM Changeset in webkit [275232] by Ryan Haddad
  • 2 edits in trunk/JSTests

Unreviewed test gardening.

  • stress/early-return-from-builtin.js: Disable this test for memoryLimited configurations.
1:34 PM Changeset in webkit [275231] by Ruben Turcios
  • 1 delete in tags/Safari-612.1.9

Delete tag.

1:25 PM Changeset in webkit [275230] by Antti Koivisto
  • 2 edits in trunk/Source/WebCore

Nullptr crash in applyCommonButtonPaddingToStyle
https://bugs.webkit.org/show_bug.cgi?id=223917
rdar://57262957

Reviewed by Zalan Bujtas.

  • rendering/RenderThemeIOS.mm:

(WebCore::applyCommonButtonPaddingToStyle):

Null check frame.

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

Add more information to GC verifier verbose dumps.
https://bugs.webkit.org/show_bug.cgi?id=223951

Reviewed by Yusuke Suzuki.

  • heap/VerifierSlotVisitor.cpp:

(JSC::VerifierSlotVisitor::dumpMarkerData):

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

Release assert in compareAnimationsByCompositeOrder
https://bugs.webkit.org/show_bug.cgi?id=223368

Patch by Frédéric Wang <fwang@igalia.com> on 2021-03-30
Reviewed by Antoine Quint.

Source/WebCore:

AnimationTimeline::cancelDeclarativeAnimationsForStyleable currently only calls cancel() on
the declarative animation, which means the owning element is still associated to the
animation and that one continues to be accessible via Element's getAnimations(). When members
like pause() are called on that animation, one can obtain inconsistent state for
KeyframeEffectStack, leading to a debug ASSERT(!cssAnimationList->isEmpty()); and a
RELEASE_ASSERT_NOT_REACHED() in compareCSSAnimations(). This patch forces the owning element
to be clear during cancelDeclarativeAnimationsForStyleable in order to address these issues.
More code refactoring and cleanup should be done in follow-up patches, though.

Test: animations/animation-remove-element-crash.html

  • animation/AnimationTimeline.cpp:

(WebCore::AnimationTimeline::cancelDeclarativeAnimationsForStyleable): Use cancelFromStyle()
so that the owning element is also cleared.

LayoutTests:

Add regression test.

  • animations/animation-remove-element-crash-expected.txt: Added.
  • animations/animation-remove-element-crash.html: Added.
12:42 PM Changeset in webkit [275227] by graouts@webkit.org
  • 6 edits in trunk

CSS properties backed by StyleImage should not interpolate when one of the values is "none"
https://bugs.webkit.org/show_bug.cgi?id=223929

Reviewed by Dean Jackson.

LayoutTests/imported/w3c:

Mark 76 new PASS results.

  • web-platform-tests/css/css-backgrounds/animations/background-image-interpolation-expected.txt:
  • web-platform-tests/css/css-backgrounds/animations/border-image-source-interpolation-expected.txt:
  • web-platform-tests/css/css-lists/animations/list-style-image-interpolation-expected.txt:

Source/WebCore:

  • animation/CSSPropertyAnimation.cpp:

(WebCore::blendFunc):

12:17 PM Changeset in webkit [275226] by Jonathan Bedard
  • 2 edits in trunk/Tools

[resultsdbpy] Return new-style commits (Follow-up fix)
https://bugs.webkit.org/show_bug.cgi?id=223262
<rdar://problem/75483361>

Unreviewed follow-up fix.

  • Scripts/libraries/resultsdbpy/resultsdbpy/controller/commit_controller.py:

(CommitController.register): Allow branch in commit uploads.

12:14 PM Changeset in webkit [275225] by Peng Liu
  • 5 edits in trunk/Source/WebCore

Rename MediaElementSession::playbackPermitted() to MediaElementSession::playbackStateChangePermitted()
https://bugs.webkit.org/show_bug.cgi?id=220939

Reviewed by Youenn Fablet.

A follow-up patch of r271870 to rename function playbackPermitted() and
the enum class MediaPlaybackOperation.

No new tests as there is no change in functionality.

  • Modules/mediacontrols/MediaControlsHost.cpp:

(WebCore::MediaControlsHost::userGestureRequired const):

  • html/HTMLMediaElement.cpp:

(WebCore::HTMLMediaElement::canTransitionFromAutoplayToPlay const):
(WebCore::HTMLMediaElement::setReadyState):
(WebCore::HTMLMediaElement::play):
(WebCore::HTMLMediaElement::pause):
(WebCore::HTMLMediaElement::pauseInternal):
(WebCore::HTMLMediaElement::setVolume):
(WebCore::HTMLMediaElement::mediaPlayerDidAddAudioTrack):
(WebCore::HTMLMediaElement::mediaPlayerCharacteristicChanged):
(WebCore::HTMLMediaElement::updateShouldPlay):

  • html/MediaElementSession.cpp:

(WebCore::MediaElementSession::playbackStateChangePermitted const):
(WebCore::MediaElementSession::canShowControlsManager const):
(WebCore::MediaElementSession::updateMediaUsageIfChanged):
(WebCore::MediaElementSession::playbackPermitted const): Deleted.

  • html/MediaElementSession.h:
12:08 PM EarlyWarningSystem edited by aakash_jain@apple.com
(diff)
12:06 PM EarlyWarningSystem edited by aakash_jain@apple.com
(diff)
12:06 PM Changeset in webkit [275224] by graouts@webkit.org
  • 5 edits in trunk

Account for "hanging" and "each-line" when blending text-interpolation
https://bugs.webkit.org/show_bug.cgi?id=223914

Reviewed by Dean Jackson.

LayoutTests/imported/w3c:

  • web-platform-tests/css/css-text/animations/text-indent-composition-expected.txt:
  • web-platform-tests/css/css-text/animations/text-indent-interpolation-expected.txt:

Source/WebCore:

  • animation/CSSPropertyAnimation.cpp:

(WebCore::CSSPropertyAnimationWrapperMap::CSSPropertyAnimationWrapperMap):

12:04 PM Changeset in webkit [275223] by jer.noble@apple.com
  • 2 edits in trunk/Source/WebKit

Unreviewed build fix after r275210. Disambiguate the WeakPtrFactory in RemoteMediaSessionCoordinatorProxy with a using statement.

  • UIProcess/Media/RemoteMediaSessionCoordinatorProxy.h:
12:04 PM Changeset in webkit [275222] by commit-queue@webkit.org
  • 2 edits in trunk/Source/ThirdParty/ANGLE

Enable sample_compare operations in Metal ANGLE
Sample_compare operations, and shadow sampling was accidently switched off when initially
setting up ANGLE_Metal. Enabling shadow sampling fixes most of the
webgl/2.0.0/deqp/functional/gles3/textureshadow/ test suite, which is currently failing.

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

Patch by Kyle Piddington <Kyle Piddington> on 2021-03-30
Reviewed by Jon Lee.

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

(rx::DisplayMtl::initializeFeatures):

12:02 PM Changeset in webkit [275221] by graouts@webkit.org
  • 6 edits in trunk

[CSS Backgrounds] WPT test css/css-backgrounds/animations/border-image-width-interpolation.html asserts
https://bugs.webkit.org/show_bug.cgi?id=206578

Reviewed by Dean Jackson.

LayoutTests/imported/w3c:

Update the test output, the remaining failures are due to issues with calc() serialization (see
https://bugs.webkit.org/show_bug.cgi?id=223875).

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

Source/WebCore:

Ensure we pass the RenderStyle through the methods eventually calling createValue() for calculated lengths.

  • css/CSSComputedStyleDeclaration.cpp:

(WebCore::valueForNinePieceImageQuad):
(WebCore::valueForNinePieceImage):
(WebCore::valueForReflection):
(WebCore::ComputedStyleExtractor::valueForPropertyInStyle):

LayoutTests:

Unskip imported/w3c/web-platform-tests/css/css-backgrounds/animations/border-image-width-interpolation.html
as well as imported/w3c/web-platform-tests/css/css-backgrounds/animations/border-image-outset-composition.html
and imported/w3c/web-platform-tests/css/css-backgrounds/animations/border-image-width-composition.html.

11:57 AM Changeset in webkit [275220] by jberlin@webkit.org
  • 2 edits in trunk/Tools

Reinstate my committer status.

Unreviewed.

  • Scripts/webkitpy/common/config/contributors.json:
11:56 AM Changeset in webkit [275219] by jiewen_tan@apple.com
  • 2 edits in trunk/Source/WebKit

Unreviewed, reverting r275197.

The change is spooky.

Reverted changeset:

"Safari crashed and lost all tabs, after unlocking sleeping
device"
https://bugs.webkit.org/show_bug.cgi?id=223832
https://commits.webkit.org/r275197

11:54 AM Changeset in webkit [275218] by aakash_jain@apple.com
  • 2 edits in trunk/Tools

[ews] Make RunWebKitTests class easy to extend
https://bugs.webkit.org/show_bug.cgi?id=223939

Reviewed by Jonathan Bedard.

  • CISupport/ews-build/steps.py:

(RunWebKitTests):
(RunWebKitTests.setLayoutTestCommand): Separated out code to set the layout-test command.
(RunWebKitTests.start):

11:47 AM Changeset in webkit [275217] by Andres Gonzalez
  • 11 edits in trunk

Fix for accessibility/textarea-insertion-point-line-number.html.
https://bugs.webkit.org/show_bug.cgi?id=223936
<rdar://problem/76007361>

Reviewed by Chris Fleizach.

Source/WebCore:

Test: accessibility/textarea-insertion-point-line-number.html

Added AXCoreObject::insertionPointLineNumber to support this functionality.
This replaces the previous implementation in the wrapper's accessibilityAttributeValue.
There were several problems with the previous implementation that was
doing an unnecessary and buggy round trip from Ranges to indexes and
back to VisiblePositions.

  • accessibility/AccessibilityObject.h:
  • accessibility/AccessibilityObjectInterface.h:
  • accessibility/AccessibilityRenderObject.cpp:

(WebCore::AccessibilityRenderObject::insertionPointLineNumber const):

  • accessibility/AccessibilityRenderObject.h:
  • accessibility/isolatedtree/AXIsolatedObject.cpp:

(WebCore::AXIsolatedObject::insertionPointLineNumber const):
(WebCore::AXIsolatedObject::selectionStart const): Deleted.
(WebCore::AXIsolatedObject::selectionEnd const): Deleted.

  • accessibility/isolatedtree/AXIsolatedObject.h:
  • accessibility/mac/WebAccessibilityObjectWrapperMac.mm:

(-[WebAccessibilityObjectWrapper accessibilityAttributeValue:]):

LayoutTests:

Updated this test and corrected several issues where the expected
returned values were incorrect.

  • accessibility/textarea-insertion-point-line-number-expected.txt:
  • accessibility/textarea-insertion-point-line-number.html:
11:32 AM Changeset in webkit [275216] by Aditya Keerthi
  • 3 edits
    2 adds in trunk

[iOS] Two taps required to view <select> options on Square Checkout
https://bugs.webkit.org/show_bug.cgi?id=223933
<rdar://problem/74828029>

Reviewed by Wenson Hsieh.

Source/WebKit:

Some sites, such as Square Checkout, wrap all the <option>s in a
<select> element in a single <optgroup>. With the new context menu
appearance for <select> on iOS, this means that users have to tap twice
to view the options on some sites (once to bring up the menu and once
to expand the grouped menu).

To fix, promote the the contents of the grouped submenu to the root menu
if all the options are contained within a single submenu.

Test: fast/forms/ios/form-control-refresh/select/all-options-in-single-optgroup.html

  • UIProcess/ios/forms/WKFormSelectPicker.mm:

(-[WKSelectPicker createMenu]):

LayoutTests:

Added a layout test to exercise the new codepath when a <select>
has a single <optgroup> containing all of the <option>s.

  • fast/forms/ios/form-control-refresh/select/all-options-in-single-optgroup-expected.txt: Added.
  • fast/forms/ios/form-control-refresh/select/all-options-in-single-optgroup.html: Added.
11:14 AM Changeset in webkit [275215] by Simon Fraser
  • 17 edits in trunk

Allow non-60fps display updates to be driven by DisplayRefreshMonitor
https://bugs.webkit.org/show_bug.cgi?id=223912

Reviewed by Sam Weinig.
Source/WebCore:

Previously, RenderingUpdateScheduler::scheduleAnimation() would return false for any
preferredFramesPerSecond which is not 60fps, causing RenderingUpdateScheduler to fall back
to its timer mechanism. This meant that throttled (e.g. by low power) pages and display
updates on non-60fps display would all use timers. This is undesirable because we want
alignment with display refresh, and to avoid timer drift between multiple throttled
documents.

The fix has two parts. First, we need to fix RenderingUpdateScheduler and
ScriptedAnimationController to compute their frame rates in terms of FramesPerSecond, rather
than Seconds, because using the latter requires conversion to Seconds and back via
m_page.preferredRenderingUpdateInterval() which was awkward. So have Page expose
preferredRenderingUpdateFramesPerSecond().

Also add preferredFramesPerSecond(), and have both it and preferredFrameInterval() take the
"near 60fps" flag as an argument, so doing the common math in AnimationFrameRate.

The second part of the fix is to move "preferredFramesPerSecond" from
RenderingUpdateScheduler to DisplayRefreshMonitorClient, since clients should be able to
request different frame rates. Then we pass the DisplayUpdate to
DisplayRefreshMonitorClient::fireDisplayRefreshIfNeeded(), and finally use it to do the math
of whether to skip an update for this client.

Tested by API tests in AnimationFrameRate.cpp, and by
fast/animation/request-animation-frame-throttling-lowPowerMode.html

  • dom/ScriptedAnimationController.cpp:

(WebCore::ScriptedAnimationController::interval const): This function (used for testing)
is just a synonym for preferredScriptedAnimationInterval(), but left here because it's exported
and maybe the compiler can inline preferredScriptedAnimationInterval().
(WebCore::ScriptedAnimationController::preferredScriptedAnimationInterval const): Just call
preferredFrameInterval() with throttlingReasons(), which is the union of the reasons for
the page and for this ScriptedAnimationController.
(WebCore::ScriptedAnimationController::throttlingReasons const): No reason not to return m_throttlingReasons
if we don't have a page. Should never happen.
(WebCore::ScriptedAnimationController::shouldRescheduleRequestAnimationFrame const): Logging.
(WebCore::ScriptedAnimationController::serviceRequestAnimationFrameCallbacks): Logging.

  • page/Page.cpp:

(WebCore::Page::windowScreenDidChange): The display nominal FPS may have changed so recompute the update frequency.
(WebCore::Page::preferredRenderingUpdateFramesPerSecond const): Return the preferred update in FramesPerSecond. Will return
null if throttling results in a < 1fps update.
(WebCore::Page::preferredRenderingUpdateInterval const): Push the "near 60fps" logic into the helper function.
(WebCore::Page::setIsVisuallyIdleInternal): Clearer to use OptionSet<>::set().
(WebCore::Page::handleLowModePowerChange): Ditto.

  • page/Page.h:

(WebCore::Page::displayNominalFramesPerSecond const):
(WebCore::Page::throttlingReasons const):

  • page/RenderingUpdateScheduler.cpp:

(WebCore::RenderingUpdateScheduler::scheduleAnimation): Remove code that fell back to a timer for any non-60fps rate.
(WebCore::RenderingUpdateScheduler::adjustRenderingUpdateFrequency): Compute if we have to use a timer.
(WebCore::RenderingUpdateScheduler::scheduleRenderingUpdate):
(WebCore::RenderingUpdateScheduler::setPreferredFramesPerSecond): Deleted.

  • page/RenderingUpdateScheduler.h:
  • platform/graphics/AnimationFrameRate.cpp: Simplify some code with halfSpeedThrottlingReasons.

(WebCore::preferredFramesPerSecond): Similar logic to preferredFrameInterval, but for FramesPerSecond values.
(WebCore::preferredFrameInterval):

  • platform/graphics/AnimationFrameRate.h:
  • platform/graphics/DisplayRefreshMonitor.cpp:

(WebCore::DisplayRefreshMonitor::displayDidRefresh):

  • platform/graphics/DisplayRefreshMonitorClient.cpp:

(WebCore::DisplayRefreshMonitorClient::setPreferredFramesPerSecond):
(WebCore::DisplayRefreshMonitorClient::fireDisplayRefreshIfNeeded):

  • platform/graphics/DisplayRefreshMonitorClient.h:

(WebCore::DisplayRefreshMonitorClient::preferredFramesPerSecond const):

  • platform/graphics/DisplayUpdate.cpp:

(WebCore::DisplayUpdate::relevantForUpdateFrequency const): Compute whether this update is relevant
for a client who wants updates at 'preferredFramesPerSecond'.

  • platform/graphics/DisplayUpdate.h:

Source/WebKit:

Improve the logging.

  • UIProcess/mac/DisplayLink.cpp:

(WebKit::DisplayLink::DisplayLink):
(WebKit::DisplayLink::addObserver):

Tools:

New API tests for preferredFramesPerSecond() and
DisplayUpdate::relevantForUpdateFrequency(), and duplicate existing tests for the "use
display nominal FPS" vs "use near-60 FPS" settings.

  • TestWebKitAPI/Tests/WebCore/AnimationFrameRate.cpp:

(TestWebKitAPI::TEST):

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

[LFC][Integration] Elements that overflow inline-blocks are not hit tested correctly
https://bugs.webkit.org/show_bug.cgi?id=223932
rdar://75888718

Reviewed by Zalan Bujtas.
Source/WebCore:

If an inline block has overflowing children (for example due to negative margin) we may fail to hit test them.

Test: fast/inline-block/hit-test-negative-margin-child.html

  • layout/integration/LayoutIntegrationLineLayout.cpp:

(WebCore::LayoutIntegration::LineLayout::hitTest):

Always descend into inline blocks even if their run didn't hit.

LayoutTests:

  • fast/inline-block/hit-test-negative-margin-child-expected.txt: Added.
  • fast/inline-block/hit-test-negative-margin-child.html: Added.
10:32 AM Changeset in webkit [275213] by Ruben Turcios
  • 1 copy in tags/Safari-612.1.7.12

Tag Safari-612.1.7.12.

10:21 AM Changeset in webkit [275212] by mark.lam@apple.com
  • 8 edits in trunk/Source

Ensure that GlobalPropertyInfo is allocated on the stack.
https://bugs.webkit.org/show_bug.cgi?id=223911
rdar://75865742

Reviewed by Yusuke Suzuki.

Source/JavaScriptCore:

We rely on GlobalPropertyInfo being allocated on the stack to allow its JSValue
value to be scanned by the GC. Unfortunately, an ASAN compilation would choose
to allocate the GlobalPropertyInfo on a side buffer instead of directly on the
stack. This prevents the GC from doing the needed scan.

We'll fix this by suppressing ASAN on the functions that allocated GlobalPropertyInfo
arrays. Also added an ASSERT in the GlobalPropertyInfo constructor to assert that
it is allocated on the stack.

  • Scripts/wkbuiltins/builtins_generate_internals_wrapper_implementation.py:

(BuiltinsInternalsWrapperImplementationGenerator.generate_initialize_method):

  • runtime/JSGlobalObject.cpp:

(JSC::JSGlobalObject::initStaticGlobals):
(JSC::JSGlobalObject::init):
(JSC::JSGlobalObject::exposeDollarVM):

  • runtime/JSGlobalObject.h:

(JSC::JSGlobalObject::GlobalPropertyInfo::GlobalPropertyInfo):

Source/WebCore:

  • bindings/js/JSDOMGlobalObject.cpp:

(WebCore::JSDOMGlobalObject::addBuiltinGlobals):

  • bindings/js/JSDOMWindowBase.cpp:

(WebCore::JSDOMWindowBase::finishCreation):
(WebCore::JSDOMWindowBase::initStaticGlobals):

  • bindings/js/JSDOMWindowBase.h:
10:13 AM Changeset in webkit [275211] by aakash_jain@apple.com
  • 3 edits in trunk/Tools

[ews] Add build step to find list of layout tests modified by a patch
https://bugs.webkit.org/show_bug.cgi?id=223890

Reviewed by Jonathan Bedard.

  • CISupport/ews-build/steps.py:

(AnalyzePatch): Created common base class for CheckPatchRelevance and FindModifiedLayoutTests.
(AnalyzePatch._get_patch): Moved to base class.
(AnalyzePatch._addToLog): Ditto.
(AnalyzePatch.getResultSummary): Ditto.
(CheckPatchRelevance):
(FindModifiedLayoutTests): Build step to find list of layout tests modified by the patch being processed.
(FindModifiedLayoutTests.find_test_names_from_patch):
(FindModifiedLayoutTests.start):

  • CISupport/ews-build/steps_unittest.py: Added unit-tests.
10:10 AM Changeset in webkit [275210] by jer.noble@apple.com
  • 5 edits in trunk/Source/WebKit

MediaSessionCoordinatorPrivateProxy should have a Client
https://bugs.webkit.org/show_bug.cgi?id=223935

Reviewed by Eric Carlson.

Similar to the non-proxy MediaSessionCoordinatorPrivate, the Proxy
version should have a client, used for communicating state changes
downstream.

  • UIProcess/Media/MediaSessionCoordinatorPrivateProxy.h:

(WebKit::MediaSessionCoordinatorPrivateProxy::setClient):
(WebKit::MediaSessionCoordinatorPrivateProxy::client const):

  • UIProcess/Media/RemoteMediaSessionCoordinatorProxy.cpp:

(WebKit::RemoteMediaSessionCoordinatorProxy::seekSessionToTime):
(WebKit::RemoteMediaSessionCoordinatorProxy::playSession):
(WebKit::RemoteMediaSessionCoordinatorProxy::pauseSession):
(WebKit::RemoteMediaSessionCoordinatorProxy::setSessionTrack):

  • UIProcess/Media/RemoteMediaSessionCoordinatorProxy.h:
  • WebProcess/MediaSession/RemoteMediaSessionCoordinator.messages.in:
10:07 AM Changeset in webkit [275209] by Ruben Turcios
  • 8 edits in branches/safari-612.1.8-branch/Source

Versioning.

WebKit-7612.1.8.1

9:40 AM Changeset in webkit [275208] by Ruben Turcios
  • 8 edits in branches/safari-612.1.7-branch/Source

Versioning.

WebKit-7612.1.7.12

9:32 AM Changeset in webkit [275207] by Peng Liu
  • 6 edits in trunk/Source/WebKit

[GPUP] Add "CodeComplete" attribute to some feature flags
https://bugs.webkit.org/show_bug.cgi?id=223907

Reviewed by Daniel Bates.

Add "CodeComplete" attribute for three feature flags:

  • gpu_process_canvas_rendering
  • gpu_process_media
  • gpu_process_webrtc

Also replace tabs in the plist files with spaces.

  • FeatureFlags/WebKit-appletvos.plist:
  • FeatureFlags/WebKit-ios.plist:
  • FeatureFlags/WebKit-macos.plist:
  • FeatureFlags/WebKit-watchos.plist:
  • Scripts/combine-feature-flags-plist.py:

(main): Fix an issue to merge "attributes".

9:31 AM Changeset in webkit [275206] by weinig@apple.com
  • 13 edits in trunk/Source/WebCore

Generalize ColorComponents to support an arbritrary number of components (though really we will only ever want 3, 4, or 5)
https://bugs.webkit.org/show_bug.cgi?id=223901

Reviewed by Darin Adler.

Add a length to ColorComponents to allow an arbitrary number of components. This
will be used to support cases where we only want to carry the three color components
(not alpha) and will be useful if we ever need to add back CMYKA support.

A new dedecution guide added allows for cases that currently deduce to remain.

  • css/parser/CSSPropertyParserHelpers.cpp:

(WebCore::CSSPropertyParserHelpers::makeColorTypeByNormalizingComponentsAfterMix):
(WebCore::CSSPropertyParserHelpers::makeColorTypeByNormalizingComponentsAfterMix<HWBA<float>>):
(WebCore::CSSPropertyParserHelpers::makeColorTypeByNormalizingComponentsAfterMix<HSLA<float>>):
(WebCore::CSSPropertyParserHelpers::fixupHueComponentsPriorToMix):

  • platform/graphics/Color.cpp:

(WebCore::Color::colorSpaceAndComponents const):

  • platform/graphics/Color.h:

(WebCore::Color::OutOfLineComponents::create):
(WebCore::Color::OutOfLineComponents::components const):
(WebCore::Color::OutOfLineComponents::OutOfLineComponents):

  • platform/graphics/ColorComponents.h:

(WebCore::ColorComponents::ColorComponents):
(WebCore::mapColorComponents):
(WebCore::N>::map const):
(WebCore::=):
(WebCore::N>::operator const):
(WebCore::N>::abs const):
(WebCore::N>::get const):
(WebCore::N>::subset const):
(WebCore::perComponentMax):
(WebCore::perComponentMin):
(WebCore::operator==):
(WebCore::operator!=):
(WebCore::ColorComponents<T>::map const): Deleted.
(WebCore::ColorComponents<T>::operator const): Deleted.
(WebCore::ColorComponents<T>::abs const): Deleted.
(WebCore::ColorComponents<T>::get const): Deleted.

  • platform/graphics/ColorMatrix.h:

(WebCore::RowCount>::transformedColorComponents const):
(WebCore::applyMatricesToColorComponents):

  • platform/graphics/ColorSpace.h:

(WebCore::callWithColorType):

  • platform/graphics/ColorTypes.h:

(WebCore::makeFromComponents):
(WebCore::clampedComponent):
(WebCore::clampedComponents):
(WebCore::clampedComponentsExceptAlpha):
(WebCore::makeFromComponentsClamping):
(WebCore::makeFromComponentsClampingExceptAlpha):
(WebCore::asColorComponents):

  • platform/graphics/filters/FEColorMatrix.cpp:
  • platform/graphics/filters/FEMorphology.cpp:

(WebCore::makeColorComponentsfromPixelValue):
(WebCore::makePixelValueFromColorComponents):
(WebCore::minOrMax):
(WebCore::columnExtremum):
(WebCore::kernelExtremum):
(WebCore::FEMorphology::platformApplyGeneric):

  • platform/graphics/filters/FETurbulence.cpp:

(WebCore::FETurbulence::noise2D const):
(WebCore::toIntBasedColorComponents):
(WebCore::FETurbulence::calculateTurbulenceValueForPoint const):

  • platform/graphics/filters/FETurbulence.h:
  • platform/graphics/filters/FilterOperation.cpp:

(WebCore::hueRotate):

9:16 AM Changeset in webkit [275205] by Alan Bujtas
  • 3 edits in trunk/Source/WebCore

[RenderTreeBuilder] Anonymous table cell collapsing should also cleanup the inline tree
https://bugs.webkit.org/show_bug.cgi?id=223910

Reviewed by Antti Koivisto.

Let's delete the inline tree when the anonymous table cell is collapsed.
It's completely redundant at this point as the content is moved over to a previous sibling.

  • rendering/updating/RenderTreeBuilderTable.cpp:

(WebCore::RenderTreeBuilder::Table::collapseAndDetachAnonymousNextSibling):
(WebCore::RenderTreeBuilder::Table::collapseAndDestroyAnonymousSiblingCells):
(WebCore::RenderTreeBuilder::Table::collapseAndDestroyAnonymousSiblingRows):
(WebCore::RenderTreeBuilder::Table::collapseAndDestroyAnonymousSiblings): Deleted.

  • rendering/updating/RenderTreeBuilderTable.h:
8:20 AM Changeset in webkit [275204] by Chris Gambrell
  • 34 edits
    5 moves
    13 adds
    12 deletes in trunk/LayoutTests

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

Reviewed by Jonathan Bedard.

  • http/tests/contentextensions/block-cookies-in-csp-report-expected.txt:
  • http/tests/contentextensions/block-cookies-in-csp-report.php: Removed.
  • http/tests/contentextensions/block-cookies-in-csp-report.php.json: Removed.
  • http/tests/contentextensions/block-cookies-in-csp-report.py: Added.
  • http/tests/contentextensions/block-cookies-in-csp-report.py.json: Added.
  • http/tests/contentextensions/block-cookies-in-image-load-in-onunload-expected.txt:
  • http/tests/contentextensions/block-cookies-in-image-load-in-onunload.html:
  • http/tests/contentextensions/block-cookies-in-image-load-in-onunload.html.json:
  • http/tests/contentextensions/block-cookies-in-ping-expected.txt:
  • http/tests/contentextensions/block-cookies-in-ping.html:
  • http/tests/contentextensions/block-cookies-in-ping.html.json:
  • http/tests/contentextensions/block-csp-report-expected.txt:
  • http/tests/contentextensions/block-csp-report.php: Removed.
  • http/tests/contentextensions/block-csp-report.php.json: Removed.
  • http/tests/contentextensions/block-csp-report.py: Added.
  • http/tests/contentextensions/block-csp-report.py.json: Added.
  • http/tests/contentextensions/block-everything-unless-domain-redirect.php: Removed.
  • http/tests/contentextensions/block-everything-unless-domain-redirect.php.json: Removed.
  • http/tests/contentextensions/block-everything-unless-domain-redirect.py: Added.
  • http/tests/contentextensions/block-everything-unless-domain-redirect.py.json: Added.
  • http/tests/contentextensions/block-image-load-in-onunload-expected.txt:
  • http/tests/contentextensions/block-image-load-in-onunload.html:
  • http/tests/contentextensions/block-image-load-in-onunload.html.json:
  • http/tests/contentextensions/block-ping-expected.txt:
  • http/tests/contentextensions/block-ping-resource-type-ping-expected.txt:
  • http/tests/contentextensions/block-ping-resource-type-ping.html:
  • http/tests/contentextensions/block-ping-resource-type-ping.html.json:
  • http/tests/contentextensions/block-ping-resource-type-raw-expected.txt:
  • http/tests/contentextensions/block-ping-resource-type-raw.html:
  • http/tests/contentextensions/block-ping-resource-type-raw.html.json:
  • http/tests/contentextensions/block-ping.html:
  • http/tests/contentextensions/block-ping.html.json:
  • http/tests/contentextensions/fetch-redirect-blocked.html:
  • http/tests/contentextensions/hide-on-csp-report-expected.txt:
  • http/tests/contentextensions/hide-on-csp-report.php: Removed.
  • http/tests/contentextensions/hide-on-csp-report.php.json: Removed.
  • http/tests/contentextensions/hide-on-csp-report.py: Added.
  • http/tests/contentextensions/hide-on-csp-report.py.json: Added.
  • http/tests/contentextensions/hide-on-ping-expected.txt:
  • http/tests/contentextensions/hide-on-ping-with-ping-that-redirects-expected.txt:
  • http/tests/contentextensions/hide-on-ping-with-ping-that-redirects.html:
  • http/tests/contentextensions/hide-on-ping-with-ping-that-redirects.html.json:
  • http/tests/contentextensions/hide-on-ping.html:
  • http/tests/contentextensions/hide-on-ping.html.json:
  • http/tests/contentextensions/main-resource-redirect-blocked.php: Removed.
  • http/tests/contentextensions/main-resource-redirect-blocked.php.json: Removed.
  • http/tests/contentextensions/main-resource-redirect-blocked.py: Added.
  • http/tests/contentextensions/main-resource-redirect-blocked.py.json: Added.
  • http/tests/contentextensions/reload-without-contentextensions.html:
  • http/tests/contentextensions/resources/delete-ping.php: Removed.
  • http/tests/contentextensions/resources/delete-ping.py: Added.
  • http/tests/contentextensions/resources/get-ping-data.php: Removed.
  • http/tests/contentextensions/resources/get-ping-data.py: Added.
  • http/tests/contentextensions/resources/ping-file-path.php: Removed.
  • http/tests/contentextensions/resources/ping_file_path.py: Added.
  • http/tests/contentextensions/resources/redirect.php: Removed.
  • http/tests/contentextensions/resources/redirect.py: Added.
  • http/tests/contentextensions/resources/save-ping-and-redirect-to-save-ping.php: Removed.
  • http/tests/contentextensions/resources/save-ping-and-redirect-to-save-ping.py: Added.
  • http/tests/contentextensions/resources/save-ping.php: Removed.
  • http/tests/contentextensions/resources/save-ping.py: Added.
  • http/tests/contentextensions/resources/save_ping.py: Added.

(not_being_called):
(save_ping):

  • http/tests/contentextensions/resources/subresource-redirect.php: Removed.
  • http/tests/contentextensions/resources/subresource-redirect.py: Added.
  • http/tests/contentextensions/subresource-redirect-blocked.html:
  • http/tests/privateClickMeasurement/resources/redirectToConversionOnIPAddress.py:
  • http/tests/resourceLoadStatistics/ping-to-prevalent-resource-expected.txt:
  • http/tests/resourceLoadStatistics/ping-to-prevalent-resource.html:
7:12 AM Changeset in webkit [275203] by commit-queue@webkit.org
  • 15 edits in trunk/Source

Now Playing content isn't updated when media session's Metadata is modified
https://bugs.webkit.org/show_bug.cgi?id=223795
Source/WebCore:

<rdar://problem/75883478>

Patch by Jean-Yves Avenard <Jean-Yves Avenard> on 2021-03-30
Reviewed by Eric Carlson.

Manually tested. Ensuring that immediately after modifying the MediaSession metadata, NowPlaying reflects the change.

  • Modules/mediasession/MediaSession.h:

(WebCore::MediaSession::Observer::metadataChanged): Change method prototype to avoid unnecessary refcount.
(WebCore::MediaSession::Observer::positionStateChanged): Change method prototype to pass argument by reference rather than value (and easier forward declaration).

  • Modules/mediasession/MediaSessionCoordinator.cpp:

(WebCore::MediaSessionCoordinator::positionStateChanged): Pass argument by reference rather than value.

  • Modules/mediasession/MediaSessionCoordinator.h:
  • Modules/mediasession/MediaSessionCoordinatorPrivate.h:
  • html/MediaElementSession.cpp: Add MediaSessionObserver class, we use separate proxy to avoid multiple inheritance of CanMakeWeakPtr.

(WebCore::MediaSessionObserver::MediaSessionObserver):
(WebCore::MediaSessionObserver::~MediaSessionObserver):
(WebCore::MediaSessionObserver::actionHandlersChanged):
(WebCore::MediaElementSession::registerWithDocument): Add MediaElementSession as Media Session observer when it's added to the DOM.
(WebCore::MediaElementSession::unregisterWithDocument): Remove MediaElementSession as Media Session observer when it's removed from the DOM.
(WebCore::MediaElementSession::didReceiveRemoteControlCommand): Simplify with new mediaSession() helper.
(WebCore::MediaElementSession::nowPlayingInfo const): Simplify with new mediaSession() helper.
(WebCore::MediaElementSession::mediaSession const): Helper to retrieve associated mediaSession object.
(WebCore::MediaElementSession::ensureIsObservingMediaSession):
(WebCore::MediaElementSession::metadataChanged): Call clientCharacteristicsChanged which will trigger the PlatformMediaSessionManager to refresh the NowPlayingInfo content.
(WebCore::MediaElementSession::positionStateChanged): Method currently doing nothing. Preparing for future change.
(WebCore::MediaElementSession::playbackStateChanged): Method currently doing nothing. Preparing for future change.
(WebCore::MediaElementSession::actionHandlersChanged): Method currently doing nothing. Preparing for future change.

  • html/MediaElementSession.h: Add methods.
  • platform/cocoa/RemoteCommandListenerCocoa.h: Remove trailing whitespace.
  • testing/MockMediaSessionCoordinator.cpp:

(WebCore::MockMediaSessionCoordinator::positionStateChanged): Update for new method prototyping.

  • testing/MockMediaSessionCoordinator.h:

Source/WebKit:

Patch by Jean-Yves Avenard <Jean-Yves Avenard> on 2021-03-30
Reviewed by Eric Carlson.

  • UIProcess/Media/MediaSessionCoordinatorPrivateProxy.h: Update for new method prototyping.
  • UIProcess/Media/RemoteMediaSessionCoordinatorProxy.cpp:

(WebKit::RemoteMediaSessionCoordinatorProxy::positionStateChanged): Update for new method prototyping.

  • WebProcess/MediaSession/RemoteMediaSessionCoordinator.cpp:

(WebKit::RemoteMediaSessionCoordinator::positionStateChanged): Update for new method prototyping.

  • WebProcess/MediaSession/RemoteMediaSessionCoordinator.h:
3:02 AM Changeset in webkit [275202] by graouts@webkit.org
  • 4 edits in trunk

Account for "cover" and "contain" when interpolating background-size
https://bugs.webkit.org/show_bug.cgi?id=223879

Reviewed by Antti Koivisto.

LayoutTests/imported/w3c:

Add 40 PASS results for the background-size interpolation test.

  • web-platform-tests/css/css-backgrounds/animations/background-size-interpolation-expected.txt:

Source/WebCore:

  • animation/CSSPropertyAnimation.cpp:
1:51 AM Changeset in webkit [275201] by commit-queue@webkit.org
  • 1 edit
    19 adds in trunk/LayoutTests

Add webgl/pending/conformance/context/context-attributes-alpha-depth-stencil-antialias.html for test update
https://bugs.webkit.org/show_bug.cgi?id=223735

Patch by Kimmo Kinnunen <kkinnunen@apple.com> on 2021-03-30
Reviewed by Dean Jackson.

Add few tests in preparation to fix bugs related to the tested functionality and to add tests
testing the fixes.

  • webgl/pending/README.md: Added.
  • webgl/pending/conformance/context/context-attributes-alpha-depth-stencil-antialias-expected.txt: Added.
  • webgl/pending/conformance/context/context-attributes-alpha-depth-stencil-antialias.html: Added.
  • webgl/pending/resources/js-test-pre.js: Added.
  • webgl/pending/resources/webgl_test_files/conformance/context/context-attributes-alpha-depth-stencil-antialias.html: Added.
  • webgl/pending/resources/webgl_test_files/js/js-test-post.js: Added.
  • webgl/pending/resources/webgl_test_files/js/js-test-pre.js: Added.
  • webgl/pending/resources/webgl_test_files/js/webgl-test-utils.js: Added.
  • webgl/pending/resources/webgl_test_files/resources/js-test-style.css: Added.
  • webgl/pending/resources/webkit-webgl-test-harness.js: Added.
1:30 AM Changeset in webkit [275200] by Lauro Moura
  • 4 edits in trunk

[GTK][WPE] Timeouts on WPT css/css-images ref-tests after updating WPT import
https://bugs.webkit.org/show_bug.cgi?id=214472

Reviewed by Žan Doberšek.

Source/WebCore:

In some cases, degenerated and corner cases of grandient stops might
trigger really slow operations in Cairo due to extremely high bezier
parameters. For example, the normalization-conic-2.html triggered this
by making the conic code calculate the tangent of 90 degrees for an
interpolation stop.

This commit adds some special handling for these cases to make sure the
interpolation will be inside reasonable values.

Covered by existing tests.

  • platform/graphics/cairo/GradientCairo.cpp:

(WebCore::createConic): Handle degenerated stops

LayoutTests:

  • platform/glib/TestExpectations: Change expectations back to passes
12:40 AM Changeset in webkit [275199] by graouts@webkit.org
  • 17 edits in trunk

Enable "hanging" and "each-line" keywords for the text-indent CSS property
https://bugs.webkit.org/show_bug.cgi?id=223851

Reviewed by Antti Koivisto.

LayoutTests/imported/w3c:

Mark all tests in the parsing-related tests as PASS results for text-indent.
The animation tests will be dealt with in bug 223914.

  • web-platform-tests/css/css-text/animations/text-indent-composition-expected.txt:
  • web-platform-tests/css/css-text/animations/text-indent-interpolation-expected.txt:
  • web-platform-tests/css/css-text/parsing/text-indent-computed-expected.txt:
  • web-platform-tests/css/css-text/parsing/text-indent-valid-expected.txt:

Source/WebCore:

We've had support for "hanging" and "each-line" behind the ENABLE_CSS3_TEXT flag. Probably by mistake,
"hanging" itself was parsed and Web-exposed by default. Presumably that was the case because that CSS
keyword existed in the context of SVG.

But LineWidth.cpp already knew how to handle these keywords, so there seems to be no reason to keep
these behind a flag.

So we remove all the ENABLE_CSS3_TEXT guards related to they keywords and address some spec compliance
issue, namely:

  1. add the text-indent length or percentage, the "hanging" and "each-line" keywords in that order in consumeTextIndent(),
  2. use that same order for the computed style.
  • css/CSSComputedStyleDeclaration.cpp:

(WebCore::ComputedStyleExtractor::valueForPropertyInStyle):

  • css/CSSValueKeywords.in:
  • css/parser/CSSPropertyParser.cpp:

(WebCore::consumeTextIndent):

  • layout/inlineformatting/InlineLineBuilder.cpp:

(WebCore::Layout::LineBuilder::initialConstraintsForLine const):

  • rendering/line/LineWidth.cpp:

(WebCore::requiresIndent):

  • rendering/style/RenderStyle.cpp:

(WebCore::rareInheritedDataChangeRequiresLayout):

  • rendering/style/RenderStyle.h:
  • rendering/style/RenderStyleConstants.h:
  • rendering/style/StyleRareInheritedData.cpp:

(WebCore::StyleRareInheritedData::StyleRareInheritedData):
(WebCore::StyleRareInheritedData::operator== const):

  • rendering/style/StyleRareInheritedData.h:
  • style/StyleBuilderCustom.h:

(WebCore::Style::BuilderCustom::applyInheritTextIndent):
(WebCore::Style::BuilderCustom::applyInitialTextIndent):
(WebCore::Style::BuilderCustom::applyValueTextIndent):

12:23 AM Changeset in webkit [275198] by commit-queue@webkit.org
  • 4 edits
    7 adds in trunk/LayoutTests

Update WebGL conformance test suite 2021-03-24
https://bugs.webkit.org/show_bug.cgi?id=223736

Patch by Kimmo Kinnunen <kkinnunen@apple.com> on 2021-03-30
Reviewed by Dean Jackson.

To commit 44ac38b3b23be26fa8812334ec3e9bf67ecb5a9f Fix whitespace by rerunning IDL extraction scripts. (#3265)
As per it looks like there's been a significant recent regression in the video-related conformance tests
in the test suite.

  • webgl/2.0.y/conformance2/textures/misc/immutable-tex-render-feedback-expected.txt: Added.
  • webgl/2.0.y/conformance2/textures/misc/immutable-tex-render-feedback.html: Added.
  • webgl/resources/webgl_test_files/conformance/extensions/webgl-webcodecs-video-frame.html:
  • webgl/resources/webgl_test_files/conformance/textures/misc/video-rotation.html:
  • webgl/resources/webgl_test_files/conformance2/extensions/oes-draw-buffers-indexed.html:
  • webgl/resources/webgl_test_files/conformance2/textures/misc/immutable-tex-render-feedback.html: Added.
  • webgl/resources/webgl_test_files/js/webgl-test-utils.js:

(destroyContext):

  • webgl/resources/webgl_test_files/resources/video-rotation-0.vp9.mp4: Added.
  • webgl/resources/webgl_test_files/resources/video-rotation-180.vp9.mp4: Added.
  • webgl/resources/webgl_test_files/resources/video-rotation-270.vp9.mp4: Added.
  • webgl/resources/webgl_test_files/resources/video-rotation-90.vp9.mp4: Added.

Mar 29, 2021:

11:35 PM Changeset in webkit [275197] by jiewen_tan@apple.com
  • 2 edits in trunk/Source/WebKit

Safari crashed and lost all tabs, after unlocking sleeping device
https://bugs.webkit.org/show_bug.cgi?id=223832
<rdar://75555287>

Reviewed by David Kilzer.

A speculative fix for this crash. A possible explanation from the crash log suggests that the protectedThis
could be elided because of compiler optimization given it is not used in the block. To prevent such optimization,
protectedThis is therefore used explicitly in the block.

  • UIProcess/Cocoa/SOAuthorization/SOAuthorizationSession.mm:

(WebKit::SOAuthorizationSession::dismissViewController):

7:42 PM Changeset in webkit [275196] by Cameron McCormack
  • 2 edits in trunk/Tools

Avoid calling xcodebuild -showsdks where possible.
https://bugs.webkit.org/show_bug.cgi?id=223727

Reviewed by Sam Weinig.

run-minibrowser needs to know what port it's running on, since that
affects the build directory to look in to find the MiniBrowser binary.
On macOS, webkitdirs.pm's determinePortName ends up running
xcodebuild -showsdks to see if the current SDK has an internal
variant available, but this is slow. But we don't need to know the
exact SDK name here, just the SDK platform name, to determine the
port name.

So we shuffle some code around to avoid calling xcodebuild -showsdks
where we can. This reduces the time spent in run-minibrowser before
MiniBrowser is launched (crudely measured with `time run-minibrowser
--help`) from 2s to 0.6s on this machine.

  • Scripts/webkitdirs.pm:

(readXcodeUserDefault):
(determineArchitecture):
(argumentsForConfiguration):
(availableXcodeSDKs):
(isValidXcodeSDKPlatformName):
(determineXcodeSDKPlatformName):
(determineXcodeSDK):
(setXcodeSDK):
(xcodeSDKPlatformName):
(determinePortName):

7:27 PM Changeset in webkit [275195] by Jonathan Bedard
  • 34 edits
    2 deletes in trunk/Tools

[resultsdbpy] Return new-style commits
https://bugs.webkit.org/show_bug.cgi?id=223262
<rdar://problem/75483361>

Reviewed by Dewei Zhu.

  • Scripts/libraries/resultsdbpy/resultsdbpy/init.py: Bump version.
  • Scripts/libraries/resultsdbpy/resultsdbpy/controller/commit.py: Removed.
  • Scripts/libraries/resultsdbpy/resultsdbpy/controller/commit_controller.py:

(_find_comparison): Replace id with ref.
(uuid_range_for_commit_range_query): Support both id and ref in REST API.
(uuid_range_for_query): Ditto.
(CommitController._find): Ditto.
(CommitController.register): Return webkitscmpy.Commit object.

  • Scripts/libraries/resultsdbpy/resultsdbpy/controller/commit_controller_unittest.py:

(CommitControllerTest.test_branches): WebKit's default branch is now main.
(CommitControllerTest.test_register_with_full_commit): Registered commits should be webkitscmpy Commit objects.
(CommitControllerTest.test_find_range_id): Returned revisions are now integers.

  • Scripts/libraries/resultsdbpy/resultsdbpy/controller/commit_unittest.py: Removed.
  • Scripts/libraries/resultsdbpy/resultsdbpy/controller/upload_controller_unittest.py:

(UploadControllerPostTest.test_upload): WebKit commits are under-pinned by Git now.

  • Scripts/libraries/resultsdbpy/resultsdbpy/model/archive_context.py:

(ArchiveContext.register): Use webkitscmpy Commit objects.

  • Scripts/libraries/resultsdbpy/resultsdbpy/model/ci_context.py:

(CIContext.register): Use webkitscmpy Commit objects.

  • Scripts/libraries/resultsdbpy/resultsdbpy/model/commit_context.py:

(CommitContext.CommitModel): Renamed from CommitModelMk2.
(CommitContext.CommitByUuidAscending): Renamed from CommitByUuidAscendingMk2.
(CommitContext.CommitByUuidDescending): Renamed from CommitByUuidDescendingMk2.
(CommitContext.init): Remove old tables.
(CommitContext.timestamp_to_uuid): Use webkitscmpy Commit objects.
(CommitContext.branch_keys_for_commits): All default branches should be treated the same.
(CommitContext.find_commits_by_ref): Find commits by revision, hash and identifier.
(CommitContext.register):
(CommitContext.register_commit): Save commit to new tables.
(CommitContext.url): Pass commit object to repository url generator.
(CommitContext.CommitByID): Deleted.
(CommitContext.CommitModelMk2): Renamed to CommitModel.
(CommitContext.CommitByUuidAscendingMk2): Renamed to CommitByUuidAscending.
(CommitContext.CommitByUuidDescendingMk2): Renamed to CommitByUuidDescending.
(CommitContext.find_commits_by_id): Deleted.

  • Scripts/libraries/resultsdbpy/resultsdbpy/model/commit_context_unittest.py:

(CommitContextTest): Use ref instead of id.

  • Scripts/libraries/resultsdbpy/resultsdbpy/model/failure_context.py:

(FailureContext.register): Use webkitscmpy Commit objects.

  • Scripts/libraries/resultsdbpy/resultsdbpy/model/mock_model_factory.py:

(MockModelFactory):
(MockModelFactory.webkit): Mock both Subversion and GitHub for WebKit.
(MockModelFactory.create):

  • Scripts/libraries/resultsdbpy/resultsdbpy/model/repository.py:

(Repository.commit): By default, fully define commits.
(StashRepository.commit): Ditto.
(StashRepository.url_for_commit): Create a URL for a commit object.
(WebKitRepository.init): Use both GitHub and Subversion.
(WebKitRepository.commit): Determine which remote to use based on provided arguments.
(WebKitRepository.url_for_commit): Create a URL for a commit object.
(WebKitRepository.representations): WebKit commits can be represented by hashes.
(Repository.commit_for_id): Deleted.
(StashRepository.commit_for_id): Deleted.
(WebKitRepository.commit_for_id): Deleted.

  • Scripts/libraries/resultsdbpy/resultsdbpy/model/repository_unittest.py:

(RepositoryTest.test_svn): WebKit default branch is now main.

  • Scripts/libraries/resultsdbpy/resultsdbpy/model/suite_context.py:

(SuiteContext.register): Use webkitscmpy Commit objects.

  • Scripts/libraries/resultsdbpy/resultsdbpy/model/test_context.py:

(TestContext.register): Use webkitscmpy Commit objects.

  • Scripts/libraries/resultsdbpy/resultsdbpy/model/upload_context.py:

(UploadContext.UploadsByConfigurationLegacy.unpack): Use webkitscmpy Commit objects.
(UploadContext.UploadsByConfiguration.unpack): Ditto.
(UploadContext._do_job_for_key): Ditto.
(UploadContext.upload_test_results): Ditto.

  • Scripts/libraries/resultsdbpy/resultsdbpy/view/archive_view_unittest.py:

(ArchiveViewUnittest.register_archive): Use webkitscmpy Commit objects.

  • Scripts/libraries/resultsdbpy/resultsdbpy/view/commit_view.py:

(CommitView.commit): Use webkitscmpy Commit objects.
(CommitView.info): Ditto.
(CommitView.previous): Ditto.
(CommitView.next): Ditto.

  • Scripts/libraries/resultsdbpy/resultsdbpy/view/static/js/commit.js:

(Commit):
(Commit.prototype.label): Only print identifier/hash/revision if they are defined.
(_CommitBank.prototype._loadSiblings): Use ref over id.

  • Scripts/libraries/resultsdbpy/resultsdbpy/view/static/js/drawer.js: main is a default branch.
  • Scripts/libraries/resultsdbpy/resultsdbpy/view/static/js/timeline.js:

(xAxisFromScale): Only print author if the author exists.

  • Scripts/libraries/resultsdbpy/resultsdbpy/view/templates/commit.html: prefer ref over id, use

webkitscmpy Commit object in Jinja template.

  • Scripts/libraries/resultsdbpy/resultsdbpy/view/templates/documentation.html: Update documentation

to match webkitscmpy Commit object.

  • Scripts/libraries/resultsdbpy/resultsdbpy/view/templates/investigate.html: main is a default branch.
  • Scripts/libraries/resultsdbpy/resultsdbpy/view/templates/search.html: Correct CommitRepresentation callback.
  • Scripts/libraries/resultsdbpy/resultsdbpy/view/templates/suite_results.html: Ditto.
  • Scripts/libraries/resultsdbpy/setup.py: Bump version.
  • Scripts/libraries/webkitscmpy/setup.py: Ditto.
  • Scripts/libraries/webkitscmpy/webkitscmpy/init.py: Ditto.
  • Scripts/libraries/webkitscmpy/webkitscmpy/commit.py:

(Commit.Encoder.default): Handle dict and list in JSON correctly.
(Commit.uuid): uuid should be 'None' when timestamp is 'None'.
(Commit.repr): Return a ? for an undefined commit.

  • Scripts/libraries/webkitscmpy/webkitscmpy/mocks/remote/bitbucket.py:

(BitBucket.request): Do not add git-svn-id for undefined revision.

  • Scripts/libraries/webkitscmpy/webkitscmpy/mocks/remote/git_hub.py:

(GitHub._commit_response): Fix unit tests.

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

(ScmBase): Do not mach git-svn ID with a space before it.

5:52 PM Changeset in webkit [275194] by Alan Coon
  • 1 copy in tags/Safari-612.1.9

Tag Safari-612.1.9.

5:25 PM Changeset in webkit [275193] by ddkilzer@apple.com
  • 2 edits in trunk/Source/WebCore

Remove unused struct WebCore::AlternativeTextController::AlternativeTextInfo
<https://webkit.org/b/223902>

Reviewed by Wenson Hsieh.

  • editing/AlternativeTextController.h:
  • Remove unused struct definition.
4:28 PM Changeset in webkit [275192] by Robert Jenner
  • 3 edits in branches/safari-611.1.21.161-branch/Tools

Unreviewed build fix, cherry-pick parts of r273181. rdar://75904391

  • TestWebKitAPI/cocoa/TestNavigationDelegate.h:
  • TestWebKitAPI/cocoa/TestNavigationDelegate.mm:

(-[TestNavigationDelegate waitForDidFailProvisionalNavigation]):

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

[MacOS Debug] http/tests/security/contentSecurityPolicy/frame-src-cross-origin-load.html is a flakey failure
https://bugs.webkit.org/show_bug.cgi?id=222748

Unreviewed test gardening.

  • platform/mac/TestExpectations:
4:21 PM Changeset in webkit [275190] by commit-queue@webkit.org
  • 5 edits in trunk/Source/JavaScriptCore

[JSC] Use helper method when possible to store data in the callframe header
https://bugs.webkit.org/show_bug.cgi?id=223432

Patch by Xan López <Xan Lopez> on 2021-03-29
Reviewed by Yusuke Suzuki.

A bunch of the direct stores to the callframe header are zeroing
out the codeblock slot. Create a helper method to do that and use
it accordingly. For the rest, use emitPutToCallFrameHeader, which
already does the right thing. Also, remove a lot of unused helper
methods in AssemblyHelpers (which have been updated for no reason
throughout the years).

  • jit/AssemblyHelpers.h:

(JSC::AssemblyHelpers::emitPutToCallFrameHeaderBeforePrologue): Deleted.
(JSC::AssemblyHelpers::emitPutPayloadToCallFrameHeaderBeforePrologue): Deleted.
(JSC::AssemblyHelpers::emitPutTagToCallFrameHeaderBeforePrologue): Deleted.

  • wasm/js/JSToWasm.cpp:

(JSC::Wasm::createJSToWasmWrapper):

  • wasm/js/WasmToJS.cpp:

(JSC::Wasm::wasmToJS):

  • wasm/js/WebAssemblyFunction.cpp:

(JSC::WebAssemblyFunction::jsCallEntrypointSlow):

4:18 PM Changeset in webkit [275189] by Chris Dumez
  • 4 edits
    2 adds in trunk

REGRESSION(r274992): Nullptr crash in FontCache::retrieveOrAddCachedFonts
https://bugs.webkit.org/show_bug.cgi?id=223858
<rdar://75883697>

Reviewed by Darin Adler and Ryosuke Niwa.

Source/WebCore:

Stop using a hash as key in the FontCascadeCache. Instead, use HashTraits and use
FontCascadeCacheKey as key.

Test: fonts/font-cache-crash.html

  • platform/graphics/FontCache.cpp:

(WebCore::FontCache::retrieveOrAddCachedFonts):
(WTF::FontCascadeCacheKeyHash::hash):

  • platform/graphics/FontCache.h:

(WebCore::FontCascadeCacheKey::operator== const):
(WTF::FontCascadeCacheKeyHash::equal):
(WTF::HashTraits<WebCore::FontCascadeCacheKey>::emptyValue):
(WTF::HashTraits<WebCore::FontCascadeCacheKey>::constructDeletedValue):
(WTF::HashTraits<WebCore::FontCascadeCacheKey>::isDeletedValue):

LayoutTests:

Add layout test coverage.

  • fonts/font-cache-crash-expected.txt: Added.
  • fonts/font-cache-crash.html: Added.
3:57 PM Changeset in webkit [275188] by achristensen@apple.com
  • 2 edits in trunk/Source/WebKit

[Big Sur arm64] TestWebKitAPI.WebKit.AccessibilityReduceMotion is a flaky crash
https://bugs.webkit.org/show_bug.cgi?id=222824

Reviewed by Tim Horton.

Use smart pointers instead of storing raw ObjC pointers as ivars.

  • UIProcess/Cocoa/PreferenceObserver.mm:

(-[WKUserDefaults findPreferenceChangesAndNotifyForKeys:toValuesForKeys:]):

3:55 PM Changeset in webkit [275187] by Devin Rousso
  • 8 edits
    2 adds in trunk

Propagate user gestures through requestAnimationFrame just like setTimeout
https://bugs.webkit.org/show_bug.cgi?id=223775
<rdar://problem/75860868>

Reviewed by Geoffrey Garen.

Source/WebCore:

setTimeout and requestAnimationFrame are used somewhat interchangeably on the web.
There should be similar features/affordances for both so that if a developer decides to use
a display-linked animation "loop" instead of a strictly time-based delay (or even a "loop")
they're able to do similar things in the callback/handler.

Test: fast/animation/request-animation-frame-propagate-user-gesture.html

  • dom/ScriptedAnimationController.h:
  • dom/ScriptedAnimationController.cpp:

(WebCore::ScriptedAnimationController::resume):
(WebCore::ScriptedAnimationController::registerCallback):
(WebCore::ScriptedAnimationController::cancelCallback):
(WebCore::ScriptedAnimationController::serviceRequestAnimationFrameCallbacks):
Create a private struct for holding more data in the list of callbacks than just the
callback itself. For now, the only other data saved is a RefPtr<UserGestureToken>.

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

(WebCore::Internals::withoutUserGesture): Added.
Add a way for tests to guaranteed run arbitrary code without a user gesture.

LayoutTests:

  • editing/pasteboard/dom-paste/dom-paste-requires-user-gesture.html:
  • fast/animation/request-animation-frame-propagate-user-gesture.html: Added.
  • fast/animation/request-animation-frame-propagate-user-gesture-expected.txt: Added.
3:53 PM Changeset in webkit [275186] by Wenson Hsieh
  • 11 edits
    4 adds in trunk

Add a way for internal clients to hit-test for selectable text in user agent shadow roots
https://bugs.webkit.org/show_bug.cgi?id=223894
<rdar://problem/75968068>

Reviewed by Tim Horton.

Source/WebKit:

Augment some Objective-C injected bundle SPI to allow internal clients to hit-test for selectable text,
including content in UA shadow roots. Refer to <rdar://problem/75753666> for more context.

Tests: InjectedBundleHitTest.TextParagraph

InjectedBundleHitTest.ImageOverlay

  • WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInFrame.h:
  • WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInFrame.mm:

(-[WKWebProcessPlugInFrame hitTest:options:]):

Add a new version of -hitTest: that takes hit testing options (for now, the only option is whether or not we
should allow UA shadow root content when hit-testing).

  • WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInNodeHandle.h:
  • WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInNodeHandle.mm:

(-[WKWebProcessPlugInNodeHandle isSelectableTextNode]):

Add a readonly getter to return whether or not the hit-tested node is a selectable text node.

  • WebProcess/InjectedBundle/DOM/InjectedBundleNodeHandle.cpp:

(WebKit::InjectedBundleNodeHandle::isSelectableTextNode const):

  • WebProcess/InjectedBundle/DOM/InjectedBundleNodeHandle.h:
  • WebProcess/WebPage/WebFrame.cpp:

(WebKit::WebFrame::hitTest const):

  • WebProcess/WebPage/WebFrame.h:

(WebKit::WebFrame::defaultHitTestRequestTypes):

Tools:

Add a new API test to exercise -[WKWebProcessPlugInFrame hitTest:options:].

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/WebKit/InjectedBundleHitTest.mm: Added.

(-[WKWebViewWithHitTester hasSelectableTextAt:]):
(TestWebKitAPI::createWebViewWithHitTester):
(TestWebKitAPI::TEST):

  • TestWebKitAPI/Tests/WebKit/simple-responsive-page.html: Added.
  • TestWebKitAPI/Tests/WebKitCocoa/InjectedBundleHitTestPlugIn.mm: Added.

(-[InjectedBundleHitTestPlugIn webProcessPlugIn:didCreateBrowserContextController:]):
(-[InjectedBundleHitTestPlugIn webProcessPlugInBrowserContextController:didClearWindowObjectForFrame:inScriptWorld:]):
(-[InjectedBundleHitTestPlugIn webProcessPlugInBrowserContextController:didFinishLoadForFrame:]):
(-[InjectedBundleHitTestPlugIn hasSelectableTextAt:completionHandler:]):
(-[InjectedBundleHitTestPlugIn dealloc]):

  • TestWebKitAPI/Tests/WebKitCocoa/InjectedBundleHitTestProtocol.h: Added.
3:38 PM Changeset in webkit [275185] by Said Abou-Hallawa
  • 5 edits in trunk/Source

[GPU Process] Don't record DisplayList items if the GPU Process has been terminated
https://bugs.webkit.org/show_bug.cgi?id=223864
<rdar://73586187>

Reviewed by Simon Fraser.

Source/WebCore:

Consult the DisplayList::Recorder::Delegate before appending the item.
If the GPU Process was terminated, don't append the item.

  • platform/graphics/displaylists/DisplayListRecorder.cpp:

(WebCore::DisplayList::Recorder::canAppendItemOfType):
(WebCore::DisplayList::Recorder::willAppendItemOfType): Deleted.

  • platform/graphics/displaylists/DisplayListRecorder.h:

(WebCore::DisplayList::Recorder::Delegate::canAppendItemOfType):
(WebCore::DisplayList::Recorder::append):
(WebCore::DisplayList::Recorder::Delegate::willAppendItemOfType): Deleted.

Source/WebKit:

  • WebProcess/GPU/graphics/RemoteImageBufferProxy.h:
3:09 PM Changeset in webkit [275184] by ChangSeok Oh
  • 5 edits in trunk/Source/WebCore

Implement repetition of animated AVIF
https://bugs.webkit.org/show_bug.cgi?id=223127
<rdar://problem/75629284>

Reviewed by Philippe Normand.

This change implements repeating AVIF animation, reflecting the AVIF sequence spec.
As the libavif does not provide a clear repetition count yet, we calculate it
by dividing the track duration by the sum of each frame duration. If the track duration
is not specified, the animation repeats indefinitely. Chromium just indefinitely
repeats all animated avif images.
The repetition count of avif sequence images is not necessarily an integer.
Since ScalableImageDecoder accepts an integer value for repetition,
we round the repetition count in floating point values to conform the current
image decoder design. Later, when we have more reliable testing environment
for the avifs repetition, we will revisit the repetition count in floating point numbers.

No new tests since no reliable test could be created. The latest avif encoder
does not support the repetition count yet.

  • platform/image-decoders/avif/AVIFImageDecoder.cpp:

(WebCore::AVIFImageDecoder::repetitionCount const):
(WebCore::AVIFImageDecoder::tryDecodeSize):

  • platform/image-decoders/avif/AVIFImageDecoder.h:
  • platform/image-decoders/avif/AVIFImageReader.cpp:

(WebCore::AVIFImageReader::repetitionCount const):

  • platform/image-decoders/avif/AVIFImageReader.h:
3:01 PM Changeset in webkit [275183] by Russell Epstein
  • 1 copy in tags/Safari-612.1.7.11

Tag Safari-612.1.7.11.

3:00 PM Changeset in webkit [275182] by Russell Epstein
  • 1 copy in tags/Safari-612.1.7.10

Tag Safari-612.1.7.10.

2:53 PM Changeset in webkit [275181] by mmaxfield@apple.com
  • 9 edits in trunk

[GPU Process] Simplify DisplayList::Iterator part 2: Rename setItemBufferClient to setItemBuffer{Writing,Reading}Client
https://bugs.webkit.org/show_bug.cgi?id=223863

Reviewed by Wenson Hsieh.

Source/WebCore:

Currently, we have:
void setItemBufferClient(ItemBufferReadingClient*);
void setItemBufferClient(ItemBufferWritingClient*);

This is unfortunate, because if you want to set one of these clients to nullptr, you have to do:
setItemBufferClient(static_cast<ItemBufferReadingClient*>(nullptr));

Instead, we can just rename these functions to:
void setItemBufferReadingClient(ItemBufferReadingClient*);
void setItemBufferWritingClient(ItemBufferWritingClient*);

So you can just do
setItemBufferReadingClient(nullptr);

No new tests because there is no behavior change.

  • platform/graphics/displaylists/DisplayList.cpp:

(WebCore::DisplayList::DisplayList::setItemBufferReadingClient):
(WebCore::DisplayList::DisplayList::setItemBufferWritingClient):
(WebCore::DisplayList::DisplayList::setItemBufferClient): Deleted.

  • platform/graphics/displaylists/DisplayList.h:

Source/WebKit:

  • GPUProcess/graphics/DisplayListReaderHandle.cpp:

(WebKit::DisplayListReaderHandle::displayListForReading const):

  • WebProcess/GPU/graphics/RemoteImageBufferProxy.h:

(WebKit::RemoteImageBufferProxy::RemoteImageBufferProxy):

Tools:

  • TestWebKitAPI/Tests/WebCore/DisplayListTests.cpp:

(TestWebKitAPI::TEST):

  • TestWebKitAPI/Tests/WebCore/cg/DisplayListTestsCG.cpp:

(TestWebKitAPI::TEST):

2:49 PM Changeset in webkit [275180] by mmaxfield@apple.com
  • 10 edits in trunk/Source/WebKit

[GPU Process]: Improve getImageData() perf part 2: Use shared memory and a semaphore
https://bugs.webkit.org/show_bug.cgi?id=223732

Reviewed by Ryosuke Niwa.

This patch implements a design for getImageData() where the web process and the GPU process
set up a shmem + semaphore ahead-of-time, so that when we encounter a call to getImageData(),
the GPU process can just write into the shmem and signal the semaphore. The web process just
encodes the getImageData() call into the regular display list, flushAsync()s to kick the GPU
process, then just waits on the semaphore. Initial performance testing shows that this is
way, way faster than sending messages containing pixel color data payloads.

This patch causes a ~40% progression on the Images test in MotionMark on my Mac with the GPU
process enabled. When compared to the GPU process disabled, the results after just running
just a few times seem to be pretty close (within the noise).

If we need more performance, the next step is to try to reduce the memcpy()s.

No new tests because there is no behavior change.

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

(WebKit::RemoteRenderingBackend::updateSharedMemoryForGetImageDataHelper):
(WebKit::RemoteRenderingBackend::updateSharedMemoryForGetImageData):
(WebKit::RemoteRenderingBackend::semaphoreForGetImageData):
(WebKit::RemoteRenderingBackend::updateSharedMemoryAndSemaphoreForGetImageData):
(WebKit::RemoteRenderingBackend::destroyGetImageDataSharedMemory):
(WebKit::RemoteRenderingBackend::populateGetImageDataSharedMemory):
(WebKit::RemoteRenderingBackend::getImageData): Deleted.

  • GPUProcess/graphics/RemoteRenderingBackend.h:
  • GPUProcess/graphics/RemoteRenderingBackend.messages.in:
  • Platform/IPC/IPCSemaphore.h:
  • Platform/IPC/darwin/IPCSemaphoreDarwin.cpp:

(IPC::Semaphore::waitFor):

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

(WebKit::RemoteRenderingBackendProxy::sharedMemoryForGetImageData):
(WebKit::RemoteRenderingBackendProxy::waitForGetImageDataToComplete):
(WebKit::RemoteRenderingBackendProxy::destroyGetImageDataSharedMemory):
(WebKit::RemoteRenderingBackendProxy::getImageData): Deleted.

  • WebProcess/GPU/graphics/RemoteRenderingBackendProxy.h:
2:03 PM Changeset in webkit [275179] by Robert Jenner
  • 2 edits in trunk/LayoutTests

[ BigSur Debug wk2 ] compositing/video/video-update-rendering.html is a flakey text failure
https://bugs.webkit.org/show_bug.cgi?id=223900

Unreviewed test gardening.

  • platform/mac-wk2/TestExpectations: Updated expectations to Pass Failure while test is reviewed.
2:02 PM Changeset in webkit [275178] by Alan Coon
  • 2 edits in branches/safari-612.1.9-branch/Source/WebCore/PAL

Cherry-pick r275173. rdar://problem/75971415

The header file NotifySPI.h should not be private
https://bugs.webkit.org/show_bug.cgi?id=223893
<rdar://75942308>

Unreviewed build fix.

  • PAL.xcodeproj/project.pbxproj:

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

1:58 PM Changeset in webkit [275177] by Alan Coon
  • 1 copy in branches/safari-612.1.9-branch

New branch.

1:58 PM Changeset in webkit [275176] by eric.carlson@apple.com
  • 8 edits
    2 adds in trunk

[macOS] Playback is paused after scrubbing with the touch bar
https://bugs.webkit.org/show_bug.cgi?id=223887
rdar://75597684

Reviewed by Jer Noble.

Source/WebCore:

Test: media/remote-control-command-scrubbing.html

  • html/HTMLMediaElement.cpp:

(WebCore::HTMLMediaElement::pauseInternal): Don't pause if m_pausedInternal is true.
(WebCore::HTMLMediaElement::didReceiveRemoteControlCommand): Support BeginScrubbingCommand
and EndScrubbingCommand.

  • html/MediaElementSession.cpp:

(WebCore::MediaElementSession::didReceiveRemoteControlCommand): Update enum names.

  • platform/audio/PlatformMediaSession.cpp:

(WebCore::convertEnumerationToString): Ditto.

  • platform/audio/PlatformMediaSession.h: Add "Command" suffix to BeginScrubbing

and EndScrubbing so they math the enum's naming pattern.

  • platform/mac/WebPlaybackControlsManager.mm:

(-[WebPlaybackControlsManager beginTouchBarScrubbing]): Update enum names.
(-[WebPlaybackControlsManager endTouchBarScrubbing]): Update enum names.

  • testing/Internals.cpp:

(WebCore::Internals::postRemoteControlCommand): Add "beginscrubbing" and "endscrubbing".

LayoutTests:

  • media/remote-control-command-scrubbing-expected.txt: Added.
  • media/remote-control-command-scrubbing.html: Added.
1:47 PM Changeset in webkit [275175] by Ryan Haddad
  • 2 edits in trunk/Tools

Unreviewed, reverting r275170.

Broke the build

Reverted changeset:

"[Big Sur arm64]
TestWebKitAPI.WebKit.AccessibilityReduceMotion is a flaky
crash"
https://bugs.webkit.org/show_bug.cgi?id=222824
https://commits.webkit.org/r275170

1:46 PM Changeset in webkit [275174] by Fujii Hironori
  • 11 edits
    1 copy in trunk/Source

[WinCairo] Custom fonts don't work in GPU process mode
https://bugs.webkit.org/show_bug.cgi?id=223861

Reviewed by Don Olmstead.

Source/WebCore:

Custom fonts didn't work in GPU process mode of WinCairo port
because FontCustomPlatformData was destructed soon. In non-GPU
process mode, FontCustomPlatformData is retained by CachedFont. In
GPU process mode, there is no CachedFont. So, the font resource
handle should be ref-counted and retained by FontPlatformData.

Added a new class FontMemoryResource to ref-count the font
resource handle. Added a new member of Ref<FontMemoryResource> to
FontPlatformData::CreationData struct.

Converted by existing canvas custom font tests.

  • PlatformWin.cmake:
  • platform/graphics/FontPlatformData.h:
  • platform/graphics/opentype/FontMemoryResource.h:

(WebCore::FontMemoryResource::create):
(WebCore::FontMemoryResource::~FontMemoryResource):
(WebCore::FontMemoryResource::FontMemoryResource):

  • platform/graphics/opentype/OpenTypeUtilities.cpp:

(WebCore::renameAndActivateFont):

  • platform/graphics/opentype/OpenTypeUtilities.h:
  • platform/graphics/win/FontCustomPlatformData.cpp:

(WebCore::FontCustomPlatformData::FontCustomPlatformData):
(WebCore::FontCustomPlatformData::fontPlatformData):
(WebCore::createFontCustomPlatformData):
(WebCore::FontCustomPlatformData::~FontCustomPlatformData): Deleted.

  • platform/graphics/win/FontCustomPlatformData.h:

(WebCore::FontCustomPlatformData::FontCustomPlatformData): Deleted.

  • platform/graphics/win/FontCustomPlatformDataCairo.cpp:

(WebCore::FontCustomPlatformData::FontCustomPlatformData):
(WebCore::createFontCustomPlatformData):
(WebCore::FontCustomPlatformData::~FontCustomPlatformData): Deleted.

  • platform/graphics/win/FontPlatformDataWin.cpp:

(WebCore::FontPlatformData::FontPlatformData):

Source/WebKit:

  • Shared/win/WebCoreArgumentCodersWin.cpp:

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

1:42 PM Changeset in webkit [275173] by pvollan@apple.com
  • 2 edits in trunk/Source/WebCore/PAL

The header file NotifySPI.h should not be private
https://bugs.webkit.org/show_bug.cgi?id=223893
<rdar://75942308>

Unreviewed build fix.

  • PAL.xcodeproj/project.pbxproj:
1:31 PM Changeset in webkit [275172] by achristensen@apple.com
  • 6 edits
    1 add in trunk/Source

Use terminate_with_reason instead of xpc_connection_kill
https://bugs.webkit.org/show_bug.cgi?id=223618

Reviewed by Darin Adler.

Source/WebKit:

The former was deprecated in rdar://70461770
This does the same thing but adds debugging information so that people looking at process terminations have more information about what is going on.

  • Platform/IPC/cocoa/ConnectionCocoa.mm:

(IPC::ConnectionTerminationWatchdog::watchdogTimerFired):
(IPC::Connection::kill):

  • Platform/spi/Cocoa/ReasonSPI.h: Added.
  • UIProcess/Launcher/mac/ProcessLauncherMac.mm:

(WebKit::ProcessLauncher::platformInvalidate):

  • WebKit.xcodeproj/project.pbxproj:

Source/WTF:

  • wtf/spi/darwin/XPCSPI.h:
1:20 PM Changeset in webkit [275171] by eric.carlson@apple.com
  • 26 edits
    3 copies
    7 adds
    2 deletes in trunk/Source

[macOS] Add remote MediaSessionCoordinator
https://bugs.webkit.org/show_bug.cgi?id=223854
<rdar://problem/75934650>

Reviewed by Jer Noble.

Source/WebCore:

Rename PlatformMediaSessionCoordinator to MediaSessionCoordinatorPrivate and make
it possible for the MediaSessionCoordinator implementation to be located in another
process.

  • Modules/mediasession/MediaPositionState.h:

(WebCore::MediaPositionState::encode const):
(WebCore::MediaPositionState::decode):

  • Modules/mediasession/MediaSession.cpp:
  • Modules/mediasession/MediaSession.h:
  • Modules/mediasession/MediaSessionActionHandler.h:
  • Modules/mediasession/MediaSessionCoordinator.cpp:

(WebCore::MediaSessionCoordinator::create):
(WebCore::MediaSessionCoordinator::MediaSessionCoordinator):
(WebCore::MediaSessionCoordinator::seekTo):
(WebCore::MediaSessionCoordinator::play):
(WebCore::MediaSessionCoordinator::pause):
(WebCore::MediaSessionCoordinator::setTrack):
(WebCore::MediaSessionCoordinator::positionStateChanged):
(WebCore::MediaSessionCoordinator::playbackStateChanged):
(WebCore::MediaSessionCoordinator::readyStateChanged):
(WebCore::MediaSessionCoordinator::seekSessionToTime):
(WebCore::MediaSessionCoordinator::playSession):
(WebCore::MediaSessionCoordinator::pauseSession):
(WebCore::MediaSessionCoordinator::setSessionTrack):
(WebCore::MediaSessionCoordinator::internalSeekTo):
(WebCore::MediaSessionCoordinator::internalPlay):
(WebCore::MediaSessionCoordinator::internalPause):
(WebCore::MediaSessionCoordinator::internalSetTrack):

  • Modules/mediasession/MediaSessionCoordinator.h:
  • Modules/mediasession/MediaSessionCoordinatorPrivate.cpp: Copied from Source/WebCore/platform/graphics/PlatformMediaSessionCoordinator.cpp

(WebCore::MediaSessionCoordinatorPrivate::setLogger):

  • Modules/mediasession/MediaSessionCoordinatorPrivate.h: Copied from Source/WebCore/platform/graphics/PlatformMediaSessionCoordinator.h

(WebCore::MediaSessionCoordinatorPrivate::setClient):
(WebCore::MediaSessionCoordinatorPrivate::loggerPtr const):
(WebCore::MediaSessionCoordinatorPrivate::logIdentifier const):
(WebCore::MediaSessionCoordinatorPrivate::client const):

  • Modules/mediasession/MediaSessionPlaybackState.h:
  • Modules/mediasession/MediaSessionReadyState.h:
  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • platform/audio/PlatformMediaSession.h:
  • platform/graphics/PlatformMediaSessionCoordinator.cpp: Removed.
  • platform/graphics/PlatformMediaSessionCoordinator.h: Removed.
  • testing/MockMediaSessionCoordinator.cpp:

(WebCore::MockMediaSessionCoordinator::seekTo):
(WebCore::MockMediaSessionCoordinator::play):
(WebCore::MockMediaSessionCoordinator::pause):
(WebCore::MockMediaSessionCoordinator::setTrack):
(WebCore::MockMediaSessionCoordinator::positionStateChanged):
(WebCore::MockMediaSessionCoordinator::readyStateChanged):
(WebCore::MockMediaSessionCoordinator::playbackStateChanged):
(WebCore::MockMediaSessionCoordinator::logChannel const):

  • testing/MockMediaSessionCoordinator.h:

(WebCore::MockMediaSessionCoordinator::logClassName const):

Source/WebKit:

Define the interface for a remote MediaSessionCoordinatorPrivate and implement
message senders and receivers RemoteMediaSessionCoordinator and
RemoteMediaSessionCoordinatorProxy.

  • CMakeLists.txt:
  • DerivedSources-input.xcfilelist:
  • DerivedSources-output.xcfilelist:
  • DerivedSources.make:
  • SourcesCocoa.txt:
  • UIProcess/Media/MediaSessionCoordinatorPrivateProxy.h:
  • UIProcess/Media/RemoteMediaSessionCoordinatorProxy.cpp: Added.

(WebKit::RemoteMediaSessionCoordinatorProxy::create):
(WebKit::RemoteMediaSessionCoordinatorProxy::RemoteMediaSessionCoordinatorProxy):
(WebKit::RemoteMediaSessionCoordinatorProxy::~RemoteMediaSessionCoordinatorProxy):
(WebKit::RemoteMediaSessionCoordinatorProxy::coordinateSeekTo):
(WebKit::RemoteMediaSessionCoordinatorProxy::coordinatePlay):
(WebKit::RemoteMediaSessionCoordinatorProxy::coordinatePause):
(WebKit::RemoteMediaSessionCoordinatorProxy::::coordinateSetTrack):
(WebKit::RemoteMediaSessionCoordinatorProxy::positionStateChanged):
(WebKit::RemoteMediaSessionCoordinatorProxy::playbackStateChanged):
(WebKit::RemoteMediaSessionCoordinatorProxy::readyStateChanged):

  • UIProcess/Media/RemoteMediaSessionCoordinatorProxy.h:
  • UIProcess/Media/RemoteMediaSessionCoordinatorProxy.messages.in: Added.
  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::createMediaSessionCoordinator):

  • UIProcess/WebPageProxy.h:
  • WebKit.xcodeproj/project.pbxproj:
  • WebProcess/MediaSession/RemoteMediaSessionCoordinator.cpp: Added.

(WebKit::RemoteMediaSessionCoordinator::create):
(WebKit::RemoteMediaSessionCoordinator::RemoteMediaSessionCoordinator):
(WebKit::RemoteMediaSessionCoordinator::~RemoteMediaSessionCoordinator):
(WebKit::RemoteMediaSessionCoordinator::seekTo):
(WebKit::RemoteMediaSessionCoordinator::play):
(WebKit::RemoteMediaSessionCoordinator::pause):
(WebKit::RemoteMediaSessionCoordinator::setTrack):
(WebKit::RemoteMediaSessionCoordinator::positionStateChanged):
(WebKit::RemoteMediaSessionCoordinator::readyStateChanged):
(WebKit::RemoteMediaSessionCoordinator::playbackStateChanged):
(WebKit::RemoteMediaSessionCoordinator::seekSessionToTime):
(WebKit::RemoteMediaSessionCoordinator::playSession):
(WebKit::RemoteMediaSessionCoordinator::pauseSession):
(WebKit::RemoteMediaSessionCoordinator::setSessionTrack):
(WebKit::RemoteMediaSessionCoordinator::logChannel const):

  • WebProcess/MediaSession/RemoteMediaSessionCoordinator.h: Added.
  • WebProcess/MediaSession/RemoteMediaSessionCoordinator.messages.in:
  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::createMediaSessionCoordinator):

  • WebProcess/WebPage/WebPage.h:
  • WebProcess/WebPage/WebPage.messages.in:
1:01 PM Changeset in webkit [275170] by Ryan Haddad
  • 2 edits in trunk/Tools

[Big Sur arm64] TestWebKitAPI.WebKit.AccessibilityReduceMotion is a flaky crash
https://bugs.webkit.org/show_bug.cgi?id=222824

Unreviewed test gardening.

  • TestWebKitAPI/Tests/WebKit/AccessibilityReduceMotion.mm: Disable the test for arm64 Macs.
1:01 PM Changeset in webkit [275169] by Devin Rousso
  • 15 edits in trunk/Source/WebCore

[Payment Request] move added object data to ApplePayModifier
https://bugs.webkit.org/show_bug.cgi?id=223621
<rdar://problem/75720879>

Reviewed by Wenson Hsieh.

The object data in PaymentDetailsModifier has a sibling property required DOMString supportedMethods
which acts as a "guard" to make sure that the structure of data is only limited to that supportedMethods
meaning that there's no concern over naming collisions between two different supportedMethods. As such,
the object data added to PaymentItem and PaymentDetailsBase and PaymentShippingOption should really
be part of ApplePayModifier (which is what the object data in PaymentDetailsModifier is parsed into).

  • Modules/applepay/paymentrequest/ApplePayModifier.idl:
  • Modules/applepay/paymentrequest/ApplePayModifier.h:
  • Modules/applepay/paymentrequest/ApplePayPaymentHandler.h:
  • Modules/applepay/paymentrequest/ApplePayPaymentHandler.cpp:

(WebCore::convertAndValidate):
(WebCore::merge):
(WebCore::ApplePayPaymentHandler::show):
(WebCore::ApplePayPaymentHandler::computeShippingMethods const):
(WebCore::ApplePayPaymentHandler::computeTotalAndLineItems const):
(WebCore::validate):
(WebCore::ApplePayPaymentHandler::firstApplicableModifier const): Added.
(WebCore::ApplePayPaymentHandler::shippingAddressUpdated):
(WebCore::ApplePayPaymentHandler::shippingOptionUpdated):
(WebCore::ApplePayPaymentHandler::paymentMethodUpdated):
Instead of validating and merging data from the various ApplePay*Data objects, get the
first applicable ApplePayModifier from the list of PaymentDetailsModifier and use that
for validation and data merging (since, as explained above, it now contains the data).

  • Modules/paymentrequest/PaymentDetailsBase.idl:
  • Modules/paymentrequest/PaymentDetailsBase.h:
  • Modules/paymentrequest/PaymentItem.idl:
  • Modules/paymentrequest/PaymentItem.h:
  • Modules/paymentrequest/PaymentShippingOption.idl:
  • Modules/paymentrequest/PaymentShippingOption.h:
  • Modules/paymentrequest/PaymentRequest.cpp:

(WebCore::checkAndCanonicalizePaymentItem):
(WebCore::checkAndCanonicalizeTotal):
(WebCore::checkAndCanonicalizeDetails):
(WebCore::PaymentRequest::create):
(WebCore::PaymentRequest::settleDetailsPromise):
Remove the IDL object data; and associated members/logic now that the parsed data is all
part of ApplePayModifier. These objects are now back to being spec compliant.

  • Modules/applepay/ApplePayDetailsUpdateBase.idl:

Drive-by: Add missing inheritance to ApplePayDetailsUpdateData.

  • Modules/applepay/ApplePayLineItemData.idl:
  • Modules/applepay/ApplePayShippingMethodData.idl:

Drive-by: Remove unnecessary attributes.

12:51 PM Changeset in webkit [275168] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebCore

Make a Ref to HTMLPlugInElement when resolving callback
https://bugs.webkit.org/show_bug.cgi?id=223846

Patch by Ian Gilbert <iang@apple.com> on 2021-03-29
Reviewed by Ryosuke Niwa.

Take a Ref to the HTMLPlugInElement to keep it alive while invoking HTMLPlugInElement::swapRendererTimerFired()

  • html/HTMLPlugInElement.cpp:

(WebCore::HTMLPlugInElement::swapRendererTimerFired):

12:19 PM Changeset in webkit [275167] by Robert Jenner
  • 2 edits in trunk/LayoutTests

[ macOS wk2 ] media/pip-video-going-into-fullscreen.html is a flakey timeout
https://bugs.webkit.org/show_bug.cgi?id=223762

Unreviewed test gardening.

  • platform/mac-wk2/TestExpectations: Updating test expectations to Pass timeout while test is being reviewed.
11:12 AM Changeset in webkit [275166] by commit-queue@webkit.org
  • 14 edits in trunk

Migrate _WKUserContentExtension and older versions of WKContentRuleList to WKContentRuleList during lookup
https://bugs.webkit.org/show_bug.cgi?id=223831

Patch by Alex Christensen <achristensen@webkit.org> on 2021-03-29
Reviewed by Brady Eidson.

Source/WebKit:

r275078 incremented CurrentContentRuleListFileVersion for the first time in a few years.
As a result, we will get a WKErrorContentRuleListStoreVersionMismatch during lookup for existing compiled WKContentRuleLists.
To make this as compatible as possible, if we see such a WKContentRuleList, try extracting its source and recompiling.

Also, _WKUserContentExtension is used by Safari and being migrated from in rdar://75889414.
To make this succeed and not leave any files behind, we move legacy files to modern filenames during lookup.
We also remove them if they're there when removing the WKContentRuleList from the WKContentRuleListStore,
and we include them in getAvailableContentRuleListIdentifiers. compileContentRuleList only compiles to the modern locations,
and invalidateContentRuleListVersion is only used for tests. All this is done on non-main WorkQueues, so the few additional
file reads/writes aren't an issue.

Luckily, _WKUserContentExtensionStore was only used by Safari, and its defaultStore was never used.

All this is covered by API tests.

  • UIProcess/API/APIContentRuleListStore.cpp:

(API::ContentRuleListStore::defaultStore):
(API::ContentRuleListStore::storeWithPath):
(API::ContentRuleListStore::ContentRuleListStore):
(API::openAndMapContentRuleList):
(API::getContentRuleListSourceFromMappedFile):
(API::ContentRuleListStore::lookupContentRuleList):
(API::ContentRuleListStore::getAvailableContentRuleListIdentifiers):
(API::ContentRuleListStore::compileContentRuleList):
(API::ContentRuleListStore::removeContentRuleList):
(API::ContentRuleListStore::invalidateContentRuleListVersion):
(API::ContentRuleListStore::getContentRuleListSource):
(API::ContentRuleListStore::legacyDefaultStore): Deleted.
(API::ContentRuleListStore::nonLegacyDefaultStore): Deleted.
(API::ContentRuleListStore::~ContentRuleListStore): Deleted.
(API::openAndMapOrCopyContentRuleList): Deleted.

  • UIProcess/API/APIContentRuleListStore.h:
  • UIProcess/API/C/WKUserContentExtensionStoreRef.cpp:

(WKUserContentExtensionStoreCreate):

  • UIProcess/API/Cocoa/APIContentRuleListStoreCocoa.mm:

(API::ContentRuleListStore::defaultStorePath):

  • UIProcess/API/Cocoa/WKContentRuleListStore.h:
  • UIProcess/API/Cocoa/WKContentRuleListStore.mm:

(+[WKContentRuleListStore defaultStore]):
(+[WKContentRuleListStore storeWithURL:]):
(+[WKContentRuleListStore defaultStoreWithLegacyFilename]):
(+[WKContentRuleListStore storeWithURLAndLegacyFilename:]):

  • UIProcess/API/Cocoa/WKContentRuleListStorePrivate.h:

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/ContentRuleListNotification.mm:

(respond):
(TEST):

  • TestWebKitAPI/cocoa/TestNavigationDelegate.h:
  • TestWebKitAPI/cocoa/TestNavigationDelegate.mm:

(-[WKWebView _test_waitForDidFailProvisionalNavigation]):

10:46 AM Changeset in webkit [275165] by achristensen@apple.com
  • 2 edits in trunk/Source/WebCore

Build fix.

  • platform/graphics/SourceBufferPrivateClient.h:

I have a build that can't find the MediaDescription destructor from the AudioTrackInformation declaration.
Including MediaDescription.h fixes it.

10:34 AM Changeset in webkit [275164] by commit-queue@webkit.org
  • 3 edits
    2 adds in trunk

Release assert in Vector::at in RenderLayoutState::establishLineGrid
Source/WebCore:

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

Patch by Frédéric Wang <fwang@igalia.com> on 2021-03-29
Reviewed by Zalan Bujtas.

Fix out-of-bound access for layoutStateStack and ensure the whole vector is browsed.

Test: fast/line-grid/establish-line-grid-crash.html

  • rendering/RenderLayoutState.cpp:

(WebCore::RenderLayoutState::establishLineGrid): Fix the exit condition.

LayoutTests:

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

Patch by Frédéric Wang <fwang@igalia.com> on 2021-03-29
Reviewed by Zalan Bujtas.

Add regression test.

  • fast/line-grid/establish-line-grid-crash-expected.txt: Added.
  • fast/line-grid/establish-line-grid-crash.html: Added.
10:21 AM Changeset in webkit [275163] by Simon Fraser
  • 34 edits
    2 copies in trunk/Source

Plumb DisplayUpdate through the display refresh monitors
https://bugs.webkit.org/show_bug.cgi?id=223847

Reviewed by Sam Weinig.

Future work will allow DisplayRefreshMonitorClients to request different frame rates, which
are whole fractions of the display's nominal refresh rate. These various frame rate requests
flow up through the DisplayRefreshMonitors, and in WebKit2, up through IPC to the
per-display DisplayLink which may even service multiple processes.

For power reasons, we don't want to trigger display refresh notifications down the chain at
the highest possible frequency; at various stages of propagation the rate might be halved if
that's necessary for downstream clients.

To make this frequency splitting logic simple, this patch introduces DisplayUpdate, which
represents an update of the display, and contains data about it in the form of a numerator
is the frame index, and the denominator is the nominal frame rate. Frame index wraps to zero
every second.

For example, a 60Hz display will generate display refreshes with DisplayUpdates which
sequentially will be { 0, 60 }, { 1, 60 }, { 2, 60 } ... { 59, 60 }, { 0, 60 }. The
zeroth frame is at some arbitrary time and not aligned with wallclock time.

Thus a client with a 30Hz update requirement can simply ignore every odd-numbered frame, and
a client downstream from it with a 15Hz requirement, which only receives those even-numbered
frames, still has enough information to compute which frames to ignore.

Classes which are sources of callbacks for DisplayRefreshMonitor need to generate these
DisplayUpdates; that includes the various platform DisplayRefreshMonitor subclasses in
WebCore, and those in WebKit that live in the UI process and trigger updates over IPC.

Source/WebCore:

  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • loader/EmptyClients.cpp:
  • platform/graphics/AnimationFrameRate.cpp:
  • platform/graphics/AnimationFrameRate.h:
  • platform/graphics/DisplayRefreshMonitor.cpp:

(WebCore::DisplayRefreshMonitor::displayLinkFired):
(WebCore::DisplayRefreshMonitor::dispatchDisplayDidRefresh):
(WebCore::DisplayRefreshMonitor::displayDidRefresh):

  • platform/graphics/DisplayRefreshMonitor.h:
  • platform/graphics/DisplayRefreshMonitorManager.cpp:

(WebCore::DisplayRefreshMonitorManager::displayWasUpdated):

  • platform/graphics/DisplayRefreshMonitorManager.h:
  • platform/graphics/DisplayUpdate.cpp: Copied from Source/WebCore/platform/graphics/win/DisplayRefreshMonitorWin.h.

(WebCore::operator<<):

  • platform/graphics/DisplayUpdate.h: Copied from Source/WebCore/platform/graphics/gtk/DisplayRefreshMonitorGtk.h.

(WebCore::DisplayUpdate::didUpdate):
(WebCore::DisplayUpdate::encode const):
(WebCore::DisplayUpdate::decode):

  • platform/graphics/gtk/DisplayRefreshMonitorGtk.cpp: Assume a 60fps refresh rate but this code

should probably use gdk_frame_clock_get_refresh_info() to get the correct rate.
(WebCore::onFrameClockUpdate):
(WebCore::DisplayRefreshMonitorGtk::displayLinkCallbackFired):
(WebCore::DisplayRefreshMonitorGtk::startNotificationMechanism):

  • platform/graphics/gtk/DisplayRefreshMonitorGtk.h:
  • platform/graphics/ios/DisplayRefreshMonitorIOS.h:
  • platform/graphics/ios/DisplayRefreshMonitorIOS.mm:

(-[WebDisplayLinkHandler initWithMonitor:]):
(-[WebDisplayLinkHandler handleDisplayLink:]):
(WebCore::DisplayRefreshMonitorIOS::displayLinkCallbackFired):
(WebCore::DisplayRefreshMonitorIOS::startNotificationMechanism):
(-[WebDisplayLinkHandler setPreferredFramesPerSecond:]): Deleted.

  • platform/graphics/mac/LegacyDisplayRefreshMonitorMac.cpp:

(WebCore::displayLinkCallback):
(WebCore::LegacyDisplayRefreshMonitorMac::displayLinkCallbackFired):
(WebCore::LegacyDisplayRefreshMonitorMac::dispatchDisplayDidRefresh):
(WebCore::LegacyDisplayRefreshMonitorMac::nominalFramesPerSecondFromDisplayLink):
(WebCore::LegacyDisplayRefreshMonitorMac::startNotificationMechanism):

  • platform/graphics/mac/LegacyDisplayRefreshMonitorMac.h:

(WebCore::LegacyDisplayRefreshMonitorMac::currentUpdate const):

  • platform/graphics/win/DisplayRefreshMonitorWin.cpp:

(WebCore::DisplayRefreshMonitorWin::DisplayRefreshMonitorWin):
(WebCore::DisplayRefreshMonitorWin::displayLinkCallbackFired):

  • platform/graphics/win/DisplayRefreshMonitorWin.h:

Source/WebKit:

  • Shared/CoordinatedGraphics/threadedcompositor/ThreadedDisplayRefreshMonitor.cpp:

(WebKit::ThreadedDisplayRefreshMonitor::invalidate):
(WebKit::ThreadedDisplayRefreshMonitor::displayRefreshCallback):
(WebKit::ThreadedDisplayRefreshMonitor::ThreadedDisplayRefreshMonitor): Deleted.

  • Shared/CoordinatedGraphics/threadedcompositor/ThreadedDisplayRefreshMonitor.h:
  • UIProcess/mac/DisplayLink.cpp:

(WebKit::DisplayLink::addObserver):
(WebKit::DisplayLink::notifyObserversDisplayWasRefreshed):

  • UIProcess/mac/DisplayLink.h:
  • WebProcess/WebPage/EventDispatcher.cpp:

(WebKit::EventDispatcher::displayWasRefreshed):

  • WebProcess/WebPage/EventDispatcher.h:
  • WebProcess/WebPage/EventDispatcher.messages.in:
  • WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDisplayRefreshMonitor.h:
  • WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDisplayRefreshMonitor.mm:

(WebKit::RemoteLayerTreeDisplayRefreshMonitor::RemoteLayerTreeDisplayRefreshMonitor):
(WebKit::RemoteLayerTreeDisplayRefreshMonitor::setPreferredFramesPerSecond):
(WebKit::RemoteLayerTreeDisplayRefreshMonitor::didUpdateLayers):

  • WebProcess/WebPage/mac/DisplayRefreshMonitorMac.cpp:

(WebKit::DisplayRefreshMonitorMac::dispatchDisplayDidRefresh):

  • WebProcess/WebPage/mac/DisplayRefreshMonitorMac.h:
  • WebProcess/WebProcess.cpp:

(WebKit::WebProcess::displayWasRefreshed):

  • WebProcess/WebProcess.h:
  • WebProcess/WebProcess.messages.in:
9:32 AM Changeset in webkit [275162] by youenn@apple.com
  • 20 edits in trunk

Promote WKWebView getUserMedia SPI to API
https://bugs.webkit.org/show_bug.cgi?id=223806

Reviewed by Eric Carlson.

Source/WebKit:

Move SPI to API.
Update delegate to take an enumeration instead of two booleans.
Make setters completion handlers nullable.
Covered by API tests.

  • UIProcess/API/Cocoa/WKUIDelegate.h:
  • UIProcess/API/Cocoa/WKUIDelegatePrivate.h:
  • UIProcess/API/Cocoa/WKWebView.h:
  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView cameraCaptureState]):
(-[WKWebView microphoneCaptureState]):
(-[WKWebView setMicrophoneCaptureState:completionHandler:]):
(-[WKWebView setCameraCaptureState:completionHandler:]):

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

(WebKit::UIDelegate::UIClient::decidePolicyForGeolocationPermissionRequest):
(WebKit::UIDelegate::UIClient::shouldAllowDeviceOrientationAndMotionAccess):
(WebKit::UIDelegate::UIClient::decidePolicyForUserMediaPermissionRequest):

Tools:

  • TestWebKitAPI/Tests/WebKit/GetUserMedia.mm:

(-[UserMediaCaptureUIDelegateForParameters webView:requestMediaCapturePermissionForOrigin:initiatedByFrame:type:decisionHandler:]):

  • TestWebKitAPI/Tests/WebKit/GetUserMediaNavigation.mm:

(-[NavigationWhileGetUserMediaPromptDisplayedUIDelegate webView:requestMediaCapturePermissionForOrigin:initiatedByFrame:type:decisionHandler:]):

  • TestWebKitAPI/Tests/WebKit/GetUserMediaReprompt.mm:

(TestWebKitAPI::TEST):

  • TestWebKitAPI/Tests/WebKit/MediaStreamTrackDetached.mm:
  • TestWebKitAPI/Tests/WebKitCocoa/DeviceOrientation.mm:

(-[DeviceOrientationPermissionUIDelegate _webView:requestDeviceOrientationAndMotionPermissionForOrigin:initiatedByFrame:decisionHandler:]):
(-[DeviceOrientationPermissionValidationDelegate _webView:requestDeviceOrientationAndMotionPermissionForOrigin:initiatedByFrame:decisionHandler:]):

  • TestWebKitAPI/Tests/WebKitCocoa/SpeechRecognition.mm:

(-[SpeechRecognitionUIDelegate webView:requestMediaCapturePermissionForOrigin:initiatedByFrame:type:decisionHandler:]):

  • TestWebKitAPI/Tests/WebKitCocoa/UIDelegate.mm:

(-[GeolocationDelegateNew _webView:requestGeolocationPermissionForOrigin:initiatedByFrame:decisionHandler:]):

  • TestWebKitAPI/Tests/WebKitCocoa/UserMediaDisabled.mm:

(-[UserMediaUIDelegate webView:requestMediaCapturePermissionForOrigin:initiatedByFrame:type:decisionHandler:]):

  • TestWebKitAPI/Tests/WebKitCocoa/UserMediaSimulateFailedSandbox.mm:

(-[SimulateFailedSandboxUIDelegate webView:requestMediaCapturePermissionForOrigin:initiatedByFrame:type:decisionHandler:]):

  • TestWebKitAPI/Tests/WebKitCocoa/WebsitePolicies.mm:

(-[WebsitePoliciesDeviceOrientationUIDelegate _webView:requestDeviceOrientationAndMotionPermissionForOrigin:initiatedByFrame:decisionHandler:]):

  • TestWebKitAPI/cocoa/UserMediaCaptureUIDelegate.h:
  • TestWebKitAPI/cocoa/UserMediaCaptureUIDelegate.mm:

(-[UserMediaCaptureUIDelegate init]):
(-[UserMediaCaptureUIDelegate setAudioDecision:]):
(-[UserMediaCaptureUIDelegate setVideoDecision:]):
(-[UserMediaCaptureUIDelegate webView:requestMediaCapturePermissionForOrigin:initiatedByFrame:type:decisionHandler:]):

9:31 AM Changeset in webkit [275161] by Aditya Keerthi
  • 14 edits in trunk/Source/WebCore

Use enum classes and OptionSets for ControlStates::States
https://bugs.webkit.org/show_bug.cgi?id=223647

Reviewed by Sam Weinig.

No behavior change.

  • dom/Element.cpp:

(WebCore::Element::setActive):
(WebCore::Element::setHovered):

  • editing/FrameSelection.cpp:

(WebCore::FrameSelection::focusedOrActiveStateChanged):

  • html/HTMLFormControlElement.cpp:

(WebCore::HTMLFormControlElement::disabledStateChanged):

  • html/HTMLInputElement.cpp:

(WebCore::HTMLInputElement::setChecked):
(WebCore::HTMLInputElement::setIndeterminate):

  • html/HTMLOptionElement.cpp:

(WebCore::HTMLOptionElement::parseAttribute):

  • platform/ControlStates.h:

(WebCore::ControlStates::ControlStates):
(WebCore::ControlStates::states const):
(WebCore::ControlStates::setStates):

  • platform/adwaita/ThemeAdwaita.cpp:

(WebCore::ThemeAdwaita::paintCheckbox):
(WebCore::ThemeAdwaita::paintRadio):
(WebCore::ThemeAdwaita::paintButton):
(WebCore::ThemeAdwaita::paintSpinButton):

  • platform/mac/ThemeMac.mm:

(WebCore::updateStates):
(WebCore::paintToggleButton):
(WebCore::button):
(WebCore::paintButton):
(WebCore::paintStepper):
(WebCore::ThemeMac::ensuredView):
(WebCore::paintColorWell):

  • rendering/RenderTheme.cpp:

(WebCore::RenderTheme::stateChanged const):
(WebCore::RenderTheme::extractControlStatesForRenderer const):

  • rendering/RenderTheme.h:
  • rendering/RenderThemeAdwaita.cpp:

(WebCore::RenderThemeAdwaita::paintMenuList):

  • rendering/RenderThemeIOS.h:
  • rendering/RenderThemeIOS.mm:

(WebCore::RenderThemeIOS::checkboxRadioBackgroundColor):
(WebCore::RenderThemeIOS::checkboxRadioIndicatorColor):
(WebCore::RenderThemeIOS::paintCheckbox):
(WebCore::RenderThemeIOS::paintRadio):

9:30 AM Changeset in webkit [275160] by graouts@webkit.org
  • 14 edits in trunk

Add support for animating the vertical-align CSS property
https://bugs.webkit.org/show_bug.cgi?id=223853

Reviewed by Antti Koivisto.

LayoutTests/imported/w3c:

Add 161 PASS results in the WPT suite now that we support animating vertical-align.

  • web-platform-tests/css/css-transitions/animations/vertical-align-composition-expected.txt:
  • web-platform-tests/css/css-transitions/animations/vertical-align-interpolation-expected.txt:
  • web-platform-tests/css/css-transitions/properties-value-001-expected.txt:
  • web-platform-tests/css/css-transitions/properties-value-implicit-001-expected.txt:
  • web-platform-tests/css/css-transitions/properties-value-inherit-001-expected.txt:
  • web-platform-tests/css/css-transitions/properties-value-inherit-002-expected.txt:

Source/WebCore:

Adding support for animating vertical-align revealed a couple of long-standing issues with
regards to our support for this property.

First off, we didn't honor the "inherit" value since it required a custom builder method
to deal with both RenderStyle::verticalAlign() (the type) and RenderStyle::verticalAlignLength()
(the value).

Then, we would hit an assertion when obtaining the computed style for this property and a
calculated value since we didn't pass the RenderStyle to createValue().

We now correctly interpolate this property per the dedicated WPT test, the only issues remaining
being about how our calc serialization (https://bugs.webkit.org/show_bug.cgi?id=223875).

  • animation/CSSPropertyAnimation.cpp:

(WebCore::CSSPropertyAnimationWrapperMap::CSSPropertyAnimationWrapperMap):

  • css/CSSComputedStyleDeclaration.cpp:

(WebCore::ComputedStyleExtractor::valueForPropertyInStyle):

  • css/CSSProperties.json:
  • style/StyleBuilderCustom.h:

(WebCore::Style::BuilderCustom::applyInheritVerticalAlign):

LayoutTests:

  • TestExpectations: Unskip tests related to vertical-align interpolation since they are

no longer crashing.

6:50 AM CSSContainment edited by rwlbuis@webkit.org
(diff)
6:49 AM CSSContainment edited by rwlbuis@webkit.org
(diff)
6:43 AM CSSContainment created by rwlbuis@webkit.org
6:34 AM WikiStart edited by rwlbuis@webkit.org
(diff)

Mar 28, 2021:

10:27 PM Changeset in webkit [275159] by Cameron McCormack
  • 4 edits in trunk

Enable AspectRatioOfImgFromWidthAndHeightEnabled for WebKitLegacy.
https://bugs.webkit.org/show_bug.cgi?id=223815

Reviewed by Sam Weinig.

Source/WTF:

There's no reason this is enabled for WebKit and not WebKitLegacy.
And set WebCore = true since this feature could conceivably be
used in SVG images.

  • Scripts/Preferences/WebPreferencesExperimental.yaml:

Tools:

  • DumpRenderTree/TestOptions.cpp:

(WTR::TestOptions::defaults):

10:14 PM Changeset in webkit [275158] by Diego Pino Garcia
  • 2 edits in trunk/LayoutTests

[GTK] Unreviewed test gardening. Add several A11y test failures to TestExpectations.

  • platform/gtk/TestExpectations:
9:50 PM Changeset in webkit [275157] by Said Abou-Hallawa
  • 2 edits in trunk/Source/WebKit

[GPU Process] Don't ever replay DisplayList items of a RemoteImageBuffer in WebProcess
https://bugs.webkit.org/show_bug.cgi?id=223780
<rdar://75852494>

Reviewed by Wenson Hsieh.

Make sure the destructor of RemoteImageBufferProxy clears its DisplayList
so the destructor of the base class does not replay its items in WebProcess.

  • WebProcess/GPU/graphics/RemoteImageBufferProxy.h:
9:47 PM Changeset in webkit [275156] by Lauro Moura
  • 4 edits in trunk/LayoutTests

[GLIB] Garden fast/canvas/webgl/out-of-bounds-simulated-vertexAttrib0-drawArrays.html as slow

Unreviewed test gardening.

  • platform/glib/TestExpectations:
  • platform/gtk/TestExpectations:
  • platform/wpe/TestExpectations:
7:44 PM Changeset in webkit [275155] by Diego Pino Garcia
  • 1 edit
    2 adds in trunk/LayoutTests

[GLIB] Unreviewed test gardening. Emit baseline for imported/w3c/web-platform-tests/css/css-color/system-color-compute.html

r271968 added a specific result for iOS to account for different system colors.
GLIB fails on the same test as iOS, so emiting a specific baseline is justified.

  • platform/glib/imported/w3c/web-platform-tests/css/css-color/system-color-compute-expected.txt: Added.
6:26 PM Changeset in webkit [275154] by weinig@apple.com
  • 2 edits in trunk/Source/WebCore

Remove JSCustomXPathNSResolver.h/JSCustomXPathNSResolver.cpp from the Xcode project as they don't exist
https://bugs.webkit.org/show_bug.cgi?id=223852

Reviewed by Simon Fraser.

  • WebCore.xcodeproj/project.pbxproj:

Remove long deleted files.

6:20 PM Changeset in webkit [275153] by jer.noble@apple.com
  • 2 edits in trunk/Source/WebCore

[Cocoa] Exception thrown from -setShouldProvideMediaDataForTrackID:
https://bugs.webkit.org/show_bug.cgi?id=223859
<rdar://75936746>

Reviewed by Eric Carlson.

Protect against undocumented exceptions thrown from -setShouldProvideMediaDataForTrackID:.

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

(WebCore::SourceBufferParserAVFObjC::setShouldProvideMediaDataForTrackID):

4:32 PM Changeset in webkit [275152] by Dewei Zhu
  • 3 edits in trunk/Tools

Fix a bug that http server for run-benchmark script does not work on python3.
https://bugs.webkit.org/show_bug.cgi?id=223839

Reviewed by Ryosuke Niwa.

Fix encoding issue on run-benchmark http server.
Extract argument parser configure code for run-benchmark so that we can reuse it elsewhere.

  • Scripts/webkitpy/benchmark_runner/http_server_driver/http_server/twisted_http_server.py:

(ServerControl.render_POST):

  • Scripts/webkitpy/benchmark_runner/run_benchmark.py:

(config_argument_parser): Extract argument parser configure code so that we can reuse it elsewhere.
(parse_args):
(main):

12:14 PM Changeset in webkit [275151] by weinig@apple.com
  • 236 edits in trunk

Remove ENABLE_INDEXED_DATABASE & ENABLE_INDEXED_DATABASE_IN_WORKERS, it seems like it is on for all ports
https://bugs.webkit.org/show_bug.cgi?id=223810

Reviewed by Simon Fraser.

Source/JavaScriptCore:

  • inspector/protocol/IndexedDB.json:

Update for remove ENABLE_INDEXED_DATABASE conditional.

Source/WebCore:

Remove ENABLE_INDEXED_DATABASE & ENABLE_INDEXED_DATABASE_IN_WORKERS conditionals.

  • Modules/indexeddb/DOMWindow+IndexedDatabase.idl:
  • Modules/indexeddb/DOMWindowIndexedDatabase.cpp:
  • Modules/indexeddb/DOMWindowIndexedDatabase.h:
  • Modules/indexeddb/IDBActiveDOMObject.h:
  • Modules/indexeddb/IDBCursor.cpp:
  • Modules/indexeddb/IDBCursor.h:
  • Modules/indexeddb/IDBCursor.idl:
  • Modules/indexeddb/IDBCursorDirection.idl:
  • Modules/indexeddb/IDBCursorWithValue.cpp:
  • Modules/indexeddb/IDBCursorWithValue.h:
  • Modules/indexeddb/IDBCursorWithValue.idl:
  • Modules/indexeddb/IDBDatabase.cpp:
  • Modules/indexeddb/IDBDatabase.h:
  • Modules/indexeddb/IDBDatabase.idl:
  • Modules/indexeddb/IDBDatabaseIdentifier.cpp:
  • Modules/indexeddb/IDBDatabaseIdentifier.h:
  • Modules/indexeddb/IDBDatabaseNameAndVersionRequest.cpp:
  • Modules/indexeddb/IDBDatabaseNameAndVersionRequest.h:
  • Modules/indexeddb/IDBFactory.cpp:
  • Modules/indexeddb/IDBFactory.h:
  • Modules/indexeddb/IDBFactory.idl:
  • Modules/indexeddb/IDBGetAllResult.cpp:
  • Modules/indexeddb/IDBGetAllResult.h:
  • Modules/indexeddb/IDBGetResult.cpp:
  • Modules/indexeddb/IDBGetResult.h:
  • Modules/indexeddb/IDBIndex.cpp:
  • Modules/indexeddb/IDBIndex.h:
  • Modules/indexeddb/IDBIndex.idl:
  • Modules/indexeddb/IDBKey.cpp:
  • Modules/indexeddb/IDBKey.h:
  • Modules/indexeddb/IDBKeyData.cpp:
  • Modules/indexeddb/IDBKeyData.h:
  • Modules/indexeddb/IDBKeyPath.cpp:
  • Modules/indexeddb/IDBKeyPath.h:
  • Modules/indexeddb/IDBKeyRange.cpp:
  • Modules/indexeddb/IDBKeyRange.h:
  • Modules/indexeddb/IDBKeyRange.idl:
  • Modules/indexeddb/IDBKeyRangeData.cpp:
  • Modules/indexeddb/IDBKeyRangeData.h:
  • Modules/indexeddb/IDBObjectStore.cpp:
  • Modules/indexeddb/IDBObjectStore.h:
  • Modules/indexeddb/IDBObjectStore.idl:
  • Modules/indexeddb/IDBOpenDBRequest.cpp:
  • Modules/indexeddb/IDBOpenDBRequest.h:
  • Modules/indexeddb/IDBOpenDBRequest.idl:
  • Modules/indexeddb/IDBRecordIdentifier.h:
  • Modules/indexeddb/IDBRequest.cpp:
  • Modules/indexeddb/IDBRequest.h:
  • Modules/indexeddb/IDBRequest.idl:
  • Modules/indexeddb/IDBRequestCompletionEvent.cpp:
  • Modules/indexeddb/IDBRequestCompletionEvent.h:
  • Modules/indexeddb/IDBTransaction.cpp:
  • Modules/indexeddb/IDBTransaction.h:
  • Modules/indexeddb/IDBTransaction.idl:
  • Modules/indexeddb/IDBTransactionMode.h:
  • Modules/indexeddb/IDBTransactionMode.idl:
  • Modules/indexeddb/IDBValue.cpp:
  • Modules/indexeddb/IDBValue.h:
  • Modules/indexeddb/IDBVersionChangeEvent.cpp:
  • Modules/indexeddb/IDBVersionChangeEvent.h:
  • Modules/indexeddb/IDBVersionChangeEvent.idl:
  • Modules/indexeddb/IndexedDB.h:
  • Modules/indexeddb/WorkerGlobalScopeIndexedDatabase.cpp:
  • Modules/indexeddb/WorkerGlobalScopeIndexedDatabase.h:
  • Modules/indexeddb/client/IDBConnectionProxy.cpp:
  • Modules/indexeddb/client/IDBConnectionProxy.h:
  • Modules/indexeddb/client/IDBConnectionToServer.cpp:
  • Modules/indexeddb/client/IDBConnectionToServer.h:
  • Modules/indexeddb/client/IDBConnectionToServerDelegate.h:
  • Modules/indexeddb/client/TransactionOperation.cpp:
  • Modules/indexeddb/client/TransactionOperation.h:
  • Modules/indexeddb/server/IDBBackingStore.h:
  • Modules/indexeddb/server/IDBConnectionToClient.cpp:
  • Modules/indexeddb/server/IDBConnectionToClient.h:
  • Modules/indexeddb/server/IDBConnectionToClientDelegate.h:
  • Modules/indexeddb/server/IDBSerialization.cpp:
  • Modules/indexeddb/server/IDBSerialization.h:
  • Modules/indexeddb/server/IDBSerializationContext.cpp:
  • Modules/indexeddb/server/IDBSerializationContext.h:
  • Modules/indexeddb/server/IDBServer.cpp:
  • Modules/indexeddb/server/IDBServer.h:
  • Modules/indexeddb/server/IndexValueEntry.cpp:
  • Modules/indexeddb/server/IndexValueEntry.h:
  • Modules/indexeddb/server/IndexValueStore.cpp:
  • Modules/indexeddb/server/IndexValueStore.h:
  • Modules/indexeddb/server/MemoryBackingStoreTransaction.cpp:
  • Modules/indexeddb/server/MemoryBackingStoreTransaction.h:
  • Modules/indexeddb/server/MemoryCursor.cpp:
  • Modules/indexeddb/server/MemoryCursor.h:
  • Modules/indexeddb/server/MemoryIDBBackingStore.cpp:
  • Modules/indexeddb/server/MemoryIDBBackingStore.h:
  • Modules/indexeddb/server/MemoryIndex.cpp:
  • Modules/indexeddb/server/MemoryIndex.h:
  • Modules/indexeddb/server/MemoryIndexCursor.cpp:
  • Modules/indexeddb/server/MemoryIndexCursor.h:
  • Modules/indexeddb/server/MemoryObjectStore.cpp:
  • Modules/indexeddb/server/MemoryObjectStore.h:
  • Modules/indexeddb/server/MemoryObjectStoreCursor.cpp:
  • Modules/indexeddb/server/MemoryObjectStoreCursor.h:
  • Modules/indexeddb/server/SQLiteIDBBackingStore.cpp:
  • Modules/indexeddb/server/SQLiteIDBBackingStore.h:
  • Modules/indexeddb/server/SQLiteIDBCursor.cpp:
  • Modules/indexeddb/server/SQLiteIDBCursor.h:
  • Modules/indexeddb/server/SQLiteIDBTransaction.cpp:
  • Modules/indexeddb/server/SQLiteIDBTransaction.h:
  • Modules/indexeddb/server/ServerOpenDBRequest.cpp:
  • Modules/indexeddb/server/ServerOpenDBRequest.h:
  • Modules/indexeddb/server/UniqueIDBDatabase.cpp:
  • Modules/indexeddb/server/UniqueIDBDatabase.h:
  • Modules/indexeddb/server/UniqueIDBDatabaseConnection.cpp:
  • Modules/indexeddb/server/UniqueIDBDatabaseConnection.h:
  • Modules/indexeddb/server/UniqueIDBDatabaseTransaction.cpp:
  • Modules/indexeddb/server/UniqueIDBDatabaseTransaction.h:
  • Modules/indexeddb/shared/IDBCursorInfo.cpp:
  • Modules/indexeddb/shared/IDBCursorInfo.h:
  • Modules/indexeddb/shared/IDBCursorRecord.h:
  • Modules/indexeddb/shared/IDBDatabaseInfo.cpp:
  • Modules/indexeddb/shared/IDBDatabaseInfo.h:
  • Modules/indexeddb/shared/IDBDatabaseNameAndVersion.h:
  • Modules/indexeddb/shared/IDBError.cpp:
  • Modules/indexeddb/shared/IDBError.h:
  • Modules/indexeddb/shared/IDBGetAllRecordsData.cpp:
  • Modules/indexeddb/shared/IDBGetAllRecordsData.h:
  • Modules/indexeddb/shared/IDBGetRecordData.cpp:
  • Modules/indexeddb/shared/IDBGetRecordData.h:
  • Modules/indexeddb/shared/IDBIndexInfo.cpp:
  • Modules/indexeddb/shared/IDBIndexInfo.h:
  • Modules/indexeddb/shared/IDBIterateCursorData.cpp:
  • Modules/indexeddb/shared/IDBIterateCursorData.h:
  • Modules/indexeddb/shared/IDBObjectStoreInfo.cpp:
  • Modules/indexeddb/shared/IDBObjectStoreInfo.h:
  • Modules/indexeddb/shared/IDBRequestData.cpp:
  • Modules/indexeddb/shared/IDBRequestData.h:
  • Modules/indexeddb/shared/IDBResourceIdentifier.cpp:
  • Modules/indexeddb/shared/IDBResourceIdentifier.h:
  • Modules/indexeddb/shared/IDBResultData.cpp:
  • Modules/indexeddb/shared/IDBResultData.h:
  • Modules/indexeddb/shared/IDBTransactionInfo.cpp:
  • Modules/indexeddb/shared/IDBTransactionInfo.h:
  • Modules/indexeddb/shared/IndexKey.cpp:
  • Modules/indexeddb/shared/IndexKey.h:
  • WebCore.xcodeproj/project.pbxproj:
  • bindings/js/IDBBindingUtilities.cpp:
  • bindings/js/IDBBindingUtilities.h:
  • bindings/js/JSDOMConvertIndexedDB.h:
  • bindings/js/JSDOMGlobalObject.cpp:

(WebCore::JSDOMGlobalObject::scriptExecutionContext const):
(WebCore::scriptModuleLoader):

  • bindings/js/JSIDBCursorCustom.cpp:
  • bindings/js/JSIDBCursorWithValueCustom.cpp:
  • bindings/js/JSIDBIndexCustom.cpp:
  • bindings/js/JSIDBObjectStoreCustom.cpp:
  • bindings/js/JSIDBRequestCustom.cpp:
  • bindings/js/JSIDBSerializationGlobalObject.cpp:
  • bindings/js/JSIDBSerializationGlobalObject.h:
  • bindings/js/JSIDBTransactionCustom.cpp:
  • bindings/js/SerializedScriptValue.cpp:
  • bindings/js/SerializedScriptValue.h:
  • bindings/js/WebCoreJSClientData.cpp:

(WebCore::JSVMClientData::JSVMClientData):

  • bindings/js/WebCoreJSClientData.h:
  • dom/Document.cpp:

(WebCore::Document::idbConnectionProxy):
(WebCore::Document::setBackForwardCacheState):

  • dom/Document.h:
  • dom/EmptyScriptExecutionContext.h:
  • dom/EventNames.in:
  • dom/EventTargetFactory.in:
  • dom/ScriptExecutionContext.h:
  • inspector/InspectorController.cpp:

(WebCore::InspectorController::createLazyAgents):

  • inspector/agents/InspectorIndexedDBAgent.cpp:
  • inspector/agents/InspectorIndexedDBAgent.h:
  • loader/EmptyClients.cpp:
  • page/DatabaseProvider.h:
  • page/Page.cpp:

(WebCore::Page::setSessionID):
(WebCore::Page::clearIDBConnection):

  • page/Page.h:
  • testing/Internals.cpp:

(WebCore::Internals::numberOfIDBTransactions const):

  • testing/Internals.h:
  • testing/Internals.idl:
  • workers/WorkerGlobalScope.cpp:

(WebCore::WorkerGlobalScope::WorkerGlobalScope):
(WebCore::WorkerGlobalScope::prepareForDestruction):
(WebCore::WorkerGlobalScope::idbConnectionProxy):
(WebCore::WorkerGlobalScope::stopIndexedDatabase):
(WebCore::WorkerGlobalScope::suspend):
(WebCore::WorkerGlobalScope::resume):

  • workers/WorkerGlobalScope.h:
  • workers/WorkerMessagingProxy.cpp:

(WebCore::WorkerMessagingProxy::startWorkerGlobalScope):

  • workers/WorkerThread.cpp:

(WebCore::WorkerThread::WorkerThread):
(WebCore::WorkerThread::idbConnectionProxy):

  • workers/WorkerThread.h:
  • workers/service/context/ServiceWorkerThreadProxy.cpp:

(WebCore::idbConnectionProxy):

  • worklets/WorkletGlobalScope.h:

Source/WebInspectorUI:

  • Versions/Inspector-iOS-14.0.json:
  • Versions/Inspector-iOS-14.5.json:

Update for removed ENABLE_INDEXED_DATABASE conditional.

Source/WebKit:

Remove ENABLE_INDEXED_DATABASE & ENABLE_INDEXED_DATABASE_IN_WORKERS conditionals.

  • NetworkProcess/IndexedDB/WebIDBConnectionToClient.cpp:
  • NetworkProcess/IndexedDB/WebIDBConnectionToClient.h:
  • NetworkProcess/IndexedDB/WebIDBServer.cpp:
  • NetworkProcess/IndexedDB/WebIDBServer.h:
  • NetworkProcess/IndexedDB/WebIDBServer.messages.in:
  • NetworkProcess/NetworkProcess.cpp:

(WebKit::NetworkProcess::createNetworkConnectionToWebProcess):
(WebKit::NetworkProcess::addWebsiteDataStore):
(WebKit::NetworkProcess::destroySession):
(WebKit::NetworkProcess::fetchWebsiteData):
(WebKit::NetworkProcess::deleteWebsiteData):
(WebKit::NetworkProcess::deleteWebsiteDataForOrigins):
(WebKit::NetworkProcess::deleteAndRestrictWebsiteDataForRegistrableDomains):
(WebKit::NetworkProcess::registrableDomainsWithWebsiteData):
(WebKit::NetworkProcess::prepareToSuspend):
(WebKit::NetworkProcess::resume):
(WebKit::NetworkProcess::renameOriginInWebsiteData):
(WebKit::NetworkProcess::storageQuotaManager):
(WebKit::NetworkProcess::connectionToWebProcessClosed):

  • NetworkProcess/NetworkProcess.h:

(WebKit::NetworkProcess::SessionStorageQuotaManager::idbRootPath const):

  • Shared/Databases/IndexedDB/IDBUtilities.cpp:
  • Shared/Databases/IndexedDB/IDBUtilities.h:
  • Shared/Databases/IndexedDB/WebIDBResult.cpp:
  • Shared/Databases/IndexedDB/WebIDBResult.h:
  • Shared/WebCoreArgumentCoders.cpp:

(IPC::ArgumentCoder<IDBKeyPath>::decode):

  • Shared/WebCoreArgumentCoders.h:
  • Shared/WebsiteDataStoreParameters.cpp:

(WebKit::WebsiteDataStoreParameters::encode const):
(WebKit::WebsiteDataStoreParameters::decode):

  • Shared/WebsiteDataStoreParameters.h:
  • UIProcess/Network/NetworkProcessProxy.cpp:

(WebKit::NetworkProcessProxy::addSession):
(WebKit::NetworkProcessProxy::createSymLinkForFileUpgrade):

  • UIProcess/Network/NetworkProcessProxy.h:
  • UIProcess/WebsiteData/WebsiteDataStore.cpp:

(WebKit::WebsiteDataStore::parameters):

  • WebProcess/Databases/IndexedDB/WebIDBConnectionToServer.cpp:
  • WebProcess/Databases/IndexedDB/WebIDBConnectionToServer.h:
  • WebProcess/Databases/IndexedDB/WebIDBConnectionToServer.messages.in:
  • WebProcess/Databases/WebDatabaseProvider.cpp:

(WebKit::WebDatabaseProvider::idbConnectionToServerForSession):

  • WebProcess/Databases/WebDatabaseProvider.h:
  • WebProcess/Network/NetworkProcessConnection.cpp:

(WebKit::NetworkProcessConnection::didReceiveMessage):
(WebKit::NetworkProcessConnection::didClose):
(WebKit::NetworkProcessConnection::idbConnectionToServer):

  • WebProcess/Network/NetworkProcessConnection.h:
  • WebProcess/Storage/WebSWContextManagerConnection.cpp:

(WebKit::WebSWContextManagerConnection::installServiceWorker):

  • WebProcess/WebProcess.cpp:

(WebKit::WebProcess::networkProcessConnectionClosed):

Source/WebKitLegacy:

Remove ENABLE_INDEXED_DATABASE & ENABLE_INDEXED_DATABASE_IN_WORKERS conditionals.

  • Storage/InProcessIDBServer.cpp:

(InProcessIDBServer::dispatchTaskReply):

  • Storage/InProcessIDBServer.h:
  • Storage/WebDatabaseProvider.cpp:

(WebDatabaseProvider::deleteAllDatabases):

  • Storage/WebDatabaseProvider.h:

Source/WebKitLegacy/mac:

Remove ENABLE_INDEXED_DATABASE & ENABLE_INDEXED_DATABASE_IN_WORKERS conditionals.

  • Storage/WebDatabaseManager.mm:

(-[WebDatabaseManager deleteAllIndexedDatabases]):

Source/WebKitLegacy/win:

Remove ENABLE_INDEXED_DATABASE & ENABLE_INDEXED_DATABASE_IN_WORKERS conditionals.

  • WebDatabaseManager.cpp:

(WebDatabaseManager::deleteAllIndexedDatabases):

  • storage/WebDatabaseProvider.cpp:

(WebDatabaseProvider::indexedDatabaseDirectoryPath):

Source/WTF:

  • wtf/PlatformEnable.h:
  • wtf/PlatformEnableCocoa.h:

Remove ENABLE_INDEXED_DATABASE and ENABLE_INDEXED_DATABASE_IN_WORKERS.

Tools:

  • Scripts/webkitperl/FeatureList.pm:

Remove ENABLE_INDEXED_DATABASE & ENABLE_INDEXED_DATABASE_IN_WORKERS from FeatureList.pm.

11:31 AM Changeset in webkit [275150] by ddkilzer@apple.com
  • 5 edits
    1 add in trunk

Compile WebKit with UBSan
<https://webkit.org/b/176131>
<rdar://problem/34174018>

Reviewed by Alexey Proskuryakov.

.:

  • Makefile.shared:
  • Add support for "UBSAN=YES" argument to make.

Tools:

  • Scripts/set-webkit-configuration:
  • Add support for --[no-]ubsan command-line switch.
  • Add warning when enabling ASan and TSan together.

(updateOrDeleteConfigurationFile):

  • Extract common code for updating configuration files.
  • Scripts/webkitdirs.pm:

(readSanitizerConfiguration): Add.

  • Extract common code for reading sanitizer configuration files.

(determineASanIsEnabled):
(determineTSanIsEnabled):
(determineUBSanIsEnabled): Add.

  • Make use of readSanitizerConfiguration().

(ubsanIsEnabled): Add.
(XcodeOptions):

  • Add command-line switches for UBSan.

(generateBuildSystemFromCMakeProject): Ditto.

  • sanitizer/ubsan.xcconfig: Add.
  • Contains Xcode settings for enabling UBSan.
10:46 AM Changeset in webkit [275149] by commit-queue@webkit.org
  • 3 edits in trunk/Source/WebCore

REGRESSION(r274527): [GStreamer] media/webaudio-background-playback.html now failing
https://bugs.webkit.org/show_bug.cgi?id=223840

Patch by Philippe Normand <pnormand@igalia.com> on 2021-03-28
Reviewed by Chris Dumez.

r274527 actually exposed a bug that was present since r271197. The AudioDestination pipeline
was not stopping properly because webkitGstSetElementStateSynchronously() was returning too
early.

This patch also includes a few improvements in the webaudiosrc element, most notably
regarding its preroll state. The element now stops emitting buffers downstream as soon as
the AudioDestination is scheduled to stop.

  • platform/audio/gstreamer/WebKitWebAudioSourceGStreamer.cpp:

(webKitWebAudioSrcRenderAndPushFrames): Return early as soon as the destination is scheduled to stop.
(webKitWebAudioSrcChangeState): Synchronize preroll state with element state.

  • platform/graphics/gstreamer/GStreamerCommon.cpp:

(WebCore::webkitGstSetElementStateSynchronously): targetState might be lower than current
state, e.g, when stopping a running pipeline, so we can't return early for those cases,
otherwise the pipeline won't stop.

10:40 AM Changeset in webkit [275148] by Chris Dumez
  • 2 edits in trunk/Source/WebCore

Unreviewed, add an exception for a heap allocation on the WebAudio thread.

I recently added assertions to catch heap allocations on the WebAudio threads and failed to
mark this one as allowed (for now).

  • Modules/webaudio/BaseAudioContext.cpp:

(WebCore::BaseAudioContext::markForDeletion):

6:55 AM Changeset in webkit [275147] by youenn@apple.com
  • 5 edits
    4 adds in trunk

Use-after-move in UserMediaPermissionRequestManagerProxy::checkUserMediaPermissionForSpeechRecognition
https://bugs.webkit.org/show_bug.cgi?id=223842
<rdar://problem/75791668>

Reviewed by Eric Carlson.

Source/WebKit:

Use request decision handler instead of already moved completion handler.

Tests: fast/speechrecognition/start-recognition-after-denied-gum.html

fast/speechrecognition/start-recognition-after-gum.html

  • UIProcess/UserMediaPermissionRequestManagerProxy.cpp:

(WebKit::UserMediaPermissionRequestManagerProxy::checkUserMediaPermissionForSpeechRecognition):

LayoutTests:

  • fast/speechrecognition/start-recognition-after-denied-gum-expected.txt: Added.
  • fast/speechrecognition/start-recognition-after-denied-gum.html: Added.
  • fast/speechrecognition/start-recognition-after-gum-expected.txt: Added.
  • fast/speechrecognition/start-recognition-after-gum.html: Added.
  • platform/mac-wk1/TestExpectations:
  • platform/win/TestExpectations:
3:00 AM WebKitGTK/2.32.x edited by Philippe Normand
(diff)

Mar 27, 2021:

8:26 PM Changeset in webkit [275146] by Simon Fraser
  • 3 edits in trunk/Source/WebKit

Have DisplayLink compute its displayNominalFramesPerSecond just once
https://bugs.webkit.org/show_bug.cgi?id=223845

Reviewed by Zalan Bujtas.

Rather than calling CVDisplayLinkGetNominalOutputVideoRefreshPeriod() every time,
just store displayNominalFramesPerSecond in a member variable.

  • UIProcess/mac/DisplayLink.cpp:

(WebKit::DisplayLink::DisplayLink):
(WebKit::DisplayLink::nominalFramesPerSecondFromDisplayLink):
(WebKit::DisplayLink::nominalFramesPerSecond const): Deleted.

  • UIProcess/mac/DisplayLink.h:

(WebKit::DisplayLink::nominalFramesPerSecond const):

8:22 PM Changeset in webkit [275145] by Lauro Moura
  • 2 edits
    1 add in trunk/Tools/buildstream

[Flatpak SDK] Backport GTK4 Clipboard fix for GdkContentProviderUnion
https://bugs.webkit.org/show_bug.cgi?id=223813

Reviewed by Philippe Normand.

From https://gitlab.gnome.org/GNOME/gtk/-/merge_requests/3346

Will fix some clipbaoard crashes.

  • elements/sdk/gtk.bst:
  • patches/gtk-clipboard-Fix-a-crash-when-GdkContentProviderUnion-d.patch: Added.
7:52 PM Changeset in webkit [275144] by Simon Fraser
  • 21 edits in trunk/Source

Allow DisplayRefreshMonitor to be more long-lived objects
https://bugs.webkit.org/show_bug.cgi?id=223844

Reviewed by Chris Dumez.

The existing behavior for DisplayRefreshMonitors was that they were created and destroyed
frequently, as their clients are registered and unregistered. In addition, some of
their subclasses had duplicated logic related to how often they fired without clients
before they were removed.

The 1:1 correspondance between DisplayRefreshMonitors and physical displays makes them
a useful place to store per-display information (like refresh rate), which should
persist whether or not they have clients, so this change prepares for that.

The main changes in this patch are:

  1. Provide virtual startNotificationMechanism()/stopNotificationMechanism() functions on DisplayRefreshMonitor that subclasses can use to start their CVDisplayLink or related functionality.
  1. Provide some shared maxUnscheduledFireCount logic that subclasses can tune to provide the hysteresis used to control the start/stop of the underlying notification mechanism.
  1. Provide a shared dispatchDisplayDidRefresh() function that most implementations can use.

Source/WebCore:

DisplayRefreshMonitorManager no longer destroys DisplayRefreshMonitors when they lose
all their clients. This means that DisplayRefreshMonitors are never removed, but there
should only ever be as many as there are physical displays, and they are only
active if being scheduled by clients.

  • loader/EmptyClients.cpp:
  • platform/graphics/DisplayRefreshMonitor.cpp:

(WebCore::DisplayRefreshMonitor::stop):
(WebCore::DisplayRefreshMonitor::removeClient):
(WebCore::DisplayRefreshMonitor::requestRefreshCallback):
(WebCore::DisplayRefreshMonitor::firedAndReachedMaxUnscheduledFireCount):
(WebCore::DisplayRefreshMonitor::displayLinkFired):
(WebCore::DisplayRefreshMonitor::dispatchDisplayDidRefresh):
(WebCore::DisplayRefreshMonitor::displayDidRefresh):

  • platform/graphics/DisplayRefreshMonitor.h:

(WebCore::DisplayRefreshMonitor::setMaxUnscheduledFireCount):
(WebCore::DisplayRefreshMonitor::mutex):
(WebCore::DisplayRefreshMonitor::displayLinkFired): Deleted.
(WebCore::DisplayRefreshMonitor::stop): Deleted.
(WebCore::DisplayRefreshMonitor::shouldBeTerminated const): Deleted.
(WebCore::DisplayRefreshMonitor::isActive const): Deleted.
(WebCore::DisplayRefreshMonitor::setIsActive): Deleted.

  • platform/graphics/DisplayRefreshMonitorManager.cpp:

(WebCore::DisplayRefreshMonitorManager::unregisterClient):
(WebCore::DisplayRefreshMonitorManager::displayDidRefresh):
(WebCore::DisplayRefreshMonitorManager::displayWasUpdated):

  • platform/graphics/gtk/DisplayRefreshMonitorGtk.cpp:

(WebCore::DisplayRefreshMonitorGtk::~DisplayRefreshMonitorGtk):
(WebCore::onFrameClockUpdate):
(WebCore::DisplayRefreshMonitorGtk::stop):
(WebCore::DisplayRefreshMonitorGtk::startNotificationMechanism):
(WebCore::DisplayRefreshMonitorGtk::stopNotificationMechanism):
(WebCore::DisplayRefreshMonitorGtk::requestRefreshCallback): Deleted.
(WebCore::DisplayRefreshMonitorGtk::displayLinkFired): Deleted.

  • platform/graphics/gtk/DisplayRefreshMonitorGtk.h:
  • platform/graphics/ios/DisplayRefreshMonitorIOS.h:
  • platform/graphics/ios/DisplayRefreshMonitorIOS.mm:

(-[WebDisplayLinkHandler setPaused:]):
(WebCore::DisplayRefreshMonitorIOS::DisplayRefreshMonitorIOS):
(WebCore::DisplayRefreshMonitorIOS::~DisplayRefreshMonitorIOS):
(WebCore::DisplayRefreshMonitorIOS::stop):
(WebCore::DisplayRefreshMonitorIOS::startNotificationMechanism):
(WebCore::DisplayRefreshMonitorIOS::stopNotificationMechanism):
(WebCore::DisplayRefreshMonitorIOS::requestRefreshCallback): Deleted.
(WebCore::DisplayRefreshMonitorIOS::displayLinkFired): Deleted.

  • platform/graphics/mac/LegacyDisplayRefreshMonitorMac.cpp:

(WebCore::LegacyDisplayRefreshMonitorMac::LegacyDisplayRefreshMonitorMac):
(WebCore::LegacyDisplayRefreshMonitorMac::stop):
(WebCore::LegacyDisplayRefreshMonitorMac::dispatchDisplayDidRefresh):
(WebCore::LegacyDisplayRefreshMonitorMac::startNotificationMechanism):
(WebCore::LegacyDisplayRefreshMonitorMac::stopNotificationMechanism):
(WebCore::LegacyDisplayRefreshMonitorMac::requestRefreshCallback): Deleted.
(WebCore::LegacyDisplayRefreshMonitorMac::displayLinkFired): Deleted.

  • platform/graphics/mac/LegacyDisplayRefreshMonitorMac.h:
  • platform/graphics/win/DisplayRefreshMonitorWin.cpp:

(WebCore::DisplayRefreshMonitorWin::DisplayRefreshMonitorWin):
(WebCore::DisplayRefreshMonitorWin::startNotificationMechanism):
(WebCore::DisplayRefreshMonitorWin::stopNotificationMechanism):
(WebCore::DisplayRefreshMonitorWin::requestRefreshCallback): Deleted.
(WebCore::DisplayRefreshMonitorWin::displayLinkFired): Deleted.

  • platform/graphics/win/DisplayRefreshMonitorWin.h:

Source/WebKit:

  • Shared/CoordinatedGraphics/threadedcompositor/ThreadedDisplayRefreshMonitor.cpp:
  • Shared/CoordinatedGraphics/threadedcompositor/ThreadedDisplayRefreshMonitor.h:
  • UIProcess/mac/DisplayLink.cpp:

(WebKit::DisplayLink::DisplayLink):
(WebKit::DisplayLink::~DisplayLink):
(WebKit::DisplayLink::addObserver):
(WebKit::DisplayLink::notifyObserversDisplayWasRefreshed):

  • WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDisplayRefreshMonitor.h:
  • WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDisplayRefreshMonitor.mm:

(WebKit::RemoteLayerTreeDisplayRefreshMonitor::requestRefreshCallback):

  • WebProcess/WebPage/mac/DisplayRefreshMonitorMac.cpp:

(WebKit::DisplayRefreshMonitorMac::DisplayRefreshMonitorMac):
(WebKit::DisplayRefreshMonitorMac::~DisplayRefreshMonitorMac):
(WebKit::DisplayRefreshMonitorMac::dispatchDisplayDidRefresh):
(WebKit::DisplayRefreshMonitorMac::startNotificationMechanism):
(WebKit::DisplayRefreshMonitorMac::stopNotificationMechanism):
(WebKit::DisplayRefreshMonitorMac::requestRefreshCallback): Deleted.
(WebKit::DisplayRefreshMonitorMac::displayLinkFired): Deleted.

  • WebProcess/WebPage/mac/DisplayRefreshMonitorMac.h:
5:40 PM Changeset in webkit [275143] by rniwa@webkit.org
  • 2 edits in trunk/Source/WebCore

Don't add Frame as an opaque root of DOMWindow
https://bugs.webkit.org/show_bug.cgi?id=223838

Reviewed by Simon Fraser.

Don't add Frame as an opaque root of DOMWindow since we don't use Frame
as an opaque root of any JS wrappers since r248276.

  • bindings/js/JSDOMWindowCustom.cpp:

(WebCore::JSDOMWindow::visitAdditionalChildren):

4:26 PM Changeset in webkit [275142] by ddkilzer@apple.com
  • 2 edits in trunk/Source/WebCore

UBSan: runtime error: load of value <unknown>, which is not a valid value for type 'const WebCore::RealtimeMediaSourceCapabilities::EchoCancellation'
<https://webkit.org/b/223821>

Reviewed by Chris Dumez.

Tests: fast/mediastream/MediaDevices-addEventListener.html

fast/mediastream/constraint-intrinsic-size.html
http/tests/media/media-stream/enumerate-devices-iframe-allow-attribute.html
http/tests/media/media-stream/get-display-media-iframe-allow-attribute.html
imported/w3c/web-platform-tests/mediacapture-record/MediaRecorder-bitrate.https.html
webrtc/addICECandidate-closed.html
webrtc/ice-candidate-sdpMLineIndex.html
webrtc/libwebrtc/descriptionGetters.html
webrtc/peerconnection-page-cache.html

  • platform/mediastream/RealtimeMediaSourceCapabilities.h:

(WebCore::CapabilityValueOrRange::union ValueUnion):

  • Make asDouble the first union member so C++ member initializers set all memory.

(WebCore::CapabilityValueOrRange::m_minOrValue):
(WebCore::CapabilityValueOrRange::m_max):
(WebCore::CapabilityValueOrRange::m_type):
(WebCore::RealtimeMediaSourceCapabilities::m_echoCancellation):

  • Provide member initializers. Setting a default value for m_echoCancellation fixes the bug.

(WebCore::RealtimeMediaSourceCapabilities::encode const):

  • Drive-by clean-up of encoder statement.
3:34 PM Changeset in webkit [275141] by graouts@webkit.org
  • 7 edits in trunk/Source/WebCore

Fix build with ENABLE_CSS3_TEXT
https://bugs.webkit.org/show_bug.cgi?id=223841

Reviewed by Darin Adler.

We also remove the -webkit- prefix for the "hanging" and "each-line" keywords since
these are well specified by the CSS Text Module Level 3 spec.

  • css/CSSComputedStyleDeclaration.cpp:

(WebCore::ComputedStyleExtractor::valueForPropertyInStyle):

  • css/CSSValueKeywords.in:
  • css/parser/CSSPropertyParser.cpp:

(WebCore::consumeTextIndent):

  • rendering/style/RenderStyle.h:

(WebCore::RenderStyle::setTextIndentType):
(WebCore::RenderStyle::setTextAlignLast):
(WebCore::RenderStyle::setTextJustify):

  • rendering/style/StyleRareInheritedData.cpp:

(WebCore::StyleRareInheritedData::StyleRareInheritedData):

  • style/StyleBuilderCustom.h:

(WebCore::Style::BuilderCustom::applyValueTextIndent):

2:05 PM Changeset in webkit [275140] by Chris Dumez
  • 2 edits in trunk/Source/WTF

wtf/Vector.h:1276:88: runtime error: reference binding to null pointer of type 'const WebCore::Style::RuleFeature'
https://bugs.webkit.org/show_bug.cgi?id=223828

Reviewed by David Kilzer.

Fix issue found by UBSan in Vector::append(const U*, size_t):
wtf/Vector.h:1276:88: runtime error: reference binding to null pointer of type 'const WebCore::Style::RuleFeature'
wtf/Vector.h:1276:88: runtime error: reference binding to null pointer of type 'const WebCore::LayoutRect'
wtf/Vector.h:1276:88: runtime error: reference binding to null pointer of type 'const WTF::RefPtr<WebCore::CSSStyleSheet, WTF::RawPtrTraits<WebCore::CSSStyleSheet>, WTF::DefaultRefDerefTraits<WebCore::CSSStyleSheet> >'

  • wtf/Vector.h:

(WTF::Malloc>::append):
Return early if dataSize is 0. For some call sites, the pointer may be null and dataSize is 0. In such cases,
we should just return early instead of proceeding and using the null pointer. I believe this can happen if
you call Vector::appendVector() with an empty Vector for example.

1:57 PM Changeset in webkit [275139] by Russell Epstein
  • 8 edits in branches/safari-612.1.7-branch/Source

Versioning.

WebKit-7612.1.7.11

1:54 PM Changeset in webkit [275138] by Russell Epstein
  • 8 edits in branches/safari-612.1.7-branch/Source

Versioning.

WebKit-7612.1.7.10

11:52 AM Changeset in webkit [275137] by Kate Cheney
  • 21 edits in trunk

PCM: Send report to both click source and attribution destination website
https://bugs.webkit.org/show_bug.cgi?id=223615
<rdar://problem/75849443>

Reviewed by Brent Fulgham.

Source/WebCore:

Introduce 2 new structs for storing the earliest time to send and
seconds until send for the source and destination sites.

  • loader/PrivateClickMeasurement.cpp:

(WebCore::PrivateClickMeasurement::isValid const):
(WebCore::PrivateClickMeasurement::hasPreviouslyBeenReported):
(WebCore::randomlyBetweenTwentyFourAndFortyEightHours):
(WebCore::PrivateClickMeasurement::attributeAndGetEarliestTimeToSend):

  • loader/PrivateClickMeasurement.h:

(WebCore::PrivateClickMeasurement::AttributionSecondsUntilSendData::hasValidSecondsUntilSendValues):
(WebCore::PrivateClickMeasurement::AttributionSecondsUntilSendData::minSecondsUntilSend):
(WebCore::PrivateClickMeasurement::AttributionSecondsUntilSendData::encode const):
(WebCore::PrivateClickMeasurement::AttributionSecondsUntilSendData::decode):
(WebCore::PrivateClickMeasurement::AttributionTimeToSendData::earliestTimeToSend):
(WebCore::PrivateClickMeasurement::AttributionTimeToSendData::latestTimeToSend):
(WebCore::PrivateClickMeasurement::AttributionTimeToSendData::attributionReportEndpoint):
(WebCore::PrivateClickMeasurement::AttributionTimeToSendData::encode const):
(WebCore::PrivateClickMeasurement::AttributionTimeToSendData::decode):
(WebCore::PrivateClickMeasurement::timesToSend const):
(WebCore::PrivateClickMeasurement::setTimesToSend):
(WebCore::PrivateClickMeasurement::encode const):
(WebCore::PrivateClickMeasurement::decode):
(WebCore::PrivateClickMeasurement::earliestTimeToSend const): Deleted.
(WebCore::PrivateClickMeasurement::setEarliestTimeToSend): Deleted.

Source/WebKit:

  • NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp:

Move these queries to the correct INSERT OR REPLACE category. Stop
inserting null for earliestTimeToSendToDestination and starting
binding a parameter to it now that we are supporting reports to both
sites.

Now that earliestTimeToSend* can be null if a report has been sent
to a site, we need queries to set the value to null, and also need
to sort attributions by the minimum of either the two reporting times,
or the non-null time if one is null.

(WebKit::ResourceLoadStatisticsDatabaseStore::destroyStatements):
(WebKit::ResourceLoadStatisticsDatabaseStore::buildPrivateClickMeasurementFromDatabase):
(WebKit::ResourceLoadStatisticsDatabaseStore::insertPrivateClickMeasurement):
(WebKit::ResourceLoadStatisticsDatabaseStore::attributePrivateClickMeasurement):
We should not attribute a PCM value if it has already been reported to
either the source or destination. This is covered by checking
secondsUntilSend.hasValidSecondsUntilSendValues() and
previouslyAttributed.value().hasPreviouslyBeenReported() before
inserting anything into the attributed PCM table.

(WebKit::ResourceLoadStatisticsDatabaseStore::earliestTimesToSend):
(WebKit::ResourceLoadStatisticsDatabaseStore::markReportAsSentToSource):
(WebKit::ResourceLoadStatisticsDatabaseStore::markReportAsSentToDestination):
(WebKit::ResourceLoadStatisticsDatabaseStore::clearSentAttribution):
Clear a value from the attributed table only if it has been sent to
both source and destination site. Otherwise, set the corresponding
attribution endpoint to null so we don't send it here again.

(WebKit::ResourceLoadStatisticsDatabaseStore::markAttributedPrivateClickMeasurementsAsExpiredForTesting):
For the sake of testing we can set the destination earliest time to
send to null. We are only confirming here that the expired attribution
gets sent.

  • NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.h:
  • NetworkProcess/Classifier/ResourceLoadStatisticsMemoryStore.h:
  • NetworkProcess/Classifier/ResourceLoadStatisticsStore.h:
  • NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp:

(WebKit::WebResourceLoadStatisticsStore::attributePrivateClickMeasurement):
(WebKit::WebResourceLoadStatisticsStore::clearSentAttribution):

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

(WebKit::PrivateClickMeasurementManager::storeUnattributed):
(WebKit::PrivateClickMeasurementManager::getTokenPublicKey):
We currently have no way of setting the destination token URL site for
testing. To avoid flakiness, we should not make a ping load for the
token URL if we are reporting to the destination in test mode.

(WebKit::PrivateClickMeasurementManager::attribute):
(WebKit::PrivateClickMeasurementManager::fireConversionRequest):
(WebKit::PrivateClickMeasurementManager::fireConversionRequestImpl):
(WebKit::PrivateClickMeasurementManager::clearSentAttribution):
(WebKit::PrivateClickMeasurementManager::firePendingAttributionRequests):

  • NetworkProcess/PrivateClickMeasurementManager.h:

Tools:

Update API tests to check for a valid time to send for both the source
and destination site.

  • TestWebKitAPI/Tests/WebCore/PrivateClickMeasurement.cpp:

(TestWebKitAPI::TEST):

LayoutTests:

Layout test coverage.

  • http/tests/privateClickMeasurement/resources/conversionFilePath.py:
  • http/tests/privateClickMeasurement/resources/conversionReport.py:
  • http/tests/privateClickMeasurement/resources/fraudPreventionTestURL.py:
  • http/tests/privateClickMeasurement/resources/getConversionData.py:
  • http/tests/privateClickMeasurement/send-attribution-conversion-request-expected.txt:
  • http/tests/privateClickMeasurement/send-attribution-conversion-request.html:
11:31 AM Changeset in webkit [275136] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebKit

Remove DisplayRefreshMonitor::handleDisplayRefreshedNotificationOnMainThread()
https://bugs.webkit.org/show_bug.cgi?id=223837

Patch by Tyler Wilcock <Tyler Wilcock> on 2021-03-27
Reviewed by Simon Fraser.

Fixes build for GTK + WPE after
https://trac.webkit.org/changeset/275134/webkit.

Quoting that revision:

handleDisplayRefreshedNotificationOnMainThread() is an anachronism left over from
the non-main-thread nature of the CVDisplayLink callback. There's no need to burden
all subclasses of DisplayRefreshMonitor with that detail.

  • Shared/CoordinatedGraphics/threadedcompositor/ThreadedDisplayRefreshMonitor.cpp:

(WebKit::ThreadedDisplayRefreshMonitor::invalidate):
(WebKit::ThreadedDisplayRefreshMonitor::displayRefreshCallback):
Replace call to DisplayRefreshMonitor::handleDisplayRefreshedNotificationOnMainThread(this)
with displayDidRefresh().

10:15 AM Changeset in webkit [275135] by ddkilzer@apple.com
  • 2 edits in trunk/Source/WebKit

Fix leaks in WKInspectorResourceURLSchemeHandler
<https://webkit.org/b/223824>

Reviewed by Joseph Pecoraro.

  • UIProcess/Inspector/mac/WKInspectorResourceURLSchemeHandler.mm:

(-[WKInspectorResourceURLSchemeHandler webView:startURLSchemeTask:]):

  • Make use of adoptNS() when assigning a newly allocated, +1 retained Objective-C object to a RetainPtr<>.
  • Also fix leak of local NSHTTPURLResponse object by using a RetainPtr<>.
9:01 AM Changeset in webkit [275134] by Simon Fraser
  • 10 edits in trunk/Source

Remove DisplayRefreshMonitor::handleDisplayRefreshedNotificationOnMainThread()
https://bugs.webkit.org/show_bug.cgi?id=223837

Reviewed by Tim Horton.
Source/WebCore:

handleDisplayRefreshedNotificationOnMainThread() is an anachronism left over from
the non-main-thread nature of the CVDisplayLink callback. There's no need to burden
all subclasses of DisplayRefreshMonitor with that detail.

  • platform/graphics/DisplayRefreshMonitor.cpp:

(WebCore::DisplayRefreshMonitor::displayDidRefresh):
(WebCore::DisplayRefreshMonitor::handleDisplayRefreshedNotificationOnMainThread): Deleted.

  • platform/graphics/DisplayRefreshMonitor.h:
  • platform/graphics/gtk/DisplayRefreshMonitorGtk.cpp:

(WebCore::DisplayRefreshMonitorGtk::displayLinkFired):

  • platform/graphics/ios/DisplayRefreshMonitorIOS.mm:

(WebCore::DisplayRefreshMonitorIOS::displayLinkFired):

  • platform/graphics/mac/LegacyDisplayRefreshMonitorMac.cpp:

(WebCore::LegacyDisplayRefreshMonitorMac::displayLinkFired):

  • platform/graphics/win/DisplayRefreshMonitorWin.cpp:

(WebCore::DisplayRefreshMonitorWin::displayLinkFired):

Source/WebKit:

handleDisplayRefreshedNotificationOnMainThread() is an anachronism left over from
the non-main-thread nature of the CVDisplayLink callback. There's no need to burden
all subclasses of DisplayRefreshMonitor with that detail.

  • WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDisplayRefreshMonitor.mm:

(WebKit::RemoteLayerTreeDisplayRefreshMonitor::didUpdateLayers):

  • WebProcess/WebPage/mac/DisplayRefreshMonitorMac.cpp:

(WebKit::DisplayRefreshMonitorMac::displayLinkFired):

6:51 AM Changeset in webkit [275133] by Alan Bujtas
  • 4 edits
    2 adds in trunk

[Multicolumn] Do not try to re-validate a multicol spanner when the renderer is moved internally
https://bugs.webkit.org/show_bug.cgi?id=223836
<rdar://75742694>

Reviewed by Ryosuke Niwa.

Source/WebCore:

When a renderer becomes a multicol spanner

  1. it is moved out of its original tree position and placed as a sibling of the enclosing multicolumn flow and
  2. a spanner placeholder is constructed and inserted at the original position

This patch fixes the case when an already placed multicol spanner is internally moved (e.g. collapsing an anonymous block parent)
and we attempt to re-insert this spanner to the multicolumn flow. No spanner state should change due to internal re-parenting.

Test: fast/multicol/spanner-get-re-added-on-move-crash.html

  • rendering/updating/RenderTreeBuilder.cpp:

(WebCore::RenderTreeBuilder::attachToRenderElementInternal):

LayoutTests:

  • TestExpectations:
  • fast/multicol/spanner-get-re-added-on-move-crash-expected.txt: Added.
  • fast/multicol/spanner-get-re-added-on-move-crash.html: Added.
3:52 AM Changeset in webkit [275132] by Philippe Normand
  • 3 edits in trunk

REGRESSION(r275111) [GLIB] Fix build with new derived sources and forwarding headers scheme
https://bugs.webkit.org/show_bug.cgi?id=223834

Unreviewed build fix.

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

Mar 26, 2021:

9:47 PM Changeset in webkit [275131] by ddkilzer@apple.com
  • 2 edits in trunk/Source/WebKitLegacy/mac

WebFeature class fails to copy/retain its instance variables
<https://webkit.org/b/223823>

Reviewed by Sam Weinig.

  • WebView/WebFeature.m:

(-[WebFeature initWithKey:preferenceKey:name:details:defaultValue:hidden:]):

  • Copy (and thereby retain) instance variables, fulfilling the promise of its @property declarations and preventing use-after-release issues.

(-[WebFeature dealloc]): Add.

  • Release the instance variables copied in the constructor.
9:24 PM Changeset in webkit [275130] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebCore

Dirty layout for floating children of inline on full layout
https://bugs.webkit.org/show_bug.cgi?id=223660

Patch by Ian Gilbert <iang@apple.com> on 2021-03-26
Reviewed by Zalan Bujtas.

Avoid consuming an object on an empty line when that object is floating or out-of-flow.

  • rendering/line/BreakingContext.h:

(WebCore::BreakingContext::handleEndOfLine):

8:52 PM Changeset in webkit [275129] by Chris Dumez
  • 2 edits in trunk/Source/WebCore

Avoid heap allocation on the audio thread in BaseAudioContext::scheduleNodeDeletion()
https://bugs.webkit.org/show_bug.cgi?id=223825

Reviewed by Darin Adler.

Avoid heap allocation on the audio thread in BaseAudioContext::scheduleNodeDeletion()
for performance. Stop calling appendVector() on m_nodesToDelete since m_nodesToDelete
is always empty. We can use std::exchange() instead of appendVector() and clear() to
avoid the heap allocation.

The reason m_nodesToDelete is always empty is that BaseAudioContext::scheduleNodeDeletion()
relies on the m_isDeletionScheduled flag to avoid adding to m_nodesToDelete until
m_nodesToDelete is cleared on the main thread and the m_isDeletionScheduled gets reset.

  • Modules/webaudio/BaseAudioContext.cpp:

(WebCore::BaseAudioContext::clear):
(WebCore::BaseAudioContext::scheduleNodeDeletion):

8:27 PM Changeset in webkit [275128] by Patrick Angle
  • 5 edits in trunk/Source

Web Inspector: Grid layout labels can be drawn outside the viewport
https://bugs.webkit.org/show_bug.cgi?id=221972

Reviewed by BJ Burg.

Source/WebCore:

Added logic for a best-effort attempt to make sure that layout labels are drawn within the document's bounds, or
at least within the grid itself. Labels are measured and adjusted so that if they would be drawn outside the
document's bounds, they will be pulled inside the grid. This does not guarantee that all labels will be visible
all the time. It is still possible an entire side of a grid will be outside the document's bounds, and this does
not attempt to correct for this case, as the desired anchor points for labels will be outside of the visible
area of the document.

  • inspector/InspectorOverlay.cpp:

(WebCore::InspectorOverlay::fontForLayoutLabel):

  • Added helper that creates the FontCascade for layout labels, which is done in a few different places.

(WebCore::InspectorOverlay::backgroundPathForLayoutLabel):

  • Added helper to create the Path for the background of layout labels, which is now used in WebKit::WKInspectorHighlightView.

(WebCore::expectedSizeForLayoutLabel):

  • Gets the expected size of the label based on the text and arrow direction, and does so without needing to

create the entire label background's path.
(WebCore::InspectorOverlay::drawLayoutLabel):

  • Support new LabelArrowEdgePosition property

(WebCore::InspectorOverlay::drawGridOverlay):
(WebCore::buildLabel):
(WebCore::InspectorOverlay::buildGridOverlay):

  • inspector/InspectorOverlay.h:

(WebCore::InspectorOverlay::Highlight::GridHighlightOverlay::Label::encode const):
(WebCore::InspectorOverlay::Highlight::GridHighlightOverlay::Label::decode):

Source/WebKit:

Add support for the new WebCore::InspectorOverlay::LabelArrowEdgePosition property to grid overlays on iOS.

  • UIProcess/Inspector/ios/WKInspectorHighlightView.mm:

(createLayoutLabelLayer):

  • Support the new WebCore::InspectorOverlay::LabelArrowEdgePosition.
  • Use new helpers in WebCore::InspectorOverlay to reduce code duplication.

(-[WKInspectorHighlightView _createGridOverlayLayer:scale:]):

8:09 PM Changeset in webkit [275127] by Lauro Moura
  • 4 edits in trunk

REGRESSION(r275111) [GLIB] Fix build with new derived sources and forwarding headers scheme
https://bugs.webkit.org/show_bug.cgi?id=223834

Unreviewed build fix.

.:

Buildfix for now. Actual removal of older scheme will come in the
future.

  • Source/cmake/OptionsWPE.cmake: Add some missing variables with the

per framework source and header dirs.

Tools:

  • TestWebKitAPI/glib/CMakeLists.txt: Add some missing variables with

needed include headers.

6:37 PM Changeset in webkit [275126] by Alan Bujtas
  • 3 edits in trunk/Source/WebCore

[RenderTreeBuilder] No need to update the counters when the renderer is moved internally
https://bugs.webkit.org/show_bug.cgi?id=223801
<rdar://75835208>

Reviewed by Ryosuke Niwa.

When the renderer re-parenting is initiated by an "internal move" (e.g. anonymous block parent is not needed anymore so all the descendants
are moved "one level" up), we don't need to re-compute the counters. Their state should not be any different after this re-parenting.

  • rendering/updating/RenderTreeBuilder.cpp:

(WebCore::RenderTreeBuilder::attachToRenderElementInternal):
(WebCore::RenderTreeBuilder::move):

  • rendering/updating/RenderTreeBuilder.h:
6:00 PM Changeset in webkit [275125] by Chris Dumez
  • 2 edits in trunk/Source/WTF

REGRESSION (r275038?): Perf test IndexedDB/stress/large-binary-keys.html failing with logging about memory pressure events
https://bugs.webkit.org/show_bug.cgi?id=223826
<rdar://problem/75906134>

Reviewed by Darin Adler.

Use RELEASE_LOG() instead of WTFLogAlways() to log memory pressure events, so that they don't
show on stdout in the performance tests and make them fail.

  • wtf/cocoa/MemoryPressureHandlerCocoa.mm:

(WTF::MemoryPressureHandler::install):

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

[ macOS ] inspector/debugger/csp-exceptions.html is a flakey text failure
https://bugs.webkit.org/show_bug.cgi?id=223830

Unreviewed test gardening.

  • platform/mac/TestExpectations: Updated test expectations to Pass Failure Timeout while test is being reviewed. I added Timeout to the expectation because while the failure is a text failure, the text failure indicates that it's a timeout.
5:02 PM Changeset in webkit [275123] by commit-queue@webkit.org
  • 2 edits in trunk/Tools

Fix TypeError: Can't mix strings and bytes in path components in Tools/Scripts/dump-class-layout
https://bugs.webkit.org/show_bug.cgi?id=223819

Patch by Tyler Wilcock <Tyler Wilcock> on 2021-03-26
Reviewed by Jonathan Bedard.

Prior to this patch, I received this error when trying to run the
dump-class-layout script. This happens because webkit_build_dir() returns
bytes rather than a string.

$ dump-class-layout -c Release WebCore Pair
Traceback (most recent call last):

File "/home/twilco/projects/webkit/Tools/Scriptsdump-class-layout", line 88, in <module>

main()

File "/home/twilco/projects/webkit/Tools/Scriptsdump-class-layout", line 80, in main

target_path = os.path.join(build_dir, args.config, args.framework + ".framework", args.framework);

File "/usr/lib/python3.9/posixpath.py", line 90, in join

genericpath._check_arg_types('join', a, *p)

File "/usr/lib/python3.9/genericpath.py", line 155, in _check_arg_types

raise TypeError("Can't mix strings and bytes in path components") from None

TypeError: Can't mix strings and bytes in path components

  • Scripts/dump-class-layout:

Update webkit_build_dir() to decode its output into a UTF-8 string.

4:47 PM Changeset in webkit [275122] by Jonathan Bedard
  • 7 edits in trunk/Tools

System installing webkitcorepy can break certain scripts
https://bugs.webkit.org/show_bug.cgi?id=223822
<rdar://problem/75905163>

Rubber-stamped by Alan Coon.

  • Scripts/libraries/resultsdbpy/resultsdbpy/example/environment.py:
  • Scripts/test-lldb-webkit: Replace sys.path.append with sys.path.insert.
  • Scripts/webkitpy/init.py: Only put webkitcorepy path into sys.path if it isn't already there.
  • Scripts/webkitpy/benchmark_runner/http_server_driver/http_server/twisted_http_server.py:

Replace sys.path.append with sys.path.insert.

  • Scripts/webkitpy/common/system/executive_unittest.py: Ditto.
  • Scripts/webkitpy/port/config_standalone.py: Ditto.
4:32 PM Changeset in webkit [275121] by Chris Fleizach
  • 2 edits in trunk/Source/WebCore

AX: crash at aom.apple.WebCore: WebCore::AccessibilityProgressIndicator::element const
https://bugs.webkit.org/show_bug.cgi?id=223800
rdar://75861367

Reviewed by Zalan Bujtas.

Prevent unintended renderer access.
No steps to reproduce were available, so a test was not able to be created.

  • accessibility/AccessibilityProgressIndicator.cpp:

(WebCore::AccessibilityProgressIndicator::element const):

4:12 PM Changeset in webkit [275120] by Wenson Hsieh
  • 10 edits
    2 adds in trunk

Use PUICQuickboardController for text input when HAVE(QUICKBOARD_CONTROLLER) is defined
https://bugs.webkit.org/show_bug.cgi?id=223809
<rdar://problem/56730407>

Reviewed by Tim Horton.

Source/WebKit:

Enable PUICQuickboardController by default, and remove a runtime preference that previously disabled this
feature by default when HAVE(QUICKBOARD_CONTROLLER) is defined.

  • UIProcess/ios/WKContentViewInteraction.mm:

(-[WKContentView _updateTextInputTraits:]):

Add a couple of missing selector checks before attempting to configure smart quotes and smart dash editing
behaviors.

(-[WKContentView _createQuickboardController:]):

Additionally opt into a quickboard controller API to bypass the interstitial Quickboard view controller when
using PUICQuickboardController.

(-[WKContentView presentViewControllerForCurrentFocusedElement]):

Remove a check for the (now-removed) preference.

Source/WTF:

Remove the QuickboardControllerForTextInputEnabled WebKit preference, now that the feature is enabled by
default behind a build-time flag.

  • Scripts/Preferences/WebPreferencesInternal.yaml:

LayoutTests:

Remove some extraneous instancees of QuickboardControllerForTextInputEnabled=true from watch-specific layout
tests, now that the feature is enabled by default.

  • fast/forms/watchos/delete-content-in-text-field.html:
  • fast/forms/watchos/edit-text-field-calls-injected-bundle.html:
  • fast/forms/watchos/enter-text-with-spellcheck-disabled-expected.txt: Added.
  • fast/forms/watchos/enter-text-with-spellcheck-disabled.html: Added.

Add a new test to exercise the missing selector checks in -[WKContentView _updateTextInputTraits:].

  • fast/forms/watchos/form-control-label-text.html:
  • fast/forms/watchos/time-picker-value-change.html:
  • fast/forms/watchos/username-text-content-type.html:
4:10 PM Changeset in webkit [275119] by Jonathan Bedard
  • 5 edits in trunk/Tools

[webkit-patch] Use commit.webkit.org instead of remote SVN to compute identifier
https://bugs.webkit.org/show_bug.cgi?id=223820
<rdar://problem/75902125>

Reviewed by Dewei Zhu.

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

(DownloadCommandsTest.mock_svn_remote): Replace mock Svn with mock requests.

  • Scripts/webkitpy/tool/commands/upload_unittest.py:
  • Scripts/webkitpy/tool/comments.py:

(bug_comment_from_svn_revision): Use commits.webkit.org instead of svn.webkit.org.

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

(CloseBugForLandDiffTest.test_empty_state): Replace mock Svn with mock requests.

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

Source/WebCore/editing/cocoa/HTMLConverter.mm:1278:44: runtime error: member call on null pointer of type 'WebCore::ArchiveResource'
https://bugs.webkit.org/show_bug.cgi?id=223696

Reviewed by Alex Christensen.

Fix bug found by UBSan.

  • editing/cocoa/HTMLConverter.mm:

(HTMLConverter::_addAttachmentForElement):

  • Drop duplicate call to dataSource->subresource(url) as it doesn't seem it can return something else than null if it returned null the first time around.
  • Make sure resource is null-checked before we dereference it to get the MIME type.
3:18 PM Changeset in webkit [275117] by Alan Coon
  • 1 copy in tags/Safari-612.1.8

Tag Safari-612.1.8.

3:05 PM Changeset in webkit [275116] by beidson@apple.com
  • 25 edits in trunk/Source/WebKit

Refactor NetworkSessionCocoa to prepare for per-WebPageProxy sessions
https://bugs.webkit.org/show_bug.cgi?id=223776

Reviewed by Alex Christensen.

No new tests (No behavior change refactor)

A NetworkSessionCocoa has (n) NSURLSessions associated with it.

When a network load needs to happen - based on the context for that load - the appropriate
NSURLSession is chosen (or created).

In a future patch, there will be an additional bit of context used for choosing the appropriate
NSURLSession - The WKWebView the load was triggered from.

This patch takes those (n) NSURLSessions and wraps them in a SessionSet object.
It also adds the concept of looking up the appropriate SessionSet based on the WebPageProxyIdentifier
triggering the load.

This patch by itself should not be a behavior change, but allows the followup to be much simpler.

  • NetworkProcess/Downloads/cocoa/DownloadCocoa.mm:

(WebKit::Download::resume):

  • NetworkProcess/NetworkConnectionToWebProcess.cpp:

(WebKit::NetworkConnectionToWebProcess::createSocketChannel):
(WebKit::NetworkConnectionToWebProcess::establishSWContextConnection):

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

(WebKit::NetworkDataTask::create):

  • NetworkProcess/NetworkSession.cpp:

(WebKit::NetworkSession::createWebSocketTask):

  • NetworkProcess/NetworkSession.h:

(WebKit::NetworkSession::removeWebSocketTask):
(WebKit::NetworkSession::addWebSocketTask):

  • NetworkProcess/NetworkSocketChannel.cpp:

(WebKit::NetworkSocketChannel::create):
(WebKit::NetworkSocketChannel::NetworkSocketChannel):
(WebKit::NetworkSocketChannel::~NetworkSocketChannel):

  • NetworkProcess/NetworkSocketChannel.h:
  • NetworkProcess/ServiceWorker/WebSWServerToContextConnection.cpp:

(WebKit::WebSWServerToContextConnection::WebSWServerToContextConnection):

  • NetworkProcess/ServiceWorker/WebSWServerToContextConnection.h:
  • NetworkProcess/cocoa/NetworkDataTaskCocoa.h:
  • NetworkProcess/cocoa/NetworkDataTaskCocoa.mm:

(WebKit::NetworkDataTaskCocoa::NetworkDataTaskCocoa):

  • NetworkProcess/cocoa/NetworkSessionCocoa.h:
  • NetworkProcess/cocoa/NetworkSessionCocoa.mm:

(WebKit::NetworkSessionCocoa::hstsStorage const):
(WebKit::NetworkSessionCocoa::NetworkSessionCocoa):
(WebKit::NetworkSessionCocoa::initializeStandardSessionsInSet):
(WebKit::NetworkSessionCocoa::sessionSetForPage):
(WebKit::NetworkSessionCocoa::sessionSetForPage const):
(WebKit::NetworkSessionCocoa::initializeEphemeralStatelessSessionIfNeeded):
(WebKit::NetworkSessionCocoa::SessionSet::initializeEphemeralStatelessSessionIfNeeded):
(WebKit::NetworkSessionCocoa::sessionWrapperForTask):
(WebKit::NetworkSessionCocoa::appBoundSession):
(WebKit::NetworkSessionCocoa::hasAppBoundSession const):
(WebKit::NetworkSessionCocoa::clearAppBoundSession):
(WebKit::NetworkSessionCocoa::isolatedSession):
(WebKit::NetworkSessionCocoa::SessionSet::isolatedSession):
(WebKit::NetworkSessionCocoa::hasIsolatedSession const):
(WebKit::NetworkSessionCocoa::clearIsolatedSessions):
(WebKit::NetworkSessionCocoa::invalidateAndCancelSessionSet):
(WebKit::NetworkSessionCocoa::invalidateAndCancel):
(WebKit::NetworkSessionCocoa::createWebSocketTask):
(WebKit::NetworkSessionCocoa::addWebSocketTask):
(WebKit::NetworkSessionCocoa::removeWebSocketTask):
(WebKit::NetworkSessionCocoa::hostNamesWithAlternativeServices const):
(WebKit::NetworkSessionCocoa::deleteAlternativeServicesForHostNames):
(WebKit::NetworkSessionCocoa::clearAlternativeServices):
(WebKit::NetworkSessionCocoa::initializeEphemeralStatelessSession): Deleted.

  • NetworkProcess/soup/NetworkSessionSoup.cpp:

(WebKit::NetworkSessionSoup::createWebSocketTask):

  • NetworkProcess/soup/NetworkSessionSoup.h:
  • Shared/AuxiliaryProcess.cpp:

(WebKit::AuxiliaryProcess::initialize):

  • WebProcess/Network/WebSocketChannel.cpp:

(WebKit::WebSocketChannel::create):
(WebKit::WebSocketChannel::WebSocketChannel):
(WebKit::WebSocketChannel::connect):

  • WebProcess/Network/WebSocketChannel.h:
  • WebProcess/Network/WebSocketProvider.cpp:

(WebKit::WebSocketProvider::createWebSocketChannel):

  • WebProcess/Network/WebSocketProvider.h:
  • WebProcess/Storage/WebSWContextManagerConnection.cpp:

(WebKit::WebSWContextManagerConnection::establishConnection):
(WebKit::WebSWContextManagerConnection::installServiceWorker):

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::m_lastNavigationWasAppBound):

3:00 PM Changeset in webkit [275115] by ysuzuki@apple.com
  • 5 edits
    1 add in trunk

[JSC] Use AppleICU SPI for canonicalization
https://bugs.webkit.org/show_bug.cgi?id=223552

Reviewed by Ryosuke Niwa.

JSTests:

  • stress/intl-canonical-locale-alias-mapping.js: Added.

(shouldBe):
(Intl.getCanonicalLocales):

Source/JavaScriptCore:

uloc_canonicalize does not perform alias mapping. This is different from ECMA402's canonicalization requirement.
ICU C++ icu::Locale can canonicalize locale ID with alias mapping, but this is not exposed to C API.

In this patch, we adopt AppleICU SPI "ualoc_canonicalForm" added in rdar://74314220. This canonicalization can perform
alias mapping too. We do not extend uloc_canonicalize since this API explicitly says "It does NOT map aliased names in any way."[1].
In [2], we are tracking upstreaming of this new SPI. Once it is upstreamed to the mainline ICU, we will switch to that.

[1]: https://unicode-org.github.io/icu-docs/apidoc/dev/icu4c/uloc_8h.html#a69b148194cf57ac40d4bb15c5b905260
[2]: https://unicode-org.atlassian.net/browse/ICU-21506

  • runtime/IntlLocale.cpp:

(JSC::LocaleIDBuilder::initialize):
(JSC::LocaleIDBuilder::toCanonical):

  • runtime/IntlObject.cpp:

(JSC::localeIDBufferForLanguageTagWithNullTerminator):
(JSC::canonicalizeLanguageTag):
(JSC::canonicalizeLocaleIDWithoutNullTerminator):
(JSC::localeIDBufferForLanguageTag): Deleted.

  • runtime/IntlObject.h:
2:28 PM Changeset in webkit [275114] by Adrian Perez de Castro
  • 1 copy in releases/WPE WebKit/webkit-2.32.0

WPE WebKit 2.32.0

2:27 PM Changeset in webkit [275113] by Adrian Perez de Castro
  • 4 edits in releases/WebKitGTK/webkit-2.32

Unreviewed. Update OptionsWPE.cmake and NEWS for the 2.32.0 release

.:

  • Source/cmake/OptionsWPE.cmake: Bump version numbers.

Source/WebKit:

  • wpe/NEWS: Add release notes for 2.32.0
2:23 PM Changeset in webkit [275112] by Wenson Hsieh
  • 12 edits
    4 adds in trunk

Allow some image overlay content to render in fully transparent image elements
https://bugs.webkit.org/show_bug.cgi?id=223781
<rdar://problem/75886351>

Reviewed by Tim Horton.

Source/WebCore:

Introduce ImageOverlayController, and use it to render selections in image overlay content when the image
overlay's host element is fully transparent.

Test: fast/images/image-extraction/mac/select-word-in-transparent-image-overlay.html

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

(WebCore::Document::willBeRemovedFromFrame):

Add plumbing to allow ImageOverlayController to uninstall its PageOverlay when the document is about to be
detached. See ImageOverlayController:: below.

  • editing/SelectionRectGatherer.cpp:

(WebCore::SelectionRectGatherer::Notifier::~Notifier):

Have SelectionRectGatherer notify the image overlay controller as well, when selection rects change.

  • page/ChromeClient.h:

(WebCore::ChromeClient::needsImageOverlayControllerForSelectionPainting const):

Add a new client hook that returns whether or not we should use ImageOverlayController to paint selections.
If not (i.e. we're on iOS, where we use UIKit to draw selections in the UI process), then we'll never install
page overlays, since selectionRectsDidChange is effectively a no-op.

  • page/ImageOverlayController.cpp: Added.

(WebCore::ImageOverlayController::ImageOverlayController):
(WebCore::ImageOverlayController::selectionRectsDidChange):

When selection rects change, if the selection is inside an image overlay whose host is completely transparent
(or very close to being completely transparent), then remember the selection rects along with the renderer's
background color, and use this to render selection highlights separately, in a PageOverlay.

(WebCore::ImageOverlayController::documentDetached):

If the Document containing the current rendered overlay selection is detached, immediately uninstall the
current PageOverlay. This ensures that the overlays don't persist through navigation.

(WebCore::ImageOverlayController::installPageOverlayIfNeeded):
(WebCore::ImageOverlayController::uninstallPageOverlayIfNeeded):

Helper methods to add or remove the PageOverlay from the current Page.

(WebCore::ImageOverlayController::willMoveToPage):

Uninstall the current page overlay if needed.

(WebCore::ImageOverlayController::drawRect):

Use the information stored in ImageOverlayController::selectionRectsDidChange to render custom selection
rects.

  • page/ImageOverlayController.h: Added.
  • page/Page.cpp:
  • page/Page.h:

Add an ImageOverlayController to the Page.

(WebCore::Page::imageOverlayController):

Source/WebKit:

Implement a new chrome client hook. See WebCore ChangeLog for more information.

  • WebProcess/WebCoreSupport/WebChromeClient.h:

LayoutTests:

Adjust an existing layout test so that it actually checks what it was intended to check; add a new layout test
to cover the changes in this bug.

  • fast/images/image-extraction/mac/select-word-in-draggable-image-overlay.html:

Drive-by fix: remove some extraneous imported scripts from this layout test, and additionally simplify the test
so that it doesn't rely on event sender to select text.

  • fast/images/image-extraction/mac/select-word-in-transparent-image-overlay-expected-mismatch.html: Added.
  • fast/images/image-extraction/mac/select-word-in-transparent-image-overlay.html: Added.

Add a new layout test with a fully transparent image element that covers a div of the same size, with a
background image that is identical to the image element's image. This emulates the behavior of certain websites
that prompted this fallback image overlay rendering codepath in the first place.

1:37 PM Changeset in webkit [275111] by don.olmstead@sony.com
  • 27 edits in trunk

[CMake] Deprecate using DERIVED_SOURCES_DIR/FOWARDING_HEADERS_DIR directly
https://bugs.webkit.org/show_bug.cgi?id=223763

Reviewed by Michael Catanzaro.

.:

Remove any usages of DERIVED_SOURCES_DIR and FOWARDING_HEADERS_DIR. There are still some
uses in GTK/WPE but those should be phased out.

Sets the directory structure to look like an Apple build in terms of where headers and
derived sources are held. Rather than having one root derived sources and one root
header directory those directories are now per project. This helps catch any errors with
header includes.

Deletes some old Mac CMake code that is no longer relevant around creating forwarding
headers.

For AppleWin the old structure is used because of its internal build which assumes the
old structure.

  • Source/cmake/OptionsAppleWin.cmake:
  • Source/cmake/OptionsFTW.cmake:
  • Source/cmake/OptionsGTK.cmake:
  • Source/cmake/OptionsPlayStation.cmake:
  • Source/cmake/OptionsWPE.cmake:
  • Source/cmake/OptionsWinCairo.cmake:
  • Source/cmake/WebKitCommon.cmake:
  • Source/cmake/WebKitFS.cmake:
  • Source/cmake/WebKitMacros.cmake:

Source/JavaScriptCore:

Remove any usages of DERIVED_SOURCES_DIR and FOWARDING_HEADERS_DIR.

  • CMakeLists.txt:
  • PlatformMac.cmake:

Source/WebCore:

Remove any usages of DERIVED_SOURCES_DIR and FOWARDING_HEADERS_DIR.

  • PlatformFTW.cmake:
  • PlatformWin.cmake:

Source/WebKit:

Remove any usages of DERIVED_SOURCES_DIR and FOWARDING_HEADERS_DIR.

  • PlatformGTK.cmake:
  • PlatformMac.cmake: Remove creation of forwarding headers.

Source/WebKitLegacy:

Remove any usages of DERIVED_SOURCES_DIR and FOWARDING_HEADERS_DIR.

  • PlatformMac.cmake:

Tools:

Remove any usages of DERIVED_SOURCES_DIR and FOWARDING_HEADERS_DIR.

  • DumpRenderTree/PlatformMac.cmake:
  • MiniBrowser/gtk/CMakeLists.txt:
  • MiniBrowser/mac/CMakeLists.txt:
  • WebKitTestRunner/PlatformMac.cmake:
  • wpe/backends/CMakeLists.txt:
1:07 PM Changeset in webkit [275110] by Alan Bujtas
  • 5 edits in trunk/Tools

[MiniBrowser] Remove redundant "Disable Simple Line Layout" menu item
https://bugs.webkit.org/show_bug.cgi?id=223812

Reviewed by Simon Fraser.

SLL was replaced by IFC integration a while ago.

  • MiniBrowser/mac/SettingsController.h:
  • MiniBrowser/mac/SettingsController.m:

(-[SettingsController initWithMenu:]):
(-[SettingsController _populateMenu]):
(-[SettingsController validateMenuItem:]):
(-[SettingsController toggleSimpleLineLayoutEnabled:]): Deleted.
(-[SettingsController simpleLineLayoutEnabled]): Deleted.

  • MiniBrowser/mac/WK1BrowserWindowController.m:

(-[WK1BrowserWindowController didChangeSettings]):

  • MiniBrowser/mac/WK2BrowserWindowController.m:

(-[WK2BrowserWindowController didChangeSettings]):

1:05 PM Changeset in webkit [275109] by ysuzuki@apple.com
  • 6 edits in trunk/Source

[JSC] Use new Apple ICU APIs to avoid C++ ICU API usage
https://bugs.webkit.org/show_bug.cgi?id=223783
<rdar://problem/75060240>

Reviewed by Mark Lam.

Source/JavaScriptCore:

This patch adopts ICU 69's draft APIs to avoid using ICU C++ APIs in newer macOS build.
AppleICU adopts these draft APIs so that we can use it even in ICU 68 if ICU is AppleICU.
The API is ucal_getTimeZoneOffsetFromLocal, which is back-ported from ICU 69[1].
The purpose of this API is that calculating timezone offset and dst offset from *local* time.

[1]: https://github.com/unicode-org/icu/commit/53aa0505c5f95a8cebbd7b4421d474fd2a790b80

  • runtime/IntlDateTimeFormat.cpp:
  • runtime/JSDateMath.cpp:

(JSC::OpaqueICUTimeZoneDeleter::operator()):
(JSC::DateCache::calculateLocalTimeOffset):
(JSC::DateCache::defaultTimeZone):
(JSC::DateCache::timeZoneCacheSlow):

  • runtime/JSDateMath.h:

Source/WTF:

  • wtf/DateMath.h:

(WTF::LocalTimeOffset::LocalTimeOffset):

12:26 PM Changeset in webkit [275108] by pvollan@apple.com
  • 6 edits
    1 add in trunk/Source

Enforce notifyd message filtering
https://bugs.webkit.org/show_bug.cgi?id=223601
<rdar://75098580>

Reviewed by Brent Fulgham.

Source/WebCore/PAL:

Add Notify SPI file.

  • PAL.xcodeproj/project.pbxproj:
  • pal/spi/cocoa/NotifySPI.h: Added.

Source/WebKit:

Enable Notify filtering by setting Notify options before entering sandbox.

  • Shared/mac/AuxiliaryProcessMac.mm:

(WebKit::compileAndApplySandboxSlowCase):

Source/WTF:

Add ENABLE define for Notify filtering.

  • wtf/PlatformEnableCocoa.h:
12:16 PM Changeset in webkit [275107] by commit-queue@webkit.org
  • 3 edits in trunk/Source/WebKit

Unreviewed, reverting r274938.
https://bugs.webkit.org/show_bug.cgi?id=223811

Introduced perf regression

Reverted changeset:

"Add IOKit method filter telemetry"
https://bugs.webkit.org/show_bug.cgi?id=223652
https://trac.webkit.org/changeset/274938

12:14 PM Changeset in webkit [275106] by Kate Cheney
  • 16 edits
    7 adds in trunk

Implement PCM SQLite changes based on spec review
https://bugs.webkit.org/show_bug.cgi?id=223726
<rdar://problem/75818526>

Reviewed by Brent Fulgham.

Source/WebKit:

This patch makes 2 significant changes in the SQLite database for
PCM. First, it renames attributeOnSiteDomainID to destinationSiteDomainID
based on spec review. Second, it adds support for sending reports to
both click source and destination sites. This involved adding an
additional column to the AttributedPrivateClickMeasurement table to
store the earliest time to send a report to the destination, renaming
the earliestTimeToSend column to specify source, and removing the NOT NULL
constraint on earliestTimeToSend in order to mark in the database when
a report has been send to the source site.

Since we need to remove a NOT NULL constraint and update foreign keys
and unique constraints, this requires a full migration of data from
the PCM tables.

  • NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp:

earliestTimeToSendToDestination should be null for now until we
implement the rest of the PCM work in
https://bugs.webkit.org/show_bug.cgi?id=223615.

Remove semi-colons from create table queries. They don't matter in
this context and if we remove them we can use the create table
queries to check for a correct schema.

(WebKit::attributedPrivateClickMeasurementSchemaV1):
(WebKit::attributedPrivateClickMeasurementSchemaV1Alternate):
Capture the table info from AttributedPrivateClickMeasurement to check
if we need an update.

(WebKit::expectedUnattributedColumns):
(WebKit::expectedAttributedColumns):
Instead of storing outdated columns, we should store expected columns
and add any missing ones in addMissingColumnsToTable.

(WebKit::ResourceLoadStatisticsDatabaseStore::tableSchema):
(WebKit::ResourceLoadStatisticsDatabaseStore::needsUpdatedPrivateClickMeasurementSchema):
(WebKit::ResourceLoadStatisticsDatabaseStore::missingReferenceToObservedDomains):
Separate out some duplicated code.

(WebKit::ResourceLoadStatisticsDatabaseStore::migrateDataToNewTablesIfNecessary):
(WebKit::ResourceLoadStatisticsDatabaseStore::columnsForTable):
(WebKit::ResourceLoadStatisticsDatabaseStore::addMissingColumnsToTable):
(WebKit::ResourceLoadStatisticsDatabaseStore::addMissingColumnsIfNecessary):
(WebKit::ResourceLoadStatisticsDatabaseStore::renameColumnInTable):
(WebKit::ResourceLoadStatisticsDatabaseStore::renameColumnsIfNecessary):
(WebKit::ResourceLoadStatisticsDatabaseStore::openAndUpdateSchemaIfNecessary):
Simplify the way we update the schema by first adding columns, then
renaming, then migrating. This way we don't need to worry about a
mismatch in number of columns or column name when transferring data.

(WebKit::ResourceLoadStatisticsDatabaseStore::clearSentAttribution):
(WebKit::ResourceLoadStatisticsDatabaseStore::markAttributedPrivateClickMeasurementsAsExpiredForTesting):
(WebKit::unattributedPrivateClickMeasurementSchemaV1): Deleted.
(WebKit::unattributedPrivateClickMeasurementSchemaV1Alternate): Deleted.
(WebKit::outdatedUnattributedColumns): Deleted.
(WebKit::outdatedAttributedColumns): Deleted.
(WebKit::columnsToCopy): Deleted.

  • NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.h:
  • NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp:

(WebKit::WebResourceLoadStatisticsStore::statisticsDatabaseColumnsForTable):

  • NetworkProcess/Classifier/WebResourceLoadStatisticsStore.h:
  • NetworkProcess/NetworkProcess.cpp:

(WebKit::NetworkProcess::statisticsDatabaseColumnsForTable):

  • NetworkProcess/NetworkProcess.h:
  • NetworkProcess/NetworkProcess.messages.in:
  • UIProcess/API/Cocoa/WKWebsiteDataStore.mm:

(-[WKWebsiteDataStore _statisticsDatabaseColumnsForTable:completionHandler:]):

  • UIProcess/API/Cocoa/WKWebsiteDataStorePrivate.h:
  • UIProcess/Network/NetworkProcessProxy.cpp:

(WebKit::NetworkProcessProxy::statisticsDatabaseColumnsForTable):

  • UIProcess/Network/NetworkProcessProxy.h:
  • UIProcess/WebsiteData/WebsiteDataStore.cpp:

(WebKit::WebsiteDataStore::statisticsDatabaseColumnsForTable):

  • UIProcess/WebsiteData/WebsiteDataStore.h:

New function for testing.

Tools:

Add API test coverage to check that renaming and adding columns works.
Data migration was tested manually.

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/WebKitCocoa/PrivateClickMeasurement.mm: Added.

(TEST):

  • TestWebKitAPI/Tests/WebKitCocoa/pcmWithoutFraudPreventionDatabase.db: Added.
  • TestWebKitAPI/Tests/WebKitCocoa/pcmWithoutFraudPreventionDatabase.db-shm: Added.
  • TestWebKitAPI/Tests/WebKitCocoa/pcmWithoutFraudPreventionDatabase.db-wal: Added.
  • TestWebKitAPI/Tests/WebKitCocoa/pcmWithoutReportingColumns.db: Added.
  • TestWebKitAPI/Tests/WebKitCocoa/pcmWithoutReportingColumns.db-shm: Added.
  • TestWebKitAPI/Tests/WebKitCocoa/pcmWithoutReportingColumns.db-wal: Added.
11:11 AM Changeset in webkit [275105] by Jonathan Bedard
  • 2 edits in trunk/Tools

Unreviewed, reverting r275081.

Broke Apple Internal builds

Reverted changeset:

"Avoid calling xcodebuild -showsdks where possible."
https://bugs.webkit.org/show_bug.cgi?id=223727
https://commits.webkit.org/r275081

10:58 AM Changeset in webkit [275104] by commit-queue@webkit.org
  • 3 edits
    2 adds in trunk

LayoutTests/imported/w3c:
Add interpolation for object-position CSS property
https://bugs.webkit.org/show_bug.cgi?id=223568

Patch by Tim Nguyen <ntim.bugs@gmail.com> on 2021-03-26
Reviewed by Antoine Quint.

  • web-platform-tests/css/css-images/object-position-interpolation.html: Added.

Source/WebCore:
Make the object-position CSS property animatable.
https://bugs.webkit.org/show_bug.cgi?id=223568

Patch by Tim Nguyen <ntim@apple.com> on 2021-03-26
Reviewed by Antoine Quint.

Test: imported/w3c/web-platform-tests/css/css-images/object-position-interpolation.html

  • animation/CSSPropertyAnimation.cpp:

(WebCore::blendFunc):
(WebCore::canInterpolateLengthPoints):
(WebCore::CSSPropertyAnimationWrapperMap::CSSPropertyAnimationWrapperMap):

10:08 AM Changeset in webkit [275103] by Said Abou-Hallawa
  • 17 edits
    1 copy in trunk/Source

Allow logging minimal info about uploading media files in the system diagnose
https://bugs.webkit.org/show_bug.cgi?id=223706

Reviewed by Alex Christensen.

Source/WebCore:

Give the WebKit client the ability to log info about the media files which
were submitted to a web server through an HTMLFormElement.

  • Headers.cmake:
  • WebCore.xcodeproj/project.pbxproj:
  • html/HTMLFormElement.cpp:

(WebCore::HTMLFormElement::submit):

  • loader/EmptyClients.cpp:
  • page/DiagnosticLoggingClient.h:
  • page/DiagnosticLoggingDomain.h: Copied from Source/WebKit/UIProcess/API/APIDiagnosticLoggingClient.h.

Source/WebKit:

Add the new method logDiagnosticMessageWithDomain to the modern ObjC API
WKDiagnosticLoggingDelegate and make it accessible from DiagnosticLoggingClient.

  • Scripts/webkit/messages.py:

(types_that_cannot_be_forward_declared):

  • UIProcess/API/APIDiagnosticLoggingClient.h:

(API::DiagnosticLoggingClient::logDiagnosticMessageWithDomain):

  • UIProcess/API/Cocoa/_WKDiagnosticLoggingDelegate.h:
  • UIProcess/Cocoa/DiagnosticLoggingClient.h:
  • UIProcess/Cocoa/DiagnosticLoggingClient.mm:

(WebKit::DiagnosticLoggingClient::setDelegate):
(WebKit::toWKDiagnosticLoggingDomain):
(WebKit::DiagnosticLoggingClient::logDiagnosticMessageWithDomain):

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::logDiagnosticMessageWithDomain):

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

(WebKit::WebDiagnosticLoggingClient::logDiagnosticMessageWithDomain):

  • WebProcess/WebCoreSupport/WebDiagnosticLoggingClient.h:
9:41 AM Changeset in webkit [275102] by imanol
  • 12 edits
    6 adds in trunk

Implement cachedPropertyValue for WebXR [SameObject] attributes
https://bugs.webkit.org/show_bug.cgi?id=223635

Reviewed by Chris Dumez.

LayoutTests/imported/w3c:

Update WebXR [SameObject] related test expectations.

  • web-platform-tests/webxr/xrRigidTransform_sameObject.https-expected.txt: Added.
  • web-platform-tests/webxr/xrSession_sameObject.https-expected.txt: Added.
  • web-platform-tests/webxr/xrView_sameObject.https-expected.txt: Added.
  • web-platform-tests/webxr/xrViewerPose_views_sameObject.https-expected.txt: Added.

Source/WebCore:

[SameObject] is not currently implemented in WebKit. We need to implement custom getters.

Tested by WebXR WPT.

  • Modules/webxr/WebXRRigidTransform.h:

(WebCore::WebXRRigidTransform::cachedMatrix):

  • Modules/webxr/WebXRRigidTransform.idl:
  • Modules/webxr/WebXRView.h:

(WebCore::WebXRView::cachedProjectionMatrix):

  • Modules/webxr/WebXRView.idl:
  • Modules/webxr/WebXRViewerPose.h:

(WebCore::WebXRViewerPose::cachedViews):

  • Modules/webxr/WebXRViewerPose.idl:
  • Sources.txt:
  • bindings/js/JSWebXRRigidTransformCustom.cpp: Added.

(WebCore::JSWebXRRigidTransform::matrix const):

  • bindings/js/JSWebXRViewCustom.cpp: Added.

(WebCore::JSWebXRView::projectionMatrix const):

  • bindings/js/JSWebXRViewerPoseCustom.cpp: Added.

(WebCore::JSWebXRViewerPose::views const):

LayoutTests:

Update WebXR [SameObject] related test expectations.

  • platform/wpe/TestExpectations:
9:28 AM Changeset in webkit [275101] by jer.noble@apple.com
  • 5 edits in trunk/Source/WebKit

[Cocoa] Enable the UseGPUProcessForMedia preference by default
https://bugs.webkit.org/show_bug.cgi?id=223771

Reviewed by Eric Carlson.

  • FeatureFlags/WebKit-ios.plist:
  • FeatureFlags/WebKit-macos.plist:
  • FeatureFlags/WebKit-appletvos.plist:
  • FeatureFlags/WebKit-watchos.plist:
8:58 AM Changeset in webkit [275100] by Devin Rousso
  • 5 edits in trunk/Source/WebCore

Adopt AVKit SPI for hiding touch bar seeking controls
https://bugs.webkit.org/show_bug.cgi?id=223773
<rdar://problem/68937617>

Reviewed by Jer Noble.

Source/WebCore:

  • platform/mac/WebPlaybackControlsManager.h:
  • platform/mac/WebPlaybackControlsManager.mm:

(-[WebPlaybackControlsManager setSeekableTimeRanges:]):
(-[WebPlaybackControlsManager canBeginTouchBarScrubbing]):
If the list of seekable time ranges is empty, we are unable to seek.

Source/WebCore/PAL:

  • pal/spi/cocoa/AVKitSPI.h:
8:50 AM Changeset in webkit [275099] by calvaris@igalia.com
  • 2 edits in trunk/LayoutTests

Unreviewed.

  • platform/glib/TestExpectations: Unflag

media/encrypted-media/clearKey/clearKey-webm-video-playback-mse.html
and
media/encrypted-media/clearKey/clearKey-session-life-cycle.html

8:47 AM Changeset in webkit [275098] by calvaris@igalia.com
  • 2 edits in trunk/LayoutTests

Unreviewed.

  • platform/gtk/TestExpectations: Unflag

http/tests/security/mixedContent/insecure-audio-video-in-main-frame.html.

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

GraphicsContextGLOpenGL should avoid calling into ANGLE MakeCurrent
https://bugs.webkit.org/show_bug.cgi?id=223511

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

Avoid calling ANGLE MakeCurrent for contexts that are already current. Cache the current context pointer into a
global variable. Currently the code adds no locking. For the forseeable future, ANGLE does not support
simultaneous access from multiple threads.

The optimization can be done when run in WebContent process or in GPU process, but not when in WK1. This is because in WK1,
the 3rd party client may run arbitrary code in WebKit thread. This includes code that changes EAGL or AGL state.
This code might change the current context underneath WebKit. In WK1 mode, we already use "volatile context" feature of
ANGLE to reset the platform context on every EGL command. The command we use for this for normal GL commands is EGL_MakeCurrent.
Makes in-process WebGL faster in MotionMark triangles by 6300 -> 9800 pts
Makes GPU process WebGL faster in MotionMark triangles by 5300 -> 7000 pts

  • platform/graphics/cocoa/GraphicsContextGLOpenGLCocoa.mm:

(WebCore::isCurrentContextPredictable):
(WebCore::InitializeEGLDisplay):
(WebCore::GraphicsContextGLOpenGL::~GraphicsContextGLOpenGL):
(WebCore::GraphicsContextGLOpenGL::makeContextCurrent):
(WebCore::GraphicsContextGLOpenGL::clearCurrentContext):
(WebCore::GraphicsContextGLOpenGL::releaseCurrentContext):
(WebCore::GraphicsContextGLOpenGL::checkGPUStatus):

  • platform/graphics/opengl/GraphicsContextGLOpenGL.h:
8:34 AM Changeset in webkit [275096] by calvaris@igalia.com
  • 2 edits in trunk/LayoutTests

Unreviewed.

  • platform/gtk/TestExpectations: Unflagging

media/track/track-remove-active-cue-crash.html.

8:29 AM Changeset in webkit [275095] by calvaris@igalia.com
  • 2 edits in trunk/LayoutTests

Unreviewed.

  • platform/gtk/TestExpectations: Unflag

http/tests/security/contentSecurityPolicy/upgrade-insecure-requests/upgrade-insecure-audio-video-in-main-frame.html

8:18 AM Changeset in webkit [275094] by calvaris@igalia.com
  • 2 edits in trunk/LayoutTests

Unreviewed.

  • platform/gtk/TestExpectations: Unflagging

mediasource-endofstream-invaliderror.html.

4:18 AM Changeset in webkit [275093] by youenn@apple.com
  • 2 edits in trunk/Source/WebKit

Use webrtc GPU Process feature flag for video capture on MacOS
https://bugs.webkit.org/show_bug.cgi?id=223683

Reviewed by Eric Carlson.

Manually tested.

  • Shared/WebPreferencesDefaultValues.cpp:

(WebKit::defaultCaptureVideoInGPUProcessEnabled):

4:16 AM Changeset in webkit [275092] by graouts@webkit.org
  • 10 edits in trunk

Fix interpolation of the caret-color CSS property
https://bugs.webkit.org/show_bug.cgi?id=223181
<rdar://problem/75687413>

Reviewed by Antti Koivisto.

LayoutTests/imported/w3c:

Add 64 PASS results for the caret-color interpolation test which now is passing completely.
The test css/css-ui/caret-color-021.html also progresses.

  • web-platform-tests/css/css-ui/animation/caret-color-interpolation-expected.txt:
  • web-platform-tests/css/css-ui/caret-color-021-expected.txt:

Source/WebCore:

Add support for the "auto" value for the "caret-color" CSS property. That value
is its initial value. We support it with a new boolean flag on StyleRareInheritedData
which we reset to false when setCaretColor() or setVisitedLinkCaretColor() is called.

Then, we can blend this property with the new CaretColorPropertyWrapper wrapper which is
required to correctly get and set the "auto" bit.

  • animation/CSSPropertyAnimation.cpp:

(WebCore::CSSPropertyAnimationWrapperMap::CSSPropertyAnimationWrapperMap):

  • css/CSSProperties.json: We can remove the initial value key since this property is entirely

custom.

  • rendering/style/RenderStyle.h:

(WebCore::RenderStyle::setCaretColor):
(WebCore::RenderStyle::setHasAutoCaretColor):
(WebCore::RenderStyle::setVisitedLinkCaretColor):
(WebCore::RenderStyle::setHasVisitedLinkAutoCaretColor):
(WebCore::RenderStyle::hasAutoCaretColor const):
(WebCore::RenderStyle::hasVisitedLinkAutoCaretColor const):

  • rendering/style/StyleRareInheritedData.cpp:

(WebCore::StyleRareInheritedData::StyleRareInheritedData):
(WebCore::StyleRareInheritedData::operator== const):

  • rendering/style/StyleRareInheritedData.h:
  • style/StyleBuilderCustom.h:

(WebCore::Style::BuilderCustom::applyInitialCaretColor):
(WebCore::Style::BuilderCustom::applyInheritCaretColor):
(WebCore::Style::BuilderCustom::applyValueCaretColor):

4:07 AM Changeset in webkit [275091] by commit-queue@webkit.org
  • 5 edits
    1 add in trunk

Fix NowPlayingInfoArtwork operator== logic.
https://bugs.webkit.org/show_bug.cgi?id=223730
<rdar://problem/75822687>

Patch by Jean-Yves Avenard <Jean-Yves Avenard> on 2021-03-26
Reviewed by Youenn Fablet.

Source/WebCore:

Gtest NowPlayingInfoArtworkTest added .

  • platform/audio/NowPlayingInfo.h:

(WebCore::NowPlayingInfoArtwork::operator== const):
(WebCore::NowPlayingInfoArtwork::operator!= const):

Tools:

  • TestWebKitAPI/CMakeLists.txt:
  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/WebCore/NowPlayingInfoTests.cpp: Added.

(TestWebKitAPI::testEmptyArtwork):
(TestWebKitAPI::TEST):

3:50 AM Changeset in webkit [275090] by Carlos Garcia Campos
  • 1 copy in releases/WebKitGTK/webkit-2.32.0

WebKitGTK 2.32.0

3:49 AM Changeset in webkit [275089] by Carlos Garcia Campos
  • 4 edits in releases/WebKitGTK/webkit-2.32

Unreviewed. Update OptionsGTK.cmake and NEWS for 2.32.0 release

.:

  • Source/cmake/OptionsGTK.cmake: Bump version numbers.

Source/WebKit:

  • gtk/NEWS: Add release notes for 2.32.0
3:28 AM Changeset in webkit [275088] by dino@apple.com
  • 12 edits
    1 delete in trunk

Enable Metal ANGLE backend for WebGL
https://bugs.webkit.org/show_bug.cgi?id=220076
<rdar://problem/72565020>

Reviewed by Sam Weinig.

Source/WTF:

Turn the Metal backend for ANGLE on, moving the feature
from Internal to Experimental.

  • Scripts/Preferences/WebPreferencesExperimental.yaml:
  • Scripts/Preferences/WebPreferencesInternal.yaml:

LayoutTests:

Updated results for WebGL 2 content with the Metal ANGLE
backend. See https://bugs.webkit.org/show_bug.cgi?id=222239

  • platform/mac/TestExpectations:
  • platform/ios-simulator-wk2/TestExpectations:
  • platform/ios-simulator/TestExpectations:
  • platform/ios-wk2/TestExpectations:
  • platform/ios/TestExpectations:
  • platform/mac/TestExpectations:
  • platform/wk2/TestExpectations:
3:16 AM Changeset in webkit [275087] by commit-queue@webkit.org
  • 3 edits
    2 adds in trunk

Remove ASSERT in RenderListItem::computeMarkerStyle
https://bugs.webkit.org/show_bug.cgi?id=222670

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

Source/WebCore:

Remove ASSERT in RenderListItem::computeMarkerStyle
since ::marker does not apply to all elements so
getCachedPseudoStyle can return null.

Test: fast/lists/list-item-compute-marker-style-crash.xhtml

  • rendering/RenderListItem.cpp:

(WebCore::RenderListItem::computeMarkerStyle const):

LayoutTests:

  • fast/lists/list-item-compute-marker-style-crash-expected.txt: Added.
  • fast/lists/list-item-compute-marker-style-crash.xhtml: Added.
2:42 AM Changeset in webkit [275086] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.32/Source/WebCore

Merge r275085 - REGRESSION(r272301): [SOUP] default port attribute when persisting credential information with libsecret
https://bugs.webkit.org/show_bug.cgi?id=223782

Reviewed by Adrian Perez de Castro.

Use the default port instead of 0 when the URL omits the port.

  • platform/network/soup/AuthenticationChallengeSoup.cpp:

(WebCore::protectionSpaceFromSoupAuthAndURL):

2:37 AM Changeset in webkit [275085] by Carlos Garcia Campos
  • 2 edits in trunk/Source/WebCore

REGRESSION(r272301): [SOUP] default port attribute when persisting credential information with libsecret
https://bugs.webkit.org/show_bug.cgi?id=223782

Reviewed by Adrian Perez de Castro.

Use the default port instead of 0 when the URL omits the port.

  • platform/network/soup/AuthenticationChallengeSoup.cpp:

(WebCore::protectionSpaceFromSoupAuthAndURL):

2:25 AM Changeset in webkit [275084] by ysuzuki@apple.com
  • 5 edits in trunk/Source/WebCore

Use ICUDeleter to encode ucnv_close/uenum_close call into type of deleter of std::unique_ptr
https://bugs.webkit.org/show_bug.cgi?id=223503

Reviewed by Alex Christensen.

Use ICUDeleter<ucnv_close> instead of holding ucnv_close pointer in ICUConverterPtr.
This deleter encodes ucnv_close calls into type so that we do not need to hold a pointer
to ucnv_close.

We also use ICUDeleter<uenum_close> in place where we use UEnumeration.

  • Modules/applepay/PaymentRequestValidator.mm:

(WebCore::validateCurrencyCode):

  • platform/text/EncodingTables.cpp:

(WebCore::jis0208):
(WebCore::jis0212):
(WebCore::big5):
(WebCore::eucKR):
(WebCore::gb18030):

  • platform/text/TextCodecICU.cpp:

(WebCore::TextCodecICU::createICUConverter const):

  • platform/text/TextCodecICU.h:
1:08 AM Changeset in webkit [275083] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.32/Source/WebCore

[GTK][WPE] Wrong frame scrolled when view is horizontally scrolled with async scrolling enabled
https://bugs.webkit.org/show_bug.cgi?id=222900

Patch by Alejandro G. Castro <alex@igalia.com> on 2021-03-26
Reviewed by Carlos Garcia Campos.

We need to use the scrolling offset in the parent when collecting
the descendant layers at a point. We substract the boundsOrigin to
make sure we transform the point considering the scrolling offset.

  • page/scrolling/nicosia/ScrollingTreeNicosia.cpp:

(WebCore::collectDescendantLayersAtPoint):

12:54 AM BuildingCairoOnWindows edited by Fujii Hironori
(diff)
12:14 AM BuildingCairoOnWindows edited by Fujii Hironori
(diff)
12:02 AM Changeset in webkit [275082] by commit-queue@webkit.org
  • 37 edits in trunk/Source

Update the BEFORE/SINCE, SYSTEM_VERSION_PREFIX, and MACOSX_DEPLOYMENT_TARGET flags
https://bugs.webkit.org/show_bug.cgi?id=223779

Patch by Jessie Berlin <jberlin@webkit.org> on 2021-03-26
Reviewed by Tim Horton.

  • Configurations/DebugRelease.xcconfig:

Source/JavaScriptCore:

  • Configurations/Version.xcconfig:
  • Configurations/WebKitTargetConditionals.xcconfig:

Source/ThirdParty/ANGLE:

  • Configurations/Version.xcconfig:
  • Configurations/WebKitTargetConditionals.xcconfig:

Source/ThirdParty/libwebrtc:

  • Configurations/Version.xcconfig:
  • Configurations/WebKitTargetConditionals.xcconfig:

Source/WebCore:

  • Configurations/Version.xcconfig:
  • Configurations/WebCore.xcconfig:
  • Configurations/WebKitTargetConditionals.xcconfig:

Source/WebCore/PAL:

  • Configurations/Version.xcconfig:
  • Configurations/WebKitTargetConditionals.xcconfig:

Source/WebInspectorUI:

  • Configurations/Version.xcconfig:

Source/WebKit:

  • Configurations/Version.xcconfig:
  • Configurations/WebKit.xcconfig:
  • Configurations/WebKitTargetConditionals.xcconfig:

Source/WebKitLegacy/mac:

  • Configurations/Version.xcconfig:
  • Configurations/WebKitTargetConditionals.xcconfig:
Note: See TracTimeline for information about the timeline view.