⚠ Archived content — this site is no longer maintained.   Current WebKit documentation is at docs.webkit.org.

Timeline



Feb 23, 2019:

7:18 PM Changeset in webkit [242011] by rmorisset@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

Remove dead code: AdjacencyList::justOneChild()
https://bugs.webkit.org/show_bug.cgi?id=194965

Reviewed by Sam Weinig.

  • dfg/DFGAdjacencyList.h:

(JSC::DFG::AdjacencyList::justOneChild const): Deleted.

7:03 PM Changeset in webkit [242010] by Chris Dumez
  • 4 edits in trunk/Source/WebKit

Give DrawingAreas their own identifiers
https://bugs.webkit.org/show_bug.cgi?id=194969
<rdar://problem/48154508>

Unreviewed, fix API test debug assertion failures after r241988.
We do not support sending an ObjectIdentifier that is 0 via IPC so update WebPageProxy::CreateNewPage
IPC to return an Optional<WebPageCreationParameters> instead of a WebPageCreationParameters. It returns
nullopt when there this no UIClient or the client did not create the page, instead of returning a
default-initialized WebPageCreationParameters.

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::createNewPage):

  • UIProcess/WebPageProxy.messages.in:
  • WebProcess/WebCoreSupport/WebChromeClient.cpp:

(WebKit::WebChromeClient::createWindow):

5:07 PM Changeset in webkit [242009] by Adrian Perez de Castro
  • 3 edits
    1 add in releases/WebKitGTK/webkit-2.22

Merged r241634 - RELEASE_ASSERT at com.apple.JavaScriptCore: JSC::jsSubstringOfResolved
https://bugs.webkit.org/show_bug.cgi?id=194558

Reviewed by Saam Barati.

JSTests:

New regression test.

  • stress/regexp-unicode-within-string.js: Added.

Source/JavaScriptCore:

Added an in bounds check before the read of the next character for Unicode regular expressions
for pattern generation that didn't already have such checks.

  • yarr/YarrJIT.cpp:

(JSC::Yarr::YarrGenerator::generatePatternCharacterOnce):
(JSC::Yarr::YarrGenerator::generatePatternCharacterFixed):
(JSC::Yarr::YarrGenerator::generateCharacterClassOnce):
(JSC::Yarr::YarrGenerator::generateCharacterClassFixed):

5:07 PM Changeset in webkit [242008] by Adrian Perez de Castro
  • 4 edits
    2 adds in releases/WebKitGTK/webkit-2.22

Merged r241626 - Crash in the hit testing code via HTMLPlugInElement::isReplacementObscured()
https://bugs.webkit.org/show_bug.cgi?id=194691

Reviewed by Simon Fraser.

Source/WebCore:

The crash was caused by HTMLPlugInElement::isReplacementObscured updating the document
without updating the layout of ancestor documents (i.e. documents in which frame owner
elements appear) even though it hit-tests against the top-level document's RenderView.

Fixed the bug by updating the layout of the top-level document as needed.

Test: plugins/unsupported-plugin-with-replacement-in-iframe-crash.html

  • html/HTMLPlugInElement.cpp:

(WebCore::HTMLPlugInElement::isReplacementObscured):

LayoutTests:

Added a regression test. It hits the newly added debug assertion without the fix.

  • platform/mac-wk1/TestExpectations: Skip the test since DumpRenderTree doesn't support

testRunner.setPluginSupportedMode.

  • plugins/unsupported-plugin-with-replacement-in-iframe-crash-expected.txt: Added.
  • plugins/unsupported-plugin-with-replacement-in-iframe-crash.html: Added.
5:07 PM Changeset in webkit [242007] by Adrian Perez de Castro
  • 4 edits
    4 adds in releases/WebKitGTK/webkit-2.22

Merged r241615 - SamplingProfiler::stackTracesAsJSON() should escape strings.
https://bugs.webkit.org/show_bug.cgi?id=194649
<rdar://problem/48072386>

Reviewed by Saam Barati.

JSTests:

  • stress/sampling-profiler-stack-trace-with-double-quote-in-function-name.js: Added.
  • stress/type-profiler-with-double-quote-in-constructor-name.js: Added.
  • stress/type-profiler-with-double-quote-in-field-name.js: Added.
  • stress/type-profiler-with-double-quote-in-optional-field-name.js: Added.

Source/JavaScriptCore:

Ditto for TypeSet::toJSONString() and TypeSet::toJSONString().

  • runtime/SamplingProfiler.cpp:

(JSC::SamplingProfiler::stackTracesAsJSON):

  • runtime/TypeSet.cpp:

(JSC::TypeSet::toJSONString const):
(JSC::StructureShape::toJSONString const):

5:07 PM Changeset in webkit [242006] by Adrian Perez de Castro
  • 5 edits
    1 add in releases/WebKitGTK/webkit-2.22

Merged r241613 - [JSC] CodeBlock::jettison should clear related watchpoints
https://bugs.webkit.org/show_bug.cgi?id=194544

Reviewed by Mark Lam.

  • bytecode/CodeBlock.cpp:

(JSC::CodeBlock::jettison):

  • dfg/DFGCommonData.h:

(JSC::DFG::CommonData::clearWatchpoints): Added.

  • dfg/CommonData.cpp:

(JSC::DFG::CommonData::clearWatchpoints): Added.

5:06 PM Changeset in webkit [242005] by Adrian Perez de Castro
  • 2 edits in releases/WebKitGTK/webkit-2.22/Tools

Merged r241553 - Unreviewed, build fix after r241480

  • TestWebKitAPI/ios/DragAndDropSimulatorIOS.mm:

(-[DragAndDropSimulator initWithWebViewFrame:configuration:]):
(-[DragAndDropSimulator initWithWebView:]):

5:06 PM Changeset in webkit [242004] by Adrian Perez de Castro
  • 3 edits
    2 adds in releases/WebKitGTK/webkit-2.22

Merged r241499 - Crash in DOMTimer::fired
https://bugs.webkit.org/show_bug.cgi?id=194638

Reviewed by Brent Fulgham.

Source/WebCore:

This patch continues the saga of hunting down timer related crashes after r239814, r225985, r227934.

The crash was caused by the bug that we don't remove a DOMTimer from NestedTimersMap if a DOMTimer
is created & installed inside another DOMTimer's callback (via execute call in DOMTimer::fired).

Fixed the crash by using a Ref in NestedTimersMap. This will keep the timer alive until we exit
from DOMTimer::fired. Because DOMTimer::fired always calls stopTracking() which clears the map
we would not leak these DOM timers.

We could, alternatively, use WeakPtr in NestedTimersMap but that would unnecessarily increase the
size of DOMTimer for a very marginal benefit of DOMTimer objcets being deleted slightly earlier.
Deleting itself in DOMTimer's destructor involves more logic & house keeping in the timer code,
and is no longer the preferred approach when dealing with these classes of bugs in WebKit.

Test: fast/dom/timer-destruction-during-firing.html

  • page/DOMTimer.cpp:

(WebCore::NestedTimersMap::add):
(WebCore::DOMTimer::install):
(WebCore::DOMTimer::fired):

LayoutTests:

Added a regression test. It needs debug assertions without the fix.

  • fast/dom/timer-destruction-during-firing-expected.txt: Added.
  • fast/dom/timer-destruction-during-firing.html: Added.
5:06 PM Changeset in webkit [242003] by Adrian Perez de Castro
  • 2 edits in releases/WebKitGTK/webkit-2.22/Source/WebCore

Merged r227934 - Add a release assertion to ensure timers are deleted in the right thread
https://bugs.webkit.org/show_bug.cgi?id=182351

Reviewed by David Kilzer.

Added a relese assertion in ~TimerBase that the current thread is the one in which the timer was created.

We use canAccessThreadLocalDataForThread for this purpose since the condition is more complicated
when WebThread is being used.

  • platform/Timer.cpp:

(WebCore::TimerBase::~TimerBase): Added the assertion.

  • platform/Timer.h:

(WebCore::TimerBase::m_thread): Always store the current thread in a timer.

5:06 PM Changeset in webkit [242002] by Adrian Perez de Castro
  • 6 edits in releases/WebKitGTK/webkit-2.22/Source/WebCore

Merged r239814 - ThreadTimers should not store a raw pointer in its heap
https://bugs.webkit.org/show_bug.cgi?id=192975
<rdar://problem/46893946>

Reviewed by Geoffrey Garen.

Right now, ThreadTimers's heap data structure stores a raw pointer to TimerBase. In order to harden the timer code,
this patch replaces it with ThreadTimerHeapItem, a newly introduced struct, which effectively acks like
WeakReference<TimerBase*> as the timer heap and TimerBase both store RefPtr to it, and TimerBase's destructor clears
the raw pointer back to TimerBase*.

This approach was taken instead of an out-right adoptation of WeakPtr since the heap data structure requires each node
in the heap to have a fixed "priority" yet WeakPtr with no valid pointer back to TimerBase would effectively lose its
"priority" thereby corrupting the heap data structure. That is, each item in the heap must remember its fire time and
insertion order even when the underlying TimerBase had gone away (this should never happen but the whole point of this
hardening is to make it work even in the precense of such a bug).

This patch also moves the heap index in TimerBase to ThreadTimerHeapItem, and replaces the pointer to the heap vector
in TimerBase by a reference to ThreadTimers in ThreadTimerHeapItem. Note that ThreadTimers is a per-thread singleton.

The correctness of this hardening was tested by commenting out the call to stop() and !isInHeap() assertion in
TimerBase::~TimerBase() as well as the !isInHeap() assertion in ThreadTimerHeapItem::clearTimer() and observing that
layout tests run successfully without hitting any debug assertions.

No new tests since there should be no observable behavior difference.

  • WebCore.xcodeproj/project.pbxproj: Export ThreadTimers.h as a private header since it's now included in Timer.h
  • platform/ThreadTimers.cpp:

(WebCore::ThreadTimers::updateSharedTimer): Delete ThreadTimerHeapItem's with nullptr TimerBase* (TimerBase had
already been deleted). This should only happen when TimerBase's destructor failed to remove itself from the timer heap,
which should never happen.
(WebCore::ThreadTimers::sharedTimerFiredInternal): Ditto. Also removed the redundant code which had removed the timer
from the heap since setNextFireTime does the removal already.

  • platform/ThreadTimers.h: Outdented the whole file.

(WebCore::ThreadTimers::timerHeap): We use Vector<RefPtr<ThreadTimerHeapItem>> instead of Vector<Ref<~>> since Ref<~>
doesn't have a copy constructor which is used by std::push_heap.
(WebCore::ThreadTimerHeapItem): Added.
(WebCore::ThreadTimerHeapItem::hasTimer const): Added.
(WebCore::ThreadTimerHeapItem::setNotInHeap): Added. ThreadTimerHeapItem uses unsigned -1 as the single value which
signifies the item not being in the heap instead of all negative values as in the old code in TimerBase.
(WebCore::ThreadTimerHeapItem::isInHeap const): Added.
(WebCore::ThreadTimerHeapItem::isFirstInHeap const): Added.
(WebCore::ThreadTimerHeapItem::timer): Added.
(WebCore::ThreadTimerHeapItem::clearTimer): Added.
(WebCore::ThreadTimerHeapItem::heapIndex const): Added.
(WebCore::ThreadTimerHeapItem::setHeapIndex): Added.
(WebCore::ThreadTimerHeapItem::timerHeap const): Added.

  • platform/Timer.cpp:

(WebCore::threadGlobalTimerHeap): This function is now only used in assertions.
(WebCore::ThreadTimerHeapItem::ThreadTimerHeapItem): Added.
(WebCore::ThreadTimerHeapItem::create): Added.
(WebCore::TimerHeapPointer::TimerHeapPointer):
(WebCore::TimerHeapPointer::operator-> const):
(WebCore::TimerHeapReference::TimerHeapReference): Added a copy constructor.
(WebCore::TimerHeapReference::copyRef const): Added.
(WebCore::TimerHeapReference::operator RefPtr<ThreadTimerHeapItem>& const):
(WebCore::TimerHeapPointer::operator* const):
(WebCore::TimerHeapReference::operator=): Use move assignment operator.
(WebCore::TimerHeapReference::swapWith):
(WebCore::TimerHeapReference::updateHeapIndex): Extracted to share code between two verions of operator=.
(WebCore::swap):
(WebCore::TimerHeapIterator::TimerHeapIterator):
(WebCore::TimerHeapIterator::operator-> const):
(WebCore::TimerHeapLessThanFunction::compare): Added variants which take RefPtr<ThreadTimerHeapItem>.
(WebCore::TimerHeapLessThanFunction::operator() const):
(WebCore::TimerBase::TimerBase):
(WebCore::TimerBase::~TimerBase):Clear the raw pointer in ThreadTimerHeapItem.
(WebCore::TimerBase::stop):
(WebCore::TimerBase::nextFireInterval const):
(WebCore::TimerBase::checkHeapIndex const): Added the consistency check for other items in the heap.
(WebCore::TimerBase::checkConsistency const):
(WebCore::TimerBase::heapDecreaseKey):
(WebCore::TimerBase::heapDelete):
(WebCore::TimerBase::heapDeleteMin):
(WebCore::TimerBase::heapIncreaseKey):
(WebCore::TimerBase::heapInsert):
(WebCore::TimerBase::heapPop):
(WebCore::TimerBase::heapPopMin):
(WebCore::TimerBase::heapDeleteNullMin): Added. Used to delete ThreadTimerHeapItem which no longer has a valid TimerBase.
(WebCore::parentHeapPropertyHolds):
(WebCore::childHeapPropertyHolds):
(WebCore::TimerBase::hasValidHeapPosition const):
(WebCore::TimerBase::updateHeapIfNeeded): Tweaked the heap index assertion as heapIndex() itself would assert when called
on an item with an invalid (-1) heap index.
(WebCore::TimerBase::setNextFireTime): Create ThreadTimerHeapItem. Note m_heapItem is never cleared until this TimerBase
is deleted.
(WebCore::TimerHeapReference::operator TimerBase* const): Deleted.

  • platform/Timer.h:

(WebCore::TimerBase): Replaced m_nextFireTime, m_heapIndex, m_heapInsertionOrder, and m_cachedThreadGlobalTimerHeap
by m_heapItem, RefPtr to an ThreadTimerHeapItem.
(WebCore::TimerBase::augmentFireInterval):
(WebCore::TimerBase::inHeap const):
(WebCore::TimerBase::nextFireTime const):
(WebCore::TimerBase::isActive const):
(WebCore::TimerBase:: const): Deleted.

5:06 PM Changeset in webkit [242001] by Adrian Perez de Castro
  • 30 edits
    4 adds in releases/WebKitGTK/webkit-2.22

Merged r241480 - Further restricting webarchive loads
https://bugs.webkit.org/show_bug.cgi?id=194567
<rdar://problem/47610130>

Reviewed by Youenn Fablet.

Source/WebCore:

This patch futher restricts main frame webarchive loads to the followings:
1) loaded by clients;
2) loaded by drag;
3) reloaded from any of the previous two.

It moves setAlwaysAllowLocalWebarchive, which is used for testing only, from Document
to FrameLoader such that the option is remembered during redirections.

Covered by API tests.

  • dom/Document.h:

(WebCore::Document::setAlwaysAllowLocalWebarchive): Deleted.
(WebCore::Document::alwaysAllowLocalWebarchive const): Deleted.

  • loader/DocumentLoader.cpp:

(WebCore::DocumentLoader::disallowWebArchive const):

  • loader/DocumentLoader.h:

(WebCore::DocumentLoader::setAllowsWebArchiveForMainFrame):
(WebCore::DocumentLoader::allowsWebArchiveForMainFrame):

  • loader/FrameLoadRequest.h:

(WebCore::FrameLoadRequest::setIsRequestFromClientOrUserInput):
(WebCore::FrameLoadRequest::isRequestFromClientOrUserInput):

  • loader/FrameLoader.cpp:

(WebCore::FrameLoader::load):
(WebCore::FrameLoader::reload):

  • loader/FrameLoader.h:

(WebCore::FrameLoader::setAlwaysAllowLocalWebarchive):
(WebCore::FrameLoader::alwaysAllowLocalWebarchive const):

  • page/DragController.cpp:

(WebCore::DragController::performDragOperation):

  • testing/Internals.cpp:

(WebCore::Internals::setAlwaysAllowLocalWebarchive const):

  • testing/Internals.h:
  • testing/Internals.idl:

Source/WebKit:

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::loadRequest):
Set a flag to indicate a load is started from clients.

Tools:

Besides adding API tests, this patch also enhances DragAndDropSimulator to allow
navigations on drop.

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/mac/LoadWebArchive.mm: Added.

(-[TestLoadWebArchiveNavigationDelegate webView:didFinishNavigation:]):
(-[TestLoadWebArchiveNavigationDelegate webView:didFailProvisionalNavigation:withError:]):
(-[TestLoadWebArchiveNavigationDelegate webView:createWebViewWithConfiguration:forNavigationAction:windowFeatures:]):
(TestWebKitAPI::TEST):

  • TestWebKitAPI/Tests/mac/helloworld.webarchive: Added.
  • TestWebKitAPI/Tests/mac/load-web-archive-1.html: Added.
  • TestWebKitAPI/Tests/mac/load-web-archive-2.html: Added.
  • TestWebKitAPI/cocoa/DragAndDropSimulator.h:
  • TestWebKitAPI/mac/DragAndDropSimulatorMac.mm:

(-[DragAndDropSimulator initWithWebViewFrame:configuration:]):
(-[DragAndDropSimulator _webView:dragDestinationActionMaskForDraggingInfo:]):

LayoutTests:

  • platform/mac/fast/loader/webarchive-encoding-respected.html:
  • webarchive/loading/cache-expired-subresource.html:
  • webarchive/loading/javascript-url-iframe-crash.html:
  • webarchive/loading/mainresource-null-mimetype-crash.html:
  • webarchive/loading/missing-data.html:
  • webarchive/loading/object.html:
  • webarchive/loading/test-loading-archive-subresource-null-mimetype.html:
  • webarchive/loading/test-loading-archive-subresource.html:
  • webarchive/loading/test-loading-archive.html:
  • webarchive/loading/test-loading-top-archive.html:
  • webarchive/loading/video-in-webarchive.html:
5:06 PM Changeset in webkit [242000] by Adrian Perez de Castro
  • 11 edits in releases/WebKitGTK/webkit-2.22

Merged r241289 - AXObjectCache::childrenChanged shouldn't update layout or style during another style recalc
https://bugs.webkit.org/show_bug.cgi?id=182280
<rdar://problem/37018386>

Reviewed by Alan Bujtas.

Source/WebCore:

Remove the possibility that changing children calls back into updating layout by
handling children changes in a deferred manner.

This follows the same architecture as many other deferred changes, but also requires us to check deferred changes
in updateBackingStore, because things like aria-hidden changes won't trigger a layout, but will require us to update children.

A few tests had to be modified to no longer change the tree and then check the children immediately.

  • accessibility/AXObjectCache.cpp:

(WebCore::AXObjectCache::remove):
(WebCore::AXObjectCache::childrenChanged):
(WebCore::AXObjectCache::prepareForDocumentDestruction):
(WebCore::AXObjectCache::performDeferredCacheUpdate):

  • accessibility/AXObjectCache.h:
  • accessibility/AccessibilityObject.cpp:

(WebCore::AccessibilityObject::updateBackingStore):

  • accessibility/mac/WebAccessibilityObjectWrapperBase.mm:

(convertToNSArray):
(-[WebAccessibilityObjectWrapperBase updateObjectBackingStore]):

LayoutTests:

  • accessibility/aria-hidden-update.html:
  • accessibility/aria-hidden-updates-alldescendants.html:
  • accessibility/image-load-on-delay.html:
  • accessibility/mac/aria-hidden-changes-for-non-ignored-elements.html:
  • accessibility/removed-anonymous-block-child-causes-crash.html:
5:05 PM Changeset in webkit [241999] by Adrian Perez de Castro
  • 14 edits
    1 add in releases/WebKitGTK/webkit-2.22

Merged r241228 - Nodes that rely on being dominated by CheckInBounds should have a child edge to it
https://bugs.webkit.org/show_bug.cgi?id=194334
<rdar://problem/47844327>

Reviewed by Mark Lam.

JSTests:

  • stress/check-in-bounds-should-be-a-child-use.js: Added.

(func):

Source/JavaScriptCore:

  • dfg/DFGAbstractInterpreterInlines.h:

(JSC::DFG::AbstractInterpreter<AbstractStateType>::executeEffects):

  • dfg/DFGArgumentsEliminationPhase.cpp:
  • dfg/DFGByteCodeParser.cpp:

(JSC::DFG::ByteCodeParser::parseBlock):

  • dfg/DFGClobberize.h:

(JSC::DFG::clobberize):

  • dfg/DFGConstantFoldingPhase.cpp:

(JSC::DFG::ConstantFoldingPhase::foldConstants):

  • dfg/DFGFixupPhase.cpp:

(JSC::DFG::FixupPhase::fixupNode):
(JSC::DFG::FixupPhase::convertToHasIndexedProperty):

  • dfg/DFGIntegerCheckCombiningPhase.cpp:

(JSC::DFG::IntegerCheckCombiningPhase::handleBlock):

  • dfg/DFGIntegerRangeOptimizationPhase.cpp:
  • dfg/DFGNodeType.h:
  • dfg/DFGSSALoweringPhase.cpp:

(JSC::DFG::SSALoweringPhase::lowerBoundsCheck):

  • dfg/DFGSpeculativeJIT.cpp:

(JSC::DFG::SpeculativeJIT::compileHasIndexedProperty):

  • ftl/FTLLowerDFGToB3.cpp:

(JSC::FTL::DFG::LowerDFGToB3::compileCheckInBounds):
(JSC::FTL::DFG::LowerDFGToB3::compileHasIndexedProperty):

4:57 PM Changeset in webkit [241998] by Michael Catanzaro
  • 2 edits in trunk/Source/WTF

Unreviewed, fix find/replace error from r232178

Looks like this was the only such error in that commit.

  • wtf/URLHelpers.cpp:

(WTF::URLHelpers::isLookalikeCharacter):

4:03 PM Changeset in webkit [241997] by Simon Fraser
  • 16 edits
    6 deletes in trunk/Source

Remove remnants of iOS WK1 scrolling tree code
https://bugs.webkit.org/show_bug.cgi?id=194980

Reviewed by Sam Weinig.

Source/WebCore:

Remove ScrollingTreeIOS and ScrollingCoordinatorIOS which were never instantiated,
to reduce maintenance costs and simplify.

Merge ScrollingTreeFrameScrollingNodeIOS into ScrollingTreeFrameScrollingNodeRemoteIOS
since that was the only concrete subclass, removing code which never applies to iOS WK2
(e.g. the synchronous scrolling code path).

  • SourcesCocoa.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • page/FrameView.h:
  • page/scrolling/ScrollingCoordinator.cpp:
  • page/scrolling/ScrollingTree.h:
  • page/scrolling/ScrollingTreeFrameScrollingNode.h:
  • page/scrolling/ScrollingTreeNode.h:
  • page/scrolling/ScrollingTreeScrollingNode.cpp:

(WebCore::ScrollingTreeScrollingNode::handleWheelEvent):

  • page/scrolling/ScrollingTreeScrollingNode.h:

(WebCore::ScrollingTreeScrollingNode::updateLayersAfterDelegatedScroll): Deleted.
(WebCore::ScrollingTreeScrollingNode::scrollableAreaSize const): Deleted.
(WebCore::ScrollingTreeScrollingNode::totalContentsSize const): Deleted.
(WebCore::ScrollingTreeScrollingNode::horizontalSnapOffsets const): Deleted.
(WebCore::ScrollingTreeScrollingNode::verticalSnapOffsets const): Deleted.
(WebCore::ScrollingTreeScrollingNode::horizontalSnapOffsetRanges const): Deleted.
(WebCore::ScrollingTreeScrollingNode::verticalSnapOffsetRanges const): Deleted.
(WebCore::ScrollingTreeScrollingNode::currentHorizontalSnapPointIndex const): Deleted.
(WebCore::ScrollingTreeScrollingNode::currentVerticalSnapPointIndex const): Deleted.
(WebCore::ScrollingTreeScrollingNode::setCurrentHorizontalSnapPointIndex): Deleted.
(WebCore::ScrollingTreeScrollingNode::setCurrentVerticalSnapPointIndex): Deleted.
(WebCore::ScrollingTreeScrollingNode::useDarkAppearanceForScrollbars const): Deleted.
(WebCore::ScrollingTreeScrollingNode::lastCommittedScrollPosition const): Deleted.
(WebCore::ScrollingTreeScrollingNode::reachableContentsSize const): Deleted.
(WebCore::ScrollingTreeScrollingNode::parentRelativeScrollableRect const): Deleted.
(WebCore::ScrollingTreeScrollingNode::scrollOrigin const): Deleted.
(WebCore::ScrollingTreeScrollingNode::totalContentsSizeForRubberBand const): Deleted.
(WebCore::ScrollingTreeScrollingNode::setTotalContentsSizeForRubberBand): Deleted.
(WebCore::ScrollingTreeScrollingNode::horizontalScrollElasticity const): Deleted.
(WebCore::ScrollingTreeScrollingNode::verticalScrollElasticity const): Deleted.
(WebCore::ScrollingTreeScrollingNode::hasEnabledHorizontalScrollbar const): Deleted.
(WebCore::ScrollingTreeScrollingNode::hasEnabledVerticalScrollbar const): Deleted.
(WebCore::ScrollingTreeScrollingNode::canHaveScrollbars const): Deleted.
(WebCore::ScrollingTreeScrollingNode::expectsWheelEventTestTrigger const): Deleted.
(WebCore::ScrollingTreeScrollingNode::scrollContainerLayer const): Deleted.
(WebCore::ScrollingTreeScrollingNode::scrolledContentsLayer const): Deleted.

  • page/scrolling/ios/ScrollingCoordinatorIOS.h: Removed.
  • page/scrolling/ios/ScrollingCoordinatorIOS.mm: Removed.
  • page/scrolling/ios/ScrollingTreeFrameScrollingNodeIOS.h: Removed.
  • page/scrolling/ios/ScrollingTreeFrameScrollingNodeIOS.mm: Removed.
  • page/scrolling/ios/ScrollingTreeIOS.cpp: Removed.
  • page/scrolling/ios/ScrollingTreeIOS.h: Removed.
  • page/scrolling/mac/ScrollingTreeFrameScrollingNodeMac.mm:

(WebCore::ScrollingTreeFrameScrollingNodeMac::setScrollPosition):

Source/WebKit:

Remove ScrollingTreeIOS and ScrollingCoordinatorIOS which were never instantiated.

Merge ScrollingTreeFrameScrollingNodeIOS into ScrollingTreeFrameScrollingNodeRemoteIOS,
removing code which never applies to iOS WK2 (e.g. the synchronous scrolling code path).

  • UIProcess/RemoteLayerTree/RemoteScrollingTree.cpp:
  • UIProcess/RemoteLayerTree/ios/ScrollingTreeFrameScrollingNodeRemoteIOS.h:
  • UIProcess/RemoteLayerTree/ios/ScrollingTreeFrameScrollingNodeRemoteIOS.mm:

(WebKit::ScrollingTreeFrameScrollingNodeRemoteIOS::ScrollingTreeFrameScrollingNodeRemoteIOS):
(WebKit::ScrollingTreeFrameScrollingNodeRemoteIOS::commitStateBeforeChildren):
(WebKit::ScrollingTreeFrameScrollingNodeRemoteIOS::commitStateAfterChildren):
(WebKit::ScrollingTreeFrameScrollingNodeRemoteIOS::minimumScrollPosition const):
(WebKit::ScrollingTreeFrameScrollingNodeRemoteIOS::maximumScrollPosition const):
(WebKit::ScrollingTreeFrameScrollingNodeRemoteIOS::scrollPosition const):
(WebKit::ScrollingTreeFrameScrollingNodeRemoteIOS::setScrollPosition):
(WebKit::ScrollingTreeFrameScrollingNodeRemoteIOS::setScrollLayerPosition):
(WebKit::ScrollingTreeFrameScrollingNodeRemoteIOS::updateChildNodesAfterScroll):
(WebKit::ScrollingTreeFrameScrollingNodeRemoteIOS::updateLayersAfterDelegatedScroll):
(WebKit::ScrollingTreeFrameScrollingNodeRemoteIOS::updateLayersAfterViewportChange):
(WebKit::ScrollingTreeFrameScrollingNodeRemoteIOS::updateLayersAfterAncestorChange):

  • UIProcess/RemoteLayerTree/ios/ScrollingTreeOverflowScrollingNodeIOS.h:
3:24 PM Changeset in webkit [241996] by Justin Fan
  • 24 edits
    1 copy
    3 adds
    2 deletes in trunk

[WebGPU] Buffer updates part 1: async mapping functions, unmap, and destroy
https://bugs.webkit.org/show_bug.cgi?id=194665

Reviewed by Dean Jackson.

Source/WebCore:

Test: map-write-buffers.html. Other tests updated to match new API.

  • Modules/webgpu/WebGPUBindGroupDescriptor.cpp: Added.

(WebCore::validateBufferBindingType): Ensure buffer binding usages match the binding type.
(WebCore::WebGPUBindGroupDescriptor::asGPUBindGroupDescriptor const): Logic moved out from WebGPUDevice.cpp.

  • Modules/webgpu/WebGPUBindGroupDescriptor.h:
  • Modules/webgpu/WebGPUBuffer.cpp: Added GPUBuffer functionality.

(WebCore::WebGPUBuffer::create):
(WebCore::WebGPUBuffer::WebGPUBuffer):
(WebCore::WebGPUBuffer::mapReadAsync):
(WebCore::WebGPUBuffer::mapWriteAsync):
(WebCore::WebGPUBuffer::unmap):
(WebCore::WebGPUBuffer::destroy):
(WebCore::WebGPUBuffer::rejectOrRegisterPromiseCallback): Register a mapping request on the GPUBuffer, if valid.

  • Modules/webgpu/WebGPUBuffer.h:

(WebCore::WebGPUBuffer::buffer const):
(WebCore::WebGPUBuffer::mapping const): Deleted.

  • Modules/webgpu/WebGPUBuffer.idl: Update to latest API and enable every function except setSubData.
  • Modules/webgpu/WebGPUCommandBuffer.cpp:

(WebCore::WebGPUCommandBuffer::beginRenderPass): Renamed descriptor conversion method.

  • Modules/webgpu/WebGPUDevice.cpp:

(WebCore::WebGPUDevice::createBuffer const): Update to non-nullable return type.
(WebCore::WebGPUDevice::createBindGroup const): Move descriptor validation logic to descriptor implementation.

  • Modules/webgpu/WebGPUDevice.h:
  • Modules/webgpu/WebGPURenderPassDescriptor.cpp:

(WebCore::WebGPURenderPassDescriptor::asGPURenderPassDescriptor const): Renamed from validateAndConvertToGPUVersion.

  • Modules/webgpu/WebGPURenderPassEncoder.cpp:

(WebCore::WebGPURenderPassEncoder::setVertexBuffers): Add validation for submitted buffers.

  • platform/graphics/gpu/GPUBuffer.cpp: Added.

(WebCore::GPUBuffer::PendingMappingCallback::PendingMappingCallback): New struct for retaining a reference to mapping callbacks.

  • platform/graphics/gpu/GPUBuffer.h: Add functionality to retain callbacks and usage bits.

(WebCore::GPUBuffer::isVertex const):
(WebCore::GPUBuffer::isUniform const):
(WebCore::GPUBuffer::isStorage const):
(WebCore::GPUBuffer::isReadOnly const):
(WebCore::GPUBuffer::PendingMapPromise::create):
(WebCore::GPUBuffer::isMappable const):
(WebCore::GPUBuffer::isMapWriteable const):
(WebCore::GPUBuffer::isMapReadable const):
(WebCore::GPUBuffer::mapping const): Deleted.

  • platform/graphics/gpu/GPUBufferUsage.h: enum class cannot be logical ORed together.
  • platform/graphics/gpu/GPUDevice.cpp:

(WebCore::GPUDevice::tryCreateBuffer const): Renamed from createBuffer.
(WebCore::GPUDevice::createBuffer const): Deleted.

  • platform/graphics/gpu/GPUDevice.h:
  • platform/graphics/gpu/cocoa/GPUBufferMetal.mm:

(WebCore::GPUBuffer::tryCreateSharedBuffer): Attempt to create a MTLBuffer with shared memory.
(WebCore::GPUBuffer::tryCreate): No longer use Gigacage-allocated memory for MTLBuffer.
(WebCore::GPUBuffer::GPUBuffer):
(WebCore::GPUBuffer::~GPUBuffer):
(WebCore::GPUBuffer::registerMappingCallback): Register the provided callback to be executed when the staging buffer can be safely exposed.
(WebCore::GPUBuffer::stagingBufferForRead): Prepare the arrayBuffer for reading and run the mapping callback.
(WebCore::GPUBuffer::stagingBufferForWrite): Ditto, but for writing.
(WebCore::GPUBuffer::unmap): If needed, copy the staging ArrayBuffer to the MTLBuffer. Unregister any mapping callback.
(WebCore::GPUBuffer::destroy): Stub implementation for now. Frees the MTLBuffer as soon as possible.
(WebCore::GPUBuffer::create): Deleted.

  • platform/graphics/gpu/cocoa/GPUProgrammablePassEncoderMetal.mm:

(WebCore::GPUProgrammablePassEncoder::setResourceAsBufferOnEncoder): Ensure only read-only GPUBuffers are used as read-only on the GPU.

Add symbols for new files:

  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:

LayoutTests:

Rewrite buffers.html -> map-write-buffers.html to test new functionality. Rewrite other affected
tests to use mapWriteAsync.

  • webgpu/buffer-resource-triangles.html:
  • webgpu/buffers-expected.txt: Renamed to map-write-buffers-expected.txt.
  • webgpu/buffers.html: Renamed to map-write-buffers.html.
  • webgpu/depth-enabled-triangle-strip.html:
  • webgpu/map-write-buffers-expected.txt: Renamed from buffers-expected.txt.
  • webgpu/map-write-buffers.html: Renamed from buffers.html.
  • webgpu/vertex-buffer-triangle-strip.html:
  • platform/mac/TestExpectations: Skip all webgpu tests on macOS 10.12 bots.
12:49 PM Changeset in webkit [241995] by Michael Catanzaro
  • 2 edits in trunk/Source/JavaScriptCore

Unreviewed, fix -Wunused-param warning

  • jsc.cpp:
11:11 AM Changeset in webkit [241994] by bshafiei@apple.com
  • 1 copy in tags/Safari-608.1.5.1.4

Tag Safari-608.1.5.1.4.

11:03 AM Changeset in webkit [241993] by bshafiei@apple.com
  • 7 edits in branches/safari-607-branch/Source

Versioning.

11:01 AM Changeset in webkit [241992] by bshafiei@apple.com
  • 1 copy in tags/Safari-607.1.37

Tag Safari-607.1.37.

10:15 AM Changeset in webkit [241991] by mark.lam@apple.com
  • 4 edits in trunk/Source

Add an exception check and some assertions in StringPrototype.cpp.
https://bugs.webkit.org/show_bug.cgi?id=194962
<rdar://problem/48013416>

Reviewed by Yusuke Suzuki and Saam Barati.

Source/JavaScriptCore:

  • runtime/StringPrototype.cpp:

(JSC::jsSpliceSubstrings):
(JSC::jsSpliceSubstringsWithSeparators):
(JSC::operationStringProtoFuncReplaceRegExpEmptyStr):

Source/WTF:

Add an AssertNoOverflow overflow handler which allows us to do CheckedArithmetic
for assertion purpose only on debug builds but sacrifices no performance on
release builds.

  • wtf/CheckedArithmetic.h:

(WTF::AssertNoOverflow::overflowed):
(WTF::AssertNoOverflow::clearOverflow):
(WTF::AssertNoOverflow::crash):
(WTF::AssertNoOverflow::hasOverflowed const):
(WTF::observesOverflow):
(WTF::observesOverflow<AssertNoOverflow>):
(WTF::safeAdd):
(WTF::safeSub):
(WTF::safeMultiply):
(WTF::Checked::operator+=):
(WTF::Checked::operator-=):
(WTF::Checked::operator*=):
(WTF::operator+):
(WTF::operator-):
(WTF::operator*):

10:01 AM Changeset in webkit [241990] by keith_miller@apple.com
  • 36 edits in trunk

Add new mac target numbers
https://bugs.webkit.org/show_bug.cgi?id=194955

Reviewed by Tim Horton.

Source/bmalloc:

  • Configurations/Base.xcconfig:
  • Configurations/DebugRelease.xcconfig:

Source/JavaScriptCore:

  • Configurations/Base.xcconfig:
  • Configurations/DebugRelease.xcconfig:

Source/ThirdParty/ANGLE:

  • Configurations/Base.xcconfig:
  • Configurations/DebugRelease.xcconfig:

Source/ThirdParty/libwebrtc:

  • Configurations/Base.xcconfig:
  • Configurations/DebugRelease.xcconfig:

Source/WebCore:

  • Configurations/Base.xcconfig:
  • Configurations/DebugRelease.xcconfig:

Source/WebCore/PAL:

  • Configurations/Base.xcconfig:
  • Configurations/DebugRelease.xcconfig:

Source/WebInspectorUI:

  • Configurations/Base.xcconfig:
  • Configurations/DebugRelease.xcconfig:

Source/WebKit:

  • Configurations/Base.xcconfig:
  • Configurations/DebugRelease.xcconfig:

Source/WebKitLegacy/mac:

  • Configurations/Base.xcconfig:
  • Configurations/DebugRelease.xcconfig:

Source/WTF:

  • Configurations/Base.xcconfig:
  • Configurations/DebugRelease.xcconfig:

Tools:

  • DumpRenderTree/mac/Configurations/Base.xcconfig:
  • DumpRenderTree/mac/Configurations/DebugRelease.xcconfig:
  • MiniBrowser/Configurations/Base.xcconfig:
  • TestWebKitAPI/Configurations/Base.xcconfig:
  • WebKitTestRunner/Configurations/Base.xcconfig:
8:11 AM Changeset in webkit [241989] by Chris Fleizach
  • 13 edits in trunk

AX: WebKit is incorrectly mapping the <meter> element to progressbar
https://bugs.webkit.org/show_bug.cgi?id=164051
<rdar://problem/29055615>

Reviewed by Joanmarie Diggs.

Source/WebCore:

Add a specific role for meter and map that to the appropriate mac role.

  • accessibility/AccessibilityNodeObject.cpp:

(WebCore::AccessibilityNodeObject::canHaveChildren const):
(WebCore::AccessibilityNodeObject::isProgressIndicator const):

  • accessibility/AccessibilityObject.cpp:

(WebCore::AccessibilityObject::accessibleNameDerivesFromContent const):
(WebCore::AccessibilityObject::isRangeControl const):
(WebCore::AccessibilityObject::computedRoleString const):

  • accessibility/AccessibilityObjectInterface.h:
  • accessibility/AccessibilityProgressIndicator.cpp:

(WebCore::AccessibilityProgressIndicator::roleValue const):

  • accessibility/AccessibilityProgressIndicator.h:
  • accessibility/AccessibilityRenderObject.cpp:

(WebCore::AccessibilityRenderObject::shouldFocusActiveDescendant const):

  • accessibility/ios/WebAccessibilityObjectWrapperIOS.mm:

(-[WebAccessibilityObjectWrapper determineIsAccessibilityElement]):

  • accessibility/mac/WebAccessibilityObjectWrapperMac.mm:

(createAccessibilityRoleMap):

LayoutTests:

  • platform/mac-wk2/accessibility/roles-exposed-expected.txt:
  • platform/mac/accessibility/meter-element-expected.txt:
  • platform/mac/accessibility/roles-exposed-expected.txt:

Feb 22, 2019:

9:30 PM Changeset in webkit [241988] by Chris Dumez
  • 20 edits in trunk/Source/WebKit

Give DrawingAreas their own identifiers
https://bugs.webkit.org/show_bug.cgi?id=194969
<rdar://problem/48154508>

Reviewed by Geoffrey Garen.

Give DrawingAreas their own identifiers instead of using the pageID. It will make the IPC more robust now that a
WebPageProxy can have several drawing areas with PSON.

  • Shared/DrawingAreaInfo.h:
  • Shared/WebPageCreationParameters.cpp:

(WebKit::WebPageCreationParameters::encode const):
(WebKit::WebPageCreationParameters::decode):

  • Shared/WebPageCreationParameters.h:
  • UIProcess/AcceleratedDrawingAreaProxy.cpp:

(WebKit::AcceleratedDrawingAreaProxy::sendUpdateBackingStoreState):
(WebKit::AcceleratedDrawingAreaProxy::waitForAndDispatchDidUpdateBackingStoreState):
(WebKit::AcceleratedDrawingAreaProxy::setNativeSurfaceHandleForCompositing):
(WebKit::AcceleratedDrawingAreaProxy::destroyNativeSurfaceHandleForCompositing):

  • UIProcess/DrawingAreaProxy.cpp:

(WebKit::DrawingAreaProxy::DrawingAreaProxy):
(WebKit::DrawingAreaProxy::~DrawingAreaProxy):
(WebKit::DrawingAreaProxy::messageSenderConnection const):
(WebKit::DrawingAreaProxy::sendMessage):
(WebKit::DrawingAreaProxy::viewExposedRectChangedTimerFired):

  • UIProcess/DrawingAreaProxy.h:

(WebKit::DrawingAreaProxy::identifier const):
(WebKit::DrawingAreaProxy::process const):

  • UIProcess/DrawingAreaProxyImpl.cpp:

(WebKit::DrawingAreaProxyImpl::update):

  • UIProcess/ProvisionalPageProxy.cpp:

(WebKit::ProvisionalPageProxy::initializeWebPage):

  • UIProcess/RemoteLayerTree/RemoteLayerTreeDrawingAreaProxy.mm:

(WebKit::RemoteLayerTreeDrawingAreaProxy::RemoteLayerTreeDrawingAreaProxy):
(WebKit::RemoteLayerTreeDrawingAreaProxy::~RemoteLayerTreeDrawingAreaProxy):
(WebKit::RemoteLayerTreeDrawingAreaProxy::deviceScaleFactorDidChange):
(WebKit::RemoteLayerTreeDrawingAreaProxy::sendUpdateGeometry):
(WebKit::RemoteLayerTreeDrawingAreaProxy::acceleratedAnimationDidStart):
(WebKit::RemoteLayerTreeDrawingAreaProxy::acceleratedAnimationDidEnd):
(WebKit::RemoteLayerTreeDrawingAreaProxy::didRefreshDisplay):
(WebKit::RemoteLayerTreeDrawingAreaProxy::waitForDidUpdateActivityState):
(WebKit::RemoteLayerTreeDrawingAreaProxy::dispatchAfterEnsuringDrawing):

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::initializeWebPage):
(WebKit::WebPageProxy::createNewPage):
(WebKit::WebPageProxy::creationParameters):

  • UIProcess/WebPageProxy.h:
  • UIProcess/mac/TiledCoreAnimationDrawingAreaProxy.mm:

(WebKit::TiledCoreAnimationDrawingAreaProxy::deviceScaleFactorDidChange):
(WebKit::TiledCoreAnimationDrawingAreaProxy::colorSpaceDidChange):
(WebKit::TiledCoreAnimationDrawingAreaProxy::waitForDidUpdateActivityState):
(WebKit::TiledCoreAnimationDrawingAreaProxy::sendUpdateGeometry):
(WebKit::TiledCoreAnimationDrawingAreaProxy::adjustTransientZoom):
(WebKit::TiledCoreAnimationDrawingAreaProxy::commitTransientZoom):
(WebKit::TiledCoreAnimationDrawingAreaProxy::dispatchAfterEnsuringDrawing):

  • WebProcess/WebPage/AcceleratedDrawingArea.cpp:

(WebKit::AcceleratedDrawingArea::AcceleratedDrawingArea):
(WebKit::AcceleratedDrawingArea::layerHostDidFlushLayers):
(WebKit::AcceleratedDrawingArea::sendDidUpdateBackingStoreState):

  • WebProcess/WebPage/DrawingArea.cpp:

(WebKit::DrawingArea::DrawingArea):
(WebKit::DrawingArea::removeMessageReceiverIfNeeded):

  • WebProcess/WebPage/DrawingArea.h:

(WebKit::DrawingArea::identifier const):
(WebKit::DrawingArea::send):

  • WebProcess/WebPage/DrawingAreaImpl.cpp:

(WebKit::DrawingAreaImpl::sendDidUpdateBackingStoreState):
(WebKit::DrawingAreaImpl::exitAcceleratedCompositingMode):
(WebKit::DrawingAreaImpl::display):

  • WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.mm:

(WebKit::RemoteLayerTreeDrawingArea::RemoteLayerTreeDrawingArea):
(WebKit::RemoteLayerTreeDrawingArea::updateGeometry):
(WebKit::RemoteLayerTreeDrawingArea::flushLayers):

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::reinitializeWebPage):

  • WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:

(WebKit::TiledCoreAnimationDrawingArea::TiledCoreAnimationDrawingArea):
(WebKit::TiledCoreAnimationDrawingArea::sendEnterAcceleratedCompositingModeIfNeeded):
(WebKit::TiledCoreAnimationDrawingArea::updateIntrinsicContentSizeIfNeeded):
(WebKit::TiledCoreAnimationDrawingArea::flushLayers):
(WebKit::TiledCoreAnimationDrawingArea::updateGeometry):
(WebKit::TiledCoreAnimationDrawingArea::setLayerHostingMode):

9:14 PM Changeset in webkit [241987] by Simon Fraser
  • 2 edits in trunk/LayoutTests

Fix a legacy animation test. The <!-- webkit-test-runner --> was inside the <style>.

  • legacy-animation-engine/animations/additive-transform-animations.html:
9:05 PM Changeset in webkit [241986] by rniwa@webkit.org
  • 2 edits in trunk/Source/WebCore

Crash in SWServerJobQueue::runNextJobSynchronously
https://bugs.webkit.org/show_bug.cgi?id=194974

Reviewed by Geoffrey Garen.

We suspect the crash is happening due to m_jobQueue being empty in runNextJobSynchronously
or there is a timer heap corruption again :(

Exit early when m_jobQueue is empty. Also add a debug assert that this should never happen
but convert an existing release assert to a debug assert since this appears to be hitting
too frequently in wild.

  • workers/service/server/SWServerJobQueue.cpp:

(WebCore::SWServerJobQueue::runNextJobSynchronously):

8:50 PM Changeset in webkit [241985] by aestes@apple.com
  • 2 edits in trunk/Source/WebKit

[Cocoa] Do not suppress deprecation warnings when calling sandbox_extension_issue_file
https://bugs.webkit.org/show_bug.cgi?id=194971
<rdar://problem/35786264>

Reviewed by Tim Horton.

sandbox_extension_issue_file is not actually deprecated.

  • Shared/mac/SandboxExtensionMac.mm:

(WebKit::SandboxExtensionImpl::sandboxExtensionForType):

8:40 PM Changeset in webkit [241984] by Simon Fraser
  • 16 edits in trunk/Source/WebCore

Clean up the setScrollPosition/setScrollPositionWithoutContentEdgeConstraints confusion in the scrolling tree nodes
https://bugs.webkit.org/show_bug.cgi?id=194968

Reviewed by Antti Koivisto.

Having both setScrollPosition() and setScrollPositionWithoutContentEdgeConstraints() is confusing because
you can't tell which is the bottleneck. So add a 'clamp' parameter to setScrollPosition() and merge them.

ScrollingTreeFrameScrollingNodeMac::setScrollPosition() replicates a bit of code but future cleanups will
reduce that.

  • page/scrolling/ScrollingTreeFrameScrollingNode.cpp:

(WebCore::ScrollingTreeFrameScrollingNode::setScrollPosition): Deleted. This was the same as the base class method.

  • page/scrolling/ScrollingTreeFrameScrollingNode.h:
  • page/scrolling/ScrollingTreeScrollingNode.cpp:

(WebCore::ScrollingTreeScrollingNode::setScrollPosition):
(WebCore::ScrollingTreeScrollingNode::clampScrollPosition const):
(WebCore::ScrollingTreeScrollingNode::scrollBy):
(WebCore::ScrollingTreeScrollingNode::setScrollPositionWithoutContentEdgeConstraints): Deleted.
(WebCore::ScrollingTreeScrollingNode::scrollByWithoutContentEdgeConstraints): Deleted.

  • page/scrolling/ScrollingTreeScrollingNode.h:
  • page/scrolling/ios/ScrollingTreeFrameScrollingNodeIOS.h:
  • page/scrolling/ios/ScrollingTreeFrameScrollingNodeIOS.mm:

(WebCore::ScrollingTreeFrameScrollingNodeIOS::setScrollPosition):
(WebCore::ScrollingTreeFrameScrollingNodeIOS::setScrollPositionWithoutContentEdgeConstraints): Deleted. Did nothing.

  • page/scrolling/mac/ScrollingTreeFrameScrollingNodeMac.h:
  • page/scrolling/mac/ScrollingTreeFrameScrollingNodeMac.mm:

(WebCore::ScrollingTreeFrameScrollingNodeMac::commitStateBeforeChildren):
(WebCore::ScrollingTreeFrameScrollingNodeMac::handleWheelEvent):
(WebCore::ScrollingTreeFrameScrollingNodeMac::setScrollPosition):
(WebCore::ScrollingTreeFrameScrollingNodeMac::setScrollPositionWithoutContentEdgeConstraints): Deleted.

  • page/scrolling/mac/ScrollingTreeOverflowScrollingNodeMac.h:
  • page/scrolling/mac/ScrollingTreeOverflowScrollingNodeMac.mm:

(WebCore::ScrollingTreeOverflowScrollingNodeMac::setScrollPosition):
(WebCore::ScrollingTreeOverflowScrollingNodeMac::setScrollPositionWithoutContentEdgeConstraints): Deleted.

  • page/scrolling/mac/ScrollingTreeScrollingNodeDelegateMac.mm:

(WebCore::ScrollingTreeScrollingNodeDelegateMac::immediateScrollByWithoutContentEdgeConstraints):

  • platform/PlatformWheelEvent.h:

(WebCore::PlatformWheelEvent::delta const):

  • platform/ScrollTypes.h:
8:31 PM Changeset in webkit [241983] by commit-queue@webkit.org
  • 3 edits
    2 adds in trunk

AX: Treat AXChildrenInNavigationOrder as AXChildren before adding support for aria-flowto
https://bugs.webkit.org/show_bug.cgi?id=194923

Patch by Eric Liang <ericliang@apple.com> on 2019-02-22
Reviewed by Chris Fleizach.

Source/WebCore:

Added AXChildrenInNavigationOrder attribute that returns the same array as from AXChildren. It prevents AppKit from reordering elements from the fallback AXChildren attribute.

Test: accessibility/mac/children-in-navigation-order-returns-children.html

  • accessibility/mac/WebAccessibilityObjectWrapperMac.mm:

(-[WebAccessibilityObjectWrapper accessibilityAttributeValue:]):

LayoutTests:

Added test to check AXChildrenInNavigationOrder returns non-empty array from AXChildren.

  • accessibility/mac/children-in-navigation-order-returns-children-expected.txt: Added.
  • accessibility/mac/children-in-navigation-order-returns-children.html: Added.
8:17 PM Changeset in webkit [241982] by Devin Rousso
  • 5 edits in trunk/Source/WebInspectorUI

Web Inspector: Timelines: add UI for preventing auto-stop
https://bugs.webkit.org/show_bug.cgi?id=194956

Reviewed by Joseph Pecoraro.

Add a checkbox to the navigation area of the Timelines tab that controls whether recordings
automatically stop (e.g. after "load" or a period of inactivity).

  • UserInterface/Views/TimelineRecordingContentView.js:

(WI.TimelineRecordingContentView):
(WI.TimelineRecordingContentView.prototype.get navigationItems):
(WI.TimelineRecordingContentView.prototype._handleAutoStopCheckboxCheckedDidChange): Added.
(WI.TimelineRecordingContentView.prototype._handleTimelinesAutoStopSettingChanged): Added.

  • UserInterface/Controllers/TimelineManager.js:

(WI.TimelineManager):
(WI.TimelineManager.prototype.capturingStopped):
(WI.TimelineManager.prototype._stopAutoRecordingSoon):
(WI.TimelineManager.prototype._resetAutoRecordingMaxTimeTimeout):
(WI.TimelineManager.prototype._resetAutoRecordingDeadTimeTimeout):
(WI.TimelineManager.prototype._handleTimelinesAutoStopSettingChanged):

  • UserInterface/Base/Setting.js:
  • Localizations/en.lproj/localizedStrings.js:
8:10 PM Changeset in webkit [241981] by Devin Rousso
  • 3 edits in trunk/Source/WebInspectorUI

REGRESSION(r?): Web Inspector: Popovers have inset shadows
https://bugs.webkit.org/show_bug.cgi?id=192963
<rdar://problem/46888679>

Reviewed by Brian Burg.

  • UserInterface/Views/Popover.js:

(WI.Popover.prototype._drawBackground):
(WI.Popover.prototype._drawBackground.isolate): Added.

  • UserInterface/Views/Popover.css:

(.popover):

8:07 PM Changeset in webkit [241980] by Devin Rousso
  • 4 edits in trunk/Source/WebInspectorUI

Web Inspector: Styles Redesign: clicking CSS property or selector should always select its text
https://bugs.webkit.org/show_bug.cgi?id=180791
<rdar://problem/36038366>

Reviewed by Brian Burg.

  • UserInterface/Views/SpreadsheetSelectorField.js:

(WI.SpreadsheetSelectorField):
(WI.SpreadsheetSelectorField.prototype.startEditing):
(WI.SpreadsheetSelectorField.prototype.stopEditing):
(WI.SpreadsheetSelectorField.prototype._handleMouseDown): Added.
(WI.SpreadsheetSelectorField.prototype._handleMouseUp): Added.
(WI.SpreadsheetSelectorField.prototype._handleFocus): Deleted.

  • UserInterface/Views/SpreadsheetCSSStyleDeclarationSection.js:

(WI.SpreadsheetCSSStyleDeclarationSection.prototype.initialLayout):

  • UserInterface/Views/SpreadsheetCSSStyleDeclarationSection.css:

(.spreadsheet-css-declaration .selector.editing:focus, .spreadsheet-css-declaration .selector > .matched): Added.
(.spreadsheet-css-declaration .selector.spreadsheet-selector-field):
(.spreadsheet-css-declaration .selector:focus, .spreadsheet-css-declaration .selector > .matched): Deleted.

8:05 PM Changeset in webkit [241979] by basuke.suzuki@sony.com
  • 4 edits
    2 adds in trunk

[WinCairo] Enable wk1/wk2 suffix for platform search path.
https://bugs.webkit.org/show_bug.cgi?id=194846

Reviewed by Don Olmstead.

Tools:

Added _search_paths() and _port_specific_expectations_files() for
WinCairoPort.

  • Scripts/webkitpy/port/win.py:

(WinCairoPort.default_baseline_search_path):
(WinCairoPort):
(WinCairoPort._port_specific_expectations_files):
(WinCairoPort._search_paths):

LayoutTests:

Added WebKitLegacy specific TestExpectations.

  • platform/wincairo-wk1/TestExpectations: Added.
  • platform/wincairo/TestExpectations:
6:38 PM Changeset in webkit [241978] by timothy_horton@apple.com
  • 7 edits in trunk

ProcessSwap.PageOverlayLayerPersistence fails on iOS and in debug builds
https://bugs.webkit.org/show_bug.cgi?id=194963

Reviewed by Dean Jackson.

Source/WebCore:

Tested by existing failing API test.

  • page/Page.cpp:

(WebCore::Page::installedPageOverlaysChanged): Deleted.

  • page/Page.h:

(WebCore::Page::pageOverlayController):

  • page/PageOverlayController.cpp:

(WebCore::PageOverlayController::installedPageOverlaysChanged):
(WebCore::PageOverlayController::detachViewOverlayLayers):
(WebCore::PageOverlayController::installPageOverlay):
(WebCore::PageOverlayController::uninstallPageOverlay):
(WebCore::PageOverlayController::willDetachRootLayer): Deleted.

  • page/PageOverlayController.h:

As intended by r240940, move installedPageOverlaysChanged to PageOverlayController.
Also, make it ignore isInWindow state; otherwise, if you install a overlay
and then come into window, nothing installs the root layer. There is no
need for this code to follow in-window state manually anymore since
the DrawingArea and RenderLayerCompositor just hook the layers up when needed.

Make some methods private, and make detachViewOverlayLayers only touch
*view* overlays, so that we don't detach the document-relative root
layer when you drop to having no view overlays. This maintains
existing behavior because nothing was calling PageOverlayController::detachViewOverlayLayers.

Now there are no callers of willDetachRootLayer, so remove it.

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/ProcessSwapOnNavigation.mm:

Do a contains check instead of equals, because in debug builds we
put the GraphicsLayer pointer in a prefix.

6:10 PM Changeset in webkit [241977] by dino@apple.com
  • 1 edit
    1 add in trunk/LayoutTests

Rotation animations sometimes use the wrong origin (affects apple.com)
https://bugs.webkit.org/show_bug.cgi?id=194878
<rdar://problem/43908047>

Reviewed by Simon Fraser.

Forgot another expected results file.

  • legacy-animation-engine/animations/additive-transform-animations-expected.html: Added.
6:06 PM Changeset in webkit [241976] by bshafiei@apple.com
  • 1 edit in branches/safari-607-branch/Tools/TestWebKitAPI/Configurations/FeatureDefines.xcconfig

Apply patch. rdar://problem/47289624

5:51 PM Changeset in webkit [241975] by Nikita Vasilyev
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: Dark Mode: DOM Content Loaded blue marker is too dark
https://bugs.webkit.org/show_bug.cgi?id=194970
<rdar://problem/48330126>

Reviewed by Joseph Pecoraro.

  • UserInterface/Views/TimelineRuler.css:

(@media (prefers-color-scheme: dark)):
(.timeline-ruler > .markers > .marker.dom-content-event):
Make the marker lighter for the dark mode.

5:50 PM Changeset in webkit [241974] by bshafiei@apple.com
  • 6 edits in branches/safari-607-branch/Source

Apply patch. rdar://problem/47289624

5:03 PM Changeset in webkit [241973] by rniwa@webkit.org
  • 2 edits in trunk/LayoutTests

Skip the test added in r241932 on iOS for now.

  • platform/ios/TestExpectations:
4:54 PM Changeset in webkit [241972] by Alan Coon
  • 1 edit in branches/safari-607-branch/Source/WebCore/page/mac/DragControllerMac.mm

Unreviwed build fix. rdar://problem/47289624

4:48 PM Changeset in webkit [241971] by Wenson Hsieh
  • 17 edits
    2 adds in trunk

[iOS] Callout menu overlaps in-page controls when editing a comment in github.com's issue tracker
https://bugs.webkit.org/show_bug.cgi?id=194873
<rdar://problem/46701974>

Reviewed by Tim Horton.

Source/WebKit:

On the topic of supporting web-based rich text editors on iOS, one problematic area has always been handling
conflicts between platform UI (i.e., the system callout menu) and in-page text editing controls. This issue
comes up in websites that don't use the "hidden contenteditable" approach to rich text editing, but also show
additional controls in a toolbar or contextual menu above the selection. In these cases, what often happens is
that system controls overlap controls in the page.

Luckily, the iOS callout menu (i.e. the private UICalloutBar) is capable of presenting with a list of "evasion
rects" to avoid; if the callout bar would normally intersect with one of these rects, then a different
orientation that does not intersect with one of these rects is chosen instead. Currently, the only rect added
here by UIKit when presenting the callout menu is the bounding rect of the on-screen keyboard, but after
<rdar://problem/48128337>, we now have a generalized mechanism for offering additional evasion rects before
UIKit presents the callout menu.

This patch adopts the mechanism introduced in <rdar://problem/48128337>, and introduces a heuristic for
determining the approximate location of controls in the page which might overlap the callout menu. This
heuristic works by hit-testing for clickable (but non-editable) nodes above the bounds of the selection, which
are additionally not hit-tested by advancing outwards from any of the other edges of the selection bounds.
Additionally, any hit-tested nodes whose bounding rects are very large (relative to the content view size) are
ignored (this deals with scenarios where the body or a large container element has a click handler). We then add
the bounding rects of each of the nodes that fit this criteria to the list of rects for UIKit to avoid when
presenting the system callout menu.

The result is that WebKit will, by default, avoid overlapping anything that looks like controls in the page when
showing a callout menu in editable content. In practice, this fixes overlapping controls on most websites that
roll their own context menu or toolbar in their rich text editor.

Test: editing/selection/ios/avoid-showing-callout-menu-over-controls.html

  • Platform/spi/ios/UIKitSPI.h:
  • UIProcess/WebPageProxy.h:
  • UIProcess/ios/WKContentViewInteraction.mm:

(-[WKContentView requestAutocorrectionRectsForString:withCompletionHandler:]):
(-[WKContentView requestRectsToEvadeForSelectionCommandsWithCompletionHandler:]):
(-[WKContentView requestAutocorrectionContextWithCompletionHandler:]):

Drive-by: handle null completion handler arguments more gracefully, by raising an NSException and bailing before
attempting to invoke a nil block.

  • UIProcess/ios/WebPageProxyIOS.mm:

(WebKit::WebPageProxy::requestEvasionRectsAboveSelection):

See above for more detail.

  • WebProcess/WebPage/WebPage.h:
  • WebProcess/WebPage/WebPage.messages.in:
  • WebProcess/WebPage/ios/WebPageIOS.mm:

(WebKit::WebPage::requestEvasionRectsAboveSelection):

Tools:

Add a couple of UIScriptController methods to make callout menu testing on iOS easier (see below).

  • DumpRenderTree/ios/UIScriptControllerIOS.mm:

(WTR::UIScriptController::menuRect const):
(WTR::UIScriptController::isShowingMenu const):

  • TestRunnerShared/UIScriptContext/Bindings/UIScriptController.idl:
  • TestRunnerShared/UIScriptContext/UIScriptController.cpp:

(WTR::UIScriptController::menuRect const):

Add a function to query the bounds of the callout menu in content coordinates.

(WTR::UIScriptController::isShowingMenu const):

Add a function to query whether the callout menu is shown (i.e., has finished its appearance animation).

  • TestRunnerShared/UIScriptContext/UIScriptController.h:
  • WebKitTestRunner/cocoa/TestRunnerWKWebView.h:
  • WebKitTestRunner/ios/UIScriptControllerIOS.mm:

(WTR::UIScriptController::rectForMenuAction const):
(WTR::UIScriptController::menuRect const):
(WTR::UIScriptController::isShowingMenu const):
(WTR::findViewInHierarchyOfType): Deleted.

LayoutTests:

Add a test to ensure that the we dodge clickable elements when showing the callout bar.

  • editing/selection/ios/avoid-showing-callout-menu-over-controls-expected.txt: Added.
  • editing/selection/ios/avoid-showing-callout-menu-over-controls.html: Added.
  • resources/ui-helper.js:

(window.UIHelper.waitForMenuToShow.return.new.Promise):
(window.UIHelper.waitForMenuToShow):
(window.UIHelper.menuRect):
(window.UIHelper):

4:41 PM Changeset in webkit [241970] by aestes@apple.com
  • 2 edits in trunk/Source/WebCore

[iOS] Break a reference cycle between PreviewLoader and ResourceLoader
https://bugs.webkit.org/show_bug.cgi?id=194964
<rdar://problem/48279441>

Reviewed by Alex Christensen.

When a document's QuickLook preview is loaded, a reference cycle is created between
PreviewLoader and ResourceLoader. Break the cycle by clearing m_previewLoader in
ResourceLoader::releaseResources().

Fixes leaks detected by run-webkit-tests --leaks LayoutTests/quicklook.

  • loader/ResourceLoader.cpp:

(WebCore::ResourceLoader::releaseResources):

4:32 PM WebKitGTK/2.24.x edited by Michael Catanzaro
(diff)
4:13 PM Changeset in webkit [241969] by Simon Fraser
  • 2 edits in trunk/Source/WebKit

Unreviewed build fix: need a WebCore:: namespace on ScrollingEventResult.

  • UIProcess/RemoteLayerTree/ios/ScrollingTreeOverflowScrollingNodeIOS.h:
4:05 PM Changeset in webkit [241968] by rmorisset@apple.com
  • 3 edits
    1 add in trunk

DFGBytecodeParser should not declare that a node won't clobberExit if DFGFixupPhase can later declare it does clobberExit
https://bugs.webkit.org/show_bug.cgi?id=194953
<rdar://problem/47595253>

Reviewed by Saam Barati.

JSTests:

I could not make this work without the infinite loop, so I am using a watchdog to be able to use it as a regression test.

  • stress/has-indexed-property-with-worsening-array-mode.js: Added.

Source/JavaScriptCore:

For each node that
(a) may or may not clobberExit depending on their arrayMode
(b) and get their arrayMode from profiling information in DFGBytecodeParser
(c) and can have their arrayMode refined by DFGFixupPhase,
We must make sure to be conservative in the DFGBytecodeParser and treat it as if it unconditionnally clobbered the exit.
Otherwise we will hit a validation failure after fixup if the next node was marked ExitValid and exits to the same semantic origin.

The list of nodes that fit (a) is:

  • StringCharAt
  • HasIndexProperty
  • GetByVal
  • PutByValDirect
  • PutByVal
  • PutByValAlias
  • GetIndexedPropertyStorage

Out of these, the following also fit (b) and (c):

  • HasIndexedProperty
  • GetByVal
  • PutByValDirect
  • PutByVal

GetByVal already had "m_exitOK = false; GetByVal must be treated as if it clobbers exit state, since FixupPhase may make it generic."
So we just have to fix the other three the same way.

  • dfg/DFGByteCodeParser.cpp:

(JSC::DFG::ByteCodeParser::parseBlock):
(JSC::DFG::ByteCodeParser::handlePutByVal):

3:41 PM Changeset in webkit [241967] by sihui_liu@apple.com
  • 5 edits in trunk/Source/WebCore

Crash under IDBServer::IDBConnectionToClient::identifier() const
https://bugs.webkit.org/show_bug.cgi?id=194843
<rdar://problem/48203102>

Reviewed by Geoffrey Garen.

UniqueIDBDatabase should ignore requests from connections that are already closed.

Tests are hard to create without some tricks on UniqueIDBDatabase so this fix is verified manually.
One test is created by adding delay to UniqueIDBDatabase::openBackingStore on the background thread to make sure
disconnection of web process happens before UniqueIDBDatabase::didOpenBackingStore, because didOpenBackingStore
may start a version change transaction and ask for identifier from the connection that is already gone.

  • Modules/indexeddb/server/IDBConnectionToClient.cpp:

(WebCore::IDBServer::IDBConnectionToClient::connectionToClientClosed):

  • Modules/indexeddb/server/IDBConnectionToClient.h:

(WebCore::IDBServer::IDBConnectionToClient::isClosed):

  • Modules/indexeddb/server/UniqueIDBDatabase.cpp:

(WebCore::IDBServer::UniqueIDBDatabase::clearStalePendingOpenDBRequests):
(WebCore::IDBServer::UniqueIDBDatabase::handleDatabaseOperations):
(WebCore::IDBServer::UniqueIDBDatabase::operationAndTransactionTimerFired):

  • Modules/indexeddb/server/UniqueIDBDatabase.h:
2:59 PM Changeset in webkit [241966] by Alan Coon
  • 1 edit in branches/safari-608.1.5.1-branch/Source/WebKit/UIProcess/RemoteLayerTree/ios/ScrollingTreeOverflowScrollingNodeIOS.h

Unreviewed build fix.

2:59 PM Changeset in webkit [241965] by Alan Coon
  • 1 edit in branches/safari-608.1.5.1-branch/Source/WebKit/UIProcess/RemoteLayerTree/RemoteLayerTreeNode.h

Unreviewed build fix. rdar://problem/46793397

2:54 PM Changeset in webkit [241964] by rmorisset@apple.com
  • 3 edits in trunk/Source/JavaScriptCore

B3ReduceStrength: missing peephole optimizations for binary operations
https://bugs.webkit.org/show_bug.cgi?id=194252

Reviewed by Saam Barati.

Adds several sets of optimizations for BitAnd, BitOr and BitXor.
Using BitAnd distributivity over BitOr and BitXor:

Turn any of these (for Op == BitOr
Op == BitXor):

Op(BitAnd(x1, x2), BitAnd(x1, x3))
Op(BitAnd(x2, x1), BitAnd(x1, x3))
Op(BitAnd(x1, x2), BitAnd(x3, x1))
Op(BitAnd(x2, x1), BitAnd(x3, x1))

Into this: BitAnd(Op(x2, x3), x1)
And any of these:

Op(BitAnd(x1, x2), x1)
Op(BitAnd(x2, x1), x1)
Op(x1, BitAnd(x1, x2))
Op(x1, BitAnd(x2, x1))

Into this: BitAnd(Op(x2, x1), x1)
This second set is equivalent to doing x1 => BitAnd(x1, x1), and then applying the first set.

Using de Morgan laws (we represent not as BitXor with allOnes):

BitAnd(BitXor(x1, allOnes), BitXor(x2, allOnes)) => BitXor(BitOr(x1, x2), allOnes)
BitOr(BitXor(x1, allOnes), BitXor(x2, allOnes) => BitXor(BitAnd(x1, x2), allOnes)
BitOr(BitXor(x, allOnes), c) => BitXor(BitAnd(x, ~c), allOnes)
BitAnd(BitXor(x, allOnes), c) => BitXor(BitOr(x, ~c), allOnes)

The latter two are equivalent to doing c => BitXor(~c, allOnes), and then applying the former two.

All of these transformations either reduce the number of operations (which we always do when possible), or bring the expression closer to having:

  • BitXor with all ones at the outermost
  • then BitAnd
  • then other BitXor
  • then BitOr at the innermost.

These transformations that don't directly reduce the number of operations are still useful for normalization (helping things like CSE), and also can enable
more optimizations (for example BitXor with all ones can easily cancel each other once they are all at the outermost level).

  • b3/B3ReduceStrength.cpp:
  • b3/testb3.cpp:

(JSC::B3::testBitAndNotNot):
(JSC::B3::testBitAndNotImm):
(JSC::B3::testBitOrAndAndArgs):
(JSC::B3::testBitOrAndSameArgs):
(JSC::B3::testBitOrNotNot):
(JSC::B3::testBitOrNotImm):
(JSC::B3::testBitXorAndAndArgs):
(JSC::B3::testBitXorAndSameArgs):
(JSC::B3::run):

1:17 PM Changeset in webkit [241963] by Chris Dumez
  • 7 edits in trunk

Regression(PSON) Unable to preview password-protected documents on iCloud.com
https://bugs.webkit.org/show_bug.cgi?id=194954
<rdar://problem/48127957>

Reviewed by Alex Christensen.

Source/WebKit:

Make sure the ProvisionalPageProxy forwards to the WebPageProxy the QuickLook-related
IPC on iOS.

  • UIProcess/ProvisionalPageProxy.cpp:

(WebKit::ProvisionalPageProxy::didRequestPasswordForQuickLookDocumentInMainFrame):
(WebKit::ProvisionalPageProxy::didReceiveMessage):

  • UIProcess/ProvisionalPageProxy.h:
  • UIProcess/WebPageProxy.h:
  • UIProcess/ios/WebPageProxyIOS.mm:

(WebKit::WebPageProxy::didRequestPasswordForQuickLookDocumentInMainFrame):
(WebKit::WebPageProxy::didRequestPasswordForQuickLookDocumentInMainFrameShared):

Tools:

Add API test coverage.

  • TestWebKitAPI/Tests/WebKitCocoa/ProcessSwapOnNavigation.mm:

(-[PSONNavigationDelegate _webViewDidRequestPasswordForQuickLookDocument:]):
(-[PSONNavigationDelegate _webView:didStartLoadForQuickLookDocumentInMainFrameWithFileName:uti:]):
(-[PSONNavigationDelegate _webView:didFinishLoadForQuickLookDocumentInMainFrame:]):

12:44 PM Changeset in webkit [241962] by pvollan@apple.com
  • 2 edits in trunk/Source/WebKit

[iOS] Sandbox should allow mach lookups related to media capturing
https://bugs.webkit.org/show_bug.cgi?id=194951
<rdar://problem/48013875>

Reviewed by Brent Fulgham.

  • Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb:
12:31 PM Changeset in webkit [241961] by bshafiei@apple.com
  • 4 edits in branches/safari-608.1.5.1-branch

Revert r241606. rdar://problem/47884404

12:31 PM Changeset in webkit [241960] by bshafiei@apple.com
  • 2 edits in branches/safari-608.1.5.1-branch/Source/WebKit

Revert r241631. rdar://problem/48126255

12:31 PM Changeset in webkit [241959] by bshafiei@apple.com
  • 12 edits in branches/safari-608.1.5.1-branch/Source

Revert r241721. rdar://problem/47677951

12:31 PM Changeset in webkit [241958] by bshafiei@apple.com
  • 9 edits in branches/safari-608.1.5.1-branch

Revert r241752. rdar://problem/48055151

12:31 PM Changeset in webkit [241957] by bshafiei@apple.com
  • 3 edits in branches/safari-608.1.5.1-branch/Source/WebKit

Cherry-pick r241584. rdar://problem/46793397

Unreviewed. Fix GTK+ build after r241556

I guess this is due to unified builds after a new file being added in r241556.

Patch by Carlos Garcia Campos <cgarcia@igalia.com> on 2019-02-15

  • UIProcess/API/C/WKAuthenticationDecisionListener.cpp:
  • UIProcess/API/C/WKPage.cpp:

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

12:20 PM Changeset in webkit [241956] by ysuzuki@apple.com
  • 3 edits in trunk/Source/JavaScriptCore

[JSC] putNonEnumerable in JSWrapperMap is too costly
https://bugs.webkit.org/show_bug.cgi?id=194935

Reviewed by Mark Lam.

When we convert Objective-C blocks to JS objects, we need to set up a corresponding function object correctly.
During this allocation, we call [JSValue defineProperty:descriptor] to connect a "prototype" object and "constructor" object.
The problem is that this API has a particularly costly implementation:

_context globalObject][@"Object"] invokeMethod:@"defineProperty" withArguments:@[ self, key, descriptor ;

This wraps each JS objects appear in this code with Objective-C wrapper. And we convert a NSDictionary to JSObject, which
has "writable", "enumerable", "configurable", "value" fields, and call the "defineProperty" JS function through Objective-C wrapper.
This allocates many Objective-C wrappers and JS objects for descriptors. Since JSC has a direct C++ API "defineOwnProperty", we should
bypass these Objective-C APIs and call JSC's code directly.

This patch changes putNonEnumerable implementation, from calling [JSValue defineProperty:descriptor] to calling JSC C++ code directly.
We do not change [JSValue defineProperty:descriptor] implementation for now because of two reasons. (1) This is not used in our benchmarks
except for this (converting an Objective-C block to a JS object) one path. And (2) even if we were to re-write [JSValue defineProperty:descriptor]
to be more optimized, we would still want to call the JSC C++ version of defineProperty directly here to avoid NSDictionary allocation for a descriptor.

  • API/APIUtils.h:

(setException):

  • API/JSWrapperMap.mm:

(putNonEnumerable):
(copyMethodsToObject):
(-[JSObjCClassInfo allocateConstructorAndPrototypeInContext:]):
(-[JSObjCClassInfo wrapperForObject:inContext:]):

11:15 AM Changeset in webkit [241955] by ysuzuki@apple.com
  • 3 edits in trunk/Source/JavaScriptCore

Unreviewed, build fix after r241954
https://bugs.webkit.org/show_bug.cgi?id=194939

Renaming setCanAccessHeap was incomplete.

  • runtime/SmallStrings.cpp:

(JSC::SmallStrings::initializeCommonStrings):

  • runtime/VM.cpp:

(JSC::VM::~VM):

11:04 AM Changeset in webkit [241954] by ysuzuki@apple.com
  • 4 edits in trunk/Source/JavaScriptCore

[JSC] SmallStringsStorage is unnecessary
https://bugs.webkit.org/show_bug.cgi?id=194939

Reviewed by Mark Lam.

SmallStrings hold common small JSStrings. Their underlying StringImpl is also held by SmallStringsStorage.
But it is duplicate since we can get StringImpl from small JSStrings. This patch removes SmallStringsStorage,
and get StringImpls from JSStrings if necessary.

We also add m_canAccessHeap flag to SmallStrings. At the time of VM destruction, JSStrings are destroyed when
VM's Heap is finalized. We must not touch JSStrings before VM's heap (and JSStrings in SmallStrings) is initialized,
and after VM's Heap is destroyed. We add this m_canAccessHeap flag to allow users to get StringImpl during the
this sensitive period. If m_canAccessHeap is false, we get StringImpl from AtomicStringImpl::add.

  • runtime/SmallStrings.cpp:

(JSC::SmallStrings::initializeCommonStrings):
(JSC::SmallStrings::singleCharacterStringRep):
(JSC::SmallStringsStorage::rep): Deleted.
(JSC::SmallStringsStorage::SmallStringsStorage): Deleted.
(JSC::SmallStrings::createSingleCharacterString): Deleted.

  • runtime/SmallStrings.h:

(JSC::SmallStrings::setCanAccessHeap):

  • runtime/VM.cpp:

(JSC::VM::VM):
(JSC::VM::~VM):

11:01 AM WebKitGTK/2.24.x edited by Michael Catanzaro
(diff)
10:46 AM Changeset in webkit [241953] by commit-queue@webkit.org
  • 4 edits in trunk/Source/WebInspectorUI

Web Inspector: Remove unused Timeline record selection code path
https://bugs.webkit.org/show_bug.cgi?id=194931

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2019-02-22
Reviewed by Devin Rousso.

  • UserInterface/Views/TimelineOverview.js:

(WI.TimelineOverview):
(WI.TimelineOverview.prototype.userSelectedRecord): Deleted.

  • UserInterface/Views/TimelineRecordingContentView.js:

(WI.TimelineRecordingContentView):
(WI.TimelineRecordingContentView.prototype.timelineOverviewUserSelectedRecord): Deleted.

  • UserInterface/Views/TimelineView.js:

(WI.TimelineView.prototype.userSelectedRecordFromOverview): Deleted.

10:46 AM Changeset in webkit [241952] by commit-queue@webkit.org
  • 3 edits in trunk/Source/WebKit

[GTK] Navigation gesture improvements
https://bugs.webkit.org/show_bug.cgi?id=194943

Patch by Alexander Mikhaylenko <exalm7659@gmail.com> on 2019-02-22
Reviewed by Michael Catanzaro.

Cancel the gesture if progress is less than 0.5 and velocity is not high enough.

Allow to continue the gesture during animation. Introduce finished state to be used
when showing snapshot after the animation ends.

Fix duration calculation, also slow it down so that the initial velocity matches
what it was during the gesture.

  • UIProcess/ViewGestureController.h: Add shouldCancel() and State::Finishing to SwipeProgressTracker.
  • UIProcess/gtk/ViewGestureControllerGtk.cpp:

(WebKit::ViewGestureController::SwipeProgressTracker::handleEvent):
Fix velocity calculation, allow scrolling during State::Animating.
(WebKit::ViewGestureController::SwipeProgressTracker::shouldCancel): Added.
(WebKit::ViewGestureController::SwipeProgressTracker::startAnimation): Use shouldCancel() and fix duration calculation.
(WebKit::ViewGestureController::SwipeProgressTracker::endAnimation): Set state to State::Finishing when the animation ends.

10:42 AM Changeset in webkit [241951] by Alan Coon
  • 1 edit in branches/safari-607-branch/Source/WebCore/page/ios/EventHandlerIOS.mm

Unreviewed build fix. rdar://problem/47289624

10:24 AM Changeset in webkit [241950] by Chris Dumez
  • 6 edits in trunk

REGRESSION(PSON) Scroll position is sometimes not restored on history navigation
https://bugs.webkit.org/show_bug.cgi?id=194924
<rdar://problem/48216125>

Reviewed by Geoffrey Garen.

Source/WebKit:

When process-swapping, we would create a new WebPage in the new process, which would
call restoreSessionInternal() to restore the HistoryItems based on the UIProcess's
backforward list. The issue is that this session restoring would send HistoryItem
updates back to the UIProcess. Without PSON, this would be unnecessary but harmless.
With PSON though, this may end up overwriting values set by the previous process,
such as the scroll position.

Address the issue by temporarily disabling the HistoryItem update notifications to
the UIProcess while restoring a session.

  • UIProcess/API/Cocoa/WKBackForwardListItem.mm:

(-[WKBackForwardListItem _scrollPosition]):

  • UIProcess/API/Cocoa/WKBackForwardListItemPrivate.h:
  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::restoreSessionInternal):

Tools:

Add API test coverage.

  • TestWebKitAPI/Tests/WebKitCocoa/ProcessSwapOnNavigation.mm:
9:09 AM Changeset in webkit [241949] by Wenson Hsieh
  • 11 edits
    1 move
    3 adds
    1 delete in trunk

Input type "formatSetInlineTextDirection" is dispatched when changing paragraph-level text direction
https://bugs.webkit.org/show_bug.cgi?id=194703
<rdar://problem/48111775>

Reviewed by Ryosuke Niwa.

Source/WebCore:

Currently, when changing text direction, WebKit always sends input events of type formatSetInlineTextDirection,
even when changing paragraph text direction. Instead, we should be emitting formatSetBlockTextDirection in this
scenario. This is problematic when using the context menus on macOS to change writing direction, since changing
"Selection Direction" is currently indistinguishable from changing "Paragraph Direction".

To fix this, we split EditAction::SetWritingDirection into EditAction::SetInlineWritingDirection and
EditAction::SetBlockWritingDirection, which emit inline and block text direction input events, respectively.

Tests: fast/events/before-input-events-prevent-block-text-direction.html

fast/events/before-input-events-prevent-inline-text-direction.html

  • editing/CompositeEditCommand.cpp:

(WebCore::CompositeEditCommand::apply):

  • editing/EditAction.cpp:

(WebCore::undoRedoLabel):

  • editing/EditAction.h:
  • editing/EditCommand.cpp:

(WebCore::inputTypeNameForEditingAction):

  • editing/Editor.cpp:

(WebCore::inputEventDataForEditingStyleAndAction):
(WebCore::Editor::setBaseWritingDirection):

  • editing/EditorCommand.cpp:

(WebCore::executeMakeTextWritingDirectionLeftToRight):
(WebCore::executeMakeTextWritingDirectionNatural):
(WebCore::executeMakeTextWritingDirectionRightToLeft):

Source/WebKitLegacy/win:

  • WebCoreSupport/WebEditorClient.cpp:

(undoNameForEditAction):

LayoutTests:

Rebaseline some existing tests to expect input events of type "formatSetBlockTextDirection" instead of
"formatSetInlineTextDirection" when changing paragraph text direction; additionally, add a new layout test that
changes the inline text direction in some Bidi text, and verify that "formatSetInlineTextDirection" is emitted
in this scenario, and that calling preventDefault() in the beforeinput event handler causes no change to be
made.

  • editing/input/ios/rtl-keyboard-input-on-focus-expected.txt:
  • fast/events/before-input-events-prevent-block-text-direction-expected.txt: Added.
  • fast/events/before-input-events-prevent-block-text-direction.html: Renamed from LayoutTests/fast/events/before-input-events-prevent-text-direction.html.
  • fast/events/before-input-events-prevent-inline-text-direction-expected.txt: Added.
  • fast/events/before-input-events-prevent-inline-text-direction.html: Added.
  • fast/events/before-input-events-prevent-text-direction-expected.txt: Removed.
8:48 AM Changeset in webkit [241948] by Chris Dumez
  • 2 edits in trunk/Tools

Unreviewed, disable API test added in r241928 on iOS.

The cache is not enabled on devices with less than 3GB of RAM.

  • TestWebKitAPI/Tests/WebKitCocoa/ProcessSwapOnNavigation.mm:
8:31 AM Changeset in webkit [241947] by commit-queue@webkit.org
  • 5 edits in trunk/Source/WebCore

Remove stripLeadingAndTrailingWhitespace from MathMLElement.cpp
https://bugs.webkit.org/show_bug.cgi?id=160172

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

Remove stripLeadingAndTrailingWhitespace and use stripLeadingAndTrailingHTTPSpaces
from HTTPParsers instead.

No new tests, already covered by MathML tests.

  • mathml/MathMLElement.cpp:

(WebCore::MathMLElement::stripLeadingAndTrailingWhitespace): Deleted.

  • mathml/MathMLElement.h:
  • mathml/MathMLPresentationElement.cpp:

(WebCore::MathMLPresentationElement::parseMathMLLength):

  • mathml/MathMLTokenElement.cpp:

(WebCore::MathMLTokenElement::convertToSingleCodePoint):

6:28 AM WebKitGTK/2.22.x edited by Adrian Perez de Castro
(diff)
6:28 AM Changeset in webkit [241946] by Adrian Perez de Castro
  • 2 edits in releases/WebKitGTK/webkit-2.22/Source/WebCore

Merged r241402 - [FreeType] Unable to render some Hebrew characters
https://bugs.webkit.org/show_bug.cgi?id=194498

Reviewed by Michael Catanzaro.

We are failing to find a font for some of the combining character sequences because normalization is failing due
to overflow error. In case of overflow, normalize returns the required length for the normalized characters, so
we should handle that case to resize the output buffer and try again.

  • platform/graphics/cairo/FontCairoHarfbuzzNG.cpp:

(WebCore::FontCascade::fontForCombiningCharacterSequence const):

5:52 AM Changeset in webkit [241945] by eric.carlson@apple.com
  • 6 edits in trunk/Source/WebCore

Update some media logging
https://bugs.webkit.org/show_bug.cgi?id=194915

Reviewed by Jer Noble.

No new tests, no functional change.

  • Modules/mediasource/SourceBuffer.cpp:

(WebCore::SourceBuffer::evictCodedFrames):
(WebCore::SourceBuffer::provideMediaData):
(WebCore::SourceBuffer::trySignalAllSamplesInTrackEnqueued):

  • html/HTMLMediaElement.cpp:

(WebCore::HTMLMediaElement::checkPlaybackTargetCompatablity):
(WebCore::HTMLMediaElement::loadResource):
(WebCore::HTMLMediaElement::updateActiveTextTrackCues):
(WebCore::HTMLMediaElement::canTransitionFromAutoplayToPlay const):
(WebCore::HTMLMediaElement::seekTask):
(WebCore::HTMLMediaElement::playInternal):
(WebCore::HTMLMediaElement::pauseInternal):
(WebCore::HTMLMediaElement::setLoop):
(WebCore::HTMLMediaElement::setControls):
(WebCore::HTMLMediaElement::sourceWasRemoved):

  • html/MediaElementSession.cpp:

(WebCore::convertEnumerationToString):

  • html/MediaElementSession.h:

(WTF::LogArgument<WebCore::MediaPlaybackDenialReason>::toString):

  • platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.mm:

(WebCore::SourceBufferPrivateAVFObjC::enqueueSample):

5:43 AM WebKitGTK/2.22.x edited by Adrian Perez de Castro
(diff)
5:43 AM Changeset in webkit [241944] by Adrian Perez de Castro
  • 2 edits in releases/WebKitGTK/webkit-2.22/Source/JavaScriptCore

Merged r241753 - Fix DFG doesGC() for CompareEq/Less/LessEq/Greater/GreaterEq and CompareStrictEq nodes.
https://bugs.webkit.org/show_bug.cgi?id=194800
<rdar://problem/48183773>

Reviewed by Yusuke Suzuki.

Fix doesGC() for the following nodes:

CompareEq:
CompareLess:
CompareLessEq:
CompareGreater:
CompareGreaterEq:
CompareStrictEq:

Only return false (i.e. does not GC) for child node use kinds that have
been vetted to not do anything that can GC. For all other use kinds
(including StringUse and BigIntUse), we return true (i.e. does GC).

  • dfg/DFGDoesGC.cpp:

(JSC::DFG::doesGC):

5:42 AM WebKitGTK/2.22.x edited by Adrian Perez de Castro
(diff)
5:35 AM Changeset in webkit [241943] by Adrian Perez de Castro
  • 1 edit in releases/WebKitGTK/webkit-2.24/Source/JavaScriptCore/ChangeLog

Merged r241753 - Fix DFG doesGC() for CompareEq/Less/LessEq/Greater/GreaterEq and CompareStrictEq nodes.
https://bugs.webkit.org/show_bug.cgi?id=194800
<rdar://problem/48183773>

Reviewed by Yusuke Suzuki.

Fix doesGC() for the following nodes:

CompareEq:
CompareLess:
CompareLessEq:
CompareGreater:
CompareGreaterEq:
CompareStrictEq:

Only return false (i.e. does not GC) for child node use kinds that have
been vetted to not do anything that can GC. For all other use kinds
(including StringUse and BigIntUse), we return true (i.e. does GC).

  • dfg/DFGDoesGC.cpp:

(JSC::DFG::doesGC):

2:42 AM Changeset in webkit [241942] by commit-queue@webkit.org
  • 4 edits in trunk

Fix unitless usage of mathsize
https://bugs.webkit.org/show_bug.cgi?id=194940

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

Source/WebCore:

Convert unitless lengths to percentage values to correct the computed
font size.

  • mathml/MathMLElement.cpp:

(WebCore::convertToPercentageIfNeeded):
(WebCore::MathMLElement::collectStyleForPresentationAttribute):

LayoutTests:

Tests lengths-1.html and length-3.html now pass.

1:43 AM Changeset in webkit [241941] by Adrian Perez de Castro
  • 4 edits in releases/WebKitGTK/webkit-2.24/Source/WebKit

Merged r241936 - [WPE][GTK] No API documentation generated for WebKitUserContentFilterStore
https://bugs.webkit.org/show_bug.cgi?id=194908

Reviewed by Carlos Garcia Campos.

  • UIProcess/API/gtk/docs/webkit2gtk-4.0.types: Add entry for webkit_user_content_filter_store_get_type().
  • UIProcess/API/gtk/docs/webkit2gtk-docs.sgml: Add entry for WebKitUserContentFilterStore.
  • UIProcess/API/wpe/docs/wpe-docs.sgml: Ditto.
1:43 AM Changeset in webkit [241940] by Adrian Perez de Castro
  • 2 edits in releases/WebKitGTK/webkit-2.24/Source/WebKit

Merged r241935 - wpewebkit-2.23.90 Failing to build on Fedora
https://bugs.webkit.org/show_bug.cgi?id=194922

Unreviewed. Fix path to WebKitUserContentFilterStore.h in WPE_API_INSTALLED_HEADERS.

  • PlatformWPE.cmake:
1:18 AM Changeset in webkit [241939] by Adrian Perez de Castro
  • 2 edits in trunk

Unreviewed. Bump version numbers

  • Source/cmake/OptionsWPE.cmake:
1:08 AM Changeset in webkit [241938] by Tadeu Zagallo
  • 5 edits in trunk/Source/JavaScriptCore

Cache CompactVariableMap::Handle instead of VariableEnvironment for UnlinkedFunctionExecutable
https://bugs.webkit.org/show_bug.cgi?id=194706

Reviewed by Saam Barati.

In https://bugs.webkit.org/show_bug.cgi?id=194583 we started using a
CompactVariableMap::Handle instead of VariableEnvironment for
UnlinkedFunctionExecutables, but we were creating the full environment
to encode the executable in the bytecode cache. This patch changes it so
that we cache the handle instead of the environment. This avoids duplicating
the VariableEnvironment whenever we have to cache two handles that point
to the environment.

  • bytecode/UnlinkedFunctionExecutable.h:
  • parser/VariableEnvironment.cpp:

(JSC::CompactVariableMap::get):

  • parser/VariableEnvironment.h:
  • runtime/CachedTypes.cpp:

(JSC::CachedCompactVariableEnvironment::encode):
(JSC::CachedCompactVariableEnvironment::decode const):
(JSC::CachedCompactVariableMapHandle::encode):
(JSC::CachedCompactVariableMapHandle::decode const):
(JSC::CachedFunctionExecutable::encode):
(JSC::CachedFunctionExecutable::decode const):
(JSC::UnlinkedFunctionExecutable::UnlinkedFunctionExecutable):

Note: See TracTimeline for information about the timeline view.