WebKit-https.git
6 months agoWeb Inspector: switching tabs should re-focus the previously focused element
drousso@apple.com [Sat, 2 Nov 2019 01:27:14 +0000 (01:27 +0000)]
Web Inspector: switching tabs should re-focus the previously focused element
https://bugs.webkit.org/show_bug.cgi?id=203744

Reviewed by Brian Burg.

* UserInterface/Views/TabBrowser.js:
(WI.TabBrowser.prototype._tabBarItemSelected):
(WI.TabBrowser.prototype._saveFocusedNodeForTabContentView): Added.
(WI.TabBrowser.prototype._restoreFocusedNodeForTabContentView): Added.
Store the `document.activeElement` on the `WI.TabContentView` and `.focus()` it after we're
done showing the newly selected tab, but only if there isn't already something focused.

* UserInterface/Views/TabBar.js:
(WI.TabBar.prototype.set selectedTabBarItem):
* UserInterface/Views/LegacyTabBar.js:
(WI.LegacyTabBar.prototype.set selectedTabBarItem):
Include the previously selected tab bar item when dispatching selection change events.

* UserInterface/Views/ContentBrowserTabContentView.js:
(WI.ContentBrowserTabContentView.prototype._revealAndSelectRepresentedObject):
Don't omit focus when revealing represented objects.

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

6 months agoPython 3: Add support in webkitpy.layout_tests.model
jbedard@apple.com [Sat, 2 Nov 2019 01:17:10 +0000 (01:17 +0000)]
Python 3: Add support in webkitpy.layout_tests.model
https://bugs.webkit.org/show_bug.cgi?id=203702

Reviewed by Stephanie Lewis.

* Scripts/test-webkitpy-python3: Add webkitpy.layout_tests.model.
* Scripts/webkitpy/layout_tests/models/test_configuration.py:
(SpecifierSorter.sort_specifiers): Convert iterator to list.
(TestConfigurationConverter.to_config_set): Use reduce from functors.
(TestConfigurationConverter.intersect_combination): Ditto.
* Scripts/webkitpy/layout_tests/models/test_expectations.py:
(TestExpectationsModel.get_test_set_for_keyword): Use iterators in both Python 2
and Python 3.
(TestExpectationsModel._remove_from_sets): Ditto.
(TestExpectations.parse_generic_expectations): Covert iterators to lists for indexing.
(TestExpectations.parse_default_port_expectations): Ditto.
(TestExpectations.parse_override_expectations): Ditto.
(TestExpectations.remove_configuration_from_test): Use any instead of just checking the
first element in the set.
* Scripts/webkitpy/layout_tests/models/test_run_results.py:
(summarize_results): Use items instead of iteritems.

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

6 months agoAX: Restrict WebSpeech voices to built-in voices only
cfleizach@apple.com [Sat, 2 Nov 2019 00:54:04 +0000 (00:54 +0000)]
AX: Restrict WebSpeech voices to built-in voices only
https://bugs.webkit.org/show_bug.cgi?id=203689

Reviewed by Per Arne Vollan.

Only show built-in voices when requesting through WebKit to reduce fingerprinting surface area.

* platform/ios/PlatformSpeechSynthesizerIOS.mm:
(WebCore::PlatformSpeechSynthesizer::initializeVoiceList):

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

6 months agoWeb Inspector: Timelines: add a timeline that shows information about any recorded...
drousso@apple.com [Sat, 2 Nov 2019 00:45:35 +0000 (00:45 +0000)]
Web Inspector: Timelines: add a timeline that shows information about any recorded CSS animation/transition
https://bugs.webkit.org/show_bug.cgi?id=203651
<rdar://problem/56128726>

Reviewed by Brian Burg.

Source/JavaScriptCore:

Unlike all other forms of Web Animations, CSS animations/transitions, are _not_ created by
JavaScript, and therefore can seemingly appear out of nowhere. This patch expands the Media
timeline to be the Media & Animations timeline, which tracks when CSS animations/transitions
are created, started, delayed, iterated, canceled, or finished.

* CMakeLists.txt:
* DerivedSources-input.xcfilelist:
* DerivedSources.make:
* inspector/protocol/Animation.json: Added.
* inspector/protocol/Timeline.json:
Add an Animation domain for handling the tracking of CSS Web Animations.

Source/WebCore:

Unlike all other forms of Web Animations, CSS animations/transitions, are _not_ created by
JavaScript, and therefore can seemingly appear out of nowhere. This patch expands the Media
timeline to be the Media & Animations timeline, which tracks when CSS animations/transitions
are created, started, delayed, iterated, canceled, or finished.

Test: inspector/animation/tracking.html

* animation/KeyframeEffect.cpp:
(WebCore::KeyframeEffect::apply):
* animation/WebAnimation.h:
* animation/WebAnimation.cpp:
(WebCore::WebAnimation::~WebAnimation):
(WebCore::WebAnimation::contextDestroyed): Added.
(WebCore::WebAnimation::setEffectInternal):
* inspector/InspectorInstrumentation.h:
(WebCore::InspectorInstrumentation::willApplyKeyframeEffect): Added.
(WebCore::InspectorInstrumentation::didChangeWebAnimationEffect): Added.
(WebCore::InspectorInstrumentation::willDestroyWebAnimation): Added.
* inspector/InspectorInstrumentation.cpp:
(WebCore::InspectorInstrumentation::willApplyKeyframeEffectImpl): Added.
(WebCore::InspectorInstrumentation::didChangeWebAnimationEffectImpl): Added.
(WebCore::InspectorInstrumentation::willDestroyWebAnimationImpl): Added.
Add instrumentation points for CSS animations/transitions.

* inspector/agents/InspectorAnimationAgent.h: Added.
* inspector/agents/InspectorAnimationAgent.cpp: Added.
(WebCore::InspectorAnimationAgent::InspectorAnimationAgent):
(WebCore::InspectorAnimationAgent::didCreateFrontendAndBackend):
(WebCore::InspectorAnimationAgent::willDestroyFrontendAndBackend):
(WebCore::InspectorAnimationAgent::startTracking):
(WebCore::InspectorAnimationAgent::stopTracking):
(WebCore::isDelayed):
(WebCore::InspectorAnimationAgent::willApplyKeyframeEffect):
(WebCore::InspectorAnimationAgent::didChangeWebAnimationEffect):
(WebCore::InspectorAnimationAgent::willDestroyWebAnimation):
(WebCore::InspectorAnimationAgent::stopTrackingDeclarativeAnimation):
* inspector/InstrumentingAgents.h:
(WebCore::InstrumentingAgents::persistentInspectorAnimationAgent const): Added.
(WebCore::InstrumentingAgents::setPersistentInspectorAnimationAgent): Added.
(WebCore::InstrumentingAgents::trackingInspectorAnimationAgent const): Added.
(WebCore::InstrumentingAgents::setTrackingInspectorAnimationAgent): Added.
* inspector/InstrumentingAgents.cpp:
(WebCore::InstrumentingAgents::reset):
* inspector/InspectorController.cpp:
(WebCore::InspectorController::createLazyAgents):
Add an Animation domain for handling the tracking of CSS Web Animations.

* inspector/agents/InspectorTimelineAgent.h:
* inspector/agents/InspectorTimelineAgent.cpp:
(WebCore::InspectorTimelineAgent::toggleInstruments):
(WebCore::InspectorTimelineAgent::toggleAnimationInstrument): Added.

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

Source/WebInspectorUI:

Unlike all other forms of Web Animations, CSS animations/transitions, are _not_ created by
JavaScript, and therefore can seemingly appear out of nowhere. This patch expands the Media
timeline to be the Media & Animations timeline, which tracks when CSS animations/transitions
are created, started, delayed, iterated, canceled, or finished.

* UserInterface/Protocol/AnimationObserver.js: Added.
(WI.AnimationObserver.prototype.trackingStart):
(WI.AnimationObserver.prototype.trackingUpdate):
(WI.AnimationObserver.prototype.trackingComplete):
* UserInterface/Protocol/Target.js:
(WI.Target.prototype.get AnimationAgent): Added.
* UserInterface/Main.html:
* UserInterface/Base/Main.js:
(WI.loaded):
* UserInterface/Test.html:
* UserInterface/Test/Test.js:
(WI.loaded):
Add an Animation domain for handling the tracking of CSS Web Animations.

* UserInterface/Models/MediaInstrument.js:
(WI.MediaInstrument.prototype.startInstrumentation):
(WI.MediaInstrument.prototype.stopInstrumentation):
(WI.MediaInstrument):
* UserInterface/Models/MediaTimeline.js: Added.
(WI.MediaTimeline.prototype.recordForTrackingAnimationId):
(WI.MediaTimeline.prototype.recordForMediaElementEvents):
(WI.MediaTimeline.prototype.reset):
(WI.MediaTimeline.prototype.addRecord):
* UserInterface/Models/MediaTimelineRecord.js:
(WI.MediaTimelineRecord):
(WI.MediaTimelineRecord.async fromJSON):
(WI.MediaTimelineRecord.prototype.toJSON):
(WI.MediaTimelineRecord.prototype.get trackingAnimationId): Added.
(WI.MediaTimelineRecord.prototype.get timestamps): Added.
(WI.MediaTimelineRecord.prototype.get activeStartTime): Added.
(WI.MediaTimelineRecord.prototype.get updatesDynamically): Added.
(WI.MediaTimelineRecord.prototype.get usesActiveStartTime): Added.
(WI.MediaTimelineRecord.prototype.get displayName):
(WI.MediaTimelineRecord.prototype.get subtitle): Added.
(WI.MediaTimelineRecord.prototype.saveIdentityToCookie):
(WI.MediaTimelineRecord.prototype.updateProgress): Added.
(WI.MediaTimelineRecord.prototype.addDOMEvent): Added.
(WI.MediaTimelineRecord.prototype.powerEfficientPlaybackStateChanged): Added.
(WI.MediaTimelineRecord.prototype._updateTimes): Added.
(WI.MediaTimelineRecord.fromJSON): Deleted.
(WI.MediaTimelineRecord.prototype.get domEvent): Deleted.
(WI.MediaTimelineRecord.prototype.get isPowerEfficient): Deleted.
* UserInterface/Models/Timeline.js:
(WI.Timeline.create):
* UserInterface/Controllers/TimelineManager.js:
(WI.TimelineManager):
(WI.TimelineManager.prototype.async processJSON):
(WI.TimelineManager.prototype.animationTrackingStarted): Added.
(WI.TimelineManager.prototype.animationTrackingUpdated): Added.
(WI.TimelineManager.prototype.animationTrackingCompleted): Added.
(WI.TimelineManager.prototype._updateAutoCaptureInstruments):
(WI.TimelineManager.prototype._handleDOMNodeDidFireEvent):
(WI.TimelineManager.prototype._handleDOMNodePowerEfficientPlaybackStateChanged):
Start/Stop tracking animations based on whether the Media & Animations timeline is enabled.

* UserInterface/Views/MediaTimelineOverviewGraph.js:
(WI.MediaTimelineOverviewGraph):
(WI.MediaTimelineOverviewGraph.get maximumRowCount): Added.
(WI.MediaTimelineOverviewGraph.prototype.reset):
(WI.MediaTimelineOverviewGraph.prototype.layout):
(WI.MediaTimelineOverviewGraph.prototype.updateSelectedRecord):
(WI.MediaTimelineOverviewGraph.prototype._processRecord): Added.
(WI.MediaTimelineOverviewGraph.prototype._processRecord.compareByStartTime): Added.
(WI.MediaTimelineOverviewGraph.prototype._handleRecordAdded):
(WI.MediaTimelineOverviewGraph.prototype._handleTimesUpdated): Added.
(WI.MediaTimelineOverviewGraph.prototype.shown): Deleted.
(WI.MediaTimelineOverviewGraph.prototype.hidden): Deleted.
* UserInterface/Views/MediaTimelineOverviewGraph.css:
(.timeline-overview-graph.media): Added.
(.timeline-overview-graph.media > .graph-row): Added.
(.timeline-overview-graph.media > .graph-row > .timeline-record-bar): Added.
(.timeline-overview-graph.media > .graph-row > .timeline-record-bar:not(.unfinished) > .segment:not(.inactive)): Added.
(.timeline-overview-graph.media:nth-child(even) > .graph-row > .timeline-record-bar:not(.unfinished) > .segment:not(.inactive)): Added.
(.timeline-overview-graph.media > .timeline-record-bar): Deleted.
(.timeline-overview-graph.media > .timeline-record-bar > .segment): Deleted.
* UserInterface/Views/MediaTimelineView.js:
(WI.MediaTimelineView):
(WI.MediaTimelineView.prototype.shown): Added.
(WI.MediaTimelineView.prototype.hidden): Added.
(WI.MediaTimelineView.prototype.closed):
(WI.MediaTimelineView.prototype.reset):
(WI.MediaTimelineView.prototype.dataGridSortComparator):
(WI.MediaTimelineView.prototype.dataGridSortComparator.compareDOMNodes):
(WI.MediaTimelineView.prototype._processPendingRecords):
* UserInterface/Views/MediaTimelineDataGridNode.js:
(WI.MediaTimelineDataGridNode):
(WI.MediaTimelineDataGridNode.prototype.get data):
(WI.MediaTimelineDataGridNode.prototype.createCellContent):
(WI.MediaTimelineDataGridNode.prototype.timelineRecordBarCustomChildren): Added.
(WI.MediaTimelineDataGridNode.prototype.timelineRecordBarCustomChildren.addReadySegment): ADded.
(WI.MediaTimelineDataGridNode.prototype.timelineRecordBarCustomChildren.addDelaySegment): ADded.
(WI.MediaTimelineDataGridNode.prototype.timelineRecordBarCustomChildren.addActiveSegment): ADded.
(WI.MediaTimelineDataGridNode.prototype.timelineRecordBarCustomChildren.addFullScreenSegment): ADded.
(WI.MediaTimelineDataGridNode.prototype.timelineRecordBarCustomChildren.addPowerEfficientPlaybackSegment): ADded.
(WI.MediaTimelineDataGridNode.prototype.timelineRecordBarCustomChildren.addPausedSegment): ADded.
(WI.MediaTimelineDataGridNode.prototype.timelineRecordBarCustomChildren.addPlayingSegment): ADded.
(WI.MediaTimelineDataGridNode.prototype.filterableDataForColumn):
(WI.MediaTimelineDataGridNode.prototype._createNameCellDocumentFragment): Added.
(WI.MediaTimelineDataGridNode.prototype.iconClassNames): Deleted.

 * UserInterface/Views/TimelineRecordBar.js:
(WI.TimelineRecordBar):
(WI.TimelineRecordBar.prototype.refresh):
(WI.TimelineRecordBar.prototype._handleClick):
* UserInterface/Views/TimelineRecordBar.css:
(.timeline-record-bar):
(.timeline-record-bar > :matches(img, .segment)):
(.timeline-record-bar > img):
(.timeline-record-bar > .segment):
(body[dir=ltr] .timeline-record-bar > .segment):
(body[dir=ltr] .timeline-record-bar > .segment:first-of-type):
(body[dir=ltr] .timeline-record-bar > .segment:last-of-type):
(body[dir=rtl] .timeline-record-bar > .segment):
(body[dir=rtl] .timeline-record-bar > .segment:first-of-type):
(body[dir=rtl] .timeline-record-bar > .segment:last-of-type):
(.timeline-record-bar > .segment:not(:last-of-type)):
(.timeline-record-bar.selected > .segment):
(.timeline-record-bar > .segment.inactive,):
(.timeline-record-bar.has-inactive-segment > .segment:not(.inactive)):
(:focus .selected .timeline-record-bar:not(.has-custom-children) > .segment):
(:focus .selected .timeline-record-bar:not(.has-custom-children) > .segment.inactive):
(:focus .selected .timeline-record-bar.has-inactive-segment > .segment:not(.inactive)):
(.timeline-record-bar.timeline-record-type-network > .segment):
(.timeline-record-bar.timeline-record-type-network > .segment.inactive):
(.timeline-record-bar.timeline-record-type-layout > .segment):
(.timeline-record-bar.timeline-record-type-layout.paint > .segment,):
(.timeline-record-bar.timeline-record-type-script > .segment):
(.timeline-record-bar.timeline-record-type-script.garbage-collected > .segment,):
(.timeline-record-bar.timeline-record-type-media > .segment):
(.timeline-record-bar.has-custom-children.timeline-record-type-media > .segment):
(.timeline-record-bar.has-custom-children.timeline-record-type-media > .segment.css-animation-ready):
(.timeline-record-bar.has-custom-children.timeline-record-type-media > .segment:matches(.css-animation-delay, .media-element-paused)):
(.timeline-record-bar.has-custom-children.timeline-record-type-media.media-element > .segment):
(.timeline-record-bar.has-custom-children.timeline-record-type-media.media-element > .segment.media-element-full-screen):
(.timeline-record-bar.has-custom-children.timeline-record-type-media.media-element > .segment.media-element-power-efficient-playback):
(body[dir=ltr] .timeline-record-bar > .segment.inactive,): Deleted.
(body[dir=ltr] .timeline-record-bar.has-inactive-segment > .segment:not(.inactive),): Deleted.
(:focus .selected .timeline-record-bar > .segment): Deleted.
(:focus .selected .timeline-record-bar > .segment.inactive): Deleted.
(body[dir=ltr] :focus .selected .timeline-record-bar.has-inactive-segment > .segment:not(.inactive)): Deleted.
(body[dir=rtl] :focus .selected .timeline-record-bar.has-inactive-segment > .segment:not(.inactive)): Deleted.
Allow timeline record bars to be customized through a delegate callback. If provided, it
will be used instead of any default content. It is expected to return an array of objects,
each having a `startTime` number, `classNames` array, and `title` string. It can also have a
`endTime` number and an `image` string. If `endTime` is `NaN`, the record is unfinished. If
`image` is provided, an `<img>` will be used instead of a segment, allowing for markers.

* UserInterface/Views/TimelineDataGridNode.js:
(WI.TimelineDataGridNode.prototype.createCellContent):
Add a default fallback for `WI.DOMNode` values.

* UserInterface/Views/TimelineTabContentView.js:
(WI.TimelineTabContentView.displayNameForTimelineType):
(WI.TimelineTabContentView.iconClassNameForRecord):
(WI.TimelineTabContentView.displayNameForRecord):
* UserInterface/Views/TimelineRecordTreeElement.js:
* UserInterface/Views/TimelineIcons.css:
(.animation-frame-record .icon):
(.css-animation-record .icon): Added.
(.css-transition-record .icon): Added.
(.media-element-record .icon): Added.
(.animation-record .icon): Deleted.
(.dom-event-record .icon): Deleted.
(.dom-event-record.fullscreen .icon): Deleted.
(.power-efficient-playback-state-changed-record .icon): Deleted.
* UserInterface/Images/DOMEventFullscreen.svg: Removed.
* UserInterface/Images/EventCancel.svg: Added.
* UserInterface/Images/EventIteration.svg: Added.
* UserInterface/Images/EventPause.svg:
* UserInterface/Images/EventPlay.svg:
* UserInterface/Images/EventProcessing.svg:
* UserInterface/Images/EventStop.svg:
* UserInterface/Images/PowerEfficientPlaybackStateChanged.svg: Removed.
* UserInterface/Images/TimelineRecordAnimationFrame.svg: Renamed from Source/WebInspectorUI/UserInterface/Images/TimelineRecordAnimation.svg.
* UserInterface/Images/TimelineRecordCSSAnimation.svg: Added.
* UserInterface/Images/TimelineRecordCSSTransition.svg: Added.
* UserInterface/Images/TimelineRecordMediaElement.svg: Added.
Add new media icons.

* UserInterface/Models/TimelineRecording.js:
(WI.TimelineRecording.async import): Added.
(WI.TimelineRecording.import): Deleted.
* UserInterface/Models/TimelineRecord.js:
* UserInterface/Models/CPUTimelineRecord.js:
* UserInterface/Models/HeapAllocationsTimelineRecord.js:
(WI.HeapAllocationsTimelineRecord.async fromJSON): Added.
(WI.HeapAllocationsTimelineRecord.fromJSON): Deleted.
* UserInterface/Models/LayoutTimelineRecord.js:
* UserInterface/Models/MemoryTimelineRecord.js:
* UserInterface/Models/RenderingFrameTimelineRecord.js:
* UserInterface/Models/ResourceTimelineRecord.js:
* UserInterface/Models/ScriptTimelineRecord.js:
Make the importing of timeline records `async` so we can attempt to rehydrate the DOM nodes
of any media records (as well as wait for heap snapshots).

* UserInterface/Models/DOMNode.js:
(WI.DOMNode):
(WI.DOMNode.prototype.isMediaElement): Added.
(WI.DOMNode.prototype._shouldListenForEventListeners): Deleted.

* Localizations/en.lproj/localizedStrings.js:

Source/WTF:

* wtf/Markable.h:
(WTF::operator==):
(WTF::operator!=):
Add extra utility operators.

Tools:

* TestWebKitAPI/Tests/WTF/Markable.cpp:
(TestWebKitAPI::TEST):
Add tests for extra utility operators.

LayoutTests:

* inspector/animation/tracking.html: Added.
* inspector/animation/tracking-expected.txt: Added.

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

6 months agoWeb Inspector: default to focusing the console prompt if no other content is focused...
drousso@apple.com [Sat, 2 Nov 2019 00:19:13 +0000 (00:19 +0000)]
Web Inspector: default to focusing the console prompt if no other content is focused after opening Web Inspector
https://bugs.webkit.org/show_bug.cgi?id=203743

Reviewed by Eric Carlson and Brian Burg.

* UserInterface/Base/Main.js:
(WI.isContentAreaFocused): Added.
(WI.isConsoleFocused):
(WI._focusChanged):
(WI._restoreCookieForOpenTabs):

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

6 months agoSVG pair properties must be detached from their owner before it's deleted
said@apple.com [Sat, 2 Nov 2019 00:14:40 +0000 (00:14 +0000)]
SVG pair properties must be detached from their owner before it's deleted
https://bugs.webkit.org/show_bug.cgi?id=203545

Reviewed by Simon Fraser.

Source/WebCore:

SVGAnimatedPropertyPairAccessor needs to override its detach() method so
each of its pair properties detaches itself from the owner.
SVGPointerMemberAccessor does the same thing but for a single property
which covers all the list properties as well.

Test: svg/custom/pair-properties-detach.html

* svg/properties/SVGAnimatedPropertyPairAccessor.h:

LayoutTests:

* svg/custom/pair-properties-detach-expected.txt: Added.
* svg/custom/pair-properties-detach.html: Added.

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

6 months agoPromote "_getWebArchive" to API.
beidson@apple.com [Sat, 2 Nov 2019 00:13:04 +0000 (00:13 +0000)]
Promote "_getWebArchive" to API.
<rdar://problem/17317547> and https://bugs.webkit.org/show_bug.cgi?id=203767

Reviewed by Andy Estes.

Source/WebKit:

* UIProcess/API/Cocoa/WKWebView.h:
* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView createWebArchiveDataWithCompletionHandler:]):
(-[WKWebView _getWebArchiveDataWithCompletionHandler:]):

Tools:

* MiniBrowser/mac/BrowserWindowController.h:
* MiniBrowser/mac/BrowserWindowController.m:
(-[BrowserWindowController saveAsPDF:]):
(-[BrowserWindowController saveAsWebArchive:]):
* MiniBrowser/mac/MainMenu.xib:
* MiniBrowser/mac/WK1BrowserWindowController.m:
(-[WK1BrowserWindowController validateMenuItem:]):
* MiniBrowser/mac/WK2BrowserWindowController.m:
(-[WK2BrowserWindowController validateMenuItem:]):
(-[WK2BrowserWindowController saveAsWebArchive:]):

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

6 months agoPython 3: Add support in webkitpy.common
jbedard@apple.com [Fri, 1 Nov 2019 23:59:52 +0000 (23:59 +0000)]
Python 3: Add support in webkitpy.common
https://bugs.webkit.org/show_bug.cgi?id=202462

Reviewed by Stephanie Lewis.

* Scripts/test-webkitpy-python3: Add webkitpy.common.
* Scripts/webkitpy/common/find_files_unittest.py: Use full import path.
* Scripts/webkitpy/common/lru_cache_unittest.py:
(LRUCacheTest.test_size_one_pop): Convert iterator to list
* Scripts/webkitpy/common/prettypatch_unittest.py: Check for byte array explicitly.
* Scripts/webkitpy/common/read_checksum_from_png_unittest.py: Use unicode compatible
StringIO.
(ReadChecksumFromPngTest.test_read_checksum):
* Scripts/webkitpy/common/timeout_context.py:
(Timeout.__enter__): Use range instead of xrange.

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

6 months agoMark VeryLow priority requests using a request dictionary key
commit-queue@webkit.org [Fri, 1 Nov 2019 23:55:12 +0000 (23:55 +0000)]
Mark VeryLow priority requests using a request dictionary key
https://bugs.webkit.org/show_bug.cgi?id=203594

Patch by Benjamin Nham <nham@apple.com> on 2019-11-01
Reviewed by Alex Christensen.

Mark very-low-pri beacon/ping loads using a request dictionary key. PLT currently ignores
these loads by checking if a request's CFURLRequestPriority is 0, but that won't work
anymore once I make VeryLow and Low pri requests both have a priority of 0 for
https://bugs.webkit.org/show_bug.cgi?id=203423.

* platform/network/cf/ResourceRequestCFNet.cpp:
(WebCore::ResourceRequest::doUpdatePlatformRequest):
* platform/network/cocoa/ResourceRequestCocoa.mm:
(WebCore::ResourceRequest::doUpdatePlatformRequest):

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

6 months agoPort FileReader to the HTML5 event loop
cdumez@apple.com [Fri, 1 Nov 2019 23:46:25 +0000 (23:46 +0000)]
Port FileReader to the HTML5 event loop
https://bugs.webkit.org/show_bug.cgi?id=203749

Reviewed by Ryosuke Niwa.

* dom/AbstractEventLoop.h:
* fileapi/FileReader.cpp:
(WebCore::FileReader::FileReader):
(WebCore::FileReader::stop):
(WebCore::FileReader::hasPendingActivity const):
(WebCore::FileReader::abort):
(WebCore::FileReader::didStartLoading):
(WebCore::FileReader::didReceiveData):
(WebCore::FileReader::didFinishLoading):
(WebCore::FileReader::didFail):
(WebCore::FileReader::enqueueTask):
* fileapi/FileReader.h:

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

6 months agoRejigger WKWebArchive headers.
beidson@apple.com [Fri, 1 Nov 2019 23:34:27 +0000 (23:34 +0000)]
Rejigger WKWebArchive headers.
https://bugs.webkit.org/show_bug.cgi?id=203648

Reviewed by Andy Estes.

* Shared/API/c/mac/WKWebArchiveRef.cpp: Renamed from Source/WebKit/Shared/API/c/mac/WKWebArchive.cpp.
(WKWebArchiveGetTypeID):
(WKWebArchiveCreate):
(WKWebArchiveCreateWithData):
(WKWebArchiveCreateFromRange):
(WKWebArchiveCopyMainResource):
(WKWebArchiveCopySubresources):
(WKWebArchiveCopySubframeArchives):
(WKWebArchiveCopyData):
* Shared/API/c/mac/WKWebArchiveRef.h: Copied from Source/WebKit/Shared/API/c/mac/WKWebArchive.h.
* SourcesCocoa.txt:
* UIProcess/API/Cocoa/WKWebArchive.h: Renamed from Source/WebKit/Shared/API/c/mac/WKWebArchive.h.
* WebKit.xcodeproj/project.pbxproj:

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

6 months agoRefactor uses of StructureStubInfo 'thisGPR' to a union for thisGPR and prototypeGPR
sbarati@apple.com [Fri, 1 Nov 2019 23:07:34 +0000 (23:07 +0000)]
Refactor uses of StructureStubInfo 'thisGPR' to a union for thisGPR and prototypeGPR
https://bugs.webkit.org/show_bug.cgi?id=203693

Reviewed by Mark Lam and Yusuke Suzuki.

I'm going to be adding a third overload for this field when making
GetByVal inline caching part of StructureStubInfo. It's nicer for
each use case of this field to use it by the proper name.

* bytecode/AccessCase.cpp:
(JSC::AccessCase::generateWithGuard):
(JSC::AccessCase::generateImpl):
* bytecode/PolymorphicAccess.cpp:
(JSC::PolymorphicAccess::regenerate):
* bytecode/PolymorphicAccess.h:
(JSC::AccessGenerationState::AccessGenerationState):
* bytecode/StructureStubInfo.h:
* jit/JITInlineCacheGenerator.cpp:
(JSC::JITByIdGenerator::JITByIdGenerator):
(JSC::JITGetByIdWithThisGenerator::JITGetByIdWithThisGenerator):
(JSC::JITInstanceOfGenerator::JITInstanceOfGenerator):

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

6 months agoAdd experimental TextTrackCue API
eric.carlson@apple.com [Fri, 1 Nov 2019 22:49:54 +0000 (22:49 +0000)]
Add experimental TextTrackCue API
https://bugs.webkit.org/show_bug.cgi?id=203649
<rdar://problem/55675172>

Reviewed by Jer Noble.

Source/WebCore:

Tests: media/track/texttrackcue/texttrackcue-addcue.html
       media/track/texttrackcue/texttrackcue-constructor.html
       media/track/texttrackcue/texttrackcue-displaycue.html

* Modules/mediacontrols/MediaControlsHost.cpp:
(WebCore::MediaControlsHost::updateCaptionDisplaySizes):
* Modules/mediacontrols/MediaControlsHost.h:
* bindings/js/JSTextTrackCueCustom.cpp:
(WebCore::toJSNewlyCreated):
* bindings/js/WebCoreBuiltinNames.h:
* bindings/scripts/CodeGeneratorJS.pm:
(NeedsRuntimeCheck):
(GenerateRuntimeEnableConditionalString):
* bindings/scripts/IDLAttributes.json:
* bindings/scripts/preprocess-idls.pl:
(GenerateConstructorAttributes):
* dom/DocumentFragment.idl:
* html/HTMLMediaElement.cpp:
(WebCore::HTMLMediaElement::updateRenderer):
(WebCore::HTMLMediaElement::updateActiveTextTrackCues):
(WebCore::HTMLMediaElement::textTrackRemoveCue):
(WebCore::HTMLMediaElement::configureTextTrackDisplay):
(WebCore::HTMLMediaElement::captionPreferencesChanged):
* html/shadow/MediaControlElements.cpp:
(WebCore::MediaControlTextTrackContainerElement::updateDisplay):
(WebCore::MediaControlTextTrackContainerElement::processActiveVTTCue):
(WebCore::MediaControlTextTrackContainerElement::updateActiveCuesFontSize):
(WebCore::MediaControlTextTrackContainerElement::updateTimerFired):
(WebCore::MediaControlTextTrackContainerElement::updateStyleForTextTrackRepresentation):
* html/shadow/MediaControlElements.h:
* html/track/TextTrack.cpp:
(WebCore::TextTrack::setMode):
* html/track/TextTrackCue.cpp:
(WebCore::TextTrackCue::cueBoxShadowPseudoId):
(WebCore::TextTrackCue::cueBackdropShadowPseudoId):
(WebCore::cueAttributName):
(WebCore::cueBackgroundAttributName):
(WebCore::TextTrackCueBox::TextTrackCueBox):
(WebCore::TextTrackCueBox::getCue const):
(WebCore::isLegalNode):
(WebCore::invalidNodeException):
(WebCore::checkForInvalidNodeTypes):
(WebCore::tagPseudoObjects):
(WebCore::removePseudoAttributes):
(WebCore::TextTrackCue::create):
(WebCore::TextTrackCue::TextTrackCue):
(WebCore::TextTrackCue::didChange):
(WebCore::TextTrackCue::setIsActive):
(WebCore::TextTrackCue::toJSON const):
(WebCore::TextTrackCue::debugString const):
(WebCore::TextTrackCue::getCueAsHTML):
(WebCore::TextTrackCue::isRenderable const):
(WebCore::TextTrackCue::getDisplayTree):
(WebCore::TextTrackCue::removeDisplayTree):
(WebCore::TextTrackCue::setFontSize):
(WebCore::TextTrackCue::rebuildDisplayTree):
* html/track/TextTrackCue.h:
(WebCore::TextTrackCueBox::create):
(WebCore::TextTrackCueBox::applyCSSProperties):
(WebCore::TextTrackCueBox::~TextTrackCueBox):
(WebCore::TextTrackCue::cueType const):
(WebCore::TextTrackCue::recalculateStyles):
(WebCore::TextTrackCue::updateDisplayTree):
(WebCore::TextTrackCue::isRenderable const): Deleted.
* html/track/TextTrackCue.idl:
* html/track/TextTrackCueGeneric.cpp:
(WebCore::TextTrackCueGeneric::isEqual const):
(WebCore::TextTrackCueGeneric::isOrderedBefore const):
(WebCore::TextTrackCueGeneric::isPositionedAbove const):
* html/track/TextTrackCueGeneric.h:
(isType):
* html/track/VTTCue.cpp:
(WebCore::VTTCueBox::VTTCueBox):
(WebCore::VTTCueBox::applyCSSProperties):
(WebCore::VTTCue::getDisplayTree):
(WebCore::VTTCue::removeDisplayTree):
(WebCore::VTTCue::setFontSize):
(WebCore::toVTTCue):
(WebCore::VTTCueBox::create): Deleted.
(WebCore::VTTCueBox::getCue const): Deleted.
(WebCore::VTTCueBox::vttCueBoxShadowPseudoId): Deleted.
(WebCore::VTTCue::cueBackdropShadowPseudoId): Deleted.
* html/track/VTTCue.h:
(WebCore::VTTCueBox::create):
(isType):
* html/track/VTTRegion.cpp:
(WebCore::VTTRegion::appendTextTrackCueBox):
(WebCore::VTTRegion::getDisplayTree):
(WebCore::VTTRegion::prepareRegionDisplayTree):
* html/track/VTTRegion.h:
* page/CaptionUserPreferencesMediaAF.cpp:
(WebCore::CaptionUserPreferencesMediaAF::captionsStyleSheetOverride const):
* page/Settings.yaml:
* rendering/RenderVTTCue.cpp:
(WebCore::RenderVTTCue::RenderVTTCue):

Source/WebKit:

* Shared/WebPreferences.yaml:

LayoutTests:

* media/track/texttrackcue/texttrackcue-addcue-expected.txt: Added.
* media/track/texttrackcue/texttrackcue-addcue.html: Added.
* media/track/texttrackcue/texttrackcue-constructor-expected.txt: Added.
* media/track/texttrackcue/texttrackcue-constructor.html: Added.
* media/track/texttrackcue/texttrackcue-displaycue-expected.txt: Added.
* media/track/texttrackcue/texttrackcue-displaycue.html: Added.
* platform/ios/TestExpectations:
* platform/mac/TestExpectations:

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

6 months agohttp/tests/websocket/tests/hybi/handshake-ok-with-legacy-websocket-response-headers...
ddkilzer@apple.com [Fri, 1 Nov 2019 22:48:09 +0000 (22:48 +0000)]
http/tests/websocket/tests/hybi/handshake-ok-with-legacy-websocket-response-headers.html is flaky
https://bugs.webkit.org/show_bug.cgi?id=176240
<rdar://problem/51445000>

Patch by Kate Cheney <katherine_cheney@apple.com> on 2019-11-01
Reviewed by Alexey Proskuryakov.

Flakiness no longer reproducible.

* platform/ios-wk2/TestExpectations:
* platform/mac-wk2/TestExpectations:

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

6 months agoREGRESSION(r248696): Element Click on Mac is adding an extra page topContentInsets...
bburg@apple.com [Fri, 1 Nov 2019 22:16:29 +0000 (22:16 +0000)]
REGRESSION(r248696): Element Click on Mac is adding an extra page topContentInsets to y-coordinate
https://bugs.webkit.org/show_bug.cgi?id=203765
<rdar://problem/56014369>

Reviewed by Devin Rousso.

* UIProcess/Automation/mac/WebAutomationSessionMac.mm:
(WebKit::WebAutomationSession::platformSimulateMouseInteraction):
The topContentInsets is accounted for by rootViewToWindow(), so don't add it in manually.

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

6 months agomacOS WK1: requestidlecallback/requestidlecallback-document-gc.html is flaky
rniwa@webkit.org [Fri, 1 Nov 2019 21:39:03 +0000 (21:39 +0000)]
macOS WK1: requestidlecallback/requestidlecallback-document-gc.html is flaky
https://bugs.webkit.org/show_bug.cgi?id=203758

Reviewed by Wenson Hsieh.

Fix the test by delaying the check until the next run loop via setTimeout.
This is needed to make GC work reliably in WK1.

* requestidlecallback/requestidlecallback-document-gc.html:

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

6 months agomacCatalyst: Get TestWebKitAPI building
timothy_horton@apple.com [Fri, 1 Nov 2019 21:29:25 +0000 (21:29 +0000)]
macCatalyst: Get TestWebKitAPI building
https://bugs.webkit.org/show_bug.cgi?id=203728

Reviewed by Alexey Proskuryakov.

.:

* Makefile:
Descend into Tools/.

Source/ThirdParty:

* gtest/xcode/Config/General.xcconfig:
* gtest/xcode/Config/SDKVariant.xcconfig: Added.
Add SDKVariant.xcconfig to gtest so that it builds into the correct directory.

Tools:

* Makefile:
Only build gtest and TestWebKitAPI for macCatalyst.

* TestWebKitAPI/Configurations/Base.xcconfig:
* TestWebKitAPI/Configurations/TestWebKitAPI.xcconfig:
Make use of WK_COCOA_TOUCH instead of SDK conditionals.

* TestWebKitAPI/Tests/WebKitCocoa/Challenge.mm:
* TestWebKitAPI/Tests/WebKitCocoa/DragAndDropTests.mm:
* TestWebKitAPI/Tests/ios/DragAndDropTestsIOS.mm:
* TestWebKitAPI/ios/DragAndDropSimulatorIOS.mm:
Fix some #ifdefs for macCatalyst.

* TestWebKitAPI/Tests/WebKitLegacy/ios/ScrollToRevealSelection.mm:
(-[LegacyLoadingDelegate webViewDidFinishLoad:]):
* TestWebKitAPI/Tests/ios/ScrollViewInsetTests.mm:
(-[AsyncPolicyDelegateForInsetTest webView:didFinishNavigation:]):
(TestWebKitAPI::TEST):
Util::runUntil wants a bool, not a BOOL.

* TestWebKitAPI/config.h:
Import WebKitLegacy.h after WebKit.h. Traditionally WebKit.h includes
WebKitLegacy.h, except in macCatalyst. Many tests depend on being able
to get WebKitLegacy.h this way.

* Scripts/webkitpy/style/checkers/sdkvariant.py:

* Scripts/webkitpy/port/factory.py:
* Scripts/webkitpy/port/mac.py:
Add a MacCatalyst port behind --maccatalyst, and do the bare minimum
required to get it working and finding the right binaries.
It inherits from Mac instead of iOS because for the purposes of
finding and running binaries, dealing with I/O, etc., these are
100% bona fide macOS products.

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

6 months ago[[HasProperty]] result of Proxy in prototype chain is ignored
commit-queue@webkit.org [Fri, 1 Nov 2019 21:23:41 +0000 (21:23 +0000)]
[[HasProperty]] result of Proxy in prototype chain is ignored
https://bugs.webkit.org/show_bug.cgi?id=203560

Patch by Alexey Shvayka <shvaikalesh@gmail.com> on 2019-11-01
Reviewed by Ross Kirsling.

JSTests:

* stress/proxy-get-prototype-of.js: Correct Proxy "has" trap test.
* test262/expectations.yaml: Mark 6 test cases as passing.

Source/JavaScriptCore:

Before this change, when [[HasProperty]] was called on ordinary object with Proxy in prototype chain,
falsy result of Proxy's "has" trap was ignored and prototype chain was inspected further.

According to spec, OrdinaryHasProperty unconditionally returns result of parent's [[HasProperty]] call.
(step 5.a of https://tc39.es/ecma262/#sec-ordinaryhasproperty)

* runtime/JSObjectInlines.h:
(JSC::JSObject::getPropertySlot):
(JSC::JSObject::getNonIndexPropertySlot):

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

6 months ago[ews] Improve summary string when there are flaky failures in API tests
aakash_jain@apple.com [Fri, 1 Nov 2019 20:55:24 +0000 (20:55 +0000)]
[ews] Improve summary string when there are flaky failures in API tests
https://bugs.webkit.org/show_bug.cgi?id=203747

Reviewed by Jonathan Bedard.

* BuildSlaveSupport/ews-build/steps.py:
(AnalyzeAPITestsResults.analyzeResults): Display pre-existing failure string string only
if there are pre-existing API test failures.

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

6 months agoInvestigate if mach lookup access to *.apple-extension-service, *.viewservice, and...
pvollan@apple.com [Fri, 1 Nov 2019 20:19:11 +0000 (20:19 +0000)]
Investigate if mach lookup access to *.apple-extension-service, *.viewservice, and com.apple.uikit.viewservice.* can be denied
https://bugs.webkit.org/show_bug.cgi?id=203626

Reviewed by Alexey Proskuryakov.

Modify the allow rule for these services to include the telemetry option.

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

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

6 months agoPort ServiceWorkerContainer to the HTML5 event loop
cdumez@apple.com [Fri, 1 Nov 2019 19:34:33 +0000 (19:34 +0000)]
Port ServiceWorkerContainer to the HTML5 event loop
https://bugs.webkit.org/show_bug.cgi?id=203680

Reviewed by Ryosuke Niwa.

* dom/AbstractEventLoop.h:
* workers/service/ServiceWorkerContainer.cpp:
(WebCore::ServiceWorkerContainer::ServiceWorkerContainer):
(WebCore::ServiceWorkerContainer::ready):
(WebCore::ServiceWorkerContainer::getRegistration):
(WebCore::ServiceWorkerContainer::getRegistrations):
(WebCore::ServiceWorkerContainer::jobFailedWithException):
(WebCore::ServiceWorkerContainer::jobResolvedWithRegistration):
(WebCore::ServiceWorkerContainer::jobResolvedWithUnregistrationResult):
(WebCore::ServiceWorkerContainer::jobFailedLoadingScript):
(WebCore::ServiceWorkerContainer::enqueueTask):
* workers/service/ServiceWorkerContainer.h:

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

6 months agoWeb Inspector: Display color swatches for p3 colors
nvasilyev@apple.com [Fri, 1 Nov 2019 19:34:09 +0000 (19:34 +0000)]
Web Inspector: Display color swatches for p3 colors
https://bugs.webkit.org/show_bug.cgi?id=203439
<rdar://problem/56637250>

Reviewed by Devin Rousso.

Source/WebInspectorUI:

Detect `color(display-p3 0 1 0)` as a color in the style editor.

* UserInterface/Models/Color.js:
(WI.Color):
(WI.Color.fromString):
(WI.Color.prototype.copy):
(WI.Color.prototype.toString):
(WI.Color.prototype.isKeyword):
(WI.Color.prototype._toFunctionString):

LayoutTests:

* inspector/model/color-expected.txt:
* inspector/model/color.html:

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

6 months agoWeb Inspector: REGRESSION(r249831): content view is empty if a breakpoint is hit...
drousso@apple.com [Fri, 1 Nov 2019 19:17:10 +0000 (19:17 +0000)]
Web Inspector: REGRESSION(r249831): content view is empty if a breakpoint is hit in the main resource
https://bugs.webkit.org/show_bug.cgi?id=203722
<rdar://problem/56802409>

Reviewed by Joseph Pecoraro.

* UserInterface/Models/SourceCode.js:
(WI.SourceCode.prototype.get currentRevision):
(WI.SourceCode.prototype.revisionContentDidChange):
(WI.SourceCode.prototype._initializeCurrentRevisionIfNeeded):
(WI.SourceCode.prototype._processContent):
Don't wait to lazily clone the `originalRevision` and use it as the `currentRevision`. Some
listeners expect the `currentRevision` to already be set by the time this happens, so as
soon as the original revision's content is changed, clone it into the `currentRevision`.

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

6 months agoTestWebKitAPI.EditorStateTests.TypingAttributesTextAlignmentStartEnd is flaky in...
wenson_hsieh@apple.com [Fri, 1 Nov 2019 18:27:00 +0000 (18:27 +0000)]
TestWebKitAPI.EditorStateTests.TypingAttributesTextAlignmentStartEnd is flaky in iOS simulator
https://bugs.webkit.org/show_bug.cgi?id=203733
<rdar://problem/56814640>

Reviewed by Tim Horton.

Try to fix the flaky test by making EditingTestHarness more robust. Instead of checking for expected editor
state entries after the next presentation update, wait for the latest editor state entry to contain the expected
values.

* TestWebKitAPI/EditingTestHarness.mm:
(-[EditingTestHarness _execCommand:argument:expectEntries:]):

Preserve the existing log statement by printing it out once after a few seconds, if the entry is still not found
in the last known editor state.

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

6 months agoIntegrate media query evaluation into HTML5 event loop
rniwa@webkit.org [Fri, 1 Nov 2019 18:16:13 +0000 (18:16 +0000)]
Integrate media query evaluation into HTML5 event loop
https://bugs.webkit.org/show_bug.cgi?id=203134
<rdar://problem/56396316>

Reviewed by Antti Koivisto.

Source/WebCore:

Moved the code to call media query listeners to HTML5 event loop's step to update the rendering:
https://html.spec.whatwg.org/multipage/webappapis.html#update-the-rendering

Tests: fast/media/mq-inverted-colors-live-update-for-listener.html
       fast/media/mq-prefers-reduced-motion-live-update-for-listener.html

* css/MediaQueryMatcher.cpp:
(WebCore::MediaQueryMatcher::evaluateAll): Renamed from styleResolverChanged.
* css/MediaQueryMatcher.h:
* dom/Document.cpp:
(WebCore::Document::updateElementsAffectedByMediaQueries): Split from evaluateMediaQueryList.
This function is still called right after each layout update so that picture element may start
requesting newly selected image resources without having to wait for a rendering update.
But this function will no longer execute arbitrary scripts.
(WebCore::Document::evaluateMediaQueriesAndReportChanges): Split from evaluateMediaQueryList.
Evaluates media query listeners.
* dom/Document.h:
* inspector/agents/InspectorPageAgent.cpp:
(WebCore::InspectorPageAgent::setEmulatedMedia): Force the evaluation of media queries for now
but this code should really be scheduling a rendering update instead so added a FIXME.
* page/Frame.cpp:
(WebCore::Frame::setPrinting): Evaluate media queries. We should consider invoking the full
algorithm to update the rendering here. e.g. intersection observer may add more contents.
* page/Page.cpp:
(WebCore::Page::updateStyleAfterChangeInEnvironment): Schedule a rendering update after
accessibility settings have changed.
(WebCore::Page::updateRendering): Call evaluateMediaQueriesAndReportChanges.
(WebCore::Page::accessibilitySettingsDidChange): Schedule a rendering update after accessibility
settings have changed.
(WebCore::Page::appearanceDidChange): Ditto.

LayoutTests:

Added tests for listening to accessiblity related media queries without having any style rules
get affected by those media queries so that we can catch any future regressions. For now,
changing accessiblity settings seem to always schedule a rendering update so there is nothing to do
when these accessibility settings do change.

* fast/media/media-query-list-07.html: Fixed the test to be compatible with new behavior.
* fast/media/mq-inverted-colors-live-update-for-listener-expected.txt: Added.
* fast/media/mq-inverted-colors-live-update-for-listener.html: Added.
* fast/media/mq-prefers-reduced-motion-live-update-for-listener-expected.txt: Added.
* fast/media/mq-prefers-reduced-motion-live-update-for-listener.html: Added.

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

6 months ago[ews] Pass clobber-old-results parameter to run-webkit-tests
aakash_jain@apple.com [Fri, 1 Nov 2019 17:27:35 +0000 (17:27 +0000)]
[ews] Pass clobber-old-results parameter to run-webkit-tests
https://bugs.webkit.org/show_bug.cgi?id=203736

Reviewed by Jonathan Bedard.

* BuildSlaveSupport/ews-build/steps.py:
(RunWebKitTests): Added --clobber-old-results paramter to run-webkit-tests. Also re-ordered
--no-new-test-results and --no-show-results to match with build.webkit.org configuration.
* BuildSlaveSupport/ews-build/steps_unittest.py: Updated unit-tests.

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

6 months agoFix the watchOS build after r251896
timothy_horton@apple.com [Fri, 1 Nov 2019 17:18:08 +0000 (17:18 +0000)]
Fix the watchOS build after r251896

* Configurations/WebCore.xcconfig:
Whoops.

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

6 months agoTurn on the Picture-in-Picture API feature by default
commit-queue@webkit.org [Fri, 1 Nov 2019 17:16:52 +0000 (17:16 +0000)]
Turn on the Picture-in-Picture API feature by default
https://bugs.webkit.org/show_bug.cgi?id=203725

Patch by Peng Liu <peng.liu6@apple.com> on 2019-11-01
Reviewed by Jer Noble.

Source/WebCore:

No new tests are required.

* page/Settings.yaml:

Source/WebKit:

* Shared/WebPreferences.yaml:

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

6 months agoDon't leak documents with a pending requestIdleCallback
rniwa@webkit.org [Fri, 1 Nov 2019 17:04:36 +0000 (17:04 +0000)]
Don't leak documents with a pending requestIdleCallback
https://bugs.webkit.org/show_bug.cgi?id=203708

Reviewed by Simon Fraser.

Source/WebCore:

Remove all tasks associated with a stopped document right away instead of waiting for
WindowEventLoop::run to execute so that even when author scripts synchronously add and remove
multiple documents, we don't end up leaking all of them until we yield to the run loop.

Also moved the code to suspend & resume event loops from CachedFrame to Document's
ActiveDOMObjects related functions for consistency.

Test: requestidlecallback/requestidlecallback-document-gc.html

* dom/Document.cpp:
(WebCore::Document::suspendActiveDOMObjects): Moved the code from CachedFrameBase::restore.
(WebCore::Document::resumeActiveDOMObjects): Ditto from CachedFrame.
(WebCore::Document::stopActiveDOMObjects): Remove all tasks associated with this document.
* dom/Document.h:
(WebCore::Document::eventLoopIfExists): Deleted.
* dom/WindowEventLoop.cpp:
(WebCore::WindowEventLoop::stop):
(WebCore::WindowEventLoop::run):
* dom/WindowEventLoop.h:
* history/CachedFrame.cpp:
(WebCore::CachedFrameBase::restore):
(WebCore::CachedFrame::CachedFrame):

LayoutTests:

Added a test for removing iframes with a pending idle callback and test that
the current documents of those iframes are collected immediately by GCController.collect.

* requestidlecallback/requestidlecallback-document-gc-expected.txt: Added.
* requestidlecallback/requestidlecallback-document-gc.html: Added.

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

6 months ago[JSC][MIPS] Skip tests failing in RELEASE_ASSERT_NOT_REACHED() at CallFrame.cpp:81
ticaiolima@gmail.com [Fri, 1 Nov 2019 16:28:21 +0000 (16:28 +0000)]
[JSC][MIPS] Skip tests failing in RELEASE_ASSERT_NOT_REACHED() at CallFrame.cpp:81
https://bugs.webkit.org/show_bug.cgi?id=203738

Unreviewed gardening.

* stress/allocation-sinking-hints-are-valid-ssa.js:
* stress/has-instance-exception-check.js:
* stress/regress-176485.js:

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

6 months agoWeb Inspector: Sources: tab isn't visible after removal of Debugger Tab and Resources Tab
drousso@apple.com [Fri, 1 Nov 2019 16:19:14 +0000 (16:19 +0000)]
Web Inspector: Sources: tab isn't visible after removal of Debugger Tab and Resources Tab
https://bugs.webkit.org/show_bug.cgi?id=203719
<rdar://problem/56802389>

Reviewed by Timothy Hatcher.

* UserInterface/Base/Main.js:
(WI.loaded):
If the Debugger Tab identifier or Resources Tab identifier still exists in the list of open
tabs, remove both and replace the first one with the Sources Tab identifier.

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

6 months agoWeb Inspector: make the default content of the Inspector Bootstrap Script a comment...
drousso@apple.com [Fri, 1 Nov 2019 16:08:33 +0000 (16:08 +0000)]
Web Inspector: make the default content of the Inspector Bootstrap Script a comment that explains how it works
https://bugs.webkit.org/show_bug.cgi?id=203704

Reviewed by Timothy Hatcher.

* UserInterface/Controllers/NetworkManager.js:
(WI.NetworkManager.prototype.async createBootstrapScript):

* Localizations/en.lproj/localizedStrings.js:

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

6 months agoPicture-in-Picture layout test cases interfere with each other
commit-queue@webkit.org [Fri, 1 Nov 2019 15:57:34 +0000 (15:57 +0000)]
Picture-in-Picture layout test cases interfere with each other
https://bugs.webkit.org/show_bug.cgi?id=203614

Patch by Peng Liu <peng.liu6@apple.com> on 2019-11-01
Reviewed by Eric Carlson.

Source/WebCore:

Fix test running issues, no new test is needed.

Add a member variable m_pictureInPictureAPITestEnabled to the HTMLVideoElement class.
When this variable is true, HTMLVideoElement::setFullscreenMode() will mock the
behavior of the Picture-in-Picture mode changing without the AVKit/CoreMedia involvement.
So we can run multiple layout test cases for Picture-in-Picture API simultaneously.
Note: this solution only tests the code for the Picture-in-Picture API implementation!
We still need to use the API tests to test the Picture-in-Picture implementation end-to-end.

* html/HTMLVideoElement.cpp:
(WebCore::HTMLVideoElement::setFullscreenMode):
(WebCore::HTMLVideoElement::setPictureInPictureAPITestEnabled):
* html/HTMLVideoElement.h:
* html/HTMLVideoElement.idl:
* testing/Internals.cpp:
(WebCore::Internals::setPictureInPictureAPITestEnabled):
* testing/Internals.h:
* testing/Internals.idl:

LayoutTests:

Use "internals.setPictureInPictureAPITestEnabled(video, true)" to test
the picture-in-picture API implementation without AVKit/CoreMedia stuffs.

* media/picture-in-picture-api-enter-pip-1-expected.txt:
* media/picture-in-picture-api-enter-pip-1.html:
* media/picture-in-picture-api-enter-pip-2-expected.txt:
* media/picture-in-picture-api-enter-pip-2.html:
* media/picture-in-picture-api-enter-pip-3-expected.txt:
* media/picture-in-picture-api-enter-pip-3.html:
* media/picture-in-picture-api-enter-pip-4-expected.txt:
* media/picture-in-picture-api-enter-pip-4.html:
* media/picture-in-picture-api-exit-pip-1-expected.txt:
* media/picture-in-picture-api-exit-pip-1.html:
* media/picture-in-picture-api-exit-pip-2-expected.txt:
* media/picture-in-picture-api-exit-pip-2.html:
* media/picture-in-picture-api-pip-events-expected.txt:
* media/picture-in-picture-api-pip-events.html:
* media/picture-in-picture-api-pip-window-expected.txt:
* media/picture-in-picture-api-pip-window.html:

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

6 months agoWeb Inspector: Settings: Blackbox: hide icon is missing
drousso@apple.com [Fri, 1 Nov 2019 15:53:02 +0000 (15:53 +0000)]
Web Inspector: Settings: Blackbox: hide icon is missing
https://bugs.webkit.org/show_bug.cgi?id=203727

Reviewed by Timothy Hatcher.

* UserInterface/Images/Hide.svg:
`WI.ImageUtilities.useSVGSymbol` links directly to a specific part of the SVG resource based
on an `id` attribute (default to `#root` if not otherwise given). As a result, any `<style>`
that are not a child of that specific part won't be included, meaning that any CSS variables
used for controlling colors won't exist. Adding a fallback value to the `var()` for these
cases allows a specific part to be used without needing any surrounding styles.

* UserInterface/Views/BlackboxSettingsView.css:
(.settings-view.blackbox > p > .toggle-script-blackbox):
Slightly adjust the size and vertical alignment to better match the surrounding text.

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

6 months agoWeb Inspector: enable line wrapping by default
drousso@apple.com [Fri, 1 Nov 2019 15:37:21 +0000 (15:37 +0000)]
Web Inspector: enable line wrapping by default
https://bugs.webkit.org/show_bug.cgi?id=203726

Reviewed by Timothy Hatcher.

* UserInterface/Base/Setting.js:

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

6 months ago[LFC][IFC] Add support for text-align: justify
zalan@apple.com [Fri, 1 Nov 2019 15:35:43 +0000 (15:35 +0000)]
[LFC][IFC] Add support for text-align: justify
https://bugs.webkit.org/show_bug.cgi?id=203715
<rdar://problem/56804607>

Reviewed by Antti Koivisto.

Add basic support for text-align: justify. Register expansion opportunities as the text content is being
appended to the line (Line::appendTextContent) and distribute the extra space when the line is being closed (Line::close).
Now LFC rendering of OpenSource/PerformanceTests/Layout/line-layout-simple.html visually matches trunk rendering.

* layout/displaytree/DisplayPainter.cpp:
(WebCore::Display::paintInlineContent):
* layout/displaytree/DisplayRun.h:
(WebCore::Display::Run::TextContext::resetExpansion):
* layout/inlineformatting/InlineLine.cpp:
(WebCore::Layout::Line::Run::expand):
(WebCore::Layout::Line::close):
(WebCore::Layout::Line::justifyRuns):
(WebCore::Layout::Line::alignContentHorizontally):
(WebCore::Layout::Line::appendTextContent):
* layout/inlineformatting/InlineLine.h:
(WebCore::Layout::Line::isTextAlignJustify const):
(WebCore::Layout::Line::Run::setCollapsesToZeroAdvanceWidth):
(WebCore::Layout::Line::Run::adjustExpansionBehavior):
(WebCore::Layout::Line::Run::expand): Deleted.
* layout/inlineformatting/InlineLineLayout.cpp:
(WebCore::Layout::LineLayout::close):

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

6 months agoStyle::Builder should not depend on StyleResolver
antti@apple.com [Fri, 1 Nov 2019 15:20:19 +0000 (15:20 +0000)]
Style::Builder should not depend on StyleResolver
https://bugs.webkit.org/show_bug.cgi?id=203729

Reviewed by Zalan Bujtas.

With all style building state in builder, we can remove the back-reference to style resolver.

* css/CSSFilterImageValue.cpp:
(WebCore::CSSFilterImageValue::createFilterOperations):
* css/CSSFilterImageValue.h:
* css/CSSGradientValue.cpp:
(WebCore::CSSGradientValue::gradientWithStylesResolved):
(WebCore::CSSGradientValue::resolveRGBColors):

Add helper for resolving basic colors without style builder.

* css/CSSGradientValue.h:
* css/StyleResolver.cpp:
(WebCore::StyleResolver::State::clear):
(WebCore::StyleResolver::State::State):
(WebCore::StyleResolver::State::setStyle):
(WebCore::StyleResolver::applyMatchedProperties):

Register content attributes encountered during style building.

(WebCore::StyleResolver::State::updateConversionData): Deleted.

This is now created by BuilderState constructor.

(WebCore::StyleResolver::styleImage): Deleted.
(WebCore::StyleResolver::colorFromPrimitiveValueIsDerivedFromElement): Deleted.
(WebCore::StyleResolver::colorFromPrimitiveValue const): Deleted.
(WebCore::filterOperationForType): Deleted.
(WebCore::StyleResolver::createFilterOperations): Deleted.

Move image mapping functions to BuilderState.

* css/StyleResolver.h:
(WebCore::StyleResolver::State::cssToLengthConversionData const): Deleted.
* html/HTMLInputElement.cpp:
(WebCore::autoFillStrongPasswordMaskImage):
(WebCore::HTMLInputElement::createInnerTextStyle):

Create mask image without requiring style resolver.

* style/StyleBuilder.cpp:
(WebCore::Style::Builder::Builder):
* style/StyleBuilderCustom.h:
(WebCore::Style::BuilderCustom::applyValueZoom):
(WebCore::Style::BuilderCustom::applyValueContent):
(WebCore::Style::BuilderCustom::applyValueFontSize):
(WebCore::Style::BuilderCustom::applyValueAlt):
* style/StyleBuilderState.cpp:
(WebCore::Style::BuilderState::BuilderState):

No more m_styleResolver.

(WebCore::Style::BuilderState::createStyleImage):
(WebCore::Style::filterOperationForType):
(WebCore::Style::BuilderState::createFilterOperations):
(WebCore::Style::BuilderState::isColorFromPrimitiveValueDerivedFromElement):
(WebCore::Style::BuilderState::colorFromPrimitiveValue const):
(WebCore::Style::BuilderState::registerContentAttribute):

Collect content attributes so they can be applied later by StyleResolver.

* style/StyleBuilderState.h:
(WebCore::Style::BuilderState::builder):
(WebCore::Style::BuilderState::rootElementStyle const):

Restore this to be nullable for simplicity.

(WebCore::Style::BuilderState::registeredContentAttributes const):
(WebCore::Style::BuilderState::styleResolver): Deleted.

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

6 months ago[CMake] TestWebCore shouldn't link with WebCoreTestSupport
Hironori.Fujii@sony.com [Fri, 1 Nov 2019 14:26:16 +0000 (14:26 +0000)]
[CMake] TestWebCore shouldn't link with WebCoreTestSupport
https://bugs.webkit.org/show_bug.cgi?id=203672

Reviewed by Don Olmstead.

TestWebCore doesn't need to link with WebCoreTestSupport. And, it
causes a problem for Windows because WebCoreTestSupport imports
WebCore symbols by using dllimport, however, WebCore is not a DLL.
(Bug 203663 Comment 4)

* TestWebKitAPI/CMakeLists.txt: Changed TestWebCore not to link
with WebCoreTestSupport. Changed TestWebCore to link with
WebCoreHeaderInterface instead.

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

6 months agoCanvasRenderingContext2DBase: use CanvasBase more extensively
commit-queue@webkit.org [Fri, 1 Nov 2019 12:55:27 +0000 (12:55 +0000)]
CanvasRenderingContext2DBase: use CanvasBase more extensively
https://bugs.webkit.org/show_bug.cgi?id=182685

Patch by Zan Dobersek  <zdobersek@igalia.com>  and  Chris Lord <clord@igalia.com> on 2019-11-01
Reviewed by Adrian Perez de Castro.

In CanvasRenderingContext2DBase, stop downcasting the CanvasBase object
to HTMLCanvasElement where not necessary, and where necessary, do so
after testing that the CanvasBase object is indeed a HTMLCanvasElement.

All the functionality that previously required downcasting has now moved
into the CanvasBase class. Combined with these changes, this will allow
OffscreenCanvas to leverage CanvasRenderingContext2DBase for 2D
rasterization.

CanvasStyle is similarly modified to work on CanvasBase objects, only
retrieving current color value from the inline style only in case of
an HTMLCanvasElement derivative.

No new tests -- no change in behavior.

* html/canvas/CanvasRenderingContext2DBase.cpp:
(WebCore::CanvasRenderingContext2DBase::setStrokeStyle):
(WebCore::CanvasRenderingContext2DBase::setFillStyle):
(WebCore::CanvasRenderingContext2DBase::setShadowColor):
(WebCore::CanvasRenderingContext2DBase::setShadow):
(WebCore::CanvasRenderingContext2DBase::didDraw):
(WebCore::CanvasRenderingContext2DBase::getImageData const):
(WebCore::CanvasRenderingContext2DBase::putImageData):
(WebCore::CanvasRenderingContext2DBase::platformLayer const):
* html/canvas/CanvasStyle.cpp:
(WebCore::currentColor):
(WebCore::parseColorOrCurrentColor):
* html/canvas/CanvasStyle.h:

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

6 months agoTurn on IOSurface support in the iOS Simulator
timothy_horton@apple.com [Fri, 1 Nov 2019 08:44:04 +0000 (08:44 +0000)]
Turn on IOSurface support in the iOS Simulator
https://bugs.webkit.org/show_bug.cgi?id=203026
<rdar://problem/56320993>

* platform/ios/TestExpectations:
Adjust some more test expectations after turning on accelerated drawing.
This is starting to get concerning.

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

6 months agoUnreviewed, speculative GTK build fix r251886
ysuzuki@apple.com [Fri, 1 Nov 2019 06:34:22 +0000 (06:34 +0000)]
Unreviewed, speculative GTK build fix r251886
https://bugs.webkit.org/show_bug.cgi?id=203703

* wasm/WasmSlowPaths.h:

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

6 months agoFix GTK build after r251886
tzagallo@apple.com [Fri, 1 Nov 2019 05:53:44 +0000 (05:53 +0000)]
Fix GTK build after r251886
https://bugs.webkit.org/show_bug.cgi?id=203703

Reviewed by Yusuke Suzuki.

slow_path_wasm_throw_exception was missing `extern "C"` in the implementation file.

* wasm/WasmSlowPaths.cpp:
(JSC::LLInt::slow_path_wasm_throw_exception):

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

6 months agoTurn on IOSurface support in the iOS Simulator
timothy_horton@apple.com [Fri, 1 Nov 2019 05:03:23 +0000 (05:03 +0000)]
Turn on IOSurface support in the iOS Simulator
https://bugs.webkit.org/show_bug.cgi?id=203026
<rdar://problem/56320993>

* platform/ios/TestExpectations:
Adjust some more test expectations after turning on accelerated drawing.

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

6 months agogcSafeMemmove references undefined slowPathBackwardsMemmove on non-gcc compatible...
tzagallo@apple.com [Fri, 1 Nov 2019 05:01:40 +0000 (05:01 +0000)]
gcSafeMemmove references undefined slowPathBackwardsMemmove on non-gcc compatible compilers
https://bugs.webkit.org/show_bug.cgi?id=203721

Reviewed by Fujii Hironori.

* heap/GCMemoryOperations.h:
(JSC::gcSafeMemmove):

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

6 months ago[WinCairo][Clang] Unreviewed build fix
Hironori.Fujii@sony.com [Fri, 1 Nov 2019 04:41:37 +0000 (04:41 +0000)]
[WinCairo][Clang] Unreviewed build fix
https://bugs.webkit.org/show_bug.cgi?id=203663

ServiceWorkerThreadProxy::notifyNetworkStateChange was not
exported from WebKit.dll even though it's marked with
WEBCORE_TESTSUPPORT_EXPORT because any symbols in the object file of
ServiceWorkerThreadProxy.cpp is not referred by WebKit.dll.

> WebCoreTestSupport.lib(ServiceWorkerInternals.cpp.obj) : error LNK2019: unresolved external symbol
>   "__declspec(dllimport) public: void __cdecl WebCore::ServiceWorkerThreadProxy::notifyNetworkStateChange(bool)"
>   (__imp_?notifyNetworkStateChange@ServiceWorkerThreadProxy@WebCore@@QEAAX_N@Z) referenced in function
>   "public: <auto> __cdecl `public: void __cdecl WebCore::ServiceWorkerInternals::setOnline(bool)'::`1'::<lambda_0>::operator()(void)const "
>   (??R<lambda_0>@?0??setOnline@ServiceWorkerInternals@WebCore@@QEAAX_N@Z@QEBA?A?<auto>@@XZ)

Uninline ServiceWorkerThreadProxy::identifier temporarily.
I will revert this change after fixing this issue properly in Bug 203663.

No behavioral changes.

* workers/service/context/ServiceWorkerThreadProxy.cpp:
(WebCore::ServiceWorkerThreadProxy::identifier const):
* workers/service/context/ServiceWorkerThreadProxy.h:

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

6 months agoTake down the gesture snapshot early when the back/forward cache is not leveraged
cdumez@apple.com [Fri, 1 Nov 2019 04:07:37 +0000 (04:07 +0000)]
Take down the gesture snapshot early when the back/forward cache is not leveraged
https://bugs.webkit.org/show_bug.cgi?id=203713
<rdar://problem/56803910>

Reviewed by Tim Horton.

Take down the gesture snapshot as soon as the gesture is done when the back/forward cache
is not leveraged. Otherwise, the snapshot may stay up for a long time (while we load, parse
and restore scroll position) and it would look to the user as if the view was unresponsive.
Showing the page slowly loading in such cases is less confusing as the user knows what's
going on and is even able to interact with the partially loaded page.

* Shared/WebBackForwardListItem.cpp:
(WebKit::WebBackForwardListItem::hasCachedWebPage const):
* Shared/WebBackForwardListItem.h:
* UIProcess/ViewGestureController.cpp:
(WebKit::ViewGestureController::endSwipeGesture):
* UIProcess/ViewGestureController.h:
* UIProcess/ios/ViewGestureControllerIOS.mm:
(WebKit::ViewGestureController::makeSnapshotBlank):
(WebKit::ViewGestureController::endSwipeGesture):
* UIProcess/mac/ViewGestureControllerMac.mm:
(WebKit::ViewGestureController::makeSnapshotBlank):

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

6 months agoFix build when WTF_CPU_NEEDS_ALIGNED_ACCESS=1 after r251886
tzagallo@apple.com [Fri, 1 Nov 2019 04:00:32 +0000 (04:00 +0000)]
Fix build when WTF_CPU_NEEDS_ALIGNED_ACCESS=1 after r251886
https://bugs.webkit.org/show_bug.cgi?id=203718

Reviewed by Yusuke Suzuki.

* bytecompiler/BytecodeGeneratorBaseInlines.h:
(JSC::BytecodeGeneratorBase<Traits>::alignWideOpcode16):
(JSC::BytecodeGeneratorBase<Traits>::alignWideOpcode32):

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

6 months agoofflineasm should emit the suffixes for floating point instructions on Windows x86
tzagallo@apple.com [Fri, 1 Nov 2019 03:58:47 +0000 (03:58 +0000)]
offlineasm should emit the suffixes for floating point instructions on Windows x86
https://bugs.webkit.org/show_bug.cgi?id=203720

Reviewed by Yusuke Suzuki.

* offlineasm/x86.rb:

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

6 months agoDisable Wasm interpreter on WinCairo
tzagallo@apple.com [Fri, 1 Nov 2019 03:23:14 +0000 (03:23 +0000)]
Disable Wasm interpreter on WinCairo
https://bugs.webkit.org/show_bug.cgi?id=203705

Reviewed by Yusuke Suzuki.

The interpreter does not build on WinCairo.

* llint/LowLevelInterpreter.asm:

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

6 months ago[JSC] Remove metadata(CallFrame*) accessor
ysuzuki@apple.com [Fri, 1 Nov 2019 03:22:18 +0000 (03:22 +0000)]
[JSC] Remove metadata(CallFrame*) accessor
https://bugs.webkit.org/show_bug.cgi?id=203712

Reviewed by Tadeu Zagallo.

We should pass CodeBlock* explicitly to remove unnecessary use of CallFrame*, which is very error-prone.

* dfg/DFGOSREntry.cpp:
(JSC::DFG::prepareCatchOSREntry):
* dfg/DFGOSREntry.h:
* generator/Metadata.rb:
* jit/JITOperations.cpp:

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

6 months agoTemporary skip broken tests on MIPS that is broken due to OSR exit to LLInt
ticaiolima@gmail.com [Fri, 1 Nov 2019 02:11:30 +0000 (02:11 +0000)]
Temporary skip broken tests on MIPS that is broken due to OSR exit to LLInt
https://bugs.webkit.org/show_bug.cgi?id=203710

Unreviewed gardening.

JSTests:

* microbenchmarks/call-spread-call.js:
* microbenchmarks/throw.js:
* stress/allocation-sinking-hints-are-valid-ssa-2.js:
* stress/arith-profile-for-negate-can-see-non-number-due-to-dfg-osr-exit-profiling.js:
* stress/arrowfunction-lexical-bind-supercall-4.js:
* stress/arrowfunction-tdz-3.js:
* stress/function-constructor-semantics.js:
* stress/stress-cleared-calllinkinfo.js:
* stress/typedarray-configure-index.js:
* stress/v8-deltablue-strict.js:

PerformanceTests/SunSpider:

* tests/v8-v6/v8-deltablue.js:

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

6 months agoREGRESSION (r251808): run-webkit-test cannot show results.html
jbedard@apple.com [Fri, 1 Nov 2019 01:39:43 +0000 (01:39 +0000)]
REGRESSION (r251808): run-webkit-test cannot show results.html
https://bugs.webkit.org/show_bug.cgi?id=203709
<rdar://problem/56798620>

Reviewed by Stephanie Lewis.

* Scripts/webkitpy/port/darwin.py:
(DarwinPort.show_results_html_file): os.devnull is a string, not a file.

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

6 months ago[FTW] Adopt DirectWrite in place of Uniscribe
bfulgham@apple.com [Fri, 1 Nov 2019 00:53:49 +0000 (00:53 +0000)]
[FTW] Adopt DirectWrite in place of Uniscribe
https://bugs.webkit.org/show_bug.cgi?id=203548
<rdar://problem/56695130>

Reviewed by Fujii Hironori.

This patch switches from the Uniscribe text controller to a
DirectWrite based ComplexTextController.

* PlatformFTW.cmake:
* platform/graphics/ComplexTextController.cpp:
(WebCore::ComplexTextController::ComplexTextController): Treat Windows
like any other ComplexTextController platform.
* platform/graphics/Font.cpp:
(WebCore::Font::platformGlyphInit): Add hack for DirectWrite
zero-width space handling.
* platform/graphics/FontCascade.cpp:
(WebCore::FontCascade::widthOfTextRange const): Don't use Uniscribe.
* platform/graphics/FontPlatformData.h:
(WebCore::FontPlatformData::dwFontCollection const):
(WebCore::FontPlatformData::faceName const):
* platform/graphics/win/ComplexTextControllerDirectWrite.cpp:
(WebCore::shape): Added,
(WebCore::ComplexTextController::collectComplexTextRunsForCharacters):
Added.
* platform/graphics/win/DirectWriteUtilities.cpp:
(WebCore::DirectWrite::createWithPlatformFont): Modify to return a
pair of font and font collection.
(WebCore::DirectWrite::fontWeight): Added stub.
(WebCore::DirectWrite::fontStyle): Ditto.
(WebCore::DirectWrite::fontStretch): Ditto.
* platform/graphics/win/DirectWriteUtilities.h:
* platform/graphics/win/FontCustomPlatformData.cpp:
(WebCore::FontCustomPlatformData::fontPlatformData): Add more
information to help DirectWrite handle font styles.
* platform/graphics/win/FontPlatformDataDirect2D.cpp:
(WebCore::FontPlatformData::platformDataInit):
(WebCore::FontPlatformData::FontPlatformData):
(WebCore::FontPlatformData::createFallbackFont): Deleted.
* platform/graphics/win/FontWin.cpp:
* platform/graphics/win/GlyphPageTreeNodeDirect2D.cpp:
(WebCore::GlyphPage::fill): Update to handle multiple runs in a
given string.
* platform/graphics/win/TextAnalyzerHelper.cpp:
(WebCore::TextAnalyzerHelper::TextAnalyzerHelper): Update to handle
analysis of strings with multiple runs.
(WebCore::TextAnalyzerHelper::SetScriptAnalysis): Ditto.
* platform/graphics/win/TextAnalyzerHelper.h:

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

6 months agoChanged my emails list.
mattbaker@apple.com [Fri, 1 Nov 2019 00:39:05 +0000 (00:39 +0000)]
Changed my emails list.

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

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

6 months ago[iOS] Fix mach lookup sandbox violations in the Mail app
pvollan@apple.com [Fri, 1 Nov 2019 00:31:57 +0000 (00:31 +0000)]
[iOS] Fix mach lookup sandbox violations in the Mail app
https://bugs.webkit.org/show_bug.cgi?id=203697

Reviewed by Alexey Proskuryakov.

Allow mach lookup to the services "com.apple.logd.events" and "com.apple.distributed_notifications@1v3",
which are seen when running the Mail application. Also allow "com.apple.aggregated", which was previously
allowed, and is showing up in reports.

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

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

6 months agoTurn on IOSurface support in the iOS Simulator
timothy_horton@apple.com [Fri, 1 Nov 2019 00:08:25 +0000 (00:08 +0000)]
Turn on IOSurface support in the iOS Simulator
https://bugs.webkit.org/show_bug.cgi?id=203026
<rdar://problem/56320993>

Reviewed by Simon Fraser.

Source/WebCore:

* Configurations/WebCore.xcconfig:
Always link IOSurface now that we always have it. We continue to only link
IOSurfaceAccelerator on iOS hardware, since it's only available there.

* platform/graphics/cocoa/IOSurface.h:
Turn off RGB10 in the Simulator.

* rendering/RenderThemeIOS.mm:
(WebCore::RenderThemeIOS::paintSystemPreviewBadge):
Disable CoreImage rendering via IOSurface for the system preview badge,
since it does not seem to work in the simulator.

Source/WebKit:

* Configurations/WebKit.xcconfig:
Always link IOSurface now that we always have it.

* Shared/WebPreferences.yaml:
* Shared/WebPreferencesDefaultValues.h:
Turn on Accelerated Drawing and Accelerated Drawing for Canvas by default.

* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView _takeViewSnapshot]):
Don't use RGB10 if we don't have it.

(-[WKWebView _snapshotRect:intoImageOfWidth:completionHandler:]):
Don't use render server snapshotting in hidden windows, because it
(correctly, but unhelpfully) cannot capture contents in that case.

Source/WTF:

* wtf/Platform.h:
Turn on HAVE(IOSURFACE) and USE(IOSURFACE_CANVAS_BACKING_STORE) in the simulator.
Add HAVE(IOSURFACE_COREIMAGE_SUPPORT).

Tools:

* DumpRenderTree/ios/PixelDumpSupportIOS.mm:
(createBitmapContextFromWebView):
Don't use RGB10 if we don't have it.

* TestWebKitAPI/Tests/WebKitCocoa/WKWebViewSnapshot.mm:
(TEST):
Don't allocate many megabytes on the stack.
This isn't currently a problem, but if you accidentally run the tests on
a 3x simulator it starts crashing.

LayoutTests:

* compositing/canvas/accelerated-canvas-compositing-size-limit-expected.txt:
* platform/ios-device/TestExpectations:
* platform/ios/TestExpectations:
* platform/ios/compositing/canvas/accelerated-canvas-compositing-expected.txt: Added.
* platform/ios/compositing/canvas/accelerated-canvas-compositing-size-limit-expected.txt: Removed.
* platform/ios/fast/canvas/canvas-render-layer-expected.txt: Added.
* platform/ios/fast/canvas/canvas-scale-shadowBlur-expected.txt: Added.
* platform/ios/fast/canvas/canvas-scale-strokePath-shadow-expected.txt: Added.
* platform/ios/imported/w3c/web-platform-tests/2dcontext/drawing-images-to-the-canvas/drawimage_html_image-expected.txt: Removed.
Move and expand the scope of some TestExpectations for canvas tests
that fail due to noise introduced in the hardware accelerated drawing path.
We will separately investigate how to mitigate this, but it already affects
iOS on-device testing (as well as macOS in most cases). The tiny reduction
in coverage here is well worth the massive improvement in coverage of
accelerated drawing code paths.

* fast/images/exif-orientation-canvas-expected.html:
Due to rdar://problem/56755864, <canvas> and <img> render slightly differently.
Use <canvas> for the reference as well, but use transforms to translate it
instead of depending on EXIF orientation support, to continue testing
the intended behavior.

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

6 months ago[EME] Batch multiple key requests into one request and response
jer.noble@apple.com [Thu, 31 Oct 2019 23:54:38 +0000 (23:54 +0000)]
[EME] Batch multiple key requests into one request and response
https://bugs.webkit.org/show_bug.cgi?id=203580
<rdar://problem/54853345>

Reviewed by Eric Carlson.

Source/WebCore:

Test: platform/mac/media/encrypted-media/fps-multiple-pssh.html

Add a path for -didProvideRequests: giving an NSArray of AVContentKeyRequests to result in
an EME message containing a JSON object containing keyIDs and licence request payloads.

- CDMInstanceSessionFairPlayStreamingAVFObjC now defines a "Request" as a Vector of
  AVContentKeyRequests.
- When we receive an NSArray of AVContentKeyRequests, we store that as a single "Request"
  in m_currentRequest and m_requests, or in m_pendingRequests.
- Generating a key request message from such a vector will result in a JSON object in the format
  of [{ keyID: ..., payload: ...}, ...].
- Clients can update these all at once with a matching JSON object in the same format, or alternatively
  of the format [{ keyID: ..., error: ...}, ...] to indicate to the CDN that there was an error
  encountered while completing the key request.
- There are a couple of helper classes that facilitate collecting delegate callbacks and completion handlers
  into a single final callback: UpdateResponseCollector and CallbackAggregator.

* platform/graphics/avfoundation/objc/CDMInstanceFairPlayStreamingAVFObjC.h:
* platform/graphics/avfoundation/objc/CDMInstanceFairPlayStreamingAVFObjC.mm:
(-[WebCoreFPSContentKeySessionDelegate contentKeySession:didProvideContentKeyRequests:forInitializationData:]):
(WebCore::CDMInstanceSessionFairPlayStreamingAVFObjC::UpdateResponseCollector::UpdateResponseCollector):
(WebCore::CDMInstanceSessionFairPlayStreamingAVFObjC::UpdateResponseCollector::addSuccessfulResponse):
(WebCore::CDMInstanceSessionFairPlayStreamingAVFObjC::UpdateResponseCollector::addErrorResponse):
(WebCore::CDMInstanceSessionFairPlayStreamingAVFObjC::UpdateResponseCollector::fail):
(WebCore::parseJSONValue):
(WebCore::CDMInstanceFairPlayStreamingAVFObjC::sessionForKeyIDs const):
(WebCore::keyIDsForRequest):
(WebCore::CDMInstanceSessionFairPlayStreamingAVFObjC::keyIDs):
(WebCore::CDMInstanceSessionFairPlayStreamingAVFObjC::updateLicense):
(WebCore::CDMInstanceSessionFairPlayStreamingAVFObjC::closeSession):
(WebCore::CDMInstanceSessionFairPlayStreamingAVFObjC::didProvideRequest):
(WebCore::CDMInstanceSessionFairPlayStreamingAVFObjC::didProvideRequests):
(WebCore::CDMInstanceSessionFairPlayStreamingAVFObjC::didProvideRenewingRequest):
(WebCore::CDMInstanceSessionFairPlayStreamingAVFObjC::didFailToProvideRequest):
(WebCore::CDMInstanceSessionFairPlayStreamingAVFObjC::requestDidSucceed):
(WebCore::CDMInstanceSessionFairPlayStreamingAVFObjC::nextRequest):
(WebCore::CDMInstanceSessionFairPlayStreamingAVFObjC::lastKeyRequest const):
(WebCore::CDMInstanceSessionFairPlayStreamingAVFObjC::keyStatuses const):

Source/WTF:

Support appending an r-value reference Vector to another.

* wtf/Vector.h:
(WTF::minCapacity>::appendVector):

LayoutTests:

* platform/mac/TestExpectations:
* platform/mac/media/encrypted-media/fps-multiple-pssh-expected.txt: Added.
* platform/mac/media/encrypted-media/fps-multiple-pssh.html: Added.

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

6 months agoUnreviewed, fix LowLevelInterpreter32_64.asm after r251886
tzagallo@apple.com [Thu, 31 Oct 2019 23:37:14 +0000 (23:37 +0000)]
Unreviewed, fix LowLevelInterpreter32_64.asm after r251886
https://bugs.webkit.org/show_bug.cgi?id=194257

ci2d was renamed to ci2ds and I also missed LowLevelInterpreter32_64.asm

* llint/LowLevelInterpreter32_64.asm:

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

6 months agoUnreviewed, fix cloop builds after r251886
tzagallo@apple.com [Thu, 31 Oct 2019 23:28:27 +0000 (23:28 +0000)]
Unreviewed, fix cloop builds after r251886
https://bugs.webkit.org/show_bug.cgi?id=194257

ci2d was renamed to ci2ds, but I missed cloop.rb, arm.rb and mips.rb

* offlineasm/arm.rb:
* offlineasm/cloop.rb:
* offlineasm/mips.rb:

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

6 months agoREGRESSION (r251215): Mail failed to build
dino@apple.com [Thu, 31 Oct 2019 22:48:22 +0000 (22:48 +0000)]
REGRESSION (r251215): Mail failed to build
https://bugs.webkit.org/show_bug.cgi?id=203700
<rdar://problem/56787012>

Reviewed by Antoine Quint.

Revert the private modulemap. It didn't include enough things
and caused some internal builds to fail.

We'll put it back with everything included sometime soon.

* Configurations/WebKit.xcconfig:
* Modules/OSX.modulemap: Renamed from Source/WebKit/Modules/macOS.modulemap.
* Modules/iOS.private.modulemap: Removed.
* Modules/macOS.private.modulemap: Removed.
* Shared/API/Cocoa/WebKitPrivate.h:

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

6 months agoEnable more features in Mac CMake build
achristensen@apple.com [Thu, 31 Oct 2019 22:45:05 +0000 (22:45 +0000)]
Enable more features in Mac CMake build
https://bugs.webkit.org/show_bug.cgi?id=203699

Patch by Alex Christensen <achristensen@apple.com> on 2019-10-31
Rubber-stamped by Tim Horton.

.:

* Source/cmake/OptionsMac.cmake:
* Source/cmake/WebKitFeatures.cmake:

Source/WebCore:

* Modules/pictureinpicture/PictureInPictureWindow.h:
* PlatformMac.cmake:
* layout/inlineformatting/InlineFormattingContext.cpp:
* platform/mediastream/mac/CoreAudioCaptureSource.cpp:

Source/WebCore/PAL:

* pal/CMakeLists.txt:
* pal/PlatformMac.cmake:

Source/WebKit:

* PlatformMac.cmake:
* WebProcess/cocoa/UserMediaCaptureManager.cpp:
(WebKit::UserMediaCaptureManager::createCaptureSource):

Source/WebKitLegacy:

* PlatformMac.cmake:

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

6 months agoUnreviewed, rolling out r251861.
repstein@apple.com [Thu, 31 Oct 2019 22:40:16 +0000 (22:40 +0000)]
Unreviewed, rolling out r251861.

Caused 50+ Layout Test Crashes

Reverted changeset:

"Use SecurityOriginData in NetworkProcess where possible
without other changes"
https://bugs.webkit.org/show_bug.cgi?id=203615
https://trac.webkit.org/changeset/251861

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

6 months ago[WebAssembly] Create a Wasm interpreter
tzagallo@apple.com [Thu, 31 Oct 2019 22:32:52 +0000 (22:32 +0000)]
[WebAssembly] Create a Wasm interpreter
https://bugs.webkit.org/show_bug.cgi?id=194257
<rdar://problem/44186794>

Reviewed by Saam Barati.

Source/JavaScriptCore:

Add an interpreter tier to WebAssembly which reuses the LLInt infrastructure. The interpreter
currently tiers up straight to OMG and can OSR enter at the prologue and from loops. The initial
implementation of the interpreter is very naive, but despite the lack of optimizations it still
shows a 2x improvement on the WebAssembly subtests in JetStream2 and 2x improvement on the
PSPDFKit benchmark. It reduces "compilation" times by ~3x and it's neutral on throughput.

The interpreter follows the same calling conventions as the BBQ/OMG, this means that:
- We have to allocate locals for all argument registers and write all arguments registers to the
  stack in the prologue.
- Calls have to allocate space for at least as many arguments as the number of argument registers.
  Before each call, all argument registers must be loaded from the stack, and after we return from
  the call, all registers must be stored back to the stack, in case they contain return values. We
  carefully layout the stack so that the arguments that would already have to be passed in the stack
  end up in the right place. The stack layout for calls is:
    [ gprs ][ fprs ][ optional stack arguments ][ callee frame ]
                                                               ^ sp
- The return opcode has to load all registers from the stack, since they might need to contain
  results of the function.
- The calling convention requires that the callee should store itself in the callee slot of the call
  frame, which is impossible in the interpreter, since the code we execute is the same for all callees.
  In order to work around that, we generate an entry thunk to the wasm interpreter for each function.
  All this thunk does is store the callee in the call frame and tail call the interpreter.

* CMakeLists.txt:
* DerivedSources-input.xcfilelist:
* DerivedSources-output.xcfilelist:
* DerivedSources.make:
* JavaScriptCore.xcodeproj/project.pbxproj:
* Sources.txt:
* bytecode/BytecodeDumper.cpp:
(JSC::BytecodeDumper<Block>::constantName const):
(JSC::BytecodeDumper<Block>::dumpValue):
(JSC::BytecodeDumper<Block>::dumpBytecode):
(JSC::CodeBlockBytecodeDumper<Block>::vm const):
(JSC::CodeBlockBytecodeDumper<Block>::identifier const):
(JSC::CodeBlockBytecodeDumper<Block>::dumpIdentifiers):
(JSC::CodeBlockBytecodeDumper<Block>::dumpConstants):
(JSC::CodeBlockBytecodeDumper<Block>::dumpExceptionHandlers):
(JSC::CodeBlockBytecodeDumper<Block>::dumpSwitchJumpTables):
(JSC::CodeBlockBytecodeDumper<Block>::dumpStringSwitchJumpTables):
(JSC::CodeBlockBytecodeDumper<Block>::dumpBlock):
* bytecode/BytecodeDumper.h:
(JSC::BytecodeDumper::dumpValue):
(JSC::BytecodeDumper::BytecodeDumper):
* bytecode/BytecodeGeneratorification.cpp:
(JSC::performGeneratorification):
* bytecode/BytecodeList.rb:
* bytecode/CodeBlock.cpp:
(JSC::CodeBlock::dumpBytecode):
* bytecode/Fits.h:
* bytecode/Instruction.h:
(JSC::BaseInstruction::BaseInstruction):
(JSC::BaseInstruction::Impl::opcodeID const):
(JSC::BaseInstruction::opcodeID const):
(JSC::BaseInstruction::name const):
(JSC::BaseInstruction::isWide16 const):
(JSC::BaseInstruction::isWide32 const):
(JSC::BaseInstruction::hasMetadata const):
(JSC::BaseInstruction::sizeShiftAmount const):
(JSC::BaseInstruction::size const):
(JSC::BaseInstruction::is const):
(JSC::BaseInstruction::as const):
(JSC::BaseInstruction::cast):
(JSC::BaseInstruction::cast const):
(JSC::BaseInstruction::wide16 const):
(JSC::BaseInstruction::wide32 const):
* bytecode/InstructionStream.h:
(JSC::InstructionStream::iterator::operator+=):
(JSC::InstructionStream::iterator::operator++):
(JSC::InstructionStreamWriter::iterator::operator+=):
(JSC::InstructionStreamWriter::iterator::operator++):
* bytecode/Opcode.cpp:
* bytecode/Opcode.h:
* bytecode/PreciseJumpTargetsInlines.h:
* bytecode/UnlinkedCodeBlock.h:
* bytecode/VirtualRegister.cpp:
(JSC::VirtualRegister::VirtualRegister):
* bytecode/VirtualRegister.h:
* bytecompiler/BytecodeGenerator.cpp:
(JSC::GenericLabel<JSGeneratorTraits>::setLocation):
(JSC::BytecodeGenerator::BytecodeGenerator):
* bytecompiler/BytecodeGenerator.h:
* bytecompiler/BytecodeGeneratorBase.h: Added.
* bytecompiler/BytecodeGeneratorBaseInlines.h: Added.
(JSC::shrinkToFit):
(JSC::BytecodeGeneratorBase<Traits>::BytecodeGeneratorBase):
(JSC::BytecodeGeneratorBase<Traits>::newLabel):
(JSC::BytecodeGeneratorBase<Traits>::newEmittedLabel):
(JSC::BytecodeGeneratorBase<Traits>::reclaimFreeRegisters):
(JSC::BytecodeGeneratorBase<Traits>::emitLabel):
(JSC::BytecodeGeneratorBase<Traits>::recordOpcode):
(JSC::BytecodeGeneratorBase<Traits>::alignWideOpcode16):
(JSC::BytecodeGeneratorBase<Traits>::alignWideOpcode32):
(JSC::BytecodeGeneratorBase<Traits>::write):
(JSC::BytecodeGeneratorBase<Traits>::newRegister):
(JSC::BytecodeGeneratorBase<Traits>::newTemporary):
(JSC::BytecodeGeneratorBase<Traits>::addVar):
(JSC::BytecodeGeneratorBase<Traits>::allocateCalleeSaveSpace):
* bytecompiler/Label.h:
(JSC::GenericBoundLabel::GenericBoundLabel):
(JSC::GenericBoundLabel::target):
(JSC::GenericBoundLabel::saveTarget):
(JSC::GenericBoundLabel::commitTarget):
* dfg/DFGByteCodeParser.cpp:
* dfg/DFGCapabilities.cpp:
(JSC::DFG::capabilityLevel):
* dfg/DFGOperations.cpp:
* generator/Argument.rb:
* generator/DSL.rb:
* generator/GeneratedFile.rb:
* generator/Opcode.rb:
* generator/Options.rb:
* generator/Section.rb:
* generator/Wasm.rb: Added.
* interpreter/Register.h:
* interpreter/RegisterInlines.h:
(JSC::Register::operator=):
* jit/JITArithmetic.cpp:
* jit/JITOpcodes.cpp:
* llint/LLIntData.cpp:
(JSC::LLInt::initialize):
* llint/LLIntData.h:
(JSC::LLInt::wasmExceptionInstructions):
* llint/LLIntOfflineAsmConfig.h:
* llint/LLIntOffsetsExtractor.cpp:
* llint/LLIntSlowPaths.cpp:
* llint/LLIntThunks.cpp:
(JSC::LLInt::generateThunkWithJumpTo):
(JSC::LLInt::wasmFunctionEntryThunk):
* llint/LLIntThunks.h:
* llint/LowLevelInterpreter.asm:
* llint/LowLevelInterpreter32_64.asm:
* llint/LowLevelInterpreter64.asm:
* llint/WebAssembly.asm: Added.
* offlineasm/arm64.rb:
* offlineasm/instructions.rb:
* offlineasm/parser.rb:
* offlineasm/registers.rb:
* offlineasm/transform.rb:
* offlineasm/x86.rb:
* parser/Nodes.h:
* runtime/Error.cpp:
(JSC::FindFirstCallerFrameWithCodeblockFunctor::operator() const):
* runtime/ErrorInstance.cpp:
(JSC::ErrorInstance::finishCreation):
* runtime/Options.cpp:
(JSC::overrideDefaults):
* runtime/OptionsList.h:
* runtime/SamplingProfiler.cpp:
(JSC::FrameWalker::recordJITFrame):
(JSC::FrameWalker::resetAtMachineFrame):
* wasm/WasmAirIRGenerator.cpp:
(JSC::Wasm::AirIRGenerator::isControlTypeIf):
(JSC::Wasm::AirIRGenerator::emitLoopTierUpCheck):
* wasm/WasmB3IRGenerator.cpp:
(JSC::Wasm::B3IRGenerator::isControlTypeIf):
* wasm/WasmBBQPlan.cpp:
(JSC::Wasm::BBQPlan::prepareImpl):
(JSC::Wasm::BBQPlan::work):
(JSC::Wasm::BBQPlan::compileFunction):
(JSC::Wasm::BBQPlan::didCompleteCompilation):
(JSC::Wasm::BBQPlan::initializeCallees):
* wasm/WasmBBQPlan.h:
* wasm/WasmBBQPlanInlines.h: Removed.
* wasm/WasmCallee.cpp:
(JSC::Wasm::Callee::Callee):
(JSC::Wasm::Callee::dump const):
(JSC::Wasm::JITCallee::JITCallee):
(JSC::Wasm::LLIntCallee::setEntrypoint):
(JSC::Wasm::LLIntCallee::entrypoint const):
(JSC::Wasm::LLIntCallee::calleeSaveRegisters):
(JSC::Wasm:: const):
* wasm/WasmCallee.h:
(JSC::Wasm::Callee::setOSREntryCallee):
(JSC::Wasm::JITCallee::wasmToWasmCallsites):
(JSC::Wasm::JITCallee:: const):
* wasm/WasmCallingConvention.h:
* wasm/WasmCodeBlock.cpp:
(JSC::Wasm::CodeBlock::CodeBlock):
* wasm/WasmCodeBlock.h:
(JSC::Wasm::CodeBlock::wasmEntrypointCalleeFromFunctionIndexSpace):
(JSC::Wasm::CodeBlock::wasmBBQCalleeFromFunctionIndexSpace):
(JSC::Wasm::CodeBlock::wasmToWasmExitStub):
* wasm/WasmCompilationMode.cpp:
(JSC::Wasm::makeString):
* wasm/WasmCompilationMode.h:
* wasm/WasmEmbedder.h:
* wasm/WasmEntryPlan.cpp: Added.
(JSC::Wasm::EntryPlan::EntryPlan):
(JSC::Wasm::EntryPlan::stateString):
(JSC::Wasm::EntryPlan::moveToState):
(JSC::Wasm::EntryPlan::didReceiveFunctionData):
(JSC::Wasm::EntryPlan::parseAndValidateModule):
(JSC::Wasm::EntryPlan::prepare):
(JSC::Wasm::EntryPlan::ThreadCountHolder::ThreadCountHolder):
(JSC::Wasm::EntryPlan::ThreadCountHolder::~ThreadCountHolder):
(JSC::Wasm::EntryPlan::complete):
(JSC::Wasm::EntryPlan::compileFunctions):
(JSC::Wasm::EntryPlan::work):
* wasm/WasmEntryPlan.h: Copied from Source/JavaScriptCore/wasm/WasmBBQPlan.h.
(JSC::Wasm::EntryPlan::parseAndValidateModule):
(JSC::Wasm::EntryPlan::exports const):
(JSC::Wasm::EntryPlan::internalFunctionCount const):
(JSC::Wasm::EntryPlan::takeModuleInformation):
(JSC::Wasm::EntryPlan::takeWasmToWasmExitStubs):
(JSC::Wasm::EntryPlan::takeWasmToWasmCallsites):
(JSC::Wasm::EntryPlan::hasBeenPrepared const):
(JSC::Wasm::EntryPlan::tryReserveCapacity):
* wasm/WasmFunctionCodeBlock.cpp: Added.
(JSC::Wasm::FunctionCodeBlock::setInstructions):
(JSC::Wasm::FunctionCodeBlock::dumpBytecode):
(JSC::Wasm::FunctionCodeBlock::addOutOfLineJumpTarget):
(JSC::Wasm::FunctionCodeBlock::outOfLineJumpOffset):
(JSC::Wasm::FunctionCodeBlock::outOfLineJumpTarget):
(JSC::Wasm::FunctionCodeBlock::addSignature):
(JSC::Wasm::FunctionCodeBlock::signature const):
(JSC::Wasm::FunctionCodeBlock::addJumpTable):
(JSC::Wasm::FunctionCodeBlock::jumpTable const const):
(JSC::Wasm::FunctionCodeBlock::numberOfJumpTables const):
* wasm/WasmFunctionCodeBlock.h: Added.
(JSC::Wasm::FunctionCodeBlock::FunctionCodeBlock):
(JSC::Wasm::FunctionCodeBlock::getConstant const):
(JSC::Wasm::FunctionCodeBlock::functionIndex const):
(JSC::Wasm::FunctionCodeBlock::addJumpTarget):
(JSC::Wasm::FunctionCodeBlock::numberOfJumpTargets):
(JSC::Wasm::FunctionCodeBlock::lastJumpTarget):
(JSC::Wasm::FunctionCodeBlock::outOfLineJumpOffset):
(JSC::Wasm::FunctionCodeBlock::bytecodeOffset):
(JSC::Wasm::FunctionCodeBlock::tierUpCounter):
* wasm/WasmFunctionParser.h:
(JSC::Wasm::FunctionParser<Context>::parseExpression):
(JSC::Wasm::FunctionParser<Context>::parseUnreachableExpression):
* wasm/WasmInstance.h:
* wasm/WasmLLIntGenerator.cpp: Added.
(JSC::Wasm::LLIntGenerator::ControlType::ControlType):
(JSC::Wasm::LLIntGenerator::ControlType::loop):
(JSC::Wasm::LLIntGenerator::ControlType::topLevel):
(JSC::Wasm::LLIntGenerator::ControlType::block):
(JSC::Wasm::LLIntGenerator::ControlType::if_):
(JSC::Wasm::LLIntGenerator::ControlType::targetLabelForBranch const):
(JSC::Wasm::LLIntGenerator::fail const):
(JSC::Wasm::LLIntGenerator::unifyValuesWithBlock):
(JSC::Wasm::LLIntGenerator::emptyExpression):
(JSC::Wasm::LLIntGenerator::createStack):
(JSC::Wasm::LLIntGenerator::isControlTypeIf):
(JSC::Wasm::LLIntGenerator::addEndToUnreachable):
(JSC::Wasm::LLIntGenerator::setParser):
(JSC::Wasm::LLIntGenerator::dump):
(JSC::Wasm::LLIntGenerator::virtualRegisterForLocal):
(JSC::Wasm::LLIntGenerator::tmpsForSignature):
(JSC::Wasm::LLIntGenerator::jsNullConstant):
(JSC::Wasm::LLIntGenerator::isConstant):
(JSC::Wasm::parseAndCompileBytecode):
(JSC::Wasm::LLIntGenerator::LLIntGenerator):
(JSC::Wasm::LLIntGenerator::finalize):
(JSC::Wasm::LLIntGenerator::callInformationFor):
(JSC::Wasm::LLIntGenerator::addArguments):
(JSC::Wasm::LLIntGenerator::addLocal):
(JSC::Wasm::LLIntGenerator::addConstant):
(JSC::Wasm::LLIntGenerator::getLocal):
(JSC::Wasm::LLIntGenerator::setLocal):
(JSC::Wasm::LLIntGenerator::getGlobal):
(JSC::Wasm::LLIntGenerator::setGlobal):
(JSC::Wasm::LLIntGenerator::addLoop):
(JSC::Wasm::LLIntGenerator::addTopLevel):
(JSC::Wasm::LLIntGenerator::addBlock):
(JSC::Wasm::LLIntGenerator::addIf):
(JSC::Wasm::LLIntGenerator::addElse):
(JSC::Wasm::LLIntGenerator::addElseToUnreachable):
(JSC::Wasm::LLIntGenerator::addReturn):
(JSC::Wasm::LLIntGenerator::addBranch):
(JSC::Wasm::LLIntGenerator::addSwitch):
(JSC::Wasm::LLIntGenerator::endBlock):
(JSC::Wasm::LLIntGenerator::addCall):
(JSC::Wasm::LLIntGenerator::addCallIndirect):
(JSC::Wasm::LLIntGenerator::addRefIsNull):
(JSC::Wasm::LLIntGenerator::addRefFunc):
(JSC::Wasm::LLIntGenerator::addTableGet):
(JSC::Wasm::LLIntGenerator::addTableSet):
(JSC::Wasm::LLIntGenerator::addTableSize):
(JSC::Wasm::LLIntGenerator::addTableGrow):
(JSC::Wasm::LLIntGenerator::addTableFill):
(JSC::Wasm::LLIntGenerator::addUnreachable):
(JSC::Wasm::LLIntGenerator::addCurrentMemory):
(JSC::Wasm::LLIntGenerator::addGrowMemory):
(JSC::Wasm::LLIntGenerator::addSelect):
(JSC::Wasm::LLIntGenerator::load):
(JSC::Wasm::LLIntGenerator::store):
(JSC::GenericLabel<Wasm::GeneratorTraits>::setLocation):
* wasm/WasmLLIntGenerator.h: Copied from Source/JavaScriptCore/wasm/WasmCompilationMode.h.
* wasm/WasmLLIntPlan.cpp: Added.
(JSC::Wasm::LLIntPlan::prepareImpl):
(JSC::Wasm::LLIntPlan::compileFunction):
(JSC::Wasm::LLIntPlan::didCompleteCompilation):
(JSC::Wasm::LLIntPlan::initializeCallees):
* wasm/WasmLLIntPlan.h: Copied from Source/JavaScriptCore/wasm/WasmOMGForOSREntryPlan.h.
* wasm/WasmLLIntTierUpCounter.cpp: Copied from Source/JavaScriptCore/wasm/WasmCompilationMode.cpp.
(JSC::Wasm::LLIntTierUpCounter::addOSREntryDataForLoop):
(JSC::Wasm::LLIntTierUpCounter::osrEntryDataForLoop const const):
* wasm/WasmLLIntTierUpCounter.h: Copied from Source/JavaScriptCore/wasm/WasmOMGForOSREntryPlan.h.
(JSC::Wasm::LLIntTierUpCounter::LLIntTierUpCounter):
(JSC::Wasm::LLIntTierUpCounter::optimizeAfterWarmUp):
(JSC::Wasm::LLIntTierUpCounter::checkIfOptimizationThresholdReached):
(JSC::Wasm::LLIntTierUpCounter::optimizeSoon):
* wasm/WasmMemoryInformation.cpp:
(JSC::Wasm::PinnedRegisterInfo::get):
* wasm/WasmModule.cpp:
(JSC::Wasm::makeValidationResult):
(JSC::Wasm::makeValidationCallback):
(JSC::Wasm::Module::validateSync):
(JSC::Wasm::Module::validateAsync):
* wasm/WasmOMGForOSREntryPlan.cpp:
(JSC::Wasm::OMGForOSREntryPlan::OMGForOSREntryPlan):
(JSC::Wasm::OMGForOSREntryPlan::work):
* wasm/WasmOMGForOSREntryPlan.h:
* wasm/WasmOMGPlan.cpp:
(JSC::Wasm::OMGPlan::work):
* wasm/WasmSlowPaths.cpp: Added.
(JSC::LLInt::jitCompileAndSetHeuristics):
(JSC::LLInt::WASM_SLOW_PATH_DECL):
(JSC::LLInt::doWasmCall):
(JSC::LLInt::doWasmCallIndirect):
(JSC::LLInt::slow_path_wasm_throw_exception):
(JSC::LLInt::slow_path_wasm_popcount):
(JSC::LLInt::slow_path_wasm_popcountll):
* wasm/WasmSlowPaths.h: Added.
* wasm/WasmTable.cpp:
(JSC::Wasm::FuncRefTable::function const):
(JSC::Wasm::FuncRefTable::instance const):
* wasm/WasmTable.h:
* wasm/WasmTierUpCount.h:
* wasm/WasmValidate.cpp:
(JSC::Wasm::Validate::isControlTypeIf):
* wasm/js/JSToWasm.cpp:
(JSC::Wasm::createJSToWasmWrapper):
* wasm/js/JSToWasm.h:
* wasm/js/WebAssemblyFunction.cpp:
(JSC::WebAssemblyFunction::calleeSaves const):

Tools:

Add a mode that runs WebAssembly tests without the LLInt (i.e. only Air)
and update the no-air mode to also disable the LLInt tier.

* Scripts/run-jsc-stress-tests:

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

6 months agoWeb Inspector: Color picker: incorrect saturation when selecting color on color square
nvasilyev@apple.com [Thu, 31 Oct 2019 22:26:12 +0000 (22:26 +0000)]
Web Inspector: Color picker: incorrect saturation when selecting color on color square
https://bugs.webkit.org/show_bug.cgi?id=203695
<rdar://problem/56793697>

Reviewed by Matt Baker.

Source/WebInspectorUI:

The saturation component in HSV does NOT equal the saturation component in HSL.
Use the proper HSV to HSL conversion.

* UserInterface/Models/Color.js:
(WI.Color.hsv2hsl): Added.
* UserInterface/Views/ColorSquare.js:
(WI.ColorSquare.prototype.get tintedColor):
(WI.ColorSquare.prototype.get _lightness): Deleted.

LayoutTests:

* inspector/model/color-expected.txt:
* inspector/model/color.html:

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

6 months agoWeb Inspector: REGRESSION(r251038): Elements: Computed: variables are shown in the...
drousso@apple.com [Thu, 31 Oct 2019 22:00:22 +0000 (22:00 +0000)]
Web Inspector: REGRESSION(r251038): Elements: Computed: variables are shown in the Properties section instead of in the Variables section
https://bugs.webkit.org/show_bug.cgi?id=203668

Reviewed by Matt Baker.

* UserInterface/Views/ComputedStyleDetailsPanel.js:
(WI.ComputedStyleDetailsPanel.prototype.initialLayout):
* UserInterface/Views/ComputedStyleSection.js:
(WI.ComputedStyleSection):
(WI.ComputedStyleSection.prototype.set propertyVisibilityMode): Added.
(WI.ComputedStyleSection.prototype.get propertiesToRender):
Reintroduce the `propertyVisibilityMode` concept to `WI.ComputedStyleSection` so that the
Computed details panel can prevent CSS variables from being shown in the Properites section.

* UserInterface/Views/SpreadsheetCSSStyleDeclarationSection.js:
(WI.SpreadsheetCSSStyleDeclarationSection.prototype.get propertiesToRender):
Replace `variable` getter with `isVariable` to match r251038.

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

6 months ago[JSC] Make String#localeCompare faster by inlining JSGlobalObject::defaultCollator
ysuzuki@apple.com [Thu, 31 Oct 2019 21:53:18 +0000 (21:53 +0000)]
[JSC] Make String#localeCompare faster by inlining JSGlobalObject::defaultCollator
https://bugs.webkit.org/show_bug.cgi?id=203696

Reviewed by Mark Lam.

We found that JSGlobalObject::defaultCollator is not inlined and it takes some time in JetStream2/cdjs.
We use LazyProperty mechanism here and make JSGlobalObject::defaultCollator function inlinable simple one.
This patch improves JetStream2/cdjs by 2%.

* runtime/IntlCollator.cpp:
(JSC::IntlCollator::initializeCollator):
* runtime/IntlObject.cpp:
(JSC::intlBooleanOption):
(JSC::intlStringOption):
(JSC::intlNumberOption):
* runtime/JSGlobalObject.cpp:
(JSC::JSGlobalObject::init):
(JSC::JSGlobalObject::visitChildren):
(JSC::JSGlobalObject::defaultCollator): Deleted.
* runtime/JSGlobalObject.h:
(JSC::JSGlobalObject::defaultCollator const):
* runtime/StringPrototype.cpp:
(JSC::stringProtoFuncLocaleCompare):

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

6 months agoSVGGeometryElement.getPointAtLength should clamp its argument to [0, length]
commit-queue@webkit.org [Thu, 31 Oct 2019 21:08:59 +0000 (21:08 +0000)]
SVGGeometryElement.getPointAtLength should clamp its argument to [0, length]
https://bugs.webkit.org/show_bug.cgi?id=203687

Patch by Said Abou-Hallawa <sabouhallawa@apple.com> on 2019-10-31
Reviewed by Simon Fraser.

LayoutTests/imported/w3c:

* web-platform-tests/svg/types/scripted/SVGGeometryElement.getPointAtLength-01-expected.txt:

Source/WebCore:

The spec link is:
    https://svgwg.org/svg2-draft/types.html#__svg__SVGGeometryElement__getPointAtLength

-- Fix the SVGGeometryElement.idl to match the specs.
-- Fix the path utility functions to return zeros in case of an error.
   The callers never used the return values.

* rendering/svg/RenderSVGShape.cpp:
(WebCore::RenderSVGShape::getPointAtLength const):
* rendering/svg/RenderSVGShape.h:
* svg/SVGGeometryElement.cpp:
(WebCore::SVGGeometryElement::getPointAtLength const):
* svg/SVGGeometryElement.h:
* svg/SVGGeometryElement.idl:
* svg/SVGPathElement.cpp:
(WebCore::SVGPathElement::getTotalLength const):
(WebCore::SVGPathElement::getPointAtLength const):
(WebCore::SVGPathElement::getPathSegAtLength const):
* svg/SVGPathElement.h:
* svg/SVGPathUtilities.cpp:
(WebCore::getSVGPathSegAtLengthFromSVGPathByteStream):
(WebCore::getTotalLengthOfSVGPathByteStream):
(WebCore::getPointAtLengthOfSVGPathByteStream):
* svg/SVGPathUtilities.h:

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

6 months agoDon't use memmove/memcpy/memset for memory that can be scanned concurrently
sbarati@apple.com [Thu, 31 Oct 2019 20:50:56 +0000 (20:50 +0000)]
Don't use memmove/memcpy/memset for memory that can be scanned concurrently
https://bugs.webkit.org/show_bug.cgi?id=203228
<rdar://problem/56401852>

Reviewed by Robin Morisset.

JSTests:

* stress/torn-js-value-concurrent-collector.js: Added.
(foo):

Source/JavaScriptCore:

We had code inside various places of the runtime which would call into system
memcpy/memmove/memset when updating a live butterfly. This means that the
concurrent collector could be scanning such butterflies while a memcpy/memmove/memset
was running. Those functions don't guarantee anything about the minimum
alignment of the stores they do. And implementations for them frequently have
byte copy loops for low byte copy counts. This lead to us seeing torn JSValues
inside the concurrent collector during Array.prototype.splice. This patch
introduces new functions for doing memcpy/memmove/memset for data structures
which may be concurrently scanned. The loops are written using inline assembly
for gcc compatible compilers on 64 bit platforms. The inline assembly
ensures we never write to memory using instructions that store fewer
than 8 bytes. On other platforms, we just use a volatile pointer to
ensure the compiler doesn't turn the loop into a function call or a
series of stores which may be smaller than 8 bytes.

* CMakeLists.txt:
* JavaScriptCore.xcodeproj/project.pbxproj:
* heap/GCMemoryOperations.h: Added.
(JSC::gcSafeMemcpy):
(JSC::gcSafeMemmove):
(JSC::gcSafeZeroMemory):
* heap/Heap.h:
* runtime/ArrayConventions.cpp:
(JSC::clearArrayMemset):
* runtime/ArrayPrototype.cpp:
(JSC::copyElements):
* runtime/ButterflyInlines.h:
(JSC::Butterfly::tryCreate):
(JSC::Butterfly::createOrGrowPropertyStorage):
(JSC::Butterfly::growArrayRight):
(JSC::Butterfly::reallocArrayRightIfPossible):
(JSC::Butterfly::resizeArray):
(JSC::Butterfly::unshift):
(JSC::Butterfly::shift):
* runtime/JSArray.cpp:
(JSC::JSArray::unshiftCountSlowCase):
(JSC::JSArray::appendMemcpy):
(JSC::JSArray::fastSlice):
(JSC::JSArray::shiftCountWithArrayStorage):
(JSC::JSArray::shiftCountWithAnyIndexingType):
(JSC::JSArray::unshiftCountWithArrayStorage):
* runtime/JSObject.cpp:
(JSC::JSObject::constructConvertedArrayStorageWithoutCopyingElements):
(JSC::JSObject::convertFromCopyOnWrite):
(JSC::JSObject::shiftButterflyAfterFlattening):
* runtime/JSObject.h:
* runtime/RegExpMatchesArray.h:
(JSC::createRegExpMatchesArray):
* runtime/Structure.cpp:
(JSC::Structure::flattenDictionaryStructure):

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

6 months agoMove ImageBuffer-related functionality from HTMLCanvasElement to CanvasBase
commit-queue@webkit.org [Thu, 31 Oct 2019 20:41:56 +0000 (20:41 +0000)]
Move ImageBuffer-related functionality from HTMLCanvasElement to CanvasBase
https://bugs.webkit.org/show_bug.cgi?id=182503

Patch by Zan Dobersek  <zdobersek@igalia.com>  and  Chris Lord <clord@igalia.com> on 2019-10-31
Reviewed by Ryosuke Niwa.

Move the ImageBuffer member variable, other related member variables and
majority of methods that operate on these from the HTMLCanvasElement
class up to the CanvasBase class. This will make it possible for the
OffscreenCanvas implementation to leverage the same code when using 2D
contexts for painting.

Most of the moved methods are public, while the setImageBuffer() method
is made protected so that it's still accessible from the inheriting
class.

Along with setImageBuffer(), the active pixel memory counter is moved
into the CanvasBase class. It's still using static storage, but is now
a member of the class with protected access. The storage has been made
atomic so as to allow its consistency to be maintained when accessed
from multiple threads (which may happen in the future).

The m_size member variable is also moved up into the CanvasBase class.
Constructor is changed so that the passed-in IntSize argument is used
to initialize it. Canvas implementations are still the owners of their
respective canvas contexts and are responsible for the destruction of
both the context and the ImageBuffer, in that order.

HTMLCanvasElement destructor still has to invoke
CanvasBase::notifyObserversCanvasDestroyed() since some CanvasObserver
derivatives perform virtual method calls on the CanvasBase object for
typecasting purposes in their canvasDestroyed() implementation.
Calling virtual methods on an object that's being destroyed is normally
discouraged and should be fixed separately, but it works as long as
invocations are done before the HTMLCanvasElement object is destroyed
completely (as has been the case so far).

CanvasRenderingContext2DBase is already changed in unwindStateStack()
to call CanvasBase::existingDrawingContext() and not downcast the
CanvasBase object to HTMLCanvasElement. This is done now due to
unwindStateStack() being called from the destructor, which is now
invoked from the CanvasBase destructor and not the HTMLCanvasElement
destructor, avoiding virtual method calls on the CanvasBase object as
it's being destroyed.

This patch doesn't address various methods using const qualifier and
then working around that by requiring member variables to be mutable.
This should be amended as much as possible in a separate patch.

No new tests -- no change in functionality, only refactoring.

* html/CanvasBase.cpp:
(WebCore::CanvasBase::CanvasBase):
(WebCore::CanvasBase::~CanvasBase):
(WebCore::CanvasBase::drawingContext const):
(WebCore::CanvasBase::existingDrawingContext const):
(WebCore::CanvasBase::buffer const):
(WebCore::CanvasBase::baseTransform const):
(WebCore::CanvasBase::makeRenderingResultsAvailable):
(WebCore::CanvasBase::memoryCost const):
(WebCore::CanvasBase::externalMemoryCost const):
(WebCore::CanvasBase::callTracingActive const):
(WebCore::CanvasBase::setImageBuffer const):
(WebCore::CanvasBase::activePixelMemory):
(WebCore::CanvasBase::resetGraphicsContextState const):
* html/CanvasBase.h:
(WebCore::CanvasBase::width const):
(WebCore::CanvasBase::height const):
(WebCore::CanvasBase::size const):
(WebCore::CanvasBase::setSize):
(WebCore::CanvasBase::hasCreatedImageBuffer const):
(WebCore::CanvasBase::createImageBuffer const):
* html/CustomPaintCanvas.cpp:
(WebCore::CustomPaintCanvas::CustomPaintCanvas):
(WebCore::CustomPaintCanvas::~CustomPaintCanvas):
* html/CustomPaintCanvas.h:
* html/HTMLCanvasElement.cpp:
(WebCore::HTMLCanvasElement::HTMLCanvasElement):
(WebCore::HTMLCanvasElement::~HTMLCanvasElement):
(WebCore::HTMLCanvasElement::setSize):
(WebCore::HTMLCanvasElement::createContext2d):
(WebCore::HTMLCanvasElement::reset):
(WebCore::HTMLCanvasElement::setSurfaceSize):
(WebCore::HTMLCanvasElement::toDataURL):
(WebCore::HTMLCanvasElement::toBlob):
(WebCore::HTMLCanvasElement::createImageBuffer const):
(WebCore::HTMLCanvasElement::setImageBufferAndMarkDirty):
* html/HTMLCanvasElement.h:
* html/OffscreenCanvas.cpp:
(WebCore::OffscreenCanvas::OffscreenCanvas):
(WebCore::OffscreenCanvas::~OffscreenCanvas):
(WebCore::OffscreenCanvas::setWidth):
(WebCore::OffscreenCanvas::setHeight):
(WebCore::OffscreenCanvas::transferToImageBitmap):
(WebCore::OffscreenCanvas::createImageBuffer const):
* html/OffscreenCanvas.h:

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

6 months agoWeb Inspector: Debugger: make sure the blackbox config is removed before iterating...
drousso@apple.com [Thu, 31 Oct 2019 20:22:26 +0000 (20:22 +0000)]
Web Inspector: Debugger: make sure the blackbox config is removed before iterating all existing scripts
https://bugs.webkit.org/show_bug.cgi?id=203666

Reviewed by Matt Baker.

* inspector/agents/InspectorDebuggerAgent.h:
* inspector/agents/InspectorDebuggerAgent.cpp:
(Inspector::InspectorDebuggerAgent::setShouldBlackboxURL):

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

6 months agoWeb Inspector: DOMDebugger: Node Removed breakpoints should fire whenever the node...
drousso@apple.com [Thu, 31 Oct 2019 20:20:43 +0000 (20:20 +0000)]
Web Inspector: DOMDebugger: Node Removed breakpoints should fire whenever the node is removed from the main DOM tree, not just when it's removed from it's parent
https://bugs.webkit.org/show_bug.cgi?id=203349

Reviewed by Matt Baker.

Source/WebCore:

Test: inspector/dom-debugger/dom-breakpoints.html

Replace `targetNode` (which was a `Runtime.RemoteObject`) with a `targetNodeId` (which is a
`DOM.NodeId`) when dispatching `DOMDebugger` pauses. Additionally, include the ancestor's
`DOM.NodeId` as the `targetNodeId` whenever an ancestor is removed that has a descendant
with a node removed DOM breakpoint.

* inspector/agents/page/PageDOMDebuggerAgent.h:
* inspector/agents/page/PageDOMDebuggerAgent.cpp:
(WebCore::PageDOMDebuggerAgent::willRemoveDOMNode):
(WebCore::PageDOMDebuggerAgent::descriptionForDOMEvent):

* inspector/agents/InspectorDOMAgent.h:
* inspector/agents/InspectorDOMAgent.cpp:
(WebCore::InspectorDOMAgent::pushNodeToFrontend): Added.

Source/WebInspectorUI:

Replace `targetNode` (which was a `Runtime.RemoteObject`) with a `targetNodeId` (which is a
`DOM.NodeId`) when dispatching `DOMDebugger` pauses. Additionally, include the ancestor's
`DOM.NodeId` as the `targetNodeId` whenever an ancestor is removed that has a descendant
with a node removed DOM breakpoint.

* UserInterface/Views/SourcesNavigationSidebarPanel.js:
(WI.SourcesNavigationSidebarPanel.prototype._updatePauseReasonSection):

* Localizations/en.lproj/localizedStrings.js:

LayoutTests:

* inspector/dom-debugger/dom-breakpoints.html:
* inspector/dom-debugger/dom-breakpoints-expected.txt:

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

6 months agoRename AccessibilityObject::matchedParent as Accessibility::findAncestor and re-imple...
andresg_22@apple.com [Thu, 31 Oct 2019 19:59:21 +0000 (19:59 +0000)]
Rename AccessibilityObject::matchedParent as Accessibility::findAncestor and re-implement in a generic way so that can be used with both AccessibilityObjects and AXIsolatedTreeNodes.
https://bugs.webkit.org/show_bug.cgi?id=203654

Reviewed by Chris Fleizach.

No new tests necessary since this does not change functionality.

- Deleted AccessibilityObject::matchedParent and replaced with Accessibility::findAncestor.
- Accessibility::findAncestor is a template function that can be used with both AccessibilityObjects and AXIsolatedTreeNodes.
- Created the namespace Accessibility for implementation details that need not to be exposed to client code.
* accessibility/AccessibilityNodeObject.cpp:
(WebCore::AccessibilityNodeObject::helpText const):
(WebCore::AccessibilityNodeObject::textUnderElement const):
* accessibility/AccessibilityObject.cpp:
(WebCore::AccessibilityObject::parentObjectUnignored const):
(WebCore::AccessibilityObject::isDescendantOfRole const):
(WebCore::AccessibilityObject::ancestorAccessibilityScrollView const):
(WebCore::AccessibilityObject::headingElementForNode):
(WebCore::AccessibilityObject::isDescendantOfObject const):
(WebCore::AccessibilityObject::liveRegionAncestor const):
(WebCore::AccessibilityObject::isExpanded const):
(WebCore::AccessibilityObject::isAXHidden const):
(WebCore::AccessibilityObject::focusableAncestor):
(WebCore::AccessibilityObject::editableAncestor):
(WebCore::AccessibilityObject::radioGroupAncestor const):
(WebCore::AccessibilityObject::matchedParent): Deleted.
* accessibility/AccessibilityObject.h:
* accessibility/AccessibilityObjectInterface.h:
(WebCore::Accessibility::findAncestor):
* accessibility/AccessibilityRenderObject.cpp:
(WebCore::AccessibilityRenderObject::hasPopup const):
* accessibility/AccessibilitySVGElement.cpp:
(WebCore::AccessibilitySVGElement::computeAccessibilityIsIgnored const):
* accessibility/ios/WebAccessibilityObjectWrapperIOS.mm:
(-[WebAccessibilityObjectWrapper _accessibilityTreeAncestor]):
(-[WebAccessibilityObjectWrapper _accessibilityListAncestor]):
(-[WebAccessibilityObjectWrapper _accessibilityArticleAncestor]):
(-[WebAccessibilityObjectWrapper _accessibilityLandmarkAncestor]):
(-[WebAccessibilityObjectWrapper _accessibilityTableAncestor]):
(-[WebAccessibilityObjectWrapper _accessibilityIsInTableCell]):
(-[WebAccessibilityObjectWrapper _accessibilityFieldsetAncestor]):
(-[WebAccessibilityObjectWrapper _accessibilityFrameAncestor]):
(-[WebAccessibilityObjectWrapper tableCellParent]):
(-[WebAccessibilityObjectWrapper tableParent]):
(-[WebAccessibilityObjectWrapper accessibilityDatetimeValue]):
(-[WebAccessibilityObjectWrapper detailParentForSummaryObject:]):
(-[WebAccessibilityObjectWrapper detailParentForObject:]):
(-[WebAccessibilityObjectWrapper treeItemParentForObject:]):
(AXAttributeStringSetStyle):

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

6 months ago[ews-build] Display pre-existing API test names in the build summary
aakash_jain@apple.com [Thu, 31 Oct 2019 19:56:34 +0000 (19:56 +0000)]
[ews-build] Display pre-existing API test names in the build summary
https://bugs.webkit.org/show_bug.cgi?id=199525

Reviewed by Jonathan Bedard.

* BuildSlaveSupport/ews-build/steps.py:
(AnalyzeAPITestsResults.analyzeResults): Include the names of pre-existing test failures in summary string and
limit the number of failures to display to NUM_API_FAILURES_TO_DISPLAY.

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

6 months agoUnreviewed, rolling out r251854.
tsavell@apple.com [Thu, 31 Oct 2019 19:29:51 +0000 (19:29 +0000)]
Unreviewed, rolling out r251854.

Broke iOS build

Reverted changeset:

"Rejigger WKWebArchive headers."
https://bugs.webkit.org/show_bug.cgi?id=203648
https://trac.webkit.org/changeset/251854

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

6 months agoIntegrate resize event with HTML5 event loop
rniwa@webkit.org [Thu, 31 Oct 2019 19:26:10 +0000 (19:26 +0000)]
Integrate resize event with HTML5 event loop
https://bugs.webkit.org/show_bug.cgi?id=202964

Reviewed by Geoffrey Garen and Simon Fraser.

Source/WebCore:

Dispatch resize events in "run the resize steps" during the "update the rendering":
https://html.spec.whatwg.org/multipage/webappapis.html#update-the-rendering

Existing code in WebCore which was dispatching or scheduling dispatching of resize events now simply sets
a flag on document and schedules a rendering update. In Page::updateRendering, we fire resize events on
any documents with this flag set.

Test: fast/events/resize-subframe-in-rendering-update.html

* css/CSSFontSelector.cpp:
(WebCore::CSSFontSelector::beginLoadTimerFired): Fixed the flakiness in SVG animation tests observed
after this patch was landed previously. The issue was that this code was calling FrameLoader's
checkLoadComplete before checkCompleted. checkCompleted starts SVG animations in Document::implicitClose
whereas checkLoadComplete can cause DumpRenderTree to end the test. As a result, depending on when this
function was called relative to other work being done in the main thread, DumpRenderTree could prematurely
end and dump the test result even though SVG animation would have immediately started in either scenario.
Unfortunately I couldn't come up with a new deterministic test for this issue since the exact condition
under which this problem comes up seems quite racy (which makes sense given this only manifested as flaky
failures in existing tests).
* dom/Document.cpp:
(WebCore::Document::setNeedsDOMWindowResizeEvent): Added.
(WebCore::Document::setNeedsVisualViewportResize): Added.
(WebCore::Document::runResizeSteps): Added. https://drafts.csswg.org/cssom-view/#run-the-resize-steps
* dom/Document.h:
* page/FrameView.cpp:
(WebCore::FrameView::sendResizeEventIfNeeded): Now sets m_needsDOMWindowResizeEvent on Document instead of
enqueuing a resize event.
* page/Page.cpp:
(WebCore::Page::updateRendering): Call runResizeSteps on each document.
(WebCore::Page::collectDocuments): Added.
* page/Page.h:
* page/VisualViewport.cpp:
(WebCore::VisualViewport::enqueueResizeEvent):

LayoutTests:

Added a regression test and fixed an existing test to work with the new behavior.

* fast/events/resize-subframe-in-rendering-update-expected.txt: Added.
* fast/events/resize-subframe-in-rendering-update.html: Added.
* fast/shadow-dom/trusted-event-scoped-flags.html:

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

6 months agoUnreviewed build fix; move PictureInPictureSupport.h include outside HAVE(AVKIT)...
jer.noble@apple.com [Thu, 31 Oct 2019 19:23:24 +0000 (19:23 +0000)]
Unreviewed build fix; move PictureInPictureSupport.h include outside HAVE(AVKIT) check.

* platform/ios/VideoFullscreenInterfaceAVKit.mm:

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

6 months agoUpdate results for fast/css/hsl-color.html on win
tsavell@apple.com [Thu, 31 Oct 2019 19:19:57 +0000 (19:19 +0000)]
Update results for fast/css/hsl-color.html on win
https://bugs.webkit.org/show_bug.cgi?id=203592

Unreviewed test gardening

* platform/win/fast/css/hsl-color-expected.txt:

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

6 months agoIntroduce Style::Builder
antti@apple.com [Thu, 31 Oct 2019 18:55:34 +0000 (18:55 +0000)]
Introduce Style::Builder
https://bugs.webkit.org/show_bug.cgi?id=203682

Reviewed by Zalan Bujtas.

Encapsulate the style building step into a new Builder class. It owns the cascade and the style building state.

Move tha applying code from StyleResolver and PropertyCascade there.
Move a bunch of font related state from StyleResolver::State to BuilderState.

* DerivedSources-output.xcfilelist:
* Sources.txt:
* WebCore.xcodeproj/project.pbxproj:
* css/CSSVariableReferenceValue.cpp:
(WebCore::resolveVariableReference):
* css/DOMCSSRegisterCustomProperty.cpp:
(WebCore::DOMCSSRegisterCustomProperty::registerProperty):
* css/StyleResolver.cpp:
(WebCore::StyleResolver::styleForKeyframe):
(WebCore::StyleResolver::styleForPage):
(WebCore::StyleResolver::applyMatchedProperties):
(WebCore::StyleResolver::applyPropertyToCurrentStyle):
(WebCore::StyleResolver::initializeFontStyle):
(WebCore::StyleResolver::adjustStyleForInterCharacterRuby): Deleted.
(WebCore::checkForOrientationChange): Deleted.
(WebCore::StyleResolver::updateFont): Deleted.
(WebCore::StyleResolver::useSVGZoomRules const): Deleted.
(WebCore::StyleResolver::useSVGZoomRulesForLength const): Deleted.
(WebCore::StyleResolver::checkForTextSizeAdjust): Deleted.
(WebCore::StyleResolver::checkForZoomChange): Deleted.
(WebCore::StyleResolver::checkForGenericFamilyChange): Deleted.
(WebCore::StyleResolver::setFontSize): Deleted.
* css/StyleResolver.h:
(WebCore::StyleResolver::State::setFontSizeHasViewportUnits): Deleted.
(WebCore::StyleResolver::State::fontSizeHasViewportUnits const): Deleted.
(WebCore::StyleResolver::State::useSVGZoomRules const): Deleted.
* css/parser/CSSParser.cpp:
(WebCore::CSSParser::parseValueWithVariableReferences):
* css/parser/CSSPropertyParser.cpp:
* style/PropertyCascade.cpp:
(WebCore::Style::PropertyCascade::PropertyCascade):
(WebCore::Style::PropertyCascade::set):
(WebCore::Style::PropertyCascade::propertyCascadeForRollback const):
(WebCore::Style::PropertyCascade::resolveDirectionAndWritingMode const):
(WebCore::Style::PropertyCascade::applyDeferredProperties): Deleted.
(WebCore::Style::PropertyCascade::applyProperties): Deleted.
(WebCore::Style::PropertyCascade::applyPropertiesImpl): Deleted.
(WebCore::Style::PropertyCascade::applyCustomProperties): Deleted.
(WebCore::Style::PropertyCascade::applyCustomProperty): Deleted.
(WebCore::Style::PropertyCascade::propertyCascadeForRollback): Deleted.
(WebCore::Style::PropertyCascade::applyProperty): Deleted.
(WebCore::Style::PropertyCascade::resolveValue): Deleted.
(WebCore::Style::PropertyCascade::resolvedVariableValue): Deleted.
(WebCore::Style::PropertyCascade::resolveDirectionAndWritingMode): Deleted.
* style/PropertyCascade.h:
(WebCore::Style::PropertyCascade::deferredProperties const):
(WebCore::Style::PropertyCascade::customProperties const):
(WebCore::Style::PropertyCascade::direction const):
(WebCore::Style::PropertyCascade::builderState): Deleted.
* style/StyleBuilder.cpp: Added.
(WebCore::Style::directionFromStyle):
(WebCore::Style::Builder::Builder):
(WebCore::Style::Builder::applyAllProperties):
(WebCore::Style::Builder::applyHighPriorityProperties):
(WebCore::Style::Builder::applyLowPriorityProperties):
(WebCore::Style::Builder::applyPropertyValue):
(WebCore::Style::Builder::applyDeferredProperties):
(WebCore::Style::Builder::applyProperties):
(WebCore::Style::Builder::applyPropertiesImpl):
(WebCore::Style::Builder::applyCustomProperties):
(WebCore::Style::Builder::applyCustomProperty):
(WebCore::Style::Builder::applyCascadeProperty):
(WebCore::Style::Builder::applyProperty):
(WebCore::Style::Builder::resolveValue):
(WebCore::Style::Builder::resolvedVariableValue):
* style/StyleBuilder.h: Added.
(WebCore::Style::Builder::applyProperty):
(WebCore::Style::Builder::state):
* style/StyleBuilderCustom.h:
(WebCore::Style::BuilderCustom::applyValueFontSize):
* style/StyleBuilderState.cpp:
(WebCore::Style::BuilderState::BuilderState):
(WebCore::Style::BuilderState::useSVGZoomRules const):
(WebCore::Style::BuilderState::useSVGZoomRulesForLength const):
(WebCore::Style::BuilderState::adjustStyleForInterCharacterRuby):
(WebCore::Style::BuilderState::updateFont):
(WebCore::Style::BuilderState::updateFontForTextSizeAdjust):
(WebCore::Style::BuilderState::updateFontForZoomChange):
(WebCore::Style::BuilderState::updateFontForGenericFamilyChange):
(WebCore::Style::BuilderState::updateFontForOrientationChange):
(WebCore::Style::BuilderState::setFontSize):
* style/StyleBuilderState.h:
(WebCore::Style::BuilderState::builder):
(WebCore::Style::BuilderState::setFontDirty):
(WebCore::Style::BuilderState::cascade): Deleted.
(WebCore::Style::BuilderState::clearFontDirty): Deleted.

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

6 months agoRemove unneeded HAVE_TIMINGDATAOPTIONS
achristensen@apple.com [Thu, 31 Oct 2019 17:54:01 +0000 (17:54 +0000)]
Remove unneeded HAVE_TIMINGDATAOPTIONS
https://bugs.webkit.org/show_bug.cgi?id=202990

Reviewed by Brady Eidson.

Source/WebCore:

This macro allowed us to adopt CFNetwork SPI, but now that the SPI is available everywhere we support, we don't need it.

* platform/network/NetworkLoadMetrics.h:
* platform/network/cocoa/NetworkLoadMetrics.mm:
(WebCore::copyTimingData):
(WebCore::setCollectsTimingData): Deleted.
* platform/network/mac/ResourceHandleMac.mm:
(WebCore::ResourceHandle::createNSURLConnection):

Source/WebKit:

* NetworkProcess/cocoa/NetworkSessionCocoa.mm:
(WebKit::NetworkSessionCocoa::NetworkSessionCocoa):

Source/WTF:

* wtf/Platform.h:

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

6 months agoUse SecurityOriginData in NetworkProcess where possible without other changes
achristensen@apple.com [Thu, 31 Oct 2019 17:52:49 +0000 (17:52 +0000)]
Use SecurityOriginData in NetworkProcess where possible without other changes
https://bugs.webkit.org/show_bug.cgi?id=203615

Reviewed by Brady Eidson.

Source/WebCore:

* page/SecurityOrigin.cpp:
(WebCore::SecurityOrigin::SecurityOrigin):
(WebCore::SecurityOrigin::isolatedCopy const):
* page/SecurityOrigin.h:
* page/SecurityOriginData.h:
(WebCore::SecurityOriginData::encode const):
* page/csp/ContentSecurityPolicy.cpp:
(WebCore::ContentSecurityPolicy::allowFrameAncestors const):
* page/csp/ContentSecurityPolicy.h:
* page/csp/ContentSecurityPolicyDirectiveList.cpp:
(WebCore::urlFromOrigin):
(WebCore::checkFrameAncestors):
(WebCore::ContentSecurityPolicyDirectiveList::violatedDirectiveForFrameAncestorOrigins const):
* page/csp/ContentSecurityPolicyDirectiveList.h:

Source/WebKit:

* NetworkProcess/NetworkResourceLoadParameters.cpp:
(WebKit::NetworkResourceLoadParameters::encode const):
* NetworkProcess/NetworkResourceLoadParameters.h:
* NetworkProcess/NetworkResourceLoader.cpp:
(WebKit::NetworkResourceLoader::shouldInterruptLoadForXFrameOptions):
* WebProcess/Network/WebLoaderStrategy.cpp:
(WebKit::WebLoaderStrategy::scheduleLoadFromNetworkProcess):

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

6 months agoExpose more WKPreferences SPI
achristensen@apple.com [Thu, 31 Oct 2019 17:49:54 +0000 (17:49 +0000)]
Expose more WKPreferences SPI
https://bugs.webkit.org/show_bug.cgi?id=203631
<rdar://problem/56717160>

Reviewed by Brady Eidson.

Source/WebKit:

I added a unit test for the one that can be easily tested.

* UIProcess/API/Cocoa/WKPreferences.mm:
(-[WKPreferences _setWebAudioEnabled:]):
(-[WKPreferences _webAudioEnabled]):
(-[WKPreferences _setAcceleratedCompositingEnabled:]):
(-[WKPreferences _acceleratedCompositingEnabled]):
(-[WKPreferences _setRequestAnimationFrameEnabled:]):
(-[WKPreferences _requestAnimationFrameEnabled]):
* UIProcess/API/Cocoa/WKPreferencesPrivate.h:

Tools:

* TestWebKitAPI/Tests/WebKitCocoa/Preferences.mm:
(TEST):

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

6 months ago[iOS] imported/mozilla/svg/text/textpath-selection.svg is still flaky
wenson_hsieh@apple.com [Thu, 31 Oct 2019 17:39:51 +0000 (17:39 +0000)]
[iOS] imported/mozilla/svg/text/textpath-selection.svg is still flaky
https://bugs.webkit.org/show_bug.cgi?id=203659
<rdar://problem/52124292>

Reviewed by Tim Horton.

This test still fails in some internal test runner configurations, because the iOS text selection grabber dots
sometimes show up in the actual result and not in the expectation. This still happens even after suppressing
UITextSelectionView during ref test snapshotting in r251526, since the selection grabber dots are embedded as
subviews of the text interaction container view, rather than UITextSelectionView itself, so hiding
UITextSelectionView does not affect the visibility of these grabber views (UITextRangeView's -startGrabber and
-endGrabber).

To address this, we augment the change made in r251526 to apply to the start and end grabber views as well.

* WebKitTestRunner/ios/PlatformWebViewIOS.mm:
(WTR::PlatformWebView::windowSnapshotImage):

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

6 months ago[LFC][IFC] Add expansion context to Line::Run
zalan@apple.com [Thu, 31 Oct 2019 17:37:56 +0000 (17:37 +0000)]
[LFC][IFC] Add expansion context to Line::Run
https://bugs.webkit.org/show_bug.cgi?id=203683
<rdar://problem/56785012>

Reviewed by Antti Koivisto.

This is in preparation for adding text-align: justify support.
The temporary Line::Run holds the number of expansion opportunities, while Display::Run holds both the expansion behavior and
the final expansion width.
The number of opportunities is used to compute the final expansion width for each run.

* layout/displaytree/DisplayPainter.cpp:
(WebCore::Display::paintInlineContent):
* layout/displaytree/DisplayRun.h:
(WebCore::Display::Run::TextContext::TextContext):
(WebCore::Display::Run::TextContext::setExpansion):
(WebCore::Display::Run::TextContext::expansion const):
(WebCore::Display::Run::TextContext::expansionBehavior const): Deleted.
* layout/inlineformatting/InlineLine.h:
(WebCore::Layout::Line::Run::hasExpansionOpportunity const):
(WebCore::Layout::Line::Run::expansionOpportunityCount const):
(WebCore::Layout::Line::Run::expansionBehavior const):
(WebCore::Layout::Line::Run::setHasExpansionOpportunity):
(WebCore::Layout::Line::Run::setComputedHorizontalExpansion):

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

6 months ago[GTK] Web Inspector: inspector/timeline/timeline-event-*.html are failing
yurys@chromium.org [Thu, 31 Oct 2019 17:35:06 +0000 (17:35 +0000)]
[GTK] Web Inspector: inspector/timeline/timeline-event-*.html are failing
https://bugs.webkit.org/show_bug.cgi?id=203625

Reviewed by Devin Rousso.

Unflake inspector/timeline/timeline-event-*.html tests on GTK.

* inspector/timeline/resources/timeline-event-utilities.js: There is a race between CapturingState.Inactive
and SavePageData events, so the test has to wait for both.
Drive-by: wrap promis.reject in a lambda, otherwise reject would be called on an undefined 'this' object.
arrive before resolving the promise.
(TestPage.registerInitializer):
* platform/gtk/TestExpectations:

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

6 months agoCMake build should make WebKit framework able to be used by Safari
achristensen@apple.com [Thu, 31 Oct 2019 17:33:30 +0000 (17:33 +0000)]
CMake build should make WebKit framework able to be used by Safari
https://bugs.webkit.org/show_bug.cgi?id=203685

Rubber-stamped by Tim Horton.

.:

* Source/cmake/OptionsMac.cmake:

Source/JavaScriptCore:

* PlatformMac.cmake:

Source/WebKit:

* PlatformMac.cmake:

Source/WebKitLegacy:

* PlatformMac.cmake:

Tools:

* DumpRenderTree/PlatformMac.cmake:

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

6 months agoRejigger WKWebArchive headers.
beidson@apple.com [Thu, 31 Oct 2019 17:22:17 +0000 (17:22 +0000)]
Rejigger WKWebArchive headers.
https://bugs.webkit.org/show_bug.cgi?id=203648

Reviewed by Andy Estes.

* Shared/API/c/mac/WKWebArchiveRef.cpp: Renamed from Source/WebKit/Shared/API/c/mac/WKWebArchive.cpp.
(WKWebArchiveGetTypeID):
(WKWebArchiveCreate):
(WKWebArchiveCreateWithData):
(WKWebArchiveCreateFromRange):
(WKWebArchiveCopyMainResource):
(WKWebArchiveCopySubresources):
(WKWebArchiveCopySubframeArchives):
(WKWebArchiveCopyData):
* Shared/API/c/mac/WKWebArchiveRef.h: Copied from Source/WebKit/Shared/API/c/mac/WKWebArchive.h.
* SourcesCocoa.txt:
* UIProcess/API/Cocoa/WKWebArchive.h: Renamed from Source/WebKit/Shared/API/c/mac/WKWebArchive.h.
* WebKit.xcodeproj/project.pbxproj:

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

6 months agoWeb Inspector: CONSOLE ERROR Shown panel style-rules must be visible
yurys@chromium.org [Thu, 31 Oct 2019 17:18:18 +0000 (17:18 +0000)]
Web Inspector: CONSOLE ERROR Shown panel style-rules must be visible
https://bugs.webkit.org/show_bug.cgi?id=203377

Reviewed by Devin Rousso.

Fix assertion failure when opening elements panel with hidden details sidebar.

* UserInterface/Views/ContentBrowserTabContentView.js:
(WI.ContentBrowserTabContentView.prototype.showDetailsSidebarPanels):
* UserInterface/Views/Sidebar.js:
(WI.Sidebar.prototype.set selectedSidebarPanel): Only call shown() if the Sidebar
is not collapsed. It will anyway be called when the Sidebar is expanded.

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

6 months ago[JSC] DateMath should have TimeClipped version
ysuzuki@apple.com [Thu, 31 Oct 2019 16:14:03 +0000 (16:14 +0000)]
[JSC] DateMath should have TimeClipped version
https://bugs.webkit.org/show_bug.cgi?id=203550

Reviewed by Saam Barati.

Source/JavaScriptCore:

Removing `using namespace WTF;` in Date related files in JSC.

* runtime/DateConstructor.cpp:
* runtime/DateConversion.cpp:
(JSC::formatDateTime):
* runtime/DateInstance.cpp:
* runtime/DatePrototype.cpp:
* runtime/JSDateMath.cpp:
(JSC::localTimeOffset):
(JSC::timeToMS):
(JSC::gregorianDateTimeToMS):
(JSC::msToGregorianDateTime):
(JSC::parseDate):
(JSC::msToSeconds): Deleted.
(JSC::msToWeekDay): Deleted.

Source/WTF:

We found that our Date constructor is slow because GregorianDateTime calculation takes so long.
We are doing many `fmod`, floating division, `floor` etc. These operations, in particular `fmod`, takes
very long time. As a result, 30% of JetStream2/date-format-xparb is taken by `fmod` function.

But since we are performance timeClip operation, double value in DateInstance is always Int52. We should
have integer version of GregorianDateTime calculation which avoids many unnecessary fmod etc.

While integer division is truncate-to-zero, many Date calculation requires `floor(value / xxx)`. For now,
we use integer fast path only when the value is Int52 and positive.

We see 10~ % improvement in JetStream2/date-format-xparb-SP (from 201 to 239).

* wtf/DateMath.cpp:
(WTF::isLeapYear): Deleted.
(WTF::daysInYear): Deleted.
(WTF::daysFrom1970ToYear): Deleted.
(WTF::msToDays): Deleted.
(WTF::msToYear): Deleted.
(WTF::dayInYear): Deleted.
(WTF::msToMinutes): Deleted.
(WTF::msToHours): Deleted.
(WTF::monthFromDayInYear): Deleted.
(WTF::checkMonth): Deleted.
(WTF::dayInMonthFromDayInYear): Deleted.
(WTF::dateToDaysFrom1970): Deleted.
(WTF::timeClip): Deleted.
* wtf/DateMath.h:
(WTF::TimeClippedPositiveMilliseconds::TimeClippedPositiveMilliseconds):
(WTF::TimeClippedPositiveMilliseconds::value const):
(WTF::TimeClippedPositiveMilliseconds::asDouble const):
(WTF::timeClip):
(WTF::daysFrom1970ToYear):
(WTF::daysFrom1970ToYearTimeClippedPositive):
(WTF::isLeapYear):
(WTF::daysInYear):
(WTF::msToDays):
(WTF::dayInYear):
(WTF::dateToDaysFrom1970):
(WTF::msToYear):
(WTF::msToMinutes):
(WTF::msToHours):
(WTF::msToSeconds):
(WTF::msToWeekDay):
(WTF::monthFromDayInYear):
(WTF::dayInMonthFromDayInYear):
* wtf/GregorianDateTime.cpp:
(WTF::GregorianDateTime::GregorianDateTime):
* wtf/GregorianDateTime.h:

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

6 months ago[LFC][IFC] Line::Run should not hold a reference to InlineItem
zalan@apple.com [Thu, 31 Oct 2019 16:01:25 +0000 (16:01 +0000)]
[LFC][IFC] Line::Run should not hold a reference to InlineItem
https://bugs.webkit.org/show_bug.cgi?id=203660
<rdar://problem/56770286>

Reviewed by Antti Koivisto.

When Line::Runs are merged ([content][   ] -> [content ]) they end up with multiple InlineItems. Let's cache some values from
the InlineItems instead.

* layout/inlineformatting/InlineLine.cpp:
(WebCore::Layout::Line::Run::Run):
(WebCore::Layout::Line::close):
* layout/inlineformatting/InlineLine.h:
(WebCore::Layout::Line::Run::layoutBox const):
(WebCore::Layout::Line::Run::isText const):
(WebCore::Layout::Line::Run::isBox const):
(WebCore::Layout::Line::Run::isForcedLineBreak const):
(WebCore::Layout::Line::Run::isContainerStart const):
(WebCore::Layout::Line::Run::isContainerEnd const):
(WebCore::Layout::Line::Run::isCollapsible const):
(WebCore::Layout::Line::Run::isWhitespace const):
(WebCore::Layout::Line::Run::expand):

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

6 months agoUnreviewed, update DerivedSources-output.xcfilelist after r251841
wenson_hsieh@apple.com [Thu, 31 Oct 2019 15:44:21 +0000 (15:44 +0000)]
Unreviewed, update DerivedSources-output.xcfilelist after r251841

* DerivedSources-output.xcfilelist: Replace StyleBuilder.cpp with StyleBuilderGenerated.cpp.

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

6 months ago[EWS] Limit API tests failures to display in the status-bubble tooltip and buildbot...
aakash_jain@apple.com [Thu, 31 Oct 2019 15:42:49 +0000 (15:42 +0000)]
[EWS] Limit API tests failures to display in the status-bubble tooltip and buildbot summary
https://bugs.webkit.org/show_bug.cgi?id=203678

Reviewed by Jonathan Bedard.

* BuildSlaveSupport/ews-build/steps.py:
(AnalyzeAPITestsResults): Define NUM_API_FAILURES_TO_DISPLAY as 10.
(AnalyzeAPITestsResults.analyzeResults): Truncate the failure string to contain 10 test failures.

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

6 months ago[LFC][IFC] Do not merge completely collapsed run with the previous run
zalan@apple.com [Thu, 31 Oct 2019 15:40:10 +0000 (15:40 +0000)]
[LFC][IFC] Do not merge completely collapsed run with the previous run
https://bugs.webkit.org/show_bug.cgi?id=203658
<rdar://problem/56769334>

Reviewed by Antti Koivisto.

When a whitespace run is completely collapsed (and visually empty), we should not try to merge it with previous text runs.
E.g. [before  \nafter] -> [before][  ][\n][after] -> [before ][][after] -> [before ][after]
        ^content               ^inline items             ^line runs          ^display runs

* layout/inlineformatting/InlineLine.cpp:
(WebCore::Layout::Line::close):
* layout/inlineformatting/InlineLine.h:
(WebCore::Layout::Line::Run::hasTrailingCollapsedContent const):
(WebCore::Layout::Line::Run::canBeExtended const): Deleted.

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

6 months agoAdd telemetry to test a potential cause of crashes under -[WKContentView _interpretKe...
wenson_hsieh@apple.com [Thu, 31 Oct 2019 15:23:10 +0000 (15:23 +0000)]
Add telemetry to test a potential cause of crashes under -[WKContentView _interpretKeyEvent:isCharEvent:]
https://bugs.webkit.org/show_bug.cgi?id=203630
<rdar://problem/56769229>

Reviewed by Simon Fraser.

This iOS-specific crash occurs under `-_interpretKeyEvent:isCharEvent:`, when we first try to access WebEvent's
properties with `event.keyboardFlags`. This suggests that between storing the WebEvent in WebPageProxy's
m_keyEventQueue, and later receiving an InterpretKeyEvent sync IPC message in the UI process, something ends up
overreleasing (or otherwise writing over or corrupting) the WebEvent.

However, from code inspection, nothing appears to overrelease the WebEvent; an alternate possibility is that the
API is somehow being invoked from a background thread, which would explain why the WebEvent may sometimes get
destroyed too early.

To try and detect this scenario (and avoid keeping any strong references to WebEvent at all), add an
`os_log_fault` in case the API is being called on a background thread, and bail immediately.

* UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView handleKeyWebEvent:withCompletionHandler:]):

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

6 months ago[LFC][IFC] Set setIsCollapsed on the line item when its content is actually collapsed
zalan@apple.com [Thu, 31 Oct 2019 15:16:42 +0000 (15:16 +0000)]
[LFC][IFC] Set setIsCollapsed on the line item when its content is actually collapsed
https://bugs.webkit.org/show_bug.cgi?id=203655
<rdar://problem/56767543>

Reviewed by Antti Koivisto.

Do not set the isCollapsed flag on the line run unless we actually collapsed it (changed its length from greated than 1 to 1).

* layout/inlineformatting/InlineLine.cpp:
(WebCore::Layout::Line::appendTextContent):

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

6 months ago[LFC][IFC] Line::appendTextContent::willCollapseCompletely should check for isCollaps...
zalan@apple.com [Thu, 31 Oct 2019 15:07:16 +0000 (15:07 +0000)]
[LFC][IFC] Line::appendTextContent::willCollapseCompletely should check for isCollapsible()
https://bugs.webkit.org/show_bug.cgi?id=203653
<rdar://problem/56766949>

Reviewed by Antti Koivisto.

When deciding whether the current collapsible whitespace run collapses completely, we need to check whether the previous
run is collapsible and not whether it is collapsed (it addresses the cases when the previous whitespace length is 1, so it is collapsible but not
collapsed -> " " followed by '\n' <- no preserved segment break.)

* layout/inlineformatting/InlineLine.cpp:
(WebCore::Layout::Line::appendTextContent):

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

6 months ago[LFC][IFC] Add justify expansion information to Display::Runs
zalan@apple.com [Thu, 31 Oct 2019 14:52:05 +0000 (14:52 +0000)]
[LFC][IFC] Add justify expansion information to Display::Runs
https://bugs.webkit.org/show_bug.cgi?id=203535
<rdar://problem/56689268>

Reviewed by Antti Koivisto.

This is in preparation for supporting text-align: justify.

* layout/displaytree/DisplayPainter.cpp:
(WebCore::Display::paintInlineContent):
* layout/displaytree/DisplayRun.h:
(WebCore::Display::Run::TextContext::TextContext):
(WebCore::Display::Run::TextContext::expansionBehavior const):
(WebCore::Display::Run::TextContext::expansion const):

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

6 months ago[LFC][IFC] Preserved segment breaks should produce ForcedLineBreak type of InlineItems
zalan@apple.com [Thu, 31 Oct 2019 14:51:34 +0000 (14:51 +0000)]
[LFC][IFC] Preserved segment breaks should produce ForcedLineBreak type of InlineItems
https://bugs.webkit.org/show_bug.cgi?id=203645
<rdar://problem/56763606>

Reviewed by Antti Koivisto.

This patch turns preserved segment breaks (e.g. \n) into a ForcedLineBreak. Non-preserved segments breaks are treated as whitespace characters.
It fixes a small type mismatch of having an InlineTextItem representing a non-text content (line break).

* layout/inlineformatting/InlineFormattingContext.cpp:
(WebCore::Layout::InlineFormattingContext::collectInlineContent):
* layout/inlineformatting/InlineItem.cpp:
(WebCore::Layout::InlineItem::InlineItem):
(WebCore::Layout::InlineItem::isForcedLineBreak const): Deleted.
(WebCore::Layout::InlineItem::isText const): Deleted.
* layout/inlineformatting/InlineItem.h:
(WebCore::Layout::InlineItem::isText const):
(WebCore::Layout::InlineItem::isForcedLineBreak const):
(WebCore::Layout::InlineItem::InlineItem): Deleted.
* layout/inlineformatting/InlineTextItem.cpp:
(WebCore::Layout::InlineTextItem::createAndAppendTextItems):
(WebCore::Layout::InlineTextItem::left const):
(WebCore::Layout::InlineTextItem::right const):
(WebCore::Layout::InlineTextItem::isWhitespace const): Deleted.
* layout/inlineformatting/InlineTextItem.h:
(WebCore::Layout::InlineTextItem::isWhitespace const):

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

6 months agoUnreviewed GTK and WPE gardening after r251837.
magomez@igalia.com [Thu, 31 Oct 2019 14:39:30 +0000 (14:39 +0000)]
Unreviewed GTK and WPE gardening after r251837.

* platform/gtk/TestExpectations:
* platform/wpe/TestExpectations:
* platform/wpe/imported/w3c/web-platform-tests/svg/geometry/parsing/height-computed-expected.txt: Added.
* platform/wpe/imported/w3c/web-platform-tests/svg/geometry/parsing/width-computed-expected.txt: Added.
* platform/wpe/imported/w3c/web-platform-tests/svg/shapes/scripted/disabled-shapes-not-hit-expected.txt: Added.
* platform/wpe/webgl/2.0.0/conformance/extensions/oes-texture-half-float-expected.txt:
* platform/wpe/webgl/2.0.0/conformance2/extensions/ext-color-buffer-float-expected.txt:
* platform/wpe/webgl/2.0.0/conformance2/textures/misc/tex-new-formats-expected.txt:

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

6 months agoRename StyleBuilder to Style::BuilderGenerated
antti@apple.com [Thu, 31 Oct 2019 14:28:27 +0000 (14:28 +0000)]
Rename StyleBuilder to Style::BuilderGenerated
https://bugs.webkit.org/show_bug.cgi?id=203673

Reviewed by Antoine Quint.

Also rename the related StykeBuilderCustom and StyleBuilderConverter classes
and move them to the Style namespace and directory.

* Sources.txt:
* WebCore.xcodeproj/project.pbxproj:
* css/CSSFontFace.cpp:
(WebCore::calculateWeightRange):
(WebCore::calculateStretchRange):
(WebCore::calculateItalicRange):
* css/CSSFontFaceSet.cpp:
(WebCore::computeFontSelectionRequest):
* css/CSSToStyleMap.cpp:
(WebCore::CSSToStyleMap::mapFillXPosition):
(WebCore::CSSToStyleMap::mapFillYPosition):
* css/StyleBuilder.h: Removed.
* css/makeprop.pl:
(getScopeForFunction):
(generateInitialValueSetter):
(generateInheritValueSetter):
(generateValueSetter):
* css/parser/CSSPropertyParser.cpp:
(WebCore::CSSPropertyParser::parseTypedCustomPropertyValue):
* style/PropertyCascade.cpp:
(WebCore::Style::PropertyCascade::applyProperty):
* style/StyleBuilderConverter.h: Renamed from Source/WebCore/css/StyleBuilderConverter.h.
(WebCore::Style::BuilderConverter::convertLength):
(WebCore::Style::BuilderConverter::convertLengthOrAuto):
(WebCore::Style::BuilderConverter::convertLengthSizing):
(WebCore::Style::BuilderConverter::convertLengthMaxSizing):
(WebCore::Style::BuilderConverter::convertTabSize):
(WebCore::Style::BuilderConverter::convertComputedLength):
(WebCore::Style::BuilderConverter::convertLineWidth):
(WebCore::Style::BuilderConverter::convertSpacing):
(WebCore::Style::BuilderConverter::convertToRadiusLength):
(WebCore::Style::BuilderConverter::convertRadius):
(WebCore::Style::BuilderConverter::convertTo100PercentMinusLength):
(WebCore::Style::BuilderConverter::convertPositionComponentX):
(WebCore::Style::BuilderConverter::convertPositionComponentY):
(WebCore::Style::BuilderConverter::convertPositionComponent):
(WebCore::Style::BuilderConverter::convertObjectPosition):
(WebCore::Style::BuilderConverter::convertTextDecoration):
(WebCore::Style::BuilderConverter::convertNumber):
(WebCore::Style::BuilderConverter::convertNumberOrAuto):
(WebCore::Style::BuilderConverter::convertWebkitHyphenateLimitLines):
(WebCore::Style::BuilderConverter::convertBorderImage):
(WebCore::Style::BuilderConverter::convertBorderMask):
(WebCore::Style::BuilderConverter::convertStyleImage):
(WebCore::Style::BuilderConverter::convertTransform):
(WebCore::Style::BuilderConverter::updateColorScheme):
(WebCore::Style::BuilderConverter::convertColorScheme):
(WebCore::Style::BuilderConverter::convertString):
(WebCore::Style::BuilderConverter::convertStringOrAuto):
(WebCore::Style::BuilderConverter::convertStringOrNone):
(WebCore::Style::BuilderConverter::valueToEmphasisPosition):
(WebCore::Style::BuilderConverter::convertTextEmphasisPosition):
(WebCore::Style::BuilderConverter::convertTextAlign):
(WebCore::Style::BuilderConverter::convertClipPath):
(WebCore::Style::BuilderConverter::convertResize):
(WebCore::Style::BuilderConverter::convertMarqueeRepetition):
(WebCore::Style::BuilderConverter::convertMarqueeSpeed):
(WebCore::Style::BuilderConverter::convertQuotes):
(WebCore::Style::BuilderConverter::convertTextUnderlinePosition):
(WebCore::Style::BuilderConverter::convertTextUnderlineOffset):
(WebCore::Style::BuilderConverter::convertTextDecorationThickness):
(WebCore::Style::BuilderConverter::convertReflection):
(WebCore::Style::BuilderConverter::convertInitialLetter):
(WebCore::Style::BuilderConverter::convertTextStrokeWidth):
(WebCore::Style::BuilderConverter::convertLineBoxContain):
(WebCore::Style::BuilderConverter::valueToDecorationSkip):
(WebCore::Style::BuilderConverter::convertTextDecorationSkip):
(WebCore::Style::BuilderConverter::convertShapeValue):
(WebCore::Style::BuilderConverter::convertScrollSnapType):
(WebCore::Style::BuilderConverter::convertScrollSnapAlign):
(WebCore::Style::BuilderConverter::createGridTrackBreadth):
(WebCore::Style::BuilderConverter::createGridTrackSize):
(WebCore::Style::BuilderConverter::createGridTrackList):
(WebCore::Style::BuilderConverter::createGridPosition):
(WebCore::Style::BuilderConverter::createImplicitNamedGridLinesFromGridArea):
(WebCore::Style::BuilderConverter::convertGridTrackSizeList):
(WebCore::Style::BuilderConverter::convertGridTrackSize):
(WebCore::Style::BuilderConverter::convertGridPosition):
(WebCore::Style::BuilderConverter::convertGridAutoFlow):
(WebCore::Style::BuilderConverter::csstoLengthConversionDataWithTextZoomFactor):
(WebCore::Style::BuilderConverter::convertWordSpacing):
(WebCore::Style::BuilderConverter::convertPerspective):
(WebCore::Style::BuilderConverter::convertMarqueeIncrement):
(WebCore::Style::BuilderConverter::convertFilterOperations):
(WebCore::Style::BuilderConverter::convertFontFeatureSettings):
(WebCore::Style::BuilderConverter::convertFontWeightFromValue):
(WebCore::Style::BuilderConverter::convertFontStretchFromValue):
(WebCore::Style::BuilderConverter::convertFontStyleFromValue):
(WebCore::Style::BuilderConverter::convertFontWeight):
(WebCore::Style::BuilderConverter::convertFontStretch):
(WebCore::Style::BuilderConverter::convertFontVariationSettings):
(WebCore::Style::BuilderConverter::convertTouchCallout):
(WebCore::Style::BuilderConverter::convertTapHighlightColor):
(WebCore::Style::BuilderConverter::convertTouchAction):
(WebCore::Style::BuilderConverter::convertOverflowScrolling):
(WebCore::Style::BuilderConverter::convertSVGLengthValue):
(WebCore::Style::BuilderConverter::convertSVGLengthVector):
(WebCore::Style::BuilderConverter::convertStrokeDashArray):
(WebCore::Style::BuilderConverter::convertPaintOrder):
(WebCore::Style::BuilderConverter::convertOpacity):
(WebCore::Style::BuilderConverter::convertSVGURIReference):
(WebCore::Style::BuilderConverter::convertSVGColor):
(WebCore::Style::BuilderConverter::convertSelfOrDefaultAlignmentData):
(WebCore::Style::BuilderConverter::convertContentAlignmentData):
(WebCore::Style::BuilderConverter::convertGlyphOrientation):
(WebCore::Style::BuilderConverter::convertGlyphOrientationOrAuto):
(WebCore::Style::BuilderConverter::convertLineHeight):
(WebCore::Style::BuilderConverter::convertFontSynthesis):
(WebCore::Style::BuilderConverter::convertSpeakAs):
(WebCore::Style::BuilderConverter::convertHangingPunctuation):
(WebCore::Style::BuilderConverter::convertGapLength):
* style/StyleBuilderCustom.h: Renamed from Source/WebCore/css/StyleBuilderCustom.h.
(WebCore::Style::BuilderCustom::applyInitialWebkitMaskImage):
(WebCore::Style::BuilderCustom::applyInheritWebkitMaskImage):
(WebCore::Style::BuilderCustom::applyInitialFontFeatureSettings):
(WebCore::Style::BuilderCustom::applyInheritFontFeatureSettings):
(WebCore::Style::BuilderCustom::applyInitialFontVariationSettings):
(WebCore::Style::BuilderCustom::applyInheritFontVariationSettings):
(WebCore::Style::BuilderCustom::applyValueDirection):
(WebCore::Style::BuilderCustom::applyInitialTextAlign):
(WebCore::Style::BuilderCustom::applyValueTextAlign):
(WebCore::Style::BuilderCustom::resetEffectiveZoom):
(WebCore::Style::BuilderCustom::applyInitialZoom):
(WebCore::Style::BuilderCustom::applyInheritZoom):
(WebCore::Style::BuilderCustom::applyValueZoom):
(WebCore::Style::BuilderCustom::mmLength):
(WebCore::Style::BuilderCustom::inchLength):
(WebCore::Style::BuilderCustom::getPageSizeFromName):
(WebCore::Style::BuilderCustom::applyValueVerticalAlign):
(WebCore::Style::BuilderCustom::applyInheritImageResolution):
(WebCore::Style::BuilderCustom::applyInitialImageResolution):
(WebCore::Style::BuilderCustom::applyValueImageResolution):
(WebCore::Style::BuilderCustom::applyInheritSize):
(WebCore::Style::BuilderCustom::applyInitialSize):
(WebCore::Style::BuilderCustom::applyValueSize):
(WebCore::Style::BuilderCustom::applyInheritTextIndent):
(WebCore::Style::BuilderCustom::applyInitialTextIndent):
(WebCore::Style::BuilderCustom::applyValueTextIndent):
(WebCore::Style::ApplyPropertyBorderImageModifier::applyInheritValue):
(WebCore::Style::ApplyPropertyBorderImageModifier::applyInitialValue):
(WebCore::Style::ApplyPropertyBorderImageModifier::applyValue):
(WebCore::Style::BuilderCustom::applyInheritLineHeight):
(WebCore::Style::BuilderCustom::applyInitialLineHeight):
(WebCore::Style::BuilderCustom::applyValueLineHeight):
(WebCore::Style::BuilderCustom::applyInheritOutlineStyle):
(WebCore::Style::BuilderCustom::applyInitialOutlineStyle):
(WebCore::Style::BuilderCustom::applyValueOutlineStyle):
(WebCore::Style::BuilderCustom::applyInitialClip):
(WebCore::Style::BuilderCustom::applyInheritClip):
(WebCore::Style::BuilderCustom::applyValueClip):
(WebCore::Style::BuilderCustom::applyValueWebkitLocale):
(WebCore::Style::BuilderCustom::applyValueWritingMode):
(WebCore::Style::BuilderCustom::applyValueWebkitTextOrientation):
(WebCore::Style::BuilderCustom::applyValueWebkitTextSizeAdjust):
(WebCore::Style::BuilderCustom::applyValueWebkitTextZoom):
(WebCore::Style::BuilderCustom::applyValueColorScheme):
(WebCore::Style::BuilderCustom::applyTextOrBoxShadowValue):
(WebCore::Style::BuilderCustom::applyInitialTextShadow):
(WebCore::Style::BuilderCustom::applyInheritTextShadow):
(WebCore::Style::BuilderCustom::applyValueTextShadow):
(WebCore::Style::BuilderCustom::applyInitialBoxShadow):
(WebCore::Style::BuilderCustom::applyInheritBoxShadow):
(WebCore::Style::BuilderCustom::applyValueBoxShadow):
(WebCore::Style::BuilderCustom::applyInitialWebkitBoxShadow):
(WebCore::Style::BuilderCustom::applyInheritWebkitBoxShadow):
(WebCore::Style::BuilderCustom::applyValueWebkitBoxShadow):
(WebCore::Style::BuilderCustom::applyInitialFontFamily):
(WebCore::Style::BuilderCustom::applyInheritFontFamily):
(WebCore::Style::BuilderCustom::applyValueFontFamily):
(WebCore::Style::BuilderCustom::isValidDisplayValue):
(WebCore::Style::BuilderCustom::applyInheritDisplay):
(WebCore::Style::BuilderCustom::applyValueDisplay):
(WebCore::Style::BuilderCustom::applyValueBaselineShift):
(WebCore::Style::BuilderCustom::applyInitialWebkitAspectRatio):
(WebCore::Style::BuilderCustom::applyInheritWebkitAspectRatio):
(WebCore::Style::BuilderCustom::applyValueWebkitAspectRatio):
(WebCore::Style::BuilderCustom::applyInitialWebkitTextEmphasisStyle):
(WebCore::Style::BuilderCustom::applyInheritWebkitTextEmphasisStyle):
(WebCore::Style::BuilderCustom::applyValueWebkitTextEmphasisStyle):
(WebCore::Style::BuilderCustom::applyInheritCounter):
(WebCore::Style::BuilderCustom::applyValueCounter):
(WebCore::Style::BuilderCustom::applyInitialCounterIncrement):
(WebCore::Style::BuilderCustom::applyInheritCounterIncrement):
(WebCore::Style::BuilderCustom::applyValueCounterIncrement):
(WebCore::Style::BuilderCustom::applyInitialCounterReset):
(WebCore::Style::BuilderCustom::applyInheritCounterReset):
(WebCore::Style::BuilderCustom::applyValueCounterReset):
(WebCore::Style::BuilderCustom::applyInitialCursor):
(WebCore::Style::BuilderCustom::applyInheritCursor):
(WebCore::Style::BuilderCustom::applyValueCursor):
(WebCore::Style::BuilderCustom::applyInitialFill):
(WebCore::Style::BuilderCustom::applyInheritFill):
(WebCore::Style::BuilderCustom::applyValueFill):
(WebCore::Style::BuilderCustom::applyInitialStroke):
(WebCore::Style::BuilderCustom::applyInheritStroke):
(WebCore::Style::BuilderCustom::applyValueStroke):
(WebCore::Style::BuilderCustom::applyInitialContent):
(WebCore::Style::BuilderCustom::applyInheritContent):
(WebCore::Style::BuilderCustom::applyValueContent):
(WebCore::Style::BuilderCustom::applyInheritFontVariantLigatures):
(WebCore::Style::BuilderCustom::applyInitialFontVariantLigatures):
(WebCore::Style::BuilderCustom::applyValueFontVariantLigatures):
(WebCore::Style::BuilderCustom::applyInheritFontVariantNumeric):
(WebCore::Style::BuilderCustom::applyInitialFontVariantNumeric):
(WebCore::Style::BuilderCustom::applyValueFontVariantNumeric):
(WebCore::Style::BuilderCustom::applyInheritFontVariantEastAsian):
(WebCore::Style::BuilderCustom::applyInitialFontVariantEastAsian):
(WebCore::Style::BuilderCustom::applyValueFontVariantEastAsian):
(WebCore::Style::BuilderCustom::applyInitialFontSize):
(WebCore::Style::BuilderCustom::applyInheritFontSize):
(WebCore::Style::BuilderCustom::largerFontSize):
(WebCore::Style::BuilderCustom::smallerFontSize):
(WebCore::Style::BuilderCustom::determineRubyTextSizeMultiplier):
(WebCore::Style::BuilderCustom::applyInitialFontStyle):
(WebCore::Style::BuilderCustom::applyInheritFontStyle):
(WebCore::Style::BuilderCustom::applyValueFontStyle):
(WebCore::Style::BuilderCustom::applyValueFontSize):
(WebCore::Style::BuilderCustom::applyInitialGridTemplateAreas):
(WebCore::Style::BuilderCustom::applyInheritGridTemplateAreas):
(WebCore::Style::BuilderCustom::applyValueGridTemplateAreas):
(WebCore::Style::BuilderCustom::applyInitialGridTemplateColumns):
(WebCore::Style::BuilderCustom::applyInheritGridTemplateColumns):
(WebCore::Style::BuilderCustom::applyValueGridTemplateColumns):
(WebCore::Style::BuilderCustom::applyInitialGridTemplateRows):
(WebCore::Style::BuilderCustom::applyInheritGridTemplateRows):
(WebCore::Style::BuilderCustom::applyValueGridTemplateRows):
(WebCore::Style::BuilderCustom::applyValueAlt):
(WebCore::Style::BuilderCustom::applyValueWillChange):
(WebCore::Style::BuilderCustom::applyValueStrokeWidth):
(WebCore::Style::BuilderCustom::applyValueStrokeColor):
(WebCore::Style::BuilderCustom::applyInitialCustomProperty):
(WebCore::Style::BuilderCustom::applyInheritCustomProperty):
(WebCore::Style::BuilderCustom::applyValueCustomProperty):
* style/StyleBuilderGenerated.h: Added.

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

6 months ago[Web Animations] Add support for AnimationEvent.pseudoElement
commit-queue@webkit.org [Thu, 31 Oct 2019 12:43:37 +0000 (12:43 +0000)]
[Web Animations] Add support for AnimationEvent.pseudoElement
https://bugs.webkit.org/show_bug.cgi?id=203671

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

LayoutTests/imported/w3c:

Mark WPT progressions.

* web-platform-tests/css/css-animations/animationevent-interface-expected.txt:
* web-platform-tests/css/css-animations/animationevent-pseudoelement-expected.txt:
* web-platform-tests/css/css-animations/animationevent-types-expected.txt:
* web-platform-tests/css/css-animations/idlharness-expected.txt:

Source/WebCore:

* animation/DeclarativeAnimation.cpp:
(WebCore::DeclarativeAnimation::enqueueDOMEvent):
* dom/AnimationEvent.cpp:
(WebCore::AnimationEvent::AnimationEvent):
(WebCore::AnimationEvent::pseudoElement const):
* dom/AnimationEvent.h:
* dom/AnimationEvent.idl:
* dom/WebKitAnimationEvent.cpp:
(WebCore::WebKitAnimationEvent::WebKitAnimationEvent):
(WebCore::WebKitAnimationEvent::pseudoElement const):
* dom/WebKitAnimationEvent.h:
* dom/WebKitAnimationEvent.idl:
* page/animation/CSSAnimationController.cpp:
(WebCore::CSSAnimationControllerPrivate::fireEventsAndUpdateStyle):

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