Timeline
Jul 28, 2018:
- 11:39 AM Changeset in webkit [234345] by
-
- 2 edits in trunk/Source/WebCore
Reset CompositingPolicyOverride between tests
https://bugs.webkit.org/show_bug.cgi?id=188138
Reviewed by Zalan Bujtas.
WK1 tests were failing after r234330 because the compositing policy override optional
was left set on the Page (WK1 has injected bundle SPI to clear it). Fix by having
Internals::resetToConsistentState clear this state.
- testing/Internals.cpp:
(WebCore::Internals::resetToConsistentState):
- 9:35 AM Changeset in webkit [234344] by
-
- 3 edits in trunk/Source/WTF
Gardening: build fix for internal builds.
https://bugs.webkit.org/show_bug.cgi?id=188123
<rdar://problem/42672268>
Not reviewed.
Some code is relying on RELEASE_ASSERT (without extra crash info arguments)
being purely inlined and not require linkage to an external symbol. This patch
restores this property of the original RELEASE_ASSERT.
This means moving the variant of WTFCrashWithInfo that does not take extra args
to Assertions.h and making it an "inline" function. When compiling with clang,
we also specify attribute((optnone)) to force the function out of being an
inline function (each linkage unit will get a copy of the function). This causes
the 1st 4 arguments of WTFCrashWithInfo (e.g. line number) to still be captured
in the argument registers for crash diagnostics.
- wtf/Assertions.cpp:
(WTFCrashWithInfo):
- wtf/Assertions.h:
Jul 27, 2018:
- 10:22 PM Changeset in webkit [234343] by
-
- 8 edits2 adds in trunk
Animation stops with object-fit:contain on an animated 2d canvas
https://bugs.webkit.org/show_bug.cgi?id=187840
Reviewed by Zalan Bujtas.
Source/WebCore:
If a canvas has object-fit: cover or contain, repaints need to mapped through
the rect that is used to position the canvas in the element bounds, which is replacedContentRect().
Add a version of replacedContentRect() that doesn't require passing the intrinsicSize() since
all but RenderVideo just pass the RenderReplaced's intrinsicSize.
Test: fast/repaint/canvas-object-fit.html
- html/HTMLCanvasElement.cpp:
(WebCore::HTMLCanvasElement::didDraw):
- rendering/RenderHTMLCanvas.cpp:
(WebCore::RenderHTMLCanvas::paintReplaced):
- rendering/RenderImage.cpp:
(WebCore::RenderImage::updateInnerContentRect):
(WebCore::RenderImage::paintReplaced):
- rendering/RenderLayerBacking.cpp:
(WebCore::RenderLayerBacking::contentsBox const):
- rendering/RenderReplaced.h:
(WebCore::RenderReplaced::replacedContentRect const):
- rendering/shapes/ShapeOutsideInfo.cpp:
(WebCore::ShapeOutsideInfo::createShapeForImage const):
LayoutTests:
- fast/repaint/canvas-object-fit-expected.txt: Added.
- fast/repaint/canvas-object-fit.html: Added.
- 7:23 PM Changeset in webkit [234342] by
-
- 2 edits in trunk/Tools
Unreviewed, fix typo in test expectations and mark another test as timing out
- TestWebKitAPI/glib/TestExpectations.json:
- 5:35 PM Changeset in webkit [234341] by
-
- 2 edits4 adds in trunk/LayoutTests
[Curl] Test gardening
https://bugs.webkit.org/show_bug.cgi?id=188129
Unreviewed test gardening.
- platform/wincairo/TestExpectations:
- platform/wincairo/http/tests/xmlhttprequest/xmlhttprequest-unsafe-redirect-expected.txt: Added.
- 5:35 PM Changeset in webkit [234340] by
-
- 6 edits2 adds in trunk
Adjust the color matrix for the inverse apple-invert-lightness() transformation
https://bugs.webkit.org/show_bug.cgi?id=188131
rdar://problem/42673070
Reviewed by Zalan Bujtas.
Source/WebCore:
Use the correct inverse matrix values.
Test: editing/style/inverse-color-filter.html
- platform/graphics/filters/FilterOperation.cpp:
(WebCore::InvertLightnessFilterOperation::inverseTransformColor const):
LayoutTests:
Rebaseline tests that use the filter inversion. Add a new test that does inversion
for a whole range of colors, to get good coverage of the inversion matrix.
- editing/style/inverse-color-filter-expected.txt: Added.
- editing/style/inverse-color-filter.html: Added.
- editing/style/set-backColor-with-color-filter-expected.txt:
- editing/style/set-foreColor-with-color-filter-expected.txt:
- platform/win/TestExpectations:
- 5:24 PM Changeset in webkit [234339] by
-
- 2 edits in trunk/Source/WebCore
[iOS] Don't deactivate audio session
https://bugs.webkit.org/show_bug.cgi?id=188127
<rdar://problem/42544143>
Reviewed by Jon Lee.
r233435 includes a change that deactivates the shared audio session when there are no more
active media sessions. This is a good in WK2 because it allows other applications to resume
playing audio when WebKit stops playing, but it is potentially bad in WK1 where the host
app may also be playing audio.
- platform/audio/PlatformMediaSessionManager.cpp:
(WebCore::PlatformMediaSessionManager::removeSession): Don't deactivate the audio session.
- 5:17 PM Changeset in webkit [234338] by
-
- 2 edits in trunk/Source/bmalloc
Initialize bmalloc::DebugHeap::m_pageSize for non-Darwin builds.
https://bugs.webkit.org/show_bug.cgi?id=188132
<rdar://problem/40401599>
Reviewed by Saam Barati.
- bmalloc/DebugHeap.cpp:
(bmalloc::DebugHeap::DebugHeap):
- 4:26 PM Changeset in webkit [234337] by
-
- 6 edits in trunk
More unreviewed GTK test gardening
Tools:
- TestWebKitAPI/glib/TestExpectations.json:
WebDriverTests:
I don't really know what I'm doing with these WebDriver expectations... will this work?
- TestExpectations.json:
LayoutTests:
- 3:54 PM Changeset in webkit [234336] by
-
- 2 edits in trunk/LayoutTests
LayoutTest http/tests/cache/disk-cache/disk-cache-204-status-code.html is a flaky failure.
https://bugs.webkit.org/show_bug.cgi?id=162685
Unreviewed test gardening, marked as flaky on iOS Release.
- platform/ios-wk2/TestExpectations:
- 3:44 PM Changeset in webkit [234335] by
-
- 8 edits in trunk/Source
Add some crash info to Heap::checkConn() RELEASE_ASSERTs.
https://bugs.webkit.org/show_bug.cgi?id=188123
<rdar://problem/42672268>
Reviewed by Keith Miller.
Source/JavaScriptCore:
- Add VM::m_id and Heap::m_lastPhase fields. Both of these fit within existing padding space in VM and Heap, and should not cost any measurable perf to initialize and update.
- Add some crash info to the RELEASE_ASSERTs in Heap::checkConn():
worldState tells us the value we failed the assertion on.
m_lastPhase, m_currentPhase, and m_nextPhase tells us the GC phase transition
that led us here.
VM::id(), and VM::numberOfIDs() tells us how many VMs may be in play.
VM::isEntered() tells us if the current VM is currently executing JS code.
Some of this data may be redundant, but the redundancy is intentional so that
we can double check what is really happening at the time of crash.
- heap/Heap.cpp:
(JSC::asInt):
(JSC::Heap::checkConn):
(JSC::Heap::changePhase):
- heap/Heap.h:
- runtime/VM.cpp:
(JSC::VM::nextID):
(JSC::VM::VM):
- runtime/VM.h:
(JSC::VM::numberOfIDs):
(JSC::VM::id const):
(JSC::VM::isEntered const):
Source/WTF:
- Rename STUFF_FOR_CRASH_REGISTERx to CRASH_GPRx. These are only used in locally in Assertions.cpp. There is little to no chance of a name collision, and the shorter names will be much easier to read and grok in the code.
- Added an additional 2 registers so that we can pass more info.
- Change the WTFCrashWithInfo() implementations to issue only a single asm statement so that the compiler does not inadvertently move values out of the CRASH_GPRs that we want them to be in.
- Use register targeting for local variables to get the compiler to put our desired values in specific registers. For how this works, see https://gcc.gnu.org/onlinedocs/gcc/Local-Register-Variables.html#Local-Register-Variables
"The only supported use for this feature is to specify registers for input and
output operands when calling Extended asm (see Extended Asm). This may be
necessary if the constraints for a particular machine don’t provide sufficient
control to select the desired register."
- Enhance ASSERT, ASSERT_UNUSED, RELEASE_ASSERT, RELEASE_ASSERT_NOT_REACHED to accept crash info arguments. We no longer need to use an if statement with a call to CRASH_WITH_INFO instead of these assertions. The only case not handled yet is one where we might want to dataLog some info before the crash. I'll add that functionality in a subsequent patch.
- Move UNREACHABLE_FOR_PLATFORM to the bottom of Assertions.h because it depends on the definition of RELEASE_ASSERT_NOT_REACHED, which now depends on the definiton of CRASH_WITH_INFO.
- wtf/Assertions.cpp:
(WTFCrashWithInfo):
- wtf/Assertions.h:
- 3:33 PM Changeset in webkit [234334] by
-
- 10 edits in trunk/Source
Fix thread-safety issues related to RealtimeMediaSource::audioSamplesAvailable()
https://bugs.webkit.org/show_bug.cgi?id=188097
<rdar://problem/42558823>
Reviewed by Eric Carlson.
Source/WebCore:
Fix thread-safety issues related to RealtimeMediaSource::audioSamplesAvailable(). RealtimeMediaSource::audioSamplesAvailable()
is called on a background thread but iterates over observers that may get destroyed concurrently on the main thread.
To address the issue:
- Introduce a Lock to protect m_observer accesses
- Copy observers to a Vector before iterating over them
- platform/mediastream/MediaStreamTrackPrivate.cpp:
(WebCore::MediaStreamTrackPrivate::forEachObserver const):
(WebCore::MediaStreamTrackPrivate::addObserver):
(WebCore::MediaStreamTrackPrivate::removeObserver):
(WebCore::MediaStreamTrackPrivate::setEnabled):
(WebCore::MediaStreamTrackPrivate::endTrack):
(WebCore::MediaStreamTrackPrivate::sourceStarted):
(WebCore::MediaStreamTrackPrivate::sourceStopped):
(WebCore::MediaStreamTrackPrivate::sourceMutedChanged):
(WebCore::MediaStreamTrackPrivate::sourceSettingsChanged):
(WebCore::MediaStreamTrackPrivate::videoSampleAvailable):
(WebCore::MediaStreamTrackPrivate::audioSamplesAvailable):
(WebCore::MediaStreamTrackPrivate::updateReadyState):
- platform/mediastream/MediaStreamTrackPrivate.h:
(WebCore::MediaStreamTrackPrivate::Observer::sampleBufferUpdated):
(WebCore::MediaStreamTrackPrivate::Observer::audioSamplesAvailable):
- platform/mediastream/RealtimeMediaSource.cpp:
(WebCore::RealtimeMediaSource::addObserver):
(WebCore::RealtimeMediaSource::removeObserver):
(WebCore::RealtimeMediaSource::forEachObserver const):
(WebCore::RealtimeMediaSource::notifyMutedObservers const):
(WebCore::RealtimeMediaSource::settingsDidChange):
(WebCore::RealtimeMediaSource::videoSampleAvailable):
(WebCore::RealtimeMediaSource::audioSamplesAvailable):
(WebCore::RealtimeMediaSource::start):
(WebCore::RealtimeMediaSource::requestStop):
(WebCore::RealtimeMediaSource::captureFailed):
- platform/mediastream/RealtimeMediaSource.h:
- platform/mediastream/mac/AudioTrackPrivateMediaStreamCocoa.cpp:
(WebCore::AudioTrackPrivateMediaStreamCocoa::audioSamplesAvailable):
- platform/mediastream/mac/RealtimeOutgoingAudioSourceCocoa.cpp:
- platform/mediastream/mac/WebAudioSourceProviderAVFObjC.mm:
Source/WebKit:
- UIProcess/Cocoa/UserMediaCaptureManagerProxy.cpp:
- 3:32 PM Changeset in webkit [234333] by
-
- 25 edits1 add in trunk/Source
Don't include WebPageProxy.h just for UndoOrRedo
https://bugs.webkit.org/show_bug.cgi?id=188086
Reviewed by Saam Barati.
Source/WebCore:
- platform/DragItem.h:
Source/WebKit:
- Shared/UndoOrRedo.h: Added.
- UIProcess/Cocoa/WebViewImpl.h:
- UIProcess/Cocoa/WebViewImpl.mm:
(WebKit::WebViewImpl::registerEditCommand):
- UIProcess/PageClient.h:
- UIProcess/WebEditCommandProxy.cpp:
(WebKit::WebEditCommandProxy::unapply):
(WebKit::WebEditCommandProxy::reapply):
- UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::registerEditCommandForUndo):
(WebKit::WebPageProxy::canUndoRedo):
(WebKit::WebPageProxy::executeUndoRedo):
(WebKit::WebPageProxy::canUndo):
(WebKit::WebPageProxy::canRedo):
- UIProcess/WebPageProxy.h:
- UIProcess/WebPageProxy.messages.in:
- UIProcess/ios/PageClientImplIOS.h:
- UIProcess/ios/PageClientImplIOS.mm:
(WebKit::PageClientImpl::registerEditCommand):
(WebKit::PageClientImpl::canUndoRedo):
(WebKit::PageClientImpl::executeUndoRedo):
- UIProcess/mac/PageClientImplMac.h:
- UIProcess/mac/PageClientImplMac.mm:
(WebKit::PageClientImpl::registerEditCommand):
(WebKit::PageClientImpl::canUndoRedo):
(WebKit::PageClientImpl::executeUndoRedo):
- UIProcess/mac/WebContextMenuProxyMac.mm:
- WebKit.xcodeproj/project.pbxproj:
- WebProcess/WebCoreSupport/WebEditorClient.cpp:
(WebKit::WebEditorClient::canUndo const):
(WebKit::WebEditorClient::canRedo const):
(WebKit::WebEditorClient::undo):
(WebKit::WebEditorClient::redo):
- 3:29 PM Changeset in webkit [234332] by
-
- 28 edits in trunk/Source
Make CompletionHandler more const correct
https://bugs.webkit.org/show_bug.cgi?id=186543
Reviewed by Saam Barati.
Source/WebCore:
- dom/messageports/MessagePortChannel.cpp:
(WebCore::MessagePortChannel::checkRemotePortForActivity):
- dom/messageports/MessagePortChannelProviderImpl.cpp:
(WebCore::MessagePortChannelProviderImpl::checkRemotePortForActivity):
- loader/DocumentLoader.cpp:
(WebCore::DocumentLoader::responseReceived):
- loader/FrameLoader.cpp:
(WebCore::FrameLoader::loadURL):
(WebCore::FrameLoader::loadWithDocumentLoader):
(WebCore::FrameLoader::loadPostRequest):
- platform/network/cocoa/WebCoreNSURLSession.mm:
(WebCore::WebCoreNSURLSessionDataTaskClient::redirectReceived):
- workers/service/server/RegistrationDatabase.cpp:
(WebCore::RegistrationDatabase::pushChanges):
(WebCore::RegistrationDatabase::clearAll):
- workers/service/server/SWServer.cpp:
(WebCore::SWServer::matchAll):
- workers/service/server/SWServer.h:
- workers/service/server/SWServerWorker.cpp:
(WebCore::SWServerWorker::matchAll):
- workers/service/server/SWServerWorker.h:
Source/WebKit:
- NetworkProcess/PingLoad.cpp:
(WebKit::PingLoad::willPerformHTTPRedirection):
- NetworkProcess/cache/CacheStorageEngine.cpp:
(WebKit::CacheStorage::Engine::clearAllCaches):
- UIProcess/Automation/SimulatedInputDispatcher.cpp:
(WebKit::SimulatedInputDispatcher::transitionInputSourceToState):
- UIProcess/Automation/WebAutomationSession.cpp:
(WebKit::WebAutomationSession::simulateMouseInteraction):
(WebKit::WebAutomationSession::simulateKeyboardInteraction):
- UIProcess/Cocoa/AutomationSessionClient.mm:
(WebKit::AutomationSessionClient::requestNewPageWithOptions):
(WebKit::AutomationSessionClient::requestSwitchToPage):
(WebKit::AutomationSessionClient::requestHideWindowOfPage):
(WebKit::AutomationSessionClient::requestRestoreWindowOfPage):
- UIProcess/Cocoa/UIDelegate.mm:
(WebKit::UIDelegate::ContextMenuClient::menuFromProposedMenu):
(WebKit::UIDelegate::UIClient::createNewPage):
(WebKit::UIDelegate::UIClient::runJavaScriptAlert):
(WebKit::UIDelegate::UIClient::runJavaScriptConfirm):
(WebKit::UIDelegate::UIClient::runJavaScriptPrompt):
(WebKit::UIDelegate::UIClient::requestStorageAccessConfirm):
(WebKit::UIDelegate::UIClient::decidePolicyForGeolocationPermissionRequest):
(WebKit::UIDelegate::UIClient::runBeforeUnloadConfirmPanel):
(WebKit::UIDelegate::UIClient::decidePolicyForNotificationPermissionRequest):
(WebKit::UIDelegate::UIClient::runOpenPanel):
- UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::createNewPage):
(WebKit::WebPageProxy::webGLPolicyForURL):
(WebKit::WebPageProxy::resolveWebGLPolicyForURL):
(WebKit::WebPageProxy::getWindowFrame):
- UIProcess/WebResourceLoadStatisticsStore.cpp:
(WebKit::WebResourceLoadStatisticsStore::hasStorageAccess):
(WebKit::WebResourceLoadStatisticsStore::requestStorageAccess):
(WebKit::WebResourceLoadStatisticsStore::scheduleClearInMemoryAndPersistent):
(WebKit::WebResourceLoadStatisticsStore::updateCookiePartitioning):
Source/WTF:
- wtf/CompletionHandler.h:
(WTF::CompletionHandler<Out):
Calling a CompletionHandler mutates it. Make the code reflect that.
- 3:27 PM Changeset in webkit [234331] by
-
- 6 edits1 add in trunk
[JSC] Record CoW status in ArrayProfile correctly
https://bugs.webkit.org/show_bug.cgi?id=187949
Reviewed by Saam Barati.
JSTests:
- stress/array-profile-should-record-copy-on-write.js: Added.
(shouldBe):
(test1):
(test2):
(test3):
Source/JavaScriptCore:
In this patch, we simplify asArrayModes: just shifting the value with IndexingMode.
This is important since our OSR exit compiler records m_observedArrayModes by calculating
ArrayModes with shifting. Since ArrayModes for CoW arrays are incorrectly calculated,
our OSR exit compiler records incorrect results in ArrayProfile. And it leads to
Array::Generic DFG nodes.
- bytecode/ArrayProfile.h:
(JSC::asArrayModes):
(JSC::ArrayProfile::ArrayProfile):
- dfg/DFGOSRExit.cpp:
(JSC::DFG::OSRExit::compileExit):
- ftl/FTLOSRExitCompiler.cpp:
(JSC::FTL::compileStub):
- runtime/IndexingType.h:
- 3:20 PM Changeset in webkit [234330] by
-
- 25 edits2 adds in trunk
Be more conservative with compositing layer creation when memory is low
https://bugs.webkit.org/show_bug.cgi?id=187866
rdar://problem/42366345
Reviewed by Zalan Bujtas.
Source/WebCore:
When process physical footprint is above a fraction of the jetsam limit, be more conservative in making
compositing layers. We avoid compositing for these situations:
- Layers with 3D transforms which are affine (like translateZ(0)).
- Layers with will-change
- Layers for canvases (other than WebGL/WebGPU)
We reuse some macOS code in MemoryPressureHandler() but choose different thresholds for iOS,
falling into "conservative mode" at 50% of jetsam limit, and "strict mode" at 65%.
Compositing chooses to be more conservative in either "conservative" or "strict" memory modes.
Plumb through a "compositingPolicyOverride" both so that on-device testing isn't
flakily falling into a different mode, and so that we can impose the conservative
mode for testing.
Test: compositing/layer-creation/compositing-policy.html
- page/Page.h:
(WebCore::Page::compositingPolicyOverride const):
(WebCore::Page::setCompositingPolicyOverride):
- platform/graphics/transforms/Matrix3DTransformOperation.cpp:
(WebCore::Matrix3DTransformOperation::isRepresentableIn2D const):
- platform/graphics/transforms/Matrix3DTransformOperation.h:
- platform/graphics/transforms/PerspectiveTransformOperation.h:
- platform/graphics/transforms/RotateTransformOperation.h:
- platform/graphics/transforms/ScaleTransformOperation.h:
- platform/graphics/transforms/TransformOperation.h:
(WebCore::TransformOperation::isRepresentableIn2D const):
- platform/graphics/transforms/TransformOperations.h:
(WebCore::TransformOperations::has3DOperation const):
(WebCore::TransformOperations::isRepresentableIn2D const):
- platform/graphics/transforms/TranslateTransformOperation.h:
- rendering/RenderLayerBacking.cpp:
(WebCore::RenderLayerBacking::updateGeometry):
- rendering/RenderLayerCompositor.cpp:
(WebCore::RenderLayerCompositor::cacheAcceleratedCompositingFlags):
(WebCore::RenderLayerCompositor::updateCompositingPolicy):
(WebCore::RenderLayerCompositor::updateCompositingLayers):
(WebCore::RenderLayerCompositor::requiresCompositingForTransform const):
(WebCore::RenderLayerCompositor::requiresCompositingForVideo const):
(WebCore::RenderLayerCompositor::requiresCompositingForCanvas const):
(WebCore::RenderLayerCompositor::requiresCompositingForPlugin const):
(WebCore::RenderLayerCompositor::requiresCompositingForWillChange const):
(WebCore::RenderLayerCompositor::needsFixedRootBackgroundLayer const):
(WebCore::operator<<):
- rendering/RenderLayerCompositor.h:
- testing/Internals.cpp:
(WebCore::Internals::setCompositingPolicyOverride):
(WebCore::Internals::compositingPolicyOverride const):
- testing/Internals.h:
- testing/Internals.idl:
Source/WebKit:
When process physical footprint is above a fraction of the jetsam limit, be more conservative in making
compositing layers. We avoid compositing for these situations:
- Layers with 3D transforms which are affine (like translateZ(0)).
- Layers with will-change
- Layers for canvases (other than WebGL/WebGPU)
We reuse some macOS code in MemoryPressureHandler() but choose different thresholds for iOS,
falling into "conservative mode" at 50% of jetsam limit, and "strict mode" at 65%.
Compositing chooses to be more conservative in either "conservative" or "strict" memory modes.
Plumb through a "compositingPolicyOverride" both so that on-device testing isn't
flakily falling into a different mode, and so that we can impose the conservative
mode for testing.
- WebProcess/InjectedBundle/API/c/WKBundlePage.cpp:
(WKBundlePageSetCompositingPolicyOverride):
- WebProcess/InjectedBundle/API/c/WKBundlePagePrivate.h:
Source/WTF:
When process physical footprint is above a fraction of the jetsam limit, be more conservative in making
compositing layers. We avoid compositing for these situations:
- Layers with 3D transforms which are affine (like translateZ(0)).
- Layers with will-change
- Layers for canvases (other than WebGL/WebGPU)
We reuse some macOS code in MemoryPressureHandler() but choose different thresholds for iOS,
falling into "conservative mode" at 50% of jetsam limit, and "strict mode" at 65%.
Compositing chooses to be more conservative in either "conservative" or "strict" memory modes.
Plumb through a "compositingPolicyOverride" both so that on-device testing isn't
flakily falling into a different mode, and so that we can impose the conservative
mode for testing.
- wtf/MemoryPressureHandler.cpp:
(WTF::thresholdForPolicy):
(WTF::MemoryPressureHandler::currentMemoryUsagePolicy):
- wtf/MemoryPressureHandler.h:
Tools:
When process physical footprint is above a fraction of the jetsam limit, be more conservative in making
compositing layers. We avoid compositing for these situations:
- Layers with 3D transforms which are affine (like translateZ(0)).
- Layers with will-change
- Layers for canvases (other than WebGL/WebGPU)
We reuse some macOS code in MemoryPressureHandler() but choose different thresholds for iOS,
falling into "conservative mode" at 50% of jetsam limit, and "strict mode" at 65%.
Compositing chooses to be more conservative in either "conservative" or "strict" memory modes.
Plumb through a "compositingPolicyOverride" both so that on-device testing isn't
flakily falling into a different mode, and so that we can impose the conservative
mode for testing.
- WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:
(WTR::InjectedBundlePage::prepare):
LayoutTests:
- compositing/layer-creation/compositing-policy-expected.txt: Added.
- compositing/layer-creation/compositing-policy.html: Added.
- 3:11 PM Changeset in webkit [234329] by
-
- 4 edits in trunk
[WK1] ASSERTION FAILED: renderer().repaintLayoutRects().m_repaintRect == renderer().clippedOverflowRectForRepaint(renderer().containerForRepaint()) in WebCore::RenderLayer::updateLayerPositionsAfterScroll
https://bugs.webkit.org/show_bug.cgi?id=188122
<rdar://problem/42584790>
Reviewed by Simon Fraser.
Source/WebCore:
When ScrollView's m_paintsEntireContents flag flips due to layer backing changes, the repaint area transitions from
visual to layout overflow. When this happens the cached repaint rects become invalid and they need to be recomputed.
Currently there's no mechanism to trigger repaint cache invalidation from ScrollView.
Skip assertion for now on WK1 (see webkit.org/b/188121)
- rendering/RenderLayer.cpp:
(WebCore::RenderLayer::updateLayerPositionsAfterScroll):
LayoutTests:
- platform/mac-wk1/TestExpectations:
- 2:20 PM Changeset in webkit [234328] by
-
- 2 edits in trunk/Source/bmalloc
Explicitly handle memlimit_active < 0
https://bugs.webkit.org/show_bug.cgi?id=188125
Reviewed by Mark Lam.
This may come up during development when someone wants the limit
to be "infinite".
- bmalloc/AvailableMemory.cpp:
(bmalloc::jetsamLimit):
- 1:50 PM Changeset in webkit [234327] by
-
- 5 edits in trunk/Source/WebKit
Add RefCounted CompletionHandler wrapping abstraction for sending policy decisions back to WebProcess
https://bugs.webkit.org/show_bug.cgi?id=188089
Reviewed by Geoffrey Garen.
This will be necessary for when I add an asynchronous parallel step to decidePolicyForNavigationAction.
We will want to wait for that asynchronous step for decidePolicyForNavigationActionSync but not for a client.
No change in behavior.
- UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::PolicyDecisionSender::create):
(WebKit::WebPageProxy::PolicyDecisionSender::operator()):
(WebKit::WebPageProxy::PolicyDecisionSender::PolicyDecisionSender):
(WebKit::WebPageProxy::receivedPolicyDecision):
(WebKit::WebPageProxy::decidePolicyForNavigationActionAsync):
(WebKit::WebPageProxy::decidePolicyForNavigationAction):
(WebKit::WebPageProxy::decidePolicyForNavigationActionSync):
(WebKit::WebPageProxy::decidePolicyForNewWindowAction):
(WebKit::WebPageProxy::decidePolicyForResponse):
- UIProcess/WebPageProxy.h:
- UIProcess/WebPageProxy.messages.in:
- WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
(WebKit::WebFrameLoaderClient::dispatchDecidePolicyForNavigationAction):
- 1:35 PM Changeset in webkit [234326] by
-
- 7 edits1 add in trunk/Source
Use SPI to compute the jetsam limit on iOS instead of hardcoding 840MB
https://bugs.webkit.org/show_bug.cgi?id=188091
<rdar://problem/42647697>
Reviewed by Simon Fraser.
Source/bmalloc:
We want bmalloc to dynamically adapt to the jetsam limit of the process
it's running in. WTF::ramSize() is based off bmalloc's availableMemory,
so it will now reflect the result of the real jetsam limit when we can
read it.
Reading the jetsam limit requires an entitlement, so this patch opts in
the WebContent/Storage/Network processes. We fall back to 840MB (the
old hard coded value) when the SPI call fails (e.g, when we're in a
process without the proper entitlement).
- bmalloc.xcodeproj/project.pbxproj:
- bmalloc/AvailableMemory.cpp:
(bmalloc::jetsamLimit):
(bmalloc::computeAvailableMemory):
- bmalloc/darwin/MemoryStatusSPI.h: Added.
Source/WebKit:
Give the Network/Storage/WebContent process the com.apple.private.memorystatus
entitlement. This allows them to read the process jetsam limit.
- Configurations/Databases-iOS.entitlements:
- Configurations/Network-iOS.entitlements:
- Configurations/WebContent-iOS.entitlements:
- 1:11 PM Changeset in webkit [234325] by
-
- 7 edits in trunk
Unreviewed GTK test gardening
Tools:
- TestWebKitAPI/glib/TestExpectations.json:
WebDriverTests:
- TestExpectations.json:
LayoutTests:
- TestExpectations:
- platform/gtk/TestExpectations:
- 11:46 AM Changeset in webkit [234324] by
-
- 7 edits in tags/Safari-606.1.32.1/Source/WebCore
Cherry-pick r234318. rdar://problem/42467016
[WIN] Crash when trying to access store pages
https://bugs.webkit.org/show_bug.cgi?id=188032
<rdar://problem/42467016>
Reviewed by Brent Fulgham.
The Windows implementation of GlyphBuffer has an additional member, m_offsets, which represents
an additional offset to the position to paint each glyph. It also has two add() functions, one
which appends to this vector, and one which doesn't. The one that doesn't append to the vector
should never be called on Windows (because Windows requires this vector to be full).
There were two situations where it was getting called:
1) Inside ComplexTextController
2) Inside display list playback
Windows shouldn't be using ComplexTextController because the Windows implementation of this
class isn't ready yet; instead it should be using UniscribeController. The display list playback
code should be used on Windows.
Rather than fix the function to append an offset, we actually don't need the m_offsets vector
in the first place. Instead, we can do it the same way that the Cocoa ports do it, which is to
bake the offsets into the glyph advances. This is possible because the GlyphBuffer doesn't need
to distinguish between layout advances and paint advances, so we can bake them together and
just put paint advances in the GlyphBuffer. This should be a small (probably within-the-noise)
performance and memory improvement.
- platform/graphics/ComplexTextController.cpp: (WebCore::ComplexTextController::ComplexTextController): Make sure that ComplexTextController isn't used on Windows.
- platform/graphics/FontCascade.cpp: (WebCore::FontCascade::widthOfTextRange const): Switch from ComplexTextController to UniscribeController on Windows. (WebCore::FontCascade::drawGlyphBuffer const): After deleting the m_offsets vector, there's no reason to consult it when drawing.
- platform/graphics/GlyphBuffer.h: Remove m_offsets (WebCore::GlyphBuffer::clear): (WebCore::GlyphBuffer::advanceAt const): (WebCore::GlyphBuffer::add): (WebCore::GlyphBuffer::expandLastAdvance): (WebCore::GlyphBuffer::shrink): (WebCore::GlyphBuffer::swap): (WebCore::GlyphBuffer::offsetAt const): Deleted.
- platform/graphics/win/FontCGWin.cpp: (WebCore::FontCascade::drawGlyphs): After deleting the m_offsets vector, there's no reason to consult it when drawing.
- platform/graphics/win/FontCascadeDirect2D.cpp: (WebCore::FontCascade::drawGlyphs): Ditto.
- platform/graphics/win/UniscribeController.cpp: (WebCore::UniscribeController::shapeAndPlaceItem): Bake in the offsets into the glyph advances.
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@234318 268f45cc-cd09-0410-ab3c-d52691b4dbfc
- 11:44 AM Changeset in webkit [234323] by
-
- 7 edits in tags/Safari-606.1.32.1/Source
Versioning.
- 11:39 AM Changeset in webkit [234322] by
-
- 7 edits in branches/safari-606-branch/Source/WebCore
Cherry-pick r234318. rdar://problem/42467016
[WIN] Crash when trying to access store pages
https://bugs.webkit.org/show_bug.cgi?id=188032
<rdar://problem/42467016>
Reviewed by Brent Fulgham.
The Windows implementation of GlyphBuffer has an additional member, m_offsets, which represents
an additional offset to the position to paint each glyph. It also has two add() functions, one
which appends to this vector, and one which doesn't. The one that doesn't append to the vector
should never be called on Windows (because Windows requires this vector to be full).
There were two situations where it was getting called:
1) Inside ComplexTextController
2) Inside display list playback
Windows shouldn't be using ComplexTextController because the Windows implementation of this
class isn't ready yet; instead it should be using UniscribeController. The display list playback
code should be used on Windows.
Rather than fix the function to append an offset, we actually don't need the m_offsets vector
in the first place. Instead, we can do it the same way that the Cocoa ports do it, which is to
bake the offsets into the glyph advances. This is possible because the GlyphBuffer doesn't need
to distinguish between layout advances and paint advances, so we can bake them together and
just put paint advances in the GlyphBuffer. This should be a small (probably within-the-noise)
performance and memory improvement.
- platform/graphics/ComplexTextController.cpp: (WebCore::ComplexTextController::ComplexTextController): Make sure that ComplexTextController isn't used on Windows.
- platform/graphics/FontCascade.cpp: (WebCore::FontCascade::widthOfTextRange const): Switch from ComplexTextController to UniscribeController on Windows. (WebCore::FontCascade::drawGlyphBuffer const): After deleting the m_offsets vector, there's no reason to consult it when drawing.
- platform/graphics/GlyphBuffer.h: Remove m_offsets (WebCore::GlyphBuffer::clear): (WebCore::GlyphBuffer::advanceAt const): (WebCore::GlyphBuffer::add): (WebCore::GlyphBuffer::expandLastAdvance): (WebCore::GlyphBuffer::shrink): (WebCore::GlyphBuffer::swap): (WebCore::GlyphBuffer::offsetAt const): Deleted.
- platform/graphics/win/FontCGWin.cpp: (WebCore::FontCascade::drawGlyphs): After deleting the m_offsets vector, there's no reason to consult it when drawing.
- platform/graphics/win/FontCascadeDirect2D.cpp: (WebCore::FontCascade::drawGlyphs): Ditto.
- platform/graphics/win/UniscribeController.cpp: (WebCore::UniscribeController::shapeAndPlaceItem): Bake in the offsets into the glyph advances.
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@234318 268f45cc-cd09-0410-ab3c-d52691b4dbfc
- 11:31 AM Changeset in webkit [234321] by
-
- 2 edits in trunk/Tools
Fix API tests after r234314
https://bugs.webkit.org/show_bug.cgi?id=188077
Make API tests use new delegate method.
- TestWebKitAPI/Tests/WebKitCocoa/WebsitePolicies.mm:
(-[WebsitePoliciesWebsiteDataStoreDelegate _webView:decidePolicyForNavigationAction:userInfo:decisionHandler:]):
(-[WebsitePoliciesWebsiteDataStoreDelegate _webView:decidePolicyForNavigationAction:decisionHandler:]): Deleted.
- 11:30 AM Changeset in webkit [234320] by
-
- 2 edits in trunk/Tools
Fix API tests after r234314
https://bugs.webkit.org/show_bug.cgi?id=188077
Make API tests use new delegate method.
- TestWebKitAPI/Tests/WebKitCocoa/WebsitePolicies.mm:
(-[ContentBlockingWebsitePoliciesDelegate _webView:decidePolicyForNavigationAction:userInfo:decisionHandler:]):
(-[AutoplayPoliciesDelegate _webView:decidePolicyForNavigationAction:userInfo:decisionHandler:]):
(-[AsyncAutoplayPoliciesDelegate _webView:decidePolicyForNavigationAction:userInfo:decisionHandler:]):
(-[CustomHeaderFieldsDelegate _webView:decidePolicyForNavigationAction:userInfo:decisionHandler:]):
(-[PopUpPoliciesDelegate _webView:decidePolicyForNavigationAction:userInfo:decisionHandler:]):
(-[ContentBlockingWebsitePoliciesDelegate _webView:decidePolicyForNavigationAction:decisionHandler:]): Deleted.
(-[AutoplayPoliciesDelegate _webView:decidePolicyForNavigationAction:decisionHandler:]): Deleted.
(-[AsyncAutoplayPoliciesDelegate _webView:decidePolicyForNavigationAction:decisionHandler:]): Deleted.
(-[CustomHeaderFieldsDelegate _webView:decidePolicyForNavigationAction:decisionHandler:]): Deleted.
(-[PopUpPoliciesDelegate _webView:decidePolicyForNavigationAction:decisionHandler:]): Deleted.
- 11:27 AM Changeset in webkit [234319] by
-
- 1 copy in tags/Safari-606.1.32.1
New tag.
- 11:21 AM Changeset in webkit [234318] by
-
- 7 edits in trunk/Source/WebCore
[WIN] Crash when trying to access store pages
https://bugs.webkit.org/show_bug.cgi?id=188032
<rdar://problem/42467016>
Reviewed by Brent Fulgham.
The Windows implementation of GlyphBuffer has an additional member, m_offsets, which represents
an additional offset to the position to paint each glyph. It also has two add() functions, one
which appends to this vector, and one which doesn't. The one that doesn't append to the vector
should never be called on Windows (because Windows requires this vector to be full).
There were two situations where it was getting called:
1) Inside ComplexTextController
2) Inside display list playback
Windows shouldn't be using ComplexTextController because the Windows implementation of this
class isn't ready yet; instead it should be using UniscribeController. The display list playback
code should be used on Windows.
Rather than fix the function to append an offset, we actually don't need the m_offsets vector
in the first place. Instead, we can do it the same way that the Cocoa ports do it, which is to
bake the offsets into the glyph advances. This is possible because the GlyphBuffer doesn't need
to distinguish between layout advances and paint advances, so we can bake them together and
just put paint advances in the GlyphBuffer. This should be a small (probably within-the-noise)
performance and memory improvement.
- platform/graphics/ComplexTextController.cpp:
(WebCore::ComplexTextController::ComplexTextController): Make sure that ComplexTextController
isn't used on Windows.
- platform/graphics/FontCascade.cpp:
(WebCore::FontCascade::widthOfTextRange const): Switch from ComplexTextController to
UniscribeController on Windows.
(WebCore::FontCascade::drawGlyphBuffer const): After deleting the m_offsets vector, there's
no reason to consult it when drawing.
- platform/graphics/GlyphBuffer.h: Remove m_offsets
(WebCore::GlyphBuffer::clear):
(WebCore::GlyphBuffer::advanceAt const):
(WebCore::GlyphBuffer::add):
(WebCore::GlyphBuffer::expandLastAdvance):
(WebCore::GlyphBuffer::shrink):
(WebCore::GlyphBuffer::swap):
(WebCore::GlyphBuffer::offsetAt const): Deleted.
- platform/graphics/win/FontCGWin.cpp:
(WebCore::FontCascade::drawGlyphs): After deleting the m_offsets vector, there's no reason
to consult it when drawing.
- platform/graphics/win/FontCascadeDirect2D.cpp:
(WebCore::FontCascade::drawGlyphs): Ditto.
- platform/graphics/win/UniscribeController.cpp:
(WebCore::UniscribeController::shapeAndPlaceItem): Bake in the offsets into the glyph advances.
- 11:19 AM Changeset in webkit [234317] by
-
- 4 edits in trunk
[Curl] Crash on synchronous request via ResourceHandle.
https://bugs.webkit.org/show_bug.cgi?id=188033
Reviewed by Alex Christensen.
Source/WebCore:
The timing of instantiation of delegate was wrong. Move it inside
delegategetter().
This bug was introduced at r228577.
Test: http/tests/xmlhttprequest/simple-sync.html
- platform/network/curl/ResourceHandleCurl.cpp:
(WebCore::ResourceHandle::start):
(WebCore::ResourceHandle::delegate):
LayoutTests:
bug/188033 Crash sync xmlhttprequest
- platform/wincairo/TestExpectations:
- 11:02 AM Changeset in webkit [234316] by
-
- 2 edits in trunk/LayoutTests
Layout Test tiled-drawing/scrolling/fixed/four-bars-zoomed.html is flaky text failure.
https://bugs.webkit.org/show_bug.cgi?id=188096
Unreviewed test gardening, marked test as flaky.
- platform/mac-wk2/TestExpectations:
- 11:02 AM Changeset in webkit [234315] by
-
- 2 edits in trunk/Source
Unreviewed, rolling out r233461.
assertions triggered on ios11 Debug wk2
Reverted changeset:
"[iOS] Add assert to catch improper use of WebCore::Timer in
UI Process"
https://bugs.webkit.org/show_bug.cgi?id=185330
https://trac.webkit.org/changeset/233461
- 10:03 AM Changeset in webkit [234314] by
-
- 4 edits in trunk/Source/WebKit
Remove unused WKNavigationDelegatePrivate decidePolicyForNavigationAction SPI
https://bugs.webkit.org/show_bug.cgi?id=188077
Patch by Alex Christensen <achristensen@webkit.org> on 2018-07-27
Reviewed by Darin Adler.
The one client has moved to the version with userInfo, and it never used the SPI
on old operating systems.
- UIProcess/API/Cocoa/WKNavigationDelegatePrivate.h:
- UIProcess/Cocoa/NavigationState.h:
- UIProcess/Cocoa/NavigationState.mm:
(WebKit::NavigationState::setNavigationDelegate):
(WebKit::NavigationState::NavigationClient::decidePolicyForNavigationAction):
- 10:02 AM Changeset in webkit [234313] by
-
- 6 edits in trunk/Source/WebKit
Begin making WKWebViewConfiguration a wrapper around an API::PageConfiguration
https://bugs.webkit.org/show_bug.cgi?id=188030
Reviewed by Sam Weinig.
Eventually WKWebViewConfiguration should become just a API::ObjectStorage<API::PageConfiguration>.
The transition includes adding fields that exist in WKWebViewConfiguration to API::PageConfiguration
and making WKWebViewConfiguration's getters and setters just call API::PageConfiguration's corresponding methods
instead of having an ivar for each value then copying it to an API::PageConfiguration we construct in
the WKWebView constructor. To transition incrementally, I've added a RefPtr<API::PageConfiguration> ivar to
WKWebViewConfiguration and moved a few ivars to use the values stored in that API::PageConfiguration instead.
I've arbitrarily chosen _treatsSHA1SignedCertificatesAsInsecure and _urlSchemeHandlers as the first two
properties to transition, and I'll continue transitioning each ivar in small, easy-to-review bunches.
- UIProcess/API/APIPageConfiguration.cpp:
(API::PageConfiguration::copy const):
(API::PageConfiguration::urlSchemeHandlerForURLScheme):
(API::PageConfiguration::setURLSchemeHandlerForURLScheme):
- UIProcess/API/APIPageConfiguration.h:
(API::PageConfiguration::urlSchemeHandlers):
- UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView _initializeWithConfiguration:]):
- UIProcess/API/Cocoa/WKWebViewConfiguration.mm:
(-[WKWebViewConfiguration init]):
(-[WKWebViewConfiguration copyWithZone:]):
(-[WKWebViewConfiguration setURLSchemeHandler:forURLScheme:]):
(-[WKWebViewConfiguration urlSchemeHandlerForURLScheme:]):
(-[WKWebViewConfiguration copyPageConfiguration]):
(-[WKWebViewConfiguration _treatsSHA1SignedCertificatesAsInsecure]):
(-[WKWebViewConfiguration _setTreatsSHA1SignedCertificatesAsInsecure:]):
(-[WKWebViewConfiguration _urlSchemeHandlers]): Deleted.
- UIProcess/API/Cocoa/WKWebViewConfigurationInternal.h:
- 9:58 AM Changeset in webkit [234312] by
-
- 10 edits in trunk/Source/WebCore
[Media] Avoid unnecessarily constructing *TrackList objects
https://bugs.webkit.org/show_bug.cgi?id=188094
Reviewed by Eric Carlson.
Avoid unnecessarily constructing *TrackList objects as this is preventing us from making them
ActiveDOMObjects.
- Modules/mediasource/MediaSource.cpp:
(WebCore::MediaSource::removeSourceBuffer):
- Modules/mediasource/SourceBuffer.cpp:
(WebCore::SourceBuffer::sourceBufferPrivateDidReceiveInitializationSegment):
- html/HTMLMediaElement.cpp:
(WebCore::HTMLMediaElement::addAudioTrack):
(WebCore::HTMLMediaElement::addTextTrack):
(WebCore::HTMLMediaElement::addVideoTrack):
(WebCore::HTMLMediaElement::ensureAudioTracks):
(WebCore::HTMLMediaElement::ensureTextTracks):
(WebCore::HTMLMediaElement::ensureVideoTracks):
(WebCore::HTMLMediaElement::setSelectedTextTrack):
(WebCore::HTMLMediaElement::audioTracks): Deleted.
(WebCore::HTMLMediaElement::textTracks): Deleted.
(WebCore::HTMLMediaElement::videoTracks): Deleted.
- html/HTMLMediaElement.h:
(WebCore::HTMLMediaElement::audioTracks const):
(WebCore::HTMLMediaElement::textTracks const):
(WebCore::HTMLMediaElement::videoTracks const):
- html/HTMLMediaElement.idl:
- html/shadow/MediaControlElements.cpp:
(WebCore::MediaControlClosedCaptionsTrackListElement::updateDisplay):
(WebCore::MediaControlClosedCaptionsTrackListElement::rebuildTrackListMenu):
(WebCore::MediaControlTextTrackContainerElement::updateTextStrokeStyle):
- html/track/TextTrack.cpp:
(WebCore::TextTrack::setKind):
(WebCore::TextTrack::trackIndex):
(WebCore::TextTrack::trackIndexRelativeToRenderedTracks):
(WebCore::TextTrack::setLanguage):
- html/track/VideoTrack.cpp:
(WebCore::VideoTrack::setKind):
(WebCore::VideoTrack::setLanguage):
- platform/cocoa/PlaybackSessionModelMediaElement.mm:
(WebCore::PlaybackSessionModelMediaElement::setMediaElement):
(WebCore::PlaybackSessionModelMediaElement::updateMediaSelectionOptions):
- 9:50 AM Changeset in webkit [234311] by
-
- 4 edits in trunk
[Curl] Set correct source info to ResourceResponse.
https://bugs.webkit.org/show_bug.cgi?id=188069
Reviewed by Fujii Hironori.
Source/WebCore:
ResourceResponseBase::Source::Network must be set by each ports. Curl port
didn't set this.
Test: http/tests/cache/disk-cache/disk-cache-302-status-code.html
- platform/network/curl/ResourceResponseCurl.cpp:
(WebCore::ResourceResponse::ResourceResponse):
LayoutTests:
- platform/wincairo/TestExpectations:
- http/tests/cache/disk-cache/disk-cache-302-status-code.html: Pass
- 9:28 AM Changeset in webkit [234310] by
-
- 3 edits in trunk/Source/WebKit
Loading a file URL and then issuing a reload right away causes the load to fail due to sandboxing
https://bugs.webkit.org/show_bug.cgi?id=188078
<rdar://problem/42562493>
Unreviewed, follow-up fix after r234290 to address assertion hits on the bots. Make the fix
specific to reloads as we know the existing provisional sandbox extension is for the same
URL then.
- WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::reload):
(WebKit::WebPage::SandboxExtensionTracker::beginLoad):
(WebKit::WebPage::SandboxExtensionTracker::beginReload):
- WebProcess/WebPage/WebPage.h:
- 3:46 AM Changeset in webkit [234309] by
-
- 2 edits in trunk/LayoutTests
[WinCairo] Unreviewed test gardening
- platform/wincairo/TestExpectations:
Enable test cases under http/tests/css.