Timeline
Mar 29, 2019:
- 7:56 PM Changeset in webkit [243673] by
-
- 3 edits2 adds in trunk
[ContentChangeObserver] Expand DOM timer observation to 350ms
https://bugs.webkit.org/show_bug.cgi?id=196411
<rdar://problem/49391144>
Reviewed by Simon Fraser.
Source/WebCore:
imdb.com main page has 350ms hover intent timer to bring up the hover menus around the search bar.
Test: fast/events/touch/ios/content-observation/350ms-hover-intent.html
- page/ios/ContentChangeObserver.cpp:
LayoutTests:
- fast/events/touch/ios/content-observation/350ms-hover-intent-expected.txt: Added.
- fast/events/touch/ios/content-observation/350ms-hover-intent.html: Added.
- 6:30 PM Changeset in webkit [243672] by
-
- 7 edits in trunk/Source/JavaScriptCore
[JSC] JSWrapperMap should not use Objective-C Weak map (NSMapTable with NSPointerFunctionsWeakMemory) for m_cachedObjCWrappers
https://bugs.webkit.org/show_bug.cgi?id=196392
Reviewed by Saam Barati.
Weak representation in Objective-C is surprisingly costly in terms of memory. We can see that very easy program shows 10KB memory consumption due to
this weak wrapper map in JavaScriptCore.framework. But we do not need this weak map since Objective-C JSValue has a dealloc. We can unregister itself
from the map when it is deallocated without using Objective-C weak mechanism. And since Objective-C JSValue is tightly coupled to a specific JSContext,
and wrapper map is created per JSContext, JSValue wrapper and actual JavaScriptCore value is one-on-one, and [JSValue dealloc] knows which JSContext's
wrapper map holds itself.
- We do not use Objective-C weak mechanism. We use WTF::HashSet instead. When JSValue is allocated, we register it to JSWrapperMap's HashSet. And unregister JSValue from this map when JSValue is deallocated.
- We use HashSet<JSValue> (logically) instead of HashMap<JSValueRef, JSValue> to keep JSValueRef and JSValue relationship. We can achieve it because JSValue holds JSValueRef inside it.
- API/JSContext.mm:
(-[JSContext removeWrapper:]):
- API/JSContextInternal.h:
- API/JSValue.mm:
(-[JSValue dealloc]):
(-[JSValue initWithValue:inContext:]):
- API/JSWrapperMap.h:
- API/JSWrapperMap.mm:
(WrapperKey::hashTableDeletedValue):
(WrapperKey::WrapperKey):
(WrapperKey::isHashTableDeletedValue const):
(WrapperKey::Hash::hash):
(WrapperKey::Hash::equal):
(WrapperKey::Traits::isEmptyValue):
(WrapperKey::Translator::hash):
(WrapperKey::Translator::equal):
(WrapperKey::Translator::translate):
(-[JSWrapperMap initWithGlobalContextRef:]):
(-[JSWrapperMap dealloc]):
(-[JSWrapperMap objcWrapperForJSValueRef:inContext:]):
(-[JSWrapperMap removeWrapper:]):
- API/tests/testapi.mm:
(testObjectiveCAPIMain):
- 6:09 PM Changeset in webkit [243671] by
-
- 20 edits3 adds1 delete in trunk
Move WebResourceLoadStatisticsStore IPC calls from the UI process to the network process
https://bugs.webkit.org/show_bug.cgi?id=196407
<rdar://problem/47859936>
Reviewed by Brent Fulgham.
Source/WebCore:
Test: http/tests/storageAccess/grant-storage-access-under-opener-at-popup-user-gesture.html
This patch removes old code for the batching into "statistics updated" calls.
Since the move of Resource Load Statistics to the network process, all such
collection is done directly through dedicated calls to the network process.
The remaining functionality was renamed to make it more clear, i.e.
ResourceLoadObserver::notifyObserver() renamed to
ResourceLoadObserver::updateCentralStatisticsStore().
- loader/ResourceLoadObserver.cpp:
(WebCore::ResourceLoadObserver::setStatisticsUpdatedCallback):
(WebCore::ResourceLoadObserver::setRequestStorageAccessUnderOpenerCallback):
(WebCore::ResourceLoadObserver::logSubresourceLoading):
(WebCore::ResourceLoadObserver::logWebSocketLoading):
(WebCore::ResourceLoadObserver::logUserInteractionWithReducedTimeResolution):
(WebCore::ResourceLoadObserver::requestStorageAccessUnderOpener):
(WebCore::ResourceLoadObserver::updateCentralStatisticsStore):
(WebCore::ResourceLoadObserver::clearState):
(WebCore::ResourceLoadObserver::setNotificationCallback): Deleted.
(WebCore::ResourceLoadObserver::ResourceLoadObserver): Deleted.
(WebCore::ResourceLoadObserver::scheduleNotificationIfNeeded): Deleted.
(WebCore::ResourceLoadObserver::notifyObserver): Deleted.
- loader/ResourceLoadObserver.h:
- testing/Internals.cpp:
(WebCore::Internals::notifyResourceLoadObserver):
Source/WebKit:
The two WebResourceLoadStatisticsStore IPC endpoints were left behind when we
moved Resource Load Statistics from the UI process to the network process. One
of the endpoints is the message RequestStorageAccessUnderOpener which underpins
our compatibility fix for federated logins using popups. This patch redirects
these IPC calls to the network process and cleans up some assumptions around
them.
- CMakeLists.txt:
Removed the old IPC receiver.
- DerivedSources.make:
Removed the old IPC receiver.
- NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp:
(WebKit::WebResourceLoadStatisticsStore::requestUpdate): Deleted.
This is no longer needed since there is a dedicated update mechanism
that actually sends the update.
- NetworkProcess/Classifier/WebResourceLoadStatisticsStore.h:
- NetworkProcess/NetworkConnectionToWebProcess.cpp:
(WebKit::NetworkConnectionToWebProcess::resourceLoadStatisticsUpdated):
(WebKit::NetworkConnectionToWebProcess::requestStorageAccessUnderOpener):
Two new IPC receivers to pipe the calls to the network process.
(WebKit::NetworkConnectionToWebProcess::requestResourceLoadStatisticsUpdate): Deleted.
NetworkConnectionToWebProcess::resourceLoadStatisticsUpdated now serves
this purpose.
- NetworkProcess/NetworkConnectionToWebProcess.h:
- NetworkProcess/NetworkConnectionToWebProcess.messages.in:
- UIProcess/WebResourceLoadStatisticsStore.messages.in: Removed.
Removed the old IPC receiver.
- UIProcess/WebsiteData/WebsiteDataStore.cpp:
- WebKit.xcodeproj/project.pbxproj:
- WebProcess/InjectedBundle/API/c/WKBundle.cpp:
(WKBundleResourceLoadStatisticsNotifyObserver):
Function name update.
- WebProcess/WebProcess.cpp:
Now calls IPC to the network process instead of the UI process.
LayoutTests:
- http/tests/storageAccess/deny-storage-access-under-opener-expected.txt:
- http/tests/storageAccess/deny-storage-access-under-opener-if-auto-dismiss-expected.txt:
- http/tests/storageAccess/grant-storage-access-under-opener-at-popup-user-gesture-expected.txt: Added.
- http/tests/storageAccess/grant-storage-access-under-opener-at-popup-user-gesture.html: Added.
- http/tests/storageAccess/resources/get-cookies.php:
- http/tests/storageAccess/resources/produce-user-gesture-set-cookie-and-report-back.html: Added.
- 5:21 PM Changeset in webkit [243670] by
-
- 3 edits in trunk/Source/JavaScriptCore
B3ReduceStrength should know that Mul distributes over Add and Sub
https://bugs.webkit.org/show_bug.cgi?id=196325
Reviewed by Michael Saboff.
In this patch I add the following patterns to B3ReduceStrength:
- Turn this: Integer Neg(Mul(value, c)) Into this: Mul(value, -c), as long as -c does not overflow
- Turn these: Integer Mul(value, Neg(otherValue)) and Integer Mul(Neg(value), otherValue) Into this: Neg(Mul(value, otherValue))
- For Op==Add or Sub, turn any of these:
Op(Mul(x1, x2), Mul(x1, x3))
Op(Mul(x2, x1), Mul(x1, x3))
Op(Mul(x1, x2), Mul(x3, x1))
Op(Mul(x2, x1), Mul(x3, x1))
Into this: Mul(x1, Op(x2, x3))
Also includes a trivial change: a similar reduction for the distributivity of BitAnd over BitOr/BitXor now
emits the arguments to BitAnd in the other order, to minimize the probability that we'll spend a full fixpoint step just to flip them.
- b3/B3ReduceStrength.cpp:
- b3/testb3.cpp:
(JSC::B3::testAddMulMulArgs):
(JSC::B3::testMulArgNegArg):
(JSC::B3::testMulNegArgArg):
(JSC::B3::testNegMulArgImm):
(JSC::B3::testSubMulMulArgs):
(JSC::B3::run):
- 5:21 PM Changeset in webkit [243669] by
-
- 11 edits in trunk
Make someWindow.frames, .self, .window always return someWindow
https://bugs.webkit.org/show_bug.cgi?id=195406
Reviewed by Alex Christensen.
LayoutTests/imported/w3c:
Rebaseline WPT test now that all its checks are passing.
- web-platform-tests/html/browsers/the-window-object/self-et-al.window-expected.txt:
Source/WebCore:
Make someWindow.frames, .self, .window always return someWindow. Previously, they
would return null when the window would lose its browsing context.
This aligns our behavior with Firefox and the HTML specification:
Chrome has also recently aligned with Firefox and the HTML specification here so
it makes sense for WebKit to follow.
No new tests, rebaselined existing tests.
- bindings/js/JSDOMWindowCustom.cpp:
(WebCore::JSDOMWindow::self const):
(WebCore::JSDOMWindow::window const):
(WebCore::JSDOMWindow::frames const):
- page/DOMWindow.cpp:
(WebCore::DOMWindow::focus):
- page/DOMWindow.h:
- page/DOMWindow.idl:
LayoutTests:
Update / rebaseline existing test to reflect behavior change.
- fast/frames/detached-frame-property-expected.txt:
- fast/frames/detached-frame-property.html:
- 4:57 PM Changeset in webkit [243668] by
-
- 1 copy in tags/Safari-607.2.3
Tag Safari-607.2.3.
- 4:33 PM Changeset in webkit [243667] by
-
- 4 edits in trunk/Source/JavaScriptCore
[JSC] Remove distancing for LargeAllocation
https://bugs.webkit.org/show_bug.cgi?id=196335
Reviewed by Saam Barati.
In r230226, we removed distancing feature from our GC. This patch removes remaining distancing thing in LargeAllocation.
- heap/HeapCell.h:
- heap/LargeAllocation.cpp:
(JSC::LargeAllocation::tryCreate):
- heap/MarkedBlock.h:
- 3:18 PM Changeset in webkit [243666] by
-
- 66 edits79 deletes in trunk
Delete WebMetal implementation in favor of WebGPU
https://bugs.webkit.org/show_bug.cgi?id=195418
Reviewed by Dean Jackson.
.:
- Source/cmake/OptionsMac.cmake:
- Source/cmake/WebKitFeatures.cmake:
- Source/cmake/tools/vsprops/FeatureDefines.props:
- Source/cmake/tools/vsprops/FeatureDefinesCairo.props:
Source/JavaScriptCore:
- Configurations/FeatureDefines.xcconfig:
- inspector/protocol/Canvas.json:
- inspector/scripts/codegen/generator.py:
Source/WebCore:
WebMetal was only ever intended to be a proof-of-concept, and was never intended to be shipped.
Now that our WebGPU implementation is achieving good functionality, we're hitting conflicts
because we have both implementations. We should delete the non-standard implementation in favor
of the standards-based implementation.
Deletes relevant tests.
- CMakeLists.txt:
- Configurations/FeatureDefines.xcconfig:
- DerivedSources-input.xcfilelist:
- DerivedSources-output.xcfilelist:
- DerivedSources.make:
- Sources.txt:
- SourcesCocoa.txt:
- WebCore.xcodeproj/project.pbxproj:
- bindings/js/JSWebMetalRenderPassAttachmentDescriptorCustom.cpp: Removed.
- bindings/js/JSWebMetalRenderingContextCustom.cpp: Removed.
- bindings/js/WebCoreBuiltinNames.h:
- dom/Document.cpp:
(WebCore::Document::getCSSCanvasContext):
- dom/Document.h:
- dom/Document.idl:
- html/HTMLCanvasElement.cpp:
(WebCore::HTMLCanvasElement::getContext):
(WebCore::HTMLCanvasElement::isWebMetalType): Deleted.
(WebCore::HTMLCanvasElement::createContextWebMetal): Deleted.
(WebCore::HTMLCanvasElement::getContextWebMetal): Deleted.
- html/HTMLCanvasElement.h:
- html/HTMLCanvasElement.idl:
- html/canvas/CanvasRenderingContext.h:
(WebCore::CanvasRenderingContext::isWebGPU const):
(WebCore::CanvasRenderingContext::isWebMetal const): Deleted.
- html/canvas/WebMetalBuffer.cpp: Removed.
- html/canvas/WebMetalBuffer.h: Removed.
- html/canvas/WebMetalBuffer.idl: Removed.
- html/canvas/WebMetalCommandBuffer.cpp: Removed.
- html/canvas/WebMetalCommandBuffer.h: Removed.
- html/canvas/WebMetalCommandBuffer.idl: Removed.
- html/canvas/WebMetalCommandQueue.cpp: Removed.
- html/canvas/WebMetalCommandQueue.h: Removed.
- html/canvas/WebMetalCommandQueue.idl: Removed.
- html/canvas/WebMetalComputeCommandEncoder.cpp: Removed.
- html/canvas/WebMetalComputeCommandEncoder.h: Removed.
- html/canvas/WebMetalComputeCommandEncoder.idl: Removed.
- html/canvas/WebMetalComputePipelineState.cpp: Removed.
- html/canvas/WebMetalComputePipelineState.h: Removed.
- html/canvas/WebMetalComputePipelineState.idl: Removed.
- html/canvas/WebMetalDepthStencilDescriptor.cpp: Removed.
- html/canvas/WebMetalDepthStencilDescriptor.h: Removed.
- html/canvas/WebMetalDepthStencilDescriptor.idl: Removed.
- html/canvas/WebMetalDepthStencilState.cpp: Removed.
- html/canvas/WebMetalDepthStencilState.h: Removed.
- html/canvas/WebMetalDepthStencilState.idl: Removed.
- html/canvas/WebMetalDrawable.cpp: Removed.
- html/canvas/WebMetalDrawable.h: Removed.
- html/canvas/WebMetalDrawable.idl: Removed.
- html/canvas/WebMetalEnums.cpp: Removed.
- html/canvas/WebMetalEnums.h: Removed.
- html/canvas/WebMetalEnums.idl: Removed.
- html/canvas/WebMetalFunction.cpp: Removed.
- html/canvas/WebMetalFunction.h: Removed.
- html/canvas/WebMetalFunction.idl: Removed.
- html/canvas/WebMetalLibrary.cpp: Removed.
- html/canvas/WebMetalLibrary.h: Removed.
- html/canvas/WebMetalLibrary.idl: Removed.
- html/canvas/WebMetalRenderCommandEncoder.cpp: Removed.
- html/canvas/WebMetalRenderCommandEncoder.h: Removed.
- html/canvas/WebMetalRenderCommandEncoder.idl: Removed.
- html/canvas/WebMetalRenderPassAttachmentDescriptor.cpp: Removed.
- html/canvas/WebMetalRenderPassAttachmentDescriptor.h: Removed.
- html/canvas/WebMetalRenderPassAttachmentDescriptor.idl: Removed.
- html/canvas/WebMetalRenderPassColorAttachmentDescriptor.cpp: Removed.
- html/canvas/WebMetalRenderPassColorAttachmentDescriptor.h: Removed.
- html/canvas/WebMetalRenderPassColorAttachmentDescriptor.idl: Removed.
- html/canvas/WebMetalRenderPassDepthAttachmentDescriptor.cpp: Removed.
- html/canvas/WebMetalRenderPassDepthAttachmentDescriptor.h: Removed.
- html/canvas/WebMetalRenderPassDepthAttachmentDescriptor.idl: Removed.
- html/canvas/WebMetalRenderPassDescriptor.cpp: Removed.
- html/canvas/WebMetalRenderPassDescriptor.h: Removed.
- html/canvas/WebMetalRenderPassDescriptor.idl: Removed.
- html/canvas/WebMetalRenderPipelineColorAttachmentDescriptor.cpp: Removed.
- html/canvas/WebMetalRenderPipelineColorAttachmentDescriptor.h: Removed.
- html/canvas/WebMetalRenderPipelineColorAttachmentDescriptor.idl: Removed.
- html/canvas/WebMetalRenderPipelineDescriptor.cpp: Removed.
- html/canvas/WebMetalRenderPipelineDescriptor.h: Removed.
- html/canvas/WebMetalRenderPipelineDescriptor.idl: Removed.
- html/canvas/WebMetalRenderPipelineState.cpp: Removed.
- html/canvas/WebMetalRenderPipelineState.h: Removed.
- html/canvas/WebMetalRenderPipelineState.idl: Removed.
- html/canvas/WebMetalRenderingContext.cpp: Removed.
- html/canvas/WebMetalRenderingContext.h: Removed.
- html/canvas/WebMetalRenderingContext.idl: Removed.
- html/canvas/WebMetalSize.h: Removed.
- html/canvas/WebMetalSize.idl: Removed.
- html/canvas/WebMetalTexture.cpp: Removed.
- html/canvas/WebMetalTexture.h: Removed.
- html/canvas/WebMetalTexture.idl: Removed.
- html/canvas/WebMetalTextureDescriptor.cpp: Removed.
- html/canvas/WebMetalTextureDescriptor.h: Removed.
- html/canvas/WebMetalTextureDescriptor.idl: Removed.
- inspector/InspectorCanvas.cpp:
(WebCore::InspectorCanvas::buildObjectForCanvas):
- inspector/agents/InspectorCanvasAgent.cpp:
(WebCore::InspectorCanvasAgent::requestContent):
(WebCore::contextAsScriptValue):
- page/RuntimeEnabledFeatures.h:
(WebCore::RuntimeEnabledFeatures::setWebMetalEnabled): Deleted.
(WebCore::RuntimeEnabledFeatures::webMetalEnabled const): Deleted.
- platform/Logging.h:
- platform/graphics/ca/cocoa/PlatformCALayerCocoa.mm:
(WebCore::PlatformCALayerCocoa::layerTypeForPlatformLayer):
(WebCore::PlatformCALayerCocoa::PlatformCALayerCocoa):
- platform/graphics/cocoa/WebMetalLayer.h: Removed.
- platform/graphics/cocoa/WebMetalLayer.mm: Removed.
- platform/graphics/gpu/legacy/GPULegacyBuffer.cpp: Removed.
- platform/graphics/gpu/legacy/GPULegacyBuffer.h: Removed.
- platform/graphics/gpu/legacy/GPULegacyCommandBuffer.cpp: Removed.
- platform/graphics/gpu/legacy/GPULegacyCommandBuffer.h: Removed.
- platform/graphics/gpu/legacy/GPULegacyCommandQueue.cpp: Removed.
- platform/graphics/gpu/legacy/GPULegacyCommandQueue.h: Removed.
- platform/graphics/gpu/legacy/GPULegacyComputeCommandEncoder.cpp: Removed.
- platform/graphics/gpu/legacy/GPULegacyComputeCommandEncoder.h: Removed.
- platform/graphics/gpu/legacy/GPULegacyComputePipelineState.cpp: Removed.
- platform/graphics/gpu/legacy/GPULegacyComputePipelineState.h: Removed.
- platform/graphics/gpu/legacy/GPULegacyDepthStencilDescriptor.cpp: Removed.
- platform/graphics/gpu/legacy/GPULegacyDepthStencilDescriptor.h: Removed.
- platform/graphics/gpu/legacy/GPULegacyDepthStencilState.cpp: Removed.
- platform/graphics/gpu/legacy/GPULegacyDepthStencilState.h: Removed.
- platform/graphics/gpu/legacy/GPULegacyDevice.cpp: Removed.
- platform/graphics/gpu/legacy/GPULegacyDevice.h: Removed.
- platform/graphics/gpu/legacy/GPULegacyDrawable.cpp: Removed.
- platform/graphics/gpu/legacy/GPULegacyDrawable.h: Removed.
- platform/graphics/gpu/legacy/GPULegacyEnums.h: Removed.
- platform/graphics/gpu/legacy/GPULegacyFunction.cpp: Removed.
- platform/graphics/gpu/legacy/GPULegacyFunction.h: Removed.
- platform/graphics/gpu/legacy/GPULegacyLibrary.cpp: Removed.
- platform/graphics/gpu/legacy/GPULegacyLibrary.h: Removed.
- platform/graphics/gpu/legacy/GPULegacyRenderCommandEncoder.cpp: Removed.
- platform/graphics/gpu/legacy/GPULegacyRenderCommandEncoder.h: Removed.
- platform/graphics/gpu/legacy/GPULegacyRenderPassAttachmentDescriptor.cpp: Removed.
- platform/graphics/gpu/legacy/GPULegacyRenderPassAttachmentDescriptor.h: Removed.
- platform/graphics/gpu/legacy/GPULegacyRenderPassColorAttachmentDescriptor.cpp: Removed.
- platform/graphics/gpu/legacy/GPULegacyRenderPassColorAttachmentDescriptor.h: Removed.
- platform/graphics/gpu/legacy/GPULegacyRenderPassDepthAttachmentDescriptor.cpp: Removed.
- platform/graphics/gpu/legacy/GPULegacyRenderPassDepthAttachmentDescriptor.h: Removed.
- platform/graphics/gpu/legacy/GPULegacyRenderPassDescriptor.cpp: Removed.
- platform/graphics/gpu/legacy/GPULegacyRenderPassDescriptor.h: Removed.
- platform/graphics/gpu/legacy/GPULegacyRenderPipelineColorAttachmentDescriptor.cpp: Removed.
- platform/graphics/gpu/legacy/GPULegacyRenderPipelineColorAttachmentDescriptor.h: Removed.
- platform/graphics/gpu/legacy/GPULegacyRenderPipelineDescriptor.cpp: Removed.
- platform/graphics/gpu/legacy/GPULegacyRenderPipelineDescriptor.h: Removed.
- platform/graphics/gpu/legacy/GPULegacyRenderPipelineState.cpp: Removed.
- platform/graphics/gpu/legacy/GPULegacyRenderPipelineState.h: Removed.
- platform/graphics/gpu/legacy/GPULegacySize.h: Removed.
- platform/graphics/gpu/legacy/GPULegacyTexture.cpp: Removed.
- platform/graphics/gpu/legacy/GPULegacyTexture.h: Removed.
- platform/graphics/gpu/legacy/GPULegacyTextureDescriptor.cpp: Removed.
- platform/graphics/gpu/legacy/GPULegacyTextureDescriptor.h: Removed.
- platform/graphics/gpu/legacy/cocoa/GPULegacyBufferMetal.mm: Removed.
- platform/graphics/gpu/legacy/cocoa/GPULegacyCommandBufferMetal.mm: Removed.
- platform/graphics/gpu/legacy/cocoa/GPULegacyCommandQueueMetal.mm: Removed.
- platform/graphics/gpu/legacy/cocoa/GPULegacyComputeCommandEncoderMetal.mm: Removed.
- platform/graphics/gpu/legacy/cocoa/GPULegacyComputePipelineStateMetal.mm: Removed.
- platform/graphics/gpu/legacy/cocoa/GPULegacyDepthStencilDescriptorMetal.mm: Removed.
- platform/graphics/gpu/legacy/cocoa/GPULegacyDepthStencilStateMetal.mm: Removed.
- platform/graphics/gpu/legacy/cocoa/GPULegacyDeviceMetal.mm: Removed.
- platform/graphics/gpu/legacy/cocoa/GPULegacyDrawableMetal.mm: Removed.
- platform/graphics/gpu/legacy/cocoa/GPULegacyFunctionMetal.mm: Removed.
- platform/graphics/gpu/legacy/cocoa/GPULegacyLibraryMetal.mm: Removed.
- platform/graphics/gpu/legacy/cocoa/GPULegacyRenderCommandEncoderMetal.mm: Removed.
- platform/graphics/gpu/legacy/cocoa/GPULegacyRenderPassAttachmentDescriptorMetal.mm: Removed.
- platform/graphics/gpu/legacy/cocoa/GPULegacyRenderPassColorAttachmentDescriptorMetal.mm: Removed.
- platform/graphics/gpu/legacy/cocoa/GPULegacyRenderPassDepthAttachmentDescriptorMetal.mm: Removed.
- platform/graphics/gpu/legacy/cocoa/GPULegacyRenderPassDescriptorMetal.mm: Removed.
- platform/graphics/gpu/legacy/cocoa/GPULegacyRenderPipelineColorAttachmentDescriptorMetal.mm: Removed.
- platform/graphics/gpu/legacy/cocoa/GPULegacyRenderPipelineDescriptorMetal.mm: Removed.
- platform/graphics/gpu/legacy/cocoa/GPULegacyRenderPipelineStateMetal.mm: Removed.
- platform/graphics/gpu/legacy/cocoa/GPULegacyTextureDescriptorMetal.mm: Removed.
- platform/graphics/gpu/legacy/cocoa/GPULegacyTextureMetal.mm: Removed.
- testing/InternalSettings.cpp:
(WebCore::InternalSettings::Backup::Backup):
(WebCore::InternalSettings::Backup::restoreTo):
(WebCore::InternalSettings::setWebMetalEnabled): Deleted.
- testing/InternalSettings.h:
- testing/InternalSettings.idl:
Source/WebCore/PAL:
- Configurations/FeatureDefines.xcconfig:
Source/WebInspectorUI:
- UserInterface/Models/Canvas.js:
(WI.Canvas.fromPayload):
(WI.Canvas.displayNameForContextType):
- UserInterface/Protocol/Legacy/12.2/InspectorBackendCommands.js:
- Versions/Inspector-iOS-12.2.json:
Source/WebKit:
- Configurations/FeatureDefines.xcconfig:
- Shared/WebPreferences.yaml:
- WebProcess/InjectedBundle/InjectedBundle.cpp:
(WebKit::InjectedBundle::overrideBoolPreferenceForTestRunner):
Source/WebKitLegacy/mac:
- Configurations/FeatureDefines.xcconfig:
- WebView/WebPreferenceKeysPrivate.h:
- WebView/WebPreferences.mm:
(+[WebPreferences initialize]):
(-[WebPreferences webMetalEnabled]): Deleted.
(-[WebPreferences setWebMetalEnabled:]): Deleted.
- WebView/WebPreferencesPrivate.h:
- WebView/WebView.mm:
(-[WebView _preferencesChanged:]):
Tools:
- DumpRenderTree/mac/DumpRenderTree.mm:
(enableExperimentalFeatures):
(resetWebPreferencesToConsistentValues):
- Scripts/webkitperl/FeatureList.pm:
- TestWebKitAPI/Configurations/FeatureDefines.xcconfig:
- TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
- TestWebKitAPI/Tests/WebCore/mac/GPUCommandQueue.mm: Removed.
- TestWebKitAPI/Tests/WebCore/mac/GPULegacyBuffer.mm: Removed.
- TestWebKitAPI/Tests/WebCore/mac/GPULegacyCommandQueue.mm: Removed.
- TestWebKitAPI/Tests/WebCore/mac/GPULegacyDevice.mm: Removed.
- TestWebKitAPI/Tests/WebCore/mac/GPULegacyFunction.mm: Removed.
- TestWebKitAPI/Tests/WebCore/mac/GPULegacyLibrary.mm: Removed.
- TestWebKitAPI/Tests/WebCore/mac/GPULegacyTest.h: Removed.
- WebKitTestRunner/InjectedBundle/InjectedBundle.cpp:
(WTR::InjectedBundle::beginTesting):
- WebKitTestRunner/InjectedBundle/TestRunner.cpp:
(WTR::TestRunner::setWebMetalEnabled): Deleted.
- WebKitTestRunner/InjectedBundle/TestRunner.h:
LayoutTests:
- fast/canvas/webmetal/webmetal-dispatch-expected.txt: Removed.
- fast/canvas/webmetal/webmetal-dispatch.html: Removed.
- fast/canvas/webmetal/webmetal-runtime-flag-expected.txt: Removed.
- fast/canvas/webmetal/webmetal-runtime-flag.html: Removed.
- inspector/canvas/create-context-webmetal-expected.txt: Removed.
- inspector/canvas/create-context-webmetal.html: Removed.
- inspector/canvas/resolveCanvasContext-webmetal-expected.txt: Removed.
- inspector/canvas/resolveCanvasContext-webmetal.html: Removed.
- platform/gtk/TestExpectations:
- platform/ios/TestExpectations:
- platform/mac/TestExpectations:
- platform/win/TestExpectations:
- platform/wincairo/TestExpectations:
- platform/wpe/TestExpectations:
- 2:53 PM Changeset in webkit [243665] by
-
- 3 edits1 add in trunk
Assertion failed in JSC::createError
https://bugs.webkit.org/show_bug.cgi?id=196305
<rdar://problem/49387382>
Reviewed by Saam Barati.
JSTests:
- stress/create-error-out-of-memory-rope-string-2.js: Added.
(assert):
(catch):
Source/JavaScriptCore:
JSC::createError assumes that
errorDescriptionForValuewill either
throw an exception or return a valid description string. However, that
is not true if the value is a rope string and we successfully resolve it,
but later fail to wrap the string in quotes withtryMakeString.
- runtime/ExceptionHelpers.cpp:
(JSC::createError):
- 2:52 PM Changeset in webkit [243664] by
-
- 27 edits2 adds in trunk/LayoutTests
Update the CSS Text WPT test suite
https://bugs.webkit.org/show_bug.cgi?id=196397
Reviewed by Manuel Rego Casasnovas.
Updated several tests from the CSS Text test suite.
- resources/resource-files.json:
- web-platform-tests/css/css-text/META.yml:
- web-platform-tests/css/css-text/overflow-wrap/overflow-wrap-break-word-006.html:
- web-platform-tests/css/css-text/overflow-wrap/overflow-wrap-break-word-007.html:
- web-platform-tests/css/css-text/white-space/break-spaces-004.html:
- web-platform-tests/css/css-text/white-space/break-spaces-005.html:
- web-platform-tests/css/css-text/white-space/break-spaces-006.html:
- web-platform-tests/css/css-text/white-space/break-spaces-007.html:
- web-platform-tests/css/css-text/white-space/break-spaces-008.html:
- web-platform-tests/css/css-text/white-space/pre-wrap-008.html:
- web-platform-tests/css/css-text/white-space/pre-wrap-015.html:
- web-platform-tests/css/css-text/white-space/pre-wrap-016.html:
- web-platform-tests/css/css-text/white-space/white-space-intrinsic-size-001-expected.html:
- web-platform-tests/css/css-text/white-space/white-space-intrinsic-size-001.html:
- web-platform-tests/css/css-text/white-space/white-space-intrinsic-size-002-expected.html:
- web-platform-tests/css/css-text/white-space/white-space-intrinsic-size-002.html:
- web-platform-tests/css/css-text/white-space/white-space-intrinsic-size-003-expected.html:
- web-platform-tests/css/css-text/white-space/white-space-intrinsic-size-003.html:
- web-platform-tests/css/css-text/white-space/white-space-intrinsic-size-004-expected.html:
- web-platform-tests/css/css-text/white-space/white-space-intrinsic-size-004.html:
- web-platform-tests/css/css-text/word-break/w3c-import.log:
- web-platform-tests/css/css-text/word-break/word-break-break-all-010.html:
- web-platform-tests/css/css-text/word-break/word-break-break-all-011.html:
- web-platform-tests/css/css-text/word-break/word-break-break-all-012.html:
- web-platform-tests/css/css-text/word-break/word-break-break-all-013.html:
- web-platform-tests/css/css-text/word-break/word-break-break-all-015.html:
- web-platform-tests/css/css-text/word-break/word-break-break-word-overflow-wrap-interactions-expected.html: Added.
- web-platform-tests/css/css-text/word-break/word-break-break-word-overflow-wrap-interactions.html: Added.
- 2:49 PM Changeset in webkit [243663] by
-
- 6 edits in trunk/Source
Web Inspector: add fast returns for instrumentation hooks that have no affect before a frontend is connected
https://bugs.webkit.org/show_bug.cgi?id=196382
<rdar://problem/49403417>
Reviewed by Joseph Pecoraro.
Ensure that all instrumentation hooks use
FAST_RETURN_IF_NO_FRONTENDSor check that
developerExtrasEnabled. There should be no activity to/from any inspector objects until
developer extras are enabled.
Source/JavaScriptCore:
- inspector/agents/InspectorConsoleAgent.cpp:
(Inspector::InspectorConsoleAgent::startTiming):
(Inspector::InspectorConsoleAgent::stopTiming):
(Inspector::InspectorConsoleAgent::count):
(Inspector::InspectorConsoleAgent::addConsoleMessage):
Source/WebCore:
- inspector/InspectorInstrumentation.h:
(WebCore::InspectorInstrumentation::didClearWindowObjectInWorld):
(WebCore::InspectorInstrumentation::scriptExecutionBlockedByCSP):
(WebCore::InspectorInstrumentation::domContentLoadedEventFired):
(WebCore::InspectorInstrumentation::loadEventFired):
(WebCore::InspectorInstrumentation::frameDetachedFromParent):
(WebCore::InspectorInstrumentation::loaderDetachedFromFrame):
(WebCore::InspectorInstrumentation::frameStartedLoading):
(WebCore::InspectorInstrumentation::frameStoppedLoading):
(WebCore::InspectorInstrumentation::frameScheduledNavigation):
(WebCore::InspectorInstrumentation::frameClearedScheduledNavigation):
- inspector/InspectorInstrumentation.cpp:
(WebCore::InspectorInstrumentation::frameWindowDiscardedImpl):
(WebCore::InspectorInstrumentation::didReceiveResourceResponseImpl):
(WebCore::InspectorInstrumentation::didFailLoadingImpl):
(WebCore::InspectorInstrumentation::addMessageToConsoleImpl):
(WebCore::InspectorInstrumentation::consoleCountImpl):
(WebCore::InspectorInstrumentation::startConsoleTimingImpl):
(WebCore::InspectorInstrumentation::stopConsoleTimingImpl):
- inspector/agents/WebConsoleAgent.cpp:
(WebCore::WebConsoleAgent::frameWindowDiscarded):
- 1:56 PM Changeset in webkit [243662] by
-
- 3 edits in trunk/Source/WebInspectorUI
Web Inspector: Storage: some cookie column headers are not localized
https://bugs.webkit.org/show_bug.cgi?id=196406
<rdar://problem/48467422>
Reviewed by Joseph Pecoraro.
- UserInterface/Views/CookieStorageContentView.js:
(WI.CookieStorageContentView.prototype.initialLayout):
- Localizations/en.lproj/localizedStrings.js:
- 1:46 PM Changeset in webkit [243661] by
-
- 6 edits in trunk
Set window.closed immediately when close() is invoked
https://bugs.webkit.org/show_bug.cgi?id=195409
Reviewed by Alex Christensen.
LayoutTests/imported/w3c:
Rebaseline WPT tests now that more checks are passing.
- web-platform-tests/html/browsers/the-window-object/close-method.window-expected.txt:
- web-platform-tests/html/browsers/the-window-object/closed-attribute.window-expected.txt:
Source/WebCore:
Window.closed should return true if it is closing:
Window.close() sets the 'is closing' flag to true synchronously, as per:
No new tests, rebaselined existing tests.
- page/DOMWindow.cpp:
(WebCore::DOMWindow::closed const):
- 1:26 PM Changeset in webkit [243660] by
-
- 3 edits2 adds in trunk
[Simple line layout] Turn off inline boxtree generation for multiline content
https://bugs.webkit.org/show_bug.cgi?id=196404
<rdar://problem/49234033>
Reviewed by Simon Fraser.
Source/WebCore:
Currently simple line layout can't provide the correct line breaking context to the inline tree when the boxtree is
generated using the simple line runs. This patch limits the generation of such trees to single lines. Multiline content will
go through the "let's layout this content again" codepath.
This patch fixes disappearing content on Questar.
Test: fast/text/simple-line-layout-and-multiline-inlineboxtree.html
- rendering/SimpleLineLayoutFunctions.cpp:
(WebCore::SimpleLineLayout::canUseForLineBoxTree):
LayoutTests:
- fast/text/simple-line-layout-and-multiline-inlineboxtree-expected.html: Added.
- fast/text/simple-line-layout-and-multiline-inlineboxtree.html: Added.
- 1:23 PM Changeset in webkit [243659] by
-
- 3 edits in trunk/LayoutTests
imported/w3c/web-platform-tests/mediacapture-record/MediaRecorder-stop.html is a flaky failure
https://bugs.webkit.org/show_bug.cgi?id=196403
Unreviewed test gardening.
- platform/ios-simulator-wk2/TestExpectations:
- platform/mac-wk2/TestExpectations: Updating test expectations for flaky test
- 1:18 PM Changeset in webkit [243658] by
-
- 20 edits in trunk/Source/WebCore
[Web GPU] Replace unsigned longs in WebGPU with uint64_t
https://bugs.webkit.org/show_bug.cgi?id=196401
Reviewed by Myles C. Maxfield.
Unsigned long is not guaranteed to be 64 bits on all platforms. In addition, rowPitch is updated
to u32 in the API and the implementation to match.
No new tests. No new behavior.
- Modules/webgpu/WebGPUBuffer.cpp:
(WebCore::WebGPUBuffer::setSubData):
- Modules/webgpu/WebGPUBuffer.h:
- Modules/webgpu/WebGPUBufferBinding.h:
- Modules/webgpu/WebGPUCommandEncoder.cpp:
(WebCore::WebGPUCommandEncoder::copyBufferToBuffer):
- Modules/webgpu/WebGPUCommandEncoder.h:
- Modules/webgpu/WebGPUCommandEncoder.idl:
- Modules/webgpu/WebGPURenderPassEncoder.cpp:
(WebCore::WebGPURenderPassEncoder::setVertexBuffers):
- Modules/webgpu/WebGPURenderPassEncoder.h:
- platform/graphics/gpu/GPUBindGroupLayout.h:
- platform/graphics/gpu/GPUBuffer.h:
(WebCore::GPUBuffer::byteLength const):
- platform/graphics/gpu/GPUBufferBinding.h:
- platform/graphics/gpu/GPUBufferDescriptor.h:
- platform/graphics/gpu/GPUCommandBuffer.h:
- platform/graphics/gpu/GPURenderPassEncoder.h:
- platform/graphics/gpu/GPUVertexAttributeDescriptor.h:
- platform/graphics/gpu/GPUVertexInputDescriptor.h:
- platform/graphics/gpu/cocoa/GPUBufferMetal.mm:
(WebCore::GPUBuffer::GPUBuffer):
(WebCore::GPUBuffer::setSubData):
- platform/graphics/gpu/cocoa/GPUCommandBufferMetal.mm:
(WebCore::GPUCommandBuffer::copyBufferToBuffer):
- platform/graphics/gpu/cocoa/GPURenderPassEncoderMetal.mm:
(WebCore::GPURenderPassEncoder::setVertexBuffers):
- 1:11 PM Changeset in webkit [243657] by
-
- 7 edits in trunk
REGRESSION (r243523): Six form-related watchOS layout tests are timing out
https://bugs.webkit.org/show_bug.cgi?id=196405
<rdar://problem/49428130>
Reviewed by Wenson Hsieh.
Tools:
Add a shouldPresentPopovers=false WebKitTestRunner option to cause WKTR to swizzle
the popover presentation methods to be no-ops. Use this in the new test added in
r243523 so that we do not swizzle those methods for all tests. This is needed because
those WatchOS tests rely on the popover getting presented and interactive.
- WebKitTestRunner/TestController.cpp:
(WTR::updateTestOptionsFromTestHeader):
- WebKitTestRunner/TestController.h:
- WebKitTestRunner/TestOptions.h:
(WTR::TestOptions::hasSameInitializationOptions const):
- WebKitTestRunner/ios/TestControllerIOS.mm:
(WTR::TestController::platformInitialize):
(WTR::TestController::platformResetStateToConsistentValues):
LayoutTests:
- fast/forms/ios/file-upload-panel.html:
- 1:09 PM Changeset in webkit [243656] by
-
- 3 edits2 adds in trunk
REGRESSION (r243250): Text interactions are no longer suppressed when editing in some websites
https://bugs.webkit.org/show_bug.cgi?id=196378
<rdar://problem/49231299>
Reviewed by Simon Fraser.
Source/WebCore:
Enabling async overflow scrolling by default in r243250 exposed an issue with hidden editable area detection
heuristics. Currently, an empty value for RenderLayer::selfClipRect is used to determine whether the layer
enclosing the editable element or form control is completely clipped by a parent (in other words, the clip rect
is empty). With async overflow scrolling, the enclosing layer of the editable element (as seen in the websites
affected by this bug) will now be a clipping root for painting, since it is composited. This means selfClipRect
returns a non-empty rect despite the layer being entirely clipped, which negates the heuristic.
To address this, we adjust the clipping heuristic to instead walk up the layer tree (crossing frame boundaries)
and look for enclosing ancestors with overflow clip. For each layer we find with an overflow clip, compute the
clip rect of the previous layer relative to the ancestor with overflow clip. If the clipping rect is empty, we
know that the layer is hidden.
This isn't a perfect strategy, since it may still report false negatives (reporting a layer as visible when it
is not) in some cases. One such edge case is a series of overflow hidden containers, nested in such a way that
each container is only partially clipped relative to its ancestor, but the deepest layer is completely clipped
relative to the topmost layer. However, this heuristic is relatively cheap (entailing a layer tree walk at
worst) and works for common use cases on the web without risking scenarios in which text selection that
shouldn't be suppressed ends up becoming suppressed.
Test: editing/selection/ios/hide-selection-in-textarea-with-transform.html
- rendering/RenderLayer.cpp:
(WebCore::RenderLayer::isTransparentOrFullyClippedRespectingParentFrames const):
LayoutTests:
Add a new layout test to exercise the scenario in which a transformed textarea is hidden inside an empty
overflow: hidden container.
- editing/selection/ios/hide-selection-in-textarea-with-transform-expected.txt: Added.
- editing/selection/ios/hide-selection-in-textarea-with-transform.html: Added.
- 1:00 PM Changeset in webkit [243655] by
-
- 7 edits in trunk/LayoutTests
Unreviewed test gardening for imported/w3c/web-platform-tests/xhr/send-redirect-post-upload.htm
https://bugs.webkit.org/show_bug.cgi?id=159724
<rdar://problem/48116418>
- TestExpectations:
- platform/ios-wk1/TestExpectations:
- platform/ios-wk2/TestExpectations:
- platform/mac-wk1/TestExpectations:
- platform/mac/TestExpectations:
- platform/wpe/TestExpectations:
This test asserts on Cocoa WebKitLegacy platforms. A patch I uploaded to https://bugs.webkit.org/show_bug.cgi?id=159724 shows why we do not intend to fix this.
This test crashes on iOS12 and Mojave because of rdar://problem/28233746
This test should not crash anywhere else, but it is flaky in WebKit and Gecko. This is being taken care of in https://github.com/w3c/web-platform-tests/issues/8191
Updated test expectations to reflect the sad state of things.
- 12:03 PM Changeset in webkit [243654] by
-
- 20 edits in trunk
[Curl] Add Server Trust Evaluation Support.
https://bugs.webkit.org/show_bug.cgi?id=191646
Patch by Takashi Komori <Takashi.Komori@sony.com> on 2019-03-29
Reviewed by Fujii Hironori.
Source/WebCore:
Tests: http/tests/ssl/iframe-upgrade.https.html
http/tests/ssl/mixedContent/insecure-websocket.html
http/tests/ssl/upgrade-origin-usage.html
- platform/network/curl/AuthenticationChallenge.h:
- platform/network/curl/AuthenticationChallengeCurl.cpp:
(WebCore::AuthenticationChallenge::AuthenticationChallenge):
(WebCore::AuthenticationChallenge::protectionSpaceForPasswordBased):
(WebCore::AuthenticationChallenge::protectionSpaceForServerTrust):
(WebCore::AuthenticationChallenge::protectionSpaceFromHandle): Deleted.
- platform/network/curl/CurlContext.cpp:
(WebCore::CurlHandle::disableServerTrustEvaluation):
- platform/network/curl/CurlContext.h:
- platform/network/curl/CurlRequest.cpp:
(WebCore::CurlRequest::setupTransfer):
- platform/network/curl/CurlRequest.h:
(WebCore::CurlRequest::disableServerTrustEvaluation):
Source/WebKit:
Tests: http/tests/ssl/iframe-upgrade.https.html
http/tests/ssl/mixedContent/insecure-websocket.html
http/tests/ssl/upgrade-origin-usage.html
- NetworkProcess/curl/NetworkDataTaskCurl.cpp:
(WebKit::NetworkDataTaskCurl::curlDidFailWithError):
(WebKit::NetworkDataTaskCurl::tryServerTrustEvaluation):
(WebKit::NetworkDataTaskCurl::restartWithCredential):
- NetworkProcess/curl/NetworkDataTaskCurl.h:
Tools:
Implemented MiniBrowser UI for asking if user trusts the server.
- MiniBrowser/win/Common.cpp:
(askServerTrustEvaluation):
(replaceString):
- MiniBrowser/win/Common.h:
- MiniBrowser/win/MiniBrowserLib.rc:
- MiniBrowser/win/MiniBrowserLibResource.h:
- MiniBrowser/win/WebKitBrowserWindow.cpp:
(createPEMString):
(WebKitBrowserWindow::didReceiveAuthenticationChallenge):
(WebKitBrowserWindow::canTrustServerCertificate):
- MiniBrowser/win/WebKitBrowserWindow.h:
LayoutTests:
- platform/wincairo-wk1/TestExpectations:
- platform/wincairo/TestExpectations:
- 11:39 AM Changeset in webkit [243653] by
-
- 3 edits2 adds in trunk
Pasting a table from Confluence strip of table cell content
https://bugs.webkit.org/show_bug.cgi?id=196390
Reviewed by Antti Koivisto.
Source/WebCore:
The bug was ultimately caused by FrameView of the document we use to sanitize the pasteboard content
having 0px by 0px dimension. This caused div withoverflow-x: autosurrounding a table to have
the height of 0px. Because StyledMarkupAccumulator::renderedTextRespectingRange uses TextIterator
to serialize a text node and this div was an ancestor of the text node, TextIterator::handleTextNode
ended up exiting early.
Fixed the bug by giving FrameView, which is used to sanitize the content, a dimension of 800px by 600px.
Using TextIteratorIgnoresStyleVisibility is not a great alternative since removing invisible content
during paste is an important privacy feature.
Test: editing/pasteboard/paste-content-with-overflow-auto-parent-across-origin.html
- editing/markup.cpp:
(WebCore::createPageForSanitizingWebContent):
LayoutTests:
Added a regression test.
- editing/pasteboard/paste-content-with-overflow-auto-parent-across-origin-expected.txt: Added.
- editing/pasteboard/paste-content-with-overflow-auto-parent-across-origin.html: Added.
- 11:36 AM Changeset in webkit [243652] by
-
- 2 edits in trunk/LayoutTests
fast/mediastream/MediaStreamTrack-getSettings.html is a flaky failure
https://bugs.webkit.org/show_bug.cgi?id=196400
Unreviewed test gardening.
- platform/mac-wk2/TestExpectations: Updating test expectations for flaky failure
- 11:36 AM Changeset in webkit [243651] by
-
- 2 edits in tags/Safari-608.1.13.3/Source/WebKit
Cherry-pick r243640. rdar://problem/49339242
CFDictionary encoder crashes on non-string keys.
https://bugs.webkit.org/show_bug.cgi?id=196388
rdar://problem/49339242
Reviewed by Ryosuke Niwa.
Allow non-string keys in CFDictionary encoding/decoding. Encode the correct
size for dictionaries and arrays when unknown keys or values are skipped.
Allow null array encoding and decoding like dictionary already allowed.
- Shared/cf/ArgumentCodersCF.cpp: (IPC::encode): (IPC::decode):
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@243640 268f45cc-cd09-0410-ab3c-d52691b4dbfc
- 11:33 AM Changeset in webkit [243650] by
-
- 7 edits in tags/Safari-608.1.13.3/Source
Versioning.
- 11:29 AM Changeset in webkit [243649] by
-
- 1 copy in tags/Safari-608.1.13.3
New tag.
- 10:44 AM Changeset in webkit [243648] by
-
- 3 edits in trunk/Source/WebCore
WebKitTestRunner crashes when running pointerevents/ios/touch-action-none-in-overflow-scrolling-touch.html
https://bugs.webkit.org/show_bug.cgi?id=196345
Patch by Antoine Quint <Antoine Quint> on 2019-03-29
Reviewed by Dean Jackson.
An enum used within a WTF::OptionSet needs to have only power-of-two values that are larger than 0.
- platform/TouchAction.h:
- rendering/style/StyleRareNonInheritedData.h:
- 9:11 AM Changeset in webkit [243647] by
-
- 3 edits2 adds in trunk
HTMLInputElement::setEditingValue should not fail if renderer doesn't exist
https://bugs.webkit.org/show_bug.cgi?id=195708
Reviewed by Wenson Hsieh.
Source/WebCore:
HTMLInputElement::setEditingValue currently returns early if the element's renderer() is
null. This is causing the Epiphany password manager to fail to remember passwords on
https://www.geico.com/ except for navigations through page cache.
This check was originally added to avoid some assertion, but I don't know which one, and
there's definitely not any assertion hit nowadays in this case. Probably there are more
guards checking if renderer() is null elsewhere in the code nowadays, closer to where it's
really needed.
Test: fast/forms/editing-value-null-renderer.html
- html/HTMLInputElement.cpp:
(WebCore::HTMLInputElement::setEditingValue):
LayoutTests:
This is a copy of fast/forms/editing-value.html, except the form is not displayed. The input
value should still change.
- fast/forms/editing-value-null-renderer-expected.txt: Added.
- fast/forms/editing-value-null-renderer.html: Added.
- 8:56 AM Changeset in webkit [243646] by
-
- 5 edits in trunk
Unreviewed, rebaseline WPT test after r243638.
LayoutTests/imported/w3c:
- web-platform-tests/html/browsers/the-window-object/named-access-on-the-window-object/navigated-named-objects.window-expected.txt:
Source/WebCore:
- DerivedSources-input.xcfilelist:
- DerivedSources-output.xcfilelist:
- 8:54 AM Changeset in webkit [243645] by
-
- 8 edits2 adds in trunk
All PointerEvent.isTrusted is always false.
https://bugs.webkit.org/show_bug.cgi?id=196075
<rdar://problem/49158778>
Reviewed by Chris Dumez.
Source/WebCore:
Test: pointerevents/ios/pointer-events-is-trusted.html
The constructors we were using for some PointerEvent::create() methods were using initializers which are expected to be used with JS APIs
and thus generate untrusted events. We switch to using constructors using dedicated parameters which will set isTrusted to true.
- dom/PointerEvent.cpp:
(WebCore::PointerEvent::create):
(WebCore::PointerEvent::createPointerCancelEvent):
(WebCore::PointerEvent::PointerEvent):
(WebCore::m_isPrimary):
(WebCore::m_pointerType):
- dom/PointerEvent.h:
- page/PointerCaptureController.cpp:
(WebCore::PointerCaptureController::cancelPointer):
LayoutTests:
Add tests to the macOS and iOS series of tests that check that isTrusted is indeed true. This uncovered a couple of issues with how some tests were written.
- pointerevents/ios/pointer-events-is-primary.html: Ensure we end both touches so that further tests run cleanly.
- pointerevents/ios/pointer-events-is-trusted-expected.txt: Added.
- pointerevents/ios/pointer-events-is-trusted.html: Added.
- pointerevents/mouse/pointer-event-basic-properties.html: Ensure we wait for the event to be handled before finishing the test.
- pointerevents/utils.js:
(prototype._handlePointerEvent):
- 3:43 AM Changeset in webkit [243644] by
-
- 4 edits in trunk/Source/WebCore
[GStreamer] imxvpudecoder detection and handling
https://bugs.webkit.org/show_bug.cgi?id=196346
Reviewed by Xabier Rodriguez-Calvar.
When the imxvpudecoder is used, the texture sampling of the
directviv-uploaded texture returns an RGB value, so there's no need
to convert it. This patch also includes a refactoring of the
ImageRotation flag handling. The flag is now computed once only
and stored in an instance variable.
- platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:
(WebCore::MediaPlayerPrivateGStreamer::createGSTPlayBin):
- platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:
(WebCore::GstVideoFrameHolder::GstVideoFrameHolder):
(WebCore::MediaPlayerPrivateGStreamerBase::~MediaPlayerPrivateGStreamerBase):
(WebCore::MediaPlayerPrivateGStreamerBase::pushTextureToCompositor):
(WebCore::MediaPlayerPrivateGStreamerBase::flushCurrentBuffer):
(WebCore::MediaPlayerPrivateGStreamerBase::copyVideoTextureToPlatformTexture):
(WebCore::MediaPlayerPrivateGStreamerBase::nativeImageForCurrentTime):
(WebCore::MediaPlayerPrivateGStreamerBase::setVideoSourceOrientation):
(WebCore::MediaPlayerPrivateGStreamerBase::updateTextureMapperFlags):
(WebCore::texMapFlagFromOrientation): Deleted.
- platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.h:
- 1:37 AM Changeset in webkit [243643] by
-
- 59 edits6 copies20 adds in trunk
Implement ResizeObserver.
https://bugs.webkit.org/show_bug.cgi?id=157743
Patch by Cathie Chen <cathiechen> on 2019-03-29
Reviewed by Simon Fraser.
.:
Add ENABLE_RESIZE_OBSERVER.
- Source/cmake/WebKitFeatures.cmake:
LayoutTests/imported/w3c:
Set ResizeObserverEnabled for test runner and update expectations.
- web-platform-tests/interfaces/ResizeObserver.idl: Added.
- web-platform-tests/resize-observer/eventloop-expected.txt:
- web-platform-tests/resize-observer/eventloop.html:
- web-platform-tests/resize-observer/idlharness.window-expected.txt:
- web-platform-tests/resize-observer/idlharness.window.html:
- web-platform-tests/resize-observer/notify-expected.txt:
- web-platform-tests/resize-observer/notify.html:
- web-platform-tests/resize-observer/observe-expected.txt:
- web-platform-tests/resize-observer/observe.html:
- web-platform-tests/resize-observer/svg-expected.txt:
- web-platform-tests/resize-observer/svg.html:
Source/JavaScriptCore:
Add ENABLE_RESIZE_OBSERVER.
- Configurations/FeatureDefines.xcconfig:
Source/WebCore:
Tests: resize-observer/modify-frametree-in-callback.html
resize-observer/multi-frames.html
resize-observer/observe-element-from-other-frame.html
Imported from WPT by https://bugs.webkit.org/show_bug.cgi?id=193821
The data structure: Document has a ResizeObserver slot. ResizeObserver has a ResizeObservation slot.
ResizeObservation is related to one Element and the last reported size.
On the other hand, Element has a ResizeObservation slot.
At the beginning of willDisplayPage, it will check resize observations for current page if:
- There is FrameView be layout and there are ResizeObservers in this page.
- m_resizeObserverTimer has been started by observe() or hasSkippedResizeObservers().
During checkResizeObservations(), we'll gatherDocumentsNeedingResizeObservationCheck() first,
then notifyResizeObservers() for each document. During notifyResizeObservers(), it will gather
the m_activeObservations whose size changed and target element deeper than require depth.
The size changed shallower observations are skipped observations which will be delivered
in the next time. And an ErrorEvent will be reported.
After gathering, deliverResizeObservations create entries and invoke the callbacks with them.
The Element from other document could be observed.
- CMakeLists.txt:
- Configurations/FeatureDefines.xcconfig:
- DerivedSources.make:
- Sources.txt:
- WebCore.xcodeproj/project.pbxproj:
- bindings/js/WebCoreBuiltinNames.h:
- dom/Document.cpp:
(WebCore::Document::getParserLocation const):
(WebCore::Document::addResizeObserver):
(WebCore::Document::removeResizeObserver):
(WebCore::Document::hasResizeObservers):
(WebCore::Document::gatherResizeObservations): Gather m_activeObservations at depth and return the shallowest depth.
(WebCore::Document::deliverResizeObservations): Deliver m_activeObservations, generate ResizeObserverEntries, and invoke the m_callbacks.
(WebCore::Document::hasSkippedResizeObservations const): To determine if Document has the size changed but not delivered observations.
(WebCore::Document::setHasSkippedResizeObservations):
(WebCore::Document::scheduleResizeObservations):
- dom/Document.h:
- dom/Element.cpp:
(WebCore::Element::~Element):
(WebCore::Element::disconnectFromResizeObservers):
(WebCore::Element::ensureResizeObserverData):
(WebCore::Element::resizeObserverData):
- dom/Element.h:
- dom/ElementRareData.cpp:
- dom/ElementRareData.h:
(WebCore::ElementRareData::resizeObserverData):
(WebCore::ElementRareData::setResizeObserverData):
(WebCore::ElementRareData::useTypes const):
- page/FrameView.cpp:
(WebCore::FrameView::didLayout):
- page/FrameViewLayoutContext.cpp:
(WebCore::FrameViewLayoutContext::layoutTimerFired): We need to start a ResizeObserver timer here, because for WK1 this might not trigger flushCompositingChanges.
- page/Page.cpp:
(WebCore::Page::Page):
(WebCore::Page::willDisplayPage):
(WebCore::Page::hasResizeObservers const):
(WebCore::Page::gatherDocumentsNeedingResizeObservationCheck): Gather the documents with resize observers.
(WebCore::Page::checkResizeObservations): Gather documents then notifyResizeObservers for each document.
(WebCore::Page::scheduleResizeObservations):
(WebCore::Page::notifyResizeObservers): Gather m_activeObservations and deliver them. Report ErrorEvent if it has skipped observations.
- page/Page.h:
(WebCore::Page::setNeedsCheckResizeObservations): Page needs to check ResizeObservations if FrameView layout or m_resizeObserverTimer has been started.
(WebCore::Page::needsCheckResizeObservations const):
- page/PageConsoleClient.cpp:
(WebCore::PageConsoleClient::addMessage):
(WebCore::getParserLocationForConsoleMessage): Deleted.
- page/ResizeObservation.cpp: Added.
(WebCore::ResizeObservation::create):
(WebCore::ResizeObservation::ResizeObservation):
(WebCore::ResizeObservation::~ResizeObservation):
(WebCore::ResizeObservation::updateObservationSize):
(WebCore::ResizeObservation::computeObservedSize const):
(WebCore::ResizeObservation::computeTargetLocation const):
(WebCore::ResizeObservation::computeContentRect const):
(WebCore::ResizeObservation::elementSizeChanged const):
(WebCore::ResizeObservation::targetElementDepth const):
- page/ResizeObservation.h: Copied from Tools/DumpRenderTree/TestOptions.h.
(WebCore::ResizeObservation::target const):
- page/ResizeObserver.cpp: Added.
(WebCore::ResizeObserver::create):
(WebCore::ResizeObserver::ResizeObserver):
(WebCore::ResizeObserver::~ResizeObserver):
(WebCore::ResizeObserver::scheduleObservations):
(WebCore::ResizeObserver::observe):
(WebCore::ResizeObserver::unobserve):
(WebCore::ResizeObserver::disconnect):
(WebCore::ResizeObserver::targetDestroyed):
(WebCore::ResizeObserver::gatherObservations):
(WebCore::ResizeObserver::deliverObservations):
(WebCore::ResizeObserver::removeTarget):
(WebCore::ResizeObserver::removeAllTargets):
(WebCore::ResizeObserver::removeObservation):
(WebCore::ResizeObserver::hasPendingActivity const):
(WebCore::ResizeObserver::activeDOMObjectName const):
(WebCore::ResizeObserver::canSuspendForDocumentSuspension const):
(WebCore::ResizeObserver::stop):
- page/ResizeObserver.h: Added.
(WebCore::ResizeObserver::hasObservations const):
(WebCore::ResizeObserver::hasActiveObservations const):
(WebCore::ResizeObserver::maxElementDepth):
(WebCore::ResizeObserver::hasSkippedObservations const):
(WebCore::ResizeObserver::setHasSkippedObservations):
- page/ResizeObserver.idl: Copied from Tools/DumpRenderTree/TestOptions.h.
- page/ResizeObserverCallback.h: Copied from Tools/DumpRenderTree/TestOptions.h.
- page/ResizeObserverCallback.idl: Copied from Tools/DumpRenderTree/TestOptions.h.
- page/ResizeObserverEntry.h: Copied from Tools/DumpRenderTree/TestOptions.h.
(WebCore::ResizeObserverEntry::create):
(WebCore::ResizeObserverEntry::target const):
(WebCore::ResizeObserverEntry::contentRect const):
(WebCore::ResizeObserverEntry::ResizeObserverEntry):
- page/ResizeObserverEntry.idl: Copied from Tools/DumpRenderTree/TestOptions.h.
- page/Settings.yaml:
Source/WebCore/PAL:
Add ENABLE_RESIZE_OBSERVER.
- Configurations/FeatureDefines.xcconfig:
Source/WebKit:
Add WebPreferences and FeatureDefines for ResizeObserver.
- Configurations/FeatureDefines.xcconfig:
- Shared/WebPreferences.yaml:
Source/WebKitLegacy/mac:
- Configurations/FeatureDefines.xcconfig:
- WebView/WebPreferenceKeysPrivate.h:
- WebView/WebPreferences.mm:
(+[WebPreferences initialize]):
(-[WebPreferences resizeObserverEnabled]):
(-[WebPreferences setResizeObserverEnabled:]):
- WebView/WebPreferencesPrivate.h:
- WebView/WebView.mm:
(-[WebView _preferencesChanged:]):
(-[WebView _flushCompositingChanges]): checkResizeObservations() in the begining.
Source/WebKitLegacy/win:
- Interfaces/IWebPreferencesPrivate.idl:
- WebPreferenceKeysPrivate.h:
- WebPreferences.cpp:
(WebPreferences::initializeDefaultSettings):
(WebPreferences::resizeObserverEnabled):
(WebPreferences::setResizeObserverEnabled):
- WebPreferences.h:
- WebView.cpp:
(WebView::notifyPreferencesChanged):
Tools:
Support resizeObserverEnabled webPreferences.
- DumpRenderTree/TestOptions.cpp:
(TestOptions::TestOptions):
- DumpRenderTree/TestOptions.h:
- DumpRenderTree/mac/DumpRenderTree.mm:
(setWebPreferencesForTestOptions):
- DumpRenderTree/win/DumpRenderTree.cpp:
(enableExperimentalFeatures):
- Scripts/webkitperl/FeatureList.pm:
- TestWebKitAPI/Configurations/FeatureDefines.xcconfig:
LayoutTests:
Add tests for resize-observer of multiframe.
- resize-observer/modify-frametree-in-callback-expected.txt: Added.
- resize-observer/modify-frametree-in-callback.html: Added.
- resize-observer/multi-frames-expected.txt: Added.
- resize-observer/multi-frames.html: Added.
- resize-observer/observe-element-from-other-frame-expected.txt: Added.
- resize-observer/observe-element-from-other-frame.html: Added.
- resize-observer/resources/frame1.html: Added.
- resize-observer/resources/frame2.html: Added.
- resize-observer/resources/frame3.html: Added.
- resize-observer/resources/frame4.html: Added.
- resize-observer/resources/frameset1.html: Added.
- resize-observer/resources/frameset2.html: Added.
- resize-observer/resources/iframe1.html: Added.
- resize-observer/resources/resizeTestHelper.js: Added.
(ResizeTestHelper):
(ResizeTestHelper.prototype.get _currentStep):
(ResizeTestHelper.prototype._nextStep):
(ResizeTestHelper.prototype._handleNotification):
(ResizeTestHelper.prototype._handleTimeout):
(ResizeTestHelper.prototype._done):
(ResizeTestHelper.prototype.start):
(ResizeTestHelper.prototype.get rafCount):
(ResizeTestHelper.prototype._incrementRaf):
(ResizeTestHelper.prototype.startCountingRaf):
Mar 28, 2019:
- 11:05 PM Changeset in webkit [243642] by
-
- 9 edits in trunk/Source/JavaScriptCore
[YARR] Precompute BMP / non-BMP status when constructing character classes
https://bugs.webkit.org/show_bug.cgi?id=196296
Reviewed by Keith Miller.
Changed CharacterClass::m_hasNonBMPCharacters into a character width bit field which
indicateis if the class includes characters from either BMP, non-BMP or both ranges.
This allows the recognizing code to eliminate checks for the width of a matched
characters when the class has only one width. The character width is needed to
determine if we advance 1 or 2 character. Also, the pre-computed width of character
classes that contains either all BMP or all non-BMP characters allows the parser to
use fixed widths for terms using those character classes. Changed both the code gen
scripts and Yarr compiler to compute this bit field during the construction of
character classes.
For JIT'ed code of character classes that contain either all BMP or all non-BMP
characters, we can eliminate the generic check we were doing do compute how much
to advance after sucessfully matching a character in the class.
Generic isBMP check BMP only non-BMP only
-------------- -------------- --------------
inc %r9d inc %r9d add $0x2, %r9d
cmp $0x10000, %eax
jl isBMP
cmp %edx, %esi
jz atEndOfString
inc %r9d
inc %esi
isBMP:
For character classes that contained non-BMP characters, we were always generating
the code in the left column. The middle column is the code we generate for character
classes that contain only BMP characters. The right column is the code we now
generate if the character class has only non-BMP characters. In the fix width cases,
we can eliminate both the isBMP check as well as the atEndOfString check. The
atEndOfstring check is eliminated since we know how many characters this character
class requires and that check can be factored out to the beginning of the current
alternative. For character classes that contain both BMP and non-BMP characters,
we still generate the generic left column.
This change is a ~8% perf progression on UniPoker and a ~2% improvement on RexBench
as a whole.
- runtime/RegExp.cpp:
(JSC::RegExp::matchCompareWithInterpreter):
- runtime/RegExpInlines.h:
(JSC::RegExp::matchInline):
- yarr/YarrInterpreter.cpp:
(JSC::Yarr::Interpreter::checkCharacterClassDontAdvanceInputForNonBMP):
(JSC::Yarr::Interpreter::matchCharacterClass):
- yarr/YarrJIT.cpp:
(JSC::Yarr::YarrGenerator::optimizeAlternative):
(JSC::Yarr::YarrGenerator::matchCharacterClass):
(JSC::Yarr::YarrGenerator::advanceIndexAfterCharacterClassTermMatch):
(JSC::Yarr::YarrGenerator::tryReadUnicodeCharImpl):
(JSC::Yarr::YarrGenerator::generateCharacterClassOnce):
(JSC::Yarr::YarrGenerator::generateCharacterClassFixed):
(JSC::Yarr::YarrGenerator::generateCharacterClassGreedy):
(JSC::Yarr::YarrGenerator::backtrackCharacterClassGreedy):
(JSC::Yarr::YarrGenerator::generateCharacterClassNonGreedy):
(JSC::Yarr::YarrGenerator::backtrackCharacterClassNonGreedy):
(JSC::Yarr::YarrGenerator::generateEnter):
(JSC::Yarr::YarrGenerator::YarrGenerator):
(JSC::Yarr::YarrGenerator::compile):
- yarr/YarrPattern.cpp:
(JSC::Yarr::CharacterClassConstructor::CharacterClassConstructor):
(JSC::Yarr::CharacterClassConstructor::reset):
(JSC::Yarr::CharacterClassConstructor::charClass):
(JSC::Yarr::CharacterClassConstructor::addSorted):
(JSC::Yarr::CharacterClassConstructor::addSortedRange):
(JSC::Yarr::CharacterClassConstructor::hasNonBMPCharacters):
(JSC::Yarr::CharacterClassConstructor::characterWidths):
(JSC::Yarr::PatternTerm::dump):
(JSC::Yarr::anycharCreate):
- yarr/YarrPattern.h:
(JSC::Yarr::operator|):
(JSC::Yarr::operator&):
(JSC::Yarr::operator|=):
(JSC::Yarr::CharacterClass::CharacterClass):
(JSC::Yarr::CharacterClass::hasNonBMPCharacters):
(JSC::Yarr::CharacterClass::hasOneCharacterSize):
(JSC::Yarr::CharacterClass::hasOnlyNonBMPCharacters):
(JSC::Yarr::PatternTerm::invert const):
(JSC::Yarr::PatternTerm::invert): Deleted.
- yarr/create_regex_tables:
- yarr/generateYarrUnicodePropertyTables.py:
- 10:18 PM Changeset in webkit [243641] by
-
- 2 edits in trunk/Source/WTF
Unreviewed build fix.
- wtf/CMakeLists.txt: Added SpanningTree.h to WTF_PUBLIC_HEADERS.
- 9:57 PM Changeset in webkit [243640] by
-
- 2 edits in trunk/Source/WebKit
CFDictionary encoder crashes on non-string keys.
https://bugs.webkit.org/show_bug.cgi?id=196388
rdar://problem/49339242
Reviewed by Ryosuke Niwa.
Allow non-string keys in CFDictionary encoding/decoding. Encode the correct
size for dictionaries and arrays when unknown keys or values are skipped.
Allow null array encoding and decoding like dictionary already allowed.
- Shared/cf/ArgumentCodersCF.cpp:
(IPC::encode):
(IPC::decode):
- 9:42 PM Changeset in webkit [243639] by
-
- 6 edits2 adds in trunk
BackwardsGraph needs to consider back edges as the backward's root successor
https://bugs.webkit.org/show_bug.cgi?id=195991
Reviewed by Filip Pizlo.
JSTests:
- stress/map-b3-licm-infinite-loop.js: Added.
Source/JavaScriptCore:
- b3/testb3.cpp:
(JSC::B3::testInfiniteLoopDoesntCauseBadHoisting):
(JSC::B3::run):
Source/WTF:
Previously, our backwards graph analysis was slightly wrong. The idea of
backwards graph is that the root of the graph has edges to terminals in
the original graph. And then the original directed edges in the graph are flipped.
However, we weren't considering loops as a form of terminality. For example,
we wouldn't consider an infinite loop as a terminal. So there were no edges
from the root to a node in the infinite loop. This lead us to make mistakes
when we used backwards dominators to compute control flow equivalence.
This is better understood in an example:
`
preheader:
while (1) {
if (!isCell(v))
continue;
load structure ID
if (cond)
continue;
return
}
`
In the previous version of this algorithm, the only edge from the backwards
root would be to the block containing the return. This would lead us to
believe that the loading of the structureID backwards dominates the preheader,
leading us to believe it's control flow equivalent to preheader. This is
obviously wrong, since we can loop forever if "v" isn't a cell.
The solution here is to treat any backedge in the graph as a "terminal" node.
Since a backedge implies the existence of a loop.
In the above example, the backwards root now has an edge to both blocks with
"continue". This prevents us from falsely claiming that the return is control
flow equivalent with the preheader.
This patch uses DFS spanning trees to compute back edges. An edge
u->v is a back edge when u is a descendent of v in the DFS spanning
tree of the Graph.
- WTF.xcodeproj/project.pbxproj:
- wtf/BackwardsGraph.h:
(WTF::BackwardsGraph::BackwardsGraph):
- wtf/SpanningTree.h: Added.
(SpanningTree::SpanningTree):
(SpanningTree::isDescendent):
- 7:34 PM Changeset in webkit [243638] by
-
- 10 edits in trunk
Support <object>.contentWindow
https://bugs.webkit.org/show_bug.cgi?id=195562
Reviewed by Sam Weinig.
LayoutTests/imported/w3c:
Rebaseline WPT tests now that more checks are passing or failing later on.
- web-platform-tests/html/browsers/the-window-object/accessing-other-browsing-contexts/indexed-browsing-contexts-03-expected.txt:
- web-platform-tests/html/dom/interfaces-expected.txt:
- web-platform-tests/html/semantics/embedded-content/the-object-element/object-attributes-expected.txt:
Source/WebCore:
Support <object>.contentWindow as per:
No new tests, updated / rebaselined existing tests.
- html/HTMLObjectElement.idl:
LayoutTests:
Update existing test to extend test coverage.
- fast/dom/HTMLObjectElement/object-as-frame-expected.txt:
- fast/dom/HTMLObjectElement/object-as-frame.html:
- 7:26 PM Changeset in webkit [243637] by
-
- 4 edits2 adds in trunk
FontFace constructor throws an exception when there is a name which starts with a number
https://bugs.webkit.org/show_bug.cgi?id=196232
<rdar://problem/49293978>
Reviewed by Ryosuke Niwa.
Source/WebCore:
We were technically following the spec, but Chrome and Firefox are both consistent and it was making a website break.
This is just a short-term fix until the underlying https://bugs.webkit.org/show_bug.cgi?id=196381 is fixed.
Test: fast/text/font-face-family.html
- css/FontFace.cpp:
(WebCore::FontFace::setFamily):
LayoutTests:
- fast/text/font-face-family-expected.txt: Added.
- fast/text/font-face-family.html: Added.
- 7:19 PM Changeset in webkit [243636] by
-
- 23 edits in trunk/Source/WebCore
[Web GPU] Replace 'unsigned long' with 'unsigned' when implementing u32 variables
https://bugs.webkit.org/show_bug.cgi?id=194618
<rdar://problem/48055796>
Reviewed by Myles C. Maxfield.
WebIDL for "unsigned" on 64-bit is "unsigned long". Update Web GPU to match.
No new tests; no change in behavior.
- Modules/webgpu/GPUBindGroupLayoutBinding.h:
- Modules/webgpu/WHLSL/Metal/WHLSLVertexBufferIndexCalculator.cpp:
(WebCore::WHLSL::Metal::calculateVertexBufferIndex):
- Modules/webgpu/WHLSL/Metal/WHLSLVertexBufferIndexCalculator.h:
- Modules/webgpu/WebGPUBindGroupBinding.h:
- Modules/webgpu/WebGPUBindGroupDescriptor.cpp:
(WebCore::validateBufferBindingType):
(WebCore::WebGPUBindGroupDescriptor::tryCreateGPUBindGroupDescriptor const):
- Modules/webgpu/WebGPUBuffer.cpp:
(WebCore::WebGPUBuffer::setSubData):
- Modules/webgpu/WebGPUBuffer.h:
- Modules/webgpu/WebGPUBufferBinding.h:
- Modules/webgpu/WebGPURenderPassEncoder.cpp:
(WebCore::WebGPURenderPassEncoder::setVertexBuffers):
(WebCore::WebGPURenderPassEncoder::draw):
- Modules/webgpu/WebGPURenderPassEncoder.h:
- platform/graphics/gpu/GPUBindGroupBinding.h:
- platform/graphics/gpu/GPUBindGroupLayout.h:
- platform/graphics/gpu/GPUBufferBinding.h:
- platform/graphics/gpu/GPUExtent3D.h:
- platform/graphics/gpu/GPULimits.h:
- platform/graphics/gpu/GPURenderPassEncoder.h:
- platform/graphics/gpu/GPUTextureDescriptor.h:
- platform/graphics/gpu/cocoa/GPUBindGroupLayoutMetal.mm:
(WebCore::GPUBindGroupLayout::tryCreate):
- platform/graphics/gpu/cocoa/GPUBindGroupMetal.mm:
(WebCore::GPUBindGroup::tryCreate):
- platform/graphics/gpu/cocoa/GPURenderPassEncoderMetal.mm:
(WebCore::GPURenderPassEncoder::setVertexBuffers):
(WebCore::GPURenderPassEncoder::draw):
- platform/graphics/gpu/cocoa/GPURenderPipelineMetal.mm:
(WebCore::trySetInputStateForPipelineDescriptor):
- platform/graphics/gpu/cocoa/GPUTextureMetal.mm:
(WebCore::storageModeForPixelFormatAndSampleCount):
- 6:56 PM Changeset in webkit [243635] by
-
- 3 edits2 adds in trunk
getBoundingClientRect always returns empty rect on a collapsed range
https://bugs.webkit.org/show_bug.cgi?id=196380
Reviewed by Wenson Hsieh.
Source/WebCore:
The bug was caused by Range::boundingRect merging rects via FloatRect::unite which ignores empty rects.
Use uniteIfNonZero instead to fix the bug. Note that we can't use uniteEvenIfEmpty because that would
set x, y to always 0, 0 as we would end up merging any rect with the initial empty rect.
Test: fast/dom/Range/getBoundingClientRect-on-collapsed-selection-range.html
- dom/Range.cpp:
(WebCore::Range::boundingRect const):
LayoutTests:
Added a regression test.
- fast/dom/Range/getBoundingClientRect-on-collapsed-selection-range-expected.txt: Added.
- fast/dom/Range/getBoundingClientRect-on-collapsed-selection-range.html: Added.
- 6:43 PM Changeset in webkit [243634] by
-
- 18 edits4 moves37 adds in trunk/LayoutTests
Re-sync web-platform-tests/html/browsers/the-window-object/ from upstream
https://bugs.webkit.org/show_bug.cgi?id=196379
Reviewed by Ryosuke Niwa.
LayoutTests/imported/w3c:
Re-sync web-platform-tests/html/browsers/the-window-object/ from upstream 3bfdeb8976fc.
- web-platform-tests/html/browsers/the-window-object/*: Updated.
LayoutTests:
- tests-options.json:
- 6:29 PM Changeset in webkit [243633] by
-
- 3 edits in trunk/Source/JavaScriptCore
Opcode.h(159,27): warning: adding 'unsigned int' to a string does not append to the string [-Wstring-plus-int]
https://bugs.webkit.org/show_bug.cgi?id=196343
Reviewed by Saam Barati.
Clang reports a compilation warning and recommend '&PADDING_STRING[PADDING_STRING_LENGTH]'
instead of 'PADDING_STRING + PADDING_STRING_LENGTH'.
- bytecode/Opcode.cpp:
(JSC::padOpcodeName): Moved padOpcodeName from Opcode.h because
this function is used only in Opcode.cpp. Changed macros
PADDING_STRING and PADDING_STRING_LENGTH to simple variables.
(JSC::compareOpcodePairIndices): Replaced pair with std::pair.
- bytecode/Opcode.h:
(JSC::padOpcodeName): Moved.
- 6:15 PM Changeset in webkit [243632] by
-
- 24 edits in trunk
Resource Load Statistics: IPC to the WebsiteDataStore in the UI process from NetworkProcess::deleteWebsiteDataForRegistrableDomains()
https://bugs.webkit.org/show_bug.cgi?id=196281
<rdar://problem/48938748>
Reviewed by Alex Christensen.
Source/WebKit:
The move of Resource Load Statistics to the network process requires that it
calls the UI process when clearing website data (previously the other way
around). This patch achieves that.
Specifically, NetworkProcess::deleteWebsiteDataForRegistrableDomains() now
filters its WebsiteDataTypes down to just the ones applicable for the UI
process and then calls DeleteWebsiteDataInUIProcessForRegistrableDomains over
IPC.
NetworkProcessProxy::deleteWebsiteDataInUIProcessForRegistrableDomains() on
the UI process side makes use of the re-introduced
WebsiteDataStore::fetchDataForRegistrableDomains() function to get the relevant
data records and call WebsiteDataStore::removeData(). The re-introduced
WebsiteDataStore::fetchDataForRegistrableDomains() was removed as dead code in
https://trac.webkit.org/changeset/242056/webkit, then under the name
WebsiteDataStore::fetchDataForTopPrivatelyControlledDomains(). The reason it
was dead code was the lack of IPC call that this patch adds.
- NetworkProcess/NetworkProcess.cpp:
(WebKit::NetworkProcess::deleteWebsiteDataForRegistrableDomains):
Now calls DeleteWebsiteDataInUIProcessForRegistrableDomains over IPC if there
are WebsiteDataTypes applicable to the UI process.
- NetworkProcess/NetworkProcess.h:
- Shared/WebsiteData/WebsiteData.cpp:
(WebKit::WebsiteData::ownerProcess):
(WebKit::WebsiteData::filter):
Convenience functions to manage process ownership of website data types.
- Shared/WebsiteData/WebsiteData.h:
- UIProcess/API/C/WKWebsiteDataStoreRef.cpp:
(WKWebsiteDataStoreStatisticsHasLocalStorage):
Test infrastructure, called by the TestRunner.
- UIProcess/API/C/WKWebsiteDataStoreRef.h:
- UIProcess/Network/NetworkProcessProxy.cpp:
(WebKit::NetworkProcessProxy::deleteWebsiteDataInUIProcessForRegistrableDomains):
New function to be called from the network process.
- UIProcess/Network/NetworkProcessProxy.h:
- UIProcess/Network/NetworkProcessProxy.messages.in:
- UIProcess/WebsiteData/WebsiteDataRecord.cpp:
(WebKit::WebsiteDataRecord::matches const):
Now matches with WebCore::RegistrableDomain instead of a string.
(WebKit::WebsiteDataRecord::matchesTopPrivatelyControlledDomain const): Deleted.
Replaced by WebsiteDataRecord::matches().
- UIProcess/WebsiteData/WebsiteDataRecord.h:
- UIProcess/WebsiteData/WebsiteDataStore.cpp:
(WebKit::WebsiteDataStore::fetchDataForRegistrableDomains):
Re-introduced. It was removed as dead code in r242056.
(WebKit::computeNetworkProcessAccessTypeForDataRemoval):
(WebKit::WebsiteDataStore::hasLocalStorageForTesting const):
Test infrastructure, called by the TestRunner.
- UIProcess/WebsiteData/WebsiteDataStore.h:
Tools:
This patch adds the function isStatisticsHasLocalStorage() to the
TestRunner. With it, the page can query the WebsiteDataStore in the
UI process to make sure that it sees LocalStorage.
- WebKitTestRunner/InjectedBundle/Bindings/TestRunner.idl:
- WebKitTestRunner/InjectedBundle/TestRunner.cpp:
(WTR::TestRunner::isStatisticsHasLocalStorage):
- WebKitTestRunner/InjectedBundle/TestRunner.h:
- WebKitTestRunner/TestController.cpp:
(WTR::TestController::isStatisticsHasLocalStorage):
- WebKitTestRunner/TestController.h:
- WebKitTestRunner/TestInvocation.cpp:
(WTR::TestInvocation::didReceiveSynchronousMessageFromInjectedBundle):
LayoutTests:
This test now covers LocalStorage too.
- http/tests/resourceLoadStatistics/website-data-removal-for-site-navigated-to-with-link-decoration-expected.txt:
- http/tests/resourceLoadStatistics/website-data-removal-for-site-navigated-to-with-link-decoration.html:
- 4:47 PM Changeset in webkit [243631] by
-
- 5 edits1 add in trunk
API::Data::createWithoutCopying should do a null check before calling CFRelease
https://bugs.webkit.org/show_bug.cgi?id=196276
<rdar://problem/48059859>
Reviewed by Alex Christensen.
Source/WebKit:
- Shared/Cocoa/APIDataCocoa.mm:
(API::Data::createWithoutCopying):
Tools:
Add an API test that will pass a nil to API::Data::createWithoutCopying via NavigationState::NavigationClient::webCryptoMasterKey.
- TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
- TestWebKitAPI/Tests/WebKit/navigation-client-default-crypto.html:
- TestWebKitAPI/Tests/WebKitCocoa/WebCryptoMasterKey.mm: Added.
(-[WebCryptoMasterKeyNavigationDelegate _webCryptoMasterKeyForWebView:]):
(-[WebCryptoMasterKeyNavigationDelegate webView:runJavaScriptAlertPanelWithMessage:initiatedByFrame:completionHandler:]):
(TestWebKitAPI::TEST):
- 4:30 PM Changeset in webkit [243630] by
-
- 11 edits in trunk/Source/WebKit
[iOS] Automatic focus of input field is flaky
https://bugs.webkit.org/show_bug.cgi?id=196302
Reviewed by Brent Fulgham.
Sometimes the status of whether a keyboard is connected can be incorrect, both in the UI process, and in
the WebContent process. Fix this by sending the keyboard status to the WebContent process as part of the
Web page creation parameters. Stop caching the keyboard status in the Web process proxy, and call
[UIKeyboard isInHardwareKeyboardMode] instead, since this method is swizzled in the test harness.
- Shared/WebPageCreationParameters.cpp:
(WebKit::WebPageCreationParameters::encode const):
(WebKit::WebPageCreationParameters::decode):
- Shared/WebPageCreationParameters.h:
- UIProcess/API/Cocoa/WKWebView.mm:
(hardwareKeyboardAvailabilityChangedCallback):
- UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::creationParameters):
- UIProcess/WebPageProxy.h:
- UIProcess/WebProcessProxy.cpp:
- UIProcess/WebProcessProxy.h:
(WebKit::WebProcessProxy::setKeyboardIsAttached): Deleted.
(WebKit::WebProcessProxy::keyboardIsAttached const): Deleted.
- UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView _elementDidFocus:userIsInteracting:blurPreviousNode:changingActivityState:userObject:]):
- UIProcess/ios/WebPageProxyIOS.mm:
(WebKit::WebPageProxy::isInHardwareKeyboardMode):
(WebKit::WebPageProxy::applicationWillEnterForeground):
- WebProcess/WebPage/WebPage.cpp:
- WebProcess/WebPage/WebPage.h:
- 4:11 PM Changeset in webkit [243629] by
-
- 2 edits in trunk/LayoutTests
The following layout tests are flaky failures
http/wpt/webauthn/public-key-credential-get-success-hid.https.html
http/wpt/webauthn/public-key-credential-create-success-hid.https.html
https://bugs.webkit.org/show_bug.cgi?id=194780
https://bugs.webkit.org/show_bug.cgi?id=196377
Unreviewed test gardening.
- platform/mac-wk2/TestExpectations: Updating test expectations for flaky failures
- 3:32 PM Changeset in webkit [243628] by
-
- 3 edits in trunk/LayoutTests
storage/domstorage/localstorage/private-browsing-affects-storage.html is a flaky failure
https://bugs.webkit.org/show_bug.cgi?id=196376
Unreviewed test gardening.
- platform/ios-simulator-wk2/TestExpectations:
- platform/mac-wk2/TestExpectations: Updating test expectations for flaky failure
- 3:13 PM Changeset in webkit [243627] by
-
- 38 edits13 copies4 adds in trunk
[Web GPU] Prototype compute pipeline with MSL
https://bugs.webkit.org/show_bug.cgi?id=196107
<rdar://problem/46289650>
Reviewed by Myles Maxfield.
Source/WebCore:
Add GPUComputePassEncoder, GPUComputePipeline, and GPUComputePipelineDescriptor.
Implement everything needed to prototype a compute pipeline in Web GPU using Metal shaders and bound resources.
Test: webgpu/compute-squares.html
Add files and symbols:
- CMakeLists.txt:
- DerivedSources-input.xcfilelist:
- DerivedSources-output.xcfilelist:
- DerivedSources.make:
- Sources.txt:
- SourcesCocoa.txt:
- WebCore.xcodeproj/project.pbxproj:
- bindings/js/WebCoreBuiltinNames.h:
Misc fixes:
- Modules/webgpu/WHLSL/WHLSLNameResolver.h: Missing include.
- Modules/webgpu/WHLSL/WHLSLSynthesizeConstructors.cpp: Missing include.
- Modules/webgpu/WebGPUPipelineStageDescriptor.cpp: Added. Move pipeline stage validation logic here.
(WebCore::WebGPUPipelineStageDescriptor::tryCreateGPUPipelineStageDescriptor const):
- Modules/webgpu/WebGPURenderPipeline.cpp: Remove unnecessary include.
- Modules/webgpu/WebGPURenderPipeline.h:
- Modules/webgpu/WebGPURenderPipelineDescriptor.cpp: Add missing inlcude.
(WebCore::WebGPUPipelineStageDescriptor::tryCreateGPUPipelineStageDescriptor const): Moved to WebGPUPipelineStageDescriptor.cpp.
- platform/graphics/gpu/GPUPipelineDescriptorBase.h: Add missing include.
- platform/graphics/gpu/cocoa/GPURenderPipelineMetal.mm: Add missing include.
(WebCore::GPURenderPipeline::GPURenderPipeline): Remove unecessary ref of GPUPipelineLayout.
- platform/text/mac/TextEncodingRegistryMac.mm: Carbon.h was causing ambiguous reference build errors in this file.
Enable creating a GPUComputePassEncoder from a GPUCommandEncoder:
- Modules/webgpu/WebGPUCommandEncoder.cpp:
(WebCore::WebGPUCommandEncoder::beginRenderPass): No longer passing this WebGPUCommandEncoder to pass encoders.
(WebCore::WebGPUCommandEncoder::beginComputePass): Added.
- Modules/webgpu/WebGPUCommandEncoder.h:
- Modules/webgpu/WebGPUCommandEncoder.idl:
Add GPUComputePassEncoder:
- Modules/webgpu/WebGPUComputePassEncoder.cpp: Added.
(WebCore::WebGPUComputePassEncoder::create):
(WebCore::WebGPUComputePassEncoder::WebGPUComputePassEncoder):
(WebCore::WebGPUComputePassEncoder::setPipeline):
(WebCore::WebGPUComputePassEncoder::dispatch):
(WebCore::WebGPUComputePassEncoder::passEncoder):
(WebCore::WebGPUComputePassEncoder::passEncoder const):
- Modules/webgpu/WebGPUComputePassEncoder.h: Added.
- Modules/webgpu/WebGPUComputePassEncoder.idl: Added.
- platform/graphics/gpu/GPUComputePassEncoder.h: Added.
(WebCore::GPUComputePassEncoder::~GPUComputePassEncoder):
- platform/graphics/gpu/cocoa/GPUComputePassEncoderMetal.mm: Added.
(WebCore::GPUComputePassEncoder::tryCreate):
(WebCore::GPUComputePassEncoder::GPUComputePassEncoder):
(WebCore::GPUComputePassEncoder::setPipeline):
(WebCore::GPUComputePassEncoder::dispatch): Use a default calculation for threadsPerThreadgroup while MSL is still an accepted shader format.
(WebCore::GPUComputePassEncoder::platformPassEncoder const):
(WebCore::GPUComputePassEncoder::useResource):
(WebCore::GPUComputePassEncoder::setComputeBuffer):
Add GPUComputePipeline:
- Modules/webgpu/WebGPUComputePipeline.cpp: Added.
(WebCore::WebGPUComputePipeline::create):
(WebCore::WebGPUComputePipeline::WebGPUComputePipeline):
- Modules/webgpu/WebGPUComputePipeline.h: Added.
(WebCore::WebGPUComputePipeline::computePipeline const):
- Modules/webgpu/WebGPUComputePipeline.idl: Added.
- Modules/webgpu/WebGPUComputePipelineDescriptor.cpp: Added.
(WebCore::WebGPUComputePipelineDescriptor::tryCreateGPUComputePipelineDescriptor const):
- Modules/webgpu/WebGPUComputePipelineDescriptor.h: Added.
- Modules/webgpu/WebGPUComputePipelineDescriptor.idl: Added.
- platform/graphics/gpu/GPUComputePipeline.h: Added.
(WebCore::GPUComputePipeline::platformComputePipeline const):
- platform/graphics/gpu/GPUComputePipelineDescriptor.h: Added.
(WebCore::GPUComputePipelineDescriptor::GPUComputePipelineDescriptor):
- platform/graphics/gpu/cocoa/GPUComputePipelineMetal.mm: Added.
(WebCore::tryCreateMtlComputeFunction):
(WebCore::tryCreateMTLComputePipelineState):
(WebCore::GPUComputePipeline::tryCreate):
(WebCore::GPUComputePipeline::GPUComputePipeline):
Enable creating a GPUComputePipeline from a GPUDevice:
- Modules/webgpu/WebGPUDevice.cpp:
(WebCore::WebGPUDevice::createComputePipeline const):
- Modules/webgpu/WebGPUDevice.h:
- Modules/webgpu/WebGPUDevice.idl:
- platform/graphics/gpu/GPUDevice.cpp:
(WebCore::GPUDevice::tryCreateComputePipeline const):
- platform/graphics/gpu/GPUDevice.h:
No longer unnecessarily ref the WebGPUCommandEncoder when creating pass encoder:
- Modules/webgpu/WebGPUProgrammablePassEncoder.cpp:
(WebCore::WebGPUProgrammablePassEncoder::setBindGroup):
(WebCore::WebGPUProgrammablePassEncoder::WebGPUProgrammablePassEncoder): Deleted.
(WebCore::WebGPUProgrammablePassEncoder::setBindGroup const): Deleted.
- Modules/webgpu/WebGPUProgrammablePassEncoder.h:
- Modules/webgpu/WebGPURenderPassEncoder.cpp:
(WebCore::WebGPURenderPassEncoder::create):
(WebCore::WebGPURenderPassEncoder::WebGPURenderPassEncoder):
(WebCore::WebGPURenderPassEncoder::setPipeline):
(WebCore::WebGPURenderPassEncoder::passEncoder):
(WebCore::WebGPURenderPassEncoder::passEncoder const):
- Modules/webgpu/WebGPURenderPassEncoder.h:
Updates to GPUBindGroup and *setBindGroup for compute function arguments:
- platform/graphics/gpu/GPUBindGroup.h:
(WebCore::GPUBindGroup::vertexArgsBuffer const):
(WebCore::GPUBindGroup::fragmentArgsBuffer const):
(WebCore::GPUBindGroup::computeArgsBuffer const):
(WebCore::GPUBindGroup::vertexArgsBuffer): Deleted. Const-qualified.
(WebCore::GPUBindGroup::fragmentArgsBuffer): Ditto.
- platform/graphics/gpu/cocoa/GPUBindGroupMetal.mm:
(WebCore::tryGetResourceAsMTLSamplerState): Now just returns the MTLSamplerState to reduce reference churning.
(WebCore::GPUBindGroup::tryCreate):
(WebCore::GPUBindGroup::GPUBindGroup):
(WebCore::tryGetResourceAsSampler): Renamed to tryGetResourceAsMTLSamplerState.
Updates to GPUProgrammablePassEncoder and GPURenderPassEncoder:
- platform/graphics/gpu/GPUProgrammablePassEncoder.h:
(WebCore::GPUProgrammablePassEncoder::setVertexBuffer):
(WebCore::GPUProgrammablePassEncoder::setFragmentBuffer):
(WebCore::GPUProgrammablePassEncoder::setComputeBuffer): Added.
- platform/graphics/gpu/GPURenderPassEncoder.h:
(WebCore::GPURenderPassEncoder::~GPURenderPassEncoder):
- platform/graphics/gpu/GPURenderPipeline.h:
- platform/graphics/gpu/cocoa/GPUProgrammablePassEncoderMetal.mm: Remove unecessary include.
(WebCore::GPUProgrammablePassEncoder::endPass): No longer virtual. Delegates shared behavior for derived classes.
(WebCore::GPUProgrammablePassEncoder::setBindGroup):
- platform/graphics/gpu/cocoa/GPURenderPassEncoderMetal.mm:
(WebCore::GPURenderPassEncoder::platformPassEncoder const):
(WebCore::GPURenderPassEncoder::setPipeline):
(WebCore::GPURenderPassEncoder::draw):
(WebCore::GPURenderPassEncoder::useResource): These private overrides are called only by base after checking for encoder existence.
(WebCore::GPURenderPassEncoder::setVertexBuffer): Ditto.
(WebCore::GPURenderPassEncoder::setFragmentBuffer): Ditto.
(WebCore::GPURenderPassEncoder::endPass): Deleted. Now handled by base class.
LayoutTests:
Add a basic test to create, execute, and verify the results of a Web GPU compute pipeline.
- webgpu/compute-squares-expected.txt: Added.
- webgpu/compute-squares.html: Added.
- webgpu/whlsl.html: Update some function names to match API changes.
- 3:05 PM Changeset in webkit [243626] by
-
- 6 edits1 add in trunk
CodeBlock::jettison() should disallow repatching its own calls
https://bugs.webkit.org/show_bug.cgi?id=196359
<rdar://problem/48973663>
Reviewed by Saam Barati.
JSTests:
- stress/call-link-info-osrexit-repatch.js: Added.
(foo):
Source/JavaScriptCore:
CodeBlock::jettison() calls CommonData::invalidate, which replaces the
hlt
instruction with the jump to OSR exit. However, if thehltwas immediately
followed by a call to the CodeBlock being jettisoned, we would write over the
OSR exit address while unlinking all the incoming CallLinkInfos later in
CodeBlock::jettison().
Change it so that we set a flag,
clearedByJettison, in all the CallLinkInfos
owned by the CodeBlock being jettisoned. If the flag is set, we will avoid
repatching the call during unlinking. This is safe because this call will never
be reachable again after the CodeBlock is jettisoned.
- bytecode/CallLinkInfo.cpp:
(JSC::CallLinkInfo::CallLinkInfo):
(JSC::CallLinkInfo::setCallee):
(JSC::CallLinkInfo::clearCallee):
(JSC::CallLinkInfo::setCodeBlock):
(JSC::CallLinkInfo::clearCodeBlock):
- bytecode/CallLinkInfo.h:
(JSC::CallLinkInfo::clearedByJettison):
(JSC::CallLinkInfo::setClearedByJettison):
- bytecode/CodeBlock.cpp:
(JSC::CodeBlock::jettison):
- jit/Repatch.cpp:
(JSC::revertCall):
- 3:03 PM Changeset in webkit [243625] by
-
- 2 edits in trunk/LayoutTests
Fixed typing error I made in https://trac.webkit.org/changeset/243612/webkit
https://bugs.webkit.org/show_bug.cgi?id=196357
Unreviewed test gardening.
- platform/ios-simulator-wk2/TestExpectations: Fixing error in test expectations file
- 2:45 PM Changeset in webkit [243624] by
-
- 2 edits in trunk/JSTests
[JSC] imports-oom.js intermittently fails
https://bugs.webkit.org/show_bug.cgi?id=196373
Reviewed by Saam Barati.
imports-oom.js ensures that a wasm module compilation / instantiation throws an OOM error instead of crashing when compiling / instantiating their entry points
with extremely low executable memory amount. And this test expects we at least once successfully compile, instantiate, and execute a wasm module to test that
wasm implementation is always throwing an OOM error. However, maybe due to wasm changes, the amount of executable memory consumed by wasm compilation is changed,
and now we may encounter an OOM error at the first compilation. Since imports-oom.js randomize the amount of executable memory used by the generated wasm module,
imports-oom.js intermittently fails when it first generates large wasm module which cannot be compiled.
This patch reduces the maxParams from 32 to 8 to reduce the size of randomly generated wasm module. Since we repeatedly generate wasm modules, this test soon encounter
an expected OOM error. But this avoids the situation that we get an OOM error when we compile a first wasm module.
- wasm/lowExecutableMemory/imports-oom.js:
- 2:30 PM Changeset in webkit [243623] by
-
- 3 edits in trunk/Websites/webkit.org
Fix font family for WebKit.org
https://bugs.webkit.org/show_bug.cgi?id=196311
Reviewed by Myles C. Maxfield.
- wp-content/themes/webkit/header.php: Added SF Mono loading
- wp-content/themes/webkit/style.css:
(html): Use Text font by default
(h1,): Use Display font for large headings
(.nextrouter-copy): Use Display font for routers
- 2:26 PM Changeset in webkit [243622] by
-
- 2 edits in trunk/Source/WebCore
IDBRequest::dispatchEvent should check nullability of m_transaction before operations that rely on it to be non null
https://bugs.webkit.org/show_bug.cgi?id=196319
<rdar://problem/49355279>
Reviewed by Alex Christensen.
The test that triggers this crash is on Bug 196276.
- Modules/indexeddb/IDBRequest.cpp:
(WebCore::IDBRequest::dispatchEvent):
- 2:23 PM Changeset in webkit [243621] by
-
- 3 edits2 adds in trunk
Debug assert in DOMSelection::containsNode when node belongs to a different tree
https://bugs.webkit.org/show_bug.cgi?id=196342
Reviewed by Antti Koivisto.
Source/WebCore:
The assertion was wrong. It's possible for Range::compareBoundaryPoints to return WRONG_DOCUMENT_ERR
when the node and the start container belong to two different trees.
Return false in such a case for now since it's unclear (unspecified) what these methods on Selection
should do with respect to shadow trees, preserving the current behavior of release builds.
Test: editing/selection/containsNode-with-no-common-ancestor.html
- page/DOMSelection.cpp:
(WebCore::DOMSelection::containsNode const):
LayoutTests:
Added a regression test to catch the debug assertion failure. The test always passed in release builds.
- editing/selection/containsNode-with-no-common-ancestor-expected.txt: Added.
- editing/selection/containsNode-with-no-common-ancestor.html: Added.
- 2:23 PM Changeset in webkit [243620] by
-
- 2 edits in trunk/LayoutTests/imported/w3c
Unreviewed, rebaseline web-platform-tests/html/dom/interfaces.html
- web-platform-tests/html/dom/interfaces-expected.txt:
- 1:03 PM Changeset in webkit [243619] by
-
- 2 edits in trunk/Source/WTF
Un-fix the build
- wtf/Platform.h:
It is no longer necessary to exclude this from PLATFORM(IOSMAC).
- 1:00 PM Changeset in webkit [243618] by
-
- 3 edits in trunk/Source/WebKit
Fix the build.
- UIProcess/ios/WKActionSheetAssistant.mm:
(-[WKActionSheetAssistant showImageSheet]):
- UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView actionSheetAssistant:showCustomSheetForElement:]):
- 12:37 PM Changeset in webkit [243617] by
-
- 6 edits in trunk/Source/JavaScriptCore
[JSC] Drop VM and Context cache map in JavaScriptCore.framework
https://bugs.webkit.org/show_bug.cgi?id=196341
Reviewed by Saam Barati.
Previously, we created Objective-C weak map to maintain JSVirtualMachine and JSContext wrappers corresponding to VM and JSGlobalObject.
But Objective-C weak map is really memory costly. Even if the entry is only one, it consumes 2.5KB per weak map. Since we can modify
JSC intrusively for JavaScriptCore.framework (and we already did it, like, holding JSWrapperMap in JSGlobalObject), we can just hold
a pointer to a wrapper in VM and JSGlobalObject.
This patch adds void* members to VM and JSGlobalObject, which holds a non-strong reference to a wrapper. When a wrapper is gone, we
clear this pointer too. This removes unnecessary two Objective-C weak maps, and save 5KB.
- API/JSContext.mm:
(-[JSContext initWithVirtualMachine:]):
(-[JSContext dealloc]):
(-[JSContext initWithGlobalContextRef:]):
(-[JSContext wrapperMap]):
(+[JSContext contextWithJSGlobalContextRef:]):
- API/JSVirtualMachine.mm:
(-[JSVirtualMachine initWithContextGroupRef:]):
(-[JSVirtualMachine dealloc]):
(+[JSVirtualMachine virtualMachineWithContextGroupRef:]):
(scanExternalObjectGraph):
(scanExternalRememberedSet):
(initWrapperCache): Deleted.
(wrapperCache): Deleted.
(+[JSVMWrapperCache addWrapper:forJSContextGroupRef:]): Deleted.
(+[JSVMWrapperCache wrapperForJSContextGroupRef:]): Deleted.
(-[JSVirtualMachine contextForGlobalContextRef:]): Deleted.
(-[JSVirtualMachine addContext:forGlobalContextRef:]): Deleted.
- API/JSVirtualMachineInternal.h:
- runtime/JSGlobalObject.h:
(JSC::JSGlobalObject::setAPIWrapper):
(JSC::JSGlobalObject::apiWrapper const):
- runtime/VM.h:
- 12:32 PM Changeset in webkit [243616] by
-
- 2 edits in trunk/Source/WebCore
Fix the !ENABLE(APPLE_PAY) build
- bindings/js/ScriptController.cpp:
(WebCore::ScriptController::shouldAllowUserAgentScripts const):
- 12:18 PM Changeset in webkit [243615] by
-
- 3 edits in trunk/Source/WebCore
Crash at IDBDatabaseInfo::infoForExistingObjectStore and IDBDatabaseInfo::infoForExistingObjectStore
https://bugs.webkit.org/show_bug.cgi?id=196120
<rdar://problem/39869767>
Reviewed by Ryosuke Niwa.
No new tests because it is unclear how the crash happens. Added release logging to help debug.
- Modules/indexeddb/server/SQLiteIDBBackingStore.cpp:
(WebCore::IDBServer::SQLiteIDBBackingStore::createIndex):
- Modules/indexeddb/server/UniqueIDBDatabase.cpp:
(WebCore::IDBServer::UniqueIDBDatabase::performCreateIndex):
(WebCore::IDBServer::UniqueIDBDatabase::performPutOrAdd):
- 11:47 AM Changeset in webkit [243614] by
-
- 6 edits1 add in trunk/Source/WebInspectorUI
Web Inspector: Show Resource Initiator in Network Tab detail views
https://bugs.webkit.org/show_bug.cgi?id=196316
<rdar://problem/49352679>
Reviewed by Devin Rousso.
- UserInterface/Controllers/NetworkManager.js:
(WI.NetworkManager.prototype.resourceRequestWillBeSent):
(WI.NetworkManager.prototype.resourceRequestWasServedFromMemoryCache):
(WI.NetworkManager.prototype._initiatorCallFramesFromPayload):
Initialize call frames from the initiator payload.
- UserInterface/Models/Resource.js:
(WI.Resource.prototype.get initiatorCallFrames):
Initialization and accessor.
- UserInterface/Views/CallFrameTreeElement.js:
(WI.CallFrameTreeElement):
Selecting a native element won't do anything so just don't allow selection.
- UserInterface/Views/ResourceHeadersContentView.css:
(.resource-headers .go-to-link):
(.resource-headers .call-stack):
(.resource-headers .call-stack:hover):
(@media (prefers-color-scheme: dark)):
- UserInterface/Views/ResourceHeadersContentView.js:
(WI.ResourceHeadersContentView):
(WI.ResourceHeadersContentView.prototype.hidden):
(WI.ResourceHeadersContentView.prototype._refreshSummarySection):
Add an "Initiator" line in the summary with a way to view the whole
initiator backtrace if one exists.
- 11:38 AM Changeset in webkit [243613] by
-
- 3 edits in trunk/LayoutTests
http/wpt/cache-storage/quota-third-party.https.html is a flaky failure
https://bugs.webkit.org/show_bug.cgi?id=196358
Unreviewed test gardening.
- platform/ios-simulator-wk2/TestExpectations:
- platform/mac-wk2/TestExpectations: Updating test expectations for flaky failure
- 11:18 AM Changeset in webkit [243612] by
-
- 2 edits in trunk/LayoutTests
storage/indexeddb/modern/idbtransaction-objectstore-failures-private.html is a flaky failure
https://bugs.webkit.org/show_bug.cgi?id=196357
Unreviewed test gardening.
- platform/ios-simulator-wk2/TestExpectations: Updating test expectations for flaky failure
- 11:08 AM Changeset in webkit [243611] by
-
- 3 edits in trunk/Source/WebCore
Web Inspector: Canvas: unbinding a canvas should always remove the agent as an observer
https://bugs.webkit.org/show_bug.cgi?id=196324
<rdar://problem/49357109>
Reviewed by Matt Baker.
No change in functionality.
- html/CanvasBase.cpp:
(WebCore::CanvasBase::notifyObserversCanvasChanged):
(WebCore::CanvasBase::notifyObserversCanvasResized):
(WebCore::CanvasBase::notifyObserversCanvasDestroyed):
- inspector/agents/InspectorCanvasAgent.cpp:
(WebCore::InspectorCanvasAgent::frameNavigated):
(WebCore::InspectorCanvasAgent::bindCanvas):
(WebCore::InspectorCanvasAgent::unbindCanvas):
- 11:05 AM Changeset in webkit [243610] by
-
- 2 edits in trunk/Source/WebCore
[MSE][GStreamer] Remove dead code in MediaPlayerPrivateGStreamer::doSeek()
https://bugs.webkit.org/show_bug.cgi?id=196352
Reviewed by Xabier Rodriguez-Calvar.
MediaPlayerPrivateGStreamerMSE overrides doSeek() and seek(), so this
branch is never reached.
This patch does not introduce behavior changes.
- platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:
(WebCore::MediaPlayerPrivateGStreamer::doSeek):
- 10:50 AM Changeset in webkit [243609] by
-
- 2 edits in trunk/Source/JavaScriptCore
In-memory code cache should not share bytecode across domains
https://bugs.webkit.org/show_bug.cgi?id=196321
Reviewed by Geoffrey Garen.
Use the SourceProvider's URL to make sure that the hosts match for the
two SourceCodeKeys in operator==.
- parser/SourceCodeKey.h:
(JSC::SourceCodeKey::host const):
(JSC::SourceCodeKey::operator== const):
- 10:50 AM Changeset in webkit [243608] by
-
- 4 edits in trunk
[WPE][GTK] webkit_web_resource_get_data_finish can return NULL without setting error
https://bugs.webkit.org/show_bug.cgi?id=186276
Reviewed by Carlos Garcia Campos.
Source/WebKit:
Currently it's possible for webkit_web_resource_get_data_finish() to return NULL without
setting the error parameter. This is illegal because it is an API guarantee (and a GObject
convention) that if an error parameter exists, it should be set whenever a function call
returns NULL. Epiphany correctly dereferences the error in this case without checking if it
is NULL, because it knows it does not have to, and crashes. Fix this. We'll return a byte
array of length 1 containing a NUL character. This isn't great, but there's not really any
better solution without deprecating the API or returning an error code to indicate an empty
resource, and it at least fixes the Epiphany crash.
This does not fix bug #186276, in which this function incorrectly returns no data when it
ought to. But that is a different bug. Now, at least we won't crash when no data is
available.
- UIProcess/API/glib/WebKitWebResource.cpp:
(resourceDataCallback):
Tools:
- TestWebKitAPI/Tests/WebKitGLib/TestResources.cpp:
(webViewLoadChanged):
(testWebResourceGetDataError):
(testWebResourceGetDataEmpty):
(beforeAll):
(webViewloadChanged): Deleted.
- 10:42 AM WebKitGTK/2.24.x edited by
- (diff)
- 9:44 AM Changeset in webkit [243607] by
-
- 7 edits2 adds in trunk
[macOS WK2] Overlays on instagram.com are shifted if you click on a photo after scrolling
https://bugs.webkit.org/show_bug.cgi?id=196330
rdar://problem/49100304
Source/WebCore:
Reviewed by Antti Koivisto.
When we call ScrollingTree::applyLayerPositions() on the main thread after a flush,
we need to ensure that the most recent version of the scrolling tree has been committed,
because it has to have state (like requested scroll position and layout viewport rect)
that match the layer flush.
To fix this we have to have the main thread wait for the commit to complete, so
ThreadedScrollingTree keeps track of a pending commit count, and uses a condition
variable to allow the main thread to safely wait for it to reach zero.
Tracing shows that this works as expected, and the main thread is never blocked for
more than a few tens of microseconds.
Also lock the tree mutex in ScrollingTree::handleWheelEvent(), since we enter the
scrolling tree here and we don't want that racing with applyLayerPositions() on the
main thread.
Test: scrollingcoordinator/mac/fixed-scrolled-body.html
- page/scrolling/ScrollingTree.cpp:
(WebCore::ScrollingTree::handleWheelEvent):
(WebCore::ScrollingTree::applyLayerPositions):
- page/scrolling/ScrollingTree.h:
- page/scrolling/ThreadedScrollingTree.cpp:
(WebCore::ThreadedScrollingTree::commitTreeState):
(WebCore::ThreadedScrollingTree::incrementPendingCommitCount):
(WebCore::ThreadedScrollingTree::decrementPendingCommitCount):
(WebCore::ThreadedScrollingTree::waitForPendingCommits):
(WebCore::ThreadedScrollingTree::applyLayerPositions):
- page/scrolling/ThreadedScrollingTree.h:
- page/scrolling/mac/ScrollingCoordinatorMac.mm:
(WebCore::ScrollingCoordinatorMac::commitTreeState):
LayoutTests:
Reviewed by NOBODY (OOPS!).
- scrollingcoordinator/mac/fixed-scrolled-body-expected.html: Added.
- scrollingcoordinator/mac/fixed-scrolled-body.html: Added.
- 9:36 AM Changeset in webkit [243606] by
-
- 2 edits in trunk/Source/WebKit
[iPad] Tapping on a popup form control may not show a popover
https://bugs.webkit.org/show_bug.cgi?id=196322
<rdar://problem/49229632>
Reviewed by Wenson Hsieh.
Stop taking advantage of -[WKContentView inputView] being called when we invoke -reloadInputViews
to "lazily" allocate the input peripheral for the currently focused element. In theory, UIKit only
needs to call -inputView when it actually needs to display the input view (the keyboard). For
popup menu buttons, like <select>, no keyboard is needed. Instead we should create the peripheral
as part of the logic in the UI process to focus a new element before we call -reloadInputViews.
- UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView inputView]): Extract logic to allocate the peripheral from here and moved it to createInputPeripheralWithView().
(-[WKContentView accessoryTab:]): While I am here, add a FIXME comment to explain why we need to
end the input sessions and nullify the input peripheral before we tell the web process to switch
focus as opposed to letting this happen after the web process tells us it focused a new element.
(createInputPeripheralWithView): Added.
(-[WKContentView _elementDidFocus:userIsInteracting:blurPreviousNode:changingActivityState:userObject:]):
Write in terms of createInputPeripheralWithView(). Create the input peripheral after becoming
first responder because creating the peripheral has known side-effects: for popup buttons it
tells the popup controller to present the popover. For key input to popovers to work from the get-go,
the content view must be the first responder. See <https://bugs.webkit.org/show_bug.cgi?id=196272>
for more details.
- 9:02 AM Changeset in webkit [243605] by
-
- 3 edits2 adds in trunk
[SimpleLineLayout] Disable SLL when text-underline-position is not auto.
https://bugs.webkit.org/show_bug.cgi?id=196338
<rdar://problem/47975167>
Reviewed by Daniel Bates.
Source/WebCore:
Disable simple line layout unconditionally on non-auto text-underline-position content. We don't support it yet.
Test: fast/text/simple-line-layout-with-text-underline-position.html
- rendering/SimpleLineLayout.cpp:
(WebCore::SimpleLineLayout::canUseForStyle):
LayoutTests:
- fast/text/simple-line-layout-with-text-underline-position-expected.html: Added.
- fast/text/simple-line-layout-with-text-underline-position.html: Added.
- 8:54 AM Changeset in webkit [243604] by
-
- 2 edits in trunk/PerformanceTests
REGRESSION (r242911?): High Sierra Release WK2 Perf bot timing out while running IndexedDB/large-number-of-inserts.html
https://bugs.webkit.org/show_bug.cgi?id=195952
Unreviewed test gardening.
- Skipped: Skip the affected test so the bot will finish the run.
- 7:18 AM Changeset in webkit [243603] by
-
- 10 edits in trunk/Source
Silence lot of warnings when compiling with clang
https://bugs.webkit.org/show_bug.cgi?id=196310
Patch by Víctor Manuel Jáquez Leal <vjaquez@igalia.com> on 2019-03-28
Reviewed by Michael Catanzaro.
Source/JavaScriptCore:
Initialize variable with default constructor.
- API/glib/JSCOptions.cpp:
(jsc_options_foreach):
Source/WebCore:
No change in behavior.
- accessibility/AccessibilityObject.h: add missing override
clause.
- platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp:
(webKitWebSrcChangeState): add missing format string to log.
- platform/graphics/texmap/TextureMapperPlatformLayerBuffer.h: add
missing virtual destructor.
- platform/graphics/texmap/coordinated/CoordinatedGraphicsLayer.h:
add missing override clause and remove unused private member.
Source/WebKit:
- UIProcess/API/glib/WebKitInjectedBundleClient.cpp: add missing
override clause.
- WebProcess/WebPage/CoordinatedGraphics/LayerTreeHost.h: add
missing override clause.
- 6:58 AM Changeset in webkit [243602] by
-
- 7 edits in trunk
[FreeType] Incorrect application of glyph positioning in the Y direction
https://bugs.webkit.org/show_bug.cgi?id=161493
Reviewed by Michael Catanzaro.
Source/WebCore:
Use the first glyph origin as the initial advance of every complex text run.
- platform/graphics/cairo/FontCairo.cpp:
(WebCore::FontCascade::drawGlyphs): Update the yOffset using the height advance.
- platform/graphics/cairo/GraphicsContextImplCairo.cpp:
(WebCore::GraphicsContextImplCairo::drawGlyphs): Ditto.
- platform/graphics/harfbuzz/ComplexTextControllerHarfBuzz.cpp:
(WebCore::ComplexTextController::ComplexTextRun::ComplexTextRun): Set the initial advance.
LayoutTests:
Rebaseline fast/text/international/hebrew-vowels.html.
- platform/gtk/fast/text/international/hebrew-vowels-expected.png:
- platform/gtk/fast/text/international/hebrew-vowels-expected.txt:
- 5:52 AM WebKitGTK/2.24.x edited by
- (diff)