WebKit-https.git
6 months agoAbsolute in stacking-context scroller jiggles when scrolled
simon.fraser@apple.com [Thu, 21 Mar 2019 18:58:09 +0000 (18:58 +0000)]
Absolute in stacking-context scroller jiggles when scrolled
https://bugs.webkit.org/show_bug.cgi?id=196010

Reviewed by Zalan Bujtas.

Source/WebCore:

Updating compositing layers after a scroll (in a compositing update on the main thread)
failed to traverse to an absolute layer inside a stacking-context overflow:scroll,
because the overflow's layer didn't have the "hasCompositingAncestor" bit set on it.

This happened because childState.subtreeIsCompositing wasn't being set when indirect
reasons trigger compositing. So clean up RenderLayerCompositor::computeCompositingRequirements()
to set childState.subtreeIsCompositing for "late" compositing decisions, and move the
"Subsequent layers in the parent stacking context also need to composite" chunk
down to after the last compositing decision has been made.

Test: compositing/overflow/absolute-in-overflow.html

* page/scrolling/ScrollingTreeScrollingNode.cpp:
(WebCore::ScrollingTreeScrollingNode::scrollTo):
* page/scrolling/cocoa/ScrollingTreePositionedNode.mm:
(WebCore::ScrollingTreePositionedNode::applyLayerPositions):
* rendering/RenderLayerCompositor.cpp:
(WebCore::RenderLayerCompositor::computeCompositingRequirements):

LayoutTests:

* compositing/overflow/absolute-in-overflow-expected.html: Added.
* compositing/overflow/absolute-in-overflow.html: Added.

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

6 months agoStyle check error "WK_MAC_TBA is neither a version number nor WK_IOS_TBA" is confusing.
timothy@apple.com [Thu, 21 Mar 2019 18:57:09 +0000 (18:57 +0000)]
Style check error "WK_MAC_TBA is neither a version number nor WK_IOS_TBA" is confusing.
https://bugs.webkit.org/show_bug.cgi?id=196088

Reviewed by Brian Burg.

Fix the error messages used when looking for macos(WK_IOS_TBA) or ios(WK_MAC_TBA).
Support checks when only one platform is specified. Also deprecate macosx() and
force the use of macos() instead.

* Scripts/webkitpy/style/checkers/cpp.py:
(check_min_versions_of_wk_api_available):
* Scripts/webkitpy/style/checkers/cpp_unittest.py:
(WebKitStyleTest.test_min_versions_of_wk_api_available):

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

6 months ago[ContentChangeObserver] Start tracking implicit transitions at touchStart
zalan@apple.com [Thu, 21 Mar 2019 18:49:52 +0000 (18:49 +0000)]
[ContentChangeObserver] Start tracking implicit transitions at touchStart
https://bugs.webkit.org/show_bug.cgi?id=196051
<rdar://problem/49092952>

Reviewed by Simon Fraser.

Source/WebCore:

This patch enables transition tracking on touchStart.

1. Start observing for new transitions at touchStart
2. Stop observing at touchEnd
3. Check the next style recalc when the transition is finished (at onAnimationEnd we don't yet have the final computed style).
4. Remove the tracked transition when it is canceled.

Tests: fast/events/touch/ios/content-observation/0ms-transition-on-touch-start.html
       fast/events/touch/ios/content-observation/100ms-transition-on-touch-start.html
       fast/events/touch/ios/content-observation/10ms-delay-transition-on-touch-start.html
       fast/events/touch/ios/content-observation/transition-on-touch-start-and-remove.html

* page/ios/ContentChangeObserver.cpp:
(WebCore::ContentChangeObserver::didAddTransition):
(WebCore::ContentChangeObserver::didFinishTransition):
(WebCore::ContentChangeObserver::didRemoveTransition):
(WebCore::ContentChangeObserver::adjustObservedState):
* page/ios/ContentChangeObserver.h:
(WebCore::ContentChangeObserver::setShouldObserveTransitions):
(WebCore::ContentChangeObserver::clearObservedTransitions):
(WebCore::ContentChangeObserver::hasObservedTransition const):
(WebCore::ContentChangeObserver::hasPendingActivity const):

LayoutTests:

* fast/events/touch/ios/content-observation/0ms-transition-on-touch-start-expected.txt: Added.
* fast/events/touch/ios/content-observation/0ms-transition-on-touch-start.html: Added.
* fast/events/touch/ios/content-observation/100ms-transition-on-touch-start-expected.txt: Added.
* fast/events/touch/ios/content-observation/100ms-transition-on-touch-start.html: Added.
* fast/events/touch/ios/content-observation/10ms-delay-transition-on-touch-start-expected.txt: Added.
* fast/events/touch/ios/content-observation/10ms-delay-transition-on-touch-start.html: Added.
* fast/events/touch/ios/content-observation/transition-on-touch-start-and-remove-expected.txt: Added.
* fast/events/touch/ios/content-observation/transition-on-touch-start-and-remove.html: Added.

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

6 months agoVersioning.
alancoon@apple.com [Thu, 21 Mar 2019 18:46:54 +0000 (18:46 +0000)]
Versioning.

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

6 months ago[ContentChangeObserver] Track hidden elements only while transitioning.
zalan@apple.com [Thu, 21 Mar 2019 18:38:39 +0000 (18:38 +0000)]
[ContentChangeObserver] Track hidden elements only while transitioning.
https://bugs.webkit.org/show_bug.cgi?id=196050
<rdar://problem/49092037>

Reviewed by Simon Fraser.

Use the existing isConsideredHidden() logic to decide whether the current transition should be tracked.

* page/ios/ContentChangeObserver.cpp:
(WebCore::isConsideredHidden):
(WebCore::ContentChangeObserver::didAddTransition):
(WebCore::ContentChangeObserver::StyleChangeScope::StyleChangeScope):
(WebCore::ContentChangeObserver::StyleChangeScope::~StyleChangeScope):
(WebCore::ContentChangeObserver::StyleChangeScope::isConsideredHidden const): Deleted.
* page/ios/ContentChangeObserver.h:

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

6 months ago[ContentChangeObserver] Add support for observing implicit transitions
zalan@apple.com [Thu, 21 Mar 2019 18:33:11 +0000 (18:33 +0000)]
[ContentChangeObserver] Add support for observing implicit transitions
https://bugs.webkit.org/show_bug.cgi?id=195914
<rdar://problem/49091959>

Reviewed by Simon Fraser.

This patch is in preparation for observing elements with property "left" implicit transitions.

This is not a continuous tracking, we are only interested in the start and the end state.
The idea here is to register hidden elements only and check if they become visible by
the end of the transition (and ignore if the transition gets "canceled").

* page/animation/AnimationBase.h:
* page/animation/ImplicitAnimation.cpp:
(WebCore::ImplicitAnimation::ImplicitAnimation):
(WebCore::ImplicitAnimation::~ImplicitAnimation):
(WebCore::ImplicitAnimation::clear):
(WebCore::ImplicitAnimation::onAnimationEnd):
* page/animation/ImplicitAnimation.h:
* page/ios/ContentChangeObserver.cpp:
(WebCore::ContentChangeObserver::didAddTransition):
(WebCore::ContentChangeObserver::removeTransitionIfNeeded):
(WebCore::ContentChangeObserver::didFinishTransition):
(WebCore::ContentChangeObserver::didRemoveTransition):
(WebCore::ContentChangeObserver::didInstallDOMTimer):
* page/ios/ContentChangeObserver.h:
(WebCore::ContentChangeObserver::isObservingTransitions const):
(WebCore::ContentChangeObserver::isObservedPropertyForTransition const):

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

6 months agoWeb Inspector: Page: lazily create the agent
drousso@apple.com [Thu, 21 Mar 2019 18:22:08 +0000 (18:22 +0000)]
Web Inspector: Page: lazily create the agent
https://bugs.webkit.org/show_bug.cgi?id=195592
<rdar://problem/48791916>

Reviewed by Timothy Hatcher.

No change in functionality.

Have more agents save the inspected `Page` so they don't need to access it via the
`InspectorPageAgent`. Make some of `InspectorPageAgent`'s functions `static` so other
agents can use them without needing to have access to an enabled `InspectorPageAgent`.

* inspector/InspectorController.cpp:
(WebCore::InspectorController::InspectorController):
(WebCore::InspectorController::createLazyAgents):

* inspector/agents/InspectorPageAgent.h:
(WebCore::InspectorPageAgent::page): Deleted.
* inspector/agents/InspectorPageAgent.cpp:
(WebCore::InspectorPageAgent::InspectorPageAgent):
(WebCore::InspectorPageAgent::enable):
(WebCore::InspectorPageAgent::disable):
(WebCore::InspectorPageAgent::reload):
(WebCore::InspectorPageAgent::navigate):
(WebCore::InspectorPageAgent::overrideSetting):
(WebCore::InspectorPageAgent::getCookies):
(WebCore::InspectorPageAgent::deleteCookie):
(WebCore::InspectorPageAgent::getResourceTree):
(WebCore::InspectorPageAgent::searchInResources):
(WebCore::InspectorPageAgent::didPaint):
(WebCore::InspectorPageAgent::didLayout):
(WebCore::InspectorPageAgent::didScroll):
(WebCore::InspectorPageAgent::didRecalculateStyle):
(WebCore::InspectorPageAgent::setEmulatedMedia):
(WebCore::InspectorPageAgent::setForcedAppearance):
(WebCore::InspectorPageAgent::getCompositingBordersVisible):
(WebCore::InspectorPageAgent::setCompositingBordersVisible):
(WebCore::InspectorPageAgent::snapshotNode):
(WebCore::InspectorPageAgent::snapshotRect):
(WebCore::InspectorPageAgent::archive):
(WebCore::InspectorPageAgent::mainFrame): Deleted.
(WebCore::InspectorPageAgent::hasIdForFrame const): Deleted.

* inspector/agents/InspectorApplicationCacheAgent.h:
* inspector/agents/InspectorApplicationCacheAgent.cpp:
(WebCore::InspectorApplicationCacheAgent::InspectorApplicationCacheAgent):
(WebCore::InspectorApplicationCacheAgent::updateApplicationCacheStatus):
(WebCore::InspectorApplicationCacheAgent::getFramesWithManifests):
(WebCore::InspectorApplicationCacheAgent::assertFrameWithDocumentLoader):

* inspector/agents/InspectorCanvasAgent.h:
* inspector/agents/InspectorCanvasAgent.cpp:
(WebCore::InspectorCanvasAgent::InspectorCanvasAgent):
(WebCore::InspectorCanvasAgent::enable):

* inspector/agents/InspectorDOMStorageAgent.h:
* inspector/agents/InspectorDOMStorageAgent.cpp:
(WebCore::InspectorDOMStorageAgent::InspectorDOMStorageAgent):
(WebCore::InspectorDOMStorageAgent::findStorageArea):

* inspector/agents/InspectorIndexedDBAgent.h:
* inspector/agents/InspectorIndexedDBAgent.cpp:
(WebCore::InspectorIndexedDBAgent::InspectorIndexedDBAgent):
(WebCore::InspectorIndexedDBAgent::requestDatabaseNames):
(WebCore::InspectorIndexedDBAgent::requestDatabase):
(WebCore::InspectorIndexedDBAgent::requestData):
(WebCore::InspectorIndexedDBAgent::clearObjectStore):

* inspector/agents/page/PageDebuggerAgent.h:
* inspector/agents/page/PageDebuggerAgent.cpp:
(WebCore::PageDebuggerAgent::PageDebuggerAgent):
(WebCore::PageDebuggerAgent::sourceMapURLForScript):
(WebCore::PageDebuggerAgent::breakpointActionLog):
(WebCore::PageDebuggerAgent::injectedScriptForEval):

* inspector/agents/page/PageNetworkAgent.h:
* inspector/agents/page/PageNetworkAgent.cpp:
(WebCore::PageNetworkAgent::PageNetworkAgent):
(WebCore::PageNetworkAgent::loaderIdentifier):
(WebCore::PageNetworkAgent::frameIdentifier):
(WebCore::PageNetworkAgent::setResourceCachingDisabled):
(WebCore::PageNetworkAgent::scriptExecutionContext):

* inspector/InspectorInstrumentation.cpp:
(WebCore::InspectorInstrumentation::didClearWindowObjectInWorldImpl):

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

6 months ago[iOS] Inline -_ensureFormAccessoryView into -formAccessoryView and have -_updateAcces...
dbates@webkit.org [Thu, 21 Mar 2019 18:14:57 +0000 (18:14 +0000)]
[iOS] Inline -_ensureFormAccessoryView into -formAccessoryView and have -_updateAccessory ensure we have a form accessory
https://bugs.webkit.org/show_bug.cgi?id=196021

Reviewed by Wenson Hsieh.

Every caller of -_ensureFormAccessoryView, except -formAccessoryView, immediately follows the call
with a call to -_updateAccessory. Let's just have -_updateAccessory ensure we have a form accessory
view and inline the implementation of -_ensureFormAccessoryView into -formAccessoryView so we can
remove one method.

* UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView inputView]): Remove call to -_ensureFormAccessoryView, -_updateAccessory will do
the equivalent work for us.
(-[WKContentView formAccessoryView]): Moved implementation of -_ensureFormAccessoryView into here.
(-[WKContentView _updateAccessory]): Call self.formAccessoryView to ensure we have a form accessory view.
(-[WKContentView _elementDidFocus:userIsInteracting:blurPreviousNode:changingActivityState:userObject:]):
Remove call to -_ensureFormAccessoryView, -_updateAccessory will do
the equivalent work for us.
(-[WKContentView _ensureFormAccessoryView]): Deleted.

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

6 months agoWeb Inspector: Timelines: flatten the overview to show all records, one per line
drousso@apple.com [Thu, 21 Mar 2019 18:03:02 +0000 (18:03 +0000)]
Web Inspector: Timelines: flatten the overview to show all records, one per line
https://bugs.webkit.org/show_bug.cgi?id=191901
<rdar://problem/46423618>

Reviewed by Timothy Hatcher.

* UserInterface/Views/OverviewTimelineView.js:
(WI.OverviewTimelineView):
(WI.OverviewTimelineView.prototype.closed):
(WI.OverviewTimelineView.prototype.get navigationItems): Added.
(WI.OverviewTimelineView.prototype.reset):
(WI.OverviewTimelineView.prototype.layout):
(WI.OverviewTimelineView.prototype.get _relevantTimelines): Added.
(WI.OverviewTimelineView.prototype.get _shouldGroupBySourceCode): Added.
(WI.OverviewTimelineView.prototype._loadExistingRecords): Added.
(WI.OverviewTimelineView.prototype._insertDataGridNode):
(WI.OverviewTimelineView.prototype._addResourceToDataGridIfNeeded):
(WI.OverviewTimelineView.prototype._addSourceCodeTimeline):
(WI.OverviewTimelineView.prototype._processPendingRepresentedObjects):
(WI.OverviewTimelineView.prototype._handleGroupBySourceCodeSettingChanged): Added.
(WI.OverviewTimelineView.prototype._handleGroupBySourceCodeNavigationItemCheckedDidChange): Added.
(WI.OverviewTimelineView.prototype._handleTimelineRecordAdded): Added.
(WI.OverviewTimelineView.prototype._sourceCodeTimelineAdded):
(WI.OverviewTimelineView.prototype._networkTimelineRecordAdded): Deleted.
Listen for new records on all timelines. Add each record as a new line. Since each timeline
has different data to display, only show the "name" and "graph" for all records.

* UserInterface/Views/TimelineRecordingContentView.js:
(WI.TimelineRecordingContentView):
(WI.TimelineRecordingContentView.prototype._currentContentViewDidChange):
(WI.TimelineRecordingContentView.prototype._updateImportedView): Deleted.
When viewing the overview of an imported recording, show the non-grouped overview.

* UserInterface/Models/TimelineRecording.js:
(WI.TimelineRecording.prototype.addRecord):
(WI.TimelineRecording.prototype._keyForRecord):
Drive-by: show Media timeline events under the owner frame's resource when grouped.
* UserInterface/Views/TimelineRecordBar.css:
(.timeline-record-bar.timeline-record-type-script.garbage-collected > .segment, .timeline-record-bar.timeline-record-type-heap-allocations > .segment): Added.
(.timeline-record-bar.timeline-record-type-script.garbage-collected > .segment): Deleted.

* UserInterface/Base/Setting.js:
Add setting for controlling the Timeline overview grouping.

* UserInterface/Main.html:
* UserInterface/Views/SourceCodeTimelineTreeElement.js: Removed.
* UserInterface/Views/TimelineRecordingImportedView.js: Removed.
* UserInterface/Views/TimelineRecordingImportedView.css: Removed.
Remove unused files.

* Localizations/en.lproj/localizedStrings.js:

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

6 months agoWeb Inspector: Sources: the name of the file should not be used as a folder
drousso@apple.com [Thu, 21 Mar 2019 18:00:43 +0000 (18:00 +0000)]
Web Inspector: Sources: the name of the file should not be used as a folder
https://bugs.webkit.org/show_bug.cgi?id=196064
<rdar://problem/49097710>

Reviewed by Timothy Hatcher.

* UserInterface/Views/GeneralTreeElement.js:
(WI.GeneralTreeElement.prototype.createFoldersAsNeededForSubpath):

* UserInterface/Views/SourcesNavigationSidebarPanel.js:
(WI.SourcesNavigationSidebarPanel.prototype._addResource):
Drive-by: sort resources in each folder by name when grouping by path.
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@243300 268f45cc-cd09-0410-ab3c-d52691b4dbfc

6 months agoJSObject::putDirectIndexSlowOrBeyondVectorLength should check if indexIsSufficientlyB...
tzagallo@apple.com [Thu, 21 Mar 2019 17:42:41 +0000 (17:42 +0000)]
JSObject::putDirectIndexSlowOrBeyondVectorLength should check if indexIsSufficientlyBeyondLengthForSparseMap
https://bugs.webkit.org/show_bug.cgi?id=196078
<rdar://problem/35925380>

Reviewed by Mark Lam.

JSTests:

Add a new benchmark that allocates several objects and invokes put_by_val_direct
with a large index. run-jsc-benchmarks says "definitely 1.6178x faster".

* microbenchmarks/put-by-val-direct-large-index.js: Added.

Source/JavaScriptCore:

Unlike the other variations of putByIndex, it only checked if the index
was larger than MIN_SPARSE_ARRAY_INDEX when the indexingType was
ALL_BLANK_INDEXING_TYPES. This resulted in a huge butterfly being
allocated for object literals (e.g. `{[9e4]: ...}`) and objects parsed
from JSON.

* runtime/JSObject.cpp:
(JSC::JSObject::putDirectIndexSlowOrBeyondVectorLength):

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

6 months agoHardening: Use WeakPtrs in VideoFullscreenInterface{Mac,AVKit}
bfulgham@apple.com [Thu, 21 Mar 2019 17:21:38 +0000 (17:21 +0000)]
Hardening: Use WeakPtrs in VideoFullscreenInterface{Mac,AVKit}
https://bugs.webkit.org/show_bug.cgi?id=196052
<rdar://problem/48778571>

Reviewed by Eric Carlson.

The VideoFullscreenInterface{Mac,AVKit} implementations store their fullscreen model
and fullscreen change observer members as bare pointers, something we've been working
to eliminate.

This patch corrects this oversight.

No new tests since no changes in behavior.

* platform/cocoa/VideoFullscreenChangeObserver.h:
* platform/cocoa/VideoFullscreenModel.h:
* platform/ios/VideoFullscreenInterfaceAVKit.h:
* platform/ios/VideoFullscreenInterfaceAVKit.mm:
(VideoFullscreenInterfaceAVKit::setVideoFullscreenModel):
(VideoFullscreenInterfaceAVKit::setVideoFullscreenChangeObserver):
(VideoFullscreenInterfaceAVKit::presentingViewController):
(VideoFullscreenInterfaceAVKit::invalidate):
(VideoFullscreenInterfaceAVKit::preparedToExitFullscreen):
(VideoFullscreenInterfaceAVKit::shouldExitFullscreenWithReason):
(VideoFullscreenInterfaceAVKit::doSetup):
* platform/mac/VideoFullscreenInterfaceMac.h:
(WebCore::VideoFullscreenInterfaceMac::videoFullscreenModel const):
(WebCore::VideoFullscreenInterfaceMac::videoFullscreenChangeObserver const):
* platform/mac/VideoFullscreenInterfaceMac.mm:
(WebCore::VideoFullscreenInterfaceMac::setVideoFullscreenModel):
(WebCore::VideoFullscreenInterfaceMac::setVideoFullscreenChangeObserver):
(WebCore::VideoFullscreenInterfaceMac::enterFullscreen):
(WebCore::VideoFullscreenInterfaceMac::invalidate):

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

6 months agoUpdate status inactive committers' status to 'contributor'.
ap@apple.com [Thu, 21 Mar 2019 17:11:25 +0000 (17:11 +0000)]
Update status inactive committers' status to 'contributor'.

* Scripts/webkitpy/common/config/contributors.json:

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

6 months agoSmart delete for paragraphs.
megan_gardner@apple.com [Thu, 21 Mar 2019 17:03:17 +0000 (17:03 +0000)]
Smart delete for paragraphs.
https://bugs.webkit.org/show_bug.cgi?id=195837

Reviewed by Ryosuke Niwa.

Remove additional newlines to maintain spacing around paragraphs.

Tests: editing/pasteboard/smart-delete-paragraph-001.html
       editing/pasteboard/smart-delete-paragraph-002.html
       editing/pasteboard/smart-delete-paragraph-003.html
       editing/pasteboard/smart-delete-paragraph-004.html

* editing/DeleteSelectionCommand.cpp:
(WebCore::isBlankLine):
(WebCore::DeleteSelectionCommand::initializePositionData):

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

6 months agoCachedUnlinkedSourceCodeShape::m_provider should be a CachedRefPtr
tzagallo@apple.com [Thu, 21 Mar 2019 16:45:25 +0000 (16:45 +0000)]
CachedUnlinkedSourceCodeShape::m_provider should be a CachedRefPtr
https://bugs.webkit.org/show_bug.cgi?id=196079

Reviewed by Saam Barati.

It was mistakenly cached as CachedPtr, which was leaking the decoded SourceProvider.

* runtime/CachedTypes.cpp:
(JSC::CachedUnlinkedSourceCodeShape::encode):

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

6 months agoPlacate exception check validation in operationArrayIndexOfString().
mark.lam@apple.com [Thu, 21 Mar 2019 16:36:20 +0000 (16:36 +0000)]
Placate exception check validation in operationArrayIndexOfString().
https://bugs.webkit.org/show_bug.cgi?id=196067
<rdar://problem/49056572>

Reviewed by Michael Saboff.

JSTests:

* stress/string-equal-exception-check.js: Added.

Source/JavaScriptCore:

* dfg/DFGOperations.cpp:

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

6 months ago[JSC][x86] Drop support for x87 floating point
commit-queue@webkit.org [Thu, 21 Mar 2019 16:29:32 +0000 (16:29 +0000)]
[JSC][x86] Drop support for x87 floating point
https://bugs.webkit.org/show_bug.cgi?id=194853

Patch by Xan Lopez <xan@igalia.com> on 2019-03-21
Reviewed by Don Olmstead.

Source/JavaScriptCore:

Require SSE2 throughout the codebase, and remove x87 support where
it was optionally available. SSE2 detection happens at compile
time through a static_assert.

* assembler/MacroAssemblerX86.h:
(JSC::MacroAssemblerX86::storeDouble):
(JSC::MacroAssemblerX86::moveDoubleToInts):
(JSC::MacroAssemblerX86::supportsFloatingPoint):
(JSC::MacroAssemblerX86::supportsFloatingPointTruncate):
(JSC::MacroAssemblerX86::supportsFloatingPointSqrt):
(JSC::MacroAssemblerX86::supportsFloatingPointAbs):
* assembler/MacroAssemblerX86Common.cpp:
* assembler/MacroAssemblerX86Common.h:
(JSC::MacroAssemblerX86Common::moveDouble):
(JSC::MacroAssemblerX86Common::loadDouble):
(JSC::MacroAssemblerX86Common::loadFloat):
(JSC::MacroAssemblerX86Common::storeDouble):
(JSC::MacroAssemblerX86Common::storeFloat):
(JSC::MacroAssemblerX86Common::convertDoubleToFloat):
(JSC::MacroAssemblerX86Common::convertFloatToDouble):
(JSC::MacroAssemblerX86Common::addDouble):
(JSC::MacroAssemblerX86Common::addFloat):
(JSC::MacroAssemblerX86Common::divDouble):
(JSC::MacroAssemblerX86Common::divFloat):
(JSC::MacroAssemblerX86Common::subDouble):
(JSC::MacroAssemblerX86Common::subFloat):
(JSC::MacroAssemblerX86Common::mulDouble):
(JSC::MacroAssemblerX86Common::mulFloat):
(JSC::MacroAssemblerX86Common::convertInt32ToDouble):
(JSC::MacroAssemblerX86Common::convertInt32ToFloat):
(JSC::MacroAssemblerX86Common::branchDouble):
(JSC::MacroAssemblerX86Common::branchFloat):
(JSC::MacroAssemblerX86Common::compareDouble):
(JSC::MacroAssemblerX86Common::compareFloat):
(JSC::MacroAssemblerX86Common::branchTruncateDoubleToInt32):
(JSC::MacroAssemblerX86Common::truncateDoubleToInt32):
(JSC::MacroAssemblerX86Common::truncateFloatToInt32):
(JSC::MacroAssemblerX86Common::branchConvertDoubleToInt32):
(JSC::MacroAssemblerX86Common::branchDoubleNonZero):
(JSC::MacroAssemblerX86Common::branchDoubleZeroOrNaN):
(JSC::MacroAssemblerX86Common::lshiftPacked):
(JSC::MacroAssemblerX86Common::rshiftPacked):
(JSC::MacroAssemblerX86Common::orPacked):
(JSC::MacroAssemblerX86Common::move32ToFloat):
(JSC::MacroAssemblerX86Common::moveFloatTo32):
(JSC::MacroAssemblerX86Common::moveConditionallyDouble):
(JSC::MacroAssemblerX86Common::moveConditionallyFloat):
* offlineasm/x86.rb:
* runtime/MathCommon.cpp:
(JSC::operationMathPow):

Tools:

Force SSE2 on x86/32bit builds.

* Scripts/webkitdirs.pm:
(generateBuildSystemFromCMakeProject):

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

6 months agoUnreviewed, rolling out r243250.
sroberts@apple.com [Thu, 21 Mar 2019 16:21:15 +0000 (16:21 +0000)]
Unreviewed, rolling out r243250.

Causing 109 Failures and 2 crashes on iOS Sim Debug
OpenSource/Internal queues

Reverted changeset:

"[iOS WK2] Turn on async overflow scrolling by default"
https://bugs.webkit.org/show_bug.cgi?id=196011
https://trac.webkit.org/changeset/243250

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

6 months agoFix possible memory leak when dismissing a color picker
bfulgham@apple.com [Thu, 21 Mar 2019 15:51:07 +0000 (15:51 +0000)]
Fix possible memory leak when dismissing a color picker
https://bugs.webkit.org/show_bug.cgi?id=196026
<rdar://problem/48778568>

Reviewed by Wenson Hsieh.

Fix a problem with WebPageProxy::endColorPicker where an early return could leave a color picker
with a +1 reference count after dismissing it.

* UIProcess/WebColorPicker.cpp:
(WebKit::WebColorPicker::endPicker):
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::endColorPicker):
(WebKit::WebPageProxy::didEndColorPicker):

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

6 months agoFixed ContentChangeObserver build error.
commit-queue@webkit.org [Thu, 21 Mar 2019 15:43:35 +0000 (15:43 +0000)]
Fixed ContentChangeObserver build error.
https://bugs.webkit.org/show_bug.cgi?id=195993

Patch by Cathie Chen <cathiechen@igalia.com> on 2019-03-21
Reviewed by Rob Buis.

EWS IOS compiler complains after adding new files in Bug 157743.
ContentChangeObserver.h should have forward declaration for Element.

* page/ios/ContentChangeObserver.cpp:
* page/ios/ContentChangeObserver.h:

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

6 months ago[GLIB] User data not correctly passed to callback of functions and constructors with...
commit-queue@webkit.org [Thu, 21 Mar 2019 14:36:12 +0000 (14:36 +0000)]
[GLIB] User data not correctly passed to callback of functions and constructors with no parameters
https://bugs.webkit.org/show_bug.cgi?id=196073

Patch by Carlos Garcia Campos <cgarcia@igalia.com> on 2019-03-21
Reviewed by Michael Catanzaro.

Source/JavaScriptCore:

This is because GClosure always expects a first parameter as instance. In case of functions or constructors with
no parameters we insert a fake instance which is just a null pointer that is ignored by the callback. But
if the function/constructor has user data the callback will expect one parameter for the user data. In that case
we can simply swap instance/user data so that the fake instance will be the second argument and user data the
first one.

* API/glib/JSCClass.cpp:
(jscClassCreateConstructor): Use g_cclosure_new_swap() if parameters is empty and user data was provided.
* API/glib/JSCValue.cpp:
(jscValueFunctionCreate): Ditto.

Tools:

Add test cases to check functions and constructors with no arguments but receiving user data.

* TestWebKitAPI/Tests/JavaScriptCore/glib/TestJSC.cpp:
(checkUserData):
(testJSCFunction):
(fooCreateWithUserData):
(testJSCClass):

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

6 months agoUnreviewed. Fix GTK build with GLib < 2.58 after r243285.
carlosgc@webkit.org [Thu, 21 Mar 2019 13:09:00 +0000 (13:09 +0000)]
Unreviewed. Fix GTK build with GLib < 2.58 after r243285.

Add g_assert_cmpfloat_with_epsilon macro if not defined.

* TestWebKitAPI/glib/WebKitGLib/TestMain.h:

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

6 months ago[GStreamer][EME][Clearkey] Take a lock in keys() method
cturner@igalia.com [Thu, 21 Mar 2019 12:14:04 +0000 (12:14 +0000)]
[GStreamer][EME][Clearkey] Take a lock in keys() method
https://bugs.webkit.org/show_bug.cgi?id=195900

Reviewed by Xabier Rodriguez-Calvar.

This isn't ideal, since we're taking a lock for every frame to
decode. But there's no good way around it when keys can be
made unavailable at any time via an update() call, so we can't
cache key IDs in the decryptor.

Covered by test imported/w3c/web-platform-tests/encrypted-media/clearkey-mp4-playback-temporary-multikey.https.html

* platform/encryptedmedia/clearkey/CDMClearKey.cpp:
(WebCore::CDMInstanceClearKey::keys const): This method is called
from GStreamer's decode() method, which runs off the main thread,
therefore we need to take a lock.
* platform/encryptedmedia/clearkey/CDMClearKey.h:

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

6 months ago[JSC][32-bit] Build failure after r243232
commit-queue@webkit.org [Thu, 21 Mar 2019 10:35:58 +0000 (10:35 +0000)]
[JSC][32-bit] Build failure after r243232
https://bugs.webkit.org/show_bug.cgi?id=196068

Patch by Pablo Saavedra <psaavedra@igalia.com> on 2019-03-21
Reviewed by Mark Lam.

* dfg/DFGOSRExit.cpp:
(JSC::DFG::reifyInlinedCallFrames):
* dfg/DFGOSRExitCompilerCommon.cpp:
(JSC::DFG::reifyInlinedCallFrames):

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

6 months ago[GTK][WPE] Add API to provide geolocation information
carlosgc@webkit.org [Thu, 21 Mar 2019 10:10:35 +0000 (10:10 +0000)]
[GTK][WPE] Add API to provide geolocation information
https://bugs.webkit.org/show_bug.cgi?id=195940

Reviewed by Michael Catanzaro.

.:

Build with geolocation enabled by default in both GTK and WPE. In GTK add a specific USE_GEOCLUE build option
instead of using ENABLE_GEOLOCATION.

* Source/cmake/OptionsGTK.cmake:
* Source/cmake/OptionsWPE.cmake:

Source/WebCore:

Replace ENABLE(GEOLOCATION) with USE(GEOCLUE).

* PlatformGTK.cmake:
* platform/geoclue/GeolocationProviderGeoclue.cpp:
* platform/geoclue/GeolocationProviderGeoclue.h:
* platform/geoclue/GeolocationProviderGeoclueClient.h:

Source/WebCore/platform/gtk/po:

* POTFILES.in: Add WebKitGeolocationManager.cpp.

Source/WebKit:

Add WebKitGeolocationManager public class to handle geolocation position updates. WebKitGeolocationProvider has
been removed and the default implementation based on GeoClue is done by WebKitGeolocationManager.

* PlatformGTK.cmake:
* PlatformWPE.cmake:
* SourcesGTK.txt:
* SourcesWPE.txt:
* UIProcess/API/glib/WebKitGeolocationManager.cpp: Added.
(_WebKitGeolocationPosition::_WebKitGeolocationPosition):
(webkit_geolocation_position_new):
(webkit_geolocation_position_copy):
(webkit_geolocation_position_free):
(webkit_geolocation_position_set_timestamp):
(webkit_geolocation_position_set_altitude):
(webkit_geolocation_position_set_altitude_accuracy):
(webkit_geolocation_position_set_heading):
(webkit_geolocation_position_set_speed):
(webkitGeolocationManagerStop):
(webkitGeolocationManagerSetEnableHighAccuracy):
(webkitGeolocationManagerCreate):
(webkitGeolocationManagerGetProperty):
(webkit_geolocation_manager_class_init):
(webkit_gelocation_manager_update_position):
(webkit_gelocation_manager_failed):
(webkit_geolocation_manager_get_enable_high_accuracy):
* UIProcess/API/glib/WebKitGeolocationManagerPrivate.h: Copied from Source/WebCore/platform/geoclue/GeolocationProviderGeoclueClient.h.
* UIProcess/API/glib/WebKitGeolocationProvider.cpp: Removed.
* UIProcess/API/glib/WebKitGeolocationProvider.h: Removed.
* UIProcess/API/glib/WebKitWebContext.cpp:
(webkitWebContextConstructed): Create a WebKitGeolocationManager instead of a WebKitGeolocationProvider.
(webkit_web_context_get_geolocation_manager): Get the WebKitGeolocationManager.
* UIProcess/API/gtk/WebKitGeolocationManager.h: Added.
* UIProcess/API/gtk/WebKitWebContext.h:
* UIProcess/API/gtk/docs/webkit2gtk-4.0-sections.txt:
* UIProcess/API/gtk/docs/webkit2gtk-4.0.types:
* UIProcess/API/gtk/docs/webkit2gtk-docs.sgml:
* UIProcess/API/gtk/webkit2.h:
* UIProcess/API/wpe/WebKitGeolocationManager.h: Added.
* UIProcess/API/wpe/WebKitWebContext.h:
* UIProcess/API/wpe/docs/wpe-0.1-sections.txt:
* UIProcess/API/wpe/docs/wpe-docs.sgml:
* UIProcess/API/wpe/webkit.h:

Tools:

Add a new test to check the new API.

* TestWebKitAPI/Tests/WebKitGLib/TestGeolocationManager.cpp: Added.
(testGeolocationManagerCurrentPosition):
(testGeolocationManagerWatchPosition):
(beforeAll):
(afterAll):
* TestWebKitAPI/Tests/WebKitGLib/TestUIClient.cpp:
(testWebViewGeolocationPermissionRequests): Stop using ENABLE(GEOLOCATION) conditionals for geolocation tests.
(beforeAll): Ditto.
* TestWebKitAPI/glib/CMakeLists.txt:

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

6 months ago[WPE] Confusing messages in stderr when surfaceless context is not supported
carlosgc@webkit.org [Thu, 21 Mar 2019 09:44:22 +0000 (09:44 +0000)]
[WPE] Confusing messages in stderr when surfaceless context is not supported
https://bugs.webkit.org/show_bug.cgi?id=195742

Reviewed by Žan Doberšek.

The messages shown are:

Cannot create EGL surfaceless context: missing EGL_KHR_surfaceless_{context,opengl} extension.
Cannot create EGL WPE context: EGL_SUCCESS

It seems like there's anything wrong, while there isn't. It's also confusing an error message where the error is
EGL_SUCCESS. I think we should not show those messages at all, not suporting surfaceless contexts is not an
error and it's correctly handled. Failing to get a native window handle from render backend offscreen egl target
is not an error either, since most of the backends don't implement the interface (they actually have an empty
implementation).

* platform/graphics/egl/GLContextEGL.cpp:
(WebCore::GLContextEGL::createSurfacelessContext): Remove the message when extensions are not present
* platform/graphics/egl/GLContextEGLLibWPE.cpp:
(WebCore::GLContextEGL::createWPEContext): Handle the case of wpe_renderer_backend_egl_offscreen_target_create()
returning nullptr, which can happen if the backend doesn't implement the interface. Move the context creation
after the target initialization, to avoid leaking the context when the target doesn't have a native window.

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

6 months ago[GLib] Returning G_TYPE_OBJECT from a method does not work
carlosgc@webkit.org [Thu, 21 Mar 2019 09:43:15 +0000 (09:43 +0000)]
[GLib] Returning G_TYPE_OBJECT from a method does not work
https://bugs.webkit.org/show_bug.cgi?id=195574

Reviewed by Michael Catanzaro.

Source/JavaScriptCore:

Add more documentation to clarify the ownership of wrapped objects when created and when returned by functions.

* API/glib/JSCCallbackFunction.cpp:
(JSC::JSCCallbackFunction::construct): Also allow to return boxed types from a constructor.
* API/glib/JSCClass.cpp:
* API/glib/JSCValue.cpp:

Tools:

Add new test cases to check the behavior of constructors and functions returning GObject and boxed types.

* TestWebKitAPI/Tests/JavaScriptCore/glib/TestJSC.cpp:
(getGFile):
(getParent):
(createGString):
(getGString):
(getGStringCopyWillRaise):
(getGStringCopy):
(getGStringStr):
(getGStringLen):
(freeGString):
(testJSCClass):

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

6 months agoUnreviewed GTK+ and WPE gardening after r243278.
magomez@igalia.com [Thu, 21 Mar 2019 09:24:31 +0000 (09:24 +0000)]
Unreviewed GTK+ and WPE gardening after r243278.

* platform/gtk/TestExpectations:
* platform/wpe/TestExpectations:

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

6 months agoUse immediateScrollElementAtContentPointToOffset for scroll overlap tests
antti@apple.com [Thu, 21 Mar 2019 08:25:18 +0000 (08:25 +0000)]
Use immediateScrollElementAtContentPointToOffset for scroll overlap tests
https://bugs.webkit.org/show_bug.cgi?id=195943

Reviewed by Simon Fraser.

This is much faster and simpler than simulated touch events.

* fast/scrolling/ios/overflow-scroll-overlap-2.html:
* fast/scrolling/ios/overflow-scroll-overlap-3.html:
* fast/scrolling/ios/overflow-scroll-overlap-4.html:
* fast/scrolling/ios/overflow-scroll-overlap.html:

This API doesn't respect touch-action property, so stop using it. Instead restore
the main scrollview to the initial position explicitly after scroll.

* fast/scrolling/resources/overflow-scroll-overlap.js:
(async.runTest):
* resources/ui-helper.js:
(return.new.Promise.):
(return.new.Promise):

Add a Promise returning helper.

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

6 months agoCap length of an array with spread to MIN_ARRAY_STORAGE_CONSTRUCTION_LENGTH.
mark.lam@apple.com [Thu, 21 Mar 2019 07:51:12 +0000 (07:51 +0000)]
Cap length of an array with spread to MIN_ARRAY_STORAGE_CONSTRUCTION_LENGTH.
https://bugs.webkit.org/show_bug.cgi?id=196055
<rdar://problem/49067448>

Reviewed by Yusuke Suzuki.

JSTests:

* stress/new_array_with_spread-should-cap-array-size-to-MIN_ARRAY_STORAGE_CONSTRUCTION_LENGTH.js: Added.

Source/JavaScriptCore:

We are doing this because:
1. We expect the array to be densely packed.
2. SpeculativeJIT::compileAllocateNewArrayWithSize() (and the FTL equivalent)
   expects the array length to be less than MIN_ARRAY_STORAGE_CONSTRUCTION_LENGTH
   if we don't want to use an ArrayStorage shape.
3. There's no reason why an array with spread needs to be that large anyway.
   MIN_ARRAY_STORAGE_CONSTRUCTION_LENGTH is plenty.

In this patch, we also add a debug assert in compileAllocateNewArrayWithSize() and
emitAllocateButterfly() to check for overflows.

* assembler/AbortReason.h:
* dfg/DFGOperations.cpp:
* dfg/DFGSpeculativeJIT.cpp:
(JSC::DFG::SpeculativeJIT::compileCreateRest):
(JSC::DFG::SpeculativeJIT::compileNewArrayWithSpread):
(JSC::DFG::SpeculativeJIT::emitAllocateButterfly):
(JSC::DFG::SpeculativeJIT::compileAllocateNewArrayWithSize):
* ftl/FTLLowerDFGToB3.cpp:
(JSC::FTL::DFG::LowerDFGToB3::compileNewArrayWithSpread):
* runtime/ArrayConventions.h:
* runtime/CommonSlowPaths.cpp:
(JSC::SLOW_PATH_DECL):

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

6 months ago[JSC] Use finalizer in JSGlobalLexicalEnvironment and JSGlobalObject
ysuzuki@apple.com [Thu, 21 Mar 2019 07:00:24 +0000 (07:00 +0000)]
[JSC] Use finalizer in JSGlobalLexicalEnvironment and JSGlobalObject
https://bugs.webkit.org/show_bug.cgi?id=195992

Reviewed by Keith Miller and Mark Lam.

Source/JavaScriptCore:

JSGlobalLexicalEnvironment and JSGlobalObject have their own CompleteSubspace to call destructors while they are not inheriting JSDestructibleObject.
But it is too costly since (1) it requires CompleteSubspace in VM, (2) both objects allocate MarkedBlocks while # of them are really small.

Instead of using CompleteSubspace, we just set finalizers for them. Since these objects are rarely allocated, setting finalizers does not show
memory / performance problems (actually, previously we used finalizer for ArrayPrototype due to the same reason, and it does not show any problems).

And we also add following two changes to JSSegmentedVariableObject.

1. Remove one boolean used for debugging in Release build. It enlarges sizeof(JSSegmentedVariableObject) and allocates one more MarkedBlock.
2. Use cellLock() instead.

* CMakeLists.txt:
* JavaScriptCore.xcodeproj/project.pbxproj:
* Sources.txt:
* runtime/JSSegmentedVariableObject.cpp:
(JSC::JSSegmentedVariableObject::findVariableIndex):
(JSC::JSSegmentedVariableObject::addVariables):
(JSC::JSSegmentedVariableObject::visitChildren):
(JSC::JSSegmentedVariableObject::~JSSegmentedVariableObject):
(JSC::JSSegmentedVariableObject::finishCreation):
* runtime/JSSegmentedVariableObject.h:
(JSC::JSSegmentedVariableObject::subspaceFor): Deleted.
* runtime/JSSegmentedVariableObjectHeapCellType.cpp: Removed.
* runtime/JSSegmentedVariableObjectHeapCellType.h: Removed.
* runtime/StringIteratorPrototype.cpp:
* runtime/VM.cpp:
(JSC::VM::VM):
* runtime/VM.h:

Source/WebCore:

Use cellHeapCellType since JSSegmentedVariableObject already set finalizer.

* bindings/js/WebCoreJSClientData.cpp:
(WebCore::JSVMClientData::JSVMClientData):

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

6 months agoDFG::AbstractValue::validateOSREntry is wrong when isHeapTop and the incoming value...
sbarati@apple.com [Thu, 21 Mar 2019 05:43:08 +0000 (05:43 +0000)]
DFG::AbstractValue::validateOSREntry is wrong when isHeapTop and the incoming value is Empty
https://bugs.webkit.org/show_bug.cgi?id=195721

Reviewed by Filip Pizlo.

Source/JavaScriptCore:

There was a check in AbstractValue::validateOSREntry where it checked
if isHeapTop(), and if so, just returned true. However, this is wrong
if the value we're checking against is the empty value, since HeapTop
does not include the Empty value. Instead, this check should be
isBytecodeTop(), which does account for the empty value.

This patch also does a couple of other things:
- For our OSR entry AbstractValues, we were using HeapTop to mark
 a dead value. That is now changed to BytecodeTop. (The idea here
 is just to have validateOSREntry return early.)
- It wasn't obvious to me how I could make this fail in JS code.
 The symptom we'd end up seeing is something like a nullptr derefernece
 from forgetting to do a TDZ check. Instead, I've added a unit test.
 This unit test lives in a new test file: testdfg. testdfg is similar
 to testb3/testair/testapi.

* JavaScriptCore.xcodeproj/project.pbxproj:
* bytecode/SpeculatedType.h:
* dfg/DFGAbstractValue.h:
(JSC::DFG::AbstractValue::isBytecodeTop const):
(JSC::DFG::AbstractValue::validateOSREntryValue const):
* dfg/testdfg.cpp: Added.
(hiddenTruthBecauseNoReturnIsStupid):
(usage):
(JSC::DFG::testEmptyValueDoesNotValidateWithHeapTop):
(JSC::DFG::run):
(run):
(main):
* shell/CMakeLists.txt:

Tools:

* Scripts/run-javascriptcore-tests:

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

6 months agotypeOfDoubleSum is wrong for when NaN can be produced
sbarati@apple.com [Thu, 21 Mar 2019 05:41:21 +0000 (05:41 +0000)]
typeOfDoubleSum is wrong for when NaN can be produced
https://bugs.webkit.org/show_bug.cgi?id=196030

Reviewed by Filip Pizlo.

JSTests:

* stress/double-add-sub-mul-can-produce-nan.js: Added.
(assert):
(noInline.sub):
(noInline):
(assert.mul):
(assert.add):

Source/JavaScriptCore:

We were using typeOfDoubleSum(SpeculatedType, SpeculatedType) for add/sub/mul.
It assumed that the only way the resulting type could be NaN is if one of
the inputs were NaN. However, this is wrong. NaN can be produced in at least
these cases:
  Infinity - Infinity
  Infinity + (-Infinity)
  Infinity * 0

* bytecode/SpeculatedType.cpp:
(JSC::typeOfDoubleSumOrDifferenceOrProduct):
(JSC::typeOfDoubleSum):
(JSC::typeOfDoubleDifference):
(JSC::typeOfDoubleProduct):

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

6 months agoCompute quota after network process restart based on default quota and space used
youenn@apple.com [Thu, 21 Mar 2019 04:38:29 +0000 (04:38 +0000)]
Compute quota after network process restart based on default quota and space used
https://bugs.webkit.org/show_bug.cgi?id=195804

Reviewed by Chris Dumez.

Source/WebCore:

At creation of quota manager, a default quota will be assigned.
This value is the same for all origins.
Some origins may have been granted a bigger quota by the user.
In that case, the space used might be greater for these origins.
Update at initialization time the quota according the space used as follows:
- If space used is below default quota, stick with default quota.
- If space used is above, set quota to space used rounded by one tenth of the default quota.
The rounding ensures that quota requests will not happen too quickly after a page is loaded.

Test: http/wpt/cache-storage/cache-quota-after-restart.any.html

* Modules/cache/CacheStorageConnection.h:
(WebCore::CacheStorageConnection::setQuotaBasedOnSpaceUsage):
* storage/StorageQuotaManager.cpp:
(WebCore::StorageQuotaManager::setQuotaBasedOnSpaceUsage):
(WebCore::StorageQuotaManager::addUser):
* storage/StorageQuotaManager.h:
* testing/Internals.cpp:
(WebCore::Internals::updateQuotaBasedOnSpaceUsage):
* testing/Internals.h:
* testing/Internals.idl:

Source/WebKit:

Make sure that Cache Storage quota user waits to declare as initialized to its manager
until all data is loaded so that it can report a valid space used from the start.

Add test API to reset the quota to its default value and compute it according current space use.

* NetworkProcess/NetworkProcess.cpp:
(WebKit::NetworkProcess::updateQuotaBasedOnSpaceUsageForTesting):
* NetworkProcess/NetworkProcess.h:
* NetworkProcess/NetworkProcess.messages.in:
* NetworkProcess/cache/CacheStorageEngineCaches.cpp:
(WebKit::CacheStorage::Caches::create):
(WebKit::CacheStorage::Caches::Caches):
(WebKit::CacheStorage::Caches::whenInitialized):
* NetworkProcess/cache/CacheStorageEngineCaches.h:
* NetworkProcess/cache/CacheStorageEngineConnection.cpp:
(WebKit::CacheStorageEngineConnection::dereference):
* WebProcess/Cache/WebCacheStorageConnection.cpp:
(WebKit::WebCacheStorageConnection::setQuotaBasedOnSpaceUsage):
* WebProcess/Cache/WebCacheStorageConnection.h:

LayoutTests:

* http/wpt/cache-storage/cache-quota-after-restart.any-expected.txt: Added.
* http/wpt/cache-storage/cache-quota-after-restart.any.html: Added.
* http/wpt/cache-storage/cache-quota-after-restart.any.js: Added.
(promise_test.async):

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

6 months agoRename ENABLE_ACCELERATED_OVERFLOW_SCROLLING macro to ENABLE_OVERFLOW_SCROLLING_TOUCH
simon.fraser@apple.com [Thu, 21 Mar 2019 03:48:35 +0000 (03:48 +0000)]
Rename ENABLE_ACCELERATED_OVERFLOW_SCROLLING macro to ENABLE_OVERFLOW_SCROLLING_TOUCH
https://bugs.webkit.org/show_bug.cgi?id=196049

Reviewed by Tim Horton.

This macro is about the -webkit-overflow-scrolling CSS property, not accelerated
overflow scrolling in general, so rename it.

.:

* Source/cmake/OptionsMac.cmake:
* Source/cmake/OptionsWin.cmake:
* Source/cmake/WebKitFeatures.cmake:
* Source/cmake/tools/vsprops/FeatureDefines.props:
* Source/cmake/tools/vsprops/FeatureDefinesCairo.props:

Source/JavaScriptCore:

* Configurations/FeatureDefines.xcconfig:

Source/WebCore:

* Configurations/FeatureDefines.xcconfig:
* css/CSSComputedStyleDeclaration.cpp:
(WebCore::ComputedStyleExtractor::valueForPropertyinStyle):
* css/CSSProperties.json:
* css/CSSValueKeywords.in:
* css/StyleBuilderConverter.h:
* css/StyleResolver.cpp:
(WebCore::StyleResolver::adjustRenderStyle):
* css/parser/CSSParserFastPaths.cpp:
(WebCore::CSSParserFastPaths::isValidKeywordPropertyAndValue):
(WebCore::CSSParserFastPaths::isKeywordPropertyID):
* dom/Element.cpp:
* dom/Element.h:
* rendering/RenderLayer.cpp:
(WebCore::RenderLayer::canUseCompositedScrolling const):
* rendering/style/RenderStyle.cpp:
(WebCore::rareInheritedDataChangeRequiresLayout):
* rendering/style/RenderStyle.h:
* rendering/style/StyleRareInheritedData.cpp:
(WebCore::StyleRareInheritedData::StyleRareInheritedData):
(WebCore::StyleRareInheritedData::operator== const):
* rendering/style/StyleRareInheritedData.h:
* rendering/style/WillChangeData.cpp:
(WebCore::WillChangeData::propertyCreatesStackingContext):

Source/WebCore/PAL:

* Configurations/FeatureDefines.xcconfig:

Source/WebKit:

* Configurations/FeatureDefines.xcconfig:

Source/WebKitLegacy/mac:

* Configurations/FeatureDefines.xcconfig:

Source/WTF:

* wtf/FeatureDefines.h:

Tools:

* TestWebKitAPI/Configurations/FeatureDefines.xcconfig:

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

6 months agoWeb Inspector: DOM: lazily create the agent
drousso@apple.com [Thu, 21 Mar 2019 03:10:28 +0000 (03:10 +0000)]
Web Inspector: DOM: lazily create the agent
https://bugs.webkit.org/show_bug.cgi?id=195589
<rdar://problem/48791742>

Reviewed by Timothy Hatcher.

No change in functionality.

* inspector/agents/InspectorDOMAgent.h:
(WebCore::InspectorDOMAgent::DOMListener): Deleted.
(WebCore::InspectorDOMAgent::pageAgent): Deleted.
* inspector/agents/InspectorDOMAgent.cpp:
(WebCore::InspectorDOMAgent):
(WebCore::InspectorDOMAgent::unbind):
(WebCore::InspectorDOMAgent::setSearchingForNode):
(WebCore::InspectorDOMAgent::highlightSelector):
(WebCore::InspectorDOMAgent::highlightFrame):
(WebCore::InspectorDOMAgent::buildObjectForNode):
(WebCore::InspectorDOMAgent::didModifyDOMAttr):
(WebCore::InspectorDOMAgent::didRemoveDOMAttr):
(WebCore::InspectorDOMAgent::styleAttributeInvalidated):
(WebCore::InspectorDOMAgent::didInvalidateStyleAttr):
(WebCore::InspectorDOMAgent::setDOMListener): Deleted.

* inspector/agents/InspectorCSSAgent.h:
* inspector/agents/InspectorCSSAgent.cpp:
(WebCore::InspectorCSSAgent::InspectorCSSAgent):
(WebCore::InspectorCSSAgent::willDestroyFrontendAndBackend):
(WebCore::InspectorCSSAgent::reset):
(WebCore::InspectorCSSAgent::enable):
(WebCore::InspectorCSSAgent::disable):
(WebCore::InspectorCSSAgent::forcePseudoState):
(WebCore::InspectorCSSAgent::collectAllStyleSheets):
(WebCore::InspectorCSSAgent::setStyleSheetText):
(WebCore::InspectorCSSAgent::setStyleText):
(WebCore::InspectorCSSAgent::setRuleSelector):
(WebCore::InspectorCSSAgent::createStyleSheet):
(WebCore::InspectorCSSAgent::addRule):
(WebCore::InspectorCSSAgent::asInspectorStyleSheet):
(WebCore::InspectorCSSAgent::elementForId):
(WebCore::InspectorCSSAgent::bindStyleSheet):
(WebCore::InspectorCSSAgent::~InspectorCSSAgent): Deleted.
(WebCore::InspectorCSSAgent::discardAgent): Deleted.
(WebCore::InspectorCSSAgent::resetNonPersistentData): Deleted.
* inspector/InspectorStyleSheet.cpp:

* inspector/agents/InspectorDOMDebuggerAgent.h:
* inspector/agents/InspectorDOMDebuggerAgent.cpp:
(WebCore::InspectorDOMDebuggerAgent::InspectorDOMDebuggerAgent):
(WebCore::InspectorDOMDebuggerAgent::setDOMBreakpoint):
(WebCore::InspectorDOMDebuggerAgent::removeDOMBreakpoint):
(WebCore::InspectorDOMDebuggerAgent::descriptionForDOMEvent):
(WebCore::InspectorDOMDebuggerAgent::willHandleEvent):

* inspector/agents/page/PageConsoleAgent.h:
* inspector/agents/page/PageConsoleAgent.cpp:
(WebCore::PageConsoleAgent::PageConsoleAgent):
(WebCore::PageConsoleAgent::clearMessages):

* inspector/InspectorController.h:
* inspector/InspectorController.cpp:
(WebCore::InspectorController::InspectorController):
(WebCore::InspectorController::createLazyAgents):
(WebCore::InspectorController::inspect):
(WebCore::InspectorController::hideHighlight):

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

6 months agoWeb Inspector: Canvas: rework how Canvas.enable/Canvas.disable is used so that events...
drousso@apple.com [Thu, 21 Mar 2019 02:27:35 +0000 (02:27 +0000)]
Web Inspector: Canvas: rework how Canvas.enable/Canvas.disable is used so that events are not sent when the Canvas tab isn't enabled
https://bugs.webkit.org/show_bug.cgi?id=195828
<rdar://problem/48941756>

Reviewed by Timothy Hatcher.

* UserInterface/Controllers/CanvasManager.js:
(WI.CanvasManager):
(WI.CanvasManager.prototype.initializeTarget):
(WI.CanvasManager.prototype.enable): Added.
(WI.CanvasManager.prototype.disable): Added.

* UserInterface/Views/CanvasTabContentView.js:
(WI.CanvasTabContentView):
(WI.CanvasTabContentView.prototype.closed): Added.

* UserInterface/Base/Test.js:
(WI.contentLoaded):

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

6 months agoWeb Inspector: Sources: collapsing a section doesn't shrink the space used by that...
drousso@apple.com [Thu, 21 Mar 2019 02:23:21 +0000 (02:23 +0000)]
Web Inspector: Sources: collapsing a section doesn't shrink the space used by that section
https://bugs.webkit.org/show_bug.cgi?id=196045

Reviewed by Timothy Hatcher.

* UserInterface/Views/SourcesNavigationSidebarPanel.js:
(WI.SourcesNavigationSidebarPanel):
(WI.SourcesNavigationSidebarPanel.prototype._handleDebuggerPaused):
(WI.SourcesNavigationSidebarPanel.prototype._handleDebuggerResumed):
* UserInterface/Views/SourcesNavigationSidebarPanel.css:
(.sidebar > .panel.navigation.sources > .content > .details-section):
(.sidebar > .panel.navigation.sources > .content > .details-section:matches(.paused-reason, .breakpoins).collapsed > .header > .options,):
(.sidebar > .panel.navigation.sources > .content > .details-section.collapsed > .content):
(.sidebar > .panel.navigation.sources > .content > .details-section.breakpoints > .header > .options .create-breakpoint):
(.sidebar > .panel.navigation.sources > .content > .details-section:matches(.pause-reason, .call-stack, .breakpoints) > .content,):
(.sidebar > .panel.navigation.sources > .content > .details-section:matches(.call-stack, .breakpoints) > .content):
(.sidebar > .panel.navigation.sources > .content > .details-section:matches(.call-stack, .breakpoints):not(.collapsed) > .content):
(.sidebar > .panel.navigation.sources > .content > .details-section.call-stack):
(.sidebar > .panel.navigation.sources > .content > .details-section.breakpoints):
(.sidebar > .panel.navigation.sources > .content > .details-section.breakpoints .create-breakpoint):
(.sidebar > .panel.navigation.sources > .content > .pause-reason):
(.sidebar > .panel.navigation.sources > .content > .details-section:matches(.call-stack, .breakpoints):not(.collapsed) > .content,):
(.sidebar > .panel.navigation.sources > .content > .details-section.breakpoints .tree-outline .item.event-target-window .icon):
(.sidebar > .panel.navigation.sources > .content .details-section): Deleted.
(.sidebar > .panel.navigation.sources > .content .details-section:matches(.paused-reason, .breakpoins).collapsed > .header > .options,): Deleted.
(.sidebar > .panel.navigation.sources > .content .details-section.collapsed > .content): Deleted.
(.sidebar > .panel.navigation.sources > .content .details-section.breakpoints > .header > .options .create-breakpoint): Deleted.
(.sidebar > .panel.navigation.sources > .content > :matches(.pause-reason-container, .call-stack-container, .breakpoints-container)): Deleted.
(.sidebar > .panel.navigation.sources > .content > .call-stack-container): Deleted.
(.sidebar > .panel.navigation.sources > .content > .breakpoints-container): Deleted.
(.sidebar > .panel.navigation.sources > .content > .breakpoints-container .create-breakpoint): Deleted.
(.sidebar > .panel.navigation.sources > .content > .resources-container): Deleted.
(.sidebar > .panel.navigation.sources > .content > .pause-reason-container): Deleted.
(.sidebar > .panel.navigation.sources > .content > :matches(.call-stack-container, .breakpoints-container, .resources-container)): Deleted.
(.sidebar > .panel.navigation.sources > .content > .breakpoints .tree-outline .item.event-target-window .icon): Deleted.
 - Apply the overflow scrolling to the content element of each `WI.DetailsSection`.
 - Ensure that there is a maximum height for each section.
 - When `.collapsed`, don't try to grow/shrink the section based on its contents.

* UserInterface/Views/CallFrameTreeElement.css:
(.tree-outline .item.call-frame):
(.tree-outline .item.call-frame .status):
Make the container of the active call frame status indicator relatively positioned so that
the active call frame status indicator will follow the container when scrolling.

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

6 months agoInclude WAL and SHM file size in IDB database size computation
youenn@apple.com [Thu, 21 Mar 2019 01:24:52 +0000 (01:24 +0000)]
Include WAL and SHM file size in IDB database size computation
https://bugs.webkit.org/show_bug.cgi?id=195688

Reviewed by Brady Eidson.

Source/WebCore:

Count WAL and SHM files as part of IDB quota checks.
This makes some IDB tests go over the testing quota which then
triggers some IDB tasks to happen sooner than other write IDB tasks.
The IDB implementation requires these tasks to remain ordered.
In case a write task is pending quota check, queue all tasks,
write or read, to keep the order.

This patch specials case aborting a transaction.
In case it is called as part of clearing a database,
the task should not be queued and all pending tasks are errored.
When transaction is aborted by the web page, queue the task.

When we can make a decision to run tasks with size 0,
do not check quota. This ensures that read operations
succeed even if we are above quota.

Covered by existing tests.

* Modules/indexeddb/server/UniqueIDBDatabase.cpp:
(WebCore::IDBServer::UniqueIDBDatabase::waitForRequestSpaceCompletion):
(WebCore::IDBServer::UniqueIDBDatabase::deleteObjectStore):
(WebCore::IDBServer::UniqueIDBDatabase::clearObjectStore):
(WebCore::IDBServer::UniqueIDBDatabase::deleteIndex):
(WebCore::IDBServer::UniqueIDBDatabase::getRecord):
(WebCore::IDBServer::UniqueIDBDatabase::getAllRecords):
(WebCore::IDBServer::UniqueIDBDatabase::getCount):
(WebCore::IDBServer::UniqueIDBDatabase::deleteRecord):
(WebCore::IDBServer::UniqueIDBDatabase::openCursor):
(WebCore::IDBServer::UniqueIDBDatabase::iterateCursor):
(WebCore::IDBServer::UniqueIDBDatabase::commitTransaction):
* Modules/indexeddb/server/UniqueIDBDatabase.h:
* Modules/webdatabase/DatabaseTracker.cpp:
(WebCore::DatabaseTracker::usage):
* platform/sql/SQLiteFileSystem.cpp:
(WebCore::SQLiteFileSystem::getDatabaseFileSize):
* storage/StorageQuotaManager.h:
* storage/StorageQuotaManager.cpp:
(WebCore::StorageQuotaManager::requestSpace):

LayoutTests:

* storage/websql/open-database-creation-callback.html:
Bump quota for this test since WAL files are not included in quota computation.

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

6 months agoWeb Inspector: Timeline should show when events preventDefault() was called on an...
drousso@apple.com [Thu, 21 Mar 2019 00:55:40 +0000 (00:55 +0000)]
Web Inspector: Timeline should show when events preventDefault() was called on an event or not
https://bugs.webkit.org/show_bug.cgi?id=176824
<rdar://problem/34290931>

Reviewed by Timothy Hatcher.

Original patch by Joseph Pecoraro <pecoraro@apple.com>.

Source/WebCore:

Tests: inspector/timeline/timeline-event-CancelAnimationFrame.html
       inspector/timeline/timeline-event-EventDispatch.html
       inspector/timeline/timeline-event-FireAnimationFrame.html
       inspector/timeline/timeline-event-RequestAnimationFrame.html
       inspector/timeline/timeline-event-TimerFire.html
       inspector/timeline/timeline-event-TimerInstall.html
       inspector/timeline/timeline-event-TimerRemove.html

* dom/EventTarget.cpp:
(WebCore::EventTarget::innerInvokeEventListeners):
* page/DOMWindow.cpp:
(WebCore::DOMWindow::dispatchEvent):
Include `defaultPrevented` when notifying inspector.

* inspector/InspectorInstrumentation.h:
(WebCore::InspectorInstrumentation::didDispatchEvent):
(WebCore::InspectorInstrumentation::didDispatchEventOnWindow):
* inspector/InspectorInstrumentation.cpp:
(WebCore::InspectorInstrumentation::didDispatchEventImpl):
(WebCore::InspectorInstrumentation::didDispatchEventOnWindowImpl):
Pass `defaultPrevented` on to agent.

* inspector/agents/InspectorTimelineAgent.h:
* inspector/agents/InspectorTimelineAgent.cpp:
(WebCore::InspectorTimelineAgent::didDispatchEvent):
Append a boolean `defaultPrevented` property on the `EventDispatch` timeline record's data.

Source/WebInspectorUI:

* Localizations/en.lproj/localizedStrings.js:
New string.

* UserInterface/Controllers/TimelineManager.js:
(WI.TimelineManager.prototype._processRecord):
Include the whole data object as extra details.

* UserInterface/Models/ScriptTimelineRecord.js:
(WI.ScriptTimelineRecord):
(WI.ScriptTimelineRecord.prototype.get eventType):
Wholesale copy of the extra data instead of just a single property.

* UserInterface/Views/ScriptDetailsTimelineView.js:
(WI.ScriptDetailsTimelineView):
Give the name column more initial space, there is still extra space
after this adjustment but name is comfortably larger (and the most
likely to be expanded).

* UserInterface/Views/ScriptTimelineDataGridNode.js:
(WI.ScriptTimelineDataGridNode.prototype.get subtitle):
Include "default prevented" as the event's subtitle if it was prevented.

LayoutTests:

* inspector/timeline/resources/timeline-event-utilities.js: Added.
(finishRecording):
(TestPage.registerInitializer.InspectorTest.TimelineEvent.captureTimelineWithScript):
(TestPage.registerInitializer):
Helper code for creating a recording from a function.

* inspector/timeline/timeline-event-CancelAnimationFrame.html: Added.
* inspector/timeline/timeline-event-CancelAnimationFrame-expected.txt: Added.
* inspector/timeline/timeline-event-EventDispatch.html: Added.
* inspector/timeline/timeline-event-EventDispatch-expected.txt: Added.
* inspector/timeline/timeline-event-FireAnimationFrame.html: Added.
* inspector/timeline/timeline-event-FireAnimationFrame-expected.txt: Added.
* inspector/timeline/timeline-event-RequestAnimationFrame.html: Added.
* inspector/timeline/timeline-event-RequestAnimationFrame-expected.txt: Added.
* inspector/timeline/timeline-event-TimerFire.html: Added.
* inspector/timeline/timeline-event-TimerFire-expected.txt: Added.
* inspector/timeline/timeline-event-TimerInstall.html: Added.
* inspector/timeline/timeline-event-TimerInstall-expected.txt: Added.
* inspector/timeline/timeline-event-TimerRemove.html: Added.
* inspector/timeline/timeline-event-TimerRemove-expected.txt: Added.

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

6 months agoGetCallee does not report the correct type in AI
sbarati@apple.com [Thu, 21 Mar 2019 00:40:04 +0000 (00:40 +0000)]
GetCallee does not report the correct type in AI
https://bugs.webkit.org/show_bug.cgi?id=195981

Reviewed by Yusuke Suzuki.

I found this as part of my work in:
https://bugs.webkit.org/show_bug.cgi?id=195924

I'm not sure how to write a test for it.

GetCallee was always reporting that the result is SpecFunction. However,
for eval, it may result in just a JSCallee object, which is not a JSFunction.

* dfg/DFGAbstractInterpreterInlines.h:
(JSC::DFG::AbstractInterpreter<AbstractStateType>::executeEffects):

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

6 months agoExtend Networking Process sandbox for some system frameworks
jiewen_tan@apple.com [Thu, 21 Mar 2019 00:36:06 +0000 (00:36 +0000)]
Extend Networking Process sandbox for some system frameworks
https://bugs.webkit.org/show_bug.cgi?id=196036
<rdar://problem/47594150>

Reviewed by Brent Fulgham.

* NetworkProcess/mac/com.apple.WebKit.NetworkProcess.sb.in:
* Resources/SandboxProfiles/ios/com.apple.WebKit.Networking.sb:

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

6 months agoDumpRenderTree crashes under WebAnimation::isRelevant when running imported/mozilla...
said@apple.com [Thu, 21 Mar 2019 00:35:50 +0000 (00:35 +0000)]
DumpRenderTree crashes under WebAnimation::isRelevant when running imported/mozilla/css-transitions/test_document-get-animations.html in GuardMalloc
https://bugs.webkit.org/show_bug.cgi?id=196028
<rdar://problem/46842707>

Patch by Antoine Quint <graouts@apple.com> on 2019-03-20
Reviewed by Dean Jackson.

Instead of keeping a ListHashSet of raw pointers, we are now using a Vector of WeakPtrs.

* animation/AnimationTimeline.cpp:
(WebCore::AnimationTimeline::forgetAnimation):
(WebCore::AnimationTimeline::animationTimingDidChange):
(WebCore::AnimationTimeline::cancelDeclarativeAnimation):
* animation/AnimationTimeline.h:
* animation/DocumentTimeline.cpp:
(WebCore::DocumentTimeline::getAnimations const):

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

6 months agoUpdate the test to ensure OutOfMemoryError is thrown as intended
ysuzuki@apple.com [Thu, 21 Mar 2019 00:27:58 +0000 (00:27 +0000)]
Update the test to ensure OutOfMemoryError is thrown as intended
https://bugs.webkit.org/show_bug.cgi?id=196032
<rdar://problem/46842740>

Rubber stamped by Saam Barati.

* stress/create-error-out-of-memory-rope-string.js:
(assert):
(catch):

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

6 months agoWeb Inspector: Styles Redesign: Editing selector should not hide the rule
drousso@apple.com [Thu, 21 Mar 2019 00:22:06 +0000 (00:22 +0000)]
Web Inspector: Styles Redesign: Editing selector should not hide the rule
https://bugs.webkit.org/show_bug.cgi?id=178489
<rdar://problem/35062434>

Reviewed by Timothy Hatcher.

Source/WebInspectorUI:

Extracts the selector payload parsing logic inside `WI.DOMNodeStyles` into static functions
so that when the user changes the selector of a `WI.CSSRule`, it's able to process and
update itself with the new selector. This is mainly useful in the case where the `WI.CSSRule`
no longer applies to the selected node (meaning it won't be part of that node's
`WI.DOMNodeStyles`) in that it allows the `WI.SpreadsheetCSSStyleDeclarationSection` to
display the new selector text and the owner `WI.SpreadsheetRulesStyleDetailsPanel` to keep
that section visible even though it isn't applicable to the current node anymore.

* UserInterface/Models/DOMNodeStyles.js:
(WI.DOMNodeStyles):
(WI.DOMNodeStyles.parseSelectorListPayload): Added.
(WI.DOMNodeStyles.createSourceCodeLocation): Added.
(WI.DOMNodeStyles.prototype.refresh):
(WI.DOMNodeStyles.prototype.refresh.fetchedMatchedStyles):
(WI.DOMNodeStyles.prototype.refresh.fetchedInlineStyles):
(WI.DOMNodeStyles.prototype.refresh.fetchedComputedStyle):
(WI.DOMNodeStyles.prototype._parseStyleDeclarationPayload):
(WI.DOMNodeStyles.prototype._parseRulePayload):
(WI.DOMNodeStyles.prototype._styleSheetContentDidChange):
(WI.DOMNodeStyles.prototype.refresh.parseRuleMatchArrayPayload): Deleted.
(WI.DOMNodeStyles.prototype._createSourceCodeLocation): Deleted.
(WI.DOMNodeStyles.prototype._parseSelectorListPayload): Deleted.
Keep track of all `WI.CSSRule` and `WI.CSSStyleDeclaration` that have ever been associated
with this object, so that if a rule's selector is changed to no longer match, and then is
changed back to match again, we are able to update that rule instead of creating a new one.

* UserInterface/Views/SpreadsheetRulesStyleDetailsPanel.js:
(WI.SpreadsheetRulesStyleDetailsPanel.prototype.layout):
(WI.SpreadsheetRulesStyleDetailsPanel.prototype._handleSectionFilterApplied):
(WI.SpreadsheetRulesStyleDetailsPanel.prototype._handleSectionSelectorWillChange): Added.
Attempt to preserve the position of any sections that are changed and no longer apply to the
current node.

* UserInterface/Views/SpreadsheetCSSStyleDeclarationSection.js:
(WI.SpreadsheetCSSStyleDeclarationSection.prototype.spreadsheetSelectorFieldDidChange):
(WI.SpreadsheetCSSStyleDeclarationSection.prototype._renderSelector):
Drive-by: remove unused CSS classes.
* UserInterface/Models/CSSRule.js:
(WI.CSSRule.prototype.update):
(WI.CSSRule.prototype._selectorResolved):
Drive-by: remove unused event.
* UserInterface/Base/Multimap.js:
(Multimap.prototype.has): Added.
(Multimap.prototype.sets): Added.
(Multimap.prototype.copy): Added.

LayoutTests:

* inspector/unit-tests/multimap.html: Added.
* inspector/unit-tests/multimap-expected.txt: Added.

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

6 months agoDumpRenderTree crashes under WebAnimation::isRelevant when running imported/mozilla...
graouts@webkit.org [Thu, 21 Mar 2019 00:14:04 +0000 (00:14 +0000)]
DumpRenderTree crashes under WebAnimation::isRelevant when running imported/mozilla/css-transitions/test_document-get-animations.html in GuardMalloc
https://bugs.webkit.org/show_bug.cgi?id=196028
<rdar://problem/46842707>

Reviewed by Dean Jackson.

Instead of keeping a ListHashSet of raw pointers, we are now using a Vector of WeakPtrs.

* animation/AnimationTimeline.cpp:
(WebCore::AnimationTimeline::forgetAnimation):
(WebCore::AnimationTimeline::animationTimingDidChange):
(WebCore::AnimationTimeline::cancelDeclarativeAnimation):
* animation/AnimationTimeline.h:
* animation/DocumentTimeline.cpp:
(WebCore::DocumentTimeline::getAnimations const):

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

6 months agoUnreviewed, rebaseline two tests after r243241.
ryanhaddad@apple.com [Thu, 21 Mar 2019 00:07:37 +0000 (00:07 +0000)]
Unreviewed, rebaseline two tests after r243241.

* http/tests/adClickAttribution/anchor-tag-attributes-validation-expected.txt:
* http/tests/security/anchor-download-block-crossorigin-expected.txt:

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

6 months ago[ iOS WK2 ] Layout Test imported/w3c/web-platform-tests/webrtc/simplecall.https.html...
ryanhaddad@apple.com [Thu, 21 Mar 2019 00:07:34 +0000 (00:07 +0000)]
[ iOS WK2 ] Layout Test imported/w3c/web-platform-tests/webrtc/simplecall.https.html is flaky crashing
https://bugs.webkit.org/show_bug.cgi?id=191707

Unreviewed test gardening.

* platform/ios/TestExpectations: Skip crashing test.

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

6 months agoWeb Inspector: no way to filter out all console messages or all evaluations/results
drousso@apple.com [Wed, 20 Mar 2019 23:53:03 +0000 (23:53 +0000)]
Web Inspector: no way to filter out all console messages or all evaluations/results
https://bugs.webkit.org/show_bug.cgi?id=167035
<rdar://problem/30023523>

Reviewed by Timothy Hatcher.

* UserInterface/Views/LogContentView.js:
(WI.LogContentView):
(WI.LogContentView.prototype.didAppendConsoleMessageView):
(WI.LogContentView.prototype._markScopeBarItemUnread):
(WI.LogContentView.prototype._markScopeBarItemForMessageLevelUnread): Added.
(WI.LogContentView.prototype._previousMessageRepeatCountUpdated):
(WI.LogContentView.prototype._messageSourceBarSelectionDidChange):
(WI.LogContentView.prototype._scopeBarSelectionDidChange):
(WI.LogContentView.prototype._filterMessageElements):
(WI.LogContentView.prototype.performSearch):
* UserInterface/Views/LogContentView.css:
(.log-scope-bar > li.unread.evaluations::before): Added.

* UserInterface/Views/ConsoleCommandView.js:
(WI.ConsoleCommandView):
Drive-by: remove unnecessary super-class extends.
* Localizations/en.lproj/localizedStrings.js:

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

6 months agoRemove the SVG tear off objects for SVGColorAnimator
said@apple.com [Wed, 20 Mar 2019 23:51:47 +0000 (23:51 +0000)]
Remove the SVG tear off objects for SVGColorAnimator
https://bugs.webkit.org/show_bug.cgi?id=196025

Reviewed by Simon Fraser.

SVG attributes like "fill" and "stroke" do not have reflecting properties
in SVGElement but they are animatable by SMIL. Animating such attributes
is different from animating the SVG animated properties. These new classes
will be added to handle the first type of this kind of attribute: the Color:

-- SVGPropertyAnimatorCreator is added to SVGElement. It is responsible
   for creating SVGPropertyAnimators for the attribute which do not have
   reflecting animated properties stored by SVGElement. It will maintain
   a HashMap for the animated values for these attributes which is indexed
   by the attribute name. The animated values has to be RefCounted because
   the same attribute can be animated by multiple animators. So the values
   of this HashMap will be of type Ref<SVGProperty>, e.g.
    <circle cx="80" cy="120" r="35">
        <animate attributeName="fill" values="#080" begin="2s" />
        <animate attributeName="fill" values="#602;#004" begin="4s" dur="5s"/>
    </circle>

-- SVGPropertyAnimator is the a new type which animates an attribute with
   no reflecting animated property.

-- SVGPrimitivePropertyAnimator is a template class which is responsible
   for animating attributes with primitive types, e.g. Color, string and
   float. It is derived form SVGPropertyAnimator and it is initialized
   with a Ref<SVGValueProperty<PropertyType>> which is created and maintained
   by SVGPropertyAnimatorFactory.

-- SVGAnimationColorFunction is the animation function that animates the
   attributes whose type are Color. Note the conversion form String to
   Color in this class has to handle the case when its value is "attributeName="
   e.g. <animate attributeName="fill" from="attributeName="r"/>

-- SVGColorAnimator will be defined to be
   SVGPrimitivePropertyAnimator<Color, SVGAnimationColorFunction>.

The life cycle of the RefCounted properties can be explained as follows:

-- SVGPropertyAnimatorFactory checks whether its HashMap has an entry
   for the given attribute name. If it does not have, it will create a
   new value through the value creation method for this attribute.

-- SVGPropertyAnimatorFactory passes the shared animated value to the
   animator creation method. So multiple animators will be accessing the
   same value through their RefCounted pointers.

-- When the animator is about to be deleted, it will notify the target
   SVGElement which will notify its SVGPropertyAnimatorFactory.
   SVGPropertyAnimatorFactory will check its HashMap and retrieves the
   entry for the given attribute name. If the refCount is 2, it is going
   to remove the entry form the HashMap.

* Sources.txt:
* WebCore.xcodeproj/project.pbxproj:
* svg/SVGAnimateColorElement.cpp:
(WebCore::attributeValueIsCurrentColor): Deleted.
(WebCore::SVGAnimateColorElement::determinePropertyValueTypes): Deleted.
* svg/SVGAnimateColorElement.h:
* svg/SVGAnimateElementBase.cpp:
(WebCore::SVGAnimateElementBase::attributeAnimationController):
* svg/SVGAnimatedColor.cpp: Removed.
* svg/SVGAnimatedColor.h: Removed.
* svg/SVGAnimatorFactory.h:
(WebCore::SVGAnimatorFactory::create):
* svg/SVGAttributeAnimationController.cpp:
(WebCore::SVGAttributeAnimationController::~SVGAttributeAnimationController):
* svg/SVGAttributeAnimationController.h:
* svg/SVGElement.cpp:
(WebCore::SVGElement::SVGElement):
(WebCore::SVGElement::isAnimatedAttribute const):
(WebCore::SVGElement::createAnimator):
(WebCore::SVGElement::animatorWillBeDeleted):
* svg/SVGElement.h:
(WebCore::SVGElement::propertyAnimatorFactory):
* svg/SVGFitToViewBox.h:
* svg/SVGMPathElement.cpp:
* svg/graphics/filters/SVGFEImage.h:
* svg/properties/SVGAnimationAdditiveValueFunctionImpl.cpp: Added.
(WebCore::SVGAnimationColorFunction::colorFromString):
* svg/properties/SVGAnimationAdditiveValueFunctionImpl.h:
(WebCore::SVGAnimationColorFunction::progress):
* svg/properties/SVGAnimationFunction.h:
* svg/properties/SVGAttributeAnimator.cpp:
(WebCore::SVGAttributeAnimator::applyAnimatedStylePropertyChange):
(WebCore::SVGAttributeAnimator::removeAnimatedStyleProperty):
* svg/properties/SVGAttributeAnimator.h:
* svg/properties/SVGPrimitivePropertyAnimator.h: Added.
(WebCore::SVGPrimitivePropertyAnimator::create):
(WebCore::SVGPrimitivePropertyAnimator::SVGPrimitivePropertyAnimator):
* svg/properties/SVGPrimitivePropertyAnimatorImpl.h: Added.
* svg/properties/SVGPropertyAnimator.h: Added.
(WebCore::SVGPropertyAnimator::SVGPropertyAnimator):
(WebCore::SVGPropertyAnimator::adjustForInheritance const):
(WebCore::SVGPropertyAnimator::computeCSSPropertyValue const):
(WebCore::SVGPropertyAnimator::computeInheritedCSSPropertyValue const):
* svg/properties/SVGPropertyAnimatorFactory.h: Added.
(WebCore::SVGPropertyAnimatorFactory::isKnownAttribute):
(WebCore::SVGPropertyAnimatorFactory::createAnimator):
(WebCore::SVGPropertyAnimatorFactory::animatorWillBeDeleted):
(WebCore::SVGPropertyAnimatorFactory::createColorAnimator):
(WebCore::SVGPropertyAnimatorFactory::attributeAnimatorCreator):

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

6 months agoReduce use of LegacySync IPC message type
achristensen@apple.com [Wed, 20 Mar 2019 23:37:54 +0000 (23:37 +0000)]
Reduce use of LegacySync IPC message type
https://bugs.webkit.org/show_bug.cgi?id=194835

Reviewed by Darin Adler.

* NetworkProcess/NetworkConnectionToWebProcess.cpp:
(WebKit::NetworkConnectionToWebProcess::cookiesForDOM):
(WebKit::NetworkConnectionToWebProcess::cookiesEnabled):
(WebKit::NetworkConnectionToWebProcess::cookieRequestHeaderFieldValue):
(WebKit::NetworkConnectionToWebProcess::getRawCookies):
(WebKit::NetworkConnectionToWebProcess::blobSize):
(WebKit::NetworkConnectionToWebProcess::establishIDBConnectionToServer):
(WebKit::NetworkConnectionToWebProcess::establishSWServerConnection):
* NetworkProcess/NetworkConnectionToWebProcess.h:
(WebKit::NetworkConnectionToWebProcess::getNetworkLoadInformationRequest):
(WebKit::NetworkConnectionToWebProcess::getNetworkLoadInformationResponse):
(WebKit::NetworkConnectionToWebProcess::getNetworkLoadIntermediateInformation):
(WebKit::NetworkConnectionToWebProcess::takeNetworkLoadInformationMetrics):
* NetworkProcess/NetworkConnectionToWebProcess.messages.in:
* UIProcess/Cocoa/UserMediaCaptureManagerProxy.cpp:
(WebKit::UserMediaCaptureManagerProxy::createMediaSourceForCaptureDeviceWithConstraints):
(WebKit::UserMediaCaptureManagerProxy::capabilities):
* UIProcess/Cocoa/UserMediaCaptureManagerProxy.h:
* UIProcess/Cocoa/UserMediaCaptureManagerProxy.messages.in:
* UIProcess/Plugins/PluginProcessProxy.h:
* UIProcess/Plugins/PluginProcessProxy.messages.in:
* UIProcess/Plugins/mac/PluginProcessProxyMac.mm:
(WebKit::PluginProcessProxy::launchProcess):
(WebKit::PluginProcessProxy::launchApplicationAtURL):
(WebKit::PluginProcessProxy::openURL):
(WebKit::PluginProcessProxy::openFile):
* UIProcess/WebFullScreenManagerProxy.cpp:
(WebKit::WebFullScreenManagerProxy::supportsFullScreen):
* UIProcess/WebFullScreenManagerProxy.h:
* UIProcess/WebFullScreenManagerProxy.messages.in:
* WebProcess/WebProcess.cpp:
(WebKit::WebProcess::fetchWebsiteData):
(WebKit::WebProcess::deleteWebsiteData):
(WebKit::WebProcess::deleteWebsiteDataForOrigins):
(WebKit::WebProcess::processWillSuspendImminently):
* WebProcess/WebProcess.h:
* WebProcess/WebProcess.messages.in:

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

6 months agoUnreviewed test gardening after r243229.
timothy@apple.com [Wed, 20 Mar 2019 23:36:06 +0000 (23:36 +0000)]
Unreviewed test gardening after r243229.

* inspector/css/shadow-scoped-style-expected.txt: Rebaseline.
* platform/mac-highsierra/inspector/css/shadow-scoped-style-expected.txt: Added.
* platform/mac-highsierra/printing/width-overflow-expected.txt: Added.
* platform/mac-sierra/inspector/css/shadow-scoped-style-expected.txt: Added.
* platform/mac-sierra/printing/width-overflow-expected.txt: Added.
* platform/mac/printing/width-overflow-expected.txt: Rebaseline.

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

6 months agoWeb Inspector: Styles: enabledProperties don't get invalidated after removing property
nvasilyev@apple.com [Wed, 20 Mar 2019 23:34:00 +0000 (23:34 +0000)]
Web Inspector: Styles: enabledProperties don't get invalidated after removing property
https://bugs.webkit.org/show_bug.cgi?id=196038

Reviewed by Timothy Hatcher.

* UserInterface/Models/CSSStyleDeclaration.js:
(WI.CSSStyleDeclaration.prototype.shiftPropertiesAfter):

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

6 months ago[ Mac WK2 ] REGRESSION (r239333) Flaky ASSERTION FAILED: m_uncommittedState.state...
cdumez@apple.com [Wed, 20 Mar 2019 23:32:55 +0000 (23:32 +0000)]
[ Mac WK2 ] REGRESSION (r239333) Flaky ASSERTION FAILED: m_uncommittedState.state == State::Committed on http/tests/cookies/same-site/fetch-after-top-level-navigation-from-cross-origin-page.html
https://bugs.webkit.org/show_bug.cgi?id=194225
<rdar://problem/47820247>

Unreviewed, unskip the test as it no longer appears to be flaky.

* platform/mac-wk2/TestExpectations:

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

6 months agoOpen source arm64e code.
mark.lam@apple.com [Wed, 20 Mar 2019 23:32:26 +0000 (23:32 +0000)]
Open source arm64e code.
https://bugs.webkit.org/show_bug.cgi?id=196012
<rdar://problem/49066237>

Reviewed by Keith Miller.

Source/JavaScriptCore:

* JavaScriptCore.xcodeproj/project.pbxproj:
* Sources.txt:
* assembler/ARM64EAssembler.h: Added.
(JSC::ARM64EAssembler::encodeGroup1):
(JSC::ARM64EAssembler::encodeGroup2):
(JSC::ARM64EAssembler::encodeGroup4):
(JSC::ARM64EAssembler::pacia1716):
(JSC::ARM64EAssembler::pacib1716):
(JSC::ARM64EAssembler::autia1716):
(JSC::ARM64EAssembler::autib1716):
(JSC::ARM64EAssembler::paciaz):
(JSC::ARM64EAssembler::paciasp):
(JSC::ARM64EAssembler::pacibz):
(JSC::ARM64EAssembler::pacibsp):
(JSC::ARM64EAssembler::autiaz):
(JSC::ARM64EAssembler::autiasp):
(JSC::ARM64EAssembler::autibz):
(JSC::ARM64EAssembler::autibsp):
(JSC::ARM64EAssembler::xpaclri):
(JSC::ARM64EAssembler::pacia):
(JSC::ARM64EAssembler::pacib):
(JSC::ARM64EAssembler::pacda):
(JSC::ARM64EAssembler::pacdb):
(JSC::ARM64EAssembler::autia):
(JSC::ARM64EAssembler::autib):
(JSC::ARM64EAssembler::autda):
(JSC::ARM64EAssembler::autdb):
(JSC::ARM64EAssembler::paciza):
(JSC::ARM64EAssembler::pacizb):
(JSC::ARM64EAssembler::pacdza):
(JSC::ARM64EAssembler::pacdzb):
(JSC::ARM64EAssembler::autiza):
(JSC::ARM64EAssembler::autizb):
(JSC::ARM64EAssembler::autdza):
(JSC::ARM64EAssembler::autdzb):
(JSC::ARM64EAssembler::xpaci):
(JSC::ARM64EAssembler::xpacd):
(JSC::ARM64EAssembler::pacga):
(JSC::ARM64EAssembler::braa):
(JSC::ARM64EAssembler::brab):
(JSC::ARM64EAssembler::blraa):
(JSC::ARM64EAssembler::blrab):
(JSC::ARM64EAssembler::braaz):
(JSC::ARM64EAssembler::brabz):
(JSC::ARM64EAssembler::blraaz):
(JSC::ARM64EAssembler::blrabz):
(JSC::ARM64EAssembler::retaa):
(JSC::ARM64EAssembler::retab):
(JSC::ARM64EAssembler::eretaa):
(JSC::ARM64EAssembler::eretab):
(JSC::ARM64EAssembler::linkPointer):
(JSC::ARM64EAssembler::repatchPointer):
(JSC::ARM64EAssembler::setPointer):
(JSC::ARM64EAssembler::readPointer):
(JSC::ARM64EAssembler::readCallTarget):
(JSC::ARM64EAssembler::ret):
* assembler/MacroAssembler.cpp:
* assembler/MacroAssembler.h:
* assembler/MacroAssemblerARM64.cpp:
* assembler/MacroAssemblerARM64E.h: Added.
(JSC::MacroAssemblerARM64E::tagReturnAddress):
(JSC::MacroAssemblerARM64E::untagReturnAddress):
(JSC::MacroAssemblerARM64E::tagPtr):
(JSC::MacroAssemblerARM64E::untagPtr):
(JSC::MacroAssemblerARM64E::removePtrTag):
(JSC::MacroAssemblerARM64E::callTrustedPtr):
(JSC::MacroAssemblerARM64E::call):
(JSC::MacroAssemblerARM64E::callRegister):
(JSC::MacroAssemblerARM64E::jump):
* dfg/DFGOSRExit.cpp:
(JSC::DFG::reifyInlinedCallFrames):
* dfg/DFGOSRExitCompilerCommon.cpp:
(JSC::DFG::reifyInlinedCallFrames):
* ftl/FTLThunks.cpp:
(JSC::FTL::genericGenerationThunkGenerator):
* jit/CCallHelpers.h:
(JSC::CCallHelpers::prepareForTailCallSlow):
* jit/CallFrameShuffler.cpp:
(JSC::CallFrameShuffler::prepareForTailCall):
* jit/ExecutableAllocator.cpp:
(JSC::ExecutableAllocator::allocate):
* jit/ThunkGenerators.cpp:
(JSC::arityFixupGenerator):
* llint/LLIntOfflineAsmConfig.h:
* llint/LowLevelInterpreter.asm:
* llint/LowLevelInterpreter64.asm:
* runtime/ClassInfo.h:
* runtime/InitializeThreading.cpp:
(JSC::initializeThreading):
* runtime/JSCPtrTag.cpp: Added.
(JSC::tagForPtr):
(JSC::ptrTagName):
(JSC::initializePtrTagLookup):
* runtime/JSCPtrTag.h:
(JSC::initializePtrTagLookup):
* runtime/Options.cpp:
(JSC::recomputeDependentOptions):

Source/WTF:

* WTF.xcodeproj/project.pbxproj:
* wtf/BlockPtr.h:
* wtf/Platform.h:
* wtf/PlatformRegisters.cpp: Added.
(WTF::threadStateLRInternal):
(WTF::threadStatePCInternal):
* wtf/PlatformRegisters.h:
* wtf/PointerPreparations.h:
* wtf/PtrTag.cpp: Added.
(WTF::tagForPtr):
(WTF::ptrTagName):
(WTF::registerPtrTagLookup):
(WTF::reportBadTag):
* wtf/PtrTag.h:
(WTF::removeCodePtrTag):
(WTF::tagCodePtrImpl):
(WTF::tagCodePtr):
(WTF::untagCodePtrImplHelper):
(WTF::untagCodePtrImpl):
(WTF::untagCodePtr):
(WTF::retagCodePtrImplHelper):
(WTF::retagCodePtrImpl):
(WTF::retagCodePtr):
(WTF::tagCFunctionPtrImpl):
(WTF::tagCFunctionPtr):
(WTF::untagCFunctionPtrImpl):
(WTF::untagCFunctionPtr):
(WTF::tagInt):
(WTF::assertIsCFunctionPtr):
(WTF::assertIsNullOrCFunctionPtr):
(WTF::assertIsNotTagged):
(WTF::assertIsTagged):
(WTF::assertIsNullOrTagged):
(WTF::isTaggedWith):
(WTF::assertIsTaggedWith):
(WTF::assertIsNullOrTaggedWith):
(WTF::usesPointerTagging):
(WTF::registerPtrTagLookup):
(WTF::reportBadTag):
(WTF::tagForPtr): Deleted.

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

6 months agoUpdate checks that determine if WebKit is system WebKit
krollin@apple.com [Wed, 20 Mar 2019 23:24:53 +0000 (23:24 +0000)]
Update checks that determine if WebKit is system WebKit
https://bugs.webkit.org/show_bug.cgi?id=195756

Unreviewed tweak of r243251 after unreviewed build fix after r243230.

* Shared/mac/AuxiliaryProcessMac.mm:
(WebKit::AuxiliaryProcess::isSystemWebKit):

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

6 months agoUse WeakPtr instead of storing raw pointers in WebSocket code
achristensen@apple.com [Wed, 20 Mar 2019 23:15:04 +0000 (23:15 +0000)]
Use WeakPtr instead of storing raw pointers in WebSocket code
https://bugs.webkit.org/show_bug.cgi?id=196034

Reviewed by Geoff Garen.

This could prevent using freed memory if we forget to reset a pointer somewhere.

* Modules/websockets/WebSocketChannel.cpp:
(WebCore::WebSocketChannel::WebSocketChannel):
(WebCore::WebSocketChannel::connect):
(WebCore::WebSocketChannel::fail):
(WebCore::WebSocketChannel::disconnect):
(WebCore::WebSocketChannel::didOpenSocketStream):
(WebCore::WebSocketChannel::didCloseSocketStream):
(WebCore::WebSocketChannel::didFailSocketStream):
(WebCore::WebSocketChannel::processBuffer):
(WebCore::WebSocketChannel::processFrame):
(WebCore::WebSocketChannel::processOutgoingFrameQueue):
(WebCore::WebSocketChannel::sendFrame):
* Modules/websockets/WebSocketChannel.h:
* Modules/websockets/WebSocketChannelClient.h:
* Modules/websockets/WebSocketHandshake.cpp:
(WebCore::WebSocketHandshake::WebSocketHandshake):
* Modules/websockets/WebSocketHandshake.h:

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

6 months agoUpdate checks that determine if WebKit is system WebKit
krollin@apple.com [Wed, 20 Mar 2019 23:03:14 +0000 (23:03 +0000)]
Update checks that determine if WebKit is system WebKit
https://bugs.webkit.org/show_bug.cgi?id=195756

Unreviewed build fix after r243230.

* Shared/mac/AuxiliaryProcessMac.mm:
(WebKit::AuxiliaryProcess::isSystemWebKit):

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

6 months ago[iOS WK2] Turn on async overflow scrolling by default
simon.fraser@apple.com [Wed, 20 Mar 2019 22:59:38 +0000 (22:59 +0000)]
[iOS WK2] Turn on async overflow scrolling by default
https://bugs.webkit.org/show_bug.cgi?id=196011
rdar://problem/48453859

Reviewed by Antti Koivisto.

Source/WebKit:

Turn async overflow scroll on by default for iOS WK2.

* Shared/WebPreferences.yaml:
* Shared/WebPreferencesDefaultValues.h:

LayoutTests:

New baselines, and skip some RTL tests that need a bit of work (webkit.org/b/196013).

* compositing/layer-creation/absolute-in-async-overflow-scroll-expected.txt:
* platform/ios-wk2/TestExpectations:
* platform/ios-wk2/compositing/geometry/limit-layer-bounds-transformed-overflow-expected.txt: Copied from LayoutTests/compositing/layer-creation/absolute-in-async-overflow-scroll-expected.txt.
* platform/ios-wk2/compositing/layer-creation/absolute-in-async-overflow-scroll-expected.txt: Copied from LayoutTests/compositing/layer-creation/absolute-in-async-overflow-scroll-expected.txt.
* platform/ios-wk2/compositing/layer-creation/overflow-scroll-overlap-expected.txt: Added.
* platform/ios-wk2/compositing/layer-creation/scroll-partial-update-expected.txt: Added.
* platform/ios-wk2/compositing/overflow/content-gains-scrollbars-expected.txt: Added.
* platform/ios-wk2/compositing/overflow/overflow-scroll-expected.txt:
* platform/ios-wk2/compositing/overflow/overflow-scrollbar-layer-positions-expected.txt: Added.
* platform/ios-wk2/compositing/overflow/overflow-scrollbar-layers-expected.txt: Added.
* platform/ios-wk2/compositing/overflow/remove-overflow-crash2-expected.txt:
* platform/ios-wk2/compositing/overflow/scrollbar-painting-expected.txt:
* platform/ios/compositing/geometry/limit-layer-bounds-clipping-ancestor-expected.txt:
* platform/ios/compositing/layers-inside-overflow-scroll-expected.txt:
* platform/ios/compositing/overflow/scroll-ancestor-update-expected.txt:
* platform/ios/compositing/reflections/nested-reflection-on-overflow-expected.txt:
* platform/ios/compositing/self-painting-layers-expected.txt:
* scrollingcoordinator/scrolling-tree/positioned-nodes-complex-expected.txt:

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

6 months ago[iOS] Crash in WebCore::Node::renderRect
dino@apple.com [Wed, 20 Mar 2019 22:49:44 +0000 (22:49 +0000)]
[iOS] Crash in WebCore::Node::renderRect
https://bugs.webkit.org/show_bug.cgi?id=196035
<rdar://problem/49076783>

Reviewed by Antoine Quint.

When renderRect was called on an HTMLAreaElement, it would
ASSERT because it doesn't have a renderer. We hadn't noticed
this before because none of our tests were hitting this in
debug mode.

The fix is to ask the corresponding HTMLImageElement for
its renderer, and use that for the returned rectangle.

Covered by these tests that had become flakey:
    fast/images/imagemap-in-shadow-tree.html
    http/tests/download/area-download.html

* dom/Node.cpp:
(WebCore::Node::renderRect):

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

6 months agoREGRESSION (r243153): [iOS] TestWebKitAPI.FocusPreservationTests.ChangingFocusedNodeR...
dbates@webkit.org [Wed, 20 Mar 2019 22:48:04 +0000 (22:48 +0000)]
REGRESSION (r243153): [iOS] TestWebKitAPI.FocusPreservationTests.ChangingFocusedNodeResetsFocusPreservationState is failing
https://bugs.webkit.org/show_bug.cgi?id=196031
<rdar://problem/49078172>

Reviewed by Tim Horton.

The test incorrectly assumes that calling -[WKWebView resignFirstResponder] is identical to dismissing the
<select> picker. This is no longer the case following r243135. Instead use testing SPI that invokes that
same code path used when the Done button is pressed to dismiss the <select> picker.

* TestWebKitAPI/Tests/ios/FocusPreservationTests.mm:
(TestWebKitAPI::TEST):

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

6 months agoHave smaller default quotas for third party frames
youenn@apple.com [Wed, 20 Mar 2019 22:15:03 +0000 (22:15 +0000)]
Have smaller default quotas for third party frames
https://bugs.webkit.org/show_bug.cgi?id=195841

Reviewed by Geoffrey Garen.

Source/WebCore:

Test: http/wpt/cache-storage/quota-third-party.https.html

* storage/StorageQuotaManager.h:
(WebCore::StorageQuotaManager::defaultQuota):
Change default quota to 1GB.

Source/WebKit:

* NetworkProcess/NetworkProcess.cpp:
(WebKit::NetworkProcess::storageQuotaManager):
For third party iframes, use the default quota divided by 10.

LayoutTests:

* http/wpt/cache-storage/quota-third-party.https-expected.txt: Added.
* http/wpt/cache-storage/quota-third-party.https.html: Added.
* http/wpt/cache-storage/resources/quota-third-party-iframe.html: Added.

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

6 months agoJSC::createError needs to check for OOM in errorDescriptionForValue
tzagallo@apple.com [Wed, 20 Mar 2019 22:12:12 +0000 (22:12 +0000)]
JSC::createError needs to check for OOM in errorDescriptionForValue
https://bugs.webkit.org/show_bug.cgi?id=196032
<rdar://problem/46842740>

Reviewed by Mark Lam.

JSTests:

* stress/create-error-out-of-memory-rope-string.js: Added.

Source/JavaScriptCore:

We were missing exceptions checks at two levels:
- In errorDescriptionForValue, when the value is a string, we should
  check that JSString::value returns a valid string, since we might run
  out of memory if it is a rope and we need to resolve it.
- In createError, we should check for the result of errorDescriptionForValue
  before concatenating it with the message provided by the caller.

* runtime/ExceptionHelpers.cpp:
(JSC::errorDescriptionForValue):
(JSC::createError):
* runtime/ExceptionHelpers.h:

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

6 months agoWeb Inspector: DOM: include window as part of any event listener chain
drousso@apple.com [Wed, 20 Mar 2019 21:55:05 +0000 (21:55 +0000)]
Web Inspector: DOM: include window as part of any event listener chain
https://bugs.webkit.org/show_bug.cgi?id=195730
<rdar://problem/48916872>

Reviewed by Timothy Hatcher.

Source/JavaScriptCore:

* inspector/protocol/DOM.json:
Modify `DOM.getEventListenersForNode` to not save the handler object, as that was never
used by the frontend. Add an `onWindow` optional property to `DOM.EventListener` that is set
when the event listener was retrieved from the `window` object.

Source/WebCore:

Test: inspector/dom/getEventListenersForNode.html

* inspector/agents/InspectorDOMAgent.h:
(WebCore::EventListenerInfo::EventListenerInfo): Deleted.
* inspector/agents/InspectorDOMAgent.cpp:
(WebCore::InspectorDOMAgent::getEventListenersForNode):
(WebCore::InspectorDOMAgent::buildObjectForEventListener):
(WebCore::InspectorDOMAgent::getEventListeners): Deleted.

Source/WebInspectorUI:

Allow non-nodes (e.g. `window`) to be listed as the target of an event listener.
Add support for the same concept when showing breakpoint details after pausing on a specific
event listener in the Debugger/Sources navigation sidebar.

* UserInterface/Views/DOMNodeDetailsSidebarPanel.js:
(WI.DOMNodeDetailsSidebarPanel.prototype.initialLayout):
(WI.DOMNodeDetailsSidebarPanel.prototype._refreshEventListeners.generateGroupsByEvent):
(WI.DOMNodeDetailsSidebarPanel.prototype._refreshEventListeners.generateGroupsByTarget): Added.
(WI.DOMNodeDetailsSidebarPanel.prototype._refreshEventListeners.eventListenersCallback):
(WI.DOMNodeDetailsSidebarPanel.prototype._refreshEventListeners):
(WI.DOMNodeDetailsSidebarPanel.prototype._refreshEventListeners.generateGroupsByNode): Deleted.

* UserInterface/Views/EventListenerSectionGroup.js:
(WI.EventListenerSectionGroup.prototype._targetTextOrLink): Added.
(WI.EventListenerSectionGroup.prototype._nodeTextOrLink): Deleted.

* UserInterface/Views/DebuggerSidebarPanel.js:
(WI.DebuggerSidebarPanel.prototype._addBreakpoint):
(WI.DebuggerSidebarPanel.prototype._breakpointTreeOutlineDeleteTreeElement):
(WI.DebuggerSidebarPanel.prototype._treeSelectionDidChange):
(WI.DebuggerSidebarPanel.prototype._updatePauseReasonSection):
* UserInterface/Views/DebuggerSidebarPanel.css:
(.sidebar > .panel.navigation.debugger > .content > .breakpoints .tree-outline .item.event-target-window .icon): Added.

* UserInterface/Views/SourcesNavigationSidebarPanel.js:
(WI.SourcesNavigationSidebarPanel):
(WI.SourcesNavigationSidebarPanel.prototype._addBreakpoint):
(WI.SourcesNavigationSidebarPanel.prototype._updatePauseReasonSection):
(WI.SourcesNavigationSidebarPanel.prototype._handleTreeSelectionDidChange):
* UserInterface/Views/SourcesNavigationSidebarPanel.css:
(.sidebar > .panel.navigation.sources > .content > .breakpoints .tree-outline .item.event-target-window .icon): Added.

* Localizations/en.lproj/localizedStrings.js:

LayoutTests:

* inspector/dom/getEventListenersForNode.html:
* inspector/dom/getEventListenersForNode-expected.txt:
* inspector/dom/setEventListenerDisabled.html:
* inspector/dom/event-listener-add-remove.html:

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

6 months agoWeb Inspector: Runtime: lazily create the agent
drousso@apple.com [Wed, 20 Mar 2019 21:53:06 +0000 (21:53 +0000)]
Web Inspector: Runtime: lazily create the agent
https://bugs.webkit.org/show_bug.cgi?id=195972
<rdar://problem/49039655>

Reviewed by Timothy Hatcher.

Source/JavaScriptCore:

* inspector/JSGlobalObjectInspectorController.cpp:
(Inspector::JSGlobalObjectInspectorController::JSGlobalObjectInspectorController):
(Inspector::JSGlobalObjectInspectorController::createLazyAgents):

* inspector/agents/InspectorRuntimeAgent.h:
(Inspector::InspectorRuntimeAgent::enabled): Deleted.
* inspector/agents/InspectorRuntimeAgent.cpp:
(Inspector::InspectorRuntimeAgent::didCreateFrontendAndBackend): Added.
(Inspector::InspectorRuntimeAgent::willDestroyFrontendAndBackend):

* inspector/agents/JSGlobalObjectRuntimeAgent.h:
* inspector/agents/JSGlobalObjectRuntimeAgent.cpp:
(Inspector::JSGlobalObjectRuntimeAgent::didCreateFrontendAndBackend): Deleted.

Source/WebCore:

No change in functionality.

* inspector/InspectorController.cpp:
(WebCore::InspectorController::InspectorController):
(WebCore::InspectorController::createLazyAgents):

* inspector/WorkerInspectorController.cpp:
(WebCore::WorkerInspectorController::WorkerInspectorController):
(WebCore::WorkerInspectorController::createLazyAgents):

* inspector/agents/page/PageRuntimeAgent.h:
* inspector/agents/page/PageRuntimeAgent.cpp:
(WebCore::PageRuntimeAgent::PageRuntimeAgent):
(WebCore::PageRuntimeAgent::enable):
(WebCore::PageRuntimeAgent::disable):
(WebCore::PageRuntimeAgent::didCreateMainWorldContext):
(WebCore::PageRuntimeAgent::reportExecutionContextCreation):
(WebCore::PageRuntimeAgent::didCreateFrontendAndBackend): Deleted.
(WebCore::PageRuntimeAgent::willDestroyFrontendAndBackend): Deleted.

* inspector/agents/worker/WorkerRuntimeAgent.h:
* inspector/agents/worker/WorkerRuntimeAgent.cpp:
(WebCore::WorkerRuntimeAgent::didCreateFrontendAndBackend): Deleted.
(WebCore::WorkerRuntimeAgent::willDestroyFrontendAndBackend): Deleted.

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

6 months agoWeb Inspector: Debugger: virtualize the list of variables in the Scope sidebar
drousso@apple.com [Wed, 20 Mar 2019 21:49:13 +0000 (21:49 +0000)]
Web Inspector: Debugger: virtualize the list of variables in the Scope sidebar
https://bugs.webkit.org/show_bug.cgi?id=192648
<rdar://problem/46800949>

Reviewed by Joseph Pecoraro.

Source/WebInspectorUI:

* UserInterface/Views/ScopeChainDetailsSidebarPanel.js:
(WI.ScopeChainDetailsSidebarPanel.prototype._generateCallFramesSection):

* UserInterface/Views/TreeElement.js:
(WI.TreeElement.prototype.set hidden):
(WI.TreeElement.prototype._attach):
(WI.TreeElement.prototype._detach):
(WI.TreeElement.prototype.collapse):
(WI.TreeElement.prototype.expand):
Move `updateVirtualizedElements` calls to the owner `WI.TreeOutline` to ensure that they get
called. Make the remaining calls use rAF debouncing to better coalesce updates.

* UserInterface/Views/TreeOutline.js:
(WI.TreeOutline.prototype._rememberTreeElement):
(WI.TreeOutline.prototype._forgetTreeElement):
(WI.TreeOutline.prototype.registerScrollVirtualizer):
(WI.TreeOutline.prototype._updateVirtualizedElements.calculateOffsetFromContainer): Added.
(WI.TreeOutline.prototype._updateVirtualizedElements):
(WI.TreeOutline.prototype._calculateVirtualizedValues): Deleted.
Calculate the `WI.TreeOutline`'s top offset within the scroll container so that it will only
update when it's within the visual area.

* UserInterface/Views/Utilities.js:
(Array.prototype.remove):
Return whether the item was actually removed from the array.

LayoutTests:

* inspector/unit-tests/array-utilities.html:
* inspector/unit-tests/array-utilities-expected.txt:

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

6 months ago[iOS] Enable fast clicking everywhere
dino@apple.com [Wed, 20 Mar 2019 21:27:47 +0000 (21:27 +0000)]
[iOS] Enable fast clicking everywhere
https://bugs.webkit.org/show_bug.cgi?id=196023
<rdar://problem/49073589>

Reviewed by Wenson Hsieh.

Source/WebKit:

Set FastClicksEverywhere to on by default for iPhone & iPad.

* Shared/WebPreferences.yaml:
* Shared/WebPreferencesDefaultValues.h:

LayoutTests:

Add a new test for the case where "Fast Clicks Everywhere" is explicitly
set to false. This required implementing a humanSpeedZoomByDoubleTappingAt
variation.

* fast/events/ios/ipad/fast-click-always-expected.txt:
* fast/events/ios/ipad/fast-click-always.html:
* fast/events/ios/ipad/fast-click-not-always-expected.txt: Added.
* fast/events/ios/ipad/fast-click-not-always.html:
* resources/ui-helper.js:
(window.UIHelper.humanSpeedZoomByDoubleTappingAt): New helper function that pauses between
double taps, and resolves when the zoom finishes.

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

6 months agoRegression(PSON): ViewGestureController is not properly notified of process swaps...
cdumez@apple.com [Wed, 20 Mar 2019 21:26:01 +0000 (21:26 +0000)]
Regression(PSON): ViewGestureController is not properly notified of process swaps on iOS
https://bugs.webkit.org/show_bug.cgi?id=196029
<rdar://problem/48954651>

Reviewed by Tim Horton.

Source/WebKit:

If there is a ViewGestureController when process swapping, make sure we disconnect it
from the old process and reconnect it to the new one. This matches what is done in
WebViewImpl for macOS (see r238356).

* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView _processWillSwap]):
(-[WKWebView _processDidExit]):
(-[WKWebView _didRelaunchProcess]):

Tools:

Add API test coverage.

* TestWebKitAPI/Tests/WebKitCocoa/ProcessSwapOnNavigation.mm:

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

6 months ago[CSS OM] StyledElementInlineStylePropertyMap creates a Ref cycle with its owner element
rniwa@webkit.org [Wed, 20 Mar 2019 21:23:02 +0000 (21:23 +0000)]
[CSS OM] StyledElementInlineStylePropertyMap creates a Ref cycle with its owner element
https://bugs.webkit.org/show_bug.cgi?id=195987

Reviewed by Simon Fraser.

Source/WebCore:

StyledElementInlineStylePropertyMap was leaking every element for which it was created because due to
a reference cycle. The StyledElementInlineStylePropertyMap holds onto its element using Ref and
the element also stores StyledElementInlineStylePropertyMap in ElementRareData using RefPtr.

Fixed the cycle by making the reference from StyledElementInlineStylePropertyMap weak. For now we use
a raw pointer because we can't create a WeakPtr of an element yet.

Test: css-typedom/attribute-style-map-should-not-leak-every-element.html

* css/typedom/StylePropertyMap.h:
(WebCore::StylePropertyMap): Added clearElement as a virtual function.
* dom/Element.cpp:
(WebCore::Element::~Element): Clear the element pointer in StyledElementInlineStylePropertyMap.
* dom/StyledElement.cpp:
(WebCore::StyledElementInlineStylePropertyMap::get): Added a null check for m_element.
(WebCore::StyledElementInlineStylePropertyMap::StyledElementInlineStylePropertyMap):
(WebCore::StyledElementInlineStylePropertyMap::clearElement): Added.
(WebCore::StyledElementInlineStylePropertyMap): Use a raw pointer instead of Ref to StyledElement
to avoid the leak.
* platform/graphics/CustomPaintImage.cpp:
(WebCore::HashMapStylePropertyMap::clearElement): Added.

LayoutTests:

Added a regression test.

* css-typedom/attribute-style-map-should-not-leak-every-element-expected.txt: Added.
* css-typedom/attribute-style-map-should-not-leak-every-element.html: Added.

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

6 months agoWeb Inspector: Timelines - Export fails for MediaTimelineRecords with originator...
pecoraro@apple.com [Wed, 20 Mar 2019 21:22:08 +0000 (21:22 +0000)]
Web Inspector: Timelines - Export fails for MediaTimelineRecords with originator DOM Node - Cannot serialize cyclic structure
https://bugs.webkit.org/show_bug.cgi?id=196027

Reviewed by Timothy Hatcher.

* UserInterface/Models/MediaTimelineRecord.js:
(WI.MediaTimelineRecord.prototype.toJSON):
Remove the originator since that is a WI.DOMNode and cannot
be JSON serialized.

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

6 months agoJSC test crash: stress/dont-strength-reduce-regexp-with-compile-error.js.default
msaboff@apple.com [Wed, 20 Mar 2019 21:04:10 +0000 (21:04 +0000)]
JSC test crash: stress/dont-strength-reduce-regexp-with-compile-error.js.default
https://bugs.webkit.org/show_bug.cgi?id=195906

Reviewed by Mark Lam.

The problem here as that we may successfully parsed a RegExp without running out of stack,
but later run out of stack when trying to JIT compile the same expression.

Added a check for available stack space when we call into one of the parenthesis compilation
functions that recurse.  When we don't have enough stack space to recurse, we fail the JIT
compilation and let the interpreter handle the expression.

From code inspection of the YARR interpreter it has the same issue, but I couldn't cause a failure.
Filed a new bug and added a FIXME comment for the Interpreter to have similar checks.
Given that we can reproduce a failure, this is sufficient for now.

This change is covered by the previously added failing test,
JSTests/stress/dont-strength-reduce-regexp-with-compile-error.js.

* yarr/YarrInterpreter.cpp:
(JSC::Yarr::Interpreter::interpret):
* yarr/YarrJIT.cpp:
(JSC::Yarr::YarrGenerator::opCompileParenthesesSubpattern):
(JSC::Yarr::YarrGenerator::opCompileParentheticalAssertion):
(JSC::Yarr::YarrGenerator::opCompileBody):
(JSC::Yarr::dumpCompileFailure):
* yarr/YarrJIT.h:

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

6 months agoDFGNodeAllocator.h is dead code
rmorisset@apple.com [Wed, 20 Mar 2019 20:37:01 +0000 (20:37 +0000)]
DFGNodeAllocator.h is dead code
https://bugs.webkit.org/show_bug.cgi?id=196019

Reviewed by Yusuke Suzuki.

As explained by Yusuke on IRC, the comment on DFG::Node saying that it cannot have a destructor is obsolete since https://trac.webkit.org/changeset/216815/webkit.
This patch removes both the comment and DFGNodeAllocator.h that that patch forgot to remove.

* dfg/DFGNode.h:
(JSC::DFG::Node::dumpChildren):
* dfg/DFGNodeAllocator.h: Removed.

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

6 months agoREGRESSION(r240634): Element::hasPointerCapture() passes a JS-controlled value direct...
graouts@webkit.org [Wed, 20 Mar 2019 20:35:25 +0000 (20:35 +0000)]
REGRESSION(r240634): Element::hasPointerCapture() passes a JS-controlled value directly into a HashMap as a key
https://bugs.webkit.org/show_bug.cgi?id=195683

Reviewed by Alex Christensen.

Adding the test that was supposed to have landed along with r242893.

* pointerevents/pointer-id-crash-expected.txt: Added.
* pointerevents/pointer-id-crash.html: Added.

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

6 months agoUnreviewed, fix test failures after r243161.
drousso@apple.com [Wed, 20 Mar 2019 20:31:08 +0000 (20:31 +0000)]
Unreviewed, fix test failures after r243161.

* inspector/timeline/line-column-expected.txt:
Update expected line number for code movement inside Web Inspector's injected script.

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

6 months agoappendChild should throw when inserting an ancestor of a template into its content...
rniwa@webkit.org [Wed, 20 Mar 2019 20:26:18 +0000 (20:26 +0000)]
appendChild should throw when inserting an ancestor of a template into its content adopted to another document
https://bugs.webkit.org/show_bug.cgi?id=195984

Reviewed by Darin Adler.

LayoutTests/imported/w3c:

Rebaselined the test that is not fully passing.

* web-platform-tests/html/semantics/scripting-1/the-template-element/template-element/template-content-hierarcy-expected.txt:

Source/WebCore:

The WPT test caught a bug that appendChild and other DOM insertion functions were incorrectly assuming that
any node that's in a HTML template element has the current document's template document as its owner.
The assumption is wrong when the template element's content DocumentFragment is adopted to another document.

Fixed the bug by always checking the ancestor host elements in checkAcceptChild. Also

Test: fast/dom/insert-template-parent-into-adopted-content.html

* dom/ContainerNode.cpp:
(WebCore::isInTemplateContent): Deleted. This code is simply wrong.
(WebCore::containsConsideringHostElements): Deleted. Call sites are updated to use containsIncludingHostElements.
(WebCore::containsIncludingHostElements): Moved from Node.cpp and optimized this code a bit. It's more efficient
to get the parent node and check for ShadowRoot and DocumentFragment only when the parent is null than to check
for those two node types before getting the parent node.
(WebCore::checkAcceptChild): Merged two code paths to call containsIncludingHostElements. The early return for
a pseudo element is there only to prevent tree corruption in release build even in the presence of a major bug
so it shouldn't be an spec compliance issue.
* dom/Node.cpp:
(WebCore::Node::containsIncludingHostElements const): Deleted.
* dom/Node.h:

LayoutTests:

Added a regression test.

* fast/dom/insert-template-parent-into-adopted-content-expected.txt: Added.
* fast/dom/insert-template-parent-into-adopted-content.html: Added.

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

6 months agoCompress CodeOrigin into a single word in the common case
rmorisset@apple.com [Wed, 20 Mar 2019 20:24:36 +0000 (20:24 +0000)]
Compress CodeOrigin into a single word in the common case
https://bugs.webkit.org/show_bug.cgi?id=195928

Reviewed by Saam Barati.

The trick is that pointers only take 48 bits on x86_64 in practice (and we can even use the bottom three bits of that thanks to alignment), and even less on ARM64.
So we can shove the bytecode index in the top bits almost all the time.
If the bytecodeIndex is too ginormous (1<<16 in practice on x86_64), we just set one bit at the bottom and store a pointer to some out-of-line storage instead.
Finally we represent an invalid bytecodeIndex (which used to be represented by UINT_MAX) by setting the second least signifcant bit.

The patch looks very long, but most of it is just replacing direct accesses to inlineCallFrame and bytecodeIndex by the relevant getters.

End result: CodeOrigin in the common case moves from 16 bytes (8 for InlineCallFrame*, 4 for unsigned bytecodeIndex, 4 of padding) to 8.
As a reference, during running JetStream2 we allocate more than 35M CodeOrigins. While they won't all be alive at the same time, it is still quite a lot of objects, so I am hoping for some small
improvement to RAMification from this work.

The one slightly tricky part is that we must implement copy and move assignment operators and constructors to make sure that any out-of-line storage belongs to a single CodeOrigin and is destroyed exactly once.

* bytecode/ByValInfo.h:
* bytecode/CallLinkStatus.cpp:
(JSC::CallLinkStatus::computeFor):
* bytecode/CodeBlock.cpp:
(JSC::CodeBlock::globalObjectFor):
(JSC::CodeBlock::updateOSRExitCounterAndCheckIfNeedToReoptimize):
(JSC::CodeBlock::bytecodeOffsetFromCallSiteIndex):
* bytecode/CodeOrigin.cpp:
(JSC::CodeOrigin::inlineDepth const):
(JSC::CodeOrigin::isApproximatelyEqualTo const):
(JSC::CodeOrigin::approximateHash const):
(JSC::CodeOrigin::inlineStack const):
(JSC::CodeOrigin::codeOriginOwner const):
(JSC::CodeOrigin::stackOffset const):
(JSC::CodeOrigin::dump const):
(JSC::CodeOrigin::inlineDepthForCallFrame): Deleted.
* bytecode/CodeOrigin.h:
(JSC::OutOfLineCodeOrigin::OutOfLineCodeOrigin):
(JSC::CodeOrigin::CodeOrigin):
(JSC::CodeOrigin::~CodeOrigin):
(JSC::CodeOrigin::isSet const):
(JSC::CodeOrigin::isHashTableDeletedValue const):
(JSC::CodeOrigin::bytecodeIndex const):
(JSC::CodeOrigin::inlineCallFrame const):
(JSC::CodeOrigin::buildCompositeValue):
(JSC::CodeOrigin::hash const):
(JSC::CodeOrigin::operator== const):
(JSC::CodeOrigin::exitingInlineKind const): Deleted.
* bytecode/DeferredSourceDump.h:
* bytecode/GetByIdStatus.cpp:
(JSC::GetByIdStatus::computeForStubInfo):
(JSC::GetByIdStatus::computeFor):
* bytecode/ICStatusMap.cpp:
(JSC::ICStatusContext::isInlined const):
* bytecode/InByIdStatus.cpp:
(JSC::InByIdStatus::computeFor):
(JSC::InByIdStatus::computeForStubInfo):
* bytecode/InlineCallFrame.cpp:
(JSC::InlineCallFrame::dumpInContext const):
* bytecode/InlineCallFrame.h:
(JSC::InlineCallFrame::computeCallerSkippingTailCalls):
(JSC::InlineCallFrame::getCallerInlineFrameSkippingTailCalls):
(JSC::baselineCodeBlockForOriginAndBaselineCodeBlock):
(JSC::CodeOrigin::walkUpInlineStack):
* bytecode/InstanceOfStatus.h:
* bytecode/PutByIdStatus.cpp:
(JSC::PutByIdStatus::computeForStubInfo):
(JSC::PutByIdStatus::computeFor):
* dfg/DFGAbstractInterpreterInlines.h:
(JSC::DFG::AbstractInterpreter<AbstractStateType>::executeEffects):
* dfg/DFGArgumentsEliminationPhase.cpp:
* dfg/DFGArgumentsUtilities.cpp:
(JSC::DFG::argumentsInvolveStackSlot):
(JSC::DFG::emitCodeToGetArgumentsArrayLength):
* dfg/DFGArrayMode.h:
* dfg/DFGByteCodeParser.cpp:
(JSC::DFG::ByteCodeParser::injectLazyOperandSpeculation):
(JSC::DFG::ByteCodeParser::setLocal):
(JSC::DFG::ByteCodeParser::setArgument):
(JSC::DFG::ByteCodeParser::flushForTerminalImpl):
(JSC::DFG::ByteCodeParser::getPredictionWithoutOSRExit):
(JSC::DFG::ByteCodeParser::parseBlock):
(JSC::DFG::ByteCodeParser::parseCodeBlock):
(JSC::DFG::ByteCodeParser::handlePutByVal):
* dfg/DFGClobberize.h:
(JSC::DFG::clobberize):
* dfg/DFGConstantFoldingPhase.cpp:
(JSC::DFG::ConstantFoldingPhase::foldConstants):
* dfg/DFGFixupPhase.cpp:
(JSC::DFG::FixupPhase::attemptToMakeGetArrayLength):
* dfg/DFGForAllKills.h:
(JSC::DFG::forAllKilledOperands):
* dfg/DFGGraph.cpp:
(JSC::DFG::Graph::dumpCodeOrigin):
(JSC::DFG::Graph::dump):
(JSC::DFG::Graph::isLiveInBytecode):
(JSC::DFG::Graph::methodOfGettingAValueProfileFor):
(JSC::DFG::Graph::willCatchExceptionInMachineFrame):
* dfg/DFGGraph.h:
(JSC::DFG::Graph::executableFor):
(JSC::DFG::Graph::isStrictModeFor):
(JSC::DFG::Graph::hasExitSite):
(JSC::DFG::Graph::forAllLocalsLiveInBytecode):
* dfg/DFGLiveCatchVariablePreservationPhase.cpp:
(JSC::DFG::LiveCatchVariablePreservationPhase::handleBlockForTryCatch):
* dfg/DFGMinifiedNode.cpp:
(JSC::DFG::MinifiedNode::fromNode):
* dfg/DFGOSRAvailabilityAnalysisPhase.cpp:
(JSC::DFG::LocalOSRAvailabilityCalculator::executeNode):
* dfg/DFGOSRExit.cpp:
(JSC::DFG::OSRExit::executeOSRExit):
(JSC::DFG::reifyInlinedCallFrames):
(JSC::DFG::adjustAndJumpToTarget):
(JSC::DFG::printOSRExit):
(JSC::DFG::OSRExit::compileExit):
* dfg/DFGOSRExitBase.cpp:
(JSC::DFG::OSRExitBase::considerAddingAsFrequentExitSiteSlow):
* dfg/DFGOSRExitCompilerCommon.cpp:
(JSC::DFG::handleExitCounts):
(JSC::DFG::reifyInlinedCallFrames):
(JSC::DFG::adjustAndJumpToTarget):
* dfg/DFGOSRExitPreparation.cpp:
(JSC::DFG::prepareCodeOriginForOSRExit):
* dfg/DFGObjectAllocationSinkingPhase.cpp:
* dfg/DFGOperations.cpp:
* dfg/DFGPreciseLocalClobberize.h:
(JSC::DFG::PreciseLocalClobberizeAdaptor::readTop):
* dfg/DFGSpeculativeJIT.cpp:
(JSC::DFG::SpeculativeJIT::emitGetLength):
(JSC::DFG::SpeculativeJIT::emitGetCallee):
(JSC::DFG::SpeculativeJIT::compileCurrentBlock):
(JSC::DFG::SpeculativeJIT::compileValueAdd):
(JSC::DFG::SpeculativeJIT::compileValueSub):
(JSC::DFG::SpeculativeJIT::compileValueNegate):
(JSC::DFG::SpeculativeJIT::compileValueMul):
(JSC::DFG::SpeculativeJIT::compileForwardVarargs):
(JSC::DFG::SpeculativeJIT::compileCreateDirectArguments):
* dfg/DFGSpeculativeJIT32_64.cpp:
(JSC::DFG::SpeculativeJIT::emitCall):
* dfg/DFGSpeculativeJIT64.cpp:
(JSC::DFG::SpeculativeJIT::emitCall):
(JSC::DFG::SpeculativeJIT::compile):
* dfg/DFGTierUpCheckInjectionPhase.cpp:
(JSC::DFG::TierUpCheckInjectionPhase::run):
(JSC::DFG::TierUpCheckInjectionPhase::canOSREnterAtLoopHint):
(JSC::DFG::TierUpCheckInjectionPhase::buildNaturalLoopToLoopHintMap):
* dfg/DFGTypeCheckHoistingPhase.cpp:
(JSC::DFG::TypeCheckHoistingPhase::run):
* dfg/DFGVariableEventStream.cpp:
(JSC::DFG::VariableEventStream::reconstruct const):
* ftl/FTLLowerDFGToB3.cpp:
(JSC::FTL::DFG::LowerDFGToB3::compileValueAdd):
(JSC::FTL::DFG::LowerDFGToB3::compileValueSub):
(JSC::FTL::DFG::LowerDFGToB3::compileValueMul):
(JSC::FTL::DFG::LowerDFGToB3::compileArithAddOrSub):
(JSC::FTL::DFG::LowerDFGToB3::compileValueNegate):
(JSC::FTL::DFG::LowerDFGToB3::compileGetMyArgumentByVal):
(JSC::FTL::DFG::LowerDFGToB3::compileNewArrayWithSpread):
(JSC::FTL::DFG::LowerDFGToB3::compileSpread):
(JSC::FTL::DFG::LowerDFGToB3::compileCallOrConstructVarargsSpread):
(JSC::FTL::DFG::LowerDFGToB3::compileCallOrConstructVarargs):
(JSC::FTL::DFG::LowerDFGToB3::compileForwardVarargs):
(JSC::FTL::DFG::LowerDFGToB3::compileForwardVarargsWithSpread):
(JSC::FTL::DFG::LowerDFGToB3::getArgumentsLength):
(JSC::FTL::DFG::LowerDFGToB3::getCurrentCallee):
(JSC::FTL::DFG::LowerDFGToB3::getArgumentsStart):
(JSC::FTL::DFG::LowerDFGToB3::codeOriginDescriptionOfCallSite const):
* ftl/FTLOSRExitCompiler.cpp:
(JSC::FTL::compileStub):
* ftl/FTLOperations.cpp:
(JSC::FTL::operationMaterializeObjectInOSR):
* interpreter/CallFrame.cpp:
(JSC::CallFrame::bytecodeOffset):
* interpreter/StackVisitor.cpp:
(JSC::StackVisitor::unwindToMachineCodeBlockFrame):
(JSC::StackVisitor::readFrame):
(JSC::StackVisitor::readNonInlinedFrame):
(JSC::inlinedFrameOffset):
(JSC::StackVisitor::readInlinedFrame):
* interpreter/StackVisitor.h:
* jit/AssemblyHelpers.cpp:
(JSC::AssemblyHelpers::executableFor):
* jit/AssemblyHelpers.h:
(JSC::AssemblyHelpers::isStrictModeFor):
(JSC::AssemblyHelpers::argumentsStart):
(JSC::AssemblyHelpers::argumentCount):
* jit/PCToCodeOriginMap.cpp:
(JSC::PCToCodeOriginMap::PCToCodeOriginMap):
(JSC::PCToCodeOriginMap::findPC const):
* profiler/ProfilerOriginStack.cpp:
(JSC::Profiler::OriginStack::OriginStack):
* profiler/ProfilerOriginStack.h:
* runtime/ErrorInstance.cpp:
(JSC::appendSourceToError):
* runtime/SamplingProfiler.cpp:
(JSC::SamplingProfiler::processUnverifiedStackTraces):

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

6 months ago[GTK] REGRESSION(r243094): crash when launching minibrowser
commit-queue@webkit.org [Wed, 20 Mar 2019 20:18:49 +0000 (20:18 +0000)]
[GTK] REGRESSION(r243094): crash when launching minibrowser
https://bugs.webkit.org/show_bug.cgi?id=195951

Patch by Carlos Garcia Campos <cgarcia@igalia.com> on 2019-03-20
Reviewed by Joseph Pecoraro.

Always return the inspector from WebPageProxy::inspector() when the page hasn't been closed. The inspector is
created in WebPageProxy constructor and it's safe to use even before a process has been launched, because
m_inspectedPage is null-checked everywhere.

* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::inspector const):

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

6 months agoUpdate checks that determine if WebKit is system WebKit
krollin@apple.com [Wed, 20 Mar 2019 19:58:06 +0000 (19:58 +0000)]
Update checks that determine if WebKit is system WebKit
https://bugs.webkit.org/show_bug.cgi?id=195756

Reviewed by Alexey Proskuryakov.

The system WebKit can be installed in additional locations, so check
for and allow those, too.

Source/WebKit:

* Shared/mac/AuxiliaryProcessMac.mm:
(WebKit::AuxiliaryProcess::isSystemWebKit):

Source/WTF:

* wtf/Platform.h:

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

6 months agoUnreviewed followup to r243169 to fix test failures.
timothy@apple.com [Wed, 20 Mar 2019 19:57:24 +0000 (19:57 +0000)]
Unreviewed followup to r243169 to fix test failures.

* DerivedSources.make: Add HAVE_OS_DARK_MODE_SUPPORT to FEATURE_AND_PLATFORM_DEFINES.

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

6 months agoUnreviewed test gardening. Fix the results for absolute-in-async-overflow-scroll...
simon.fraser@apple.com [Wed, 20 Mar 2019 19:56:45 +0000 (19:56 +0000)]
Unreviewed test gardening. Fix the results for absolute-in-async-overflow-scroll.html.

* compositing/layer-creation/absolute-in-async-overflow-scroll-expected.txt:
* platform/ios-wk2/compositing/layer-creation/absolute-in-async-overflow-scroll-expected.txt: Copied from LayoutTests/compositing/layer-creation/absolute-in-async-overflow-scroll-expected.txt.

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

6 months agoUpdate the location for XProtect.meta.plist file
krollin@apple.com [Wed, 20 Mar 2019 19:52:40 +0000 (19:52 +0000)]
Update the location for XProtect.meta.plist file
https://bugs.webkit.org/show_bug.cgi?id=195764

Reviewed by Alexey Proskuryakov.

The location of this file is changing in the future, so adjust for
that.

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

* platform/mac/BlacklistUpdater.mm:

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

6 months agoWeb Inspector: Debugger: move breakpoint storage to use `WI.ObjectStore`
drousso@apple.com [Wed, 20 Mar 2019 19:50:21 +0000 (19:50 +0000)]
Web Inspector: Debugger: move breakpoint storage to use `WI.ObjectStore`
https://bugs.webkit.org/show_bug.cgi?id=192719
<rdar://problem/46746857>

Reviewed by Timothy Hatcher.

Source/WebInspectorUI:

* UserInterface/Controllers/DebuggerManager.js:
(WI.DebuggerManager):
(WI.DebuggerManager.prototype.addBreakpoint):
(WI.DebuggerManager.prototype.removeBreakpoint):
(WI.DebuggerManager.prototype._debuggerBreakpointOptions):
(WI.DebuggerManager.prototype._setBreakpoint.didSetBreakpoint):
(WI.DebuggerManager.prototype._setBreakpoint):
(WI.DebuggerManager.prototype._breakpointDisabledStateDidChange):
(WI.DebuggerManager.prototype._breakpointEditablePropertyDidChange):
(WI.DebuggerManager.prototype._saveBreakpoints): Deleted.

* UserInterface/Models/Breakpoint.js:
(WI.Breakpoint.prototype.saveIdentityToCookie):
(WI.Breakpoint.prototype.serializeOptions): Added.
(WI.Breakpoint.prototype.toJSON): Added.
(WI.Breakpoint.prototype.get options): Deleted.
(WI.Breakpoint.prototype.get info): Deleted.
(WI.Breakpoint.prototype._serializableActions): Deleted.
* UserInterface/Models/BreakpointAction.js:
(WI.BreakpointAction.prototype.toJSON): Added.
(WI.BreakpointAction.prototype.get info): Deleted.

* UserInterface/Base/ObjectStore.js:
(WI.ObjectStore.async reset): Added.
(WI.ObjectStore._open):
(WI.ObjectStore.prototype.get keyPath): Added.
(WI.ObjectStore.prototype.async.getAll):
(WI.ObjectStore.prototype.async.put): Added.
(WI.ObjectStore.prototype.async.putObject): Added.
(WI.ObjectStore.prototype.async.add): Deleted.
(WI.ObjectStore.prototype.async.addObject): Deleted.
Replace `add` with `put` so that if a key already exists, it is overridden.

* UserInterface/Controllers/AuditManager.js:
(WI.AuditManager.prototype.set editing):
(WI.AuditManager.prototype.async processJSON):

* UserInterface/Controllers/BreakpointPopoverController.js:
(WI.BreakpointPopoverController.prototype._popoverActionsAddActionButtonClicked):
Inline some `WI.Breakpoint` static values.

LayoutTests:

* inspector/unit-tests/objectStore/resources/objectStore-utilities.js:
* inspector/unit-tests/objectStore/put.html: Renamed from LayoutTests/inspector/unit-tests/objectStore/add.html.
* inspector/unit-tests/objectStore/put-expected.txt: Renamed from LayoutTests/inspector/unit-tests/objectStore/add-expected.txt.
* inspector/unit-tests/objectStore/putObject.html: Renamed from LayoutTests/inspector/unit-tests/objectStore/addObject.html.
* inspector/unit-tests/objectStore/putObject-expected.txt: Renamed from LayoutTests/inspector/unit-tests/objectStore/addObject-expected.txt.
* inspector/unit-tests/objectStore/delete-expected.txt:
* inspector/unit-tests/objectStore/delete.html:
* inspector/unit-tests/objectStore/deleteObject-expected.txt:
* inspector/unit-tests/objectStore/deleteObject.html:
* inspector/unit-tests/objectStore/clear.html:
Replace `add` with `put` so that if a key already exists, it is overridden.

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

6 months agoWeb Inspector: Sources: disabled breakpoints banner should be sticky
drousso@apple.com [Wed, 20 Mar 2019 19:37:16 +0000 (19:37 +0000)]
Web Inspector: Sources: disabled breakpoints banner should be sticky
https://bugs.webkit.org/show_bug.cgi?id=195104
<rdar://problem/48442259>

Reviewed by Timothy Hatcher.

Allow each of the individual sections to be scrolled separately from the entire sidebar.

Leverage CSS variables set via JavaScript to be able to calculate the maximum height of each
`WI.TreeOutline` section based on the number of items.

* UserInterface/Views/SourcesNavigationSidebarPanel.js:
(WI.SourcesNavigationSidebarPanel):
(WI.SourcesNavigationSidebarPanel.prototype._handleCallStackElementAddedOrRemoved): Added.
(WI.SourcesNavigationSidebarPanel.prototype._handleBreakpointElementAddedOrRemoved):
(WI.SourcesNavigationSidebarPanel.prototype._handleDebuggerPaused):
(WI.SourcesNavigationSidebarPanel.prototype._handleDebuggerResumed):
* UserInterface/Views/SourcesNavigationSidebarPanel.css:
(.sidebar > .panel.navigation.sources > .content):
(.sidebar > .panel.navigation.sources > .content .details-section): Added.
(.sidebar > .panel.navigation.sources > .content .details-section.paused-reason.collapsed > .header > .options,): Added.
(.sidebar > .panel.navigation.sources > .content .details-section.collapsed > .content): Added.
(.sidebar > .panel.navigation.sources > .content > :matches(.pause-reason-container, .call-stack-container, .breakpoints-container)): Added.
(.sidebar > .panel.navigation.sources > .content > .call-stack-container): Added.
(.sidebar > .panel.navigation.sources > .content > .breakpoints-container): Added.
(.sidebar > .panel.navigation.sources > .content > .breakpoints-container .create-breakpoint): Added.
(.sidebar > .panel.navigation.sources > .content > .resources-container): Added.
(.sidebar > .panel.navigation.sources > .content .tree-outline.single-thread): Added.
(.sidebar > .panel.navigation.sources > .content .tree-outline.single-thread > .item.thread): Added.
(@media (min-height: 600px) .sidebar > .panel.navigation.sources > .content): Added.
(@media (min-height: 600px) .sidebar > .panel.navigation.sources > .content > .pause-reason-container): Added.
(@media (min-height: 600px) .sidebar > .panel.navigation.sources > .content > :matches(.call-stack-container, .breakpoints-container, .resources-container)): Added.
(.sidebar > .panel.navigation.sources > .content > .details-section): Deleted.
(.sidebar > .panel.navigation.sources > .content > .details-section.paused-reason.collapsed > .header > .options,): Deleted.
(.sidebar > .panel.navigation.sources > .content > .details-section.collapsed > .content): Deleted.
(.sidebar > .panel.navigation.sources > .content > .details-section.breakpoints > .header > .options .create-breakpoint): Deleted.
(.sidebar > .panel.navigation.sources > .content > .tree-outline.single-thread): Deleted.
(.sidebar > .panel.navigation.sources > .content > .tree-outline.single-thread > .item.thread): Deleted.
(.sidebar > .panel.navigation.sources > .content > .resources): Deleted.

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

6 months ago"Reveal in Layers Tab" context menu option should not be available if the Layers...
drousso@apple.com [Wed, 20 Mar 2019 19:11:01 +0000 (19:11 +0000)]
"Reveal in Layers Tab" context menu option should not be available if the Layers Tab has not been enabled
https://bugs.webkit.org/show_bug.cgi?id=196009

Reviewed by Joseph Pecoraro.

* UserInterface/Views/ContextMenuUtilities.js:
(WI.appendContextMenuItemsForDOMNode):

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

6 months ago[iOS] Unable to PiP web videos in Safari due to sandbox violation
pvollan@apple.com [Wed, 20 Mar 2019 19:06:44 +0000 (19:06 +0000)]
[iOS] Unable to PiP web videos in Safari due to sandbox violation
https://bugs.webkit.org/show_bug.cgi?id=196015
<rdar://problem/48867037>

Reviewed by Brent Fulgham.

The sandbox should allow getting the iokit property 'ui-pip'.

* Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb:

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

6 months ago(Test fix) Override minimumTimeBetweenDataRecordsRemoval in ResourceLoadStatisticsSto...
wilander@apple.com [Wed, 20 Mar 2019 19:01:32 +0000 (19:01 +0000)]
(Test fix) Override minimumTimeBetweenDataRecordsRemoval in ResourceLoadStatisticsStore::shouldRemoveDataRecord() during layout tests
https://bugs.webkit.org/show_bug.cgi?id=196017

Unreviewed test fix.

This patch adds a check of parameters().isRunningTest to the return of
ResourceLoadStatisticsStore::shouldRemoveDataRecord() to allow successive
layout tests to remove website data, effectively overriding the
minimumTimeBetweenDataRecordsRemoval setting.

* NetworkProcess/Classifier/ResourceLoadStatisticsStore.cpp:
(WebKit::ResourceLoadStatisticsStore::shouldRemoveDataRecords const):

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

6 months ago[iOS] Group UIWebFormAccessoryDelegate-related code and tighten it up a bit
dbates@webkit.org [Wed, 20 Mar 2019 18:59:03 +0000 (18:59 +0000)]
[iOS] Group UIWebFormAccessoryDelegate-related code and tighten it up a bit
https://bugs.webkit.org/show_bug.cgi?id=196018

Reviewed by Wenson Hsieh.

* UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView accessoryClear]): Use uniform initializer syntax. Code could send the empty
string, but I resisted since null string, as we do now, likely encodes more compactly and we
avoid a per-process alloc.
(-[WKContentView accessoryTab:]): Fix style nit; missing space between capture list and arguments
in lambda. Also use lamdba capture initializer syntax and remove a local.
(-[WKContentView _updateAccessory]): Remove a FIXME as it can't be satified with the current
design without more bookkeeping. The design for showing and hiding an AutoFill button added in
r166933 requires knowing the title for the button when showing it via -setAccessoryViewCustomButtonTitle.
We could re-implement such that -setAccessoryViewCustomButtonTitle: stores the title and calls
-_updateAccessory, but that has the disadvantage of increasing the memory footprint of WKContentView
for the stored title and that seems worse than centralizing the logic in _updateAccessory. So,
let's not fix this FIXME. Now that we are removing the FIXME, change to use an early return style.
(-[WKContentView _hideKeyboard]): Micro optimization; only call _updateAccessory if we have
a form accessory view. This method is called everytime we load a page (more precisely when we
commit the load for a page) in addition to everytime we blur (defocus) an element. No need to
update an accessory if we don't have one.

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

6 months agoWeb Inspector: Console: add a setting for controlling auto-expansion of Trace messages
drousso@apple.com [Wed, 20 Mar 2019 18:58:04 +0000 (18:58 +0000)]
Web Inspector: Console: add a setting for controlling auto-expansion of Trace messages
https://bugs.webkit.org/show_bug.cgi?id=195690

Reviewed by Timothy Hatcher.

* UserInterface/Views/ConsoleMessageView.js:
(WI.ConsoleMessageView.prototype._appendStackTrace):

* UserInterface/Base/Setting.js:
* UserInterface/Views/SettingsTabContentView.js:
(WI.SettingsTabContentView.prototype._createGeneralSettingsView):

* Localizations/en.lproj/localizedStrings.js:

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

6 months agoWeb Inspector: Database: lazily create the agent
drousso@apple.com [Wed, 20 Mar 2019 18:53:47 +0000 (18:53 +0000)]
Web Inspector: Database: lazily create the agent
https://bugs.webkit.org/show_bug.cgi?id=195587
<rdar://problem/48791735>

Reviewed by Timothy Hatcher.

Source/WebCore:

No change in functionality.

* inspector/agents/InspectorDatabaseAgent.h:
* inspector/agents/InspectorDatabaseAgent.cpp:
(WebCore::InspectorDatabaseAgent::didCommitLoad): Added.
(WebCore::InspectorDatabaseAgent::didOpenDatabase):
(WebCore::InspectorDatabaseAgent::InspectorDatabaseAgent):
(WebCore::InspectorDatabaseAgent::enable):
(WebCore::InspectorDatabaseAgent::disable):
(WebCore::InspectorDatabaseAgent::getDatabaseTableNames):
(WebCore::InspectorDatabaseAgent::executeSQL):
(WebCore::InspectorDatabaseAgent::databaseId):
(WebCore::InspectorDatabaseAgent::findByFileName):
(WebCore::InspectorDatabaseAgent::databaseForId):
(WebCore::InspectorDatabaseAgent::clearResources): Deleted.
(WebCore::InspectorDatabaseAgent::~InspectorDatabaseAgent): Deleted.
* inspector/InspectorDatabaseResource.h:
(WebCore::InspectorDatabaseResource::database const):
(WebCore::InspectorDatabaseResource::setDatabase):
(WebCore::InspectorDatabaseResource::database): Deleted.
* inspector/InspectorDatabaseResource.cpp:
(WebCore::InspectorDatabaseResource::create):
(WebCore::InspectorDatabaseResource::InspectorDatabaseResource):
(WebCore::InspectorDatabaseResource::bind):
* inspector/InspectorInstrumentation.h:
(WebCore::InspectorInstrumentation::didOpenDatabase):
* inspector/InspectorInstrumentation.cpp:
(WebCore::InspectorInstrumentation::didCommitLoadImpl):
(WebCore::InspectorInstrumentation::didOpenDatabaseImpl):
Pass the `Database` as a reference instead of a pointer. Retrieve any information directly
from the `Database`, rather than using the arguments that were used to create it.

* Modules/webdatabase/Database.h:
(WebCore::Database::expectedVersion const): Deleted.
* Modules/webdatabase/Database.cpp:
(WebCore::Database::expectedVersion const): Added.
* Modules/webdatabase/DatabaseManager.cpp:
(WebCore::DatabaseManager::openDatabase):
* Modules/webdatabase/DatabaseTracker.h:
* Modules/webdatabase/DatabaseTracker.cpp:
(WebCore::DatabaseTracker::closeAllDatabases):
(WebCore::DatabaseTracker::openDatabases): Added.
Expose various values used by `InspectorDatabaseAgent` and `InspectorDatabaseResource`.

* inspector/InspectorController.cpp:
(WebCore::InspectorController::InspectorController):
(WebCore::InspectorController::createLazyAgents):
* inspector/WorkerInspectorController.cpp:
(WebCore::WorkerInspectorController::WorkerInspectorController):

* inspector/CommandLineAPIHost.h:
(WebCore::CommandLineAPIHost::init):
* inspector/CommandLineAPIHost.cpp:
(WebCore::CommandLineAPIHost::disconnect):
(WebCore::CommandLineAPIHost::inspect):
(WebCore::CommandLineAPIHost::clearConsoleMessages):
(WebCore::CommandLineAPIHost::databaseId):
(WebCore::CommandLineAPIHost::storageId):
Rather than pass each agent individually, pass the entire `InstrumentingAgents` so that the
current agent can be used instead of whatever was initially created.

LayoutTests:

* inspector/protocol/backend-dispatcher-argument-errors.html:
* inspector/runtime/CommandLineAPI-inspect.html:

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

6 months ago[css-grid] Always consider baseline shim for the minimum contribution
commit-queue@webkit.org [Wed, 20 Mar 2019 18:26:40 +0000 (18:26 +0000)]
[css-grid] Always consider baseline shim for the minimum contribution
https://bugs.webkit.org/show_bug.cgi?id=195964

Patch by Oriol Brufau <obrufau@igalia.com> on 2019-03-20
Reviewed by Javier Fernandez.

LayoutTests/imported/w3c:

Import WPT tests.

* web-platform-tests/css/css-grid/layout-algorithm/grid-minimum-contribution-baseline-shim-expected.txt: Added.
* web-platform-tests/css/css-grid/layout-algorithm/grid-minimum-contribution-baseline-shim-vertical-lr-expected.txt: Added.
* web-platform-tests/css/css-grid/layout-algorithm/grid-minimum-contribution-baseline-shim-vertical-lr.html: Added.
* web-platform-tests/css/css-grid/layout-algorithm/grid-minimum-contribution-baseline-shim-vertical-rl-expected.txt: Added.
* web-platform-tests/css/css-grid/layout-algorithm/grid-minimum-contribution-baseline-shim-vertical-rl.html: Added.
* web-platform-tests/css/css-grid/layout-algorithm/grid-minimum-contribution-baseline-shim.html: Added.
* web-platform-tests/css/css-grid/layout-algorithm/w3c-import.log:

Source/WebCore:

Tests: imported/w3c/web-platform-tests/css/css-grid/layout-algorithm/grid-minimum-contribution-baseline-shim-vertical-lr.html
       imported/w3c/web-platform-tests/css/css-grid/layout-algorithm/grid-minimum-contribution-baseline-shim-vertical-rl.html
       imported/w3c/web-platform-tests/css/css-grid/layout-algorithm/grid-minimum-contribution-baseline-shim.html

Before this patch, the shim used for baseline alignment is not taken
into consideration when calculating the minimum contribution of a grid
item if its preferred size is auto, its minimum size is auto, and the
max track sizing function is a fixed small value. In this case, the
auto minimum size can produce a smaller track than if it was 0.

The specification needs to clarify how baseline shims interact with
minimum contributions (https://github.com/w3c/csswg-drafts/issues/3660),
but the above doesn't make sense.

* rendering/GridTrackSizingAlgorithm.cpp:
(WebCore::GridTrackSizingAlgorithmStrategy::minSizeForChild const):

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

6 months ago[ews-build] Improve failure summary string for ApplyPatch step
aakash_jain@apple.com [Wed, 20 Mar 2019 18:10:32 +0000 (18:10 +0000)]
[ews-build] Improve failure summary string for ApplyPatch step
https://bugs.webkit.org/show_bug.cgi?id=195995

Reviewed by Alexey Proskuryakov.

* BuildSlaveSupport/ews-build/steps.py:
(ApplyPatch.getResultSummary): Override getResultSummary.

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

6 months agoUnreviewed, further attempt to fix clang 3.8 build
mcatanzaro@igalia.com [Wed, 20 Mar 2019 18:03:39 +0000 (18:03 +0000)]
Unreviewed, further attempt to fix clang 3.8 build
https://bugs.webkit.org/show_bug.cgi?id=195947

* wtf/MetaAllocator.cpp:
(WTF::MetaAllocator::allocate):

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

6 months agoREGRESSION(r243115) breaks build for clang 3.8
mcatanzaro@igalia.com [Wed, 20 Mar 2019 18:02:52 +0000 (18:02 +0000)]
REGRESSION(r243115) breaks build for clang 3.8
https://bugs.webkit.org/show_bug.cgi?id=195947

Reviewed by Chris Dumez.

* wtf/text/StringConcatenate.h:
(WTF::tryMakeStringFromAdapters):

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

6 months agoWeb Inspector: DOM: selecting a node in a different frame should automatically switch...
drousso@apple.com [Wed, 20 Mar 2019 17:45:02 +0000 (17:45 +0000)]
Web Inspector: DOM: selecting a node in a different frame should automatically switch the console prompt's execution context
https://bugs.webkit.org/show_bug.cgi?id=195805
<rdar://problem/48930866>

Reviewed by Timothy Hatcher.

Add an "Auto" execution context item that is selected by default and will update the
selected execution context whenever the inspected node changes. It will also display the
preferred name for whatever execution context is currently active.

* UserInterface/Views/QuickConsole.js:
(WI.QuickConsole):
(WI.QuickConsole.prototype.initializeMainExecutionContextPathComponent):
(WI.QuickConsole.prototype._preferredNameForFrame): Added.
(WI.QuickConsole.prototype._selectExecutionContext): Added.
(WI.QuickConsole.prototype._executionContextPathComponentsToDisplay):
(WI.QuickConsole.prototype._rebuildExecutionContextPathComponents):
(WI.QuickConsole.prototype._framePageExecutionContextsChanged):
(WI.QuickConsole.prototype._frameExecutionContextsCleared):
(WI.QuickConsole.prototype._activeExecutionContextChanged):
(WI.QuickConsole.prototype._createExecutionContextPathComponent):
(WI.QuickConsole.prototype._insertOtherExecutionContextPathComponent):
(WI.QuickConsole.prototype._removeOtherExecutionContextPathComponent):
(WI.QuickConsole.prototype._insertExecutionContextPathComponentForFrame):
(WI.QuickConsole.prototype._removeExecutionContextPathComponentForFrame):
(WI.QuickConsole.prototype._targetRemoved):
(WI.QuickConsole.prototype._pathComponentSelected):
(WI.QuickConsole.prototype._handleInspectedNodeChanged): Added.
(WI.QuickConsole.prototype.get selectedExecutionContext): Deleted.
(WI.QuickConsole.prototype.set selectedExecutionContext): Deleted.
(WI.QuickConsole.prototype._createExecutionContextPathComponentFromFrame): Deleted.
* UserInterface/Views/QuickConsole.css:
(.quick-console > .navigation-bar > .hierarchical-path:not(.automatic-execution-context)): Added.
(.quick-console > .navigation-bar > .hierarchical-path:not(.automatic-execution-context) .execution-context): Added.
(.quick-console > .navigation-bar > .hierarchical-path:not(.automatic-execution-context) .execution-context .selector-arrows): Added.
(.quick-console > .navigation-bar > .hierarchical-path.non-default-execution-context .execution-context): Deleted.
(.quick-console > .navigation-bar > .hierarchical-path.non-default-execution-context .execution-context .selector-arrows): Deleted.

* UserInterface/Controllers/DOMManager.js:
(WI.DOMManager.prototype.get inspectedNode): Added.
(WI.DOMManager.prototype.setInspectedNode):
Broadcast when the inspected node changes.

* UserInterface/Views/NavigationBar.js:
(WI.NavigationBar.prototype.layout):
When `sizesToFit` is enabled, don't force any items to be hidden.

* Localizations/en.lproj/localizedStrings.js:

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

6 months agoWeb Inspector: refactor WI.TimelineDataGridNode and its subclasses to unify the API...
drousso@apple.com [Wed, 20 Mar 2019 17:43:05 +0000 (17:43 +0000)]
Web Inspector: refactor WI.TimelineDataGridNode and its subclasses to unify the API surface
https://bugs.webkit.org/show_bug.cgi?id=195959
<rdar://problem/49028896>

Reviewed by Timothy Hatcher.

* UserInterface/Views/TimelineDataGridNode.js:
(WI.TimelineDataGridNode.prototype.get records):
(WI.TimelineDataGridNode.prototype.get data):
(WI.TimelineDataGridNode.prototype.refresh):

* UserInterface/Views/HeapAllocationsTimelineDataGridNode.js:
(WI.HeapAllocationsTimelineDataGridNode):
(WI.HeapAllocationsTimelineDataGridNode.prototype.get heapSnapshot): Added.
(WI.HeapAllocationsTimelineDataGridNode.prototype.get data):
(WI.HeapAllocationsTimelineDataGridNode.prototype.createCellContent):
(WI.HeapAllocationsTimelineDataGridNode.prototype.createCells):
(WI.HeapAllocationsTimelineDataGridNode.prototype._handleHeapSnapshotCollectedNodes):
(WI.HeapAllocationsTimelineDataGridNode.prototype._handleHeapSnapshotInvalidated):
(WI.HeapAllocationsTimelineDataGridNode.prototype.get record): Deleted.
(WI.HeapAllocationsTimelineDataGridNode.prototype.updateTimestamp): Deleted.
(WI.HeapAllocationsTimelineDataGridNode.prototype._heapSnapshotCollectedNodes): Deleted.
(WI.HeapAllocationsTimelineDataGridNode.prototype._heapSnapshotInvalidated): Deleted.

* UserInterface/Views/LayoutTimelineDataGridNode.js:
(WI.LayoutTimelineDataGridNode):
(WI.LayoutTimelineDataGridNode.prototype.get data):
(WI.LayoutTimelineDataGridNode.prototype.createCellContent):
(WI.LayoutTimelineDataGridNode.prototype.get records): Deleted.

* UserInterface/Views/MediaTimelineDataGridNode.js:
(WI.MediaTimelineDataGridNode):
(WI.MediaTimelineDataGridNode.prototype.get records): Deleted.

* UserInterface/Views/ProfileNodeDataGridNode.js:
(WI.ProfileNodeDataGridNode):
(WI.ProfileNodeDataGridNode.prototype.get profileNode):
(WI.ProfileNodeDataGridNode.prototype.get data):
(WI.ProfileNodeDataGridNode.prototype.createCellContent):
(WI.ProfileNodeDataGridNode.prototype._populate):
(WI.ProfileNodeDataGridNode.prototype.get records): Deleted.
(WI.ProfileNodeDataGridNode.prototype.get baseStartTime): Deleted.
(WI.ProfileNodeDataGridNode.prototype.get rangeStartTime): Deleted.
(WI.ProfileNodeDataGridNode.prototype.get rangeEndTime): Deleted.
(WI.ProfileNodeDataGridNode.prototype.updateRangeTimes): Deleted.
(WI.ProfileNodeDataGridNode.prototype.refresh): Deleted.

* UserInterface/Views/RenderingFrameTimelineDataGridNode.js:
(WI.RenderingFrameTimelineDataGridNode):
(WI.RenderingFrameTimelineDataGridNode.prototype.get data):
(WI.RenderingFrameTimelineDataGridNode.prototype.createCellContent):
(WI.RenderingFrameTimelineDataGridNode.prototype.get records): Deleted.

* UserInterface/Views/ResourceTimelineDataGridNode.js:
(WI.ResourceTimelineDataGridNode):
(WI.ResourceTimelineDataGridNode.prototype.get resource):
(WI.ResourceTimelineDataGridNode.prototype.get data):
(WI.ResourceTimelineDataGridNode.prototype.createCellContent):
(WI.ResourceTimelineDataGridNode.prototype.appendContextMenuItems):
(WI.ResourceTimelineDataGridNode.prototype.filterableDataForColumn):
(WI.ResourceTimelineDataGridNode.prototype._createNameCellDocumentFragment):
(WI.ResourceTimelineDataGridNode.prototype._cachedCellContent):
(WI.ResourceTimelineDataGridNode.prototype._timelineRecordUpdated):
(WI.ResourceTimelineDataGridNode.prototype._dataGridNodeGoToArrowClicked):
(WI.ResourceTimelineDataGridNode.prototype._updateStatus):
(WI.ResourceTimelineDataGridNode.prototype._mouseoverRecordBar.else.let.graphDataSource.get startTime):
(WI.ResourceTimelineDataGridNode.prototype._mouseoverRecordBar.else.let.graphDataSource.get currentTime):
(WI.ResourceTimelineDataGridNode.prototype._mouseoverRecordBar.else.let.graphDataSource.get endTime):
(WI.ResourceTimelineDataGridNode.prototype._mouseoverRecordBar.else.let.graphDataSource.get _extraTimePadding):
(WI.ResourceTimelineDataGridNode.prototype._mouseoverRecordBar):
(WI.ResourceTimelineDataGridNode.prototype.get records): Deleted.

* UserInterface/Views/ResourceTimingPopoverDataGridNode.js:
(WI.ResourceTimingPopoverDataGridNode):
(WI.ResourceTimingPopoverDataGridNode.prototype.get records): Deleted.

* UserInterface/Views/ScriptTimelineDataGridNode.js:
(WI.ScriptTimelineDataGridNode.prototype.get data):
(WI.ScriptTimelineDataGridNode.prototype.get subtitle):
(WI.ScriptTimelineDataGridNode.prototype.createCellContent):
(WI.ScriptTimelineDataGridNode.prototype.get records): Deleted.
(WI.ScriptTimelineDataGridNode.prototype.get baseStartTime): Deleted.
(WI.ScriptTimelineDataGridNode.prototype.get rangeStartTime): Deleted.
(WI.ScriptTimelineDataGridNode.prototype.get rangeEndTime): Deleted.
(WI.ScriptTimelineDataGridNode.prototype.updateRangeTimes): Deleted.

* UserInterface/Views/SourceCodeTimelineTimelineDataGridNode.js:
(WI.SourceCodeTimelineTimelineDataGridNode.prototype.get data):

* UserInterface/Views/HeapAllocationsTimelineView.js:
(WI.HeapAllocationsTimelineView):
(WI.HeapAllocationsTimelineView.prototype.layout):
(WI.HeapAllocationsTimelineView.prototype.reset):
* UserInterface/Views/LayoutTimelineView.js:
(WI.LayoutTimelineView.prototype._processPendingRecords):
* UserInterface/Views/MediaTimelineView.js:
(WI.MediaTimelineView.prototype._processPendingRecords):
* UserInterface/Views/NetworkTimelineView.js:
(WI.NetworkTimelineView.prototype._processPendingRecords):
* UserInterface/Views/OverviewTimelineView.js:
(WI.OverviewTimelineView.prototype._addResourceToDataGridIfNeeded):
(WI.OverviewTimelineView.prototype._addSourceCodeTimeline):
* UserInterface/Views/RenderingFrameTimelineView.js:
(WI.RenderingFrameTimelineView.prototype._processPendingRecords):
* UserInterface/Views/ScriptDetailsTimelineView.js:
(WI.ScriptDetailsTimelineView.prototype.layout):
(WI.ScriptDetailsTimelineView.prototype._processPendingRecords):
Update Timeline `WI.DataGrid` views to use the new constructor format.

* UserInterface/Views/ResourceTimelineDataGridNode.css:
(.resource-timing-popover-content .data-grid td.graph-column):
Drive-by: add extra padding before/after resource timing bars shown when hovering.
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@243213 268f45cc-cd09-0410-ab3c-d52691b4dbfc

6 months agoFix _getContentsAsAttributedStringWithCompletionHandler availability for iOS.
commit-queue@webkit.org [Wed, 20 Mar 2019 16:47:55 +0000 (16:47 +0000)]
Fix _getContentsAsAttributedStringWithCompletionHandler availability for iOS.
https://bugs.webkit.org/show_bug.cgi?id=195999

Patch by Olivier Robin <olivierrobin@chromium.org> on 2019-03-20
Reviewed by Tim Horton.

* UIProcess/API/Cocoa/WKWebViewPrivate.h:

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

6 months agoSome elements lag behind async overflow scrolling on palace-games.com
simon.fraser@apple.com [Wed, 20 Mar 2019 16:44:49 +0000 (16:44 +0000)]
Some elements lag behind async overflow scrolling on palace-games.com
https://bugs.webkit.org/show_bug.cgi?id=195934

Reviewed by Zalan Bujtas.
Source/WebCore:

The logic added in r242997 was wrong for an absolutely-positioned layer whose containig block was
inside an overflow:scroll, but whose compositing ancestor was outside. This is a case where
we need to make a Positioning node for the absolute layer, because it needs to move along
with the scrolled content.

There are six permutations of overflow, containing block and compositing ancestor that we care about.
Showing renderer (aka DOM) order, they are (where <- indicates child <- parent):

layer <- cb <- ca <- os -- no positioned node required
layer <- cb <- os <- ca -- compositing parent skips overflow, need a "Moved" Positioned node.
layer <- ov <- cb <- ca -- no positioned node required
layer <- ov <- ca <- cb -- no positioned node required
layer <- ca <- cb <- ov -- no positioned node required
layer <- ca <- ov <- cb -- containing block skips overflow, need a "Stationary" Positioned node.

[cb = containing block, ca = compositing ancestor, ov = overflow scroll]

Test: scrollingcoordinator/scrolling-tree/positioned-nodes-complex.html

* rendering/RenderLayer.cpp:
(WebCore::outputPaintOrderTreeRecursive):
* rendering/RenderLayerCompositor.cpp:
(WebCore::layerParentedAcrossCoordinatedScrollingBoundary):
(WebCore::RenderLayerCompositor::computeCoordinatedPositioningForLayer const):

LayoutTests:

Add a test with more combinations of overflow, containing block and compositing ancestor.

* platform/ios-wk2/scrollingcoordinator/scrolling-tree/positioned-nodes-complex-expected.txt: Added.
* scrollingcoordinator/scrolling-tree/positioned-nodes-complex-expected.txt: Added.
* scrollingcoordinator/scrolling-tree/positioned-nodes-complex.html: Added.

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

6 months agoAdopt RegistrableDomain in the Storage Access API prompt code paths
bfulgham@apple.com [Wed, 20 Mar 2019 16:41:15 +0000 (16:41 +0000)]
Adopt RegistrableDomain in the Storage Access API prompt code paths
https://bugs.webkit.org/show_bug.cgi?id=195957
<rdar://problem/49048028>

Reviewed by Chris Dumez.

While making the code changes in Bug 195866 we noticed that strings were being
used to pass the origins for the API calls. We should adopt the RegistrableDomain
class to improve type safety and avoid introducing bugs in the future.

* UIProcess/API/APIUIClient.h:
(API::UIClient::requestStorageAccessConfirm):
* UIProcess/API/C/WKPage.cpp:
(WKPageSetPageUIClient):
* UIProcess/Cocoa/UIDelegate.h:
* UIProcess/Cocoa/UIDelegate.mm:
(WebKit::UIDelegate::UIClient::requestStorageAccessConfirm):
* UIProcess/Cocoa/WKStorageAccessAlert.h:
* UIProcess/Cocoa/WKStorageAccessAlert.mm:
(WebKit::presentStorageAccessAlert):
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::requestStorageAccessConfirm):

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

6 months agoExplicitly trigger compositing for layers that need to be moved by ScrollingTreePosit...
simon.fraser@apple.com [Wed, 20 Mar 2019 16:32:32 +0000 (16:32 +0000)]
Explicitly trigger compositing for layers that need to be moved by ScrollingTreePositionedNodes
https://bugs.webkit.org/show_bug.cgi?id=195710
Source/WebCore:

<rdar://problem/48867502>

Reviewed by Zalan Bujtas.

A position:absolute layer whose containing block is outside an enclosing overflow:scroll, but
whose compositing ancestor is the overflow or is inside it, needs to be composited so that
we can make a Positioning scrolling tree node for it.

Handle this case as a "OverflowScrollPositioning" indirect compositing reason.

Test: compositing/layer-creation/absolute-in-async-overflow-scroll.html

* inspector/agents/InspectorLayerTreeAgent.cpp:
(WebCore::InspectorLayerTreeAgent::reasonsForCompositingLayer):
* rendering/RenderLayer.h:
* rendering/RenderLayerCompositor.cpp:
(WebCore::RenderLayerCompositor::computeCompositingRequirements):
(WebCore::RenderLayerCompositor::requiresOwnBackingStore const):
(WebCore::RenderLayerCompositor::reasonsForCompositing const):
(WebCore::RenderLayerCompositor::logReasonsForCompositing):
(WebCore::RenderLayerCompositor::requiresCompositingForIndirectReason const):
(WebCore::RenderLayerCompositor::layerContainingBlockCrossesCoordinatedScrollingBoundary):
(WebCore::layerContainingBlockCrossesCoordinatedScrollingBoundary): Deleted.
* rendering/RenderLayerCompositor.h: Generalize OverflowScrollingTouch to OverflowScrolling.

LayoutTests:

Reviewed by Zalan Bujtas.

* compositing/layer-creation/absolute-in-async-overflow-scroll-expected.txt: Added.
* compositing/layer-creation/absolute-in-async-overflow-scroll.html: Added.

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

6 months agoWeb Inspector: changes to CSS resources only take affect once editing stops
drousso@apple.com [Wed, 20 Mar 2019 16:28:16 +0000 (16:28 +0000)]
Web Inspector: changes to CSS resources only take affect once editing stops
https://bugs.webkit.org/show_bug.cgi?id=195774
<rdar://problem/48905413>

Reviewed by Timothy Hatcher.

* UserInterface/Controllers/CSSManager.js:
(WI.CSSManager.prototype._resourceContentDidChange.applyStyleSheetChanges.styleSheetFound):
(WI.CSSManager.prototype._resourceContentDidChange):
(WI.CSSManager.prototype._updateResourceContent.fetchedStyleSheetContent):
(WI.CSSManager.prototype._updateResourceContent):
Use a `Throttler` instead of a 500ms debounce.

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