Timeline



Dec 2, 2019:

11:55 PM Changeset in webkit [253026] by sbarati@apple.com
  • 4 edits
    1 add in trunk

PropertySlot should not have Customs have a PropertyOffset of zero
https://bugs.webkit.org/show_bug.cgi?id=204566
<rdar://problem/57466781>

Reviewed by Keith Miller.

JSTests:

  • stress/cacheable-custom-accessor-should-not-have-property-offset.js: Added.

Source/JavaScriptCore:

We used to say that PropertyOffset of a cacheable custom was always zero. We
did this because we were using "invalidOffset" to indicate things aren't
cacheable. This patch refactors PropertySlot to not look at PropertyOffset
for cacheability, but instead just uses the cacheability bit. With that
change, we now say that customs always have the invalid PropertyOffset. This
fixes a bug where we used to watch for property changes at the offset inside
an AccessCase. We were doing this for the zero property offset for all
customs. This could trigger a crash inside startWatchingPropertyForReplacements
because the prototype Structure was a dictionary. We allow dictionaries to
be property holders of customs as long as the property is a custom and has
DontDelete property attribute, since DontDelete proves the custom will never
change.

  • llint/LLIntSlowPaths.cpp:

(JSC::LLInt::LLINT_SLOW_PATH_DECL):

  • runtime/PropertySlot.h:

(JSC::PropertySlot::PropertySlot):
(JSC::PropertySlot::isCacheable const):
(JSC::PropertySlot::setValue):
(JSC::PropertySlot::setCustom):
(JSC::PropertySlot::setCacheableCustom):
(JSC::PropertySlot::setCustomGetterSetter):
(JSC::PropertySlot::setGetterSlot):
(JSC::PropertySlot::setCacheableGetterSlot):
(JSC::PropertySlot::setUndefined):

10:53 PM Changeset in webkit [253025] by sihui_liu@apple.com
  • 36 edits
    2 deletes in trunk

Cross-thread version StorageQuotaManager
https://bugs.webkit.org/show_bug.cgi?id=203971
<rdar://problem/57290349>

Reviewed by Chris Dumez.

Source/WebCore:

Implement a lock-based StorageQuotaManager so that quota check can be done on different threads.
If space request is made on a background thread, it needs to hold a lock until it is finished, so no request
from different threads can be performed at the same time.
If space request is made on the main thread, we will dispatch it to a background thread and schedule a calllback
to the main thread when result is available, so the main thread will not be blocked.

Covered by existing quota related tests.

  • Headers.cmake:
  • Modules/indexeddb/server/IDBServer.cpp:

(WebCore::IDBServer::IDBServer::create):
(WebCore::IDBServer::IDBServer::IDBServer):
(WebCore::IDBServer::IDBServer::didPerformCloseAndDeleteDatabases):
(WebCore::IDBServer::IDBServer::requestSpace):
(WebCore::IDBServer::IDBServer::diskUsage):
(WebCore::IDBServer::IDBServer::QuotaUser::QuotaUser): Deleted.
(WebCore::IDBServer::IDBServer::QuotaUser::~QuotaUser): Deleted.
(WebCore::IDBServer::IDBServer::QuotaUser::resetSpaceUsed): Deleted.
(WebCore::IDBServer::IDBServer::QuotaUser::computeSpaceUsed): Deleted.
(WebCore::IDBServer::IDBServer::QuotaUser::increaseSpaceUsed): Deleted.
(WebCore::IDBServer::IDBServer::QuotaUser::decreaseSpaceUsed): Deleted.
(WebCore::IDBServer::IDBServer::QuotaUser::whenInitialized): Deleted.
(WebCore::IDBServer::IDBServer::QuotaUser::initializeSpaceUsed): Deleted.
(WebCore::IDBServer::IDBServer::ensureQuotaUser): Deleted.
(WebCore::IDBServer::IDBServer::startComputingSpaceUsedForOrigin): Deleted.
(WebCore::IDBServer::IDBServer::computeSpaceUsedForOrigin): Deleted.
(WebCore::IDBServer::IDBServer::finishComputingSpaceUsedForOrigin): Deleted.
(WebCore::IDBServer::IDBServer::resetSpaceUsed): Deleted.
(WebCore::IDBServer::IDBServer::increaseSpaceUsed): Deleted.
(WebCore::IDBServer::IDBServer::decreaseSpaceUsed): Deleted.
(WebCore::IDBServer::IDBServer::increasePotentialSpaceUsed): Deleted.
(WebCore::IDBServer::IDBServer::decreasePotentialSpaceUsed): Deleted.

  • Modules/indexeddb/server/IDBServer.h:

(WebCore::IDBServer::IDBServer::initializeQuotaUser): Deleted.
(): Deleted.

  • Modules/indexeddb/server/UniqueIDBDatabase.cpp:

(WebCore::IDBServer::UniqueIDBDatabase::performCurrentOpenOperation):
(WebCore::IDBServer::UniqueIDBDatabase::openBackingStore):
(WebCore::IDBServer::UniqueIDBDatabase::didOpenBackingStore):
(WebCore::IDBServer::UniqueIDBDatabase::createObjectStore):
(WebCore::IDBServer::UniqueIDBDatabase::performCreateObjectStore):
(WebCore::IDBServer::UniqueIDBDatabase::didPerformCreateObjectStore):
(WebCore::IDBServer::UniqueIDBDatabase::deleteObjectStore):
(WebCore::IDBServer::UniqueIDBDatabase::renameObjectStore):
(WebCore::IDBServer::UniqueIDBDatabase::performRenameObjectStore):
(WebCore::IDBServer::UniqueIDBDatabase::didPerformRenameObjectStore):
(WebCore::IDBServer::UniqueIDBDatabase::clearObjectStore):
(WebCore::IDBServer::UniqueIDBDatabase::createIndex):
(WebCore::IDBServer::UniqueIDBDatabase::performCreateIndex):
(WebCore::IDBServer::UniqueIDBDatabase::didPerformCreateIndex):
(WebCore::IDBServer::UniqueIDBDatabase::deleteIndex):
(WebCore::IDBServer::UniqueIDBDatabase::renameIndex):
(WebCore::IDBServer::UniqueIDBDatabase::performRenameIndex):
(WebCore::IDBServer::UniqueIDBDatabase::didPerformRenameIndex):
(WebCore::IDBServer::UniqueIDBDatabase::putOrAdd):
(WebCore::IDBServer::UniqueIDBDatabase::performPutOrAdd):
(WebCore::IDBServer::UniqueIDBDatabase::didPerformPutOrAdd):
(WebCore::IDBServer::UniqueIDBDatabase::getRecord):
(WebCore::IDBServer::UniqueIDBDatabase::getAllRecords):
(WebCore::IDBServer::UniqueIDBDatabase::performGetRecord):
(WebCore::IDBServer::UniqueIDBDatabase::performGetAllRecords):
(WebCore::IDBServer::UniqueIDBDatabase::getCount):
(WebCore::IDBServer::UniqueIDBDatabase::deleteRecord):
(WebCore::IDBServer::UniqueIDBDatabase::openCursor):
(WebCore::IDBServer::UniqueIDBDatabase::iterateCursor):
(WebCore::IDBServer::UniqueIDBDatabase::commitTransaction):
(WebCore::IDBServer::UniqueIDBDatabase::abortTransaction):
(WebCore::IDBServer::UniqueIDBDatabase::requestSpace): Deleted.
(WebCore::IDBServer::UniqueIDBDatabase::waitForRequestSpaceCompletion): Deleted.
(WebCore::IDBServer::UniqueIDBDatabase::startSpaceIncreaseTask): Deleted.
(WebCore::IDBServer::UniqueIDBDatabase::finishSpaceIncreaseTask): Deleted.
(WebCore::IDBServer::UniqueIDBDatabase::createObjectStoreAfterQuotaCheck): Deleted.
(WebCore::IDBServer::UniqueIDBDatabase::deleteObjectStoreAfterQuotaCheck): Deleted.
(WebCore::IDBServer::UniqueIDBDatabase::renameObjectStoreAfterQuotaCheck): Deleted.
(WebCore::IDBServer::UniqueIDBDatabase::clearObjectStoreAfetQuotaCheck): Deleted.
(WebCore::IDBServer::UniqueIDBDatabase::createIndexAfterQuotaCheck): Deleted.
(WebCore::IDBServer::UniqueIDBDatabase::deleteIndexAfterQuotaCheck): Deleted.
(WebCore::IDBServer::UniqueIDBDatabase::renameIndexAfterQuotaCheck): Deleted.
(WebCore::IDBServer::UniqueIDBDatabase::putOrAddAfterQuotaCheck): Deleted.
(WebCore::IDBServer::UniqueIDBDatabase::getRecordAfterQuotaCheck): Deleted.
(WebCore::IDBServer::UniqueIDBDatabase::getAllRecordsAfterQuotaCheck): Deleted.
(WebCore::IDBServer::UniqueIDBDatabase::getCountAfterQuotaCheck): Deleted.
(WebCore::IDBServer::UniqueIDBDatabase::deleteRecordAfterQuotaCheck): Deleted.
(WebCore::IDBServer::UniqueIDBDatabase::openCursorAfterQuotaCheck): Deleted.
(WebCore::IDBServer::UniqueIDBDatabase::iterateCursorAfterQuotaCheck): Deleted.
(WebCore::IDBServer::UniqueIDBDatabase::commitTransactionAfterQuotaCheck): Deleted.

  • Modules/indexeddb/server/UniqueIDBDatabase.h:
  • Modules/indexeddb/server/UniqueIDBDatabaseConnection.cpp:

(WebCore::IDBServer::UniqueIDBDatabaseConnection::abortTransactionWithoutCallback):

  • Modules/indexeddb/server/UniqueIDBDatabaseTransaction.cpp:

(WebCore::IDBServer::UniqueIDBDatabaseTransaction::abort):
(WebCore::IDBServer::UniqueIDBDatabaseTransaction::putOrAdd):
(WebCore::IDBServer::UniqueIDBDatabaseTransaction::getRecord):
(WebCore::IDBServer::UniqueIDBDatabaseTransaction::getAllRecords):
(WebCore::IDBServer::UniqueIDBDatabaseTransaction::getCount):
(WebCore::IDBServer::UniqueIDBDatabaseTransaction::deleteRecord):
(WebCore::IDBServer::UniqueIDBDatabaseTransaction::openCursor):
(WebCore::IDBServer::UniqueIDBDatabaseTransaction::iterateCursor):

  • Modules/indexeddb/shared/InProcessIDBServer.cpp:

(WebCore::InProcessIDBServer::quotaManager):
(WebCore::storageQuotaManagerSpaceRequester):
(WebCore::InProcessIDBServer::InProcessIDBServer):
(WebCore::storageQuotaManagerGetter): Deleted.

  • Modules/indexeddb/shared/InProcessIDBServer.h:
  • WebCore.xcodeproj/project.pbxproj:
  • storage/StorageQuotaManager.cpp:

(WebCore::StorageQuotaManager::create):
(WebCore::StorageQuotaManager::StorageQuotaManager):
(WebCore::StorageQuotaManager::requestSpaceOnMainThread):
(WebCore::StorageQuotaManager::requestSpaceOnBackgroundThread):
(WebCore::StorageQuotaManager::tryGrantRequest):
(WebCore::StorageQuotaManager::updateQuotaBasedOnUsage):
(WebCore::StorageQuotaManager::resetQuotaUpdatedBasedOnUsageForTesting):
(WebCore::StorageQuotaManager::resetQuotaForTesting):
(WebCore::StorageQuotaManager::~StorageQuotaManager): Deleted.
(WebCore::StorageQuotaManager::spaceUsage const): Deleted.
(WebCore::StorageQuotaManager::updateQuotaBasedOnSpaceUsage): Deleted.
(WebCore::StorageQuotaManager::initializeUsersIfNeeded): Deleted.
(WebCore::StorageQuotaManager::askUserToInitialize): Deleted.
(WebCore::StorageQuotaManager::addUser): Deleted.
(WebCore::StorageQuotaManager::shouldAskForMoreSpace const): Deleted.
(WebCore::StorageQuotaManager::removeUser): Deleted.
(WebCore::StorageQuotaManager::requestSpace): Deleted.
(WebCore::StorageQuotaManager::askForMoreSpace): Deleted.
(WebCore::StorageQuotaManager::processPendingRequests): Deleted.

  • storage/StorageQuotaManager.h:

(WebCore::StorageQuotaManager::defaultThirdPartyQuotaFromPerOriginQuota):
(WebCore::StorageQuotaManager::StorageQuotaManager): Deleted.
(WebCore::StorageQuotaManager::resetQuota): Deleted.
(WebCore::StorageQuotaManager::state const): Deleted.

  • storage/StorageQuotaUser.h: Removed.

Source/WebKit:

  • NetworkProcess/NetworkProcess.cpp: Introduce class SessionStorageQuotaManager to manage all

StorageQuotaManagers of the same session.
(WebKit::NetworkProcess::initializeNetworkProcess):
(WebKit::NetworkProcess::addWebsiteDataStore):
(WebKit::NetworkProcess::addSessionStorageQuotaManager):
(WebKit::NetworkProcess::removeSessionStorageQuotaManager):
(WebKit::NetworkProcess::destroySession):
(WebKit::NetworkProcess::deleteWebsiteData):
(WebKit::NetworkProcess::deleteWebsiteDataForOrigins):
(WebKit::NetworkProcess::createIDBServer):
(WebKit::NetworkProcess::addIndexedDatabaseSession):
(WebKit::NetworkProcess::setSessionStorageQuotaManagerIDBRootPath):
(WebKit::NetworkProcess::updateQuotaBasedOnSpaceUsageForTesting):
(WebKit::NetworkProcess::resetQuota):
(WebKit::NetworkProcess::storageQuotaManager):
(WebKit::NetworkProcess::initializeStorageQuota): Deleted.
(WebKit::NetworkProcess::clearStorageQuota): Deleted.
(): Deleted.
(WebKit::NetworkProcess::initializeQuotaUsers): Deleted.

  • NetworkProcess/NetworkProcess.h:

(WebKit::NetworkProcess::SessionStorageQuotaManager::SessionStorageQuotaManager):
(WebKit::NetworkProcess::SessionStorageQuotaManager::defaultQuota const):
(WebKit::NetworkProcess::SessionStorageQuotaManager::ensureOriginStorageQuotaManager):
(WebKit::NetworkProcess::SessionStorageQuotaManager::existingStorageQuotaManagers):
(WebKit::NetworkProcess::SessionStorageQuotaManager::cacheRootPath const):
(WebKit::NetworkProcess::SessionStorageQuotaManager::setIDBRootPath):
(WebKit::NetworkProcess::SessionStorageQuotaManager::idbRootPath const):
(WebKit::NetworkProcess::StorageQuotaManagers::defaultQuota const): Deleted.
(WebKit::NetworkProcess::StorageQuotaManagers::setDefaultQuotas): Deleted.
(WebKit::NetworkProcess::StorageQuotaManagers::managersPerOrigin): Deleted.

  • NetworkProcess/NetworkProcess.messages.in:
  • NetworkProcess/cache/CacheStorageEngine.cpp:

(WebKit::CacheStorage::getDirectorySize):
(WebKit::CacheStorage::Engine::diskUsage): static function to get the disk usage of CacheStorage given
CacheStorage root directory.
(WebKit::CacheStorage::Engine::requestSpace):
(WebKit::CacheStorage::Engine::readCachesFromDisk):
(WebKit::CacheStorage::Engine::writeSizeFile):
(WebKit::CacheStorage::Engine::readSizeFile):
(WebKit::CacheStorage::Engine::initializeQuotaUser): Deleted.

  • NetworkProcess/cache/CacheStorageEngine.h:
  • NetworkProcess/cache/CacheStorageEngineCache.cpp:

(WebKit::CacheStorage::Cache::put):
(WebKit::CacheStorage::Cache::remove):

  • NetworkProcess/cache/CacheStorageEngineCaches.cpp:

(WebKit::CacheStorage::Caches::create):
(WebKit::CacheStorage::Caches::Caches):
(WebKit::CacheStorage::Caches::~Caches):
(WebKit::CacheStorage::Caches::updateSizeFile):
(WebKit::CacheStorage::Caches::initializeSize):
(WebKit::CacheStorage::Caches::clear):
(WebKit::CacheStorage::Caches::requestSpace):
(WebKit::CacheStorage::Caches::writeRecord):
(WebKit::CacheStorage::Caches::removeRecord):
(WebKit::CacheStorage::Caches::whenInitialized): Deleted.
(WebKit::CacheStorage::Caches::resetSpaceUsed): Deleted.

  • NetworkProcess/cache/CacheStorageEngineCaches.h:
  • Shared/WebsiteDataStoreParameters.cpp:

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

  • Shared/WebsiteDataStoreParameters.h: Add a cacheStorageDirectory parameter so we know the direcotry of

CacheStorage when we start using WebsiteDataStore.

  • UIProcess/API/C/WKWebsiteDataStoreRef.cpp:

(WKWebsiteDataStoreResetQuota):

  • UIProcess/API/C/WKWebsiteDataStoreRef.h: Add a C API for reseting quota in TestRunner.
  • UIProcess/Network/NetworkProcessProxy.cpp:

(WebKit::NetworkProcessProxy::resetQuota):

  • UIProcess/Network/NetworkProcessProxy.h:
  • UIProcess/WebProcessPool.cpp:

(WebKit::WebProcessPool::ensureNetworkProcess):

  • UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm:

(WebKit::WebsiteDataStore::parameters):

  • UIProcess/WebsiteData/WebsiteDataStore.cpp:

(WebKit::WebsiteDataStore::parameters):
(WebKit::WebsiteDataStore::resetQuota):

  • UIProcess/WebsiteData/WebsiteDataStore.h:

Tools:

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/WebCore/StorageQuotaManager.cpp: Removed as we have a different StorageQuotaManager

implementation now.

  • WebKitTestRunner/TestController.cpp: reset StorageQuotaManager's quota between tests.

(WTR::TestController::resetStateToConsistentValues):
(WTR::TestController::resetQuota):

  • WebKitTestRunner/TestController.h:
9:07 PM Changeset in webkit [253024] by sbarati@apple.com
  • 2 edits in trunk/Tools

run-jsc should exit with the same signal or exit status that the jsc shell does
https://bugs.webkit.org/show_bug.cgi?id=204778

Reviewed by Keith Miller.

  • Scripts/run-jsc:
6:25 PM Changeset in webkit [253023] by Alan Coon
  • 13 edits
    2 adds in tags/Safari-609.1.11

Cherry-pick r252935. rdar://problem/45311541

Element jumps to wrong position after perspective change on ancestor
https://bugs.webkit.org/show_bug.cgi?id=202505
<rdar://problem/55930710>

Reviewed by Antti Koivisto.
Source/WebCore:

This modifies the fix in r252879 to be better-performing and to avoid a new call site for updateLayerPositions*.

Style can change in a way that creates or destroys RenderLayers, but does not result in a layout; this can happen
with changes of properties like opacity or perspective. When this happens, something needs to trigger a call to
RenderLayer::updateLayerPositions() on the root of the changed subtree. This is best done after the style update,
to avoid multiple updateLayerPositions traversals.

Implement this by storing on RenderView the rootmost changed layer, and having FrameView::styleDidChange()
call updateLayerPositionsAfterStyleChange() if we're after a style change with no pending layout.

Test: compositing/geometry/layer-position-after-removing-perspective.html

  • page/FrameView.cpp: (WebCore::FrameView::styleDidChange):
  • page/FrameView.h:
  • platform/ScrollView.h:
  • rendering/RenderElement.cpp: (WebCore::RenderElement::didAttachChild):
  • rendering/RenderLayer.cpp: (WebCore::RenderLayer::insertOnlyThisLayer): (WebCore::RenderLayer::removeOnlyThisLayer): (WebCore::findCommonAncestor): (WebCore::RenderLayer::commonAncestorWithLayer const):
  • rendering/RenderLayer.h:
  • rendering/RenderLayerModelObject.cpp: (WebCore::RenderLayerModelObject::createLayer): (WebCore::RenderLayerModelObject::styleDidChange):
  • rendering/RenderView.cpp: (WebCore::RenderView::layerChildrenChangedDuringStyleChange): (WebCore::RenderView::takeStyleChangeLayerTreeMutationRoot):
  • rendering/RenderView.h:

LayoutTests:

  • compositing/geometry/layer-position-after-removing-perspective-expected.html: Added.
  • compositing/geometry/layer-position-after-removing-perspective.html: Added.
  • css3/blending/repaint/blend-mode-isolate-stacking-context-expected.txt: Rebaselined.

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

6:25 PM Changeset in webkit [253022] by Alan Coon
  • 3 edits
    2 adds in tags/Safari-609.1.11

Cherry-pick r252879. rdar://problem/45311541

[Web Animations] Layout of children of element with forwards-filling opacity animation may be incorrect after removal
https://bugs.webkit.org/show_bug.cgi?id=204602
<rdar://problem/45311541>

Reviewed by Antti Koivisto.

Source/WebCore:

Test: webanimations/child-layer-position-after-removal-of-animation-triggering-stacking-context-with-fill-forwards.html

In the case where we animate a property that affects whether an element establishes a stacking context, for instance opacity, the animation code,
specifically KeyframeEffect::apply(), forces a stacking context by setting setUsedZIndex(0) on the animated RenderStyle in case the element otherwise
has an "auto" z-index. This is required by the Web Animations specification (https://w3c.github.io/web-animations/#side-effects-section).

This means that a fill-forwards animation will still force the element to establish a stacking context after the animation is no longer "active". When
we remove such an animation, it may go from having a z-index to not having one, unless it had an explicit z-index provided through style. When this change
happens, RenderStyle::diff() will merely return "RepaintLayer" and thus will not foce a layout. However, updating the positions of child layers may be
necessary as the animation being removed may mean that there may not be a RenderLayer associated with that element's renderer anymore, and if that RenderLayer
had a position, then the position of child layers will no longer be correct.

Now, in the case where we destroy a layer in RenderLayerModelObject::styleDidChange(), we check whether the layer had a position before it is removed, and
update the position of child layers if it did.

  • rendering/RenderLayerModelObject.cpp: (WebCore::RenderLayerModelObject::styleDidChange):

LayoutTests:

Add a new ref test that checks that removing a forwards-filling animation that triggers a stacking context (for instance, animating opacity)
after it has completed from an element affecting layout yields the correct layout.

  • webanimations/child-layer-position-after-removal-of-animation-triggering-stacking-context-with-fill-forwards-expected.html: Added.
  • webanimations/child-layer-position-after-removal-of-animation-triggering-stacking-context-with-fill-forwards.html: Added.

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

6:20 PM Changeset in webkit [253021] by Alan Coon
  • 1 copy in tags/Safari-609.1.11

Tag Safari-609.1.11.

6:06 PM Changeset in webkit [253020] by Fujii Hironori
  • 4 edits in trunk

[MSVC] Add /experimental:newLambdaProcessor switch for better C++ conformance
https://bugs.webkit.org/show_bug.cgi?id=204443

Reviewed by Alex Christensen.

.:

MSVC has a bug of lambda capture of 'this'. It has caused
compilation errors repeatedly.

  • Source/cmake/OptionsMSVC.cmake: Added /experimental:newLambdaProcessor switch.

Source/WebCore:

  • dom/DocumentStorageAccess.cpp:

(WebCore::DocumentStorageAccess::requestStorageAccess): Reverted MSVC workaround of r252726.

5:47 PM Changeset in webkit [253019] by ysuzuki@apple.com
  • 59 edits in trunk/Source/JavaScriptCore

[JSC] Put some destructible objects to IsoSubspace
https://bugs.webkit.org/show_bug.cgi?id=204771

Reviewed by Mark Lam.

This patch puts DateInstance, ErrorInstance, and Intl objects in IsoSubspace.
By using specific IsoHeapCellType, we can use JSNonFinalObject as base-classes of
them instead of using JSDestructibleObject. We also introduce STATIC_ASSERT_ISO_SUBSPACE_SHARABLE
to ensure that derived class of some IsoSubspace'ed one is intentional and safe.

  • runtime/ArrayConstructor.h:
  • runtime/AsyncFunctionConstructor.h:
  • runtime/AsyncGeneratorFunctionConstructor.h:
  • runtime/BigIntConstructor.h:
  • runtime/BooleanConstructor.h:
  • runtime/DateConstructor.h:
  • runtime/DateInstance.cpp:

(JSC::DateInstance::destroy): Deleted.

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

(JSC::ErrorInstance::destroy): Deleted.

  • runtime/ErrorInstance.h:

(JSC::ErrorInstance::destroy):
(JSC::ErrorInstance::subspaceFor):

  • runtime/FunctionConstructor.h:
  • runtime/FunctionPrototype.h:
  • runtime/GeneratorFunctionConstructor.h:
  • runtime/IntlCollator.cpp:

(JSC::IntlCollator::IntlCollator):
(JSC::IntlCollator::destroy): Deleted.

  • runtime/IntlCollator.h:
  • runtime/IntlCollatorConstructor.h:
  • runtime/IntlDateTimeFormat.cpp:

(JSC::IntlDateTimeFormat::IntlDateTimeFormat):
(JSC::IntlDateTimeFormat::destroy): Deleted.

  • runtime/IntlDateTimeFormat.h:
  • runtime/IntlDateTimeFormatConstructor.h:
  • runtime/IntlNumberFormat.cpp:

(JSC::IntlNumberFormat::IntlNumberFormat):
(JSC::IntlNumberFormat::destroy): Deleted.

  • runtime/IntlNumberFormat.h:
  • runtime/IntlNumberFormatConstructor.h:
  • runtime/IntlPluralRules.cpp:

(JSC::IntlPluralRules::IntlPluralRules):
(JSC::IntlPluralRules::destroy): Deleted.

  • runtime/IntlPluralRules.h:
  • runtime/IntlPluralRulesConstructor.h:
  • runtime/JSArrayBufferConstructor.h:
  • runtime/JSCell.h:
  • runtime/JSObject.h:
  • runtime/JSTypedArrayConstructors.h:
  • runtime/JSTypedArrayViewConstructor.h:
  • runtime/MapConstructor.h:
  • runtime/NativeErrorConstructor.h:
  • runtime/NullGetterFunction.h:
  • runtime/NullSetterFunction.h:
  • runtime/NumberConstructor.h:
  • runtime/ObjectConstructor.h:
  • runtime/ProxyConstructor.h:
  • runtime/RegExpConstructor.h:
  • runtime/SetConstructor.h:
  • runtime/StringConstructor.h:
  • runtime/SymbolConstructor.h:
  • runtime/VM.cpp:

(JSC::VM::VM):

  • runtime/VM.h:
  • runtime/WeakMapConstructor.h:
  • runtime/WeakObjectRefConstructor.h:
  • runtime/WeakSetConstructor.h:
  • tools/JSDollarVM.cpp:
  • wasm/js/JSWebAssemblyCompileError.h:
  • wasm/js/JSWebAssemblyLinkError.h:
  • wasm/js/JSWebAssemblyRuntimeError.h:
  • wasm/js/WebAssemblyCompileErrorConstructor.h:
  • wasm/js/WebAssemblyInstanceConstructor.h:
  • wasm/js/WebAssemblyLinkErrorConstructor.h:
  • wasm/js/WebAssemblyMemoryConstructor.h:
  • wasm/js/WebAssemblyModuleConstructor.h:
  • wasm/js/WebAssemblyRuntimeErrorConstructor.h:
  • wasm/js/WebAssemblyTableConstructor.h:
5:46 PM Changeset in webkit [253018] by Nikita Vasilyev
  • 11 edits in trunk

Web Inspector: Provide UI to convert between sRGB and p3 color spaces
https://bugs.webkit.org/show_bug.cgi?id=203534
<rdar://problem/56688523>

Reviewed by Devin Rousso.

Source/WebInspectorUI:

Add context menus:

  • "Convert to sRGB" and "Clamp to sRGB" for p3 colors, such as color(display-p3 0 1 0).
  • "Convert to Display-P3" for sRGB colors, such as rgb(0, 255, 0).

Shift-clicking the color swatch of sRGB colors now goes through the color function syntax as well.
Shift-clicking the color swatch of Display-P3 colors converts the color to sRGB when it can be lossless.
When the convertion cannot be lossless, Web Inspector beeps.

  • Localizations/en.lproj/localizedStrings.js:
  • UserInterface/Base/Utilities.js:
  • UserInterface/Models/Color.js:

(WI.Color):
Introduce _normalizedRGB property, which stores rgb values from 0 to 1.
Previously, _rgba stored values from 0 to 1 for color function format, and from 0 to 255 otherwise.
That required format checks before every rgb value access and resulted in silent errors when
the values were in the wrong format.

Store alpha as a separate property to simplify format conversion. Previously, alpha was duplicated between _rgba and _hsla.

(WI.Color.displayP3toSRGB):
(WI.Color.srgbToDisplayP3): Added.
(WI.Color.prototype.nextFormat):
(WI.Color.prototype.get rgb):
(WI.Color.prototype.get hsl):
(WI.Color.prototype.get normalizedRGB):
(WI.Color.prototype.get rgba):
(WI.Color.prototype.get hsla):
(WI.Color.prototype.get normalizedRGBA):
(WI.Color.prototype.get gamut):
(WI.Color.prototype.set gamut):
(WI.Color.prototype.copy):
(WI.Color.prototype.isKeyword):
(WI.Color.prototype.isOutsideSRGB): Added.
(WI.Color.prototype.canBeSerializedAsShortHEX):
(WI.Color.prototype._toKeywordString):
(WI.Color.prototype._toShortHEXString):
(WI.Color.prototype._toHEXString):
(WI.Color.prototype._toShortHEXAlphaString):
(WI.Color.prototype._toHEXAlphaString):
(WI.Color.prototype._toRGBString):
(WI.Color.prototype._toRGBAString):
(WI.Color.prototype._toFunctionString):
Limit the values to 4 decimals.

(WI.Color.prototype._toHSLString):
(WI.Color.prototype._toHSLAString):
(WI.Color.prototype._hslToRGB):

  • UserInterface/Views/ColorPicker.js:

(WI.ColorPicker.prototype._updateColor):
(WI.ColorPicker.prototype._updateOpacitySlider):

  • UserInterface/Views/ColorSquare.css:

(.color-square > .svg-root):
(.color-square > .svg-root > .srgb-edge):
(.color-square > .srgb-label):
(.color-square > .srgb-label:hover):
(.color-square > .srgb-label:hover + .svg-root > .srgb-edge):
(@media (-webkit-device-pixel-ratio: 1)):
(.color-square > .srgb-edge):

  • UserInterface/Views/ColorSquare.js:

(WI.ColorSquare.prototype.set tintedColor):
(WI.ColorSquare.prototype._drawSRGBOutline):
(WI.ColorSquare):

  • UserInterface/Views/InlineSwatch.js:

(WI.InlineSwatch):
(WI.InlineSwatch.prototype._updateSwatch):
(WI.InlineSwatch.prototype._allowShiftClickColor): Added.
(WI.InlineSwatch.prototype._handleContextMenuEvent):

LayoutTests:

  • inspector/model/color-expected.txt:
  • inspector/model/color.html:
4:38 PM Changeset in webkit [253017] by commit-queue@webkit.org
  • 5 edits
    2 adds in trunk

Crash when animating an enum attribute for multiple instances of an SVG element
https://bugs.webkit.org/show_bug.cgi?id=204766

Patch by Said Abou-Hallawa <sabouhallawa@apple.com> on 2019-12-02
Reviewed by Simon Fraser.

Source/WebCore:

Test: svg/animations/animated-enum-lengthAdjust-instances.svg

All instances of SVG animated properties have to share a single animVal
such that once its value is progressed, all the instances will see the
change. This was not happening for SVGAnimatedDecoratedProperty. To do
that we need to:

-- Make SVGDecoratedProperty be RefCounted.
-- Change the type of SVGAnimatedDecoratedProperty::m_baseVal to

Ref<SVGDecoratedProperty<DecorationType>>.

-- Change the type of SVGAnimatedDecoratedProperty::m_animVal to

RefPtr<SVGDecoratedProperty<DecorationType>>. The master property
creates it and all the instances hold references to the same pointer.

-- Override the virtual methods instanceStartAnimation() and

instanceStopAnimation() of SVGAnimatedDecoratedProperty.

  • svg/properties/SVGAnimatedDecoratedProperty.h:

(WebCore::SVGAnimatedDecoratedProperty::create):
(WebCore::SVGAnimatedDecoratedProperty::SVGAnimatedDecoratedProperty):
(WebCore::SVGAnimatedDecoratedProperty::animVal const):
(WebCore::SVGAnimatedDecoratedProperty::currentValue const):

  • svg/properties/SVGDecoratedEnumeration.h:

(WebCore::SVGDecoratedEnumeration::create):

  • svg/properties/SVGDecoratedProperty.h:

LayoutTests:

  • svg/animations/animated-enum-lengthAdjust-instances-expected.txt: Added.
  • svg/animations/animated-enum-lengthAdjust-instances.svg: Added.
4:33 PM Changeset in webkit [253016] by timothy_horton@apple.com
  • 2 edits in trunk/Source/WebCore

Fix the macCatalyst build.

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

(WebCore::PlatformCALayer::drawLayerContents):

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

Only check each use...FuzzerAgent() option in VM constructor if any of the options are enabled.
https://bugs.webkit.org/show_bug.cgi?id=204763

Reviewed by Keith Miller.

We know that we'll never use fuzzer agents in deployment. Hence, we shouldn't
spend time checking for them in the normal use case. This probably doesn't matter
much for Web processes, but for clients of JSC that repeatedly spawn and kill VMs,
it might matter more. We might want to eventually widen this idiom to include
other debugging / development options, but for now, I'm only covering the fuzzer
agent options.

  • runtime/Options.cpp:

(JSC::computeIfUsingFuzzerAgent):
(JSC::Options::initialize):

  • runtime/Options.h:

(JSC::Options::isUsingFuzzerAgent):

  • runtime/OptionsList.h:

(JSC::OptionRange::operator bool const):

  • runtime/VM.cpp:

(JSC::VM::VM):

3:21 PM Changeset in webkit [253014] by aakash_jain@apple.com
  • 3 edits in trunk/Tools

Revert - [EWS] Do not retry layout-tests build if the flaky test failures are also present in clean tree run
https://bugs.webkit.org/show_bug.cgi?id=204704

Reverting this, a more generic fix for handling flakiness would be made in Bug 204769.

3:03 PM Changeset in webkit [253013] by Alan Bujtas
  • 3 edits in trunk/Source/WebCore

[LFC] Fix ASSERT while running fast/block/block-parent-with-zero-width-child.html
https://bugs.webkit.org/show_bug.cgi?id=204768

Reviewed by Antti Koivisto.

  1. FormattingState::displayInlineContent() returns nullptr in case of empty inline content.
  2. Typo in InlineItemRun::moveHorizontally
  • layout/blockformatting/BlockMarginCollapse.cpp:

(WebCore::Layout::BlockFormattingContext::MarginCollapse::marginsCollapseThrough const):

  • layout/inlineformatting/InlineLineBuilder.h:

(WebCore::Layout::LineBuilder::InlineItemRun::moveHorizontally):

3:02 PM Changeset in webkit [253012] by Ross Kirsling
  • 2 edits in trunk/Source/ThirdParty/ANGLE

Unreviewed WinCairo build fix following r252989.

  • include/CMakeLists.txt:
3:00 PM Changeset in webkit [253011] by pvollan@apple.com
  • 7 edits in trunk/Source/WebKit

[iOS] Create sandbox extension for "com.apple.tccd"
https://bugs.webkit.org/show_bug.cgi?id=204367
<rdar://problem/57330176>

Reviewed by Eric Carlson.

When camera or microphone access has been granted by the user, have the UI process create a sandbox extension
for "com.apple.tccd", and send it to the WebContent process. Also make sure the extension is created only once
for each WebContent process. Add telemetry to the tccd rule in the sandbox.

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

(WebKit::UserMediaPermissionRequestManagerProxy::finishGrantingRequest):

  • UIProcess/UserMediaPermissionRequestManagerProxy.h:
  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::userMediaAccessWasGranted):

  • WebProcess/WebPage/WebPage.h:
  • WebProcess/WebPage/WebPage.messages.in:
2:45 PM Changeset in webkit [253010] by Tadeu Zagallo
  • 5 edits in trunk/Source/JavaScriptCore

[JSC] Remove BytecodeCacheVersion.h
https://bugs.webkit.org/show_bug.cgi?id=204760

Reviewed by Mark Lam.

Having that as a phony make target causes a lot of unnecessary rebuilds. That was a workaround
the fact that we only need a new cache version when we rebuild CachedTypes.cpp, but there was
no straightforward way to get the current timestamp as an integer at that point. Instead, we now
just use a constexpr function that hashes TIMESTAMP.

  • CMakeLists.txt:
  • DerivedSources-output.xcfilelist:
  • DerivedSources.make:
  • runtime/CachedTypes.cpp:

(JSC::jscBytecodeCacheVersion):
(JSC::GenericCacheEntry::isUpToDate const):

2:30 PM Changeset in webkit [253009] by commit-queue@webkit.org
  • 7 edits in trunk

Add helper methods for description and equality to text manipulation SPI
https://bugs.webkit.org/show_bug.cgi?id=204758
<rdar://problem/57438200>

Patch by Louie Livon-Bemel <Louie Livon-Bemel> on 2019-12-02
Reviewed by Wenson Hsieh.

Source/WebKit:

I originally added some category methods to _WKTextManipulationItem and _WKTextManipulationToken within Safari
to make working with these classes easier. However it makes more sense to just move these methods into
the main class. One method is for checking if two instances are equal (including identifiers) and optionally
checking if the content itself is equal. The other methods are for debug descriptions for lldb, and a
method to get a description that preserves privacy; when logging the instance, the content of the webpage
should be redacted.

Tests: Tests are added as API tests.

  • UIProcess/API/Cocoa/_WKTextManipulationItem.h:
    • Assume everything is non-null unless otherwise specified.
    • Allow the identifier to be nil, but not the array of tokens.
    • Add a method to check the equality to another item, optionally including a check for the content of each token being equal.
    • Add a -debugDescription method that includes the content of tokens for use in lldb. This NSObject declaration is marked optional, so redeclare it here.
    • No need to add a -description declaration since it exists on NSObject already.
  • UIProcess/API/Cocoa/_WKTextManipulationItem.mm:

(-[_WKTextManipulationItem isEqual:]):

The standard NSObject equality check should call our method with equal content.

(-[_WKTextManipulationItem isEqualToTextManipulationItem:includingContentEquality:]):

  • If the other item is nil, the identifiers aren't equal or the number of tokens are mismatched, these items aren't equal.
  • Just to be safe, only iterate the smaller of the token arrays so we don't crash.
  • Check if each token is equal, passing along the includingContentEquality parameter.

(-[_WKTextManipulationItem description]):

The general description should not include the webpage content.

(-[_WKTextManipulationItem debugDescription]):

Include the webpage content, since this is for lldb.

(-[_WKTextManipulationItem _descriptionPreservingPrivacy:]):

Include the standard description format, and each token on its own line. If we're including the content
then use token.debugDescription.

  • UIProcess/API/Cocoa/_WKTextManipulationToken.h:
    • Also assume everything is non-null.
    • Identifier and Content can be nil.
    • Declare a -debugDescription method.
    • Declare a method to check equality, with or without the content.
  • UIProcess/API/Cocoa/_WKTextManipulationToken.mm:

(isEqualOrBothNil):

Helper that checks equality but considers two nil values to be equal as well.

(-[_WKTextManipulationToken isEqual:]):

The standard NSObject equality check should call our method with equal content.

(-[_WKTextManipulationToken isEqualToTextManipulationToken:includingContentEquality:]):

Check that the exclusions are equal, the identifiers are equal (considering two nils to be equal), and the
content if necessary.

(-[_WKTextManipulationToken description]):
(-[_WKTextManipulationToken debugDescription]):
(-[_WKTextManipulationToken _descriptionPreservingPrivacy:]):

If we're preserving privacy, log the content length rather than the content string itself.

Tools:

Add tests for the new methods. Most are equality tests for various situations, and are moved over from the
Safari unit tests I had for the category methods that had the same purpose.

  • TestWebKitAPI/Tests/WebKitCocoa/TextManipulation.mm:

(TestWebKitAPI::TEST):

  • Add test to make sure the content isn't included in the regular -description, but the identifier is. And That -debugDescription does include the contents.
  • Add many tests equality for various situations, testing both with and without content equality.

(TestWebKitAPI::createTextManipulationToken):

Add a helper for creating a token in one line.

2:16 PM Changeset in webkit [253008] by mark.lam@apple.com
  • 4 edits in trunk

mozilla-tests.yaml/js1_5/Array/regress-101964.js is frequently failing on JSC EWS bots.
https://bugs.webkit.org/show_bug.cgi?id=200789
<rdar://problem/54361916>

Reviewed by Keith Miller.

JSTests:

The prevailing theory is that this test is being pre-empted and not getting the
CPU time it needs to complete. As a result, the wall clock time period for
running the test exceeds the expected time. This patch tests this theory by
changing the time measurement to use CPU time instead.

  • mozilla/js1_5/Array/regress-101964.js:

Source/JavaScriptCore:

  • tools/JSDollarVM.cpp:

(JSC::functionCurrentCPUTime):
(JSC::JSDollarVM::finishCreation):

1:51 PM Changeset in webkit [253007] by ysuzuki@apple.com
  • 6 edits in trunk/Source/JavaScriptCore

[JSC] Put JSGenerator, JSAsyncGenerator, and JSPromise in IsoSubspace
https://bugs.webkit.org/show_bug.cgi?id=204764

Reviewed by Mark Lam.

Put more things in IsoSubspace. They are defined by using JSInternalObjectImpl mechanism.

  • JSGenerator
  • JSAsyncGenerator
  • JSPromise
  • runtime/JSAsyncGenerator.h:
  • runtime/JSGenerator.h:
  • runtime/JSPromise.h:

(JSC::JSPromise::subspaceFor):

  • runtime/VM.cpp:

(JSC::VM::VM):

  • runtime/VM.h:
12:32 PM Changeset in webkit [253006] by ysuzuki@apple.com
  • 2 edits in trunk/Source/WebCore

Document::setWindowAttributeEventListener should check m_domWindow::frame()
https://bugs.webkit.org/show_bug.cgi?id=204759
<rdar://problem/50098787>

Reviewed by Mark Lam.

JSLazyEventListener::create assumes that m_domWindow::frame() exists.
But this check was removed at r196888 accidentally.
This patch adds this check back to fix the crash.

  • dom/Document.cpp:

(WebCore::Document::setWindowAttributeEventListener):

12:21 PM Changeset in webkit [253005] by Wenson Hsieh
  • 5 edits
    2 adds in trunk/Source/WebKit

[iOS] Introduce a gesture recognizer that can be used to defer recognition of other gestures
https://bugs.webkit.org/show_bug.cgi?id=204748
<rdar://problem/38670692>

Reviewed by Tim Horton.

Introduces WKDeferringGestureRecognizer, which is similar to UIKit's _UIRelationshipGestureRecognizer. In a
future patch, this will be added to WKContentView to prevent platform gestures (pinching, panning, single/double
taps, etc.) from recognizing when dispatching a preventable touch event to the page.

Additionally renames a member variable on WKContentView, in preparation for making touch gesture recognition
asynchronous. No new tests, since there is no change in behavior yet.

  • SourcesCocoa.txt:

Add the new file.

  • UIProcess/ios/WKContentViewInteraction.h:

Add a couple of (currently unused) deferring gesture recognizers. These will be added to WKContentView in a
future patch. There are two deferring gestures here (one for "immediately resettable" gestures and another for
gestures for which the reset is "deferred" -- i.e., multi-tap gestures); this prevents a single deferring
gesture from connecting the entire gesture subgraph under WKWebView through failure dependencies. This would
result in various usability issues, such as being unable to perform a pan gesture to scroll WKScrollView if a
tap was recognized within the last 300 ms, since all gestures would need to wait until every double and triple-
tap gesture under WKWebView has failed.

  • UIProcess/ios/WKContentViewInteraction.mm:

(-[WKContentView setupInteraction]):
(-[WKContentView _webTouchEventsRecognized:]):

Rename _canSendTouchEventsAsynchronously to _touchEventsCanPreventNativeGestures in preparation for adding a
codepath for fully asynchronous touch event dispatch; we also flip the conditional in any places where
_canSendTouchEventsAsynchronously was previously set or read.

(-[WKContentView _webTouchEvent:preventsNativeGestures:]):
(-[WKContentView scrollViewWillStartPanOrPinchGesture]):
(-[WKContentView gestureRecognizer:shouldIgnoreWebTouchWithEvent:]):
(-[WKContentView gestureRecognizer:isInterruptingMomentumScrollingWithEvent:]):
(-[WKContentView deferringGestureRecognizer:shouldDeferGesturesWithEvent:]):
(-[WKContentView deferringGestureRecognizer:shouldDeferOtherGestureRecognizer:]):

Implement WKDeferringGestureRecognizerDelegate.

(-[WKContentView shouldIgnoreWebTouch]): Deleted.

Drive-by fix: remove this unnecessary method implementation, and the related FIXME.

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

(-[WKDeferringGestureRecognizer initWithDeferringGestureDelegate:]):
(-[WKDeferringGestureRecognizer deferringGestureDelegate]):
(-[WKDeferringGestureRecognizer touchesBegan:withEvent:]):

Unless the touch is interrupts momentum scrolling, WKDeferringGestureRecognizer should transition to Possible
state when starting a touch. Later, -setDefaultPrevented: is invoked, which will either transition the deferring
gesture recognizer to Failed state (thereby allowing native gestures to begin), or Ended state (preventing other
native gestures).

(-[WKDeferringGestureRecognizer touchesCancelled:withEvent:]):
(-[WKDeferringGestureRecognizer setDefaultPrevented:]):
(-[WKDeferringGestureRecognizer canBePreventedByGestureRecognizer:]):

Return NO here to prevent certain platform gestures (e.g. scroll view panning) from causing the deferring
gesture to Failed state, when these gestures attempt to transition from Possible to Began state.

(-[WKDeferringGestureRecognizer shouldDeferGestureRecognizer:]):

  • WebKit.xcodeproj/project.pbxproj:
12:16 PM Changeset in webkit [253004] by Alan Bujtas
  • 3 edits in trunk/Source/WebCore

[LFC][IFC] Adjust trailing runs horizontally while trimming content
https://bugs.webkit.org/show_bug.cgi?id=204749
<rdar://problem/57559163>

Reviewed by Antti Koivisto.

When trailing content is getting trimmed, we also need to adjust subsequent trailing runs e.g. <span> </span> <- the [container end]'s run should be adjusted.

  • layout/inlineformatting/InlineLineBuilder.cpp:

(WebCore::Layout::LineBuilder::removeTrailingTrimmableContent):
(WebCore::Layout::LineBuilder::appendTextContent): there's nothing to trim when the spacing is zero or negative.

  • layout/inlineformatting/InlineLineBuilder.h:

(WebCore::Layout::LineBuilder::InlineItemRun::moveHorizontally):

12:10 PM Changeset in webkit [253003] by Alan Bujtas
  • 3 edits in trunk/Source/WebCore

[LFC][IFC] LineBuilder::InlineItemRun objects don't have vertical geometry
https://bugs.webkit.org/show_bug.cgi?id=204752
<rdar://problem/57560643>

Reviewed by Antti Koivisto.

Height and vertical position are computed when the InlineItemRun objects are merged and transformed into LineBuilder::Run objects.

  • layout/inlineformatting/InlineLineBuilder.cpp:

(WebCore::Layout::LineBuilder::ContinousContent::append):
(WebCore::Layout::LineBuilder::ContinousContent::close):
(WebCore::Layout::LineBuilder::Run::Run):
(WebCore::Layout::LineBuilder::appendNonBreakableSpace):
(WebCore::Layout::LineBuilder::appendInlineContainerStart):
(WebCore::Layout::LineBuilder::appendInlineContainerEnd):
(WebCore::Layout::LineBuilder::appendTextContent):
(WebCore::Layout::LineBuilder::appendNonReplacedInlineBox):
(WebCore::Layout::LineBuilder::appendLineBreak):
(WebCore::Layout::LineBuilder::isVisuallyNonEmpty const):
(WebCore::Layout::LineBuilder::InlineItemRun::InlineItemRun):
(WebCore::Layout::LineBuilder::InlineItemRun::setCollapsesToZeroAdvanceWidth):
(WebCore::Layout::LineBuilder::InlineItemRun::removeTrailingLetterSpacing):

  • layout/inlineformatting/InlineLineBuilder.h:

(WebCore::Layout::LineBuilder::InlineItemRun::logicalLeft const):
(WebCore::Layout::LineBuilder::InlineItemRun::logicalWidth const):
(WebCore::Layout::LineBuilder::InlineItemRun::logicalRect const): Deleted.

12:03 PM Changeset in webkit [253002] by Simon Fraser
  • 2 edits in trunk/Source/WebCore

Remove the confusing Value struct used for calc results
https://bugs.webkit.org/show_bug.cgi?id=204751

Reviewed by Tim Horton.

Replace the Value* argument with a RefPtr<CSSCalcExpressionNode>&. Value just made things more
confusing.

  • css/CSSCalculationValue.cpp:

(WebCore::CSSCalcExpressionNodeParser::parseCalc):
(WebCore::CSSCalcExpressionNodeParser::parseValue):
(WebCore::CSSCalcExpressionNodeParser::parseValueTerm):
(WebCore::CSSCalcExpressionNodeParser::parseValueMultiplicativeExpression):
(WebCore::CSSCalcExpressionNodeParser::parseAdditiveValueExpression):
(WebCore::CSSCalcExpressionNodeParser::parseMinMaxExpression):
(WebCore::CSSCalcExpressionNodeParser::parseValueExpression):

11:52 AM Changeset in webkit [253001] by Alan Bujtas
  • 3 edits in trunk/Source/WebCore

[LFC][IFC] TrimmableContent only needs to keep track of the first trimmable run index
https://bugs.webkit.org/show_bug.cgi?id=204747
<rdar://problem/57557732>

Reviewed by Antti Koivisto.

Every run after the first trimmable run should either also be trimmable (more whitespace) or skippable (</span>).

  • layout/inlineformatting/InlineLineBuilder.cpp:

(WebCore::Layout::LineBuilder::removeTrailingTrimmableContent):
(WebCore::Layout::LineBuilder::TrimmableContent::append):

  • layout/inlineformatting/InlineLineBuilder.h:

(WebCore::Layout::LineBuilder::TrimmableContent::firstRunIndex):
(WebCore::Layout::LineBuilder::TrimmableContent::isEmpty const):
(WebCore::Layout::LineBuilder::TrimmableContent::clear):
(WebCore::Layout::LineBuilder::TrimmableContent::runIndexes): Deleted.

11:22 AM Changeset in webkit [253000] by Devin Rousso
  • 4 edits in trunk/Source/WebInspectorUI

Web Inspector: Console: the saved result value is still shown after page reload
https://bugs.webkit.org/show_bug.cgi?id=204532

Reviewed by Brian Burg.

Add additional plumbing to remove any .console-saved-variable elements whenever a new
session is created, as well as reset the base of the property path to this.

  • UserInterface/Views/LogContentView.js:

(WI.LogContentView.prototype._sessionStarted):
(WI.LogContentView.prototype._logCleared):

  • UserInterface/Views/ConsoleMessageView.js:

(WI.ConsoleMessageView.prototype.clearSavedVariableState): Added.
(WI.ConsoleMessageView.prototype.removeEventListeners): Deleted.

  • UserInterface/Views/ObjectTreeView.js:

(WI.ObjectTreeView.prototype.resetPropertyPath): Added.

11:22 AM Changeset in webkit [252999] by Alan Coon
  • 7 edits in branches/safari-608-branch/Source

Versioning.

10:56 AM Changeset in webkit [252998] by commit-queue@webkit.org
  • 9 edits in trunk

Incorrect association of the URL object with the value port
https://bugs.webkit.org/show_bug.cgi?id=204414

Patch by Alex Christensen <achristensen@webkit.org> on 2019-12-02
Reviewed by Sam Weinig.

LayoutTests/imported/w3c:

  • web-platform-tests/url/url-setters-expected.txt:

Source/WebCore:

Setting a port should clear the port if it's not a numerical value.
We now match the behavior of Chrome, Firefox, and the URL specification.
Covered by a newly passing WPT!

  • html/URLUtils.h:

(WebCore::URLUtils<T>::setPort):

LayoutTests:

  • fast/dom/DOMURL/set-href-attribute-port-expected.txt:
  • fast/dom/DOMURL/set-href-attribute-port.html:
  • fast/dom/HTMLAnchorElement/set-href-attribute-port-expected.txt:
  • fast/dom/HTMLAnchorElement/set-href-attribute-port.html:
10:49 AM Changeset in webkit [252997] by Alan Coon
  • 7 edits in tags/Safari-609.1.10.0.3/Source

Versioning.

10:48 AM Changeset in webkit [252996] by Alan Coon
  • 7 edits in tags/Safari-609.1.10.3/Source

Versioning.

10:47 AM Changeset in webkit [252995] by Alan Coon
  • 1 copy in tags/Safari-609.1.10.0.3

New tag.

10:37 AM Changeset in webkit [252994] by dino@apple.com
  • 2 edits in trunk/Source/ThirdParty/ANGLE

Clean up ANGLE header post-process script
https://bugs.webkit.org/show_bug.cgi?id=204711

Reviewed by Tim Horton.

Since sed on macOS requires the in-place argument to have a zero-length string
to avoid making backups, this script was attempting to pass . However, this was
being evaluated, creating a bunch of files with \'\' suffixes. Fix this by using
an array when expanding the arguments.

Also fix a typo where the character "3" was being printed.

Lastly, only print out the basename of the header file being converted.

  • adjust-angle-include-paths.sh:
10:36 AM Changeset in webkit [252993] by Alan Coon
  • 1 copy in tags/Safari-609.1.10.3

New tag.

10:36 AM Changeset in webkit [252992] by dino@apple.com
  • 18 edits
    2 adds in trunk/Source

Build ANGLE as a dynamic library
https://bugs.webkit.org/show_bug.cgi?id=204708
rdar://57349384

Reviewed by Tim Horton.

Source/ThirdParty/ANGLE:

Modify ANGLE to build as a dynamic library. My (not thorough) testing suggests
this will reduce the in-flight binary size on Apple's build systems by at least
a factor of 10 (it was over 1G). Building release for x86_64-only:

  • Previously: libANGLE.a -- 306 MB
  • Now: libANGLE.dylib -- 6.7 MB

In order to do this, some symbols needed to be exported from the
"sh" namespace (which are used in ANGLEWebKitBridge, but not when
ANGLE's rendering backend is active).

While here, I turned on some more build options, like ARC.

  • ANGLE.xcodeproj/project.pbxproj: Link with IOKit and IOSurface frameworks, and

product a dylib product.

  • Configurations/ANGLE.xcconfig: Update the configuration for a dynamic library.
  • Configurations/Base.xcconfig:
  • Configurations/DebugRelease.xcconfig:
  • Configurations/Version.xcconfig: Added.
  • Configurations/WebKitTargetConditionals.xcconfig: Added.
  • include/GLSLANG/ShaderLang.h: Add ANGLE_EXPORT to some functions to make

sure they will be visible in the exported library.

  • include/GLSLANG/ShaderVars.h:
  • src/libANGLE/renderer/gl/cgl/DisplayCGL.mm: Change reinterpret_cast to a normal

C cast so it can be annotated with bridge.
(rx::DisplayCGL::isValidNativeWindow const):

  • src/libANGLE/renderer/gl/cgl/WindowSurfaceCGL.mm: Ditto.

(rx::WindowSurfaceCGL::WindowSurfaceCGL):
(rx::WindowSurfaceCGL::~WindowSurfaceCGL):

  • src/libANGLE/renderer/gl/eagl/DisplayEAGL.mm: Ditto.
  • src/libANGLE/renderer/gl/eagl/WindowSurfaceEAGL.mm: Ditto.

Source/WebCore:

Weak link against libANGLE.dylib rather than strong link to libANGLE.a.

  • Configurations/WebCore.xcconfig:
  • Configurations/WebCoreTestSupport.xcconfig:
  • platform/graphics/ANGLEWebKitBridge.cpp: Early returns if the library was not loaded.

(WebCore::ANGLEWebKitBridge::ANGLEWebKitBridge):
(WebCore::ANGLEWebKitBridge::cleanupCompilers):
(WebCore::ANGLEWebKitBridge::compileShaderSource):
(WebCore::ANGLEWebKitBridge::angleAvailable): Static method to detect
if the library was loaded.

  • platform/graphics/ANGLEWebKitBridge.h:
  • platform/graphics/cocoa/GraphicsContext3DCocoa.mm: Early return if ANGLE was not

loaded.
(WebCore::GraphicsContext3D::GraphicsContext3D):

10:32 AM Changeset in webkit [252991] by dbates@webkit.org
  • 2 edits in trunk/Tools

REGRESSION (r195080): prepare-ChangeLog does not emit function list for file paths that contain a space
https://bugs.webkit.org/show_bug.cgi?id=204236

Reviewed by Brian Burg.

Revert the filename escape logic added in <http://trac.webkit.org/changeset/195080> as it broke
function list generation in file paths that contain space characters. Function list generation
broke because the escaping was performed after line range dictionaries were built up keyed off
the unescaped file path. Subsequent code would try to query these dictionaries to build up the
changed function list using the escaped file path and never a match. The escaping logic was not
necessary to fix the originally reported bug. All that was needed was to use the three-argument
open() call that took a mode. So, remove the escape logic.

  • Scripts/prepare-ChangeLog:

(actuallyGenerateFunctionLists):

10:26 AM Changeset in webkit [252990] by Truitt Savell
  • 3 edits in trunk/LayoutTests

Update expectations for two tests after https://trac.webkit.org/changeset/252363/webkit
https://bugs.webkit.org/show_bug.cgi?id=204756
https://bugs.webkit.org/show_bug.cgi?id=204757

Unreviewed test gardening.

  • platform/ios/TestExpectations:
  • platform/mac/TestExpectations:
10:25 AM Changeset in webkit [252989] by achristensen@apple.com
  • 402 edits
    136 adds
    7 deletes in trunk/Source/ThirdParty/ANGLE

Update ANGLE
https://bugs.webkit.org/show_bug.cgi?id=204595

Patch by James Darpinian <James Darpinian> on 2019-12-02
Reviewed by Alex Christensen.

  • ANGLE.plist: Updated commit hash.
  • ANGLE.xcodeproj/project.pbxproj: Changes mirroring gn changes upstream.
  • Compiler.cmake: Changes mirroring gn changes upstream.
  • GLESv2.cmake: Changes mirroring gn changes upstream.
  • CMakeLists.txt: Changes mirroring gn changes upstream.
  • Many other files added/removed/changed from upstream.
9:42 AM Changeset in webkit [252988] by Fujii Hironori
  • 2 edits in trunk/Source/WebKitLegacy

[AppleWin] WebKitQuartzCoreAdditions.dll isn't compiled since r248444
https://bugs.webkit.org/show_bug.cgi?id=204695

Reviewed by Alex Christensen.

  • CMakeLists.txt: Replaced APPLE with USE_CA in the condition of

building WebKitQuartzCoreAdditions.

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

Simplify RealtimeOutgoingAudioSource and RealtimeOutgoingVideooSource observeSource/unobserveSource pattern
https://bugs.webkit.org/show_bug.cgi?id=204570

Reviewed by Eric Carlson.

Previously, the outgoing source was observing/unobserving its track if sinks were added/removed.
We made LibWebRTCRTCRtpSenderBackend stopping the observing in its destructor.
This makes things complex and we are not always unobserving fast enough for all outgoing sources.

To make it simpler, the outgoing source is no longer handling the observing/unobserving of its track.
Instead, its LibWebRTCRtpSenderBackend is handling it directly.
Observing starts when LibWebRTCRtpSenderBackend gets the track and unobserving happens either on LibWebRTCRtpSenderBackend destruction
or when the LibWebRTCRtpSenderBackend is no longer interested in the track.
This is slight less optimal as we might observe the track even if the source has no sink but this should not happen often in practice.

Removed some unneeded methods.

Covered by existing tests no longer failing a debug ASSERTION.

  • Modules/mediastream/libwebrtc/LibWebRTCRtpSenderBackend.cpp:

(WebCore::LibWebRTCRtpSenderBackend::LibWebRTCRtpSenderBackend):
(WebCore::LibWebRTCRtpSenderBackend::~LibWebRTCRtpSenderBackend):
(WebCore::LibWebRTCRtpSenderBackend::startSource):
(WebCore::LibWebRTCRtpSenderBackend::stopSource):
(WebCore::LibWebRTCRtpSenderBackend::replaceTrack):
(WebCore::LibWebRTCRtpSenderBackend::audioSource):
(WebCore::LibWebRTCRtpSenderBackend::videoSource):
(WebCore::LibWebRTCRtpSenderBackend::hasSource const):
(WebCore::LibWebRTCRtpSenderBackend::setSource):
(WebCore::LibWebRTCRtpSenderBackend::takeSource):

  • Modules/mediastream/libwebrtc/LibWebRTCRtpSenderBackend.h:
  • platform/mediastream/RealtimeOutgoingAudioSource.cpp:

(WebCore::RealtimeOutgoingAudioSource::~RealtimeOutgoingAudioSource):
(WebCore::RealtimeOutgoingAudioSource::observeSource):
(WebCore::RealtimeOutgoingAudioSource::setSource):
(WebCore::RealtimeOutgoingAudioSource::AddSink):
(WebCore::RealtimeOutgoingAudioSource::RemoveSink):

  • platform/mediastream/RealtimeOutgoingAudioSource.h:

(WebCore::RealtimeOutgoingAudioSource::start):

  • platform/mediastream/RealtimeOutgoingVideoSource.cpp:

(WebCore::RealtimeOutgoingVideoSource::~RealtimeOutgoingVideoSource):
(WebCore::RealtimeOutgoingVideoSource::observeSource):
(WebCore::RealtimeOutgoingVideoSource::setSource):
(WebCore::RealtimeOutgoingVideoSource::AddOrUpdateSink):
(WebCore::RealtimeOutgoingVideoSource::RemoveSink):

  • platform/mediastream/RealtimeOutgoingVideoSource.h:

(WebCore::RealtimeOutgoingVideoSource::start):

  • platform/mediastream/mac/RealtimeOutgoingAudioSourceCocoa.cpp:

(WebCore::RealtimeOutgoingAudioSourceCocoa::~RealtimeOutgoingAudioSourceCocoa): Deleted.

9:25 AM Changeset in webkit [252986] by youenn@apple.com
  • 5 edits in trunk/Source/WebCore

SWServer::scriptFetchFinished does not need a Connection as parameter
https://bugs.webkit.org/show_bug.cgi?id=204641

Reviewed by Chris Dumez.

No change of behavior, removing an unused parameter.

  • workers/service/server/SWServer.cpp:

(WebCore::SWServer::Connection::finishFetchingScriptInServer):
(WebCore::SWServer::startScriptFetch):
(WebCore::SWServer::didResolveRegistrationPromise):

  • workers/service/server/SWServer.h:
  • workers/service/server/SWServerJobQueue.cpp:

(WebCore::SWServerJobQueue::scriptFetchFinished):

  • workers/service/server/SWServerJobQueue.h:
9:10 AM Changeset in webkit [252985] by youenn@apple.com
  • 4 edits
    4 adds in trunk

Service Worker should correctly set its document first party for cookies URL
https://bugs.webkit.org/show_bug.cgi?id=204742

Reviewed by Chris Dumez.

Source/WebCore:

Test: http/wpt/service-workers/third-party-cookie.html

  • workers/service/context/ServiceWorkerThreadProxy.cpp:

(WebCore::createPageForServiceWorker):
Set document first party cookie for URL to the top origin.

LayoutTests:

  • http/wpt/service-workers/resources/set-cookie.py: Added.
  • http/wpt/service-workers/resources/third-party-cookie-iframe.html: Added.
  • http/wpt/service-workers/resources/third-party-worker.js:
  • http/wpt/service-workers/third-party-cookie-expected.txt: Added.
  • http/wpt/service-workers/third-party-cookie.html: Added.
8:54 AM Changeset in webkit [252984] by yoshiaki.jitsukawa@sony.com
  • 2 edits in trunk/Source/WebKit

ResponsivenessTimer mistakenly restarts immediately
https://bugs.webkit.org/show_bug.cgi?id=204659

Reviewed by Chris Dumez.

  • UIProcess/ResponsivenessTimer.cpp:

(WebKit::ResponsivenessTimer::timerFired):
Give startOneShot() a positive number timeout.

8:32 AM Changeset in webkit [252983] by Simon Fraser
  • 28 edits in trunk

Don't do range checking for calc() at parse time
https://bugs.webkit.org/show_bug.cgi?id=204737

Reviewed by Antti Koivisto.
LayoutTests/imported/w3c:

  • web-platform-tests/css/css-text-decor/parsing/text-shadow-computed-expected.txt:
  • web-platform-tests/css/css-values/calc-numbers-expected.txt:
  • web-platform-tests/css/css-values/getComputedStyle-border-radius-001-expected.txt:
  • web-platform-tests/css/css-values/getComputedStyle-border-radius-003-expected.txt:
  • web-platform-tests/css/css-values/minmax-number-serialize-expected.txt:

Source/WebCore:

As specified in https://drafts.csswg.org/css-values-4/#calc-range, we should not do range checking for calc
at parse time; the specified value can be a calc which results in a negative values; values are clamped
at used value time (i.e. when building RenderStyle).

So CSSCalculationValue doesn't need to have isInt(), isPositive(), isNegative(), and CSSCalcExpressionNode
doesn't have to keep track of whether its value is an integer.

Also do some cleanup of CSSPrimitiveValue, using categories to answer more isFoo type questions, and adding
isZero(), isPositive() and isNegative() that return Optional<bool> for cases where parse-time range checking
occurs.

Tested by existing tests.

  • css/CSSCalculationValue.cpp:

(WebCore::CSSCalcOperationNode::createSimplified):
(WebCore::CSSCalcExpressionNodeParser::parseValue):
(WebCore::createBlendHalf):
(WebCore::createCSS):
(WebCore::CSSCalcValue::isCalcFunction):
(WebCore::isIntegerResult): Deleted.

  • css/CSSCalculationValue.h:

(WebCore::CSSCalcExpressionNode::equals const):
(WebCore::CSSCalcExpressionNode::category const):
(WebCore::CSSCalcExpressionNode::CSSCalcExpressionNode):
(WebCore::CSSCalcExpressionNode::isInteger const): Deleted.

  • css/CSSComputedStyleDeclaration.cpp:

(WebCore::zoomAdjustedPixelValueForLength):
(WebCore::percentageOrZoomAdjustedValue):
(WebCore::autoOrZoomAdjustedValue):

  • css/CSSPrimitiveValue.cpp:

(WebCore::CSSPrimitiveValue::conversionToCanonicalUnitsScaleFactor): I missed the Q unit here when I added it.
(WebCore::CSSPrimitiveValue::isZero const):
(WebCore::CSSPrimitiveValue::isPositive const):
(WebCore::CSSPrimitiveValue::isNegative const):
(WebCore::CSSPrimitiveValue::canonicalUnitTypeForCategory): Deleted.

  • css/CSSPrimitiveValue.h:

(WebCore::CSSPrimitiveValue::isAngle const): Deleted.

  • css/CSSUnits.cpp:

(WebCore::unitCategory):
(WebCore::canonicalUnitTypeForCategory):
(WebCore::canonicalUnitType):

  • css/CSSUnits.h:
  • css/parser/CSSPropertyParser.cpp:

(WebCore::consumeColumnWidth):
(WebCore::consumePerspective):
(WebCore::consumeWebkitAspectRatio):

  • css/parser/CSSPropertyParserHelpers.cpp:

(WebCore::CSSPropertyParserHelpers::CalcParser::CalcParser):
(WebCore::CSSPropertyParserHelpers::CalcParser::consumeInteger):
(WebCore::CSSPropertyParserHelpers::consumeNumber):
(WebCore::CSSPropertyParserHelpers::consumeSingleShadow): This parsing is a little tricky. The blur radius value is optional,
but we need to distinguish between failing to parse it, and its value being negative, so an explicit check for calc is the easiest way
to handlel that.
(WebCore::CSSPropertyParserHelpers::CalcParser::consumePositiveIntegerRaw): Deleted. It was unused.
(WebCore::CSSPropertyParserHelpers::consumePositiveIntegerRaw): Deleted.

  • css/parser/CSSPropertyParserHelpers.h:

LayoutTests:

Update tests that assumed calc range-checked at parse time.

  • fast/css/column-width-calculated-value-expected.txt:
  • fast/css/column-width-calculated-value.html:
  • fast/css/flex-shrink-calculated-value-expected.txt:
  • fast/css/flex-shrink-calculated-value.html:
  • fast/css/negative-calc-values-expected.txt:
  • fast/css/negative-calc-values.html:
  • fast/css/text-shadow-calc-value-expected.txt:
  • fast/css/text-shadow-calc-value.html:
  • fast/shapes/parsing/parsing-shape-image-threshold-expected.txt:
  • fast/shapes/parsing/parsing-shape-image-threshold.html:
7:36 AM Changeset in webkit [252982] by commit-queue@webkit.org
  • 3 edits in trunk/Source/WebCore

[GTK] Fix some warnings
https://bugs.webkit.org/show_bug.cgi?id=204739

Patch by Rob Buis <rbuis@igalia.com> on 2019-12-02
Reviewed by Frédéric Wang.

  • Modules/indexeddb/IDBDatabase.cpp:

(WebCore::IDBDatabase::connectionToServerLost):

  • layout/inlineformatting/InlineLineBuilder.cpp:

(WebCore::Layout::LineBuilder::alignContentVertically):

5:20 AM Changeset in webkit [252981] by youenn@apple.com
  • 5 edits in trunk/Source/WebCore

Remove MediaStreamTrack event queue
https://bugs.webkit.org/show_bug.cgi?id=204603

Reviewed by Eric Carlson.

Small refactoring to remove the track event queue and use ActiveDOMObject::queueTaskToDispatchEvent instead.
Updated some #include as some include fixes were needed.
No change of behavior.

  • Modules/mediastream/MediaStreamTrack.cpp:

(WebCore::MediaStreamTrack::trackMutedChanged):

  • Modules/mediastream/MediaStreamTrack.h:
  • platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaStreamAVFObjC.h:
  • platform/mediastream/MediaStreamPrivate.h:
1:40 AM Changeset in webkit [252980] by Carlos Garcia Campos
  • 4 edits in trunk/Source/WebKit

[GTK][PSON] Crash in NetworkProcessProxy::openNetworkProcessConnection
https://bugs.webkit.org/show_bug.cgi?id=204703

Reviewed by Michael Catanzaro.

Stop sending a message to all web process to prefetch DNS for a hostname. All web processes then send a messaage
to their network process to prefetch the DNS. Instead, send a message directly to the network process.

  • NetworkProcess/NetworkProcess.messages.in:
  • UIProcess/API/glib/WebKitWebContext.cpp:

(webkit_web_context_prefetch_dns):

  • WebProcess/InjectedBundle/API/glib/WebKitWebExtension.cpp:
1:28 AM Changeset in webkit [252979] by Antti Koivisto
  • 18 edits
    1 copy
    1 add in trunk/Source/WebCore

[LFC][Render tree] Support LFC in LineLayoutTraversal
https://bugs.webkit.org/show_bug.cgi?id=204727

Reviewed by Zalan Bujtas.

Add support for traversing LFC inline layout to TextBoxIterator and ElementBoxIterator.
This makes render tree dumps and TextIterator work with LFC layout.

  • Headers.cmake:
  • WebCore.xcodeproj/project.pbxproj:
  • layout/FormattingContextGeometry.cpp:

(WebCore::Layout::FormattingContext::Geometry::contentHeightForFormattingContextRoot const):

  • layout/RenderBlockFlowLineLayout.cpp:

(WebCore::Layout::RenderBlockFlowLineLayout::layout):
(WebCore::Layout::RenderBlockFlowLineLayout::inlineResults const):
(WebCore::Layout::RenderBlockFlowLineLayout::textBoxesFor const):
(WebCore::Layout::RenderBlockFlowLineLayout::elementBoxFor const):

  • layout/RenderBlockFlowLineLayout.h:
  • layout/Verification.cpp:

(WebCore::Layout::outputMismatchingSimpleLineInformationIfNeeded):
(WebCore::Layout::outputMismatchingComplexLineInformationIfNeeded):

  • layout/blockformatting/BlockFormattingContextGeometry.cpp:

(WebCore::Layout::BlockFormattingContext::Geometry::inFlowNonReplacedHeightAndMargin):

  • layout/blockformatting/BlockMarginCollapse.cpp:

(WebCore::Layout::BlockFormattingContext::MarginCollapse::marginsCollapseThrough const):

  • layout/displaytree/DisplayPainter.cpp:

(WebCore::Display::paintInlineContent):

  • layout/displaytree/DisplayRun.h:

(WebCore::Display::Run::layoutBox const):

Replace style with layout box weak pointer. This allows finding runs for a given box.

(WebCore::Display::Run::style const):

Get style from the layout box.

(WebCore::Display::Run::Run):

  • layout/inlineformatting/InlineFormattingContext.cpp:

(WebCore::Layout::InlineFormattingContext::setDisplayBoxesForLine):
(WebCore::Layout::InlineFormattingContext::invalidateFormattingState):

  • layout/inlineformatting/InlineFormattingContextQuirks.cpp:

(WebCore::Layout::InlineFormattingContext::Quirks::lineDescentNeedsCollapsing const):

  • layout/inlineformatting/InlineFormattingState.h:

(WebCore::Layout::InlineFormattingState::results const):
(WebCore::Layout::InlineFormattingState::clearResults):
(WebCore::Layout::InlineFormattingState::ensureResults):
(WebCore::Layout::InlineFormattingState::displayRuns const): Deleted.
(WebCore::Layout::InlineFormattingState::displayRuns): Deleted.
(WebCore::Layout::InlineFormattingState::lineBoxes const): Deleted.
(WebCore::Layout::InlineFormattingState::lineBoxes): Deleted.
(WebCore::Layout::InlineFormattingState::addLineBox): Deleted.
(WebCore::Layout::InlineFormattingState::lineBoxForRun const): Deleted.
(WebCore::Layout::InlineFormattingState::addDisplayRun): Deleted.
(WebCore::Layout::InlineFormattingState::resetDisplayRuns): Deleted.

  • layout/inlineformatting/InlineLineBuilder.cpp:

(WebCore::Layout::LineBuilder::alignContentVertically):
(WebCore::Layout::LineBuilder::adjustBaselineAndLineHeight):

  • layout/displaytree/DisplayInlineContent.h: Copied from Source/WebCore/layout/RenderBlockFlowLineLayout.h.

(WebCore::Display::InlineContent::lineBoxForRun const):

Factor into a struct. Make it refcounted for safe access from line layout iterators.

(WebCore::Layout::outputInlineRuns):

  • rendering/line/LineLayoutTraversal.cpp:

(WebCore::LineLayoutTraversal::TextBoxIterator::TextBoxIterator):
(WebCore::LineLayoutTraversal::flowForText):
(WebCore::LineLayoutTraversal::firstTextBoxFor):
(WebCore::LineLayoutTraversal::firstTextBoxInTextOrderFor):
(WebCore::LineLayoutTraversal::ElementBoxIterator::ElementBoxIterator):
(WebCore::LineLayoutTraversal::elementBoxFor):

  • rendering/line/LineLayoutTraversal.h:
  • rendering/line/LineLayoutTraversalDisplayRunPath.h: Added.

(WebCore::LineLayoutTraversal::linePosition):
(WebCore::LineLayoutTraversal::DisplayRunPath::DisplayRunPath):

New path for traversing display runs.

(WebCore::LineLayoutTraversal::DisplayRunPath::rect const):
(WebCore::LineLayoutTraversal::DisplayRunPath::logicalRect const):
(WebCore::LineLayoutTraversal::DisplayRunPath::isLeftToRightDirection const):
(WebCore::LineLayoutTraversal::DisplayRunPath::dirOverride const):
(WebCore::LineLayoutTraversal::DisplayRunPath::isLineBreak const):
(WebCore::LineLayoutTraversal::DisplayRunPath::hasHyphen const):
(WebCore::LineLayoutTraversal::DisplayRunPath::text const):
(WebCore::LineLayoutTraversal::DisplayRunPath::localStartOffset const):
(WebCore::LineLayoutTraversal::DisplayRunPath::localEndOffset const):
(WebCore::LineLayoutTraversal::DisplayRunPath::length const):
(WebCore::LineLayoutTraversal::DisplayRunPath::isLastOnLine const):
(WebCore::LineLayoutTraversal::DisplayRunPath::isLast const):
(WebCore::LineLayoutTraversal::DisplayRunPath::traverseNextTextBoxInVisualOrder):
(WebCore::LineLayoutTraversal::DisplayRunPath::traverseNextTextBoxInTextOrder):
(WebCore::LineLayoutTraversal::DisplayRunPath::operator== const):
(WebCore::LineLayoutTraversal::DisplayRunPath::atEnd const):
(WebCore::LineLayoutTraversal::DisplayRunPath::displayRuns const):
(WebCore::LineLayoutTraversal::DisplayRunPath::firstRun const):
(WebCore::LineLayoutTraversal::DisplayRunPath::run const):

Dec 1, 2019:

10:44 PM Changeset in webkit [252978] by commit-queue@webkit.org
  • 7 edits
    5 copies
    3 adds in trunk/Source/JavaScriptCore

Add FuzzerAgent that reads predictions from a file
https://bugs.webkit.org/show_bug.cgi?id=203898

Patch by Tuomas Karkkainen <tuomas.webkit@apple.com> on 2019-12-01
Reviewed by Mark Lam.

This patch adds a FuzzerAgent that reads predictions from a file. The predictions in the file are
correlated with the prediction sites using the name of the JavaScript source file, the opcode, and
start and end offsets in the source. There is also a separate FuzzerAgent that can be used to create
the prediction files.

  • JavaScriptCore.xcodeproj/project.pbxproj:
  • Sources.txt:
  • runtime/FileBasedFuzzerAgent.cpp: Added.
  • runtime/FileBasedFuzzerAgent.h: Copied from Source/JavaScriptCore/runtime/RandomizingFuzzerAgent.cpp.
  • runtime/FileBasedFuzzerAgentBase.cpp: Added.
  • runtime/FileBasedFuzzerAgentBase.h: Copied from Source/JavaScriptCore/runtime/RandomizingFuzzerAgent.cpp.
  • runtime/FuzzerPredictions.cpp: Added.
  • runtime/FuzzerPredictions.h: Copied from Source/JavaScriptCore/runtime/RandomizingFuzzerAgent.cpp.
  • runtime/Options.cpp:
  • runtime/OptionsList.h:
  • runtime/PredictionFileCreatingFuzzerAgent.cpp: Copied from Source/JavaScriptCore/runtime/RandomizingFuzzerAgent.cpp.
  • runtime/PredictionFileCreatingFuzzerAgent.h: Copied from Source/JavaScriptCore/runtime/RandomizingFuzzerAgent.cpp.
  • runtime/RandomizingFuzzerAgent.cpp:
  • runtime/VM.cpp:
7:32 PM Changeset in webkit [252977] by timothy_horton@apple.com
  • 2 edits in trunk/Source/WebCore

Disable LocalCurrentGraphicsContext when doing DisplayList recording
https://bugs.webkit.org/show_bug.cgi?id=204721

Reviewed by Simon Fraser.

  • platform/mac/LocalCurrentGraphicsContext.mm:

(WebCore::LocalCurrentGraphicsContext::LocalCurrentGraphicsContext):
Since we don't have a platform context, we can't set the global
graphics context. This means that anything depending on this downstream
will break and need to be implemented a different way in
the DisplayList case.

7:19 PM Changeset in webkit [252976] by Fujii Hironori
  • 9 edits in trunk/Source

[Win] Retrieve all following WM_CHAR events at the beginning of processing WM_KEYDOWN event
https://bugs.webkit.org/show_bug.cgi?id=204694

Reviewed by Ross Kirsling.

Source/WebKit:

In Windows ports, WM_KEYDOWN dispatches keydown event, and
WM_CHAR dispatches keypress event. If a keydown event is canceled
by calling preventDefault, the following corresponding keypress
events shouldn't be dispatched.

WebKit1 implemented it by removing WM_CHAR events if the keydown
event is consumed. However, WebKit2 can't do so because WebKit2
processes key events asynchronously. Thus, retrieve all following
WM_CHAR events, and dispatch them after processing the keydown
and if it is not consumed.

In addition to that, retrieving following WM_CHAR events is needed
to fix Bug 204672 because the events are needed for 'key' property
of keydown KeyboardEvent for dead key combination.

Gecko and Chromium also implements 'key' property in the same approach.

Test: Covered by existing fast/events/inputText-never-fired-on-keydown-cancel.html and fast/events/keydown-keypress-preventDefault.html

  • Shared/NativeWebKeyboardEvent.h: Added m_pendingCharEvents as Vector<MSG>.

(WebKit::NativeWebKeyboardEvent::pendingCharEvents const):

  • Shared/win/NativeWebKeyboardEventWin.cpp:

(WebKit::NativeWebKeyboardEvent::NativeWebKeyboardEvent):

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::didReceiveEvent):

  • UIProcess/WebPageProxy.h:
  • UIProcess/win/WebPageProxyWin.cpp:

(WebKit::WebPageProxy::dispatchPendingCharEvents):

  • UIProcess/win/WebView.cpp:

(WebKit::WebView::onKeyEvent):

Source/WebKitLegacy/win:

  • WebView.cpp:

(WebView::keyDown): Added a variable pendingCharEvents of
Vector<MSG> to preserve following WM_CHAR events. Dispatch them if
the WM_KEYDOWN isn't consumed.

6:57 PM Changeset in webkit [252975] by Caio Lima
  • 6 edits in trunk

[JSC][MIPS] CallFrame is being clobbered on InternalFunction execution
https://bugs.webkit.org/show_bug.cgi?id=203739

Reviewed by Saam Barati.

JSTests:

  • stress/has-instance-exception-check.js:
  • stress/regress-176485.js:

Source/JavaScriptCore:

MIPS calling conventions requires that we have stack space reserved
for 4 (16-bytes) arguments ($a0-$a3). The caller doesn't use
this space, but callee can still use it in case where they need to save
arguments or even reuse to another allocation. Since we were not
allocationg it during makeHostFunctionCall, the caller frame slot
was being clobberred by callGenericTypedArrayView execution,
resulting in a corrupted call frame stack. This patch is adjusting
this convention into ThunkGenerator and on makeHostFunctionCall.

  • jit/ThunkGenerators.cpp:

(JSC::nativeForGenerator):

  • llint/LowLevelInterpreter32_64.asm:
6:54 PM Changeset in webkit [252974] by Caio Lima
  • 8 edits in trunk/Source/JavaScriptCore

Implement GetByVal inline caching for 32-bit JITs
https://bugs.webkit.org/show_bug.cgi?id=204082

Reviewed by Saam Barati.

We are adding 32-bit support for GetByVal cases added on r252684.
This requires changes on some of the IC code generated to properly
support JSVALUE32_64. The major difference from JSVALUE64 is the
usage of tagGPR to inspect value types and store results.

  • bytecode/AccessCase.cpp:

(JSC::AccessCase::generateWithGuard):
(JSC::AccessCase::generateImpl):

  • bytecode/GetterSetterAccessCase.cpp:

(JSC::GetterSetterAccessCase::emitDOMJITGetter):

  • bytecode/PolymorphicAccess.cpp:

(JSC::PolymorphicAccess::regenerate):

  • bytecode/StructureStubInfo.h:

Since a generator can't have thisGPR and propertyGPR at se same time,
we created a new union to share thisTagGPR and propertyTagGPR,
matching the approach we have for JITInlineCacheGenerator::patch.u.

(JSC::StructureStubInfo::propertyRegs const):
(JSC::StructureStubInfo::baseRegs const):

To simplify scratch register allocation, we added baseRegs() and
propertyRegs() to StructureStubInfo, so we can easily retrive
payload and tag GPRs for those operands, keeping them locked.

  • dfg/DFGSpeculativeJIT32_64.cpp:

(JSC::DFG::SpeculativeJIT::compile):

  • jit/JITInlineCacheGenerator.cpp:

(JSC::JITByIdGenerator::JITByIdGenerator):
(JSC::JITGetByIdWithThisGenerator::JITGetByIdWithThisGenerator):
(JSC::JITInstanceOfGenerator::JITInstanceOfGenerator):
(JSC::JITGetByValGenerator::JITGetByValGenerator):

  • jit/JITPropertyAccess32_64.cpp:

(JSC::JIT::emit_op_get_by_val):
(JSC::JIT::emitSlow_op_get_by_val):

6:18 PM Changeset in webkit [252973] by Fujii Hironori
  • 2 edits in trunk/Source/WebKitLegacy/win

[CMake] Ninja can't build WebKitQuartzCoreAdditions of AppleWin port
https://bugs.webkit.org/show_bug.cgi?id=204696

Reviewed by Don Olmstead.

It seems unnecessary to explicitly add Windows SDK to link_directories.

  • WebKitQuartzCoreAdditions/CMakeLists.txt: Removed link_directories for Windows SDK.
3:14 PM Changeset in webkit [252972] by Alan Bujtas
  • 6 edits in trunk/Source/WebCore

[LFC][IFC] Trim trailing letter spacing.
https://bugs.webkit.org/show_bug.cgi?id=204731
<rdar://problem/57545763>

Reviewed by Antti Koivisto.

Refactor trailing trimmable content to support partial, non-whitespace trimmable content e.g. letter spacing.
https://drafts.csswg.org/css-text-3/#letter-spacing-property -> UAs therefore must not append letter spacing to the right or trailing edge of a line.

  • layout/inlineformatting/InlineLineBreaker.cpp:

(WebCore::Layout::LineBreaker::breakingContextForInlineContent):
(WebCore::Layout::LineBreaker::Content::append):
(WebCore::Layout::LineBreaker::Content::reset):
(WebCore::Layout::LineBreaker::Content::TrailingTrimmableContent::reset):
(WebCore::Layout::LineBreaker::Content::hasNonWhitespaceOrInlineBox const): Deleted.
(WebCore::Layout::LineBreaker::Content::trailingTrimmableWidth const): Deleted.

  • layout/inlineformatting/InlineLineBreaker.h:

(WebCore::Layout::LineBreaker::Content::isEmpty const):
(WebCore::Layout::LineBreaker::Content::nonTrimmableWidth const):
(WebCore::Layout::LineBreaker::Content::hasTrailingTrimmableContent const):
(WebCore::Layout::LineBreaker::Content::isTrailingContentFullyTrimmable const):

  • layout/inlineformatting/InlineLineBuilder.cpp:

(WebCore::Layout::LineBuilder::removeTrailingTrimmableContent):
(WebCore::Layout::LineBuilder::appendTextContent):
(WebCore::Layout::LineBuilder::TrimmableContent::append):
(WebCore::Layout::LineBuilder::InlineItemRun::removeTrailingLetterSpacing):

  • layout/inlineformatting/InlineLineBuilder.h:

(WebCore::Layout::LineBuilder::isTrailingContentFullyTrimmable const):
(WebCore::Layout::LineBuilder::TrimmableContent::isTrailingContentFullyTrimmable const):
(WebCore::Layout::LineBuilder::TrimmableContent::clear):

  • layout/inlineformatting/LineLayoutContext.cpp:

(WebCore::Layout::LineLayoutContext::processUncommittedContent):

1:58 PM Changeset in webkit [252971] by Simon Fraser
  • 2 edits in trunk/Source/WebCore

Rename CSSCalcPrimitiveValue to CSSCalcPrimitiveValueNode, and CSSCalcOperation to CSSCalcOperationNode
https://bugs.webkit.org/show_bug.cgi?id=204730

Reviewed by Dean Jackson.

Pure rename. These are both subclasses of CSSCalcExpressionNode, so are better with Node in the name.

  • css/CSSCalculationValue.cpp:

(WebCore::CSSCalcPrimitiveValueNode::createCalcExpression const):
(WebCore::CSSCalcPrimitiveValueNode::doubleValue const):
(WebCore::CSSCalcPrimitiveValueNode::computeLengthPx const):
(WebCore::CSSCalcPrimitiveValueNode::collectDirectComputationalDependencies const):
(WebCore::CSSCalcPrimitiveValueNode::collectDirectRootComputationalDependencies const):
(WebCore::CSSCalcPrimitiveValueNode::equals const):
(WebCore::CSSCalcPrimitiveValueNode::dump const):
(WebCore::CSSCalcOperationNode::create):
(WebCore::CSSCalcOperationNode::createMinOrMax):
(WebCore::CSSCalcOperationNode::createSimplified):
(WebCore::CSSCalcOperationNode::primitiveType const):
(WebCore::CSSCalcOperationNode::createCalcExpression const):
(WebCore::CSSCalcOperationNode::doubleValue const):
(WebCore::CSSCalcOperationNode::computeLengthPx const):
(WebCore::CSSCalcOperationNode::collectDirectComputationalDependencies const):
(WebCore::CSSCalcOperationNode::collectDirectRootComputationalDependencies const):
(WebCore::CSSCalcOperationNode::buildCssText):
(WebCore::CSSCalcOperationNode::customCSSText const):
(WebCore::CSSCalcOperationNode::dump const):
(WebCore::CSSCalcOperationNode::equals const):
(WebCore::CSSCalcOperationNode::evaluateOperator):
(WebCore::CSSCalcExpressionNodeParser::parseValue):
(WebCore::CSSCalcExpressionNodeParser::parseValueMultiplicativeExpression):
(WebCore::CSSCalcExpressionNodeParser::parseAdditiveValueExpression):
(WebCore::CSSCalcExpressionNodeParser::parseMinMaxExpression):
(WebCore::createBlendHalf):
(WebCore::createCSS):
(WebCore::CSSCalcPrimitiveValue::createCalcExpression const): Deleted.
(WebCore::CSSCalcPrimitiveValue::doubleValue const): Deleted.
(WebCore::CSSCalcPrimitiveValue::computeLengthPx const): Deleted.
(WebCore::CSSCalcPrimitiveValue::collectDirectComputationalDependencies const): Deleted.
(WebCore::CSSCalcPrimitiveValue::collectDirectRootComputationalDependencies const): Deleted.
(WebCore::CSSCalcPrimitiveValue::equals const): Deleted.
(WebCore::CSSCalcPrimitiveValue::dump const): Deleted.
(WebCore::CSSCalcOperation::create): Deleted.
(WebCore::CSSCalcOperation::createMinOrMax): Deleted.
(WebCore::CSSCalcOperation::createSimplified): Deleted.
(WebCore::CSSCalcOperation::primitiveType const): Deleted.
(WebCore::CSSCalcOperation::createCalcExpression const): Deleted.
(WebCore::CSSCalcOperation::doubleValue const): Deleted.
(WebCore::CSSCalcOperation::computeLengthPx const): Deleted.
(WebCore::CSSCalcOperation::collectDirectComputationalDependencies const): Deleted.
(WebCore::CSSCalcOperation::collectDirectRootComputationalDependencies const): Deleted.
(WebCore::CSSCalcOperation::buildCssText): Deleted.
(WebCore::CSSCalcOperation::customCSSText const): Deleted.
(WebCore::CSSCalcOperation::dump const): Deleted.
(WebCore::CSSCalcOperation::equals const): Deleted.
(WebCore::CSSCalcOperation::evaluateOperator): Deleted.

1:58 PM Changeset in webkit [252970] by Simon Fraser
  • 6 edits in trunk/Source/WebCore

Add a Calc log channel, and support type traits for calc-related classes
https://bugs.webkit.org/show_bug.cgi?id=204729

Reviewed by Dean Jackson.

Add type traits support for CalculationValue and CSSCalculationValue classes.

Add a Calc logging channel and dump post-parsing values, and in some error cases.s

  • css/CSSCalculationValue.cpp:

(WebCore::operator<<):
(WebCore::prettyPrintNode):
(WebCore::prettyPrintNodes):
(WebCore::CSSCalcPrimitiveValue::dump const):
(WebCore::CSSCalcOperation::create):
(WebCore::CSSCalcOperation::createMinOrMax):
(WebCore::CSSCalcOperation::dump const):
(WebCore::CSSCalcExpressionNodeParser::parseCalc):
(WebCore::createCSS):
(WebCore::CSSCalcValue::dump const):
(WebCore::CSSCalcValue::create):

  • css/CSSCalculationValue.h:
  • platform/CalculationValue.cpp:

(WebCore::CalcExpressionNumber::operator== const):
(WebCore::CalcExpressionOperation::operator== const):
(WebCore::CalcExpressionLength::operator== const):
(WebCore::CalcExpressionBlendLength::CalcExpressionBlendLength):
(WebCore::CalcExpressionBlendLength::operator== const):

  • platform/CalculationValue.h:

(WebCore::toCalcExpressionNumber): Deleted.
(WebCore::toCalcExpressionLength): Deleted.
(WebCore::toCalcExpressionOperation): Deleted.
(WebCore::toCalcExpressionBlendLength): Deleted.

  • platform/Logging.h:
9:51 AM Changeset in webkit [252969] by graouts@webkit.org
  • 3 edits in trunk/LayoutTests/imported/w3c

[Web Animations] Rebaseline some WPT expectations
https://bugs.webkit.org/show_bug.cgi?id=204724

Unreviewed test gardening.

  • web-platform-tests/css/css-animations/event-order.tentative-expected.txt:
  • web-platform-tests/web-animations/interfaces/Animation/style-change-events-expected.txt:
7:49 AM Changeset in webkit [252968] by Antti Koivisto
  • 2 edits in trunk/Source/WebCore

Regression (r252893): loader/stateobjects/pushstate-size.html is crashing on mac debug
https://bugs.webkit.org/show_bug.cgi?id=204725

Unreviewed followup to r252893.

  • rendering/RenderElement.h:

Increase bitfield size to fit the enum.

7:27 AM Changeset in webkit [252967] by Alan Bujtas
  • 3 edits in trunk/Source/WebCore

[LFC][IFC] Add support for word-spacing property
https://bugs.webkit.org/show_bug.cgi?id=204723
<rdar://problem/57541871>

Reviewed by Antti Koivisto.

  • layout/inlineformatting/InlineLineBuilder.cpp:

(WebCore::Layout::LineBuilder::TrimmableContent::append):

  • layout/inlineformatting/LineLayoutContext.cpp:

(WebCore::Layout::inlineItemWidth):

1:22 AM Changeset in webkit [252966] by graouts@webkit.org
  • 9 edits
    1 add in trunk

[Web Animations] Implement Animation.commitStyles()
https://bugs.webkit.org/show_bug.cgi?id=202193
<rdar://problem/55697790>

Reviewed by Dean Jackson.

LayoutTests/imported/w3c:

WPT test for Animation.commitStyles() now has 11 more PASS results.

  • web-platform-tests/web-animations/interfaces/Animation/commitStyles-expected.txt:

Source/WebCore:

We implement the Animation.commitStyles() method following the spec to the letter. We fail a few tests still because we don't support animation
composite operations and because of rounding errors when blending opacity styles.

  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • animation/KeyframeEffectStack.cpp:

(WebCore::KeyframeEffectStack::ensureEffectsAreSorted): Remove the animation sorting logic since it's now made available in WebAnimationUtilities.h.

  • animation/KeyframeEffectStack.h:

(WebCore::KeyframeEffectStack::cssAnimationNames const): New function needed to call compareAnimationsByCompositeOrder() in WebAnimation::commitStyles().

  • animation/WebAnimation.cpp:

(WebCore::WebAnimation::commitStyles): Implement the spec steps as specified in https://drafts.csswg.org/web-animations-1/#commit-computed-styles. We use
a CSSStyleDeclaration to copy the content of the existing inline "style" attribute, add the animated values and then serialize it into the "style" attribute.
Even though it would have been more convenient to use StyledElement::setInlineStyleProperty(), we do this to ensure mutation observers get notified of such
a change.

  • animation/WebAnimationUtilities.cpp: Added.

(WebCore::compareAnimationsByCompositeOrder): Copied the animation sorting logic previously implemented in KeyframeEffectStack::ensureEffectsAreSorted().

  • animation/WebAnimationUtilities.h:

Nov 30, 2019:

10:10 PM Changeset in webkit [252965] by timothy_horton@apple.com
  • 53 edits in trunk/Source

Make CompositeOperator and BlendMode encodable
https://bugs.webkit.org/show_bug.cgi?id=204722

Reviewed by Eric Carlson.

Source/WebCore:

Make CompositeOperator an enum class, and fix the fallout.
Add EnumTraits for CompositeOperator and BlendMode, so that they can be encoded.

  • css/CSSPrimitiveValueMappings.h:

(WebCore::CSSPrimitiveValue::CSSPrimitiveValue):
(WebCore::CSSPrimitiveValue::operator CompositeOperator const):

  • dom/Document.cpp:

(WebCore::Document::compositeOperatorForBackgroundColor const):

  • html/HTMLImageElement.cpp:

(WebCore::HTMLImageElement::HTMLImageElement):
(WebCore::HTMLImageElement::parseAttribute):

  • html/canvas/CanvasRenderingContext2D.cpp:

(WebCore::CanvasRenderingContext2D::drawTextInternal):

  • html/canvas/CanvasRenderingContext2DBase.cpp:

(WebCore::CanvasRenderingContext2DBase::State::State):
(WebCore::CanvasRenderingContext2DBase::setGlobalCompositeOperation):
(WebCore::CanvasRenderingContext2DBase::isFullCanvasCompositeMode):
(WebCore::CanvasRenderingContext2DBase::fillInternal):
(WebCore::CanvasRenderingContext2DBase::strokeInternal):
(WebCore::CanvasRenderingContext2DBase::clearRect):
(WebCore::CanvasRenderingContext2DBase::fillRect):
(WebCore::CanvasRenderingContext2DBase::strokeRect):
(WebCore::CanvasRenderingContext2DBase::drawImage):
(WebCore::CanvasRenderingContext2DBase::drawImageFromRect):
(WebCore::CanvasRenderingContext2DBase::fullCanvasCompositedDrawImage):

  • inspector/InspectorOverlay.cpp:

(WebCore::drawOutlinedQuadWithClip):

  • platform/graphics/CrossfadeGeneratedImage.cpp:

(WebCore::CrossfadeGeneratedImage::drawCrossfade):

  • platform/graphics/GraphicsContext.h:
  • platform/graphics/GraphicsLayer.cpp:

(WebCore::GraphicsLayer::dumpProperties const):

  • platform/graphics/GraphicsTypes.cpp:

(WebCore::parseCompositeAndBlendOperator):
(WebCore::compositeOperatorName):

  • platform/graphics/GraphicsTypes.h:
  • platform/graphics/Image.cpp:

(WebCore::Image::fillWithSolidColor):

  • platform/graphics/ImagePaintingOptions.h:
  • platform/graphics/ShadowBlur.cpp:

(WebCore::ShadowBlur::blurAndColorShadowBuffer):

  • platform/graphics/cairo/CairoOperations.cpp:

(WebCore::Cairo::drawNativeImage):

  • platform/graphics/cairo/CairoOperations.h:
  • platform/graphics/cairo/CairoUtilities.cpp:

(WebCore::toCairoCompositeOperator):

  • platform/graphics/cg/GraphicsContext3DCG.cpp:

(WebCore::GraphicsContext3D::paintToCanvas):

  • platform/graphics/cg/GraphicsContextCG.cpp:

(WebCore::selectCGBlendMode):

  • platform/graphics/filters/FEBlend.cpp:

(WebCore::FEBlend::platformApplySoftware):
(WebCore::FEBlend::externalRepresentation const):

  • platform/graphics/filters/FEComposite.cpp:

(WebCore::FEComposite::platformApplySoftware):

  • platform/graphics/filters/FEDropShadow.cpp:

(WebCore::FEDropShadow::platformApplySoftware):

  • platform/graphics/filters/SourceAlpha.cpp:

(WebCore::SourceAlpha::platformApplySoftware):

  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:

(WebCore::MediaPlayerPrivateGStreamer::paint):

  • platform/graphics/nicosia/NicosiaPaintingEngineBasic.cpp:

(Nicosia::PaintingEngineBasic::paint):

  • platform/graphics/nicosia/NicosiaPaintingEngineThreaded.cpp:

(Nicosia::paintLayer):

  • platform/graphics/texmap/coordinated/CoordinatedGraphicsLayer.cpp:

(WebCore::CoordinatedGraphicsLayer::flushCompositingStateForThisLayerOnly):

  • platform/graphics/win/Direct2DOperations.cpp:

(WebCore::Direct2D::State::setCompositeOperation):

  • platform/graphics/win/Direct2DOperations.h:
  • platform/graphics/win/ImageCGWin.cpp:

(WebCore::BitmapImage::getHBITMAPOfSize):

  • platform/graphics/win/ImageCairoWin.cpp:

(WebCore::BitmapImage::getHBITMAPOfSize):

  • rendering/InlineFlowBox.cpp:

(WebCore::InlineFlowBox::paintMask):

  • rendering/InlineFlowBox.h:
  • rendering/RenderBox.cpp:

(WebCore::RenderBox::paintMaskImages):

  • rendering/RenderBox.h:
  • rendering/RenderBoxModelObject.cpp:

(WebCore::RenderBoxModelObject::paintFillLayerExtended):

  • rendering/RenderBoxModelObject.h:
  • rendering/RenderEmbeddedObject.cpp:

(WebCore::RenderEmbeddedObject::paintReplaced):

  • rendering/RenderImage.cpp:

(WebCore::RenderImage::paintIntoRect):

  • rendering/RenderLayerBacking.cpp:

(WebCore::supportsDirectlyCompositedBoxDecorations):

  • rendering/RenderTreeAsText.cpp:
  • rendering/RenderView.cpp:

(WebCore::RenderView::paintBoxDecorations):

  • rendering/style/FillLayer.cpp:

(WebCore::FillLayer::FillLayer):
(WebCore::FillLayer::hasOpaqueImage const):

  • rendering/style/FillLayer.h:

(WebCore::FillLayer::initialFillComposite):

  • svg/graphics/SVGImage.cpp:

(WebCore::SVGImage::nativeImage):
(WebCore::SVGImage::draw):

Source/WebKit:

  • UIProcess/cairo/BackingStoreCairo.cpp:

(WebKit::BackingStore::incorporateUpdate):

  • WebProcess/Plugins/PluginProxy.cpp:

(WebKit::PluginProxy::paint):
(WebKit::PluginProxy::update):

  • WebProcess/WebPage/FindController.cpp:

(WebKit::FindController::drawRect):

Source/WebKitLegacy/win:

  • FullscreenVideoController.cpp:

(FullscreenVideoController::draw):

  • WebView.cpp:

(WebView::paintWithDirect2D):
(WebView::paintIntoBackingStore):

8:20 PM Changeset in webkit [252964] by Ross Kirsling
  • 4 edits in trunk

test262-runner should dump YAML with correct encoding
https://bugs.webkit.org/show_bug.cgi?id=204493

Reviewed by Saam Barati.

JSTests:

  • test262/expectations.yaml:

Fix double-encoding of test failure output.

Tools:

Even though we spit out correctly-encoded output to the terminal, Perl's YAML module insists upon *re*-encoding
to UTF-8 when dumping to file. This works out in the end because an analogous double-decode occurs when loading
from file. Still, it's really annoying that expectations.yaml has garbled (i.e. double-encoded) text.

We shouldn't modify libraries directly, but we can copy-paste DumpFile/LoadFile into Runner.pm and tweak!

  • Scripts/test262/Runner.pm:

(DumpFile):
(LoadFile):
Add custom versions of DumpFile/LoadFile which do not execute binmode $OUT, ':utf8';.

5:09 PM Changeset in webkit [252963] by Alan Bujtas
  • 2 edits in trunk/Tools

[LFC] Expand tests coverage (2648 new tests -> 3980).

  • LayoutReloaded/misc/LFC-passing-tests.txt:
5:06 PM Changeset in webkit [252962] by timothy_horton@apple.com
  • 15 edits in trunk/Source

Reimplement some PlatformCALayer methods using GraphicsContext instead of CGContextRef
https://bugs.webkit.org/show_bug.cgi?id=204698

Reviewed by Sam Weinig.

Source/WebCore:

In order to make PlatformCALayer-level DisplayList recording possible,
reimplement a few methods in terms of WebCore::GraphicsContext instead
of CGContextRef directly. Namely, collectRectsToPaint, drawLayerContents,
and drawRepaintIndicator.

In the drawLayerContents case, there are operations (like setting the
AppKit global graphics context) that cannot be done without a platform
context. In those cases, we skip that operation if we don't have a
platform context.

Anything depending on this downstream will break and need to be
implemented a different way in the DisplayList case.

  • platform/graphics/GraphicsContext.h:
  • platform/graphics/ca/PlatformCALayer.cpp:

(WebCore::PlatformCALayer::drawRepaintIndicator):

  • platform/graphics/ca/PlatformCALayer.h:
  • platform/graphics/ca/TileGrid.cpp:

(WebCore::TileGrid::platformCALayerPaintContents):

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

(WebCore::PlatformCALayer::collectRectsToPaint):
(WebCore::PlatformCALayer::drawLayerContents):
(WebCore::PlatformCALayerCocoa::enumerateRectsBeingDrawn):

  • platform/graphics/ca/win/PlatformCALayerWin.cpp:

(PlatformCALayer::collectRectsToPaint):

  • platform/graphics/mac/WebLayer.mm:

(-[WebLayer drawInContext:]):

Source/WebKit:

  • Shared/RemoteLayerTree/RemoteLayerBackingStore.h:
  • Shared/RemoteLayerTree/RemoteLayerBackingStore.mm:

(WebKit::RemoteLayerBackingStore::drawInContext):
(WebKit::RemoteLayerBackingStore::enumerateRectsBeingDrawn):

  • WebProcess/WebPage/RemoteLayerTree/PlatformCALayerRemote.cpp:

(WebKit::PlatformCALayerRemote::enumerateRectsBeingDrawn):

  • WebProcess/WebPage/RemoteLayerTree/PlatformCALayerRemote.h:
11:08 AM Changeset in webkit [252961] by youenn@apple.com
  • 5 edits in trunk/Source/WebCore

Simplify CoreAudioCaptureSource suspension logic
https://bugs.webkit.org/show_bug.cgi?id=201720

Reviewed by Eric Carlson.

Instead of going through the source to suspend/resume the audio unit,
we directly go to the shared unit, which nows notifies the clients that they are muted or unmuted.

To simplify things, we no longer schedule tasks to resume/suspend/reconfigure.
All of these orders are started from the main thread synchronously.

No observable change of behavior.

  • platform/mediastream/mac/BaseAudioSharedUnit.cpp:

(WebCore::BaseAudioSharedUnit::startProducingData):
(WebCore::BaseAudioSharedUnit::reconfigure):
(WebCore::BaseAudioSharedUnit::resume):
(WebCore::BaseAudioSharedUnit::suspend):

  • platform/mediastream/mac/BaseAudioSharedUnit.h:
  • platform/mediastream/mac/CoreAudioCaptureSource.cpp:

(WebCore::CoreAudioCaptureSourceFactory::beginInterruption):
(WebCore::CoreAudioCaptureSourceFactory::endInterruption):
(WebCore::CoreAudioCaptureSourceFactory::scheduleReconfiguration):
(WebCore::CoreAudioCaptureSource::initializeToStartProducingData):
(WebCore::CoreAudioCaptureSource::startProducingData):
(WebCore::CoreAudioCaptureSource::stopProducingData):
(WebCore::CoreAudioCaptureSource::settingsDidChange):
(WebCore::CoreAudioCaptureSource::scheduleReconfiguration): Deleted.
(WebCore::CoreAudioCaptureSource::beginInterruption): Deleted.
(WebCore::CoreAudioCaptureSource::endInterruption): Deleted.

  • platform/mediastream/mac/CoreAudioCaptureSource.h:
11:07 AM Changeset in webkit [252960] by youenn@apple.com
  • 3 edits
    2 adds in trunk

Update RealtimeOutgoingAudioSourceCocoa::m_writeCount when sampleRate changes
https://bugs.webkit.org/show_bug.cgi?id=204606

Reviewed by Eric Carlson.

Source/WebCore:

Update m_writeCount to make sure our high/low buffer computation is done right.

Test: webrtc/audio-samplerate-change.html

  • platform/mediastream/mac/RealtimeOutgoingAudioSourceCocoa.cpp:

(WebCore::RealtimeOutgoingAudioSourceCocoa::audioSamplesAvailable):

LayoutTests:

  • webrtc/audio-samplerate-change-expected.txt: Added.
  • webrtc/audio-samplerate-change.html: Added.
8:30 AM Changeset in webkit [252959] by Antti Koivisto
  • 6 edits
    2 adds in trunk/Source/WebCore

Move path implementation functions in LineLayoutTraversal to *Path classes
https://bugs.webkit.org/show_bug.cgi?id=204714

Reviewed by Sam Weinig.

Simplify LineLayoutTraversal and make it easier to extend.

  • Turn SimplePath and ComplexPath structs into classes
  • Move them to separate files
  • Make path implementation functions class members, called via generic lambdas
  • Instead of inheriting Box/TextBox to iterators, make it a member variable.
  • Move the path variant to Box, avoiding use of templates.
  • WebCore.xcodeproj/project.pbxproj:
  • rendering/RenderTreeAsText.cpp:

(WebCore::writeTextBox):

  • rendering/line/LineLayoutTraversal.cpp:

(WebCore::LineLayoutTraversal::TextBoxIterator::TextBoxIterator):
(WebCore::LineLayoutTraversal::TextBoxIterator::traverseNextInVisualOrder):
(WebCore::LineLayoutTraversal::TextBoxIterator::traverseNextInTextOrder):
(WebCore::LineLayoutTraversal::TextBoxIterator::operator== const):
(WebCore::LineLayoutTraversal::TextBoxIterator::atEnd const):
(WebCore::LineLayoutTraversal::ElementBoxIterator::ElementBoxIterator):
(WebCore::LineLayoutTraversal::ElementBoxIterator::atEnd const):
(WebCore::LineLayoutTraversal::TextBoxIterator::ComplexPath::nextInlineTextBoxInTextOrder const): Deleted.

  • rendering/line/LineLayoutTraversal.h:

(WebCore::LineLayoutTraversal::TextBoxIterator::TextBoxIterator):
(WebCore::LineLayoutTraversal::TextBoxIterator::operator* const):
(WebCore::LineLayoutTraversal::TextBoxIterator::operator-> const):
(WebCore::LineLayoutTraversal::ElementBoxIterator::ElementBoxIterator):
(WebCore::LineLayoutTraversal::ElementBoxIterator::operator* const):
(WebCore::LineLayoutTraversal::ElementBoxIterator::operator-> const):
(WebCore::LineLayoutTraversal::Box::Box):
(WebCore::LineLayoutTraversal::Box::rect const):
(WebCore::LineLayoutTraversal::Box::logicalRect const):
(WebCore::LineLayoutTraversal::Box::isLeftToRightDirection const):
(WebCore::LineLayoutTraversal::Box::dirOverride const):
(WebCore::LineLayoutTraversal::Box::isLineBreak const):
(WebCore::LineLayoutTraversal::TextBox::hasHyphen const):
(WebCore::LineLayoutTraversal::TextBox::TextBox):
(WebCore::LineLayoutTraversal::TextBox::text const):
(WebCore::LineLayoutTraversal::TextBox::localStartOffset const):
(WebCore::LineLayoutTraversal::TextBox::localEndOffset const):
(WebCore::LineLayoutTraversal::TextBox::length const):
(WebCore::LineLayoutTraversal::TextBox::isLastOnLine const):
(WebCore::LineLayoutTraversal::TextBox::isLast const):
(): Deleted.
(WebCore::LineLayoutTraversal::Box<Iterator>::rect const): Deleted.
(WebCore::LineLayoutTraversal::Box<Iterator>::logicalRect const): Deleted.
(WebCore::LineLayoutTraversal::Box<Iterator>::isLeftToRightDirection const): Deleted.
(WebCore::LineLayoutTraversal::Box<Iterator>::dirOverride const): Deleted.
(WebCore::LineLayoutTraversal::Box<Iterator>::isLineBreak const): Deleted.
(WebCore::LineLayoutTraversal::Box<Iterator>::iterator const): Deleted.
(WebCore::LineLayoutTraversal::TextBox<Iterator>::hasHyphen const): Deleted.
(WebCore::LineLayoutTraversal::TextBox<Iterator>::text const): Deleted.
(WebCore::LineLayoutTraversal::TextBox<Iterator>::localStartOffset const): Deleted.
(WebCore::LineLayoutTraversal::TextBox<Iterator>::localEndOffset const): Deleted.
(WebCore::LineLayoutTraversal::TextBox<Iterator>::length const): Deleted.
(WebCore::LineLayoutTraversal::TextBox<Iterator>::isLastOnLine const): Deleted.
(WebCore::LineLayoutTraversal::TextBox<Iterator>::isLast const): Deleted.

  • rendering/line/LineLayoutTraversalComplexPath.h: Added.

(WebCore::LineLayoutTraversal::ComplexPath::ComplexPath):
(WebCore::LineLayoutTraversal::ComplexPath::rect const):
(WebCore::LineLayoutTraversal::ComplexPath::logicalRect const):
(WebCore::LineLayoutTraversal::ComplexPath::isLeftToRightDirection const):
(WebCore::LineLayoutTraversal::ComplexPath::dirOverride const):
(WebCore::LineLayoutTraversal::ComplexPath::isLineBreak const):
(WebCore::LineLayoutTraversal::ComplexPath::hasHyphen const):
(WebCore::LineLayoutTraversal::ComplexPath::text const):
(WebCore::LineLayoutTraversal::ComplexPath::localStartOffset const):
(WebCore::LineLayoutTraversal::ComplexPath::localEndOffset const):
(WebCore::LineLayoutTraversal::ComplexPath::length const):
(WebCore::LineLayoutTraversal::ComplexPath::isLastOnLine const):
(WebCore::LineLayoutTraversal::ComplexPath::isLast const):
(WebCore::LineLayoutTraversal::ComplexPath::traverseNextTextBoxInVisualOrder):
(WebCore::LineLayoutTraversal::ComplexPath::traverseNextTextBoxInTextOrder):
(WebCore::LineLayoutTraversal::ComplexPath::operator== const):
(WebCore::LineLayoutTraversal::ComplexPath::atEnd const):
(WebCore::LineLayoutTraversal::ComplexPath::inlineTextBox const):
(WebCore::LineLayoutTraversal::ComplexPath::nextInlineTextBoxInTextOrder const):

  • rendering/line/LineLayoutTraversalSimplePath.h: Added.

(WebCore::LineLayoutTraversal::SimplePath::SimplePath):
(WebCore::LineLayoutTraversal::SimplePath::rect const):
(WebCore::LineLayoutTraversal::SimplePath::logicalRect const):
(WebCore::LineLayoutTraversal::SimplePath::isLeftToRightDirection const):
(WebCore::LineLayoutTraversal::SimplePath::dirOverride const):
(WebCore::LineLayoutTraversal::SimplePath::isLineBreak const):
(WebCore::LineLayoutTraversal::SimplePath::hasHyphen const):
(WebCore::LineLayoutTraversal::SimplePath::text const):
(WebCore::LineLayoutTraversal::SimplePath::localStartOffset const):
(WebCore::LineLayoutTraversal::SimplePath::localEndOffset const):
(WebCore::LineLayoutTraversal::SimplePath::length const):
(WebCore::LineLayoutTraversal::SimplePath::isLastOnLine const):
(WebCore::LineLayoutTraversal::SimplePath::isLast const):
(WebCore::LineLayoutTraversal::SimplePath::traverseNextTextBoxInVisualOrder):
(WebCore::LineLayoutTraversal::SimplePath::traverseNextTextBoxInTextOrder):
(WebCore::LineLayoutTraversal::SimplePath::operator== const):
(WebCore::LineLayoutTraversal::SimplePath::atEnd const):

7:16 AM Changeset in webkit [252958] by Alan Bujtas
  • 8 edits in trunk

[LFC][IFC] Add support for hyphenate-limit-lines
https://bugs.webkit.org/show_bug.cgi?id=204712
<rdar://problem/57536727>

Reviewed by Antti Koivisto.

Source/WebCore:

Now IFC (hyphenation)feature matches SLL.

  • layout/inlineformatting/InlineFormattingContext.cpp:

(WebCore::Layout::InlineFormattingContext::lineLayout):
(WebCore::Layout::InlineFormattingContext::computedIntrinsicWidthForConstraint const):

  • layout/inlineformatting/InlineLineBreaker.cpp:

(WebCore::Layout::LineBreaker::wordBreakingBehavior const):
(WebCore::Layout::LineBreaker::tryBreakingTextRun const):

  • layout/inlineformatting/InlineLineBreaker.h:

(WebCore::Layout::LineBreaker::setHyphenationDisabled):

  • layout/inlineformatting/LineLayoutContext.cpp:

(WebCore::Layout::LineLayoutContext::LineLayoutContext):
(WebCore::Layout::LineLayoutContext::layoutLine):
(WebCore::Layout::LineLayoutContext::close):
(WebCore::Layout::LineLayoutContext::processUncommittedContent):

  • layout/inlineformatting/LineLayoutContext.h:

Tools:

  • LayoutReloaded/misc/LFC-passing-tests.txt:
5:15 AM Changeset in webkit [252957] by graouts@webkit.org
  • 6 edits
    4 adds in trunk

[Web Animations] Forward-filling animations should not schedule updates while filling
https://bugs.webkit.org/show_bug.cgi?id=204697
<rdar://problem/57534005>

Reviewed by Dean Jackson.

Source/WebCore:

Tests: webanimations/no-scheduling-while-filling-accelerated.html

webanimations/no-scheduling-while-filling-non-accelerated.html

For two different reasons, we would continuously schedule updates for animations in their "after" phase, ie. when they would have "fill: forwards"
and be finished.

In the case of non-accelerated animations, that was because we would also schedule an immedate update in DocumentTimeline::scheduleNextTick() provided
we had relevant animations that weren't accelerated. But since animations in their "after" phase are still considered relevant, which means that they
would override the base style with an animated value, this caused the unnecessary scheduled updates.

To address this, we run WebAnimation::timeToNextTick() in DocumentTimeline::scheduleNextTick() for all relevant animations and we teach that function
to schedule an immediate update only during the "active" phase, and to schedule a timed update only in the "before" phase computing the delay until
the animation enters the "active" phase.

While performing this work, we found a couple of other issues that weren't apparent until we had this more efficient scheduling in place.

First, we would not allow any additional calls to DocumentTimeline::scheduleAnimationResolution() to actually schedule an update while we were in the
process of updating animations. While this wasn't a problem before because the mere presence of relevant animations would cause an upadte, we now had
to allow any animation changing timing properties as promises would resolve and events would be dispatched during the animation update to cause further
animation updates to be scheduled. So we moved the "m_animationResolutionScheduled" flag reset earlier in DocumentTimeline::updateAnimationsAndSendEvents()
before we actually run the animation update procedure.

Following that change, we also had to make sure that timing changes made through the evaluation of the pending play and pause tasks would _not_ cause
animations to be scheduled, which meant that an animation that became non-pending (ie. its first tick occured) would always schedule one immediate
animation update. So now we have an extra "silent" flag to WebAnimation::timingDidChange() which is only set to true when called from either
WebAnimation::runPendingPlayTask() or WebAnimation::runPendingPauseTask().

Finally, one existing test showed that calling KeyframeEffect::setKeyframes() while running animations didn't cause an animation update to be scheduled
since a call to WebAnimation::effectTimingDidChange() was lacking. This is now addressed.

As for accelerated animations, the extraneous animation scheduling occured because we would get in a state where we would record an "accelerated action"
to stop the accelerated animation but the accelerated animation had already completed and the renderer for the target element was no longer composited.
This meant that KeyframeEffect::applyPendingAcceleratedActions() would not perform any work and the pending accelerated action would remain in the
DocumentTimeline queue and cause an update to be scheduled to try again, endlessly.

To address that, we first check in KeyframeEffect::addPendingAcceleratedAction() if the recorded action differs from the last recorded action, avoiding
unnecessary work, and in KeyframeEffect::applyPendingAcceleratedActions(), if our last recorded action was "Stop" and the renderer was not composited,
we discard all pending accelerated actions.

  • animation/DocumentTimeline.cpp:

(WebCore::DocumentTimeline::updateAnimationsAndSendEvents):
(WebCore::DocumentTimeline::scheduleNextTick):

  • animation/KeyframeEffect.cpp:

(WebCore::KeyframeEffect::setKeyframes):
(WebCore::KeyframeEffect::addPendingAcceleratedAction):
(WebCore::KeyframeEffect::applyPendingAcceleratedActions):

  • animation/WebAnimation.cpp:

(WebCore::WebAnimation::timingDidChange):
(WebCore::WebAnimation::runPendingPlayTask):
(WebCore::WebAnimation::runPendingPauseTask):
(WebCore::WebAnimation::timeToNextTick const):

  • animation/WebAnimation.h:

LayoutTests:

Adding tests checking that we don't schedule animation updates while filling for accelerated and non-accelerated animations alike.

  • webanimations/no-scheduling-while-filling-accelerated-expected.txt: Added.
  • webanimations/no-scheduling-while-filling-accelerated.html: Added.
  • webanimations/no-scheduling-while-filling-non-accelerated-expected.txt: Added.
  • webanimations/no-scheduling-while-filling-non-accelerated.html: Added.
4:32 AM Changeset in webkit [252956] by youenn@apple.com
  • 3 edits in trunk/Source/WebCore

MockAudioSharedUnit should reset its last render time on start/stop/reconfigure
https://bugs.webkit.org/show_bug.cgi?id=204600
<rdar://problem/57438874>

Reviewed by Eric Carlson.

MockAudioSharedUnit was not resetting its last render time on stop/start/reconfigure.
If stopping for a long time and then restarting, the unit would flood the audio pipe with lots of data
and confuse the pipe.
Remove some member variables inherited from MockRealtimeAudioSource which are no longer needed.

Covered by imported/w3c/web-platform-tests/webrtc/RTCRtpReceiver-getSynchronizationSources.https.html being no longer flaky.

  • platform/mediastream/mac/MockAudioSharedUnit.h:
  • platform/mediastream/mac/MockAudioSharedUnit.mm:

(WebCore::MockAudioSharedUnit::reconfigureAudioUnit):
(WebCore::MockAudioSharedUnit::startInternal):

2:40 AM Changeset in webkit [252955] by Philippe Normand
  • 2 edits in trunk/Source/WebCore

Unreviewed, follow-up to r252938, now fixing the MSE/EME build

  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.h:

supportsKeySystem needs to be public because it's referenced from
the MSE MediaPlayerPrivate sub-class.

2:33 AM Changeset in webkit [252954] by Philippe Normand
  • 2 edits in trunk/Source/WebCore

Unreviewed, GTK LTS build fix after r252950.

  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.h:

supportsKeySystem can't be ifdeffed.

12:15 AM Changeset in webkit [252953] by aakash_jain@apple.com
  • 3 edits in trunk/Tools

[EWS] Do not retry layout-tests build if the flaky test failures are also present in clean tree run
https://bugs.webkit.org/show_bug.cgi?id=204704

Reviewed by Alexey Proskuryakov.

  • BuildSlaveSupport/ews-build/steps.py:

(AnalyzeLayoutTestsResults.start):

  • BuildSlaveSupport/ews-build/steps_unittest.py:

(TestAnalyzeLayoutTestsResults.test_flaky_and_inconsistent_failures_with_clean_tree_failures): Changed expected outcome to SUCCESS.
(TestAnalyzeLayoutTestsResults.test_flaky_and_consistent_failures_with_clean_tree_failures): Ditto.

Nov 29, 2019:

4:03 PM Changeset in webkit [252952] by Alan Bujtas
  • 4 edits in trunk

[LFC][IFC] Add support for hyphenate-limit-before and hyphenate-limit-after
https://bugs.webkit.org/show_bug.cgi?id=204710
<rdar://problem/57535210>

Reviewed by Antti Koivisto.

Source/WebCore:

  • layout/inlineformatting/InlineLineBreaker.cpp:

(WebCore::Layout::LineBreaker::tryBreakingTextRun const):

Tools:

  • LayoutReloaded/misc/LFC-passing-tests.txt:
2:17 PM Changeset in webkit [252951] by commit-queue@webkit.org
  • 6 edits
    4 deletes in trunk

Unreviewed, rolling out r252944.
https://bugs.webkit.org/show_bug.cgi?id=204709

Broke Windows Build (Requested by aakashja_ on #webkit).

Reverted changeset:

"[Web Animations] Forward-filling animations should not
schedule updates while filling"
https://bugs.webkit.org/show_bug.cgi?id=204697
https://trac.webkit.org/changeset/252944

12:27 PM Changeset in webkit [252950] by cturner@igalia.com
  • 6 edits in trunk/Source/WebCore

[GStreamer] MediaPlayerPrivateGStreamer style cleanups
https://bugs.webkit.org/show_bug.cgi?id=204617

Reviewed by Xabier Rodriguez-Calvar.

Follow-up commit to bug 204352 addressing style issues in the
existing player code. The main issues addressed are naming
violations, adding final to types not overridden and organizing
better the scope of names in the classes.

Covered by existing tests.

  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:

(WebCore::initializeDebugCategory):
(WebCore::MediaPlayerPrivateGStreamer::loadFull):
(WebCore::MediaPlayerPrivateGStreamer::prepareToPlay):
(WebCore::MediaPlayerPrivateGStreamer::play):
(WebCore::MediaPlayerPrivateGStreamer::pause):
(WebCore::MediaPlayerPrivateGStreamer::paused const):
(WebCore::MediaPlayerPrivateGStreamer::doSeek):
(WebCore::MediaPlayerPrivateGStreamer::seek):
(WebCore::MediaPlayerPrivateGStreamer::updatePlaybackRate):
(WebCore::MediaPlayerPrivateGStreamer::currentMediaTime const):
(WebCore::MediaPlayerPrivateGStreamer::setRate):
(WebCore::MediaPlayerPrivateGStreamer::setPreservesPitch):
(WebCore::MediaPlayerPrivateGStreamer::setPreload):
(WebCore::MediaPlayerPrivateGStreamer::buffered const):
(WebCore::MediaPlayerPrivateGStreamer::maxMediaTimeSeekable const):
(WebCore::MediaPlayerPrivateGStreamer::maxTimeLoaded const):
(WebCore::MediaPlayerPrivateGStreamer::didLoadingProgress const):
(WebCore::MediaPlayerPrivateGStreamer::totalBytes const):
(WebCore::MediaPlayerPrivateGStreamer::changePipelineState):
(WebCore::MediaPlayerPrivateGStreamer::notifyPlayerOfVideo):
(WebCore::MediaPlayerPrivateGStreamer::notifyPlayerOfAudio):
(WebCore::MediaPlayerPrivateGStreamer::notifyPlayerOfText):
(WebCore::MediaPlayerPrivateGStreamer::platformDuration const):
(WebCore::MediaPlayerPrivateGStreamer::isMuted const):
(WebCore::MediaPlayerPrivateGStreamer::commitLoad):
(WebCore::MediaPlayerPrivateGStreamer::fillTimerFired):
(WebCore::MediaPlayerPrivateGStreamer::loadingFailed):
(WebCore::MediaPlayerPrivateGStreamer::playbackPosition const):
(WebCore::MediaPlayerPrivateGStreamer::enableTrack):
(WebCore::MediaPlayerPrivateGStreamer::updateTracks):
(WebCore::MediaPlayerPrivateGStreamer::handleSyncMessage):
(WebCore::MediaPlayerPrivateGStreamer::naturalSize const):
(WebCore::MediaPlayerPrivateGStreamer::setMuted):
(WebCore::MediaPlayerPrivateGStreamer::handleMessage):
(WebCore::MediaPlayerPrivateGStreamer::updateBufferingStatus):
(WebCore::MediaPlayerPrivateGStreamer::processMpegTsSection):
(WebCore::MediaPlayerPrivateGStreamer::processTableOfContentsEntry):
(WebCore::MediaPlayerPrivateGStreamer::asyncStateChangeDone):
(WebCore::MediaPlayerPrivateGStreamer::updateStates):
(WebCore::MediaPlayerPrivateGStreamer::loadNextLocation):
(WebCore::MediaPlayerPrivateGStreamer::didEnd):
(WebCore::MediaPlayerPrivateGStreamer::updateDownloadBufferingFlag):
(WebCore::MediaPlayerPrivateGStreamer::createGSTPlayBin):
(WebCore::MediaPlayerPrivateGStreamer::canSaveMediaData const):
(WebCore::MediaPlayerPrivateGStreamer::acceleratedRenderingStateChanged):
(WebCore::MediaPlayerPrivateGStreamer::pushTextureToCompositor):
(WebCore::MediaPlayerPrivateGStreamer::triggerRepaint):
(WebCore::MediaPlayerPrivateGStreamer::cancelRepaint):
(WebCore::MediaPlayerPrivateGStreamer::paint):
(WebCore::MediaPlayerPrivateGStreamer::copyVideoTextureToPlatformTexture):
(WebCore::MediaPlayerPrivateGStreamer::nativeImageForCurrentTime):
(WebCore::MediaPlayerPrivateGStreamer::movieLoadType const):
(WebCore::MediaPlayerPrivateGStreamer::createVideoSink):
(WebCore::MediaPlayerPrivateGStreamer::decodedFrameCount const):
(WebCore::MediaPlayerPrivateGStreamer::droppedFrameCount const):
(WebCore::MediaPlayerPrivateGStreamer::attemptToDecryptWithLocalInstance):
(WebCore::MediaPlayerPrivateGStreamer::setWaitingForKey):
(WebCore::MediaPlayerPrivateGStreamer::initializeDebugCategory): Deleted.
(WebCore::MediaPlayerPrivateGStreamer::sizeChanged): Deleted.
(WebCore::MediaPlayerPrivateGStreamer::muted const): Deleted.

  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.h:

(WebCore::MediaPlayerPrivateGStreamer::pipeline const):
(WebCore::MediaPlayerPrivateGStreamer::mediaPlayer const): Deleted.
(WebCore::MediaPlayerPrivateGStreamer::isLiveStream const): Deleted.

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

(WebCore::MediaPlayerPrivateGStreamerMSE::pause):
(WebCore::MediaPlayerPrivateGStreamerMSE::durationMediaTime const):
(WebCore::MediaPlayerPrivateGStreamerMSE::seek):
(WebCore::MediaPlayerPrivateGStreamerMSE::doSeek):
(WebCore::MediaPlayerPrivateGStreamerMSE::maybeFinishSeek):
(WebCore::MediaPlayerPrivateGStreamerMSE::seeking const):
(WebCore::MediaPlayerPrivateGStreamerMSE::waitForSeekCompleted):
(WebCore::MediaPlayerPrivateGStreamerMSE::updateStates):
(WebCore::MediaPlayerPrivateGStreamerMSE::asyncStateChangeDone):
(WebCore::MediaPlayerPrivateGStreamerMSE::maxMediaTimeSeekable const):

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

(WebCore::MediaSourceClientGStreamerMSE::flush):

11:03 AM Changeset in webkit [252949] by commit-queue@webkit.org
  • 2 edits in trunk/Source/JavaScriptCore

Use default implementation for JSVALUE64 with GCC on unknown platform.
https://bugs.webkit.org/show_bug.cgi?id=204701

Building on ppc64le and s390x failed with
#error "Unknown architecture."
Use the default implementation as fallback in these cases.

Patch by Eike Rathke <erack@redhat.com> on 2019-11-29
Reviewed by Saam Barati.

  • heap/GCMemoryOperations.h:

(JSC::gcSafeMemcpy):
(JSC::gcSafeMemmove):
(JSC::gcSafeZeroMemory):

10:54 AM Changeset in webkit [252948] by Antti Koivisto
  • 8 edits in trunk/Tools

Add mechanism for enabling internal and experimental features from run-webkit-test command line
https://bugs.webkit.org/show_bug.cgi?id=204702

Reviewed by Antoine Quint.

Add --internal-feature and --experimental-feature flags to TestRunner and run-webkit-tests.
This is useful for running existing tests with different feature enabled without modifying
anything else. For example:

run-webkit-tests --internal-feature LayoutFormattingContextRenderTreeIntegrationEnabled

  • Scripts/webkitpy/layout_tests/run_webkit_tests.py:

(parse_args):

  • Scripts/webkitpy/port/base.py:

(Port.internal_feature):
(Port):
(Port.experimental_feature):

  • Scripts/webkitpy/port/driver.py:

(Driver.cmd_line):

  • WebKitTestRunner/Options.cpp:

(WTR::handleOptionExperimentalFeature):
(WTR::handleOptionInternalFeature):
(WTR::OptionsHandler::OptionsHandler):

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

(WTR::TestController::initialize):
(WTR::TestController::testOptionsForTest const):

  • WebKitTestRunner/TestController.h:
10:34 AM Changeset in webkit [252947] by Alan Bujtas
  • 3 edits in trunk/Source/WebCore

[LFC][IFC] Add support for simple hyphenation
https://bugs.webkit.org/show_bug.cgi?id=204706
<rdar://problem/57533803>

Reviewed by Antti Koivisto.

This is just -webkit-hyphens: auto, no limit-before/after/lines support yet.

  • layout/Verification.cpp:

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

  • layout/inlineformatting/InlineLineBreaker.cpp:

(WebCore::Layout::LineBreaker::tryBreakingTextRun const):

  • layout/inlineformatting/text/TextUtil.cpp:

(WebCore::Layout::TextUtil::split):

10:20 AM Changeset in webkit [252946] by aakash_jain@apple.com
  • 2 edits in trunk/Tools

Add a unit-test to new EWS for scenario when there is flakiness with patch and also on clean tree
https://bugs.webkit.org/show_bug.cgi?id=204707
<rdar://problem/57533998>

Unreviewed unit-test.

  • BuildSlaveSupport/ews-build/steps_unittest.py:

(TestAnalyzeLayoutTestsResults.test_mildly_flaky_patch_with_some_tree_redness_and_flakiness):

10:15 AM Changeset in webkit [252945] by graouts@webkit.org
  • 4 edits in trunk/Source

[Web Animations] Enable WebAnimationsCSSIntegrationEnabled by default
https://bugs.webkit.org/show_bug.cgi?id=204650
<rdar://problem/45562752>

Reviewed by Dean Jackson.

Source/WebCore:

  • page/RuntimeEnabledFeatures.h:

Source/WebKit:

  • Shared/WebPreferences.yaml:
10:11 AM Changeset in webkit [252944] by graouts@webkit.org
  • 6 edits
    4 adds in trunk

[Web Animations] Forward-filling animations should not schedule updates while filling
https://bugs.webkit.org/show_bug.cgi?id=204697

Reviewed by Dean Jackson.

Source/WebCore:

Tests: webanimations/no-scheduling-while-filling-accelerated.html

webanimations/no-scheduling-while-filling-non-accelerated.html

For two different reasons, we would continuously schedule updates for animations in their "after" phase, ie. when they would have "fill: forwards"
and be finished.

In the case of non-accelerated animations, that was because we would also schedule an immedate update in DocumentTimeline::scheduleNextTick() provided
we had relevant animations that weren't accelerated. But since animations in their "after" phase are still considered relevant, which means that they
would override the base style with an animated value, this caused the unnecessary scheduled updates.

To address this, we run WebAnimation::timeToNextTick() in DocumentTimeline::scheduleNextTick() for all relevant animations and we teach that function
to schedule an immediate update only during the "active" phase, and to schedule a timed update only in the "before" phase computing the delay until
the animation enters the "active" phase.

While performing this work, we found a couple of other issues that weren't apparent until we had this more efficient scheduling in place.

First, we would not allow any additional calls to DocumentTimeline::scheduleAnimationResolution() to actually schedule an update while we were in the
process of updating animations. While this wasn't a problem before because the mere presence of relevant animations would cause an upadte, we now had
to allow any animation changing timing properties as promises would resolve and events would be dispatched during the animation update to cause further
animation updates to be scheduled. So we moved the "m_animationResolutionScheduled" flag reset earlier in DocumentTimeline::updateAnimationsAndSendEvents()
before we actually run the animation update procedure.

Following that change, we also had to make sure that timing changes made through the evaluation of the pending play and pause tasks would _not_ cause
animations to be scheduled, which meant that an animation that became non-pending (ie. its first tick occured) would always schedule one immediate
animation update. So now we have an extra "silent" flag to WebAnimation::timingDidChange() which is only set to true when called from either
WebAnimation::runPendingPlayTask() or WebAnimation::runPendingPauseTask().

Finally, one existing test showed that calling KeyframeEffect::setKeyframes() while running animations didn't cause an animation update to be scheduled
since a call to WebAnimation::effectTimingDidChange() was lacking. This is now addressed.

As for accelerated animations, the extraneous animation scheduling occured because we would get in a state where we would record an "accelerated action"
to stop the accelerated animation but the accelerated animation had already completed and the renderer for the target element was no longer composited.
This meant that KeyframeEffect::applyPendingAcceleratedActions() would not perform any work and the pending accelerated action would remain in the
DocumentTimeline queue and cause an update to be scheduled to try again, endlessly.

To address that, we first check in KeyframeEffect::addPendingAcceleratedAction() if the recorded action differs from the last recorded action, avoiding
unnecessary work, and in KeyframeEffect::applyPendingAcceleratedActions(), if our last recorded action was "Stop" and the renderer was not composited,
we discard all pending accelerated actions.

  • animation/DocumentTimeline.cpp:

(WebCore::DocumentTimeline::updateAnimationsAndSendEvents):
(WebCore::DocumentTimeline::scheduleNextTick):

  • animation/KeyframeEffect.cpp:

(WebCore::KeyframeEffect::setKeyframes):
(WebCore::KeyframeEffect::addPendingAcceleratedAction):
(WebCore::KeyframeEffect::applyPendingAcceleratedActions):

  • animation/WebAnimation.cpp:

(WebCore::WebAnimation::timingDidChange):
(WebCore::WebAnimation::runPendingPlayTask):
(WebCore::WebAnimation::runPendingPauseTask):
(WebCore::WebAnimation::timeToNextTick const):

  • animation/WebAnimation.h:

LayoutTests:

Adding tests checking that we don't schedule animation updates while filling for accelerated and non-accelerated animations alike.

  • webanimations/no-scheduling-while-filling-accelerated-expected.txt: Added.
  • webanimations/no-scheduling-while-filling-accelerated.html: Added.
  • webanimations/no-scheduling-while-filling-non-accelerated-expected.txt: Added.
  • webanimations/no-scheduling-while-filling-non-accelerated.html: Added.
10:09 AM Changeset in webkit [252943] by aakash_jain@apple.com
  • 2 edits in trunk/Tools

Add a unit-test to old EWS for scenario when there is flakiness with patch and also on clean tree
https://bugs.webkit.org/show_bug.cgi?id=204707

Unreviewed unit-test.

  • Scripts/webkitpy/tool/bot/commitqueuetask_unittest.py:
8:30 AM Changeset in webkit [252942] by Antti Koivisto
  • 12 edits in trunk/Source/WebCore

[LFC][IFC] Vector allocate LineBoxes and Display::Runs
https://bugs.webkit.org/show_bug.cgi?id=204699

Reviewed by Zalan Bujtas.

Also rename inlineRuns -> displayRuns to match the type.

  • layout/FormattingContextGeometry.cpp:

(WebCore::Layout::FormattingContext::Geometry::contentHeightForFormattingContextRoot const):

  • layout/RenderBlockFlowLineLayout.cpp:

(WebCore::Layout::RenderBlockFlowLineLayout::layout):

  • layout/Verification.cpp:

(WebCore::Layout::outputMismatchingSimpleLineInformationIfNeeded):
(WebCore::Layout::outputMismatchingComplexLineInformationIfNeeded):

  • layout/blockformatting/BlockFormattingContextGeometry.cpp:

(WebCore::Layout::BlockFormattingContext::Geometry::inFlowNonReplacedHeightAndMargin):

  • layout/blockformatting/BlockMarginCollapse.cpp:

(WebCore::Layout::BlockFormattingContext::MarginCollapse::marginsCollapseThrough const):

  • layout/displaytree/DisplayPainter.cpp:

(WebCore::Display::paintInlineContent):

  • layout/inlineformatting/InlineFormattingContext.cpp:

(WebCore::Layout::InlineFormattingContext::setDisplayBoxesForLine):
(WebCore::Layout::InlineFormattingContext::invalidateFormattingState):

  • layout/inlineformatting/InlineFormattingContextQuirks.cpp:

(WebCore::Layout::InlineFormattingContext::Quirks::lineDescentNeedsCollapsing const):

  • layout/inlineformatting/InlineFormattingState.h:

(WebCore::Layout::InlineFormattingState::displayRuns const):
(WebCore::Layout::InlineFormattingState::displayRuns):
(WebCore::Layout::InlineFormattingState::addLineBox):
(WebCore::Layout::InlineFormattingState::lineBoxForRun const):
(WebCore::Layout::InlineFormattingState::addDisplayRun):
(WebCore::Layout::InlineFormattingState::resetDisplayRuns):
(WebCore::Layout::InlineFormattingState::inlineRuns const): Deleted.
(WebCore::Layout::InlineFormattingState::inlineRuns): Deleted.
(WebCore::Layout::InlineFormattingState::addInlineRun): Deleted.
(WebCore::Layout::InlineFormattingState::resetInlineRuns): Deleted.

  • layout/inlineformatting/InlineLineBuilder.cpp:

(WebCore::Layout::LineBuilder::alignContentVertically):
(WebCore::Layout::LineBuilder::adjustBaselineAndLineHeight):

  • layout/layouttree/LayoutTreeBuilder.cpp:

(WebCore::Layout::outputInlineRuns):

6:29 AM Changeset in webkit [252941] by Alan Bujtas
  • 7 edits in trunk/Source/WebCore

[LFC][IFC] Trim trailing uncommitted content when needed
https://bugs.webkit.org/show_bug.cgi?id=204655
<rdar://problem/57511053>

Reviewed by Antti Koivisto.

When we try to fit the trailing inline runs on the line, we have to make sure trimmable trailing whitespace content is taken into account.

<div style="float: left">text<span style="padding-right: 20px"> </span></div>
<- As we compute the content width of floating box using shrink to fit, we trim the trailing whitespace at the end and
the final width will include the following runs [text: 41px][container start: 0px][container end: 20px] -> 61px (it would be 65px with the whitespace content)
As we place the inline content and we reach the final trailing content [ ][container end], the line has only 20px space left, while the content is 24px long.
At this point we need to retry the available space check by taking both the line and the pending content's trimmable width into account.

  • layout/inlineformatting/InlineLineBreaker.cpp:

(WebCore::Layout::LineBreaker::breakingContextForInlineContent):
(WebCore::Layout::LineBreaker::Content::isAtContentBoundary):
(WebCore::Layout::LineBreaker::Content::append):
(WebCore::Layout::LineBreaker::Content::hasNonWhitespaceOrInlineBox const):
(WebCore::Layout::LineBreaker::Content::hasTextContentOnly const):
(WebCore::Layout::LineBreaker::Content::trailingTrimmableWidth const):

  • layout/inlineformatting/InlineLineBreaker.h:
  • layout/inlineformatting/InlineLineBuilder.cpp:

(WebCore::Layout::shouldPreserveTrailingContent):

  • layout/inlineformatting/LineLayoutContext.cpp:

(WebCore::Layout::LineLayoutContext::processUncommittedContent):

  • layout/inlineformatting/text/TextUtil.cpp:

(WebCore::Layout::TextUtil::shouldPreserveTrailingWhitespace):

  • layout/inlineformatting/text/TextUtil.h:
6:20 AM Changeset in webkit [252940] by Alan Bujtas
  • 5 edits in trunk/Source/WebCore

[LFC][IFC] Move and rename LineLayoutContext::UncommittedContent
https://bugs.webkit.org/show_bug.cgi?id=204693
<rdar://problem/57523727>

Reviewed by Antti Koivisto.

LineBreaker::Content represents the amount of content we commit to line breaking at a time.
Normally it holds only one InlineItem e.g [text][ ][content] <- we submit 3 entries to line breaking, but
with (mostly)inline containers, it can hold a long list of InlineItems e.g
<span>1</span>2<span>3</span>4<span>5</span>6
[container start][1][container end][2][container start][3][container end][4][container start][5][container end][6]
<- this is one entry to submit.
This patch is also in preparation for fixing trailing trimmable content handling.

  • layout/inlineformatting/InlineLineBreaker.cpp:

(WebCore::Layout::LineBreaker::breakingContextForInlineContent):
(WebCore::Layout::LineBreaker::wordBreakingBehavior const):
(WebCore::Layout::LineBreaker::tryBreakingTextRun const):
(WebCore::Layout::LineBreaker::Content::isAtContentBoundary):
(WebCore::Layout::LineBreaker::Content::append):
(WebCore::Layout::LineBreaker::Content::reset):
(WebCore::Layout::LineBreaker::Content::trim):

  • layout/inlineformatting/InlineLineBreaker.h:

(WebCore::Layout::LineBreaker::Content::runs):
(WebCore::Layout::LineBreaker::Content::runs const):
(WebCore::Layout::LineBreaker::Content::isEmpty const):
(WebCore::Layout::LineBreaker::Content::size const):
(WebCore::Layout::LineBreaker::Content::width const):

  • layout/inlineformatting/LineLayoutContext.cpp:

(WebCore::Layout::LineLayoutContext::placeInlineItem):
(WebCore::Layout::LineLayoutContext::processUncommittedContent):
(WebCore::Layout::LineLayoutContext::UncommittedContent::add): Deleted.
(WebCore::Layout::LineLayoutContext::UncommittedContent::reset): Deleted.
(WebCore::Layout::LineLayoutContext::shouldProcessUncommittedContent const): Deleted.
(WebCore::Layout::LineLayoutContext::UncommittedContent::trim): Deleted.

  • layout/inlineformatting/LineLayoutContext.h:

(WebCore::Layout::LineLayoutContext::UncommittedContent::runs): Deleted.
(WebCore::Layout::LineLayoutContext::UncommittedContent::runs const): Deleted.
(WebCore::Layout::LineLayoutContext::UncommittedContent::isEmpty const): Deleted.
(WebCore::Layout::LineLayoutContext::UncommittedContent::size const): Deleted.
(WebCore::Layout::LineLayoutContext::UncommittedContent::width const): Deleted.

5:17 AM Changeset in webkit [252939] by commit-queue@webkit.org
  • 3 edits in trunk/Tools

Move jsc-i386 from old to new EWS
https://bugs.webkit.org/show_bug.cgi?id=204667

Patch by Paulo Matos <Paulo Matos> on 2019-11-29
Reviewed by Aakash Jain.

  • BuildSlaveSupport/ews-app/ews/views/statusbubble.py:

(StatusBubble):

  • QueueStatusServer/config/queues.py:
3:11 AM Changeset in webkit [252938] by Philippe Normand
  • 6 edits in trunk/Source/WebCore

Unreviewed, rolling out r252937.

broke GTK/WPE builds and most likely media track notification
support

Reverted changeset:

"[GStreamer] MediaPlayerPrivateGStreamer style cleanups"
https://bugs.webkit.org/show_bug.cgi?id=204617
https://trac.webkit.org/changeset/252937

2:24 AM Changeset in webkit [252937] by cturner@igalia.com
  • 6 edits in trunk/Source/WebCore

[GStreamer] MediaPlayerPrivateGStreamer style cleanups
https://bugs.webkit.org/show_bug.cgi?id=204617

Reviewed by Xabier Rodriguez-Calvar.

Follow-up commit to bug 204352 addressing style issues in the
existing player code. The main issues addressed are naming
violations, adding final to types not overridden and organizing
better the scope of names in the classes.

Covered by existing tests.

  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:

(WebCore::initializeDebugCategory):
(WebCore::MediaPlayerPrivateGStreamer::loadFull):
(WebCore::MediaPlayerPrivateGStreamer::prepareToPlay):
(WebCore::MediaPlayerPrivateGStreamer::play):
(WebCore::MediaPlayerPrivateGStreamer::pause):
(WebCore::MediaPlayerPrivateGStreamer::paused const):
(WebCore::MediaPlayerPrivateGStreamer::doSeek):
(WebCore::MediaPlayerPrivateGStreamer::seek):
(WebCore::MediaPlayerPrivateGStreamer::updatePlaybackRate):
(WebCore::MediaPlayerPrivateGStreamer::currentMediaTime const):
(WebCore::MediaPlayerPrivateGStreamer::setRate):
(WebCore::MediaPlayerPrivateGStreamer::setPreservesPitch):
(WebCore::MediaPlayerPrivateGStreamer::setPreload):
(WebCore::MediaPlayerPrivateGStreamer::buffered const):
(WebCore::MediaPlayerPrivateGStreamer::maxMediaTimeSeekable const):
(WebCore::MediaPlayerPrivateGStreamer::maxTimeLoaded const):
(WebCore::MediaPlayerPrivateGStreamer::didLoadingProgress const):
(WebCore::MediaPlayerPrivateGStreamer::totalBytes const):
(WebCore::MediaPlayerPrivateGStreamer::changePipelineState):
(WebCore::MediaPlayerPrivateGStreamer::notifyPlayerOfVideo):
(WebCore::MediaPlayerPrivateGStreamer::notifyPlayerOfAudio):
(WebCore::MediaPlayerPrivateGStreamer::notifyPlayerOfText):
(WebCore::MediaPlayerPrivateGStreamer::platformDuration const):
(WebCore::MediaPlayerPrivateGStreamer::isMuted const):
(WebCore::MediaPlayerPrivateGStreamer::commitLoad):
(WebCore::MediaPlayerPrivateGStreamer::fillTimerFired):
(WebCore::MediaPlayerPrivateGStreamer::loadingFailed):
(WebCore::MediaPlayerPrivateGStreamer::playbackPosition const):
(WebCore::MediaPlayerPrivateGStreamer::enableTrack):
(WebCore::MediaPlayerPrivateGStreamer::updateTracks):
(WebCore::MediaPlayerPrivateGStreamer::handleSyncMessage):
(WebCore::MediaPlayerPrivateGStreamer::naturalSize const):
(WebCore::MediaPlayerPrivateGStreamer::setMuted):
(WebCore::MediaPlayerPrivateGStreamer::handleMessage):
(WebCore::MediaPlayerPrivateGStreamer::updateBufferingStatus):
(WebCore::MediaPlayerPrivateGStreamer::processMpegTsSection):
(WebCore::MediaPlayerPrivateGStreamer::processTableOfContentsEntry):
(WebCore::MediaPlayerPrivateGStreamer::asyncStateChangeDone):
(WebCore::MediaPlayerPrivateGStreamer::updateStates):
(WebCore::MediaPlayerPrivateGStreamer::loadNextLocation):
(WebCore::MediaPlayerPrivateGStreamer::didEnd):
(WebCore::MediaPlayerPrivateGStreamer::updateDownloadBufferingFlag):
(WebCore::MediaPlayerPrivateGStreamer::createGSTPlayBin):
(WebCore::MediaPlayerPrivateGStreamer::canSaveMediaData const):
(WebCore::MediaPlayerPrivateGStreamer::acceleratedRenderingStateChanged):
(WebCore::MediaPlayerPrivateGStreamer::pushTextureToCompositor):
(WebCore::MediaPlayerPrivateGStreamer::triggerRepaint):
(WebCore::MediaPlayerPrivateGStreamer::cancelRepaint):
(WebCore::MediaPlayerPrivateGStreamer::paint):
(WebCore::MediaPlayerPrivateGStreamer::copyVideoTextureToPlatformTexture):
(WebCore::MediaPlayerPrivateGStreamer::nativeImageForCurrentTime):
(WebCore::MediaPlayerPrivateGStreamer::movieLoadType const):
(WebCore::MediaPlayerPrivateGStreamer::createVideoSink):
(WebCore::MediaPlayerPrivateGStreamer::decodedFrameCount const):
(WebCore::MediaPlayerPrivateGStreamer::droppedFrameCount const):
(WebCore::MediaPlayerPrivateGStreamer::attemptToDecryptWithLocalInstance):
(WebCore::MediaPlayerPrivateGStreamer::setWaitingForKey):
(WebCore::MediaPlayerPrivateGStreamer::initializeDebugCategory): Deleted.
(WebCore::MediaPlayerPrivateGStreamer::sizeChanged): Deleted.
(WebCore::MediaPlayerPrivateGStreamer::muted const): Deleted.

  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.h:

(WebCore::MediaPlayerPrivateGStreamer::pipeline const):
(WebCore::MediaPlayerPrivateGStreamer::mediaPlayer const): Deleted.
(WebCore::MediaPlayerPrivateGStreamer::isLiveStream const): Deleted.

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

(WebCore::MediaPlayerPrivateGStreamerMSE::pause):
(WebCore::MediaPlayerPrivateGStreamerMSE::durationMediaTime const):
(WebCore::MediaPlayerPrivateGStreamerMSE::seek):
(WebCore::MediaPlayerPrivateGStreamerMSE::doSeek):
(WebCore::MediaPlayerPrivateGStreamerMSE::maybeFinishSeek):
(WebCore::MediaPlayerPrivateGStreamerMSE::seeking const):
(WebCore::MediaPlayerPrivateGStreamerMSE::waitForSeekCompleted):
(WebCore::MediaPlayerPrivateGStreamerMSE::updateStates):
(WebCore::MediaPlayerPrivateGStreamerMSE::asyncStateChangeDone):
(WebCore::MediaPlayerPrivateGStreamerMSE::maxMediaTimeSeekable const):

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

(WebCore::MediaSourceClientGStreamerMSE::flush):

Nov 28, 2019:

10:53 PM Changeset in webkit [252936] by Fujii Hironori
  • 27 edits in trunk

Remove ENABLE_KEYBOARD_CODE_ATTRIBUTE and ENABLE_KEYBOARD_KEY_ATTRIBUTE macros
https://bugs.webkit.org/show_bug.cgi?id=204666

.:

Reviewed by Ross Kirsling and Don Olmstead.

  • Source/cmake/OptionsFTW.cmake:
  • Source/cmake/OptionsMac.cmake:
  • Source/cmake/WebKitFeatures.cmake:

Source/JavaScriptCore:

Reviewed by Ross Kirsling and Don Olmstead.

  • Configurations/FeatureDefines.xcconfig:

Source/WebCore:

Reviewed by Ross Kirsling and Don Olmstead.

No behavior change.

  • Configurations/FeatureDefines.xcconfig:
  • dom/KeyboardEvent.cpp:

(WebCore::KeyboardEvent::KeyboardEvent):
(WebCore::KeyboardEvent::initKeyboardEvent):

  • dom/KeyboardEvent.h:
  • dom/KeyboardEvent.idl:
  • platform/PlatformKeyboardEvent.h:

(WebCore::PlatformKeyboardEvent::PlatformKeyboardEvent):
(WebCore::PlatformKeyboardEvent::keyIdentifier const):
(WebCore::PlatformKeyboardEvent::key const):
(WebCore::PlatformKeyboardEvent::code const):

Source/WebCore/PAL:

Reviewed by Ross Kirsling and Don Olmstead.

  • Configurations/FeatureDefines.xcconfig:

Source/WebKit:

No behavior change.

  • Configurations/FeatureDefines.xcconfig:
  • Shared/WebEvent.h:

(WebKit::WebKeyboardEvent::unmodifiedText const):
(WebKit::WebKeyboardEvent::key const):
(WebKit::WebKeyboardEvent::code const):

  • Shared/WebEventConversion.cpp:

(WebKit::WebKit2PlatformKeyboardEvent::WebKit2PlatformKeyboardEvent):

  • Shared/WebKeyboardEvent.cpp:

(WebKit::WebKeyboardEvent::WebKeyboardEvent):
(WebKit::WebKeyboardEvent::encode const):
(WebKit::WebKeyboardEvent::decode):

  • WebProcess/WebPage/ios/WebPageIOS.mm:

(WebKit::WebPage::generateSyntheticEditingCommand):

Source/WebKitLegacy/mac:

Reviewed by Ross Kirsling and Don Olmstead.

  • Configurations/FeatureDefines.xcconfig:

Source/WTF:

Reviewed by Ross Kirsling and Don Olmstead.

  • wtf/FeatureDefines.h:

Tools:

Reviewed by Ross Kirsling and Don Olmstead.

  • Scripts/webkitperl/FeatureList.pm:
  • TestWebKitAPI/Configurations/FeatureDefines.xcconfig:
10:27 PM Changeset in webkit [252935] by Simon Fraser
  • 13 edits
    2 adds in trunk

Element jumps to wrong position after perspective change on ancestor
https://bugs.webkit.org/show_bug.cgi?id=202505
<rdar://problem/55930710>

Reviewed by Antti Koivisto.
Source/WebCore:

This modifies the fix in r252879 to be better-performing and to avoid a new call site for updateLayerPositions*.

Style can change in a way that creates or destroys RenderLayers, but does not result in a layout; this can happen
with changes of properties like opacity or perspective. When this happens, something needs to trigger a call to
RenderLayer::updateLayerPositions() on the root of the changed subtree. This is best done after the style update,
to avoid multiple updateLayerPositions traversals.

Implement this by storing on RenderView the rootmost changed layer, and having FrameView::styleDidChange()
call updateLayerPositionsAfterStyleChange() if we're after a style change with no pending layout.

Test: compositing/geometry/layer-position-after-removing-perspective.html

  • page/FrameView.cpp:

(WebCore::FrameView::styleDidChange):

  • page/FrameView.h:
  • platform/ScrollView.h:
  • rendering/RenderElement.cpp:

(WebCore::RenderElement::didAttachChild):

  • rendering/RenderLayer.cpp:

(WebCore::RenderLayer::insertOnlyThisLayer):
(WebCore::RenderLayer::removeOnlyThisLayer):
(WebCore::findCommonAncestor):
(WebCore::RenderLayer::commonAncestorWithLayer const):

  • rendering/RenderLayer.h:
  • rendering/RenderLayerModelObject.cpp:

(WebCore::RenderLayerModelObject::createLayer):
(WebCore::RenderLayerModelObject::styleDidChange):

  • rendering/RenderView.cpp:

(WebCore::RenderView::layerChildrenChangedDuringStyleChange):
(WebCore::RenderView::takeStyleChangeLayerTreeMutationRoot):

  • rendering/RenderView.h:

LayoutTests:

  • compositing/geometry/layer-position-after-removing-perspective-expected.html: Added.
  • compositing/geometry/layer-position-after-removing-perspective.html: Added.
  • css3/blending/repaint/blend-mode-isolate-stacking-context-expected.txt: Rebaselined.
1:30 PM Changeset in webkit [252934] by Jonathan Bedard
  • 2 edits in trunk/LayoutTests

[WebGL] Garden dedicated queue (Part 10)
https://bugs.webkit.org/show_bug.cgi?id=204547

Unreviewed test gardening.

  • webgl/TestExpectations:
12:12 PM Changeset in webkit [252933] by aakash_jain@apple.com
  • 2 edits in trunk/Tools

Rename 'submit to new EWS' to 'Submit for EWS analysis'
https://bugs.webkit.org/show_bug.cgi?id=204692

Unreviewed minor fix.

  • BuildSlaveSupport/ews-app/ews/templates/statusbubble.html:
12:06 PM Changeset in webkit [252932] by Antti Koivisto
  • 4 edits in trunk/Source/WebCore

[LFC][IFC] Remove m_inlineRunToLineMap
https://bugs.webkit.org/show_bug.cgi?id=204688

Reviewed by Zalan Bujtas.

Add line index to Display::Run and use it to locate the line it is on.

This is 4-5% progression in PerformanceTests/Layout/line-layout-simple.html

  • layout/displaytree/DisplayRun.h:

(WebCore::Display::Run::lineIndex const):
(WebCore::Display::Run::Run):

  • layout/inlineformatting/InlineFormattingContext.cpp:

(WebCore::Layout::InlineFormattingContext::setDisplayBoxesForLine):

  • layout/inlineformatting/InlineFormattingState.h:

(WebCore::Layout::InlineFormattingState::lineBoxForRun const):
(WebCore::Layout::InlineFormattingState::addInlineRun):
(WebCore::Layout::InlineFormattingState::resetInlineRuns):

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

Old EWS is showing 'Submit to old EWS' button on every patch
https://bugs.webkit.org/show_bug.cgi?id=204691

Unreviewed minor fix.

  • QueueStatusServer/handlers/statusbubble.py:

(StatusBubble.get): Disabled Submit to old EWS button since almost all the queues
have been removed from old EWS.

8:54 AM Changeset in webkit [252930] by Diego Pino Garcia
  • 2 edits in trunk/Tools

test262-runner ends with SIGPIPE signal
https://bugs.webkit.org/show_bug.cgi?id=194816

Reviewed by Carlos Alberto Lopez Perez.

  • Scripts/test262/Runner.pm:

(main):

8:26 AM Changeset in webkit [252929] by Jonathan Bedard
  • 2 edits in trunk/LayoutTests

[WebGL] Garden dedicated queue (Part 9)
https://bugs.webkit.org/show_bug.cgi?id=204547

Unreviewed test gardening.

  • webgl/TestExpectations:
8:06 AM Changeset in webkit [252928] by Antti Koivisto
  • 3 edits in trunk/Source/WebCore

[LFC][IFC] Vector allocate InlineItemRuns
https://bugs.webkit.org/show_bug.cgi?id=204680

Reviewed by Zalan Bujtas.

Reduce heap allocations during inline layout.

This is ~15% speedup in PerformanceTests/Layout/line-layout-simple.html with LFC-in-render-tree enabled.
With other improvements it makes LFC path faster than simple line layout in this test.

  • layout/inlineformatting/InlineLineBuilder.cpp:

(WebCore::Layout::LineBuilder::ContinousContent::ContinousContent):
(WebCore::Layout::LineBuilder::ContinousContent::append):
(WebCore::Layout::LineBuilder::ContinousContent::close):

Move to LineBuilder namespace.

(WebCore::Layout::LineBuilder::close):
(WebCore::Layout::LineBuilder::removeTrailingTrimmableContent):
(WebCore::Layout::LineBuilder::appendNonBreakableSpace):
(WebCore::Layout::LineBuilder::appendTextContent):
(WebCore::Layout::LineBuilder::appendNonReplacedInlineBox):
(WebCore::Layout::LineBuilder::appendLineBreak):
(WebCore::Layout::LineBuilder::TrimmableContent::append):
(WebCore::Layout::LineBuilder::formattingContext const):
(WebCore::Layout::LineBuilder::InlineItemRun::InlineItemRun):
(WebCore::Layout::LineBuilder::InlineItemRun::setCollapsesToZeroAdvanceWidth):
(WebCore::Layout::InlineItemRun::layoutBox const): Deleted.
(WebCore::Layout::InlineItemRun::logicalRect const): Deleted.
(WebCore::Layout::InlineItemRun::textContext const): Deleted.
(WebCore::Layout::InlineItemRun::isText const): Deleted.
(WebCore::Layout::InlineItemRun::isBox const): Deleted.
(WebCore::Layout::InlineItemRun::isContainerStart const): Deleted.
(WebCore::Layout::InlineItemRun::isContainerEnd const): Deleted.
(WebCore::Layout::InlineItemRun::isForcedLineBreak const): Deleted.
(WebCore::Layout::InlineItemRun::type const): Deleted.
(WebCore::Layout::InlineItemRun::setIsCollapsed): Deleted.
(WebCore::Layout::InlineItemRun::isCollapsed const): Deleted.
(WebCore::Layout::InlineItemRun::isCollapsedToZeroAdvanceWidth const): Deleted.
(WebCore::Layout::InlineItemRun::isCollapsible const): Deleted.
(WebCore::Layout::InlineItemRun::isWhitespace const): Deleted.
(WebCore::Layout::InlineItemRun::hasExpansionOpportunity const): Deleted.
(WebCore::Layout::InlineItemRun::InlineItemRun): Deleted.
(WebCore::Layout::InlineItemRun::setCollapsesToZeroAdvanceWidth): Deleted.

Move InlineItemRun to header in LineBuilder namespace so we can use directly in m_inlineItemRuns vector.

(WebCore::Layout::ContinousContent::canBeExpanded): Deleted.
(WebCore::Layout::ContinousContent::canBeMerged const): Deleted.
(WebCore::Layout::ContinousContent::ContinousContent): Deleted.
(WebCore::Layout::ContinousContent::append): Deleted.
(WebCore::Layout::ContinousContent::close): Deleted.

  • layout/inlineformatting/InlineLineBuilder.h:

(WebCore::Layout::LineBuilder::InlineItemRun::layoutBox const):
(WebCore::Layout::LineBuilder::InlineItemRun::logicalRect const):
(WebCore::Layout::LineBuilder::InlineItemRun::textContext const):
(WebCore::Layout::LineBuilder::InlineItemRun::isText const):
(WebCore::Layout::LineBuilder::InlineItemRun::isBox const):
(WebCore::Layout::LineBuilder::InlineItemRun::isContainerStart const):
(WebCore::Layout::LineBuilder::InlineItemRun::isContainerEnd const):
(WebCore::Layout::LineBuilder::InlineItemRun::isForcedLineBreak const):
(WebCore::Layout::LineBuilder::InlineItemRun::type const):
(WebCore::Layout::LineBuilder::InlineItemRun::setIsCollapsed):
(WebCore::Layout::LineBuilder::InlineItemRun::isCollapsed const):
(WebCore::Layout::LineBuilder::InlineItemRun::isCollapsedToZeroAdvanceWidth const):
(WebCore::Layout::LineBuilder::InlineItemRun::isCollapsible const):
(WebCore::Layout::LineBuilder::InlineItemRun::isWhitespace const):
(WebCore::Layout::LineBuilder::InlineItemRun::hasExpansionOpportunity const):
(WebCore::Layout::LineBuilder::TrimmableContent::runIndexes):

Make TrimmableContent collect indexes to InlineItemRun vector instead of pointer.
We only ever append to the vector so the indexes stay valid for TrimmableContent lifetime.

(WebCore::Layout::LineBuilder::TrimmableContent::isEmpty const):
(WebCore::Layout::LineBuilder::TrimmableContent::clear):
(WebCore::Layout::LineBuilder::TrimmableContent::runs): Deleted.

8:03 AM Changeset in webkit [252927] by Antti Koivisto
  • 2 edits in trunk/Source/WebCore

Cache integer font metrics for performance
https://bugs.webkit.org/show_bug.cgi?id=204668

Reviewed by Zalan Bujtas.

Line layout uses integer metrics and queries them a lot. Avoid repeated rounding.

This is >10% speedup in PerformanceTests/Layout/line-layout-simple.html with LFC.

  • platform/graphics/FontMetrics.h:

(WebCore::FontMetrics::floatAscent const):
(WebCore::FontMetrics::setAscent):
(WebCore::FontMetrics::floatDescent const):
(WebCore::FontMetrics::setDescent):
(WebCore::FontMetrics::floatLineGap const):
(WebCore::FontMetrics::setLineGap):
(WebCore::FontMetrics::floatLineSpacing const):
(WebCore::FontMetrics::setLineSpacing):
(WebCore::FontMetrics::hasCapHeight const):
(WebCore::FontMetrics::floatCapHeight const):
(WebCore::FontMetrics::setCapHeight):
(WebCore::FontMetrics::ascent const):
(WebCore::FontMetrics::descent const):
(WebCore::FontMetrics::lineGap const):
(WebCore::FontMetrics::lineSpacing const):
(WebCore::FontMetrics::capHeight const):
(WebCore::FontMetrics::reset):

8:03 AM Changeset in webkit [252926] by aakash_jain@apple.com
  • 2 edits in trunk/Tools

Removed ENABLED_QUEUES logic from ews-app
https://bugs.webkit.org/show_bug.cgi?id=204683

Unreviewed minor fix.

  • BuildSlaveSupport/ews-app/ews/views/statusbubble.py:

(StatusBubble): Removed ENABLED_QUEUES.
(StatusBubble._build_bubbles_for_patch):
(StatusBubble._should_show_bubble_for_queue): Deleted.

7:43 AM Changeset in webkit [252925] by aakash_jain@apple.com
  • 5 edits in trunk/Tools

[ews] Enable Windows queue on new EWS
https://bugs.webkit.org/show_bug.cgi?id=204243

Reviewed by Jonathan Bedard.

  • BuildSlaveSupport/ews-app/ews/views/statusbubble.py: Enabled windows queue bubble on new EWS.
  • BuildSlaveSupport/ews-build/config.json: Enabled the scheduler for windows queue. Removed the disabled Try_Userpass scheduler.
  • BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Scripts/BubbleQueueServer.js:

(BubbleQueueServer): Removed windows ews queue from bot-watcher's dashboard.

  • QueueStatusServer/config/queues.py: Removed windows queue from old EWS.
6:49 AM Changeset in webkit [252924] by Alan Bujtas
  • 4 edits in trunk/Source/WebCore

[LFC][IFC] Adjust the line's is-visually-empty status after trimming the trailing whitespace content
https://bugs.webkit.org/show_bug.cgi?id=204660
<rdar://problem/57513035>

Reviewed by Antti Koivisto.

We need to check if the line is still visually empty after trimming the trailing content.

  • layout/inlineformatting/InlineLineBox.h:

(WebCore::Layout::LineBox::setIsConsideredEmpty):

  • layout/inlineformatting/InlineLineBuilder.cpp:

(WebCore::Layout::LineBuilder::removeTrailingTrimmableContent):
(WebCore::Layout::LineBuilder::appendTextContent):

  • layout/inlineformatting/InlineLineBuilder.h:
6:44 AM Changeset in webkit [252923] by Alan Bujtas
  • 3 edits in trunk/Source/WebCore

[LFC][IFC] Re-introduce LineBuilder::isVisuallyNonEmpty function
https://bugs.webkit.org/show_bug.cgi?id=204658
<rdar://problem/57512248>

Reviewed by Antti Koivisto.

LineBuilder::isVisuallyNonEmpty() used to loop through the runs an check if the runs are visually empty or not.
This time it takes the run as the parameter and decides whether this particular run is visually empty or not.
This patch is in preparation for fixing the line's visually-empty state after trimming the trailing runs.

  • layout/inlineformatting/InlineLineBuilder.cpp:

(WebCore::Layout::LineBuilder::append):
(WebCore::Layout::LineBuilder::appendNonBreakableSpace):
(WebCore::Layout::LineBuilder::appendTextContent):
(WebCore::Layout::LineBuilder::appendNonReplacedInlineBox):
(WebCore::Layout::LineBuilder::appendReplacedInlineBox):
(WebCore::Layout::LineBuilder::appendLineBreak):
(WebCore::Layout::LineBuilder::isVisuallyNonEmpty const):

  • layout/inlineformatting/InlineLineBuilder.h:
6:34 AM Changeset in webkit [252922] by Alan Bujtas
  • 2 edits in trunk/Source/WebCore

[LFC][IFC] adjustBaselineAndLineHeight should be called before resetting the line in quirk mode
https://bugs.webkit.org/show_bug.cgi?id=204662
<rdar://problem/57513178>

Reviewed by Antti Koivisto.

  • layout/inlineformatting/InlineLineBuilder.cpp:

(WebCore::Layout::LineBuilder::close):
(WebCore::Layout::LineBuilder::alignContentVertically):

6:24 AM Changeset in webkit [252921] by Alan Bujtas
  • 2 edits in trunk/Source/WebCore

[LFC][IFC] Fix LineLayoutContext::shouldProcessUncommittedContent logic
https://bugs.webkit.org/show_bug.cgi?id=204656
<rdar://problem/57511221>

Reviewed by Antti Koivisto.

Move the [text][text] and [ ][text] checks further down because we adjust the "lastUncomittedContent" by skipping [container start][container end] items.
(This was recently regressed at r252859)

  • layout/inlineformatting/LineLayoutContext.cpp:

(WebCore::Layout::LineLayoutContext::shouldProcessUncommittedContent const):

6:22 AM Changeset in webkit [252920] by Alan Bujtas
  • 2 edits in trunk/Source/WebCore

[LFC] canUseSimplifiedTextMeasuring should check for FontCascade::Complex
https://bugs.webkit.org/show_bug.cgi?id=204663
<rdar://problem/57513642>

Reviewed by Antti Koivisto.

  • layout/layouttree/LayoutTreeBuilder.cpp:

(WebCore::Layout::canUseSimplifiedTextMeasuring):

4:57 AM Changeset in webkit [252919] by magomez@igalia.com
  • 3 edits
    17 adds in trunk/LayoutTests

Unreviewed GTK and WPE gardening after r252916.

  • platform/gtk/TestExpectations:
  • platform/gtk/css3/blending/svg-blend-hard-light-expected.txt: Added.
  • platform/gtk/imported/w3c/web-platform-tests/svg/import/paths-data-18-f-manual-expected.txt: Added.
  • platform/gtk/imported/w3c/web-platform-tests/svg/import/paths-data-20-f-manual-expected.txt: Added.
  • platform/gtk/imported/w3c/web-platform-tests/svg/import/shapes-polygon-03-t-manual-expected.txt: Added.
  • platform/gtk/imported/w3c/web-platform-tests/svg/import/struct-dom-07-f-manual-expected.txt: Added.
  • platform/gtk/imported/w3c/web-platform-tests/svg/import/struct-svg-02-f-manual-expected.txt: Added.
  • platform/gtk/imported/w3c/web-platform-tests/svg/import/svgdom-over-01-f-manual-expected.txt: Added.
  • platform/gtk/imported/w3c/web-platform-tests/svg/path/bearing/absolute-expected.txt: Added.
  • platform/gtk/imported/w3c/web-platform-tests/svg/path/bearing/relative-expected.txt: Added.
  • platform/gtk/imported/w3c/web-platform-tests/svg/path/bearing/zero-expected.txt: Added.
  • platform/gtk/imported/w3c/web-platform-tests/svg/path/closepath/segment-completing-expected.txt: Added.
  • platform/gtk/imported/w3c/web-platform-tests/svg/path/error-handling/render-until-error-expected.txt: Added.
  • platform/gtk/imported/w3c/web-platform-tests/svg/shapes/reftests/disabled-shapes-01-expected.txt: Added.
  • platform/gtk/imported/w3c/web-platform-tests/svg/text/visualtests/text-inline-size-001-visual-expected.txt: Added.
  • platform/wpe/TestExpectations:
4:52 AM Changeset in webkit [252918] by Philippe Normand
  • 3 edits in trunk/Source/WebCore

[GStreamer] Convert GLVideoSink and WebKitWebSrc to WEBKIT_DEFINE_TYPE
https://bugs.webkit.org/show_bug.cgi?id=204674

Reviewed by Carlos Garcia Campos.

This is mostly a refactoring, simplifying the code-base a bit.

  • platform/graphics/gstreamer/GLVideoSinkGStreamer.cpp:

(webKitGLVideoSinkConstructed):
(webKitGLVideoSinkFinalize):
(webkit_gl_video_sink_class_init):

  • platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp:

(webkit_web_src_class_init):
(webKitWebSrcConstructed):

2:08 AM Changeset in webkit [252917] by Philippe Normand
  • 10 edits
    2 adds in trunk

[GStreamer] Move GL video sink to its own GstBin sub-class
https://bugs.webkit.org/show_bug.cgi?id=204624

Reviewed by Xabier Rodriguez-Calvar.

Source/WebCore:

This reduces the MediaPlayerPrivate code-base and adds a good
separation of responsibility regarding GL video rendering. The
TextureCopier remains in the player because it's too specific.

  • platform/GStreamer.cmake:
  • platform/graphics/gstreamer/GLVideoSinkGStreamer.cpp: Added.

(webkit_gl_video_sink_init):
(webKitGLVideoSinkFinalize):
(ensureGstGLContext):
(requestGLContext):
(webKitGLVideoSinkChangeState):
(webkit_gl_video_sink_class_init):
(webKitGLVideoSinkSetMediaPlayerPrivate):
(webKitGLVideoSinkProbePlatform):

  • platform/graphics/gstreamer/GLVideoSinkGStreamer.h: Added.
  • platform/graphics/gstreamer/GStreamerCommon.cpp:

(WebCore::initializeGStreamerAndRegisterWebKitElements):

  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:

(WebCore::MediaPlayerPrivateGStreamer::load):
(WebCore::MediaPlayerPrivateGStreamer::changePipelineState):
(WebCore::MediaPlayerPrivateGStreamer::handleSyncMessage):
(WebCore::MediaPlayerPrivateGStreamer::createVideoSinkGL):

  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.h:

Tools:

  • Scripts/webkitpy/style/checker.py: White-list the new GLVideoSinkGStreamer GObject implementation.
Note: See TracTimeline for information about the timeline view.