Timeline
Feb 3, 2019:
- 11:49 PM Changeset in webkit [240916] by
-
- 16 edits in trunk
[iOS] Tiles not created in large scrollable iframes
https://bugs.webkit.org/show_bug.cgi?id=193665
Reviewed by Simon Fraser.
Source/WebCore:
We are not syncing scroll position back to the graphics layer tree correctly.
Test by Frédéric Wang.
- page/scrolling/AsyncScrollingCoordinator.cpp:
(WebCore::AsyncScrollingCoordinator::frameViewRootLayerDidChange):
(WebCore::AsyncScrollingCoordinator::reconcileScrollingState):
(WebCore::AsyncScrollingCoordinator::reconcileScrollPosition):
Factor setting and syncing scrolling layer positions into a function.
Use bounds.origin scrolling mechanic when scrollContainerLayer is present.
(WebCore::AsyncScrollingCoordinator::scrollableAreaScrollbarLayerDidChange):
(WebCore::AsyncScrollingCoordinator::setSynchronousScrollingReasons):
(WebCore::AsyncScrollingCoordinator::updateScrollLayerPosition): Deleted.
- page/scrolling/AsyncScrollingCoordinator.h:
- page/scrolling/ScrollingCoordinator.cpp:
(WebCore::ScrollingCoordinator::scrollContainerLayerForFrameView):
(WebCore::ScrollingCoordinator::scrolledContentsLayerForFrameView):
(WebCore::ScrollingCoordinator::scrollLayerForFrameView): Deleted.
- page/scrolling/ScrollingCoordinator.h:
- rendering/RenderLayerCompositor.cpp:
Rename scrollLayer to scrolledContentsLayer according to out preferred naming scheme and use it in that role only.
Add scrollContainerLayer as a separate layer. It is only constructed when using async scrolling on iOS.
(WebCore::RenderLayerCompositor::~RenderLayerCompositor):
(WebCore::RenderLayerCompositor::customPositionForVisibleRectComputation const):
(WebCore::RenderLayerCompositor::visibleRectForLayerFlushing const):
(WebCore::RenderLayerCompositor::didChangePlatformLayerForLayer):
(WebCore::RenderLayerCompositor::frameViewDidChangeSize):
(WebCore::RenderLayerCompositor::updateScrollLayerPosition):
(WebCore::RenderLayerCompositor::frameViewDidScroll):
(WebCore::RenderLayerCompositor::updateLayerForTopOverhangArea):
(WebCore::RenderLayerCompositor::updateLayerForBottomOverhangArea):
(WebCore::RenderLayerCompositor::updateLayerForHeader):
(WebCore::RenderLayerCompositor::updateLayerForFooter):
(WebCore::RenderLayerCompositor::updateOverflowControlsLayers):
(WebCore::RenderLayerCompositor::ensureRootLayer):
(WebCore::RenderLayerCompositor::destroyRootLayer):
(WebCore::RenderLayerCompositor::updateScrollingNodeForScrollingRole):
- rendering/RenderLayerCompositor.h:
Source/WebKit:
- UIProcess/RemoteLayerTree/ios/ScrollingTreeFrameScrollingNodeRemoteIOS.mm:
(WebKit::ScrollingTreeFrameScrollingNodeRemoteIOS::commitStateBeforeChildren):
- UIProcess/RemoteLayerTree/ios/ScrollingTreeScrollingNodeDelegateIOS.mm:
(WebKit::ScrollingTreeScrollingNodeDelegateIOS::commitStateBeforeChildren):
We now use scrollContainerLayer consistently so remove the special cases.
LayoutTests:
Test by Frédéric Wang.
- fast/scrolling/ios/scroll-iframe-expected.html:
- fast/scrolling/ios/scroll-iframe.html:
- platform/ios-wk2/compositing/iframes/scrolling-iframe-expected.txt:
- platform/ios-wk2/compositing/tiling/tiled-drawing-async-frame-scrolling-expected.txt:
- platform/ios-wk2/scrollingcoordinator/scrolling-tree/fixed-inside-frame-expected.txt:
- 11:13 PM Changeset in webkit [240915] by
-
- 7 edits in trunk/Source/JavaScriptCore
[JSC] UnlinkedMetadataTable assumes that MetadataTable is destroyed before it is destructed, but order of destruction of JS heap cells are not guaranteed
https://bugs.webkit.org/show_bug.cgi?id=194031
Reviewed by Saam Barati.
UnlinkedMetadataTable assumes that MetadataTable linked against this UnlinkedMetadataTable is already destroyed when UnlinkedMetadataTable is destroyed.
This means that UnlinkedCodeBlock is destroyed after all the linked CodeBlocks are destroyed. But this assumption is not valid since GC's finalizer
sweeps objects without considering the dependencies among swept objects. UnlinkedMetadataTable can be destroyed even before linked MetadataTable is
destroyed if UnlinkedCodeBlock is destroyed before linked CodeBlock is destroyed.
To make the above assumption valid, we make UnlinkedMetadataTable RefCounted object, and make MetadataTable hold the strong ref to UnlinkedMetadataTable.
This ensures that UnlinkedMetadataTable is destroyed after all the linked MetadataTables are destroyed.
- bytecode/MetadataTable.cpp:
(JSC::MetadataTable::MetadataTable):
(JSC::MetadataTable::~MetadataTable):
- bytecode/UnlinkedCodeBlock.cpp:
(JSC::UnlinkedCodeBlock::UnlinkedCodeBlock):
(JSC::UnlinkedCodeBlock::visitChildren):
(JSC::UnlinkedCodeBlock::estimatedSize):
(JSC::UnlinkedCodeBlock::setInstructions):
- bytecode/UnlinkedCodeBlock.h:
(JSC::UnlinkedCodeBlock::metadata):
(JSC::UnlinkedCodeBlock::metadataSizeInBytes):
- bytecode/UnlinkedMetadataTable.h:
(JSC::UnlinkedMetadataTable::create):
- bytecode/UnlinkedMetadataTableInlines.h:
(JSC::UnlinkedMetadataTable::UnlinkedMetadataTable):
- runtime/CachedTypes.cpp:
(JSC::CachedMetadataTable::decode const):
(JSC::CachedCodeBlock::metadata const):
(JSC::UnlinkedCodeBlock::UnlinkedCodeBlock):
(JSC::CachedCodeBlock<CodeBlockType>::decode const):
(JSC::CachedCodeBlock<CodeBlockType>::encode):
- 6:15 PM Changeset in webkit [240914] by
-
- 2 edits in trunk/Source/WebKit
[curl] [WebKit] Assertion failures of missing networkStorageSession for storage/indexeddb tests
https://bugs.webkit.org/show_bug.cgi?id=194141
Reviewed by Ross Kirsling.
Implemented WebKit::NetworkProcess::switchToNewTestingSession and
WebKit::NetworkProcess::ensureSession for curl port.
- NetworkProcess/NetworkProcess.cpp:
(WebKit::NetworkProcess::switchToNewTestingSession):
(WebKit::NetworkProcess::ensureSession):
- 6:11 PM Changeset in webkit [240913] by
-
- 2 edits in trunk/Tools
[Win] WebKitTestRunners is failing to create the IndexedDB directory.
https://bugs.webkit.org/show_bug.cgi?id=194142
Reviewed by Ross Kirsling.
There three 'separator' variables in TestController.cpp. Renamed
it 'pathSeparator', and unified them.
- WebKitTestRunner/TestController.cpp:
(WTR::TestController::generateContextConfiguration const):
(WTR::createTestURL):
(WTR::TestController::platformAdjustContext):
- 5:48 PM Changeset in webkit [240912] by
-
- 19 edits in trunk
Make setNeedsLayout on the root more explicitly about triggering its side-effects
https://bugs.webkit.org/show_bug.cgi?id=194198
Reviewed by Antti Koivisto.
Source/WebCore:
Calling setNeedsLayout() on the FrameView or RenderView is an odd concept; the render tree
generally manages its own dirty state.
Most callers of setNeedsLayout() on the root are really trying to trigger the side-effects
of layout, like compositing updates, which are required when view configuration state, like
headers, footers and transparency, change. These dependencies are currently implicit and
poorly defined.
Renaming "setNeedsLayout" on FrameView is a step towards being more explicit about pure
rendering updates, vs updates of downstream data strutures like compositing. It's now called
setNeedsLayoutAfterViewConfigurationChange(). In addition, expose
setNeedsCompositingConfigurationUpdate() and setNeedsCompositingGeometryUpdate() so callers
can trigger the appropriate types of compositing updates on the root layer.
In addition, FrameViewLayoutContext::setNeedsLayoutAfterViewConfigurationChange() schedules a
layout. Withtout this, some callers would dirty the RenderView's layout but rely on some
other trigger to make the layout happen.
This cleanup was prompted by noticing that FrameView::setHeaderHeight() dirtied layout
but never scheduled it, making banner insertion in MiniBrowser unreliable.
This patch also removes the aliasing of headerHeight/footerHeight between Page and
FrameView. Banners are a property of Page, so FrameView fetches the banner heights
from Page.
- page/FrameView.cpp:
(WebCore::FrameView::headerHeight const):
(WebCore::FrameView::footerHeight const):
(WebCore::FrameView::availableContentSizeChanged):
(WebCore::FrameView::setNeedsLayoutAfterViewConfigurationChange):
(WebCore::FrameView::setNeedsCompositingConfigurationUpdate):
(WebCore::FrameView::setNeedsCompositingGeometryUpdate):
(WebCore::FrameView::scheduleSelectionUpdate):
(WebCore::FrameView::setTransparent):
(WebCore::FrameView::setBaseBackgroundColor):
(WebCore::FrameView::setAutoSizeFixedMinimumHeight):
(WebCore::FrameView::enableAutoSizeMode):
(WebCore::FrameView::setHeaderHeight): Deleted.
(WebCore::FrameView::setFooterHeight): Deleted.
(WebCore::FrameView::setNeedsLayout): Deleted.
- page/FrameView.h:
- page/FrameViewLayoutContext.cpp:
(WebCore::FrameViewLayoutContext::setNeedsLayoutAfterViewConfigurationChange):
(WebCore::FrameViewLayoutContext::setNeedsLayout): Deleted.
- page/FrameViewLayoutContext.h:
- page/Page.cpp:
(WebCore::Page::setPageScaleFactor):
(WebCore::Page::setHeaderHeight):
(WebCore::Page::setFooterHeight):
(WebCore::Page::addHeaderWithHeight): Deleted.
(WebCore::Page::addFooterWithHeight): Deleted.
- page/Page.h:
- rendering/RenderLayerCompositor.cpp:
(WebCore::RenderLayerCompositor::updateBacking):
- testing/Internals.cpp:
(WebCore::Internals::resetToConsistentState):
(WebCore::Internals::setHeaderHeight):
(WebCore::Internals::setFooterHeight):
Source/WebKit:
Call the newly named functions.
- WebProcess/Plugins/PDF/PDFPlugin.mm:
(WebKit::PDFPlugin::updateScrollbars):
- WebProcess/Plugins/PluginView.cpp:
(WebKit::PluginView::didInitializePlugin):
- WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::setHeaderBannerHeightForTesting):
(WebKit::WebPage::setFooterBannerHeightForTesting):
- WebProcess/WebPage/mac/PageBannerMac.mm:
(WebKit::PageBanner::addToPage):
(WebKit::PageBanner::detachFromPage):
(WebKit::PageBanner::hide):
Source/WebKitLegacy/mac:
Call the newly named functions.
- WebView/WebFrame.mm:
(-[WebFrame setNeedsLayout]):
- WebView/WebHTMLView.mm:
(-[WebHTMLView setNeedsLayout:]):
Tools:
No need to set the banner heights on navigation now, since Page stores them.
- MiniBrowser/mac/WK2BrowserWindowController.m:
(-[WK2BrowserWindowController webView:didFinishNavigation:]):
- 4:44 PM Changeset in webkit [240911] by
-
- 7 edits4 adds in trunk
Parse and handle Ad Click Attribution attributes in HTMLAnchorElement::handleClick()
https://bugs.webkit.org/show_bug.cgi?id=194104
<rdar://problem/47649991>
Reviewed by Chris Dumez, Daniel Bates, and Darin Adler.
Source/WebCore:
Test: http/tests/adClickAttribution/anchor-tag-attributes-validation.html
This patch adds parsing and validation of the two new Ad Click Attribution
attributes in anchor elements: adcampaignid and addestination. The data is
not yet forwarded into the loader.
- html/HTMLAnchorElement.cpp:
(WebCore::HTMLAnchorElement::parseAdClickAttribution const):
(WebCore::HTMLAnchorElement::handleClick):
Now calls HTMLAnchorElement::parseAdClickAttribution().
- html/HTMLAnchorElement.h:
- loader/AdClickAttribution.h:
Made WebCore::AdClickAttribution copyable since it's needed to have it be
WTF::Optional. Also made AdClickAttribution::MaxEntropy public. Changed
numeric types from unsigned short to uint32_t.
(WebCore::AdClickAttribution::Campaign::isValid const):
(WebCore::AdClickAttribution::Conversion::isValid const):
Tools:
- TestWebKitAPI/Tests/WebCore/AdClickAttribution.cpp:
(TestWebKitAPI::TEST):
Changed numeric types from unsigned short to uint32_t.
LayoutTests:
This test case makes sure invalid data triggers console warnings.
- http/tests/adClickAttribution/anchor-tag-attributes-validation-expected.txt: Added.
- http/tests/adClickAttribution/anchor-tag-attributes-validation.html: Added.
- platform/ios-wk2/http/tests/adClickAttribution/anchor-tag-attributes-validation-expected.txt: Added.
Console line numbers are not emitted when running iOS tests so this -expected.txt file doesn't have them.
- 3:43 PM Changeset in webkit [240910] by
-
- 7 edits in branches/safari-607-branch/Source
Versioning.
- 2:48 PM Changeset in webkit [240909] by
-
- 29 edits in trunk/Source
Validate navigation policy decisions to avoid crashes in continueLoadAfterNavigationPolicy
https://bugs.webkit.org/show_bug.cgi?id=194189
Reviewed by Geoffrey Garen.
Source/WebCore:
Introduced PolicyCheckIdentifier to pair each navigation policy check request with a decision,
and deployed it in PolicyChecker. The identifier is passed from WebContent process to UI process
in WebKit2, and passed it back with the policy decision.
Because PolicyCheckIdentifier embeds the process identifier from which a navigation policy is checked,
we would be able to detect when UI process had sent the decision to a wrong WebContent process.
This patch also adds release assertions to make sure history().provisionalItem() is set whenever
we're requesting a navigation policy check.
These code changes should either:
- Fix crashes in FrameLoader::continueLoadAfterNavigationPolicy where isBackForwardLoadType would return true yet history().provisionalItem() is null.
- Detect a bug that UI process can send a navigation policy decision to a wrong WebContent process.
- Rule out the possibility that (2) exists.
- loader/DocumentLoader.cpp:
(WebCore::DocumentLoader::willSendRequest):
(WebCore::DocumentLoader::responseReceived):
- loader/EmptyClients.cpp:
(WebCore::EmptyFrameLoaderClient::dispatchDecidePolicyForNewWindowAction):
(WebCore::EmptyFrameLoaderClient::dispatchDecidePolicyForNavigationAction):
- loader/EmptyFrameLoaderClient.h:
- loader/FrameLoader.cpp:
(WebCore::FrameLoader::checkContentPolicy):
(WebCore::FrameLoader::loadURL):
(WebCore::FrameLoader::load):
(WebCore::FrameLoader::loadWithDocumentLoader):
(WebCore::FrameLoader::loadPostRequest):
- loader/FrameLoader.h:
- loader/FrameLoaderClient.h:
- loader/FrameLoaderTypes.h:
(WebCore::PolicyCheckIdentifier): Added.
(WebCore::PolicyCheckIdentifier::operator== const): Added.
(WebCore::PolicyCheckIdentifier::PolicyCheckIdentifier): Added.
(WebCore::PolicyCheckIdentifier::encode const): Added.
(WebCore::PolicyCheckIdentifier::decode): Added.
- loader/PolicyChecker.cpp:
(WebCore::PolicyCheckIdentifier::generate):
(WebCore::PolicyCheckIdentifier::isValidFor): Returns true if the identifer matches. Also release asserts
that the process ID is same, and that m_check is always not zero (meaning it's a generated value).
The failure of these release assertions would indicate that there is a bug in UI process, which results in
a policy decision response being sent to a wrong Web process.
(WebCore::PolicyChecker::checkNavigationPolicy): Exit early if isValidFor fails.
(WebCore::PolicyChecker::checkNewWindowPolicy):
Source/WebKit:
Pass the policy check identifier around functions and store it in PolicyDecisionSender
so that we can send it back to WebCore with the navigation policy decision.
We also store it in WebFrame in the case the policy decision had to be invalidated
before the decision was received (via WebFrame::invalidatePolicyListener).
- Scripts/webkit/messages.py:
- UIProcess/ProvisionalPageProxy.cpp:
(WebKit::ProvisionalPageProxy::decidePolicyForNavigationActionAsync):
(WebKit::ProvisionalPageProxy::decidePolicyForResponse):
- UIProcess/ProvisionalPageProxy.h:
- UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::PolicyDecisionSender): Added PolicyCheckIdentifier as a member.
(WebKit::WebPageProxy::PolicyDecisionSender::create):
(WebKit::WebPageProxy::PolicyDecisionSender::send):
(WebKit::WebPageProxy::PolicyDecisionSender::PolicyDecisionSender):
(WebKit::WebPageProxy::receivedNavigationPolicyDecision):
(WebKit::WebPageProxy::decidePolicyForNavigationActionAsync):
(WebKit::WebPageProxy::decidePolicyForNavigationActionAsyncShared):
(WebKit::WebPageProxy::decidePolicyForNavigationAction):
(WebKit::WebPageProxy::decidePolicyForNavigationActionSync):
(WebKit::WebPageProxy::decidePolicyForNewWindowAction):
(WebKit::WebPageProxy::decidePolicyForResponse):
(WebKit::WebPageProxy::decidePolicyForResponseShared):
- UIProcess/WebPageProxy.h:
- UIProcess/WebPageProxy.messages.in:
- WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
(WebKit::WebFrameLoaderClient::dispatchDecidePolicyForResponse):
(WebKit::WebFrameLoaderClient::dispatchDecidePolicyForNewWindowAction):
(WebKit::WebFrameLoaderClient::dispatchDecidePolicyForNavigationAction):
- WebProcess/WebCoreSupport/WebFrameLoaderClient.h:
- WebProcess/WebPage/WebFrame.cpp:
(WebKit::WebFrame::setUpPolicyListener):
(WebKit::WebFrame::invalidatePolicyListener):
(WebKit::WebFrame::didReceivePolicyDecision):
- WebProcess/WebPage/WebFrame.h:
- WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::didReceivePolicyDecision):
- WebProcess/WebPage/WebPage.h:
- WebProcess/WebPage/WebPage.messages.in:
Source/WebKitLegacy/mac:
Pass the policy check identifier around functions and store it in WebFramePolicyListener
so that we can send it back to WebCore with the navigation policy decision.
- WebCoreSupport/WebFrameLoaderClient.h:
- WebCoreSupport/WebFrameLoaderClient.mm:
(WebFrameLoaderClient::dispatchDecidePolicyForResponse):
(WebFrameLoaderClient::dispatchDecidePolicyForNewWindowAction):
(WebFrameLoaderClient::dispatchDecidePolicyForNavigationAction):
(WebFrameLoaderClient::dispatchWillSubmitForm):
(WebFrameLoaderClient::setUpPolicyListener):
(-[WebFramePolicyListener initWithFrame:identifier:policyFunction:defaultPolicy:]):
(-[WebFramePolicyListener initWithFrame:identifier:policyFunction:defaultPolicy:appLinkURL:]):
(-[WebFramePolicyListener invalidate]):
(-[WebFramePolicyListener dealloc]):
(-[WebFramePolicyListener receivedPolicyDecision:]):
(-[WebFramePolicyListener initWithFrame:policyFunction:defaultPolicy:]): Deleted.
(-[WebFramePolicyListener initWithFrame:policyFunction:defaultPolicy:appLinkURL:]): Deleted.
Source/WebKitLegacy/win:
Pass the policy check identifier around functions and store it in WebFramePolicyListener
so that we can send it back to WebCore with the navigation policy decision.
- WebCoreSupport/WebFrameLoaderClient.cpp:
(WebFrameLoaderClient::dispatchDecidePolicyForResponse):
(WebFrameLoaderClient::dispatchDecidePolicyForNewWindowAction):
(WebFrameLoaderClient::dispatchDecidePolicyForNavigationAction):
(WebFrameLoaderClient::dispatchWillSubmitForm):
(WebFrameLoaderClient::setUpPolicyListener):
- WebCoreSupport/WebFrameLoaderClient.h:
- 1:17 PM Changeset in webkit [240908] by
-
- 7 edits in tags/Safari-608.1.3.0.2/Source
Versioning.
- 1:10 PM Changeset in webkit [240907] by
-
- 1 copy in tags/Safari-608.1.3.0.2
Tag Safari-608.1.3.0.2.
- 1:02 PM Changeset in webkit [240906] by
-
- 2 edits in trunk/Source/WebCore
Don't include ScrollCoordinator.h from Element.h
https://bugs.webkit.org/show_bug.cgi?id=194206
Reviewed by Daniel Bates.
- dom/Element.h:
- 12:52 PM Changeset in webkit [240905] by
-
- 4 edits2 adds in trunk
Unable to move selection into editable roots with 0 height
https://bugs.webkit.org/show_bug.cgi?id=194143
<rdar://problem/47767284>
Reviewed by Ryosuke Niwa.
Source/WebCore:
Currently, positions inside editable elements of height 0 are not considered to be candidates when
canonicalizing a position to its visible counterpart. This prevents us from moving the selection into these
editable roots at all. To fix this, we relax this constraint by allowing positions anchored by root editable
elements to be candidates.
Test: editing/selection/insert-text-in-empty-content-editable.html
- dom/Position.cpp:
(WebCore::Position::isCandidate const):
LayoutTests:
Add a new layout test that executes editing commands in a contenteditable element of height 0, and adjust an
existing layout test that copies and pastes an image element to wait until the image has loaded.
- editing/pasteboard/styled-element-markup.html:
- editing/selection/insert-text-in-empty-content-editable-expected.txt: Added.
- editing/selection/insert-text-in-empty-content-editable.html: Added.
- 11:46 AM Changeset in webkit [240904] by
-
- 4 edits in trunk/Source/WebCore
Tidyup of Pagination and FrameView m_mediaType initialization
https://bugs.webkit.org/show_bug.cgi?id=194203
Reviewed by Darin Adler.
Fix post-commit feedback on lines around code changed in r240901.
- page/FrameView.cpp:
(WebCore::FrameView::FrameView):
- page/FrameView.h:
- rendering/Pagination.h:
(WebCore::Pagination::operator!= const):
- 5:53 AM Changeset in webkit [240903] by
-
- 2 edits in trunk/Source/WTF
Unreviewed, rolling out r240896.
https://bugs.webkit.org/show_bug.cgi?id=194202
"Fixes leaks, but is probably not the correct fix." (Requested
by ddkilzer on #webkit).
Reverted changeset:
"Leak of WTF::StringImpl under SymbolImpl::createNullSymbol()
(48 bytes) in com.apple.WebKit.WebContent running layout
tests"
https://bugs.webkit.org/show_bug.cgi?id=193291
https://trac.webkit.org/changeset/240896
- 1:05 AM Changeset in webkit [240902] by
-
- 26 edits3 copies10 adds in trunk
Turn on Smart Paste
https://bugs.webkit.org/show_bug.cgi?id=193786
Reviewed by Ryosuke Niwa.
Source/WebCore:
Turned on a modified tests:
LayoutTests/editing/pasteboard/smart-paste-001.html
LayoutTests/editing/pasteboard/smart-paste-002.html
LayoutTests/editing/pasteboard/smart-paste-003.html
LayoutTests/editing/pasteboard/smart-paste-004.html
LayoutTests/editing/pasteboard/smart-paste-005.html
LayoutTests/editing/pasteboard/smart-paste-006.html
LayoutTests/editing/pasteboard/smart-paste-007.html
LayoutTests/editing/pasteboard/smart-paste-008.html
- platform/ios/PasteboardIOS.mm:
(WebCore::Pasteboard::canSmartReplace):
Turn on smart replace.
Source/WebKit:
- Platform/spi/ios/UIKitSPI.h:
- UIProcess/ios/TextCheckerIOS.mm:
(WebKit::TextChecker::isSmartInsertDeleteEnabled):
Use the flag from UIKit to determine if smart copy paste should be
turned on.
LayoutTests:
Rebaselined many tests and/or added iOS specific expectations to
correctly reflect smart copy paste behavior.
- editing/editing.js:
(runEditingTestWithCallbackLogging):
(runDumpAsTextEditingTest):
Added ability to handle async functions.
- editing/pasteboard/smart-paste-001.html:
- editing/pasteboard/smart-paste-002.html:
- editing/pasteboard/smart-paste-003.html:
- editing/pasteboard/smart-paste-004.html:
- editing/pasteboard/smart-paste-005.html:
- editing/pasteboard/smart-paste-006.html:
- editing/pasteboard/smart-paste-007.html:
- editing/pasteboard/smart-paste-008.html:
- platform/ios-wk2/editing/pasteboard/smart-paste-007-expected.txt:
- platform/ios-wk2/editing/pasteboard/smart-paste-008-expected.txt:
- platform/ios/TestExpectations:
- platform/ios/editing/pasteboard/smart-paste-001-expected.txt: Added.
- platform/ios/editing/pasteboard/smart-paste-002-expected.txt: Added.
- platform/ios/editing/pasteboard/smart-paste-003-expected.txt: Added.
- platform/ios/editing/pasteboard/smart-paste-004-expected.txt: Added.
- platform/ios/editing/pasteboard/smart-paste-005-expected.txt: Added.
- platform/ios/editing/pasteboard/smart-paste-006-expected.txt: Added.
- resources/ui-helper.js:
(window.UIHelper.doubleClickAt):
(window.UIHelper.async.selectWordByDoubleTapOrClick):
Added helper functions to allow for selecting a word by double tap or click.
Feb 2, 2019:
- 4:16 PM Changeset in webkit [240901] by
-
- 11 edits in trunk/Source
Tidy up data memebers of FrameView and related classes to shrink class sizes
https://bugs.webkit.org/show_bug.cgi?id=194197
Reviewed by Zalan Bujtas.
Source/WebCore:
Make various enums 8-bit. Re-order data members of FrameView, FrameViewLayoutContext, Widget
and ScrollView to optimize padding.
Use more data member initializers.
This shrinks FrameView from 1168 (144 padding bytes) to 1096 (96 padding bytes).
- dom/Element.h:
- page/FrameView.cpp:
(WebCore::FrameView::FrameView):
- page/FrameView.h:
- page/FrameViewLayoutContext.h:
- platform/ScrollTypes.h:
- platform/ScrollView.h: Data members should come after member functions.
- platform/Widget.h:
- rendering/Pagination.h:
(WebCore::Pagination::Pagination): Deleted.
Source/WebKit:
- UIProcess/PageClient.h: Declare enum size.
- 12:20 PM Changeset in webkit [240900] by
-
- 2 edits in trunk/Tools
Leak of NSArray (4.25 Kbytes) in com.apple.WebKit.WebContent running WebKit layout tests on iOS Simulator
<https://webkit.org/b/194178>
<rdar://problem/47753473>
Reviewed by Alexey Proskuryakov.
- WebKitTestRunner/InjectedBundle/cocoa/ActivateFontsCocoa.mm:
(WTR::uninstallFakeHelvetica): Pass nullptr into
CTFontManagerUnregisterFontsForURLs() to ignore any errors.
- 12:05 PM Changeset in webkit [240899] by
-
- 4 edits in trunk/Source/WebCore
Rename "scrollingLayer" in RenderLayerBacking to "scrollContainerLayer" for clarity
https://bugs.webkit.org/show_bug.cgi?id=194194
Rubber-stampted by Antti Koivisto.
Our desired terminology is "scrollContainerLayer" for the outer, clipping layer
for scrolling, and "scrolledContentsLayer" for the contents that move when you scroll.
- rendering/RenderLayerBacking.cpp:
(WebCore::RenderLayerBacking::updateDebugIndicators):
(WebCore::RenderLayerBacking::destroyGraphicsLayers):
(WebCore::RenderLayerBacking::updateGeometry):
(WebCore::RenderLayerBacking::setLocationOfScrolledContents):
(WebCore::RenderLayerBacking::updateAfterDescendants):
(WebCore::RenderLayerBacking::updateInternalHierarchy):
(WebCore::RenderLayerBacking::updateDrawsContent):
(WebCore::RenderLayerBacking::updateScrollingLayers):
- rendering/RenderLayerBacking.h:
- rendering/RenderLayerCompositor.cpp:
(WebCore::RenderLayerCompositor::didChangePlatformLayerForLayer):
(WebCore::RenderLayerCompositor::updateScrollingNodeForScrollingRole):
(WebCore::LegacyWebKitScrollingLayerCoordinator::registerAllViewportConstrainedLayers):
(WebCore::LegacyWebKitScrollingLayerCoordinator::updateScrollingLayer):
(WebCore::LegacyWebKitScrollingLayerCoordinator::unregisterAllScrollingLayers):
(WebCore::LegacyWebKitScrollingLayerCoordinator::removeScrollingLayer):
- 11:53 AM Changeset in webkit [240898] by
-
- 12 edits3 copies in trunk
Source/WebCore:
[Web GPU] Fix GPURenderPassEncoder::setVertexBuffers and allow overlapping indices with GPUBindGroups
https://bugs.webkit.org/show_bug.cgi?id=194125
Reviewed by Myles C. Maxfield.
GPURenderPassEncoder::setVertexBuffers is now actually written to set all buffers provided. In addition,
shift vertex input buffer indices so that any resource bindings can bind vertex buffer resources to the same indices.
Existing tests cover setVertexBuffers. Updated buffer-resource-triangles to assign bind groups and vertex buffers to the same index.
- Modules/webgpu/WHLSL/Metal/WHLSLVertexBufferIndexCalculator.cpp: Added.
(WebCore::WHLSL::Metal::calculateVertexBufferIndex): Simple shifting function for vertex input buffer indices.
- Modules/webgpu/WHLSL/Metal/WHLSLVertexBufferIndexCalculator.h: Added.
- Modules/webgpu/WebGPUProgrammablePassEncoder.cpp:
(WebCore::WebGPUProgrammablePassEncoder::setBindGroup const): Limit maximum bind group indices to 0 to 3.
- Modules/webgpu/WebGPURenderPassEncoder.cpp:
(WebCore::WebGPURenderPassEncoder::setVertexBuffers): Limit vertex input indices to 0 to 15.
- Modules/webgpu/WebGPURenderPassEncoder.h: Move IDL/bindings bug note to IDL file.
- Modules/webgpu/WebGPURenderPassEncoder.idl: Ditto.
- platform/graphics/gpu/GPULimits.h: Added. Home for Web GPU limits constants shared between files.
- platform/graphics/gpu/GPURenderPassEncoder.h: Change IDL/bindings bug workaround to unsigned long long to prevent narrowing compared to spec.
- platform/graphics/gpu/cocoa/GPURenderPassEncoderMetal.mm:
(WebCore::GPURenderPassEncoder::setVertexBuffers): Now properly calls Metal's setVertexBuffers.
- platform/graphics/gpu/cocoa/GPURenderPipelineMetal.mm:
(WebCore::setInputStateForPipelineDescriptor): Fix validation checks for vertex attribute numbers and vertex buffer indices.
Add symbols to project:
- Sources.txt:
- WebCore.xcodeproj/project.pbxproj:
LayoutTests:
[WebGPU] Fix GPURenderPassEncoder::setVertexBuffers and allow overlapping indices with GPUBindGroups
https://bugs.webkit.org/show_bug.cgi?id=194125
Reviewed by Myles C. Maxfield.
Updated buffer-resource-triangles to assign bind groups and vertex buffers to the same index.
- webgpu/buffer-resource-triangles.html:
- 11:09 AM Changeset in webkit [240897] by
-
- 6 edits in trunk/Source/WebCore
Async overflow scroll is jumpy on macOS if the main thread is busy
https://bugs.webkit.org/show_bug.cgi?id=194184
<rdar://problem/47758655>
Reviewed by Antti Koivisto.
This change extends to macOS some existing overflow-scroll functionality for iOS.
When an async scroll is in process in the scroll thread (or UI process), we periodically
message back to the web process main thread with scroll position updates. These
can trigger post-scroll compositing updates, but we need to ensure that this update
doesn't clobber the scroll position of the native layers, which would trigger
stutters.
To do this we have the notion of a scroll position "sync" (ScrollingLayerPositionAction::Sync) which
pokes the new value into the GraphicsLayer (hence making visible rect computations work), but doesn't
propagate it to the platform layer. This patch wires up syncs for macOS during async overflow scrolling,
coming out of AsyncScrollingCoordinator::updateScrollPositionAfterAsyncScroll().
In RenderLayerBacking, m_scrollingContentsLayer is renamed to m_scrolledContentsLayer, and I added
updateScrollOffset() and setLocationOfScrolledContents() to handle the set vs. sync, and to keep
the iOS vs macOS differences in one function. This allows for more code sharing in RenderLayerBacking::updateGeometry().
There's a confusing bit in the m_childClippingMaskLayer code (trac.webkit.org/178029) where the setOffsetFromRenderer()
just looks wrong; it should match m_scrollingLayer. This code is never hit for Cocoa, which never has m_childClippingMaskLayer.
- page/scrolling/mac/ScrollingTreeOverflowScrollingNodeMac.mm:
(WebCore::ScrollingTreeOverflowScrollingNodeMac::setScrollPosition): Logging
(WebCore::ScrollingTreeOverflowScrollingNodeMac::setScrollLayerPosition): Logging
- rendering/RenderLayer.cpp:
(WebCore::RenderLayer::RenderLayer):
(WebCore::RenderLayer::scrollTo):
- rendering/RenderLayer.h: Rename m_requiresScrollBoundsOriginUpdate to m_requiresScrollPositionReconciliation
and make it available on all platforms. Just reorder m_adjustForIOSCaretWhenScrolling to reduce #ifdef nesting confusion.
- rendering/RenderLayerBacking.cpp:
(WebCore::RenderLayerBacking::updateDebugIndicators):
(WebCore::RenderLayerBacking::destroyGraphicsLayers):
(WebCore::RenderLayerBacking::updateGeometry):
(WebCore::RenderLayerBacking::setLocationOfScrolledContents):
(WebCore::RenderLayerBacking::updateScrollOffset):
(WebCore::RenderLayerBacking::updateDrawsContent):
(WebCore::RenderLayerBacking::updateScrollingLayers):
(WebCore::RenderLayerBacking::paintingPhaseForPrimaryLayer const):
(WebCore::RenderLayerBacking::parentForSublayers const):
(WebCore::RenderLayerBacking::setContentsNeedDisplay):
(WebCore::RenderLayerBacking::setContentsNeedDisplayInRect):
(WebCore::RenderLayerBacking::paintContents):
(WebCore::RenderLayerBacking::backingStoreMemoryEstimate const):
- rendering/RenderLayerBacking.h:
- 10:35 AM Changeset in webkit [240896] by
-
- 2 edits in trunk/Source/WTF
Leak of WTF::StringImpl under SymbolImpl::createNullSymbol() (48 bytes) in com.apple.WebKit.WebContent running layout tests
<https://webkit.org/b/193291>
<rdar://problem/46655953>
Reviewed by Keith Miller.
- wtf/text/SymbolImpl.h:
(WTF::SymbolImpl::~SymbolImpl): Fix the leak by implementing the
class destructor that calls StringImpl::deref() onm_owner.
Two of the three constructors leak the StringImpl when setting
m_owner, so we need to balance that by manually calling
deref().
- 8:32 AM Changeset in webkit [240895] by
-
- 7 edits in trunk
[LFC] Initialize ICB's style with fixed width/height.
https://bugs.webkit.org/show_bug.cgi?id=194188
Reviewed by Antti Koivisto.
Source/WebCore:
Let's set ICB's logical width/height to Fixed so that it's available when we try to resolve a box's height
in FormattingContext::Geometry::computedHeightValue() by using the containing block's height (ICB in this case).
- layout/LayoutState.cpp:
(WebCore::Layout::LayoutState::LayoutState):
- layout/LayoutState.h:
- layout/layouttree/LayoutTreeBuilder.cpp:
(WebCore::Layout::TreeBuilder::createLayoutTree):
Tools:
- LayoutReloaded/misc/LFC-passing-tests.txt:
- 8:26 AM Changeset in webkit [240894] by
-
- 5 edits2 adds in trunk
[LFC] Add missing case to out-of-flow non-replaced horizontal used margin value computation
https://bugs.webkit.org/show_bug.cgi?id=194185
Reviewed by Antti Koivisto.
Source/WebCore:
If none of horizontal values (left, right, width, margin-left/right) are auto, then usedHorizontalMarginValues = computedHorizontalMarginValues.
Test: fast/block/block-only/absolute-position-left-right-margin.html
- layout/FormattingContextGeometry.cpp:
(WebCore::Layout::FormattingContext::Geometry::outOfFlowNonReplacedHorizontalGeometry):
Tools:
- LayoutReloaded/misc/LFC-passing-tests.txt:
LayoutTests:
- fast/block/block-only/absolute-position-left-right-margin-expected.html: Added.
- fast/block/block-only/absolute-position-left-right-margin.html: Added.