2019-04-18 23:20:26 +00:00
|
|
|
set(WebCore_PRIVATE_FRAMEWORK_HEADERS
|
2020-10-02 16:39:47 +00:00
|
|
|
Modules/airplay/PlaybackTargetClientContextIdentifier.h
|
|
|
|
|
2019-04-18 23:20:26 +00:00
|
|
|
Modules/applepay/ApplePaySessionPaymentRequest.h
|
|
|
|
Modules/applepay/Payment.h
|
|
|
|
Modules/applepay/PaymentAuthorizationStatus.h
|
|
|
|
Modules/applepay/PaymentContact.h
|
|
|
|
Modules/applepay/PaymentCoordinator.h
|
|
|
|
Modules/applepay/PaymentCoordinatorClient.h
|
|
|
|
Modules/applepay/PaymentHeaders.h
|
|
|
|
Modules/applepay/PaymentMerchantSession.h
|
|
|
|
Modules/applepay/PaymentMethod.h
|
|
|
|
|
|
|
|
Modules/applicationmanifest/ApplicationManifest.h
|
|
|
|
Modules/applicationmanifest/ApplicationManifestParser.h
|
|
|
|
|
|
|
|
Modules/cache/CacheQueryOptions.h
|
|
|
|
Modules/cache/CacheStorageConnection.h
|
|
|
|
Modules/cache/DOMCacheEngine.h
|
2020-03-27 16:11:20 +00:00
|
|
|
Modules/cache/RetrieveRecordsOptions.h
|
2019-04-18 23:20:26 +00:00
|
|
|
|
2020-10-23 01:32:09 +00:00
|
|
|
Modules/contact-picker/ContactInfo.h
|
|
|
|
Modules/contact-picker/ContactProperty.h
|
|
|
|
Modules/contact-picker/ContactsRequestData.h
|
|
|
|
|
2019-04-18 23:20:26 +00:00
|
|
|
Modules/encryptedmedia/CDMClient.h
|
2021-02-09 12:46:22 +00:00
|
|
|
Modules/encryptedmedia/MediaKeySystemClient.h
|
|
|
|
Modules/encryptedmedia/MediaKeySystemController.h
|
|
|
|
Modules/encryptedmedia/MediaKeySystemRequest.h
|
2021-08-21 18:15:15 +00:00
|
|
|
Modules/encryptedmedia/MediaKeySystemRequestIdentifier.h
|
2019-04-18 23:20:26 +00:00
|
|
|
|
|
|
|
Modules/fetch/FetchBodyConsumer.h
|
|
|
|
Modules/fetch/FetchBodySource.h
|
JS Modules in Workers
https://bugs.webkit.org/show_bug.cgi?id=164860
Reviewed by Saam Barati.
LayoutTests/imported/w3c:
Some of worklet failures in WPT is because,
1. Previously, worklet does not support module. These tests are passing incorrectly when modules are not supported.
Now, modules are supported, and some edge features are missing, so start failing
2. WPT is using www1.localhost in some tests (CSP tests), and this is not supported in WebKit's WPT testing. So failing incorrectly.
* web-platform-tests/html/semantics/scripting-1/the-script-element/json-module/non-object.tentative.any.worker-expected.txt:
* web-platform-tests/html/semantics/scripting-1/the-script-element/microtasks/checkpoint-after-workerglobalscope-onerror-module-expected.txt:
* web-platform-tests/html/semantics/scripting-1/the-script-element/module/dynamic-import/alpha/base-url-worker-importScripts-expected.txt:
* web-platform-tests/html/semantics/scripting-1/the-script-element/module/dynamic-import/alpha/base-url-worker.sub-expected.txt:
* web-platform-tests/html/semantics/scripting-1/the-script-element/module/evaluation-order-1-nothrow-worker-expected.txt:
* web-platform-tests/html/semantics/scripting-1/the-script-element/module/evaluation-order-1-worker-expected.txt:
* web-platform-tests/html/semantics/scripting-1/the-script-element/module/evaluation-order-2-import-worker-expected.txt:
* web-platform-tests/html/semantics/scripting-1/the-script-element/module/evaluation-order-3-dynamic-worker-expected.txt:
* web-platform-tests/service-workers/service-worker/import-module-scripts.https-expected.txt:
* web-platform-tests/workers/baseurl/alpha/import-in-moduleworker-expected.txt:
* web-platform-tests/workers/baseurl/alpha/importScripts-in-worker-expected.txt:
* web-platform-tests/workers/baseurl/alpha/xhr-in-moduleworker-expected.txt:
* web-platform-tests/workers/baseurl/alpha/xhr-in-worker-expected.txt:
* web-platform-tests/workers/constructors/Worker/same-origin-expected.txt:
* web-platform-tests/workers/interfaces/WorkerGlobalScope/location/redirect-expected.txt:
* web-platform-tests/workers/interfaces/WorkerGlobalScope/location/redirect-module-expected.txt:
* web-platform-tests/workers/modules/dedicated-worker-import-blob-url.any-expected.txt:
* web-platform-tests/workers/modules/dedicated-worker-import-csp-expected.txt:
* web-platform-tests/workers/modules/dedicated-worker-import-failure-expected.txt:
* web-platform-tests/workers/modules/dedicated-worker-import-meta-expected.txt:
* web-platform-tests/workers/modules/dedicated-worker-import-meta.html:
* web-platform-tests/workers/modules/dedicated-worker-import-referrer-expected.txt:
* web-platform-tests/workers/modules/dedicated-worker-import.any-expected.txt:
* web-platform-tests/workers/modules/dedicated-worker-options-type-expected.txt:
* web-platform-tests/workers/modules/dedicated-worker-parse-error-failure-expected.txt:
* web-platform-tests/workers/name-property-expected.txt:
* web-platform-tests/worklets/audio-worklet-credentials.https-expected.txt:
* web-platform-tests/worklets/audio-worklet-csp.https-expected.txt:
* web-platform-tests/worklets/audio-worklet-import.https-expected.txt:
* web-platform-tests/worklets/audio-worklet-referrer.https-expected.txt:
* web-platform-tests/xhr/open-url-redirected-worker-origin-expected.txt:
Source/JavaScriptCore:
Add error information to extract this in WebCore's module loader.
Currently, we are using Promise pipeline, and this makes it a bit difficult to extract error information.
This error information attached in this patch allows us to extract SyntaxError in WebCore, and throwing
JS SyntaxError instead of AbortError.
We are planning to update our module pipieline not using Promises in the future. The current design derived
from the original module loader pipeline where using Promises is critical. But now, that proposal was abandoned,
so we can just simplify the module loader.
* runtime/AggregateError.cpp:
(JSC::AggregateError::AggregateError):
* runtime/Error.cpp:
(JSC::createError):
(JSC::createEvalError):
(JSC::createRangeError):
(JSC::createReferenceError):
(JSC::createSyntaxError):
(JSC::createTypeError):
(JSC::createURIError):
(JSC::createGetterTypeError):
(JSC::throwSyntaxError):
* runtime/Error.h:
* runtime/ErrorConstructor.cpp:
(JSC::JSC_DEFINE_HOST_FUNCTION):
* runtime/ErrorInstance.cpp:
(JSC::ErrorInstance::ErrorInstance):
(JSC::ErrorInstance::create):
(JSC::ErrorInstance::sanitizedMessageString):
(JSC::ErrorInstance::sanitizedNameString):
(JSC::ErrorInstance::sanitizedToString):
* runtime/ErrorInstance.h:
(JSC::ErrorInstance::create):
(JSC::ErrorInstance::errorType const):
* runtime/JSGlobalObjectFunctions.cpp:
(JSC::JSC_DEFINE_HOST_FUNCTION):
* runtime/NativeErrorConstructor.cpp:
(JSC::NativeErrorConstructor<errorType>::constructImpl):
(JSC::NativeErrorConstructor<errorType>::callImpl):
* runtime/NullSetterFunction.cpp:
(JSC::NullSetterFunctionInternal::JSC_DEFINE_HOST_FUNCTION):
* wasm/js/JSWebAssemblyCompileError.cpp:
(JSC::JSWebAssemblyCompileError::JSWebAssemblyCompileError):
* wasm/js/JSWebAssemblyLinkError.cpp:
(JSC::JSWebAssemblyLinkError::JSWebAssemblyLinkError):
* wasm/js/JSWebAssemblyRuntimeError.cpp:
(JSC::JSWebAssemblyRuntimeError::JSWebAssemblyRuntimeError):
* wasm/js/WebAssemblyCompileErrorConstructor.cpp:
(JSC::JSC_DEFINE_HOST_FUNCTION):
* wasm/js/WebAssemblyLinkErrorConstructor.cpp:
(JSC::JSC_DEFINE_HOST_FUNCTION):
* wasm/js/WebAssemblyRuntimeErrorConstructor.cpp:
(JSC::JSC_DEFINE_HOST_FUNCTION):
Source/WebCore:
This patch implements JS modules in Workers and Worklets. We are not supporting modules in ServiceWorkers' initialization yet.
But service-worker can import modules via JS `import()`.
The worker can be executed as a module if we pass, `type: "module"` to worker options. Worklet is executed as modules by default.
1. In Worker, we first fetch the initial code. And then, analyze the dependencies and load subsequent modules.
We iterate run-loop to load all the dependent modules in the module loader. At that time, we annotate run-loop tasks with
special taskMode to iterate tasks with this taskMode. This prevents us from discarding different tasks in this run-loop driving
phase. (e.g. postMessage can be called from the main thread while loading module graph, in that case, we should not discard this
task.)
2. In Worklet, we just request module loading to ScriptModuleLoader, and run it after loading module graph. This is OK since worklet
thread is already running. So we can just request modules and worklet thread automatically drives module loading via run-loop.
* Headers.cmake:
* Modules/webaudio/AudioWorkletGlobalScope.h:
(WebCore::AudioWorkletGlobalScope::currentFrame const): Deleted.
(WebCore::AudioWorkletGlobalScope::sampleRate const): Deleted.
(WebCore::AudioWorkletGlobalScope::currentTime const): Deleted.
* Sources.txt:
* WebCore.xcodeproj/project.pbxproj:
* bindings/js/CachedModuleScriptLoader.cpp:
(WebCore::CachedModuleScriptLoader::create):
(WebCore::CachedModuleScriptLoader::CachedModuleScriptLoader):
(WebCore::CachedModuleScriptLoader::load):
(WebCore::CachedModuleScriptLoader::notifyFinished):
* bindings/js/CachedModuleScriptLoader.h:
* bindings/js/CachedScriptFetcher.cpp:
* bindings/js/JSDOMExceptionHandling.cpp:
(WebCore::retrieveErrorMessageWithoutName):
(WebCore::createDOMException):
* bindings/js/JSDOMExceptionHandling.h:
* bindings/js/JSDOMGlobalObject.cpp:
(WebCore::scriptModuleLoader):
(WebCore::JSDOMGlobalObject::moduleLoaderResolve):
(WebCore::JSDOMGlobalObject::moduleLoaderFetch):
(WebCore::JSDOMGlobalObject::moduleLoaderEvaluate):
(WebCore::JSDOMGlobalObject::moduleLoaderImportModule):
(WebCore::JSDOMGlobalObject::moduleLoaderCreateImportMetaProperties):
* bindings/js/JSDOMGlobalObject.h:
* bindings/js/JSDOMWindowBase.cpp:
(WebCore::JSDOMWindowBase::moduleLoaderResolve): Deleted.
(WebCore::JSDOMWindowBase::moduleLoaderFetch): Deleted.
(WebCore::JSDOMWindowBase::moduleLoaderEvaluate): Deleted.
(WebCore::JSDOMWindowBase::moduleLoaderImportModule): Deleted.
(WebCore::JSDOMWindowBase::moduleLoaderCreateImportMetaProperties): Deleted.
* bindings/js/JSDOMWindowBase.h:
* bindings/js/JSWorkerGlobalScopeBase.cpp:
* bindings/js/JSWorkletGlobalScopeBase.cpp:
* bindings/js/ModuleScriptLoader.h: Copied from Source/WebCore/dom/ModuleFetchParameters.h.
(WebCore::ModuleScriptLoader::clearClient):
(WebCore::ModuleScriptLoader::scriptFetcher):
(WebCore::ModuleScriptLoader::parameters):
(WebCore::ModuleScriptLoader::ModuleScriptLoader):
* bindings/js/ModuleScriptLoaderClient.h: Renamed from Source/WebCore/bindings/js/CachedModuleScriptLoaderClient.h.
* bindings/js/ScriptModuleLoader.cpp:
(WebCore::ScriptModuleLoader::ScriptModuleLoader):
(WebCore::resolveModuleSpecifier):
(WebCore::ScriptModuleLoader::resolve):
(WebCore::ScriptModuleLoader::fetch):
(WebCore::ScriptModuleLoader::moduleURL):
(WebCore::ScriptModuleLoader::responseURLFromRequestURL):
(WebCore::ScriptModuleLoader::evaluate):
(WebCore::ScriptModuleLoader::importModule):
(WebCore::ScriptModuleLoader::notifyFinished):
* bindings/js/ScriptModuleLoader.h:
* bindings/js/ScriptSourceCode.h:
(WebCore::ScriptSourceCode::ScriptSourceCode):
* bindings/js/WorkerModuleScriptLoader.cpp: Added.
(WebCore::WorkerModuleScriptLoader::create):
(WebCore::WorkerModuleScriptLoader::WorkerModuleScriptLoader):
(WebCore::WorkerModuleScriptLoader::~WorkerModuleScriptLoader):
(WebCore::WorkerModuleScriptLoader::load):
(WebCore::WorkerModuleScriptLoader::referrerPolicy):
(WebCore::WorkerModuleScriptLoader::notifyFinished):
(WebCore::WorkerModuleScriptLoader::taskMode):
* bindings/js/WorkerModuleScriptLoader.h: Copied from Source/WebCore/dom/ModuleFetchParameters.h.
* bindings/js/WorkerScriptFetcher.h: Added.
* dom/Document.cpp:
* dom/ExceptionCode.h:
* dom/LoadableModuleScript.cpp:
(WebCore::LoadableModuleScript::LoadableModuleScript):
(WebCore::LoadableModuleScript::load): Deleted.
* dom/LoadableModuleScript.h:
* dom/ModuleFetchParameters.h:
(WebCore::ModuleFetchParameters::create):
(WebCore::ModuleFetchParameters::isTopLevelModule const):
(WebCore::ModuleFetchParameters::ModuleFetchParameters):
* dom/ScriptElement.cpp:
(WebCore::ScriptElement::requestModuleScript):
* loader/ThreadableLoader.cpp:
(WebCore::ThreadableLoader::create):
* loader/ThreadableLoader.h:
(WebCore::ThreadableLoader::create):
* workers/DedicatedWorkerGlobalScope.h:
* workers/Worker.cpp:
(WebCore::Worker::Worker):
(WebCore::Worker::create):
(WebCore::Worker::notifyFinished):
* workers/Worker.h:
* workers/Worker.idl:
* workers/WorkerGlobalScope.cpp:
(WebCore::WorkerGlobalScope::WorkerGlobalScope):
(WebCore::WorkerGlobalScope::importScripts):
* workers/WorkerGlobalScope.h:
(WebCore::WorkerGlobalScope::credentials const):
* workers/WorkerGlobalScopeProxy.h:
* workers/WorkerMessagingProxy.cpp:
(WebCore::WorkerMessagingProxy::startWorkerGlobalScope):
* workers/WorkerMessagingProxy.h:
* workers/WorkerOrWorkletGlobalScope.cpp:
(WebCore::WorkerOrWorkletGlobalScope::WorkerOrWorkletGlobalScope):
* workers/WorkerOrWorkletGlobalScope.h:
(WebCore::WorkerOrWorkletGlobalScope::moduleLoader):
* workers/WorkerOrWorkletScriptController.cpp:
(WebCore::jsValueToModuleKey):
(WebCore::WorkerOrWorkletScriptController::evaluateModule):
(WebCore::WorkerOrWorkletScriptController::loadModuleSynchronously):
(WebCore::WorkerOrWorkletScriptController::linkAndEvaluateModule):
(WebCore::WorkerOrWorkletScriptController::loadAndEvaluateModule):
* workers/WorkerOrWorkletScriptController.h:
* workers/WorkerScriptLoader.cpp:
(WebCore::WorkerScriptLoader::loadAsynchronously):
(WebCore::WorkerScriptLoader::didReceiveResponse):
* workers/WorkerScriptLoader.h:
(WebCore::WorkerScriptLoader::responseSource const):
(WebCore::WorkerScriptLoader::isRedirected const):
* workers/WorkerThread.cpp:
(WebCore::WorkerParameters::isolatedCopy const):
(WebCore::WorkerThread::evaluateScriptIfNecessary):
* workers/WorkerThread.h:
* workers/WorkerType.h:
* workers/service/ServiceWorkerContainer.h:
* workers/service/ServiceWorkerGlobalScope.h:
* workers/service/ServiceWorkerJob.cpp:
(WebCore::ServiceWorkerJob::fetchScriptWithContext):
* workers/service/ServiceWorkerRegistrationOptions.h:
* workers/service/context/ServiceWorkerThread.cpp:
(WebCore::ServiceWorkerThread::ServiceWorkerThread):
* workers/service/server/SWServerWorker.h:
* worklets/PaintWorkletGlobalScope.h:
(WebCore::PaintWorkletGlobalScope::paintDefinitionMap): Deleted.
(WebCore::PaintWorkletGlobalScope::paintDefinitionLock): Deleted.
(WebCore::PaintWorkletGlobalScope::~PaintWorkletGlobalScope): Deleted.
* worklets/WorkletGlobalScope.cpp:
(WebCore::WorkletGlobalScope::fetchAndInvokeScript):
(WebCore::WorkletGlobalScope::processNextScriptFetchJobIfNeeded): Deleted.
(WebCore::WorkletGlobalScope::didReceiveResponse): Deleted.
(WebCore::WorkletGlobalScope::notifyFinished): Deleted.
(WebCore::WorkletGlobalScope::didCompleteScriptFetchJob): Deleted.
* worklets/WorkletGlobalScope.h:
LayoutTests:
* TestExpectations:
* http/tests/security/contentSecurityPolicy/1.1/module-scriptnonce-redirect-expected.txt:
* http/tests/subresource-integrity/sri-module-expected.txt:
* webaudio/audioworklet-addModule-failure-expected.txt:
* webaudio/worklet-crash-expected.txt:
Canonical link: https://commits.webkit.org/234389@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@273203 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2021-02-20 20:28:27 +00:00
|
|
|
Modules/fetch/FetchRequestCredentials.h
|
2019-04-18 23:20:26 +00:00
|
|
|
Modules/fetch/FetchHeaders.h
|
|
|
|
Modules/fetch/FetchIdentifier.h
|
|
|
|
Modules/fetch/FetchLoader.h
|
|
|
|
Modules/fetch/FetchLoaderClient.h
|
|
|
|
|
|
|
|
Modules/geolocation/Geolocation.h
|
|
|
|
Modules/geolocation/GeolocationClient.h
|
|
|
|
Modules/geolocation/GeolocationController.h
|
2019-08-23 20:58:49 +00:00
|
|
|
Modules/geolocation/GeolocationCoordinates.h
|
2019-04-18 23:20:26 +00:00
|
|
|
Modules/geolocation/GeolocationError.h
|
|
|
|
Modules/geolocation/GeolocationPosition.h
|
2019-08-23 20:58:49 +00:00
|
|
|
Modules/geolocation/GeolocationPositionData.h
|
|
|
|
Modules/geolocation/GeolocationPositionError.h
|
2019-04-18 23:20:26 +00:00
|
|
|
Modules/geolocation/PositionCallback.h
|
|
|
|
Modules/geolocation/PositionErrorCallback.h
|
|
|
|
Modules/geolocation/PositionOptions.h
|
|
|
|
|
2021-02-16 21:44:30 +00:00
|
|
|
Modules/highlight/AppHighlight.h
|
2020-12-02 20:09:26 +00:00
|
|
|
Modules/highlight/Highlight.h
|
|
|
|
Modules/highlight/HighlightRegister.h
|
2021-05-04 08:00:03 +00:00
|
|
|
Modules/highlight/HighlightVisibility.h
|
2020-12-02 20:09:26 +00:00
|
|
|
|
2019-04-18 23:20:26 +00:00
|
|
|
Modules/indexeddb/IDBActiveDOMObject.h
|
|
|
|
Modules/indexeddb/IDBDatabaseIdentifier.h
|
2020-06-17 16:51:42 +00:00
|
|
|
Modules/indexeddb/IDBDatabaseNameAndVersionRequest.h
|
2019-04-18 23:20:26 +00:00
|
|
|
Modules/indexeddb/IDBGetAllResult.h
|
|
|
|
Modules/indexeddb/IDBGetResult.h
|
|
|
|
Modules/indexeddb/IDBKey.h
|
|
|
|
Modules/indexeddb/IDBKeyData.h
|
|
|
|
Modules/indexeddb/IDBKeyPath.h
|
|
|
|
Modules/indexeddb/IDBKeyRange.h
|
|
|
|
Modules/indexeddb/IDBKeyRangeData.h
|
|
|
|
Modules/indexeddb/IDBOpenDBRequest.h
|
|
|
|
Modules/indexeddb/IDBRequest.h
|
|
|
|
Modules/indexeddb/IDBTransaction.h
|
2021-07-29 04:04:18 +00:00
|
|
|
Modules/indexeddb/IDBTransactionDurability.h
|
2019-04-18 23:20:26 +00:00
|
|
|
Modules/indexeddb/IDBTransactionMode.h
|
|
|
|
Modules/indexeddb/IDBValue.h
|
|
|
|
Modules/indexeddb/IndexedDB.h
|
|
|
|
|
|
|
|
Modules/indexeddb/client/IDBConnectionProxy.h
|
|
|
|
Modules/indexeddb/client/IDBConnectionToServer.h
|
|
|
|
Modules/indexeddb/client/IDBConnectionToServerDelegate.h
|
|
|
|
Modules/indexeddb/client/TransactionOperation.h
|
|
|
|
|
|
|
|
Modules/indexeddb/server/IDBBackingStore.h
|
|
|
|
Modules/indexeddb/server/IDBConnectionToClient.h
|
|
|
|
Modules/indexeddb/server/IDBConnectionToClientDelegate.h
|
|
|
|
Modules/indexeddb/server/IDBServer.h
|
|
|
|
Modules/indexeddb/server/ServerOpenDBRequest.h
|
|
|
|
Modules/indexeddb/server/UniqueIDBDatabase.h
|
|
|
|
Modules/indexeddb/server/UniqueIDBDatabaseConnection.h
|
|
|
|
Modules/indexeddb/server/UniqueIDBDatabaseTransaction.h
|
|
|
|
|
2020-05-12 00:38:17 +00:00
|
|
|
Modules/indexeddb/shared/IndexKey.h
|
2019-04-18 23:20:26 +00:00
|
|
|
Modules/indexeddb/shared/IDBCursorInfo.h
|
IndexedDB: prefetch cursor records on client side
https://bugs.webkit.org/show_bug.cgi?id=207602
<rdar://problem/58483927>
Reviewed by Brady Eidson.
Cache cursor records on client side and use those records for iterate operations.
This makes cursor continue/advance tests in PerformanceTests/IndexedDB/basics ~3x faster.
* Headers.cmake:
* Modules/indexeddb/IDBCursor.cpp:
(WebCore::IDBCursor::setGetResult): Record the ID of TransactionOperation that updates cached record.
(WebCore::IDBCursor::iterateWithPrefetchedRecords): IDBCursor uses cached records for iterate opertaions if
there is no write operation between last cached records update and current iteration operation.
(WebCore::IDBCursor::clearPrefetchedRecords):
* Modules/indexeddb/IDBCursor.h:
* Modules/indexeddb/IDBGetResult.cpp:
(WebCore::IDBGetResult::isolatedCopy):
* Modules/indexeddb/IDBGetResult.h:
(WebCore::IDBGetResult::IDBGetResult):
(WebCore::IDBGetResult::prefetchedRecords const):
(WebCore::IDBGetResult::encode const):
(WebCore::IDBGetResult::decode):
* Modules/indexeddb/IDBRequest.cpp: Record corresponding TransactionOperation ID in request.
(WebCore::IDBRequest::didOpenOrIterateCursor):
* Modules/indexeddb/IDBRequest.h:
(WebCore::IDBRequest::pendingCursor const):
(WebCore::IDBRequest::setTransactionOperationID):
* Modules/indexeddb/IDBTransaction.cpp: If a cursor iterate request can be handled with cached records,
IDBClient does not need to send request to IDBServer and wait for response. But requests before that iterate
request may need to wait server to answer, and spec requires to handle requests in order. Therefore, we now keep
all the results in m_transactionOperationResultMap and handle them according to the ordering in
m_transactionOperationsInProgressQueue.
(WebCore::IDBTransaction::abortInProgressOperations):
(WebCore::IDBTransaction::removeRequest): Because result of a cursor request can be answered sooner, it is
possible that in finishedDispatchEventForRequest, m_currentlyCompletingRequest (which is a cursor request) is
set to nullptr, and then it is set back to the same cursor request in handleOperationsCompletedOnServer right
after. This happens in dispatchEvent of the cursor request, where request would remove itself from request list
of transaction at the end.
In this case, when request list becomes empty, transaction may commit automatically. But transaction should not
because that request is still valid as m_currentlyCompletingRequest and should not be removed from list.
(WebCore::IDBTransaction::scheduleOperation):
(WebCore::IDBTransaction::operationCompletedOnServer):
(WebCore::IDBTransaction::handleOperationsCompletedOnServer): All requests were sent to IDBServer and the
response/result ordering would naturally be the same as request order. Now that results can be created in both
IDBClient and IDBServer, we no longer handle requests using m_completedOnServerQueue.
(WebCore::IDBTransaction::createObjectStore): Mark as write operation to track last write operation.
(WebCore::IDBTransaction::renameObjectStore): Ditto.
(WebCore::IDBTransaction::createIndex): Ditto.
(WebCore::IDBTransaction::renameIndex): Ditto.
(WebCore::IDBTransaction::requestDeleteRecord): Ditto.
(WebCore::IDBTransaction::requestClearObjectStore): Ditto.
(WebCore::IDBTransaction::requestPutOrAdd): Ditto.
(WebCore::IDBTransaction::deleteObjectStore): Ditto.
(WebCore::IDBTransaction::deleteIndex): Ditto.
(WebCore::IDBTransaction::iterateCursorOnServer): Only use cached records if the request does not specify target
key. If cursor is iterated successfully with cache, send a message to IDBServer to notify about the progress.
Otherwise, fall back to depend on IDBServer to answer the request.
(WebCore::IDBTransaction::generateOperationID): TransactionOperation ID is unique in a transaction.
* Modules/indexeddb/IDBTransaction.h:
* Modules/indexeddb/IndexedDB.h:
* Modules/indexeddb/client/IDBConnectionProxy.cpp:
(WebCore::IDBClient::IDBConnectionProxy::iterateCursor): Don't track result of TransactionOperation in
IDBConnectionProxy if TransactionOperation does not need a reply from IDBServer.
* Modules/indexeddb/client/TransactionOperation.cpp:
(WebCore::IDBClient::TransactionOperation::TransactionOperation):
* Modules/indexeddb/client/TransactionOperation.h: Add ID to TransactionOperation.
(WebCore::IDBClient::TransactionOperation::operationID const):
(WebCore::IDBClient::TransactionOperation::TransactionOperation):
* Modules/indexeddb/server/IDBBackingStore.h: remove prefetchCursor as it is not used now.
* Modules/indexeddb/server/MemoryIDBBackingStore.h: Ditto. Also this patch only deals with prefetching in
persistent store.
* Modules/indexeddb/server/MemoryIDBBackingStore.h:
* Modules/indexeddb/server/SQLiteIDBBackingStore.cpp:
(WebCore::IDBServer::SQLiteIDBBackingStore::createIndex):
(WebCore::IDBServer::SQLiteIDBBackingStore::getAllIndexRecords):
(WebCore::IDBServer::SQLiteIDBBackingStore::getIndexRecord):
(WebCore::IDBServer::SQLiteIDBBackingStore::iterateCursor): Only prefetch at when request needs to be answered.
(WebCore::IDBServer::SQLiteIDBBackingStore::prefetchCursor): Deleted.
* Modules/indexeddb/server/SQLiteIDBBackingStore.h:
* Modules/indexeddb/server/SQLiteIDBCursor.cpp:
(WebCore::IDBServer::SQLiteIDBCursor::currentData): Provide an option to include prefetched records in result.
(WebCore::IDBServer::SQLiteIDBCursor::objectStoreRecordsChanged): Reset count to prefetch when there is a
change. This is used with increaseCountToPrefetch to make prefetch adaptive.
(WebCore::IDBServer::SQLiteIDBCursor::objectStoreRecordsChanged):
(WebCore::IDBServer::SQLiteIDBCursor::prefetchOneRecord):
(WebCore::IDBServer::SQLiteIDBCursor::increaseCountToPrefetch):
(WebCore::IDBServer::SQLiteIDBCursor::prefetch): Count to prefetch is decided by SQLiteCursor now.
(WebCore::IDBServer::SQLiteIDBCursor::internalFetchNextRecord):
(WebCore::IDBServer::SQLiteIDBCursor::currentValue const):
* Modules/indexeddb/server/SQLiteIDBCursor.h:
* Modules/indexeddb/server/UniqueIDBDatabase.cpp:
(WebCore::IDBServer::UniqueIDBDatabase::iterateCursor): Move call to prefetch cursor to SQLiteIDBBackingStore.
(WebCore::IDBServer::UniqueIDBDatabase::prefetchCursor): Deleted.
* Modules/indexeddb/server/UniqueIDBDatabase.h:
* Modules/indexeddb/server/UniqueIDBDatabaseTransaction.cpp:
(WebCore::IDBServer::UniqueIDBDatabaseTransaction::iterateCursor):
* Modules/indexeddb/shared/IDBCursorRecord.h: Stop using pointer for IDBValue for easier encoding and decoding.
(WebCore::IDBCursorRecord::size const):
(WebCore::IDBCursorRecord::isolatedCopy const):
* Modules/indexeddb/shared/IDBIterateCursorData.cpp:
(WebCore::IDBIterateCursorData::isolatedCopy const):
* Modules/indexeddb/shared/IDBIterateCursorData.h: Add an option to let IDBServer know whether it should answer
the cursor request.
(WebCore::IDBIterateCursorData::encode const):
(WebCore::IDBIterateCursorData::decode):
* WebCore.xcodeproj/project.pbxproj:
Canonical link: https://commits.webkit.org/220726@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@256621 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2020-02-14 18:08:03 +00:00
|
|
|
Modules/indexeddb/shared/IDBCursorRecord.h
|
2019-04-18 23:20:26 +00:00
|
|
|
Modules/indexeddb/shared/IDBDatabaseInfo.h
|
2020-06-17 16:51:42 +00:00
|
|
|
Modules/indexeddb/shared/IDBDatabaseNameAndVersion.h
|
2019-04-18 23:20:26 +00:00
|
|
|
Modules/indexeddb/shared/IDBError.h
|
|
|
|
Modules/indexeddb/shared/IDBGetAllRecordsData.h
|
|
|
|
Modules/indexeddb/shared/IDBGetRecordData.h
|
|
|
|
Modules/indexeddb/shared/IDBIndexInfo.h
|
|
|
|
Modules/indexeddb/shared/IDBIterateCursorData.h
|
|
|
|
Modules/indexeddb/shared/IDBObjectStoreInfo.h
|
|
|
|
Modules/indexeddb/shared/IDBRequestData.h
|
|
|
|
Modules/indexeddb/shared/IDBResourceIdentifier.h
|
|
|
|
Modules/indexeddb/shared/IDBResultData.h
|
|
|
|
Modules/indexeddb/shared/IDBTransactionInfo.h
|
|
|
|
|
2020-01-08 12:45:03 +00:00
|
|
|
Modules/mediarecorder/MediaRecorderProvider.h
|
|
|
|
|
2019-04-18 23:20:26 +00:00
|
|
|
Modules/mediasource/SampleMap.h
|
|
|
|
|
2021-03-22 18:29:36 +00:00
|
|
|
Modules/mediastream/DetachedRTCDataChannel.h
|
2019-04-18 23:20:26 +00:00
|
|
|
Modules/mediastream/DoubleRange.h
|
|
|
|
Modules/mediastream/LongRange.h
|
|
|
|
Modules/mediastream/MediaStreamTrack.h
|
|
|
|
Modules/mediastream/MediaTrackConstraints.h
|
|
|
|
Modules/mediastream/RTCController.h
|
2021-03-22 18:29:36 +00:00
|
|
|
Modules/mediastream/RTCDataChannel.h
|
|
|
|
Modules/mediastream/RTCDataChannelRemoteHandler.h
|
|
|
|
Modules/mediastream/RTCDataChannelRemoteSource.h
|
2021-02-08 19:47:30 +00:00
|
|
|
Modules/mediastream/STUNMessageParsing.h
|
2019-04-18 23:20:26 +00:00
|
|
|
Modules/mediastream/UserMediaClient.h
|
|
|
|
Modules/mediastream/UserMediaController.h
|
|
|
|
Modules/mediastream/UserMediaRequest.h
|
|
|
|
|
2020-11-18 22:04:09 +00:00
|
|
|
Modules/model-element/HTMLModelElement.h
|
|
|
|
|
2019-04-18 23:20:26 +00:00
|
|
|
Modules/notifications/Notification.h
|
|
|
|
Modules/notifications/NotificationClient.h
|
|
|
|
Modules/notifications/NotificationController.h
|
|
|
|
Modules/notifications/NotificationDirection.h
|
|
|
|
Modules/notifications/NotificationPermission.h
|
|
|
|
Modules/notifications/NotificationPermissionCallback.h
|
|
|
|
|
|
|
|
Modules/plugins/PluginReplacement.h
|
|
|
|
Modules/plugins/YouTubePluginReplacement.h
|
|
|
|
|
2020-11-22 05:51:10 +00:00
|
|
|
Modules/speech/SpeechRecognitionCaptureSource.h
|
|
|
|
Modules/speech/SpeechRecognitionCaptureSourceImpl.h
|
2020-11-04 01:44:02 +00:00
|
|
|
Modules/speech/SpeechRecognitionConnection.h
|
|
|
|
Modules/speech/SpeechRecognitionConnectionClient.h
|
|
|
|
Modules/speech/SpeechRecognitionConnectionClientIdentifier.h
|
|
|
|
Modules/speech/SpeechRecognitionError.h
|
|
|
|
Modules/speech/SpeechRecognitionRequest.h
|
|
|
|
Modules/speech/SpeechRecognitionRequestInfo.h
|
|
|
|
Modules/speech/SpeechRecognitionResultData.h
|
|
|
|
Modules/speech/SpeechRecognitionUpdate.h
|
2020-11-22 05:51:10 +00:00
|
|
|
Modules/speech/SpeechRecognizer.h
|
2020-11-04 01:44:02 +00:00
|
|
|
|
2019-04-18 23:20:26 +00:00
|
|
|
Modules/streams/ReadableStreamSink.h
|
|
|
|
Modules/streams/ReadableStreamSource.h
|
|
|
|
|
2019-05-22 19:27:49 +00:00
|
|
|
Modules/webauthn/AttestationConveyancePreference.h
|
2019-04-18 23:20:26 +00:00
|
|
|
Modules/webauthn/AuthenticationExtensionsClientInputs.h
|
[WebAuthn] Combine AuthenticatorResponse and PublicKeyCredentialData
https://bugs.webkit.org/show_bug.cgi?id=190783
<rdar://problem/57781183>
Reviewed by Brent Fulgham.
Source/WebCore:
This patch combines AuthenticatorResponse and PublicKeyCredentialData, and therefore renames
PublicKeyCredentialData to AuthenticatorResponseData as well. The complexity of WebKit's CTAP
implementation has reached the point that PublicKeyCredentialData is not appropriate to represent
all the different type of responses from authenticators anymore. For example, authenticatorGetNextAssertion
depends on the numberOfCredentials member from authenticatorGetAssertion response to function, but
numberOfCredentials is not used anywhere else. Therefore, a polymorphic type is needed to
represent different responses from authenticators instead of an uniform one, i.e., PublicKeyCredentialData.
AuthenticatorResponse seems to be the best fit. However, there are some limitations:
1) it is a WebIDL interface, and therefore is RefCounted. RefCounted objects cannot be serialized through
IPC. To solve this, AuthenticatorResponseData (PublicKeyCredentialData) is kept as an intermediate type
that is only used during IPC.
2) it doesn't contain all the information from an actual authenticator response. To solve this, it
has been enlarged to include all members from PublicKeyCredential. After this patch, PublicKeyCredential
will be a thin wrapper on top of AuthenticatorResponse.
Covered by existing tests.
* CMakeLists.txt:
* DerivedSources-input.xcfilelist:
* DerivedSources-output.xcfilelist:
* DerivedSources.make:
* Headers.cmake:
* Modules/webauthn/AuthenticationExtensionsClientOutputs.h: Copied from Source/WebCore/Modules/webauthn/PublicKeyCredential.idl.
* Modules/webauthn/AuthenticationExtensionsClientOutputs.idl: Copied from Source/WebCore/Modules/webauthn/PublicKeyCredential.idl.
This is separated from PublicKeyCredential such that AuthenticatorResponse can include it.
* Modules/webauthn/AuthenticatorAssertionResponse.cpp: Added.
(WebCore::AuthenticatorAssertionResponse::create):
(WebCore::AuthenticatorAssertionResponse::AuthenticatorAssertionResponse):
(WebCore::AuthenticatorAssertionResponse::data const):
* Modules/webauthn/AuthenticatorAssertionResponse.h:
(WebCore::AuthenticatorAssertionResponse::create): Deleted.
(WebCore::AuthenticatorAssertionResponse::AuthenticatorAssertionResponse): Deleted.
* Modules/webauthn/AuthenticatorAttestationResponse.cpp: Copied from Source/WebCore/Modules/webauthn/AuthenticatorAttestationResponse.h.
(WebCore::AuthenticatorAttestationResponse::create):
(WebCore::AuthenticatorAttestationResponse::AuthenticatorAttestationResponse):
(WebCore::AuthenticatorAttestationResponse::data const):
* Modules/webauthn/AuthenticatorAttestationResponse.h:
(WebCore::AuthenticatorAttestationResponse::create): Deleted.
(WebCore::AuthenticatorAttestationResponse::AuthenticatorAttestationResponse): Deleted.
* Modules/webauthn/AuthenticatorCoordinator.cpp:
(WebCore::AuthenticatorCoordinator::create const):
(WebCore::AuthenticatorCoordinator::discoverFromExternalSource const):
* Modules/webauthn/AuthenticatorCoordinatorClient.h:
* Modules/webauthn/AuthenticatorResponse.cpp: Copied from Source/WebCore/Modules/webauthn/PublicKeyCredential.cpp.
(WebCore::AuthenticatorResponse::tryCreate):
(WebCore::AuthenticatorResponse::data const):
(WebCore::AuthenticatorResponse::extensions const):
(WebCore::AuthenticatorResponse::setClientDataJSON):
(WebCore::AuthenticatorResponse::clientDataJSON const):
(WebCore::AuthenticatorResponse::AuthenticatorResponse):
* Modules/webauthn/AuthenticatorResponse.h:
(WebCore::AuthenticatorResponse::rawId const):
(WebCore::AuthenticatorResponse::setExtensions):
(WebCore::AuthenticatorResponse::AuthenticatorResponse): Deleted.
(WebCore::AuthenticatorResponse::clientDataJSON const): Deleted.
* Modules/webauthn/AuthenticatorResponseData.h: Renamed from Source/WebCore/Modules/webauthn/PublicKeyCredentialData.h.
(WebCore::AuthenticatorResponseData::encode const):
(WebCore::AuthenticatorResponseData::decode):
* Modules/webauthn/PublicKeyCredential.cpp:
(WebCore::PublicKeyCredential::create):
(WebCore::PublicKeyCredential::rawId const):
(WebCore::PublicKeyCredential::getClientExtensionResults const):
(WebCore::PublicKeyCredential::PublicKeyCredential):
(WebCore::PublicKeyCredential::tryCreate): Deleted.
* Modules/webauthn/PublicKeyCredential.h:
* Modules/webauthn/PublicKeyCredential.idl:
* Modules/webauthn/fido/DeviceResponseConverter.cpp:
(fido::readCTAPMakeCredentialResponse):
(fido::readCTAPGetAssertionResponse):
* Modules/webauthn/fido/DeviceResponseConverter.h:
A more appropriate derived type of AuthenticatorResponse is used to replace PublicKeyCredentialData.
* Modules/webauthn/fido/U2fResponseConverter.cpp:
(fido::readU2fRegisterResponse):
(fido::readU2fSignResponse):
* Modules/webauthn/fido/U2fResponseConverter.h:
A more appropriate derived type of AuthenticatorResponse is used to replace PublicKeyCredentialData.
* Sources.txt:
* WebCore.xcodeproj/project.pbxproj:
Source/WebKit:
Code in WebKit are changed to use AuthenticatorResponse and its subtypes.
* UIProcess/WebAuthentication/Authenticator.h:
* UIProcess/WebAuthentication/AuthenticatorManager.cpp:
(WebKit::AuthenticatorManager::respondReceived):
(WebKit::AuthenticatorManager::invokePendingCompletionHandler):
* UIProcess/WebAuthentication/AuthenticatorManager.h:
* UIProcess/WebAuthentication/Cocoa/LocalAuthenticator.mm:
(WebKit::LocalAuthenticator::continueMakeCredentialAfterAttested):
(WebKit::LocalAuthenticator::continueGetAssertionAfterUserConsented):
* UIProcess/WebAuthentication/WebAuthenticatorCoordinatorProxy.cpp:
(WebKit::WebAuthenticatorCoordinatorProxy::handleRequest):
* UIProcess/WebAuthentication/WebAuthenticatorCoordinatorProxy.h:
* UIProcess/WebAuthentication/WebAuthenticatorCoordinatorProxy.messages.in:
* UIProcess/WebAuthentication/fido/CtapAuthenticator.cpp:
(WebKit::CtapAuthenticator::continueMakeCredentialAfterResponseReceived const):
(WebKit::CtapAuthenticator::continueGetAssertionAfterResponseReceived):
* UIProcess/WebAuthentication/fido/U2fAuthenticator.cpp:
(WebKit::U2fAuthenticator::continueRegisterCommandAfterResponseReceived):
(WebKit::U2fAuthenticator::continueSignCommandAfterResponseReceived):
* WebProcess/WebAuthentication/WebAuthenticatorCoordinator.cpp:
Tools:
* TestWebKitAPI/Tests/WebCore/CtapResponseTest.cpp:
(TestWebKitAPI::TEST):
Updates tests accordingly.
Canonical link: https://commits.webkit.org/218334@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@253398 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2019-12-11 23:19:08 +00:00
|
|
|
Modules/webauthn/AuthenticationExtensionsClientOutputs.h
|
2019-04-18 23:20:26 +00:00
|
|
|
Modules/webauthn/AuthenticatorCoordinator.h
|
|
|
|
Modules/webauthn/AuthenticatorCoordinatorClient.h
|
[WebAuthn] Combine AuthenticatorResponse and PublicKeyCredentialData
https://bugs.webkit.org/show_bug.cgi?id=190783
<rdar://problem/57781183>
Reviewed by Brent Fulgham.
Source/WebCore:
This patch combines AuthenticatorResponse and PublicKeyCredentialData, and therefore renames
PublicKeyCredentialData to AuthenticatorResponseData as well. The complexity of WebKit's CTAP
implementation has reached the point that PublicKeyCredentialData is not appropriate to represent
all the different type of responses from authenticators anymore. For example, authenticatorGetNextAssertion
depends on the numberOfCredentials member from authenticatorGetAssertion response to function, but
numberOfCredentials is not used anywhere else. Therefore, a polymorphic type is needed to
represent different responses from authenticators instead of an uniform one, i.e., PublicKeyCredentialData.
AuthenticatorResponse seems to be the best fit. However, there are some limitations:
1) it is a WebIDL interface, and therefore is RefCounted. RefCounted objects cannot be serialized through
IPC. To solve this, AuthenticatorResponseData (PublicKeyCredentialData) is kept as an intermediate type
that is only used during IPC.
2) it doesn't contain all the information from an actual authenticator response. To solve this, it
has been enlarged to include all members from PublicKeyCredential. After this patch, PublicKeyCredential
will be a thin wrapper on top of AuthenticatorResponse.
Covered by existing tests.
* CMakeLists.txt:
* DerivedSources-input.xcfilelist:
* DerivedSources-output.xcfilelist:
* DerivedSources.make:
* Headers.cmake:
* Modules/webauthn/AuthenticationExtensionsClientOutputs.h: Copied from Source/WebCore/Modules/webauthn/PublicKeyCredential.idl.
* Modules/webauthn/AuthenticationExtensionsClientOutputs.idl: Copied from Source/WebCore/Modules/webauthn/PublicKeyCredential.idl.
This is separated from PublicKeyCredential such that AuthenticatorResponse can include it.
* Modules/webauthn/AuthenticatorAssertionResponse.cpp: Added.
(WebCore::AuthenticatorAssertionResponse::create):
(WebCore::AuthenticatorAssertionResponse::AuthenticatorAssertionResponse):
(WebCore::AuthenticatorAssertionResponse::data const):
* Modules/webauthn/AuthenticatorAssertionResponse.h:
(WebCore::AuthenticatorAssertionResponse::create): Deleted.
(WebCore::AuthenticatorAssertionResponse::AuthenticatorAssertionResponse): Deleted.
* Modules/webauthn/AuthenticatorAttestationResponse.cpp: Copied from Source/WebCore/Modules/webauthn/AuthenticatorAttestationResponse.h.
(WebCore::AuthenticatorAttestationResponse::create):
(WebCore::AuthenticatorAttestationResponse::AuthenticatorAttestationResponse):
(WebCore::AuthenticatorAttestationResponse::data const):
* Modules/webauthn/AuthenticatorAttestationResponse.h:
(WebCore::AuthenticatorAttestationResponse::create): Deleted.
(WebCore::AuthenticatorAttestationResponse::AuthenticatorAttestationResponse): Deleted.
* Modules/webauthn/AuthenticatorCoordinator.cpp:
(WebCore::AuthenticatorCoordinator::create const):
(WebCore::AuthenticatorCoordinator::discoverFromExternalSource const):
* Modules/webauthn/AuthenticatorCoordinatorClient.h:
* Modules/webauthn/AuthenticatorResponse.cpp: Copied from Source/WebCore/Modules/webauthn/PublicKeyCredential.cpp.
(WebCore::AuthenticatorResponse::tryCreate):
(WebCore::AuthenticatorResponse::data const):
(WebCore::AuthenticatorResponse::extensions const):
(WebCore::AuthenticatorResponse::setClientDataJSON):
(WebCore::AuthenticatorResponse::clientDataJSON const):
(WebCore::AuthenticatorResponse::AuthenticatorResponse):
* Modules/webauthn/AuthenticatorResponse.h:
(WebCore::AuthenticatorResponse::rawId const):
(WebCore::AuthenticatorResponse::setExtensions):
(WebCore::AuthenticatorResponse::AuthenticatorResponse): Deleted.
(WebCore::AuthenticatorResponse::clientDataJSON const): Deleted.
* Modules/webauthn/AuthenticatorResponseData.h: Renamed from Source/WebCore/Modules/webauthn/PublicKeyCredentialData.h.
(WebCore::AuthenticatorResponseData::encode const):
(WebCore::AuthenticatorResponseData::decode):
* Modules/webauthn/PublicKeyCredential.cpp:
(WebCore::PublicKeyCredential::create):
(WebCore::PublicKeyCredential::rawId const):
(WebCore::PublicKeyCredential::getClientExtensionResults const):
(WebCore::PublicKeyCredential::PublicKeyCredential):
(WebCore::PublicKeyCredential::tryCreate): Deleted.
* Modules/webauthn/PublicKeyCredential.h:
* Modules/webauthn/PublicKeyCredential.idl:
* Modules/webauthn/fido/DeviceResponseConverter.cpp:
(fido::readCTAPMakeCredentialResponse):
(fido::readCTAPGetAssertionResponse):
* Modules/webauthn/fido/DeviceResponseConverter.h:
A more appropriate derived type of AuthenticatorResponse is used to replace PublicKeyCredentialData.
* Modules/webauthn/fido/U2fResponseConverter.cpp:
(fido::readU2fRegisterResponse):
(fido::readU2fSignResponse):
* Modules/webauthn/fido/U2fResponseConverter.h:
A more appropriate derived type of AuthenticatorResponse is used to replace PublicKeyCredentialData.
* Sources.txt:
* WebCore.xcodeproj/project.pbxproj:
Source/WebKit:
Code in WebKit are changed to use AuthenticatorResponse and its subtypes.
* UIProcess/WebAuthentication/Authenticator.h:
* UIProcess/WebAuthentication/AuthenticatorManager.cpp:
(WebKit::AuthenticatorManager::respondReceived):
(WebKit::AuthenticatorManager::invokePendingCompletionHandler):
* UIProcess/WebAuthentication/AuthenticatorManager.h:
* UIProcess/WebAuthentication/Cocoa/LocalAuthenticator.mm:
(WebKit::LocalAuthenticator::continueMakeCredentialAfterAttested):
(WebKit::LocalAuthenticator::continueGetAssertionAfterUserConsented):
* UIProcess/WebAuthentication/WebAuthenticatorCoordinatorProxy.cpp:
(WebKit::WebAuthenticatorCoordinatorProxy::handleRequest):
* UIProcess/WebAuthentication/WebAuthenticatorCoordinatorProxy.h:
* UIProcess/WebAuthentication/WebAuthenticatorCoordinatorProxy.messages.in:
* UIProcess/WebAuthentication/fido/CtapAuthenticator.cpp:
(WebKit::CtapAuthenticator::continueMakeCredentialAfterResponseReceived const):
(WebKit::CtapAuthenticator::continueGetAssertionAfterResponseReceived):
* UIProcess/WebAuthentication/fido/U2fAuthenticator.cpp:
(WebKit::U2fAuthenticator::continueRegisterCommandAfterResponseReceived):
(WebKit::U2fAuthenticator::continueSignCommandAfterResponseReceived):
* WebProcess/WebAuthentication/WebAuthenticatorCoordinator.cpp:
Tools:
* TestWebKitAPI/Tests/WebCore/CtapResponseTest.cpp:
(TestWebKitAPI::TEST):
Updates tests accordingly.
Canonical link: https://commits.webkit.org/218334@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@253398 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2019-12-11 23:19:08 +00:00
|
|
|
Modules/webauthn/AuthenticatorResponseData.h
|
2019-04-18 23:20:26 +00:00
|
|
|
Modules/webauthn/AuthenticatorTransport.h
|
|
|
|
Modules/webauthn/PublicKeyCredentialCreationOptions.h
|
|
|
|
Modules/webauthn/PublicKeyCredentialDescriptor.h
|
|
|
|
Modules/webauthn/PublicKeyCredentialRequestOptions.h
|
|
|
|
Modules/webauthn/PublicKeyCredentialType.h
|
|
|
|
Modules/webauthn/UserVerificationRequirement.h
|
|
|
|
Modules/webauthn/WebAuthenticationConstants.h
|
|
|
|
Modules/webauthn/WebAuthenticationUtils.h
|
|
|
|
|
|
|
|
Modules/webauthn/apdu/ApduCommand.h
|
|
|
|
Modules/webauthn/apdu/ApduResponse.h
|
|
|
|
|
|
|
|
Modules/webauthn/cbor/CBORReader.h
|
|
|
|
Modules/webauthn/cbor/CBORValue.h
|
|
|
|
Modules/webauthn/cbor/CBORWriter.h
|
|
|
|
|
|
|
|
Modules/webauthn/fido/AuthenticatorGetInfoResponse.h
|
|
|
|
Modules/webauthn/fido/AuthenticatorSupportedOptions.h
|
|
|
|
Modules/webauthn/fido/DeviceRequestConverter.h
|
|
|
|
Modules/webauthn/fido/DeviceResponseConverter.h
|
|
|
|
Modules/webauthn/fido/FidoConstants.h
|
|
|
|
Modules/webauthn/fido/FidoHidMessage.h
|
|
|
|
Modules/webauthn/fido/FidoHidPacket.h
|
|
|
|
Modules/webauthn/fido/U2fCommandConstructor.h
|
|
|
|
Modules/webauthn/fido/U2fResponseConverter.h
|
|
|
|
|
|
|
|
Modules/webdatabase/DatabaseDetails.h
|
|
|
|
Modules/webdatabase/DatabaseManager.h
|
|
|
|
Modules/webdatabase/DatabaseManagerClient.h
|
|
|
|
Modules/webdatabase/DatabaseTracker.h
|
|
|
|
Modules/webdatabase/OriginLock.h
|
|
|
|
|
2019-06-13 01:04:16 +00:00
|
|
|
Modules/websockets/ThreadableWebSocketChannel.h
|
|
|
|
Modules/websockets/WebSocketChannel.h
|
|
|
|
Modules/websockets/WebSocketChannelClient.h
|
2020-02-17 20:46:43 +00:00
|
|
|
Modules/websockets/WebSocketChannelInspector.h
|
2019-06-13 01:04:16 +00:00
|
|
|
Modules/websockets/WebSocketDeflateFramer.h
|
|
|
|
Modules/websockets/WebSocketDeflater.h
|
|
|
|
Modules/websockets/WebSocketExtensionDispatcher.h
|
|
|
|
Modules/websockets/WebSocketExtensionProcessor.h
|
|
|
|
Modules/websockets/WebSocketFrame.h
|
2020-09-02 16:10:19 +00:00
|
|
|
Modules/websockets/WebSocketIdentifier.h
|
2019-06-13 01:04:16 +00:00
|
|
|
Modules/websockets/WebSocketHandshake.h
|
|
|
|
|
2020-04-16 02:19:13 +00:00
|
|
|
accessibility/AXLogger.h
|
2019-04-18 23:20:26 +00:00
|
|
|
accessibility/AXObjectCache.h
|
|
|
|
accessibility/AXTextStateChangeIntent.h
|
|
|
|
accessibility/AccessibilityListBox.h
|
|
|
|
accessibility/AccessibilityMenuListPopup.h
|
|
|
|
accessibility/AccessibilityMockObject.h
|
|
|
|
accessibility/AccessibilityNodeObject.h
|
|
|
|
accessibility/AccessibilityObject.h
|
|
|
|
accessibility/AccessibilityObjectInterface.h
|
|
|
|
accessibility/AccessibilityRenderObject.h
|
|
|
|
accessibility/AccessibilityScrollView.h
|
2020-11-17 01:34:46 +00:00
|
|
|
accessibility/ForcedAccessibilityValue.h
|
2019-04-18 23:20:26 +00:00
|
|
|
|
2020-01-17 22:07:15 +00:00
|
|
|
accessibility/isolatedtree/AXIsolatedObject.h
|
2019-04-18 23:20:26 +00:00
|
|
|
accessibility/isolatedtree/AXIsolatedTree.h
|
|
|
|
|
|
|
|
animation/CSSPropertyBlendingClient.h
|
|
|
|
animation/CompositeOperation.h
|
2020-04-22 07:16:51 +00:00
|
|
|
animation/DocumentTimelinesController.h
|
2019-04-18 23:20:26 +00:00
|
|
|
animation/EffectTiming.h
|
|
|
|
animation/FillMode.h
|
2020-01-27 16:51:08 +00:00
|
|
|
animation/GetAnimationsOptions.h
|
2019-04-18 23:20:26 +00:00
|
|
|
animation/IterationCompositeOperation.h
|
|
|
|
animation/KeyframeAnimationOptions.h
|
|
|
|
animation/KeyframeEffectOptions.h
|
|
|
|
animation/PlaybackDirection.h
|
2020-03-12 07:48:06 +00:00
|
|
|
animation/WebAnimationTypes.h
|
2019-04-18 23:20:26 +00:00
|
|
|
|
|
|
|
bindings/IDLTypes.h
|
|
|
|
|
|
|
|
bindings/js/BufferSource.h
|
|
|
|
bindings/js/CachedScriptFetcher.h
|
|
|
|
bindings/js/CommonVM.h
|
|
|
|
bindings/js/DOMWrapperWorld.h
|
Make it possible to not include IPC Messages headers in other headers
https://bugs.webkit.org/show_bug.cgi?id=203074
Reviewed by Geoffrey Garen.
Source/WebCore:
* WebCore.xcodeproj/project.pbxproj:
* bindings/js/ExceptionDetails.h: Added.
* bindings/js/JSDOMExceptionHandling.h:
Split the ExceptionDetails struct out into its own file.
Source/WebKit:
Make the Messages generator generate a new -MessagesReplies.h file, which
only includes headers for and definitions of DelayedReply/AsyncReply types,
which need to be mentioned as arguments to message hander methods, and
thus must be available in various headers throughout the project.
In order to do this, we have to de-nest them from the primary message
class, but we then 'using' them back into place inside the message class
so that most of the code doesn't need to change.
This helps to wildly decrease the header load of WebPage.h and WebPageProxy.h,
especially, because the number of headers needed for types in their replies
is much smaller than the number needed for all message receivers.
Also, only invoke the Messages generator once per source file, and
only parse the source file once, generating all three output files
in one invocation.
And then clean up all the missing indirect includes that we lost by doing this.
All-in-all this is worth roughly 8% on the WebKit2 Build Time Benchmark.
* CMakeLists.txt:
* DerivedSources-input.xcfilelist:
* DerivedSources.make:
* NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp:
* NetworkProcess/NetworkConnectionToWebProcess.cpp:
* NetworkProcess/NetworkConnectionToWebProcess.h:
* NetworkProcess/NetworkResourceLoader.cpp:
* NetworkProcess/NetworkResourceLoader.h:
* PluginProcess/PluginControllerProxy.cpp:
* PluginProcess/PluginControllerProxy.h:
* PluginProcess/WebProcessConnection.h:
* Scripts/Makefile:
* Scripts/generate-message-receiver.py:
(main):
* Scripts/generate-messages-header.py: Removed.
* Scripts/webkit/LegacyMessageReceiver-expected.cpp:
* Scripts/webkit/LegacyMessages-expected.h:
* Scripts/webkit/LegacyMessagesReplies-expected.h: Added.
* Scripts/webkit/MessageReceiver-expected.cpp:
* Scripts/webkit/MessageReceiverSuperclass-expected.cpp:
* Scripts/webkit/Messages-expected.h:
* Scripts/webkit/MessagesReplies-expected.h: Added.
* Scripts/webkit/MessagesRepliesSuperclassReplies-expected.h: Added.
* Scripts/webkit/MessagesSuperclass-expected.h:
* Scripts/webkit/messages.py:
* UIProcess/Cocoa/UserMediaCaptureManagerProxy.cpp:
* UIProcess/Cocoa/UserMediaCaptureManagerProxy.h:
* UIProcess/Downloads/DownloadProxy.h:
* UIProcess/Network/NetworkProcessProxy.cpp:
* UIProcess/Network/NetworkProcessProxy.h:
* UIProcess/Plugins/PluginProcessManager.cpp:
* UIProcess/Plugins/PluginProcessManager.h:
* UIProcess/Plugins/PluginProcessProxy.h:
* UIProcess/ProvisionalPageProxy.h:
* UIProcess/SuspendedPageProxy.h:
* UIProcess/WebPageProxy.cpp:
* UIProcess/WebPageProxy.h:
* UIProcess/WebProcessPool.cpp:
* UIProcess/WebProcessPool.h:
* UIProcess/WebProcessProxy.h:
* UIProcess/ios/WKContentView.mm:
* UIProcess/ios/WKContentViewInteraction.mm:
* UIProcess/mac/TiledCoreAnimationDrawingAreaProxy.mm:
* WebKit.xcodeproj/project.pbxproj:
* WebProcess/Storage/WebSWContextManagerConnection.cpp:
* WebProcess/Storage/WebSWContextManagerConnection.h:
* WebProcess/WebPage/WebPage.h:
* WebProcess/WebPage/ios/WebPageIOS.mm:
* WebProcess/cocoa/VideoFullscreenManager.h:
* WebProcess/cocoa/VideoFullscreenManager.mm:
Canonical link: https://commits.webkit.org/216682@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@251445 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2019-10-22 20:02:17 +00:00
|
|
|
bindings/js/ExceptionDetails.h
|
2019-04-18 23:20:26 +00:00
|
|
|
bindings/js/GCController.h
|
|
|
|
bindings/js/IDBBindingUtilities.h
|
|
|
|
bindings/js/JSCSSRuleCustom.h
|
|
|
|
bindings/js/JSCSSStyleDeclarationCustom.h
|
|
|
|
bindings/js/JSDOMBinding.h
|
|
|
|
bindings/js/JSDOMBindingSecurity.h
|
[WebIDL] Remove [ImplicitThis] and [CustomProxyToJSObject] extended attributes
https://bugs.webkit.org/show_bug.cgi?id=223758
Reviewed by Sam Weinig.
LayoutTests/imported/w3c:
* web-platform-tests/WebIDL/ecmascript-binding/global-object-implicit-this-value.any-expected.txt: Added.
* web-platform-tests/WebIDL/ecmascript-binding/global-object-implicit-this-value.any.html: Added.
* web-platform-tests/WebIDL/ecmascript-binding/global-object-implicit-this-value.any.js: Added.
* web-platform-tests/WebIDL/ecmascript-binding/global-object-implicit-this-value.any.worker-expected.txt: Added.
* web-platform-tests/WebIDL/ecmascript-binding/global-object-implicit-this-value.any.worker.html: Added.
* web-platform-tests/webaudio/the-audio-api/the-audioworklet-interface/audioworklet-registerprocessor-called-on-globalthis.https-expected.txt: Added.
* web-platform-tests/webaudio/the-audio-api/the-audioworklet-interface/audioworklet-registerprocessor-called-on-globalthis.https.html: Added.
* web-platform-tests/webaudio/the-audio-api/the-audioworklet-interface/processors/dummy-processor-globalthis.js: Added.
Source/WebCore:
This change introduces castThisValue<JSClass>, taking a step towards unification of |this|
value casting between IDLAttribute and IDLOperation. The helper uses compile-time inheritance
check to provide implicit |this| value for DOM global objects [1], replacing [ImplicitThis]
extended attribute, which was removed from the spec [2] a while ago.
IDLAttribute can't perform toThis() with ECMAMode::strict(), like IDLOperation now does,
because CustomValue getters are called with |this| value of JSGlobalObject type, which gets
tainted by JSScope::toThis(). #225397 will remove the need for toThis(), finally making |this|
value casting consistent between attributes and operations.
Also, this patch fixes `Object.create(window).location` to throw as per spec [1] by removing
prototype chain traversal from toJSDOMWindow(), which aligns WebKit with Blink and Gecko.
As DOM global objects are wrapped in proxies and require special casting, toJSDOMWindow() and
friends are merged into toJSDOMGlobalObject<JSClass>, which is aware of inheritance / JSProxy.
It replaces [CustomProxyToJSObject] extended attribute, which could be missed when adding new
DOM global objects, fixing worklets' global functions not to throw when called on `globalThis`.
This change reduces WebCore --release binary size by 0.2% (147 KB).
[1] https://heycam.github.io/webidl/#dfn-attribute-getter (step 1.1.2.3)
[2] https://github.com/heycam/webidl/pull/155
Tests: imported/w3c/web-platform-tests/WebIDL/ecmascript-binding/global-object-implicit-this-value.any.js
imported/w3c/web-platform-tests/webaudio/the-audio-api/the-audioworklet-interface/audioworklet-registerprocessor-called-on-globalthis.https.html
fast/css-custom-paint/registerPaintBindings.html
http/tests/security/listener/*.html
* Headers.cmake:
* Modules/webaudio/AudioWorkletGlobalScope.idl:
* WebCore.xcodeproj/project.pbxproj:
* bindings/js/JSDOMAttribute.h:
(WebCore::IDLAttribute::set):
(WebCore::IDLAttribute::setPassingPropertyName):
(WebCore::IDLAttribute::get):
(WebCore::IDLAttribute::getPassingPropertyName):
* bindings/js/JSDOMCastThisValue.h: Added.
(WebCore::castThisValue):
* bindings/js/JSDOMCastedThisErrorBehavior.h: Removed.
* bindings/js/JSDOMGlobalObject.h:
(WebCore::toJSDOMGlobalObject):
* bindings/js/JSDOMOperation.h:
(WebCore::IDLOperation::cast):
* bindings/js/JSDOMWindowBase.cpp:
* bindings/js/JSDOMWindowBase.h:
(WebCore::toJSDOMWindow):
* bindings/js/JSDOMWindowCustom.cpp:
(WebCore::JSC_DEFINE_CUSTOM_GETTER):
(WebCore::IDLOperation<JSDOMWindow>::cast): Deleted.
* bindings/js/JSDocumentCustom.cpp:
(WebCore::cachedDocumentWrapper):
* bindings/js/JSEventTargetCustom.cpp:
(WebCore::jsEventTargetCast):
* bindings/js/JSEventTargetCustom.h:
(WebCore::IDLOperation<JSEventTarget>::call):
* bindings/js/JSRemoteDOMWindowBase.cpp:
(WebCore::toJSRemoteDOMWindow): Deleted.
* bindings/js/JSRemoteDOMWindowBase.h:
* bindings/js/JSWorkerGlobalScopeBase.cpp:
(WebCore::toJSDedicatedWorkerGlobalScope): Deleted.
(WebCore::toJSWorkerGlobalScope): Deleted.
(WebCore::toJSServiceWorkerGlobalScope): Deleted.
* bindings/js/JSWorkerGlobalScopeBase.h:
* bindings/js/JSWorkletGlobalScopeBase.cpp:
(WebCore::toJSWorkletGlobalScope): Deleted.
* bindings/js/JSWorkletGlobalScopeBase.h:
* bindings/scripts/CodeGeneratorJS.pm:
(ShouldGenerateToJSDeclaration):
(IsAcceleratedDOMAttribute):
(GenerateImplementation):
* bindings/scripts/IDLAttributes.json:
* bindings/scripts/test/JS/*: Updated.
* inspector/InspectorController.cpp:
(WebCore::InspectorController::canAccessInspectedScriptState const):
* page/DOMWindow.idl:
* page/RemoteDOMWindow.idl:
* workers/DedicatedWorkerGlobalScope.idl:
* workers/WorkerGlobalScope.idl:
* workers/service/ServiceWorkerGlobalScope.idl:
* worklets/PaintWorkletGlobalScope.idl:
* worklets/WorkletGlobalScope.idl:
Source/WebKit:
Use inherits<T> instead of toJSDOMWindow() if the value is never a JSProxy.
* WebProcess/InjectedBundle/InjectedBundle.cpp:
(WebKit::InjectedBundle::reportException):
Source/WebKitLegacy/mac:
Use inherits<T> instead of toJSDOMWindow() if the value is never a JSProxy.
* WebView/WebView.mm:
(+[WebView _reportException:inContext:]):
Source/WebKitLegacy/win:
Use inherits<T> instead of toJSDOMWindow() if the value is never a JSProxy.
* WebView.cpp:
(WebView::reportException):
LayoutTests:
* fast/css-custom-paint/registerPaintBindings.html:
* http/tests/security/listener/*:
This is a progression: Blink and Gecko don't call event listeners belonging to destroyed frames.
* js/property-of-window-as-prototype-expected.txt: Removed.
* js/property-of-window-as-prototype.html: Removed.
Canonical link: https://commits.webkit.org/237976@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@277830 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2021-05-20 22:25:01 +00:00
|
|
|
bindings/js/JSDOMCastThisValue.h
|
2019-04-18 23:20:26 +00:00
|
|
|
bindings/js/JSDOMConvert.h
|
|
|
|
bindings/js/JSDOMConvertAny.h
|
|
|
|
bindings/js/JSDOMConvertBase.h
|
|
|
|
bindings/js/JSDOMConvertBoolean.h
|
|
|
|
bindings/js/JSDOMConvertBufferSource.h
|
|
|
|
bindings/js/JSDOMConvertCallbacks.h
|
|
|
|
bindings/js/JSDOMConvertDate.h
|
|
|
|
bindings/js/JSDOMConvertDictionary.h
|
|
|
|
bindings/js/JSDOMConvertEnumeration.h
|
|
|
|
bindings/js/JSDOMConvertEventListener.h
|
|
|
|
bindings/js/JSDOMConvertIndexedDB.h
|
|
|
|
bindings/js/JSDOMConvertInterface.h
|
|
|
|
bindings/js/JSDOMConvertJSON.h
|
|
|
|
bindings/js/JSDOMConvertNull.h
|
|
|
|
bindings/js/JSDOMConvertNullable.h
|
|
|
|
bindings/js/JSDOMConvertNumbers.h
|
|
|
|
bindings/js/JSDOMConvertObject.h
|
|
|
|
bindings/js/JSDOMConvertRecord.h
|
|
|
|
bindings/js/JSDOMConvertSequences.h
|
|
|
|
bindings/js/JSDOMConvertSerializedScriptValue.h
|
|
|
|
bindings/js/JSDOMConvertStrings.h
|
|
|
|
bindings/js/JSDOMConvertUnion.h
|
|
|
|
bindings/js/JSDOMConvertWebGL.h
|
|
|
|
bindings/js/JSDOMConvertXPathNSResolver.h
|
|
|
|
bindings/js/JSDOMExceptionHandling.h
|
|
|
|
bindings/js/JSDOMGlobalObject.h
|
|
|
|
bindings/js/JSDOMGuardedObject.h
|
|
|
|
bindings/js/JSDOMOperation.h
|
|
|
|
bindings/js/JSDOMPromiseDeferred.h
|
|
|
|
bindings/js/JSDOMWindowBase.h
|
|
|
|
bindings/js/JSDOMWrapper.h
|
|
|
|
bindings/js/JSDOMWrapperCache.h
|
|
|
|
bindings/js/JSDocumentCustom.h
|
|
|
|
bindings/js/JSElementCustom.h
|
|
|
|
bindings/js/JSEventCustom.h
|
|
|
|
bindings/js/JSEventTargetCustom.h
|
|
|
|
bindings/js/JSExecState.h
|
|
|
|
bindings/js/JSMediaListCustom.h
|
|
|
|
bindings/js/JSNodeCustom.h
|
|
|
|
bindings/js/JSNodeListCustom.h
|
|
|
|
bindings/js/JSPluginElementFunctions.h
|
|
|
|
bindings/js/JSStyleSheetCustom.h
|
|
|
|
bindings/js/JSValueInWrappedObject.h
|
|
|
|
bindings/js/JSWindowProxy.h
|
|
|
|
bindings/js/ReadableStreamDefaultController.h
|
2019-12-30 20:23:20 +00:00
|
|
|
bindings/js/RunJavaScriptParameters.h
|
2019-04-18 23:20:26 +00:00
|
|
|
bindings/js/ScriptCachedFrameData.h
|
|
|
|
bindings/js/ScriptController.h
|
|
|
|
bindings/js/ScriptState.h
|
|
|
|
bindings/js/ScriptWrappable.h
|
|
|
|
bindings/js/ScriptWrappableInlines.h
|
|
|
|
bindings/js/SerializedScriptValue.h
|
|
|
|
bindings/js/StringAdaptors.h
|
2020-10-03 23:51:12 +00:00
|
|
|
bindings/js/WebCoreJITOperations.h
|
2019-04-18 23:20:26 +00:00
|
|
|
bindings/js/WebCoreTypedArrayController.h
|
|
|
|
bindings/js/WindowProxy.h
|
JS Modules in Workers
https://bugs.webkit.org/show_bug.cgi?id=164860
Reviewed by Saam Barati.
LayoutTests/imported/w3c:
Some of worklet failures in WPT is because,
1. Previously, worklet does not support module. These tests are passing incorrectly when modules are not supported.
Now, modules are supported, and some edge features are missing, so start failing
2. WPT is using www1.localhost in some tests (CSP tests), and this is not supported in WebKit's WPT testing. So failing incorrectly.
* web-platform-tests/html/semantics/scripting-1/the-script-element/json-module/non-object.tentative.any.worker-expected.txt:
* web-platform-tests/html/semantics/scripting-1/the-script-element/microtasks/checkpoint-after-workerglobalscope-onerror-module-expected.txt:
* web-platform-tests/html/semantics/scripting-1/the-script-element/module/dynamic-import/alpha/base-url-worker-importScripts-expected.txt:
* web-platform-tests/html/semantics/scripting-1/the-script-element/module/dynamic-import/alpha/base-url-worker.sub-expected.txt:
* web-platform-tests/html/semantics/scripting-1/the-script-element/module/evaluation-order-1-nothrow-worker-expected.txt:
* web-platform-tests/html/semantics/scripting-1/the-script-element/module/evaluation-order-1-worker-expected.txt:
* web-platform-tests/html/semantics/scripting-1/the-script-element/module/evaluation-order-2-import-worker-expected.txt:
* web-platform-tests/html/semantics/scripting-1/the-script-element/module/evaluation-order-3-dynamic-worker-expected.txt:
* web-platform-tests/service-workers/service-worker/import-module-scripts.https-expected.txt:
* web-platform-tests/workers/baseurl/alpha/import-in-moduleworker-expected.txt:
* web-platform-tests/workers/baseurl/alpha/importScripts-in-worker-expected.txt:
* web-platform-tests/workers/baseurl/alpha/xhr-in-moduleworker-expected.txt:
* web-platform-tests/workers/baseurl/alpha/xhr-in-worker-expected.txt:
* web-platform-tests/workers/constructors/Worker/same-origin-expected.txt:
* web-platform-tests/workers/interfaces/WorkerGlobalScope/location/redirect-expected.txt:
* web-platform-tests/workers/interfaces/WorkerGlobalScope/location/redirect-module-expected.txt:
* web-platform-tests/workers/modules/dedicated-worker-import-blob-url.any-expected.txt:
* web-platform-tests/workers/modules/dedicated-worker-import-csp-expected.txt:
* web-platform-tests/workers/modules/dedicated-worker-import-failure-expected.txt:
* web-platform-tests/workers/modules/dedicated-worker-import-meta-expected.txt:
* web-platform-tests/workers/modules/dedicated-worker-import-meta.html:
* web-platform-tests/workers/modules/dedicated-worker-import-referrer-expected.txt:
* web-platform-tests/workers/modules/dedicated-worker-import.any-expected.txt:
* web-platform-tests/workers/modules/dedicated-worker-options-type-expected.txt:
* web-platform-tests/workers/modules/dedicated-worker-parse-error-failure-expected.txt:
* web-platform-tests/workers/name-property-expected.txt:
* web-platform-tests/worklets/audio-worklet-credentials.https-expected.txt:
* web-platform-tests/worklets/audio-worklet-csp.https-expected.txt:
* web-platform-tests/worklets/audio-worklet-import.https-expected.txt:
* web-platform-tests/worklets/audio-worklet-referrer.https-expected.txt:
* web-platform-tests/xhr/open-url-redirected-worker-origin-expected.txt:
Source/JavaScriptCore:
Add error information to extract this in WebCore's module loader.
Currently, we are using Promise pipeline, and this makes it a bit difficult to extract error information.
This error information attached in this patch allows us to extract SyntaxError in WebCore, and throwing
JS SyntaxError instead of AbortError.
We are planning to update our module pipieline not using Promises in the future. The current design derived
from the original module loader pipeline where using Promises is critical. But now, that proposal was abandoned,
so we can just simplify the module loader.
* runtime/AggregateError.cpp:
(JSC::AggregateError::AggregateError):
* runtime/Error.cpp:
(JSC::createError):
(JSC::createEvalError):
(JSC::createRangeError):
(JSC::createReferenceError):
(JSC::createSyntaxError):
(JSC::createTypeError):
(JSC::createURIError):
(JSC::createGetterTypeError):
(JSC::throwSyntaxError):
* runtime/Error.h:
* runtime/ErrorConstructor.cpp:
(JSC::JSC_DEFINE_HOST_FUNCTION):
* runtime/ErrorInstance.cpp:
(JSC::ErrorInstance::ErrorInstance):
(JSC::ErrorInstance::create):
(JSC::ErrorInstance::sanitizedMessageString):
(JSC::ErrorInstance::sanitizedNameString):
(JSC::ErrorInstance::sanitizedToString):
* runtime/ErrorInstance.h:
(JSC::ErrorInstance::create):
(JSC::ErrorInstance::errorType const):
* runtime/JSGlobalObjectFunctions.cpp:
(JSC::JSC_DEFINE_HOST_FUNCTION):
* runtime/NativeErrorConstructor.cpp:
(JSC::NativeErrorConstructor<errorType>::constructImpl):
(JSC::NativeErrorConstructor<errorType>::callImpl):
* runtime/NullSetterFunction.cpp:
(JSC::NullSetterFunctionInternal::JSC_DEFINE_HOST_FUNCTION):
* wasm/js/JSWebAssemblyCompileError.cpp:
(JSC::JSWebAssemblyCompileError::JSWebAssemblyCompileError):
* wasm/js/JSWebAssemblyLinkError.cpp:
(JSC::JSWebAssemblyLinkError::JSWebAssemblyLinkError):
* wasm/js/JSWebAssemblyRuntimeError.cpp:
(JSC::JSWebAssemblyRuntimeError::JSWebAssemblyRuntimeError):
* wasm/js/WebAssemblyCompileErrorConstructor.cpp:
(JSC::JSC_DEFINE_HOST_FUNCTION):
* wasm/js/WebAssemblyLinkErrorConstructor.cpp:
(JSC::JSC_DEFINE_HOST_FUNCTION):
* wasm/js/WebAssemblyRuntimeErrorConstructor.cpp:
(JSC::JSC_DEFINE_HOST_FUNCTION):
Source/WebCore:
This patch implements JS modules in Workers and Worklets. We are not supporting modules in ServiceWorkers' initialization yet.
But service-worker can import modules via JS `import()`.
The worker can be executed as a module if we pass, `type: "module"` to worker options. Worklet is executed as modules by default.
1. In Worker, we first fetch the initial code. And then, analyze the dependencies and load subsequent modules.
We iterate run-loop to load all the dependent modules in the module loader. At that time, we annotate run-loop tasks with
special taskMode to iterate tasks with this taskMode. This prevents us from discarding different tasks in this run-loop driving
phase. (e.g. postMessage can be called from the main thread while loading module graph, in that case, we should not discard this
task.)
2. In Worklet, we just request module loading to ScriptModuleLoader, and run it after loading module graph. This is OK since worklet
thread is already running. So we can just request modules and worklet thread automatically drives module loading via run-loop.
* Headers.cmake:
* Modules/webaudio/AudioWorkletGlobalScope.h:
(WebCore::AudioWorkletGlobalScope::currentFrame const): Deleted.
(WebCore::AudioWorkletGlobalScope::sampleRate const): Deleted.
(WebCore::AudioWorkletGlobalScope::currentTime const): Deleted.
* Sources.txt:
* WebCore.xcodeproj/project.pbxproj:
* bindings/js/CachedModuleScriptLoader.cpp:
(WebCore::CachedModuleScriptLoader::create):
(WebCore::CachedModuleScriptLoader::CachedModuleScriptLoader):
(WebCore::CachedModuleScriptLoader::load):
(WebCore::CachedModuleScriptLoader::notifyFinished):
* bindings/js/CachedModuleScriptLoader.h:
* bindings/js/CachedScriptFetcher.cpp:
* bindings/js/JSDOMExceptionHandling.cpp:
(WebCore::retrieveErrorMessageWithoutName):
(WebCore::createDOMException):
* bindings/js/JSDOMExceptionHandling.h:
* bindings/js/JSDOMGlobalObject.cpp:
(WebCore::scriptModuleLoader):
(WebCore::JSDOMGlobalObject::moduleLoaderResolve):
(WebCore::JSDOMGlobalObject::moduleLoaderFetch):
(WebCore::JSDOMGlobalObject::moduleLoaderEvaluate):
(WebCore::JSDOMGlobalObject::moduleLoaderImportModule):
(WebCore::JSDOMGlobalObject::moduleLoaderCreateImportMetaProperties):
* bindings/js/JSDOMGlobalObject.h:
* bindings/js/JSDOMWindowBase.cpp:
(WebCore::JSDOMWindowBase::moduleLoaderResolve): Deleted.
(WebCore::JSDOMWindowBase::moduleLoaderFetch): Deleted.
(WebCore::JSDOMWindowBase::moduleLoaderEvaluate): Deleted.
(WebCore::JSDOMWindowBase::moduleLoaderImportModule): Deleted.
(WebCore::JSDOMWindowBase::moduleLoaderCreateImportMetaProperties): Deleted.
* bindings/js/JSDOMWindowBase.h:
* bindings/js/JSWorkerGlobalScopeBase.cpp:
* bindings/js/JSWorkletGlobalScopeBase.cpp:
* bindings/js/ModuleScriptLoader.h: Copied from Source/WebCore/dom/ModuleFetchParameters.h.
(WebCore::ModuleScriptLoader::clearClient):
(WebCore::ModuleScriptLoader::scriptFetcher):
(WebCore::ModuleScriptLoader::parameters):
(WebCore::ModuleScriptLoader::ModuleScriptLoader):
* bindings/js/ModuleScriptLoaderClient.h: Renamed from Source/WebCore/bindings/js/CachedModuleScriptLoaderClient.h.
* bindings/js/ScriptModuleLoader.cpp:
(WebCore::ScriptModuleLoader::ScriptModuleLoader):
(WebCore::resolveModuleSpecifier):
(WebCore::ScriptModuleLoader::resolve):
(WebCore::ScriptModuleLoader::fetch):
(WebCore::ScriptModuleLoader::moduleURL):
(WebCore::ScriptModuleLoader::responseURLFromRequestURL):
(WebCore::ScriptModuleLoader::evaluate):
(WebCore::ScriptModuleLoader::importModule):
(WebCore::ScriptModuleLoader::notifyFinished):
* bindings/js/ScriptModuleLoader.h:
* bindings/js/ScriptSourceCode.h:
(WebCore::ScriptSourceCode::ScriptSourceCode):
* bindings/js/WorkerModuleScriptLoader.cpp: Added.
(WebCore::WorkerModuleScriptLoader::create):
(WebCore::WorkerModuleScriptLoader::WorkerModuleScriptLoader):
(WebCore::WorkerModuleScriptLoader::~WorkerModuleScriptLoader):
(WebCore::WorkerModuleScriptLoader::load):
(WebCore::WorkerModuleScriptLoader::referrerPolicy):
(WebCore::WorkerModuleScriptLoader::notifyFinished):
(WebCore::WorkerModuleScriptLoader::taskMode):
* bindings/js/WorkerModuleScriptLoader.h: Copied from Source/WebCore/dom/ModuleFetchParameters.h.
* bindings/js/WorkerScriptFetcher.h: Added.
* dom/Document.cpp:
* dom/ExceptionCode.h:
* dom/LoadableModuleScript.cpp:
(WebCore::LoadableModuleScript::LoadableModuleScript):
(WebCore::LoadableModuleScript::load): Deleted.
* dom/LoadableModuleScript.h:
* dom/ModuleFetchParameters.h:
(WebCore::ModuleFetchParameters::create):
(WebCore::ModuleFetchParameters::isTopLevelModule const):
(WebCore::ModuleFetchParameters::ModuleFetchParameters):
* dom/ScriptElement.cpp:
(WebCore::ScriptElement::requestModuleScript):
* loader/ThreadableLoader.cpp:
(WebCore::ThreadableLoader::create):
* loader/ThreadableLoader.h:
(WebCore::ThreadableLoader::create):
* workers/DedicatedWorkerGlobalScope.h:
* workers/Worker.cpp:
(WebCore::Worker::Worker):
(WebCore::Worker::create):
(WebCore::Worker::notifyFinished):
* workers/Worker.h:
* workers/Worker.idl:
* workers/WorkerGlobalScope.cpp:
(WebCore::WorkerGlobalScope::WorkerGlobalScope):
(WebCore::WorkerGlobalScope::importScripts):
* workers/WorkerGlobalScope.h:
(WebCore::WorkerGlobalScope::credentials const):
* workers/WorkerGlobalScopeProxy.h:
* workers/WorkerMessagingProxy.cpp:
(WebCore::WorkerMessagingProxy::startWorkerGlobalScope):
* workers/WorkerMessagingProxy.h:
* workers/WorkerOrWorkletGlobalScope.cpp:
(WebCore::WorkerOrWorkletGlobalScope::WorkerOrWorkletGlobalScope):
* workers/WorkerOrWorkletGlobalScope.h:
(WebCore::WorkerOrWorkletGlobalScope::moduleLoader):
* workers/WorkerOrWorkletScriptController.cpp:
(WebCore::jsValueToModuleKey):
(WebCore::WorkerOrWorkletScriptController::evaluateModule):
(WebCore::WorkerOrWorkletScriptController::loadModuleSynchronously):
(WebCore::WorkerOrWorkletScriptController::linkAndEvaluateModule):
(WebCore::WorkerOrWorkletScriptController::loadAndEvaluateModule):
* workers/WorkerOrWorkletScriptController.h:
* workers/WorkerScriptLoader.cpp:
(WebCore::WorkerScriptLoader::loadAsynchronously):
(WebCore::WorkerScriptLoader::didReceiveResponse):
* workers/WorkerScriptLoader.h:
(WebCore::WorkerScriptLoader::responseSource const):
(WebCore::WorkerScriptLoader::isRedirected const):
* workers/WorkerThread.cpp:
(WebCore::WorkerParameters::isolatedCopy const):
(WebCore::WorkerThread::evaluateScriptIfNecessary):
* workers/WorkerThread.h:
* workers/WorkerType.h:
* workers/service/ServiceWorkerContainer.h:
* workers/service/ServiceWorkerGlobalScope.h:
* workers/service/ServiceWorkerJob.cpp:
(WebCore::ServiceWorkerJob::fetchScriptWithContext):
* workers/service/ServiceWorkerRegistrationOptions.h:
* workers/service/context/ServiceWorkerThread.cpp:
(WebCore::ServiceWorkerThread::ServiceWorkerThread):
* workers/service/server/SWServerWorker.h:
* worklets/PaintWorkletGlobalScope.h:
(WebCore::PaintWorkletGlobalScope::paintDefinitionMap): Deleted.
(WebCore::PaintWorkletGlobalScope::paintDefinitionLock): Deleted.
(WebCore::PaintWorkletGlobalScope::~PaintWorkletGlobalScope): Deleted.
* worklets/WorkletGlobalScope.cpp:
(WebCore::WorkletGlobalScope::fetchAndInvokeScript):
(WebCore::WorkletGlobalScope::processNextScriptFetchJobIfNeeded): Deleted.
(WebCore::WorkletGlobalScope::didReceiveResponse): Deleted.
(WebCore::WorkletGlobalScope::notifyFinished): Deleted.
(WebCore::WorkletGlobalScope::didCompleteScriptFetchJob): Deleted.
* worklets/WorkletGlobalScope.h:
LayoutTests:
* TestExpectations:
* http/tests/security/contentSecurityPolicy/1.1/module-scriptnonce-redirect-expected.txt:
* http/tests/subresource-integrity/sri-module-expected.txt:
* webaudio/audioworklet-addModule-failure-expected.txt:
* webaudio/worklet-crash-expected.txt:
Canonical link: https://commits.webkit.org/234389@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@273203 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2021-02-20 20:28:27 +00:00
|
|
|
bindings/js/WorkerScriptFetcher.h
|
2019-04-18 23:20:26 +00:00
|
|
|
|
|
|
|
bridge/Bridge.h
|
|
|
|
bridge/IdentifierRep.h
|
|
|
|
bridge/NP_jsobject.h
|
|
|
|
bridge/npruntime_impl.h
|
|
|
|
bridge/npruntime_internal.h
|
|
|
|
bridge/runtime_method.h
|
|
|
|
bridge/runtime_object.h
|
|
|
|
bridge/runtime_root.h
|
|
|
|
|
|
|
|
bridge/c/c_instance.h
|
|
|
|
bridge/c/c_utility.h
|
|
|
|
|
|
|
|
bridge/jsc/BridgeJSC.h
|
|
|
|
|
|
|
|
contentextensions/CombinedFiltersAlphabet.h
|
|
|
|
contentextensions/CombinedURLFilters.h
|
|
|
|
contentextensions/CompiledContentExtension.h
|
|
|
|
contentextensions/ContentExtension.h
|
|
|
|
contentextensions/ContentExtensionActions.h
|
|
|
|
contentextensions/ContentExtensionCompiler.h
|
|
|
|
contentextensions/ContentExtensionError.h
|
|
|
|
contentextensions/ContentExtensionParser.h
|
|
|
|
contentextensions/ContentExtensionRule.h
|
|
|
|
contentextensions/ContentExtensionsBackend.h
|
|
|
|
contentextensions/ContentExtensionsDebugging.h
|
|
|
|
contentextensions/ContentRuleListResults.h
|
|
|
|
contentextensions/DFA.h
|
|
|
|
contentextensions/DFABytecode.h
|
|
|
|
contentextensions/DFABytecodeCompiler.h
|
|
|
|
contentextensions/DFABytecodeInterpreter.h
|
|
|
|
contentextensions/DFACombiner.h
|
|
|
|
contentextensions/DFANode.h
|
|
|
|
contentextensions/ImmutableNFA.h
|
|
|
|
contentextensions/ImmutableNFANodeBuilder.h
|
|
|
|
contentextensions/MutableRange.h
|
|
|
|
contentextensions/MutableRangeList.h
|
|
|
|
contentextensions/NFA.h
|
|
|
|
contentextensions/NFANode.h
|
|
|
|
contentextensions/NFAToDFA.h
|
2020-12-04 00:01:23 +00:00
|
|
|
contentextensions/SerializedNFA.h
|
2019-04-18 23:20:26 +00:00
|
|
|
contentextensions/Term.h
|
|
|
|
contentextensions/URLFilterParser.h
|
|
|
|
|
|
|
|
crypto/SerializedCryptoKeyWrap.h
|
|
|
|
|
2020-09-25 17:19:48 +00:00
|
|
|
css/CSSConditionRule.h
|
2019-04-18 23:20:26 +00:00
|
|
|
css/CSSCustomPropertyValue.h
|
|
|
|
css/CSSFontFaceRule.h
|
|
|
|
css/CSSFontFamily.h
|
2019-05-27 21:27:15 +00:00
|
|
|
css/CSSGridIntegerRepeatValue.h
|
2019-04-18 23:20:26 +00:00
|
|
|
css/CSSGroupingRule.h
|
|
|
|
css/CSSImportRule.h
|
|
|
|
css/CSSLineBoxContainValue.h
|
|
|
|
css/CSSMediaRule.h
|
|
|
|
css/CSSPageRule.h
|
|
|
|
css/CSSPrimitiveValue.h
|
|
|
|
css/CSSPrimitiveValueMappings.h
|
|
|
|
css/CSSProperty.h
|
|
|
|
css/CSSRegisteredCustomProperty.h
|
|
|
|
css/CSSRule.h
|
|
|
|
css/CSSRuleList.h
|
|
|
|
css/CSSStyleDeclaration.h
|
|
|
|
css/CSSStyleRule.h
|
|
|
|
css/CSSStyleSheet.h
|
|
|
|
css/CSSToLengthConversionData.h
|
2019-11-13 06:51:57 +00:00
|
|
|
css/CSSUnits.h
|
2019-04-18 23:20:26 +00:00
|
|
|
css/CSSUnknownRule.h
|
|
|
|
css/CSSValue.h
|
|
|
|
css/CSSValueList.h
|
|
|
|
css/CSSVariableData.h
|
|
|
|
css/CSSVariableReferenceValue.h
|
|
|
|
css/Counter.h
|
|
|
|
css/DeprecatedCSSOMCounter.h
|
|
|
|
css/DeprecatedCSSOMPrimitiveValue.h
|
|
|
|
css/DeprecatedCSSOMRGBColor.h
|
|
|
|
css/DeprecatedCSSOMRect.h
|
|
|
|
css/DeprecatedCSSOMValue.h
|
|
|
|
css/DeprecatedCSSOMValueList.h
|
2020-11-17 01:34:46 +00:00
|
|
|
css/FontLoadTimingOverride.h
|
2019-04-18 23:20:26 +00:00
|
|
|
css/LengthFunctions.h
|
|
|
|
css/MediaList.h
|
|
|
|
css/MediaQueryEvaluator.h
|
|
|
|
css/MediaQueryExpression.h
|
|
|
|
css/MediaQueryParserContext.h
|
|
|
|
css/Rect.h
|
|
|
|
css/StyleColor.h
|
|
|
|
css/StyleProperties.h
|
2019-10-28 16:02:53 +00:00
|
|
|
css/StyleRuleType.h
|
2019-04-18 23:20:26 +00:00
|
|
|
css/StyleSheet.h
|
|
|
|
css/StyleSheetContents.h
|
|
|
|
css/StyleSheetList.h
|
|
|
|
|
2021-05-30 00:51:26 +00:00
|
|
|
css/calc/CSSCalcValue.h
|
|
|
|
|
2019-04-18 23:20:26 +00:00
|
|
|
css/parser/CSSParser.h
|
|
|
|
css/parser/CSSParserContext.h
|
|
|
|
css/parser/CSSParserMode.h
|
|
|
|
css/parser/CSSParserToken.h
|
|
|
|
css/parser/CSSParserTokenRange.h
|
|
|
|
|
2020-09-23 23:39:29 +00:00
|
|
|
display/DisplayTree.h
|
|
|
|
display/DisplayTreeBuilder.h
|
2020-09-20 19:21:31 +00:00
|
|
|
display/DisplayView.h
|
|
|
|
|
2020-12-07 00:35:56 +00:00
|
|
|
display/compositing/DisplayLayerController.h
|
|
|
|
|
2020-09-23 23:39:29 +00:00
|
|
|
display/css/DisplayBox.h
|
|
|
|
display/css/DisplayCSSPainter.h
|
|
|
|
display/css/DisplayContainerBox.h
|
|
|
|
display/css/DisplayImageBox.h
|
|
|
|
display/css/DisplayReplacedBox.h
|
|
|
|
display/css/DisplayStyle.h
|
|
|
|
|
2021-01-25 20:06:25 +00:00
|
|
|
dom/AbortSignal.h
|
2020-10-17 20:33:53 +00:00
|
|
|
dom/AbstractRange.h
|
2019-04-18 23:20:26 +00:00
|
|
|
dom/ActiveDOMCallback.h
|
|
|
|
dom/ActiveDOMObject.h
|
2021-01-25 20:06:25 +00:00
|
|
|
dom/AddEventListenerOptions.h
|
2019-04-18 23:20:26 +00:00
|
|
|
dom/Attr.h
|
|
|
|
dom/Attribute.h
|
2021-07-16 00:36:39 +00:00
|
|
|
dom/BroadcastChannel.h
|
|
|
|
dom/BroadcastChannelIdentifier.h
|
|
|
|
dom/BroadcastChannelRegistry.h
|
Begin moving off of live ranges for WebKit internals
https://bugs.webkit.org/show_bug.cgi?id=208432
Reviewed by Daniel Bates.
Source/WebCore:
The DOM Range class is a live range. The live updating feature of these ranges mean
they are expensive to create and destroy and also make all DOM mutation more expensive
while they are alive. We will be able to speed up, likely measurable on Speedometer,
if we can cut down uses of live ranges.
- Refactored the StaticRange class to create two new structs.
- The BoundaryPoint struct implements what the DOM standard calls a boundary point:
a node and offset. Similar to the RangeBoundaryPoint class, which supports
being the boundary point of a live range, but simpler and not live.
- The SimpleRange struct implements what the DOM standard calls a range (not a live
range). Like StaticRange but without reference counting and DOM binding.
- Since StaticRange is derived publicly from SimpleRange you can pass either to any
function that takes a SimpleRange. And since there is a constructor to create a
SimpleRange from a Range you can pass a Range to those functions too.
- Renamed StaticRange::createFromRange to StaticRange::create.
* Headers.cmake: Added BoundaryPoint.h, SimpleRange.h, and StaticRange.h.
* Sources.txt: Added BoundaryPoint.cpp and SimpleRange.cpp.
* WebCore.xcodeproj/project.pbxproj: Added BoundaryPoint.cpp/h and SimpleRange.cpp/h.
* dom/BoundaryPoint.cpp: Added.
* dom/BoundaryPoint.h: Added.
* dom/SimpleRange.cpp: Added.
* dom/SimpleRange.h: Added.
* dom/StaticRange.cpp:
(WebCore::StaticRange::StaticRange): Take an rvalue reference to a SimpleRange.
(WebCore::StaticRange::create): Ditto. Changed the other overloads to create
a SimpleRange first then call through to the main one.
(WebCore::isDocumentTypeOrAttr): Wrote a much more efficient version of this.
The old version called the virtual function nodeType twice. This calls it at
most once, and mostly doesn't call it at all.
* dom/StaticRange.h: Simplified this class, putting most of the actual range
logic into the base class. Note that this change eliminated the peculiar code
that in the == operator that compared nodes using isEqualNode instead of using
node identity. There was no one who needed that other behavior. Also fixed
mistaken use of unsigned long in StaticRange::Init. It's unsigned long in
the IDL file, but confusingly that's just unsigned in .cpp files.
* dom/StaticRange.idl: Tweaked formatting.
* editing/CompositeEditCommand.cpp:
(WebCore::CompositeEditCommand::targetRanges const): Updated for rename
of StaticRange::create.
* editing/ReplaceRangeWithTextCommand.cpp:
(WebCore::ReplaceRangeWithTextCommand::doApply): Updated since VisibleSelection
takes SimpleRange now.
(WebCore::ReplaceRangeWithTextCommand::targetRanges const): Updated for
rename of StaticRange::create.
* editing/SpellingCorrectionCommand.cpp:
(WebCore::SpellingCorrectionCommand::SpellingCorrectionCommand): Updated
since a selection now takes a SimpleRange&, not a StaticRange.
(WebCore::SpellingCorrectionCommand::targetRanges const): Updated for
rename of StaticRange::create.
* editing/TypingCommand.cpp:
(WebCore::TypingCommand::willAddTypingToOpenCommand): Ditto.
* editing/VisibleSelection.cpp:
(WebCore::VisibleSelection::VisibleSelection): Use SimpleRange
instead of StaticRange and Range.
* editing/VisibleSelection.h: Updated for the above.
* editing/mac/EditorMac.mm: Added include.
* page/DragController.cpp: Ditto.
* page/TextIndicator.cpp: Ditto.
(WebCore::TextIndicator::createWithRange): Updated since VisibleSelection
takes SimpleRange now.
* page/mac/EventHandlerMac.mm:
(WebCore::InlineTextBox::collectMarkedTextsForHighlights): Tweaked coding
style a bit.
Source/WebKit:
* Shared/EditingRange.cpp:
(WebKit::EditingRange::fromRange): Initialize out arguments.
* WebProcess/InjectedBundle/DOM/InjectedBundleRangeHandle.cpp: Added include.
* WebProcess/WebPage/FindController.cpp: Ditto.
* WebProcess/WebPage/WebPage.cpp: Ditto.
* WebProcess/WebPage/mac/WebPageMac.mm: Ditto.
Source/WebKitLegacy/ios:
* WebCoreSupport/WebFrameIOS.mm: Added include.
Source/WebKitLegacy/mac:
* WebCoreSupport/WebContextMenuClient.mm: Added include.
* WebView/WebFrame.mm: Ditto.
(-[WebFrame _convertToNSRange:]): Initialized out arguments.
Canonical link: https://commits.webkit.org/221736@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@258129 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2020-03-09 04:00:31 +00:00
|
|
|
dom/BoundaryPoint.h
|
2019-04-18 23:20:26 +00:00
|
|
|
dom/CDATASection.h
|
|
|
|
dom/CallbackResult.h
|
|
|
|
dom/CharacterData.h
|
|
|
|
dom/CollectionIndexCache.h
|
|
|
|
dom/Comment.h
|
|
|
|
dom/ContainerNode.h
|
|
|
|
dom/ContextDestructionObserver.h
|
|
|
|
dom/CustomElementReactionQueue.h
|
|
|
|
dom/DOMException.h
|
|
|
|
dom/DOMHighResTimeStamp.h
|
|
|
|
dom/DOMImplementation.h
|
|
|
|
dom/DOMPasteAccess.h
|
|
|
|
dom/DOMRect.h
|
|
|
|
dom/DOMRectInit.h
|
|
|
|
dom/DOMRectList.h
|
|
|
|
dom/DOMRectReadOnly.h
|
|
|
|
dom/DOMTimeStamp.h
|
|
|
|
dom/DataTransfer.h
|
|
|
|
dom/DeviceOrientationClient.h
|
|
|
|
dom/DeviceOrientationData.h
|
|
|
|
dom/DeviceOrientationOrMotionPermissionState.h
|
|
|
|
dom/Document.h
|
Fix WPT test resource-timing/cross-origin-redirects.html
https://bugs.webkit.org/show_bug.cgi?id=190523
<rdar://45227788>
Reviewed by Brady Eidson.
LayoutTests/imported/w3c:
* web-platform-tests/navigation-timing/nav2_test_redirect_server-expected.txt:
* web-platform-tests/navigation-timing/nav2_test_redirect_server.html:
Sometimes, with our use of Performance::reduceTimeResolution, the event times are equal to each other.
Allow this.
* web-platform-tests/resource-timing/cross-origin-redirects-expected.txt: Added.
* web-platform-tests/resource-timing/cross-origin-redirects.html: Added.
* web-platform-tests/resource-timing/resources/entry-invariants.js: Added.
(const.assert_all_equal_):
(const.assert_ordered_):
(const.assert_zeroed_):
(const.assert_not_negative_):
(const.assert_positive_):
(const.attribute_test_internal):
(async const):
(const.attribute_test_with_validator):
* web-platform-tests/resource-timing/resources/resource-loaders.js: Added.
(const.load.font.path.return.document.fonts.ready.then):
(const.load.stylesheet.async path):
(const.load.iframe.async path):
(const.load.script.async path):
(const.load.xhr_sync.async path):
Source/WebCore:
Test: imported/w3c/web-platform-tests/resource-timing/cross-origin-redirects.html
This test took more to fix than I thought it would. We used to collect our timing data
from various sources into various structures, mostly based on Google's work from 2010 with
a few things tacked on to it. The timing specifications have changed considerably in the
last 11 years, and so should the shape of the structures we put the data into.
We used to have a LoadTiming structure in various places that claimed to contain the redirect times,
but markRedirectStart and markRedirectEnd were never called. Instead we tried to collect this data
from the SubResourceLoader and DocumentLoader reporting redirects in the web process. This wasn't great.
Redirect timing is best collected in the network process by the framework doing the redirecting,
and now we have the NSURLSessionTaskMetrics API to get the data we need.
I've made NetworkLoadMetrics the structure that contains all the network load metrics from the network process.
DocumentEventTiming is owned in the web process by the Document, and it contains the load event timing data.
ResourceLoadTiming is owned by the ResourceLoader, and it contains the fetch start and end times including the
parts of the fetch algorithm that happen in the web process.
DocumentLoadTiming inherits from it and is owned by the DocumentLoader, which reflects the fact that
PerformanceNavigationTiming inherits from PerformanceResourceTiming in the specs.
With these structures in place, we now have the infrastructure to collect timing data and expose it correctly.
Another thing that has changed is that these structures consistently store the timing data in the MonotonicTime type,
which is the number of seconds since the machine restarted. NetworkLoadMetrics used to confusingly store fetch
start time and then other network times as deltas from it, and we would pretend that fetch start time was the same
as the fetch start time in the web process and calculate everything from the deltas. This is an unfortunate
consequence of my younger self not realizing that the double values from NSURLConnection._timingData are values to
be put into [NSDate initWithTimeIntervalSinceReferenceDate] then pulled out with timeIntervalSince1970 to get
WallTime. I was confused because they weren't WallTime or MonotonicTime, so I only dealt with them as deltas
from each other. Consistently using MonotonicTime makes all this code much more straightforward.
I also use std::numeric_limits<uint64_t>::max() instead of std::numeric_limits<uint32_t>::max() as a sentinel value
for requestHeaderBytesSent and responseHeaderBytesReceived to make everything more sane. I'm not too worried about
the metrics of downloads of exactly 4GB, but they should also be fixed.
A consequence of collecting the redirect times in the network process is that we have to move the
SecurityOrigin::canRequest checks to see if the redirects are same-origin to ResourceHandle and NetworkDataTask.
* Headers.cmake:
* Sources.txt:
* WebCore.xcodeproj/project.pbxproj:
* dom/Document.cpp:
(WebCore::Document::setReadyState):
(WebCore::Document::finishedParsing):
(WebCore::Document::monotonicTimestamp const):
* dom/Document.h:
(WebCore::Document::eventTiming const):
(WebCore::Document::timing const): Deleted.
* dom/DocumentEventTiming.h: Copied from Source/WebCore/dom/DocumentTiming.h.
* inspector/agents/InspectorNetworkAgent.cpp:
(WebCore::InspectorNetworkAgent::buildObjectForTiming):
(WebCore::InspectorNetworkAgent::buildObjectForMetrics):
(WebCore::InspectorNetworkAgent::buildObjectForResourceResponse):
(WebCore::InspectorNetworkAgent::didFinishLoading):
* inspector/agents/InspectorNetworkAgent.h:
* loader/DocumentLoadTiming.h: Renamed from Source/WebCore/loader/LoadTiming.h.
(WebCore::DocumentLoadTiming::timeOrigin const):
(WebCore::DocumentLoadTiming::markUnloadEventStart):
(WebCore::DocumentLoadTiming::markUnloadEventEnd):
(WebCore::DocumentLoadTiming::markLoadEventStart):
(WebCore::DocumentLoadTiming::markLoadEventEnd):
(WebCore::DocumentLoadTiming::setHasSameOriginAsPreviousDocument):
(WebCore::DocumentLoadTiming::unloadEventStart const):
(WebCore::DocumentLoadTiming::unloadEventEnd const):
(WebCore::DocumentLoadTiming::loadEventStart const):
(WebCore::DocumentLoadTiming::loadEventEnd const):
(WebCore::DocumentLoadTiming::hasSameOriginAsPreviousDocument const):
* loader/DocumentLoader.cpp:
(WebCore::DocumentLoader::finishedLoading):
(WebCore::DocumentLoader::willSendRequest):
(WebCore::DocumentLoader::dataReceived):
(WebCore::DocumentLoader::startLoadingMainResource):
* loader/DocumentLoader.h:
(WebCore::DocumentLoader::timing const):
(WebCore::DocumentLoader::timing):
(WebCore::DocumentLoader::resetTiming):
* loader/DocumentThreadableLoader.cpp:
(WebCore::DocumentThreadableLoader::loadRequest):
* loader/FrameLoader.cpp:
(WebCore::FrameLoader::dispatchUnloadEvents):
* loader/LoadTiming.cpp: Removed.
* loader/ResourceLoadTiming.h: Renamed from Source/WebCore/dom/DocumentTiming.h.
(WebCore::ResourceLoadTiming::markStartTime):
(WebCore::ResourceLoadTiming::markEndTime):
(WebCore::ResourceLoadTiming::startTime const):
(WebCore::ResourceLoadTiming::endTime const):
(WebCore::ResourceLoadTiming::isolatedCopy const):
* loader/ResourceLoader.cpp:
(WebCore::ResourceLoader::init):
* loader/ResourceLoader.h:
(WebCore::ResourceLoader::loadTiming):
* loader/ResourceTiming.cpp:
(WebCore::ResourceTiming::fromMemoryCache):
(WebCore::ResourceTiming::fromLoad):
(WebCore::ResourceTiming::fromSynchronousLoad):
(WebCore::ResourceTiming::ResourceTiming):
(WebCore::ResourceTiming::isolatedCopy const):
(WebCore::ResourceTiming::fromCache): Deleted.
* loader/ResourceTiming.h:
(WebCore::ResourceTiming::resourceLoadTiming const):
(WebCore::ResourceTiming::ResourceTiming):
(WebCore::ResourceTiming::loadTiming const): Deleted.
* loader/ResourceTimingInformation.cpp:
* loader/SubresourceLoader.cpp:
(WebCore::SubresourceLoader::willSendRequestInternal):
(WebCore::SubresourceLoader::didFinishLoading):
* loader/cache/CachedResource.h:
* loader/cache/CachedResourceLoader.cpp:
(WebCore::CachedResourceLoader::requestResource):
* page/DOMWindow.cpp:
(WebCore::DOMWindow::performance const):
* page/Performance.cpp:
(WebCore::Performance::addNavigationTiming):
* page/Performance.h:
* page/PerformanceNavigation.cpp:
(WebCore::PerformanceNavigation::redirectCount const):
* page/PerformanceNavigationTiming.cpp:
(WebCore::PerformanceNavigationTiming::PerformanceNavigationTiming):
(WebCore::PerformanceNavigationTiming::millisecondsSinceOrigin const):
(WebCore::PerformanceNavigationTiming::sameOriginCheckFails const):
(WebCore::PerformanceNavigationTiming::unloadEventStart const):
(WebCore::PerformanceNavigationTiming::unloadEventEnd const):
(WebCore::PerformanceNavigationTiming::domInteractive const):
(WebCore::PerformanceNavigationTiming::domContentLoadedEventStart const):
(WebCore::PerformanceNavigationTiming::domContentLoadedEventEnd const):
(WebCore::PerformanceNavigationTiming::domComplete const):
(WebCore::PerformanceNavigationTiming::loadEventStart const):
(WebCore::PerformanceNavigationTiming::loadEventEnd const):
(WebCore::PerformanceNavigationTiming::redirectCount const):
* page/PerformanceNavigationTiming.h:
* page/PerformanceResourceTiming.cpp:
(WebCore::networkLoadTimeToDOMHighResTimeStamp):
(WebCore::fetchStart):
(WebCore::entryStartTime):
(WebCore::entryEndTime):
(WebCore::PerformanceResourceTiming::redirectStart const):
(WebCore::PerformanceResourceTiming::redirectEnd const):
(WebCore::PerformanceResourceTiming::fetchStart const):
(WebCore::PerformanceResourceTiming::domainLookupStart const):
(WebCore::PerformanceResourceTiming::domainLookupEnd const):
(WebCore::PerformanceResourceTiming::connectStart const):
(WebCore::PerformanceResourceTiming::connectEnd const):
(WebCore::PerformanceResourceTiming::secureConnectionStart const):
(WebCore::PerformanceResourceTiming::requestStart const):
(WebCore::PerformanceResourceTiming::responseStart const):
(WebCore::PerformanceResourceTiming::responseEnd const):
(WebCore::monotonicTimeToDOMHighResTimeStamp): Deleted.
(WebCore::PerformanceResourceTiming::networkLoadTimeToDOMHighResTimeStamp const): Deleted.
* page/PerformanceResourceTiming.h:
* page/PerformanceTiming.cpp:
(WebCore::PerformanceTiming::navigationStart const):
(WebCore::PerformanceTiming::unloadEventStart const):
(WebCore::PerformanceTiming::unloadEventEnd const):
(WebCore::PerformanceTiming::redirectStart const):
(WebCore::PerformanceTiming::redirectEnd const):
(WebCore::PerformanceTiming::fetchStart const):
(WebCore::PerformanceTiming::domainLookupStart const):
(WebCore::PerformanceTiming::domainLookupEnd const):
(WebCore::PerformanceTiming::connectStart const):
(WebCore::PerformanceTiming::connectEnd const):
(WebCore::PerformanceTiming::secureConnectionStart const):
(WebCore::PerformanceTiming::requestStart const):
(WebCore::PerformanceTiming::responseStart const):
(WebCore::PerformanceTiming::responseEnd const):
(WebCore::PerformanceTiming::domLoading const):
(WebCore::PerformanceTiming::domInteractive const):
(WebCore::PerformanceTiming::domContentLoadedEventStart const):
(WebCore::PerformanceTiming::domContentLoadedEventEnd const):
(WebCore::PerformanceTiming::domComplete const):
(WebCore::PerformanceTiming::loadEventStart const):
(WebCore::PerformanceTiming::loadEventEnd const):
(WebCore::PerformanceTiming::documentLoader const):
(WebCore::PerformanceTiming::documentEventTiming const):
(WebCore::PerformanceTiming::documentLoadTiming const):
(WebCore::PerformanceTiming::networkLoadMetrics const):
(WebCore::PerformanceTiming::monotonicTimeToIntegerMilliseconds const):
(WebCore::PerformanceTiming::documentTiming const): Deleted.
(WebCore::PerformanceTiming::loadTiming const): Deleted.
(WebCore::PerformanceTiming::resourceLoadTimeRelativeToFetchStart const): Deleted.
* page/PerformanceTiming.h:
* platform/network/NetworkLoadMetrics.h:
(WebCore::NetworkLoadMetrics::isolatedCopy const):
(WebCore::NetworkLoadMetrics::operator== const):
(WebCore::NetworkLoadMetrics::encode const):
(WebCore::NetworkLoadMetrics::decode):
* platform/network/ResourceHandle.cpp:
(WebCore::ResourceHandle::hasCrossOriginRedirect const):
(WebCore::ResourceHandle::setHasCrossOriginRedirect):
(WebCore::ResourceHandle::incrementRedirectCount):
(WebCore::ResourceHandle::redirectCount const):
(WebCore::ResourceHandle::startTimeBeforeRedirects const):
(WebCore::ResourceHandle::networkLoadMetrics):
(WebCore::ResourceHandle::setNetworkLoadMetrics):
* platform/network/ResourceHandle.h:
* platform/network/ResourceHandleInternal.h:
* platform/network/cocoa/NetworkLoadMetrics.mm:
(WebCore::dateToMonotonicTime):
(WebCore::packageTimingData):
(WebCore::copyTimingData):
* platform/network/cocoa/WebCoreNSURLSession.mm:
(networkLoadMetricsDate):
(-[WebCoreNSURLSessionTaskTransactionMetrics fetchStartDate]):
(-[WebCoreNSURLSessionTaskTransactionMetrics domainLookupStartDate]):
(-[WebCoreNSURLSessionTaskTransactionMetrics domainLookupEndDate]):
(-[WebCoreNSURLSessionTaskTransactionMetrics connectStartDate]):
(-[WebCoreNSURLSessionTaskTransactionMetrics secureConnectionStartDate]):
(-[WebCoreNSURLSessionTaskTransactionMetrics connectEndDate]):
(-[WebCoreNSURLSessionTaskTransactionMetrics requestStartDate]):
(-[WebCoreNSURLSessionTaskTransactionMetrics responseStartDate]):
(-[WebCoreNSURLSessionTaskTransactionMetrics responseEndDate]):
* platform/network/curl/CurlContext.cpp:
(WebCore::CurlHandle::getNetworkLoadMetrics):
* platform/network/curl/CurlContext.h:
* platform/network/curl/CurlRequest.cpp:
(WebCore::CurlRequest::didCompleteTransfer):
(WebCore::CurlRequest::networkLoadMetrics):
* platform/network/mac/ResourceHandleMac.mm:
(WebCore::ResourceHandle::start):
* platform/network/mac/WebCoreResourceHandleAsOperationQueueDelegate.h:
* platform/network/mac/WebCoreResourceHandleAsOperationQueueDelegate.mm:
(-[WebCoreResourceHandleAsOperationQueueDelegate connection:willSendRequest:redirectResponse:]):
(-[WebCoreResourceHandleAsOperationQueueDelegate connection:didReceiveResponse:]):
(-[WebCoreResourceHandleAsOperationQueueDelegate connectionDidFinishLoading:]):
Source/WebKit:
* NetworkProcess/cocoa/NetworkDataTaskCocoa.mm:
(WebKit::NetworkDataTaskCocoa::willPerformHTTPRedirection):
* NetworkProcess/cocoa/NetworkSessionCocoa.mm:
(-[WKNetworkSessionDelegate URLSession:task:didFinishCollectingMetrics:]):
(-[WKNetworkSessionDelegate URLSession:dataTask:didReceiveResponse:completionHandler:]):
* NetworkProcess/soup/NetworkDataTaskSoup.cpp:
(WebKit::NetworkDataTaskSoup::NetworkDataTaskSoup):
(WebKit::NetworkDataTaskSoup::clearRequest):
(WebKit::NetworkDataTaskSoup::resume):
(WebKit::NetworkDataTaskSoup::didSendRequest):
(WebKit::NetworkDataTaskSoup::dispatchDidCompleteWithError):
(WebKit::NetworkDataTaskSoup::continueHTTPRedirection):
(WebKit::NetworkDataTaskSoup::networkEvent):
(WebKit::NetworkDataTaskSoup::didStartRequest):
(WebKit::NetworkDataTaskSoup::didRestart):
LayoutTests:
* http/tests/misc/webtiming-slow-load-expected.txt:
* http/tests/misc/webtiming-slow-load.py:
Our new metrics gathering now matches Firefox instead of Chrome in PerformanceResourceTiming::responseEnd in this edge case of a deprecated API.
Update expectations accordingly.
* platform/mac-wk1/TestExpectations:
Bringing this test to passing in WK2 makes it flaky in WK1 because we don't get good redirect timing data from CFNetwork through NSURLConnection.
* platform/win/http/tests/misc/webtiming-one-redirect-expected.txt: Added.
* platform/win/http/tests/misc/webtiming-slow-load-expected.txt: Copied from LayoutTests/http/tests/misc/webtiming-slow-load-expected.txt.
* platform/win/http/tests/misc/webtiming-two-redirects-expected.txt: Added.
The network layer is now responsible for counting redirects and providing redirect timings.
Our friend CFURLConnection doesn't have that ability, so it doesn't pass these tests any more.
It never supported any timing APIs and other tests are skipped.
Canonical link: https://commits.webkit.org/238416@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@278391 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2021-06-03 01:25:53 +00:00
|
|
|
dom/DocumentEventTiming.h
|
2021-04-12 09:26:42 +00:00
|
|
|
dom/DocumentFontLoader.h
|
2019-04-18 23:20:26 +00:00
|
|
|
dom/DocumentFragment.h
|
2019-07-10 20:30:26 +00:00
|
|
|
dom/DocumentFullscreen.h
|
2019-04-18 23:20:26 +00:00
|
|
|
dom/DocumentMarker.h
|
|
|
|
dom/DocumentMarkerController.h
|
2019-05-07 19:55:29 +00:00
|
|
|
dom/DocumentStorageAccess.h
|
2019-04-18 23:20:26 +00:00
|
|
|
dom/DocumentType.h
|
|
|
|
dom/Element.h
|
|
|
|
dom/ElementAncestorIterator.h
|
|
|
|
dom/ElementChildIterator.h
|
2019-10-21 22:12:01 +00:00
|
|
|
dom/ElementContext.h
|
2019-04-18 23:20:26 +00:00
|
|
|
dom/ElementData.h
|
|
|
|
dom/ElementIdentifier.h
|
|
|
|
dom/ElementIterator.h
|
|
|
|
dom/ElementIteratorAssertions.h
|
|
|
|
dom/ElementTraversal.h
|
|
|
|
dom/Event.h
|
|
|
|
dom/EventInit.h
|
|
|
|
dom/EventListener.h
|
|
|
|
dom/EventListenerMap.h
|
2021-01-25 20:06:25 +00:00
|
|
|
dom/EventListenerOptions.h
|
2021-06-03 01:54:35 +00:00
|
|
|
dom/EventLoop.h
|
2019-04-18 23:20:26 +00:00
|
|
|
dom/EventModifierInit.h
|
|
|
|
dom/EventNames.h
|
|
|
|
dom/EventQueue.h
|
|
|
|
dom/EventTarget.h
|
2020-02-17 01:41:27 +00:00
|
|
|
dom/EventTargetConcrete.h
|
2019-04-18 23:20:26 +00:00
|
|
|
dom/Exception.h
|
|
|
|
dom/ExceptionCode.h
|
|
|
|
dom/ExceptionData.h
|
|
|
|
dom/ExceptionOr.h
|
2021-03-22 22:29:52 +00:00
|
|
|
dom/FocusOptions.h
|
2019-04-18 23:20:26 +00:00
|
|
|
dom/FragmentScriptingPermission.h
|
2019-04-19 00:12:34 +00:00
|
|
|
dom/FullscreenManager.h
|
2019-04-18 23:20:26 +00:00
|
|
|
dom/GCReachableRef.h
|
|
|
|
dom/InlineStyleSheetOwner.h
|
|
|
|
dom/KeyboardEvent.h
|
|
|
|
dom/LiveNodeList.h
|
|
|
|
dom/LoadableScript.h
|
|
|
|
dom/MessagePort.h
|
|
|
|
dom/MessagePortIdentifier.h
|
|
|
|
dom/MouseEvent.h
|
|
|
|
dom/MouseEventInit.h
|
|
|
|
dom/MouseRelatedEvent.h
|
|
|
|
dom/MutationEvent.h
|
|
|
|
dom/MutationObserver.h
|
|
|
|
dom/NameNodeList.h
|
|
|
|
dom/NamedNodeMap.h
|
|
|
|
dom/NativeNodeFilter.h
|
|
|
|
dom/Node.h
|
|
|
|
dom/NodeConstants.h
|
|
|
|
dom/NodeFilter.h
|
|
|
|
dom/NodeFilterCondition.h
|
|
|
|
dom/NodeIterator.h
|
|
|
|
dom/NodeList.h
|
|
|
|
dom/NodeRenderStyle.h
|
|
|
|
dom/NodeTraversal.h
|
|
|
|
dom/OverflowEvent.h
|
2020-12-09 17:03:08 +00:00
|
|
|
dom/PointerEvent.h
|
2021-02-23 03:16:32 +00:00
|
|
|
dom/PointerEventTypeNames.h
|
2019-04-18 23:20:26 +00:00
|
|
|
dom/Position.h
|
|
|
|
dom/ProcessingInstruction.h
|
|
|
|
dom/ProgressEvent.h
|
|
|
|
dom/QualifiedName.h
|
|
|
|
dom/RadioButtonGroups.h
|
|
|
|
dom/Range.h
|
|
|
|
dom/RangeBoundaryPoint.h
|
|
|
|
dom/RegisteredEventListener.h
|
|
|
|
dom/RenderedDocumentMarker.h
|
|
|
|
dom/ScriptDisallowedScope.h
|
|
|
|
dom/ScriptElement.h
|
|
|
|
dom/ScriptElementCachedScriptFetcher.h
|
|
|
|
dom/ScriptExecutionContext.h
|
|
|
|
dom/SecurityContext.h
|
|
|
|
dom/SecurityPolicyViolationEvent.h
|
2021-04-06 16:51:57 +00:00
|
|
|
dom/SelectionRestorationMode.h
|
2019-04-18 23:20:26 +00:00
|
|
|
dom/ShadowRoot.h
|
2020-12-01 15:21:33 +00:00
|
|
|
dom/ShadowRootInit.h
|
2019-04-18 23:20:26 +00:00
|
|
|
dom/ShadowRootMode.h
|
Begin moving off of live ranges for WebKit internals
https://bugs.webkit.org/show_bug.cgi?id=208432
Reviewed by Daniel Bates.
Source/WebCore:
The DOM Range class is a live range. The live updating feature of these ranges mean
they are expensive to create and destroy and also make all DOM mutation more expensive
while they are alive. We will be able to speed up, likely measurable on Speedometer,
if we can cut down uses of live ranges.
- Refactored the StaticRange class to create two new structs.
- The BoundaryPoint struct implements what the DOM standard calls a boundary point:
a node and offset. Similar to the RangeBoundaryPoint class, which supports
being the boundary point of a live range, but simpler and not live.
- The SimpleRange struct implements what the DOM standard calls a range (not a live
range). Like StaticRange but without reference counting and DOM binding.
- Since StaticRange is derived publicly from SimpleRange you can pass either to any
function that takes a SimpleRange. And since there is a constructor to create a
SimpleRange from a Range you can pass a Range to those functions too.
- Renamed StaticRange::createFromRange to StaticRange::create.
* Headers.cmake: Added BoundaryPoint.h, SimpleRange.h, and StaticRange.h.
* Sources.txt: Added BoundaryPoint.cpp and SimpleRange.cpp.
* WebCore.xcodeproj/project.pbxproj: Added BoundaryPoint.cpp/h and SimpleRange.cpp/h.
* dom/BoundaryPoint.cpp: Added.
* dom/BoundaryPoint.h: Added.
* dom/SimpleRange.cpp: Added.
* dom/SimpleRange.h: Added.
* dom/StaticRange.cpp:
(WebCore::StaticRange::StaticRange): Take an rvalue reference to a SimpleRange.
(WebCore::StaticRange::create): Ditto. Changed the other overloads to create
a SimpleRange first then call through to the main one.
(WebCore::isDocumentTypeOrAttr): Wrote a much more efficient version of this.
The old version called the virtual function nodeType twice. This calls it at
most once, and mostly doesn't call it at all.
* dom/StaticRange.h: Simplified this class, putting most of the actual range
logic into the base class. Note that this change eliminated the peculiar code
that in the == operator that compared nodes using isEqualNode instead of using
node identity. There was no one who needed that other behavior. Also fixed
mistaken use of unsigned long in StaticRange::Init. It's unsigned long in
the IDL file, but confusingly that's just unsigned in .cpp files.
* dom/StaticRange.idl: Tweaked formatting.
* editing/CompositeEditCommand.cpp:
(WebCore::CompositeEditCommand::targetRanges const): Updated for rename
of StaticRange::create.
* editing/ReplaceRangeWithTextCommand.cpp:
(WebCore::ReplaceRangeWithTextCommand::doApply): Updated since VisibleSelection
takes SimpleRange now.
(WebCore::ReplaceRangeWithTextCommand::targetRanges const): Updated for
rename of StaticRange::create.
* editing/SpellingCorrectionCommand.cpp:
(WebCore::SpellingCorrectionCommand::SpellingCorrectionCommand): Updated
since a selection now takes a SimpleRange&, not a StaticRange.
(WebCore::SpellingCorrectionCommand::targetRanges const): Updated for
rename of StaticRange::create.
* editing/TypingCommand.cpp:
(WebCore::TypingCommand::willAddTypingToOpenCommand): Ditto.
* editing/VisibleSelection.cpp:
(WebCore::VisibleSelection::VisibleSelection): Use SimpleRange
instead of StaticRange and Range.
* editing/VisibleSelection.h: Updated for the above.
* editing/mac/EditorMac.mm: Added include.
* page/DragController.cpp: Ditto.
* page/TextIndicator.cpp: Ditto.
(WebCore::TextIndicator::createWithRange): Updated since VisibleSelection
takes SimpleRange now.
* page/mac/EventHandlerMac.mm:
(WebCore::InlineTextBox::collectMarkedTextsForHighlights): Tweaked coding
style a bit.
Source/WebKit:
* Shared/EditingRange.cpp:
(WebKit::EditingRange::fromRange): Initialize out arguments.
* WebProcess/InjectedBundle/DOM/InjectedBundleRangeHandle.cpp: Added include.
* WebProcess/WebPage/FindController.cpp: Ditto.
* WebProcess/WebPage/WebPage.cpp: Ditto.
* WebProcess/WebPage/mac/WebPageMac.mm: Ditto.
Source/WebKitLegacy/ios:
* WebCoreSupport/WebFrameIOS.mm: Added include.
Source/WebKitLegacy/mac:
* WebCoreSupport/WebContextMenuClient.mm: Added include.
* WebView/WebFrame.mm: Ditto.
(-[WebFrame _convertToNSRange:]): Initialized out arguments.
Canonical link: https://commits.webkit.org/221736@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@258129 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2020-03-09 04:00:31 +00:00
|
|
|
dom/SimpleRange.h
|
2019-04-18 23:20:26 +00:00
|
|
|
dom/SimulatedClickOptions.h
|
|
|
|
dom/SpaceSplitString.h
|
Begin moving off of live ranges for WebKit internals
https://bugs.webkit.org/show_bug.cgi?id=208432
Reviewed by Daniel Bates.
Source/WebCore:
The DOM Range class is a live range. The live updating feature of these ranges mean
they are expensive to create and destroy and also make all DOM mutation more expensive
while they are alive. We will be able to speed up, likely measurable on Speedometer,
if we can cut down uses of live ranges.
- Refactored the StaticRange class to create two new structs.
- The BoundaryPoint struct implements what the DOM standard calls a boundary point:
a node and offset. Similar to the RangeBoundaryPoint class, which supports
being the boundary point of a live range, but simpler and not live.
- The SimpleRange struct implements what the DOM standard calls a range (not a live
range). Like StaticRange but without reference counting and DOM binding.
- Since StaticRange is derived publicly from SimpleRange you can pass either to any
function that takes a SimpleRange. And since there is a constructor to create a
SimpleRange from a Range you can pass a Range to those functions too.
- Renamed StaticRange::createFromRange to StaticRange::create.
* Headers.cmake: Added BoundaryPoint.h, SimpleRange.h, and StaticRange.h.
* Sources.txt: Added BoundaryPoint.cpp and SimpleRange.cpp.
* WebCore.xcodeproj/project.pbxproj: Added BoundaryPoint.cpp/h and SimpleRange.cpp/h.
* dom/BoundaryPoint.cpp: Added.
* dom/BoundaryPoint.h: Added.
* dom/SimpleRange.cpp: Added.
* dom/SimpleRange.h: Added.
* dom/StaticRange.cpp:
(WebCore::StaticRange::StaticRange): Take an rvalue reference to a SimpleRange.
(WebCore::StaticRange::create): Ditto. Changed the other overloads to create
a SimpleRange first then call through to the main one.
(WebCore::isDocumentTypeOrAttr): Wrote a much more efficient version of this.
The old version called the virtual function nodeType twice. This calls it at
most once, and mostly doesn't call it at all.
* dom/StaticRange.h: Simplified this class, putting most of the actual range
logic into the base class. Note that this change eliminated the peculiar code
that in the == operator that compared nodes using isEqualNode instead of using
node identity. There was no one who needed that other behavior. Also fixed
mistaken use of unsigned long in StaticRange::Init. It's unsigned long in
the IDL file, but confusingly that's just unsigned in .cpp files.
* dom/StaticRange.idl: Tweaked formatting.
* editing/CompositeEditCommand.cpp:
(WebCore::CompositeEditCommand::targetRanges const): Updated for rename
of StaticRange::create.
* editing/ReplaceRangeWithTextCommand.cpp:
(WebCore::ReplaceRangeWithTextCommand::doApply): Updated since VisibleSelection
takes SimpleRange now.
(WebCore::ReplaceRangeWithTextCommand::targetRanges const): Updated for
rename of StaticRange::create.
* editing/SpellingCorrectionCommand.cpp:
(WebCore::SpellingCorrectionCommand::SpellingCorrectionCommand): Updated
since a selection now takes a SimpleRange&, not a StaticRange.
(WebCore::SpellingCorrectionCommand::targetRanges const): Updated for
rename of StaticRange::create.
* editing/TypingCommand.cpp:
(WebCore::TypingCommand::willAddTypingToOpenCommand): Ditto.
* editing/VisibleSelection.cpp:
(WebCore::VisibleSelection::VisibleSelection): Use SimpleRange
instead of StaticRange and Range.
* editing/VisibleSelection.h: Updated for the above.
* editing/mac/EditorMac.mm: Added include.
* page/DragController.cpp: Ditto.
* page/TextIndicator.cpp: Ditto.
(WebCore::TextIndicator::createWithRange): Updated since VisibleSelection
takes SimpleRange now.
* page/mac/EventHandlerMac.mm:
(WebCore::InlineTextBox::collectMarkedTextsForHighlights): Tweaked coding
style a bit.
Source/WebKit:
* Shared/EditingRange.cpp:
(WebKit::EditingRange::fromRange): Initialize out arguments.
* WebProcess/InjectedBundle/DOM/InjectedBundleRangeHandle.cpp: Added include.
* WebProcess/WebPage/FindController.cpp: Ditto.
* WebProcess/WebPage/WebPage.cpp: Ditto.
* WebProcess/WebPage/mac/WebPageMac.mm: Ditto.
Source/WebKitLegacy/ios:
* WebCoreSupport/WebFrameIOS.mm: Added include.
Source/WebKitLegacy/mac:
* WebCoreSupport/WebContextMenuClient.mm: Added include.
* WebView/WebFrame.mm: Ditto.
(-[WebFrame _convertToNSRange:]): Initialized out arguments.
Canonical link: https://commits.webkit.org/221736@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@258129 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2020-03-09 04:00:31 +00:00
|
|
|
dom/StaticRange.h
|
2019-04-18 23:20:26 +00:00
|
|
|
dom/StyledElement.h
|
2019-11-03 20:01:55 +00:00
|
|
|
dom/TaskSource.h
|
2019-04-18 23:20:26 +00:00
|
|
|
dom/Text.h
|
|
|
|
dom/TextEvent.h
|
|
|
|
dom/TextEventInputType.h
|
|
|
|
dom/Touch.h
|
|
|
|
dom/Traversal.h
|
|
|
|
dom/TreeScope.h
|
|
|
|
dom/TreeScopeOrderedMap.h
|
|
|
|
dom/TreeWalker.h
|
|
|
|
dom/TypedElementDescendantIterator.h
|
|
|
|
dom/UIEvent.h
|
|
|
|
dom/UIEventInit.h
|
|
|
|
dom/UIEventWithKeyState.h
|
|
|
|
dom/UserActionElementSet.h
|
|
|
|
dom/UserGestureIndicator.h
|
|
|
|
dom/UserTypingGestureIndicator.h
|
|
|
|
dom/ViewportArguments.h
|
|
|
|
dom/VisibilityChangeClient.h
|
|
|
|
dom/VisibilityState.h
|
|
|
|
dom/WheelEvent.h
|
|
|
|
dom/XMLDocument.h
|
|
|
|
|
|
|
|
dom/messageports/MessagePortChannel.h
|
|
|
|
dom/messageports/MessagePortChannelProvider.h
|
|
|
|
dom/messageports/MessagePortChannelRegistry.h
|
|
|
|
dom/messageports/MessageWithMessagePorts.h
|
|
|
|
|
Move TextIterator::rangeFromLocationAndLength off of live ranges
https://bugs.webkit.org/show_bug.cgi?id=209408
Source/WebCore:
Reviewed by Antti Koivisto.
- Put CharacterRange into a header, CharacterRange.h.
- Replaced CharacterOffset with direct uses of uint64_t.
Because this can be a single offset into an entire document, use a
64-bit integer so we don't limit an entire document to 2^32 characters;
in theory this makes it so we can support a document with tons of
text nodes that add up to more than 2^32.
- Because CharacterRange uses 64-bit integers we can now convert more
easily to and from NSRange and CFRange on Cocoa platforms.
* Headers.cmake: Added CharacterRange.h.
* WebCore.xcodeproj/project.pbxproj: Ditto.
* accessibility/ios/WebAccessibilityObjectWrapperIOS.mm:
(-[WebAccessibilityObjectWrapper _convertToDOMRange:]):
Use CharacterRange, resolveCharacterLocation/Range.
* accessibility/mac/WebAccessibilityObjectWrapperMac.mm:
(AXAttributeStringSetSpelling): Ditto.
(-[WebAccessibilityObjectWrapper _textMarkerForIndex:]): Ditto.
* dom/DocumentMarkerController.cpp:
(WebCore::DocumentMarkerController::collectTextRanges): Take SimpleRange.
(WebCore::DocumentMarkerController::addMarker): Ditto.
(WebCore::DocumentMarkerController::addDictationResultMarker): Ditto.
(WebCore::DocumentMarkerController::addPlatformTextCheckingMarker): Ditto.
* dom/DocumentMarkerController.h: Updated for above changes.
* dom/Position.h: Export createLegacyEditingPosition so it can be used
outside of WebCore.
* dom/SimpleRange.cpp:
(WebCore::fastIsCharacterData): Added. Could be moved to the Node class.
(WebCore::length): Added. Could be moved to the Node class.
(WebCore::makeRangeSelectingNodeContents): Added. Analogous to the
Range::selectNodeContents function.
* dom/SimpleRange.h: Updated for the above.
* editing/AlternativeTextController.cpp:
(WebCore::AlternativeTextController::applyAlternativeTextToRange):
Use CharacterRange, resolveCharacterLocation/Range.
* editing/ApplyStyleCommand.cpp:
(WebCore::ApplyStyleCommand::applyBlockStyle): Ditto.
* editing/CharacterRange.h: Added.
* editing/CompositeEditCommand.cpp:
(WebCore::CompositeEditCommand::moveParagraphs):
Use CharacterRange, resolveCharacterLocation/Range.
* editing/Editing.cpp:
(WebCore::visiblePositionForIndex): Ditto.
* editing/Editor.cpp:
(WebCore::Editor::advanceToNextMisspelling): Ditto.
(WebCore::correctSpellcheckingPreservingTextCheckingParagraph): Ditto.
(WebCore::Editor::markAndReplaceFor): Ditto.
(WebCore::Editor::changeBackToReplacedString): Ditto.
(WebCore::Editor::scanRangeForTelephoneNumbers): Ditto.
(WebCore::Editor::rangeForTextCheckingResult const): Ditto.
* editing/TextCheckingHelper.cpp:
(WebCore::findGrammaticalErrors): Ditto.
(WebCore::findMisspellings): Ditto.
(WebCore::TextCheckingParagraph::invalidateParagraphRangeValues): Ditto.
(WebCore::TextCheckingParagraph::rangeLength const): Ditto.
(WebCore::TextCheckingParagraph::subrange const): Ditto.
(WebCore::TextCheckingParagraph::offsetTo const): Ditto.
(WebCore::TextCheckingParagraph::text const): Ditto. Also use StringView.
(WebCore::TextCheckingParagraph::checkingStart const): Ditto.
(WebCore::TextCheckingParagraph::checkingEnd const): Ditto. Also compute
this by adding start and length, and don't cache it.
(WebCore::TextCheckingParagraph::checkingLength const): Ditto.
(WebCore::TextCheckingParagraph::automaticReplacementStart const): Ditto.
(WebCore::TextCheckingParagraph::automaticReplacementLength const): Ditto.
(WebCore::TextCheckingHelper::findFirstMisspelling): Ditto.
(WebCore::TextCheckingHelper::findFirstMisspellingOrBadGrammar): Ditto.
(WebCore::TextCheckingHelper::findFirstGrammarDetail const): Ditto.
(WebCore::TextCheckingHelper::findFirstBadGrammar const): Ditto.
(WebCore::TextCheckingHelper::isUngrammatical const): Ditto.
(WebCore::TextCheckingHelper::guessesForMisspelledOrUngrammaticalRange const): Ditto.
(WebCore::TextCheckingHelper::markAllMisspellings): Ditto.
(WebCore::TextCheckingHelper::markAllBadGrammar): Ditto.
(WebCore::checkTextOfParagraph): Ditto.
* editing/TextCheckingHelper.h: Updated for the above. Also got rid of
m_checkingEnd since it's sufficient to cache the start and the length.
Should come back later and use CharacterRange instead of 2x CharacterCount.
* editing/TextIterator.cpp:
(WebCore::characterCount): Use uint64_t.
(WebCore::TextIterator::subrange): Deleted.
(WebCore::TextIterator::rangeFromLocationAndLength): Deleted.
(WebCore::clampedAdd): Added. Helps implement resolveCharacterRange in a way
that can work with any character count without concern about overflow.
(WebCore::resolveCharacterRange): Added. Replaces both subrange and
rangeFromLocationAndLength, using an algorithm close to the one from
the latter function, including workarounds it had. Replaced the boolean
"forSelectionPreservation" with the TextIteratorBehavior options, which seems
to make good sense at all the call sites.
(WebCore::resolveCharacterLocation): Added. Like resolveCharacterRange, but
instead of resolving CharacterRange to SimpleRange, resolves a character location
to a BoundaryPoint. Made a separate function for this in case we later refactor
for efficiency, but for now this simply calls resolveCharacterRange with a zero
length range.
* editing/TextIterator.h: Moved CharacterCount and CharagerRange into a
separate header. Replaced TextIterator::rangeFromLocationAndLength and
TextIterator::subrange with resolveCharacterLocation and resolveCharacterRange.
* editing/cocoa/DataDetection.mm:
(WebCore::detectItemAtPositionWithRange): Use CharacterRange,
resolveCharacterLocation/Range.
(WebCore::DataDetection::detectContentInRange): Ditto.
* editing/cocoa/DictionaryLookup.mm:
(WebCore::DictionaryLookup::rangeForSelection): Ditto.
(WebCore::DictionaryLookup::rangeAtHitTestResult): Ditto.
* editing/ios/DictationCommandIOS.cpp:
(WebCore::DictationCommandIOS::doApply): Ditto.
* editing/mac/DictionaryLookupLegacy.mm:
(WebCore::DictionaryLookup::rangeAtHitTestResult): Ditto.
* page/EventHandler.cpp:
(WebCore::textDistance): Ditto.
* page/Page.cpp:
(WebCore::replaceRanges): Ditto.
(WebCore::Page::replaceRangesWithText): Ditto.
* platform/text/TextChecking.h: Ditto.
* testing/Internals.cpp:
(WebCore::Internals::rangeFromLocationAndLength): Ditto.
(WebCore::Internals::subrange): Ditto.
(WebCore::Internals::handleAcceptedCandidate): Ditto.
* testing/Internals.h: Made location and length unsigned rather than signed.
* testing/Internals.idl: Ditto.
Source/WebKit:
Reviewed by Antti Koivisto.
* Shared/EditingRange.cpp:
(WebKit::EditingRange::toRange): Use CharacterRange,
resolveCharacterLocation/Range.
* Shared/EditingRange.h: Added a FIXME about replacing with CharacterRange.
* Shared/WebCoreArgumentCoders.cpp:
(IPC::ArgumentCoder<CharacterRange>::encode): Added.
(IPC::ArgumentCoder<CharacterRange>::decode): Added.
(IPC::ArgumentCoder<GrammarDetail>::encode): Updated to use CharacterRange.
(IPC::ArgumentCoder<GrammarDetail>::decode): Ditto.
(IPC::ArgumentCoder<TextCheckingResult>::encode): Ditto.
(IPC::ArgumentCoder<TextCheckingResult>::decode): Ditto.
* Shared/WebCoreArgumentCoders.h: Added CharacterRange.
* UIProcess/Cocoa/WebViewImpl.mm:
(WebKit::textCheckingResultFromNSTextCheckingResult): Use CharacterRange,
resolveCharacterLocation/Range.
* UIProcess/WebGrammarDetail.cpp:
(WebKit::WebGrammarDetail::WebGrammarDetail): Ditto.
* UIProcess/WebGrammarDetail.h:
(WebKit::WebGrammarDetail::location const): Ditto.
(WebKit::WebGrammarDetail::length const): Ditto.
* UIProcess/gtk/TextCheckerGtk.cpp:
(WebKit::TextChecker::checkTextOfParagraph): Ditto.
* UIProcess/ios/TextCheckerIOS.mm:
(WebKit::TextChecker::checkTextOfParagraph): Ditto.
* UIProcess/mac/TextCheckerMac.mm:
(WebKit::TextChecker::checkTextOfParagraph): Ditto.
(WebKit::TextChecker::updateSpellingUIWithGrammarString): Ditto.
* WebProcess/WebPage/Cocoa/TextCheckingControllerProxy.mm:
(WebKit::TextCheckingControllerProxy::rangeAndOffsetRelativeToSelection): Ditto.
(WebKit::TextCheckingControllerProxy::replaceRelativeToSelection): Ditto.
(WebKit::TextCheckingControllerProxy::annotatedSubstringBetweenPositions): Ditto.
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::deleteSurrounding): Ditto.
* WebProcess/WebPage/ios/WebPageIOS.mm:
(WebKit::WebPage::getPlatformEditorState const): Small tweak.
(WebKit::WebPage::updateSelectionWithDelta): Ditto.
(WebKit::WebPage::requestDocumentEditingContext): Ditto.
Source/WebKitLegacy/mac:
Reviewed by Antti Koivisto.
* WebCoreSupport/WebEditorClient.mm:
(WebEditorClient::checkTextOfParagraph): Use CharacterRange,
resolveCharacterLocation/Range.
(WebEditorClient::checkGrammarOfString): Ditto.
(core): Ditto.
(WebEditorClient::updateSpellingUIWithGrammarString): Ditto.
(WebEditorClient::handleAcceptedCandidateWithSoftSpaces): Ditto.
* WebView/WebFrame.mm:
(-[WebFrame _convertToDOMRange:rangeIsRelativeTo:]): Ditto.
* WebView/WebView.mm:
(textCheckingResultFromNSTextCheckingResult): Ditto.
Source/WebKitLegacy/win:
Reviewed by Antti Koivisto.
* WebCoreSupport/WebEditorClient.cpp:
(WebEditorClient::checkGrammarOfString): Use CharacterRange,
resolveCharacterLocation/Range.
(WebEditorClient::updateSpellingUIWithGrammarString): Ditto.
* WebView.cpp:
(WebView::firstRectForCharacterRangeForTesting): Ditto.
LayoutTests:
Fix Mac-specific firstrectforcharacterrange-styled.html test
https://bugs.webkit.org/show_bug.cgi?id=205314
<rdar://problem/57990717>
Reviewed by Antti Koivisto.
* accessibility/mac/textmarker-for-index-out-of-bounds-crash-expected.txt:
* accessibility/mac/textmarker-for-index-out-of-bounds-crash.html:
Updated to expect textMarkerForIndex to clamp rather than returning something invalid.
* editing/mac/input/firstrectforcharacterrange-plain-expected.txt:
* editing/mac/input/firstrectforcharacterrange-plain.html:
Updated test output to include what is being tested, not just the test result.
Updated test results to expect clamping rather than an empty rectangle, for values
that are out of bounds. Also got rid of dumping of eidting callbacks since there is
no reason to include them in this test.
* editing/mac/input/firstrectforcharacterrange-styled-expected.txt:
* editing/mac/input/firstrectforcharacterrange-styled.html:
Ditto.
* platform/mac-wk1/TestExpectations: Since our oldest supported release is Mojave, deleted
all rules with Sierra or HighSierra conditionals since those conditions are always false,
and removed any conditionals that said Sierra+, HighSierra+, or Mojave+ because those
conditions are always true. One test, firstrectforcharacterrange-styled.html, had results
checked in that were correct for Mojave but incorrect for Catalina. For that test, the
results are now correct for Catalina, so updated expectations for that.
* platform/mac-wk2/TestExpectations: Ditto. Also some tests that claimed ImageOnlyFailure
are flaky and sometimes passing, so marked them for either Pass or ImageOnlyFailure.
* platform/mac/TestExpectations: Ditto. Also some tests marked Failure were flaky and
sometimes passing, so marked them for either Pass or Failure.
* platform/mac/editing/mac/input/firstrectforcharacterrange-styled-expected.txt: Removed.
This is already a Mac-specific test; it doesn't make sense to have an additional
Mac-specific overridden result since the base result is already Mac-specific.
* platform/mac/fast/text/attributed-substring-from-range-001-expected.txt:
* platform/mac/fast/text/attributed-substring-from-range-001.html:
Updated this test to expect the empty string, not "undefined" for an out of range,
since we now clamp instead of failing in such cases.
* platform/mac/fast/text/attributed-substring-from-range-expected.txt:
* platform/mac/fast/text/attributed-substring-from-range.html:
Ditto.
Canonical link: https://commits.webkit.org/222649@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@259184 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2020-03-30 01:06:28 +00:00
|
|
|
editing/CharacterRange.h
|
2019-04-18 23:20:26 +00:00
|
|
|
editing/ClipboardAccessPolicy.h
|
Add support for specifying background colors when setting marked text
https://bugs.webkit.org/show_bug.cgi?id=207065
<rdar://problem/57876140>
Reviewed by Tim Horton.
Source/WebCore:
Add support for rendering custom highlights (background colors) behind marked text in WebCore. To do this, we
plumb a Vector of CompositionHighlights alongside the Vector of CompositionUnderlines to Editor. At paint time,
we then consult this highlight data to determine which ranges of text in the composition should paint using
custom background colors.
Note that in the future, we should consider refactoring both composition underlines and highlights to use the
MarkedText mechanism for decorating ranges of text instead.
Test: editing/input/composition-highlights.html
* Headers.cmake:
* WebCore.xcodeproj/project.pbxproj:
* editing/CompositionHighlight.h: Added.
(WebCore::CompositionHighlight::CompositionHighlight):
(WebCore::CompositionHighlight::encode const):
(WebCore::CompositionHighlight::decode):
Add CompositionHighlight, which represents a range in the composition that should be highlighted with a given
background color.
* editing/Editor.cpp:
(WebCore::Editor::clear):
(WebCore::Editor::setComposition):
Add logic for clearing and updating m_customCompositionHighlights.
* editing/Editor.h:
(WebCore::Editor::compositionUsesCustomHighlights const):
(WebCore::Editor::customCompositionHighlights const):
* rendering/InlineTextBox.cpp:
(WebCore::InlineTextBox::paintCompositionBackground):
If custom composition highlights are given, use those when painting the composition background; otherwise,
default to painting the entire composition range using `Color::compositionFill`.
Source/WebCore/PAL:
Add an SPI soft-linking declaration for NSMarkedClauseSegmentAttributeName.
* pal/spi/cocoa/NSAttributedStringSPI.h:
Source/WebKit:
Implement -setAttributedMarkedText:selectedRange: on WKContentView, and have it extract highlight color
information from the given attributed string. Plumb this through to the web process by serializing and
deserializing `WebCore::CompositionHighlight`s.
* UIProcess/Cocoa/WebViewImpl.mm:
(WebKit::WebViewImpl::setMarkedText):
* UIProcess/WebPageProxy.cpp:
* UIProcess/WebPageProxy.h:
* UIProcess/ios/WKContentViewInteraction.mm:
(compositionHighlights):
For each marked text clause, grab the specified background color (defaulting to Color::compositionFill) and use
it to create a list of CompositionHighlights.
(-[WKContentView setAttributedMarkedText:selectedRange:]):
(-[WKContentView setMarkedText:selectedRange:]):
(-[WKContentView _setMarkedText:highlights:selectedRange:]):
* WebProcess/InjectedBundle/API/c/WKBundlePage.cpp:
(WKBundlePageSetComposition):
Add testing support for specifying highlight ranges when setting marked text.
* WebProcess/InjectedBundle/API/c/WKBundlePagePrivate.h:
* WebProcess/WebCoreSupport/glib/WebEditorClientGLib.cpp:
(WebKit::WebEditorClient::didDispatchInputMethodKeydown):
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::setCompositionForTesting):
(WebKit::WebPage::setCompositionAsync):
* WebProcess/WebPage/WebPage.h:
* WebProcess/WebPage/WebPage.messages.in:
Source/WebKitLegacy/mac:
Adjust some call sites of Editor::setComposition().
* WebView/WebFrame.mm:
(-[WebFrame setMarkedText:selectedRange:]):
(-[WebFrame setMarkedText:forCandidates:]):
* WebView/WebHTMLView.mm:
(-[WebHTMLView setMarkedText:selectedRange:]):
Source/WebKitLegacy/win:
Adjust some call sites of Editor::setComposition().
* WebView.cpp:
(WebView::onIMEComposition):
(WebView::setCompositionForTesting):
Tools:
Add support in WebKitTestRunner for specifying a list of highlight ranges when setting marked text. This comes
in the form of an additional argument to TextInputController::setMarkedText, which contains an array of objects,
each describing one range (in the composition) to highlight.
* DumpRenderTree/ios/TextInputControllerIOS.m:
(+[TextInputController isSelectorExcludedFromWebScript:]):
(+[TextInputController webScriptNameForSelector:]):
(-[TextInputController setMarkedText:selectedFrom:length:suppressUnderline:highlights:]):
(-[TextInputController setMarkedText:selectedFrom:length:suppressUnderline:]): Deleted.
* DumpRenderTree/mac/TextInputControllerMac.m:
(+[TextInputController isSelectorExcludedFromWebScript:]):
(+[TextInputController webScriptNameForSelector:]):
(-[TextInputController setMarkedText:selectedFrom:length:suppressUnderline:highlights:]):
(-[TextInputController setMarkedText:selectedFrom:length:suppressUnderline:]): Deleted.
* WebKitTestRunner/InjectedBundle/Bindings/TextInputController.idl:
* WebKitTestRunner/InjectedBundle/TextInputController.cpp:
(WTR::arrayLength):
(WTR::createCompositionHighlightData):
Add logic to convert a given JSObject containing the composition highlight information into a WKArrayRef, which
is then passed into WebKit via WKBundlePageSetComposition.
(WTR::TextInputController::setMarkedText):
* WebKitTestRunner/InjectedBundle/TextInputController.h:
LayoutTests:
Add a test to check that highlighting different parts of a composition range results in the same behavior as
applying background colors using CSS. This test is currently only supported in WebKit2.
* TestExpectations:
* editing/input/composition-highlights-expected.html: Added.
* editing/input/composition-highlights.html: Added.
* platform/wk2/TestExpectations:
Canonical link: https://commits.webkit.org/220091@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@255532 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2020-02-01 00:44:07 +00:00
|
|
|
editing/CompositionHighlight.h
|
2019-04-18 23:20:26 +00:00
|
|
|
editing/CompositionUnderline.h
|
|
|
|
editing/DictationAlternative.h
|
2020-05-21 01:59:23 +00:00
|
|
|
editing/DictationContext.h
|
2019-04-18 23:20:26 +00:00
|
|
|
editing/DictionaryPopupInfo.h
|
|
|
|
editing/EditAction.h
|
2020-11-17 01:34:46 +00:00
|
|
|
editing/EditableLinkBehavior.h
|
2019-04-18 23:20:26 +00:00
|
|
|
editing/Editing.h
|
|
|
|
editing/EditingBehavior.h
|
2020-11-17 01:34:46 +00:00
|
|
|
editing/EditingBehaviorType.h
|
2019-04-18 23:20:26 +00:00
|
|
|
editing/EditingBoundary.h
|
|
|
|
editing/EditingStyle.h
|
|
|
|
editing/Editor.h
|
|
|
|
editing/EditorDeleteAction.h
|
|
|
|
editing/EditorInsertAction.h
|
|
|
|
editing/FindOptions.h
|
|
|
|
editing/FontAttributeChanges.h
|
|
|
|
editing/FontAttributes.h
|
|
|
|
editing/FontShadow.h
|
|
|
|
editing/FrameSelection.h
|
|
|
|
editing/HTMLInterchange.h
|
2020-10-05 14:39:03 +00:00
|
|
|
editing/InlineRunAndOffset.h
|
[macOS] ImageOverlayController should paint selection quads instead of bounding rects
https://bugs.webkit.org/show_bug.cgi?id=225585
<rdar://problem/77725745>
Reviewed by Tim Horton.
Source/WebCore:
Teach `SelectionRectGatherer` (now renamed to `SelectionGeometryGatherer`) to emit quads, rather than bounding
rects around each quad. We use these quads in `ImageOverlayController` to render selection quads via page
overlay (i.e., in the case where the image containing the overlay is transparent).
Test: fast/images/image-extraction/mac/select-rotated-transparent-image-overlay.html
* Headers.cmake:
* SourcesCocoa.txt:
* WebCore.xcodeproj/project.pbxproj:
* editing/SelectionGeometryGatherer.cpp: Renamed from Source/WebCore/editing/SelectionRectGatherer.cpp.
Rename `SelectionRectGatherer` to `SelectionGeometryGatherer`, to reflect the fact that this helper class now
aggregates both selection quads and gap rects.
(WebCore::SelectionGeometryGatherer::SelectionGeometryGatherer):
(WebCore::SelectionGeometryGatherer::addQuad):
Rename `addRect` to `addQuad`, and make it take a `FloatQuad` instead.
(WebCore::SelectionGeometryGatherer::addGapRects):
(WebCore::SelectionGeometryGatherer::Notifier::Notifier):
(WebCore::SelectionGeometryGatherer::Notifier::~Notifier):
(WebCore::SelectionGeometryGatherer::boundingRects const):
(WebCore::SelectionGeometryGatherer::clearAndCreateNotifier):
* editing/SelectionGeometryGatherer.h: Renamed from Source/WebCore/editing/SelectionRectGatherer.h.
(WebCore::SelectionGeometryGatherer::setTextOnly):
(WebCore::SelectionGeometryGatherer::isTextOnly const):
* html/HTMLElement.cpp:
(WebCore::HTMLElement::updateWithImageExtractionResult):
Minor tweak - don't add any margin around the word when the line only contains a single word.
* page/ImageOverlayController.cpp:
(WebCore::ImageOverlayController::selectionQuadsDidChange):
Rename `selectionRectsDidChange` to `selectionQuadsDidChange`, and take a `FloatQuad` in absolute coordinates
instead of a `LayoutRect`. Store these quads in `m_overlaySelectionQuads` (also renamed from
`m_overlaySelectionRects`).
(WebCore::ImageOverlayController::uninstallPageOverlayIfNeeded):
(WebCore::ImageOverlayController::drawRect):
Make a few changes when painting selections using the `ImageOverlayController`:
1. Instead of painting with `fillRect()`, coalesce all of the collected selection quads into a single `Path`
object, and pass that `Path` into `fillPath()`. This allows us to render each piece of selected content as a
quad instead of a bounding rect, and additionally prevents us from rendering overlapping selections
when using `ImageOverlayController`.
2. Clip selections to the absolute bounds of the image overlay host element's renderer, which prevents the new
selection quads from spilling out of the host element.
(WebCore::ImageOverlayController::selectionRectsDidChange): Deleted.
* page/ImageOverlayController.h:
* rendering/RenderSelectionInfo.cpp:
(WebCore::RenderSelectionInfo::RenderSelectionInfo):
* rendering/RenderSelectionInfo.h:
(WebCore::RenderSelectionInfo::collectedSelectionQuads const):
(WebCore::RenderSelectionInfo::collectedSelectionRects const): Deleted.
More minor refactoring: rename `collectedSelectionRects` to `collectedSelectionQuads`, and make it take the
original `FloatQuad` instead of the quad's bounding box.
* rendering/RenderText.cpp:
(WebCore::RenderText::collectSelectionGeometriesForLineBoxes):
* rendering/RenderText.h:
* rendering/SelectionRangeData.cpp:
(WebCore::SelectionRangeData::SelectionRangeData):
(WebCore::SelectionRangeData::set):
(WebCore::SelectionRangeData::apply):
* rendering/SelectionRangeData.h:
LayoutTests:
Add a new layout test to cover the change. Currently, the below test case renders a visible selection rect in
the image overlay since we render the bounding rect of the overlay text quad, which intersects with the image
overlay's bounds. However, the text quad is positioned outside of the image overlay, so there shouldn't be any
visible selection rect. As such, this test is expected to render the same content as a plain image (even without
an image overlay).
Unfortunately, I couldn't write a matching ref-test for the case where the selection rect is inside the bounds
of the image overlay, since doing so led to tiny subpixel differences between the transparent image case (using
`ImageOverlayController`) and the regular image overlay selection case.
* fast/images/image-extraction/mac/select-rotated-transparent-image-overlay-expected.html: Added.
* fast/images/image-extraction/mac/select-rotated-transparent-image-overlay.html: Added.
Canonical link: https://commits.webkit.org/237541@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@277274 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2021-05-10 18:10:03 +00:00
|
|
|
editing/SelectionGeometryGatherer.h
|
2019-04-18 23:20:26 +00:00
|
|
|
editing/SerializedAttachmentData.h
|
|
|
|
editing/SmartReplace.h
|
|
|
|
editing/SpellChecker.h
|
|
|
|
editing/TextAffinity.h
|
|
|
|
editing/TextGranularity.h
|
|
|
|
editing/TextIterator.h
|
|
|
|
editing/TextIteratorBehavior.h
|
2019-10-25 00:08:13 +00:00
|
|
|
editing/TextManipulationController.h
|
2019-04-18 23:20:26 +00:00
|
|
|
editing/UndoStep.h
|
|
|
|
editing/VisiblePosition.h
|
|
|
|
editing/VisibleSelection.h
|
|
|
|
editing/VisibleUnits.h
|
|
|
|
editing/WebContentReader.h
|
|
|
|
editing/WritingDirection.h
|
|
|
|
editing/markup.h
|
|
|
|
|
|
|
|
fileapi/AsyncFileStream.h
|
|
|
|
fileapi/Blob.h
|
|
|
|
fileapi/BlobPropertyBag.h
|
2021-08-10 03:33:03 +00:00
|
|
|
fileapi/BlobURL.h
|
2020-06-04 19:58:18 +00:00
|
|
|
fileapi/EndingType.h
|
2019-04-18 23:20:26 +00:00
|
|
|
fileapi/File.h
|
|
|
|
fileapi/FileList.h
|
2019-07-01 08:09:46 +00:00
|
|
|
fileapi/FileReaderLoader.h
|
2019-06-13 01:04:16 +00:00
|
|
|
fileapi/FileReaderLoaderClient.h
|
2019-09-04 16:46:55 +00:00
|
|
|
fileapi/NetworkSendQueue.h
|
2019-04-18 23:20:26 +00:00
|
|
|
|
2019-10-17 01:44:16 +00:00
|
|
|
history/BackForwardCache.h
|
2019-04-18 23:20:26 +00:00
|
|
|
history/BackForwardClient.h
|
|
|
|
history/BackForwardController.h
|
|
|
|
history/BackForwardItemIdentifier.h
|
|
|
|
history/CachedFrame.h
|
|
|
|
history/CachedFramePlatformData.h
|
2021-05-12 05:53:13 +00:00
|
|
|
history/CachedPage.h
|
2019-04-18 23:20:26 +00:00
|
|
|
history/HistoryItem.h
|
|
|
|
|
|
|
|
html/Autocapitalize.h
|
|
|
|
html/AutocapitalizeTypes.h
|
|
|
|
html/Autofill.h
|
|
|
|
html/CachedHTMLCollection.h
|
|
|
|
html/CanvasBase.h
|
|
|
|
html/CollectionTraversal.h
|
|
|
|
html/CollectionType.h
|
|
|
|
html/DOMTokenList.h
|
|
|
|
html/DataListSuggestionInformation.h
|
2019-10-29 19:39:47 +00:00
|
|
|
html/EnterKeyHint.h
|
2019-05-22 17:38:42 +00:00
|
|
|
html/FeaturePolicy.h
|
2019-04-18 23:20:26 +00:00
|
|
|
html/FormAssociatedElement.h
|
|
|
|
html/FormNamedItem.h
|
|
|
|
html/HTMLAnchorElement.h
|
|
|
|
html/HTMLAreaElement.h
|
|
|
|
html/HTMLAttachmentElement.h
|
|
|
|
html/HTMLAudioElement.h
|
|
|
|
html/HTMLBRElement.h
|
|
|
|
html/HTMLBaseElement.h
|
|
|
|
html/HTMLBodyElement.h
|
|
|
|
html/HTMLButtonElement.h
|
|
|
|
html/HTMLCanvasElement.h
|
|
|
|
html/HTMLCollection.h
|
|
|
|
html/HTMLDListElement.h
|
|
|
|
html/HTMLDataListElement.h
|
|
|
|
html/HTMLDirectoryElement.h
|
|
|
|
html/HTMLDivElement.h
|
|
|
|
html/HTMLDocument.h
|
|
|
|
html/HTMLElement.h
|
|
|
|
html/HTMLEmbedElement.h
|
|
|
|
html/HTMLFieldSetElement.h
|
|
|
|
html/HTMLFontElement.h
|
|
|
|
html/HTMLFormControlElement.h
|
|
|
|
html/HTMLFormControlElementWithState.h
|
|
|
|
html/HTMLFormElement.h
|
|
|
|
html/HTMLFrameElement.h
|
|
|
|
html/HTMLFrameElementBase.h
|
|
|
|
html/HTMLFrameOwnerElement.h
|
|
|
|
html/HTMLFrameSetElement.h
|
|
|
|
html/HTMLHRElement.h
|
|
|
|
html/HTMLHeadElement.h
|
|
|
|
html/HTMLHeadingElement.h
|
|
|
|
html/HTMLHtmlElement.h
|
|
|
|
html/HTMLIFrameElement.h
|
|
|
|
html/HTMLImageElement.h
|
|
|
|
html/HTMLImageLoader.h
|
|
|
|
html/HTMLInputElement.h
|
|
|
|
html/HTMLKeygenElement.h
|
|
|
|
html/HTMLLIElement.h
|
|
|
|
html/HTMLLabelElement.h
|
|
|
|
html/HTMLLegendElement.h
|
|
|
|
html/HTMLLinkElement.h
|
|
|
|
html/HTMLMapElement.h
|
|
|
|
html/HTMLMarqueeElement.h
|
|
|
|
html/HTMLMediaElement.h
|
|
|
|
html/HTMLMediaElementEnums.h
|
|
|
|
html/HTMLMenuElement.h
|
|
|
|
html/HTMLMenuItemElement.h
|
|
|
|
html/HTMLMetaElement.h
|
|
|
|
html/HTMLModElement.h
|
|
|
|
html/HTMLOListElement.h
|
|
|
|
html/HTMLObjectElement.h
|
|
|
|
html/HTMLOptGroupElement.h
|
|
|
|
html/HTMLOptionElement.h
|
|
|
|
html/HTMLOptionsCollection.h
|
|
|
|
html/HTMLParagraphElement.h
|
|
|
|
html/HTMLParamElement.h
|
|
|
|
html/HTMLPlugInElement.h
|
|
|
|
html/HTMLPlugInImageElement.h
|
|
|
|
html/HTMLPreElement.h
|
|
|
|
html/HTMLQuoteElement.h
|
|
|
|
html/HTMLScriptElement.h
|
|
|
|
html/HTMLSelectElement.h
|
|
|
|
html/HTMLStyleElement.h
|
|
|
|
html/HTMLSummaryElement.h
|
|
|
|
html/HTMLTableCaptionElement.h
|
|
|
|
html/HTMLTableCellElement.h
|
|
|
|
html/HTMLTableColElement.h
|
|
|
|
html/HTMLTableElement.h
|
|
|
|
html/HTMLTablePartElement.h
|
|
|
|
html/HTMLTableRowElement.h
|
|
|
|
html/HTMLTableSectionElement.h
|
|
|
|
html/HTMLTextAreaElement.h
|
|
|
|
html/HTMLTextFormControlElement.h
|
|
|
|
html/HTMLTitleElement.h
|
|
|
|
html/HTMLUListElement.h
|
|
|
|
html/HTMLUnknownElement.h
|
|
|
|
html/HTMLVideoElement.h
|
|
|
|
html/ImageBitmap.h
|
2020-09-26 01:42:08 +00:00
|
|
|
html/ImageBitmapBacking.h
|
2020-03-07 05:32:14 +00:00
|
|
|
html/ImageData.h
|
2019-04-18 23:20:26 +00:00
|
|
|
html/ImageDocument.h
|
|
|
|
html/InputMode.h
|
|
|
|
html/LabelableElement.h
|
|
|
|
html/LinkIconCollector.h
|
|
|
|
html/LinkIconType.h
|
|
|
|
html/LinkRelAttribute.h
|
|
|
|
html/MediaControllerInterface.h
|
2021-02-05 00:17:06 +00:00
|
|
|
html/MediaDocument.h
|
2019-04-18 23:20:26 +00:00
|
|
|
html/MediaElementSession.h
|
|
|
|
html/MediaError.h
|
|
|
|
html/PluginDocument.h
|
|
|
|
html/StepRange.h
|
|
|
|
html/TimeRanges.h
|
|
|
|
html/TypeAhead.h
|
2020-04-26 14:53:33 +00:00
|
|
|
html/URLDecomposition.h
|
2019-04-18 23:20:26 +00:00
|
|
|
html/URLRegistry.h
|
|
|
|
html/ValidityState.h
|
|
|
|
html/VoidCallback.h
|
|
|
|
|
|
|
|
html/canvas/ImageBitmapRenderingContextSettings.h
|
|
|
|
html/canvas/WebGLAny.h
|
|
|
|
html/canvas/WebGLContextAttributes.h
|
|
|
|
|
|
|
|
html/forms/FileIconLoader.h
|
|
|
|
|
Convert SVG related parsers over to using StringParsingBuffer
https://bugs.webkit.org/show_bug.cgi?id=213635
Reviewed by Darin Adler.
- Adopt StringParsingBuffer across SVG code.
- Remove UTF-16 upconversions in SVGAnimationElement, SVGFitToViewBox, SVGLengthList,
SVGLengthValue, SVGNumberList, SVGParserUtilities, SVGPointList, SVGPreserveAspectRatioValue,
SVGStringList, SVGTransformList, SVGTransformable and SVGViewSpec.
* Headers.cmake:
* WebCore.xcodeproj/project.pbxproj:
Export ParsingUtilities.h, which is now included by SVGParserUtilities.h
* Sources.txt:
Add implementation files for SVGLengthList, SVGNumberList, SVGPointList, SVGStringList
and SVGTransformList to hold large functions are unlikely to benefit from inlining.
* html/parser/ParsingUtilities.h:
(WebCore::skipCharactersExactly):
Add new skipCharactersExactly, which takes a c-array (NOT null-terminated) of characters
to compare against.
* svg/SVGAngleValue.cpp:
(WebCore::parseAngleType):
(WebCore::SVGAngleValue::setValueAsString):
Adopt StringParsingBuffer.
* svg/SVGAnimateTransformElement.cpp:
(WebCore::SVGAnimateTransformElement::parseAttribute):
Adapt to new shared parseTransformType, which now returns an Optional and default to
SVG_TRANSFORM_UNKNOWN on parse failure as the old parseTransformType did.
* svg/SVGAnimationElement.cpp:
(WebCore::parseKeySplines):
Adopt StringParsingBuffer and readCharactersForParsing to replace unnecessary call to
StringView::upconvertedCharacters()
* svg/SVGFitToViewBox.cpp:
(WebCore::SVGFitToViewBox::parseViewBox):
(WebCore::SVGFitToViewBox::parseViewBoxGeneric):
* svg/SVGFitToViewBox.h:
Adopt StringParsingBuffer and readCharactersForParsing to replace unnecessary call to
StringView::upconvertedCharacters()
* svg/SVGLengthList.cpp: Added.
(WebCore::SVGLengthList::parse):
(WebCore::SVGLengthList::valueAsString const):
* svg/SVGLengthList.h:
Adopt StringParsingBuffer and readCharactersForParsing to replace unnecessary call to
StringView::upconvertedCharacters(). Move parse and valueAsString out of line.
* svg/SVGLengthValue.cpp:
(WebCore::parseLengthType):
(WebCore::SVGLengthValue::construct):
(WebCore::SVGLengthValue::setValueAsString):
* svg/SVGLengthValue.h:
Adopt StringParsingBuffer and readCharactersForParsing to replace unnecessary call to
StringView::upconvertedCharacters()
* svg/SVGNumberList.cpp: Added.
(WebCore::SVGNumberList::parse):
(WebCore::SVGNumberList::valueAsString const):
* svg/SVGNumberList.h:
Adopt StringParsingBuffer and readCharactersForParsing to replace unnecessary call to
StringView::upconvertedCharacters(). Move parse and valueAsString out of line.
* svg/SVGParserUtilities.cpp:
(WebCore::genericParseNumber):
(WebCore::parseNumber):
(WebCore::genericParseArcFlag):
(WebCore::parseArcFlag):
(WebCore::parseNumberOptionalNumber):
(WebCore::parsePoint):
(WebCore::parseRect):
(WebCore::parseGlyphName):
(WebCore::parseUnicodeRange):
(WebCore::parseKerningUnicodeString):
(WebCore::genericParseFloatPoint):
(WebCore::parseFloatPoint):
* svg/SVGParserUtilities.h:
(WebCore::isSVGSpaceOrComma):
(WebCore::skipOptionalSVGSpaces):
(WebCore::skipOptionalSVGSpacesOrDelimiter):
(WebCore::skipString): Deleted.
Adopt StringParsingBuffer and readCharactersForParsing to replace unnecessary call to
StringView::upconvertedCharacters(). Move parse and valueAsString out of line.
* svg/SVGPathSource.h:
Add missing include, which is now needed do to removing unncessary includes in other files.
* svg/SVGPathStringSource.cpp:
(WebCore::SVGPathStringSource::SVGPathStringSource):
(WebCore::SVGPathStringSource::hasMoreData const):
(WebCore::SVGPathStringSource::moveToNextToken):
(WebCore::nextCommandHelper):
(WebCore::SVGPathStringSource::nextCommand):
(WebCore::SVGPathStringSource::parse):
(WebCore::SVGPathStringSource::parseSVGSegmentType):
(WebCore::SVGPathStringSource::parseMoveToSegment):
(WebCore::SVGPathStringSource::parseLineToSegment):
(WebCore::SVGPathStringSource::parseLineToHorizontalSegment):
(WebCore::SVGPathStringSource::parseLineToVerticalSegment):
(WebCore::SVGPathStringSource::parseCurveToCubicSegment):
(WebCore::SVGPathStringSource::parseCurveToCubicSmoothSegment):
(WebCore::SVGPathStringSource::parseCurveToQuadraticSegment):
(WebCore::SVGPathStringSource::parseCurveToQuadraticSmoothSegment):
(WebCore::SVGPathStringSource::parseArcToSegment):
(WebCore::parseSVGSegmentTypeHelper): Deleted.
* svg/SVGPathStringSource.h:
Adopt StringParsingBuffer. Replace existing set of unions with a single
union of StringParsingBuffers.
* svg/SVGPointList.cpp: Added.
(WebCore::SVGPointList::parse):
(WebCore::SVGPointList::valueAsString const):
* svg/SVGPointList.h:
Adopt StringParsingBuffer and readCharactersForParsing to replace unnecessary call to
StringView::upconvertedCharacters(). Move parse and valueAsString out of line.
* svg/SVGPreserveAspectRatioValue.cpp:
(WebCore::SVGPreserveAspectRatioValue::SVGPreserveAspectRatioValue):
(WebCore::SVGPreserveAspectRatioValue::parse):
(WebCore::SVGPreserveAspectRatioValue::parseInternal):
(WebCore::SVGPreserveAspectRatioValue::valueAsString const):
* svg/SVGPreserveAspectRatioValue.h:
Adopt StringParsingBuffer and readCharactersForParsing to replace unnecessary call to
StringView::upconvertedCharacters().
* svg/SVGStringList.cpp: Added.
(WebCore::SVGStringList::parse):
(WebCore::SVGStringList::valueAsString const):
* svg/SVGStringList.h:
Adopt StringParsingBuffer and readCharactersForParsing to replace unnecessary call to
StringView::upconvertedCharacters(). Move parse and valueAsString out of line.
* svg/SVGTransformList.cpp: Added.
(WebCore::SVGTransformList::consolidate):
(WebCore::SVGTransformList::concatenate const):
(WebCore::SVGTransformList::parseGeneric):
(WebCore::SVGTransformList::parse):
(WebCore::SVGTransformList::valueAsString const):
* svg/SVGTransformList.h:
Adopt StringParsingBuffer and readCharactersForParsing to replace unnecessary call to
StringView::upconvertedCharacters(). Move parse, valueAsString, consolidate and
concatenate out of line.
* svg/SVGTransformable.cpp:
(WebCore::parseTransformParamList):
(WebCore::parseTransformValueGeneric):
(WebCore::SVGTransformable::parseTransformValue):
(WebCore::parseTransformTypeGeneric):
(WebCore::SVGTransformable::parseTransformType):
(WebCore::SVGTransformable::parseAndSkipType): Deleted.
* svg/SVGTransformable.h:
Adopt StringParsingBuffer and readCharactersForParsing to replace unnecessary call to
StringView::upconvertedCharacters(). Unify parseTransformType implementations to all
use a single implementation and return an Optional<SVGTransformType>.
* svg/SVGViewSpec.cpp:
(WebCore::SVGViewSpec::parseViewSpec):
* svg/SVGViewSpec.h:
Adopt StringParsingBuffer and readCharactersForParsing to replace unnecessary call to
StringView::upconvertedCharacters().
* svg/SVGZoomAndPan.cpp:
(WebCore::parseZoomAndPanGeneric):
(WebCore::SVGZoomAndPan::parseZoomAndPan):
* svg/SVGZoomAndPan.h:
Adopt StringParsingBuffer.
Canonical link: https://commits.webkit.org/226482@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@263617 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2020-06-27 15:29:30 +00:00
|
|
|
html/parser/ParsingUtilities.h
|
2019-04-18 23:20:26 +00:00
|
|
|
html/parser/HTMLParserIdioms.h
|
2020-11-17 01:34:46 +00:00
|
|
|
html/parser/HTMLParserScriptingFlagPolicy.h
|
2019-04-18 23:20:26 +00:00
|
|
|
|
|
|
|
html/track/AudioTrack.h
|
|
|
|
html/track/TextTrack.h
|
|
|
|
html/track/TextTrackCue.h
|
|
|
|
html/track/TrackBase.h
|
|
|
|
html/track/VTTCue.h
|
|
|
|
html/track/VideoTrack.h
|
|
|
|
|
|
|
|
inspector/InspectorClient.h
|
|
|
|
inspector/InspectorController.h
|
2019-12-22 04:19:53 +00:00
|
|
|
inspector/InspectorDebuggableType.h
|
2020-10-30 23:56:26 +00:00
|
|
|
inspector/InspectorFrontendAPIDispatcher.h
|
2019-04-18 23:20:26 +00:00
|
|
|
inspector/InspectorFrontendClient.h
|
|
|
|
inspector/InspectorFrontendClientLocal.h
|
|
|
|
inspector/InspectorFrontendHost.h
|
Web Inspector: Local Overrides - Provide substitution content for resource loads (URL based)
https://bugs.webkit.org/show_bug.cgi?id=201262
<rdar://problem/13108764>
Reviewed by Devin Rousso.
Source/JavaScriptCore:
When interception is enabled, Network requests that match any of the configured
interception patterns will be paused on the backend and allowed to be modified
by the frontend.
Currently the only time a network request can be intercepted is during the
HTTP response. However, this intercepting interface is mean to extend to
HTTP requests as well.
When a response is to be intercepted a new event is sent to the frontend:
`Network.responseIntercepted` event
With a `requestId` to identify that network request. The frontend
must respond with one of the following commands to continue:
`Network.interceptContinue` - proceed with the response unmodified
`Network.interceptWithResponse` - provide a response
The response is paused in the meantime.
* inspector/protocol/Network.json:
New interfaces for intercepting network responses and suppling override content.
* Scripts/generate-combined-inspector-json.py:
* inspector/scripts/generate-inspector-protocol-bindings.py:
(generate_from_specification.load_specification):
Complete allowing comments in JSON protocol files.
* inspector/scripts/codegen/generate_objc_backend_dispatcher_implementation.py:
(ObjCBackendDispatcherImplementationGenerator._generate_invocation_for_command):
* inspector/scripts/tests/generic/expected/commands-with-optional-call-return-parameters.json-result:
Allow optional enums in ObjC interfaces.
Source/WebCore:
Tests: http/tests/inspector/network/local-resource-override-basic.html
http/tests/inspector/network/local-resource-override-main-resource.html
http/tests/inspector/network/local-resource-override-script-tag.html
http/tests/inspector/network/resource-response-inspector-override.html
* Sources.txt:
* WebCore.xcodeproj/project.pbxproj:
* Headers.cmake:
New files.
* inspector/InspectorInstrumentation.cpp:
(WebCore::InspectorInstrumentation::willInterceptRequestImpl):
(WebCore::InspectorInstrumentation::shouldInterceptResponseImpl):
(WebCore::InspectorInstrumentation::interceptResponseImpl):
* inspector/InspectorInstrumentation.h:
(WebCore::InspectorInstrumentation::hasFrontends):
(WebCore::InspectorInstrumentation::willInterceptRequest):
(WebCore::InspectorInstrumentation::shouldInterceptResponse):
(WebCore::InspectorInstrumentation::interceptResponse):
(WebCore::InspectorInstrumentation::frontendCreated):
(WebCore::InspectorInstrumentation::frontendDeleted):
* inspector/InspectorInstrumentationPublic.cpp:
* inspector/InspectorInstrumentationPublic.h:
* inspector/InspectorInstrumentationWebKit.cpp:
(WebCore::InspectorInstrumentationWebKit::shouldInterceptResponseInternal):
(WebCore::InspectorInstrumentationWebKit::interceptResponseInternal):
* inspector/InspectorInstrumentationWebKit.h: Added.
(WebCore::InspectorInstrumentationWebKit::shouldInterceptResponse):
(WebCore::InspectorInstrumentationWebKit::interceptResponse):
Provide a slim InspectorInstrumentation API that can be used in the WebKit
layer without a ton of includes.
* inspector/agents/InspectorNetworkAgent.cpp:
(WebCore::responseSource):
(WebCore::InspectorNetworkAgent::disable):
(WebCore::InspectorNetworkAgent::continuePendingResponses):
(WebCore::InspectorNetworkAgent::setInterceptionEnabled):
(WebCore::InspectorNetworkAgent::addInterception):
(WebCore::InspectorNetworkAgent::removeInterception):
(WebCore::InspectorNetworkAgent::willInterceptRequest):
(WebCore::InspectorNetworkAgent::shouldInterceptResponse):
(WebCore::InspectorNetworkAgent::interceptResponse):
(WebCore::InspectorNetworkAgent::interceptContinue):
(WebCore::InspectorNetworkAgent::interceptWithResponse):
Manage a list of URLs that will be intercepted and send
intercepts to an active frontend for response content.
* inspector/agents/InspectorNetworkAgent.h:
(WebCore::InspectorNetworkAgent::PendingInterceptResponse::PendingInterceptResponse):
(WebCore::InspectorNetworkAgent::PendingInterceptResponse::~PendingInterceptResponse):
(WebCore::InspectorNetworkAgent::PendingInterceptResponse::originalResponse):
(WebCore::InspectorNetworkAgent::PendingInterceptResponse::respondWithOriginalResponse):
(WebCore::InspectorNetworkAgent::PendingInterceptResponse::respond):
Callback for an eventual intercept response.
* platform/network/ResourceResponseBase.h:
New ResponseSource - Inspector Override.
* loader/DocumentLoader.cpp:
(WebCore::logResourceResponseSource):
* testing/Internals.cpp:
(WebCore::responseSourceToString):
Handle new response sources.
* loader/cache/CachedResourceLoader.cpp:
(WebCore::CachedResourceLoader::requestResource):
(WebCore::CachedResourceLoader::preload):
Avoid preloading or using the cache for URLs that would be intercepted
by an active Inspector frontend.
* loader/cache/MemoryCache.cpp:
(WebCore::MemoryCache::remove):
Assertion to help detect if we ever get override content into the MemoryCache.
* loader/ResourceLoader.h:
(WebCore::DocumentLoader::responseReceived):
* loader/ResourceLoader.cpp:
Fix typos.
Source/WebInspectorUI:
This adds a new "Local Overrides" section to the Sources tab sidebar
which will allow users to provide their own resource content for text
resources. Users can clone a resource, and provide their own content
(by editing in Web Inspector) and new requests for those particular
URLs will get the substitute content.
Overrides are based on a particular URL (ignoring fragment). They
can override: status code, status text, response headers, content,
and MIME Type (Content-Type).
* Tools/CodeMirrorModes/index.html: Added.
* Tools/CodeMirrorModes/styles.css: Added.
Debug tool for CodeMirror editors and our custom CodeMirror modes.
* UserInterface/Main.html:
* UserInterface/Test.html:
* Localizations/en.lproj/localizedStrings.js:
New files and strings.
* UserInterface/Base/HTTPUtilities.js: Added.
(WI.httpStatusTextForStatusCode):
Translate between typical status codes and status text.
* UserInterface/Base/ObjectStore.js:
(WI.ObjectStore._open):
New persistent store for local resource overrides.
* UserInterface/Base/Main.js:
(WI.showLocalResourceOverride):
Convenience for showing an override file.
* UserInterface/Base/URLUtilities.js:
(parseURL):
Avoid uncaught exceptions with the URL constructor for common WebKit internal sourceURL strings.
(WI.urlWithoutFragment):
Strip a fragment from a URL.
* UserInterface/Controllers/HARBuilder.js:
(WI.HARBuilder.fetchType):
(WI.HARBuilder.responseSourceFromHARFetchType):
Handle new custom response types.
* UserInterface/Protocol/NetworkObserver.js:
(WI.NetworkObserver.prototype.responseIntercepted):
(WI.NetworkObserver):
New events.
* UserInterface/Controllers/NetworkManager.js:
(WI.NetworkManager):
(WI.NetworkManager.supportsLocalResourceOverrides):
(WI.NetworkManager.prototype.initializeTarget):
(WI.NetworkManager.prototype.get localResourceOverrides):
(WI.NetworkManager.prototype.get interceptionEnabled):
(WI.NetworkManager.prototype.set interceptionEnabled):
(WI.NetworkManager.prototype.addLocalResourceOverride):
(WI.NetworkManager.prototype.removeLocalResourceOverride):
(WI.NetworkManager.prototype.localResourceOverrideForURL):
(WI.NetworkManager.prototype.canBeOverridden):
(WI.NetworkManager.prototype.responseIntercepted):
(WI.NetworkManager.prototype._handleResourceContentDidChange):
(WI.NetworkManager.prototype._persistLocalResourceOverrideSoonAfterContentChange):
(WI.NetworkManager.prototype._saveLocalResourceOverrides):
(WI.NetworkManager.prototype._extraDomainsActivated):
(WI.NetworkManager.prototype.localResourceForURL): Deleted.
Handle saving and restoring local resource overrides.
Handle responding to a `responseIntercepted` Network protocol event.
* UserInterface/Models/LocalResource.js:
(WI.LocalResource.fromJSON):
(WI.LocalResource.prototype.toJSON):
(WI.LocalResource.prototype.get localContent):
(WI.LocalResource.prototype.get localContentIsBase64Encoded):
(WI.LocalResource.prototype.isLocalResourceOverride):
(WI.LocalResource.prototype.updateOverrideContent):
Allow a LocalResource to identify itself as an "override".
* UserInterface/Models/LocalResourceOverride.js: Added.
(WI.LocalResourceOverride.prototype.create):
(WI.LocalResourceOverride.fromJSON):
(WI.LocalResourceOverride.prototype.toJSON):
(WI.LocalResourceOverride.prototype.get url):
(WI.LocalResourceOverride.prototype.get localResource):
(WI.LocalResourceOverride.prototype.get disabled):
(WI.LocalResourceOverride.prototype.set disabled):
(WI.LocalResourceOverride.prototype.saveIdentityToCookie):
(WI.LocalResourceOverride):
Model object for a LocalResourceOverride. This has LocalResource content
and an enabled/disabled state.
* UserInterface/Models/Resource.js:
(WI.Resource.classNamesForResource):
(WI.Resource.responseSourceFromPayload):
(WI.Resource.prototype.isLocalResourceOverride):
(WI.Resource.prototype.async.createLocalResourceOverride):
(WI.Resource.classNameForResource): Deleted.
Convenience functions and icon updates.
* UserInterface/Views/SourcesTabContentView.js:
(WI.SourcesTabContentView.prototype.canShowRepresentedObject):
* UserInterface/Views/ContentView.js:
(WI.ContentView.createFromRepresentedObject):
(WI.ContentView.resolvedRepresentedObjectForRepresentedObject):
(WI.ContentView.isViewable):
Handle new represented object type.
* UserInterface/Views/SourcesNavigationSidebarPanel.js:
(WI.SourcesNavigationSidebarPanel):
(WI.SourcesNavigationSidebarPanel.prototype.createContentTreeOutline):
(WI.SourcesNavigationSidebarPanel.prototype.willDismissPopover):
(WI.SourcesNavigationSidebarPanel.prototype._willDismissLocalOverridePopover):
(WI.SourcesNavigationSidebarPanel.prototype._willDismissEventBreakpointPopover):
(WI.SourcesNavigationSidebarPanel.prototype._willDismissURLBreakpointPopover):
(WI.SourcesNavigationSidebarPanel.prototype._addLocalResourceOverride):
(WI.SourcesNavigationSidebarPanel.prototype._removeLocalResourceOverride):
(WI.SourcesNavigationSidebarPanel.prototype._handleTreeSelectionDidChange):
(WI.SourcesNavigationSidebarPanel.prototype._populateCreateBreakpointContextMenu):
(WI.SourcesNavigationSidebarPanel.prototype._handleLocalResourceOverrideAdded):
(WI.SourcesNavigationSidebarPanel.prototype._handleLocalResourceOverrideRemoved):
* UserInterface/Views/SourcesNavigationSidebarPanel.css:
(.sidebar > .panel.navigation.sources > .content > .warning-banner):
(.sidebar > .panel.navigation.sources > .content > :matches(.pause-reason-container, .call-stack-container, .breakpoints-container, .local-overrides)):
(.sidebar > .panel.navigation.sources > .content > .local-overrides):
(.sidebar > .panel.navigation.sources > .content > :matches(.pause-reason-container, .call-stack-container, .breakpoints-container)): Deleted.
Hide and show Local Overrides section.
* UserInterface/Views/LocalResourceOverrideTreeElement.css:
(.item.resource.override .status > div):
* UserInterface/Views/LocalResourceOverrideTreeElement.js: Added.
(WI.LocalResourceOverrideTreeElement):
(WI.LocalResourceOverrideTreeElement.prototype.canSelectOnMouseDown):
(WI.LocalResourceOverrideTreeElement.prototype.populateContextMenu):
(WI.LocalResourceOverrideTreeElement.prototype.willDismissPopover):
TreeElement for a Local Resource Override.
* UserInterface/Views/CodeMirrorLocalOverrideURLMode.css:
(.cm-s-default .cm-local-override-url-bad-scheme):
(.cm-s-default .cm-local-override-url-fragment):
* UserInterface/Views/CodeMirrorLocalOverrideURLMode.js: Added.
(tokenBase):
(return.startState):
(return.token):
* UserInterface/Views/ContentBrowserTabContentView.js:
(WI.ContentBrowserTabContentView.prototype._revealAndSelectRepresentedObject):
* UserInterface/Views/ContextMenu.js:
(WI.ContextMenu.prototype._itemSelected):
(WI.ContextMenu):
Better debugging for exceptions in context menu handlers.
* UserInterface/Views/ContextMenuUtilities.js:
(WI.appendContextMenuItemsForSourceCode):
(WI.appendContextMenuItemsForURL):
Context menu items for Local Resource Overrides.
* UserInterface/Views/DataGrid.js:
(WI.DataGrid.prototype.startEditingNode):
(WI.DataGrid.prototype._startEditingNodeAtColumnIndex):
(WI.DataGrid.prototype._startEditing):
(WI.DataGrid.prototype._contextMenuInDataTable):
* UserInterface/Views/DataGridNode.js:
(WI.DataGridNode):
(WI.DataGridNode.prototype.get editable):
(WI.DataGridNode.prototype.set editable):
Improve DataGrid editing functionality.
Allow a node to not be editable.
Allow adding a new node and starting to edit in one action.
* UserInterface/Views/DebuggerSidebarPanel.js:
(WI.DebuggerSidebarPanel.prototype.treeElementForRepresentedObject):
Do not provide overrides in the Debugger tab.
* UserInterface/Views/LocalResourceOverrideLabelView.css:
(.local-resource-override-label-view):
(.local-resource-override-label-view > div):
(.local-resource-override-label-view > div > .label):
(.local-resource-override-label-view > div > .url):
(@media (prefers-color-scheme: dark)):
* UserInterface/Views/LocalResourceOverrideLabelView.js:
(WI.LocalResourceOverrideLabelView):
(WI.LocalResourceOverrideLabelView.prototype.initialLayout):
* UserInterface/Views/LocalResourceOverridePopover.css: Added.
(.popover .local-resource-override-popover-content):
(.popover .local-resource-override-popover-content > label.toggle):
(.popover .local-resource-override-popover-content > table):
(.popover .local-resource-override-popover-content > table > tr > th):
(.popover .local-resource-override-popover-content > table > tr > td):
(.popover .local-resource-override-popover-content .editor):
(.popover .local-resource-override-popover-content .editor > .CodeMirror):
(.popover .local-resource-override-popover-content .editor.url):
(.popover .local-resource-override-popover-content .editor.mime):
(.popover .local-resource-override-popover-content .editor.status):
(.popover .local-resource-override-popover-content .editor.status-text):
(.popover .local-resource-override-popover-content .add-header):
(@media (prefers-color-scheme: dark)):
New banner view for a local resource override itself.
Shows the URL being overriden.
* UserInterface/Views/LocalResourceOverrideWarningView.css:
(.local-resource-override-warning-view):
(.local-resource-override-warning-view[hidden]):
(.local-resource-override-warning-view > div):
(.local-resource-override-warning-view > div > button):
(@media (prefers-color-scheme: dark)):
* UserInterface/Views/LocalResourceOverrideWarningView.js: Added.
(WI.LocalResourceOverrideWarningView):
(WI.LocalResourceOverrideWarningView.prototype.attached):
(WI.LocalResourceOverrideWarningView.prototype.detached):
(WI.LocalResourceOverrideWarningView.prototype._updateContent):
(WI.LocalResourceOverrideWarningView.prototype._handleLocalResourceOverrideChanged):
* UserInterface/Views/NavigationSidebarPanel.js:
(WI.NavigationSidebarPanel.prototype.pruneStaleResourceTreeElements):
New banner view for a resource that has been overridden.
Allows jumping to the override itself.
* UserInterface/Views/LocalResourceOverridePopover.js: Added.
(WI.LocalResourceOverridePopover):
(WI.LocalResourceOverridePopover.prototype.get serializedData):
(WI.LocalResourceOverridePopover.prototype.show.addDataGridNodeForHeader):
(WI.LocalResourceOverridePopover.prototype.show):
(WI.LocalResourceOverridePopover.prototype._createEditor):
(WI.LocalResourceOverridePopover.prototype._defaultURL):
(WI.LocalResourceOverridePopover.prototype._presentOverTargetElement):
New popover for creating or editing a Local Resource Override.
* UserInterface/Views/SearchSidebarPanel.js:
(WI.SearchSidebarPanel.prototype.performSearch):
Consider searching overrides.
* UserInterface/Views/Variables.css:
(:root):
* UserInterface/Views/SearchSidebarPanel.css:
(.sidebar > .panel.navigation.search.changed > .banner):
* UserInterface/Views/DebuggerSidebarPanel.css:
(.sidebar > .panel.navigation.debugger .warning-banner):
* UserInterface/Views/ConsoleMessageView.css:
(.console-warning-level):
Use a new variable for a common warning color.
* UserInterface/Images/NavigationItemNetworkOverride.svg: Added.
* UserInterface/Views/SourceCodeTextEditor.js:
(WI.SourceCodeTextEditor.prototype.canBeFormatted):
(WI.SourceCodeTextEditor.prototype.get _supportsDebugging):
* UserInterface/Views/SourcesNavigationSidebarPanel.css:
(.sidebar > .panel.navigation.sources > .content > .warning-banner):
(.sidebar > .panel.navigation.sources > .content > :matches(.pause-reason-container, .call-stack-container, .breakpoints-container, .local-overrides)):
(.sidebar > .panel.navigation.sources > .content > .local-overrides):
(.sidebar > .panel.navigation.sources > .content > :matches(.pause-reason-container, .call-stack-container, .breakpoints-container)): Deleted.
* UserInterface/Views/TextEditor.css:
(.text-editor):
* UserInterface/Views/TextResourceContentView.css:
(.content-view.resource.text):
(.content-view.resource.text > .text-editor):
* UserInterface/Views/TextResourceContentView.js:
(WI.TextResourceContentView):
(WI.TextResourceContentView.prototype.get navigationItems):
(WI.TextResourceContentView.prototype.closed):
(WI.TextResourceContentView.prototype._contentWillPopulate):
(WI.TextResourceContentView.prototype._contentDidPopulate):
(WI.TextResourceContentView.prototype.async._handleCreateLocalResourceOverride):
(WI.TextResourceContentView.prototype._handleRemoveLocalResourceOverride):
(WI.TextResourceContentView.prototype._handleLocalResourceOverrideChanged):
(WI.TextResourceContentView.prototype._textEditorContentDidChange):
(WI.TextResourceContentView.prototype._shouldBeEditable):
Allow Text resources to create a local resource override.
Support for Image resources will come separately.
* UserInterface/Views/ResourceHeadersContentView.js:
(WI.ResourceHeadersContentView.prototype._responseSourceDisplayString):
Handle new response type.
* UserInterface/Controllers/CSSManager.js:
Avoid extra handling for Local Resource Overrides.
* UserInterface/Views/ResourceIcons.css:
(.resource-icon.override .icon):
* UserInterface/Views/ResourceSizesContentView.js:
(WI.ResourceSizesContentView.prototype.initialLayout):
* UserInterface/Views/ResourceTimelineDataGridNode.js:
(WI.ResourceTimelineDataGridNode.prototype.iconClassNames):
* UserInterface/Views/ResourceTreeElement.js:
(WI.ResourceTreeElement.prototype._updateResource):
(WI.ResourceTreeElement.prototype._updateIcon):
(WI.ResourceTreeElement.prototype._responseReceived):
(WI.ResourceTreeElement):
* UserInterface/Views/TimelineDataGridNode.js:
(WI.TimelineDataGridNode.prototype.createCellContent):
* UserInterface/Views/NetworkTableContentView.js:
(WI.NetworkTableContentView.prototype._populateNameCell):
(WI.NetworkTableContentView.prototype._populateTransferSizeCell):
(WI.NetworkTableContentView.prototype._generateSortComparator):
Better Resource icons all over for overrides.
* UserInterface/Views/URLBreakpointPopover.js:
(WI.URLBreakpointPopover.prototype._createEditor):
Code cleanup.
Source/WebKit:
* Sources.txt:
* WebKit.xcodeproj/project.pbxproj:
New sources.
* WebProcess/Network/WebResourceLoader.h:
* WebProcess/Network/WebResourceLoader.cpp:
(WebKit::WebResourceLoader::didReceiveResponse):
(WebKit::WebResourceLoader::didReceiveData):
(WebKit::WebResourceLoader::didFinishResourceLoad):
(WebKit::WebResourceLoader::didFailResourceLoad):
On receiving a response, check with the inspector if an active
frontend will override the response content.
* WebProcess/Network/WebResourceInterceptController.h:
* WebProcess/Network/WebResourceInterceptController.cpp:
(WebKit::WebResourceInterceptController::isIntercepting const):
(WebKit::WebResourceInterceptController::beginInterceptingResponse):
(WebKit::WebResourceInterceptController::continueResponse):
(WebKit::WebResourceInterceptController::interceptedResponse):
(WebKit::WebResourceInterceptController::defer):
Buffer networking callbacks for an ongoing intercept.
* WebProcess/Network/WebLoaderStrategy.cpp:
(WebKit::WebLoaderStrategy::havePerformedSecurityChecks const):
Handle new response source.
LayoutTests:
* http/tests/inspector/network/local-resource-override-basic-expected.txt: Added.
* http/tests/inspector/network/local-resource-override-basic.html: Added.
* http/tests/inspector/network/local-resource-override-main-resource-expected.txt: Added.
* http/tests/inspector/network/local-resource-override-main-resource.html: Added.
* http/tests/inspector/network/local-resource-override-script-tag-expected.txt: Added.
* http/tests/inspector/network/local-resource-override-script-tag.html: Added.
* http/tests/inspector/network/resource-response-inspector-override-expected.txt: Added.
* http/tests/inspector/network/resource-response-inspector-override.html: Added.
* http/tests/inspector/network/resources/override.js: Added.
* http/tests/inspector/network/resources/override.txt: Added.
* inspector/network/local-resource-override-continue-response-expected.txt: Added.
* inspector/network/local-resource-override-continue-response.html: Added.
Tests for overrides.
* inspector/unit-tests/url-utilities-expected.txt:
* inspector/unit-tests/url-utilities.html:
Test WI.urlWithoutFragment.
* platform/mac-wk1/TestExpectations:
WebKitLegacy does not support overrides.
Canonical link: https://commits.webkit.org/215111@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@249504 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2019-09-04 23:35:03 +00:00
|
|
|
inspector/InspectorInstrumentationPublic.h
|
|
|
|
inspector/InspectorInstrumentationWebKit.h
|
2019-04-18 23:20:26 +00:00
|
|
|
inspector/InspectorOverlay.h
|
|
|
|
inspector/InspectorWebAgentBase.h
|
2020-08-24 18:40:30 +00:00
|
|
|
inspector/PageDebugger.h
|
2019-04-18 23:20:26 +00:00
|
|
|
|
|
|
|
inspector/agents/InspectorPageAgent.h
|
|
|
|
|
2020-01-16 03:50:29 +00:00
|
|
|
layout/LayoutUnits.h
|
|
|
|
layout/MarginTypes.h
|
|
|
|
|
2021-05-02 16:59:56 +00:00
|
|
|
layout/formattingContexts/inline/InlineRect.h
|
2020-09-17 04:40:20 +00:00
|
|
|
|
2020-10-05 15:43:07 +00:00
|
|
|
layout/integration/LayoutIntegrationInlineContent.h
|
|
|
|
layout/integration/LayoutIntegrationLine.h
|
2020-10-07 15:47:16 +00:00
|
|
|
layout/integration/LayoutIntegrationLineIterator.h
|
|
|
|
layout/integration/LayoutIntegrationLineIteratorLegacyPath.h
|
|
|
|
layout/integration/LayoutIntegrationLineIteratorModernPath.h
|
2020-10-05 15:43:07 +00:00
|
|
|
layout/integration/LayoutIntegrationRun.h
|
2020-09-28 13:42:33 +00:00
|
|
|
layout/integration/LayoutIntegrationRunIterator.h
|
|
|
|
layout/integration/LayoutIntegrationRunIteratorLegacyPath.h
|
|
|
|
layout/integration/LayoutIntegrationRunIteratorModernPath.h
|
2020-01-16 03:50:29 +00:00
|
|
|
layout/layouttree/LayoutBox.h
|
|
|
|
|
2019-04-18 23:20:26 +00:00
|
|
|
loader/CanvasActivityRecord.h
|
2020-01-23 18:50:55 +00:00
|
|
|
loader/ContentFilterClient.h
|
2019-04-18 23:20:26 +00:00
|
|
|
loader/CookieJar.h
|
|
|
|
loader/CrossOriginAccessControl.h
|
2021-07-31 00:07:37 +00:00
|
|
|
loader/CrossOriginEmbedderPolicy.h
|
|
|
|
loader/CrossOriginOpenerPolicy.h
|
2019-04-18 23:20:26 +00:00
|
|
|
loader/CrossOriginPreflightResultCache.h
|
2019-05-17 21:50:02 +00:00
|
|
|
loader/CustomHeaderFields.h
|
Fix WPT test resource-timing/cross-origin-redirects.html
https://bugs.webkit.org/show_bug.cgi?id=190523
<rdar://45227788>
Reviewed by Brady Eidson.
LayoutTests/imported/w3c:
* web-platform-tests/navigation-timing/nav2_test_redirect_server-expected.txt:
* web-platform-tests/navigation-timing/nav2_test_redirect_server.html:
Sometimes, with our use of Performance::reduceTimeResolution, the event times are equal to each other.
Allow this.
* web-platform-tests/resource-timing/cross-origin-redirects-expected.txt: Added.
* web-platform-tests/resource-timing/cross-origin-redirects.html: Added.
* web-platform-tests/resource-timing/resources/entry-invariants.js: Added.
(const.assert_all_equal_):
(const.assert_ordered_):
(const.assert_zeroed_):
(const.assert_not_negative_):
(const.assert_positive_):
(const.attribute_test_internal):
(async const):
(const.attribute_test_with_validator):
* web-platform-tests/resource-timing/resources/resource-loaders.js: Added.
(const.load.font.path.return.document.fonts.ready.then):
(const.load.stylesheet.async path):
(const.load.iframe.async path):
(const.load.script.async path):
(const.load.xhr_sync.async path):
Source/WebCore:
Test: imported/w3c/web-platform-tests/resource-timing/cross-origin-redirects.html
This test took more to fix than I thought it would. We used to collect our timing data
from various sources into various structures, mostly based on Google's work from 2010 with
a few things tacked on to it. The timing specifications have changed considerably in the
last 11 years, and so should the shape of the structures we put the data into.
We used to have a LoadTiming structure in various places that claimed to contain the redirect times,
but markRedirectStart and markRedirectEnd were never called. Instead we tried to collect this data
from the SubResourceLoader and DocumentLoader reporting redirects in the web process. This wasn't great.
Redirect timing is best collected in the network process by the framework doing the redirecting,
and now we have the NSURLSessionTaskMetrics API to get the data we need.
I've made NetworkLoadMetrics the structure that contains all the network load metrics from the network process.
DocumentEventTiming is owned in the web process by the Document, and it contains the load event timing data.
ResourceLoadTiming is owned by the ResourceLoader, and it contains the fetch start and end times including the
parts of the fetch algorithm that happen in the web process.
DocumentLoadTiming inherits from it and is owned by the DocumentLoader, which reflects the fact that
PerformanceNavigationTiming inherits from PerformanceResourceTiming in the specs.
With these structures in place, we now have the infrastructure to collect timing data and expose it correctly.
Another thing that has changed is that these structures consistently store the timing data in the MonotonicTime type,
which is the number of seconds since the machine restarted. NetworkLoadMetrics used to confusingly store fetch
start time and then other network times as deltas from it, and we would pretend that fetch start time was the same
as the fetch start time in the web process and calculate everything from the deltas. This is an unfortunate
consequence of my younger self not realizing that the double values from NSURLConnection._timingData are values to
be put into [NSDate initWithTimeIntervalSinceReferenceDate] then pulled out with timeIntervalSince1970 to get
WallTime. I was confused because they weren't WallTime or MonotonicTime, so I only dealt with them as deltas
from each other. Consistently using MonotonicTime makes all this code much more straightforward.
I also use std::numeric_limits<uint64_t>::max() instead of std::numeric_limits<uint32_t>::max() as a sentinel value
for requestHeaderBytesSent and responseHeaderBytesReceived to make everything more sane. I'm not too worried about
the metrics of downloads of exactly 4GB, but they should also be fixed.
A consequence of collecting the redirect times in the network process is that we have to move the
SecurityOrigin::canRequest checks to see if the redirects are same-origin to ResourceHandle and NetworkDataTask.
* Headers.cmake:
* Sources.txt:
* WebCore.xcodeproj/project.pbxproj:
* dom/Document.cpp:
(WebCore::Document::setReadyState):
(WebCore::Document::finishedParsing):
(WebCore::Document::monotonicTimestamp const):
* dom/Document.h:
(WebCore::Document::eventTiming const):
(WebCore::Document::timing const): Deleted.
* dom/DocumentEventTiming.h: Copied from Source/WebCore/dom/DocumentTiming.h.
* inspector/agents/InspectorNetworkAgent.cpp:
(WebCore::InspectorNetworkAgent::buildObjectForTiming):
(WebCore::InspectorNetworkAgent::buildObjectForMetrics):
(WebCore::InspectorNetworkAgent::buildObjectForResourceResponse):
(WebCore::InspectorNetworkAgent::didFinishLoading):
* inspector/agents/InspectorNetworkAgent.h:
* loader/DocumentLoadTiming.h: Renamed from Source/WebCore/loader/LoadTiming.h.
(WebCore::DocumentLoadTiming::timeOrigin const):
(WebCore::DocumentLoadTiming::markUnloadEventStart):
(WebCore::DocumentLoadTiming::markUnloadEventEnd):
(WebCore::DocumentLoadTiming::markLoadEventStart):
(WebCore::DocumentLoadTiming::markLoadEventEnd):
(WebCore::DocumentLoadTiming::setHasSameOriginAsPreviousDocument):
(WebCore::DocumentLoadTiming::unloadEventStart const):
(WebCore::DocumentLoadTiming::unloadEventEnd const):
(WebCore::DocumentLoadTiming::loadEventStart const):
(WebCore::DocumentLoadTiming::loadEventEnd const):
(WebCore::DocumentLoadTiming::hasSameOriginAsPreviousDocument const):
* loader/DocumentLoader.cpp:
(WebCore::DocumentLoader::finishedLoading):
(WebCore::DocumentLoader::willSendRequest):
(WebCore::DocumentLoader::dataReceived):
(WebCore::DocumentLoader::startLoadingMainResource):
* loader/DocumentLoader.h:
(WebCore::DocumentLoader::timing const):
(WebCore::DocumentLoader::timing):
(WebCore::DocumentLoader::resetTiming):
* loader/DocumentThreadableLoader.cpp:
(WebCore::DocumentThreadableLoader::loadRequest):
* loader/FrameLoader.cpp:
(WebCore::FrameLoader::dispatchUnloadEvents):
* loader/LoadTiming.cpp: Removed.
* loader/ResourceLoadTiming.h: Renamed from Source/WebCore/dom/DocumentTiming.h.
(WebCore::ResourceLoadTiming::markStartTime):
(WebCore::ResourceLoadTiming::markEndTime):
(WebCore::ResourceLoadTiming::startTime const):
(WebCore::ResourceLoadTiming::endTime const):
(WebCore::ResourceLoadTiming::isolatedCopy const):
* loader/ResourceLoader.cpp:
(WebCore::ResourceLoader::init):
* loader/ResourceLoader.h:
(WebCore::ResourceLoader::loadTiming):
* loader/ResourceTiming.cpp:
(WebCore::ResourceTiming::fromMemoryCache):
(WebCore::ResourceTiming::fromLoad):
(WebCore::ResourceTiming::fromSynchronousLoad):
(WebCore::ResourceTiming::ResourceTiming):
(WebCore::ResourceTiming::isolatedCopy const):
(WebCore::ResourceTiming::fromCache): Deleted.
* loader/ResourceTiming.h:
(WebCore::ResourceTiming::resourceLoadTiming const):
(WebCore::ResourceTiming::ResourceTiming):
(WebCore::ResourceTiming::loadTiming const): Deleted.
* loader/ResourceTimingInformation.cpp:
* loader/SubresourceLoader.cpp:
(WebCore::SubresourceLoader::willSendRequestInternal):
(WebCore::SubresourceLoader::didFinishLoading):
* loader/cache/CachedResource.h:
* loader/cache/CachedResourceLoader.cpp:
(WebCore::CachedResourceLoader::requestResource):
* page/DOMWindow.cpp:
(WebCore::DOMWindow::performance const):
* page/Performance.cpp:
(WebCore::Performance::addNavigationTiming):
* page/Performance.h:
* page/PerformanceNavigation.cpp:
(WebCore::PerformanceNavigation::redirectCount const):
* page/PerformanceNavigationTiming.cpp:
(WebCore::PerformanceNavigationTiming::PerformanceNavigationTiming):
(WebCore::PerformanceNavigationTiming::millisecondsSinceOrigin const):
(WebCore::PerformanceNavigationTiming::sameOriginCheckFails const):
(WebCore::PerformanceNavigationTiming::unloadEventStart const):
(WebCore::PerformanceNavigationTiming::unloadEventEnd const):
(WebCore::PerformanceNavigationTiming::domInteractive const):
(WebCore::PerformanceNavigationTiming::domContentLoadedEventStart const):
(WebCore::PerformanceNavigationTiming::domContentLoadedEventEnd const):
(WebCore::PerformanceNavigationTiming::domComplete const):
(WebCore::PerformanceNavigationTiming::loadEventStart const):
(WebCore::PerformanceNavigationTiming::loadEventEnd const):
(WebCore::PerformanceNavigationTiming::redirectCount const):
* page/PerformanceNavigationTiming.h:
* page/PerformanceResourceTiming.cpp:
(WebCore::networkLoadTimeToDOMHighResTimeStamp):
(WebCore::fetchStart):
(WebCore::entryStartTime):
(WebCore::entryEndTime):
(WebCore::PerformanceResourceTiming::redirectStart const):
(WebCore::PerformanceResourceTiming::redirectEnd const):
(WebCore::PerformanceResourceTiming::fetchStart const):
(WebCore::PerformanceResourceTiming::domainLookupStart const):
(WebCore::PerformanceResourceTiming::domainLookupEnd const):
(WebCore::PerformanceResourceTiming::connectStart const):
(WebCore::PerformanceResourceTiming::connectEnd const):
(WebCore::PerformanceResourceTiming::secureConnectionStart const):
(WebCore::PerformanceResourceTiming::requestStart const):
(WebCore::PerformanceResourceTiming::responseStart const):
(WebCore::PerformanceResourceTiming::responseEnd const):
(WebCore::monotonicTimeToDOMHighResTimeStamp): Deleted.
(WebCore::PerformanceResourceTiming::networkLoadTimeToDOMHighResTimeStamp const): Deleted.
* page/PerformanceResourceTiming.h:
* page/PerformanceTiming.cpp:
(WebCore::PerformanceTiming::navigationStart const):
(WebCore::PerformanceTiming::unloadEventStart const):
(WebCore::PerformanceTiming::unloadEventEnd const):
(WebCore::PerformanceTiming::redirectStart const):
(WebCore::PerformanceTiming::redirectEnd const):
(WebCore::PerformanceTiming::fetchStart const):
(WebCore::PerformanceTiming::domainLookupStart const):
(WebCore::PerformanceTiming::domainLookupEnd const):
(WebCore::PerformanceTiming::connectStart const):
(WebCore::PerformanceTiming::connectEnd const):
(WebCore::PerformanceTiming::secureConnectionStart const):
(WebCore::PerformanceTiming::requestStart const):
(WebCore::PerformanceTiming::responseStart const):
(WebCore::PerformanceTiming::responseEnd const):
(WebCore::PerformanceTiming::domLoading const):
(WebCore::PerformanceTiming::domInteractive const):
(WebCore::PerformanceTiming::domContentLoadedEventStart const):
(WebCore::PerformanceTiming::domContentLoadedEventEnd const):
(WebCore::PerformanceTiming::domComplete const):
(WebCore::PerformanceTiming::loadEventStart const):
(WebCore::PerformanceTiming::loadEventEnd const):
(WebCore::PerformanceTiming::documentLoader const):
(WebCore::PerformanceTiming::documentEventTiming const):
(WebCore::PerformanceTiming::documentLoadTiming const):
(WebCore::PerformanceTiming::networkLoadMetrics const):
(WebCore::PerformanceTiming::monotonicTimeToIntegerMilliseconds const):
(WebCore::PerformanceTiming::documentTiming const): Deleted.
(WebCore::PerformanceTiming::loadTiming const): Deleted.
(WebCore::PerformanceTiming::resourceLoadTimeRelativeToFetchStart const): Deleted.
* page/PerformanceTiming.h:
* platform/network/NetworkLoadMetrics.h:
(WebCore::NetworkLoadMetrics::isolatedCopy const):
(WebCore::NetworkLoadMetrics::operator== const):
(WebCore::NetworkLoadMetrics::encode const):
(WebCore::NetworkLoadMetrics::decode):
* platform/network/ResourceHandle.cpp:
(WebCore::ResourceHandle::hasCrossOriginRedirect const):
(WebCore::ResourceHandle::setHasCrossOriginRedirect):
(WebCore::ResourceHandle::incrementRedirectCount):
(WebCore::ResourceHandle::redirectCount const):
(WebCore::ResourceHandle::startTimeBeforeRedirects const):
(WebCore::ResourceHandle::networkLoadMetrics):
(WebCore::ResourceHandle::setNetworkLoadMetrics):
* platform/network/ResourceHandle.h:
* platform/network/ResourceHandleInternal.h:
* platform/network/cocoa/NetworkLoadMetrics.mm:
(WebCore::dateToMonotonicTime):
(WebCore::packageTimingData):
(WebCore::copyTimingData):
* platform/network/cocoa/WebCoreNSURLSession.mm:
(networkLoadMetricsDate):
(-[WebCoreNSURLSessionTaskTransactionMetrics fetchStartDate]):
(-[WebCoreNSURLSessionTaskTransactionMetrics domainLookupStartDate]):
(-[WebCoreNSURLSessionTaskTransactionMetrics domainLookupEndDate]):
(-[WebCoreNSURLSessionTaskTransactionMetrics connectStartDate]):
(-[WebCoreNSURLSessionTaskTransactionMetrics secureConnectionStartDate]):
(-[WebCoreNSURLSessionTaskTransactionMetrics connectEndDate]):
(-[WebCoreNSURLSessionTaskTransactionMetrics requestStartDate]):
(-[WebCoreNSURLSessionTaskTransactionMetrics responseStartDate]):
(-[WebCoreNSURLSessionTaskTransactionMetrics responseEndDate]):
* platform/network/curl/CurlContext.cpp:
(WebCore::CurlHandle::getNetworkLoadMetrics):
* platform/network/curl/CurlContext.h:
* platform/network/curl/CurlRequest.cpp:
(WebCore::CurlRequest::didCompleteTransfer):
(WebCore::CurlRequest::networkLoadMetrics):
* platform/network/mac/ResourceHandleMac.mm:
(WebCore::ResourceHandle::start):
* platform/network/mac/WebCoreResourceHandleAsOperationQueueDelegate.h:
* platform/network/mac/WebCoreResourceHandleAsOperationQueueDelegate.mm:
(-[WebCoreResourceHandleAsOperationQueueDelegate connection:willSendRequest:redirectResponse:]):
(-[WebCoreResourceHandleAsOperationQueueDelegate connection:didReceiveResponse:]):
(-[WebCoreResourceHandleAsOperationQueueDelegate connectionDidFinishLoading:]):
Source/WebKit:
* NetworkProcess/cocoa/NetworkDataTaskCocoa.mm:
(WebKit::NetworkDataTaskCocoa::willPerformHTTPRedirection):
* NetworkProcess/cocoa/NetworkSessionCocoa.mm:
(-[WKNetworkSessionDelegate URLSession:task:didFinishCollectingMetrics:]):
(-[WKNetworkSessionDelegate URLSession:dataTask:didReceiveResponse:completionHandler:]):
* NetworkProcess/soup/NetworkDataTaskSoup.cpp:
(WebKit::NetworkDataTaskSoup::NetworkDataTaskSoup):
(WebKit::NetworkDataTaskSoup::clearRequest):
(WebKit::NetworkDataTaskSoup::resume):
(WebKit::NetworkDataTaskSoup::didSendRequest):
(WebKit::NetworkDataTaskSoup::dispatchDidCompleteWithError):
(WebKit::NetworkDataTaskSoup::continueHTTPRedirection):
(WebKit::NetworkDataTaskSoup::networkEvent):
(WebKit::NetworkDataTaskSoup::didStartRequest):
(WebKit::NetworkDataTaskSoup::didRestart):
LayoutTests:
* http/tests/misc/webtiming-slow-load-expected.txt:
* http/tests/misc/webtiming-slow-load.py:
Our new metrics gathering now matches Firefox instead of Chrome in PerformanceResourceTiming::responseEnd in this edge case of a deprecated API.
Update expectations accordingly.
* platform/mac-wk1/TestExpectations:
Bringing this test to passing in WK2 makes it flaky in WK1 because we don't get good redirect timing data from CFNetwork through NSURLConnection.
* platform/win/http/tests/misc/webtiming-one-redirect-expected.txt: Added.
* platform/win/http/tests/misc/webtiming-slow-load-expected.txt: Copied from LayoutTests/http/tests/misc/webtiming-slow-load-expected.txt.
* platform/win/http/tests/misc/webtiming-two-redirects-expected.txt: Added.
The network layer is now responsible for counting redirects and providing redirect timings.
Our friend CFURLConnection doesn't have that ability, so it doesn't pass these tests any more.
It never supported any timing APIs and other tests are skipped.
Canonical link: https://commits.webkit.org/238416@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@278391 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2021-06-03 01:25:53 +00:00
|
|
|
loader/DocumentLoadTiming.h
|
2019-04-18 23:20:26 +00:00
|
|
|
loader/DocumentLoader.h
|
|
|
|
loader/DocumentWriter.h
|
|
|
|
loader/EmptyClients.h
|
|
|
|
loader/EmptyFrameLoaderClient.h
|
|
|
|
loader/FetchOptions.h
|
2021-04-12 09:26:42 +00:00
|
|
|
loader/FontLoadRequest.h
|
2019-04-18 23:20:26 +00:00
|
|
|
loader/FormState.h
|
|
|
|
loader/FormSubmission.h
|
|
|
|
loader/FrameLoadRequest.h
|
|
|
|
loader/FrameLoader.h
|
|
|
|
loader/FrameLoaderClient.h
|
|
|
|
loader/FrameLoaderStateMachine.h
|
|
|
|
loader/FrameLoaderTypes.h
|
|
|
|
loader/FrameNetworkingContext.h
|
|
|
|
loader/HTTPHeaderField.h
|
|
|
|
loader/HistoryController.h
|
|
|
|
loader/ImageLoader.h
|
|
|
|
loader/LinkLoader.h
|
|
|
|
loader/LinkLoaderClient.h
|
2021-01-27 12:39:27 +00:00
|
|
|
loader/LoadSchedulingMode.h
|
2019-04-18 23:20:26 +00:00
|
|
|
loader/LoaderStrategy.h
|
|
|
|
loader/MediaResourceLoader.h
|
|
|
|
loader/MixedContentChecker.h
|
|
|
|
loader/NavigationAction.h
|
|
|
|
loader/NetscapePlugInStreamLoader.h
|
|
|
|
loader/PingLoader.h
|
|
|
|
loader/PolicyChecker.h
|
2021-08-14 02:28:19 +00:00
|
|
|
loader/PolicyContainer.h
|
2020-11-12 02:04:28 +00:00
|
|
|
loader/PrivateClickMeasurement.h
|
2019-04-18 23:20:26 +00:00
|
|
|
loader/ProgressTracker.h
|
|
|
|
loader/ProgressTrackerClient.h
|
|
|
|
loader/ResourceCryptographicDigest.h
|
|
|
|
loader/ResourceLoadInfo.h
|
|
|
|
loader/ResourceLoadNotifier.h
|
|
|
|
loader/ResourceLoadObserver.h
|
|
|
|
loader/ResourceLoadStatistics.h
|
Fix WPT test resource-timing/cross-origin-redirects.html
https://bugs.webkit.org/show_bug.cgi?id=190523
<rdar://45227788>
Reviewed by Brady Eidson.
LayoutTests/imported/w3c:
* web-platform-tests/navigation-timing/nav2_test_redirect_server-expected.txt:
* web-platform-tests/navigation-timing/nav2_test_redirect_server.html:
Sometimes, with our use of Performance::reduceTimeResolution, the event times are equal to each other.
Allow this.
* web-platform-tests/resource-timing/cross-origin-redirects-expected.txt: Added.
* web-platform-tests/resource-timing/cross-origin-redirects.html: Added.
* web-platform-tests/resource-timing/resources/entry-invariants.js: Added.
(const.assert_all_equal_):
(const.assert_ordered_):
(const.assert_zeroed_):
(const.assert_not_negative_):
(const.assert_positive_):
(const.attribute_test_internal):
(async const):
(const.attribute_test_with_validator):
* web-platform-tests/resource-timing/resources/resource-loaders.js: Added.
(const.load.font.path.return.document.fonts.ready.then):
(const.load.stylesheet.async path):
(const.load.iframe.async path):
(const.load.script.async path):
(const.load.xhr_sync.async path):
Source/WebCore:
Test: imported/w3c/web-platform-tests/resource-timing/cross-origin-redirects.html
This test took more to fix than I thought it would. We used to collect our timing data
from various sources into various structures, mostly based on Google's work from 2010 with
a few things tacked on to it. The timing specifications have changed considerably in the
last 11 years, and so should the shape of the structures we put the data into.
We used to have a LoadTiming structure in various places that claimed to contain the redirect times,
but markRedirectStart and markRedirectEnd were never called. Instead we tried to collect this data
from the SubResourceLoader and DocumentLoader reporting redirects in the web process. This wasn't great.
Redirect timing is best collected in the network process by the framework doing the redirecting,
and now we have the NSURLSessionTaskMetrics API to get the data we need.
I've made NetworkLoadMetrics the structure that contains all the network load metrics from the network process.
DocumentEventTiming is owned in the web process by the Document, and it contains the load event timing data.
ResourceLoadTiming is owned by the ResourceLoader, and it contains the fetch start and end times including the
parts of the fetch algorithm that happen in the web process.
DocumentLoadTiming inherits from it and is owned by the DocumentLoader, which reflects the fact that
PerformanceNavigationTiming inherits from PerformanceResourceTiming in the specs.
With these structures in place, we now have the infrastructure to collect timing data and expose it correctly.
Another thing that has changed is that these structures consistently store the timing data in the MonotonicTime type,
which is the number of seconds since the machine restarted. NetworkLoadMetrics used to confusingly store fetch
start time and then other network times as deltas from it, and we would pretend that fetch start time was the same
as the fetch start time in the web process and calculate everything from the deltas. This is an unfortunate
consequence of my younger self not realizing that the double values from NSURLConnection._timingData are values to
be put into [NSDate initWithTimeIntervalSinceReferenceDate] then pulled out with timeIntervalSince1970 to get
WallTime. I was confused because they weren't WallTime or MonotonicTime, so I only dealt with them as deltas
from each other. Consistently using MonotonicTime makes all this code much more straightforward.
I also use std::numeric_limits<uint64_t>::max() instead of std::numeric_limits<uint32_t>::max() as a sentinel value
for requestHeaderBytesSent and responseHeaderBytesReceived to make everything more sane. I'm not too worried about
the metrics of downloads of exactly 4GB, but they should also be fixed.
A consequence of collecting the redirect times in the network process is that we have to move the
SecurityOrigin::canRequest checks to see if the redirects are same-origin to ResourceHandle and NetworkDataTask.
* Headers.cmake:
* Sources.txt:
* WebCore.xcodeproj/project.pbxproj:
* dom/Document.cpp:
(WebCore::Document::setReadyState):
(WebCore::Document::finishedParsing):
(WebCore::Document::monotonicTimestamp const):
* dom/Document.h:
(WebCore::Document::eventTiming const):
(WebCore::Document::timing const): Deleted.
* dom/DocumentEventTiming.h: Copied from Source/WebCore/dom/DocumentTiming.h.
* inspector/agents/InspectorNetworkAgent.cpp:
(WebCore::InspectorNetworkAgent::buildObjectForTiming):
(WebCore::InspectorNetworkAgent::buildObjectForMetrics):
(WebCore::InspectorNetworkAgent::buildObjectForResourceResponse):
(WebCore::InspectorNetworkAgent::didFinishLoading):
* inspector/agents/InspectorNetworkAgent.h:
* loader/DocumentLoadTiming.h: Renamed from Source/WebCore/loader/LoadTiming.h.
(WebCore::DocumentLoadTiming::timeOrigin const):
(WebCore::DocumentLoadTiming::markUnloadEventStart):
(WebCore::DocumentLoadTiming::markUnloadEventEnd):
(WebCore::DocumentLoadTiming::markLoadEventStart):
(WebCore::DocumentLoadTiming::markLoadEventEnd):
(WebCore::DocumentLoadTiming::setHasSameOriginAsPreviousDocument):
(WebCore::DocumentLoadTiming::unloadEventStart const):
(WebCore::DocumentLoadTiming::unloadEventEnd const):
(WebCore::DocumentLoadTiming::loadEventStart const):
(WebCore::DocumentLoadTiming::loadEventEnd const):
(WebCore::DocumentLoadTiming::hasSameOriginAsPreviousDocument const):
* loader/DocumentLoader.cpp:
(WebCore::DocumentLoader::finishedLoading):
(WebCore::DocumentLoader::willSendRequest):
(WebCore::DocumentLoader::dataReceived):
(WebCore::DocumentLoader::startLoadingMainResource):
* loader/DocumentLoader.h:
(WebCore::DocumentLoader::timing const):
(WebCore::DocumentLoader::timing):
(WebCore::DocumentLoader::resetTiming):
* loader/DocumentThreadableLoader.cpp:
(WebCore::DocumentThreadableLoader::loadRequest):
* loader/FrameLoader.cpp:
(WebCore::FrameLoader::dispatchUnloadEvents):
* loader/LoadTiming.cpp: Removed.
* loader/ResourceLoadTiming.h: Renamed from Source/WebCore/dom/DocumentTiming.h.
(WebCore::ResourceLoadTiming::markStartTime):
(WebCore::ResourceLoadTiming::markEndTime):
(WebCore::ResourceLoadTiming::startTime const):
(WebCore::ResourceLoadTiming::endTime const):
(WebCore::ResourceLoadTiming::isolatedCopy const):
* loader/ResourceLoader.cpp:
(WebCore::ResourceLoader::init):
* loader/ResourceLoader.h:
(WebCore::ResourceLoader::loadTiming):
* loader/ResourceTiming.cpp:
(WebCore::ResourceTiming::fromMemoryCache):
(WebCore::ResourceTiming::fromLoad):
(WebCore::ResourceTiming::fromSynchronousLoad):
(WebCore::ResourceTiming::ResourceTiming):
(WebCore::ResourceTiming::isolatedCopy const):
(WebCore::ResourceTiming::fromCache): Deleted.
* loader/ResourceTiming.h:
(WebCore::ResourceTiming::resourceLoadTiming const):
(WebCore::ResourceTiming::ResourceTiming):
(WebCore::ResourceTiming::loadTiming const): Deleted.
* loader/ResourceTimingInformation.cpp:
* loader/SubresourceLoader.cpp:
(WebCore::SubresourceLoader::willSendRequestInternal):
(WebCore::SubresourceLoader::didFinishLoading):
* loader/cache/CachedResource.h:
* loader/cache/CachedResourceLoader.cpp:
(WebCore::CachedResourceLoader::requestResource):
* page/DOMWindow.cpp:
(WebCore::DOMWindow::performance const):
* page/Performance.cpp:
(WebCore::Performance::addNavigationTiming):
* page/Performance.h:
* page/PerformanceNavigation.cpp:
(WebCore::PerformanceNavigation::redirectCount const):
* page/PerformanceNavigationTiming.cpp:
(WebCore::PerformanceNavigationTiming::PerformanceNavigationTiming):
(WebCore::PerformanceNavigationTiming::millisecondsSinceOrigin const):
(WebCore::PerformanceNavigationTiming::sameOriginCheckFails const):
(WebCore::PerformanceNavigationTiming::unloadEventStart const):
(WebCore::PerformanceNavigationTiming::unloadEventEnd const):
(WebCore::PerformanceNavigationTiming::domInteractive const):
(WebCore::PerformanceNavigationTiming::domContentLoadedEventStart const):
(WebCore::PerformanceNavigationTiming::domContentLoadedEventEnd const):
(WebCore::PerformanceNavigationTiming::domComplete const):
(WebCore::PerformanceNavigationTiming::loadEventStart const):
(WebCore::PerformanceNavigationTiming::loadEventEnd const):
(WebCore::PerformanceNavigationTiming::redirectCount const):
* page/PerformanceNavigationTiming.h:
* page/PerformanceResourceTiming.cpp:
(WebCore::networkLoadTimeToDOMHighResTimeStamp):
(WebCore::fetchStart):
(WebCore::entryStartTime):
(WebCore::entryEndTime):
(WebCore::PerformanceResourceTiming::redirectStart const):
(WebCore::PerformanceResourceTiming::redirectEnd const):
(WebCore::PerformanceResourceTiming::fetchStart const):
(WebCore::PerformanceResourceTiming::domainLookupStart const):
(WebCore::PerformanceResourceTiming::domainLookupEnd const):
(WebCore::PerformanceResourceTiming::connectStart const):
(WebCore::PerformanceResourceTiming::connectEnd const):
(WebCore::PerformanceResourceTiming::secureConnectionStart const):
(WebCore::PerformanceResourceTiming::requestStart const):
(WebCore::PerformanceResourceTiming::responseStart const):
(WebCore::PerformanceResourceTiming::responseEnd const):
(WebCore::monotonicTimeToDOMHighResTimeStamp): Deleted.
(WebCore::PerformanceResourceTiming::networkLoadTimeToDOMHighResTimeStamp const): Deleted.
* page/PerformanceResourceTiming.h:
* page/PerformanceTiming.cpp:
(WebCore::PerformanceTiming::navigationStart const):
(WebCore::PerformanceTiming::unloadEventStart const):
(WebCore::PerformanceTiming::unloadEventEnd const):
(WebCore::PerformanceTiming::redirectStart const):
(WebCore::PerformanceTiming::redirectEnd const):
(WebCore::PerformanceTiming::fetchStart const):
(WebCore::PerformanceTiming::domainLookupStart const):
(WebCore::PerformanceTiming::domainLookupEnd const):
(WebCore::PerformanceTiming::connectStart const):
(WebCore::PerformanceTiming::connectEnd const):
(WebCore::PerformanceTiming::secureConnectionStart const):
(WebCore::PerformanceTiming::requestStart const):
(WebCore::PerformanceTiming::responseStart const):
(WebCore::PerformanceTiming::responseEnd const):
(WebCore::PerformanceTiming::domLoading const):
(WebCore::PerformanceTiming::domInteractive const):
(WebCore::PerformanceTiming::domContentLoadedEventStart const):
(WebCore::PerformanceTiming::domContentLoadedEventEnd const):
(WebCore::PerformanceTiming::domComplete const):
(WebCore::PerformanceTiming::loadEventStart const):
(WebCore::PerformanceTiming::loadEventEnd const):
(WebCore::PerformanceTiming::documentLoader const):
(WebCore::PerformanceTiming::documentEventTiming const):
(WebCore::PerformanceTiming::documentLoadTiming const):
(WebCore::PerformanceTiming::networkLoadMetrics const):
(WebCore::PerformanceTiming::monotonicTimeToIntegerMilliseconds const):
(WebCore::PerformanceTiming::documentTiming const): Deleted.
(WebCore::PerformanceTiming::loadTiming const): Deleted.
(WebCore::PerformanceTiming::resourceLoadTimeRelativeToFetchStart const): Deleted.
* page/PerformanceTiming.h:
* platform/network/NetworkLoadMetrics.h:
(WebCore::NetworkLoadMetrics::isolatedCopy const):
(WebCore::NetworkLoadMetrics::operator== const):
(WebCore::NetworkLoadMetrics::encode const):
(WebCore::NetworkLoadMetrics::decode):
* platform/network/ResourceHandle.cpp:
(WebCore::ResourceHandle::hasCrossOriginRedirect const):
(WebCore::ResourceHandle::setHasCrossOriginRedirect):
(WebCore::ResourceHandle::incrementRedirectCount):
(WebCore::ResourceHandle::redirectCount const):
(WebCore::ResourceHandle::startTimeBeforeRedirects const):
(WebCore::ResourceHandle::networkLoadMetrics):
(WebCore::ResourceHandle::setNetworkLoadMetrics):
* platform/network/ResourceHandle.h:
* platform/network/ResourceHandleInternal.h:
* platform/network/cocoa/NetworkLoadMetrics.mm:
(WebCore::dateToMonotonicTime):
(WebCore::packageTimingData):
(WebCore::copyTimingData):
* platform/network/cocoa/WebCoreNSURLSession.mm:
(networkLoadMetricsDate):
(-[WebCoreNSURLSessionTaskTransactionMetrics fetchStartDate]):
(-[WebCoreNSURLSessionTaskTransactionMetrics domainLookupStartDate]):
(-[WebCoreNSURLSessionTaskTransactionMetrics domainLookupEndDate]):
(-[WebCoreNSURLSessionTaskTransactionMetrics connectStartDate]):
(-[WebCoreNSURLSessionTaskTransactionMetrics secureConnectionStartDate]):
(-[WebCoreNSURLSessionTaskTransactionMetrics connectEndDate]):
(-[WebCoreNSURLSessionTaskTransactionMetrics requestStartDate]):
(-[WebCoreNSURLSessionTaskTransactionMetrics responseStartDate]):
(-[WebCoreNSURLSessionTaskTransactionMetrics responseEndDate]):
* platform/network/curl/CurlContext.cpp:
(WebCore::CurlHandle::getNetworkLoadMetrics):
* platform/network/curl/CurlContext.h:
* platform/network/curl/CurlRequest.cpp:
(WebCore::CurlRequest::didCompleteTransfer):
(WebCore::CurlRequest::networkLoadMetrics):
* platform/network/mac/ResourceHandleMac.mm:
(WebCore::ResourceHandle::start):
* platform/network/mac/WebCoreResourceHandleAsOperationQueueDelegate.h:
* platform/network/mac/WebCoreResourceHandleAsOperationQueueDelegate.mm:
(-[WebCoreResourceHandleAsOperationQueueDelegate connection:willSendRequest:redirectResponse:]):
(-[WebCoreResourceHandleAsOperationQueueDelegate connection:didReceiveResponse:]):
(-[WebCoreResourceHandleAsOperationQueueDelegate connectionDidFinishLoading:]):
Source/WebKit:
* NetworkProcess/cocoa/NetworkDataTaskCocoa.mm:
(WebKit::NetworkDataTaskCocoa::willPerformHTTPRedirection):
* NetworkProcess/cocoa/NetworkSessionCocoa.mm:
(-[WKNetworkSessionDelegate URLSession:task:didFinishCollectingMetrics:]):
(-[WKNetworkSessionDelegate URLSession:dataTask:didReceiveResponse:completionHandler:]):
* NetworkProcess/soup/NetworkDataTaskSoup.cpp:
(WebKit::NetworkDataTaskSoup::NetworkDataTaskSoup):
(WebKit::NetworkDataTaskSoup::clearRequest):
(WebKit::NetworkDataTaskSoup::resume):
(WebKit::NetworkDataTaskSoup::didSendRequest):
(WebKit::NetworkDataTaskSoup::dispatchDidCompleteWithError):
(WebKit::NetworkDataTaskSoup::continueHTTPRedirection):
(WebKit::NetworkDataTaskSoup::networkEvent):
(WebKit::NetworkDataTaskSoup::didStartRequest):
(WebKit::NetworkDataTaskSoup::didRestart):
LayoutTests:
* http/tests/misc/webtiming-slow-load-expected.txt:
* http/tests/misc/webtiming-slow-load.py:
Our new metrics gathering now matches Firefox instead of Chrome in PerformanceResourceTiming::responseEnd in this edge case of a deprecated API.
Update expectations accordingly.
* platform/mac-wk1/TestExpectations:
Bringing this test to passing in WK2 makes it flaky in WK1 because we don't get good redirect timing data from CFNetwork through NSURLConnection.
* platform/win/http/tests/misc/webtiming-one-redirect-expected.txt: Added.
* platform/win/http/tests/misc/webtiming-slow-load-expected.txt: Copied from LayoutTests/http/tests/misc/webtiming-slow-load-expected.txt.
* platform/win/http/tests/misc/webtiming-two-redirects-expected.txt: Added.
The network layer is now responsible for counting redirects and providing redirect timings.
Our friend CFURLConnection doesn't have that ability, so it doesn't pass these tests any more.
It never supported any timing APIs and other tests are skipped.
Canonical link: https://commits.webkit.org/238416@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@278391 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2021-06-03 01:25:53 +00:00
|
|
|
loader/ResourceLoadTiming.h
|
2019-04-18 23:20:26 +00:00
|
|
|
loader/ResourceLoader.h
|
|
|
|
loader/ResourceLoaderOptions.h
|
|
|
|
loader/ResourceLoaderTypes.h
|
|
|
|
loader/ResourceTimingInformation.h
|
|
|
|
loader/ShouldTreatAsContinuingLoad.h
|
|
|
|
loader/SubframeLoader.h
|
|
|
|
loader/SubresourceLoader.h
|
|
|
|
loader/SubstituteData.h
|
|
|
|
loader/SubstituteResource.h
|
|
|
|
loader/TextResourceDecoder.h
|
|
|
|
loader/ThreadableLoader.h
|
|
|
|
loader/ThreadableLoaderClient.h
|
|
|
|
|
|
|
|
loader/appcache/ApplicationCache.h
|
|
|
|
loader/appcache/ApplicationCacheHost.h
|
|
|
|
loader/appcache/ApplicationCacheStorage.h
|
|
|
|
|
|
|
|
loader/archive/Archive.h
|
|
|
|
loader/archive/ArchiveResource.h
|
|
|
|
|
|
|
|
loader/archive/mhtml/MHTMLArchive.h
|
|
|
|
|
2021-04-12 09:26:42 +00:00
|
|
|
loader/cache/CachedFontLoadRequest.h
|
2019-04-18 23:20:26 +00:00
|
|
|
loader/cache/CachePolicy.h
|
|
|
|
loader/cache/CachedImage.h
|
|
|
|
loader/cache/CachedImageClient.h
|
|
|
|
loader/cache/CachedRawResourceClient.h
|
|
|
|
loader/cache/CachedResource.h
|
|
|
|
loader/cache/CachedResourceClient.h
|
|
|
|
loader/cache/CachedResourceHandle.h
|
|
|
|
loader/cache/CachedResourceLoader.h
|
|
|
|
loader/cache/CachedResourceRequest.h
|
|
|
|
loader/cache/CachedStyleSheetClient.h
|
|
|
|
loader/cache/KeepaliveRequestTracker.h
|
|
|
|
loader/cache/MemoryCache.h
|
|
|
|
|
|
|
|
page/AbstractDOMWindow.h
|
|
|
|
page/AbstractFrame.h
|
|
|
|
page/ActivityState.h
|
|
|
|
page/ActivityStateChangeObserver.h
|
|
|
|
page/AdjustViewSizeOrNot.h
|
|
|
|
page/AlternativeTextClient.h
|
|
|
|
page/AutoplayEvent.h
|
|
|
|
page/Base64Utilities.h
|
|
|
|
page/CacheStorageProvider.h
|
|
|
|
page/CaptionUserPreferences.h
|
|
|
|
page/Chrome.h
|
|
|
|
page/ChromeClient.h
|
|
|
|
page/ClientOrigin.h
|
|
|
|
page/ContextMenuClient.h
|
|
|
|
page/ContextMenuContext.h
|
|
|
|
page/ContextMenuController.h
|
|
|
|
page/ContextMenuProvider.h
|
2019-05-26 22:39:09 +00:00
|
|
|
page/CrossSiteNavigationDataTransfer.h
|
2019-04-18 23:20:26 +00:00
|
|
|
page/DOMSelection.h
|
|
|
|
page/DOMTimer.h
|
|
|
|
page/DOMWindow.h
|
|
|
|
page/DOMWindowExtension.h
|
|
|
|
page/DOMWindowProperty.h
|
|
|
|
page/DatabaseProvider.h
|
2020-11-17 01:34:46 +00:00
|
|
|
page/DebugOverlayRegions.h
|
2019-04-18 23:20:26 +00:00
|
|
|
page/DebugPageOverlays.h
|
|
|
|
page/DeprecatedGlobalSettings.h
|
|
|
|
page/DeviceClient.h
|
|
|
|
page/DiagnosticLoggingClient.h
|
2021-03-26 17:08:07 +00:00
|
|
|
page/DiagnosticLoggingDomain.h
|
2019-04-18 23:20:26 +00:00
|
|
|
page/DiagnosticLoggingKeys.h
|
|
|
|
page/DiagnosticLoggingResultType.h
|
|
|
|
page/DisabledAdaptations.h
|
|
|
|
page/DragActions.h
|
|
|
|
page/DragClient.h
|
|
|
|
page/DragController.h
|
2020-11-04 01:44:02 +00:00
|
|
|
page/DummySpeechRecognitionProvider.h
|
2019-04-18 23:20:26 +00:00
|
|
|
page/EditorClient.h
|
|
|
|
page/EventHandler.h
|
|
|
|
page/FocusController.h
|
|
|
|
page/FocusDirection.h
|
|
|
|
page/Frame.h
|
|
|
|
page/FrameDestructionObserver.h
|
2020-11-17 01:34:46 +00:00
|
|
|
page/FrameFlattening.h
|
2019-08-15 15:35:35 +00:00
|
|
|
page/FrameIdentifier.h
|
2019-04-18 23:20:26 +00:00
|
|
|
page/FrameSnapshotting.h
|
|
|
|
page/FrameTree.h
|
|
|
|
page/FrameView.h
|
|
|
|
page/FrameViewLayoutContext.h
|
|
|
|
page/GlobalFrameIdentifier.h
|
|
|
|
page/GlobalWindowIdentifier.h
|
2021-06-29 00:39:15 +00:00
|
|
|
page/KeyboardScroll.h
|
2019-04-18 23:20:26 +00:00
|
|
|
page/LayoutMilestone.h
|
|
|
|
page/MediaCanStartListener.h
|
2021-02-10 02:06:01 +00:00
|
|
|
page/MediaControlsContextMenuItem.h
|
2019-04-18 23:20:26 +00:00
|
|
|
page/MediaProducer.h
|
|
|
|
page/MemoryRelease.h
|
2019-10-10 00:03:47 +00:00
|
|
|
page/NavigatorIsLoggedIn.h
|
2020-11-17 01:34:46 +00:00
|
|
|
page/PDFImageCachingPolicy.h
|
2019-04-18 23:20:26 +00:00
|
|
|
page/Page.h
|
2021-05-15 00:29:19 +00:00
|
|
|
page/PageColorSampler.h
|
2019-04-18 23:20:26 +00:00
|
|
|
page/PageConfiguration.h
|
|
|
|
page/PageConsoleClient.h
|
|
|
|
page/PageGroup.h
|
2019-05-27 20:30:51 +00:00
|
|
|
page/PageIdentifier.h
|
2019-04-18 23:20:26 +00:00
|
|
|
page/PageOverlay.h
|
|
|
|
page/PageOverlayController.h
|
Plumb an Optional<PageIdentifier> through Pasteboard-related codepaths
https://bugs.webkit.org/show_bug.cgi?id=221987
Reviewed by Tim Horton.
Source/WebCore:
In order to facilitate tagging pasteboard reads and writes with a data owner type on iOS sourced from
`WKContentView`, we add infrastructure to (indirectly) tag `Pasteboard` with an optional `PageIdentifier` to
indicate which page is triggering the pasteboard operation.
However, since the `Pasteboard` class should only be responsible for interfacing with platform-dependent
strategies for reading or writing data, we can't directly add a `PageIdentifier` member to `Pasteboard`.
Instead, we introduce a separate `PasteboardContext` object, and let `Pasteboard` hold a unique pointer to this
context (which is set during construction). `PasteboardContext` is then subclassed by `PagePasteboardContext`,
which holds a `PageIdentifier` and is created from call sites of the `Pasteboard` constructor that have access
to page identifiers (e.g. `Editor`, `Clipboard`, `EventHandler`).
In a future patch, this opaque `PasteboardContext` will be converted back to a `PagePasteboardContext` in order
to retrieve the page identifier in the WebKit client layer.
* Headers.cmake:
* Modules/async-clipboard/Clipboard.cpp:
(WebCore::Clipboard::readText):
(WebCore::Clipboard::writeText):
(WebCore::Clipboard::read):
(WebCore::Clipboard::ItemWriter::ItemWriter):
Here (and in many places below), create `PagePasteboardContext` objects and use them to create `Pasteboard`s,
passing them in as opaque `PasteboardContext`s.
* WebCore.xcodeproj/project.pbxproj:
* dom/DataTransfer.cpp:
(WebCore::DataTransfer::createForDrag):
* dom/DataTransfer.h:
* editing/Editor.cpp:
(WebCore::createDataTransferForClipboardEvent):
(WebCore::dispatchClipboardEvent):
(WebCore::Editor::pasteAsPlainTextBypassingDHTML):
(WebCore::Editor::performCutOrCopy):
(WebCore::Editor::paste):
(WebCore::Editor::pasteAsPlainText):
(WebCore::Editor::pasteAsQuotation):
(WebCore::Editor::copyURL):
(WebCore::Editor::copyImage):
* editing/EditorCommand.cpp:
(WebCore::executePasteGlobalSelection):
* editing/mac/EditorMac.mm:
(WebCore::Editor::readSelectionFromPasteboard):
(WebCore::Editor::replaceNodeFromPasteboard):
* inspector/CommandLineAPIHost.cpp:
(WebCore::CommandLineAPIHost::copyText):
* inspector/InspectorFrontendHost.cpp:
(WebCore::InspectorFrontendHost::copyText):
* page/DragController.cpp:
(WebCore::documentFragmentFromDragData):
(WebCore::DragController::dragExited):
(WebCore::DragController::performDragOperation):
(WebCore::DragController::tryDHTMLDrag):
(WebCore::DragController::tryToUpdateDroppedImagePlaceholders):
* page/EventHandler.cpp:
(WebCore::EventHandler::handleDrag):
* page/PagePasteboardContext.h: Added.
Add `PagePasteboardContext`, a `PasteboardContext` subclass that contains a `PageIdentifier` indicating which
`Page` is requesting pasteboard access.
(isType):
* platform/DragData.cpp:
(WebCore::DragData::DragData):
(WebCore::DragData::createPasteboardContext const):
Also plumb a `PageIdentifier` through `DragData`, and use it to implement a helper method that returns a context
object for `Pasteboard`.
* platform/DragData.h:
Additionally make `operator=` platform-agnostic, instead of limited to GTK. (It isn't clear why this needs to be
limited to the GTK port).
(WebCore::DragData::DragData):
(WebCore::DragData::pageID const):
* platform/Pasteboard.h:
Augment `Pasteboard`'s (numerous) platform-specific constructors to take in a `PasteboardContext` unique
pointer as well, and store it in `m_context`.
(WebCore::Pasteboard::Pasteboard):
(WebCore::Pasteboard::context const):
* platform/PasteboardContext.h: Added.
Add `PasteboardContext`, which provides additional context for an arbitrary pasteboard operation in an opaque
fashion. See `PagePasteboardContext` above.
(WebCore::PasteboardContext::isPagePasteboardContext const):
* platform/StaticPasteboard.cpp:
(WebCore::StaticPasteboard::StaticPasteboard):
* platform/cocoa/DragDataCocoa.mm:
(WebCore::DragData::DragData):
(WebCore::DragData::canSmartReplace const):
(WebCore::DragData::asPlainText const):
* platform/gtk/PasteboardGtk.cpp:
(WebCore::Pasteboard::createForCopyAndPaste):
(WebCore::Pasteboard::createForGlobalSelection):
(WebCore::Pasteboard::createForDragAndDrop):
(WebCore::Pasteboard::create):
(WebCore::Pasteboard::Pasteboard):
* platform/ios/PasteboardIOS.mm:
(WebCore::Pasteboard::Pasteboard):
(WebCore::Pasteboard::createForDragAndDrop):
(WebCore::Pasteboard::create):
(WebCore::Pasteboard::createForCopyAndPaste):
* platform/libwpe/PasteboardLibWPE.cpp:
(WebCore::Pasteboard::createForCopyAndPaste):
(WebCore::Pasteboard::Pasteboard):
* platform/mac/PasteboardMac.mm:
(WebCore::Pasteboard::Pasteboard):
(WebCore::Pasteboard::createForCopyAndPaste):
(WebCore::Pasteboard::createForDragAndDrop):
(WebCore::Pasteboard::create):
* platform/win/DragDataWin.cpp:
(WebCore::DragData::DragData):
* platform/win/PasteboardWin.cpp:
(WebCore::Pasteboard::createForCopyAndPaste):
(WebCore::Pasteboard::createForDragAndDrop):
(WebCore::Pasteboard::create):
(WebCore::Pasteboard::Pasteboard):
Source/WebKit:
Update more `DragData` and `Pasteboard` initialization sites by passing in a `PageIdentifier` or
`PasteboardContext`, respectively. See WebCore ChangeLog for more details.
* Shared/WebCoreArgumentCoders.cpp:
(IPC::ArgumentCoder<DragData>::encode):
(IPC::ArgumentCoder<DragData>::decode):
* UIProcess/Cocoa/WebViewImpl.mm:
(WebKit::WebViewImpl::draggingEntered):
(WebKit::WebViewImpl::draggingUpdated):
(WebKit::WebViewImpl::draggingExited):
* UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView dragDataForDropSession:dragDestinationAction:]):
* WebProcess/WebCoreSupport/gtk/WebEditorClientGtk.cpp:
(WebKit::WebEditorClient::updateGlobalSelection):
* WebProcess/WebCoreSupport/mac/WebDragClientMac.mm:
(WebKit::WebDragClient::declareAndWriteDragImage):
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::performDragControllerAction):
* WebProcess/WebPage/ios/WebPageIOS.mm:
(WebKit::WebPage::performActionOnElement):
Source/WebKitLegacy/mac:
Create and pass in a `PasteboardContext` when creating a `Pasteboard`. See WebCore ChangeLog for more details.
* WebCoreSupport/WebDragClient.mm:
(WebDragClient::declareAndWriteDragImage):
Canonical link: https://commits.webkit.org/234275@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@273077 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2021-02-18 16:56:42 +00:00
|
|
|
page/PagePasteboardContext.h
|
2019-04-18 23:20:26 +00:00
|
|
|
page/PerformanceLogging.h
|
|
|
|
page/PerformanceLoggingClient.h
|
|
|
|
page/PointerCaptureController.h
|
2020-10-06 23:44:47 +00:00
|
|
|
page/PointerCharacteristics.h
|
2019-04-18 23:20:26 +00:00
|
|
|
page/PointerLockController.h
|
2019-12-13 21:36:25 +00:00
|
|
|
page/PostMessageOptions.h
|
2019-04-18 23:20:26 +00:00
|
|
|
page/PrewarmInformation.h
|
|
|
|
page/PrintContext.h
|
|
|
|
page/ProcessWarming.h
|
|
|
|
page/Quirks.h
|
2020-04-27 01:02:58 +00:00
|
|
|
page/ReducedResolutionSeconds.h
|
2019-04-18 23:20:26 +00:00
|
|
|
page/RemoteDOMWindow.h
|
|
|
|
page/RemoteFrame.h
|
|
|
|
page/RenderingUpdateScheduler.h
|
|
|
|
page/RuntimeEnabledFeatures.h
|
2020-01-18 05:49:24 +00:00
|
|
|
page/ScrollBehavior.h
|
2019-04-18 23:20:26 +00:00
|
|
|
page/ScrollIntoViewOptions.h
|
|
|
|
page/ScrollLogicalPosition.h
|
2020-01-18 05:49:24 +00:00
|
|
|
page/ScrollOptions.h
|
2019-04-18 23:20:26 +00:00
|
|
|
page/ScrollToOptions.h
|
|
|
|
page/SecurityOrigin.h
|
|
|
|
page/SecurityOriginData.h
|
|
|
|
page/SecurityOriginHash.h
|
|
|
|
page/SecurityPolicy.h
|
|
|
|
page/SettingsBase.h
|
|
|
|
page/ShareData.h
|
|
|
|
page/SocketProvider.h
|
2020-11-04 01:44:02 +00:00
|
|
|
page/SpeechRecognitionProvider.h
|
2019-04-18 23:20:26 +00:00
|
|
|
page/SpeechSynthesisClient.h
|
2020-11-17 01:34:46 +00:00
|
|
|
page/StorageBlockingPolicy.h
|
2019-04-18 23:20:26 +00:00
|
|
|
page/SuspendableTimer.h
|
2020-11-17 01:34:46 +00:00
|
|
|
page/TextDirectionSubmenuInclusionBehavior.h
|
2019-04-18 23:20:26 +00:00
|
|
|
page/TextIndicator.h
|
2021-05-07 20:28:04 +00:00
|
|
|
page/TranslationContextMenuInfo.h
|
2019-04-18 23:20:26 +00:00
|
|
|
page/UserContentController.h
|
|
|
|
page/UserContentProvider.h
|
|
|
|
page/UserContentTypes.h
|
|
|
|
page/UserContentURLPattern.h
|
2020-11-17 01:34:46 +00:00
|
|
|
page/UserInterfaceDirectionPolicy.h
|
2021-08-21 02:56:54 +00:00
|
|
|
page/UserMediaRequestIdentifier.h
|
2019-04-18 23:20:26 +00:00
|
|
|
page/UserMessageHandler.h
|
|
|
|
page/UserMessageHandlerDescriptor.h
|
|
|
|
page/UserMessageHandlersNamespace.h
|
|
|
|
page/UserScript.h
|
|
|
|
page/UserScriptTypes.h
|
|
|
|
page/UserStyleSheet.h
|
|
|
|
page/UserStyleSheetTypes.h
|
|
|
|
page/ValidationMessageClient.h
|
|
|
|
page/ViewportConfiguration.h
|
|
|
|
page/VisitedLinkStore.h
|
|
|
|
page/WebCoreKeyboardUIMode.h
|
|
|
|
page/WebKitNamespace.h
|
|
|
|
page/WheelEventDeltaFilter.h
|
2019-10-10 00:24:44 +00:00
|
|
|
page/WheelEventTestMonitor.h
|
2019-04-18 23:20:26 +00:00
|
|
|
page/WindowFeatures.h
|
|
|
|
|
|
|
|
page/csp/ContentSecurityPolicy.h
|
|
|
|
page/csp/ContentSecurityPolicyClient.h
|
|
|
|
page/csp/ContentSecurityPolicyHash.h
|
|
|
|
page/csp/ContentSecurityPolicyResponseHeaders.h
|
|
|
|
|
|
|
|
page/scrolling/AsyncScrollingCoordinator.h
|
|
|
|
page/scrolling/ScrollSnapOffsetsInfo.h
|
|
|
|
page/scrolling/ScrollingConstraints.h
|
|
|
|
page/scrolling/ScrollingCoordinator.h
|
|
|
|
page/scrolling/ScrollingCoordinatorTypes.h
|
|
|
|
page/scrolling/ScrollingMomentumCalculator.h
|
|
|
|
page/scrolling/ScrollingStateFixedNode.h
|
|
|
|
page/scrolling/ScrollingStateFrameHostingNode.h
|
|
|
|
page/scrolling/ScrollingStateFrameScrollingNode.h
|
|
|
|
page/scrolling/ScrollingStateNode.h
|
|
|
|
page/scrolling/ScrollingStateOverflowScrollingNode.h
|
|
|
|
page/scrolling/ScrollingStatePositionedNode.h
|
|
|
|
page/scrolling/ScrollingStateScrollingNode.h
|
|
|
|
page/scrolling/ScrollingStateStickyNode.h
|
|
|
|
page/scrolling/ScrollingStateTree.h
|
|
|
|
page/scrolling/ScrollingThread.h
|
|
|
|
page/scrolling/ScrollingTree.h
|
|
|
|
page/scrolling/ScrollingTreeFrameHostingNode.h
|
|
|
|
page/scrolling/ScrollingTreeFrameScrollingNode.h
|
2020-05-05 00:59:07 +00:00
|
|
|
page/scrolling/ScrollingTreeGestureState.h
|
[Async overflow scrolling] Vertical scrolls over a horizontally scrollable overflow are captured
https://bugs.webkit.org/show_bug.cgi?id=210320
Reviewed by Tim Horton.
Source/WebCore:
This patch adds somewhat more sophisticated latching logic to the scrolling thread, which
fixes the inability to vertically scroll if the mouse is over an enclosed horizontal scroller.
ScrollingTree owns a ScrollingTreeLatchingController, which determines when to latch and clear
latching. Latch clearing uses a 100ms delay (like main thread latching) so that a starting gesture
soon after another gesture, whose initial x and y are small, goes to the same scroller as before.
Scrolling tree latching works as follows. When we receive a scroll event which allows use of the
latched node, and there is a latched node, send the event directly to that node. Otherwise,
hit-test to find the most deeply nested scroll target. Traverse up the parent chain giving each node
an opportunity to handle the event. If handled by a node, that node becomes the latched node.
ScrollingTree no longer tracks the latched node itself.
Tests: scrollingcoordinator/mac/latching/horizontal-overflow-back-swipe.html
scrollingcoordinator/mac/latching/horizontal-overflow-in-vertical-overflow.html
* Sources.txt:
* WebCore.xcodeproj/project.pbxproj:
* page/scrolling/ScrollingTree.cpp:
(WebCore::ScrollingTree::shouldHandleWheelEventSynchronously):
(WebCore::ScrollingTree::handleWheelEvent):
(WebCore::ScrollingTree::commitTreeState):
(WebCore::ScrollingTree::latchedNodeID const):
(WebCore::ScrollingTree::clearLatchedNode):
(WebCore::ScrollingTree::mainFrameScrollPosition const):
(WebCore::ScrollingTree::scrollingTreeAsText):
(WebCore::ScrollingTree::setOrClearLatchedNode): Deleted.
(WebCore::ScrollingTree::latchedNode): Deleted.
(WebCore::ScrollingTree::setLatchedNode): Deleted.
* page/scrolling/ScrollingTree.h:
(WebCore::ScrollingTree::hasLatchedNode const): Deleted.
* page/scrolling/ScrollingTreeLatchingController.cpp: Added.
(WebCore::ScrollingTreeLatchingController::receivedWheelEvent):
(WebCore::ScrollingTreeLatchingController::latchedNodeForEvent const):
(WebCore::ScrollingTreeLatchingController::latchedNodeID const):
(WebCore::ScrollingTreeLatchingController::nodeDidHandleEvent):
(WebCore::ScrollingTreeLatchingController::nodeWasRemoved):
(WebCore::ScrollingTreeLatchingController::clearLatchedNode):
* page/scrolling/ScrollingTreeLatchingController.h: Added.
* page/scrolling/ScrollingTreeScrollingNode.cpp:
(WebCore::ScrollingTreeScrollingNode::isLatchedNode const):
(WebCore::ScrollingTreeScrollingNode::canScrollWithWheelEvent const):
(WebCore::ScrollingTreeScrollingNode::scrollLimitReached const):
* page/scrolling/ScrollingTreeScrollingNode.h:
* page/scrolling/mac/ScrollingTreeFrameScrollingNodeMac.mm:
(WebCore::ScrollingTreeFrameScrollingNodeMac::handleWheelEvent):
* page/scrolling/mac/ScrollingTreeOverflowScrollingNodeMac.mm:
(WebCore::ScrollingTreeOverflowScrollingNodeMac::handleWheelEvent):
LayoutTests:
Tests for horizontal inside vertical overflow, test that hit-testing inside scrolled-to-limit horizontal scrollers
still allows for swipe navigation, and test the latching timeout.
* fast/scrolling/latching/iframe-latch-small-deltas-expected.txt:
* fast/scrolling/latching/iframe-latch-small-deltas.html:
* scrollingcoordinator/mac/latching/horizontal-overflow-back-swipe-expected.txt: Added.
* scrollingcoordinator/mac/latching/horizontal-overflow-back-swipe.html: Added.
* scrollingcoordinator/mac/latching/horizontal-overflow-in-vertical-overflow-expected.txt: Added.
* scrollingcoordinator/mac/latching/horizontal-overflow-in-vertical-overflow.html: Added.
Canonical link: https://commits.webkit.org/223228@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@259872 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2020-04-10 15:43:57 +00:00
|
|
|
page/scrolling/ScrollingTreeLatchingController.h
|
2019-04-18 23:20:26 +00:00
|
|
|
page/scrolling/ScrollingTreeNode.h
|
|
|
|
page/scrolling/ScrollingTreeOverflowScrollingNode.h
|
|
|
|
page/scrolling/ScrollingTreeScrollingNode.h
|
|
|
|
page/scrolling/ScrollingTreeScrollingNodeDelegate.h
|
|
|
|
page/scrolling/ThreadedScrollingTree.h
|
|
|
|
|
|
|
|
platform/AbortableTaskQueue.h
|
|
|
|
platform/CPUMonitor.h
|
|
|
|
platform/ColorChooser.h
|
|
|
|
platform/ColorChooserClient.h
|
|
|
|
platform/ContentFilterUnblockHandler.h
|
|
|
|
platform/ContentType.h
|
|
|
|
platform/ContextMenu.h
|
|
|
|
platform/ContextMenuItem.h
|
|
|
|
platform/ControlStates.h
|
|
|
|
platform/Cookie.h
|
|
|
|
platform/CountedUserActivity.h
|
|
|
|
platform/Cursor.h
|
|
|
|
platform/DataListSuggestionPicker.h
|
|
|
|
platform/DataListSuggestionsClient.h
|
2021-02-20 00:51:03 +00:00
|
|
|
platform/DataOwnerType.h
|
2019-04-18 23:20:26 +00:00
|
|
|
platform/DateComponents.h
|
2021-04-22 18:09:53 +00:00
|
|
|
platform/DateTimeChooser.h
|
|
|
|
platform/DateTimeChooserClient.h
|
|
|
|
platform/DateTimeChooserParameters.h
|
2019-04-18 23:20:26 +00:00
|
|
|
platform/Decimal.h
|
|
|
|
platform/DeferrableTask.h
|
2020-02-18 19:42:31 +00:00
|
|
|
platform/DocumentIdentifier.h
|
2019-04-18 23:20:26 +00:00
|
|
|
platform/DragData.h
|
|
|
|
platform/DragImage.h
|
|
|
|
platform/DragItem.h
|
|
|
|
platform/EventTrackingRegions.h
|
|
|
|
platform/FileChooser.h
|
|
|
|
platform/FileHandle.h
|
|
|
|
platform/FileMonitor.h
|
|
|
|
platform/FileStreamClient.h
|
|
|
|
platform/FloatConversion.h
|
|
|
|
platform/HostWindow.h
|
|
|
|
platform/KeyedCoding.h
|
|
|
|
platform/KeypressCommand.h
|
|
|
|
platform/LayoutUnit.h
|
2019-10-04 19:30:08 +00:00
|
|
|
platform/LegacySchemeRegistry.h
|
2019-04-18 23:20:26 +00:00
|
|
|
platform/Length.h
|
|
|
|
platform/LengthBox.h
|
|
|
|
platform/LengthPoint.h
|
|
|
|
platform/LengthSize.h
|
|
|
|
platform/LinkIcon.h
|
|
|
|
platform/LocalizedStrings.h
|
|
|
|
platform/LogInitialization.h
|
|
|
|
platform/Logging.h
|
|
|
|
platform/LowPowerModeNotifier.h
|
|
|
|
platform/MIMETypeRegistry.h
|
2020-12-04 22:57:47 +00:00
|
|
|
platform/MediaCapabilitiesDecodingInfo.h
|
|
|
|
platform/MediaCapabilitiesEncodingInfo.h
|
|
|
|
platform/MediaCapabilitiesInfo.h
|
2020-12-02 01:44:43 +00:00
|
|
|
platform/MediaDescription.h
|
2019-04-18 23:20:26 +00:00
|
|
|
platform/MediaSample.h
|
|
|
|
platform/MediaSelectionOption.h
|
2021-01-20 10:43:59 +00:00
|
|
|
platform/MediaSessionGroupIdentifier.h
|
2020-03-06 20:52:52 +00:00
|
|
|
platform/MediaSessionIdentifier.h
|
2020-02-27 03:51:17 +00:00
|
|
|
platform/MediaStrategy.h
|
2021-04-01 15:17:27 +00:00
|
|
|
platform/MediaUniqueIdentifier.h
|
2020-03-06 20:01:52 +00:00
|
|
|
platform/NowPlayingManager.h
|
2019-04-18 23:20:26 +00:00
|
|
|
platform/NotImplemented.h
|
|
|
|
platform/OrientationNotifier.h
|
|
|
|
platform/PODInterval.h
|
|
|
|
platform/PODIntervalTree.h
|
|
|
|
platform/PODRedBlackTree.h
|
|
|
|
platform/Pasteboard.h
|
Plumb an Optional<PageIdentifier> through Pasteboard-related codepaths
https://bugs.webkit.org/show_bug.cgi?id=221987
Reviewed by Tim Horton.
Source/WebCore:
In order to facilitate tagging pasteboard reads and writes with a data owner type on iOS sourced from
`WKContentView`, we add infrastructure to (indirectly) tag `Pasteboard` with an optional `PageIdentifier` to
indicate which page is triggering the pasteboard operation.
However, since the `Pasteboard` class should only be responsible for interfacing with platform-dependent
strategies for reading or writing data, we can't directly add a `PageIdentifier` member to `Pasteboard`.
Instead, we introduce a separate `PasteboardContext` object, and let `Pasteboard` hold a unique pointer to this
context (which is set during construction). `PasteboardContext` is then subclassed by `PagePasteboardContext`,
which holds a `PageIdentifier` and is created from call sites of the `Pasteboard` constructor that have access
to page identifiers (e.g. `Editor`, `Clipboard`, `EventHandler`).
In a future patch, this opaque `PasteboardContext` will be converted back to a `PagePasteboardContext` in order
to retrieve the page identifier in the WebKit client layer.
* Headers.cmake:
* Modules/async-clipboard/Clipboard.cpp:
(WebCore::Clipboard::readText):
(WebCore::Clipboard::writeText):
(WebCore::Clipboard::read):
(WebCore::Clipboard::ItemWriter::ItemWriter):
Here (and in many places below), create `PagePasteboardContext` objects and use them to create `Pasteboard`s,
passing them in as opaque `PasteboardContext`s.
* WebCore.xcodeproj/project.pbxproj:
* dom/DataTransfer.cpp:
(WebCore::DataTransfer::createForDrag):
* dom/DataTransfer.h:
* editing/Editor.cpp:
(WebCore::createDataTransferForClipboardEvent):
(WebCore::dispatchClipboardEvent):
(WebCore::Editor::pasteAsPlainTextBypassingDHTML):
(WebCore::Editor::performCutOrCopy):
(WebCore::Editor::paste):
(WebCore::Editor::pasteAsPlainText):
(WebCore::Editor::pasteAsQuotation):
(WebCore::Editor::copyURL):
(WebCore::Editor::copyImage):
* editing/EditorCommand.cpp:
(WebCore::executePasteGlobalSelection):
* editing/mac/EditorMac.mm:
(WebCore::Editor::readSelectionFromPasteboard):
(WebCore::Editor::replaceNodeFromPasteboard):
* inspector/CommandLineAPIHost.cpp:
(WebCore::CommandLineAPIHost::copyText):
* inspector/InspectorFrontendHost.cpp:
(WebCore::InspectorFrontendHost::copyText):
* page/DragController.cpp:
(WebCore::documentFragmentFromDragData):
(WebCore::DragController::dragExited):
(WebCore::DragController::performDragOperation):
(WebCore::DragController::tryDHTMLDrag):
(WebCore::DragController::tryToUpdateDroppedImagePlaceholders):
* page/EventHandler.cpp:
(WebCore::EventHandler::handleDrag):
* page/PagePasteboardContext.h: Added.
Add `PagePasteboardContext`, a `PasteboardContext` subclass that contains a `PageIdentifier` indicating which
`Page` is requesting pasteboard access.
(isType):
* platform/DragData.cpp:
(WebCore::DragData::DragData):
(WebCore::DragData::createPasteboardContext const):
Also plumb a `PageIdentifier` through `DragData`, and use it to implement a helper method that returns a context
object for `Pasteboard`.
* platform/DragData.h:
Additionally make `operator=` platform-agnostic, instead of limited to GTK. (It isn't clear why this needs to be
limited to the GTK port).
(WebCore::DragData::DragData):
(WebCore::DragData::pageID const):
* platform/Pasteboard.h:
Augment `Pasteboard`'s (numerous) platform-specific constructors to take in a `PasteboardContext` unique
pointer as well, and store it in `m_context`.
(WebCore::Pasteboard::Pasteboard):
(WebCore::Pasteboard::context const):
* platform/PasteboardContext.h: Added.
Add `PasteboardContext`, which provides additional context for an arbitrary pasteboard operation in an opaque
fashion. See `PagePasteboardContext` above.
(WebCore::PasteboardContext::isPagePasteboardContext const):
* platform/StaticPasteboard.cpp:
(WebCore::StaticPasteboard::StaticPasteboard):
* platform/cocoa/DragDataCocoa.mm:
(WebCore::DragData::DragData):
(WebCore::DragData::canSmartReplace const):
(WebCore::DragData::asPlainText const):
* platform/gtk/PasteboardGtk.cpp:
(WebCore::Pasteboard::createForCopyAndPaste):
(WebCore::Pasteboard::createForGlobalSelection):
(WebCore::Pasteboard::createForDragAndDrop):
(WebCore::Pasteboard::create):
(WebCore::Pasteboard::Pasteboard):
* platform/ios/PasteboardIOS.mm:
(WebCore::Pasteboard::Pasteboard):
(WebCore::Pasteboard::createForDragAndDrop):
(WebCore::Pasteboard::create):
(WebCore::Pasteboard::createForCopyAndPaste):
* platform/libwpe/PasteboardLibWPE.cpp:
(WebCore::Pasteboard::createForCopyAndPaste):
(WebCore::Pasteboard::Pasteboard):
* platform/mac/PasteboardMac.mm:
(WebCore::Pasteboard::Pasteboard):
(WebCore::Pasteboard::createForCopyAndPaste):
(WebCore::Pasteboard::createForDragAndDrop):
(WebCore::Pasteboard::create):
* platform/win/DragDataWin.cpp:
(WebCore::DragData::DragData):
* platform/win/PasteboardWin.cpp:
(WebCore::Pasteboard::createForCopyAndPaste):
(WebCore::Pasteboard::createForDragAndDrop):
(WebCore::Pasteboard::create):
(WebCore::Pasteboard::Pasteboard):
Source/WebKit:
Update more `DragData` and `Pasteboard` initialization sites by passing in a `PageIdentifier` or
`PasteboardContext`, respectively. See WebCore ChangeLog for more details.
* Shared/WebCoreArgumentCoders.cpp:
(IPC::ArgumentCoder<DragData>::encode):
(IPC::ArgumentCoder<DragData>::decode):
* UIProcess/Cocoa/WebViewImpl.mm:
(WebKit::WebViewImpl::draggingEntered):
(WebKit::WebViewImpl::draggingUpdated):
(WebKit::WebViewImpl::draggingExited):
* UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView dragDataForDropSession:dragDestinationAction:]):
* WebProcess/WebCoreSupport/gtk/WebEditorClientGtk.cpp:
(WebKit::WebEditorClient::updateGlobalSelection):
* WebProcess/WebCoreSupport/mac/WebDragClientMac.mm:
(WebKit::WebDragClient::declareAndWriteDragImage):
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::performDragControllerAction):
* WebProcess/WebPage/ios/WebPageIOS.mm:
(WebKit::WebPage::performActionOnElement):
Source/WebKitLegacy/mac:
Create and pass in a `PasteboardContext` when creating a `Pasteboard`. See WebCore ChangeLog for more details.
* WebCoreSupport/WebDragClient.mm:
(WebDragClient::declareAndWriteDragImage):
Canonical link: https://commits.webkit.org/234275@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@273077 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2021-02-18 16:56:42 +00:00
|
|
|
platform/PasteboardContext.h
|
[Clipboard API] Support writing multiple PasteboardCustomData with SharedBuffers to the pasteboard
https://bugs.webkit.org/show_bug.cgi?id=202851
Reviewed by Darin Adler.
Source/WebCore:
This patch refactors some logic around WebCore::PasteboardCustomData, in preparation for implementing the async
clipboard API. There are two main goals of this refactoring:
1. Enable writing multiple items (each backed by PasteboardCustomData) to the platform pasteboard.
2. Enable writing platform data in the form of SharedBuffers to the platform pasteboard.
See below for more details; no tests, as there is no change in behavior yet.
* Headers.cmake:
* Sources.txt:
* SourcesCocoa.txt:
* WebCore.xcodeproj/project.pbxproj:
Move PasteboardCustomData out of Pasteboard.h and into its own file.
* dom/DataTransfer.cpp:
(WebCore::DataTransfer::commitToPasteboard):
* editing/cocoa/EditorCocoa.mm:
(WebCore::Editor::getPasteboardTypesAndDataForAttachment):
* platform/Pasteboard.cpp:
(WebCore::PasteboardCustomData::createSharedBuffer const): Deleted.
(WebCore::PasteboardCustomData::fromSharedBuffer): Deleted.
Moved these method implementations to PasteboardCustomData.cpp.
* platform/Pasteboard.h:
Refactor PasteboardCustomData so that its member variables are now private, and encapsulated behind methods
Additionally, make it so that the only way to set data on PasteboardCustomData is to use the writeString,
writeData, and writeStringInCustomData methods, which ensure that the PasteboardCustomData is always in a
consistent state.
* platform/PasteboardCustomData.cpp: Added.
(WebCore::copyPlatformData):
(WebCore::PasteboardCustomData::Entry::Entry):
(WebCore::PasteboardCustomData::Entry::operator=):
Refactor the implementation of PasteboardCustomData, so that it contains a list of PasteboardCustomData entries
instead of individual Vectors and HashMaps.
(WebCore::PasteboardCustomData::PasteboardCustomData):
(WebCore::PasteboardCustomData::createSharedBuffer const):
(WebCore::PasteboardCustomData::fromSharedBuffer):
(WebCore::PasteboardCustomData::writeString):
(WebCore::PasteboardCustomData::writeData):
(WebCore::PasteboardCustomData::writeStringInCustomData):
(WebCore::PasteboardCustomData::addOrMoveEntryToEnd):
Move logic from StaticPasteboard into PasteboardCustomData, and refactor these methods to handle
Vector<PasteboardCustomData::Entry>.
(WebCore::PasteboardCustomData::clear):
(WebCore::PasteboardCustomData::operator=):
(WebCore::PasteboardCustomData::orderedTypes const):
(WebCore::PasteboardCustomData::hasData const):
(WebCore::PasteboardCustomData::hasSameOriginCustomData const):
(WebCore::PasteboardCustomData::sameOriginCustomStringData const):
(WebCore::PasteboardCustomData::readBuffer const):
(WebCore::PasteboardCustomData::readString const):
(WebCore::PasteboardCustomData::readStringInCustomData const):
(WebCore::PasteboardCustomData::forEachType const):
(WebCore::PasteboardCustomData::forEachPlatformString const):
(WebCore::PasteboardCustomData::forEachCustomString const):
(WebCore::PasteboardCustomData::forEachPlatformStringOrBuffer const):
Moved these method implementations from StaticPasteboard to PasteboardCustomData, and also introduced some new
methods to help iterate through types and data.
* platform/PasteboardCustomData.h: Added.
(WebCore::PasteboardCustomData::origin const):
(WebCore::PasteboardCustomData::setOrigin):
(WebCore::PasteboardCustomData::data const):
* platform/PasteboardStrategy.h:
* platform/PlatformPasteboard.h:
* platform/SharedBuffer.cpp:
(WebCore::SharedBuffer::decoder const):
* platform/SharedBuffer.h:
* platform/StaticPasteboard.cpp:
(WebCore::StaticPasteboard::hasData):
(WebCore::StaticPasteboard::typesSafeForBindings):
(WebCore::StaticPasteboard::typesForLegacyUnsafeBindings):
(WebCore::StaticPasteboard::readString):
(WebCore::StaticPasteboard::readStringInCustomData):
(WebCore::StaticPasteboard::writeString):
(WebCore::StaticPasteboard::writeData):
(WebCore::StaticPasteboard::writeStringInCustomData):
(WebCore::StaticPasteboard::clear):
(WebCore::StaticPasteboard::takeCustomData):
(WebCore::StaticPasteboard::StaticPasteboard): Deleted.
Refactor StaticPasteboard to now contain a PasteboardCustomData; additionally, adjust several methods in
StaticPasteboard to simply call into PasteboardCustomData to write, read, or clear data.
(WebCore::updateTypes): Deleted.
* platform/StaticPasteboard.h:
* platform/cocoa/PasteboardCocoa.mm:
(WebCore::Pasteboard::readStringInCustomData):
(WebCore::Pasteboard::readOrigin):
(WebCore::PasteboardCustomData::cocoaType): Deleted.
Moved the implementation of PasteboardCustomData::cocoaType from PasteboardCocoa.mm to
PasteboardCustomDataCocoa.mm.
* platform/cocoa/PasteboardCustomDataCocoa.mm: Added.
(WebCore::PasteboardCustomData::cocoaType):
* platform/ios/AbstractPasteboard.h:
* platform/ios/PlatformPasteboardIOS.mm:
(WebCore::PlatformPasteboard::changeCount const):
(WebCore::registerItemsToPasteboard):
(WebCore::registerItemToPasteboard):
(WebCore::PlatformPasteboard::write):
Support writing multiple PasteboardCustomData objects to the platform pasteboard on iOS, by generating
NSItemProviders for each one. This refactors the existing `registerItemToPasteboard` helper to handle multiple
registration lists, renames it to `registerItemsToPasteboard` (plural), and then reimplements
`registerItemToPasteboard` in terms of `registerItemsToPasteboard`.
(WebCore::PlatformPasteboard::typesSafeForDOMToReadAndWrite const):
(WebCore::createItemProviderRegistrationList):
Adjust these to use getters on PasteboardCustomData instead of accessing the member variables directly.
* platform/ios/WebItemProviderPasteboard.mm:
(-[WebItemProviderPasteboard init]):
(-[WebItemProviderPasteboard stageRegistrationLists:]):
(-[WebItemProviderPasteboard clearRegistrationLists]):
(-[WebItemProviderPasteboard takeRegistrationLists]):
Refactor registration list staging on WebItemProviderPasteboard to support multiple registration lists, each
representing a single item provider.
(-[WebItemProviderPasteboard stageRegistrationList:]): Deleted.
(-[WebItemProviderPasteboard takeRegistrationList]): Deleted.
* platform/mac/PasteboardMac.mm:
(WebCore::Pasteboard::write):
* platform/mac/PasteboardWriter.mm:
(WebCore::createPasteboardWriter):
* platform/mac/PlatformPasteboardMac.mm:
(WebCore::PlatformPasteboard::typesSafeForDOMToReadAndWrite const):
(WebCore::PlatformPasteboard::write):
Support writing multiple PasteboardCustomData objects to the platform pasteboard on macOS, by creating and
setting NSPasteboardItems for each custom data. This means that instead of using legacy macOS pasteboard types,
we need to use the "modern" NSPasteboardTypes when writing each item. This is because NSPasteboardItem quietly
fails when attempting to set data for a legacy pasteboard type.
(WebCore::createPasteboardItem):
Source/WebKit:
See WebCore ChangeLog for more details.
* Shared/WebCoreArgumentCoders.cpp:
(IPC::ArgumentCoder<PasteboardCustomData::Entry>::encode):
(IPC::ArgumentCoder<PasteboardCustomData::Entry>::decode):
Add helpers to encode and decode PasteboardCustomData::Entry.
(IPC::ArgumentCoder<PasteboardCustomData>::encode):
(IPC::ArgumentCoder<PasteboardCustomData>::decode):
* Shared/WebCoreArgumentCoders.h:
Add support for encoding and decoding PasteboardCustomData by encoding and decoding each of its items (see
above).
* UIProcess/Cocoa/WebViewImpl.mm:
(WebKit::WebViewImpl::requestDOMPasteAccess):
* UIProcess/WebPasteboardProxy.h:
* UIProcess/WebPasteboardProxy.messages.in:
* UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView canPerformActionForWebView:withSender:]):
(allPasteboardItemOriginsMatchOrigin):
(-[WKContentView _didHandleAdditionalDragItemsRequest:]):
Tweak several methods to use the new methods on PasteboardCustomData instead of accessing the member variables
directly.
(-[WKContentView cleanUpDragSourceSessionState]):
(-[WKContentView _prepareToDragPromisedAttachment:]):
(-[WKContentView _itemsForBeginningOrAddingToSessionWithRegistrationLists:stagedDragSource:]):
(-[WKContentView dragInteraction:itemsForBeginningSession:]):
(-[WKContentView _itemsForBeginningOrAddingToSessionWithRegistrationList:stagedDragSource:]): Deleted.
Adjust these methods to handle multiple staged item providers (for now, it remains that iOS drag and drop
codepaths will still only write a single item to the pasteboard).
Source/WebKitLegacy/mac:
See WebCore ChangeLog for more details.
* WebCoreSupport/WebPlatformStrategies.h:
Canonical link: https://commits.webkit.org/216383@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@251100 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2019-10-14 21:52:26 +00:00
|
|
|
platform/PasteboardCustomData.h
|
2019-04-18 23:20:26 +00:00
|
|
|
platform/PasteboardItemInfo.h
|
|
|
|
platform/PasteboardStrategy.h
|
|
|
|
platform/PasteboardWriterData.h
|
|
|
|
platform/PlatformEvent.h
|
|
|
|
platform/PlatformExportMacros.h
|
|
|
|
platform/PlatformKeyboardEvent.h
|
|
|
|
platform/PlatformMouseEvent.h
|
|
|
|
platform/PlatformPasteboard.h
|
|
|
|
platform/PlatformScreen.h
|
|
|
|
platform/PlatformSpeechSynthesisUtterance.h
|
|
|
|
platform/PlatformSpeechSynthesisVoice.h
|
|
|
|
platform/PlatformSpeechSynthesizer.h
|
|
|
|
platform/PlatformStrategies.h
|
|
|
|
platform/PlatformTouchEvent.h
|
|
|
|
platform/PlatformTouchPoint.h
|
|
|
|
platform/PlatformWheelEvent.h
|
[iOS] Compatibility mouse events aren't prevented by calling preventDefault() on pointerdown
https://bugs.webkit.org/show_bug.cgi?id=198124
<rdar://problem/50410863>
Reviewed by Tim Horton.
LayoutTests/imported/w3c:
We add basic support to run a test that wasn't specifically designed for a touch-based interaction such that the test
at imported/w3c/web-platform-tests/pointerevents/pointerevent_suppress_compat_events_on_click.html may run on iOS. The
trick here is to add a pause after a touch ends to avoid the likelihood or two tap gestures triggering a double tap.
* web-platform-tests/resources/testdriver-vendor.js:
Source/WebCore:
This fix builds atop the one made for wkb.ug/198072 which fixes this bug on macOS alone.
In order to correctly prevent "compatibility" mouse events from being dispatched when the initial "pointerdown" event had preventDefault()
called while handled, we need to pass the PointerID for the touch that triggered a tap gesture in the UI process down in the Web process
and into the resulting PlatformMouseEvent. This will allow upon dispatch of a PlatformMouseEvent to call into PointerCaptureController
to identify if the dispatch of mouse events is allowed for the event's PointerID.
To support this, some refactoring was required. The PointerID header is now under platform/ such that PlatformMouseEvent may safely use it.
Additionally, PointerEvent::defaultMousePointerIdentifier() is now a global mousePointerID defined in PointerID.h.
Finally, PointerCaptureController::touchEndedOrWasCancelledForIdentifier() has been renamed to PointerCaptureController::touchWithIdentifierWasRemoved() and
has WEBCORE_EXPORT such that it may be called from WebKit as the indication that a pointer is no longer active will now be initiated in WebKit
on the UI process side.
Testing is covered by the pre-existing imported/w3c/web-platform-tests/pointerevents/pointerevent_suppress_compat_events_on_click.html
which will now run on iOS through a change to WebKitAdditions.
* Headers.cmake:
* WebCore.xcodeproj/project.pbxproj:
* dom/Element.cpp:
(WebCore::Element::dispatchMouseEvent): When dealing with a mouse event on iOS, check whether the mouse event's PointerID allows for compatibility
mouse events to be dispatched using PointerCaptureController::preventsCompatibilityMouseEventsForIdentifier(). The "click" event is not a compatibility
mouse event.
* dom/PointerEvent.h:
* page/PointerCaptureController.cpp:
(WebCore::PointerCaptureController::PointerCaptureController):
(WebCore::PointerCaptureController::touchWithIdentifierWasRemoved):
(WebCore::PointerCaptureController::touchEndedOrWasCancelledForIdentifier): Deleted.
* page/PointerCaptureController.h:
* platform/PlatformMouseEvent.h:
(WebCore::PlatformMouseEvent::PlatformMouseEvent):
(WebCore::PlatformMouseEvent::pointerId const):
* platform/PointerID.h: Renamed from Source/WebCore/dom/PointerID.h.
(WebCore::mousePointerID):
Source/WebKit:
In order to correctly prevent "compatibility" mouse events from being dispatched when the initial "pointerdown" event had preventDefault()
called while handled, we need to pass the PointerID for the touch that triggered a tap gesture in the UI process down in the Web process
and into the resulting PlatformMouseEvent.
This means we need to identify the touch identifier, which is the same as the PointerID used for Pointer Events, in the single tap gesture
recognizer, an instance of WKSyntheticTapGestureRecognizer. To do this, we subclass the -[UIResponder touchesEnded:withEvent:] method and
track the touch identifier as the lastActiveTouchIdentifier, a new public property of WKSyntheticTapGestureRecognizer. To allow for this,
we need the support of the content view's UIWebTouchEventsGestureRecognizer which is exposed to the WKSyntheticTapGestureRecognizer as its
supportingWebTouchEventsGestureRecognizer property. This lastActiveTouchIdentifier property is cleared as the gesture recognizer is reset.
This allows the content view to pass the PointerID down to the Web process starting from -[WKContentView _singleTapRecognized:], going
through WebPageProxy::commitPotentialTap() and eventually WebPage::completeSyntheticClick().
While we used to tell the PointerCaptureController that a PointerID was no longer active when a given touch ended or was canceled (in
WebKitAdditions code), we can no longer do this as the dispatch of a synthetic tap is performed asynchronously and will happen past the
dispatch of "pointerup" and "pointercancel" Pointer Events. To clear inactive PointerIDs from the PointerCaptureController, we add a new
touchWithIdentifierWasRemoved() method on the WebPage and its proxy. When the WKSyntheticTapGestureRecognizer resets and -[WKContentView _singleTapDidReset:]
is called, we call that method which allows for only active PointerIDs to be tracked by the PointerCaptureController.
* UIProcess/WebPageProxy.h:
* UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView setupInteraction]):
(-[WKContentView cleanupInteraction]):
(-[WKContentView _singleTapDidReset:]):
(-[WKContentView _singleTapRecognized:]):
* UIProcess/ios/WKSyntheticTapGestureRecognizer.h:
* UIProcess/ios/WKSyntheticTapGestureRecognizer.m:
(-[WKSyntheticTapGestureRecognizer reset]):
(-[WKSyntheticTapGestureRecognizer touchesEnded:withEvent:]):
* UIProcess/ios/WebPageProxyIOS.mm:
(WebKit::WebPageProxy::touchWithIdentifierWasRemoved):
(WebKit::WebPageProxy::commitPotentialTap):
* WebProcess/WebPage/WebPage.h:
* WebProcess/WebPage/WebPage.messages.in:
* WebProcess/WebPage/ios/WebPageIOS.mm:
(WebKit::dispatchSyntheticMouseMove):
(WebKit::WebPage::handleSyntheticClick):
(WebKit::WebPage::completePendingSyntheticClickForContentChangeObserver):
(WebKit::WebPage::completeSyntheticClick):
(WebKit::WebPage::commitPotentialTap):
(WebKit::WebPage::touchWithIdentifierWasRemoved):
LayoutTests:
We're adding an iOS-specific expectation since this test prints out the pointer type detected while it runs, which is "touch"
on iOS and "mouse" in the expectation that already exists for macOS.
* platform/ios/imported/w3c/web-platform-tests/pointerevents/pointerevent_suppress_compat_events_on_click-expected.txt: Added.
Canonical link: https://commits.webkit.org/212200@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@245639 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2019-05-22 19:58:15 +00:00
|
|
|
platform/PointerID.h
|
2019-04-18 23:20:26 +00:00
|
|
|
platform/PopupMenu.h
|
|
|
|
platform/PopupMenuClient.h
|
|
|
|
platform/PopupMenuStyle.h
|
|
|
|
platform/ProcessIdentifier.h
|
|
|
|
platform/PromisedAttachmentInfo.h
|
|
|
|
platform/PublicSuffix.h
|
|
|
|
platform/RectEdges.h
|
|
|
|
platform/ReferrerPolicy.h
|
|
|
|
platform/RegistrableDomain.h
|
|
|
|
platform/RemoteCommandListener.h
|
|
|
|
platform/RuntimeApplicationChecks.h
|
|
|
|
platform/SSLKeyGenerator.h
|
|
|
|
platform/ScreenProperties.h
|
2021-03-22 18:29:36 +00:00
|
|
|
platform/ScriptExecutionContextIdentifier.h
|
2019-04-18 23:20:26 +00:00
|
|
|
platform/ScrollAnimator.h
|
|
|
|
platform/ScrollTypes.h
|
|
|
|
platform/ScrollView.h
|
|
|
|
platform/ScrollableArea.h
|
|
|
|
platform/Scrollbar.h
|
|
|
|
platform/ScrollbarTheme.h
|
|
|
|
platform/ScrollbarThemeComposite.h
|
|
|
|
platform/SearchPopupMenu.h
|
2020-02-13 21:40:08 +00:00
|
|
|
platform/SerializedPlatformDataCue.h
|
2020-02-21 03:35:50 +00:00
|
|
|
platform/SerializedPlatformDataCueValue.h
|
2019-04-18 23:20:26 +00:00
|
|
|
platform/SharedBuffer.h
|
|
|
|
platform/SharedStringHash.h
|
2020-03-30 14:48:38 +00:00
|
|
|
platform/SleepDisabler.h
|
|
|
|
platform/SleepDisablerClient.h
|
|
|
|
platform/SleepDisablerIdentifier.h
|
2019-04-18 23:20:26 +00:00
|
|
|
platform/SuddenTermination.h
|
|
|
|
platform/Supplementable.h
|
2020-11-09 20:20:06 +00:00
|
|
|
platform/SystemSoundDelegate.h
|
2019-04-18 23:20:26 +00:00
|
|
|
platform/ThemeTypes.h
|
|
|
|
platform/ThreadCheck.h
|
|
|
|
platform/ThreadGlobalData.h
|
|
|
|
platform/ThreadSafeDataBuffer.h
|
|
|
|
platform/ThreadTimers.h
|
|
|
|
platform/Timer.h
|
|
|
|
platform/TouchAction.h
|
|
|
|
platform/UserActivity.h
|
|
|
|
platform/UserAgent.h
|
|
|
|
platform/UserInterfaceLayoutDirection.h
|
|
|
|
platform/ValidationBubble.h
|
|
|
|
platform/WebGLStateTracker.h
|
|
|
|
platform/Widget.h
|
|
|
|
platform/WindowsKeyboardCodes.h
|
|
|
|
|
|
|
|
platform/animation/Animation.h
|
|
|
|
platform/animation/AnimationList.h
|
|
|
|
platform/animation/AnimationUtilities.h
|
|
|
|
platform/animation/TimingFunction.h
|
|
|
|
|
2020-02-27 03:51:17 +00:00
|
|
|
platform/audio/AudioArray.h
|
|
|
|
platform/audio/AudioBus.h
|
|
|
|
platform/audio/AudioChannel.h
|
|
|
|
platform/audio/AudioDestination.h
|
2019-04-18 23:20:26 +00:00
|
|
|
platform/audio/AudioHardwareListener.h
|
2020-02-27 03:51:17 +00:00
|
|
|
platform/audio/AudioIOCallback.h
|
2019-04-18 23:20:26 +00:00
|
|
|
platform/audio/AudioSession.h
|
|
|
|
platform/audio/AudioSourceProvider.h
|
2020-10-16 09:48:57 +00:00
|
|
|
platform/audio/AudioSourceProviderClient.h
|
2019-04-18 23:20:26 +00:00
|
|
|
platform/audio/AudioStreamDescription.h
|
2020-10-13 21:53:22 +00:00
|
|
|
platform/audio/AudioUtilities.h
|
2020-03-05 11:53:35 +00:00
|
|
|
platform/audio/NowPlayingInfo.h
|
2019-04-18 23:20:26 +00:00
|
|
|
platform/audio/PlatformAudioData.h
|
|
|
|
platform/audio/PlatformMediaSession.h
|
|
|
|
platform/audio/PlatformMediaSessionManager.h
|
2020-10-13 21:53:22 +00:00
|
|
|
platform/audio/PushPullFIFO.h
|
2019-04-18 23:20:26 +00:00
|
|
|
|
2020-12-17 22:23:39 +00:00
|
|
|
platform/audio/gstreamer/AudioDestinationGStreamer.h
|
|
|
|
|
2021-05-30 00:51:26 +00:00
|
|
|
platform/calc/CalcExpressionNode.h
|
|
|
|
platform/calc/CalculationValue.h
|
|
|
|
|
[GPUP] Implement Modern EME API in the GPU Process
https://bugs.webkit.org/show_bug.cgi?id=208090
Reviewed by Eric Carlson.
Source/WebCore:
To enable caching of certain CDM properties, allow them to be fetched rather than queries. As such,
CDMPrivate::supportsInitDataType -> supportedInitDataTypes, supportsRobustness -> supportedRobustnesses.
To enable CDM types to be passed across XPC, add explicit sizes to the enumerations, and add encode and
decode templates to the data types.
To enable async messaging form the GPU process's MediaPlayer, send the MediaPlayer the information it
needs when both legacy- and modern-EME APIs are both enabled, rather than allow the MediaPlayerPrivate
to query the MediaPlayer.
Move most of the algorithimic implementation from CDM into CDMPrivate, allowing it to be run from within
the GPU process. Similmarly, make most of the synchronous methods in CDMInstance instead take a callback
parameter, allowing them to be implemented in a remote process.
* Headers.cmake:
* Modules/encryptedmedia/CDM.cpp:
(WebCore::CDM::getSupportedConfiguration):
(WebCore::CDM::supportsInitDataType const):
* Modules/encryptedmedia/CDM.h:
* Modules/encryptedmedia/MediaKeySession.cpp:
(WebCore::MediaKeySession::update):
* Modules/encryptedmedia/MediaKeySystemAccess.cpp:
(WebCore::MediaKeySystemAccess::createMediaKeys):
* Modules/encryptedmedia/MediaKeys.cpp:
(WebCore::MediaKeys::setServerCertificate):
* Modules/encryptedmedia/MediaKeys.h:
* Modules/encryptedmedia/MediaKeys.idl:
* Sources.txt:
* WebCore.xcodeproj/project.pbxproj:
* html/HTMLMediaElement.cpp:
(WebCore::HTMLMediaElement::updateShouldContinueAfterNeedKey):
(WebCore::HTMLMediaElement::mediaPlayerKeyNeeded):
(WebCore::HTMLMediaElement::mediaEngineWasUpdated):
(WebCore::HTMLMediaElement::addEventListener):
(WebCore::HTMLMediaElement::removeEventListener):
* html/HTMLMediaElement.h:
* platform/encryptedmedia/CDMEncryptionScheme.h:
* platform/encryptedmedia/CDMFactory.cpp:
(WebCore::CDMFactory::resetFactories):
* platform/encryptedmedia/CDMFactory.h:
* platform/encryptedmedia/CDMInstance.h:
* platform/encryptedmedia/CDMInstanceSession.h:
* platform/encryptedmedia/CDMKeyStatus.h:
* platform/encryptedmedia/CDMKeySystemConfiguration.h:
(WebCore::CDMKeySystemConfiguration::encode const):
(WebCore::CDMKeySystemConfiguration::decode):
* platform/encryptedmedia/CDMMediaCapability.h:
(WebCore::CDMMediaCapability::encode const):
(WebCore::CDMMediaCapability::decode):
* platform/encryptedmedia/CDMMessageType.h:
* platform/encryptedmedia/CDMPrivate.cpp:
(WebCore::CDMPrivate::getSupportedConfiguration):
(WebCore::CDMPrivate::doSupportedConfigurationStep):
(WebCore::CDMPrivate::isPersistentType):
(WebCore::CDMPrivate::getSupportedCapabilitiesForAudioVideoType):
(WebCore::CDMPrivate::getConsentStatus):
* platform/encryptedmedia/CDMPrivate.h:
* platform/encryptedmedia/CDMRequirement.h:
* platform/encryptedmedia/CDMRestrictions.h:
(WebCore::CDMRestrictions::encode const):
(WebCore::CDMRestrictions::decode):
* platform/encryptedmedia/CDMSessionType.h:
* platform/encryptedmedia/clearkey/CDMClearKey.cpp:
(WebCore::CDMPrivateClearKey::supportedInitDataTypes const):
(WebCore::CDMPrivateClearKey::supportsSessionTypeWithConfiguration const):
(WebCore::CDMPrivateClearKey::supportedRobustnesses const):
(WebCore::CDMInstanceClearKey::initializeWithConfiguration):
(WebCore::CDMInstanceClearKey::setServerCertificate):
(WebCore::CDMInstanceClearKey::setStorageDirectory):
(WebCore::CDMInstanceSessionClearKey::updateLicense):
* platform/encryptedmedia/clearkey/CDMClearKey.h:
* platform/graphics/MediaPlayer.cpp:
(WebCore::MediaPlayer::setShouldContinueAfterKeyNeeded):
(WebCore::MediaPlayer::keyNeeded):
* platform/graphics/MediaPlayer.h:
(WebCore::MediaPlayerClient::mediaPlayerKeyNeeded):
* platform/graphics/MediaPlayerPrivate.h:
(WebCore::MediaPlayerPrivateInterface::setShouldContinueAfterKeyNeeded):
* platform/graphics/avfoundation/CDMFairPlayStreaming.cpp:
(WebCore::CDMPrivateFairPlayStreaming::supportedInitDataTypes const):
(WebCore::CDMPrivateFairPlayStreaming::supportsSessionTypeWithConfiguration const):
(WebCore::CDMPrivateFairPlayStreaming::supportedRobustnesses const):
(WebCore::CDMPrivateFairPlayStreaming::supportsInitData const):
* platform/graphics/avfoundation/CDMFairPlayStreaming.h:
* platform/graphics/avfoundation/cf/MediaPlayerPrivateAVFoundationCF.cpp:
(WebCore::AVFWrapper::shouldWaitForLoadingOfResource):
* platform/graphics/avfoundation/objc/CDMInstanceFairPlayStreamingAVFObjC.h:
* platform/graphics/avfoundation/objc/CDMInstanceFairPlayStreamingAVFObjC.mm:
(WebCore::CDMInstanceFairPlayStreamingAVFObjC::initializeWithConfiguration):
(WebCore::CDMInstanceFairPlayStreamingAVFObjC::setServerCertificate):
(WebCore::CDMInstanceFairPlayStreamingAVFObjC::setStorageDirectory):
(WebCore::CDMInstanceSessionFairPlayStreamingAVFObjC::updateLicense):
(WebCore::CDMInstanceSessionFairPlayStreamingAVFObjC::sessionIdentifierChanged):
* platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:
(WebCore::MediaPlayerPrivateAVFoundationObjC::shouldWaitForLoadingOfResource):
* testing/MockCDMFactory.cpp:
(WebCore::MockCDMFactory::setSupportedRobustness):
(WebCore::MockCDM::supportedInitDataTypes const):
(WebCore::MockCDM::supportedRobustnesses const):
(WebCore::MockCDM::supportsSessionTypeWithConfiguration const):
(WebCore::MockCDM::supportsInitData const):
(WebCore::MockCDMInstance::initializeWithConfiguration):
(WebCore::MockCDMInstance::setServerCertificate):
(WebCore::MockCDMInstance::setStorageDirectory):
(WebCore::MockCDMInstanceSession::updateLicense):
* testing/MockCDMFactory.h:
(WebCore::MockCDMFactory::supportedRobustness const):
Source/WebKit:
Adopt changes to MediaPlayerProxy.
* GPUProcess/media/RemoteMediaPlayerProxy.cpp:
(WebKit::RemoteMediaPlayerProxy::mediaPlayerKeyNeeded):
* GPUProcess/media/RemoteMediaPlayerProxy.h:
* WebProcess/GPU/media/WebMediaStrategy.cpp:
(WebKit::WebMediaStrategy::registerCDMFactories):
* WebProcess/GPU/media/WebMediaStrategy.h:
Source/WebKitLegacy/mac:
Adopt changes to PlatformStrategies.
* GPUProcess/media/RemoteMediaPlayerProxy.cpp:
(WebKit::RemoteMediaPlayerProxy::mediaPlayerKeyNeeded):
* GPUProcess/media/RemoteMediaPlayerProxy.h:
* WebCoreSupport/WebPlatformStrategies.mm:
Canonical link: https://commits.webkit.org/221329@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@257660 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2020-02-28 23:20:03 +00:00
|
|
|
platform/encryptedmedia/CDMEncryptionScheme.h
|
|
|
|
platform/encryptedmedia/CDMFactory.h
|
|
|
|
platform/encryptedmedia/CDMInstance.h
|
|
|
|
platform/encryptedmedia/CDMInstanceSession.h
|
|
|
|
platform/encryptedmedia/CDMKeyStatus.h
|
|
|
|
platform/encryptedmedia/CDMKeySystemConfiguration.h
|
|
|
|
platform/encryptedmedia/CDMMediaCapability.h
|
|
|
|
platform/encryptedmedia/CDMMessageType.h
|
|
|
|
platform/encryptedmedia/CDMPrivate.h
|
|
|
|
platform/encryptedmedia/CDMProxy.h
|
|
|
|
platform/encryptedmedia/CDMRequirement.h
|
|
|
|
platform/encryptedmedia/CDMRestrictions.h
|
|
|
|
platform/encryptedmedia/CDMSessionType.h
|
2020-07-10 14:57:57 +00:00
|
|
|
platform/encryptedmedia/CDMUtilities.h
|
[GPUP] Implement Modern EME API in the GPU Process
https://bugs.webkit.org/show_bug.cgi?id=208090
Reviewed by Eric Carlson.
Source/WebCore:
To enable caching of certain CDM properties, allow them to be fetched rather than queries. As such,
CDMPrivate::supportsInitDataType -> supportedInitDataTypes, supportsRobustness -> supportedRobustnesses.
To enable CDM types to be passed across XPC, add explicit sizes to the enumerations, and add encode and
decode templates to the data types.
To enable async messaging form the GPU process's MediaPlayer, send the MediaPlayer the information it
needs when both legacy- and modern-EME APIs are both enabled, rather than allow the MediaPlayerPrivate
to query the MediaPlayer.
Move most of the algorithimic implementation from CDM into CDMPrivate, allowing it to be run from within
the GPU process. Similmarly, make most of the synchronous methods in CDMInstance instead take a callback
parameter, allowing them to be implemented in a remote process.
* Headers.cmake:
* Modules/encryptedmedia/CDM.cpp:
(WebCore::CDM::getSupportedConfiguration):
(WebCore::CDM::supportsInitDataType const):
* Modules/encryptedmedia/CDM.h:
* Modules/encryptedmedia/MediaKeySession.cpp:
(WebCore::MediaKeySession::update):
* Modules/encryptedmedia/MediaKeySystemAccess.cpp:
(WebCore::MediaKeySystemAccess::createMediaKeys):
* Modules/encryptedmedia/MediaKeys.cpp:
(WebCore::MediaKeys::setServerCertificate):
* Modules/encryptedmedia/MediaKeys.h:
* Modules/encryptedmedia/MediaKeys.idl:
* Sources.txt:
* WebCore.xcodeproj/project.pbxproj:
* html/HTMLMediaElement.cpp:
(WebCore::HTMLMediaElement::updateShouldContinueAfterNeedKey):
(WebCore::HTMLMediaElement::mediaPlayerKeyNeeded):
(WebCore::HTMLMediaElement::mediaEngineWasUpdated):
(WebCore::HTMLMediaElement::addEventListener):
(WebCore::HTMLMediaElement::removeEventListener):
* html/HTMLMediaElement.h:
* platform/encryptedmedia/CDMEncryptionScheme.h:
* platform/encryptedmedia/CDMFactory.cpp:
(WebCore::CDMFactory::resetFactories):
* platform/encryptedmedia/CDMFactory.h:
* platform/encryptedmedia/CDMInstance.h:
* platform/encryptedmedia/CDMInstanceSession.h:
* platform/encryptedmedia/CDMKeyStatus.h:
* platform/encryptedmedia/CDMKeySystemConfiguration.h:
(WebCore::CDMKeySystemConfiguration::encode const):
(WebCore::CDMKeySystemConfiguration::decode):
* platform/encryptedmedia/CDMMediaCapability.h:
(WebCore::CDMMediaCapability::encode const):
(WebCore::CDMMediaCapability::decode):
* platform/encryptedmedia/CDMMessageType.h:
* platform/encryptedmedia/CDMPrivate.cpp:
(WebCore::CDMPrivate::getSupportedConfiguration):
(WebCore::CDMPrivate::doSupportedConfigurationStep):
(WebCore::CDMPrivate::isPersistentType):
(WebCore::CDMPrivate::getSupportedCapabilitiesForAudioVideoType):
(WebCore::CDMPrivate::getConsentStatus):
* platform/encryptedmedia/CDMPrivate.h:
* platform/encryptedmedia/CDMRequirement.h:
* platform/encryptedmedia/CDMRestrictions.h:
(WebCore::CDMRestrictions::encode const):
(WebCore::CDMRestrictions::decode):
* platform/encryptedmedia/CDMSessionType.h:
* platform/encryptedmedia/clearkey/CDMClearKey.cpp:
(WebCore::CDMPrivateClearKey::supportedInitDataTypes const):
(WebCore::CDMPrivateClearKey::supportsSessionTypeWithConfiguration const):
(WebCore::CDMPrivateClearKey::supportedRobustnesses const):
(WebCore::CDMInstanceClearKey::initializeWithConfiguration):
(WebCore::CDMInstanceClearKey::setServerCertificate):
(WebCore::CDMInstanceClearKey::setStorageDirectory):
(WebCore::CDMInstanceSessionClearKey::updateLicense):
* platform/encryptedmedia/clearkey/CDMClearKey.h:
* platform/graphics/MediaPlayer.cpp:
(WebCore::MediaPlayer::setShouldContinueAfterKeyNeeded):
(WebCore::MediaPlayer::keyNeeded):
* platform/graphics/MediaPlayer.h:
(WebCore::MediaPlayerClient::mediaPlayerKeyNeeded):
* platform/graphics/MediaPlayerPrivate.h:
(WebCore::MediaPlayerPrivateInterface::setShouldContinueAfterKeyNeeded):
* platform/graphics/avfoundation/CDMFairPlayStreaming.cpp:
(WebCore::CDMPrivateFairPlayStreaming::supportedInitDataTypes const):
(WebCore::CDMPrivateFairPlayStreaming::supportsSessionTypeWithConfiguration const):
(WebCore::CDMPrivateFairPlayStreaming::supportedRobustnesses const):
(WebCore::CDMPrivateFairPlayStreaming::supportsInitData const):
* platform/graphics/avfoundation/CDMFairPlayStreaming.h:
* platform/graphics/avfoundation/cf/MediaPlayerPrivateAVFoundationCF.cpp:
(WebCore::AVFWrapper::shouldWaitForLoadingOfResource):
* platform/graphics/avfoundation/objc/CDMInstanceFairPlayStreamingAVFObjC.h:
* platform/graphics/avfoundation/objc/CDMInstanceFairPlayStreamingAVFObjC.mm:
(WebCore::CDMInstanceFairPlayStreamingAVFObjC::initializeWithConfiguration):
(WebCore::CDMInstanceFairPlayStreamingAVFObjC::setServerCertificate):
(WebCore::CDMInstanceFairPlayStreamingAVFObjC::setStorageDirectory):
(WebCore::CDMInstanceSessionFairPlayStreamingAVFObjC::updateLicense):
(WebCore::CDMInstanceSessionFairPlayStreamingAVFObjC::sessionIdentifierChanged):
* platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:
(WebCore::MediaPlayerPrivateAVFoundationObjC::shouldWaitForLoadingOfResource):
* testing/MockCDMFactory.cpp:
(WebCore::MockCDMFactory::setSupportedRobustness):
(WebCore::MockCDM::supportedInitDataTypes const):
(WebCore::MockCDM::supportedRobustnesses const):
(WebCore::MockCDM::supportsSessionTypeWithConfiguration const):
(WebCore::MockCDM::supportsInitData const):
(WebCore::MockCDMInstance::initializeWithConfiguration):
(WebCore::MockCDMInstance::setServerCertificate):
(WebCore::MockCDMInstance::setStorageDirectory):
(WebCore::MockCDMInstanceSession::updateLicense):
* testing/MockCDMFactory.h:
(WebCore::MockCDMFactory::supportedRobustness const):
Source/WebKit:
Adopt changes to MediaPlayerProxy.
* GPUProcess/media/RemoteMediaPlayerProxy.cpp:
(WebKit::RemoteMediaPlayerProxy::mediaPlayerKeyNeeded):
* GPUProcess/media/RemoteMediaPlayerProxy.h:
* WebProcess/GPU/media/WebMediaStrategy.cpp:
(WebKit::WebMediaStrategy::registerCDMFactories):
* WebProcess/GPU/media/WebMediaStrategy.h:
Source/WebKitLegacy/mac:
Adopt changes to PlatformStrategies.
* GPUProcess/media/RemoteMediaPlayerProxy.cpp:
(WebKit::RemoteMediaPlayerProxy::mediaPlayerKeyNeeded):
* GPUProcess/media/RemoteMediaPlayerProxy.h:
* WebCoreSupport/WebPlatformStrategies.mm:
Canonical link: https://commits.webkit.org/221329@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@257660 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2020-02-28 23:20:03 +00:00
|
|
|
|
2019-04-18 23:20:26 +00:00
|
|
|
platform/gamepad/GamepadProvider.h
|
|
|
|
platform/gamepad/GamepadProviderClient.h
|
|
|
|
platform/gamepad/PlatformGamepad.h
|
2020-10-10 19:46:34 +00:00
|
|
|
platform/gamepad/SharedGamepadValue.h
|
2019-04-18 23:20:26 +00:00
|
|
|
|
2020-01-22 00:26:24 +00:00
|
|
|
platform/graphics/AlphaPremultiplication.h
|
2019-04-18 23:20:26 +00:00
|
|
|
platform/graphics/ANGLEWebKitBridge.h
|
2020-05-04 21:24:49 +00:00
|
|
|
platform/graphics/AnimationFrameRate.h
|
2019-04-18 23:20:26 +00:00
|
|
|
platform/graphics/AudioTrackPrivate.h
|
2021-05-27 19:14:01 +00:00
|
|
|
platform/graphics/BifurcatedGraphicsContext.h
|
2019-04-18 23:20:26 +00:00
|
|
|
platform/graphics/BitmapImage.h
|
|
|
|
platform/graphics/Color.h
|
2020-05-28 02:30:37 +00:00
|
|
|
platform/graphics/ColorComponents.h
|
2020-07-03 16:55:41 +00:00
|
|
|
platform/graphics/ColorConversion.h
|
2019-04-18 23:20:26 +00:00
|
|
|
platform/graphics/ColorHash.h
|
2021-03-01 20:56:56 +00:00
|
|
|
platform/graphics/ColorLuminance.h
|
2020-05-27 21:40:09 +00:00
|
|
|
platform/graphics/ColorMatrix.h
|
2021-01-29 18:48:14 +00:00
|
|
|
platform/graphics/ColorModels.h
|
2020-07-01 05:53:20 +00:00
|
|
|
platform/graphics/ColorSerialization.h
|
2019-04-18 23:20:26 +00:00
|
|
|
platform/graphics/ColorSpace.h
|
2021-01-29 18:48:14 +00:00
|
|
|
platform/graphics/ColorTransferFunctions.h
|
Extended Color: Experiment with strongly typed ColorComponents
https://bugs.webkit.org/show_bug.cgi?id=212396
Reviewed by Darin Adler.
Source/WebCore:
Adds simple explicit types for sRGBA, LinearSRGBA, DisplayP3,
LinearDisplayP3, XYZA and HSLA colors. Conversion to/from
ColorComponents<float> is easy but explicit to make conversions
easier to spot.
The goal is to add type clarity (you know when you are dealing
with an sRGB color vs. a DisplayP3 color) and make dealing with
the colors nicer (color.red rather than color[0]). It also allows
us to simplify the naming of functions that convert between color
types as now only the output type needs to be in the function name.
* Headers.cmake:
Add new header, ColorTypes.h
* WebCore.xcodeproj/project.pbxproj:
Add new header, ColorTypes.h
* css/parser/CSSPropertyParserHelpers.cpp:
(WebCore::CSSPropertyParserHelpers::parseHSLParameters):
Switch from hslToSRGB({ ... }) to toSRGBA(HSLAColor { ... })
* editing/cocoa/DataDetection.mm:
(WebCore::DataDetection::detectContentInRange):
Update to use toHSLA() and HSLA<float> making the code a bit more readable.
* platform/graphics/Color.cpp:
(WebCore::Color::lightened const):
(WebCore::Color::darkened const):
(WebCore::Color::isDark const):
(WebCore::Color::lightness const):
(WebCore::Color::luminance const):
(WebCore::Color::colorSpaceAndComponents const):
(WebCore::Color::toSRGBASimpleColorLossy const):
(WebCore::Color::toSRGBALossy const):
(WebCore::Color::toSRGBAComponentsLossy const): Deleted.
* platform/graphics/Color.h:
Renames toSRGBAComponentsLossy() to toSRGBALossy() which now returns
a SRGBA<float>.
* platform/graphics/ColorMatrix.h:
(WebCore::ColorMatrix::transformColorComponents const): Deleted.
Remove transformColorComponents, keeping just transformedColorComponents
to simplify the interface. With late conversion to ColorComponents, the
latter is more straightforward to use in most cases anyway.
* platform/graphics/ColorUtilities.cpp:
(WebCore::linearToRGBColorComponent):
(WebCore::rgbToLinearColorComponent):
(WebCore::toLinearSRGBA):
(WebCore::toSRGBA):
(WebCore::toLinearDisplayP3):
(WebCore::toDisplayP3):
(WebCore::toXYZ):
(WebCore::lightness):
(WebCore::luminance):
(WebCore::contrastRatio):
(WebCore::toHSLA):
(WebCore::premultiplied):
(WebCore::rgbToLinearComponents): Deleted.
(WebCore::linearToRGBComponents): Deleted.
(WebCore::xyzToLinearSRGB): Deleted.
(WebCore::linearSRGBToXYZ): Deleted.
(WebCore::XYZToLinearP3): Deleted.
(WebCore::linearP3ToXYZ): Deleted.
(WebCore::p3ToSRGB): Deleted.
(WebCore::sRGBToP3): Deleted.
(WebCore::sRGBToHSL): Deleted.
(WebCore::hslToSRGB): Deleted.
* platform/graphics/ColorUtilities.h:
Rename / rework conversion and utility functions to operate on explicit Color
types. In doing so, simplify the names of the conversion functions so only name
the output type. For instance:
ColorComponents<float> p3ToSRGB(const ColorComponents<float>&);
is now
SRGBA<float> toSRGBA(const DisplayP3<float>&);
as the input type is implicit in the call. A little duplication was needed
for linearToRGBColorComponent/rgbToLinearColorComponent (as it was used for
both sRGB and DisplayP3 linearization), but mostly things stay the same.
* platform/graphics/ExtendedColor.cpp:
(WebCore::ExtendedColor::toSRGBALossy const):
(WebCore::ExtendedColor::toSRGBAComponentsLossy const): Deleted.
* platform/graphics/ExtendedColor.h:
Renamed toSRGBAComponentsLossy() to toSRGBALossy() and have it
return a SRGBA<float>.
* platform/graphics/SimpleColor.h:
(WebCore::SimpleColor::asSRGBA const):
(WebCore::makeSimpleColor):
(WebCore::SimpleColor::asSRGBFloatComponents const): Deleted.
Rename asSRGBFloatComponents() to asSRGBA<T>() and have it
return a SRGBA<float>. Replace makeSimpleColor taking FloatComponents
with one taking a SRGBA<float>, making it much clearer that this
is only valid for sRGB.
* platform/graphics/filters/FELighting.cpp:
(WebCore::FELighting::drawLighting):
Rework to support seperate types for SRGB<float> and LinearSRGBA<float>.
* platform/graphics/filters/FELighting.cpp:
(WebCore::FELighting::drawLighting):
* platform/graphics/filters/FilterOperation.cpp:
(WebCore::BasicColorMatrixFilterOperation::transformColor const):
(WebCore::BasicComponentTransferFilterOperation::transformColor const):
(WebCore::InvertLightnessFilterOperation::transformColor const):
(WebCore::InvertLightnessFilterOperation::inverseTransformColor const):
* platform/graphics/filters/FilterOperation.h:
(WebCore::FilterOperation::transformColor const):
(WebCore::FilterOperation::inverseTransformColor const):
* platform/graphics/filters/FilterOperations.cpp:
(WebCore::FilterOperations::transformColor const):
(WebCore::FilterOperations::inverseTransformColor const):
Use SRGBA<float> rather than ColorComponents<float> to make it clear
that the filters only work on sRGB colors right now.
* rendering/RenderTheme.cpp:
(WebCore::RenderTheme::disabledTextColor const):
* rendering/TextPaintStyle.cpp:
(WebCore::textColorIsLegibleAgainstBackgroundColor):
* platform/graphics/cairo/CairoUtilities.cpp:
(WebCore::setSourceRGBAFromColor):
* platform/graphics/cairo/GradientCairo.cpp:
(WebCore::addColorStopRGBA):
(WebCore::setCornerColorRGBA):
(WebCore::interpolateColorStop):
* platform/graphics/gtk/ColorGtk.cpp:
(WebCore::Color::operator GdkRGBA const):
* platform/graphics/texmap/TextureMapperGL.cpp:
(WebCore::TextureMapperGL::drawBorder):
(WebCore::TextureMapperGL::drawNumber):
(WebCore::prepareFilterProgram):
(WebCore::TextureMapperGL::drawSolidColor):
(WebCore::TextureMapperGL::clearColor):
* platform/graphics/win/ColorDirect2D.cpp:
(WebCore::Color::operator D2D1_COLOR_F const):
(WebCore::Color::operator D2D1_VECTOR_4F const):
* platform/graphics/win/GradientDirect2D.cpp:
(WebCore::Gradient::generateGradient):
* platform/graphics/win/GraphicsContextDirect2D.cpp:
(WebCore::GraphicsContext::colorWithGlobalAlpha const):
Update to call toSRGBALossy() rather than toSRGBAComponentsLossy().
Source/WebKit:
* UIProcess/API/wpe/WebKitColor.cpp:
(webkitColorFillFromWebCoreColor):
* UIProcess/gtk/ViewGestureControllerGtk.cpp:
(WebKit::ViewGestureController::beginSwipeGesture):
* WebProcess/WebPage/WebFrame.cpp:
(WebKit::WebFrame::getDocumentBackgroundColor):
Update to call toSRGBALossy() rather than toSRGBAComponentsLossy().
Tools:
* TestWebKitAPI/Tests/WebCore/ColorTests.cpp:
(TestWebKitAPI::TEST):
* TestWebKitAPI/Tests/WebCore/ExtendedColorTests.cpp:
(TestWebKitAPI::TEST):
Update for changed names (e.g. toSRGBAComponentsLossy() -> toSRGBALossy())
and use of explicit types.
Canonical link: https://commits.webkit.org/225940@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@263000 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2020-06-13 16:42:58 +00:00
|
|
|
platform/graphics/ColorTypes.h
|
2020-05-17 04:55:40 +00:00
|
|
|
platform/graphics/ColorUtilities.h
|
2019-04-18 23:20:26 +00:00
|
|
|
platform/graphics/ComplexTextController.h
|
2020-02-19 01:12:47 +00:00
|
|
|
platform/graphics/ConcreteImageBuffer.h
|
2019-04-18 23:20:26 +00:00
|
|
|
platform/graphics/DashArray.h
|
|
|
|
platform/graphics/DecodingOptions.h
|
2021-05-25 01:26:18 +00:00
|
|
|
platform/graphics/DestinationColorSpace.h
|
2019-04-18 23:20:26 +00:00
|
|
|
platform/graphics/DisplayRefreshMonitor.h
|
|
|
|
platform/graphics/DisplayRefreshMonitorClient.h
|
2021-03-24 02:35:26 +00:00
|
|
|
platform/graphics/DisplayRefreshMonitorFactory.h
|
2019-04-18 23:20:26 +00:00
|
|
|
platform/graphics/DisplayRefreshMonitorManager.h
|
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:
Canonical link: https://commits.webkit.org/235866@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@275163 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2021-03-29 17:21:03 +00:00
|
|
|
platform/graphics/DisplayUpdate.h
|
2020-01-06 18:52:42 +00:00
|
|
|
platform/graphics/ExtensionsGL.h
|
2021-03-23 00:05:45 +00:00
|
|
|
platform/graphics/FloatLine.h
|
2019-04-18 23:20:26 +00:00
|
|
|
platform/graphics/FloatPoint.h
|
|
|
|
platform/graphics/FloatPoint3D.h
|
|
|
|
platform/graphics/FloatQuad.h
|
|
|
|
platform/graphics/FloatRect.h
|
|
|
|
platform/graphics/FloatRoundedRect.h
|
|
|
|
platform/graphics/FloatSize.h
|
|
|
|
platform/graphics/Font.h
|
|
|
|
platform/graphics/FontBaseline.h
|
|
|
|
platform/graphics/FontCache.h
|
|
|
|
platform/graphics/FontCascade.h
|
|
|
|
platform/graphics/FontCascadeDescription.h
|
|
|
|
platform/graphics/FontCascadeFonts.h
|
|
|
|
platform/graphics/FontDescription.h
|
|
|
|
platform/graphics/FontFamilySpecificationNull.h
|
2021-01-22 10:59:50 +00:00
|
|
|
platform/graphics/FontGenericFamilies.h
|
2019-04-18 23:20:26 +00:00
|
|
|
platform/graphics/FontMetrics.h
|
|
|
|
platform/graphics/FontPlatformData.h
|
|
|
|
platform/graphics/FontRanges.h
|
|
|
|
platform/graphics/FontSelectionAlgorithm.h
|
|
|
|
platform/graphics/FontSelector.h
|
|
|
|
platform/graphics/FontSelectorClient.h
|
|
|
|
platform/graphics/FontTaggedSettings.h
|
|
|
|
platform/graphics/FourCC.h
|
|
|
|
platform/graphics/GLContext.h
|
|
|
|
platform/graphics/GeometryUtilities.h
|
|
|
|
platform/graphics/Glyph.h
|
|
|
|
platform/graphics/GlyphBuffer.h
|
Make GlyphBufferAdvance and GlyphBufferOrigin more robust
https://bugs.webkit.org/show_bug.cgi?id=215143
Reviewed by Zalan Bujtas.
Source/WebCore:
GlyphBuffer contains vectors of advances and origins, which are conceptually
FloatSizes and FloatPoints. However, we need to pass these arrays into CTFontShapeGlyphs()
or CTFontTransformGlyphsWithLanguage(), which expects these vectors to use platform types.
Rather than converting in/out of platform types around the call site, we can simply use
the platform types throughout. Indeed, that's what we're doing today.
However, the mechanism we use today to make this platform-independent is to make a struct
which inherits from the platform types. Then, we static_cast the array of the struct to
an array of the base type. This is brittle, because it relies on the assumption that the
struct doesn't have any members added to it, which would change the stride of the array
and feed garbage into the shaping function.
Instead, a better design is to typedef the native type, and have all interactions with the
types go through standalone functions which deal with the native type. That way, we can't
accidentally change the size of the array elements.
No new tests because there is no behavior change.
* Headers.cmake:
* WebCore.xcodeproj/project.pbxproj:
* platform/graphics/ComplexTextController.cpp:
(WebCore::ComplexTextController::advance):
* platform/graphics/FontCascade.cpp:
(WebCore::FontCascade::widthForSimpleText const):
(WebCore::FontCascade::layoutComplexText const):
(WebCore::FontCascade::drawGlyphBuffer const):
(WebCore::FontCascade::drawEmphasisMarks const):
(WebCore::GlyphToPathTranslator::extents):
(WebCore::GlyphToPathTranslator::advance):
* platform/graphics/GlyphBuffer.h:
(WebCore::GlyphBuffer::add):
(WebCore::GlyphBuffer::makeHole):
(WebCore::GlyphBuffer::expandLastAdvance):
(WebCore::GlyphBuffer::flatten):
(WebCore::GlyphBufferAdvance::GlyphBufferAdvance): Deleted.
(WebCore::GlyphBufferAdvance::operator FloatSize): Deleted.
(WebCore::GlyphBufferAdvance::setWidth): Deleted.
(WebCore::GlyphBufferAdvance::setHeight): Deleted.
(WebCore::GlyphBufferAdvance::width const): Deleted.
(WebCore::GlyphBufferAdvance::height const): Deleted.
(WebCore::GlyphBufferAdvance::encode const): Deleted.
(WebCore::GlyphBufferAdvance::decode): Deleted.
(WebCore::GlyphBufferOrigin::GlyphBufferOrigin): Deleted.
(WebCore::GlyphBufferOrigin::operator FloatPoint): Deleted.
(WebCore::GlyphBufferOrigin::setX): Deleted.
(WebCore::GlyphBufferOrigin::setY): Deleted.
(WebCore::GlyphBufferOrigin::x const): Deleted.
(WebCore::GlyphBufferOrigin::y const): Deleted.
(WebCore::GlyphBufferOrigin::encode const): Deleted.
(WebCore::GlyphBufferOrigin::decode): Deleted.
(WebCore::toFloatSize): Deleted.
* platform/graphics/GlyphBufferMembers.h: Added.
(WebCore::createGlyphBufferAdvance):
(WebCore::floatSizeFromGlyphBufferAdvance):
(WebCore::setGlyphBufferAdvanceWidth):
(WebCore::setGlyphBufferAdvanceHeight):
(WebCore::glyphBufferAdvanceWidth):
(WebCore::glyphBufferAdvanceHeight):
(WebCore::createGlyphBufferOrigin):
(WebCore::floatPointFromGlyphBufferOrigin):
(WebCore::setGlyphBufferOriginX):
(WebCore::setGlyphBufferOriginY):
(WebCore::glyphBufferOriginX):
(WebCore::glyphBufferOriginY):
* platform/graphics/WidthIterator.cpp:
(WebCore::WidthIterator::applyFontTransforms):
(WebCore::WidthIterator::advanceInternal):
(WebCore::WidthIterator::advanceOneCharacter):
* platform/graphics/displaylists/DisplayListItems.cpp:
(WebCore::DisplayList::DrawGlyphs::computeBounds):
Tools:
* TestWebKitAPI/Tests/WebCore/ComplexTextController.cpp:
(TestWebKitAPI::TEST_F):
Canonical link: https://commits.webkit.org/229057@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@266688 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2020-09-07 00:52:52 +00:00
|
|
|
platform/graphics/GlyphBufferMembers.h
|
2019-04-18 23:20:26 +00:00
|
|
|
platform/graphics/GlyphMetricsMap.h
|
|
|
|
platform/graphics/GlyphPage.h
|
|
|
|
platform/graphics/Gradient.h
|
|
|
|
platform/graphics/GraphicsContext.h
|
2020-01-06 18:52:42 +00:00
|
|
|
platform/graphics/GraphicsContextGL.h
|
|
|
|
platform/graphics/GraphicsContextGLAttributes.h
|
2019-04-18 23:20:26 +00:00
|
|
|
platform/graphics/GraphicsLayer.h
|
|
|
|
platform/graphics/GraphicsLayerClient.h
|
|
|
|
platform/graphics/GraphicsLayerFactory.h
|
|
|
|
platform/graphics/GraphicsLayerTransform.h
|
|
|
|
platform/graphics/GraphicsLayerUpdater.h
|
|
|
|
platform/graphics/GraphicsTypes.h
|
2020-01-08 20:27:42 +00:00
|
|
|
platform/graphics/GraphicsTypesGL.h
|
2019-04-18 23:20:26 +00:00
|
|
|
platform/graphics/Icon.h
|
|
|
|
platform/graphics/Image.h
|
|
|
|
platform/graphics/ImageBackingStore.h
|
|
|
|
platform/graphics/ImageBuffer.h
|
2020-02-19 01:12:47 +00:00
|
|
|
platform/graphics/ImageBufferBackend.h
|
2019-04-18 23:20:26 +00:00
|
|
|
platform/graphics/ImageFrame.h
|
|
|
|
platform/graphics/ImageObserver.h
|
|
|
|
platform/graphics/ImageOrientation.h
|
2019-08-28 20:23:39 +00:00
|
|
|
platform/graphics/ImagePaintingOptions.h
|
2019-04-18 23:20:26 +00:00
|
|
|
platform/graphics/ImageSource.h
|
|
|
|
platform/graphics/ImageTypes.h
|
2020-02-28 03:05:58 +00:00
|
|
|
platform/graphics/InbandGenericCue.h
|
2020-03-11 05:44:47 +00:00
|
|
|
platform/graphics/InbandGenericCueIdentifier.h
|
2019-04-18 23:20:26 +00:00
|
|
|
platform/graphics/InbandTextTrackPrivate.h
|
|
|
|
platform/graphics/InbandTextTrackPrivateClient.h
|
Lazily generate CGPaths for some simple types of paths, such as arcs and lines
https://bugs.webkit.org/show_bug.cgi?id=208464
<rdar://problem/59963226>
Reviewed by Daniel Bates, Darin Adler and Tim Horton.
Source/WebCore:
When the GPU process is enabled and used to render the canvas element, some canvas-related subtests in
MotionMark see significant performance regressions. One of the reasons for this is that in the process of
decoding display list items that contain `WebCore::Path`s in the GPU process, we end up allocating a new CGPath
for each WebCore::Path. This dramatically increases page demand and memory usage in the GPU process in contrast
to shipping WebKit, due to the fact that all of these CGPaths allocated up-front, and must all exist somewhere
in the heap upon decoding the display list.
In contrast, in shipping WebKit, each call to stroke the current canvas path (i.e. invoking
GraphicsContext::strokePath) is succeeded by clearing the path, which deallocates the CGPath backing the WebCore
Path. The next time a CGPath needs to be created, CoreGraphics is free to then allocate the new CGPath at the
address of the previous CGPath which was just destroyed, which prevents us from dirtying more pages than
necessary. This phenomenon affects most of the canvas-related MotionMark subtests to some degree, though the
impact is most noticeable with Canvas Lines.
On top of all this, a significant portion of time is also spent calling CGPathApply and converting the resulting
CGPathElements into serializable data when encoding each WebCore Path.
To mitigate these two issues and restore the wins we get from memory locality when drawing paths in large
quantities, we can:
1. In the case of simple paths, stuff some information about how each path was created as inline data on
WebCore::Path itself, as a new data member. For now, this only encompasses lines, arcs, and moves (Paths
where only `Path::moveTo` was invoked), but may be expanded in the future to include ellipses and rects.
This allows us to achieve two things: (a) make encoding cheaper by not requiring a walk through all of
CGPath's elements, and (b) make decoding cheaper by just initializing the Path using inline data, rather
than having to create a new CGPath.
2. When painting the StrokePath display list item, just discard `m_path` after we're done painting with it.
This, in conjunction with (1), means that the CGPath backing the WebCore::Path in the GPU process is only
created when we're just about to paint (i.e. when calling into strokePath()), and destroyed right after
we're done painting with it.
See below for details. There should be no change in behavior.
* Headers.cmake:
* WebCore.xcodeproj/project.pbxproj:
* platform/graphics/InlinePathData.h: Added.
(WebCore::MoveData::encode const):
(WebCore::MoveData::decode):
(WebCore::LineData::encode const):
(WebCore::LineData::decode):
(WebCore::ArcData::encode const):
(WebCore::ArcData::decode):
Introduce InlinePathData, a Variant of several different inline data types, each of which represents one simple
path type that is stored using only inline data. This includes line segments (a start point and an end point),
as well as arcs (which, in addition to a center and start and end angles) also includes an optional offset,
which represents the current position of the path at the time "addArc" was called.
For instance, in the following scenario, the path would have an arc that is offset by (100, 0); if filled, it
would result in a composite shape resembling a semicircle on top of a triangle:
path.moveTo(100, 0);
path.addArc(100, 100, 50, 0, PI, false);
context.fill(path);
When a Path is initialized (or after it is cleared), it starts off with neither a CGPath nor inline data. Moving
the path causes it to store inline MoveData; calling calling `addLineTo` or `addArc` then replaces the inline
data with either LineData or ArcData.
If, at any point, the path changes in a different way (i.e. neither line, arc, nor move), we clear out the
inline data and fall back to just representing the path data using the CGPath (m_path).
* platform/graphics/Path.cpp:
Refactor the following 10 methods: moveTo, addLineTo, addArc, isEmpty, currentPoint, apply, elementCount,
hasCurrentPoint, fastBoundingRect, and boundingRect such that their implementations are now in platform-agnostic
code in Path.cpp. Logic in this platform-agnostic code will generally attempt to use inline path data to compute
an answer (or apply the requested mutations) without having to initialize the platform path representation.
Failing this, we fall back to calling -SlowCase versions of these methods, which will exercise the appropriate
APIs on each platform.
(WebCore::Path::elementCountSlowCase const):
(WebCore::Path::apply const):
(WebCore::Path::isEmpty const):
(WebCore::Path::hasCurrentPoint const):
(WebCore::Path::currentPoint const):
(WebCore::Path::elementCount const):
(WebCore::Path::addArc):
(WebCore::Path::addLineTo):
(WebCore::Path::moveTo):
In the case of these three methods for mutating a path, if we've either only moved the path or haven't touched
it at all, we can get away with only updating our inline path data, and avoid creating a CGPath.
(WebCore::Path::boundingRect const):
(WebCore::Path::fastBoundingRect const):
(WebCore::Path::boundingRectFromInlineData const):
(WebCore::Path::polygonPathFromPoints):
* platform/graphics/Path.h:
(WebCore::Path::encode const):
(WebCore::Path::decode):
Teach Path::encode and Path::decode to respectively serialize and deserialize WebCore::Path by consulting only
the inline data, if it is present. For simple types of paths, this decreases the cost of both IPC encoding and
decoding, but adds a negligible amount of overhead in the case where the path is non-inline.
(WebCore::Path::hasInlineData const):
(WebCore::Path::hasAnyInlineData const):
(WebCore::Path::isNull const): Deleted.
* platform/graphics/cairo/PathCairo.cpp:
(WebCore::Path::isEmptySlowCase const):
(WebCore::Path::currentPointSlowCase const):
(WebCore::Path::moveToSlowCase):
(WebCore::Path::addLineToSlowCase):
(WebCore::Path::addArcSlowCase):
(WebCore::Path::boundingRectSlowCase const):
(WebCore::Path::applySlowCase const):
(WebCore::Path::fastBoundingRectSlowCase const):
(WebCore::Path::isNull const):
(WebCore::Path::isEmpty const): Deleted.
(WebCore::Path::hasCurrentPoint const): Deleted.
(WebCore::Path::currentPoint const): Deleted.
(WebCore::Path::moveTo): Deleted.
(WebCore::Path::addLineTo): Deleted.
(WebCore::Path::addArc): Deleted.
(WebCore::Path::boundingRect const): Deleted.
(WebCore::Path::apply const): Deleted.
* platform/graphics/cg/PathCG.cpp:
(WebCore::Path::createCGPath const):
Add a helper method that is invoked when the Path is asked for a CGPath. In this case, if there is inline data,
we need to lazily create the path and apply any inline path data we've accumulated. Once we're done applying the
inline data, set a flag (m_needsToApplyInlineData) to false to avoid re-applying inline data to the path.
(WebCore::Path::platformPath const):
(WebCore::Path::ensurePlatformPath):
When ensurePlatformPath is invoked, we are about to mutate our CGPath in such a way that it can't be expressed
in terms of inline data (at least, not with the changes in this patch). Clear out the inline path data in this
case, and apply the CGPath mutations that were previously stashed away in inline path data.
(WebCore::Path::isNull const):
A path is now considered null if it is not only missing a CGPath, but also does not have any inline path data.
This maintains the invariant that `isNull()` is true iff the `platformPath()` returns 0x0.
(WebCore::Path::Path):
(WebCore::Path::swap):
Update the constructors and `swap` helper method (used by assignment operators) to account for the new members.
(WebCore::Path::contains const):
(WebCore::Path::transform):
(WebCore::zeroRectIfNull):
(WebCore::Path::boundingRectSlowCase const):
(WebCore::Path::fastBoundingRectSlowCase const):
(WebCore::Path::moveToSlowCase):
(WebCore::Path::addLineToSlowCase):
(WebCore::Path::addArcSlowCase):
(WebCore::Path::clear):
When clearing Path, instead of setting `m_path` to a newly allocated CGPath, simply reset it to null. This
ensures that if we then apply some changes that can be expressed using only inline path data, we avoid having to
update the CGPath, and instead just update the inline path data.
(WebCore::Path::isEmptySlowCase const):
(WebCore::Path::currentPointSlowCase const):
(WebCore::Path::applySlowCase const):
(WebCore::Path::elementCountSlowCase const):
(WebCore::Path::boundingRect const): Deleted.
(WebCore::Path::fastBoundingRect const): Deleted.
(WebCore::Path::moveTo): Deleted.
(WebCore::Path::addLineTo): Deleted.
(WebCore::Path::addArc): Deleted.
(WebCore::Path::isEmpty const): Deleted.
(WebCore::Path::hasCurrentPoint const): Deleted.
(WebCore::Path::currentPoint const): Deleted.
(WebCore::Path::apply const): Deleted.
(WebCore::Path::elementCount const): Deleted.
* platform/graphics/displaylists/DisplayListItems.cpp:
(WebCore::DisplayList::StrokePath::apply const):
Throw out the current WebCore::Path after we're done painting with it (see (2) in the above ChangeLog entry).
* platform/graphics/displaylists/DisplayListItems.h:
* platform/graphics/win/PathDirect2D.cpp:
(WebCore::Path::boundingRectSlowCase const):
(WebCore::Path::fastBoundingRectSlowCase const):
(WebCore::Path::moveToSlowCase):
(WebCore::Path::addLineToSlowCase):
(WebCore::Path::addArcSlowCase):
(WebCore::Path::isEmptySlowCase const):
(WebCore::Path::currentPointSlowCase const):
(WebCore::Path::applySlowCase const):
(WebCore::Path::isNull const):
(WebCore::Path::boundingRect const): Deleted.
(WebCore::Path::fastBoundingRect const): Deleted.
(WebCore::Path::moveTo): Deleted.
(WebCore::Path::addLineTo): Deleted.
(WebCore::Path::addArc): Deleted.
(WebCore::Path::isEmpty const): Deleted.
(WebCore::Path::hasCurrentPoint const): Deleted.
(WebCore::Path::currentPoint const): Deleted.
(WebCore::Path::apply const): Deleted.
Source/WebKit:
Add argument coders for `WTF::Monostate`, so that Variants of the form: `Variant<Monostate, Foo, Bar>` can be
encoded and decoded over IPC.
* Platform/IPC/ArgumentCoders.cpp:
(IPC::ArgumentCoder<Monostate>::encode):
(IPC::ArgumentCoder<Monostate>::decode):
* Platform/IPC/ArgumentCoders.h:
Source/WTF:
Add a feature flag for INLINE_PATH_DATA. This feature flag exists to ensure that we can avoid having
m_inlineData on Path in ports that don't implement the necessary facilities for inline path data yet, since it
would just end up being wasted memory.
* wtf/PlatformEnable.h:
Canonical link: https://commits.webkit.org/221725@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@258118 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2020-03-08 23:13:45 +00:00
|
|
|
platform/graphics/InlinePathData.h
|
2019-04-18 23:20:26 +00:00
|
|
|
platform/graphics/IntPoint.h
|
|
|
|
platform/graphics/IntPointHash.h
|
|
|
|
platform/graphics/IntRect.h
|
|
|
|
platform/graphics/IntRectExtent.h
|
|
|
|
platform/graphics/IntRectHash.h
|
|
|
|
platform/graphics/IntSize.h
|
|
|
|
platform/graphics/IntSizeHash.h
|
2021-08-19 15:47:35 +00:00
|
|
|
platform/graphics/LayerTreeAsTextOptions.h
|
2019-04-18 23:20:26 +00:00
|
|
|
platform/graphics/LayoutPoint.h
|
|
|
|
platform/graphics/LayoutRect.h
|
|
|
|
platform/graphics/LayoutSize.h
|
|
|
|
platform/graphics/LegacyCDMSession.h
|
2020-03-11 05:44:47 +00:00
|
|
|
platform/graphics/MIMETypeCache.h
|
2019-04-18 23:20:26 +00:00
|
|
|
platform/graphics/MediaPlaybackTarget.h
|
|
|
|
platform/graphics/MediaPlaybackTargetClient.h
|
|
|
|
platform/graphics/MediaPlaybackTargetPicker.h
|
|
|
|
platform/graphics/MediaPlayer.h
|
|
|
|
platform/graphics/MediaPlayerEnums.h
|
2020-10-06 20:37:53 +00:00
|
|
|
platform/graphics/MediaPlayerIdentifier.h
|
2020-03-11 05:44:47 +00:00
|
|
|
platform/graphics/MediaPlayerPrivate.h
|
2020-11-17 17:25:27 +00:00
|
|
|
platform/graphics/MediaSourcePrivate.h
|
|
|
|
platform/graphics/MediaSourcePrivateClient.h
|
2020-04-16 13:36:07 +00:00
|
|
|
platform/graphics/MediaUsageInfo.h
|
2019-04-18 23:20:26 +00:00
|
|
|
platform/graphics/NativeImage.h
|
Virtualize GraphicsContext
https://bugs.webkit.org/show_bug.cgi?id=226170
Reviewed by Simon Fraser.
Source/WebCore:
No new tests, just a refactoring.
In preparation for future patches which introduce new kinds of GraphicsContexts,
virtualize GraphicsContext, moving platform implementations into subclasses
GraphicsContext{CG,Cairo,Direct2D}, NullGraphicsContext, DisplayList::Recorder,
and Nicosia::CairoOperationRecorder.
GraphicsContextImpl dissolves away; platform contexts that were
unnecessarily implemented both as `GraphicsContext` and as a subclass
of GraphicsContextImpl (GraphicsContextImplCairo and GraphicsContextImplDirect2D)
are folded into their GraphicsContext subclass.
`paintingDisabled()` is no longer relevant in GraphicsContext implementations,
so we no longer have to check it everywhere; NullGraphicsContext overrides
everything with an empty implementation. We keep `paintingDisabled()` for
use in code outside of GraphicsContext, where it just distinguishes between
NullGraphicsContext and the others.
Also, a few bits of cleanup to make this easier:
- Legacy shadow radius behavior becomes a parameter to setShadow instead of a separate method.
- canvasClip(), which hasn't done anything different than clip() since Skia, is removed.
- GraphicsContext gains renderingMode() in place of isAcceleratedContext().
- Subclasses override updateState() to respond to GraphicsContext state changes,
as was already done for GraphicsContextImpl, to keep subclassing simple.
- builderState(), which was unused, is removed.
- drawPath() is introduced on all platforms, with a default implementation that just fills and strokes.
* Headers.cmake:
* PlatformFTW.cmake:
* PlatformWin.cmake:
* Sources.txt:
* WebCore.xcodeproj/project.pbxproj:
* display/css/DisplayBoxDecorationPainter.cpp:
(WebCore::Display::BoxDecorationPainter::paintBoxShadow const):
* html/canvas/CanvasRenderingContext2DBase.cpp:
(WebCore::CanvasRenderingContext2DBase::isAccelerated const):
(WebCore::CanvasRenderingContext2DBase::clipInternal):
(WebCore::CanvasRenderingContext2DBase::clearRect):
(WebCore::CanvasRenderingContext2DBase::applyShadow):
(WebCore::CanvasRenderingContext2DBase::createPattern):
(WebCore::CanvasRenderingContext2DBase::drawTextUnchecked):
* page/FrameView.cpp:
(WebCore::FrameView::traverseForPaintInvalidation):
(WebCore::FrameView::adjustPageHeightDeprecated):
* page/FrameView.h:
* page/win/FrameCGWin.cpp:
(WebCore::imageFromRect):
* page/win/FrameGdiWin.cpp:
(WebCore::imageFromRect):
* platform/Cairo.cmake:
* platform/SourcesCairo.txt:
* platform/cocoa/DragImageCocoa.mm:
(WebCore::createDragImageForLink):
* platform/graphics/FontCascade.cpp:
(WebCore::FontCascade::displayListForTextRun const):
* platform/graphics/GraphicsContext.cpp:
(WebCore::GraphicsContextState::GraphicsContextState):
(WebCore::GraphicsContextStateChange::accumulate):
(WebCore::GraphicsContextStateChange::apply const):
(WebCore::GraphicsContextStateChange::dump const):
(WebCore::GraphicsContext::~GraphicsContext):
(WebCore::GraphicsContext::save):
(WebCore::GraphicsContext::restore):
(WebCore::GraphicsContext::drawRaisedEllipse):
(WebCore::GraphicsContext::setStrokeColor):
(WebCore::GraphicsContext::setShadow):
(WebCore::GraphicsContext::clearShadow):
(WebCore::GraphicsContext::setFillColor):
(WebCore::GraphicsContext::setStrokePattern):
(WebCore::GraphicsContext::setFillPattern):
(WebCore::GraphicsContext::setStrokeGradient):
(WebCore::GraphicsContext::setFillGradient):
(WebCore::GraphicsContext::beginTransparencyLayer):
(WebCore::GraphicsContext::endTransparencyLayer):
(WebCore::GraphicsContext::drawText):
(WebCore::GraphicsContext::drawGlyphs):
(WebCore::GraphicsContext::drawEmphasisMarks):
(WebCore::GraphicsContext::drawBidiText):
(WebCore::GraphicsContext::drawImage):
(WebCore::GraphicsContext::drawTiledImage):
(WebCore::GraphicsContext::drawImageBuffer):
(WebCore::GraphicsContext::drawConsumingImageBuffer):
(WebCore::GraphicsContext::clipRoundedRect):
(WebCore::GraphicsContext::clipOutRoundedRect):
(WebCore::GraphicsContext::clipToDrawingCommands):
(WebCore::GraphicsContext::clipToImageBuffer):
(WebCore::GraphicsContext::clipBounds const):
(WebCore::GraphicsContext::fillRect):
(WebCore::GraphicsContext::fillRoundedRect):
(WebCore::GraphicsContext::fillRectWithRoundedHole):
(WebCore::GraphicsContext::setCompositeOperation):
(WebCore::GraphicsContext::drawPath):
(WebCore::GraphicsContext::drawLineForText):
(WebCore::GraphicsContext::paintFrameForMedia):
(WebCore::NullGraphicsContext::drawConsumingImageBuffer):
(WebCore::GraphicsContext::GraphicsContext): Deleted.
(WebCore::GraphicsContext::hasPlatformContext const): Deleted.
(WebCore::GraphicsContext::setStrokeThickness): Deleted.
(WebCore::GraphicsContext::setStrokeStyle): Deleted.
(WebCore::GraphicsContext::setLegacyShadow): Deleted.
(WebCore::GraphicsContext::setShadowsIgnoreTransforms): Deleted.
(WebCore::GraphicsContext::setShouldAntialias): Deleted.
(WebCore::GraphicsContext::setShouldSmoothFonts): Deleted.
(WebCore::GraphicsContext::setShouldSubpixelQuantizeFonts): Deleted.
(WebCore::GraphicsContext::setImageInterpolationQuality): Deleted.
(WebCore::GraphicsContext::setFillRule): Deleted.
(WebCore::GraphicsContext::drawNativeImage): Deleted.
(WebCore::GraphicsContext::drawPattern): Deleted.
(WebCore::GraphicsContext::setTextDrawingMode): Deleted.
(WebCore::GraphicsContext::setAlpha): Deleted.
(WebCore::GraphicsContext::setDrawLuminanceMask): Deleted.
(WebCore::GraphicsContext::setUseDarkAppearance): Deleted.
(WebCore::GraphicsContext::setPlatformTextDrawingMode): Deleted.
(WebCore::GraphicsContext::setPlatformStrokeStyle): Deleted.
(WebCore::GraphicsContext::setPlatformShouldSmoothFonts): Deleted.
(WebCore::GraphicsContext::isAcceleratedContext const): Deleted.
(WebCore::GraphicsContext::platformApplyDeviceScaleFactor): Deleted.
(WebCore::GraphicsContext::applyDeviceScaleFactor): Deleted.
(WebCore::GraphicsContext::fillEllipse): Deleted.
(WebCore::GraphicsContext::strokeEllipse): Deleted.
(WebCore::GraphicsContext::platformFillEllipse): Deleted.
(WebCore::GraphicsContext::platformStrokeEllipse): Deleted.
(WebCore::GraphicsContext::builderState): Deleted.
(WebCore::GraphicsContext::supportsInternalLinks const): Deleted.
(WebCore::GraphicsContext::setDestinationForRect): Deleted.
(WebCore::GraphicsContext::addDestinationAtPoint): Deleted.
* platform/graphics/GraphicsContext.h:
(WebCore::GraphicsContext::hasPlatformContext const):
(WebCore::GraphicsContext::platformContext const):
(WebCore::GraphicsContext::paintingDisabled const):
(WebCore::GraphicsContext::performingPaintInvalidation const):
(WebCore::GraphicsContext::invalidatingControlTints const):
(WebCore::GraphicsContext::invalidatingImagesWithAsyncDecodes const):
(WebCore::GraphicsContext::detectingContentfulPaint const):
(WebCore::GraphicsContext::setStrokeThickness):
(WebCore::GraphicsContext::setStrokeStyle):
(WebCore::GraphicsContext::setStrokeGradient):
(WebCore::GraphicsContext::setFillRule):
(WebCore::GraphicsContext::setShadowsIgnoreTransforms):
(WebCore::GraphicsContext::setShouldAntialias):
(WebCore::GraphicsContext::setShouldSmoothFonts):
(WebCore::GraphicsContext::setShouldSubpixelQuantizeFonts):
(WebCore::GraphicsContext::setImageInterpolationQuality):
(WebCore::GraphicsContext::imageInterpolationQuality const):
(WebCore::GraphicsContext::setAlpha):
(WebCore::GraphicsContext::alpha const):
(WebCore::GraphicsContext::compositeOperation const):
(WebCore::GraphicsContext::blendModeOperation const):
(WebCore::GraphicsContext::setDrawLuminanceMask):
(WebCore::GraphicsContext::drawLuminanceMask const):
(WebCore::GraphicsContext::setTextDrawingMode):
(WebCore::GraphicsContext::textDrawingMode const):
(WebCore::GraphicsContext::hasVisibleShadow const):
(WebCore::GraphicsContext::hasShadow const):
(WebCore::GraphicsContext::hasBlurredShadow const):
(WebCore::GraphicsContext::setUseDarkAppearance):
(WebCore::GraphicsContext::useDarkAppearance const):
(WebCore::GraphicsContext::state const):
(WebCore::GraphicsContext::renderingMode const):
(WebCore::GraphicsContext::fillEllipse):
(WebCore::GraphicsContext::strokeEllipse):
(WebCore::GraphicsContext::drawNativeImage):
(WebCore::GraphicsContext::drawImage):
(WebCore::GraphicsContext::drawTiledImage):
(WebCore::GraphicsContext::drawImageBuffer):
(WebCore::GraphicsContext::drawConsumingImageBuffer):
(WebCore::GraphicsContext::drawPattern):
(WebCore::GraphicsContext::isInTransparencyLayer const):
(WebCore::GraphicsContext::scale):
(WebCore::GraphicsContext::applyDeviceScaleFactor):
(WebCore::GraphicsContext::setURLForRect):
(WebCore::GraphicsContext::setDestinationForRect):
(WebCore::GraphicsContext::addDestinationAtPoint):
(WebCore::GraphicsContext::supportsInternalLinks const):
(WebCore::GraphicsContext::setContentfulPaintDetected):
(WebCore::GraphicsContext::contenfulPaintDetected const):
(WebCore::GraphicsContext::deprecatedPrivateContext const):
(WebCore::GraphicsContext::supportsTransparencyLayers const):
(WebCore::GraphicsContext::impl): Deleted.
* platform/graphics/GraphicsContextImpl.cpp: Removed.
* platform/graphics/GraphicsContextImpl.h: Removed.
* platform/graphics/Image.cpp:
(WebCore::Image::drawTiled):
* platform/graphics/Image.h:
* platform/graphics/ShadowBlur.cpp:
(WebCore::ShadowBlur::ShadowBlur):
* platform/graphics/ca/GraphicsLayerCA.cpp:
(WebCore::GraphicsLayerCA::recursiveCommitChanges):
* platform/graphics/ca/win/PlatformCALayerWin.cpp:
(PlatformCALayerWin::drawTextAtPoint const):
* platform/graphics/ca/win/PlatformCALayerWinInternal.cpp:
(PlatformCALayerWinInternal::displayCallback):
(PlatformCALayerWinInternal::drawRepaintCounters):
* platform/graphics/ca/win/WebTiledBackingLayerWin.cpp:
(WebTiledBackingLayerWin::displayCallback):
* platform/graphics/cairo/GraphicsContextCairo.cpp:
(WebCore::GraphicsContextCairo::GraphicsContextCairo):
(WebCore::GraphicsContextCairo::~GraphicsContextCairo):
(WebCore::GraphicsContextCairo::hasPlatformContext const):
(WebCore::GraphicsContextCairo::getCTM const):
(WebCore::GraphicsContextCairo::platformContext const):
(WebCore::GraphicsContextCairo::save):
(WebCore::GraphicsContextCairo::restore):
(WebCore::GraphicsContextCairo::drawRect):
(WebCore::GraphicsContextCairo::drawNativeImage):
(WebCore::GraphicsContextCairo::drawLine):
(WebCore::GraphicsContextCairo::drawEllipse):
(WebCore::GraphicsContextCairo::fillPath):
(WebCore::GraphicsContextCairo::strokePath):
(WebCore::GraphicsContextCairo::fillRect):
(WebCore::GraphicsContextCairo::clip):
(WebCore::GraphicsContextCairo::clipPath):
(WebCore::GraphicsContextCairo::clipBounds const):
(WebCore::GraphicsContextCairo::clipToImageBuffer):
(WebCore::GraphicsContextCairo::drawFocusRing):
(WebCore::GraphicsContextCairo::drawLinesForText):
(WebCore::GraphicsContextCairo::drawDotsForDocumentMarker):
(WebCore::GraphicsContextCairo::roundToDevicePixels):
(WebCore::GraphicsContextCairo::translate):
(WebCore::GraphicsContextCairo::updateState):
(WebCore::GraphicsContextCairo::concatCTM):
(WebCore::GraphicsContextCairo::setCTM):
(WebCore::GraphicsContextCairo::beginTransparencyLayer):
(WebCore::GraphicsContextCairo::endTransparencyLayer):
(WebCore::GraphicsContextCairo::clearRect):
(WebCore::GraphicsContextCairo::strokeRect):
(WebCore::GraphicsContextCairo::setLineCap):
(WebCore::GraphicsContextCairo::setLineDash):
(WebCore::GraphicsContextCairo::setLineJoin):
(WebCore::GraphicsContextCairo::setMiterLimit):
(WebCore::GraphicsContextCairo::clipOut):
(WebCore::GraphicsContextCairo::rotate):
(WebCore::GraphicsContextCairo::scale):
(WebCore::GraphicsContextCairo::fillRoundedRectImpl):
(WebCore::GraphicsContextCairo::fillRectWithRoundedHole):
(WebCore::GraphicsContextCairo::drawPattern):
(WebCore::GraphicsContextCairo::renderingMode const):
(WebCore::GraphicsContextCairo::drawGlyphs):
(WebCore::GraphicsContext::platformInit): Deleted.
(WebCore::GraphicsContext::platformDestroy): Deleted.
(WebCore::GraphicsContext::getCTM const): Deleted.
(WebCore::GraphicsContext::platformContext const): Deleted.
(WebCore::GraphicsContext::savePlatformState): Deleted.
(WebCore::GraphicsContext::restorePlatformState): Deleted.
(WebCore::GraphicsContext::drawRect): Deleted.
(WebCore::GraphicsContext::drawPlatformImage): Deleted.
(WebCore::GraphicsContext::drawLine): Deleted.
(WebCore::GraphicsContext::drawEllipse): Deleted.
(WebCore::GraphicsContext::fillPath): Deleted.
(WebCore::GraphicsContext::strokePath): Deleted.
(WebCore::GraphicsContext::fillRect): Deleted.
(WebCore::GraphicsContext::clip): Deleted.
(WebCore::GraphicsContext::clipPath): Deleted.
(WebCore::GraphicsContext::clipBounds const): Deleted.
(WebCore::GraphicsContext::drawFocusRing): Deleted.
(WebCore::GraphicsContext::drawLineForText): Deleted.
(WebCore::GraphicsContext::drawLinesForText): Deleted.
(WebCore::GraphicsContext::drawDotsForDocumentMarker): Deleted.
(WebCore::GraphicsContext::roundToDevicePixels): Deleted.
(WebCore::GraphicsContext::translate): Deleted.
(WebCore::GraphicsContext::setPlatformFillColor): Deleted.
(WebCore::GraphicsContext::setPlatformStrokeColor): Deleted.
(WebCore::GraphicsContext::setPlatformStrokeThickness): Deleted.
(WebCore::GraphicsContext::setPlatformStrokeStyle): Deleted.
(WebCore::GraphicsContext::setURLForRect): Deleted.
(WebCore::GraphicsContext::concatCTM): Deleted.
(WebCore::GraphicsContext::setCTM): Deleted.
(WebCore::GraphicsContext::setPlatformShadow): Deleted.
(WebCore::GraphicsContext::clearPlatformShadow): Deleted.
(WebCore::GraphicsContext::beginPlatformTransparencyLayer): Deleted.
(WebCore::GraphicsContext::endPlatformTransparencyLayer): Deleted.
(WebCore::GraphicsContext::supportsTransparencyLayers): Deleted.
(WebCore::GraphicsContext::clearRect): Deleted.
(WebCore::GraphicsContext::strokeRect): Deleted.
(WebCore::GraphicsContext::setLineCap): Deleted.
(WebCore::GraphicsContext::setLineDash): Deleted.
(WebCore::GraphicsContext::setLineJoin): Deleted.
(WebCore::GraphicsContext::setMiterLimit): Deleted.
(WebCore::GraphicsContext::setPlatformAlpha): Deleted.
(WebCore::GraphicsContext::setPlatformCompositeOperation): Deleted.
(WebCore::GraphicsContext::canvasClip): Deleted.
(WebCore::GraphicsContext::clipOut): Deleted.
(WebCore::GraphicsContext::rotate): Deleted.
(WebCore::GraphicsContext::scale): Deleted.
(WebCore::GraphicsContext::platformFillRoundedRect): Deleted.
(WebCore::GraphicsContext::fillRectWithRoundedHole): Deleted.
(WebCore::GraphicsContext::drawPlatformPattern): Deleted.
(WebCore::GraphicsContext::setPlatformShouldAntialias): Deleted.
(WebCore::GraphicsContext::setPlatformImageInterpolationQuality): Deleted.
(WebCore::GraphicsContext::isAcceleratedContext const): Deleted.
* platform/graphics/cairo/GraphicsContextImplCairo.cpp: Removed.
* platform/graphics/cairo/GraphicsContextImplCairo.h: Removed.
* platform/graphics/cairo/ImageBufferCairoBackend.cpp:
* platform/graphics/cairo/ImageBufferCairoSurfaceBackend.cpp:
(WebCore::ImageBufferCairoSurfaceBackend::ImageBufferCairoSurfaceBackend):
* platform/graphics/cairo/PathCairo.cpp:
(WebCore::Path::strokeBoundingRect const):
(WebCore::Path::strokeContains const):
* platform/graphics/cg/GraphicsContextCG.cpp:
(WebCore::coreInterpolationQuality):
(WebCore::cgInterpolationQuality):
(WebCore::cgTextDrawingMode):
(WebCore::GraphicsContextCG::GraphicsContextCG):
(WebCore::GraphicsContextCG::~GraphicsContextCG):
(WebCore::GraphicsContextCG::hasPlatformContext const):
(WebCore::GraphicsContextCG::platformContext const):
(WebCore::GraphicsContextCG::save):
(WebCore::GraphicsContextCG::restore):
(WebCore::GraphicsContextCG::drawNativeImage):
(WebCore::drawPatternCallback):
(WebCore::GraphicsContextCG::drawPattern):
(WebCore::GraphicsContextCG::drawRect):
(WebCore::GraphicsContextCG::drawLine):
(WebCore::GraphicsContextCG::drawEllipse):
(WebCore::GraphicsContextCG::applyStrokePattern):
(WebCore::GraphicsContextCG::applyFillPattern):
(WebCore::GraphicsContextCG::drawPath):
(WebCore::GraphicsContextCG::fillPath):
(WebCore::GraphicsContextCG::strokePath):
(WebCore::GraphicsContextCG::fillRect):
(WebCore::GraphicsContextCG::fillRoundedRectImpl):
(WebCore::GraphicsContextCG::fillRectWithRoundedHole):
(WebCore::GraphicsContextCG::clip):
(WebCore::GraphicsContextCG::clipOut):
(WebCore::GraphicsContextCG::clipPath):
(WebCore::GraphicsContextCG::clipBounds const):
(WebCore::GraphicsContextCG::beginTransparencyLayer):
(WebCore::GraphicsContextCG::endTransparencyLayer):
(WebCore::applyShadowOffsetWorkaroundIfNeeded):
(WebCore::setCGShadow):
(WebCore::GraphicsContextCG::updateState):
(WebCore::GraphicsContextCG::setMiterLimit):
(WebCore::GraphicsContextCG::clearRect):
(WebCore::GraphicsContextCG::strokeRect):
(WebCore::GraphicsContextCG::setLineCap):
(WebCore::GraphicsContextCG::setLineDash):
(WebCore::GraphicsContextCG::setLineJoin):
(WebCore::GraphicsContextCG::scale):
(WebCore::GraphicsContextCG::rotate):
(WebCore::GraphicsContextCG::translate):
(WebCore::GraphicsContextCG::concatCTM):
(WebCore::GraphicsContextCG::setCTM):
(WebCore::GraphicsContextCG::getCTM const):
(WebCore::GraphicsContextCG::roundToDevicePixels):
(WebCore::GraphicsContextCG::drawLinesForText):
(WebCore::GraphicsContextCG::setURLForRect):
(WebCore::GraphicsContextCG::setIsCALayerContext):
(WebCore::GraphicsContextCG::isCALayerContext const):
(WebCore::GraphicsContextCG::setIsAcceleratedContext):
(WebCore::GraphicsContextCG::renderingMode const):
(WebCore::GraphicsContextCG::applyDeviceScaleFactor):
(WebCore::GraphicsContextCG::fillEllipse):
(WebCore::GraphicsContextCG::strokeEllipse):
(WebCore::GraphicsContextCG::supportsInternalLinks const):
(WebCore::GraphicsContextCG::setDestinationForRect):
(WebCore::GraphicsContextCG::addDestinationAtPoint):
(WebCore::setCGStrokeColor): Deleted.
(WebCore::convertInterpolationQuality): Deleted.
(WebCore::GraphicsContext::platformInit): Deleted.
(WebCore::GraphicsContext::platformDestroy): Deleted.
(WebCore::GraphicsContext::platformContext const): Deleted.
(WebCore::GraphicsContext::savePlatformState): Deleted.
(WebCore::GraphicsContext::restorePlatformState): Deleted.
(WebCore::GraphicsContext::drawPlatformImage): Deleted.
(WebCore::GraphicsContext::drawPlatformPattern): Deleted.
(WebCore::GraphicsContext::drawRect): Deleted.
(WebCore::GraphicsContext::drawLine): Deleted.
(WebCore::GraphicsContext::drawEllipse): Deleted.
(WebCore::GraphicsContext::applyStrokePattern): Deleted.
(WebCore::GraphicsContext::applyFillPattern): Deleted.
(WebCore::GraphicsContext::drawPath): Deleted.
(WebCore::GraphicsContext::fillPath): Deleted.
(WebCore::GraphicsContext::strokePath): Deleted.
(WebCore::GraphicsContext::fillRect): Deleted.
(WebCore::GraphicsContext::platformFillRoundedRect): Deleted.
(WebCore::GraphicsContext::fillRectWithRoundedHole): Deleted.
(WebCore::GraphicsContext::clip): Deleted.
(WebCore::GraphicsContext::clipOut): Deleted.
(WebCore::GraphicsContext::clipPath): Deleted.
(WebCore::GraphicsContext::clipBounds const): Deleted.
(WebCore::GraphicsContext::beginPlatformTransparencyLayer): Deleted.
(WebCore::GraphicsContext::endPlatformTransparencyLayer): Deleted.
(WebCore::GraphicsContext::supportsTransparencyLayers): Deleted.
(WebCore::GraphicsContext::setPlatformShadow): Deleted.
(WebCore::GraphicsContext::clearPlatformShadow): Deleted.
(WebCore::GraphicsContext::setMiterLimit): Deleted.
(WebCore::GraphicsContext::clearRect): Deleted.
(WebCore::GraphicsContext::strokeRect): Deleted.
(WebCore::GraphicsContext::setLineCap): Deleted.
(WebCore::GraphicsContext::setLineDash): Deleted.
(WebCore::GraphicsContext::setLineJoin): Deleted.
(WebCore::GraphicsContext::canvasClip): Deleted.
(WebCore::GraphicsContext::scale): Deleted.
(WebCore::GraphicsContext::rotate): Deleted.
(WebCore::GraphicsContext::translate): Deleted.
(WebCore::GraphicsContext::concatCTM): Deleted.
(WebCore::GraphicsContext::setCTM): Deleted.
(WebCore::GraphicsContext::getCTM const): Deleted.
(WebCore::GraphicsContext::roundToDevicePixels): Deleted.
(WebCore::GraphicsContext::drawLineForText): Deleted.
(WebCore::GraphicsContext::drawLinesForText): Deleted.
(WebCore::GraphicsContext::setURLForRect): Deleted.
(WebCore::GraphicsContext::setPlatformImageInterpolationQuality): Deleted.
(WebCore::GraphicsContext::setIsCALayerContext): Deleted.
(WebCore::GraphicsContext::isCALayerContext const): Deleted.
(WebCore::GraphicsContext::setIsAcceleratedContext): Deleted.
(WebCore::GraphicsContext::isAcceleratedContext const): Deleted.
(WebCore::GraphicsContext::setPlatformTextDrawingMode): Deleted.
(WebCore::GraphicsContext::setPlatformStrokeColor): Deleted.
(WebCore::GraphicsContext::setPlatformStrokeThickness): Deleted.
(WebCore::GraphicsContext::setPlatformFillColor): Deleted.
(WebCore::GraphicsContext::setPlatformShouldAntialias): Deleted.
(WebCore::GraphicsContext::setPlatformShouldSmoothFonts): Deleted.
(WebCore::GraphicsContext::setPlatformAlpha): Deleted.
(WebCore::GraphicsContext::setPlatformCompositeOperation): Deleted.
(WebCore::GraphicsContext::platformApplyDeviceScaleFactor): Deleted.
(WebCore::GraphicsContext::platformFillEllipse): Deleted.
(WebCore::GraphicsContext::platformStrokeEllipse): Deleted.
(WebCore::GraphicsContext::supportsInternalLinks const): Deleted.
(WebCore::GraphicsContext::setDestinationForRect): Deleted.
(WebCore::GraphicsContext::addDestinationAtPoint): Deleted.
* platform/graphics/cg/GraphicsContextCG.h:
* platform/graphics/cg/ImageBufferCGBitmapBackend.cpp:
(WebCore::ImageBufferCGBitmapBackend::create):
* platform/graphics/cg/PathCG.cpp:
(WebCore::Path::strokeContains const):
(WebCore::Path::strokeBoundingRect const):
* platform/graphics/cg/PatternCG.cpp:
(WebCore::patternCallback):
* platform/graphics/cocoa/FontCascadeCocoa.mm:
* platform/graphics/cocoa/GraphicsContextCocoa.mm:
(WebCore::GraphicsContextCG::drawFocusRing):
(WebCore::drawFocusRingToContextAtTime):
(WebCore::GraphicsContextCG::drawDotsForDocumentMarker):
(WebCore::GraphicsContext::drawFocusRing): Deleted.
(WebCore::GraphicsContext::drawDotsForDocumentMarker): Deleted.
* platform/graphics/cocoa/IOSurface.mm:
(WebCore::IOSurface::ensureGraphicsContext):
* platform/graphics/displaylists/DisplayListDrawGlyphsRecorder.h:
* platform/graphics/displaylists/DisplayListDrawGlyphsRecorderCoreText.cpp:
(WebCore::DisplayList::DrawGlyphsRecorder::createInternalContext):
(WebCore::DisplayList::DrawGlyphsRecorder::populateInternalContext):
(WebCore::DisplayList::DrawGlyphsRecorder::recordDrawGlyphs):
* platform/graphics/displaylists/DisplayListDrawingContext.cpp:
(WebCore::DisplayList::DrawingContext::DrawingContext):
(WebCore::DisplayList::DrawingContext::recorder): Deleted.
* platform/graphics/displaylists/DisplayListDrawingContext.h:
(WebCore::DisplayList::DrawingContext::recorder):
* platform/graphics/displaylists/DisplayListItems.cpp:
(WebCore::DisplayList::DrawPath::apply const):
* platform/graphics/displaylists/DisplayListItems.h:
(WebCore::DisplayList::SetState::encode const):
(WebCore::DisplayList::SetState::decode):
* platform/graphics/displaylists/DisplayListRecorder.cpp:
(WebCore::DisplayList::Recorder::Recorder):
(WebCore::DisplayList::Recorder::drawImageBuffer):
(WebCore::DisplayList::Recorder::getCTM const):
(WebCore::DisplayList::Recorder::drawLinesForText):
(WebCore::DisplayList::Recorder::drawFocusRing):
(WebCore::DisplayList::Recorder::clipBounds const):
(WebCore::DisplayList::Recorder::clipToDrawingCommands):
(WebCore::DisplayList::Recorder::paintFrameForMedia):
(WebCore::DisplayList::Recorder::extentFromLocalBounds const):
(WebCore::DisplayList::Recorder::clearShadow): Deleted.
(WebCore::DisplayList::Recorder::getCTM): Deleted.
(WebCore::DisplayList::Recorder::clipBounds): Deleted.
(WebCore::DisplayList::Recorder::canPaintFrameForMedia const): Deleted.
* platform/graphics/displaylists/DisplayListRecorder.h:
(WebCore::DisplayList::Recorder::append):
* platform/graphics/mac/ColorMac.mm:
(WebCore::makeSimpleColorFromNSColor):
* platform/graphics/mac/WebLayer.mm:
(-[WebLayer drawInContext:]):
(-[WebSimpleLayer drawInContext:]):
* platform/graphics/nicosia/cairo/NicosiaCairoOperationRecorder.cpp:
(Nicosia::CairoOperationRecorder::CairoOperationRecorder):
(Nicosia::CairoOperationRecorder::fillRect):
(Nicosia::CairoOperationRecorder::fillRoundedRect):
(Nicosia::CairoOperationRecorder::fillRectWithRoundedHole):
(Nicosia::CairoOperationRecorder::fillPath):
(Nicosia::CairoOperationRecorder::fillEllipse):
(Nicosia::CairoOperationRecorder::strokeRect):
(Nicosia::CairoOperationRecorder::strokePath):
(Nicosia::CairoOperationRecorder::strokeEllipse):
(Nicosia::CairoOperationRecorder::drawGlyphs):
(Nicosia::CairoOperationRecorder::drawNativeImage):
(Nicosia::CairoOperationRecorder::drawRect):
(Nicosia::CairoOperationRecorder::drawLine):
(Nicosia::CairoOperationRecorder::drawLinesForText):
(Nicosia::CairoOperationRecorder::drawEllipse):
(Nicosia::CairoOperationRecorder::getCTM const):
(Nicosia::CairoOperationRecorder::clipBounds const):
(Nicosia::CairoOperationRecorder::clipToDrawingCommands):
(Nicosia::CairoOperationRecorder::paintFrameForMedia):
(Nicosia::CairoOperationRecorder::clearShadow): Deleted.
(Nicosia::CairoOperationRecorder::drawPath): Deleted.
(Nicosia::CairoOperationRecorder::getCTM): Deleted.
(Nicosia::CairoOperationRecorder::clipBounds): Deleted.
* platform/graphics/nicosia/cairo/NicosiaCairoOperationRecorder.h:
* platform/graphics/nicosia/cairo/NicosiaPaintingContextCairo.cpp:
(Nicosia::PaintingContextCairo::ForPainting::ForPainting):
(Nicosia::PaintingContextCairo::ForRecording::ForRecording):
* platform/graphics/win/GraphicsContextCGWin.cpp:
(WebCore::GraphicsContextCG::GraphicsContextCG):
(WebCore::GraphicsContext::releaseWindowsContext):
(WebCore::GraphicsContext::drawWindowsBitmap):
(WebCore::GraphicsContextCG::drawFocusRing):
(WebCore::GraphicsContextCG::drawDotsForDocumentMarker):
(WebCore::GraphicsContextCG::deprecatedPrivateContext const):
(WebCore::GraphicsContext::GraphicsContext): Deleted.
(WebCore::GraphicsContext::platformInit): Deleted.
(WebCore::GraphicsContext::drawFocusRing): Deleted.
(WebCore::GraphicsContext::drawDotsForDocumentMarker): Deleted.
* platform/graphics/win/GraphicsContextCairoWin.cpp:
(WebCore::GraphicsContextCairo::GraphicsContextCairo):
(WebCore::GraphicsContext::releaseWindowsContext):
(WebCore::GraphicsContextCairo::deprecatedPrivateContext const):
(WebCore::GraphicsContext::GraphicsContext): Deleted.
(WebCore::GraphicsContext::platformInit): Deleted.
* platform/graphics/win/GraphicsContextDirect2D.cpp:
(WebCore::GraphicsContextDirect2D::GraphicsContextDirect2D):
(WebCore::GraphicsContextDirect2D::systemFactory):
(WebCore::GraphicsContextDirect2D::defaultRenderTarget):
(WebCore::GraphicsContextDirect2D::platformInit):
(WebCore::GraphicsContextDirect2D::~GraphicsContextDirect2D):
(WebCore::GraphicsContextDirect2D::platformContext const):
(WebCore::GraphicsContextDirect2D::save):
(WebCore::GraphicsContextDirect2D::restore):
(WebCore::GraphicsContextDirect2D::drawNativeImage):
(WebCore::GraphicsContextDirect2D::releaseWindowsContext):
(WebCore::GraphicsContextDirect2D::drawWindowsBitmap):
(WebCore::GraphicsContextDirect2D::drawFocusRing):
(WebCore::GraphicsContextDirect2D::drawDotsForDocumentMarker):
(WebCore::GraphicsContextPlatformPrivate::GraphicsContextPlatformPrivate):
(WebCore::GraphicsContextDirect2D::brushWithColor):
(WebCore::GraphicsContextDirect2D::colorWithGlobalAlpha const):
(WebCore::GraphicsContextDirect2D::solidStrokeBrush const):
(WebCore::GraphicsContextDirect2D::solidFillBrush const):
(WebCore::GraphicsContextDirect2D::patternStrokeBrush const):
(WebCore::GraphicsContextDirect2D::patternFillBrush const):
(WebCore::GraphicsContextDirect2D::beginDraw):
(WebCore::GraphicsContextDirect2D::endDraw):
(WebCore::GraphicsContextDirect2D::flush):
(WebCore::GraphicsContextDirect2D::drawPattern):
(WebCore::GraphicsContextDirect2D::drawRect):
(WebCore::GraphicsContextDirect2D::strokeStyle const):
(WebCore::GraphicsContextDirect2D::drawLine):
(WebCore::GraphicsContextDirect2D::drawEllipse):
(WebCore::GraphicsContextDirect2D::applyStrokePattern):
(WebCore::GraphicsContextDirect2D::applyFillPattern):
(WebCore::GraphicsContextDirect2D::drawPath):
(WebCore::GraphicsContextDirect2D::fillPath):
(WebCore::GraphicsContextDirect2D::strokePath):
(WebCore::GraphicsContextDirect2D::fillRect):
(WebCore::GraphicsContextDirect2D::fillRoundedRectImpl):
(WebCore::GraphicsContextDirect2D::fillRectWithRoundedHole):
(WebCore::GraphicsContextDirect2D::clip):
(WebCore::GraphicsContextDirect2D::clipOut):
(WebCore::GraphicsContextDirect2D::clipPath):
(WebCore::GraphicsContextDirect2D::clipBounds const):
(WebCore::GraphicsContextDirect2D::beginTransparencyLayer):
(WebCore::GraphicsContextDirect2D::endTransparencyLayer):
(WebCore::GraphicsContextDirect2D::supportsTransparencyLayers):
(WebCore::GraphicsContextDirect2D::updateState):
(WebCore::GraphicsContextDirect2D::setMiterLimit):
(WebCore::GraphicsContextDirect2D::clearRect):
(WebCore::GraphicsContextDirect2D::strokeRect):
(WebCore::GraphicsContextDirect2D::setLineCap):
(WebCore::GraphicsContextDirect2D::setLineDash):
(WebCore::GraphicsContextDirect2D::setLineJoin):
(WebCore::GraphicsContextDirect2D::scale):
(WebCore::GraphicsContextDirect2D::rotate):
(WebCore::GraphicsContextDirect2D::translate):
(WebCore::GraphicsContextDirect2D::concatCTM):
(WebCore::GraphicsContextDirect2D::setCTM):
(WebCore::GraphicsContextDirect2D::getCTM const):
(WebCore::GraphicsContextDirect2D::roundToDevicePixels):
(WebCore::GraphicsContextDirect2D::drawLinesForText):
(WebCore::GraphicsContextDirect2D::setURLForRect):
(WebCore::GraphicsContextDirect2D::setIsCALayerContext):
(WebCore::GraphicsContextDirect2D::isCALayerContext const):
(WebCore::GraphicsContextDirect2D::setIsAcceleratedContext):
(WebCore::GraphicsContextDirect2D::isAcceleratedContext const):
(WebCore::GraphicsContextDirect2D::applyDeviceScaleFactor):
(WebCore::GraphicsContextDirect2D::fillEllipse):
(WebCore::GraphicsContextDirect2D::strokeEllipse):
(WebCore::GraphicsContextDirect2D::drawGlyphs):
(WebCore::GraphicsContextDirect2D::clipToDrawingCommands):
(WebCore::GraphicsContextDirect2D::clipToImageBuffer):
(WebCore::GraphicsContextDirect2D::paintFrameForMedia):
(WebCore::GraphicsContext::GraphicsContext): Deleted.
(WebCore::GraphicsContext::systemFactory): Deleted.
(WebCore::GraphicsContext::defaultRenderTarget): Deleted.
(WebCore::GraphicsContext::platformInit): Deleted.
(WebCore::GraphicsContext::platformDestroy): Deleted.
(WebCore::GraphicsContext::platformContext const): Deleted.
(WebCore::GraphicsContext::savePlatformState): Deleted.
(WebCore::GraphicsContext::restorePlatformState): Deleted.
(WebCore::GraphicsContext::drawPlatformImage): Deleted.
(WebCore::GraphicsContext::releaseWindowsContext): Deleted.
(WebCore::GraphicsContext::drawWindowsBitmap): Deleted.
(WebCore::GraphicsContext::drawFocusRing): Deleted.
(WebCore::GraphicsContext::drawDotsForDocumentMarker): Deleted.
(WebCore::GraphicsContext::brushWithColor): Deleted.
(WebCore::GraphicsContext::colorWithGlobalAlpha const): Deleted.
(WebCore::GraphicsContext::solidStrokeBrush const): Deleted.
(WebCore::GraphicsContext::solidFillBrush const): Deleted.
(WebCore::GraphicsContext::patternStrokeBrush const): Deleted.
(WebCore::GraphicsContext::patternFillBrush const): Deleted.
(WebCore::GraphicsContext::beginDraw): Deleted.
(WebCore::GraphicsContext::endDraw): Deleted.
(WebCore::GraphicsContext::flush): Deleted.
(WebCore::GraphicsContext::drawPlatformPattern): Deleted.
(WebCore::GraphicsContext::drawRect): Deleted.
(WebCore::GraphicsContext::platformStrokeStyle const): Deleted.
(WebCore::GraphicsContext::drawLine): Deleted.
(WebCore::GraphicsContext::drawEllipse): Deleted.
(WebCore::GraphicsContext::applyStrokePattern): Deleted.
(WebCore::GraphicsContext::applyFillPattern): Deleted.
(WebCore::GraphicsContext::drawPath): Deleted.
(WebCore::GraphicsContext::fillPath): Deleted.
(WebCore::GraphicsContext::strokePath): Deleted.
(WebCore::GraphicsContext::fillRect): Deleted.
(WebCore::GraphicsContext::platformFillRoundedRect): Deleted.
(WebCore::GraphicsContext::fillRectWithRoundedHole): Deleted.
(WebCore::GraphicsContext::clip): Deleted.
(WebCore::GraphicsContext::clipOut): Deleted.
(WebCore::GraphicsContext::clipPath): Deleted.
(WebCore::GraphicsContext::clipBounds const): Deleted.
(WebCore::GraphicsContext::beginPlatformTransparencyLayer): Deleted.
(WebCore::GraphicsContext::endPlatformTransparencyLayer): Deleted.
(WebCore::GraphicsContext::supportsTransparencyLayers): Deleted.
(WebCore::GraphicsContext::setPlatformShadow): Deleted.
(WebCore::GraphicsContext::clearPlatformShadow): Deleted.
(WebCore::GraphicsContext::setPlatformStrokeStyle): Deleted.
(WebCore::GraphicsContext::setMiterLimit): Deleted.
(WebCore::GraphicsContext::clearRect): Deleted.
(WebCore::GraphicsContext::strokeRect): Deleted.
(WebCore::GraphicsContext::setLineCap): Deleted.
(WebCore::GraphicsContext::setLineDash): Deleted.
(WebCore::GraphicsContext::setLineJoin): Deleted.
(WebCore::GraphicsContext::canvasClip): Deleted.
(WebCore::GraphicsContext::scale): Deleted.
(WebCore::GraphicsContext::rotate): Deleted.
(WebCore::GraphicsContext::translate): Deleted.
(WebCore::GraphicsContext::concatCTM): Deleted.
(WebCore::GraphicsContext::setCTM): Deleted.
(WebCore::GraphicsContext::getCTM const): Deleted.
(WebCore::GraphicsContext::roundToDevicePixels): Deleted.
(WebCore::GraphicsContext::drawLineForText): Deleted.
(WebCore::GraphicsContext::drawLinesForText): Deleted.
(WebCore::GraphicsContext::setURLForRect): Deleted.
(WebCore::GraphicsContext::setPlatformImageInterpolationQuality): Deleted.
(WebCore::GraphicsContext::setIsCALayerContext): Deleted.
(WebCore::GraphicsContext::isCALayerContext const): Deleted.
(WebCore::GraphicsContext::setIsAcceleratedContext): Deleted.
(WebCore::GraphicsContext::isAcceleratedContext const): Deleted.
(WebCore::GraphicsContext::setPlatformTextDrawingMode): Deleted.
(WebCore::GraphicsContext::setPlatformStrokeColor): Deleted.
(WebCore::GraphicsContext::setPlatformStrokeThickness): Deleted.
(WebCore::GraphicsContext::setPlatformFillColor): Deleted.
(WebCore::GraphicsContext::setPlatformShouldAntialias): Deleted.
(WebCore::GraphicsContext::setPlatformShouldSmoothFonts): Deleted.
(WebCore::GraphicsContext::setPlatformAlpha): Deleted.
(WebCore::GraphicsContext::setPlatformCompositeOperation): Deleted.
(WebCore::GraphicsContext::platformApplyDeviceScaleFactor): Deleted.
(WebCore::GraphicsContext::platformFillEllipse): Deleted.
(WebCore::GraphicsContext::platformStrokeEllipse): Deleted.
* platform/graphics/win/GraphicsContextImplDirect2D.cpp: Removed.
* platform/graphics/win/GraphicsContextImplDirect2D.h: Removed.
* platform/graphics/win/GraphicsContextWin.cpp:
(WebCore::GraphicsContext::setShouldIncludeChildWindows):
(WebCore::GraphicsContext::shouldIncludeChildWindows const):
(WebCore::GraphicsContext::createWindowsBitmap):
(WebCore::GraphicsContext::getWindowsContext):
(WebCore::GraphicsContext::hdc const):
* platform/graphics/win/ImageBufferDirect2DBackend.cpp:
(WebCore::ImageBufferDirect2DBackend::create):
* platform/graphics/win/ImageCGWin.cpp:
(WebCore::BitmapImage::getHBITMAPOfSize):
* platform/graphics/win/ImageCairoWin.cpp:
(WebCore::BitmapImage::getHBITMAPOfSize):
* platform/graphics/win/PathDirect2D.cpp:
(WebCore::Path::strokeContains const):
(WebCore::Path::strokeBoundingRect const):
* platform/ios/DragImageIOS.mm:
(WebCore::createDragImageFromImage):
(WebCore::createDragImageForLink):
(WebCore::createDragImageForSelection):
(WebCore::createDragImageForRange):
(WebCore::createDragImageForColor):
* platform/mediastream/cocoa/AudioMediaStreamTrackRendererCocoa.cpp:
* platform/win/DragImageWin.cpp:
(WebCore::createDragImageForLink):
* platform/win/PopupMenuWin.cpp:
(WebCore::PopupMenuWin::paint):
* rendering/ContentfulPaintChecker.cpp:
(WebCore::ContentfulPaintChecker::qualifiesForContentfulPaint):
* rendering/RenderBoxModelObject.cpp:
(WebCore::applyBoxShadowForBackground):
(WebCore::RenderBoxModelObject::paintBoxShadow):
* rendering/RenderLayerBacking.cpp:
(WebCore::RenderLayerBacking::updateEventRegion):
Source/WebKit:
* Shared/cairo/ShareableBitmapCairo.cpp:
(WebKit::ShareableBitmap::createGraphicsContext):
* Shared/cg/ShareableBitmapCG.cpp:
(WebKit::ShareableBitmap::createGraphicsContext):
* Shared/win/ShareableBitmapDirect2D.cpp:
(WebKit::ShareableBitmap::createGraphicsContext):
* UIProcess/cairo/BackingStoreCairo.cpp:
(WebKit::BackingStore::incorporateUpdate):
* UIProcess/mac/WKPrintingView.mm:
(-[WKPrintingView _drawPreview:]):
* UIProcess/win/BackingStoreDirect2D.cpp:
* UIProcess/win/WebPopupMenuProxyWin.cpp:
(WebKit::WebPopupMenuProxyWin::paint):
* WebProcess/Plugins/PDF/PDFPlugin.mm:
(WebKit::PDFPlugin::paintControlForLayerInContext):
* WebProcess/WebPage/Cocoa/WebPageCocoa.mm:
(WebKit::WebPage::pdfSnapshotAtSize):
* WebProcess/WebPage/CoordinatedGraphics/DrawingAreaCoordinatedGraphics.cpp:
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::drawPagesToPDFImpl):
* WebProcess/WebPage/gtk/WebPrintOperationGtk.cpp:
(WebKit::WebPrintOperationGtk::renderPage):
Source/WebKitLegacy/mac:
* Misc/WebCoreStatistics.mm:
(-[WebFrame printToCGContext:pageWidth:pageHeight:]):
* Misc/WebKitNSStringExtras.mm:
(-[NSString _web_drawAtPoint:font:textColor:]):
* WebInspector/WebNodeHighlightView.mm:
(-[WebNodeHighlightView drawRect:]):
* WebView/WebFrame.mm:
(-[WebFrame _drawRect:contentsOnly:]):
Source/WebKitLegacy/win:
* FullscreenVideoController.cpp:
(FullscreenVideoController::draw):
* WebFrame.cpp:
(WebFrame::paintDocumentRectToContext):
(WebFrame::paintScrollViewRectToContextAtPoint):
(WebFrame::spoolPages):
* WebNodeHighlight.cpp:
(WebNodeHighlight::update):
* WebView.cpp:
(WebView::paintWithDirect2D):
(WebView::paintIntoBackingStore):
Tools:
* TestWebKitAPI/Tests/WebCore/cg/DisplayListTestsCG.cpp:
(TestWebKitAPI::TEST):
Canonical link: https://commits.webkit.org/238144@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@278062 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2021-05-26 00:01:28 +00:00
|
|
|
platform/graphics/NullGraphicsContext.h
|
2019-04-18 23:20:26 +00:00
|
|
|
platform/graphics/OpenGLESShims.h
|
|
|
|
platform/graphics/OpenGLShims.h
|
|
|
|
platform/graphics/Path.h
|
|
|
|
platform/graphics/PathUtilities.h
|
|
|
|
platform/graphics/Pattern.h
|
2021-05-09 01:29:38 +00:00
|
|
|
platform/graphics/PixelBuffer.h
|
2021-05-13 20:54:21 +00:00
|
|
|
platform/graphics/PixelBufferFormat.h
|
2021-05-02 03:39:07 +00:00
|
|
|
platform/graphics/PixelFormat.h
|
2021-05-25 01:26:18 +00:00
|
|
|
platform/graphics/PlatformColorSpace.h
|
2019-04-18 23:20:26 +00:00
|
|
|
platform/graphics/PlatformDisplay.h
|
2020-11-10 03:14:18 +00:00
|
|
|
platform/graphics/PlatformImage.h
|
2020-02-19 01:12:47 +00:00
|
|
|
platform/graphics/PlatformImageBuffer.h
|
2020-02-28 01:35:21 +00:00
|
|
|
platform/graphics/PlatformImageBufferBackend.h
|
2019-04-18 23:20:26 +00:00
|
|
|
platform/graphics/PlatformLayer.h
|
|
|
|
platform/graphics/PlatformMediaResourceLoader.h
|
|
|
|
platform/graphics/PlatformTextTrack.h
|
|
|
|
platform/graphics/PlatformTimeRanges.h
|
|
|
|
platform/graphics/Region.h
|
2020-12-09 18:32:29 +00:00
|
|
|
platform/graphics/RemoteGraphicsContextGLProxyBase.h
|
2019-04-18 23:20:26 +00:00
|
|
|
platform/graphics/RemoteVideoSample.h
|
2020-10-27 04:39:55 +00:00
|
|
|
platform/graphics/RenderingResourceIdentifier.h
|
2020-01-22 00:26:24 +00:00
|
|
|
platform/graphics/RenderingMode.h
|
2019-04-18 23:20:26 +00:00
|
|
|
platform/graphics/RoundedRect.h
|
2020-11-17 17:25:27 +00:00
|
|
|
platform/graphics/SourceBufferPrivate.h
|
|
|
|
platform/graphics/SourceBufferPrivateClient.h
|
2019-04-18 23:20:26 +00:00
|
|
|
platform/graphics/StringTruncator.h
|
2019-06-07 08:27:25 +00:00
|
|
|
platform/graphics/TabSize.h
|
2019-04-18 23:20:26 +00:00
|
|
|
platform/graphics/TextRun.h
|
2020-09-29 04:52:54 +00:00
|
|
|
platform/graphics/TextTrackRepresentation.h
|
2019-04-18 23:20:26 +00:00
|
|
|
platform/graphics/TiledBacking.h
|
|
|
|
platform/graphics/TrackPrivateBase.h
|
2021-02-25 21:04:50 +00:00
|
|
|
platform/graphics/VP9Utilities.h
|
2019-05-27 01:12:00 +00:00
|
|
|
platform/graphics/VelocityData.h
|
2020-09-29 04:52:54 +00:00
|
|
|
platform/graphics/VideoLayerManager.h
|
2020-10-16 20:10:00 +00:00
|
|
|
platform/graphics/VideoPlaybackQualityMetrics.h
|
2019-04-18 23:20:26 +00:00
|
|
|
platform/graphics/VideoTrackPrivate.h
|
|
|
|
platform/graphics/WidthCache.h
|
|
|
|
platform/graphics/WindRule.h
|
|
|
|
|
2021-05-26 22:49:13 +00:00
|
|
|
platform/graphics/angle/ANGLEHeaders.h
|
2020-01-06 18:52:42 +00:00
|
|
|
platform/graphics/angle/ExtensionsGLANGLE.h
|
2021-07-13 19:28:19 +00:00
|
|
|
platform/graphics/angle/GraphicsContextGLANGLEUtilities.h
|
[GTK] Add ANGLE backend to GTK port
https://bugs.webkit.org/show_bug.cgi?id=199060
Reviewed by Žan Doberšek.
.:
This change brings ANGLE support for WebGL to GTK port. USE_ANGLE_WEBGL
is newly defined in OptionGTK.cmake, and turns on the USE_ANGLE_EGL flag.
* Source/cmake/OptionsGTK.cmake: USE_ANGLE_WEBGL added.
Source/ThirdParty/ANGLE:
* CMakeLists.txt: When USE_ANGLE_WEBGL is enabled, necessary glesv2 entry points headers
are installed in the derived source directory. And then adjust-angle-include-path.sh is applied
to change include paths in the entry points header files.
* GLESv2.cmake: libglesv2_entry_points_headers is newly defined, which is a gathering of
entry point headers of libGLESv2.
* PlatformGTK.cmake: In this file, we append gl and glx related angle code as a build target.
Since we want gl context and gles context simultaneously, we remove gl prototype calls
from the generated libGLESv2 library. Instead, we invoke egl and gl calls of ANGLE
via their non-prototype function names.
* adjust-angle-include-paths.sh: sed is slightly different in unix and linux systems.
In particular, its inplace option needs to be changed for better compatibility on linux.
* include/CMakeLists.txt: ANGLE_WEBGL_HEADERS is newly defined. It gathers header files of ANGLE
for WebGL support.
Source/WebCore:
This change aims to bring ANGLE support for WebGL to GTK port. The port
wants to have a gl context for texture mapper and a gles/egl context for webgl
simultaneously, we adopt the readPixel-copyToTexture approach for now because
sharing textures between the two different contextes is not a feasible direction.
Also, to avoid conflicts between gl and gles calls, we use non-prototype functions
of ANGLE for WebGL context (i.e., GraphicsContext3D). Although many combinations
of graphic configurations exist, only default configuration (Nicosia layers
running on ANGLE + GLX is supported. Other combinations like ANGLE + GLES or WPE
will be covered by following patches.
No new tests since no functionality changed.
* Headers.cmake:
* PlatformGTK.cmake:
* SourcesGTK.txt:
* platform/TextureMapper.cmake:
* platform/graphics/ANGLEWebKitBridge.h:
* platform/graphics/GLContext.cpp:
* platform/graphics/GLContext.h:
* platform/graphics/GraphicsContext3D.h:
* platform/graphics/OpenGLShims.cpp:
(WebCore::initializeOpenGLShims):
* platform/graphics/OpenGLShims.h:
* platform/graphics/PlatformDisplay.cpp:
* platform/graphics/angle/GraphicsContext3DANGLE.cpp:
(WebCore::GraphicsContext3D::reshapeFBOs):
(WebCore::GraphicsContext3D::prepareTexture):
* platform/graphics/nicosia/texmap/NicosiaGC3DANGLELayer.cpp: Added.
(Nicosia::GC3DANGLELayer::ANGLEContext::errorString):
(Nicosia::GC3DANGLELayer::ANGLEContext::lastErrorString):
(Nicosia::GC3DANGLELayer::ANGLEContext::createContext):
(Nicosia::GC3DANGLELayer::ANGLEContext::ANGLEContext):
(Nicosia::GC3DANGLELayer::ANGLEContext::~ANGLEContext):
(Nicosia::GC3DANGLELayer::ANGLEContext::makeContextCurrent):
(Nicosia::GC3DANGLELayer::ANGLEContext::platformContext):
(Nicosia::GC3DANGLELayer::GC3DANGLELayer):
(Nicosia::GC3DANGLELayer::~GC3DANGLELayer):
(Nicosia::GC3DANGLELayer::makeContextCurrent):
(Nicosia::GC3DANGLELayer::platformContext):
* platform/graphics/nicosia/texmap/NicosiaGC3DANGLELayer.h: Copied from Source/WebCore/platform/graphics/nicosia/texmap/NicosiaGC3DLayer.h.
* platform/graphics/nicosia/texmap/NicosiaGC3DLayer.cpp:
(Nicosia::GC3DLayer::GC3DLayer):
(Nicosia::GC3DLayer::swapBuffersIfNeeded):
* platform/graphics/nicosia/texmap/NicosiaGC3DLayer.h:
* platform/graphics/texmap/BitmapTextureGL.cpp:
(WebCore::BitmapTextureGL::setPendingContents):
(WebCore::BitmapTextureGL::updatePendingContents):
* platform/graphics/texmap/BitmapTextureGL.h:
* platform/graphics/texmap/GraphicsContext3DTextureMapper.cpp:
(WebCore::GraphicsContext3D::create):
(WebCore::GraphicsContext3D::GraphicsContext3D):
(WebCore::GraphicsContext3D::~GraphicsContext3D):
* platform/graphics/texmap/TextureMapperPlatformLayerBuffer.cpp:
(WebCore::TextureMapperPlatformLayerBuffer::paintToTextureMapper):
* platform/graphics/texmap/TextureMapperPlatformLayerProxy.cpp:
(WebCore::TextureMapperPlatformLayerProxy::pushNextBuffer):
Source/WebKit:
* UIProcess/API/glib/WebKitProtocolHandler.cpp: Extention3DANGLE is used instead
where ANGLE for WebGL is enabled.
* UIProcess/gtk/AcceleratedBackingStoreWayland.cpp: Append gl extensions for ANGLE.
(WebKit::AcceleratedBackingStoreWayland::checkRequirements):
Source/WTF:
The GTK port uses TEXTURE_MAPPER that has a gl context for accelerated rendering,
and ANGLE has an egl context for WebGL. We want to make both live together
so an exception is made where TEXTURE_MAPPER is enabled.
* wtf/Platform.h:
Canonical link: https://commits.webkit.org/217698@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@252717 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2019-11-20 23:59:11 +00:00
|
|
|
|
2019-12-11 18:42:24 +00:00
|
|
|
platform/graphics/displaylists/DisplayList.h
|
[Cocoa] [GPU Process] Perform image decoding of color fonts in the Web Process
https://bugs.webkit.org/show_bug.cgi?id=217506
Reviewed by Simon Fraser.
Source/WebCore:
Core Text itself doesn't know how to draw things; it has to rely on Core Graphics to do that.
However, Core Graphics only understands the simplest of text drawing concepts; it doesn't understand
things like color fonts or emoji. Core Text sits between the application and Core Graphics, and is
responsible for splitting up an arbitrary draw command into individual simple pieces which Core
Graphics can understand. For example, when you ask Core Text to draw a string which is of the form
"outlines emoji outlines", Core Text will end up telling Core Graphics to draw the first outlines, then
draw the emoji image (using Core Graphics's normal image drawing routines), then draw the remaining
outlines.
This is exactly the same kind of filtering we want to do for the GPU Process. We want to be able to
separate out the glyphs which are rendered using outlines from the emoji glyphs which are rendered
using images. We want to handle the image glyphs ourself in WebKit using our own image drawing display
list facilities, which will cause images to be decoded in the Web Process, thereby increasing the
security of the GPU Process.
So, this patch implements a custom CGContext, backed by a function table that is populated in WebKit.
We pass this custom CGContext into Core Text, which does its normal splitting up of outlines / images,
and calls glyph / image drawing functions on our CGContext. Because these functions are implemented by
WebKit, this effectively makes WebKit able to intercept the drawing calls, and implement them ourself
by appending items to the current display list. So, when Core Text tells our CGContext to draw an emoji,
our callback runs and we "just" append a DrawImage display list item.
I use scare-quotes around "just" because it is a bit more complicated than that. Core Text internally
can change the fill/stroke color (for COLR glyphs), the text matrix (it should be updated between
adjacent runs), the CTM, and the shadow state (because Core Text sometimes will implement shadows itself
by just drawing the text two times). So, in our CGContext callback, we have to look at the state of
the CGContext, figure out if anything changed (because we're not notified when changes happen), and
if things did change, append additional display list items to make a parallel change happen at draw
time.
Tests added in https://trac.webkit.org/r269177
* Headers.cmake:
* PlatformAppleWin.cmake:
* PlatformWinCairo.cmake:
* SourcesCocoa.txt:
* WebCore.xcodeproj/project.pbxproj:
* platform/FreeType.cmake:
* platform/graphics/cg/ImageBufferCGBackend.cpp:
(WebCore::ImageBufferCGBackend::setupContext):
* platform/graphics/coretext/FontCascadeCoreText.cpp:
(WebCore::fillVectorWithHorizontalGlyphPositions):
* platform/graphics/displaylists/DisplayListDrawGlyphsRecorder.h: Added.
* platform/graphics/displaylists/DisplayListDrawGlyphsRecorderCoreText.cpp: Added.
(WebCore::DisplayList::beginLayer): VTable callback for creating a transparency layer.
(WebCore::DisplayList::endLayer): Ditto for ending a transparency layer.
(WebCore::DisplayList::drawGlyphs): VTable callback for drawing outline glyphs.
(WebCore::DisplayList::drawImage): VTable callback for drawing an image.
(WebCore::DisplayList::DrawGlyphsRecorder::createInternalContext): Set up the custom CGContext
infrastructure. Hook up the VTable callbacks.
(WebCore::DisplayList::DrawGlyphsRecorder::DrawGlyphsRecorder):
(WebCore::DisplayList::DrawGlyphsRecorder::populateInternalState): We need to save the GraphicsContext
state at the beginning of the entry point, so we can restore anything that changed when we're done.
(WebCore::DisplayList::DrawGlyphsRecorder::populateInternalContext): Because Core Text internally
interrogates the CGContext to see if it needs to do things like draw shadows itself, we need to make
sure that the recorder's state is mirrored in our custom CGContext. This applies all the relevant
state to our CGContext so it's ready when Core Text asks for it.
(WebCore::DisplayList::DrawGlyphsRecorder::prepareInternalContext): Call the above two functions.
(WebCore::DisplayList::DrawGlyphsRecorder::concludeInternalContext): Called once when we're done.
This function cleans up, by possibly appending additional display list items to restore the state
back to what it was when we started.
(WebCore::DisplayList::DrawGlyphsRecorder::updateFillColor): Detect a changed fill color, and if it has
changed, append a display list item to make a parallel change at drawing time.
(WebCore::DisplayList::DrawGlyphsRecorder::updateStrokeColor): Ditto for the stroke color.
(WebCore::DisplayList::DrawGlyphsRecorder::updateCTM): Ditto for the CTM.
(WebCore::DisplayList::shadowIsCleared):
(WebCore::DisplayList::DrawGlyphsRecorder::updateShadow): Ditto for the shadow state.
(WebCore::DisplayList::DrawGlyphsRecorder::recordBeginLayer): Hook this up to beginTransparencyLayer().
(WebCore::DisplayList::DrawGlyphsRecorder::recordEndLayer): Hook this up to endTransparencyLayer().
(WebCore::DisplayList::computeAdvancesFromPositions): CGContext gives us positions, but our display list
infrastructure requires advances. Simply subtract to convert between them.
(WebCore::DisplayList::DrawGlyphsRecorder::recordDrawGlyphs): The callback that appends a DrawGlyphs
display list item. Note it has to call the various update() functions to detect changes in the CGContext
state.
(WebCore::DisplayList::DrawGlyphsRecorder::recordDrawImage): Ditto for a DrawImage display list item.
(WebCore::DisplayList::DrawGlyphsRecorder::drawGlyphs): The main entry point. Simply set up, do the work,
then clean up.
* platform/graphics/displaylists/DisplayListDrawGlyphsRecorderHarfBuzz.cpp: Added. Dummy implementation
to make the other ports continue to compile.
(WebCore::DisplayList::DrawGlyphsRecorder::DrawGlyphsRecorder):
(WebCore::DisplayList::DrawGlyphsRecorder::drawGlyphs):
* platform/graphics/displaylists/DisplayListRecorder.cpp:
(WebCore::DisplayList::Recorder::Recorder):
(WebCore::DisplayList::Recorder::drawGlyphs): Call m_drawGlyphsRecorder.drawGlyphs() instead of just
appending a DrawGlyphs command.
(WebCore::DisplayList::Recorder::concatCTM): Tiny optimization.
(WebCore::DisplayList::Recorder::clipToDrawingCommands): The current clipToDrawingCommands's context
CTM didn't match the parallel one used during playback. In order to make the CTMs match are recording
and playback time, we have to make sure they start off the same.
* platform/graphics/displaylists/DisplayListRecorder.h: DisplayList::Recorder owns a DrawGlyphsRecorder,
whose lifetime equals that of the DisplayList::Recorder. Rather than destroying / recreating the
DrawGlyphsRecorder, the DrawGlyphsRecorder class is smart enough to clean up after itself so it can be
reused multiple times.
Source/WebCore/PAL:
Add some new entry points, and do some various cleanup.
* pal/spi/cg/CoreGraphicsSPI.h:
Canonical link: https://commits.webkit.org/231072@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@269211 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2020-10-31 00:01:02 +00:00
|
|
|
platform/graphics/displaylists/DisplayListDrawGlyphsRecorder.h
|
2020-03-11 05:44:47 +00:00
|
|
|
platform/graphics/displaylists/DisplayListDrawingContext.h
|
2020-12-04 22:30:23 +00:00
|
|
|
platform/graphics/displaylists/DisplayListFlushIdentifier.h
|
2020-03-11 05:44:47 +00:00
|
|
|
platform/graphics/displaylists/DisplayListImageBuffer.h
|
[Concurrent display lists] Encode display list items directly into shared memory
https://bugs.webkit.org/show_bug.cgi?id=218406
Reviewed by Tim Horton.
Source/WebCore:
This patch refactors display lists (and display list items) in preparation for upcoming changes to allow the
GPU and web processes to concurrently read and write display list item data, which allows us to achieve
significant improvements in performance on many graphics benchmarks in MotionMark by removing overhead involved
in serializing and deserializing display list items over IPC. To implement this, rather than using IPC to encode
and decode each item, we will instead store display list items directly in memory shared between the web and GPU
processes.
This strategy, of course, will not work for display list items that contain pointers. Unfortunately, this
affects all display list items at the moment, since all items are subclasses of `DisplayList::Item`, and
therefore contain vtable pointers, even if all members are plain data types. Thus, the first step towards being
able to read and write items directly in shared memory is to remove this vtable pointer by making display list
items no longer inherit from `DrawingItem` or `Item`.
Currently, display lists are backed by `Vector<Ref<Item>>`; however, this no longer works once none of the
display list items are descended from a common base class. To address this, we introduce
`DisplayList::ItemBuffer`, which encapsulates logic to manage one or more data segments that contain display
list item data (i.e. display list items stacked adjacent to each other in memory). Display lists now append
inline display list items by constructing these items directly inside the item buffer using placement-new.
However, many types of display list items do not consist entirely of inline data; some of these are obvious,
such as `DrawImage`, `DrawGlyphs`, or `StrokePath` (since a `Path` may be arbitrarily complex). Other out-of-
line item types are less obvious: for instance, `FillRoundedRect` is an out-of-line item due to the fact that
the color of the rect (`FillRoundedRect::m_color`) may be an extended color, which then contains a pointer. In
these cases, we can't simply encode the item in shared memory and read it in the GPU process, since the pointer
(if it pointed to anything other than null in the web process) will point to arbitrary memory in the GPU
process. Instead, we can leverage our existing IPC infrastructure here by encoding each of these out-of-line
items as data and decoding them from this data in the GPU process. To do this, we delegate out to WebKit2 to
encode out-of-line display list items using WebKit's `IPC::Encoder`, and pass back a `SharedBuffer` which we
then copy into the item buffer. This delegation happens through the `ItemBufferWritingClient` class, which has
an implementation in WebKit2. On the decoding side in the GPU process, we then ask `ItemBufferReadingClient` (if
set) to convert this encoded data back into a display list item. In WebKit2, we implement this interface and use
the corresponding `IPC::Decoder` to decode the data we serialized earlier.
If no client is specified or the client does not require custom encoding/decoding for the given item type, we
fall back to constructing the item directly inside the writable item buffer data.
To make it easier to reason about these new (inheritance-free) display list items, we additionally introduce
`ItemHandle`, which wraps a pointer to a display list item and provides several helper methods. The first byte
of each item handle always points to an `ItemType`, and the following `N` bytes contain the item itself, where
`N` is the size of the item class. Here are some examples of how to use an `ItemHandle`:
`DisplayList::ItemType type = itemHandle.type();` (This matches the current inheritance model)
`if (itemHandle.is<StrokePath>()) {...` (Replaces is<> in the current model)
`auto& setStateItem = itemHandle.get<SetState>();` (Replaces downcast<> in the current model)
`itemHandle.apply(myGraphicsContext);` (This matches the current inheritance model)
`bool isDrawingItem = itemHandle.isDrawingItem();` (Replaces checks for `is<DrawingItem>(item)`)
When writing display lists for the GPU process, the writing client (a `ItemBufferWritingClient`) will be asked
to provide `ItemBufferHandle`s where the item buffer will place item data (whether encoded, or as an inline
object). However, when using display lists outside of this context (e.g. in other parts of WebCore, such as the
glyph drawing cache), we don't have a `ItemBufferWritingClient`. To handle this, the item buffer instead
allocates its own (non-shared-memory) buffers, which it manages and deletes when it is done. If any out-of-line
items are constructed within these buffers, `ItemBuffer` will additionally call their destructors prior to
deleting these buffers.
See per-change comments below for more details.
* Headers.cmake:
* Sources.txt:
* WebCore.xcodeproj/project.pbxproj:
* platform/graphics/GraphicsContext.h:
* platform/graphics/displaylists/DisplayList.cpp:
(WebCore::DisplayList::DisplayList::DisplayList):
(WebCore::DisplayList::DisplayList::operator=):
Implement the move assignment operator and move constructor by exchanging ownership of the item buffer.
(WebCore::DisplayList::DisplayList::clear):
(WebCore::DisplayList::DisplayList::shouldDumpForFlags):
(WebCore::DisplayList::DisplayList::asText const):
(WebCore::DisplayList::DisplayList::dump const):
Adjust the format when printing display lists to `TextStream`. Now that drawing item extents are tracked on the
display list rather than being on each drawing item, we print them out after each item (as opposed to being in
the middle of each item).
(WebCore::DisplayList::DisplayList::sizeInBytes const):
Tally up the size of the display list by taking the sum of the sizes of each readonly segment, as well as the
writable buffer size.
(WebCore::DisplayList::DisplayList::isEmpty const):
A DisplayList is empty if it contains no item data: in other words, there are no readonly buffer segments, and
there is also nothing written to the writable buffer segment.
(WebCore::DisplayList::DisplayList::itemBuffer):
(WebCore::DisplayList::DisplayList::setItemBufferClient):
(WebCore::DisplayList::DisplayList::forEachItemBuffer const):
Add a helper to iterate over each ItemBufferHandle in the display list. This includes all readonly handles, and
then the writable handle (if it exists).
(WebCore::DisplayList::DisplayList::setTracksDrawingItemExtents):
Add an option to allow the display list to track drawing item extents. Currently, display lists always track
extents for drawing items; however, when propagating display lists to the GPU process for playback, these
extents were never sent along with IPC, and so this ended up just being unnecessary work. Additionally, the
initial clip in the GPU process is also never set, so computing these extents never helped.
That said, drawing item extents are still printed out for the purposes of testing, so we need to keep this
logic intact; this refactoring only disables extent computation for display lists being sent to the GPU process
via remote image buffers. In a future patch, we could refactor this so that drawing items contain extent rects
as inline data that can be consulted in the GPU process.
(WebCore::DisplayList::DisplayList::append):
Display list items are no longer constructed ahead of time, and then appended to the display list. Instead,
`append` now takes the type of the item to append as a template typename argument, as well as the arguments that
will be used to construct the item.
(WebCore::DisplayList::DisplayList::iterator::atEnd const):
(WebCore::DisplayList::DisplayList::iterator::updateCurrentItem):
(WebCore::DisplayList::DisplayList::iterator::advance):
(WebCore::DisplayList::DisplayList::iterator::clearCurrentItem):
(WebCore::DisplayList::DisplayList::iterator::moveToEnd):
(WebCore::DisplayList::DisplayList::iterator::moveCursorToStartOfCurrentBuffer):
Implement a C++ iterator for DisplayList. This makes it possible to write code like this:
```
// Suppose displayList is an instance of DisplayList::DisplayList.
for (auto [item, extent] : displayList) {
// Do things with item, which is a DisplayList::ItemHandle.
// Maybe do things with extent, which is an Optional<FloatRect>.
}
```
* platform/graphics/displaylists/DisplayList.h:
(WebCore::DisplayList::DisplayList::tracksDrawingItemExtents const):
(WebCore::DisplayList::DisplayList::iterator::iterator):
(WebCore::DisplayList::DisplayList::iterator::~iterator):
(WebCore::DisplayList::DisplayList::iterator::operator==):
(WebCore::DisplayList::DisplayList::iterator::operator!=):
(WebCore::DisplayList::DisplayList::iterator::operator++):
(WebCore::DisplayList::DisplayList::iterator::operator* const):
(WebCore::DisplayList::DisplayList::begin const):
(WebCore::DisplayList::DisplayList::end const):
(WebCore::DisplayList::DisplayList::itemBufferIfExists const):
(WebCore::DisplayList::DisplayList::addDrawingItemExtent):
(WebCore::DisplayList::DisplayList::append):
(WebCore::DisplayList::Item::type const): Deleted.
(WebCore::DisplayList::Item::isDrawingItem const): Deleted.
(WebCore::DisplayList::DisplayList::list const): Deleted.
(WebCore::DisplayList::DisplayList::itemAt): Deleted.
(WebCore::DisplayList::DisplayList::isEmpty const): Deleted.
(WebCore::DisplayList::DisplayList::appendItem): Deleted.
(WebCore::DisplayList::DisplayList::list): Deleted.
(WebCore::DisplayList::DisplayList::encode const): Deleted.
(WebCore::DisplayList::DisplayList::decode): Deleted.
Remove the ability to `encode` and `decode` display lists, for the time being. For the communication between the
web and GPU processes, we now use `SharedDisplayListHandle`.
Unfortunately, this does mean that the extant `ClipToDrawingCommands` display list item will be broken for the
time being. In a followup patch, I plan to reimplement `DisplayList::encode` and `decode` in the new inline item
model by encoding each item (either as inline data or via `IPC::Encoder::encodeSingleObject`). However, this is
contingent on all display list item types (e.g. `DrawImage` and `DrawGlyph`) not relying on `IPC::Attachment`
for encoding, so support for `ClipToDrawingCommands` will need to wait until after fonts and images are working.
* platform/graphics/displaylists/DisplayListDrawGlyphsRecorderCoreText.cpp:
(WebCore::DisplayList::DrawGlyphsRecorder::recordDrawGlyphs):
(WebCore::DisplayList::DrawGlyphsRecorder::recordDrawImage):
* platform/graphics/displaylists/DisplayListDrawGlyphsRecorderHarfBuzz.cpp:
(WebCore::DisplayList::DrawGlyphsRecorder::drawGlyphs):
* platform/graphics/displaylists/DisplayListDrawGlyphsRecorderWin.cpp:
(WebCore::DisplayList::DrawGlyphsRecorder::drawGlyphs):
Change these to use the new templated `DisplayList::append` method.
* platform/graphics/displaylists/DisplayListDrawingContext.h:
(WebCore::DisplayList::DrawingContext::takeDisplayList):
Use `std::exchange` instead of `WTFMove`. This is actually necessary in order to ensure correctness (i.e. no
leaks or double-freeing), since the `DisplayList` instance that is being moved from needs to be empty so that it
does not try to call destructors on the items formerly inside of it.
* platform/graphics/displaylists/DisplayListItemBuffer.cpp: Added.
(WebCore::DisplayList::ItemHandle::apply):
(WebCore::DisplayList::ItemHandle::destroy):
Add helper methods to apply a display list item to a `GraphicsContext` and call the display list item's
destructor, respectively.
(WebCore::DisplayList::ItemHandle::copyTo const):
Add a helper method to copy the item into the destination handle (calling the copy constructor of the item type
in the process). This is used when copying a validated display list item into the temporary item buffer in
`DisplayList::iterator`.
(WebCore::DisplayList::ItemBuffer::ItemBuffer):
(WebCore::DisplayList::ItemBuffer::~ItemBuffer):
(WebCore::DisplayList::m_allocatedBuffers):
In the case where there is no `m_writingClient` (for instance, when using in-process `DisplayList`s to optimize
text painting), the display list item buffer is responsible for creating and managing data buffers. As such, it
needs to remember to free any buffers that it allocated when appending, and must also destroy any out-of-line
display list items (i.e. items with nontrivial destructors) when it is finished.
(WebCore::DisplayList::m_readOnlyBuffers):
(WebCore::DisplayList::m_writableBuffer):
(WebCore::DisplayList::m_writtenNumberOfBytes):
See main ChangeLog entry above for more details.
(WebCore::DisplayList::ItemBuffer::operator=):
(WebCore::DisplayList::ItemBuffer::createItemBuffer):
(WebCore::DisplayList::ItemBuffer::forEachItemBuffer const):
(WebCore::DisplayList::ItemBuffer::clear):
(WebCore::DisplayList::ItemBuffer::swapWritableBufferIfNeeded):
(WebCore::DisplayList::ItemBuffer::appendDataAndLength):
* platform/graphics/displaylists/DisplayListItemBuffer.h: Added.
(WebCore::DisplayList::ItemBufferHandle::operator bool const):
(WebCore::DisplayList::ItemBufferHandle::operator! const):
(WebCore::DisplayList::ItemHandle::operator bool const):
(WebCore::DisplayList::ItemHandle::operator! const):
(WebCore::DisplayList::ItemHandle::type const):
(WebCore::DisplayList::ItemHandle::size const):
(WebCore::DisplayList::ItemHandle::is const):
(WebCore::DisplayList::ItemHandle::get const):
(WebCore::DisplayList::ItemBufferWritingClient::~ItemBufferWritingClient):
(WebCore::DisplayList::ItemBufferReadingClient::~ItemBufferReadingClient):
(WebCore::DisplayList::ItemBuffer::sizeInBytes const):
(WebCore::DisplayList::ItemBuffer::isEmpty const):
(WebCore::DisplayList::ItemBuffer::append):
(WebCore::DisplayList::ItemBuffer::setClient):
(WebCore::DisplayList::ItemBuffer::readOnlyBuffers const):
(WebCore::DisplayList::ItemBuffer::uncheckedAppend):
* platform/graphics/displaylists/DisplayListItems.cpp:
The changes in this file make up most of the code churn in this patch, but the changes are mostly mechanical. In
summary, this patch:
- Add static constexprs for the `ItemType` of each display list item class, as well as whether or not each class
is inline, and also whether or not each class is a drawing item.
- Remove `encode` and `decode` methods from inline item classes.
- Remove all overridden methods; each class now implements individual methods to `apply`, compute
`globalBounds` (if applicable), and compute `localBounds` (again, if applicable).
- Adjusts textstream dumping helpers, so that they no longer dump as a `DrawingItem` before dumping each member.
(WebCore::DisplayList::SetInlineFillGradient::SetInlineFillGradient):
(WebCore::DisplayList::SetState::SetState):
(WebCore::DisplayList::DrawGlyphs::DrawGlyphs):
(WebCore::DisplayList::DrawGlyphs::generateGlyphBuffer const):
(WebCore::DisplayList::DrawGlyphs::apply const):
(WebCore::DisplayList::operator<<):
(WebCore::DisplayList::DrawNativeImage::DrawNativeImage):
(WebCore::DisplayList::DrawPattern::DrawPattern):
(WebCore::DisplayList::DrawLinesForText::DrawLinesForText):
(WebCore::DisplayList::DrawFocusRingRects::DrawFocusRingRects):
(WebCore::DisplayList::FillRectWithGradient::FillRectWithGradient):
(WebCore::DisplayList::PutImageData::PutImageData):
(WebCore::DisplayList::PaintFrameForMedia::PaintFrameForMedia):
(WebCore::DisplayList::Item::Item): Deleted.
(WebCore::DisplayList::Item::sizeInBytes): Deleted.
(WebCore::DisplayList::DrawingItem::DrawingItem): Deleted.
(WebCore::DisplayList::Save::Save): Deleted.
(WebCore::DisplayList::Restore::Restore): Deleted.
(WebCore::DisplayList::Translate::Translate): Deleted.
(WebCore::DisplayList::Rotate::Rotate): Deleted.
(WebCore::DisplayList::Scale::Scale): Deleted.
(WebCore::DisplayList::SetCTM::SetCTM): Deleted.
(WebCore::DisplayList::ConcatenateCTM::ConcatenateCTM): Deleted.
(WebCore::DisplayList::SetInlineFillGradient::create): Deleted.
(WebCore::DisplayList::SetInlineFillColor::create): Deleted.
(WebCore::DisplayList::SetInlineStrokeColor::create): Deleted.
(WebCore::DisplayList::SetStrokeThickness::create): Deleted.
(WebCore::DisplayList::SetLineCap::SetLineCap): Deleted.
(WebCore::DisplayList::SetLineDash::SetLineDash): Deleted.
(WebCore::DisplayList::SetLineJoin::SetLineJoin): Deleted.
(WebCore::DisplayList::SetMiterLimit::SetMiterLimit): Deleted.
(WebCore::DisplayList::ClearShadow::ClearShadow): Deleted.
(WebCore::DisplayList::Clip::Clip): Deleted.
(WebCore::DisplayList::ClipOut::ClipOut): Deleted.
(WebCore::DisplayList::ClipOutToPath::ClipOutToPath): Deleted.
(WebCore::DisplayList::ClipPath::ClipPath): Deleted.
(WebCore::DisplayList::ClipToDrawingCommands::ClipToDrawingCommands): Deleted.
(WebCore::DisplayList::DrawGlyphs::localBounds const): Deleted.
(WebCore::DisplayList::DrawImage::DrawImage): Deleted.
(WebCore::DisplayList::DrawTiledImage::DrawTiledImage): Deleted.
(WebCore::DisplayList::DrawTiledScaledImage::DrawTiledScaledImage): Deleted.
(WebCore::DisplayList::DrawImageBuffer::DrawImageBuffer): Deleted.
(WebCore::DisplayList::DrawRect::DrawRect): Deleted.
(WebCore::DisplayList::DrawLine::DrawLine): Deleted.
(WebCore::DisplayList::DrawDotsForDocumentMarker::DrawDotsForDocumentMarker): Deleted.
(WebCore::DisplayList::DrawEllipse::DrawEllipse): Deleted.
(WebCore::DisplayList::DrawPath::DrawPath): Deleted.
(WebCore::DisplayList::DrawFocusRingPath::DrawFocusRingPath): Deleted.
(WebCore::DisplayList::FillRect::FillRect): Deleted.
(WebCore::DisplayList::FillRectWithColor::FillRectWithColor): Deleted.
(WebCore::DisplayList::FillCompositedRect::FillCompositedRect): Deleted.
(WebCore::DisplayList::FillRoundedRect::FillRoundedRect): Deleted.
(WebCore::DisplayList::FillRectWithRoundedHole::FillRectWithRoundedHole): Deleted.
(WebCore::DisplayList::FillInlinePath::FillInlinePath): Deleted.
(WebCore::DisplayList::FillPath::FillPath): Deleted.
(WebCore::DisplayList::FillEllipse::FillEllipse): Deleted.
(WebCore::DisplayList::PaintFrameForMedia::create): Deleted.
(WebCore::DisplayList::StrokeRect::StrokeRect): Deleted.
(WebCore::DisplayList::StrokeEllipse::StrokeEllipse): Deleted.
(WebCore::DisplayList::StrokeInlinePath::StrokeInlinePath): Deleted.
(WebCore::DisplayList::StrokePath::StrokePath): Deleted.
(WebCore::DisplayList::ClearRect::ClearRect): Deleted.
(WebCore::DisplayList::BeginTransparencyLayer::BeginTransparencyLayer): Deleted.
(WebCore::DisplayList::EndTransparencyLayer::EndTransparencyLayer): Deleted.
(WebCore::DisplayList::ApplyStrokePattern::ApplyStrokePattern): Deleted.
(WebCore::DisplayList::ApplyFillPattern::ApplyFillPattern): Deleted.
(WebCore::DisplayList::ApplyDeviceScaleFactor::ApplyDeviceScaleFactor): Deleted.
* platform/graphics/displaylists/DisplayListItems.h:
(WebCore::DisplayList::Save::localBounds const):
(WebCore::DisplayList::Save::globalBounds const):
(WebCore::DisplayList::Restore::localBounds const):
(WebCore::DisplayList::Restore::globalBounds const):
(WebCore::DisplayList::Translate::Translate):
(WebCore::DisplayList::Translate::localBounds const):
(WebCore::DisplayList::Translate::globalBounds const):
(WebCore::DisplayList::Rotate::Rotate):
(WebCore::DisplayList::Rotate::localBounds const):
(WebCore::DisplayList::Rotate::globalBounds const):
(WebCore::DisplayList::Scale::Scale):
(WebCore::DisplayList::Scale::localBounds const):
(WebCore::DisplayList::Scale::globalBounds const):
(WebCore::DisplayList::SetCTM::SetCTM):
(WebCore::DisplayList::SetCTM::localBounds const):
(WebCore::DisplayList::SetCTM::globalBounds const):
(WebCore::DisplayList::ConcatenateCTM::ConcatenateCTM):
(WebCore::DisplayList::ConcatenateCTM::localBounds const):
(WebCore::DisplayList::ConcatenateCTM::globalBounds const):
(WebCore::DisplayList::SetInlineFillGradient::localBounds const):
(WebCore::DisplayList::SetInlineFillGradient::globalBounds const):
(WebCore::DisplayList::SetInlineFillColor::SetInlineFillColor):
(WebCore::DisplayList::SetInlineFillColor::color const):
(WebCore::DisplayList::SetInlineFillColor::localBounds const):
(WebCore::DisplayList::SetInlineFillColor::globalBounds const):
(WebCore::DisplayList::SetInlineStrokeColor::SetInlineStrokeColor):
(WebCore::DisplayList::SetInlineStrokeColor::color const):
(WebCore::DisplayList::SetInlineStrokeColor::localBounds const):
(WebCore::DisplayList::SetInlineStrokeColor::globalBounds const):
(WebCore::DisplayList::SetStrokeThickness::SetStrokeThickness):
(WebCore::DisplayList::SetStrokeThickness::thickness const):
(WebCore::DisplayList::SetStrokeThickness::localBounds const):
(WebCore::DisplayList::SetStrokeThickness::globalBounds const):
(WebCore::DisplayList::SetState::localBounds const):
(WebCore::DisplayList::SetState::globalBounds const):
(WebCore::DisplayList::SetState::decode):
(WebCore::DisplayList::SetLineCap::SetLineCap):
(WebCore::DisplayList::SetLineCap::localBounds const):
(WebCore::DisplayList::SetLineCap::globalBounds const):
(WebCore::DisplayList::SetLineDash::SetLineDash):
(WebCore::DisplayList::SetLineDash::localBounds const):
(WebCore::DisplayList::SetLineDash::globalBounds const):
(WebCore::DisplayList::SetLineDash::decode):
(WebCore::DisplayList::SetLineJoin::SetLineJoin):
(WebCore::DisplayList::SetLineJoin::localBounds const):
(WebCore::DisplayList::SetLineJoin::globalBounds const):
(WebCore::DisplayList::SetMiterLimit::SetMiterLimit):
(WebCore::DisplayList::SetMiterLimit::localBounds const):
(WebCore::DisplayList::SetMiterLimit::globalBounds const):
(WebCore::DisplayList::ClearShadow::localBounds const):
(WebCore::DisplayList::ClearShadow::globalBounds const):
(WebCore::DisplayList::Clip::Clip):
(WebCore::DisplayList::Clip::rect const):
(WebCore::DisplayList::Clip::localBounds const):
(WebCore::DisplayList::Clip::globalBounds const):
(WebCore::DisplayList::ClipOut::ClipOut):
(WebCore::DisplayList::ClipOut::rect const):
(WebCore::DisplayList::ClipOut::localBounds const):
(WebCore::DisplayList::ClipOut::globalBounds const):
(WebCore::DisplayList::ClipOutToPath::ClipOutToPath):
(WebCore::DisplayList::ClipOutToPath::localBounds const):
(WebCore::DisplayList::ClipOutToPath::globalBounds const):
(WebCore::DisplayList::ClipOutToPath::decode):
(WebCore::DisplayList::ClipPath::ClipPath):
(WebCore::DisplayList::ClipPath::localBounds const):
(WebCore::DisplayList::ClipPath::globalBounds const):
(WebCore::DisplayList::ClipPath::decode):
(WebCore::DisplayList::ClipToDrawingCommands::ClipToDrawingCommands):
(WebCore::DisplayList::ClipToDrawingCommands::localBounds const):
(WebCore::DisplayList::ClipToDrawingCommands::globalBounds const):
(WebCore::DisplayList::ClipToDrawingCommands::encode const):
(WebCore::DisplayList::ClipToDrawingCommands::decode):
(WebCore::DisplayList::DrawGlyphs::globalBounds const):
(WebCore::DisplayList::DrawGlyphs::localBounds const):
(WebCore::DisplayList::DrawGlyphs::encode const):
(WebCore::DisplayList::DrawGlyphs::decode):
(WebCore::DisplayList::DrawImage::DrawImage):
(WebCore::DisplayList::DrawImage::globalBounds const):
(WebCore::DisplayList::DrawImage::localBounds const):
(WebCore::DisplayList::DrawImage::decode):
(WebCore::DisplayList::DrawTiledImage::DrawTiledImage):
(WebCore::DisplayList::DrawTiledImage::globalBounds const):
(WebCore::DisplayList::DrawTiledImage::localBounds const):
(WebCore::DisplayList::DrawTiledImage::decode):
(WebCore::DisplayList::DrawTiledScaledImage::DrawTiledScaledImage):
(WebCore::DisplayList::DrawTiledScaledImage::globalBounds const):
(WebCore::DisplayList::DrawTiledScaledImage::localBounds const):
(WebCore::DisplayList::DrawTiledScaledImage::decode):
(WebCore::DisplayList::DrawImageBuffer::DrawImageBuffer):
(WebCore::DisplayList::DrawImageBuffer::globalBounds const):
(WebCore::DisplayList::DrawImageBuffer::localBounds const):
(WebCore::DisplayList::DrawImageBuffer::decode):
(WebCore::DisplayList::DrawNativeImage::source const):
(WebCore::DisplayList::DrawNativeImage::destinationRect const):
(WebCore::DisplayList::DrawNativeImage::globalBounds const):
(WebCore::DisplayList::DrawNativeImage::localBounds const):
(WebCore::DisplayList::DrawNativeImage::decode):
(WebCore::DisplayList::DrawPattern::DrawPattern):
(WebCore::DisplayList::DrawPattern::globalBounds const):
(WebCore::DisplayList::DrawPattern::localBounds const):
(WebCore::DisplayList::DrawPattern::decode):
(WebCore::DisplayList::BeginTransparencyLayer::BeginTransparencyLayer):
(WebCore::DisplayList::BeginTransparencyLayer::localBounds const):
(WebCore::DisplayList::BeginTransparencyLayer::globalBounds const):
(WebCore::DisplayList::EndTransparencyLayer::localBounds const):
(WebCore::DisplayList::EndTransparencyLayer::globalBounds const):
(WebCore::DisplayList::DrawRect::DrawRect):
(WebCore::DisplayList::DrawRect::globalBounds const):
(WebCore::DisplayList::DrawRect::localBounds const):
(WebCore::DisplayList::DrawLine::DrawLine):
(WebCore::DisplayList::DrawLine::globalBounds const):
(WebCore::DisplayList::DrawLinesForText::globalBounds const):
(WebCore::DisplayList::DrawLinesForText::decode):
(WebCore::DisplayList::DrawDotsForDocumentMarker::DrawDotsForDocumentMarker):
(WebCore::DisplayList::DrawDotsForDocumentMarker::globalBounds const):
(WebCore::DisplayList::DrawEllipse::DrawEllipse):
(WebCore::DisplayList::DrawEllipse::rect const):
(WebCore::DisplayList::DrawEllipse::globalBounds const):
(WebCore::DisplayList::DrawEllipse::localBounds const):
(WebCore::DisplayList::DrawPath::DrawPath):
(WebCore::DisplayList::DrawPath::globalBounds const):
(WebCore::DisplayList::DrawPath::localBounds const):
(WebCore::DisplayList::DrawPath::decode):
(WebCore::DisplayList::DrawFocusRingPath::DrawFocusRingPath):
(WebCore::DisplayList::DrawFocusRingPath::globalBounds const):
(WebCore::DisplayList::DrawFocusRingPath::decode):
(WebCore::DisplayList::DrawFocusRingRects::globalBounds const):
(WebCore::DisplayList::DrawFocusRingRects::decode):
(WebCore::DisplayList::FillRect::FillRect):
(WebCore::DisplayList::FillRect::rect const):
(WebCore::DisplayList::FillRect::globalBounds const):
(WebCore::DisplayList::FillRect::localBounds const):
(WebCore::DisplayList::FillRectWithColor::FillRectWithColor):
(WebCore::DisplayList::FillRectWithColor::globalBounds const):
(WebCore::DisplayList::FillRectWithColor::localBounds const):
(WebCore::DisplayList::FillRectWithColor::decode):
(WebCore::DisplayList::FillRectWithGradient::rect const):
(WebCore::DisplayList::FillRectWithGradient::gradient const):
(WebCore::DisplayList::FillRectWithGradient::globalBounds const):
(WebCore::DisplayList::FillRectWithGradient::localBounds const):
(WebCore::DisplayList::FillRectWithGradient::decode):
(WebCore::DisplayList::FillCompositedRect::FillCompositedRect):
(WebCore::DisplayList::FillCompositedRect::globalBounds const):
(WebCore::DisplayList::FillCompositedRect::localBounds const):
(WebCore::DisplayList::FillCompositedRect::decode):
(WebCore::DisplayList::FillRoundedRect::FillRoundedRect):
(WebCore::DisplayList::FillRoundedRect::globalBounds const):
(WebCore::DisplayList::FillRoundedRect::localBounds const):
(WebCore::DisplayList::FillRoundedRect::decode):
(WebCore::DisplayList::FillRectWithRoundedHole::FillRectWithRoundedHole):
(WebCore::DisplayList::FillRectWithRoundedHole::globalBounds const):
(WebCore::DisplayList::FillRectWithRoundedHole::localBounds const):
(WebCore::DisplayList::FillRectWithRoundedHole::decode):
(WebCore::DisplayList::FillInlinePath::FillInlinePath):
(WebCore::DisplayList::FillInlinePath::globalBounds const):
(WebCore::DisplayList::FillInlinePath::localBounds const):
(WebCore::DisplayList::FillPath::FillPath):
(WebCore::DisplayList::FillPath::globalBounds const):
(WebCore::DisplayList::FillPath::localBounds const):
(WebCore::DisplayList::FillPath::decode):
(WebCore::DisplayList::FillEllipse::FillEllipse):
(WebCore::DisplayList::FillEllipse::globalBounds const):
(WebCore::DisplayList::FillEllipse::localBounds const):
(WebCore::DisplayList::PutImageData::imageData const):
(WebCore::DisplayList::PutImageData::localBounds const):
(WebCore::DisplayList::PutImageData::globalBounds const):
(WebCore::DisplayList::PutImageData::encode const):
(WebCore::DisplayList::PutImageData::decode):
(WebCore::DisplayList::PaintFrameForMedia::localBounds const):
(WebCore::DisplayList::PaintFrameForMedia::globalBounds const):
(WebCore::DisplayList::StrokeRect::StrokeRect):
(WebCore::DisplayList::StrokeRect::globalBounds const):
(WebCore::DisplayList::StrokeInlinePath::StrokeInlinePath):
(WebCore::DisplayList::StrokeInlinePath::globalBounds const):
(WebCore::DisplayList::StrokePath::StrokePath):
(WebCore::DisplayList::StrokePath::globalBounds const):
(WebCore::DisplayList::StrokePath::decode):
(WebCore::DisplayList::StrokeEllipse::StrokeEllipse):
(WebCore::DisplayList::StrokeEllipse::rect const):
(WebCore::DisplayList::StrokeEllipse::globalBounds const):
(WebCore::DisplayList::ClearRect::ClearRect):
(WebCore::DisplayList::ClearRect::rect const):
(WebCore::DisplayList::ClearRect::globalBounds const):
(WebCore::DisplayList::ClearRect::localBounds const):
(WebCore::DisplayList::ApplyStrokePattern::localBounds const):
(WebCore::DisplayList::ApplyStrokePattern::globalBounds const):
(WebCore::DisplayList::ApplyFillPattern::localBounds const):
(WebCore::DisplayList::ApplyFillPattern::globalBounds const):
(WebCore::DisplayList::ApplyDeviceScaleFactor::ApplyDeviceScaleFactor):
(WebCore::DisplayList::ApplyDeviceScaleFactor::localBounds const):
(WebCore::DisplayList::ApplyDeviceScaleFactor::globalBounds const):
(WebCore::DisplayList::DrawingItem::setExtent): Deleted.
(WebCore::DisplayList::DrawingItem::extent const): Deleted.
(WebCore::DisplayList::DrawingItem::extentKnown const): Deleted.
(WebCore::DisplayList::DrawingItem::localBounds const): Deleted.
(WebCore::DisplayList::DrawingItem::globalBounds const): Deleted.
(WebCore::DisplayList::Save::create): Deleted.
(WebCore::DisplayList::Save::encode const): Deleted.
(WebCore::DisplayList::Save::decode): Deleted.
(WebCore::DisplayList::Restore::create): Deleted.
(WebCore::DisplayList::Restore::encode const): Deleted.
(WebCore::DisplayList::Restore::decode): Deleted.
(WebCore::DisplayList::Translate::create): Deleted.
(WebCore::DisplayList::Translate::encode const): Deleted.
(WebCore::DisplayList::Translate::decode): Deleted.
(WebCore::DisplayList::Rotate::create): Deleted.
(WebCore::DisplayList::Rotate::encode const): Deleted.
(WebCore::DisplayList::Rotate::decode): Deleted.
(WebCore::DisplayList::Scale::create): Deleted.
(WebCore::DisplayList::Scale::encode const): Deleted.
(WebCore::DisplayList::Scale::decode): Deleted.
(WebCore::DisplayList::SetCTM::create): Deleted.
(WebCore::DisplayList::SetCTM::encode const): Deleted.
(WebCore::DisplayList::SetCTM::decode): Deleted.
(WebCore::DisplayList::ConcatenateCTM::create): Deleted.
(WebCore::DisplayList::ConcatenateCTM::encode const): Deleted.
(WebCore::DisplayList::ConcatenateCTM::decode): Deleted.
(WebCore::DisplayList::SetInlineFillGradient::create): Deleted.
(WebCore::DisplayList::SetInlineFillGradient::encode const): Deleted.
(WebCore::DisplayList::SetInlineFillGradient::decode): Deleted.
(WebCore::DisplayList::SetInlineFillColor::encode const): Deleted.
(WebCore::DisplayList::SetInlineFillColor::decode): Deleted.
(WebCore::DisplayList::SetInlineStrokeColor::encode const): Deleted.
(WebCore::DisplayList::SetInlineStrokeColor::decode): Deleted.
(WebCore::DisplayList::SetStrokeThickness::encode const): Deleted.
(WebCore::DisplayList::SetStrokeThickness::decode): Deleted.
(WebCore::DisplayList::SetState::create): Deleted.
(WebCore::DisplayList::SetLineCap::create): Deleted.
(WebCore::DisplayList::SetLineCap::encode const): Deleted.
(WebCore::DisplayList::SetLineCap::decode): Deleted.
(WebCore::DisplayList::SetLineDash::create): Deleted.
(WebCore::DisplayList::SetLineJoin::create): Deleted.
(WebCore::DisplayList::SetLineJoin::encode const): Deleted.
(WebCore::DisplayList::SetLineJoin::decode): Deleted.
(WebCore::DisplayList::SetMiterLimit::create): Deleted.
(WebCore::DisplayList::SetMiterLimit::encode const): Deleted.
(WebCore::DisplayList::SetMiterLimit::decode): Deleted.
(WebCore::DisplayList::ClearShadow::create): Deleted.
(WebCore::DisplayList::ClearShadow::encode const): Deleted.
(WebCore::DisplayList::ClearShadow::decode): Deleted.
(WebCore::DisplayList::Clip::create): Deleted.
(WebCore::DisplayList::Clip::encode const): Deleted.
(WebCore::DisplayList::Clip::decode): Deleted.
(WebCore::DisplayList::ClipOut::create): Deleted.
(WebCore::DisplayList::ClipOut::encode const): Deleted.
(WebCore::DisplayList::ClipOut::decode): Deleted.
(WebCore::DisplayList::ClipOutToPath::create): Deleted.
(WebCore::DisplayList::ClipPath::create): Deleted.
(WebCore::DisplayList::ClipToDrawingCommands::create): Deleted.
(WebCore::DisplayList::DrawGlyphs::create): Deleted.
(WebCore::DisplayList::DrawImage::create): Deleted.
(WebCore::DisplayList::DrawTiledImage::create): Deleted.
(WebCore::DisplayList::DrawTiledScaledImage::create): Deleted.
(WebCore::DisplayList::DrawImageBuffer::create): Deleted.
(WebCore::DisplayList::DrawNativeImage::create): Deleted.
(WebCore::DisplayList::DrawPattern::create): Deleted.
(WebCore::DisplayList::BeginTransparencyLayer::create): Deleted.
(WebCore::DisplayList::BeginTransparencyLayer::encode const): Deleted.
(WebCore::DisplayList::BeginTransparencyLayer::decode): Deleted.
(WebCore::DisplayList::EndTransparencyLayer::create): Deleted.
(WebCore::DisplayList::EndTransparencyLayer::encode const): Deleted.
(WebCore::DisplayList::EndTransparencyLayer::decode): Deleted.
(WebCore::DisplayList::DrawRect::create): Deleted.
(WebCore::DisplayList::DrawRect::encode const): Deleted.
(WebCore::DisplayList::DrawRect::decode): Deleted.
(WebCore::DisplayList::DrawLine::create): Deleted.
(WebCore::DisplayList::DrawLine::encode const): Deleted.
(WebCore::DisplayList::DrawLine::decode): Deleted.
(WebCore::DisplayList::DrawLinesForText::create): Deleted.
(WebCore::DisplayList::DrawDotsForDocumentMarker::create): Deleted.
(WebCore::DisplayList::DrawDotsForDocumentMarker::encode const): Deleted.
(WebCore::DisplayList::DrawDotsForDocumentMarker::decode): Deleted.
(WebCore::DisplayList::DrawEllipse::create): Deleted.
(WebCore::DisplayList::DrawEllipse::encode const): Deleted.
(WebCore::DisplayList::DrawEllipse::decode): Deleted.
(WebCore::DisplayList::DrawPath::create): Deleted.
(WebCore::DisplayList::DrawFocusRingPath::create): Deleted.
(WebCore::DisplayList::DrawFocusRingRects::create): Deleted.
(WebCore::DisplayList::FillRect::create): Deleted.
(WebCore::DisplayList::FillRect::encode const): Deleted.
(WebCore::DisplayList::FillRect::decode): Deleted.
(WebCore::DisplayList::FillRectWithColor::create): Deleted.
(WebCore::DisplayList::FillRectWithGradient::create): Deleted.
(WebCore::DisplayList::FillCompositedRect::create): Deleted.
(WebCore::DisplayList::FillRoundedRect::create): Deleted.
(WebCore::DisplayList::FillRectWithRoundedHole::create): Deleted.
(WebCore::DisplayList::FillInlinePath::create): Deleted.
(WebCore::DisplayList::FillInlinePath::encode const): Deleted.
(WebCore::DisplayList::FillInlinePath::decode): Deleted.
(WebCore::DisplayList::FillPath::create): Deleted.
(WebCore::DisplayList::FillEllipse::create): Deleted.
(WebCore::DisplayList::FillEllipse::encode const): Deleted.
(WebCore::DisplayList::FillEllipse::decode): Deleted.
(WebCore::DisplayList::PutImageData::create): Deleted.
(WebCore::DisplayList::PaintFrameForMedia::encode const): Deleted.
(WebCore::DisplayList::PaintFrameForMedia::decode): Deleted.
(WebCore::DisplayList::StrokeRect::create): Deleted.
(WebCore::DisplayList::StrokeRect::encode const): Deleted.
(WebCore::DisplayList::StrokeRect::decode): Deleted.
(WebCore::DisplayList::StrokeInlinePath::create): Deleted.
(WebCore::DisplayList::StrokeInlinePath::encode const): Deleted.
(WebCore::DisplayList::StrokeInlinePath::decode): Deleted.
(WebCore::DisplayList::StrokePath::create): Deleted.
(WebCore::DisplayList::StrokeEllipse::create): Deleted.
(WebCore::DisplayList::StrokeEllipse::encode const): Deleted.
(WebCore::DisplayList::StrokeEllipse::decode): Deleted.
(WebCore::DisplayList::ClearRect::create): Deleted.
(WebCore::DisplayList::ClearRect::encode const): Deleted.
(WebCore::DisplayList::ClearRect::decode): Deleted.
(WebCore::DisplayList::ApplyStrokePattern::create): Deleted.
(WebCore::DisplayList::ApplyStrokePattern::encode const): Deleted.
(WebCore::DisplayList::ApplyStrokePattern::decode): Deleted.
(WebCore::DisplayList::ApplyFillPattern::create): Deleted.
(WebCore::DisplayList::ApplyFillPattern::encode const): Deleted.
(WebCore::DisplayList::ApplyFillPattern::decode): Deleted.
(WebCore::DisplayList::ApplyDeviceScaleFactor::create): Deleted.
(WebCore::DisplayList::ApplyDeviceScaleFactor::encode const): Deleted.
(WebCore::DisplayList::ApplyDeviceScaleFactor::decode): Deleted.
(WebCore::DisplayList::Item::encode const): Deleted.
(WebCore::DisplayList::Item::decode): Deleted.
Delete the generic `Item::encode` and `Item::decode` methods, since only out-of-line display list items have
encode and decode functions now.
* platform/graphics/displaylists/DisplayListRecorder.cpp:
(WebCore::DisplayList::Recorder::putImageData):
(WebCore::DisplayList::Recorder::appendStateChangeItem):
(WebCore::DisplayList::Recorder::clearShadow):
(WebCore::DisplayList::Recorder::setLineCap):
(WebCore::DisplayList::Recorder::setLineDash):
(WebCore::DisplayList::Recorder::setLineJoin):
(WebCore::DisplayList::Recorder::setMiterLimit):
(WebCore::DisplayList::Recorder::drawImage):
(WebCore::DisplayList::Recorder::drawTiledImage):
(WebCore::DisplayList::Recorder::drawImageBuffer):
(WebCore::DisplayList::Recorder::drawNativeImage):
(WebCore::DisplayList::Recorder::drawPattern):
(WebCore::DisplayList::Recorder::save):
(WebCore::DisplayList::Recorder::restore):
(WebCore::DisplayList::Recorder::translate):
(WebCore::DisplayList::Recorder::rotate):
(WebCore::DisplayList::Recorder::scale):
(WebCore::DisplayList::Recorder::concatCTM):
(WebCore::DisplayList::Recorder::setCTM):
(WebCore::DisplayList::Recorder::beginTransparencyLayer):
(WebCore::DisplayList::Recorder::endTransparencyLayer):
(WebCore::DisplayList::Recorder::drawRect):
(WebCore::DisplayList::Recorder::drawLine):
(WebCore::DisplayList::Recorder::drawLinesForText):
(WebCore::DisplayList::Recorder::drawDotsForDocumentMarker):
(WebCore::DisplayList::Recorder::drawEllipse):
(WebCore::DisplayList::Recorder::drawPath):
(WebCore::DisplayList::Recorder::drawFocusRing):
(WebCore::DisplayList::Recorder::fillRect):
(WebCore::DisplayList::Recorder::fillRoundedRect):
(WebCore::DisplayList::Recorder::fillRectWithRoundedHole):
(WebCore::DisplayList::Recorder::fillPath):
(WebCore::DisplayList::Recorder::fillEllipse):
(WebCore::DisplayList::Recorder::strokeRect):
(WebCore::DisplayList::Recorder::strokePath):
(WebCore::DisplayList::Recorder::strokeEllipse):
(WebCore::DisplayList::Recorder::clearRect):
(WebCore::DisplayList::Recorder::applyStrokePattern):
(WebCore::DisplayList::Recorder::applyFillPattern):
(WebCore::DisplayList::Recorder::clip):
(WebCore::DisplayList::Recorder::clipOut):
(WebCore::DisplayList::Recorder::clipPath):
(WebCore::DisplayList::Recorder::clipToDrawingCommands):
(WebCore::DisplayList::Recorder::paintFrameForMedia):
(WebCore::DisplayList::Recorder::applyDeviceScaleFactor):
Change these methods that append display list items en masse, such that they go from this:
`m_displayList.append(Foo::create(arg1, arg2, arg3));`
...to this:
`m_displayList.append<Foo>(arg1, arg2, arg3);`
(WebCore::DisplayList::Recorder::extentFromLocalBounds const):
(WebCore::DisplayList::Recorder::appendItemAndUpdateExtent): Deleted.
(WebCore::DisplayList::Recorder::appendItem): Deleted.
(WebCore::DisplayList::Recorder::updateItemExtent const): Deleted.
Extents are now automatically updated (unless otherwise specified) for any drawing items that are appended.
* platform/graphics/displaylists/DisplayListRecorder.h:
(WebCore::DisplayList::Recorder::append):
* platform/graphics/displaylists/DisplayListReplayer.cpp:
(WebCore::DisplayList::Replayer::replay):
* platform/graphics/displaylists/DisplayListReplayer.h:
(WebCore::DisplayList::Replayer::Delegate::apply):
Source/WebKit:
Adjust for changes to display lists and display list items in WebCore (see Source/WebCore/ChangeLog for more
information). In particular, we implement the reading and writing client hooks consulted by ItemBuffer, and we
also add a temporary mechanism that allows RemoteRenderingBackendProxy (in the web process) to send display list
item data through shared memory to the RemoteRenderingBackend (in the GPU process). This temporary mechanism
does not attempt to make any reading or writing in shared memory concurrent between the GPU and web processes,
and exists only to make sure that rendering with the GPU process still works using these new display list items.
In the next patch, I will add a simple concurrent reader/writer model for display list processing between the
web and GPU processes, and (in doing so) revert most of the changes in `RemoteRenderingBackend` and
`RemoteRenderingBackendProxy` below.
See comments below for more detail.
* GPUProcess/graphics/RemoteImageBuffer.h:
(WebKit::RemoteImageBuffer::decodeAndCreate):
* GPUProcess/graphics/RemoteRenderingBackend.cpp:
(WebKit::RemoteRenderingBackend::applyResourceItem):
(WebKit::RemoteRenderingBackend::applyMediaItem):
Refactor these to take `WebCore::DisplayList::ItemHandle`.
(WebKit::RemoteRenderingBackend::applyDisplayList):
(WebKit::RemoteRenderingBackend::flushDisplayList):
(WebKit::RemoteRenderingBackend::flushDisplayListAndCommit):
(WebKit::RemoteRenderingBackend::didCreateSharedItemData):
* GPUProcess/graphics/RemoteRenderingBackend.h:
* GPUProcess/graphics/RemoteRenderingBackend.messages.in:
* Scripts/webkit/messages.py:
* Shared/SharedDisplayListHandle.cpp: Added.
(WebKit::SharedDisplayListHandle::SharedDisplayListHandle):
(WebKit::SharedDisplayListHandle::createDisplayList const):
* Shared/SharedDisplayListHandle.h: Added.
Add a WebKit2 helper class that represents display list data in shared memory that is propagated from the web
process to the GPU process. In the next patch, this class will be rewritten to support concurrent display list
reading and writing, with specialized subclasses in service of both the reader (i.e. the GPU process) and the
writer (i.e. the web process).
(WebKit::SharedDisplayListHandle::SharedDisplayListHandle):
(WebKit::SharedDisplayListHandle::encode const):
(WebKit::SharedDisplayListHandle::decode):
* Sources.txt:
* WebKit.xcodeproj/project.pbxproj:
* WebProcess/GPU/graphics/RemoteImageBufferProxy.h:
(WebKit::RemoteImageBufferProxy::RemoteImageBufferProxy):
* WebProcess/GPU/graphics/RemoteRenderingBackendProxy.cpp:
(WebKit::RemoteRenderingBackendProxy::flushDisplayList):
(WebKit::RemoteRenderingBackendProxy::flushDisplayListAndCommit):
(WebKit::RemoteRenderingBackendProxy::createItemBuffer):
* WebProcess/GPU/graphics/RemoteRenderingBackendProxy.h:
* WebProcess/GPU/graphics/RemoteRenderingBackendProxy.messages.in:
* WebProcess/GPU/graphics/RemoteResourceCacheProxy.cpp:
LayoutTests:
Rebaseline several existing (non-GPU-process) display list tests to account for a slight tweak in the format in
which display lists are dumped as text. More specifically, drawing item extents are now dumped after each
drawing item, rather than before.
* displaylists/canvas-display-list-expected.txt:
* displaylists/extent-includes-shadow-expected.txt:
* displaylists/extent-includes-transforms-expected.txt:
* displaylists/layer-dispay-list-expected.txt:
* displaylists/replay-skip-clipped-rect-expected.txt:
Canonical link: https://commits.webkit.org/231320@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@269525 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2020-11-06 18:54:52 +00:00
|
|
|
platform/graphics/displaylists/DisplayListItemBuffer.h
|
2021-04-06 22:53:04 +00:00
|
|
|
platform/graphics/displaylists/DisplayListItemBufferIdentifier.h
|
2020-11-03 21:08:38 +00:00
|
|
|
platform/graphics/displaylists/DisplayListItemType.h
|
2019-12-07 13:30:16 +00:00
|
|
|
platform/graphics/displaylists/DisplayListItems.h
|
2021-04-14 02:57:52 +00:00
|
|
|
platform/graphics/displaylists/DisplayListIterator.h
|
2020-03-11 05:44:47 +00:00
|
|
|
platform/graphics/displaylists/DisplayListRecorder.h
|
|
|
|
platform/graphics/displaylists/DisplayListReplayer.h
|
2021-04-06 00:22:02 +00:00
|
|
|
platform/graphics/displaylists/InMemoryDisplayList.h
|
2019-12-07 13:30:16 +00:00
|
|
|
|
2019-04-18 23:20:26 +00:00
|
|
|
platform/graphics/cv/ImageTransferSessionVT.h
|
|
|
|
|
|
|
|
platform/graphics/filters/FilterOperation.h
|
|
|
|
platform/graphics/filters/FilterOperations.h
|
|
|
|
|
|
|
|
platform/graphics/iso/ISOBox.h
|
|
|
|
platform/graphics/iso/ISOOriginalFormatBox.h
|
|
|
|
platform/graphics/iso/ISOProtectionSchemeInfoBox.h
|
|
|
|
platform/graphics/iso/ISOSchemeInformationBox.h
|
|
|
|
platform/graphics/iso/ISOSchemeTypeBox.h
|
|
|
|
platform/graphics/iso/ISOTrackEncryptionBox.h
|
2020-03-11 05:44:47 +00:00
|
|
|
platform/graphics/iso/ISOVTTCue.h
|
2019-04-18 23:20:26 +00:00
|
|
|
|
|
|
|
platform/graphics/libwpe/PlatformDisplayLibWPE.h
|
|
|
|
|
2020-01-06 18:52:42 +00:00
|
|
|
platform/graphics/opengl/ExtensionsGLOpenGL.h
|
|
|
|
platform/graphics/opengl/ExtensionsGLOpenGLCommon.h
|
|
|
|
platform/graphics/opengl/ExtensionsGLOpenGLES.h
|
|
|
|
platform/graphics/opengl/GraphicsContextGLOpenGL.h
|
|
|
|
platform/graphics/opengl/GraphicsContextGLOpenGLManager.h
|
2019-04-18 23:20:26 +00:00
|
|
|
platform/graphics/opengl/TemporaryOpenGLSetting.h
|
|
|
|
|
|
|
|
platform/graphics/opentype/OpenTypeMathData.h
|
|
|
|
platform/graphics/opentype/OpenTypeVerticalData.h
|
|
|
|
|
|
|
|
platform/graphics/transforms/AffineTransform.h
|
2020-10-05 18:42:12 +00:00
|
|
|
platform/graphics/transforms/RotateTransformOperation.h
|
2020-10-05 09:46:39 +00:00
|
|
|
platform/graphics/transforms/ScaleTransformOperation.h
|
2019-04-18 23:20:26 +00:00
|
|
|
platform/graphics/transforms/TransformOperation.h
|
|
|
|
platform/graphics/transforms/TransformOperations.h
|
|
|
|
platform/graphics/transforms/TransformationMatrix.h
|
2020-10-03 22:07:03 +00:00
|
|
|
platform/graphics/transforms/TranslateTransformOperation.h
|
2019-04-18 23:20:26 +00:00
|
|
|
|
2020-12-04 22:57:47 +00:00
|
|
|
platform/mediacapabilities/AudioConfiguration.h
|
|
|
|
platform/mediacapabilities/ColorGamut.h
|
|
|
|
platform/mediacapabilities/HdrMetadataType.h
|
|
|
|
platform/mediacapabilities/MediaConfiguration.h
|
|
|
|
platform/mediacapabilities/MediaDecodingConfiguration.h
|
|
|
|
platform/mediacapabilities/MediaDecodingType.h
|
|
|
|
platform/mediacapabilities/MediaEncodingConfiguration.h
|
|
|
|
platform/mediacapabilities/MediaEncodingType.h
|
|
|
|
platform/mediacapabilities/MediaEngineConfigurationFactory.h
|
|
|
|
platform/mediacapabilities/TransferFunction.h
|
|
|
|
platform/mediacapabilities/VideoConfiguration.h
|
|
|
|
|
2020-01-08 12:45:03 +00:00
|
|
|
platform/mediarecorder/MediaRecorderPrivate.h
|
|
|
|
|
2019-04-18 23:20:26 +00:00
|
|
|
platform/mediastream/CaptureDevice.h
|
|
|
|
platform/mediastream/CaptureDeviceManager.h
|
|
|
|
platform/mediastream/MediaConstraints.h
|
|
|
|
platform/mediastream/MediaStreamPrivate.h
|
|
|
|
platform/mediastream/MediaStreamRequest.h
|
|
|
|
platform/mediastream/MediaStreamTrackPrivate.h
|
2021-03-22 18:29:36 +00:00
|
|
|
platform/mediastream/RTCDataChannelHandler.h
|
|
|
|
platform/mediastream/RTCDataChannelHandlerClient.h
|
|
|
|
platform/mediastream/RTCDataChannelIdentifier.h
|
|
|
|
platform/mediastream/RTCDataChannelRemoteHandlerConnection.h
|
|
|
|
platform/mediastream/RTCDataChannelRemoteSourceConnection.h
|
|
|
|
platform/mediastream/RTCDataChannelState.h
|
|
|
|
platform/mediastream/RTCPriorityType.h
|
2019-04-18 23:20:26 +00:00
|
|
|
platform/mediastream/RealtimeMediaSource.h
|
|
|
|
platform/mediastream/RealtimeMediaSourceCapabilities.h
|
|
|
|
platform/mediastream/RealtimeMediaSourceCenter.h
|
|
|
|
platform/mediastream/RealtimeMediaSourceFactory.h
|
2020-12-09 08:28:16 +00:00
|
|
|
platform/mediastream/RealtimeMediaSourceIdentifier.h
|
2019-04-18 23:20:26 +00:00
|
|
|
platform/mediastream/RealtimeMediaSourceSettings.h
|
|
|
|
platform/mediastream/RealtimeMediaSourceSupportedConstraints.h
|
2019-06-20 18:55:32 +00:00
|
|
|
platform/mediastream/RealtimeVideoCaptureSource.h
|
2019-04-18 23:20:26 +00:00
|
|
|
platform/mediastream/RealtimeVideoSource.h
|
|
|
|
platform/mediastream/VideoPreset.h
|
|
|
|
platform/mediastream/WebAudioSourceProvider.h
|
|
|
|
|
2020-06-12 06:02:42 +00:00
|
|
|
platform/mediastream/libwebrtc/LibWebRTCEnumTraits.h
|
2019-04-18 23:20:26 +00:00
|
|
|
platform/mediastream/libwebrtc/LibWebRTCMacros.h
|
|
|
|
platform/mediastream/libwebrtc/LibWebRTCProvider.h
|
2019-10-02 09:41:59 +00:00
|
|
|
platform/mediastream/libwebrtc/LibWebRTCSocketIdentifier.h
|
2019-04-18 23:20:26 +00:00
|
|
|
|
|
|
|
platform/mock/DeviceOrientationClientMock.h
|
|
|
|
platform/mock/MediaPlaybackTargetMock.h
|
|
|
|
platform/mock/MediaPlaybackTargetPickerMock.h
|
|
|
|
platform/mock/MockMediaDevice.h
|
|
|
|
platform/mock/MockRealtimeAudioSource.h
|
|
|
|
platform/mock/MockRealtimeMediaSourceCenter.h
|
|
|
|
platform/mock/MockRealtimeVideoSource.h
|
|
|
|
|
|
|
|
platform/network/AuthenticationChallengeBase.h
|
|
|
|
platform/network/AuthenticationClient.h
|
|
|
|
platform/network/BlobData.h
|
|
|
|
platform/network/BlobDataFileReference.h
|
|
|
|
platform/network/BlobPart.h
|
|
|
|
platform/network/BlobRegistry.h
|
|
|
|
platform/network/BlobRegistryImpl.h
|
2019-07-01 08:09:46 +00:00
|
|
|
platform/network/BlobResourceHandle.h
|
2019-04-18 23:20:26 +00:00
|
|
|
platform/network/CacheValidation.h
|
2020-07-22 01:10:01 +00:00
|
|
|
platform/network/CertificateSummary.h
|
2019-04-18 23:20:26 +00:00
|
|
|
platform/network/CookieRequestHeaderFieldProxy.h
|
|
|
|
platform/network/CookieStorage.h
|
|
|
|
platform/network/Credential.h
|
|
|
|
platform/network/CredentialBase.h
|
|
|
|
platform/network/CredentialStorage.h
|
|
|
|
platform/network/DNS.h
|
|
|
|
platform/network/DNSResolveQueue.h
|
2021-01-28 12:40:45 +00:00
|
|
|
platform/network/DataURLDecoder.h
|
2019-04-18 23:20:26 +00:00
|
|
|
platform/network/FormData.h
|
2020-01-22 19:31:15 +00:00
|
|
|
platform/network/HTTPCookieAcceptPolicy.h
|
2019-04-18 23:20:26 +00:00
|
|
|
platform/network/HTTPHeaderMap.h
|
2020-11-06 00:16:56 +00:00
|
|
|
platform/network/HTTPHeaderValues.h
|
2019-04-18 23:20:26 +00:00
|
|
|
platform/network/HTTPParsers.h
|
|
|
|
platform/network/NetworkLoadInformation.h
|
|
|
|
platform/network/NetworkLoadMetrics.h
|
|
|
|
platform/network/NetworkStateNotifier.h
|
|
|
|
platform/network/NetworkStorageSession.h
|
|
|
|
platform/network/NetworkingContext.h
|
|
|
|
platform/network/ParsedContentRange.h
|
|
|
|
platform/network/ParsedContentType.h
|
2021-02-16 16:59:26 +00:00
|
|
|
platform/network/ParsedRequestRange.h
|
2019-04-18 23:20:26 +00:00
|
|
|
platform/network/ProtectionSpace.h
|
|
|
|
platform/network/ProtectionSpaceBase.h
|
|
|
|
platform/network/ProtectionSpaceHash.h
|
|
|
|
platform/network/ProxyServer.h
|
|
|
|
platform/network/ResourceErrorBase.h
|
|
|
|
platform/network/ResourceHandle.h
|
|
|
|
platform/network/ResourceHandleClient.h
|
|
|
|
platform/network/ResourceLoadPriority.h
|
|
|
|
platform/network/ResourceRequestBase.h
|
|
|
|
platform/network/ResourceResponseBase.h
|
|
|
|
platform/network/SameSiteInfo.h
|
2020-05-22 18:27:14 +00:00
|
|
|
platform/network/ShouldRelaxThirdPartyCookieBlocking.h
|
2019-04-18 23:20:26 +00:00
|
|
|
platform/network/SocketStreamError.h
|
|
|
|
platform/network/SocketStreamHandle.h
|
|
|
|
platform/network/SocketStreamHandleClient.h
|
|
|
|
platform/network/StorageSessionProvider.h
|
|
|
|
platform/network/StoredCredentialsPolicy.h
|
2020-01-16 21:02:11 +00:00
|
|
|
platform/network/SynchronousLoaderClient.h
|
2021-06-10 23:29:57 +00:00
|
|
|
platform/network/TimingAllowOrigin.h
|
2019-04-18 23:20:26 +00:00
|
|
|
|
|
|
|
platform/sql/SQLValue.h
|
|
|
|
platform/sql/SQLiteDatabase.h
|
|
|
|
platform/sql/SQLiteDatabaseTracker.h
|
|
|
|
platform/sql/SQLiteDatabaseTrackerClient.h
|
|
|
|
platform/sql/SQLiteFileSystem.h
|
|
|
|
platform/sql/SQLiteStatement.h
|
2020-05-05 03:19:56 +00:00
|
|
|
platform/sql/SQLiteStatementAutoResetScope.h
|
2019-04-18 23:20:26 +00:00
|
|
|
platform/sql/SQLiteTransaction.h
|
|
|
|
|
|
|
|
platform/text/BidiContext.h
|
2020-11-17 01:34:46 +00:00
|
|
|
platform/text/FontRenderingMode.h
|
2019-04-18 23:20:26 +00:00
|
|
|
platform/text/StringWithDirection.h
|
|
|
|
platform/text/TextBoundaries.h
|
|
|
|
platform/text/TextCheckerClient.h
|
|
|
|
platform/text/TextChecking.h
|
|
|
|
platform/text/TextCodec.h
|
2020-11-17 01:34:46 +00:00
|
|
|
platform/text/TextDirection.h
|
2019-04-18 23:20:26 +00:00
|
|
|
platform/text/TextEncoding.h
|
|
|
|
platform/text/TextEncodingRegistry.h
|
|
|
|
platform/text/TextFlags.h
|
|
|
|
platform/text/UnicodeBidi.h
|
|
|
|
platform/text/WritingMode.h
|
|
|
|
|
2021-03-23 00:05:29 +00:00
|
|
|
platform/xr/PlatformXR.h
|
|
|
|
|
2019-04-18 23:20:26 +00:00
|
|
|
plugins/PluginData.h
|
|
|
|
plugins/PluginInfoProvider.h
|
|
|
|
plugins/PluginViewBase.h
|
|
|
|
plugins/npapi.h
|
|
|
|
plugins/npfunctions.h
|
|
|
|
plugins/npruntime.h
|
|
|
|
plugins/nptypes.h
|
|
|
|
|
|
|
|
rendering/BreakLines.h
|
|
|
|
rendering/ClipPathOperation.h
|
|
|
|
rendering/ClipRect.h
|
|
|
|
rendering/EventRegion.h
|
|
|
|
rendering/FloatingObjects.h
|
|
|
|
rendering/GapRects.h
|
2020-02-10 19:32:19 +00:00
|
|
|
rendering/HighlightData.h
|
2019-04-18 23:20:26 +00:00
|
|
|
rendering/HitTestLocation.h
|
|
|
|
rendering/HitTestRequest.h
|
|
|
|
rendering/HitTestResult.h
|
2019-06-24 03:09:40 +00:00
|
|
|
rendering/LayerAncestorClippingStack.h
|
2019-04-18 23:20:26 +00:00
|
|
|
rendering/LayerFragment.h
|
2021-06-01 17:22:45 +00:00
|
|
|
rendering/LegacyInlineBox.h
|
2021-06-06 14:41:05 +00:00
|
|
|
rendering/LegacyInlineElementBox.h
|
2021-06-03 13:39:56 +00:00
|
|
|
rendering/LegacyInlineFlowBox.h
|
2021-06-05 12:19:10 +00:00
|
|
|
rendering/LegacyInlineTextBox.h
|
2021-06-01 13:58:23 +00:00
|
|
|
rendering/LegacyLineLayout.h
|
2021-06-02 16:20:15 +00:00
|
|
|
rendering/LegacyRootInlineBox.h
|
2019-04-18 23:20:26 +00:00
|
|
|
rendering/MarkedText.h
|
|
|
|
rendering/OrderIterator.h
|
|
|
|
rendering/OverlapTestRequestClient.h
|
|
|
|
rendering/Pagination.h
|
|
|
|
rendering/PaintFrequencyTracker.h
|
|
|
|
rendering/PaintInfo.h
|
|
|
|
rendering/PaintPhase.h
|
|
|
|
rendering/RenderAttachment.h
|
|
|
|
rendering/RenderBlock.h
|
|
|
|
rendering/RenderBlockFlow.h
|
|
|
|
rendering/RenderBox.h
|
|
|
|
rendering/RenderBoxModelObject.h
|
|
|
|
rendering/RenderElement.h
|
|
|
|
rendering/RenderEmbeddedObject.h
|
|
|
|
rendering/RenderFlexibleBox.h
|
|
|
|
rendering/RenderFrame.h
|
|
|
|
rendering/RenderFrameBase.h
|
|
|
|
rendering/RenderImage.h
|
|
|
|
rendering/RenderImageResource.h
|
|
|
|
rendering/RenderInline.h
|
|
|
|
rendering/RenderLayer.h
|
|
|
|
rendering/RenderLayerBacking.h
|
|
|
|
rendering/RenderLayerCompositor.h
|
|
|
|
rendering/RenderLayerModelObject.h
|
2020-12-30 23:01:47 +00:00
|
|
|
rendering/RenderLayerScrollableArea.h
|
2019-04-18 23:20:26 +00:00
|
|
|
rendering/RenderLineBoxList.h
|
|
|
|
rendering/RenderMedia.h
|
2021-02-23 01:43:27 +00:00
|
|
|
rendering/RenderModel.h
|
2019-04-18 23:20:26 +00:00
|
|
|
rendering/RenderObject.h
|
|
|
|
rendering/RenderObjectEnums.h
|
|
|
|
rendering/RenderOverflow.h
|
|
|
|
rendering/RenderPtr.h
|
|
|
|
rendering/RenderReplaced.h
|
|
|
|
rendering/RenderSelectionInfo.h
|
|
|
|
rendering/RenderText.h
|
|
|
|
rendering/RenderTextControl.h
|
|
|
|
rendering/RenderTextLineBoxes.h
|
|
|
|
rendering/RenderTheme.h
|
|
|
|
rendering/RenderThemeCocoa.h
|
|
|
|
rendering/RenderThemeIOS.h
|
|
|
|
rendering/RenderThemeWin.h
|
|
|
|
rendering/RenderTreeAsText.h
|
|
|
|
rendering/RenderVideo.h
|
|
|
|
rendering/RenderView.h
|
|
|
|
rendering/RenderWidget.h
|
|
|
|
rendering/ScrollAlignment.h
|
2020-10-14 20:42:23 +00:00
|
|
|
rendering/SelectionRangeData.h
|
2021-06-07 06:19:03 +00:00
|
|
|
rendering/TextBoxSelectableRange.h
|
2019-04-18 23:20:26 +00:00
|
|
|
|
|
|
|
rendering/line/LineWidth.h
|
|
|
|
rendering/line/TrailingObjects.h
|
|
|
|
|
|
|
|
rendering/shapes/Shape.h
|
|
|
|
rendering/shapes/ShapeOutsideInfo.h
|
|
|
|
|
|
|
|
rendering/style/BasicShapes.h
|
|
|
|
rendering/style/BorderData.h
|
|
|
|
rendering/style/BorderValue.h
|
|
|
|
rendering/style/CounterDirectives.h
|
|
|
|
rendering/style/FillLayer.h
|
|
|
|
rendering/style/GapLength.h
|
|
|
|
rendering/style/GridArea.h
|
|
|
|
rendering/style/GridLength.h
|
|
|
|
rendering/style/GridPosition.h
|
|
|
|
rendering/style/GridTrackSize.h
|
|
|
|
rendering/style/LineClampValue.h
|
|
|
|
rendering/style/NinePieceImage.h
|
|
|
|
rendering/style/OutlineValue.h
|
|
|
|
rendering/style/RenderStyle.h
|
|
|
|
rendering/style/RenderStyleConstants.h
|
|
|
|
rendering/style/SVGRenderStyle.h
|
|
|
|
rendering/style/SVGRenderStyleDefs.h
|
|
|
|
rendering/style/ShadowData.h
|
|
|
|
rendering/style/ShapeValue.h
|
|
|
|
rendering/style/StyleBackgroundData.h
|
|
|
|
rendering/style/StyleBoxData.h
|
|
|
|
rendering/style/StyleColorScheme.h
|
|
|
|
rendering/style/StyleContentAlignmentData.h
|
|
|
|
rendering/style/StyleCustomPropertyData.h
|
|
|
|
rendering/style/StyleDeprecatedFlexibleBoxData.h
|
|
|
|
rendering/style/StyleFilterData.h
|
|
|
|
rendering/style/StyleFlexibleBoxData.h
|
|
|
|
rendering/style/StyleGridData.h
|
|
|
|
rendering/style/StyleGridItemData.h
|
|
|
|
rendering/style/StyleImage.h
|
|
|
|
rendering/style/StyleInheritedData.h
|
|
|
|
rendering/style/StyleMarqueeData.h
|
|
|
|
rendering/style/StyleMultiColData.h
|
|
|
|
rendering/style/StyleRareInheritedData.h
|
|
|
|
rendering/style/StyleRareNonInheritedData.h
|
|
|
|
rendering/style/StyleReflection.h
|
2021-02-18 08:49:40 +00:00
|
|
|
rendering/style/StyleScrollSnapPoints.h
|
2019-04-18 23:20:26 +00:00
|
|
|
rendering/style/StyleSelfAlignmentData.h
|
|
|
|
rendering/style/StyleSurroundData.h
|
|
|
|
rendering/style/StyleTransformData.h
|
|
|
|
rendering/style/StyleVisualData.h
|
|
|
|
rendering/style/TextDecorationThickness.h
|
|
|
|
rendering/style/TextSizeAdjustment.h
|
|
|
|
rendering/style/TextUnderlineOffset.h
|
|
|
|
rendering/style/WillChangeData.h
|
|
|
|
|
|
|
|
replay/UserInputBridge.h
|
|
|
|
|
|
|
|
storage/Storage.h
|
|
|
|
storage/StorageArea.h
|
|
|
|
storage/StorageEventDispatcher.h
|
|
|
|
storage/StorageMap.h
|
|
|
|
storage/StorageNamespace.h
|
|
|
|
storage/StorageNamespaceProvider.h
|
|
|
|
storage/StorageQuotaManager.h
|
|
|
|
storage/StorageType.h
|
|
|
|
|
|
|
|
style/StyleChange.h
|
|
|
|
style/StyleScope.h
|
2021-05-03 17:08:39 +00:00
|
|
|
style/StyleScopeOrdinal.h
|
2020-05-23 05:53:52 +00:00
|
|
|
style/StyleUpdate.h
|
2019-04-18 23:20:26 +00:00
|
|
|
style/StyleValidity.h
|
2020-09-25 15:22:00 +00:00
|
|
|
style/Styleable.h
|
2019-04-18 23:20:26 +00:00
|
|
|
|
|
|
|
svg/SVGLengthContext.h
|
|
|
|
svg/SVGLengthValue.h
|
|
|
|
svg/SVGParserUtilities.h
|
|
|
|
svg/SVGParsingError.h
|
|
|
|
svg/SVGStringList.h
|
|
|
|
svg/SVGTests.h
|
|
|
|
svg/SVGUnitTypes.h
|
|
|
|
|
|
|
|
svg/graphics/SVGImageCache.h
|
|
|
|
|
|
|
|
svg/properties/SVGList.h
|
|
|
|
svg/properties/SVGPrimitiveList.h
|
|
|
|
svg/properties/SVGProperty.h
|
|
|
|
svg/properties/SVGPropertyOwner.h
|
|
|
|
svg/properties/SVGPropertyTraits.h
|
|
|
|
|
|
|
|
testing/MockGamepad.h
|
|
|
|
testing/MockGamepadProvider.h
|
|
|
|
|
2021-04-02 21:53:30 +00:00
|
|
|
workers/ScriptBuffer.h
|
2020-03-31 17:35:30 +00:00
|
|
|
workers/WorkerAnimationController.h
|
2019-04-18 23:20:26 +00:00
|
|
|
workers/WorkerDebuggerProxy.h
|
2021-04-22 18:44:49 +00:00
|
|
|
workers/WorkerFontLoadRequest.h
|
2019-04-18 23:20:26 +00:00
|
|
|
workers/WorkerLoaderProxy.h
|
2020-10-06 17:18:28 +00:00
|
|
|
workers/WorkerOrWorkletThread.h
|
2019-04-18 23:20:26 +00:00
|
|
|
workers/WorkerRunLoop.h
|
|
|
|
workers/WorkerScriptLoader.h
|
|
|
|
workers/WorkerScriptLoaderClient.h
|
|
|
|
workers/WorkerThread.h
|
2020-11-18 20:22:16 +00:00
|
|
|
workers/WorkerThreadType.h
|
2019-04-18 23:20:26 +00:00
|
|
|
workers/WorkerType.h
|
|
|
|
|
|
|
|
workers/service/SWClientConnection.h
|
|
|
|
workers/service/ServiceWorkerClientData.h
|
|
|
|
workers/service/ServiceWorkerClientIdentifier.h
|
|
|
|
workers/service/ServiceWorkerClientQueryOptions.h
|
|
|
|
workers/service/ServiceWorkerClientType.h
|
|
|
|
workers/service/ServiceWorkerContextData.h
|
|
|
|
workers/service/ServiceWorkerData.h
|
|
|
|
workers/service/ServiceWorkerFetchResult.h
|
|
|
|
workers/service/ServiceWorkerIdentifier.h
|
|
|
|
workers/service/ServiceWorkerJob.h
|
|
|
|
workers/service/ServiceWorkerJobClient.h
|
|
|
|
workers/service/ServiceWorkerJobData.h
|
|
|
|
workers/service/ServiceWorkerJobDataIdentifier.h
|
|
|
|
workers/service/ServiceWorkerJobType.h
|
|
|
|
workers/service/ServiceWorkerProvider.h
|
|
|
|
workers/service/ServiceWorkerRegistrationData.h
|
|
|
|
workers/service/ServiceWorkerRegistrationKey.h
|
|
|
|
workers/service/ServiceWorkerRegistrationOptions.h
|
|
|
|
workers/service/ServiceWorkerTypes.h
|
|
|
|
workers/service/ServiceWorkerUpdateViaCache.h
|
|
|
|
|
|
|
|
workers/service/context/SWContextManager.h
|
|
|
|
workers/service/context/ServiceWorkerDebuggable.h
|
|
|
|
workers/service/context/ServiceWorkerFetch.h
|
|
|
|
workers/service/context/ServiceWorkerInspectorProxy.h
|
|
|
|
workers/service/context/ServiceWorkerThread.h
|
|
|
|
workers/service/context/ServiceWorkerThreadProxy.h
|
|
|
|
|
|
|
|
workers/service/server/RegistrationDatabase.h
|
|
|
|
workers/service/server/SWOriginStore.h
|
|
|
|
workers/service/server/SWServer.h
|
|
|
|
workers/service/server/SWServerRegistration.h
|
|
|
|
workers/service/server/SWServerToContextConnection.h
|
|
|
|
workers/service/server/SWServerWorker.h
|
|
|
|
|
2020-08-07 19:27:56 +00:00
|
|
|
xml/CustomXPathNSResolver.h
|
2019-04-18 23:20:26 +00:00
|
|
|
xml/XPathExpression.h
|
|
|
|
xml/XPathNSResolver.h
|
|
|
|
xml/XPathNodeSet.h
|
|
|
|
xml/XPathResult.h
|
|
|
|
xml/XPathValue.h
|
|
|
|
|
|
|
|
${WebCore_DERIVED_SOURCES_DIR}/CSSPropertyNames.h
|
|
|
|
${WebCore_DERIVED_SOURCES_DIR}/CSSValueKeywords.h
|
|
|
|
${WebCore_DERIVED_SOURCES_DIR}/EventInterfaces.h
|
|
|
|
${WebCore_DERIVED_SOURCES_DIR}/EventTargetInterfaces.h
|
|
|
|
${WebCore_DERIVED_SOURCES_DIR}/HTMLElementTypeHelpers.h
|
|
|
|
${WebCore_DERIVED_SOURCES_DIR}/HTMLNames.h
|
|
|
|
${WebCore_DERIVED_SOURCES_DIR}/HTTPHeaderNames.h
|
2020-10-17 20:33:53 +00:00
|
|
|
${WebCore_DERIVED_SOURCES_DIR}/JSAbstractRange.h
|
2019-04-18 23:20:26 +00:00
|
|
|
${WebCore_DERIVED_SOURCES_DIR}/JSBlob.h
|
|
|
|
${WebCore_DERIVED_SOURCES_DIR}/JSCSSRule.h
|
|
|
|
${WebCore_DERIVED_SOURCES_DIR}/JSCSSRuleList.h
|
|
|
|
${WebCore_DERIVED_SOURCES_DIR}/JSCSSStyleDeclaration.h
|
|
|
|
${WebCore_DERIVED_SOURCES_DIR}/JSDOMBindingInternalsBuiltins.h
|
|
|
|
${WebCore_DERIVED_SOURCES_DIR}/JSDOMImplementation.h
|
|
|
|
${WebCore_DERIVED_SOURCES_DIR}/JSDOMWindow.h
|
|
|
|
${WebCore_DERIVED_SOURCES_DIR}/JSDeprecatedCSSOMCounter.h
|
|
|
|
${WebCore_DERIVED_SOURCES_DIR}/JSDeprecatedCSSOMRGBColor.h
|
|
|
|
${WebCore_DERIVED_SOURCES_DIR}/JSDeprecatedCSSOMRect.h
|
|
|
|
${WebCore_DERIVED_SOURCES_DIR}/JSDeprecatedCSSOMValue.h
|
|
|
|
${WebCore_DERIVED_SOURCES_DIR}/JSDocument.h
|
|
|
|
${WebCore_DERIVED_SOURCES_DIR}/JSElement.h
|
|
|
|
${WebCore_DERIVED_SOURCES_DIR}/JSEvent.h
|
|
|
|
${WebCore_DERIVED_SOURCES_DIR}/JSEventTarget.h
|
|
|
|
${WebCore_DERIVED_SOURCES_DIR}/JSFile.h
|
|
|
|
${WebCore_DERIVED_SOURCES_DIR}/JSHTMLCollection.h
|
|
|
|
${WebCore_DERIVED_SOURCES_DIR}/JSHTMLElement.h
|
|
|
|
${WebCore_DERIVED_SOURCES_DIR}/JSHTMLOptionsCollection.h
|
|
|
|
${WebCore_DERIVED_SOURCES_DIR}/JSMediaList.h
|
|
|
|
${WebCore_DERIVED_SOURCES_DIR}/JSNamedNodeMap.h
|
|
|
|
${WebCore_DERIVED_SOURCES_DIR}/JSNode.h
|
|
|
|
${WebCore_DERIVED_SOURCES_DIR}/JSNodeIterator.h
|
|
|
|
${WebCore_DERIVED_SOURCES_DIR}/JSNodeList.h
|
|
|
|
${WebCore_DERIVED_SOURCES_DIR}/JSNotification.h
|
|
|
|
${WebCore_DERIVED_SOURCES_DIR}/JSRange.h
|
|
|
|
${WebCore_DERIVED_SOURCES_DIR}/JSReadableStreamDefaultController.h
|
|
|
|
${WebCore_DERIVED_SOURCES_DIR}/JSStyleSheet.h
|
|
|
|
${WebCore_DERIVED_SOURCES_DIR}/JSStyleSheetList.h
|
|
|
|
${WebCore_DERIVED_SOURCES_DIR}/JSTreeWalker.h
|
|
|
|
${WebCore_DERIVED_SOURCES_DIR}/JSXPathExpression.h
|
|
|
|
${WebCore_DERIVED_SOURCES_DIR}/JSXPathResult.h
|
|
|
|
${WebCore_DERIVED_SOURCES_DIR}/ReadableByteStreamInternalsBuiltins.h
|
|
|
|
${WebCore_DERIVED_SOURCES_DIR}/ReadableStreamInternalsBuiltins.h
|
|
|
|
${WebCore_DERIVED_SOURCES_DIR}/Settings.h
|
|
|
|
${WebCore_DERIVED_SOURCES_DIR}/StreamInternalsBuiltins.h
|
2020-08-27 10:00:20 +00:00
|
|
|
${WebCore_DERIVED_SOURCES_DIR}/TransformStreamInternalsBuiltins.h
|
2019-04-18 23:20:26 +00:00
|
|
|
${WebCore_DERIVED_SOURCES_DIR}/WebCoreJSBuiltinInternals.h
|
|
|
|
${WebCore_DERIVED_SOURCES_DIR}/WebKitFontFamilyNames.h
|
|
|
|
${WebCore_DERIVED_SOURCES_DIR}/WritableStreamInternalsBuiltins.h
|
|
|
|
)
|
2020-07-10 14:57:57 +00:00
|
|
|
|
|
|
|
if (ENABLE_OPENCDM)
|
|
|
|
list(APPEND WebCore_PRIVATE_FRAMEWORK_HEADERS platform/encryptedmedia/CDMOpenCDMTypes.h)
|
|
|
|
endif ()
|