Timeline
Aug 26, 2019:
- 11:51 PM Changeset in webkit [249133] by
-
- 3 edits in trunk/Source/WebCore
[WebCore] DataCue should not use gcProtect / gcUnprotect
https://bugs.webkit.org/show_bug.cgi?id=201170
Reviewed by Mark Lam.
JSC::gcProtect and JSC::gcUnprotect are designed for JavaScriptCore.framework and we should not use them in WebCore. It is
checking whether we are holding a JS API lock. But the caller of these API would be the C++ holder's destructor, and this should be
allowed since this destruction must happen in main thread or web thread, and this should not happen while other thread is taking JS API lock.
For example, we are destroying JSC::Strong<>, JSC::Weak<> without taking JS API lock. But since JSC::gcProtect and JSC::gcUnprotect are designed
for JavaScriptCore.framework, they are not accounting this condition, and we are hitting debug assertion in GC stress bot.
Ideally, we should convert this JSValue field to JSValueInWrappedObject. But JSValueInWrappedObject needs extra care. We should
know how the owner and JS wrapper are kept and used to use JSValueInWrappedObject correctly.
As a first step, this patch just replaces raw JSValue + gcProtect/gcUnprotect with JSC::Strong<>.
This change fixes LayoutTests/media/track/track-in-band-metadata-display-order.html crash in GC stress bot. The crash trace is the following.
- Thread 0 Crashed
- Dispatch queue: com.apple.main-thread 0 com.apple.JavaScriptCore 0x000000010ee3d980 WTFCrash + 16 1 com.apple.JavaScriptCore 0x000000010ee408ab WTFCrashWithInfo(int, char const*, char const*, int) + 27 2 com.apple.JavaScriptCore 0x000000010feb5327 JSC::Heap::unprotect(JSC::JSValue) + 215 3 com.apple.WebCore 0x0000000120f33b53 JSC::gcUnprotect(JSC::JSCell*) + 51 4 com.apple.WebCore 0x0000000120f329fc JSC::gcUnprotect(JSC::JSValue) + 76 5 com.apple.WebCore 0x0000000120f32968 WebCore::DataCue::~DataCue() + 88 6 com.apple.WebCore 0x0000000120f32ac5 WebCore::DataCue::~DataCue() + 21 7 com.apple.WebCore 0x0000000120f32ae9 WebCore::DataCue::~DataCue() + 25 8 com.apple.WebCore 0x0000000120f37ebf WTF::RefCounted<WebCore::TextTrackCue, std::__1::default_delete<WebCore::TextTrackCue> >::deref() const + 95 9 com.apple.WebCore 0x000000012103a345 void WTF::derefIfNotNull<WebCore::TextTrackCue>(WebCore::TextTrackCue*) + 53 10 com.apple.WebCore 0x000000012103a309 WTF::RefPtr<WebCore::TextTrackCue, WTF::DumbPtrTraits<WebCore::TextTrackCue> >::~RefPtr() + 41 11 com.apple.WebCore 0x000000012102bfc5 WTF::RefPtr<WebCore::TextTrackCue, WTF::DumbPtrTraits<WebCore::TextTrackCue> >::~RefPtr() + 21 12 com.apple.WebCore 0x00000001210e91df WTF::VectorDestructor<true, WTF::RefPtr<WebCore::TextTrackCue, WTF::DumbPtrTraits<WebCore::TextTrackCue> > >::destruct(WTF::RefPtr<WebCore::TextTrackCue, WTF::DumbPtrTraits<WebCore::TextTrackCue> >*, WTF::RefPtr<WebCore::TextTrackCue, WTF::DumbPtrTraits<WebCore::TextTrackCue> >*) + 47 13 com.apple.WebCore 0x00000001210e913d WTF::VectorTypeOperations<WTF::RefPtr<WebCore::TextTrackCue, WTF::DumbPtrTraits<WebCore::TextTrackCue> > >::destruct(WTF::RefPtr<WebCore::TextTrackCue, WTF::DumbPtrTraits<WebCore::TextTrackCue> >*, WTF::RefPtr<WebCore::TextTrackCue, WTF::DumbPtrTraits<WebCore::TextTrackCue> >*) + 29 14 com.apple.WebCore 0x00000001210e9100 WTF::Vector<WTF::RefPtr<WebCore::TextTrackCue, WTF::DumbPtrTraits<WebCore::TextTrackCue> >, 0ul, WTF::CrashOnOverflow, 16ul>::~Vector() + 64 15 com.apple.WebCore 0x00000001210e7a25 WTF::Vector<WTF::RefPtr<WebCore::TextTrackCue, WTF::DumbPtrTraits<WebCore::TextTrackCue> >, 0ul, WTF::CrashOnOverflow, 16ul>::~Vector() + 21 16 com.apple.WebCore 0x00000001210e93d3 WebCore::TextTrackCueList::~TextTrackCueList() + 51
- html/track/DataCue.cpp:
(WebCore::DataCue::DataCue):
(WebCore::DataCue::~DataCue):
(WebCore::DataCue::setData):
(WebCore::DataCue::value const):
(WebCore::DataCue::setValue):
(WebCore::DataCue::valueOrNull const):
- html/track/DataCue.h:
- 10:00 PM Changeset in webkit [249132] by
-
- 85 edits in trunk/Source
Web Inspector: use more C++ keywords for defining agents
https://bugs.webkit.org/show_bug.cgi?id=200959
Reviewed by Joseph Pecoraro.
- make constructors
protectedwhen the agent isn't meant to be constructed directly - add
virtualdestructors that are defined in the *.cpp so forward-declarations work - use
finalwherever possible - add comments to indicate where any virtual functions come from
Source/JavaScriptCore:
- inspector/agents/InspectorAgent.h:
- inspector/agents/InspectorAgent.cpp:
- inspector/agents/InspectorAuditAgent.h:
- inspector/agents/InspectorAuditAgent.cpp:
- inspector/agents/InspectorConsoleAgent.h:
- inspector/agents/InspectorConsoleAgent.cpp:
- inspector/agents/InspectorDebuggerAgent.h:
- inspector/agents/InspectorDebuggerAgent.cpp:
- inspector/agents/InspectorHeapAgent.h:
- inspector/agents/InspectorHeapAgent.cpp:
- inspector/agents/InspectorRuntimeAgent.h:
- inspector/agents/InspectorScriptProfilerAgent.h:
- inspector/agents/InspectorScriptProfilerAgent.cpp:
- inspector/agents/InspectorTargetAgent.h:
- inspector/agents/InspectorTargetAgent.cpp:
- inspector/agents/JSGlobalObjectAuditAgent.h:
- inspector/agents/JSGlobalObjectAuditAgent.cpp:
- inspector/agents/JSGlobalObjectDebuggerAgent.h:
- inspector/agents/JSGlobalObjectDebuggerAgent.cpp:
- inspector/agents/JSGlobalObjectRuntimeAgent.h:
- inspector/agents/JSGlobalObjectRuntimeAgent.cpp:
Source/WebCore:
- inspector/agents/InspectorApplicationCacheAgent.h:
- inspector/agents/InspectorApplicationCacheAgent.cpp:
- inspector/agents/InspectorCPUProfilerAgent.h:
- inspector/agents/InspectorCPUProfilerAgent.cpp:
- inspector/agents/InspectorCSSAgent.h:
- inspector/agents/InspectorCSSAgent.cpp:
- inspector/agents/InspectorCanvasAgent.h:
- inspector/agents/InspectorCanvasAgent.cpp:
- inspector/agents/InspectorDOMAgent.h:
- inspector/agents/InspectorDOMAgent.cpp:
- inspector/agents/InspectorDOMDebuggerAgent.h:
- inspector/agents/InspectorDOMDebuggerAgent.cpp:
- inspector/agents/InspectorDOMStorageAgent.h:
- inspector/agents/InspectorDOMStorageAgent.cpp:
- inspector/agents/InspectorDatabaseAgent.h:
- inspector/agents/InspectorDatabaseAgent.cpp:
- inspector/agents/InspectorIndexedDBAgent.h:
- inspector/agents/InspectorIndexedDBAgent.cpp:
- inspector/agents/InspectorLayerTreeAgent.h:
- inspector/agents/InspectorLayerTreeAgent.cpp:
- inspector/agents/InspectorMemoryAgent.h:
- inspector/agents/InspectorMemoryAgent.cpp:
- inspector/agents/InspectorNetworkAgent.h:
- inspector/agents/InspectorNetworkAgent.cpp:
- inspector/agents/InspectorPageAgent.h:
- inspector/agents/InspectorPageAgent.cpp:
- inspector/agents/InspectorTimelineAgent.h:
- inspector/agents/InspectorTimelineAgent.cpp:
- inspector/agents/InspectorWorkerAgent.h:
- inspector/agents/InspectorWorkerAgent.cpp:
- inspector/agents/WebConsoleAgent.h:
- inspector/agents/WebConsoleAgent.cpp:
- inspector/agents/WebDebuggerAgent.h:
- inspector/agents/WebDebuggerAgent.cpp:
- inspector/agents/WebHeapAgent.h:
- inspector/agents/WebHeapAgent.cpp:
- inspector/agents/page/PageAuditAgent.h:
- inspector/agents/page/PageAuditAgent.cpp:
- inspector/agents/page/PageConsoleAgent.h:
- inspector/agents/page/PageConsoleAgent.cpp:
- inspector/agents/page/PageDebuggerAgent.h:
- inspector/agents/page/PageDebuggerAgent.cpp:
- inspector/agents/page/PageHeapAgent.h:
- inspector/agents/page/PageHeapAgent.cpp:
- inspector/agents/page/PageNetworkAgent.h:
- inspector/agents/page/PageNetworkAgent.cpp:
- inspector/agents/page/PageRuntimeAgent.h:
- inspector/agents/page/PageRuntimeAgent.cpp:
- inspector/agents/worker/ServiceWorkerAgent.h:
- inspector/agents/worker/ServiceWorkerAgent.cpp:
- inspector/agents/worker/WorkerAuditAgent.h:
- inspector/agents/worker/WorkerAuditAgent.cpp:
- inspector/agents/worker/WorkerConsoleAgent.h:
- inspector/agents/worker/WorkerConsoleAgent.cpp:
- inspector/agents/worker/WorkerDebuggerAgent.h:
- inspector/agents/worker/WorkerNetworkAgent.h:
- inspector/agents/worker/WorkerNetworkAgent.cpp:
- inspector/agents/worker/WorkerRuntimeAgent.h:
- inspector/agents/worker/WorkerRuntimeAgent.cpp:
Source/WebKit:
- UIProcess/WebPageInspectorTargetAgent.h:
- UIProcess/WebPageInspectorTargetAgent.cpp:
- 9:58 PM Changeset in webkit [249131] by
-
- 114 edits2 deletes in trunk
[WHLSL] Rewrite all tests to use WHLSL and delete the isWHLSL flag
https://bugs.webkit.org/show_bug.cgi?id=201162
Reviewed by Saam Barati.
Source/WebCore:
We want to keep the MSL codepath for debugging, so the codepath isn't deleted entirely, but it is no longer web exposed.
- Modules/webgpu/WebGPUDevice.cpp:
(WebCore::WebGPUDevice::createShaderModule const):
- Modules/webgpu/WebGPUShaderModuleDescriptor.h:
- Modules/webgpu/WebGPUShaderModuleDescriptor.idl:
- platform/graphics/gpu/GPUDevice.h:
- platform/graphics/gpu/GPUShaderModuleDescriptor.h:
- platform/graphics/gpu/cocoa/GPUShaderModuleMetal.mm:
(WebCore::GPUShaderModule::tryCreate):
LayoutTests:
- webgpu/bind-groups.html:
- webgpu/blend-color-triangle-strip.html:
- webgpu/blend-triangle-strip.html:
- webgpu/buffer-command-buffer-races.html:
- webgpu/color-write-mask-triangle-strip.html:
- webgpu/compute-pipeline-errors.html:
- webgpu/depth-enabled-triangle-strip.html:
- webgpu/draw-indexed-triangles.html:
- webgpu/msl-harness-test-expected.txt: Removed.
- webgpu/msl-harness-test.html: Removed.
- webgpu/render-command-encoding.html:
- webgpu/render-pipeline-errors.html:
- webgpu/render-pipelines.html:
- webgpu/shader-modules.html:
- webgpu/simple-triangle-strip.html:
- webgpu/texture-triangle-strip.html:
- webgpu/vertex-buffer-triangle-strip.html:
- webgpu/viewport-scissor-rect-triangle-strip.html:
- webgpu/whlsl/arbitrary-vertex-attribute-locations.html:
- webgpu/whlsl/buffer-fragment.html:
- webgpu/whlsl/buffer-length.html:
- webgpu/whlsl/buffer-vertex.html:
- webgpu/whlsl/checker-should-set-type-of-read-modify-write-variables.html:
- webgpu/whlsl/compute.html:
- webgpu/whlsl/dereference-pointer-should-type-check.html:
- webgpu/whlsl/device-proper-type-checker.html:
- webgpu/whlsl/do-while-loop-break.html:
- webgpu/whlsl/do-while-loop-continue.html:
- webgpu/whlsl/do-while-loop.html:
- webgpu/whlsl/dont-crash-parsing-enum.html:
- webgpu/whlsl/dot-expressions.html:
- webgpu/whlsl/duplicate-types-should-not-produce-duplicate-ctors.html:
- webgpu/whlsl/ensure-proper-variable-lifetime-2.html:
- webgpu/whlsl/ensure-proper-variable-lifetime-3.html:
- webgpu/whlsl/ensure-proper-variable-lifetime.html:
- webgpu/whlsl/huge-array.html:
- webgpu/whlsl/js/test-harness.js:
(convertTypeToArrayType):
(Data):
(Harness):
(Harness.prototype.async.callTypedFunction):
(Harness.prototype.callVoidFunction):
(Harness.prototype.async.checkCompileFail):
(Harness.prototype._setUpArguments):
(Harness.prototype.async._callFunction):
(Harness.prototype.set isWHLSL): Deleted.
(Harness.prototype.get isWHLSL): Deleted.
- webgpu/whlsl/loops-break.html:
- webgpu/whlsl/loops-continue.html:
- webgpu/whlsl/loops.html:
- webgpu/whlsl/make-array-reference.html:
- webgpu/whlsl/matrix-2.html:
- webgpu/whlsl/matrix-memory-layout.html:
- webgpu/whlsl/matrix.html:
- webgpu/whlsl/nested-dot-expression-rvalue.html:
- webgpu/whlsl/nested-loop.html:
- webgpu/whlsl/null-dereference.html:
- webgpu/whlsl/oob-access.html:
- webgpu/whlsl/propertyresolver/ander-abstract-lvalue.html:
- webgpu/whlsl/propertyresolver/ander-lvalue-3-levels.html:
- webgpu/whlsl/propertyresolver/ander-lvalue.html:
- webgpu/whlsl/propertyresolver/ander.html:
- webgpu/whlsl/propertyresolver/getter.html:
- webgpu/whlsl/propertyresolver/indexer-ander-abstract-lvalue.html:
- webgpu/whlsl/propertyresolver/indexer-ander-lvalue-3-levels.html:
- webgpu/whlsl/propertyresolver/indexer-ander-lvalue.html:
- webgpu/whlsl/propertyresolver/indexer-ander.html:
- webgpu/whlsl/propertyresolver/indexer-getter.html:
- webgpu/whlsl/propertyresolver/indexer-setter-abstract-lvalue-3-levels.html:
- webgpu/whlsl/propertyresolver/indexer-setter-abstract-lvalue.html:
- webgpu/whlsl/propertyresolver/indexer-setter-lvalue.html:
- webgpu/whlsl/propertyresolver/indexer-setter.html:
- webgpu/whlsl/propertyresolver/setter-abstract-lvalue-3-levels.html:
- webgpu/whlsl/propertyresolver/setter-abstract-lvalue.html:
- webgpu/whlsl/propertyresolver/setter-lvalue.html:
- webgpu/whlsl/read-modify-write-high-zombies.html:
- webgpu/whlsl/read-modify-write.html:
- webgpu/whlsl/return-local-variable.html:
- webgpu/whlsl/separate-shader-modules/separate-shader-modules-10.html:
- webgpu/whlsl/separate-shader-modules/separate-shader-modules-11.html:
- webgpu/whlsl/separate-shader-modules/separate-shader-modules-12.html:
- webgpu/whlsl/separate-shader-modules/separate-shader-modules-13.html:
- webgpu/whlsl/separate-shader-modules/separate-shader-modules-14.html:
- webgpu/whlsl/separate-shader-modules/separate-shader-modules-15.html:
- webgpu/whlsl/separate-shader-modules/separate-shader-modules-16.html:
- webgpu/whlsl/separate-shader-modules/separate-shader-modules-17.html:
- webgpu/whlsl/separate-shader-modules/separate-shader-modules-18.html:
- webgpu/whlsl/separate-shader-modules/separate-shader-modules-19.html:
- webgpu/whlsl/separate-shader-modules/separate-shader-modules-2.html:
- webgpu/whlsl/separate-shader-modules/separate-shader-modules-20.html:
- webgpu/whlsl/separate-shader-modules/separate-shader-modules-21.html:
- webgpu/whlsl/separate-shader-modules/separate-shader-modules-22.html:
- webgpu/whlsl/separate-shader-modules/separate-shader-modules-23.html:
- webgpu/whlsl/separate-shader-modules/separate-shader-modules-24.html:
- webgpu/whlsl/separate-shader-modules/separate-shader-modules-25.html:
- webgpu/whlsl/separate-shader-modules/separate-shader-modules-26.html:
- webgpu/whlsl/separate-shader-modules/separate-shader-modules-27.html:
- webgpu/whlsl/separate-shader-modules/separate-shader-modules-3.html:
- webgpu/whlsl/separate-shader-modules/separate-shader-modules-4.html:
- webgpu/whlsl/separate-shader-modules/separate-shader-modules-5.html:
- webgpu/whlsl/separate-shader-modules/separate-shader-modules-6.html:
- webgpu/whlsl/separate-shader-modules/separate-shader-modules-7.html:
- webgpu/whlsl/separate-shader-modules/separate-shader-modules-8.html:
- webgpu/whlsl/separate-shader-modules/separate-shader-modules-9.html:
- webgpu/whlsl/separate-shader-modules/separate-shader-modules.html:
- webgpu/whlsl/simple-arrays.html:
- webgpu/whlsl/store-to-property-updates-properly.html:
- webgpu/whlsl/textures-getdimensions.html:
- webgpu/whlsl/textures-load.html:
- webgpu/whlsl/textures-sample.html:
- webgpu/whlsl/two-dimensional-array.html:
- webgpu/whlsl/use-undefined-variable-2.html:
- webgpu/whlsl/use-undefined-variable.html:
- webgpu/whlsl/while-loop-break.html:
- webgpu/whlsl/while-loop-continue.html:
- webgpu/whlsl/whlsl.html:
- webgpu/whlsl/zero-initialize-values-2.html:
- webgpu/whlsl/zero-initialize-values.html:
- 8:19 PM Changeset in webkit [249130] by
-
- 4 edits in trunk
Change default value of window.open()'s url argument
https://bugs.webkit.org/show_bug.cgi?id=200882
Reviewed by Ryosuke Niwa.
LayoutTests/imported/w3c:
Rebaseline WPT test now that it is passing.
- web-platform-tests/html/browsers/the-window-object/window-open-defaults.window-expected.txt:
Source/WebCore:
Update default URL parameter value for window.open() to be "" instead of "about:blank", as per:
This aligns our behavior with other Web browser engines.
No new tests, rebaselined existing test.
- page/DOMWindow.idl:
- 7:20 PM Changeset in webkit [249129] by
-
- 2 edits in trunk/LayoutTests
Unreviewed, fix test failure after r249127
- inspector/debugger/tail-deleted-frames-this-value.html:
- 6:02 PM Changeset in webkit [249128] by
-
- 66 edits in trunk
Web Inspector: unify agent command error messages
https://bugs.webkit.org/show_bug.cgi?id=200950
Reviewed by Joseph Pecoraro.
Source/JavaScriptCore:
Different agents can sometimes have different error messages for commands that have a
similar intended effect. We should make our error messages more similar.
- inspector/JSGlobalObjectConsoleClient.cpp:
- inspector/agents/InspectorAgent.cpp:
- inspector/agents/InspectorAuditAgent.cpp:
- inspector/agents/InspectorConsoleAgent.cpp:
- inspector/agents/InspectorDebuggerAgent.cpp:
- inspector/agents/InspectorHeapAgent.cpp:
- inspector/agents/InspectorRuntimeAgent.cpp:
- inspector/agents/InspectorTargetAgent.cpp:
- inspector/agents/JSGlobalObjectAuditAgent.cpp:
- inspector/agents/JSGlobalObjectDebuggerAgent.cpp:
- inspector/agents/JSGlobalObjectRuntimeAgent.cpp:
Elide function lists to avoid an extremely large ChangeLog entry.
Source/WebCore:
Different agents can sometimes have different error messages for commands that have a
similar intended effect. We should make our error messages more similar.
- inspector/CommandLineAPIHost.cpp:
- inspector/agents/InspectorApplicationCacheAgent.cpp:
- inspector/agents/InspectorCSSAgent.cpp:
- inspector/agents/InspectorCanvasAgent.h:
- inspector/agents/InspectorCanvasAgent.cpp:
- inspector/agents/InspectorDOMAgent.cpp:
- inspector/agents/InspectorDOMDebuggerAgent.cpp:
- inspector/agents/InspectorDOMStorageAgent.cpp:
- inspector/agents/InspectorIndexedDBAgent.cpp:
- inspector/agents/InspectorLayerTreeAgent.cpp:
- inspector/agents/InspectorMemoryAgent.cpp:
- inspector/agents/InspectorNetworkAgent.cpp:
- inspector/agents/InspectorPageAgent.cpp:
- inspector/agents/InspectorTimelineAgent.cpp:
- inspector/agents/InspectorWorkerAgent.cpp:
- inspector/agents/page/PageAuditAgent.cpp:
- inspector/agents/page/PageConsoleAgent.cpp:
- inspector/agents/page/PageDebuggerAgent.cpp:
- inspector/agents/page/PageNetworkAgent.cpp:
- inspector/agents/page/PageRuntimeAgent.cpp:
- inspector/agents/worker/WorkerAuditAgent.cpp:
- inspector/agents/worker/WorkerDebuggerAgent.cpp:
- inspector/agents/worker/WorkerRuntimeAgent.cpp:
Elide function lists to avoid an extremely large ChangeLog entry.
LayoutTests:
- http/tests/inspector/network/getSerializedCertificate-expected.txt:
- http/tests/websocket/tests/hybi/inspector/resolveWebSocket-expected.txt:
- inspector/audit/setup-expected.txt:
- inspector/audit/teardown-expected.txt:
- inspector/canvas/css-canvas-clients-expected.txt:
- inspector/canvas/recording-expected.txt:
- inspector/canvas/requestContent-2d-expected.txt:
- inspector/canvas/requestNode-expected.txt:
- inspector/canvas/requestShaderSource-expected.txt:
- inspector/canvas/resolveCanvasContext-2d-expected.txt:
- inspector/canvas/setShaderProgramDisabled-expected.txt:
- inspector/canvas/setShaderProgramHighlighted-expected.txt:
- inspector/canvas/updateShader-expected.txt:
- inspector/console/webcore-logging-expected.txt:
- inspector/css/add-rule-expected.txt:
- inspector/debugger/continueUntilNextRunLoop-expected.txt:
- inspector/debugger/evaluateOnCallFrame-errors-expected.txt:
- inspector/debugger/setBreakpoint-expected.txt:
- inspector/dom-debugger/dom-breakpoints-expected.txt:
- inspector/dom/breakpoint-for-event-listener-expected.txt:
- inspector/dom/highlightQuad-expected.txt:
- inspector/dom/insertAdjacentHTML-expected.txt:
- inspector/dom/request-child-nodes-depth-expected.txt:
- inspector/dom/setEventListenerDisabled-expected.txt:
- inspector/protocol/backend-dispatcher-argument-errors-expected.txt:
- inspector/runtime/awaitPromise-expected.txt:
- inspector/runtime/getPreview-expected.txt:
- inspector/timeline/setInstruments-errors-expected.txt:
- 5:48 PM Changeset in webkit [249127] by
-
- 2 edits in trunk/LayoutTests
Unreviewed, add extra test failure logging after r200971
- inspector/debugger/tail-deleted-frames-this-value.html:
- 5:20 PM Changeset in webkit [249126] by
-
- 15 edits in trunk/Source
Regression: ITP started doing a lot more IPC after its logic was moved to the network process
https://bugs.webkit.org/show_bug.cgi?id=201155
Reviewed by John Wilander.
Source/WebCore:
ITP started doing a lot more IPC after its logic was moved to the network process. Web processes used to
send their statistics to the UIProcess at most every 5 seconds. However, when the logic got moved to the network
process, we started notifying the network process via IPC after every sub resource load. This is bad for performance
and battery life. This patch restores the 5 second delay to address the issue.
- loader/ResourceLoadObserver.cpp:
(WebCore::ResourceLoadObserver::ResourceLoadObserver):
(WebCore::ResourceLoadObserver::setRequestStorageAccessUnderOpenerCallback):
(WebCore::ResourceLoadObserver::logSubresourceLoading):
(WebCore::ResourceLoadObserver::logWebSocketLoading):
(WebCore::ResourceLoadObserver::logUserInteractionWithReducedTimeResolution):
(WebCore::ResourceLoadObserver::scheduleNotificationIfNeeded):
(WebCore::ResourceLoadObserver::updateCentralStatisticsStore):
(WebCore::ResourceLoadObserver::clearState):
- loader/ResourceLoadObserver.h:
Source/WebKit:
- WebProcess/WebProcess.cpp:
(WebKit::WebProcess::initializeWebProcess):
- 5:18 PM Changeset in webkit [249125] by
-
- 11 edits in trunk
Remove UIHelper.activateElementAtHumanSpeed
https://bugs.webkit.org/show_bug.cgi?id=201147
Reviewed by Tim Horton.
Tools:
Add plumbing for a new script controller hook to wait for the double tap delay to pass. On non-iOS, this
resolves immediately; on iOS, we inspect the content view for tap gestures that require more than one tap, and
find the value of the maximum double tap delay. We then delay for this amount of time before resolving.
- TestRunnerShared/UIScriptContext/Bindings/UIScriptController.idl:
- TestRunnerShared/UIScriptContext/UIScriptController.h:
(WTR::UIScriptController::doAfterDoubleTapDelay):
- WebKitTestRunner/ios/UIScriptControllerIOS.h:
- WebKitTestRunner/ios/UIScriptControllerIOS.mm:
(WTR::UIScriptControllerIOS::doAfterDoubleTapDelay):
LayoutTests:
This was used in layout tests that simulate repeated taps to work around <webkit.org/b/201129>, and should no
longer be needed after <https://trac.webkit.org/changeset/249112/webkit>. Instead, we can just use UIHelper's
activateElement as intended in cases where successive taps in the test does not result in a double-click; for
the cases where we need to avoid triggering double clicks when tapping (e.g. in several payment tests), use a
new script controller hook to wait for the double tap gesture delay before continuing.
- fast/forms/ios/file-upload-panel.html:
- http/tests/adClickAttribution/anchor-tag-attributes-validation-expected.txt:
Rebaseline more line numbers.
- http/tests/adClickAttribution/anchor-tag-attributes-validation.html:
Refactor this test so that the links are laid out in two (or more) columns to avoid firing the double click
gesture recognizer instead of the synthetic click gesture.
- http/tests/resources/payment-request.js:
(activateThen):
Instead of using activateElementAtHumanSpeed, wait for the platform double tap delay first, and then simulate
a click using activateElement.
- resources/ui-helper.js:
(window.UIHelper.waitForDoubleTapDelay):
Add a new UIHelper method to wait for the platform double tap delay. See Tools ChangeLog for more details.
(window.UIHelper):
(window.UIHelper.activateElementAtHumanSpeed.return.new.Promise): Deleted.
(window.UIHelper.activateElementAtHumanSpeed): Deleted.
- 4:36 PM Changeset in webkit [249124] by
-
- 8 edits in trunk/Tools
[results.webkit.org Timline] Add symbols to the timeline dot
https://bugs.webkit.org/show_bug.cgi?id=201105
Reviewed by Jonathan Bedard.
- resultsdbpy/resultsdbpy/view/static/js/timeline.js:
- resultsdbpy/resultsdbpy/view/static/library/js/components/TimelineComponents.js:
(Timeline.CanvasSeriesComponent): Modify the drawDot api to provide user ability to add symbol to the dots, it supports unicode symbol
- resultsdbpy/resultsdbpy/view/templates/base.html: Add the encoding UTF-8 for the page, so that we can add unicode symbol to the dots
- 4:20 PM Changeset in webkit [249123] by
-
- 8 edits13 adds in trunk/LayoutTests
Resync web-platform-tests/html/browsers/the-window-object from upstream
https://bugs.webkit.org/show_bug.cgi?id=201145
Reviewed by Youenn Fablet.
Resync web-platform-tests/html/browsers/the-window-object from upstream 552bd3bf8bc1be.
- resources/resource-files.json:
- web-platform-tests/html/browsers/the-window-object/*:
- 4:01 PM Changeset in webkit [249122] by
-
- 3 edits in trunk/LayoutTests
Unreviewed, fix test failure after r200971
- inspector/timeline/line-column-expected.txt:
- inspector/debugger/tail-deleted-frames-this-value.html:
Add messages to all
InspectorTest.assertso we can know which one is firing on the bots.
- 3:31 PM Changeset in webkit [249121] by
-
- 2 edits in trunk/Source/bmalloc
[bmalloc] Disable IsoHeap completely if DebugHeap is enabled
https://bugs.webkit.org/show_bug.cgi?id=201154
Reviewed by Simon Fraser.
Previously we had the guarantee that IsoHeap is disabled when DebugHeap is enabled.
But this is guaranteed in a bit tricky way: when DebugHeap is enabled, Gigacage is disabled.
And IsoHeap is disabled when Gigacage is disabled. However r249065 enabled IsoHeap even if
Gigacage is disabled. This accidentally enabled IsoHeap even if DebugHeap is enabled.
Currently, this is incorrect. When DebugHeap is enabled, we do not start bmalloc::Scavenger.
So IsoHeap does not work. In addition, when DebugHeap is enabled, we want to investigate the Malloc data.
However IsoHeap wipes these information for IsoHeaped objects. Moreover enabling IsoHeap is not free
in terms of memory usage: bmalloc::Scavenger starts working.
So we should not enable IsoHeap in such an accidental way for DebugHeap environment. If we consider enabling
IsoHeap even ifMalloc=1is specified, we should first examine how memory is used by this change because
the users ofMalloc=1requires explicitly tight memory usage.
In this patch, we remove the accidental enabling of IsoHeap for DebugHeap by checking DebugHeap status in IsoTLS.
- bmalloc/IsoTLS.cpp:
(bmalloc::IsoTLS::determineMallocFallbackState):
- 3:21 PM Changeset in webkit [249120] by
-
- 2 edits in trunk/Source/WebCore
Optimize computation of AbsoluteClipRects clip rects
https://bugs.webkit.org/show_bug.cgi?id=201148
Reviewed by Zalan Bujtas.
When adding layers to the compositing overlap map, we compute AbsoluteClipRects for every
layer which is expensive. This was more expensive than necessary because we converted them
to TemporaryClipRects when crossing painting boundaries, but AbsoluteClipRects don't
care about painting boundaries, so don't do this.
- rendering/RenderLayer.cpp:
(WebCore::RenderLayer::calculateClipRects const):
- 3:16 PM Changeset in webkit [249119] by
-
- 2 edits in trunk/Source/WebCore
Drop WEBCORE_EXPORT from ChromeClient class
https://bugs.webkit.org/show_bug.cgi?id=201146
Reviewed by Alex Christensen.
Drop WEBCORE_EXPORT from ChromeClient class. All its methods and either pure virtual or inlined in the header.
- page/ChromeClient.h:
- 2:59 PM Changeset in webkit [249118] by
-
- 9 edits2 deletes in trunk/Source/WebInspectorUI
Web Inspector: decrease horizontal padding of
WI.ScopeBarto have more room
https://bugs.webkit.org/show_bug.cgi?id=201090
Reviewed by Joseph Pecoraro.
There's a lot of "wasted" padding space around each item that we could reuse (or "move") for
other navigation items.
- UserInterface/Views/FilterBar.css:
(.filter-bar > .navigation-bar > .item.scope-bar):
- UserInterface/Views/RadioButtonNavigationItem.css:
(.navigation-bar .item.radio.button.text-only):
- UserInterface/Views/ScopeBar.css:
(.scope-bar):
(body[dir=ltr] .scope-bar > li.multiple > select):
(body[dir=rtl] .scope-bar > li.multiple > select):
(.scope-bar > li.multiple > .arrows):
- UserInterface/Views/RadioButtonNavigationItem.js:
(WI.RadioButtonNavigationItem):
(WI.RadioButtonNavigationItem.prototype.update): Deleted.
There's no reason to forcibly set themin-widthsince all instances are just text.
- UserInterface/Views/AuditTestGroupContentView.js:
(WI.AuditTestGroupContentView.prototype.initialLayout):
- UserInterface/Views/AuditTestGroupContentView.css:
(.content-view.audit-test-group > header > nav:not(:empty):before): Deleted.
Remove the unnecessary "Showing: " prefix before theWI.ScopeBar.
- UserInterface/Views/ScopeRadioButtonNavigationItem.js: Removed.
- UserInterface/Views/ScopeRadioButtonNavigationItem.css: Removed.
These classes were never used.
- Localizations/en.lproj/localizedStrings.js:
- 2:09 PM Changeset in webkit [249117] by
-
- 9 edits in trunk
[JSC] Ensure x?.y ?? z is fast
https://bugs.webkit.org/show_bug.cgi?id=200875
Reviewed by Yusuke Suzuki.
JSTests:
- stress/nullish-coalescing.js:
Source/JavaScriptCore:
We anticipate
x?.y ?? zto quickly become a common idiom in JS. With a little bytecode rearrangement,
we can avoid the "load undefined and check it" dance in the middle and just turn this into two jumps.
Before:
(get x)
----- jundefined_or_null
| (get y)
| --- jmp
| (load undefined)
- jnundefined_or_null
| (get z)
end
After:
(get x)
--- jundefined_or_null
| (get y)
| - jnundefined_or_null
| (get z)
end
- bytecompiler/BytecodeGenerator.cpp:
(JSC::BytecodeGenerator::popOptionalChainTarget): Added specialization.
- bytecompiler/BytecodeGenerator.h:
- bytecompiler/NodesCodegen.cpp:
(JSC::CoalesceNode::emitBytecode):
(JSC::OptionalChainNode::emitBytecode):
- parser/ASTBuilder.h:
(JSC::ASTBuilder::makeDeleteNode):
(JSC::ASTBuilder::makeCoalesceNode): Added.
(JSC::ASTBuilder::makeBinaryNode):
- parser/NodeConstructors.h:
(JSC::CoalesceNode::CoalesceNode):
- parser/Nodes.h:
(JSC::ExpressionNode::isDeleteNode const): Added. (Replaces OptionalChainNode::m_isDelete.)
- 1:42 PM Changeset in webkit [249116] by
-
- 2 edits in trunk/Tools
Unreviewed, remove useMaximalFlushInsertionPhase use
https://bugs.webkit.org/show_bug.cgi?id=201036
- Scripts/run-jsc-stress-tests:
- 1:26 PM Changeset in webkit [249115] by
-
- 4 edits1 add in trunk
Don't compute upconverted characters twice in buildQuery() in DataDetection.mm
<https://webkit.org/b/201144>
<rdar://problem/54689399>
Reviewed by Brent Fulgham.
Source/WebCore:
- editing/cocoa/DataDetection.mm:
(WebCore::buildQuery): Extract common variables to prevent double
conversion for 8-bit strings.
Tools:
- TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj: Add
DataDetectorsTestIOS.mm to the project.
- TestWebKitAPI/Tests/ios/DataDetectorsTestIOS.mm: Add a new
test for Data Detectors for phone numbers.
- 1:22 PM Changeset in webkit [249114] by
-
- 1 copy in tags/Safari-608.1.49
Tag Safari-608.1.49.
- 12:58 PM Changeset in webkit [249113] by
-
- 2 edits in trunk/LayoutTests
Unreviewed, unmark two datalist tests as timing out on iOS 13 after r249112
- platform/ios/TestExpectations:
- 12:37 PM Changeset in webkit [249112] by
-
- 23 edits in trunk
REGRESSION (iOS 13): Tests that simulate multiple back-to-back single taps fail or time out
https://bugs.webkit.org/show_bug.cgi?id=201129
<rdar://problem/51857277>
Reviewed by Tim Horton.
Source/WebKit:
Adds a new SPI hook in WebKit to let clients know when a synthetic tap gesture that has ended has been reset.
See Tools/ChangeLog and LayoutTests/ChangeLog for more details.
- UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView _doAfterResettingSingleTapGesture:]):
- UIProcess/API/Cocoa/WKWebViewPrivate.h:
- UIProcess/ios/WKContentViewInteraction.h:
- UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView _singleTapDidReset:]):
(-[WKContentView _doAfterResettingSingleTapGesture:]):
Tools:
The tests in editing/pasteboard/ios were timing out on iOS 13 before this change. This is because they simulate
back-to-back single taps; while this is recognized as two single taps on iOS 12 and prior, only the first single
tap is recognized on iOS 13 (and the second is simply dropped on the floor). This occurs because the synthetic
single tap gesture is reset slightly later on iOS 13 compared to iOS 12, so when the second tap is dispatched,
the gesture recognizer is still in "ended" state after the first tap on iOS 13, which means the gesture isn't
capable of recognizing further touches yet.
In UIKit, a gesture recognizer is only reset once its UIGestureEnvironment's containing dependency subgraph no
longer contains gestures that are active. In iOS 12, the synthetic click gesture is a part of a dependency
subgraph that contains only itself and the normal (blocking) double tap gesture which requires the click to fail
before it can be recognized; immediately after simulating the tap, both these gestures are inactive, which
allows both of them to be reset.
However, in iOS 13, the synthetic click gesture is part of a gesture dependency graph that contains the double
tap for double click gesture, as well as the non-blocking double tap gesture, both of which are still active
immediately after sending the first tap. This change in dependencies is caused by the introduction of
UIUndoGestureInteraction's single and double three-finger tap gestures, which (in -[UIUndoGestureInteraction
gestureRecognizer:shouldBeRequiredToFailByGestureRecognizer:]) explicitly add all other taps as failure
requirements. This effectively links the synthetic single tap gesture to most of the other gestures in
WKContentView's dependency graph by way of these tap gestures for the undo interaction.
All this means that there is now a short (~50 ms) delay after the synthetic single tap gestures is recognized,
before it can be recognized again. To account for this new delay in our test infrastructure, simply wait for
single tap gestures that have ended to reset before attempting to send subsequent single taps. We do this by
introducing WebKit testing SPI to invoke a completion handler after resetting the synthetic click gesture (only
if necessary - i.e., if the gesture is in ended state when we are about to begin simulating the tap). This
allows calls toUIScriptController::singleTapAtPointto be reliably recognized as single taps without
requiring arbitrary 120 ms "human speed" delays.
This fixes a number of flaky or failing layout tests, including the tests in editing/pasteboard/ios.
- TestRunnerShared/UIScriptContext/Bindings/UIScriptController.idl:
- TestRunnerShared/UIScriptContext/UIScriptController.h:
(WTR::UIScriptController::doubleTapAtPoint):
Add a
delayparameter todoubleTapAtPoint. A number of layout tests were actually simulating double click
gestures by simulating two back-to-back single taps; this is done for the purposes of being able to add a "human
speed" delay prior to the second single tap gesture. After the change to wait for the single tap gesture to
reset before attempting to simulate the next tap, this strategy no longer works, since the second gesture is
recognized only as a single tap instead of a double tap.
Instead, we add a delay parameter to
UIScriptController::doubleTapAtPoint, which the "human speed" double tap
gestures use instead to wait after simulating the first tap.
- WebKitTestRunner/ios/HIDEventGenerator.h:
- WebKitTestRunner/ios/HIDEventGenerator.mm:
(-[HIDEventGenerator _waitFor:]):
(-[HIDEventGenerator sendTaps:location:withNumberOfTouches:delay:completionBlock:]):
Plumb the tap gesture delay through to this helper method.
(-[HIDEventGenerator tap:completionBlock:]):
(-[HIDEventGenerator doubleTap:delay:completionBlock:]):
(-[HIDEventGenerator twoFingerTap:completionBlock:]):
(-[HIDEventGenerator sendTaps:location:withNumberOfTouches:completionBlock:]): Deleted.
(-[HIDEventGenerator doubleTap:completionBlock:]): Deleted.
- WebKitTestRunner/ios/UIScriptControllerIOS.h:
- WebKitTestRunner/ios/UIScriptControllerIOS.mm:
(WTR::UIScriptControllerIOS::waitForSingleTapToReset const):
Add a new helper to wait for the content view's single tap gesture to reset if needed; call this before
attempting to simulate single taps (either using a stylus, or with a regular touch).
(WTR::UIScriptControllerIOS::singleTapAtPointWithModifiers):
(WTR::UIScriptControllerIOS::doubleTapAtPoint):
(WTR::UIScriptControllerIOS::stylusTapAtPointWithModifiers):
LayoutTests:
Adjusts a few layout tests after changes to UIScriptController::doubleTapAtPoint and
UIScriptController::singleTapAtPoint.
- editing/selection/ios/change-selection-by-tapping.html:
Tweak this test to tap the page 12 times instead of 20 (which seems to cause occasional timeouts locally, when
running all layout tests with a dozen active simulators).
- fast/events/ios/double-tap-zoom.html:
- fast/events/ios/viewport-device-width-allows-double-tap-zoom-out.html:
- fast/events/ios/viewport-shrink-to-fit-allows-double-tap.html:
Augment a few call sites of
doubleTapAtPointwith a 0 delay. Ideally, these should just use ui-helper.js, but
we can refactor these tests as a part of folding basic-gestures.js into ui-helper.js.
- http/tests/adClickAttribution/anchor-tag-attributes-validation-expected.txt:
- http/tests/security/anchor-download-block-crossorigin-expected.txt:
Rebaseline these layout tests, due to change in line numbers.
- platform/ipad/TestExpectations:
Unskip these tests on iPad, now that they should pass.
- pointerevents/utils.js:
(const.ui.new.UIController.prototype.doubleTapToZoom):
- resources/basic-gestures.js:
(return.new.Promise.):
(return.new.Promise):
Adjust some more call sites of
doubleTapAtPoint. Ideally, these should use justui-helper.jstoo.
- resources/ui-helper.js:
(window.UIHelper.doubleTapAt.return.new.Promise):
(window.UIHelper.doubleTapAt):
(window.UIHelper.humanSpeedDoubleTapAt):
(window.UIHelper.humanSpeedZoomByDoubleTappingAt):
Add a delay parameter to
doubleTapAtto specify a delay after each simulated tap. By default, this is 0, but
thehumanSpeed*helpers add a delay of 120 milliseconds. Additionally, these helpers were previously calling
singleTapAtPointtwice, with a timeout in between to add a delay. Instead, calldoubleTapAtPointwith a
nonzero delay; otherwise, we'll end up waiting insingleTapAtPointfor the gesture subgraph containing both
the double tap gestures and the synthetic single tap gesture to reset, which causes these two single taps to no
longer be recognized as a double tap gesture.
(window.UIHelper.zoomByDoubleTappingAt):
- 12:18 PM Changeset in webkit [249111] by
-
- 3 edits in trunk/Tools
results.webkit.org: Allow clicking on the tooltip arrow
https://bugs.webkit.org/show_bug.cgi?id=201103
Rubber-stamped by Aakash Jain.
By design, the arrow sits above the canvas and intercepts mouse events from it.
This will often make an element that has a tooltip unclickable.
- resultsdbpy/resultsdbpy/view/static/js/timeline.js:
(xAxisFromScale):
(TimelineFromEndpoint.prototype.render.onDotEnterFactory):
(TimelineFromEndpoint.prototype.render):
- resultsdbpy/resultsdbpy/view/static/js/tooltip.js:
(_ToolTip):
(_ToolTip.prototype.toString): Trigger onClick callback when the arrow is clicked.
(_ToolTip.prototype.set): Set the onClick callback.
- 12:08 PM Changeset in webkit [249110] by
-
- 23 edits in trunk/Source
[FTW] Go back to ID2D1Bitmap as our NativeImage type
https://bugs.webkit.org/show_bug.cgi?id=201122
Reviewed by Alex Christensen.
In Bug 200093 I switched the OS type of NativeImagePtr from ID2D1Bitmap to IWICBitmap.
However, this was an ill-advised approach, because it dramatically harmed performance due
to the heavy use of software rendering.
I originally made this change because I thought this was the only way to get to the backing
bits of the bitmaps, but it turns out that a more recent Direct2D data type (ID2D1Bitmap1)
has the ability to map its memory to CPU-accessible memory, allowing software filter effects.
This patch switches back to the ID2D1Bitap data type, and hooks up the ID2D1Bitmap1 data type
to access the underlying memory of the bitmaps when software filter effects are used.
Source/WebCore:
- platform/graphics/ImageBuffer.h:
- platform/graphics/NativeImage.h:
- platform/graphics/texmap/BitmapTextureGL.cpp:
- platform/graphics/win/Direct2DOperations.cpp:
- platform/graphics/win/Direct2DOperations.h:
- platform/graphics/win/Direct2DUtilities.cpp:
(WebCore::Direct2D::writeDiagnosticPNGToPath):
(WebCore::Direct2D::writeImageToDiskAsPNG): Deleted.
- platform/graphics/win/Direct2DUtilities.h:
- platform/graphics/win/GraphicsContextDirect2D.cpp:
- platform/graphics/win/ImageBufferDataDirect2D.cpp:
- platform/graphics/win/ImageBufferDataDirect2D.h:
- platform/graphics/win/ImageBufferDirect2D.cpp:
- platform/graphics/win/ImageDecoderDirect2D.cpp:
- platform/graphics/win/NativeImageDirect2D.cpp:
- platform/graphics/win/PatternDirect2D.cpp:
- svg/graphics/SVGImage.cpp:
Source/WebKit:
Reviewed by Alex Christensen.
- Shared/ShareableBitmap.h:
- Shared/win/ShareableBitmapDirect2D.cpp:
- UIProcess/win/BackingStoreDirect2D.cpp:
- WebProcess/WebPage/CoordinatedGraphics/DrawingAreaCoordinatedGraphics.cpp:
- 11:58 AM Changeset in webkit [249109] by
-
- 5 edits in trunk/Source/WebCore
[WHLSL] TypeNamer can be simplified by replacing BaseTypeNameNode with uniqued AST::UnnamedTypes
https://bugs.webkit.org/show_bug.cgi?id=200632
Reviewed by Saam Barati.
There is no longer a reason to keep a parallel tree of the UnnamedType-like objects
BaseTypeNameNodes. Instead, we can store a single HashMap mapping from UnnamedTypeKeys
to MangledTypeName, and use the the UnnamedType stored in the UnnamedTypeKey while
emitting the metal code. This removes the parallel BaseTypeNameNode type hierarchy
and removes an extra allocation for each UnnamedType.
- Modules/webgpu/WHLSL/AST/WHLSLUnnamedTypeHash.h:
Define HashTraits and DefaultHash specializations for UnnamedTypeKey to simplify
uses of UnnamedTypeKey as a key in HashMap/HashSet.
- Modules/webgpu/WHLSL/Metal/WHLSLTypeNamer.h:
- Modules/webgpu/WHLSL/Metal/WHLSLTypeNamer.cpp:
(WebCore::WHLSL::Metal::TypeNamer::insert): Deleted.
(WebCore::WHLSL::Metal::TypeNamer::generateUniquedTypeName):
Replace old insert function with generateUniquedTypeName, which uniques and generates
names for the UnnamedType and any 'parent' UnnamedTypes.
(WebCore::WHLSL::Metal::BaseTypeNameNode): Deleted.
Remove BaseTypeNameNode and subclasses.
(WebCore::WHLSL::Metal::TypeNamer::find): Deleted.
(WebCore::WHLSL::Metal::TypeNamer::createNameNode): Deleted.
We no longer need the find or createNameNode functions, as the UnnamedTypes can be now be
used directly everywhere.
(WebCore::WHLSL::Metal::TypeNamer::emitUnnamedTypeDefinition):
Switch to directly using the UnnamedType and always have the caller pass in the mangled
name, since in the main emit loop, we always have access to the them. Also, inline the
the recursive calls to emitNamedTypeDefinition for 'parent' types to avoid unnecessary
extra switch over the kind getting the parent, and avoid it entirely for TypeReference
which never has a parent.
(WebCore::WHLSL::Metal::TypeNamer::emitNamedTypeDefinition):
Switches to now passing in the neighbors, since they are always available in the main
emit loop. Also move to a switch statement rather than ifs for consistency.
(WebCore::WHLSL::Metal::TypeNamer::emitMetalTypeDefinitions):
Pass keys and values into the emit functions to avoid double lookups.
(WebCore::WHLSL::Metal::TypeNamer::mangledNameForType):
Update to hash lookup.
- Modules/webgpu/WHLSL/WHLSLSynthesizeConstructors.cpp:
Take advantage of default HashTraits and DefaultHash for UnnamedTypeKey.
- 11:43 AM Changeset in webkit [249108] by
-
- 18 edits in trunk
[WebAuthn] Support HID authenticators on iOS
https://bugs.webkit.org/show_bug.cgi?id=201084
<rdar://problem/51908390>
Reviewed by Youenn Fablet.
Source/WebCore/PAL:
- pal/spi/cocoa/IOKitSPI.h:
Move IOHIDDevice.h and IOHIDManager.h to IOKitSPI.h given they are in iOS.
Source/WebKit:
This patch makes the macOS HID implementation available in iOS as well.
Mostly, it removes the PLATFORM(MAC) compile time flag.
- UIProcess/WebAuthentication/AuthenticatorManager.cpp:
(WebKit::AuthenticatorManagerInternal::collectTransports):
- UIProcess/WebAuthentication/AuthenticatorTransportService.cpp:
(WebKit::AuthenticatorTransportService::create):
(WebKit::AuthenticatorTransportService::createMock):
- UIProcess/WebAuthentication/Cocoa/HidConnection.h:
- UIProcess/WebAuthentication/Cocoa/HidConnection.mm:
- UIProcess/WebAuthentication/Cocoa/HidService.h:
- UIProcess/WebAuthentication/Cocoa/HidService.mm:
- UIProcess/WebAuthentication/Cocoa/NfcConnection.mm:
(WebKit::NfcConnection::NfcConnection):
A tentative solution before there is an official UI.
- UIProcess/WebAuthentication/Mock/MockHidConnection.cpp:
- UIProcess/WebAuthentication/Mock/MockHidConnection.h:
- UIProcess/WebAuthentication/Mock/MockHidService.cpp:
- UIProcess/WebAuthentication/Mock/MockHidService.h:
- UIProcess/WebAuthentication/fido/CtapHidDriver.cpp:
- UIProcess/WebAuthentication/fido/CtapHidDriver.h:
LayoutTests:
- platform/ios-wk2/TestExpectations:
Unskips HID tests for iOS.
- 11:41 AM Changeset in webkit [249107] by
-
- 2 edits in trunk/LayoutTests
Unreviewed, test gardening
- platform/mac-wk2/TestExpectations:
Skip WebAuthn tests for HighSierra and Mojave.
- 11:03 AM Changeset in webkit [249106] by
-
- 3 edits in trunk/Source/WebCore
REGRESSION (18E140): “return streaming movie to real time” suggesting “resume real time streaming”
https://bugs.webkit.org/show_bug.cgi?id=201108
<rdar://problem/46372525>
Patch by Peng Liu <Peng Liu> on 2019-08-26
Reviewed by Eric Carlson.
Update Localizable.strings.
No new test.
- en.lproj/Localizable.strings:
- platform/LocalizedStrings.cpp:
(WebCore::localizedMediaControlElementHelpText):
- 10:51 AM Changeset in webkit [249105] by
-
- 2 edits in trunk/Source/WebCore
CacheStorageConnection::computeRealBodySize is not thread-safe
https://bugs.webkit.org/show_bug.cgi?id=201074
Reviewed by Chris Dumez.
In case of a form data, the size computation might require sync IPC to the network process which is not thread-safe
In that case, hop to the main thread to compute the size of the body.
Covered by existing service worker tests in Debug mode.
- Modules/cache/CacheStorageConnection.cpp:
(WebCore::formDataSize):
(WebCore::CacheStorageConnection::computeRealBodySize):
- 10:48 AM Changeset in webkit [249104] by
-
- 3 edits in trunk/Tools
[EWS] Do not append additional '(failure)' string at the end of custom failure message in EWS Buildbot
https://bugs.webkit.org/show_bug.cgi?id=201140
Reviewed by Jonathan Bedard.
- BuildSlaveSupport/ews-build/steps.py:
(TestWithFailureCount.getResultSummary): Do not append (failure) when in case of custom status.
- BuildSlaveSupport/ews-build/steps_unittest.py: Updated unit-tests accordingly.
- 10:36 AM Changeset in webkit [249103] by
-
- 1 edit1 add in trunk/Source/ThirdParty/ANGLE
Add a script to update ANGLE
https://bugs.webkit.org/show_bug.cgi?id=201109
Patch by James Darpinian <jdarpinian@google.com> on 2019-08-26
Reviewed by Alex Christensen.
- update-angle.sh: Added.
- 10:21 AM Changeset in webkit [249102] by
-
- 2 edits in trunk/Tools
run-webkit-tests: Cap the number of automatically booted simulators at 12
https://bugs.webkit.org/show_bug.cgi?id=201139
Reviewed by Aakash Jain.
To make local development with simulators more pleasant, machines should
never automatically boot more than 12 simulators.
- Scripts/webkitpy/xcode/simulated_device.py:
(SimulatedDeviceManager.max_supported_simulators):
- 10:12 AM Changeset in webkit [249101] by
-
- 6 edits5 deletes in trunk
Unreviewed, rolling out r248961.
Same patch was re-landed after being rolled out. Patch is
causing Catalina/iOS 13 test failures. Rolling out.
Reverted changeset:
"Verify Prefetch and credential behavior"
https://bugs.webkit.org/show_bug.cgi?id=200000
https://trac.webkit.org/changeset/248961
- 10:08 AM Changeset in webkit [249100] by
-
- 6 edits in trunk/Tools
[ews] Add EWS queue for applying watchlist
https://bugs.webkit.org/show_bug.cgi?id=201072
Reviewed by Jonathan Bedard.
- BuildSlaveSupport/ews-build/steps.py:
(ApplyWatchList): Build step to apply watchlist.
(ApplyWatchList.init): Set logEnviron to False.
(ApplyWatchList.getResultSummary): Updated the description in case of failure.
- BuildSlaveSupport/ews-build/steps_unittest.py: Added unit-tests.
- BuildSlaveSupport/ews-build/factories.py:
(WatchListFactory): Build factory for WatchList.
- BuildSlaveSupport/ews-build/loadConfig.py:
- BuildSlaveSupport/ews-build/config.json:
- 9:57 AM Changeset in webkit [249099] by
-
- 2 edits in trunk/LayoutTests
rdar://51857070 (iPad: Many fast/text-autosizing layout tests are consistently failing)
Unreviewed Test Gardening.
Tests are no longer failing. Removing test expectations.
- platform/ipad/TestExpectations:
- 9:48 AM Changeset in webkit [249098] by
-
- 1 edit1 delete in trunk
Remove NPAPI Examples
https://bugs.webkit.org/show_bug.cgi?id=201089
Reviewed by Alexey Proskuryakov.
We are only supporting NPAPI for flash until its upcoming end of life.
We don't need to encourage the creation of new NPAPI plugins by having examples.
- Examples: Removed.
- 8:07 AM Changeset in webkit [249097] by
-
- 3 edits in releases/WebKitGTK/webkit-2.24/Source/JavaScriptCore
Merged r249095 - Missing media controls when WebKit is built with Python3
https://bugs.webkit.org/show_bug.cgi?id=194367
Reviewed by Carlos Garcia Campos.
The JavaScript minifier script jsmin.py expects a text stream
with text type as input, but the script make-js-file-arrays.py
was passing to it a FileIO() object. So, when the jsmin script
called read() over this object, python3 was returning a type of
bytes, but for python2 it returns type str.
This caused two problems: first that jsmin failed to do any minifying
because it was comparing strings with a variable of type bytes.
The second major problem was in the write() function, when the
jsmin script tried to convert a byte character to text by calling
str() on it. Because what this does is not to convert from byte
type to string, but to simply generate a string with the format b'c'.
So the jsmin script was returning back as minified JS complete
garbage in the form of "b't'b'h'b'h'b'i" for python3.
Therefore, when WebKit was built with python3 this broke everything
that depended on the embedded JS code that make-js-file-arrays.py
was supposed to generate, like the media controls and the WebDriver
atoms.
Fix this by reworking the code in make-js-file-arrays script to
read the data from the file using a TextIOWrapper in python 3
with decoding for 'utf-8'. This ensures that the jsmin receives
a text type. For python2 keep using the same FileIO class.
On the jsmin.py script remove the problematic call to str() inside
the write() function when running with python3.
On top of that, add an extra check in jsmin.py script to make it
fail if the character type read is not the one expected. This
will cause the build to fail instead of failing silently like
now. I did some tests and the runtime cost of this extra check
is almost zero.
- Scripts/jsmin.py:
(JavascriptMinify.minify.write):
(JavascriptMinify):
- Scripts/make-js-file-arrays.py:
(main):
- 8:00 AM Changeset in webkit [249096] by
-
- 37 edits2 copies3 adds in trunk
Add a WebsiteDataStore delegate to handle AuthenticationChallenge that do not come from pages
https://bugs.webkit.org/show_bug.cgi?id=196870
LayoutTests/imported/w3c:
<rdar://problem/54593556>
Reviewed by Alex Christensen.
- web-platform-tests/service-workers/service-worker/websocket-in-service-worker.https-expected.txt:
Source/WebKit:
Reviewed by Alex Christensen.
Make NetworkProcess provide the session ID for any authentication challenge.
In case there is no associated page for the authentication challenge or this is related to a service worker,
ask the website data store to take a decision.
Add website data store delegate to allow applications to make the decision.
Restrict using the delegate to server trust evaluation only.
Make ping loads reuse the same mechanism.
Covered by service worker tests and updated beacon test.
- NetworkProcess/NetworkCORSPreflightChecker.cpp:
(WebKit::NetworkCORSPreflightChecker::didReceiveChallenge):
- NetworkProcess/NetworkDataTask.cpp:
(WebKit::NetworkDataTask::sessionID const):
- NetworkProcess/NetworkDataTask.h:
- NetworkProcess/NetworkLoad.cpp:
(WebKit::NetworkLoad::didReceiveChallenge):
- NetworkProcess/NetworkLoadChecker.h:
(WebKit::NetworkLoadChecker::networkProcess):
- NetworkProcess/PingLoad.cpp:
(WebKit::PingLoad::didReceiveChallenge):
- Shared/Authentication/AuthenticationManager.cpp:
(WebKit::AuthenticationManager::didReceiveAuthenticationChallenge):
- Shared/Authentication/AuthenticationManager.h:
- Shared/Authentication/cocoa/AuthenticationChallengeDispositionCocoa.h: Copied from Tools/WebKitTestRunner/cocoa/TestWebsiteDataStoreDelegate.h.
- Shared/Authentication/cocoa/AuthenticationChallengeDispositionCocoa.mm: Copied from Source/WebKit/Shared/Authentication/cocoa/ClientCertificateAuthenticationXPCConstants.h.
(WebKit::toAuthenticationChallengeDisposition):
- SourcesCocoa.txt:
- UIProcess/API/Cocoa/WKWebsiteDataStore.mm:
(WebsiteDataStoreClient::WebsiteDataStoreClient):
- UIProcess/API/Cocoa/_WKWebsiteDataStoreDelegate.h:
- UIProcess/Cocoa/NavigationState.mm:
(WebKit::NavigationState::NavigationClient::didReceiveAuthenticationChallenge):
- UIProcess/Network/NetworkProcessProxy.cpp:
(WebKit::NetworkProcessProxy::didReceiveAuthenticationChallenge):
- UIProcess/Network/NetworkProcessProxy.h:
- UIProcess/Network/NetworkProcessProxy.messages.in:
- UIProcess/ServiceWorkerProcessProxy.cpp:
- UIProcess/ServiceWorkerProcessProxy.h:
- UIProcess/WebPageProxy.cpp:
- UIProcess/WebProcessPool.cpp:
(WebKit::WebProcessPool::isServiceWorkerPageID const):
- UIProcess/WebProcessPool.h:
- UIProcess/WebsiteData/WebsiteDataStoreClient.h:
(WebKit::WebsiteDataStoreClient::didReceiveAuthenticationChallenge):
- WebKit.xcodeproj/project.pbxproj:
Tools:
Reviewed by Alex Christensen.
Implement the new delegate by respecting the value set by testRunner.setAllowsAnySSLCertificate
Accept any server certificate by default.
- WebKitTestRunner/TestController.cpp:
- WebKitTestRunner/cocoa/TestControllerCocoa.mm:
(WTR::TestController::cocoaResetStateToConsistentValues):
(WTR::TestController::setAllowsAnySSLCertificate):
- WebKitTestRunner/cocoa/TestWebsiteDataStoreDelegate.h:
- WebKitTestRunner/cocoa/TestWebsiteDataStoreDelegate.mm:
(-[TestWebsiteDataStoreDelegate didReceiveAuthenticationChallenge:completionHandler:]):
(-[TestWebsiteDataStoreDelegate setAllowAnySSLCertificate:]):
LayoutTests:
Reviewed by Alex Christensen.
Add tests to validate that the delegate decision is respected for beacons and service worker loads.
- http/wpt/beacon/cors/crossorigin-arraybufferview-no-preflight-expected.txt:
- http/wpt/beacon/cors/crossorigin-arraybufferview-no-preflight.html:
- http/wpt/beacon/resources/beacon-preflight.py:
(main):
- http/wpt/service-workers/resources/lengthy-pass.py:
(main):
- http/wpt/service-workers/server-trust-evaluation.https-expected.txt: Added.
- http/wpt/service-workers/server-trust-evaluation.https.html: Added.
- http/wpt/service-workers/server-trust-worker.js: Added.
- http/tests/ssl/certificate-validation.html: Remove unneeded setting call
since we deny server trust requests if SSL certificates are not all allowed.
- 7:58 AM WebKitGTK/2.24.x edited by
- (diff)
- 7:54 AM WebKitGTK/2.24.x edited by
- (diff)
- 7:36 AM Changeset in webkit [249095] by
-
- 3 edits in trunk/Source/JavaScriptCore
Missing media controls when WebKit is built with Python3
https://bugs.webkit.org/show_bug.cgi?id=194367
Reviewed by Carlos Garcia Campos.
The JavaScript minifier script jsmin.py expects a text stream
with text type as input, but the script make-js-file-arrays.py
was passing to it a FileIO() object. So, when the jsmin script
called read() over this object, python3 was returning a type of
bytes, but for python2 it returns type str.
This caused two problems: first that jsmin failed to do any minifying
because it was comparing strings with a variable of type bytes.
The second major problem was in the write() function, when the
jsmin script tried to convert a byte character to text by calling
str() on it. Because what this does is not to convert from byte
type to string, but to simply generate a string with the format b'c'.
So the jsmin script was returning back as minified JS complete
garbage in the form of "b't'b'h'b'h'b'i" for python3.
Therefore, when WebKit was built with python3 this broke everything
that depended on the embedded JS code that make-js-file-arrays.py
was supposed to generate, like the media controls and the WebDriver
atoms.
Fix this by reworking the code in make-js-file-arrays script to
read the data from the file using a TextIOWrapper in python 3
with decoding for 'utf-8'. This ensures that the jsmin receives
a text type. For python2 keep using the same FileIO class.
On the jsmin.py script remove the problematic call to str() inside
the write() function when running with python3.
On top of that, add an extra check in jsmin.py script to make it
fail if the character type read is not the one expected. This
will cause the build to fail instead of failing silently like
now. I did some tests and the runtime cost of this extra check
is almost zero.
- Scripts/jsmin.py:
(JavascriptMinify.minify.write):
(JavascriptMinify):
- Scripts/make-js-file-arrays.py:
(main):
- 2:41 AM Changeset in webkit [249094] by
-
- 2 edits in trunk/Source/WebCore
MessagePort should be WeakPtrFactoryInitialization::Eager
https://bugs.webkit.org/show_bug.cgi?id=201073
Reviewed by Chris Dumez.
Covered by existing layout tests.
- dom/MessagePort.h:
Aug 25, 2019:
- 11:16 PM Changeset in webkit [249093] by
-
- 19 edits1 add in trunk/Source/WebKit
[iOS WK2] Make a strongly-typed TransactionID to replace uint64_t transactionIDs
https://bugs.webkit.org/show_bug.cgi?id=199983
Reviewed by Dean Jackson.
Add TransactionID which is a MonotonicObjectIdentifier<TransactionIDType>. This is modeled
after ObjectIdentifier<>, but we can't use that because it doesn't have a guarantee of
values always increasing by 1 (all derived classes share the same value source). Also, we
need a per-RemoteLayerTreeDrawingArea set of values, but a static seed would cause values to
be incremented by all RemoteLayerTreeDrawingAreas in a WebProcess.
Replace all the bare uint64_t with TransactionID, fixing message generation codegen.
- Scripts/webkit/messages.py:
- Shared/RemoteLayerTree/RemoteLayerTreeTransaction.h:
(WebKit::RemoteLayerTreeTransaction::transactionID const):
(WebKit::RemoteLayerTreeTransaction::setTransactionID):
- Shared/TransactionID.h: Added.
(WebKit::MonotonicObjectIdentifier::MonotonicObjectIdentifier):
(WebKit::MonotonicObjectIdentifier::isHashTableDeletedValue const):
(WebKit::MonotonicObjectIdentifier::encode const):
(WebKit::MonotonicObjectIdentifier::decode):
(WebKit::MonotonicObjectIdentifier::operator== const):
(WebKit::MonotonicObjectIdentifier::operator> const):
(WebKit::MonotonicObjectIdentifier::operator>= const):
(WebKit::MonotonicObjectIdentifier::operator< const):
(WebKit::MonotonicObjectIdentifier::operator<= const):
(WebKit::MonotonicObjectIdentifier::operator!= const):
(WebKit::MonotonicObjectIdentifier::increment):
(WebKit::MonotonicObjectIdentifier::next const):
(WebKit::MonotonicObjectIdentifier::toUInt64 const):
(WebKit::MonotonicObjectIdentifier::operator bool const):
(WebKit::MonotonicObjectIdentifier::loggingString const):
(WebKit::MonotonicObjectIdentifier::hashTableDeletedValue):
(WebKit::MonotonicObjectIdentifier::isValidIdentifier):
(WebKit::operator<<):
- Shared/VisibleContentRectUpdateInfo.h:
(WebKit::VisibleContentRectUpdateInfo::VisibleContentRectUpdateInfo):
(WebKit::VisibleContentRectUpdateInfo::lastLayerTreeTransactionID const):
- UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView _processWillSwapOrDidExit]):
- UIProcess/RemoteLayerTree/RemoteLayerTreeDrawingAreaProxy.h:
- UIProcess/RemoteLayerTree/RemoteLayerTreeDrawingAreaProxy.messages.in:
- UIProcess/RemoteLayerTree/RemoteLayerTreeDrawingAreaProxy.mm:
(WebKit::RemoteLayerTreeDrawingAreaProxy::willCommitLayerTree):
(WebKit::RemoteLayerTreeDrawingAreaProxy::commitLayerTree):
- UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::resetState):
- UIProcess/WebPageProxy.h:
- UIProcess/ios/WKContentViewInteraction.h:
- UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView cleanupInteraction]):
- UIProcess/ios/WebPageProxyIOS.mm:
(WebKit::WebPageProxy::commitPotentialTap):
(WebKit::WebPageProxy::handleTap):
- WebKit.xcodeproj/project.pbxproj:
- WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.h:
(WebKit::RemoteLayerTreeDrawingArea::nextTransactionID const):
(WebKit::RemoteLayerTreeDrawingArea::lastCommittedTransactionID const):
(WebKit::RemoteLayerTreeDrawingArea::takeNextTransactionID):
- WebProcess/WebPage/WebFrame.h:
(WebKit::WebFrame::firstLayerTreeTransactionIDAfterDidCommitLoad const):
(WebKit::WebFrame::setFirstLayerTreeTransactionIDAfterDidCommitLoad):
- WebProcess/WebPage/WebPage.h:
- WebProcess/WebPage/WebPage.messages.in:
- WebProcess/WebPage/ios/WebPageIOS.mm:
(WebKit::WebPage::handleTap):
(WebKit::WebPage::handlePotentialDoubleTapForDoubleClickAtPoint):
(WebKit::WebPage::commitPotentialTap):
- 6:51 PM Changeset in webkit [249092] by
-
- 2 edits in trunk/Source/WTF
Regression(r248533) Assertion hit in isMainThread() for some clients using WTF because the main thread is not initialized
https://bugs.webkit.org/show_bug.cgi?id=201083
<rdar://problem/54651993>
Unreviewed build fox for Windows.
- wtf/win/MainThreadWin.cpp:
(WTF::isMainThreadInitialized): Added.