Timeline



Mar 15, 2019:

10:44 PM Changeset in webkit [243034] by pvollan@apple.com
  • 16 edits in trunk/Source

[iOS] Block the accessibility server when accessibility is not enabled.
https://bugs.webkit.org/show_bug.cgi?id=195342

Reviewed by Brent Fulgham.

Source/WebKit:

By default, block the iOS accessibility server in the sandbox. If accessibility is enabled,
let the UI process issue a mach extension to the WebContent process. The UI process will
issue the mach extension the the WebContent process by its process identifier. The sandbox
extension handle is sent to the WebContent process to be consumed. The message will be sent
when the WebProcess has finished launching, and also when accessibility is turned on.

  • Platform/spi/ios/AccessibilitySupportSPI.h:
  • Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb:
  • Shared/SandboxExtension.h:
  • Shared/mac/SandboxExtensionMac.mm:

(WebKit::SandboxExtensionImpl::create):
(WebKit::SandboxExtensionImpl::sandboxExtensionForType):
(WebKit::SandboxExtensionImpl::SandboxExtensionImpl):
(WebKit::SandboxExtension::createHandleForMachLookupByPid):

  • UIProcess/Cocoa/WebProcessPoolCocoa.mm:

(WebKit::WebProcessPool::registerNotificationObservers):
(WebKit::WebProcessPool::unregisterNotificationObservers):

  • UIProcess/WebProcessPool.h:
  • UIProcess/WebProcessProxy.cpp:

(WebKit::WebProcessProxy::didFinishLaunching):

  • UIProcess/WebProcessProxy.h:
  • UIProcess/ios/WebProcessProxyIOS.mm:

(WebKit::WebProcessProxy::unblockAccessibilityServerIfNeeded):

  • WebProcess/WebProcess.cpp:

(WebKit::WebProcess::unblockAccessibilityServer):

  • WebProcess/WebProcess.h:
  • WebProcess/WebProcess.messages.in:

Source/WTF:

Add SPI to issue a mach extension to a process by pid. Also, add a macro for
the availability of this SPI.

  • wtf/Platform.h:
  • wtf/spi/darwin/SandboxSPI.h:
10:21 PM Changeset in webkit [243033] by eric.carlson@apple.com
  • 40 edits in trunk/Source

Add media stream release logging
https://bugs.webkit.org/show_bug.cgi?id=195823
Source/WebCore:

<rdar://problem/48939406>

Reviewed by Youenn Fablet.

No new tests, no behavioral change.

  • Modules/mediastream/MediaStream.cpp:

(WebCore::MediaStream::MediaStream):
(WebCore::MediaStream::clone):
(WebCore::MediaStream::addTrack):
(WebCore::MediaStream::removeTrack):
(WebCore::MediaStream::addTrackFromPlatform):
(WebCore::MediaStream::setIsActive):
(WebCore::MediaStream::mediaCanStart):
(WebCore::MediaStream::startProducingData):
(WebCore::MediaStream::stopProducingData):
(WebCore::MediaStream::endCaptureTracks):
(WebCore::MediaStream::stop):
(WebCore::MediaStream::logChannel const):

  • Modules/mediastream/MediaStream.h:
  • Modules/mediastream/MediaStreamTrack.cpp:

(WebCore::MediaStreamTrack::MediaStreamTrack):
(WebCore::MediaStreamTrack::logChannel const):

  • Modules/mediastream/MediaStreamTrack.h:
  • Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.cpp:

(WebCore::LibWebRTCMediaEndpoint::addTrack):
(WebCore::LibWebRTCMediaEndpoint::sourceFromNewReceiver):

  • Modules/webaudio/AudioContext.cpp:

(WebCore::AudioContext::AudioContext):
(WebCore::nextLogIdentifier): Deleted.

  • html/HTMLMediaElement.cpp:

(WebCore::HTMLMediaElement::HTMLMediaElement):
(WebCore::nextLogIdentifier): Deleted.

  • html/HTMLMediaElement.h:
  • platform/audio/PlatformMediaSession.cpp:

(WebCore::PlatformMediaSession::PlatformMediaSession):
(WebCore::nextLogIdentifier): Deleted.

  • platform/audio/PlatformMediaSession.h:
  • platform/graphics/IntSize.cpp:

(WebCore::IntSize::toJSONObject const):
(WebCore::IntSize::toJSONString const):

  • platform/graphics/IntSize.h:

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

  • platform/mediastream/MediaStreamPrivate.cpp:

(WebCore::MediaStreamPrivate::addTrack):
(WebCore::MediaStreamPrivate::removeTrack):
(WebCore::MediaStreamPrivate::startProducingData):
(WebCore::MediaStreamPrivate::stopProducingData):
(WebCore::MediaStreamPrivate::setCaptureTracksMuted):
(WebCore::MediaStreamPrivate::trackMutedChanged):
(WebCore::MediaStreamPrivate::trackEnabledChanged):
(WebCore::MediaStreamPrivate::trackStarted):
(WebCore::MediaStreamPrivate::trackEnded):
(WebCore::MediaStreamPrivate::setLogger):
(WebCore::MediaStreamPrivate::logChannel const):

  • platform/mediastream/MediaStreamPrivate.h:
  • platform/mediastream/MediaStreamTrackPrivate.cpp:

(WebCore::MediaStreamTrackPrivate::setLogger):
(WebCore::MediaStreamTrackPrivate::logChannel const):

  • platform/mediastream/MediaStreamTrackPrivate.h:
  • platform/mediastream/RealtimeIncomingAudioSource.cpp:

(WebCore::RealtimeIncomingAudioSource::RealtimeIncomingAudioSource):
(WebCore::RealtimeIncomingAudioSource::logChannel const): Deleted.
(WebCore::RealtimeIncomingAudioSource::logger const): Deleted.

  • platform/mediastream/RealtimeIncomingAudioSource.h:

(WebCore::RealtimeIncomingAudioSource::setLogger): Deleted.

  • platform/mediastream/RealtimeIncomingVideoSource.cpp:

(WebCore::RealtimeIncomingVideoSource::RealtimeIncomingVideoSource):
(WebCore::RealtimeIncomingVideoSource::logChannel const): Deleted.
(WebCore::RealtimeIncomingVideoSource::logger const): Deleted.

  • platform/mediastream/RealtimeIncomingVideoSource.h:

(WebCore::RealtimeIncomingVideoSource::setLogger): Deleted.

  • platform/mediastream/RealtimeMediaSource.cpp:

(WebCore::RealtimeMediaSource::RealtimeMediaSource):
(WebCore::RealtimeMediaSource::setInterrupted):
(WebCore::RealtimeMediaSource::setMuted):
(WebCore::RealtimeMediaSource::notifyMutedChange):
(WebCore::RealtimeMediaSource::notifySettingsDidChangeObservers):
(WebCore::RealtimeMediaSource::videoSampleAvailable):
(WebCore::RealtimeMediaSource::start):
(WebCore::RealtimeMediaSource::stop):
(WebCore::RealtimeMediaSource::captureFailed):
(WebCore::RealtimeMediaSource::applyConstraint):
(WebCore::RealtimeMediaSource::supportsConstraints):
(WebCore::RealtimeMediaSource::applyConstraints):
(WebCore::RealtimeMediaSource::setSize):
(WebCore::RealtimeMediaSource::setIntrinsicSize):
(WebCore::RealtimeMediaSource::setFrameRate):
(WebCore::RealtimeMediaSource::setAspectRatio):
(WebCore::RealtimeMediaSource::setFacingMode):
(WebCore::RealtimeMediaSource::setVolume):
(WebCore::RealtimeMediaSource::setSampleRate):
(WebCore::RealtimeMediaSource::setSampleSize):
(WebCore::RealtimeMediaSource::setEchoCancellation):
(WebCore::RealtimeMediaSource::setLogger):
(WebCore::RealtimeMediaSource::logChannel const):
(WebCore::convertEnumerationToString):

  • platform/mediastream/RealtimeMediaSource.h:

(WTF::LogArgument<WebCore::RealtimeMediaSource::Type>::toString):

  • platform/mediastream/RealtimeMediaSourceSettings.cpp:

(WebCore::RealtimeMediaSourceSettings::convertFlagsToString):
(WebCore::convertEnumerationToString):

  • platform/mediastream/RealtimeMediaSourceSettings.h:

(WTF::LogArgument<WebCore::RealtimeMediaSourceSettings::VideoFacingMode>::toString):
(WTF::LogArgument<OptionSet<WebCore::RealtimeMediaSourceSettings::Flag>>::toString):

  • platform/mediastream/RealtimeOutgoingAudioSource.cpp:

(WebCore::RealtimeOutgoingAudioSource::RealtimeOutgoingAudioSource):
(WebCore::RealtimeOutgoingAudioSource::logChannel const):
(WebCore::RealtimeOutgoingAudioSource::logger const): Deleted.

  • platform/mediastream/RealtimeOutgoingAudioSource.h:

(WebCore::RealtimeOutgoingAudioSource::setLogger): Deleted.

  • platform/mediastream/RealtimeOutgoingVideoSource.cpp:

(WebCore::RealtimeOutgoingVideoSource::RealtimeOutgoingVideoSource):
(WebCore::RealtimeOutgoingVideoSource::sendOneBlackFrame):
(WebCore::RealtimeOutgoingVideoSource::sendFrame):
(WebCore::RealtimeOutgoingVideoSource::logChannel const):
(WebCore::RealtimeOutgoingVideoSource::logger const): Deleted.

  • platform/mediastream/RealtimeOutgoingVideoSource.h:

(WebCore::RealtimeOutgoingVideoSource::setLogger): Deleted.

  • platform/mediastream/RealtimeVideoSource.cpp:

(WebCore::RealtimeVideoSource::setSizeAndFrameRate):
(WebCore::SizeAndFrameRate::toJSONObject const):
(WebCore::SizeAndFrameRate::toJSONString const):

  • platform/mediastream/RealtimeVideoSource.h:

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

  • platform/mediastream/mac/AVVideoCaptureSource.h:
  • platform/mediastream/mac/AVVideoCaptureSource.mm:

(WebCore::AVVideoCaptureSource::clearSession):
(WebCore::AVVideoCaptureSource::startProducingData):
(WebCore::AVVideoCaptureSource::stopProducingData):
(WebCore::AVVideoCaptureSource::setSizeAndFrameRateWithPreset):
(WebCore::AVVideoCaptureSource::setupSession):
(WebCore::AVVideoCaptureSource::frameDurationForFrameRate):
(WebCore::AVVideoCaptureSource::setupCaptureSession):
(WebCore::AVVideoCaptureSource::captureSessionIsRunningDidChange):
(WebCore::AVVideoCaptureSource::captureDeviceSuspendedDidChange):
(WebCore::AVVideoCaptureSource::captureSessionRuntimeError):
(WebCore::AVVideoCaptureSource::captureSessionBeginInterruption):
(WebCore::AVVideoCaptureSource::captureSessionEndInterruption):
(WebCore::AVVideoCaptureSource::deviceDisconnected):
(-[WebCoreAVVideoCaptureSourceObserver observeValueForKeyPath:ofObject:change:context:]):
(-[WebCoreAVVideoCaptureSourceObserver deviceConnectedDidChange:]):
(-[WebCoreAVVideoCaptureSourceObserver sessionRuntimeError:]):
(-[WebCoreAVVideoCaptureSourceObserver beginSessionInterrupted:]):
(-[WebCoreAVVideoCaptureSourceObserver endSessionInterrupted:]):
(WebCore::AVVideoCaptureSource::initializeSession): Deleted.

  • platform/mediastream/mac/CoreAudioCaptureSource.cpp:

(WebCore::CoreAudioSharedUnit::setupAudioUnit):
(WebCore::CoreAudioSharedUnit::verifyIsCapturing):
(WebCore::CoreAudioSharedUnit::captureFailed):
(WebCore::CoreAudioCaptureSource::initializeToStartProducingData):
(WebCore::CoreAudioCaptureSource::addEchoCancellationSource):
(WebCore::CoreAudioCaptureSource::removeEchoCancellationSource):
(WebCore::CoreAudioCaptureSource::startProducingData):
(WebCore::CoreAudioCaptureSource::stopProducingData):
(WebCore::CoreAudioCaptureSource::scheduleReconfiguration):
(WebCore::CoreAudioCaptureSource::beginInterruption):
(WebCore::CoreAudioCaptureSource::endInterruption):

  • platform/mediastream/mac/CoreAudioCaptureSource.h:
  • platform/mediastream/mac/ScreenDisplayCaptureSourceMac.h:
  • platform/mediastream/mac/ScreenDisplayCaptureSourceMac.mm:

(WebCore::ScreenDisplayCaptureSourceMac::createDisplayStream):
(WebCore::ScreenDisplayCaptureSourceMac::startProducingData):
(WebCore::ScreenDisplayCaptureSourceMac::stopProducingData):
(WebCore::ScreenDisplayCaptureSourceMac::startDisplayStream):

Source/WTF:

Reviewed by Youenn Fablet.

  • wtf/LoggerHelper.h: Add LOG_IF variants that check a condition before logging.
9:44 PM Changeset in webkit [243032] by mark.lam@apple.com
  • 8 edits
    1 add in trunk

Need to check ObjectPropertyCondition liveness before accessing it when firing watchpoints.
https://bugs.webkit.org/show_bug.cgi?id=195827
<rdar://problem/48845513>

Reviewed by Filip Pizlo.

JSTests:

  • stress/check-object-property-condition-liveness-before-accessing-it-when-watchpoints-fire.js: Added.

Source/JavaScriptCore:

m_object in ObjectPropertyCondition may no longer be live by the time the watchpoint fires.

  • bytecode/AdaptiveInferredPropertyValueWatchpointBase.cpp:

(JSC::AdaptiveInferredPropertyValueWatchpointBase::fire):

  • bytecode/LLIntPrototypeLoadAdaptiveStructureWatchpoint.cpp:

(JSC::LLIntPrototypeLoadAdaptiveStructureWatchpoint::fireInternal):

  • bytecode/ObjectPropertyCondition.cpp:

(JSC::ObjectPropertyCondition::dumpInContext const):

  • bytecode/StructureStubClearingWatchpoint.cpp:

(JSC::StructureStubClearingWatchpoint::fireInternal):

  • dfg/DFGAdaptiveStructureWatchpoint.cpp:

(JSC::DFG::AdaptiveStructureWatchpoint::fireInternal):

  • runtime/StructureRareData.cpp:

(JSC::ObjectToStringAdaptiveStructureWatchpoint::fireInternal):

8:14 PM Changeset in webkit [243031] by Joseph Pecoraro
  • 6 edits in trunk

Web Inspector: HAR Extension for Resource Priority
https://bugs.webkit.org/show_bug.cgi?id=195693

Reviewed by Devin Rousso.

Source/WebInspectorUI:

  • UserInterface/Controllers/HARBuilder.js:

(WI.HARBuilder.entry):
(WI.HARBuilder.priority):
(WI.HARBuilder.networkPriorityFromHARPriority):
Include priority custom extension.

  • UserInterface/Models/LocalResource.js:

(WI.LocalResource.fromHAREntry):
Import priority.

LayoutTests:

  • http/tests/inspector/network/har/har-basic-expected.txt:
  • http/tests/inspector/network/har/har-page-expected.txt:
7:48 PM Changeset in webkit [243030] by Jonathan Bedard
  • 12 edits
    5 adds in trunk/Tools

webkitpy: Upload test results
https://bugs.webkit.org/show_bug.cgi?id=195755
<rdar://problem/48896182>

Reviewed by Aakash Jain.

Establish a new format for uploading results that is not tied to layout tests, apply
that format to webkitpy tests.

  • Scripts/webkitpy/common/checkout/scm/git.py:

(Git.native_branch): Return what branch the current checkout is on.

  • Scripts/webkitpy/common/checkout/scm/scm_mock.py:
  • Scripts/webkitpy/common/checkout/scm/scm_unittest.py:
  • Scripts/webkitpy/common/checkout/scm/svn.py:

(SVN.native_branch): Ditto.

  • Scripts/webkitpy/common/system/platforminfo.py:

(PlatformInfo.build_version): Return a build version for Mac.

  • Scripts/webkitpy/common/system/platforminfo_mock.py:

(MockPlatformInfo.init):
(MockPlatformInfo.build_version):

  • Scripts/webkitpy/results: Added.
  • Scripts/webkitpy/results/init.py: Added.
  • Scripts/webkitpy/results/options.py: Added.

(upload_options): OptParse list for upload options.

  • Scripts/webkitpy/results/upload.py: Added.

(Upload): Class which enforces the upload format expected by the results server.
(Upload.Expectations):
(Upload.create_configuration):
(Upload.create_commit):
(Upload.create_details):
(Upload.create_run_stats):
(Upload.create_test_result):
(Upload.init):
(Upload.Encoder): Encode Upload object as json.
(Upload.upload): Upload results to the results server, returning 'True' if the upload is successful.

  • Scripts/webkitpy/results/upload_unittest.py: Added.
  • Scripts/webkitpy/test/main.py:

(Tester._parse_args): Add upload arguments.
(Tester._run_tests): Allow results to be uploaded.

  • Scripts/webkitpy/test/runner.py:

(Runner.init): Record which tests were run, rather than just counting them.
(Runner.handle):

  • Scripts/webkitpy/test/runner_unittest.py:

(RunnerTest.test_run):

  • Scripts/webkitpy/thirdparty/init.py:

(AutoinstallImportHook.find_module): Add requests auto-install.
(AutoinstallImportHook._install_requests):

  • Scripts/webkitpy/tool/commands/queues_unittest.py:

(PatchProcessingQueueTest.test_upload_results_archive_for_patch): Update os name for testing.

7:21 PM Changeset in webkit [243029] by Devin Rousso
  • 2 edits in trunk/Source/WebCore

Web Inspector: Canvas: remove agent as observer when disabling
https://bugs.webkit.org/show_bug.cgi?id=195825
<rdar://problem/48940255>

Reviewed by Joseph Pecoraro.

No change in functionality.

  • inspector/agents/InspectorCanvasAgent.cpp:

(WebCore::InspectorCanvasAgent::disable):

4:50 PM Changeset in webkit [243028] by timothy@apple.com
  • 3 edits in trunk/Source/WebKit

Unreviewed speculative build fix for non-Cocoa ports after r243012.

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::getContentsAsAttributedString):

  • UIProcess/WebPageProxy.h:
4:49 PM Changeset in webkit [243027] by Truitt Savell
  • 15 edits in trunk/Source

Unreviewed, rolling out r243008.

This revision broke High Sierra builders

Reverted changeset:

"[iOS] Block the accessibility server when accessibility is
not enabled."
https://bugs.webkit.org/show_bug.cgi?id=195342
https://trac.webkit.org/changeset/243008

4:45 PM Changeset in webkit [243026] by Joseph Pecoraro
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: CPU Usage Timeline - Give long thread names a tooltip if they could be ellipsized
https://bugs.webkit.org/show_bug.cgi?id=195314

Reviewed by Devin Rousso.

  • UserInterface/Views/CPUUsageView.js:

(WI.CPUUsageView):

4:45 PM Changeset in webkit [243025] by Joseph Pecoraro
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: CPU Usage Timeline - Reduce the intensity of the orange overlay color in dark mode
https://bugs.webkit.org/show_bug.cgi?id=195772

Reviewed by Devin Rousso.

  • UserInterface/Views/Variables.css:

(@media (prefers-color-scheme: dark)):
(:root):

4:45 PM Changeset in webkit [243024] by Joseph Pecoraro
  • 42 edits
    2 copies
    2 adds in trunk

Web Inspector: Timelines - Import / Export Timeline Recordings
https://bugs.webkit.org/show_bug.cgi?id=195709
<rdar://problem/23188921>

Reviewed by Devin Rousso.

Source/WebInspectorUI:

Timeline exporting saves TimelineRecording and TimelineOverview state.
The TimelineRecording includes all kinds of model objects, such as
records, markers, memory pressure events, etc. It also includes raw
protocol data, such as script profiler samples. TimelineOverview
includes some of the view state to restore, such as the selected
time range, zoom level, and selected timeline.

Timeline importing constructs a new TimelineRecording by replaying
the records, markers, and other events, as well as re-initializing
more state. To finally display the imported recording, the content
view will immediately initialize start/current/end times and the
overview will restore the view state.

  • Localizations/en.lproj/localizedStrings.js:

New strings.

  • UserInterface/Controllers/TimelineManager.js:

(WI.TimelineManager.synthesizeImportError):
(WI.TimelineManager.prototype.importRecording):
Import API.

(WI.TimelineManager.prototype.scriptProfilerTrackingCompleted):
Initialize the samples on the recording via a different path
so that the data can be saved for exporting.

  • UserInterface/Models/TimelineRecording.js:

(WI.TimelineRecording):
(WI.TimelineRecording.import):
(WI.TimelineRecording.prototype.exportData):
(WI.TimelineRecording.prototype.get capturing):
(WI.TimelineRecording.prototype.get imported):
(WI.TimelineRecording.prototype.unloaded):
(WI.TimelineRecording.prototype.reset):
(WI.TimelineRecording.prototype.addEventMarker):
(WI.TimelineRecording.prototype.addRecord):
(WI.TimelineRecording.prototype.addMemoryPressureEvent):
(WI.TimelineRecording.prototype.initializeCallingContextTrees):
(WI.TimelineRecording.prototype.canExport):
Save data at the TimelineRecording level that can be used for export.
We only allow exporting a TimelineRecording that has started/stopped
at least once and is not currently capturing.

  • UserInterface/Views/TimelineRecordingContentView.js:

(WI.TimelineRecordingContentView):
(WI.TimelineRecordingContentView.prototype.get navigationItems):
(WI.TimelineRecordingContentView.prototype.get supportsSave):
(WI.TimelineRecordingContentView.prototype.get saveData):
(WI.TimelineRecordingContentView.prototype.shown):
(WI.TimelineRecordingContentView.prototype._capturingStarted):
(WI.TimelineRecordingContentView.prototype._capturingStopped):
(WI.TimelineRecordingContentView.prototype._initializeImportedRecording):
(WI.TimelineRecordingContentView.prototype._exportTimelineRecording):
(WI.TimelineRecordingContentView.prototype._importButtonNavigationItemClicked):
(WI.TimelineRecordingContentView.prototype._recordingReset):
Add Import and Export buttons in the Timeline navigation bar.

  • UserInterface/Views/TimelineOverview.js:

(WI.TimelineOverview):
(WI.TimelineOverview.prototype.exportData):
(WI.TimelineOverview.prototype._instrumentAdded):
(WI.TimelineOverview.prototype._recordingImported):
When importing a recording update the TimelineOverview state
soon afterwards.

  • UserInterface/Models/CPUTimelineRecord.js:

(WI.CPUTimelineRecord.fromJSON):
(WI.CPUTimelineRecord.prototype.toJSON):

  • UserInterface/Models/GarbageCollection.js:

(WI.GarbageCollection.fromJSON):
(WI.GarbageCollection.prototype.toJSON):

  • UserInterface/Models/Geometry.js:

(WI.Quad.fromJSON):
(WI.Quad.prototype.toJSON):

  • UserInterface/Models/HeapAllocationsTimelineRecord.js:

(WI.HeapAllocationsTimelineRecord.fromJSON):
(WI.HeapAllocationsTimelineRecord.prototype.toJSON):

  • UserInterface/Models/LayoutTimelineRecord.js:

(WI.LayoutTimelineRecord.fromJSON):
(WI.LayoutTimelineRecord.prototype.toJSON):

  • UserInterface/Models/MediaTimelineRecord.js:

(WI.MediaTimelineRecord.fromJSON):
(WI.MediaTimelineRecord.prototype.toJSON):

  • UserInterface/Models/MemoryPressureEvent.js:

(WI.MemoryPressureEvent.fromJSON):
(WI.MemoryPressureEvent.prototype.toJSON):

  • UserInterface/Models/MemoryTimelineRecord.js:

(WI.MemoryTimelineRecord):
(WI.MemoryTimelineRecord.fromJSON):
(WI.MemoryTimelineRecord.prototype.toJSON):

  • UserInterface/Models/RenderingFrameTimelineRecord.js:

(WI.RenderingFrameTimelineRecord.fromJSON):
(WI.RenderingFrameTimelineRecord.prototype.toJSON):

  • UserInterface/Models/ResourceTimelineRecord.js:

(WI.ResourceTimelineRecord.fromJSON):
(WI.ResourceTimelineRecord.prototype.toJSON):

  • UserInterface/Models/ScriptTimelineRecord.js:

(WI.ScriptTimelineRecord.fromJSON):
(WI.ScriptTimelineRecord.prototype.toJSON):

  • UserInterface/Models/TimelineMarker.js:

(WI.TimelineMarker.fromJSON):
(WI.TimelineMarker.prototype.toJSON):
(WI.TimelineMarker.prototype.get type):
(WI.TimelineMarker.prototype.get details):
(WI.TimelineMarker.prototype.set time):
(WI.TimelineMarker):

  • UserInterface/Models/TimelineRecord.js:

(WI.TimelineRecord.fromJSON):
(WI.TimelineRecord.prototype.toJSON):
Import / Export toJSON / fromJSON implementations.

  • UserInterface/Views/CPUTimelineOverviewGraph.js:

(WI.CPUTimelineOverviewGraph):
(WI.CPUTimelineOverviewGraph.prototype._cpuTimelineRecordAdded):
(WI.CPUTimelineOverviewGraph.prototype._processRecord):

  • UserInterface/Views/LayoutTimelineOverviewGraph.js:

(WI.LayoutTimelineOverviewGraph):
(WI.LayoutTimelineOverviewGraph.prototype._layoutTimelineRecordAdded):
(WI.LayoutTimelineOverviewGraph.prototype._processRecord):

  • UserInterface/Views/LayoutTimelineView.js:

(WI.LayoutTimelineView):
(WI.LayoutTimelineView.prototype._layoutTimelineRecordAdded):
(WI.LayoutTimelineView.prototype._processRecord):

  • UserInterface/Views/MediaTimelineView.js:

(WI.MediaTimelineView):
(WI.MediaTimelineView.prototype._handleRecordAdded):
(WI.MediaTimelineView.prototype._processRecord):

  • UserInterface/Views/MemoryTimelineOverviewGraph.js:

(WI.MemoryTimelineOverviewGraph):
(WI.MemoryTimelineOverviewGraph.prototype._memoryTimelineRecordAdded):
(WI.MemoryTimelineOverviewGraph.prototype._processRecord):

  • UserInterface/Views/MemoryTimelineView.js:

(WI.MemoryTimelineView):
(WI.MemoryTimelineView.prototype._memoryTimelineRecordAdded):
(WI.MemoryTimelineView.prototype._processRecord):

  • UserInterface/Views/NetworkTimelineOverviewGraph.js:

(WI.NetworkTimelineOverviewGraph):
(WI.NetworkTimelineOverviewGraph.prototype.reset):
(WI.NetworkTimelineOverviewGraph.prototype._networkTimelineRecordAdded):
(WI.NetworkTimelineOverviewGraph.prototype._processRecord):
(WI.NetworkTimelineOverviewGraph.prototype._networkTimelineRecordAdded.compareByStartTime): Deleted.

  • UserInterface/Views/NetworkTimelineView.js:

(WI.NetworkTimelineView):
(WI.NetworkTimelineView.prototype._networkTimelineRecordAdded):
(WI.NetworkTimelineView.prototype._processRecord):

  • UserInterface/Views/RenderingFrameTimelineView.js:

(WI.RenderingFrameTimelineView):
(WI.RenderingFrameTimelineView.prototype._renderingFrameTimelineRecordAdded):
(WI.RenderingFrameTimelineView.prototype._processRecord):

  • UserInterface/Views/ScriptDetailsTimelineView.js:

(WI.ScriptDetailsTimelineView):
(WI.ScriptDetailsTimelineView.prototype._scriptTimelineRecordAdded):
(WI.ScriptDetailsTimelineView.prototype._processRecord):
Add common _processRecord path to each timeline OverviewGraph and TimelineView.
By calling this in construction we populate graphs with TimelineRecords that
may have already existed. This is necessary for imports, but this also fixes
the case where you enable a timeline that had data and it didn't show data.

  • UserInterface/Views/LayoutTimelineOverviewGraph.css:

(.timeline-overview-graph.layout-overview > .graph-row):
(.timeline-overview-graph.layout-overview > .graph-row > .timeline-record-bar):
(.timeline-overview-graph.layout-overview > .graph-row > .timeline-record-bar > .segment):
(.timeline-overview-graph.layout > .graph-row): Deleted.
(.timeline-overview-graph.layout > .graph-row > .timeline-record-bar): Deleted.
(.timeline-overview-graph.layout > .graph-row > .timeline-record-bar > .segment): Deleted.

  • UserInterface/Views/TimelineRecordBar.css:

(.timeline-record-bar.timeline-record-type-layout.paint > .segment,):
(.timeline-record-bar.timeline-record-type-layout.layout-timeline-record-paint > .segment,): Deleted.
We simplified some of the sub-record type enum strings. To do this we needed to change
"layout" to "layout-overview" to avoid a conflict.

LayoutTests:

  • inspector/timeline/timeline-recording-expected.txt: Added.
  • inspector/timeline/timeline-recording.html: Added.
4:33 PM Changeset in webkit [243023] by Kocsen Chung
  • 1 copy in tags/Safari-607.2.2

Tag Safari-607.2.2.

4:12 PM Changeset in webkit [243022] by rniwa@webkit.org
  • 3 edits in trunk/Source/WebCore

REGRESSION (r239814): Most classes that user Timer have 7 bytes of padding after the Timer
https://bugs.webkit.org/show_bug.cgi?id=194196

Reviewed by Simon Fraser.

Use std::nan as the value of m_unalignedNextFireTime to indicate the timer had been deleted
instead of having a dedicated boolean, which consumes 7 extra bytes for padding.

Note that some code in WebKit uses +Infinity as a fire time so we can't use that.

  • platform/Timer.cpp:

(WebCore::TimerBase::TimerBase):
(WebCore::TimerBase::~TimerBase):
(WebCore::TimerBase::setNextFireTime):
(WebCore::TimerBase::nextUnalignedFireInterval const):

  • platform/Timer.h:
4:09 PM Changeset in webkit [243021] by Wenson Hsieh
  • 4 edits in trunk/Tools

[iOS] Crash under -[TestRunnerWKWebView _didShowMenu] while running layout tests on iOS simulator
https://bugs.webkit.org/show_bug.cgi?id=195810

Reviewed by Tim Horton.

Ensure that the process of resetting web view state between tests doesn't also invoke testing callbacks
registered by the previous layout test. This fixes an occasional crash when hiding the callout menu after
ending certain layout tests.

  • WebKitTestRunner/cocoa/TestRunnerWKWebView.h:
  • WebKitTestRunner/cocoa/TestRunnerWKWebView.mm:

(-[TestRunnerWKWebView dealloc]):
(-[TestRunnerWKWebView resetInteractionCallbacks]):

Pull logic to reset all of TestRunnerWKWebView's callback handler blocks into a separate helper method; use this
helper method when destroying the web view, and when resetting state between tests.

  • WebKitTestRunner/ios/TestControllerIOS.mm:

(WTR::TestController::platformResetStateToConsistentValues):

Hide the callout menu *after* clearing out interaction callbacks registered on the web view.

3:37 PM Changeset in webkit [243020] by pvollan@apple.com
  • 3 edits in trunk/Source/WebKit

All networking from WebKit.Networking fails when Network Extension content filter is enabled
https://bugs.webkit.org/show_bug.cgi?id=195815
<rdar://problem/47598758>

Reviewed by Brent Fulgham.

The sandbox needs to allow an associated mach lookup.

  • NetworkProcess/mac/com.apple.WebKit.NetworkProcess.sb.in:
  • Resources/SandboxProfiles/ios/com.apple.WebKit.Networking.sb:
3:32 PM Changeset in webkit [243019] by sihui_liu@apple.com
  • 24 edits
    3 adds in trunk

[ Mojave WK1 ] Layout Test storage/indexeddb/database-odd-names.html is failing
https://bugs.webkit.org/show_bug.cgi?id=190350
<rdar://problem/45089503>

Reviewed by Geoffrey Garen.

Source/WebCore:

Start to use hash for database file names so that the files can work on any filesystem.

We created v0 folder in IndexedDB directory to put the legacy databases, and v1 folder to put the upgraded
databases.

Tests: TestWebKitAPI.IndexedDB.IndexedDBFileName

TestWebKitAPI.IndexedDB.IndexedDBFileNameV0
TestWebKitAPI.IndexedDB.IndexedDBFileNameV1
TestWebKitAPI.IndexedDB.IndexedDBFileNameAPI
TestWebKitAPI.IndexedDB.HashCollision

  • Modules/indexeddb/IDBDatabaseIdentifier.cpp:

(WebCore::IDBDatabaseIdentifier::databaseDirectoryRelativeToRoot const):
(WebCore::IDBDatabaseIdentifier::databaseDirectoryRelativeToRoot):

  • Modules/indexeddb/IDBDatabaseIdentifier.h:
  • Modules/indexeddb/server/IDBServer.cpp:

(WebCore::IDBServer::m_quotaManagerGetter):
(WebCore::IDBServer::IDBServer::performGetAllDatabaseNames):
(WebCore::IDBServer::removeAllDatabasesForFullOriginPath):
(WebCore::IDBServer::removeAllDatabasesForOriginPath):
(WebCore::IDBServer::IDBServer::removeDatabasesModifiedSinceForVersion):
(WebCore::IDBServer::IDBServer::performCloseAndDeleteDatabasesModifiedSince):
(WebCore::IDBServer::IDBServer::removeDatabasesWithOriginsForVersion):
(WebCore::IDBServer::IDBServer::performCloseAndDeleteDatabasesForOrigins):
(WebCore::IDBServer::IDBServer::computeSpaceUsedForOrigin):
(WebCore::IDBServer::IDBServer::upgradeFilesIfNecessary):

  • Modules/indexeddb/server/IDBServer.h:
  • Modules/indexeddb/server/SQLiteIDBBackingStore.cpp:

(WebCore::IDBServer::SQLiteIDBBackingStore::SQLiteIDBBackingStore):
(WebCore::IDBServer::SQLiteIDBBackingStore::fullDatabasePathForDirectory):
(WebCore::IDBServer::SQLiteIDBBackingStore::fullDatabasePath const):
(WebCore::IDBServer::SQLiteIDBBackingStore::databaseNameFromFile):
(WebCore::IDBServer::SQLiteIDBBackingStore::fullDatabaseDirectoryWithUpgrade):
(WebCore::IDBServer::SQLiteIDBBackingStore::getOrEstablishDatabaseInfo):
(WebCore::IDBServer::SQLiteIDBBackingStore::quotaForOrigin const):
(WebCore::IDBServer::SQLiteIDBBackingStore::databasesSizeForOrigin const):
(WebCore::IDBServer::SQLiteIDBBackingStore::getBlobRecordsForObjectStoreRecord):
(WebCore::IDBServer::SQLiteIDBBackingStore::deleteBackingStore):
(WebCore::IDBServer::SQLiteIDBBackingStore::fullDatabaseDirectory const): Deleted.

  • Modules/indexeddb/server/SQLiteIDBBackingStore.h:

(WebCore::IDBServer::SQLiteIDBBackingStore::databaseDirectory const):

  • Modules/indexeddb/server/SQLiteIDBTransaction.cpp:

(WebCore::IDBServer::SQLiteIDBTransaction::moveBlobFilesIfNecessary):
(WebCore::IDBServer::SQLiteIDBTransaction::deleteBlobFilesIfNecessary):

  • platform/sql/SQLiteFileSystem.cpp:

(WebCore::SQLiteFileSystem::computeHashForFileName):

  • platform/sql/SQLiteFileSystem.h:

Source/WebKit:

  • NetworkProcess/NetworkProcess.cpp:

(WebKit::NetworkProcess::collectIndexedDatabaseOriginsForVersion):
(WebKit::NetworkProcess::indexedDatabaseOrigins):

  • NetworkProcess/NetworkProcess.h:
  • UIProcess/Network/NetworkProcessProxy.cpp:

(WebKit::NetworkProcessProxy::addSession):
(WebKit::NetworkProcessProxy::createSymLinkForFileUpgrade): For efficientcy and atomicity, we choose to use
symlink to create v0 folder. Because network process does not have the permission to create a symlink, we need
to do this in UI process. UI process would create v0 folder inside the IndexedDB directory if there isn't one.
Also if there is a v0 directory but it doesn't have content, it means it's not a correct symlink and we need to
delete it and create again.

  • UIProcess/Network/NetworkProcessProxy.h:
  • UIProcess/WebProcessPool.cpp:

(WebKit::WebProcessPool::ensureNetworkProcess):

Tools:

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/WebKitCocoa/IDBIndexUpgradeToV2.mm:

(TEST):

  • TestWebKitAPI/Tests/WebKitCocoa/IndexedDB.sqlite3:
  • TestWebKitAPI/Tests/WebKitCocoa/IndexedDB.sqlite3-shm:
  • TestWebKitAPI/Tests/WebKitCocoa/IndexedDB.sqlite3-wal:
  • TestWebKitAPI/Tests/WebKitCocoa/IndexedDBFileName-1.html: Added.
  • TestWebKitAPI/Tests/WebKitCocoa/IndexedDBFileName-2.html: Added.
  • TestWebKitAPI/Tests/WebKitCocoa/IndexedDBFileName.mm: Added.

(-[IndexedDBFileNameMessageHandler userContentController:didReceiveScriptMessage:]):
(runTest):
(createDirectories):
(TEST):

  • TestWebKitAPI/Tests/WebKitCocoa/IndexedDBTempFileSize.mm:

(TEST):

  • TestWebKitAPI/Tests/WebKitCocoa/StoreBlobThenDelete.mm:

(TEST):

3:27 PM Changeset in webkit [243018] by pvollan@apple.com
  • 2 edits in trunk/Source/WebKit

[iOS] Restrict iokit-user-client-class "IOHIDLibUserClient" from WebKit
https://bugs.webkit.org/show_bug.cgi?id=195821
<rdar://problem/47606250>

Reviewed by Brent Fulgham.

This should be removed from the WebContent sandbox on iOS.

  • Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb:
3:18 PM Changeset in webkit [243017] by Alan Bujtas
  • 4 edits
    2 adds in trunk

[ContentChangeObserver] HTMLImageElement::willRespondToMouseClickEvents returns quirk value.
https://bugs.webkit.org/show_bug.cgi?id=195657
<rdar://problem/48834987>

Reviewed by Simon Fraser.

Source/WebCore:

Images should not trigger hover by default (only when they actually respond to mouse events).

Test: fast/events/touch/ios/content-observation/visibility-change-with-image-content.html

  • page/ios/ContentChangeObserver.cpp:

(WebCore::ContentChangeObserver::StyleChangeScope::isConsideredClickable const):

LayoutTests:

  • fast/events/touch/ios/content-observation/visibility-change-with-image-content-expected.txt: Added.
  • fast/events/touch/ios/content-observation/visibility-change-with-image-content.html: Added.
3:18 PM Changeset in webkit [243016] by achristensen@apple.com
  • 3 edits in trunk/Source/WebKit

_WKDownload should conform to NSCopying protocol
https://bugs.webkit.org/show_bug.cgi?id=195718

Reviewed by Tim Horton.

This will allow us to use it as keys in NSMutableDictionaries, which Safari already kind of does.

  • UIProcess/API/Cocoa/_WKDownload.h:
  • UIProcess/API/Cocoa/_WKDownload.mm:

(-[_WKDownload copyWithZone:]):

3:06 PM Changeset in webkit [243015] by dino@apple.com
  • 5 edits
    1 copy
    1 add in trunk

Provide an option for an always-on fast click mode in iOS
https://bugs.webkit.org/show_bug.cgi?id=195822
<rdar://problem/48939357>

Reviewed by Sam Weinig.

Source/WebKit:

Add an option that will always trigger a click and never
wait for a double tap to zoom. It is disabled by default.

  • Shared/WebPreferences.yaml:
  • UIProcess/ios/WKContentViewInteraction.mm:

(-[WKContentView _handleSmartMagnificationInformationForPotentialTap:renderRect:fitEntireRect:viewportMinimumScale:viewportMaximumScale:]):

LayoutTests:

New test for "always fast click" mode.

  • fast/events/ios/ipad/fast-click-always-expected.txt: Added.
  • fast/events/ios/ipad/fast-click-always.html: Copied from LayoutTests/fast/events/ios/ipad/fast-click-double-tap-sends-click-on-insignificant-zoom.html.
  • fast/events/ios/ipad/fast-click-double-tap-sends-click-on-insignificant-zoom.html:
3:02 PM Changeset in webkit [243014] by jer.noble@apple.com
  • 22 edits
    4 copies
    2 adds in trunk

Add a "supportedConfiguration" dictionary to MediaCapabilitiesDecodingInfo and MediaCapabilitiesEncodingInfo
https://bugs.webkit.org/show_bug.cgi?id=195763

Reviewed by Jon Lee.

Source/WebCore:

Test: media/mediacapabilities/mock-decodingInfo-supportedConfiguration.html

Add support for a proposed addition to the Media Capabilities spec that would future-proof additional changes
to Media Capabilities by allowing sites to check exactly what properties were queried by the browser when
answering a decodeInfo() or enocdeInfo() query.

  • CMakeLists.txt:
  • DerivedSources-input.xcfilelist:
  • DerivedSources-output.xcfilelist:
  • DerivedSources.make:
  • Modules/mediacapabilities/AudioConfiguration.idl:
  • Modules/mediacapabilities/MediaCapabilities.cpp:

(WebCore::MediaCapabilities::decodingInfo):
(WebCore::MediaCapabilities::encodingInfo):

  • Modules/mediacapabilities/MediaCapabilities.idl:
  • Modules/mediacapabilities/MediaCapabilitiesDecodingInfo.idl:
  • Modules/mediacapabilities/MediaCapabilitiesEncodingInfo.idl:
  • Modules/mediacapabilities/MediaCapabilitiesInfo.idl:
  • Modules/mediacapabilities/MediaDecodingConfiguration.idl:
  • Modules/mediacapabilities/MediaEncodingConfiguration.idl:
  • Modules/mediacapabilities/VideoConfiguration.idl:
  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • platform/MediaCapabilitiesDecodingInfo.h: Copied from Source/WebCore/platform/graphics/cocoa/MediaEngineConfigurationFactoryCocoa.h.

(WebCore::MediaCapabilitiesDecodingInfo::MediaCapabilitiesDecodingInfo):

  • platform/MediaCapabilitiesEncodingInfo.h: Copied from Source/WebCore/platform/graphics/cocoa/MediaEngineConfigurationFactoryCocoa.h.

(WebCore::MediaCapabilitiesEncodingInfo::MediaCapabilitiesEncodingInfo):

  • platform/graphics/cocoa/MediaEngineConfigurationFactoryCocoa.cpp:

(WebCore::createMediaPlayerDecodingConfigurationCocoa):

  • platform/graphics/cocoa/MediaEngineConfigurationFactoryCocoa.h:
  • platform/graphics/gstreamer/MediaEngineConfigurationFactoryGStreamer.cpp:

(WebCore::createMediaPlayerDecodingConfigurationGStreamer):

  • platform/graphics/gstreamer/MediaEngineConfigurationFactoryGStreamer.h:
  • platform/mediacapabilities/MediaEngineConfigurationFactory.cpp:

(WebCore::MediaEngineConfigurationFactory::createDecodingConfiguration):
(WebCore::MediaEngineConfigurationFactory::createEncodingConfiguration):

  • platform/mediacapabilities/MediaEngineConfigurationFactory.h:
  • platform/mock/MediaEngineConfigurationFactoryMock.cpp:

(WebCore::MediaEngineConfigurationFactoryMock::createDecodingConfiguration):
(WebCore::MediaEngineConfigurationFactoryMock::createEncodingConfiguration):

  • platform/mock/MediaEngineConfigurationFactoryMock.h:

LayoutTests:

  • media/mediacapabilities/mock-decodingInfo-supportedConfiguration-expected.txt: Added.
  • media/mediacapabilities/mock-decodingInfo-supportedConfiguration.html: Added.
2:45 PM Changeset in webkit [243013] by Jon Davis
  • 2 edits in trunk/PerformanceTests

Fixed a bug preventing the overall sore to be displayed on JetStream2
https://bugs.webkit.org/show_bug.cgi?id=195817

Rubber-stamped by Saam Barati.

  • JetStream2/JetStreamDriver.js:

(Driver.prototype.async.start):

2:36 PM Changeset in webkit [243012] by timothy@apple.com
  • 12 edits in trunk

Add support to WebPage for getting the contents as an attributed string.
https://bugs.webkit.org/show_bug.cgi?id=195636
rdar://problem/45055697

Reviewed by Tim Horton.

Source/WebKit:

  • Shared/mac/AttributedString.h:

(WebKit::AttributedString::AttributedString):

  • Shared/mac/AttributedString.mm:

(IPC::ArgumentCoder<WebKit::AttributedString>::encode):
(IPC::ArgumentCoder<WebKit::AttributedString>::decode):

  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView _getContentsAsAttributedStringWithCompletionHandler:]):

  • UIProcess/API/Cocoa/WKWebViewPrivate.h:
  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::getContentsAsAttributedString):

  • UIProcess/WebPageProxy.h:
  • WebProcess/WebPage/Cocoa/WebPageCocoa.mm:

(WebKit::WebPage::getContentsAsAttributedString):

  • WebProcess/WebPage/WebPage.h:
  • WebProcess/WebPage/WebPage.messages.in:

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/WKWebViewGetContents.mm:

(TEST(WKWebView, GetContentsShouldReturnAttributedString): Added.

2:33 PM Changeset in webkit [243011] by ysuzuki@apple.com
  • 9 edits in trunk/Source/JavaScriptCore

[JSC] Make more properties lazily-allocated in JSGlobalObject, including properties only used in JIT mode
https://bugs.webkit.org/show_bug.cgi?id=195816

Reviewed by Michael Saboff.

This patch makes more properties lazily-allocated in JSGlobalObject. This patch makes the following lazily-allocated.

  1. iteratorResultObjectStructure
  2. WebAssembly related objects except for JSWebAssembly top-level object.
  • CMakeLists.txt:
  • DerivedSources-input.xcfilelist:
  • DerivedSources-output.xcfilelist:
  • DerivedSources.make:
  • runtime/JSGlobalObject.cpp:

(JSC::JSGlobalObject::init):
(JSC::JSGlobalObject::visitChildren):

  • runtime/JSGlobalObject.h:

(JSC::JSGlobalObject::iteratorResultObjectStructure const):
(JSC::JSGlobalObject::webAssemblyModuleRecordStructure const):
(JSC::JSGlobalObject::webAssemblyFunctionStructure const):
(JSC::JSGlobalObject::webAssemblyWrapperFunctionStructure const):
(JSC::JSGlobalObject::webAssemblyToJSCalleeStructure const):

  • wasm/js/JSWebAssembly.cpp:
  • wasm/js/JSWebAssembly.h:
2:30 PM Changeset in webkit [243010] by pvollan@apple.com
  • 3 edits in trunk/Source/WebKit

[iOS] Fix sandbox violation
https://bugs.webkit.org/show_bug.cgi?id=195387
<rdar://problem/48442387>

Reviewed by Brent Fulgham.

The sandbox on iOS and macOS needs to allow mach lookup to the "com.apple.nesessionmanager.content-filter"
mach service. Also, mach lookups to "com.apple.nehelper" should be allowed.

  • Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb:
  • WebProcess/com.apple.WebProcess.sb.in:
2:07 PM Changeset in webkit [243009] by Chris Dumez
  • 7 edits in trunk

[PSON] Make sure the WebProcessCache is leverage when relaunching a process after termination
https://bugs.webkit.org/show_bug.cgi?id=195747

Reviewed by Geoff Garen.

Source/WebKit:

Make sure the WebProcessCache and the prewarmed process are used when relaunching a process
after termination (e.g. crash).

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::reattachToWebProcess):
(WebKit::WebPageProxy::reattachToWebProcessForReload):
(WebKit::WebPageProxy::reattachToWebProcessWithItem):
(WebKit::WebPageProxy::loadRequest):
(WebKit::WebPageProxy::loadFile):
(WebKit::WebPageProxy::loadData):
(WebKit::WebPageProxy::loadAlternateHTML):
(WebKit::WebPageProxy::loadWebArchiveData):
(WebKit::WebPageProxy::navigateToPDFLinkWithSimulatedClick):

  • UIProcess/WebPageProxy.h:
  • UIProcess/WebProcessPool.cpp:

(WebKit::WebProcessPool::processForRegistrableDomain):
(WebKit::WebProcessPool::createWebPage):
(WebKit::WebProcessPool::processForNavigationInternal):
(WebKit::WebProcessPool::tryPrewarmWithDomainInformation):

  • UIProcess/WebProcessPool.h:

Tools:

Add API test coverage.

  • TestWebKitAPI/Tests/WebKitCocoa/ProcessSwapOnNavigation.mm:
1:27 PM Changeset in webkit [243008] by pvollan@apple.com
  • 15 edits in trunk/Source

[iOS] Block the accessibility server when accessibility is not enabled.
https://bugs.webkit.org/show_bug.cgi?id=195342

Reviewed by Brent Fulgham.

Source/WebKit:

By default, block the iOS accessibility server in the sandbox. If accessibility is enabled,
let the UI process issue a mach extension to the WebContent process. The UI process will
issue the mach extension the the WebContent process by its process identifier. The sandbox
extension handle is sent to the WebContent process to be consumed. The message will be sent
when the WebProcess has finished launching, and also when accessibility is turned on.

  • Platform/spi/ios/AccessibilitySupportSPI.h:
  • Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb:
  • Shared/SandboxExtension.h:
  • Shared/mac/SandboxExtensionMac.mm:

(WebKit::SandboxExtensionImpl::create):
(WebKit::SandboxExtensionImpl::sandboxExtensionForType):
(WebKit::SandboxExtensionImpl::SandboxExtensionImpl):
(WebKit::SandboxExtension::createHandleForMachLookupByPid):

  • UIProcess/Cocoa/WebProcessPoolCocoa.mm:

(WebKit::WebProcessPool::registerNotificationObservers):
(WebKit::WebProcessPool::unregisterNotificationObservers):

  • UIProcess/WebProcessPool.h:
  • UIProcess/WebProcessProxy.cpp:

(WebKit::WebProcessProxy::didFinishLaunching):

  • UIProcess/WebProcessProxy.h:
  • UIProcess/ios/WebProcessProxyIOS.mm:

(WebKit::WebProcessProxy::unblockAccessibilityServerIfNeeded):

  • WebProcess/WebProcess.cpp:

(WebKit::WebProcess::unblockAccessibilityServer):

  • WebProcess/WebProcess.h:
  • WebProcess/WebProcess.messages.in:

Source/WTF:

Add SPI to issue a mach extension to a process by pid.

  • wtf/spi/darwin/SandboxSPI.h:
1:06 PM Changeset in webkit [243007] by Antti Koivisto
  • 18 edits in trunk/Source

Use Region for event region even when it is a rectangle
https://bugs.webkit.org/show_bug.cgi?id=195803

Reviewed by Simon Fraser.

Source/WebCore:

Region type is now optimized for the common single-rectangle case so we can simplify code.

  • platform/graphics/GraphicsLayer.cpp:

(WebCore::GraphicsLayer::setEventRegion):

  • platform/graphics/GraphicsLayer.h:

(WebCore::GraphicsLayer::eventRegion const):

  • platform/graphics/ca/GraphicsLayerCA.cpp:

(WebCore::GraphicsLayerCA::setEventRegion):

  • platform/graphics/ca/GraphicsLayerCA.h:
  • platform/graphics/ca/PlatformCALayer.h:
  • platform/graphics/ca/cocoa/PlatformCALayerCocoa.h:
  • rendering/RenderLayerBacking.cpp:

(WebCore::RenderLayerBacking::paintIntoLayer):

Source/WebKit:

  • Shared/RemoteLayerTree/RemoteLayerTreePropertyApplier.mm:

(WebKit::RemoteLayerTreePropertyApplier::applyProperties):

  • Shared/RemoteLayerTree/RemoteLayerTreeTransaction.h:
  • Shared/RemoteLayerTree/RemoteLayerTreeTransaction.mm:

(WebKit::RemoteLayerTreeTransaction::LayerProperties::LayerProperties):
(WebKit::RemoteLayerTreeTransaction::LayerProperties::encode const):
(WebKit::RemoteLayerTreeTransaction::LayerProperties::decode):

  • UIProcess/RemoteLayerTree/RemoteLayerTreeNode.h:

(WebKit::RemoteLayerTreeNode::eventRegion const):

  • UIProcess/RemoteLayerTree/RemoteLayerTreeNode.mm:

(WebKit::RemoteLayerTreeNode::setEventRegion):

  • UIProcess/RemoteLayerTree/ios/RemoteLayerTreeViews.mm:

(WebKit::collectDescendantViewsAtPoint):

  • WebProcess/WebPage/RemoteLayerTree/PlatformCALayerRemote.cpp:

(WebKit::PlatformCALayerRemote::setEventRegion):
(WebKit::PlatformCALayerRemote::eventRegion const): Deleted.

  • WebProcess/WebPage/RemoteLayerTree/PlatformCALayerRemote.h:
12:34 PM Changeset in webkit [243006] by jer.noble@apple.com
  • 2 edits in trunk/Source/WebCore

Unreviewed unified build fix: GPUBindGroup has a default public constructor and destructor, so all its member
variables must be fully defined.

  • platform/graphics/gpu/GPUBindGroup.h:
12:14 PM Changeset in webkit [243005] by dinfuehr@igalia.com
  • 2 edits in trunk/Source/JavaScriptCore

[CMake] Move test .js files into testapiScripts
https://bugs.webkit.org/show_bug.cgi?id=195565

Reviewed by Yusuke Suzuki.

testapi expect .js file in the testapiScripts-directory.

  • shell/CMakeLists.txt:
11:44 AM Changeset in webkit [243004] by Joseph Pecoraro
  • 4 edits
    2 adds in trunk/Source/WebInspectorUI

Web Inspector: Network - Toggle Between Live Activity and Imported HAR resource collections
https://bugs.webkit.org/show_bug.cgi?id=195734

Reviewed by Devin Rousso.

  • Localizations/en.lproj/localizedStrings.js:
  • UserInterface/Images/NetworkHAR.svg: Added.
  • UserInterface/Images/NetworkOverview.svg: Added.
  • UserInterface/Views/NetworkTableContentView.css:

(.content-view.tab.network > .content-browser > .navigation-bar .hierarchical-path .icon):
(.network-overview-icon > .icon):
(.network-har-icon > .icon):
(@media (prefers-color-scheme: dark)):

  • UserInterface/Views/NetworkTableContentView.js:

(WI.NetworkTableContentView):
(WI.NetworkTableContentView.prototype.get navigationItems):
(WI.NetworkTableContentView.prototype.reset):
(WI.NetworkTableContentView.prototype.tableIndexForRepresentedObject):
(WI.NetworkTableContentView.prototype.tableRepresentedObjectForIndex):
(WI.NetworkTableContentView.prototype.tableNumberOfRows):
(WI.NetworkTableContentView.prototype.tableCellContextMenuClicked):
(WI.NetworkTableContentView.prototype.tableSelectionDidChange):
(WI.NetworkTableContentView.prototype.tablePopulateCell):
(WI.NetworkTableContentView.prototype._addCollection):
(WI.NetworkTableContentView.prototype._setActiveCollection):
(WI.NetworkTableContentView.prototype._addCollectionPathComponent):
(WI.NetworkTableContentView.prototype._collectionsHierarchicalPathComponentWasSelected):
(WI.NetworkTableContentView.prototype._changeCollection):
(WI.NetworkTableContentView.prototype.handleClearShortcut):
(WI.NetworkTableContentView.prototype._updateWaterfallTimeRange):
(WI.NetworkTableContentView.prototype._updateWaterfallTimelineRuler):
(WI.NetworkTableContentView.prototype._canExportHAR):
(WI.NetworkTableContentView.prototype._processPendingEntries):
(WI.NetworkTableContentView.prototype._populateWithInitialResourcesIfNeeded):
(WI.NetworkTableContentView.prototype._rowIndexForRepresentedObject):
(WI.NetworkTableContentView.prototype._updateEntryForResource):
(WI.NetworkTableContentView.prototype._updateEmptyFilterResultsMessage):
(WI.NetworkTableContentView.prototype._mainResourceDidChange):
(WI.NetworkTableContentView.prototype._mainFrameDidChange):
(WI.NetworkTableContentView.prototype._resourceLoadingDidFinish):
(WI.NetworkTableContentView.prototype._resourceLoadingDidFail):
(WI.NetworkTableContentView.prototype._resourceTransferSizeDidChange):
(WI.NetworkTableContentView.prototype._handleResourceAdded):
(WI.NetworkTableContentView.prototype._runForMainCollection):
(WI.NetworkTableContentView.prototype._isShowingMainCollection):
(WI.NetworkTableContentView.prototype._insertResourceAndReloadTable):
(WI.NetworkTableContentView.prototype._handleNodeDidFireEvent):
(WI.NetworkTableContentView.prototype._handleNodeLowPowerChanged):
(WI.NetworkTableContentView.prototype._updateSort):
(WI.NetworkTableContentView.prototype._updateFilteredEntries):
(WI.NetworkTableContentView.prototype._urlFilterDidChange):
(WI.NetworkTableContentView.prototype._HARResources):
(WI.NetworkTableContentView.prototype._importHAR):
Introduce the concept of collections that can be swapped in/out
to re-render the Network Table with different contents.

11:26 AM Changeset in webkit [243003] by Shawn Roberts
  • 7 edits in trunk

Unreviewed, rolling out r242952.

Causing API failures on iOS Simulator

Reverted changeset:

"[PSON] Make sure the WebProcessCache is leverage when
relaunching a process after termination"
https://bugs.webkit.org/show_bug.cgi?id=195747
https://trac.webkit.org/changeset/242952

11:18 AM Changeset in webkit [243002] by pvollan@apple.com
  • 26 edits
    4 adds in trunk/Source

[macOS] Broker access to Speech Synthesis
https://bugs.webkit.org/show_bug.cgi?id=195645
<rdar://problem/35369026>

Reviewed by Brent Fulgham.

To be able to close the connection to the speech synthesis daemon in the WebContent process,
speech synthesis should be performed in the UI process. This patch forwards speech synthesis
requests to the UI process by sending messages. On the UI process side, the speech synthesis
is performed by simply using the existing platform speech synthesizer. Speech synthesis
events are sent back to the WebContent process. All messages are async, except for the
message to get the list of available voices.

Source/WebCore:

No new tests, covered by existing tests.

  • Modules/speech/DOMWindowSpeechSynthesis.cpp:

(WebCore::DOMWindowSpeechSynthesis::speechSynthesis):

  • Modules/speech/SpeechSynthesis.cpp:

(WebCore::SpeechSynthesis::create):
(WebCore::SpeechSynthesis::SpeechSynthesis):
(WebCore::SpeechSynthesis::setPlatformSynthesizer):
(WebCore::SpeechSynthesis::getVoices):
(WebCore::SpeechSynthesis::startSpeakingImmediately):
(WebCore::SpeechSynthesis::cancel):
(WebCore::SpeechSynthesis::pause):
(WebCore::SpeechSynthesis::resume):
(WebCore::SpeechSynthesis::boundaryEventOccurred):
(WebCore::SpeechSynthesis::didStartSpeaking):
(WebCore::SpeechSynthesis::didFinishSpeaking):
(WebCore::SpeechSynthesis::didPauseSpeaking):
(WebCore::SpeechSynthesis::didResumeSpeaking):
(WebCore::SpeechSynthesis::speakingErrorOccurred):
(WebCore::SpeechSynthesis::voicesChanged):

  • Modules/speech/SpeechSynthesis.h:
  • WebCore.xcodeproj/project.pbxproj:
  • page/Page.cpp:

(WebCore::Page::Page):

  • page/Page.h:

(WebCore::Page::speechSynthesisClient const):

  • page/PageConfiguration.cpp:
  • page/PageConfiguration.h:
  • page/SpeechSynthesisClient.h: Added.
  • platform/PlatformSpeechSynthesisUtterance.h:
  • platform/PlatformSpeechSynthesizer.h:
  • platform/ios/PlatformSpeechSynthesizerIOS.mm:

(-[WebSpeechSynthesisWrapper speechSynthesizer:willSpeakRangeOfSpeechString:utterance:]):

  • platform/mac/PlatformSpeechSynthesizerMac.mm:

(-[WebSpeechSynthesisWrapper speechSynthesizer:willSpeakWord:ofString:]):

  • platform/mock/PlatformSpeechSynthesizerMock.cpp:

(WebCore::PlatformSpeechSynthesizerMock::speak):

Source/WebKit:

  • Sources.txt:
  • UIProcess/Cocoa/WebPageProxyCocoa.mm:

(WebKit::WebPageProxy::didStartSpeaking):
(WebKit::WebPageProxy::didFinishSpeaking):
(WebKit::WebPageProxy::didPauseSpeaking):
(WebKit::WebPageProxy::didResumeSpeaking):
(WebKit::WebPageProxy::speakingErrorOccurred):
(WebKit::WebPageProxy::boundaryEventOccurred):
(WebKit::WebPageProxy::voicesDidChange):

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::ensureSpeechSynthesisData):
(WebKit::WebPageProxy::speechSynthesisVoiceList):
(WebKit::WebPageProxy::speechSynthesisSpeak):
(WebKit::WebPageProxy::speechSynthesisCancel):
(WebKit::WebPageProxy::speechSynthesisPause):
(WebKit::WebPageProxy::speechSynthesisResume):

  • UIProcess/WebPageProxy.h:
  • UIProcess/WebPageProxy.messages.in:
  • WebKit.xcodeproj/project.pbxproj:
  • WebProcess/WebCoreSupport/WebSpeechSynthesisClient.cpp: Added.

(WebKit::WebSpeechSynthesisClient::voiceList):
(WebKit::WebSpeechSynthesisClient::speak):
(WebKit::WebSpeechSynthesisClient::cancel):
(WebKit::WebSpeechSynthesisClient::pause):
(WebKit::WebSpeechSynthesisClient::resume):

  • WebProcess/WebCoreSupport/WebSpeechSynthesisClient.h: Added.

(WebKit::WebSpeechSynthesisClient::WebSpeechSynthesisClient):
(WebKit::WebSpeechSynthesisClient::~WebSpeechSynthesisClient):

  • WebProcess/WebCoreSupport/WebSpeechSynthesisVoice.h: Added.

(WebKit::WebSpeechSynthesisVoice::encode const):
(WebKit::WebSpeechSynthesisVoice::decode):

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::m_hostFileDescriptor):
(WebKit::WebPage::speakingErrorOccurred):
(WebKit::WebPage::boundaryEventOccurred):
(WebKit::WebPage::voicesDidChange):

  • WebProcess/WebPage/WebPage.h:
  • WebProcess/WebPage/WebPage.messages.in:
  • WebProcess/com.apple.WebProcess.sb.in:
  • WebProcess/glib/WebProcessGLib.cpp:
11:07 AM Changeset in webkit [243001] by Alan Coon
  • 2 edits in branches/safari-607.1.40.0-branch/Source/WebCore

Revert r242781. rdar://problem/48795264

11:07 AM Changeset in webkit [243000] by Alan Coon
  • 2 edits in branches/safari-607.1.40.0-branch/Source/WebCore

Revert r242822. rdar://problem/48795264

10:14 AM Changeset in webkit [242999] by mark.lam@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

Gardening: add a missing exception check after r242991.
https://bugs.webkit.org/show_bug.cgi?id=195791

Unreviewed.

  • tools/JSDollarVM.cpp:

(JSC::functionGetGetterSetter):

9:50 AM Changeset in webkit [242998] by Antti Koivisto
  • 2 edits in trunk/Source/WebCore

Try to fix watchOS build.

  • platform/graphics/Region.h:

(WebCore::Region::Span::decode):

9:26 AM Changeset in webkit [242997] by Simon Fraser
  • 12 edits
    4 adds in trunk

[Async overflow Scrolling] Update positioned node layers when overflows are scrolled
https://bugs.webkit.org/show_bug.cgi?id=195733
rdar://problem/11642295

Reviewed by Antti Koivisto.

Source/WebCore:

Make ScrollingTree positioned nodes in the two cases where we need them, as
detected by RenderLayerCompositor::computeCoordinatedPositioningForLayer().

For "Moves" layers we know that the overflow is not in the z-order ancestor chain,
so ScrollingTree needs a map of overflow node -> affected positioned nodes which
notifyRelatedNodesAfterScrollPositionChange() uses to find nodes to update after
a scroll. Computing these dependent nodes in RenderLayerCompositor() would require
correct dependency analysis between an overflow layers and "positioned" layers which
is hard. It's easier to have "positioned" layers figure out which overflow nodes
affect them, then compute the inverse relationship when the scrolling tree is updated
which happens in ScrollingTreePositionedNode::commitStateBeforeChildren().

Tests: scrollingcoordinator/ios/absolute-layer-should-not-move-with-scroll.html

scrollingcoordinator/ios/relative-layer-should-move-with-scroll.html

  • page/scrolling/ScrollingTree.cpp:

(WebCore::ScrollingTree::commitTreeState):
(WebCore::ScrollingTree::applyLayerPositions):
(WebCore::ScrollingTree::notifyRelatedNodesAfterScrollPositionChange):
(WebCore::ScrollingTree::scrollingTreeAsText):

  • page/scrolling/ScrollingTree.h:

(WebCore::ScrollingTree::overflowRelatedNodes):

  • page/scrolling/ScrollingTreeOverflowScrollingNode.cpp:

(WebCore::ScrollingTreeOverflowScrollingNode::dumpProperties const):

  • page/scrolling/ScrollingTreeOverflowScrollingNode.h:
  • page/scrolling/cocoa/ScrollingTreePositionedNode.mm:

(WebCore::ScrollingTreePositionedNode::commitStateBeforeChildren):
(WebCore::ScrollingTreePositionedNode::applyLayerPositions):
(WebCore::ScrollingTreePositionedNode::relatedNodeScrollPositionDidChange):

  • rendering/RenderLayerCompositor.cpp:

(WebCore::layerContainingBlockCrossesCoordinatedScrollingBoundary):
(WebCore::layerParentedAcrossCoordinatedScrollingBoundary):
(WebCore::RenderLayerCompositor::computeCoordinatedPositioningForLayer const):
(WebCore::collectRelatedCoordinatedScrollingNodes):
(WebCore::RenderLayerCompositor::updateScrollingNodeForPositioningRole):

LayoutTests:

New tests that use uiController.scrollUpdatesDisabled, and are the two move/stationary
cases.

  • platform/ios-wk2/scrollingcoordinator/scrolling-tree/positioned-nodes-expected.txt:
  • scrollingcoordinator/ios/absolute-layer-should-not-move-with-scroll-expected.html: Added.
  • scrollingcoordinator/ios/absolute-layer-should-not-move-with-scroll.html: Added.
  • scrollingcoordinator/ios/relative-layer-should-move-with-scroll-expected.html: Added.
  • scrollingcoordinator/ios/relative-layer-should-move-with-scroll.html: Added.
  • scrollingcoordinator/ios/ui-scrolling-tree-expected.txt: Fixed the last paren showing up.
  • scrollingcoordinator/scrolling-tree/positioned-nodes-expected.txt: We make positioned nodes now.
9:20 AM Changeset in webkit [242996] by Kocsen Chung
  • 7 edits in branches/safari-607-branch/Source

Versioning.

8:43 AM Changeset in webkit [242995] by Antti Koivisto
  • 11 edits in trunk/Source

Optimize Region for single rectangle case
https://bugs.webkit.org/show_bug.cgi?id=195743

Reviewed by Simon Fraser.

Source/WebCore:

Instrumentation shows vast majority of Region objects consist of a single rectangle. However it always allocates
the large Shape data structure. This makes it unsuitable to use as a member in any popular objects.

This patch optimizes the single rectangle case by using only the bounds rectangle to describe it.
Shape is allocated on demand. This makes it safe to use Region as a data member where a rectangle is the common case.

The patch also modernizes Region encoding/decoding support.

  • platform/graphics/Region.cpp:

(WebCore::Region::Region):
(WebCore::Region::~Region):
(WebCore::Region::operator=):
(WebCore::Region::rects const):
(WebCore::Region::contains const):
(WebCore::Region::intersects const):
(WebCore::Region::Shape::Shape):
(WebCore::Region::Shape::appendSpan):
(WebCore::Region::dump const):
(WebCore::Region::intersect):
(WebCore::Region::unite):
(WebCore::Region::subtract):
(WebCore::Region::translate):
(WebCore::Region::setShape):
(WebCore::Region::Shape::isValid const): Deleted.
(WebCore::Region::Shape::swap): Deleted.
(WebCore::Region::updateBoundsFromShape): Deleted.

Remove some now unused function.

  • platform/graphics/Region.h:

(WebCore::Region::isRect const):
(WebCore::Region::gridSize const):
(WebCore::Region::copyShape const):
(WebCore::operator==):
(WebCore::Region::Span::encode const):
(WebCore::Region::Span::decode):
(WebCore::Region::Shape::encode const):
(WebCore::Region::Shape::decode):
(WebCore::Region::encode const):
(WebCore::Region::decode):

This is now part of type.

(WebCore::Region::isValid const): Deleted.
(WebCore::Region::Span::Span): Deleted.
(WebCore::Region::shapeSegments const): Deleted.
(WebCore::Region::shapeSpans const): Deleted.
(WebCore::Region::setShapeSegments): Deleted.
(WebCore::Region::setShapeSpans): Deleted.
(WebCore::Region::Shape::segments const): Deleted.
(WebCore::Region::Shape::spans const): Deleted.
(WebCore::Region::Shape::setSegments): Deleted.
(WebCore::Region::Shape::setSpans): Deleted.

No need to expose these for encoding anymore.

Source/WebKit:

  • Shared/RemoteLayerTree/RemoteLayerTreeTransaction.mm:

(WebKit::RemoteLayerTreeTransaction::LayerProperties::decode):

  • Shared/WebCoreArgumentCoders.cpp:

(IPC::ArgumentCoder<EventTrackingRegions>::decode):
(IPC::ArgumentCoder<Region::Span>::encode): Deleted.
(IPC::ArgumentCoder<Region::Span>::decode): Deleted.
(IPC::ArgumentCoder<Region>::encode): Deleted.
(IPC::ArgumentCoder<Region>::decode): Deleted.

  • Shared/WebCoreArgumentCoders.h:
4:25 AM Changeset in webkit [242994] by dinfuehr@igalia.com
  • 2 edits in trunk/JSTests

[ARM,MIPS] Skip slow tests
https://bugs.webkit.org/show_bug.cgi?id=195799

Unreviewed, test does not finish on ARM and MIPS within the
timeout limit.

  • stress/symbol-is-destructed-before-refing-underlying-symbol-impl.js:
2:32 AM Changeset in webkit [242993] by Fujii Hironori
  • 2 edits in trunk/LayoutTests

Unreviewed test gardening for WinCairo port

  • platform/wincairo/TestExpectations: Unskipped http/tests/ssl and Marked them the current results.
1:12 AM Changeset in webkit [242992] by Devin Rousso
  • 35 edits
    3 adds in trunk

Web Inspector: provide a way to capture a screenshot of a node from within the page
https://bugs.webkit.org/show_bug.cgi?id=194279
<rdar://problem/10731573>

Reviewed by Joseph Pecoraro.

Source/JavaScriptCore:

Add console.screenshot functionality, which displays a screenshot of a given object (if
able) within Web Inspector's Console tab. From there, it can be viewed and saved.

Currently, console.screenshot will

  • capture an image of a Node (if provided)
  • capture an image of the viewport if nothing is provided
  • inspector/protocol/Console.json:

Add Image enum value to ConsoleMessage type.

  • runtime/ConsoleTypes.h:
  • inspector/ConsoleMessage.h:
  • inspector/ConsoleMessage.cpp:

(Inspector::messageTypeValue):

  • runtime/ConsoleClient.h:
  • runtime/ConsoleObject.cpp:

(JSC::ConsoleObject::finishCreation):
(JSC::consoleProtoFuncScreenshot): Added.

  • inspector/JSGlobalObjectConsoleClient.h:
  • inspector/JSGlobalObjectConsoleClient.cpp:

(Inspector::JSGlobalObjectConsoleClient::screenshot): Added.

Source/WebCore:

Test: inspector/console/console-screenshot.html

Add console.screenshot functionality, which displays a screenshot of a given object (if
able) within Web Inspector's Console tab. From there, it can be viewed and saved.

Currently, console.screenshot will

  • capture an image of a Node (if provided)
  • capture an image of the viewport if nothing is provided
  • page/PageConsoleClient.h:
  • page/PageConsoleClient.cpp:

(WebCore::PageConsoleClient::addMessage):
(WebCore::PageConsoleClient::screenshot): Added.

  • workers/WorkerConsoleClient.h:
  • workers/WorkerConsoleClient.cpp:

(WebCore::WorkerConsoleClient::screenshot): Added.

  • worklets/WorkletConsoleClient.h:
  • worklets/WorkletConsoleClient.cpp:

(WebCore::WorkletConsoleClient::screenshot): Added.

  • inspector/CommandLineAPIModuleSource.js:

(CommandLineAPIImpl.prototype.screenshot): Added.

  • inspector/InspectorInstrumentation.h:

Source/WebInspectorUI:

Add console.screenshot functionality, which displays a screenshot of a given object (if
able) within Web Inspector's Console tab. From there, it can be viewed and saved.

Currently, console.screenshot will

  • capture an image of a Node (if provided)
  • capture an image of the viewport if nothing is provided
  • UserInterface/Models/ConsoleMessage.js:

(WI.ConsoleMessage):

  • UserInterface/Views/ConsoleCommandView.js:

(WI.ConsoleCommandView.prototype.render):

  • UserInterface/Views/ConsoleMessageView.js:

(WI.ConsoleMessageView.prototype.render):
(WI.ConsoleMessageView.prototype.toClipboardString):
(WI.ConsoleMessageView.prototype._appendMessageTextAndArguments):
(WI.ConsoleMessageView.prototype._appendSavedResultIndex):
(WI.ConsoleMessageView.prototype._appendStackTrace):
(WI.ConsoleMessageView.prototype._makeExpandable):
(WI.ConsoleMessageView.prototype._handleContextMenu): Added.

  • UserInterface/Views/ConsoleMessageView.css:

(.console-user-command.special-user-log > .console-message-body): Added.
(.console-message-body): Added.
(.console-message-body > span): Added.
(.console-message-body > span > :matches(.console-message-enclosed, .console-message-preview, .console-message-preview-divider)): Added.
(.console-message-body > .console-image): Added.
(.console-message-body > .show-grid): Added.
(.console-error-level .console-message-body): Added.
(.console-warning-level .console-message-body): Added.
(.console-log-level.console-image-container::before): Added.
(.console-user-command > .console-message-body): Added.
(.console-warning-level .console-message-body): Added.
(.console-error-level .console-message-body): Added.
(.console-user-command > .console-message-body): Added.
(.console-user-command.special-user-log > .console-message-text): Deleted.
(.console-message-text): Deleted.
(.console-message-text > span): Deleted.
(.console-message-text > span > :matches(.console-message-enclosed, .console-message-preview, .console-message-preview-divider)): Deleted.
(.console-error-level .console-message-text): Deleted.
(.console-warning-level .console-message-text): Deleted.
(.console-user-command > .console-message-text): Deleted.
(.console-warning-level .console-message-text): Deleted.
(.console-error-level .console-message-text): Deleted.
(.console-user-command > .console-message-text): Deleted.

  • UserInterface/Views/LogContentView.css:

(.search-in-progress .console-item:not(.filtered-out-by-search).special-user-log .console-message-text .highlighted): Added.
(.search-in-progress .console-item:not(.filtered-out-by-search).special-user-log .console-message-body .highlighted): Deleted.
Renamed variables/classes to be more semantically correct when the content is an image.

  • _messageTextElement to _messageBodyElement (JS)
  • .console-message-text to .console-message-body (CSS)
  • UserInterface/Controllers/JavaScriptLogViewController.js:

(WI.JavaScriptLogViewController.prototype.renderPendingMessages):

  • UserInterface/Views/Main.css:

(:matches(img, canvas).show-grid):
(@media (prefers-color-scheme: dark) :matches(img, canvas).show-grid):

  • UserInterface/Base/FileUtilities.js:

(WI.FileUtilities.screenshotString): Added.

  • UserInterface/Models/NativeFunctionParameters.js:
  • UserInterface/Controllers/JavaScriptRuntimeCompletionProvider.js:
  • UserInterface/Images/ConsoleImage.svg: Copied from UserInterface/Images/Canvas.svg.
  • Localizations/en.lproj/localizedStrings.js:

LayoutTests:

  • js/console.html:
  • js/console-expected.txt:
  • inspector/console/console-screenshot.html: Added.
  • inspector/console/console-screenshot-expected.txt: Added.
  • http/tests/inspector/dom/cross-domain-inspected-node-access-expected.txt:

Mar 14, 2019:

10:56 PM Changeset in webkit [242991] by ysuzuki@apple.com
  • 13 edits
    1 add in trunk

[JSC] Retain PrivateName of Symbol before passing it to operations potentially incurring GC
https://bugs.webkit.org/show_bug.cgi?id=195791
<rdar://problem/48806130>

Reviewed by Mark Lam.

JSTests:

  • stress/symbol-is-destructed-before-refing-underlying-symbol-impl.js: Added.

(foo):

Source/JavaScriptCore:

Consider the following example:

void putByVal(JSObject*, PropertyName propertyName, ...);

putByVal(object, symbol->privateName(), ...);

PropertyName does not retain the passed UniquedStringImpl*. It just holds the pointer to UniquedStringImpl*.
It means that since Symbol::privateName() returns const PrivateName& instead of PrivateName, putByVal
and its caller does not retain UniquedStringImpl* held in PropertyName. The problem happens when the putByVal
incurs GC, and when the symbol is missing in the conservative GC scan. The underlying UniquedStringImpl* of
PropertyName can be accidentally destroyed in the middle of the putByVal operation. We should retain PrivateName
before passing it to operations which takes it as PropertyName.

  1. We use the code pattern like this.

auto propertyName = symbol->privateName();
someOperation(..., propertyName);

This pattern is well aligned to existing JSValue::toPropertyKey(exec) and JSString::toIdentifier(exec) code patterns.

auto propertyName = value.toPropertyKey(exec);
RETURN_IF_EXCEPTION(scope, { });
someOperation(..., propertyName);

  1. We change Symbol::privateName() to returning PrivateName instead of const PrivateName& to avoid potential dangerous use cases. This is OK because the code using Symbol::privateName() is not a critical path, and they typically need to retain PrivateName.
  1. We audit similar functions toPropertyKey(exec) and toIdentifier(exec) for needed but missing exception checks. BTW, these functions are safe to the problem fixed in this patch since they return Identifier instead of const Identifier&.

Mark and Robin investigated and offered important data to understand what went wrong. And figured out the reason behind
the mysterious behavior shown in the data, and now, we confirm that this is the right fix for this bug.

  • dfg/DFGOperations.cpp:
  • jit/JITOperations.cpp:

(JSC::tryGetByValOptimize):

  • runtime/JSFunction.cpp:

(JSC::JSFunction::setFunctionName):

  • runtime/JSModuleLoader.cpp:

(JSC::printableModuleKey):

  • runtime/JSONObject.cpp:

(JSC::Stringifier::Stringifier):

  • runtime/Symbol.cpp:

(JSC::Symbol::descriptiveString const):
(JSC::Symbol::description const):

  • runtime/Symbol.h:
  • runtime/SymbolConstructor.cpp:

(JSC::symbolConstructorKeyFor):

  • tools/JSDollarVM.cpp:

(JSC::functionGetGetterSetter):

Source/WebCore:

  • bindings/js/ScriptController.cpp:

(WebCore::ScriptController::setupModuleScriptHandlers):

10:45 PM Changeset in webkit [242990] by ysuzuki@apple.com
  • 6 edits in trunk/Source/JavaScriptCore

REGRESSION(r242841): Fix conservative DFG OSR entry validation to accept values which will be stored in AnyInt / Double flush formats
https://bugs.webkit.org/show_bug.cgi?id=195752

Reviewed by Saam Barati.

We fixed the bug skipping AbstractValue validations when the flush format is Double or AnyInt. But it
was too conservative. While validating inputs with AbstractValue is mandatory (without it, whole CFA
falls into wrong condition), our validation does not care AnyInt and Double representations in lower
tiers. For example, if a value is stored in Double flush format in DFG, its AbstractValue becomes
SpecFullDouble. However, it does not include Int32 and OSR entry is rejected if Int32 comes for DoubleRep
OSR entry value. This is wrong since we later convert these numbers into DoubleRep representation
before entering DFG code.

This patch performs AbstractValue validation onto the correctly converted value with flush format hint.

And it still does not fix OSR entry failures in navier-stokes. This is because AbstractValue representation
in navier-stokes's lin_solve was too strict. Then, this patch reverts r242627. Instead of removing must handle
value handling in CFA, DFG OSR entry now correctly validates inputs with AbstractValues even if the flush format
is Double or AnyInt. As long as DFG OSR entry validates inputs, merging must handle values as proven constants is OK.

We can see that # of OSR entry failures in navier-stokes.js becomes the same to the previous count. And we can see
AnyInt OSR entry actually works in microbenchmarks/large-int.js. However, AnyInt effect is hard to observe because this
is super rare. Since we inject type prediction based on must handle value, the flush format tends to be SpecAnyIntAsDouble
and it accepts JSValues simply.

  • bytecode/SpeculatedType.cpp:

(JSC::dumpSpeculation):

  • dfg/DFGAbstractValue.cpp:

(JSC::DFG::AbstractValue::filterValueByType):

  • dfg/DFGAbstractValue.h:

(JSC::DFG::AbstractValue::validateOSREntryValue const):
(JSC::DFG::AbstractValue::validateTypeAcceptingBoxedInt52 const):
(JSC::DFG::AbstractValue::validate const): Deleted.
(JSC::DFG::AbstractValue::validateType const): Deleted.

  • dfg/DFGCFAPhase.cpp:

(JSC::DFG::CFAPhase::run):
(JSC::DFG::CFAPhase::injectOSR):
(JSC::DFG::CFAPhase::performBlockCFA):

  • dfg/DFGOSREntry.cpp:

(JSC::DFG::prepareOSREntry):

9:31 PM Changeset in webkit [242989] by sbarati@apple.com
  • 3 edits
    2 adds in trunk

We can't remove code after ForceOSRExit until after FixupPhase
https://bugs.webkit.org/show_bug.cgi?id=186916
<rdar://problem/41396612>

Reviewed by Yusuke Suzuki.

JSTests:

  • stress/movhint-backwards-propagation-must-merge-use-as-value-add.js: Added.

(foo):

  • stress/movhint-backwards-propagation-must-merge-use-as-value.js: Added.

(foo):

Source/JavaScriptCore:

There was an optimization in the bytecode parser I added in r232742 that converted blocks
with ForceOSRExit in them to remove all IR after the ForceOSRExit. However,
this is incorrect because it breaks backwards propagation. For example, it
could incorrectly lead us to think it's safe to not check for overflow in
an Add because such Add has no non-int uses. Backwards propagation relies on
having a view over bytecode uses, and this optimization broke that. This patch
rolls out that optimization, as initial perf data shows it may no longer be
needed.

  • dfg/DFGByteCodeParser.cpp:

(JSC::DFG::ByteCodeParser::addToGraph):
(JSC::DFG::ByteCodeParser::parse):

8:31 PM Changeset in webkit [242988] by Brent Fulgham
  • 5 edits
    1 copy in trunk/Source/WebCore

Move CoreCrypto SPI declarations to an appropriate PAL/spi header
https://bugs.webkit.org/show_bug.cgi?id=195754
<rdar://problem/48591957>

Reviewed by Jiewen Tan.

Move the forward declarations of various CoreCrypto SPI to an appropriate PAL/spi header.
Update the const correctness of one function call to match new SDK declaration.

No tests because there are no changes in behavior.

Source/WebCore:

  • crypto/CommonCryptoUtilities.h:
  • crypto/mac/CryptoAlgorithmHKDFMac.cpp:

(WebCore::CryptoAlgorithmHKDF::platformDeriveBits):

Source/WebCore/PAL:

  • PAL.xcodeproj/project.pbxproj:
  • pal/spi/cocoa/CommonCryptoSPI.h: Copied from Source/WebCore/crypto/CommonCryptoUtilities.h.
8:17 PM Changeset in webkit [242987] by pvollan@apple.com
  • 2 edits in trunk/Source/WebKit

[iOS] WebKit crashes when opening pages documents
https://bugs.webkit.org/show_bug.cgi?id=195784
<rdar://problem/48904334>

Reviewed by Brent Fulgham.

The sandbox needs to allow additional syscalls.

  • Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb:
7:24 PM Changeset in webkit [242986] by sihui_liu@apple.com
  • 19 edits in trunk

IndexedDB: re-enable some leak tests
https://bugs.webkit.org/show_bug.cgi?id=194806

Reviewed by Geoffrey Garen.

Source/WebCore:

Protected JSIDBCursor object when advance/continue request on IDBCursor is not finished, because after the
advance operation completes on success, we need to return the same JSIDBCursor object as before the advance,
and during the wait for advance operation to complete, we need to return error as the result.

Covered by existing tests.

  • Modules/indexeddb/IDBCursor.cpp:

(WebCore::IDBCursor::setGetResult):
(WebCore::IDBCursor::clearWrappers):

  • Modules/indexeddb/IDBCursor.h:
  • Modules/indexeddb/IDBRequest.cpp:

(WebCore::IDBRequest::stop):
(WebCore::IDBRequest::setResult):
(WebCore::IDBRequest::setResultToStructuredClone):
(WebCore::IDBRequest::setResultToUndefined):
(WebCore::IDBRequest::willIterateCursor):
(WebCore::IDBRequest::didOpenOrIterateCursor):
(WebCore::IDBRequest::clearWrappers):

  • Modules/indexeddb/IDBRequest.h:

(WebCore::IDBRequest::cursorWrapper):

  • bindings/js/JSIDBRequestCustom.cpp:

(WebCore::JSIDBRequest::visitAdditionalChildren):

  • bindings/js/JSValueInWrappedObject.h:

(WebCore::JSValueInWrappedObject::JSValueInWrappedObject):
(WebCore::JSValueInWrappedObject::operator=):
(WebCore::JSValueInWrappedObject::clear):

LayoutTests:

  • TestExpectations:
  • platform/win/TestExpectations:
  • storage/indexeddb/connection-leak-expected.txt:
  • storage/indexeddb/connection-leak-private-expected.txt:
  • storage/indexeddb/cursor-leak-expected.txt:
  • storage/indexeddb/cursor-leak-private-expected.txt:
  • storage/indexeddb/cursor-request-cycle-expected.txt:
  • storage/indexeddb/cursor-request-cycle-private-expected.txt:
  • storage/indexeddb/request-leak-expected.txt:
  • storage/indexeddb/request-leak-private-expected.txt:
  • storage/indexeddb/resources/cursor-request-cycle.js:
7:24 PM Changeset in webkit [242985] by Shawn Roberts
  • 5 edits
    1 delete in trunk/Source/WebCore

Unreviewed, rolling out r242981.

Causing internal build failures on watch/tv OS

Reverted changeset:

"Move CoreCrypto SPI declarations to an appropriate PAL/spi
header"
https://bugs.webkit.org/show_bug.cgi?id=195754
https://trac.webkit.org/changeset/242981

7:14 PM Changeset in webkit [242984] by Fujii Hironori
  • 9 edits in trunk/Tools

[Win][MinBrowser][WK2] Implement createNewPage of WKPageUIClient to open a new window
https://bugs.webkit.org/show_bug.cgi?id=195740

Reviewed by Ross Kirsling.

window.open doesn't work for WebKitBrowserWindow because it is not
implemented yet.

  1. Implemented createNewPage callback of WKPageUIClient.
  2. Changed MainWindow to take a BrowserWindow factory function instead of BrowserWindowType to be flexible to create BrowserWindow with extra settings.
  3. Renamed MainWindow::BrowserWindowType to BrowserWindowType because it is not relevant with MainWindow anymore.
  • MiniBrowser/win/Common.cpp:

(parseCommandLine):

  • MiniBrowser/win/Common.h:

(CommandLineOptions::CommandLineOptions):

  • MiniBrowser/win/MainWindow.cpp:

(MainWindow::MainWindow):
(MainWindow::create):
(MainWindow::init):
(MainWindow::WndProc):

  • MiniBrowser/win/MainWindow.h:
  • MiniBrowser/win/PrintWebUIDelegate.cpp:

(PrintWebUIDelegate::createWebViewWithRequest):

  • MiniBrowser/win/WebKitBrowserWindow.cpp:

(WebKitBrowserWindow::create): Moved WKPageConfigurationRef related code from WebKitBrowserWindow::WebKitBrowserWindow.
(WebKitBrowserWindow::WebKitBrowserWindow): Added a WKPageConfigurationRef parameter.
(WebKitBrowserWindow::updateProxySettings):
(WebKitBrowserWindow::createNewPage):

  • MiniBrowser/win/WebKitBrowserWindow.h:
  • MiniBrowser/win/WinMain.cpp:

(wWinMain):

6:54 PM Changeset in webkit [242983] by sihui_liu@apple.com
  • 3 edits in trunk/Source/WebCore

Web process is put to suspended when holding locked WebSQL files
https://bugs.webkit.org/show_bug.cgi?id=195768

Reviewed by Geoffrey Garen.

We need to keep processes active during database close, because SQLite database may run a checkpoint operation
and lock database files.

  • platform/sql/SQLiteDatabase.cpp:

(WebCore::SQLiteDatabase::useWALJournalMode):
(WebCore::SQLiteDatabase::close):

  • platform/sql/SQLiteDatabase.h:
6:28 PM Changeset in webkit [242982] by sbarati@apple.com
  • 4 edits in trunk/Source/JavaScriptCore

JSScript should have an accessor saying if it's cached or not
https://bugs.webkit.org/show_bug.cgi?id=195783

Reviewed by Michael Saboff.

  • API/JSScript.h:
  • API/JSScript.mm:

(-[JSScript isUsingBytecodeCache]):

  • API/tests/testapi.mm:

(testIsUsingBytecodeCacheAccessor):
(testObjectiveCAPI):

6:27 PM Changeset in webkit [242981] by Brent Fulgham
  • 5 edits
    1 copy in trunk/Source/WebCore

Move CoreCrypto SPI declarations to an appropriate PAL/spi header
https://bugs.webkit.org/show_bug.cgi?id=195754
<rdar://problem/48591957>

Reviewed by Jiewen Tan.

Move the forward declarations of various CoreCrypto SPI to an appropriate PAL/spi header.
Update the const correctness of one function call to match new SDK declaration.

No tests because there are no changes in behavior.

Source/WebCore:

  • crypto/CommonCryptoUtilities.h:
  • crypto/mac/CryptoAlgorithmHKDFMac.cpp:

(WebCore::CryptoAlgorithmHKDF::platformDeriveBits):

Source/WebCore/PAL:

  • PAL.xcodeproj/project.pbxproj:
  • pal/spi/cocoa/CommonCryptoSPI.h: Copied from Source/WebCore/crypto/CommonCryptoUtilities.h.
6:10 PM Changeset in webkit [242980] by sbarati@apple.com
  • 6 edits in trunk/Source/JavaScriptCore

Remove retain cycle from JSScript and also don't keep the cache file descriptor open so many JSScripts can be cached in a loop
https://bugs.webkit.org/show_bug.cgi?id=195782
<rdar://problem/48880625>

Reviewed by Michael Saboff.

This patch fixes two issues with JSScript API:

  1. There was a retain cycle causing us to never destroy a JSScript once it

created a JSSourceCode. The reason for this is that JSScript had a
Strong<JSSourceCode> field. And JSSourceCode transitively had RetainPtr<JSScript>.

This patch fixes this issue by making the "jsSourceCode" accessor return a transient object.

  1. r242585 made it so that JSScript would keep the cache file descriptor open

(and locked) for the duration of the lifetime of the JSScript itself. Our
anticipation here is that it would make implementing iterative cache updates
easier. However, this made using the API super limiting in other ways. For
example, if a program had a loop that cached 3000 different JSScripts, it's
likely that such a program would exhaust the open file count limit. This patch
reverts to the behavior prior to r242585 where we just keep open the file descriptor
while we read or write it.

  • API/JSAPIGlobalObject.mm:

(JSC::JSAPIGlobalObject::moduleLoaderFetch):

  • API/JSContext.mm:

(-[JSContext evaluateJSScript:]):

  • API/JSScript.mm:

(-[JSScript dealloc]):
(-[JSScript readCache]):
(-[JSScript init]):
(-[JSScript sourceCode]):
(-[JSScript jsSourceCode]):
(-[JSScript writeCache:]):
(-[JSScript forceRecreateJSSourceCode]): Deleted.

  • API/JSScriptInternal.h:
  • API/tests/testapi.mm:

(testCanCacheManyFilesWithTheSameVM):
(testObjectiveCAPI):
(testCacheFileIsExclusive): Deleted.

6:10 PM Changeset in webkit [242979] by Simon Fraser
  • 20 edits in trunk

Make it possible to test scrolling tree layer manipulation more easily
https://bugs.webkit.org/show_bug.cgi?id=195780

Reviewed by Tim Horton.
Source/WebKit:

Add a boolean attribute 'scrollUpdatesDisabled' on UIScriptController that
cuts off communication of scrolling tree scrolls back to the web process
(in RemoteScrollingCoordinatorProxy::scrollingTreeNodeDidScroll()). This
allows tests to trigger scrolls which run the scrolling tree layer positioning
logic, but never get another commit from the web process that might mask
scrolling tree bugs.

WKWebView's testing protocol get @property _scrollingUpdatesDisabledForTesting,
whose getters and setters are overridden by TestRunnerWKWebView. Plumbing
via PageClient and WebPageProxy makes this flag reachable by RemoteScrollingCoordinatorProxy.

  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView _scrollingUpdatesDisabledForTesting]):
(-[WKWebView _setScrollingUpdatesDisabledForTesting:]):

  • UIProcess/API/Cocoa/WKWebViewPrivate.h:
  • UIProcess/Cocoa/PageClientImplCocoa.h:
  • UIProcess/Cocoa/PageClientImplCocoa.mm:

(WebKit::PageClientImplCocoa::scrollingUpdatesDisabledForTesting):

  • UIProcess/Cocoa/WebPageProxyCocoa.mm:

(WebKit::WebPageProxy::scrollingUpdatesDisabledForTesting):

  • UIProcess/PageClient.h:

(WebKit::PageClient::scrollingUpdatesDisabledForTesting):

  • UIProcess/RemoteLayerTree/RemoteScrollingCoordinatorProxy.cpp:

(WebKit::RemoteScrollingCoordinatorProxy::scrollingTreeNodeDidScroll):

  • UIProcess/WebPageProxy.h:

Tools:

Add a boolean attribute 'scrollUpdatesDisabled' on UIScriptController that
cuts off communication of scrolling tree scrolls back to the web process
(in RemoteScrollingCoordinatorProxy::scrollingTreeNodeDidScroll()). This
allows tests to trigger scrolls which run the scrolling tree layer positioning
logic, but never get another commit from the web process that might mask
scrolling tree bugs.

WKWebView's testing protocol get @property _scrollingUpdatesDisabledForTesting,
whose getters and setters are overridden by TestRunnerWKWebView. Plumbing
via PageClient and WebPageProxy makes this flag reachable by RemoteScrollingCoordinatorProxy.

  • DumpRenderTree/ios/UIScriptControllerIOS.mm:

(WTR::UIScriptController::scrollUpdatesDisabled const):
(WTR::UIScriptController::setScrollUpdatesDisabled):

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

(WTR::UIScriptController::scrollUpdatesDisabled const):
(WTR::UIScriptController::setScrollUpdatesDisabled):

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

(-[TestRunnerWKWebView _scrollingUpdatesDisabledForTesting]):
(-[TestRunnerWKWebView _setScrollingUpdatesDisabledForTesting:]):

  • WebKitTestRunner/ios/TestControllerIOS.mm:

(WTR::TestController::platformResetStateToConsistentValues):

  • WebKitTestRunner/ios/UIScriptControllerIOS.mm:

(WTR::UIScriptController::scrollUpdatesDisabled const):
(WTR::UIScriptController::setScrollUpdatesDisabled):

LayoutTests:

Add a boolean attribute 'scrollUpdatesDisabled' on UIScriptController that
cuts off communication of scrolling tree scrolls back to the web process
(in RemoteScrollingCoordinatorProxy::scrollingTreeNodeDidScroll()). This
allows tests to trigger scrolls which run the scrolling tree layer positioning
logic, but never get another commit from the web process that might mask
scrolling tree bugs.

WKWebView's testing protocol get @property _scrollingUpdatesDisabledForTesting,
whose getters and setters are overridden by TestRunnerWKWebView. Plumbing
via PageClient and WebPageProxy makes this flag reachable by RemoteScrollingCoordinatorProxy.

  • resources/ui-helper.js: Some 'async' functions that awaited promises should just return

the promise.
(window.UIHelper.immediateScrollTo):
(window.UIHelper.immediateUnstableScrollTo):
(window.UIHelper.async.delayFor): Deleted.
(window.UIHelper.async.immediateScrollTo): Deleted.
(window.UIHelper.async.immediateUnstableScrollTo): Deleted.

5:15 PM Changeset in webkit [242978] by commit-queue@webkit.org
  • 27 edits
    3 moves in trunk/Source/WebCore

Rename SVGProperty to SVGLegacyProperty and rename SVGAnimatedProperty to SVGLegacyAnimatedProperty
https://bugs.webkit.org/show_bug.cgi?id=195767

Patch by Said Abou-Hallawa <sabouhallawa@apple.com> on 2019-03-14
Reviewed by Tim Horton.

This is a step towards removing the SVG properties tear off objects.

  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • svg/SVGAngle.h:

(WebCore::SVGAngle::create):
(WebCore::SVGAngle::SVGAngle):

  • svg/SVGAnimateElement.h:
  • svg/SVGAnimatedTypeAnimator.h:

(WebCore::SVGAnimatedTypeAnimator::castAnimatedPropertyToActualType):

  • svg/SVGElement.h:

(WebCore::SVGElement::lookupAnimatedProperty const):
(WebCore::SVGElement::lookupOrCreateAnimatedProperty):
(WebCore::SVGElement::lookupOrCreateAnimatedProperties):

  • svg/SVGLength.h:

(WebCore::SVGLength::create):
(WebCore::SVGLength::SVGLength):

  • svg/SVGMatrix.h:

(WebCore::SVGMatrix::create):
(WebCore::SVGMatrix::SVGMatrix):

  • svg/SVGNumber.h:

(WebCore::SVGNumber::create):
(WebCore::SVGNumber::SVGNumber):

  • svg/SVGPathElement.cpp:

(WebCore::SVGPathElement::lookupOrCreateDWrapper):

  • svg/SVGPathElement.h:
  • svg/SVGPathSegList.cpp:

(WebCore::SVGPathSegList::processIncomingListItemValue):

  • svg/SVGPathSegWithContext.h:

(WebCore::SVGPathSegWithContext::animatedProperty const):

  • svg/SVGPoint.h:

(WebCore::SVGPoint::create):
(WebCore::SVGPoint::SVGPoint):

  • svg/SVGPreserveAspectRatio.h:

(WebCore::SVGPreserveAspectRatio::create):
(WebCore::SVGPreserveAspectRatio::SVGPreserveAspectRatio):

  • svg/SVGRect.h:

(WebCore::SVGRect::create):
(WebCore::SVGRect::SVGRect):

  • svg/SVGTransform.h:

(WebCore::SVGTransform::create):
(WebCore::SVGTransform::SVGTransform):

  • svg/properties/SVGAnimatedListPropertyTearOff.h:

(WebCore::SVGAnimatedListPropertyTearOff::findItem):
(WebCore::SVGAnimatedListPropertyTearOff::SVGAnimatedListPropertyTearOff):

  • svg/properties/SVGAnimatedProperty.cpp: Removed.
  • svg/properties/SVGAnimatedProperty.h: Removed.
  • svg/properties/SVGAnimatedPropertyTearOff.h:
  • svg/properties/SVGAnimatedStaticPropertyTearOff.h:

(WebCore::SVGAnimatedStaticPropertyTearOff::SVGAnimatedStaticPropertyTearOff):

  • svg/properties/SVGAttributeAccessor.h:

(WebCore::SVGAttributeAccessor::lookupOrCreateAnimatedProperty const):
(WebCore::SVGAttributeAccessor::lookupAnimatedProperty const):
(WebCore::SVGAttributeAccessor::lookupOrCreateAnimatedProperties const):
(WebCore::SVGAnimatedAttributeAccessor::lookupOrCreateAnimatedProperty):
(WebCore::SVGAnimatedAttributeAccessor::lookupAnimatedProperty):

  • svg/properties/SVGAttributeOwnerProxy.h:
  • svg/properties/SVGAttributeOwnerProxyImpl.h:
  • svg/properties/SVGAttributeRegistry.h:

(WebCore::SVGAttributeRegistry::lookupOrCreateAnimatedProperty const):
(WebCore::SVGAttributeRegistry::lookupAnimatedProperty const):
(WebCore::SVGAttributeRegistry::lookupOrCreateAnimatedProperties const):
(WebCore::SVGAttributeRegistry::lookupOrCreateAnimatedPropertyBaseTypes):
(WebCore::SVGAttributeRegistry::lookupAnimatedPropertyBaseTypes):
(WebCore::SVGAttributeRegistry::lookupOrCreateAnimatedPropertiesBaseTypes):

  • svg/properties/SVGLegacyAnimatedProperty.cpp: Copied from Source/WebCore/svg/properties/SVGAnimatedProperty.cpp.

(WebCore::SVGLegacyAnimatedProperty::SVGLegacyAnimatedProperty):
(WebCore::SVGLegacyAnimatedProperty::~SVGLegacyAnimatedProperty):
(WebCore::SVGLegacyAnimatedProperty::commitChange):
(WebCore::SVGAnimatedProperty::SVGAnimatedProperty): Deleted.
(WebCore::SVGAnimatedProperty::~SVGAnimatedProperty): Deleted.
(WebCore::SVGAnimatedProperty::commitChange): Deleted.

  • svg/properties/SVGLegacyAnimatedProperty.h: Copied from Source/WebCore/svg/properties/SVGAnimatedProperty.h.

(WebCore::SVGLegacyAnimatedProperty::lookupOrCreateAnimatedProperty):
(WebCore::SVGLegacyAnimatedProperty::lookupAnimatedProperty):
(WebCore::SVGAnimatedProperty::isAnimating const): Deleted.
(WebCore::SVGAnimatedProperty::isAnimatedListTearOff const): Deleted.
(WebCore::SVGAnimatedProperty::contextElement const): Deleted.
(WebCore::SVGAnimatedProperty::attributeName const): Deleted.
(WebCore::SVGAnimatedProperty::animatedPropertyType const): Deleted.
(WebCore::SVGAnimatedProperty::isReadOnly const): Deleted.
(WebCore::SVGAnimatedProperty::setIsReadOnly): Deleted.
(WebCore::SVGAnimatedProperty::lookupOrCreateAnimatedProperty): Deleted.
(WebCore::SVGAnimatedProperty::lookupAnimatedProperty): Deleted.
(WebCore::SVGAnimatedProperty::animatedPropertyCache): Deleted.

  • svg/properties/SVGLegacyProperty.h: Copied from Source/WebCore/svg/properties/SVGProperty.h.
  • svg/properties/SVGListProperty.h:
  • svg/properties/SVGProperty.h: Removed.
  • svg/properties/SVGPropertyTearOff.h:

(WebCore::SVGPropertyTearOff::create):
(WebCore::SVGPropertyTearOff::animatedProperty const):
(WebCore::SVGPropertyTearOff::setAnimatedProperty):
(WebCore::SVGPropertyTearOff::SVGPropertyTearOff):

5:00 PM Changeset in webkit [242977] by Ryan Haddad
  • 5 edits
    1 delete in trunk/Source/WebCore

Unreviewed, rolling out r242963.

Breaks watchOS build.

Reverted changeset:

"Move CommonCrypto SPI declarations to an appropriate PAL/spi
header"
https://bugs.webkit.org/show_bug.cgi?id=195754
https://trac.webkit.org/changeset/242963

4:35 PM Changeset in webkit [242976] by Chris Dumez
  • 3 edits in trunk/Source/WebCore

Unreviewed, update xcfilelist files as they are out of sync.

  • DerivedSources-input.xcfilelist:
  • DerivedSources-output.xcfilelist:
4:08 PM Changeset in webkit [242975] by youenn@apple.com
  • 6 edits in trunk

Move IDB storage in private browsing mode to NetworkProcess
https://bugs.webkit.org/show_bug.cgi?id=195602

Reviewed by Brady Eidson.

Source/WebKit:

Covered by existing IDB tests and added API test.

  • NetworkProcess/NetworkProcess.cpp:

(WebKit::NetworkProcess::createIDBServer):
Make sure that path is empty for private sessions.
This will make IDB use a memory backing store.

  • WebProcess/Databases/WebDatabaseProvider.cpp:

(WebKit::WebDatabaseProvider::idbConnectionToServerForSession):
Use NetworkProcess IDB server instead of InProcessIDBServer.

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/IndexedDBPersistence.mm:

(TEST):

4:04 PM Changeset in webkit [242974] by Justin Fan
  • 37 edits
    3 copies in trunk

[Web GPU] Updates to GPUCommandBuffer for new GPUCommandEncoder concept
https://bugs.webkit.org/show_bug.cgi?id=195083
<rdar://problem/48423591>

Reviewed by Dean Jackson.

Fixing build error and re-introducing rolled-out changes.
Source/WebCore:

WebGPUCommandBuffer now represents a completed GPUCommandBuffer that can only be used in queue submits. The previous WebGPUCommandBuffer
is now WebGPUCommandEncoder.

Affected Web GPU tests updated to match new API.

New files and symbols:

  • CMakeLists.txt:
  • DerivedSources.make:
  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • bindings/js/WebCoreBuiltinNames.h:

Implement new WebGPUCommandBuffer, now just a DOM object carrier for a finished GPUCommandBuffer:

  • Modules/webgpu/WebGPUCommandBuffer.cpp:

(WebCore::WebGPUCommandBuffer::create):
(WebCore::WebGPUCommandBuffer::WebGPUCommandBuffer):
(WebCore::WebGPUBufferCopyView::tryCreateGPUBufferCopyView const): Deleted.
(WebCore::WebGPUTextureCopyView::tryCreateGPUTextureCopyView const): Deleted.
(WebCore::WebGPUCommandBuffer::beginRenderPass): Deleted.
(WebCore::WebGPUCommandBuffer::copyBufferToBuffer): Deleted.
(WebCore::WebGPUCommandBuffer::copyBufferToTexture): Deleted.
(WebCore::WebGPUCommandBuffer::copyTextureToBuffer): Deleted.
(WebCore::WebGPUCommandBuffer::copyTextureToTexture): Deleted.

  • Modules/webgpu/WebGPUCommandBuffer.h:

(WebCore::WebGPUCommandBuffer::commandBuffer):
(WebCore::WebGPUCommandBuffer::commandBuffer const): Deleted.

  • Modules/webgpu/WebGPUCommandBuffer.idl:

Rename old WebGPUCommandBuffer to WebGPUCommandEncoder:

  • Modules/webgpu/WebGPUCommandEncoder.cpp: Copied from Source/WebCore/Modules/webgpu/WebGPUCommandBuffer.cpp.

(WebCore::WebGPUBufferCopyView::tryCreateGPUBufferCopyView const):
(WebCore::WebGPUTextureCopyView::tryCreateGPUTextureCopyView const):
(WebCore::WebGPUCommandEncoder::create):
(WebCore::WebGPUCommandEncoder::WebGPUCommandEncoder):
(WebCore::WebGPUCommandEncoder::beginRenderPass):
(WebCore::WebGPUCommandEncoder::copyBufferToBuffer):
(WebCore::WebGPUCommandEncoder::copyBufferToTexture):
(WebCore::WebGPUCommandEncoder::copyTextureToBuffer):
(WebCore::WebGPUCommandEncoder::copyTextureToTexture):
(WebCore::WebGPUCommandEncoder::finish): Added. "Completes" this and invalidates it. Returns its GPUCommandBuffer, ready for submission.

  • Modules/webgpu/WebGPUCommandEncoder.h: Copied from Source/WebCore/Modules/webgpu/WebGPUCommandBuffer.h.
  • Modules/webgpu/WebGPUCommandEncoder.idl: Copied from Source/WebCore/Modules/webgpu/WebGPUCommandBuffer.idl.
  • Modules/webgpu/WebGPUDevice.cpp:

(WebCore::WebGPUDevice::createCommandEncoder const): Renamed fom createCommandBuffer. Now returns non-nullable.
(WebCore::WebGPUDevice::createCommandBuffer const): Deleted.

  • Modules/webgpu/WebGPUDevice.h:
  • Modules/webgpu/WebGPUDevice.idl:
  • Modules/webgpu/WebGPUProgrammablePassEncoder.cpp:

(WebCore::WebGPUProgrammablePassEncoder::WebGPUProgrammablePassEncoder):
(WebCore::WebGPUProgrammablePassEncoder::endPass): No longer returns the original WebGPUCommandBuffer.
(WebCore::WebGPUProgrammablePassEncoder::setBindGroup const):
(WebCore::WebGPUProgrammablePassEncoder::setPipeline):

  • Modules/webgpu/WebGPUProgrammablePassEncoder.h:
  • Modules/webgpu/WebGPUProgrammablePassEncoder.idl:
  • Modules/webgpu/WebGPUQueue.cpp:

(WebCore::WebGPUQueue::submit): Replace unnecessary rvalue reference parameter.

  • Modules/webgpu/WebGPUQueue.h:
  • Modules/webgpu/WebGPUQueue.idl:
  • Modules/webgpu/WebGPURenderPassEncoder.cpp:

(WebCore::WebGPURenderPassEncoder::create):
(WebCore::WebGPURenderPassEncoder::WebGPURenderPassEncoder):
(WebCore::WebGPURenderPassEncoder::setVertexBuffers):
(WebCore::WebGPURenderPassEncoder::draw):
(WebCore::WebGPURenderPassEncoder::passEncoder const): Now returns a pointer since it is properly backed by a RefPtr.

  • Modules/webgpu/WebGPURenderPassEncoder.h:
  • Modules/webgpu/WebGPUSwapChain.cpp:

(WebCore::WebGPUSwapChain::getCurrentTexture): No longer invalidates m_currentTexture. Doh!

  • platform/graphics/gpu/GPUCommandBuffer.h: Missing includes for the *CopyView structs.
  • platform/graphics/gpu/GPUDevice.cpp:

(WebCore::GPUDevice::tryCreateCommandBuffer const): Renamed from createCommandBuffer.
(WebCore::GPUDevice::createCommandBuffer): Deleted.

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

(WebCore::GPUCommandBuffer::tryCreate): Renamed from create.
(WebCore::GPUCommandBuffer::create): Deleted.

LayoutTests:

Update existing Web GPU tests for GPUCommandEncoder and new GPUCommandBuffer.

  • webgpu/blit-commands.html:
  • webgpu/buffer-command-buffer-races.html:
  • webgpu/buffer-resource-triangles.html:
  • webgpu/command-buffers-expected.txt:
  • webgpu/command-buffers.html:
  • webgpu/depth-enabled-triangle-strip.html:
  • webgpu/js/webgpu-functions.js:

(beginBasicRenderPass):

  • webgpu/render-command-encoding.html:
  • webgpu/simple-triangle-strip.html:
  • webgpu/texture-triangle-strip.html:
  • webgpu/vertex-buffer-triangle-strip.html:
3:42 PM Changeset in webkit [242973] by Nikita Vasilyev
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: Styles: Jump to effective property button doesn't hide after overridden property become effective
https://bugs.webkit.org/show_bug.cgi?id=195770
<rdar://problem/48903634>

Reviewed by Matt Baker.

  • UserInterface/Views/SpreadsheetCSSStyleDeclarationEditor.css:

(.spreadsheet-style-declaration-editor .property .select-effective-property): Added.
(.spreadsheet-style-declaration-editor .property.overridden .select-effective-property): Deleted.
Hide .select-effective-property element for properties that aren't overridden.

3:26 PM Changeset in webkit [242972] by Justin Fan
  • 26 edits
    2 deletes in trunk/Source/WebCore

[Web GPU] Enum cleanup
https://bugs.webkit.org/show_bug.cgi?id=195766

Reviewed by Myles C. Maxfield.

Clean up enum implementations in Web GPU. Enums referenced by only one class now share implementation files with that class to reduce clutter.

No change in behavior.

  • DerivedSources.make:
  • Modules/webgpu/GPUBindGroupLayoutBinding.h:
  • Modules/webgpu/GPUBindGroupLayoutBinding.idl:
  • Modules/webgpu/GPUInputStateDescriptor.idl:
  • Modules/webgpu/GPURequestAdapterOptions.idl:
  • Modules/webgpu/GPUSamplerDescriptor.idl:
  • Modules/webgpu/GPUTextureDescriptor.idl:
  • Modules/webgpu/GPUTextureDimension.idl: Removed.
  • Modules/webgpu/GPUVertexAttributeDescriptor.idl:
  • Modules/webgpu/GPUVertexInputDescriptor.idl:
  • Modules/webgpu/WebGPUBindGroupDescriptor.cpp:

(WebCore::validateBufferBindingType):

  • Modules/webgpu/WebGPURenderPipelineDescriptor.h:
  • Modules/webgpu/WebGPURenderPipelineDescriptor.idl:
  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • platform/graphics/gpu/GPUInputStateDescriptor.h:
  • platform/graphics/gpu/GPURequestAdapterOptions.h:
  • platform/graphics/gpu/GPUSamplerDescriptor.h:
  • platform/graphics/gpu/GPUTextureDescriptor.h:
  • platform/graphics/gpu/GPUTextureDimension.h: Removed.
  • platform/graphics/gpu/GPUVertexAttributeDescriptor.h:
  • platform/graphics/gpu/GPUVertexInputDescriptor.h:
  • platform/graphics/gpu/cocoa/GPUBindGroupLayoutMetal.mm:

(WebCore::MTLDataTypeForBindingType):

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

(WebCore::GPUBindGroup::tryCreate):

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

(WebCore::GPUDevice::create):

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

(WebCore::mtlAddressModeForAddressMode):
(WebCore::mtlMinMagFilterForFilterMode):
(WebCore::mtlMipFilterForFilterMode):

3:18 PM Changeset in webkit [242971] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

[ iOS Sim WK2 ] Layout Test quicklook/numbers.html is failing
https://bugs.webkit.org/show_bug.cgi?id=191711

Unreviewed test gardening.

  • platform/ios/TestExpectations: Mark test as failing.
3:11 PM Changeset in webkit [242970] by commit-queue@webkit.org
  • 22 edits in trunk/Source/WebCore

Use enum class for AnimationMode
https://bugs.webkit.org/show_bug.cgi?id=195762

Patch by Said Abou-Hallawa <sabouhallawa@apple.com> on 2019-03-14
Reviewed by Tim Horton.

Convert AnimationMode into an enum class.

  • svg/SVGAnimateElementBase.cpp:

(WebCore::SVGAnimateElementBase::calculateFromAndByValues):
(WebCore::SVGAnimateElementBase::isAdditive const):

  • svg/SVGAnimateMotionElement.cpp:

(WebCore::SVGAnimateMotionElement::calculateFromAndByValues):
(WebCore::SVGAnimateMotionElement::calculateAnimatedValue):
(WebCore::SVGAnimateMotionElement::updateAnimationMode):

  • svg/SVGAnimatedAngle.cpp:

(WebCore::SVGAnimatedAngleAnimator::calculateAnimatedValue):

  • svg/SVGAnimatedBoolean.cpp:

(WebCore::SVGAnimatedBooleanAnimator::calculateAnimatedValue):

  • svg/SVGAnimatedColor.cpp:

(WebCore::SVGAnimatedColorAnimator::calculateAnimatedValue):

  • svg/SVGAnimatedEnumeration.cpp:

(WebCore::SVGAnimatedEnumerationAnimator::calculateAnimatedValue):

  • svg/SVGAnimatedInteger.cpp:

(WebCore::SVGAnimatedIntegerAnimator::calculateAnimatedValue):

  • svg/SVGAnimatedIntegerOptionalInteger.cpp:

(WebCore::SVGAnimatedIntegerOptionalIntegerAnimator::calculateAnimatedValue):

  • svg/SVGAnimatedLength.cpp:

(WebCore::SVGAnimatedLengthAnimator::calculateAnimatedValue):

  • svg/SVGAnimatedLengthList.cpp:

(WebCore::SVGAnimatedLengthListAnimator::calculateAnimatedValue):

  • svg/SVGAnimatedNumber.cpp:

(WebCore::SVGAnimatedNumberAnimator::calculateAnimatedValue):

  • svg/SVGAnimatedNumberList.cpp:

(WebCore::SVGAnimatedNumberListAnimator::calculateAnimatedValue):

  • svg/SVGAnimatedNumberOptionalNumber.cpp:

(WebCore::SVGAnimatedNumberOptionalNumberAnimator::calculateAnimatedValue):

  • svg/SVGAnimatedPath.cpp:

(WebCore::SVGAnimatedPathAnimator::calculateAnimatedValue):

  • svg/SVGAnimatedPointList.cpp:

(WebCore::SVGAnimatedPointListAnimator::calculateAnimatedValue):

  • svg/SVGAnimatedPreserveAspectRatio.cpp:

(WebCore::SVGAnimatedPreserveAspectRatioAnimator::calculateAnimatedValue):

  • svg/SVGAnimatedRect.cpp:

(WebCore::SVGAnimatedRectAnimator::calculateAnimatedValue):

  • svg/SVGAnimatedTransformList.cpp:

(WebCore::SVGAnimatedTransformListAnimator::calculateAnimatedValue):

  • svg/SVGAnimationElement.cpp:

(WebCore::SVGAnimationElement::updateAnimationMode):
(WebCore::SVGAnimationElement::isAdditive const):
(WebCore::SVGAnimationElement::isAccumulated const):
(WebCore::SVGAnimationElement::calculateKeyTimesForCalcModePaced):
(WebCore::SVGAnimationElement::startedActiveInterval):
(WebCore::SVGAnimationElement::updateAnimation):

  • svg/SVGAnimationElement.h:

(WebCore::SVGAnimationElement::adjustFromToListValues):
(WebCore::SVGAnimationElement::animateDiscreteType):
(WebCore::SVGAnimationElement::animateAdditiveNumber):

  • svg/SVGSetElement.cpp:

(WebCore::SVGSetElement::SVGSetElement):
(WebCore::SVGSetElement::updateAnimationMode):

3:08 PM Changeset in webkit [242969] by aakash_jain@apple.com
  • 3 edits in trunk/Tools

[ews-build] Make descriptionDone messages more readable
https://bugs.webkit.org/show_bug.cgi?id=195760

Reviewed by Lucas Forschler.

  • BuildSlaveSupport/ews-build/steps.py:
  • BuildSlaveSupport/ews-build/steps_unittest.py:
3:07 PM Changeset in webkit [242968] by Wenson Hsieh
  • 7 edits
    2 adds in trunk

REGRESSION (r242801): [iOS] preventDefault() on touchstart in a subframe does not prevent focusing the subframe
https://bugs.webkit.org/show_bug.cgi?id=195749
<rdar://problem/48892367>

Reviewed by Tim Horton.

Source/WebKit:

r242801 added logic to fetch interaction information at the touch location upon touch start. However this,
combined with an existing behavior where the process of computing InteractionInformationAtPosition in WebPage
moves focus into the frame of the hit-tested node below the touch location, means that we'll always trigger a
blur event on the window and move focus into the subframe when performing a touch inside a subframe, even if the
page prevents default on touchstart.

To fix this, add a "readonly" flag to InteractionInformationRequest, and only change focus when requesting
position information in the case where the request is not readonly. For now, this readonly flag is false by
default; in a future patch, we should identify the (hopefully few) places that rely on position information
requests to move focus, explicitly turn this bit off in those places, and otherwise send readonly position
information requests by default.

  • Shared/ios/InteractionInformationRequest.cpp:

(WebKit::InteractionInformationRequest::encode const):
(WebKit::InteractionInformationRequest::decode):
(WebKit::InteractionInformationRequest::isValidForRequest):
(WebKit::InteractionInformationRequest::isApproximatelyValidForRequest):

Ensure that a readonly request is not valid for a non-readonly request.

  • Shared/ios/InteractionInformationRequest.h:
  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView _requestActivatedElementAtPosition:completionBlock:]):

Send a readonly position information request in the case where a WebKit SPI client is querying for element
information at the given location.

  • UIProcess/ios/WKContentViewInteraction.mm:

(-[WKContentView _webTouchEventsRecognized:]):

Send a readonly position information request on touchstart.

  • WebProcess/WebPage/ios/WebPageIOS.mm:

(WebKit::WebPage::positionInformation):

LayoutTests:

Add a test to verify that tapping a subframe doesn't move focus into it subframe if the page prevents default
on touchstart.

  • fast/events/touch/ios/no-focus-change-when-preventing-default-on-touchstart-expected.txt: Added.
  • fast/events/touch/ios/no-focus-change-when-preventing-default-on-touchstart.html: Added.
3:06 PM Changeset in webkit [242967] by aakash_jain@apple.com
  • 2 edits in trunk/Tools

[ews-build] Generate status-bubble hover-over messages
https://bugs.webkit.org/show_bug.cgi?id=195680

Reviewed by Lucas Forschler.

  • BuildSlaveSupport/ews-app/ews/views/statusbubble.py:

(StatusBubble):
(StatusBubble._build_bubble): Generate bubbledetails_message which would be displayed
on hover-over.
(StatusBubble._iso_time):
(StatusBubble._steps_messages): Returns status messages from steps to be displayed in
hover-over message.
(StatusBubble._most_recent_step_message): Returns status message from most recent step.

2:44 PM Changeset in webkit [242966] by aakash_jain@apple.com
  • 3 edits in trunk/Tools

[ews-app] Gracefully handle the case when state_string is None
https://bugs.webkit.org/show_bug.cgi?id=195753

Reviewed by Lucas Forschler.

  • BuildSlaveSupport/ews-app/ews/models/build.py:
  • BuildSlaveSupport/ews-app/ews/models/step.py:
2:33 PM Changeset in webkit [242965] by aakash_jain@apple.com
  • 2 edits in trunk/Tools

[ews-app] Status bubble display pending for currently running build step
https://bugs.webkit.org/show_bug.cgi?id=195744

Reviewed by Lucas Forschler.

  • BuildSlaveSupport/ews-build/events.py:

(Events.stepStarted): If state_string is pending, replace it with step name.

2:09 PM Changeset in webkit [242964] by rniwa@webkit.org
  • 4 edits in trunk/Source/WebCore

Storing a Node in Ref/RefPtr inside its destructor results in double delete
https://bugs.webkit.org/show_bug.cgi?id=195661

Reviewed by Brent Fulgham.

Set Node::m_refCount to 1 before calling its virtual destructor.

This is a security mitigation to prevent any code which ends up storing the node to Ref / RefPtr
inside the destructor, which is a programming error caught by debug assertions, from triggering
a double-delete on the same Node.

Such a code would hit the debug assertions in Node::deref() because m_inRemovedLastRefFunction
had been set to true by then.

  • dom/Document.cpp:

(WebCore::Document::removedLastRef):

  • dom/Document.h:

(WebCore::Document::decrementReferencingNodeCount):

  • dom/Node.cpp:

(WebCore::Node::~Node):
(WebCore::Node::removedLastRef):

1:56 PM Changeset in webkit [242963] by Brent Fulgham
  • 5 edits
    1 copy in trunk/Source/WebCore

Move CommonCrypto SPI declarations to an appropriate PAL/spi header
https://bugs.webkit.org/show_bug.cgi?id=195754
<rdar://problem/48591957>

Reviewed by Jiewen Tan.

Move the forward declarations of various CommonCrypto SPI to an appropriate PAL/spi header.
Update the const correctness of one function call to match new SDK declaration.

No tests because there are no changes in behavior.

Source/WebCore:

  • crypto/CommonCryptoUtilities.h:
  • crypto/mac/CryptoAlgorithmHKDFMac.cpp:

(WebCore::CryptoAlgorithmHKDF::platformDeriveBits):

Source/WebCore/PAL:

  • PAL.xcodeproj/project.pbxproj:
  • pal/spi/cocoa/CommonCryptoSPI.h: Copied from Source/WebCore/crypto/CommonCryptoUtilities.h.
1:48 PM Changeset in webkit [242962] by Devin Rousso
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: REGRESSION: Canvas: the first processed action should be selected as soon as it's available if no previous selected action exists
https://bugs.webkit.org/show_bug.cgi?id=195732
<rdar://problem/48875214>

Reviewed by Matt Baker.

  • UserInterface/Views/CanvasSidebarPanel.js:

(WI.CanvasSidebarPanel.prototype._handleRecordingProcessedAction):
Rather than wait until the entire recording is ready, set the selected action as soon as the
first action is ready (assuming there isn't already a selected action).

1:46 PM Changeset in webkit [242961] by Jon Davis
  • 5 edits
    3 adds in trunk/PerformanceTests

Implement a new design for JetStream2
https://bugs.webkit.org/show_bug.cgi?id=195492

Reviewed by Saam Barati.

  • JetStream2/JetStream.css:

(html):
(body):
(::selection):
(main):
(.logo):
(.logo .logo-image):
(#jetstreams):
(#jetstreams svg):
(.summary):
(.summary + .summary):
(.summary:empty):
(article, .summary):
(h1):
(h2, h3, h4, h5, h6):
(h4, h5, h6):
(p):
(h5, h6):
(h6):
(a:link,):
(a:hover,):
(#status):
(#status label,):
(a.button):
(#status.loading):
(#status.error):
(.error h2, .error p):
(.error h2):
(#result-summary):
(#result-summary label):
(#result-summary .score):
(#result-summary .score .interval):
(#results):
(.benchmark):
(.benchmark h3, .benchmark h4, .benchmark .result, .benchmark label):
(.benchmark-running h4, .benchmark-running .result, .benchmark-running label):
(.benchmark-done h3, .benchmark-done h4, .benchmark-done .result, .benchmark-done label):
(.benchmark h3):
(.benchmark-running h3):
(.benchmark-done h3):
(.benchmark h3 a,):
(.benchmark-done h3 a:hover):
(.benchmark h4):
(.benchmark-done h4):
(.benchmark p,):
(.benchmark .result):
(.benchmark-done .result):
(.benchmark label):
(.benchmark-done label):
(@keyframes fadein):
(to):
(@keyframes scaledown):
(@keyframes shine):
(100%):
(@keyframes swingin):
(@media (max-width: 415px)):
(#logo): Deleted.
(p.summary): Deleted.
(p.summary + p.summary): Deleted.
(p.summary:empty): Deleted.
(p:first-of-type): Deleted.
(#status a:link): Deleted.
(.interval): Deleted.
(a:link, a:visited): Deleted.
(a:link:hover): Deleted.
(table): Deleted.
(td, th): Deleted.
(th): Deleted.
(tr:first-child > th:nth-child(even)): Deleted.
(tr:nth-child(even):not(:first-child, .benchmark-running)): Deleted.
(.result): Deleted.
(.benchmark-running): Deleted.
(:not(.benchmark-running) .result): Deleted.
(.benchmark-running .result): Deleted.
(.benchmark-name): Deleted.
(.result.category,): Deleted.
(.benchmark-name:not(.category):not(.geometric-mean)): Deleted.
(.geometric-mean): Deleted.
(.benchmark-name:not(:first-child)): Deleted.
(.benchmark-name a:link,): Deleted.
(.highlighted-result): Deleted.

  • JetStream2/JetStream2Logo.svg: Added.
  • JetStream2/JetStreamDriver.js:

(updateUI):
(Driver.prototype.async.start):
(Driver.prototype.prepareToRun.text.div.id.string_appeared_here.h3):
(Driver.prototype.prepareToRun.text.span):
(Driver.prototype.prepareToRun.a.h3.h4):
(Driver.prototype.prepareToRun.text.div):
(Driver.prototype.async.initialize):
(Driver.prototype.async.fetchResources.prototype.statusElement.onclick):
(prototype.fetchResources):
(prototype.updateUIBeforeRun):
(prototype.updateUIAfterRun):
(Driver.prototype.async.fetchResources.statusElement.innerHTML.a.href.string_appeared_here):
(Driver.prototype.async.fetchResources):
(Driver.prototype.prepareToRun.text.tr.id.string_appeared_here.FIXME.link.to.benchmark.explanation.td): Deleted.

  • JetStream2/clouds.svg: Added.
  • JetStream2/in-depth.html:
  • JetStream2/index.html:
  • JetStream2/jetstreams.svg: Added.
1:40 PM Changeset in webkit [242960] by Chris Dumez
  • 14 edits in trunk

Add WebsitePolicy for the client to specify the device orientation & motion access policy
https://bugs.webkit.org/show_bug.cgi?id=195750

Reviewed by Geoffrey Garen.

Source/WebCore:

Add WebsitePolicy for the client to specify the device orientation & motion access policy. If
the client already knows access to the device motion & orientation API will be granted / denied,
it can let WebKit know via WebsitePolicies so that WebKit will not ask the client when the
permission is requested by JS.

  • dom/DeviceOrientationAndMotionAccessController.cpp:

(WebCore::DeviceOrientationAndMotionAccessController::shouldAllowAccess):
(WebCore::DeviceOrientationAndMotionAccessController::setAccessState):
(WebCore::DeviceOrientationAndMotionAccessController::accessState const):

  • dom/DeviceOrientationAndMotionAccessController.h:
  • loader/DocumentLoader.h:

(WebCore::DocumentLoader::deviceOrientationAndMotionAccessState const):
(WebCore::DocumentLoader::setDeviceOrientationAndMotionAccessState):

  • page/DOMWindow.cpp:

(WebCore::DOMWindow::isAllowedToUseDeviceMotionOrientation const):

Source/WebKit:

Add WebsitePolicy for the client to specify the device orientation & motion access policy. If
the client already knows access to the device motion & orientation API will be granted / denied,
it can let WebKit know via WebsitePolicies so that WebKit will not ask the client when the
permission is requested by JS.

  • Shared/WebsitePoliciesData.cpp:

(WebKit::WebsitePoliciesData::encode const):
(WebKit::WebsitePoliciesData::decode):
(WebKit::WebsitePoliciesData::applyToDocumentLoader):

  • Shared/WebsitePoliciesData.h:
  • UIProcess/API/APIWebsitePolicies.cpp:

(API::WebsitePolicies::data):

  • UIProcess/API/APIWebsitePolicies.h:
  • UIProcess/API/Cocoa/_WKWebsitePolicies.h:
  • UIProcess/API/Cocoa/_WKWebsitePolicies.mm:

(-[_WKWebsitePolicies setDeviceOrientationAndMotionAccessPolicy:]):
(-[_WKWebsitePolicies deviceOrientationAndMotionAccessPolicy]):

Tools:

Add API test coverage.

  • TestWebKitAPI/Tests/WebKitCocoa/WebsitePolicies.mm:

(-[WebsitePoliciesDeviceOrientationDelegate initWithDeviceOrientationAccessPolicy:]):
(-[WebsitePoliciesDeviceOrientationDelegate _webView:decidePolicyForNavigationAction:userInfo:decisionHandler:]):
(-[WebsitePoliciesDeviceOrientationUIDelegate _webView:shouldAllowDeviceOrientationAndMotionAccessRequestedByFrame:decisionHandler:]):

1:30 PM Changeset in webkit [242959] by bshafiei@apple.com
  • 7 edits in tags/Safari-608.1.9.100/Source

Versioning.

1:19 PM Changeset in webkit [242958] by bshafiei@apple.com
  • 1 copy in tags/Safari-608.1.9.100

Tag Safari-608.1.9.100.

12:56 PM Changeset in webkit [242957] by Alan Coon
  • 1 copy in tags/Safari-608.1.9

Tag Safari-608.1.9.

12:46 PM Changeset in webkit [242956] by Shawn Roberts
  • 37 edits
    3 deletes in trunk

Unreviewed, rolling out r242931.

Causing internal watch/tv OS build failures

Reverted changeset:

"[Web GPU] Updates to GPUCommandBuffer for new GPUCommandQueue
concept"
https://bugs.webkit.org/show_bug.cgi?id=195083
https://trac.webkit.org/changeset/242931

12:31 PM Changeset in webkit [242955] by msaboff@apple.com
  • 5 edits
    1 add in trunk

ASSERTION FAILED: regexp->isValid() or ASSERTION FAILED: !isCompilationThread()
https://bugs.webkit.org/show_bug.cgi?id=195735

Reviewed by Mark Lam.

JSTests:

New regression test.

  • stress/dont-strength-reduce-regexp-with-compile-error.js: Added.

(foo):
(bar):

Source/JavaScriptCore:

There are two bug fixes here.

The first bug happens due to a race condition when we are compiling on a separate thread while the
main thread is compiling the RegExp at a place where it can run out of stack. When that happens,
the RegExp becomes invalid due to the out of stack error. If we check the ASSERT condition in the DFG
compilation thread, we crash. After the main thread throws an exception, it resets the RegExp as
it might compile successfully the next time we try to execute it on a shallower stack.
The main thread will see the regular expression as valid when it executes the JIT'ed code we are compiling
or any slow path we call out to. Therefore ASSERTs like this in compilation code can be eliminated.

The second bug is due to incorrect logic when we go to run the regexp in the Strength Reduction phase.
The current check for "do we have code to run the RegExp?" only checks that the RegExp's state
is != NotCompiled. We also can't run the RegExp if there the state is ParseError.
Changing hasCode() to take this into account fixes the second issue.

(JSC::FTL::DFG::LowerDFGToB3::compileNewRegexp):

  • runtime/RegExp.h:
  • dfg/DFGSpeculativeJIT.cpp:

(JSC::DFG::SpeculativeJIT::compileNewRegexp):

  • runtime/RegExp.h:
12:27 PM Changeset in webkit [242954] by sbarati@apple.com
  • 6 edits
    1 add in trunk

Fixup uses KnownInt32 incorrectly in some nodes
https://bugs.webkit.org/show_bug.cgi?id=195279
<rdar://problem/47915654>

Reviewed by Yusuke Suzuki.

JSTests:

  • stress/known-int32-cant-be-used-across-bytecode-boundary.js: Added.

(foo):

Source/JavaScriptCore:

Fixup was sometimes using KnownInt32 edges when it knew some
incoming value is an Int32 based on what the bytecode would return.
However, because bytecode may result in Int32 for some node does
not mean we'll pick Int32 as the value format for that local. For example,
we may choose for a value to be represented as a double. This patch
corrects such uses of KnownInt32.

  • dfg/DFGArgumentsEliminationPhase.cpp:
  • dfg/DFGFixupPhase.cpp:

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

  • dfg/DFGSpeculativeJIT.cpp:

(JSC::DFG::SpeculativeJIT::compileArrayPush):
(JSC::DFG::SpeculativeJIT::compileGetDirectPname):

  • ftl/FTLLowerDFGToB3.cpp:

(JSC::FTL::DFG::LowerDFGToB3::compileArrayPush):

12:22 PM Changeset in webkit [242953] by timothy@apple.com
  • 2 edits in trunk/Source/WebKit

REGRESSION (r242908): TestWebKitAPI.WebKit.AddAndRemoveDataDetectors Crashed
https://bugs.webkit.org/show_bug.cgi?id=195751

Reviewed by Wenson Hsieh.

  • Shared/Cocoa/ArgumentCodersCocoa.mm:

(IPC::decodeArrayInternal): Added allowedClasses, pass to internal decodeObject for values.
(IPC::decodeDictionaryInternal): Ditto for keys and values.
(IPC::decodeObject): Pass allowedClasses to array and dictionary decoders.

12:11 PM Changeset in webkit [242952] by Chris Dumez
  • 7 edits in trunk

[PSON] Make sure the WebProcessCache is leverage when relaunching a process after termination
https://bugs.webkit.org/show_bug.cgi?id=195747

Reviewed by Geoff Garen.

Source/WebKit:

Make sure the WebProcessCache and the prewarmed process are used when relaunching a process
after termination (e.g. crash).

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::reattachToWebProcess):
(WebKit::WebPageProxy::reattachToWebProcessForReload):
(WebKit::WebPageProxy::reattachToWebProcessWithItem):
(WebKit::WebPageProxy::loadRequest):
(WebKit::WebPageProxy::loadFile):
(WebKit::WebPageProxy::loadData):
(WebKit::WebPageProxy::loadAlternateHTML):
(WebKit::WebPageProxy::loadWebArchiveData):
(WebKit::WebPageProxy::navigateToPDFLinkWithSimulatedClick):

  • UIProcess/WebPageProxy.h:
  • UIProcess/WebProcessPool.cpp:

(WebKit::WebProcessPool::processForRegistrableDomain):
(WebKit::WebProcessPool::createWebPage):
(WebKit::WebProcessPool::processForNavigationInternal):
(WebKit::WebProcessPool::tryPrewarmWithDomainInformation):

  • UIProcess/WebProcessPool.h:

Tools:

Add API test coverage.

  • TestWebKitAPI/Tests/WebKitCocoa/ProcessSwapOnNavigation.mm:
11:57 AM Changeset in webkit [242951] by Chris Dumez
  • 11 edits in trunk

Device orientation's permission should only require a user gesture to prompt the user
https://bugs.webkit.org/show_bug.cgi?id=195731

Reviewed by Geoffrey Garen.

Source/WebCore:

Device orientation's permission should only require a user gesture to prompt the user. If the
user already made a decision, we should resolve the promise with this decision, even without
user gesture.

This is useful for JS to figure out if they are access to device orientation or not because
showing UI for the user to give permission.

No new tests, updated existing tests.

  • dom/DeviceOrientationAndMotionAccessController.cpp:

(WebCore::DeviceOrientationAndMotionAccessController::shouldAllowAccess):

  • dom/DeviceOrientationAndMotionAccessController.h:
  • dom/DeviceOrientationOrMotionEvent.cpp:

(WebCore::DeviceOrientationOrMotionEvent::requestPermission):

LayoutTests:

Update layout tests accordingly.

  • fast/device-orientation/device-motion-request-permission-denied.html:
  • fast/device-orientation/device-motion-request-permission-granted.html:
  • fast/device-orientation/device-motion-request-permission-user-gesture-expected.txt:
  • fast/device-orientation/device-orientation-request-permission-denied.html:
  • fast/device-orientation/device-orientation-request-permission-granted.html:
  • fast/device-orientation/device-orientation-request-permission-user-gesture-expected.txt:
11:40 AM Changeset in webkit [242950] by timothy@apple.com
  • 2 edits in trunk/Source/WebKit

Unreviewed speculative build fix for watchOS after r242908.

  • Shared/Cocoa/WebCoreArgumentCodersCocoa.mm:
11:38 AM Changeset in webkit [242949] by dino@apple.com
  • 6 edits in trunk/LayoutTests

Block all plugins smaller than 5x5px
https://bugs.webkit.org/show_bug.cgi?id=195702
<rdar://problem/28435204>

Updating some tests to account for this change. Make the plugins
big enough to be created.

  • compositing/plugins/small-to-large-composited-plugin.html:
  • fast/frames/resources/sandboxed-iframe-about-blank.html:
  • fast/frames/resources/sandboxed-iframe-plugins-frame-applet.html:
  • fast/frames/resources/sandboxed-iframe-plugins-frame-embed.html:
  • fast/frames/resources/sandboxed-iframe-plugins-frame-object.html:
11:27 AM Changeset in webkit [242948] by Joseph Pecoraro
  • 8 edits
    8 adds in trunk

Web Inspector: Network - HAR Import
https://bugs.webkit.org/show_bug.cgi?id=195642
<rdar://problem/34820974>

Reviewed by Devin Rousso.

Source/WebInspectorUI:

  • Localizations/en.lproj/localizedStrings.js
  • UserInterface/Test.html:
  • UserInterface/Test.html:

New strings and resources.

  • UserInterface/Controllers/HARBuilder.js:

(WI.HARBuilder.dateFromHARDate):
(WI.HARBuilder.protocolFromHARProtocol):
(WI.HARBuilder.responseSourceFromHARFetchType):
Reverse parsers from HAR to WI.Resource types.

  • UserInterface/Models/LocalResource.js: Added.

(WI.LocalResource):
(WI.LocalResource.headersArrayToHeadersObject):
(WI.LocalResource.fromHAREntry):
(WI.LocalResource.prototype.hasContent):
(WI.LocalResource.prototype.setContent):
(WI.LocalResource.prototype.requestContentFromBackend):
A Resource subclass with data fully supplied in the frontend.

  • UserInterface/Controllers/NetworkManager.js:

(WI.NetworkManager):
(WI.NetworkManager.synthesizeImportError):
(WI.NetworkManager.prototype.localResourceForURL):
(WI.NetworkManager.prototype.processHAR):
Process a HAR and extract local resources.

  • UserInterface/Views/NetworkTableContentView.js:

(WI.NetworkTableContentView):
(WI.NetworkTableContentView.prototype.reset):
(WI.NetworkTableContentView.prototype._handleResourceAdded):
(WI.NetworkTableContentView.prototype._importHAR):
Add an import button. When an import succeeds reset the
table and only show imported resources (ignoring page
loaded resources).

LayoutTests:

  • http/tests/inspector/network/har/har-import-expected.txt: Added.
  • http/tests/inspector/network/har/har-import.html: Added.

HAR import tests.

  • http/tests/inspector/network/har/resources/bad-version.har: Added.
  • http/tests/inspector/network/har/resources/basic.har: Added.
  • http/tests/inspector/network/har/resources/empty.har: Added.
  • http/tests/inspector/network/har/resources/webkit.org.har: Added.

Sample HARs to test against.

11:25 AM Changeset in webkit [242947] by youenn@apple.com
  • 6 edits in trunk/Source

Reset storage quota when clearing IDB/Cache API entries
https://bugs.webkit.org/show_bug.cgi?id=195716

Reviewed by Chris Dumez.

Source/WebCore:

On clearing of databases, reset all quota users.
This will ensure all layout test runs start with a clean state.

  • Modules/indexeddb/server/IDBServer.cpp:

(WebCore::IDBServer::IDBServer::didPerformCloseAndDeleteDatabases):

  • storage/StorageQuotaManager.h:

(WebCore::StorageQuotaManager::resetQuota):

Source/WebKit:

On clearing DOMCache or IDB data, reset quota value to the default value.
This ensures consistent layout test runs.

  • NetworkProcess/NetworkProcess.cpp:

(WebKit::NetworkProcess::deleteWebsiteData):
(WebKit::NetworkProcess::deleteWebsiteDataForOrigins):
(WebKit::NetworkProcess::clearStorageQuota):

  • NetworkProcess/NetworkProcess.h:
11:22 AM Changeset in webkit [242946] by jer.noble@apple.com
  • 2 edits in trunk/Source/WebCore

Certain videos are causing a crash when used as WebGL texture
https://bugs.webkit.org/show_bug.cgi?id=195700
<rdar://problem/48869347>

Reviewed by Eric Carlson.

CFEqual is not null-safe, so perform a null and type check before comparing.

  • platform/graphics/cv/VideoTextureCopierCV.cpp:

(WebCore::transferFunctionFromString):

10:41 AM Changeset in webkit [242945] by keith_miller@apple.com
  • 4 edits
    1 add in trunk

DFG liveness can't skip tail caller inline frames
https://bugs.webkit.org/show_bug.cgi?id=195715
JSTests:

Reviewed by Saam Barati.

  • stress/dfg-scan-inlined-tail-caller-frames-liveness.js:

(i.foo):

Source/JavaScriptCore:

<rdar://problem/46221598>

Reviewed by Saam Barati.

In order to simplify OSR exit/DFG bytecode parsing our bytecode
generator always emits an op_ret after any tail call. However, the
DFG when computing the liveness of locals, would skip any tail
caller inline frames. This mean that if we ended up inserting a
Check that would OSR to the op_ret we wouldn't have kept
availability data around for it.

  • dfg/DFGGraph.cpp:

(JSC::DFG::Graph::isLiveInBytecode):

  • dfg/DFGGraph.h:

(JSC::DFG::Graph::forAllLocalsLiveInBytecode):

9:41 AM Changeset in webkit [242944] by rmorisset@apple.com
  • 3 edits in trunk/Source/JavaScriptCore

DFG::Worklist can be shrunk by 16 bytes
https://bugs.webkit.org/show_bug.cgi?id=195490

Reviewed by Darin Adler.

  • dfg/DFGWorklist.cpp:

(JSC::DFG::Worklist::Worklist):

  • dfg/DFGWorklist.h:
9:21 AM Changeset in webkit [242943] by Alan Bujtas
  • 3 edits
    2 adds in trunk

Cleanup inline boxes when list marker gets blockified
https://bugs.webkit.org/show_bug.cgi?id=195746
<rdar://problem/48049175>

Reviewed by Antti Koivisto.

Source/WebCore:

Normally when an element gets blockified (inline -> block) we destroy its renderer and construct a new one (RenderInline -> RenderBlock).
During this process the associated inline boxtree gets destroyed as well. Since RenderListMarker is just a generic RenderBox, the blockifying
change does not require a new renderer.
This patch takes care of destroying the inline boxtree when the marker gains block display type.

Test: fast/block/float/list-marker-is-float-crash.html

  • rendering/RenderListMarker.cpp:

(WebCore::RenderListMarker::styleDidChange):

LayoutTests:

  • fast/block/float/list-marker-is-float-crash-expected.txt: Added.
  • fast/block/float/list-marker-is-float-crash.html: Added.
9:05 AM Changeset in webkit [242942] by Ryan Haddad
  • 5 edits in trunk/LayoutTests

Unreviewed test gardening, rebaseline tests after r241934.

  • fast/events/touch/ios/block-without-overflow-scroll-and-passive-observer-on-block-scrolling-state-expected.txt:
  • fast/events/touch/ios/block-without-overflow-scroll-and-passive-observer-on-document-scrolling-state-expected.txt:
  • fast/events/touch/ios/block-without-overflow-scroll-scrolling-state-expected.txt:
  • fast/events/touch/ios/tap-with-active-touch-end-listener-expected.txt:
3:13 AM Changeset in webkit [242941] by Devin Rousso
  • 13 edits
    7 adds in trunk

Web Inspector: Audit: provide a way to get the contents of resources
https://bugs.webkit.org/show_bug.cgi?id=195266
<rdar://problem/48550911>

Reviewed by Joseph Pecoraro.

Source/JavaScriptCore:

  • inspector/InjectedScriptBase.cpp:

(Inspector::InjectedScriptBase::makeAsyncCall):
Drive-by: fix missing else.

Source/WebCore:

Test: inspector/audit/run-resources.html

  • inspector/InspectorAuditResourcesObject.idl: Added.
  • inspector/InspectorAuditResourcesObject.h: Added.

(WebCore::InspectorAuditResourcesObject::create):
(WebCore::InspectorAuditResourcesObject::Resource):
(WebCore::InspectorAuditResourcesObject::ResourceContent):
(WebCore::InspectorAuditResourcesObject::InspectorAuditCachedResourceClient):
(WebCore::InspectorAuditResourcesObject::InspectorAuditCachedFontClient):
(WebCore::InspectorAuditResourcesObject::InspectorAuditCachedImageClient):
(WebCore::InspectorAuditResourcesObject::InspectorAuditCachedRawResourceClient):
(WebCore::InspectorAuditResourcesObject::InspectorAuditCachedStyleSheetClient):
(WebCore::InspectorAuditResourcesObject::InspectorAuditCachedSVGDocumentClient):

  • inspector/InspectorAuditResourcesObject.cpp: Added.

(WebCore::InspectorAuditResourcesObject::InspectorAuditResourcesObject):
(WebCore::InspectorAuditResourcesObject::getResources):
(WebCore::InspectorAuditResourcesObject::getResourceContent):
(WebCore::InspectorAuditResourcesObject::clientForResource):

  • inspector/agents/InspectorPageAgent.h:
  • inspector/agents/InspectorPageAgent.cpp:

(WebCore::InspectorPageAgent::cachedResourcesForFrame): Added.
(WebCore::allResourcesURLsForFrame):
Moved a file static function to be a class static function so it can be used elsewhere.

  • CMakeLists.txt:
  • DerivedSources-input.xcfilelist:
  • DerivedSources-output.xcfilelist:
  • DerivedSources.make:
  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:

LayoutTests:

  • inspector/audit/resources/sample-resource.css: Added.
  • inspector/audit/resources/sample-resource.js: Added.
  • inspector/audit/run-resources.html: Added.
  • inspector/audit/run-resources-expected.txt: Added.
2:46 AM Changeset in webkit [242940] by Devin Rousso
  • 14 edits in trunk

Web Inspector: Console: getEventListeners should work for any EventTarget
https://bugs.webkit.org/show_bug.cgi?id=195713

Reviewed by Joseph Pecoraro.

Source/WebCore:

Test: inspector/console/command-line-api-getEventListeners.html

  • dom/EventTarget.h:
  • dom/EventTarget.cpp:

(WebCore::EventTarget::eventTypes): Added.

  • inspector/CommandLineAPIHost.idl:
  • inspector/CommandLineAPIHost.h:

(WebCore::CommandLineAPIHost::init):

  • inspector/CommandLineAPIHost.cpp:

(WebCore::CommandLineAPIHost::disconnect):
(WebCore::CommandLineAPIHost::getEventListeners):
(WebCore::listenerEntriesFromListenerInfo): Deleted.

  • inspector/CommandLineAPIModuleSource.js:

(CommandLineAPIImpl.prototype.getEventListeners):

  • inspector/InspectorController.cpp:

(WebCore::InspectorController::InspectorController):

  • inspector/WorkerInspectorController.cpp:

(WebCore::WorkerInspectorController::WorkerInspectorController):

Source/WebInspectorUI:

  • UserInterface/Models/NativeFunctionParameters.js:

LayoutTests:

  • inspector/console/command-line-api-getEventListeners.html:
  • inspector/console/command-line-api-getEventListeners-expected.txt:
2:33 AM Changeset in webkit [242939] by Devin Rousso
  • 10 edits
    2 adds in trunk

Web Inspector: Styles: ::-webkit-scrollbar* rules aren't shown
https://bugs.webkit.org/show_bug.cgi?id=195123
<rdar://problem/48450148>

Reviewed by Joseph Pecoraro.

Source/JavaScriptCore:

  • inspector/protocol/CSS.json:

Add CSS.PseudoId enum, rather than send a number, so that we have more knowledge about
which pseudo type the rule corresponds to (e.g. a string is more descriptive than a number).

Source/WebCore:

Test: inspector/css/getMatchedStylesForNode.html

  • inspector/agents/InspectorCSSAgent.cpp:

(WebCore::protocolValueForPseudoId): Added.
(WebCore::InspectorCSSAgent::getMatchedStylesForNode):

Source/WebInspectorUI:

  • UserInterface/Controllers/CSSManager.js:

(WI.CSSManager.displayNameForPseudoId): Added.

  • UserInterface/Models/DOMNodeStyles.js:

(WI.DOMNodeStyles.static uniqueOrderedStyles): Added.
(WI.DOMNodeStyles.prototype.get uniqueOrderedStyles):

  • UserInterface/Views/SpreadsheetRulesStyleDetailsPanel.js:

(WI.SpreadsheetRulesStyleDetailsPanel.prototype.layout):
(WI.SpreadsheetRulesStyleDetailsPanel.prototype._handleSectionFilterApplied):
Rather than iterate over the WI.DOMNode's list of pseudo-elements (which is only ::before
and ::after), we iterate over the WI.DOMNodeStyle's list of pseudo-element rules. This is
an object where the key is a CSS.PseudoId and the value is an object containing all the
matched rules and ordered styles for that pseudo-type. We can preserve the current
functionality by using the ::before/::after WI.DOMNode when we encounter one of those
pseudo-ids.

An additional benefit of this change is that ::before/::after styles will still appear
in the Rules panel even if they don't have a content property set (e.g. when the
::before/::after pseudo-element doesn't exist). This is because the styles are no longer
fetched from those pseudo-element nodes directly, but rather as a matched style for the
parent node. As such, editing a content property to become invalid/disablde in a
::before/::after rule won't make the entire rule disappeaer.

LayoutTests:

  • inspector/css/getMatchedStylesForNode.html: Added.
  • inspector/css/getMatchedStylesForNode-expected.txt: Added.
1:02 AM Changeset in webkit [242938] by ysuzuki@apple.com
  • 29 edits
    1 add in trunk/Source/bmalloc

[bmalloc] Add StaticPerProcess for known types to save pages
https://bugs.webkit.org/show_bug.cgi?id=195691

Reviewed by Mark Lam.

As initial memory footprint of VM + JSGlobalObject becomes 488KB dirty size in fast malloc memory (w/ JSC_useJIT=0 and Malloc=1), pages for PerProcess is costly.
For example, under Malloc=1 mode, we still need to allocate PerProcess<DebugHeap> and PerProcess<Environment>. And sizeof(Environment) is only 1 (bool flag), and
sizeof(DebugHeap) is 120. But we are allocating 1 pages for them. Since page size in iOS is 16KB, this 121B consumes 16KB dirty memory, and it is not negligible
size if we keep in mind that the current fast malloc heap size is 488KB. Putting them into the DATA section, close to the other mutable data, we can avoid allocating
this page.

This patch revives the SafePerProcess concept in r228107. We add "StaticPerProcess<T>", which allocates underlying storage statically in the DATA section instead of
allocating it at runtime. And we use this StaticPerProcess<T> for types where (1) T is known a priori, and (2) sizeof(T) is not huge.

  • bmalloc.xcodeproj/project.pbxproj:
  • bmalloc/AllIsoHeaps.cpp:
  • bmalloc/AllIsoHeaps.h:
  • bmalloc/Allocator.cpp:

(bmalloc::Allocator::Allocator):

  • bmalloc/Cache.cpp:

(bmalloc::Cache::Cache):

  • bmalloc/CryptoRandom.cpp:

(bmalloc::cryptoRandom):

  • bmalloc/Deallocator.cpp:

(bmalloc::Deallocator::Deallocator):

  • bmalloc/DebugHeap.cpp:
  • bmalloc/DebugHeap.h:

(bmalloc::DebugHeap::tryGet):

  • bmalloc/Environment.cpp:
  • bmalloc/Environment.h:
  • bmalloc/Gigacage.cpp:

(Gigacage::Callback::Callback):
(Gigacage::Callback::function):
(bmalloc::PrimitiveDisableCallbacks::PrimitiveDisableCallbacks):
(Gigacage::disablePrimitiveGigacage):
(Gigacage::addPrimitiveDisableCallback):
(Gigacage::removePrimitiveDisableCallback):
(Gigacage::shouldBeEnabled):
(Gigacage::bmalloc::Callback::Callback): Deleted.
(Gigacage::bmalloc::Callback::function): Deleted.
(Gigacage::bmalloc::PrimitiveDisableCallbacks::PrimitiveDisableCallbacks): Deleted.

  • bmalloc/Heap.cpp:

(bmalloc::Heap::Heap):
(bmalloc::Heap::tryAllocateLarge):

  • bmalloc/IsoDirectoryInlines.h:

(bmalloc::passedNumPages>::takeFirstEligible):
(bmalloc::passedNumPages>::didBecome):

  • bmalloc/IsoHeapImpl.cpp:

(bmalloc::IsoHeapImplBase::addToAllIsoHeaps):

  • bmalloc/IsoPage.cpp:

(bmalloc::IsoPageBase::allocatePageMemory):

  • bmalloc/IsoTLS.cpp:

(bmalloc::IsoTLS::IsoTLS):
(bmalloc::IsoTLS::ensureEntries):
(bmalloc::IsoTLS::forEachEntry):

  • bmalloc/IsoTLSEntry.cpp:

(bmalloc::IsoTLSEntry::IsoTLSEntry):

  • bmalloc/IsoTLSInlines.h:

(bmalloc::IsoTLS::allocateSlow):
(bmalloc::IsoTLS::deallocateSlow):

  • bmalloc/IsoTLSLayout.cpp:
  • bmalloc/IsoTLSLayout.h:
  • bmalloc/Scavenger.cpp:

(bmalloc::Scavenger::Scavenger):
(bmalloc::dumpStats):
(bmalloc::Scavenger::scavenge):
(bmalloc::Scavenger::partialScavenge):
(bmalloc::Scavenger::freeableMemory):
(bmalloc::Scavenger::footprint):

  • bmalloc/Scavenger.h:
  • bmalloc/StaticPerProcess.h: Added.
  • bmalloc/VMHeap.cpp:
  • bmalloc/VMHeap.h:
  • bmalloc/Zone.h:
  • bmalloc/bmalloc.cpp:

(bmalloc::api::scavenge):
(bmalloc::api::isEnabled):
(bmalloc::api::setScavengerThreadQOSClass):
(bmalloc::api::enableMiniMode):

  • test/testbmalloc.cpp:

(assertEmptyPointerSet):
(assertHasObjects):
(assertHasOnlyObjects):
(assertClean):

1:00 AM Changeset in webkit [242937] by Devin Rousso
  • 8 edits in trunk/Source/WebInspectorUI

Web Inspector: we should show artificial context menus on mousedown instead of click
https://bugs.webkit.org/show_bug.cgi?id=195494

Reviewed by Joseph Pecoraro.

  • UserInterface/Views/ContextMenu.js:

(WI.ContextMenu):
(WI.ContextMenu.prototype.show):
(WI.ContextMenu.prototype.addBeforeShowCallback): Added.
(WI.ContextMenu.prototype.handleEvent):
Provide a way to register a callback that will be called right as the "contextmenu" event is
handled, but before the context menu is actually shown. Since "mousedown" events are also
fired when/before a "contextmenu" event is fired, each of the below callers has to maintain
some state indicating "we are about to show a context menu, so ignore all "mousedown" events
until that time". Without this, the below callers wouldn't be able to tell when the context
menu is finally shown.

  • UserInterface/Base/SearchUtilities.js:

(WI.SearchUtilities.createSettingsButton):

  • UserInterface/Views/CanvasContentView.js:

(WI.CanvasContentView):
(WI.CanvasContentView.prototype.initialLayout):
(WI.CanvasContentView.prototype._handleCanvasElementButtonMouseDown): Added.
(WI.CanvasContentView.prototype._handleViewShaderButtonMouseDown): Added.
(WI.CanvasContentView.prototype._handleViewRecordingButtonMouseDown): Added.
(WI.CanvasContentView.prototype._canvasElementButtonClicked): Deleted.
(WI.CanvasContentView.prototype._handleViewShaderButtonClicked): Deleted.
(WI.CanvasContentView.prototype._handleViewRecordingButtonClicked): Deleted.

  • UserInterface/Views/DebuggerSidebarPanel.js:

(WI.DebuggerSidebarPanel):
(WI.DebuggerSidebarPanel.prototype._handleCreateBreakpointMouseDown): Added.
(WI.DebuggerSidebarPanel.prototype._handleCreateBreakpointClicked): Deleted.

  • UserInterface/Views/SourcesNavigationSidebarPanel.js:

(WI.SourcesNavigationSidebarPanel):
(WI.SourcesNavigationSidebarPanel.prototype._handleCreateBreakpointMouseDown): Added.
(WI.SourcesNavigationSidebarPanel.prototype._handleCreateBreakpointClicked): Deleted.

  • UserInterface/Views/TabBar.js:

(WI.TabBar.prototype._handleMouseDown):

  • UserInterface/Views/LegacyTabBar.js:

(WI.LegacyTabBar.prototype._handleMouseDown):

Mar 13, 2019:

10:44 PM Changeset in webkit [242936] by benjamin@webkit.org
  • 3 edits in trunk/Source/WebCore

Fix the argument type of RenderView::resumePausedImageAnimationsIfNeeded()
https://bugs.webkit.org/show_bug.cgi?id=195659

Reviewed by Saam Barati.

The two callers of resumePausedImageAnimationsIfNeeded() both get the IntRect
as a reference. The rect was going on the stack then used as a reference again.

  • rendering/RenderView.cpp:

(WebCore::RenderView::resumePausedImageAnimationsIfNeeded):

  • rendering/RenderView.h:
9:49 PM Changeset in webkit [242935] by Alan Bujtas
  • 5 edits in trunk/Source

[ContentChangeObserver] Stop content observation when content calls preventDefault() on touch events
https://bugs.webkit.org/show_bug.cgi?id=195724
<rdar://problem/48873456>

Reviewed by Simon Fraser.

Source/WebCore:

Call willNotProceedWithClick on preventDefault. This is very similar to the long press case.

  • page/ios/ContentChangeObserver.cpp:

(WebCore::willNotProceedWithClick):
(WebCore::ContentChangeObserver::didRecognizeLongPress):
(WebCore::ContentChangeObserver::didPreventDefaultForEvent):

  • page/ios/ContentChangeObserver.h:

Source/WebKit:

  • WebProcess/WebCoreSupport/ios/WebChromeClientIOS.mm:

(WebKit::WebChromeClient::didPreventDefaultForEvent):

8:59 PM Changeset in webkit [242934] by Wenson Hsieh
  • 5 edits in trunk

Make -[_WKAttachment setFileWrapper:contentType:completion:] robust when given a nil completion handler
https://bugs.webkit.org/show_bug.cgi?id=195725
<rdar://problem/48545062>

Reviewed by Tim Horton.

Source/WebKit:

Add a missing nil check before invoking the given completionHandler in the case where the attachment is invalid.
Tested by augmenting WKAttachmentTests.SetFileWrapperForPDFImageAttachment to exercise this scenario.

  • UIProcess/API/APIAttachment.cpp:

(API::Attachment::invalidate):

Additionally make sure that an invalidated _WKAttachment is also considered to be disconnected.

  • UIProcess/API/Cocoa/_WKAttachment.mm:

(-[_WKAttachment setFileWrapper:contentType:completion:]):

Tools:

Test that we don't crash when changing the file wrapper of an invalid attachment, if the given completion
handler is nil.

  • TestWebKitAPI/Tests/WebKitCocoa/WKAttachmentTests.mm:

(TestWebKitAPI::TEST):

8:07 PM Changeset in webkit [242933] by Dewei Zhu
  • 3 edits in trunk/Websites/perf.webkit.org

Test freshness page should improve the ability to correlating issues from same builder.
https://bugs.webkit.org/show_bug.cgi?id=195242

Reviewed by Ryosuke Niwa.

Added the ability to highlight indicators with same builder when mouse is hovering over one indicator.
This is a very useful visualization for correlating issues specific to a builder.
Added tooltip with latest build link when hovering over an indicator.

  • public/v3/components/freshness-indicator.js:

(FreshnessIndicator): Removed 'summary' field as it's no longer needed.
Added 'highlighted' field.
(FreshnessIndicator.prototype.update): Added 'highlighted' argument.
(FreshnessIndicator.prototype.didConstructShadowTree): Make indicator to dispatch mouse enter and leave
messages so that UI can highlight corresponding cells.
(FreshnessIndicator.prototype.render):
(FreshnessIndicator.cssTemplate):

  • public/v3/pages/test-freshness-page.js: Added tooltip to show latest build time and build link.

Added logic to manually compute table body height.
(TestFreshnessPage):
(TestFreshnessPage.prototype.didConstructShadowTree):
(TestFreshnessPage.prototype._fetchTestResults):
(TestFreshnessPage.prototype.render):
(TestFreshnessPage.prototype._renderTooltip):
(TestFreshnessPage.prototype._constructTableCell):
(TestFreshnessPage.cssTemplate):

7:46 PM Changeset in webkit [242932] by commit-queue@webkit.org
  • 5 edits
    1 add in trunk

Add utility function to allow easy reverse range-based iteration of a container
https://bugs.webkit.org/show_bug.cgi?id=195542

Patch by Sam Weinig <sam@webkit.org> on 2019-03-13
Reviewed by Antti Koivisto.

Source/WTF:

Add functions to create an IteratorRange<T> that will iterate a container backwards. It
works with any container that is compatible with std::rbegin() and std::rend(). It is
expected to be used in conjunction with range-based for-loops like so:

for (auto& value : WTF::makeReversedRange(myContainer))

...

  • wtf/IteratorRange.h:

(WTF::makeReversedRange):

Tools:

  • TestWebKitAPI/CMakeLists.txt:
  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/WTF/IteratorRange.cpp: Added.

(TestWebKitAPI::TEST):
Add test to ensure WTF::makeReversedRange() works correctly and uses the correct types.

6:42 PM Changeset in webkit [242931] by Justin Fan
  • 37 edits
    3 copies in trunk

[Web GPU] Updates to GPUCommandBuffer for new GPUCommandQueue concept
https://bugs.webkit.org/show_bug.cgi?id=195083
<rdar://problem/48423591>

Reviewed by Dean Jackson.

Source/WebCore:

WebGPUCommandBuffer now represents a completed GPUCommandBuffer that can only be used in queue submits. The previous WebGPUCommandBuffer
is now WebGPUCommandEncoder.

Affected Web GPU tests updated to match new API.

New files and symbols:

  • CMakeLists.txt:
  • DerivedSources.make:
  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • bindings/js/WebCoreBuiltinNames.h:

Implement new WebGPUCommandBuffer, now just a DOM object carrier for a finished GPUCommandBuffer:

  • Modules/webgpu/WebGPUCommandBuffer.cpp:

(WebCore::WebGPUCommandBuffer::create):
(WebCore::WebGPUCommandBuffer::WebGPUCommandBuffer):
(WebCore::WebGPUBufferCopyView::tryCreateGPUBufferCopyView const): Deleted.
(WebCore::WebGPUTextureCopyView::tryCreateGPUTextureCopyView const): Deleted.
(WebCore::WebGPUCommandBuffer::beginRenderPass): Deleted.
(WebCore::WebGPUCommandBuffer::copyBufferToBuffer): Deleted.
(WebCore::WebGPUCommandBuffer::copyBufferToTexture): Deleted.
(WebCore::WebGPUCommandBuffer::copyTextureToBuffer): Deleted.
(WebCore::WebGPUCommandBuffer::copyTextureToTexture): Deleted.

  • Modules/webgpu/WebGPUCommandBuffer.h:

(WebCore::WebGPUCommandBuffer::commandBuffer):
(WebCore::WebGPUCommandBuffer::commandBuffer const): Deleted.

  • Modules/webgpu/WebGPUCommandBuffer.idl:

Rename old WebGPUCommandBuffer to WebGPUCommandEncoder:

  • Modules/webgpu/WebGPUCommandEncoder.cpp: Copied from Source/WebCore/Modules/webgpu/WebGPUCommandBuffer.cpp.

(WebCore::WebGPUBufferCopyView::tryCreateGPUBufferCopyView const):
(WebCore::WebGPUTextureCopyView::tryCreateGPUTextureCopyView const):
(WebCore::WebGPUCommandEncoder::create):
(WebCore::WebGPUCommandEncoder::WebGPUCommandEncoder):
(WebCore::WebGPUCommandEncoder::beginRenderPass):
(WebCore::WebGPUCommandEncoder::copyBufferToBuffer):
(WebCore::WebGPUCommandEncoder::copyBufferToTexture):
(WebCore::WebGPUCommandEncoder::copyTextureToBuffer):
(WebCore::WebGPUCommandEncoder::copyTextureToTexture):
(WebCore::WebGPUCommandEncoder::finish): Added. "Completes" this and invalidates it. Returns its GPUCommandBuffer, ready for submission.

  • Modules/webgpu/WebGPUCommandEncoder.h: Copied from Source/WebCore/Modules/webgpu/WebGPUCommandBuffer.h.
  • Modules/webgpu/WebGPUCommandEncoder.idl: Copied from Source/WebCore/Modules/webgpu/WebGPUCommandBuffer.idl.
  • Modules/webgpu/WebGPUDevice.cpp:

(WebCore::WebGPUDevice::createCommandEncoder const): Renamed fom createCommandBuffer. Now returns non-nullable.
(WebCore::WebGPUDevice::createCommandBuffer const): Deleted.

  • Modules/webgpu/WebGPUDevice.h:
  • Modules/webgpu/WebGPUDevice.idl:
  • Modules/webgpu/WebGPUProgrammablePassEncoder.cpp:

(WebCore::WebGPUProgrammablePassEncoder::WebGPUProgrammablePassEncoder):
(WebCore::WebGPUProgrammablePassEncoder::endPass): No longer returns the original WebGPUCommandBuffer.
(WebCore::WebGPUProgrammablePassEncoder::setBindGroup const):
(WebCore::WebGPUProgrammablePassEncoder::setPipeline):

  • Modules/webgpu/WebGPUProgrammablePassEncoder.h:
  • Modules/webgpu/WebGPUProgrammablePassEncoder.idl:
  • Modules/webgpu/WebGPUQueue.cpp:

(WebCore::WebGPUQueue::submit): Replace unnecessary rvalue reference parameter.

  • Modules/webgpu/WebGPUQueue.h:
  • Modules/webgpu/WebGPUQueue.idl:
  • Modules/webgpu/WebGPURenderPassEncoder.cpp:

(WebCore::WebGPURenderPassEncoder::create):
(WebCore::WebGPURenderPassEncoder::WebGPURenderPassEncoder):
(WebCore::WebGPURenderPassEncoder::setVertexBuffers):
(WebCore::WebGPURenderPassEncoder::draw):
(WebCore::WebGPURenderPassEncoder::passEncoder const): Now returns a pointer since it is properly backed by a RefPtr.

  • Modules/webgpu/WebGPURenderPassEncoder.h:
  • Modules/webgpu/WebGPUSwapChain.cpp:

(WebCore::WebGPUSwapChain::getCurrentTexture): No longer invalidates m_currentTexture. Doh!

  • platform/graphics/gpu/GPUCommandBuffer.h: Missing includes for the *CopyView structs.
  • platform/graphics/gpu/GPUDevice.cpp:

(WebCore::GPUDevice::tryCreateCommandBuffer const): Renamed from createCommandBuffer.
(WebCore::GPUDevice::createCommandBuffer): Deleted.

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

(WebCore::GPUCommandBuffer::tryCreate): Renamed from create.
(WebCore::GPUCommandBuffer::create): Deleted.

LayoutTests:

Update existing Web GPU tests for GPUCommandEncoder and new GPUCommandBuffer.

  • webgpu/blit-commands.html:
  • webgpu/buffer-command-buffer-races.html:
  • webgpu/buffer-resource-triangles.html:
  • webgpu/command-buffers-expected.txt:
  • webgpu/command-buffers.html:
  • webgpu/depth-enabled-triangle-strip.html:
  • webgpu/js/webgpu-functions.js:

(beginBasicRenderPass):

  • webgpu/render-command-encoding.html:
  • webgpu/simple-triangle-strip.html:
  • webgpu/texture-triangle-strip.html:
  • webgpu/vertex-buffer-triangle-strip.html:
6:40 PM Changeset in webkit [242930] by timothy@apple.com
  • 2 edits in trunk/Source/WebKit

REGRESSION (r242908): 'NSInvalidArgumentException', reason: '+[PKPaymentMerchantSession count]: unrecognized selector sent to class 0x1c0fae060'
https://bugs.webkit.org/show_bug.cgi?id=195720

Reviewed by Andy Estes.

Add back decode(Decoder& decoder, Class allowedClass) for Apple Pay code.

  • Shared/Cocoa/ArgumentCodersCocoa.h:

(IPC::decode): Added.

6:35 PM Changeset in webkit [242929] by Devin Rousso
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: Debugger: pausing in an inline script on a page with a URL query creates an Extra Script
https://bugs.webkit.org/show_bug.cgi?id=195705
<rdar://problem/48853820>

Reviewed by Antoine Quint.

  • UserInterface/Models/Script.js:

(WI.Script.prototype._resolveResource):
If the page's URL has a query parameter, the payload we receive for any inline <script>s
doesn't include the query parameter as part of its URL. As such, if there isn't an existing
resource with a URL that exactly matches the URL of the script and if the URL of the main
resource for the script's target starts with the URL of the script, we assume that the
script "belongs" to the target's main resource and associate the script with it as such.

6:09 PM Changeset in webkit [242928] by Caio Lima
  • 6 edits in trunk/Source/JavaScriptCore

[JSC] CodeBlock::visitChildren is reporting extra memory even when its JITCode is singleton
https://bugs.webkit.org/show_bug.cgi?id=195638

Reviewed by Mark Lam.

This patch introduces a m_isShared flag to track whether the
JITCode is shared between many CodeBlocks. This flag is used in
CodeBlock::setJITCode and CodeBlock::visitChildren to avoid
reporting duplicated extra memory for singleton JITCodes.
With those changes, we now stop counting singleton LLIntEntrypoints
as extra memory, since they are declared as static variables. This
change can potentially avoid unecessary GC pressure, because
extra memory is used by Heap::updateAllocationLimits() to update Heap
limits.
Even though it is hard to show performance difference for this change
(see results below), it is important to keep extra memory usage
correct. Otherwise, it can be a source of a complicated bug on
GC in the future.

Results from last run of Speedometer 2 comparing ToT and changes. We
collected those numbers running Minibrowser on a MacBook Pro 15-inch
with 2,6 GHz Intel Core i7. Both versions are with JIT disabled,
since these singleton JITCode are only used by this configuration:

Speedometer2 Run #1

ToT: 58.2 +- 1.1
changes: 57.9 +- 0.99

Speedometer2 Run #2

ToT: 58.5 +- 1.7
changes: 58.0 +- 1.5

Speedometer2 Run #2

ToT: 58.5 +- 0.99
changes: 57.1 +- 1.5

  • bytecode/CodeBlock.cpp:

(JSC::CodeBlock::estimatedSize):
(JSC::CodeBlock::visitChildren):

  • bytecode/CodeBlock.h:

(JSC::CodeBlock::setJITCode):

  • jit/JITCode.cpp:

(JSC::JITCode::JITCode):
(JSC::JITCodeWithCodeRef::JITCodeWithCodeRef):
(JSC::DirectJITCode::DirectJITCode):
(JSC::NativeJITCode::NativeJITCode):

  • jit/JITCode.h:

(JSC::JITCode::isShared const):

  • llint/LLIntEntrypoint.cpp:

(JSC::LLInt::setFunctionEntrypoint):
(JSC::LLInt::setEvalEntrypoint):
(JSC::LLInt::setProgramEntrypoint):
(JSC::LLInt::setModuleProgramEntrypoint):

6:05 PM Changeset in webkit [242927] by Kocsen Chung
  • 1 copy in tags/Safari-607.2.1

Tag Safari-607.2.1.

5:50 PM Changeset in webkit [242926] by timothy_horton@apple.com
  • 2 edits in trunk/Source/WebKit

Stop using some deprecated SPI in WKDrawingView
https://bugs.webkit.org/show_bug.cgi?id=195706
<rdar://problem/48062599>

Reviewed by Wenson Hsieh.

  • UIProcess/ios/WKDrawingView.mm:

(-[WKDrawingView renderedDrawing]):
(-[WKDrawingView PNGRepresentation]):
(-[WKDrawingView loadDrawingFromPNGRepresentation:]):

5:38 PM Changeset in webkit [242925] by Ryan Haddad
  • 2 edits in trunk/Source/WebKitLegacy/win

Unreviewed attempt to fix the Windows build after r242920.

  • WebCoreSupport/WebFrameLoaderClient.h:
5:37 PM Changeset in webkit [242924] by aboya@igalia.com
  • 3 edits in trunk/LayoutTests

[GTK] Unreviewed test gardening
https://bugs.webkit.org/show_bug.cgi?id=195717

  • platform/gtk/TestExpectations:
  • platform/wpe/TestExpectations:
5:17 PM Changeset in webkit [242923] by timothy@apple.com
  • 2 edits in trunk/Source/WebKit

Unreviewed speculative build fix for watchOS after r242908.

  • Shared/Cocoa/ArgumentCodersCocoa.mm:

(IPC::decodeObject):

5:06 PM Changeset in webkit [242922] by mark.lam@apple.com
  • 3 edits in trunk/JSTests

Gardening: reducing the variants on 2 tests to avoid timing out on JSC Debug queue.
https://bugs.webkit.org/show_bug.cgi?id=195415

Not reviewed.

Changed these tests to only run the default configuration.
The ftl-no-cjit-validate-sampling-profiler variant was timing out.
There's no strong need to run this test on that variant.

  • stress/dfg-to-string-on-int-does-gc.js:
  • stress/dfg-to-string-on-string-or-string-object-does-not-gc.js:
4:46 PM Changeset in webkit [242921] by Alan Bujtas
  • 3 edits in trunk/Source/WebCore

[WeakPtr] RenderListMarker::m_listItem should be a WeakPtr
https://bugs.webkit.org/show_bug.cgi?id=195704
<rdar://problem/48486278>

Reviewed by Simon Fraser.

  • rendering/RenderListMarker.cpp:

(WebCore::RenderListMarker::RenderListMarker):
(WebCore::RenderListMarker::paint):
(WebCore::RenderListMarker::layout):
(WebCore::RenderListMarker::updateContent):
(WebCore::RenderListMarker::computePreferredLogicalWidths):
(WebCore::RenderListMarker::lineHeight const):
(WebCore::RenderListMarker::baselinePosition const):
(WebCore::RenderListMarker::suffix const):
(WebCore::RenderListMarker::isInside const):
(WebCore::RenderListMarker::getRelativeMarkerRect):

  • rendering/RenderListMarker.h:
4:37 PM Changeset in webkit [242920] by dino@apple.com
  • 31 edits
    2 adds in trunk

Block all plugins smaller than 5x5px
https://bugs.webkit.org/show_bug.cgi?id=195702
<rdar://problem/28435204>

Reviewed by Sam Weinig.

Source/WebCore:

Block all plugins that are smaller than a threshold, in this case
5px x 5px. Other browsers have implemented this for a while, and now
that we have Intersection Observers, small plugins are no longer
necessary.

Test: plugins/small-plugin-blocked.html

  • en.lproj/Localizable.strings: New message for a small plugin.
  • platform/LocalizedStrings.cpp:

(WebCore::pluginTooSmallText):

  • platform/LocalizedStrings.h:
  • html/HTMLPlugInElement.cpp: Helper function for Internals testing.

(WebCore::HTMLPlugInElement::isBelowSizeThreshold const):

  • html/HTMLPlugInElement.h:
  • loader/EmptyClients.cpp: Removed an unused function.

(WebCore::EmptyFrameLoaderClient::recreatePlugin): Deleted.

  • loader/EmptyFrameLoaderClient.h:
  • loader/FrameLoaderClient.h:
  • page/Settings.yaml: Add flag for new feature.
  • rendering/RenderEmbeddedObject.cpp: New unavailability reason for

embedded objects.
(WebCore::unavailablePluginReplacementText):

  • rendering/RenderEmbeddedObject.h:

(WebCore::RenderEmbeddedObject::pluginUnavailabilityReason const):

  • testing/Internals.cpp: Helper function for testing.

(WebCore::Internals::pluginIsBelowSizeThreshold):

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

Source/WebKit:

Block all plugins that are smaller than a threshold, in this case
5x5px. Other browsers have implemented this for a while, and now
that we have Intersection Observers, small plugins are no longer
necessary.

  • Shared/WebPreferences.yaml: New setting for this feature.
  • UIProcess/WebPageProxy.cpp: Handle new unavailability type.

(WebKit::WebPageProxy::unavailablePluginButtonClicked):

  • WebProcess/WebCoreSupport/WebChromeClient.cpp:

(WebKit::WebChromeClient::shouldUnavailablePluginMessageBeButton const):

  • WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp: Removed this function

as it was never being called.
(WebKit::WebFrameLoaderClient::recreatePlugin): Deleted.

  • WebProcess/WebCoreSupport/WebFrameLoaderClient.h:
  • WebProcess/WebPage/WebPage.cpp:

(WebKit::pluginIsSmall): Checks the size of the plugin.
(WebKit::WebPage::createPlugin): If the plugin is too small, stop it from
launching.

Source/WebKitLegacy/mac:

Removed a function that was never being called.

  • WebCoreSupport/WebFrameLoaderClient.h:
  • WebCoreSupport/WebFrameLoaderClient.mm:

(WebFrameLoaderClient::recreatePlugin): Deleted.

LayoutTests:

New test for some small plugins. Updated existing tests
to create plugins bigger than a threshold if necessary.

  • plugins/clicking-missing-plugin-fires-delegate.html:
  • plugins/destroy-stream-twice.html:
  • plugins/npruntime/npruntime.html:
  • plugins/object-embed-plugin-scripting.html:
  • plugins/small-plugin-blocked-expected.txt: Added.
  • plugins/small-plugin-blocked.html: Added.
  • platform/mac-wk1/TestExpectations: Skip new test on WK1.
4:36 PM Changeset in webkit [242919] by Alan Bujtas
  • 4 edits
    2 adds in trunk

Use RenderBox::previousSiblingBox/nextSiblingBox in RenderMultiColumnFlow
https://bugs.webkit.org/show_bug.cgi?id=195701
<rdar://problem/48448658>

Reviewed by Simon Fraser.

Source/WebCore:

It's safer to use existing RenderBox functions to get sibling boxes.

Test: fast/ruby/crash-when-paginated-ruby.html

  • rendering/RenderMultiColumnFlow.cpp:

(WebCore::RenderMultiColumnFlow::nextColumnSetOrSpannerSiblingOf):
(WebCore::RenderMultiColumnFlow::previousColumnSetOrSpannerSiblingOf):

LayoutTests:

  • fast/ruby/crash-when-paginated-ruby-expected.txt: Added.
  • fast/ruby/crash-when-paginated-ruby.html: Added.
4:24 PM Changeset in webkit [242918] by Keith Rollin
  • 16 edits
    1 add in trunk/Source

Add support for new StagedFrameworks layout
https://bugs.webkit.org/show_bug.cgi?id=195543

Reviewed by Alexey Proskuryakov.

Source/JavaScriptCore:

When creating the WebKit layout for out-of-band Safari/WebKit updates,
use an optional path prefix when called for.

  • Configurations/Base.xcconfig:

Source/ThirdParty/libwebrtc:

When creating the WebKit layout for out-of-band Safari/WebKit updates,
use an optional path prefix when called for.

  • Configurations/Base.xcconfig:

Source/WebCore:

When creating the WebKit layout for out-of-band Safari/WebKit updates,
use an optional path prefix when called for.

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

  • Configurations/WebCore.xcconfig:

Source/WebCore/PAL:

When creating the WebKit layout for out-of-band Safari/WebKit updates,
use an optional path prefix when called for.

  • Configurations/PAL.xcconfig:

Source/WebInspectorUI:

When creating the WebKit layout for out-of-band Safari/WebKit updates,
use an optional path prefix when called for.

Opportunistic cleanup: remove unused
OTHER_LDFLAGS_VERSIONED_FRAMEWORK_PATH variable, which otherwise would
have needlessly been updated to also incorporate the new prefix.

  • Configurations/Base.xcconfig:
  • Configurations/WebKitTargetConditionals.xcconfig: Added.

Source/WebKit:

When creating the WebKit layout for out-of-band Safari/WebKit updates,
use an optional path prefix when called for.

Update the dyld_env path in OTHER_LDFLAGS_VERSIONED_FRAMEWORK_PATH to
also understand about this layout.

  • Configurations/BaseTarget.xcconfig:

Source/WebKitLegacy/mac:

When creating the WebKit layout for out-of-band Safari/WebKit updates,
use an optional path prefix when called for.

  • Configurations/WebKitLegacy.xcconfig:

Source/WTF:

Opportunistic cleanup: remove unused JAVASCRIPTCORE_FRAMEWORKS_DIR
variable.

  • Configurations/Base.xcconfig:
4:18 PM Changeset in webkit [242917] by Wenson Hsieh
  • 4 edits
    2 adds in trunk

Fix an edge case where HTMLFormElement::removeFormElement is invoked twice with the same element
https://bugs.webkit.org/show_bug.cgi?id=195663
<rdar://problem/48576391>

Reviewed by Ryosuke Niwa.

Source/WebCore:

Currently, it's possible for HTMLFormControlElement's destructor to be reentrant. This may happen if the form
control element is ref'd while carrying out its destructor's logic. This may happen in two places in
HTMLFormControlElement (didChangeForm and resetDefaultButton), both of which actually don't require ensuring a
protected reference to the form control element since they should never result in any script execution.

To fix the bug, convert these strong references into raw pointers, and add ScriptDisallowedScope to ensure that
we don't change these codepaths in the future, such that they trigger arbitrary script execution.

Test: fast/forms/remove-associated-element-after-gc.html

  • html/HTMLFormControlElement.cpp:

(WebCore::HTMLFormControlElement::didChangeForm):

  • html/HTMLFormElement.cpp:

(WebCore::HTMLFormElement::resetDefaultButton):

LayoutTests:

Add a layout test to exercise the scenario described in the WebCore ChangeLog.

  • fast/forms/remove-associated-element-after-gc-expected.txt: Added.
  • fast/forms/remove-associated-element-after-gc.html: Added.
4:07 PM Changeset in webkit [242916] by yoshiaki.jitsukawa@sony.com
  • 3 edits in trunk/Source/bmalloc

[bmalloc] Use MADV_FREE on FreeBSD
https://bugs.webkit.org/show_bug.cgi?id=195665

Reviewed by Geoffrey Garen.

  • bmalloc/BPlatform.h:

Introduce BOS_FREEBSD, which is equivalent to WTF_OS_FREEBSD

  • bmalloc/VMAllocate.h:

(bmalloc::vmDeallocatePhysicalPages):

Use MADV_FREE instead of MADV_DONTNEED if BOS(FREEBSD), since on FreeBSD,
unlike on Linux, MADV_DONTNEED doesn't let the OS discard the contents of
the pages.

3:26 PM Changeset in webkit [242915] by dbates@webkit.org
  • 3 edits in trunk/Source/WebCore

Remove some unnecessary !USE(UIKIT_KEYBOARD_ADDITIONS) guards
https://bugs.webkit.org/show_bug.cgi?id=195703

Reviewed by Tim Horton.

Remove out-of-date comment and unncessary !USE(UIKIT_KEYBOARD_ADDITIONS) guards. Following
r240604 we now make use of WebCore::windowsKeyCodeForCharCode() even for hardware key events
when USE(UIKIT_KEYBOARD_ADDITIONS) is enabled.

No functionality changed. So, no new tests.

  • platform/ios/KeyEventIOS.mm:

(WebCore::windowsKeyCodeForCharCode):

  • platform/ios/WebEvent.mm:

(normalizedStringWithAppKitCompatibilityMapping):

3:09 PM Changeset in webkit [242914] by Nikita Vasilyev
  • 3 edits
    2 adds in trunk

REGRESSION(r240946): Web Inspector: Styles: removing selected property doesn't update overridden status
https://bugs.webkit.org/show_bug.cgi?id=195389
<rdar://problem/48658929>

Reviewed by Matt Baker.

Source/WebInspectorUI:

  • UserInterface/Models/DOMNodeStyles.js:

(WI.DOMNodeStyles.prototype.changeStyleText):
Call DOMNodeStyles.prototype.refresh after the callback. No updates
to CSSStyleDeclaration happen until the callback is called.

LayoutTests:

  • inspector/css/overridden-property-expected.txt: Added.
  • inspector/css/overridden-property.html: Added.
3:06 PM Changeset in webkit [242913] by Simon Fraser
  • 31 edits
    1 copy
    6 adds in trunk

Source/WebCore:
Scrolling tree should reposition non-stacking order descendents of overflow:scroll
https://bugs.webkit.org/show_bug.cgi?id=195608

Reviewed by Zalan Bujtas.

Step 1: add scrolling tree positioning nodes classes (but don't create them yet).

Add Scrolling{State,Tree}PositionedNode to track composited layers that have to be repositioned when
an async overflow:scroll scrolls. There are two instances in which this is necessary, reflected by
the values of ScrollPositioningBehavior:

ScrollPositioningBehavior::Moves - a composited layer whose containing block chain includes an

async overflow scroller, but whose composited (i.e. z-order) parent is outside of the overflow.
When the overflow scrolls, this layer has to move along with the overflow.

ScrollPositioningBehavior::Stationary - a composited layer whose containing block chain skips the

overflow scroller, but whose compositing (z-order) parent is the scroller, or inside the scroller.
This only applies to position:absolute, on, for example, an overflow:scroll ith opacity.

PositionedNodes are modeled after Fixed/Sticky nodes, with a new type of layout constraint just called LayoutConstraints.

This patch adds support for PositionedNodes in the scrolling trees, but RenderLayerCompositor::computeCoordinatedPositioningForLayer()
is just a stub so the new node types aren't created yet.

RenderLayerBacking stores a ScrollingNodeID for the positioning role (just like the other roles). Since the Positioning
role is about position relative to ancestors, a node with both Positioning and FrameHosting or Scrolling roles treats
the Positioning node as the parent of the other types. A node should never have both Positioning and ViewportConstrained roles.

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

  • Sources.txt:
  • SourcesCocoa.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • page/scrolling/AsyncScrollingCoordinator.cpp:

(WebCore::AsyncScrollingCoordinator::setPositionedNodeGeometry):
(WebCore::AsyncScrollingCoordinator::setRelatedOverflowScrollingNodes):

  • page/scrolling/AsyncScrollingCoordinator.h:
  • page/scrolling/ScrollingConstraints.cpp:

(WebCore::operator<<):

  • page/scrolling/ScrollingConstraints.h:

(WebCore::LayoutConstraints::LayoutConstraints):
(WebCore::LayoutConstraints::operator== const):
(WebCore::LayoutConstraints::operator!= const):
(WebCore::LayoutConstraints::alignmentOffset const):
(WebCore::LayoutConstraints::setAlignmentOffset):
(WebCore::LayoutConstraints::layerPositionAtLastLayout const):
(WebCore::LayoutConstraints::setLayerPositionAtLastLayout):
(WebCore::LayoutConstraints::scrollPositioningBehavior const):
(WebCore::LayoutConstraints::setScrollPositioningBehavior):

  • page/scrolling/ScrollingCoordinator.cpp:

(WebCore::operator<<):

  • page/scrolling/ScrollingCoordinator.h:

(WebCore::ScrollingCoordinator::setPositionedNodeGeometry):
(WebCore::ScrollingCoordinator::setRelatedOverflowScrollingNodes):

  • page/scrolling/ScrollingCoordinatorTypes.h:
  • page/scrolling/ScrollingStateNode.h:

(WebCore::ScrollingStateNode::isPositionedNode const):

  • page/scrolling/ScrollingStatePositionedNode.cpp: Added.

(WebCore::ScrollingStatePositionedNode::create):
(WebCore::ScrollingStatePositionedNode::ScrollingStatePositionedNode):
(WebCore::ScrollingStatePositionedNode::clone):
(WebCore::ScrollingStatePositionedNode::setAllPropertiesChanged):
(WebCore::ScrollingStatePositionedNode::setRelatedOverflowScrollingNodes):
(WebCore::ScrollingStatePositionedNode::updateConstraints):
(WebCore::ScrollingStatePositionedNode::dumpProperties const):

  • page/scrolling/ScrollingStatePositionedNode.h: Added.
  • page/scrolling/ScrollingStateTree.cpp:

(WebCore::ScrollingStateTree::createNode):

  • page/scrolling/ScrollingTree.cpp:

(WebCore::ScrollingTree::updateTreeFromStateNode):

  • page/scrolling/ScrollingTree.h:
  • page/scrolling/ScrollingTreeNode.h:

(WebCore::ScrollingTreeNode::isPositionedNode const):

  • page/scrolling/cocoa/ScrollingTreePositionedNode.h: Copied from Source/WebCore/page/scrolling/cocoa/ScrollingTreeStickyNode.h.
  • page/scrolling/cocoa/ScrollingTreePositionedNode.mm: Added.

(WebCore::ScrollingTreePositionedNode::create):
(WebCore::ScrollingTreePositionedNode::ScrollingTreePositionedNode):
(WebCore::ScrollingTreePositionedNode::~ScrollingTreePositionedNode):
(WebCore::ScrollingTreePositionedNode::commitStateBeforeChildren):
(WebCore::ScrollingTreePositionedNode::applyLayerPositions):
(WebCore::ScrollingTreePositionedNode::relatedNodeScrollPositionDidChange):
(WebCore::ScrollingTreePositionedNode::dumpProperties const):

  • page/scrolling/cocoa/ScrollingTreeStickyNode.h:
  • page/scrolling/mac/ScrollingTreeMac.cpp:

(ScrollingTreeMac::createScrollingTreeNode):

  • platform/ScrollTypes.h:
  • rendering/RenderLayerBacking.cpp:

(WebCore::RenderLayerBacking::coordinatedScrollingRoles const):
(WebCore::RenderLayerBacking::detachFromScrollingCoordinator):

  • rendering/RenderLayerBacking.h:
  • rendering/RenderLayerCompositor.cpp:

(WebCore::RenderLayerCompositor::computeCoordinatedPositioningForLayer const):
(WebCore::scrollCoordinationRoleForNodeType):
(WebCore::RenderLayerCompositor::updateScrollCoordinationForLayer):
(WebCore::RenderLayerCompositor::updateScrollingNodeForViewportConstrainedRole):
(WebCore::RenderLayerCompositor::updateScrollingNodeLayers):
(WebCore::RenderLayerCompositor::updateScrollingNodeForPositioningRole):

  • rendering/RenderLayerCompositor.h:

Source/WebKit:
Scrolling tree should reposition non-stacking order descendents of overflow:scroll.
https://bugs.webkit.org/show_bug.cgi?id=195608

Reviewed by Zalan Bujtas.

Step 1: add scrolling tree positioning nodes classes (but don't create them yet).

Add Scrolling{State,Tree}PositionedNode to track composited layers that have to be repositioned when
an async overflow:scroll scrolls. There are two instances in which this is necessary, reflected by
the values of ScrollPositioningBehavior:

ScrollPositioningBehavior::Moves - a composited layer whose containing block chain includes an

async overflow scroller, but whose composited (i.e. z-order) parent is outside of the overflow.
When the overflow scrolls, this layer has to move along with the overflow.

ScrollPositioningBehavior::Stationary - a composited layer whose containing block chain skips the

overflow scroller, but whose compositing (z-order) parent is the scroller, or inside the scroller.
This only applies to position:absolute, on, for example, an overflow:scroll ith opacity.

PositionedNodes are modeled after Fixed/Sticky nodes, with a new type of layout constraint just called LayoutConstraints.

This patch adds support for PositionedNodes in the scrolling trees, but RenderLayerCompositor::computeCoordinatedPositioningForLayer()
is just a stub so the new node types aren't created yet.

RenderLayerBacking stores a ScrollingNodeID for the positioning role (just like the other roles). Since the Positioning
role is about position relative to ancestors, a node with both Positioning and FrameHosting or Scrolling roles treats
the Positioning node as the parent of the other types. A node should never have both Positioning and ViewportConstrained roles.

  • Shared/RemoteLayerTree/RemoteScrollingCoordinatorTransaction.cpp:

(ArgumentCoder<ScrollingStateFrameScrollingNode>::encode):
(ArgumentCoder<ScrollingStatePositionedNode>::encode):
(ArgumentCoder<ScrollingStatePositionedNode>::decode):
(WebKit::encodeNodeAndDescendants):
(WebKit::RemoteScrollingCoordinatorTransaction::decode):
(WebKit::dump):

  • Shared/WebCoreArgumentCoders.cpp:

(IPC::ArgumentCoder<LayoutConstraints>::encode):
(IPC::ArgumentCoder<LayoutConstraints>::decode):
(IPC::ArgumentCoder<StickyPositionViewportConstraints>::decode):

  • Shared/WebCoreArgumentCoders.h:
  • UIProcess/RemoteLayerTree/RemoteScrollingCoordinatorProxy.cpp:

(WebKit::RemoteScrollingCoordinatorProxy::connectStateNodeLayers):

  • UIProcess/RemoteLayerTree/RemoteScrollingTree.cpp:

(WebKit::RemoteScrollingTree::createScrollingTreeNode):

  • UIProcess/RemoteLayerTree/ios/RemoteScrollingCoordinatorProxyIOS.mm:

(WebKit::RemoteScrollingCoordinatorProxy::connectStateNodeLayers):

LayoutTests:
Scrolling tree should reposition non-stacking order descendents of overflow:scroll
https://bugs.webkit.org/show_bug.cgi?id=195608

Reviewed by Zalan Bujtas.

The results of this test will change when we enable positioned nodes. It tests various
combinations of overflow and stacking.

  • platform/ios-wk2/scrollingcoordinator/scrolling-tree/positioned-nodes-expected.txt: Added.
  • scrollingcoordinator/scrolling-tree/positioned-nodes-expected.txt: Added.
  • scrollingcoordinator/scrolling-tree/positioned-nodes.html: Added.
3:05 PM Changeset in webkit [242912] by mark.lam@apple.com
  • 4 edits in trunk/Source/JavaScriptCore

Remove unneeded --tradeDestructorBlocks option.
https://bugs.webkit.org/show_bug.cgi?id=195698
<rdar://problem/39681388>

Reviewed by Yusuke Suzuki.

There's no reason why we would ever want --tradeDestructorBlocks to be false.

Also, there was an assertion in BlockDirectory::endMarking() for when
(!Options::tradeDestructorBlocks() && needsDestruction()). This assertion is
outdated because the BlockDirectory's m_empty set used to mean the set of all
blocks that have no live (as in not reachable by GC) objects and dead objects
also do not require destructors to be called on them. The current meaning of
m_empty is that it is the set of all blocks that have no live objects,
independent of whether they needs destructors to be called on them or not.
The assertion is no longer valid for the new meaning of m_empty as m_empty may
now contain destructible blocks. This assertion is now removed as part of this
patch.

  • heap/BlockDirectory.cpp:

(JSC::BlockDirectory::endMarking):

  • heap/LocalAllocator.cpp:

(JSC::LocalAllocator::tryAllocateWithoutCollecting):

  • runtime/Options.h:
2:47 PM Changeset in webkit [242911] by youenn@apple.com
  • 27 edits
    2 copies
    2 adds in trunk

Check IDB quota usage through QuotaManager
https://bugs.webkit.org/show_bug.cgi?id=195302

Reviewed by Chris Dumez.

Source/WebCore:

For every write operation, compute an estimate size and check for quota before proceeding.
When proceeding, store the estimate size in a map.
If size of the database is to be computed when the task is not done,
the estimate size will be added to the current size of the databases.
At the end of the task, the estimate size is removed from the map,
and the databases size is refreshed.

This patch implements size estimation for write tasks.
Put/add operations might overestimate the size
when an old value will be replaced by a new value.
In that case, we do not substract the old value size since we do not know it.

This patch implements database opening by adding a fixed small cost,
as we do not know whether the database is new or not.

For the first IDB request, we have not computed the size of the database.
To do so, we need to go to a background thread and do that file size computation.
For that purpose, we add support for being-initialized quota user.
Quota manager is calling whenInitialized on its quota user and will
delay any quota check requests until its quota user is answering this callback.

For in process IDB, use the default storage quota per origin and do not increase it.
Future work should move it to NetworkProcess and implement some quota checking.

Cache API and IDB quota management are not yet fully unified.
If IDB is used on start-up, we should check for Cache API storage size.
Conversely, on Cache API first wite task, even if IDB is not being used,
we should compute the size of the IDB data for the given origin.

Test: http/tests/IndexedDB/storage-limit.https.html

  • Modules/indexeddb/server/IDBBackingStore.h:
  • Modules/indexeddb/server/IDBServer.cpp:

(WebCore::IDBServer::IDBServer::create):
(WebCore::IDBServer::IDBServer::IDBServer):
(WebCore::IDBServer::m_quotaManagerGetter):
(WebCore::IDBServer::IDBServer::QuotaUser::QuotaUser):
(WebCore::IDBServer::IDBServer::QuotaUser::~QuotaUser):
(WebCore::IDBServer::IDBServer::QuotaUser::clearSpaceUsed):
(WebCore::IDBServer::IDBServer::QuotaUser::whenInitialized):
(WebCore::IDBServer::IDBServer::QuotaUser::initializeSpaceUsed):
(WebCore::IDBServer::IDBServer::quotaUser):
(WebCore::IDBServer::IDBServer::startComputingSpaceUsedForOrigin):
(WebCore::IDBServer::IDBServer::computeSpaceUsedForOrigin):
(WebCore::IDBServer::IDBServer::finishComputingSpaceUsedForOrigin):
(WebCore::IDBServer::IDBServer::requestSpace):
(WebCore::IDBServer::IDBServer::clearSpaceUsed):
(WebCore::IDBServer::IDBServer::setSpaceUsed):
(WebCore::IDBServer::IDBServer::increasePotentialSpaceUsed):
(WebCore::IDBServer::IDBServer::decreasePotentialSpaceUsed):

  • Modules/indexeddb/server/IDBServer.h:

(WebCore::IDBServer::IDBServer::create):

  • Modules/indexeddb/server/MemoryIDBBackingStore.cpp:

(WebCore::IDBServer::MemoryIDBBackingStore::databasesSizeForOrigin const):

  • Modules/indexeddb/server/MemoryIDBBackingStore.h:
  • Modules/indexeddb/server/SQLiteIDBBackingStore.cpp:

(WebCore::IDBServer::SQLiteIDBBackingStore::databasesSizeForFolder):
(WebCore::IDBServer::SQLiteIDBBackingStore::databasesSizeForOrigin const):
(WebCore::IDBServer::SQLiteIDBBackingStore::maximumSize const):

  • Modules/indexeddb/server/SQLiteIDBBackingStore.h:
  • Modules/indexeddb/server/UniqueIDBDatabase.cpp:

(WebCore::IDBServer::estimateSize):
(WebCore::IDBServer::UniqueIDBDatabase::UniqueIDBDatabase):
(WebCore::IDBServer::quotaErrorMessageName):
(WebCore::IDBServer::UniqueIDBDatabase::requestSpace):
(WebCore::IDBServer::UniqueIDBDatabase::performCurrentOpenOperation):
(WebCore::IDBServer::UniqueIDBDatabase::storeCallbackOrFireError):
(WebCore::IDBServer::UniqueIDBDatabase::createObjectStore):
(WebCore::IDBServer::UniqueIDBDatabase::createObjectStoreAfterQuotaCheck):
(WebCore::IDBServer::UniqueIDBDatabase::renameObjectStore):
(WebCore::IDBServer::UniqueIDBDatabase::renameObjectStoreAfterQuotaCheck):
(WebCore::IDBServer::UniqueIDBDatabase::createIndex):
(WebCore::IDBServer::UniqueIDBDatabase::createIndexAfterQuotaCheck):
(WebCore::IDBServer::UniqueIDBDatabase::renameIndex):
(WebCore::IDBServer::UniqueIDBDatabase::renameIndexAfterQuotaCheck):
(WebCore::IDBServer::UniqueIDBDatabase::putOrAdd):
(WebCore::IDBServer::UniqueIDBDatabase::putOrAddAfterQuotaCheck):
(WebCore::IDBServer::UniqueIDBDatabase::postDatabaseTaskReply):
(WebCore::IDBServer::UniqueIDBDatabase::immediateCloseForUserDelete):
(WebCore::IDBServer::UniqueIDBDatabase::updateSpaceUsedIfNeeded):
(WebCore::IDBServer::UniqueIDBDatabase::performErrorCallback):
(WebCore::IDBServer::UniqueIDBDatabase::performKeyDataCallback):

  • Modules/indexeddb/server/UniqueIDBDatabase.h:

(WebCore::IDBServer::UniqueIDBDatabase::server):

  • Modules/indexeddb/shared/InProcessIDBServer.cpp:

(WebCore::InProcessIDBServer::create):
(WebCore::InProcessIDBServer::quotaManager):
(WebCore::storageQuotaManagerGetter):
(WebCore::InProcessIDBServer::InProcessIDBServer):

  • Modules/indexeddb/shared/InProcessIDBServer.h:
  • loader/EmptyClients.cpp:
  • storage/StorageQuotaManager.cpp:

(WebCore::StorageQuotaManager::addUser):
(WebCore::StorageQuotaManager::requestSpace):

  • storage/StorageQuotaManager.h:

(WebCore::StorageQuotaManager::defaultQuota):
(WebCore::StorageQuotaManager::removeUser):

  • storage/StorageQuotaUser.h:

(WebCore::StorageQuotaUser::whenInitialized):

Source/WebKit:

Set the quota manager getter for IDBServer at creation time.

  • NetworkProcess/NetworkProcess.cpp:

(WebKit::NetworkProcess::createIDBServer):
(WebKit::NetworkProcess::idbServer):

  • NetworkProcess/NetworkProcess.h:
  • WebProcess/Databases/WebDatabaseProvider.cpp:

(WebKit::WebDatabaseProvider::idbConnectionToServerForSession):

Source/WebKitLegacy:

  • Storage/WebDatabaseProvider.cpp:

(WebDatabaseProvider::idbConnectionToServerForSession):

LayoutTests:

Update IDB quota test according quota limit of 400ko.
Update WK1 test expectations to skip quota check tests.

  • http/tests/IndexedDB/resources/shared.js: Added.
  • http/tests/IndexedDB/resources/storage-limit.js: Added.
  • http/tests/IndexedDB/storage-limit.https-expected.txt: Added.
  • http/tests/IndexedDB/storage-limit.https.html: Added.
  • platform/mac-wk1/TestExpectations:
  • platform/win/TestExpectations:
  • storage/indexeddb/resources/storage-limit.js:
  • storage/indexeddb/storage-limit-expected.txt:
2:42 PM Changeset in webkit [242910] by dinfuehr@igalia.com
  • 6 edits
    2 adds in trunk

String overflow when using StringBuilder in JSC::createError
https://bugs.webkit.org/show_bug.cgi?id=194957

Reviewed by Mark Lam.

JSTests:

Add test string-overflow-createError-bulder.js that overflows
StringBuilder in notAFunctionSourceAppender. The second new test
string-overflow-createError-fit.js has an error message that doesn't
overflow, it still failed since the String's capacity can't be doubled.
Run test string-overflow-createError.js only in the default
configuration to reduce memory consumption when running the test
in all configurations on multiple CPUs in parallel.

  • stress/string-overflow-createError-builder.js: Copied from JSTests/stress/string-overflow-createError.js.

(catch):

  • stress/string-overflow-createError-fit.js: Copied from JSTests/stress/string-overflow-createError.js.

(catch):

  • stress/string-overflow-createError.js:

Source/JavaScriptCore:

StringBuilder in notAFunctionSourceAppender didn't check
for overflows but just failed.

  • runtime/ExceptionHelpers.cpp:

(JSC::notAFunctionSourceAppender):

Source/WTF:

When calculating the new capacity of a StringBuilder object,
use a limit of MaxLength instead of MaxLength+1. Allocating
a string of size MaxLength+1 always fails. This means that expanding
a StringBuilder only worked when the newly doubled capacity is less or
equal to MaxLength.

  • wtf/text/StringBuilder.cpp:
2:22 PM Changeset in webkit [242909] by Chris Dumez
  • 4 edits in trunk/Source

Better build fix after r242901.

Reviewed by Jer Noble.

Source/WebCore:

  • platform/audio/cocoa/MediaSessionManagerCocoa.mm:

(MediaSessionManagerCocoa::sessionWillBeginPlayback):
(MediaSessionManagerCocoa::updateNowPlayingInfo):

Source/WTF:

  • wtf/Logger.h:

(WTF::LogArgument::toString):

2:18 PM Changeset in webkit [242908] by timothy@apple.com
  • 16 edits
    2 deletes in trunk/Source

Consolidate ArgumentCodersMac and ArgumentCodersCocoa.
https://bugs.webkit.org/show_bug.cgi?id=195636
rdar://problem/45055697

Reviewed by Ryosuke Niwa.

Source/WebCore:

  • editing/DictionaryPopupInfo.h:

(WebCore::DictionaryPopupInfo::encodingRequiresPlatformData const): Added.

  • editing/FontAttributes.h:

(WebCore::FontAttributes::encodingRequiresPlatformData const): Added.

Source/WebKit:

Merge the two similar encoders and decoders. This avoids issues where
one encoder could be used and the other decoder, which caused a crash.
It also stops handling NSAttributedString specifically and just uses
the NSSecureCoding path to handle more complex attributes.

Some WebCore encoders code needed to move to platform files, since
ArgumentCodersCocoa.h requires an ObjectiveC++ implementation to work.

  • Shared/Cocoa/ArgumentCodersCocoa.h:

(IPC::encode):
(IPC::decode):
(IPC::ArgumentCoder<RetainPtr<T>>::encode):
(IPC::ArgumentCoder<RetainPtr<T>>::decode):

  • Shared/Cocoa/ArgumentCodersCocoa.mm:

(IPC::typeFromObject):
(IPC::isSerializableFont):
(IPC::isSerializableValue):
(IPC::encodeObject):
(IPC::decodeObject):

  • Shared/Cocoa/LoadParametersCocoa.mm:
  • Shared/Cocoa/WebCoreArgumentCodersCocoa.mm:

(IPC::ArgumentCoder<WebCore::DictionaryPopupInfo>::encodePlatformData):
(IPC::ArgumentCoder<WebCore::DictionaryPopupInfo>::decodePlatformData):
(IPC::ArgumentCoder<WebCore::FontAttributes>::encodePlatformData):
(IPC::ArgumentCoder<WebCore::FontAttributes>::decodePlatformData):

  • Shared/WebCoreArgumentCoders.cpp:

(IPC::ArgumentCoder<DictionaryPopupInfo>::encode):
(IPC::ArgumentCoder<DictionaryPopupInfo>::decode):
(IPC::ArgumentCoder<FontAttributes>::encode):
(IPC::ArgumentCoder<FontAttributes>::decode):

  • Shared/WebCoreArgumentCoders.h:
  • Shared/mac/ArgumentCodersMac.h: Removed.
  • Shared/mac/ArgumentCodersMac.mm: Removed.
  • Shared/mac/AttributedString.mm:

(WebKit::AttributedString::encode const):

  • Shared/mac/ObjCObjectGraph.mm:
  • SourcesCocoa.txt:
  • WebKit.xcodeproj/project.pbxproj:
2:15 PM Changeset in webkit [242907] by aestes@apple.com
  • 1 edit in trunk/Source/WTF/wtf/FeatureDefines.h

Try again to fix the Mac build.

  • wtf/FeatureDefines.h:
2:05 PM Changeset in webkit [242906] by Chris Dumez
  • 2 edits in trunk/Source/WebCore

Unreviewed build fix after r242901.

  • platform/audio/cocoa/MediaSessionManagerCocoa.mm:

(MediaSessionManagerCocoa::updateNowPlayingInfo):

1:51 PM Changeset in webkit [242905] by Chris Dumez
  • 26 edits in trunk

Use a ServiceWorker process per registrable domain
https://bugs.webkit.org/show_bug.cgi?id=195649

Reviewed by Youenn Fablet.

Source/WebCore:

Use a ServiceWorker process per registrable domain instead of one per security origin. This is
more in line with PSON and avoids launching too many processes.

  • page/ClientOrigin.h:

(WebCore::ClientOrigin::clientRegistrableDomain const):

  • workers/service/server/SWServer.cpp:

(WebCore::SWServer::tryInstallContextData):
(WebCore::SWServer::serverToContextConnectionCreated):
(WebCore::SWServer::runServiceWorkerIfNecessary):
(WebCore::SWServer::markAllWorkersForRegistrableDomainAsTerminated):
(WebCore::SWServer::registerServiceWorkerClient):
(WebCore::SWServer::unregisterServiceWorkerClient):
(WebCore::SWServer::needsServerToContextConnectionForRegistrableDomain const):

  • workers/service/server/SWServer.h:
  • workers/service/server/SWServerToContextConnection.cpp:

(WebCore::SWServerToContextConnection::SWServerToContextConnection):
(WebCore::SWServerToContextConnection::~SWServerToContextConnection):
(WebCore::SWServerToContextConnection::connectionForRegistrableDomain):

  • workers/service/server/SWServerToContextConnection.h:

(WebCore::SWServerToContextConnection::registrableDomain const):

  • workers/service/server/SWServerWorker.cpp:

(WebCore::SWServerWorker::contextConnection):

  • workers/service/server/SWServerWorker.h:

(WebCore::SWServerWorker::registrableDomain const):

Source/WebKit:

Use a ServiceWorker process per registrable domain instead of one per security origin. This is
more in line with PSON and avoids launching too many processes.

  • NetworkProcess/NetworkProcess.cpp:

(WebKit::NetworkProcess::createNetworkConnectionToWebProcess):
(WebKit::NetworkProcess::connectionToContextProcessWasClosed):
(WebKit::NetworkProcess::needsServerToContextConnectionForRegistrableDomain const):
(WebKit::NetworkProcess::serverToContextConnectionForRegistrableDomain):
(WebKit::NetworkProcess::createServerToContextConnection):
(WebKit::NetworkProcess::swContextConnectionMayNoLongerBeNeeded):

  • NetworkProcess/NetworkProcess.h:
  • NetworkProcess/NetworkProcess.messages.in:
  • NetworkProcess/ServiceWorker/WebSWServerConnection.cpp:

(WebKit::WebSWServerConnection::scheduleJobInServer):

  • NetworkProcess/ServiceWorker/WebSWServerToContextConnection.cpp:

(WebKit::WebSWServerToContextConnection::WebSWServerToContextConnection):

  • NetworkProcess/ServiceWorker/WebSWServerToContextConnection.h:
  • UIProcess/Network/NetworkProcessProxy.cpp:

(WebKit::NetworkProcessProxy::getNetworkProcessConnection):
(WebKit::NetworkProcessProxy::establishWorkerContextConnectionToNetworkProcess):
(WebKit::NetworkProcessProxy::establishWorkerContextConnectionToNetworkProcessForExplicitSession):

  • UIProcess/Network/NetworkProcessProxy.h:
  • UIProcess/Network/NetworkProcessProxy.messages.in:
  • UIProcess/ServiceWorkerProcessProxy.cpp:

(WebKit::ServiceWorkerProcessProxy::create):
(WebKit::ServiceWorkerProcessProxy::ServiceWorkerProcessProxy):
(WebKit::ServiceWorkerProcessProxy::getLaunchOptions):

  • UIProcess/ServiceWorkerProcessProxy.h:
  • UIProcess/WebProcessPool.cpp:

(WebKit::WebProcessPool::establishWorkerContextConnectionToNetworkProcess):
(WebKit::WebProcessPool::disconnectProcess):
(WebKit::WebProcessPool::updateProcessAssertions):

  • UIProcess/WebProcessPool.h:

Tools:

Update API test coverage.

  • TestWebKitAPI/Tests/WebKitCocoa/ServiceWorkerBasic.mm:
1:33 PM Changeset in webkit [242904] by aestes@apple.com
  • 2 edits in trunk/Source

Try to fix the Mac build after r242356.

Source/WebKit:

  • Shared/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.mm:

(WebKit::WebPaymentCoordinatorProxy::platformPaymentRequest):

Source/WTF:

  • wtf/FeatureDefines.h:
1:32 PM Changeset in webkit [242903] by Chris Dumez
  • 13 edits in trunk

REGRESSION(PSON, r240660): Navigation over process boundary is flashy when using Cmd-left/right arrow to navigate
https://bugs.webkit.org/show_bug.cgi?id=195684
<rdar://problem/48294714>

Reviewed by Antti Koivisto.

Source/WebCore:

The issue was caused by us failing to suspend the current page on navigation because the source and
target WebBackForwardListItem are identical. The source WebBackForwardListItem was wrong.

When a navigation is triggered by the WebContent process (and not the UIProcess), we create the Navigation
object in WebPageProxy::decidePolicyForNavigationAction(). For the navigation's targetItem, we use the
target item identifier provided by the WebContent process via the NavigationActionData. However,
for the source item, we would use the WebBackForwardList's currentItem in the UIProcess. The issue
is that the WebBackForwardList's currentItem usually has already been updated to be the target
item via a WebPageProxy::BackForwardGoToItem() synchronous IPC.

To avoid raciness and given that the current history management is fragile (as it is managed by
both the UIProcess and the WebProcess), I am now passing the source item identifier in
addition to the target item identifier in the NavigationActionData that is sent by the WebProcess.
This is a lot less error prone, the WebProcess knows more accurately which history items it is going
from and to.

  • loader/FrameLoader.cpp:

(WebCore::FrameLoader::loadURLIntoChildFrame):
(WebCore::FrameLoader::loadDifferentDocumentItem):
(WebCore::FrameLoader::loadItem):
(WebCore::FrameLoader::retryAfterFailedCacheOnlyMainResourceLoad):

  • loader/FrameLoader.h:
  • loader/HistoryController.cpp:

(WebCore::HistoryController::recursiveGoToItem):

  • loader/NavigationAction.cpp:

(WebCore::NavigationAction::setSourceBackForwardItem):

  • loader/NavigationAction.h:

(WebCore::NavigationAction::sourceBackForwardItemIdentifier const):

Source/WebKit:

  • Shared/NavigationActionData.cpp:

(WebKit::NavigationActionData::encode const):
(WebKit::NavigationActionData::decode):

  • Shared/NavigationActionData.h:
  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::decidePolicyForNavigationAction):
(WebKit::WebPageProxy::backForwardAddItem):

  • WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:

(WebKit::WebFrameLoaderClient::dispatchDecidePolicyForNavigationAction):

Tools:

Add API test coverage.

  • TestWebKitAPI/Tests/WebKitCocoa/ProcessSwapOnNavigation.mm:
1:27 PM Changeset in webkit [242902] by ysuzuki@apple.com
  • 5 edits in trunk/Source/JavaScriptCore

[JSC] Move species watchpoint installation from ArrayPrototype to JSGlobalObject
https://bugs.webkit.org/show_bug.cgi?id=195593

Reviewed by Keith Miller.

This patch moves watchpoints installation and watchpoints themselves from ArrayPrototype to JSGlobalObject because of the following two reasons.

  1. ArrayPrototype configures finalizer because of std::unique_ptr<> for watchpoints. If we move them from ArrayPrototype to JSGlobalObject, we do not need to set finalizer. And we can avoid unnecessary WeakBlock allocation.
  1. This code lazily configures watchpoints instead of setting watchpoints eagerly in JSGlobalObject::init. We would like to expand this mechanism to other watchpoints which are eagerly configured in JSGlobalObject::init. Putting these code in JSGlobalObject instead of scattering them in each XXXPrototype / XXXConstructor can encourage the reuse of the code.
  • runtime/ArrayPrototype.cpp:

(JSC::ArrayPrototype::create):
(JSC::speciesWatchpointIsValid):
(JSC::ArrayPrototype::destroy): Deleted.
(JSC::ArrayPrototype::tryInitializeSpeciesWatchpoint): Deleted.
(JSC::ArrayPrototypeAdaptiveInferredPropertyWatchpoint::ArrayPrototypeAdaptiveInferredPropertyWatchpoint): Deleted.
(JSC::ArrayPrototypeAdaptiveInferredPropertyWatchpoint::handleFire): Deleted.

  • runtime/ArrayPrototype.h:
  • runtime/JSGlobalObject.cpp:

(JSC::JSGlobalObject::tryInstallArraySpeciesWatchpoint): Instead of using ArrayPrototypeAdaptiveInferredPropertyWatchpoint,
we use ObjectPropertyChangeAdaptiveWatchpoint. We create watchpoints after touching WatchpointSet since ObjectPropertyChangeAdaptiveWatchpoint
requires WatchpointSet is IsWatched state.

  • runtime/JSGlobalObject.h:
1:18 PM Changeset in webkit [242901] by jer.noble@apple.com
  • 13 edits
    1 add in trunk/Source

Add AggregateLogger, a Logger specialization for singleton classes.
https://bugs.webkit.org/show_bug.cgi?id=195644

Reviewed by Eric Carlson.

Source/WebCore:

Convert debug logging over to release logging through the use of AggregateLogger.

  • platform/audio/PlatformMediaSession.h:

(WebCore::PlatformMediaSession::client const):

  • platform/audio/PlatformMediaSessionManager.cpp:

(WebCore::PlatformMediaSessionManager::PlatformMediaSessionManager):
(WebCore::PlatformMediaSessionManager::beginInterruption):
(WebCore::PlatformMediaSessionManager::endInterruption):
(WebCore::PlatformMediaSessionManager::addSession):
(WebCore::PlatformMediaSessionManager::removeSession):
(WebCore::PlatformMediaSessionManager::sessionWillBeginPlayback):
(WebCore::PlatformMediaSessionManager::sessionWillEndPlayback):
(WebCore::PlatformMediaSessionManager::setCurrentSession):
(WebCore::PlatformMediaSessionManager::applicationWillBecomeInactive const):
(WebCore::PlatformMediaSessionManager::applicationDidBecomeActive const):
(WebCore::PlatformMediaSessionManager::applicationDidEnterBackground const):
(WebCore::PlatformMediaSessionManager::applicationWillEnterForeground const):
(WebCore::PlatformMediaSessionManager::logChannel const):

  • platform/audio/PlatformMediaSessionManager.h:
  • platform/audio/cocoa/MediaSessionManagerCocoa.mm:

(MediaSessionManagerCocoa::updateSessionState):
(MediaSessionManagerCocoa::sessionWillBeginPlayback):
(MediaSessionManagerCocoa::removeSession):
(MediaSessionManagerCocoa::sessionWillEndPlayback):
(MediaSessionManagerCocoa::clientCharacteristicsChanged):
(MediaSessionManagerCocoa::updateNowPlayingInfo):

  • platform/audio/ios/MediaSessionManagerIOS.mm:

(WebCore::MediaSessionManageriOS::resetRestrictions):
(WebCore::MediaSessionManageriOS::configureWireLessTargetMonitoring):

Source/WTF:

Add a new class, AggregateLogger, which will log messages to each of its aggregated loggers.

Drive-by fixes: allow "const void*" to be directly logged by converting the pointer to a hex string.

  • WTF.xcodeproj/project.pbxproj:
  • wtf/AggregateLogger.h: Added.

(WTF::AggregateLogger::create):
(WTF::AggregateLogger::addLogger):
(WTF::AggregateLogger::removeLogger):
(WTF::AggregateLogger::logAlways const):
(WTF::AggregateLogger::error const):
(WTF::AggregateLogger::warning const):
(WTF::AggregateLogger::info const):
(WTF::AggregateLogger::debug const):
(WTF::AggregateLogger::willLog const):
(WTF::AggregateLogger::AggregateLogger):
(WTF::AggregateLogger::log const):

  • wtf/CMakeLists.h:
  • wtf/Logger.cpp:

(WTF::>::toString):

  • wtf/Logger.h:
1:03 PM Changeset in webkit [242900] by Truitt Savell
  • 2 edits in trunk/LayoutTests

(r242595) Layout Tests in imported/w3c/web-platform-tests/html/semantics/embedded-content/media-elements/* are failing
https://bugs.webkit.org/show_bug.cgi?id=195466

Unreviewed test gardening.

  • platform/mac/TestExpectations:
12:53 PM Changeset in webkit [242899] by Chris Dumez
  • 13 edits in trunk/Source

Drop legacy WebCore::toRegistrableDomain() utility function
https://bugs.webkit.org/show_bug.cgi?id=195637

Reviewed by Geoffrey Garen.

Drop legacy toRegistrableDomain() / registrableDomainAreEqual() utility functions.
Update call sites to use modern RegistrableDomain type instead.

Source/WebCore:

  • loader/CrossOriginAccessControl.cpp:

(WebCore::shouldCrossOriginResourcePolicyCancelLoad):

  • loader/FrameLoader.cpp:

(WebCore::FrameLoader::setFirstPartyForCookies):

  • page/DOMWindow.cpp:

(WebCore::DOMWindow::failedToRegisterDeviceMotionEventListener):

  • platform/RegistrableDomain.h:

(WebCore::registrableDomainsAreEqual):

  • platform/network/ResourceRequestBase.h:
  • platform/network/cf/ResourceRequestCFNet.cpp:
  • platform/network/cocoa/ResourceRequestCocoa.mm:

Source/WebKit:

  • UIProcess/WebProcessPool.cpp:

(WebKit::WebProcessPool::processForNavigationInternal):

12:28 PM Changeset in webkit [242898] by Devin Rousso
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: Protocol Logging: log messages with backtrace if inspector2 is open
https://bugs.webkit.org/show_bug.cgi?id=195687

Reviewed by Joseph Pecoraro.

  • UserInterface/Protocol/LoggingProtocolTracer.js:

(WI.LoggingProtocolTracer.prototype._processEntry):

12:19 PM Changeset in webkit [242897] by Devin Rousso
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: REGRESSION(r242737): unnecessary semicolon added when populating WI.TreeOutline stylesheet
https://bugs.webkit.org/show_bug.cgi?id=195689

Reviewed by Joseph Pecoraro.

  • UserInterface/Views/TreeOutline.js:

(WI.TreeOutline._generateStyleRulesIfNeeded):

12:04 PM Changeset in webkit [242896] by Joseph Pecoraro
  • 5 edits in trunk

Web Inspector: Network - HAR Export duplicates blocked/send time if there was no dns/connect block
https://bugs.webkit.org/show_bug.cgi?id=195655
<rdar://problem/48831152>

Reviewed by Devin Rousso.

Source/WebInspectorUI:

  • UserInterface/Controllers/HARBuilder.js:

(WI.HARBuilder.timings):

LayoutTests:

  • http/tests/inspector/network/har/har-basic-expected.txt:
  • http/tests/inspector/network/har/har-basic.html:
11:45 AM Changeset in webkit [242895] by achristensen@apple.com
  • 4 edits in trunk/Source/WebCore

Prevent checked_cf_cast crashes in ResourceResponse::platformCertificateInfo
https://bugs.webkit.org/show_bug.cgi?id=195686

Reviewed by Tim Horton.

This covers up a type confusion bug on some OSes until rdar://problem/48853137 is resolved.

  • SourcesCocoa.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • platform/network/cocoa/ResourceResponseCocoa.mm:
11:25 AM Changeset in webkit [242894] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebCore

[GStreamer][WebRTC] Add support for omxh264enc encoder
https://bugs.webkit.org/show_bug.cgi?id=195676

Patch by Thibault Saunier <tsaunier@igalia.com> on 2019-03-13
Reviewed by Philippe Normand.

  • platform/mediastream/libwebrtc/GStreamerVideoEncoder.cpp:

(setup_omxh264enc):
(set_bitrate_bit_per_sec):
(gst_webrtc_video_encoder_class_init):

11:14 AM Changeset in webkit [242893] by graouts@webkit.org
  • 3 edits in trunk

REGRESSION(r240634): Element::hasPointerCapture() passes a JS-controlled value directly into a HashMap as a key
https://bugs.webkit.org/show_bug.cgi?id=195683
<rdar://problem/48659950>

Reviewed by Alex Christensen.

Source/WebCore:

While PointerID is defined as int32_t, we now use int64_t as the key of the HashMap mapping PointerID to CapturingData so that we use
a value outside of the int32_t range as a safe empty and removed values, allowing any int32_t to be provided through the API for
lookup in this HashMap.

Test: pointerevents/pointer-id-crash.html

  • page/PointerCaptureController.h:

LayoutTests:

Add a new test which would crash in debug builds prior to this fix.

  • pointerevents/pointer-id-crash-expected.txt: Added.
  • pointerevents/pointer-id-crash.html: Added.
11:09 AM Changeset in webkit [242892] by commit-queue@webkit.org
  • 3 edits
    1 add in trunk/Source/bmalloc

Fix testbmalloc build
https://bugs.webkit.org/show_bug.cgi?id=195660

Patch by Sam Weinig <sam@webkit.org> on 2019-03-13
Reviewed by Geoffrey Garen.

  • bmalloc.xcodeproj/project.pbxproj:

Link Foundation in when building testbmalloc. Since bmalloc requires Foundation, and is a static
library, all clients of bmalloc are required to link it themselves.

  • bmalloc/IsoPageInlines.h:
  • bmalloc/StdLibExtras.h: Added.

(bmalloc::bitwise_cast):
Add bitwise_cast implementation, and use it in IsoPageInlines.h. It is a layering violation
to expect the one from WTF to be available, as seems to have been the case.

10:57 AM Changeset in webkit [242891] by beidson@apple.com
  • 17 edits
    2 adds in trunk/Source

Take UnboundedNetworking assertion when a file upload is in progress.
https://bugs.webkit.org/show_bug.cgi?id=195497

Reviewed by Geoff Garen.

Source/WebCore:

  • platform/network/ResourceRequestBase.cpp:

(WebCore::ResourceRequestBase::hasUpload const):

  • platform/network/ResourceRequestBase.h:

Source/WebKit:

This patch implements whole bunch of bookkeeping in both the Networking and UI processes.

The TLDR of that bookkeeping is:

  • Whenever any uploads are in progress, take an assertion for both Networking and UI processes.
  • Whenever a particular WebProcess has an upload in progress, take an assertion for it.
  • NetworkProcess/NetworkConnectionToWebProcess.cpp:

(WebKit::NetworkConnectionToWebProcess::NetworkConnectionToWebProcess):
(WebKit::NetworkConnectionToWebProcess::setProcessIdentifier):
(WebKit::NetworkConnectionToWebProcess::setConnectionHasUploads):
(WebKit::NetworkConnectionToWebProcess::clearConnectionHasUploads):

  • NetworkProcess/NetworkConnectionToWebProcess.h:
  • NetworkProcess/NetworkConnectionToWebProcess.messages.in:
  • NetworkProcess/NetworkResourceLoadMap.cpp: Added.

(WebKit::NetworkResourceLoadMap::add):
(WebKit::NetworkResourceLoadMap::remove):
(WebKit::NetworkResourceLoadMap::get const):

  • NetworkProcess/NetworkResourceLoadMap.h: Added.

(WebKit::NetworkResourceLoadMap::NetworkResourceLoadMap):
(WebKit::NetworkResourceLoadMap::isEmpty const):
(WebKit::NetworkResourceLoadMap::contains const):
(WebKit::NetworkResourceLoadMap::begin):
(WebKit::NetworkResourceLoadMap::values):

  • NetworkProcess/NetworkSession.cpp:
  • Scripts/webkit/messages.py:
  • Sources.txt:
  • UIProcess/Network/NetworkProcessProxy.cpp:

(WebKit::NetworkProcessProxy::takeUploadAssertion):
(WebKit::NetworkProcessProxy::clearUploadAssertion):

  • UIProcess/Network/NetworkProcessProxy.h:
  • UIProcess/WebProcessPool.cpp:

(WebKit::WebProcessPool::setWebProcessHasUploads):
(WebKit::WebProcessPool::clearWebProcessHasUploads):

  • UIProcess/WebProcessPool.h:
  • UIProcess/WebProcessPool.messages.in:
  • WebKit.xcodeproj/project.pbxproj:
  • WebProcess/WebProcess.cpp:

(WebKit::WebProcess::ensureNetworkProcessConnection):

10:53 AM Changeset in webkit [242890] by Kocsen Chung
  • 7 edits in trunk/Source

Versioning.

10:48 AM Changeset in webkit [242889] by Chris Dumez
  • 11 edits in trunk/Source/WebKit

Use new RegistrableDomain type in PSON code
https://bugs.webkit.org/show_bug.cgi?id=195634

Reviewed by Youenn Fablet.

Use new RegistrableDomain type in PSON code instead of more error-prone String type.

  • UIProcess/SuspendedPageProxy.cpp:

(WebKit::SuspendedPageProxy::SuspendedPageProxy):

  • UIProcess/SuspendedPageProxy.h:
  • UIProcess/WebProcessCache.cpp:

(WebKit::WebProcessCache::canCacheProcess const):
(WebKit::WebProcessCache::addProcessIfPossible):
(WebKit::WebProcessCache::takeProcess):
(WebKit::WebProcessCache::clearAllProcessesForSession):

  • UIProcess/WebProcessCache.h:
  • UIProcess/WebProcessPool.cpp:

(WebKit::WebProcessPool::addProcessToOriginCacheSet):
(WebKit::WebProcessPool::removeProcessFromOriginCacheSet):
(WebKit::WebProcessPool::processForNavigationInternal):
(WebKit::WebProcessPool::findReusableSuspendedPageProcess):
(WebKit::WebProcessPool::didCollectPrewarmInformation):
(WebKit::WebProcessPool::tryPrewarmWithDomainInformation):

  • UIProcess/WebProcessPool.h:
  • UIProcess/WebProcessProxy.cpp:

(WebKit::WebProcessProxy::canBeAddedToWebProcessCache const):
(WebKit::WebProcessProxy::maybeShutDown):
(WebKit::WebProcessProxy::didCollectPrewarmInformation):
(WebKit::WebProcessProxy::didStartProvisionalLoadForMainFrame):

  • UIProcess/WebProcessProxy.h:

(WebKit::WebProcessProxy::registrableDomain const):

  • UIProcess/WebProcessProxy.messages.in:
  • WebProcess/WebProcess.cpp:

(WebKit::WebProcess::sendPrewarmInformation):

10:28 AM Changeset in webkit [242888] by bshafiei@apple.com
  • 6 edits in branches/safari-607-branch/Source/WebKit

Apply patch. rdar://problem/48839383

Cherry-pick r242230. rdar://problem/48839383

Revert r232263: it caused processes to crash because process was suspended with locked file
https://bugs.webkit.org/show_bug.cgi?id=195122
<rdar://problem/48444599>

Reviewed by Geoffrey Garen.

  • NetworkProcess/NetworkProcess.cpp: (WebKit::NetworkProcess::NetworkProcess):
  • NetworkProcess/NetworkProcess.h:
  • Shared/WebSQLiteDatabaseTracker.cpp: (WebKit::WebSQLiteDatabaseTracker::WebSQLiteDatabaseTracker): (WebKit::WebSQLiteDatabaseTracker::hysteresisUpdated):
  • Shared/WebSQLiteDatabaseTracker.h:
  • WebProcess/WebProcess.cpp: (WebKit::m_webSQLiteDatabaseTracker): (WebKit::m_nonVisibleProcessCleanupTimer): Deleted.
  • WebProcess/WebProcess.h:

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

10:25 AM Changeset in webkit [242887] by Shawn Roberts
  • 2 edits in trunk/LayoutTests

http/tests/websocket/tests/hybi/handshake-ok-with-legacy-sec-websocket-response-headers.html is a flaky failure on Mac WK2
https://bugs.webkit.org/show_bug.cgi?id=173041

Unreviewed test gardening.

  • platform/mac/TestExpectations: Marking as flaky until a fix lands
10:14 AM Changeset in webkit [242886] by youenn@apple.com
  • 10 edits in trunk/Source

Enable libwebrtc logging control through WebCore
https://bugs.webkit.org/show_bug.cgi?id=195658

Reviewed by Eric Carlson.

Source/ThirdParty/libwebrtc:

Add a callback to get access to libwebrtc log messages.

  • Configurations/libwebrtc.iOS.exp:
  • Configurations/libwebrtc.iOSsim.exp:
  • Configurations/libwebrtc.mac.exp:
  • Source/webrtc/rtc_base/logging.cc:
  • Source/webrtc/rtc_base/logging.h:

Source/WebCore:

Add support for WebCore logging of libwebrtc messages.
This is controlled by WebRTC log channel state and level.
In case of private browsing mode, any logging is disabled.
This will stay for the lifetime of the process.
No change of behavior.

  • Modules/mediastream/RTCPeerConnection.cpp:

(WebCore::RTCPeerConnection::create):

  • platform/mediastream/libwebrtc/LibWebRTCProvider.cpp:

(WebCore::doReleaseLogging):
(WebCore::setLogging):
(WebCore::computeLogLevel):
(WebCore::initializePeerConnectionFactoryAndThreads):
(WebCore::LibWebRTCProvider::setEnableLogging):

  • platform/mediastream/libwebrtc/LibWebRTCProvider.h:
10:11 AM Changeset in webkit [242885] by aakash_jain@apple.com
  • 2 edits
    1 delete in trunk/Tools

[ews-app] Remove unused patch view
https://bugs.webkit.org/show_bug.cgi?id=195669

Reviewed by Lucas Forschler.

  • BuildSlaveSupport/ews-app/ews/urls.py:
  • BuildSlaveSupport/ews-app/ews/views/patch.py: Removed.
10:03 AM Changeset in webkit [242884] by aakash_jain@apple.com
  • 3 edits in trunk/Tools

[ews-app] Use Buildbot result code variables
https://bugs.webkit.org/show_bug.cgi?id=195668

Reviewed by Alexey Proskuryakov.

  • BuildSlaveSupport/ews-app/ews/common/buildbot.py:

(Buildbot): Added Buildbot result code variables.

  • BuildSlaveSupport/ews-app/ews/views/statusbubble.py:

(StatusBubble._build_bubble): Used Buildbot result code variables.

9:08 AM Changeset in webkit [242883] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebCore

[GStreamer][WebRTC] Do not sync encoder on the clock
https://bugs.webkit.org/show_bug.cgi?id=195673

we should encode as fast as possible and totally ignore timestamp while
doing so.

Patch by Thibault Saunier <tsaunier@igalia.com> on 2019-03-13
Reviewed by Philippe Normand.

  • platform/mediastream/libwebrtc/GStreamerVideoEncoderFactory.cpp:

(WebCore::GStreamerVideoEncoder::InitEncode):

8:33 AM Changeset in webkit [242882] by commit-queue@webkit.org
  • 3 edits in trunk/Tools

[Flatpak] Expand submodule recursively
https://bugs.webkit.org/show_bug.cgi?id=195672

Building WPE with flatpak was impossible without that as it was raising an exception.
Also update wpebackend-fdo to match what is built in jhbuild

Patch by Thibault Saunier <tsaunier@igalia.com> on 2019-03-13
Reviewed by Philippe Normand.

  • flatpak/flatpakutils.py:

(expand_submodules_recurse):
(expand_manifest):

  • flatpak/org.webkit.WPEModules.yaml:
8:28 AM Changeset in webkit [242881] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebCore

[GStreamer][WebRTC]: Use codec setting video height/width as fallback
https://bugs.webkit.org/show_bug.cgi?id=195675

Patch by Thibault Saunier <tsaunier@igalia.com> on 2019-03-13
Reviewed by Philippe Normand.

In some cases the frame height and width is not set (not sure why/ in
what conditions but it happens) so make sure to get the information from
the VideoCodec when configuring the encoder.

  • platform/mediastream/libwebrtc/GStreamerVideoDecoderFactory.cpp:

(WebCore::GStreamerVideoDecoder::GStreamerVideoDecoder):
(WebCore::GStreamerVideoDecoder::GetCapsForFrame):

4:27 AM Changeset in webkit [242880] by aakash_jain@apple.com
  • 2 edits in trunk/Tools

[ews-app] status bubble should be hidden for certain builds
https://bugs.webkit.org/show_bug.cgi?id=194597

Reviewed by Dewei Zhu.

  • BuildSlaveSupport/ews-app/ews/views/statusbubble.py:

(StatusBubble._build_bubble):
(StatusBubble._should_show_bubble_for_build): Hide bubble for builds which were skipped
because the patch didn't have relevant changes.
(StatusBubble._should_show_bubble_for_queue): Hide bubbles for queues which are not deployed
in production yet.

2:47 AM Changeset in webkit [242879] by Carlos Garcia Campos
  • 1 copy in releases/WebKitGTK/webkit-2.24.0

WebKitGTK 2.24.0

2:47 AM Changeset in webkit [242878] by Carlos Garcia Campos
  • 4 edits in releases/WebKitGTK/webkit-2.24

Unreviewed. Update OptionsGTK.cmake and NEWS for 2.24.0 release

.:

  • Source/cmake/OptionsGTK.cmake: Bump version numbers.

Source/WebKit:

  • gtk/NEWS: Add release notes for 2.24.0.
2:25 AM Changeset in webkit [242877] by Carlos Garcia Campos
  • 6 edits in releases/WebKitGTK/webkit-2.24/Source/WebCore

Merge r242793 - [GStreamer][v4l2] Synchronous video texture flushing support
https://bugs.webkit.org/show_bug.cgi?id=195453

Reviewed by Xabier Rodriguez-Calvar.

The v4l2 video decoder currently requires that downstream users of
the graphics resources complete any pending draw call and release
resources before returning from the DRAIN query.

To accomplish this the player monitors the pipeline and whenever a
v4l2 decoder is added, synchronous video texture flushing support
is enabled. Additionally and for all decoder configurations, a
flush is performed before disposing of the player.

  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:

(WebCore::MediaPlayerPrivateGStreamer::playbinDeepElementAddedCallback):
Monitor elements added to the decodebin bin.
(WebCore::MediaPlayerPrivateGStreamer::decodebinElementAdded): Set
a flag if a v4l2 decoder was added in decodebin.
(WebCore::MediaPlayerPrivateGStreamer::createGSTPlayBin): Connect
to the deep-element-added signal so as to monitor pipeline
topology updates.

  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.h:
  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:

(WebCore::MediaPlayerPrivateGStreamerBase::~MediaPlayerPrivateGStreamerBase):
Flush video texture before disposing of the player.
(WebCore::MediaPlayerPrivateGStreamerBase::flushCurrentBuffer):
Synchronously flush if the pipeline contains a v4l2 decoder.
(WebCore::MediaPlayerPrivateGStreamerBase::createGLAppSink): Monitor push events only.

  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.h:
  • platform/graphics/texmap/TextureMapperPlatformLayerProxy.cpp:

(WebCore::TextureMapperPlatformLayerProxy::pushNextBuffer): New
boolean flag used mostly to trigger synchronous flush conditions.
(WebCore::TextureMapperPlatformLayerProxy::dropCurrentBufferWhilePreservingTexture):
Optionally drop the current buffer in a synchronous manner. By
default the method keeps operating asynchronously.

  • platform/graphics/texmap/TextureMapperPlatformLayerProxy.h:
2:25 AM Changeset in webkit [242876] by Carlos Garcia Campos
  • 3 edits in releases/WebKitGTK/webkit-2.24/Tools

Merge r242637 - [GTK] Make Tools/gtkdoc python3 compatible
https://bugs.webkit.org/show_bug.cgi?id=195359

Reviewed by Carlos Garcia Campos.

  • gtkdoc/generate-gtkdoc:

ConfigParser was reworked in Python 3.2 so we have adapt the code to
work with Python 2 and 3.
(get_gtkdoc_module_paths):
The iteritems() was removed in Python 3, so let's use items() that's
available in Python 2 and 3.
(get_generator_for_config):

  • gtkdoc/gtkdoc.py:

(GTKDoc._run_command):
The sys.stdout.write() is expecting str in Python 3 and not bytes
(that are coming from stdout.encode()). Use sys.stdout.buffer.write()
for passing the bytes there.

2:25 AM Changeset in webkit [242875] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.24/Source/WebCore

Merge r242640 - GLContextEGL: desired EGL config should search for 8-bit components by default
https://bugs.webkit.org/show_bug.cgi?id=195413

Reviewed by Carlos Garcia Campos.

The EGL config search in GLContextEGL should by default look for
RGBA8888 configurations while allowing RGB565 as an alternative.
This prevents from accidentally landing on an RGBA1010102
configuration that is available with some graphics stacks, and which is
not expected in e.g. window snapshotting that's done for layout test
output comparison.

  • platform/graphics/egl/GLContextEGL.cpp:

(WebCore::GLContextEGL::getEGLConfig): EGL config search should by
default request 8-bit color channels.

2:25 AM Changeset in webkit [242874] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.24/Source/WebCore/platform/gtk/po

Merge r242863 - [l10n] Updated Italian translation of WebKitGTK+
https://bugs.webkit.org/show_bug.cgi?id=195620

Patch by Milo Casagrande <milo@milo.name> on 2019-03-13
Rubber-stamped by Carlos Garcia Campos.

  • it.po:
2:25 AM Changeset in webkit [242873] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.24/Source/WebCore

Merge r242864 - [CoordinatedGraphics] Null dereference in CoordinatedGraphicsLayer::setCoordinatorIncludingSubLayersIfNeeded
https://bugs.webkit.org/show_bug.cgi?id=195615

Reviewed by Carlos Garcia Campos.

Exit early if we don't receive a valid coordinator.

  • platform/graphics/texmap/coordinated/CoordinatedGraphicsLayer.cpp:

(WebCore::CoordinatedGraphicsLayer::setCoordinatorIncludingSubLayersIfNeeded):

2:25 AM Changeset in webkit [242872] by Carlos Garcia Campos
  • 3 edits
    2 adds in releases/WebKitGTK/webkit-2.24

Merge r242826 - [WebGL] WebGLBuffer can be too large
https://bugs.webkit.org/show_bug.cgi?id=195068
<rdar://problem/48414289>

Reviewed by Antoine Quint.

Source/WebCore:

When creating an element array buffer, make sure to
test against the maximum size of an ArrayBuffer, rather
than just assume it can be created.

Test: fast/canvas/webgl/largeBuffer.html

  • html/canvas/WebGLBuffer.cpp:

(WebCore::WebGLBuffer::associateBufferDataImpl):

LayoutTests:

  • fast/canvas/webgl/largeBuffer-expected.txt: Added.
  • fast/canvas/webgl/largeBuffer.html: Added.
2:25 AM Changeset in webkit [242871] by Carlos Garcia Campos
  • 3 edits
    1 add in releases/WebKitGTK/webkit-2.24

Merge r242810 - The HasIndexedProperty node does GC.
https://bugs.webkit.org/show_bug.cgi?id=195559
<rdar://problem/48767923>

Reviewed by Yusuke Suzuki.

JSTests:

  • stress/HasIndexedProperty-does-gc.js: Added.

Source/JavaScriptCore:

HasIndexedProperty can call the slow path operationHasIndexedPropertyByInt(),
which can eventually call JSString::getIndex(), which can resolve a rope.

  • dfg/DFGDoesGC.cpp:

(JSC::DFG::doesGC):

2:25 AM Changeset in webkit [242870] by Carlos Garcia Campos
  • 3 edits
    2 adds in releases/WebKitGTK/webkit-2.24

Merge r242515 - SVGPathSegList.insertItemBefore() should fail if the newItem belongs to an animating animPathSegList
https://bugs.webkit.org/show_bug.cgi?id=195333
<rdar://problem/48475802>

Reviewed by Simon Fraser.

Source/WebCore:

Because the SVG1.1 specs states that the newItem should be removed from
its original list before adding it to another list,
SVGPathSegList.insertItemBefore() should fail if the new item belongs to
an animating animPathSegList since it is read-only.

Test: svg/dom/SVGPathSegList-insert-from-animating-animPathSegList.svg

  • svg/SVGPathSegList.cpp:

(WebCore::SVGPathSegList::processIncomingListItemValue):

LayoutTests:

  • svg/dom/SVGPathSegList-insert-from-animating-animPathSegList-expected.txt: Added.
  • svg/dom/SVGPathSegList-insert-from-animating-animPathSegList.svg: Added.
2:25 AM Changeset in webkit [242869] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.24/Source/WebCore

Merge r242639 - Use a thread safe refcounter for FilterOperation.
https://bugs.webkit.org/show_bug.cgi?id=194149

Reviewed by Carlos Garcia Campos.

Use a thread safe refcounter for FilterOperation.

  • platform/graphics/filters/FilterOperation.h:
2:25 AM Changeset in webkit [242868] by Carlos Garcia Campos
  • 3 edits
    1 add in releases/WebKitGTK/webkit-2.24

Merge r242667 - Stack overflow crash in JSC::JSObject::hasInstance.
https://bugs.webkit.org/show_bug.cgi?id=195458
<rdar://problem/48710195>

Reviewed by Yusuke Suzuki.

JSTests:

  • stress/stack-overflow-in-custom-hasInstance.js: Added.

Source/JavaScriptCore:

  • runtime/JSObject.cpp:

(JSC::JSObject::hasInstance):

2:25 AM WebKitGTK/2.24.x edited by Carlos Garcia Campos
(diff)
2:25 AM Changeset in webkit [242867] by Carlos Garcia Campos
  • 6 edits
    2 adds in releases/WebKitGTK/webkit-2.24

Merge r242587 - Crash when attempting to change input type while dismissing datalist suggestions
https://bugs.webkit.org/show_bug.cgi?id=195384
<rdar://problem/48563718>

Reviewed by Brent Fulgham.

Source/WebCore:

When closing a datalist suggestion menu, WebPageProxy sends a message to WebPage instructing it to tell its
active datalist suggestions picker to close. However, for a myriad of reasons, the suggestions picker (kept
alive by its text input type) may have already gone away by this point. To mitigate this, make WebPage weakly
reference its active datalist suggestions picker.

Test: fast/forms/datalist/change-input-type-after-closing-datalist-suggestions.html

  • platform/DataListSuggestionPicker.h:

Make DataListSuggestionPicker capable of being weakly referenced. Additionally, fix some minor preexisting
issues in this header (#imports instead of #includes, as well as an unnecessary include of IntRect.h).

Source/WebKit:

See WebCore ChangeLog for more details.

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::setActiveDataListSuggestionPicker):
(WebKit::WebPage::didSelectDataListOption):
(WebKit::WebPage::didCloseSuggestions):

  • WebProcess/WebPage/WebPage.h:

Turn m_activeDataListSuggestionPicker from a raw pointer into a WeakPtr.

LayoutTests:

Add a new layout test to exercise this scenario.

  • fast/forms/datalist/change-input-type-after-closing-datalist-suggestions-expected.txt: Added.
  • fast/forms/datalist/change-input-type-after-closing-datalist-suggestions.html: Added.
2:24 AM Changeset in webkit [242866] by Carlos Garcia Campos
  • 6 edits
    1 add in releases/WebKitGTK/webkit-2.24

Merge r242569 - Air::reportUsedRegisters must padInterference
https://bugs.webkit.org/show_bug.cgi?id=195303
<rdar://problem/48270343>

Reviewed by Keith Miller.

JSTests:

  • stress/optional-def-arg-width-should-be-both-early-and-late-use.js: Added.

Source/JavaScriptCore:

reportUsedRegisters uses reg liveness to eliminate loads/moves into dead
registers. However, liveness can report incorrect results in certain
scenarios when considering liveness at instruction boundaries. For example,
it can go wrong when an Inst has a LateUse of a register and the following
Inst has an EarlyDef of that same register. Such a scenario could lead us
to incorrectly say the register is not live-in to the first Inst. Pad
interference inserts Nops between such instruction boundaries that cause
this issue.

The test with this patch fixes the issue in reportUsedRegisters. This patch
also conservatively makes it so that lowerAfterRegAlloc calls padInterference
since it also reasons about liveness.

  • b3/air/AirLowerAfterRegAlloc.cpp:

(JSC::B3::Air::lowerAfterRegAlloc):

  • b3/air/AirPadInterference.h:
  • b3/air/AirReportUsedRegisters.cpp:

(JSC::B3::Air::reportUsedRegisters):

  • b3/testb3.cpp:

(JSC::B3::testReportUsedRegistersLateUseNotDead):
(JSC::B3::run):

2:24 AM Changeset in webkit [242865] by Carlos Garcia Campos
  • 3 edits
    1 add in releases/WebKitGTK/webkit-2.24

Merge r242276 - DFG: Loop-invariant code motion (LICM) should not hoist dead code
https://bugs.webkit.org/show_bug.cgi?id=194945
<rdar://problem/48311657>

Reviewed by Saam Barati.

  • dfg/DFGLICMPhase.cpp:

(JSC::DFG::LICMPhase::run):

1:55 AM Changeset in webkit [242864] by magomez@igalia.com
  • 2 edits in trunk/Source/WebCore

[CoordinatedGraphics] Null dereference in CoordinatedGraphicsLayer::setCoordinatorIncludingSubLayersIfNeeded
https://bugs.webkit.org/show_bug.cgi?id=195615

Reviewed by Carlos Garcia Campos.

Exit early if we don't receive a valid coordinator.

  • platform/graphics/texmap/coordinated/CoordinatedGraphicsLayer.cpp:

(WebCore::CoordinatedGraphicsLayer::setCoordinatorIncludingSubLayersIfNeeded):

1:39 AM Changeset in webkit [242863] by Carlos Garcia Campos
  • 2 edits in trunk/Source/WebCore/platform/gtk/po

[l10n] Updated Italian translation of WebKitGTK+
https://bugs.webkit.org/show_bug.cgi?id=195620

Patch by Milo Casagrande <milo@milo.name> on 2019-03-13
Rubber-stamped by Carlos Garcia Campos.

  • it.po:
1:24 AM Changeset in webkit [242862] by bshafiei@apple.com
  • 3 edits
    1 add in branches/safari-607-branch

Cherry-pick r242810. rdar://problem/48839349

The HasIndexedProperty node does GC.
https://bugs.webkit.org/show_bug.cgi?id=195559
<rdar://problem/48767923>

Reviewed by Yusuke Suzuki.

JSTests:

  • stress/HasIndexedProperty-does-gc.js: Added.

Source/JavaScriptCore:

HasIndexedProperty can call the slow path operationHasIndexedPropertyByInt(),
which can eventually call JSString::getIndex(), which can resolve a rope.

  • dfg/DFGDoesGC.cpp: (JSC::DFG::doesGC):

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

1:24 AM Changeset in webkit [242861] by bshafiei@apple.com
  • 4 edits
    2 adds in branches/safari-607-branch

Cherry-pick r242749. rdar://problem/48839358

[macOS] Dispatching reentrant "contextmenu" events may cause crashes
https://bugs.webkit.org/show_bug.cgi?id=195571
<rdar://problem/48086046>

Reviewed by Andy Estes.

Source/WebCore:

Make ContextMenuController::handleContextMenuEvent robust against reentrancy by guarding it with a boolean flag.
As demonstrated in the test case, it is currently possible to force WebKit into a bad state by dispatching a
synthetic "contextmenu" event from within the scope of one of the "before(copy|cut|paste)" events triggered as
a result of handling a context menu event.

Test: fast/events/contextmenu-reentrancy-crash.html

  • page/ContextMenuController.cpp: (WebCore::ContextMenuController::handleContextMenuEvent):
  • page/ContextMenuController.h:

LayoutTests:

Add a test to verify that triggering reentrant "contextmenu" events from script does not cause a crash.

  • fast/events/contextmenu-reentrancy-crash-expected.txt: Added.
  • fast/events/contextmenu-reentrancy-crash.html: Added.

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

1:24 AM Changeset in webkit [242860] by bshafiei@apple.com
  • 23 edits in branches/safari-607-branch

Cherry-pick r242735. rdar://problem/48780112

Add a WKContentRuleList variant that uses copied memory instead of mmap'd shared memory for class A containerized apps
https://bugs.webkit.org/show_bug.cgi?id=195511
<rdar://problem/44873269>

Patch by Alex Christensen <achristensen@webkit.org> on 2019-03-11
Reviewed by Darin Adler.

Source/WebKit:

  • NetworkProcess/NetworkContentRuleListManager.cpp: (WebKit::NetworkContentRuleListManager::addContentRuleLists):
  • NetworkProcess/NetworkContentRuleListManager.h:
  • NetworkProcess/cache/NetworkCacheFileSystem.cpp: (WebKit::NetworkCache::pathRegisteredAsUnsafeToMemoryMapForTesting): (WebKit::NetworkCache::registerPathAsUnsafeToMemoryMapForTesting): (WebKit::NetworkCache::isSafeToUseMemoryMapForPath):
  • NetworkProcess/cache/NetworkCacheFileSystem.h:
  • Shared/WebCompiledContentRuleList.cpp: (WebKit::WebCompiledContentRuleList::usesCopiedMemory const): (WebKit::WebCompiledContentRuleList::conditionsApplyOnlyToDomain const): (WebKit::WebCompiledContentRuleList::filtersWithoutConditionsBytecode const): (WebKit::WebCompiledContentRuleList::filtersWithConditionsBytecode const): (WebKit::WebCompiledContentRuleList::topURLFiltersBytecode const): (WebKit::WebCompiledContentRuleList::actions const):
  • Shared/WebCompiledContentRuleList.h:
  • Shared/WebCompiledContentRuleListData.cpp: (WebKit::WebCompiledContentRuleListData::size const): (WebKit::WebCompiledContentRuleListData::dataPointer const): (WebKit::WebCompiledContentRuleListData::encode const): (WebKit::WebCompiledContentRuleListData::decode):
  • Shared/WebCompiledContentRuleListData.h: (WebKit::WebCompiledContentRuleListData::WebCompiledContentRuleListData):
  • UIProcess/API/APIContentRuleList.cpp: (API::ContentRuleList::usesCopiedMemory const):
  • UIProcess/API/APIContentRuleList.h:
  • UIProcess/API/APIContentRuleListStore.cpp: (API::getData): (API::decodeContentRuleListMetaData): (API::ContentRuleListStore::readContentsOfFile): (API::MappedOrCopiedData::dataPointer const): (API::openAndMapOrCopyContentRuleList): (API::compiledToFile): (API::createExtension): (API::ContentRuleListStore::lookupContentRuleList): (API::ContentRuleListStore::compileContentRuleList): (API::ContentRuleListStore::getContentRuleListSource): (API::openAndMapContentRuleList): Deleted.
  • UIProcess/API/APIContentRuleListStore.h:
  • UIProcess/API/Cocoa/APIContentRuleListStoreCocoa.mm: (API::ContentRuleListStore::readContentsOfFile):
  • UIProcess/API/Cocoa/WKContentRuleListStore.mm: (+[WKContentRuleListStore _registerPathAsUnsafeToMemoryMapForTesting:]):
  • UIProcess/API/Cocoa/WKContentRuleListStorePrivate.h:
  • UIProcess/API/Cocoa/_WKUserContentFilter.mm: (-[_WKUserContentFilter usesCopiedMemory]):
  • UIProcess/API/Cocoa/_WKUserContentFilterPrivate.h:
  • WebProcess/UserContent/WebUserContentController.cpp: (WebKit::WebUserContentController::addContentRuleLists):
  • WebProcess/UserContent/WebUserContentController.h:
  • WebProcess/WebPage/WebPage.cpp: (WebKit::m_hostFileDescriptor):

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/WKContentExtensionStore.mm: (-[TestSchemeHandlerSubresourceShouldBeBlocked webView:startURLSchemeTask:]): (-[TestSchemeHandlerSubresourceShouldBeBlocked webView:stopURLSchemeTask:]): (TEST_F):

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

1:24 AM Changeset in webkit [242859] by bshafiei@apple.com
  • 3 edits
    1 add in branches/safari-607-branch

Cherry-pick r242667. rdar://problem/48839311

Stack overflow crash in JSC::JSObject::hasInstance.
https://bugs.webkit.org/show_bug.cgi?id=195458
<rdar://problem/48710195>

Reviewed by Yusuke Suzuki.

JSTests:

  • stress/stack-overflow-in-custom-hasInstance.js: Added.

Source/JavaScriptCore:

  • runtime/JSObject.cpp: (JSC::JSObject::hasInstance):

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

1:24 AM Changeset in webkit [242858] by bshafiei@apple.com
  • 6 edits
    2 adds in branches/safari-607-branch

Cherry-pick r242587. rdar://problem/48839354

Crash when attempting to change input type while dismissing datalist suggestions
https://bugs.webkit.org/show_bug.cgi?id=195384
<rdar://problem/48563718>

Reviewed by Brent Fulgham.

Source/WebCore:

When closing a datalist suggestion menu, WebPageProxy sends a message to WebPage instructing it to tell its
active datalist suggestions picker to close. However, for a myriad of reasons, the suggestions picker (kept
alive by its text input type) may have already gone away by this point. To mitigate this, make WebPage weakly
reference its active datalist suggestions picker.

Test: fast/forms/datalist/change-input-type-after-closing-datalist-suggestions.html

  • platform/DataListSuggestionPicker.h:

Make DataListSuggestionPicker capable of being weakly referenced. Additionally, fix some minor preexisting
issues in this header (#imports instead of #includes, as well as an unnecessary include of IntRect.h).

Source/WebKit:

See WebCore ChangeLog for more details.

  • WebProcess/WebPage/WebPage.cpp: (WebKit::WebPage::setActiveDataListSuggestionPicker): (WebKit::WebPage::didSelectDataListOption): (WebKit::WebPage::didCloseSuggestions):
  • WebProcess/WebPage/WebPage.h:

Turn m_activeDataListSuggestionPicker from a raw pointer into a WeakPtr.

LayoutTests:

Add a new layout test to exercise this scenario.

  • fast/forms/datalist/change-input-type-after-closing-datalist-suggestions-expected.txt: Added.
  • fast/forms/datalist/change-input-type-after-closing-datalist-suggestions.html: Added.

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

1:24 AM Changeset in webkit [242857] by bshafiei@apple.com
  • 6 edits
    1 add in branches/safari-607-branch

Cherry-pick r242569. rdar://problem/48839273

Air::reportUsedRegisters must padInterference
https://bugs.webkit.org/show_bug.cgi?id=195303
<rdar://problem/48270343>

Reviewed by Keith Miller.

JSTests:

  • stress/optional-def-arg-width-should-be-both-early-and-late-use.js: Added.

Source/JavaScriptCore:

reportUsedRegisters uses reg liveness to eliminate loads/moves into dead
registers. However, liveness can report incorrect results in certain
scenarios when considering liveness at instruction boundaries. For example,
it can go wrong when an Inst has a LateUse of a register and the following
Inst has an EarlyDef of that same register. Such a scenario could lead us
to incorrectly say the register is not live-in to the first Inst. Pad
interference inserts Nops between such instruction boundaries that cause
this issue.

The test with this patch fixes the issue in reportUsedRegisters. This patch
also conservatively makes it so that lowerAfterRegAlloc calls padInterference
since it also reasons about liveness.

  • b3/air/AirLowerAfterRegAlloc.cpp: (JSC::B3::Air::lowerAfterRegAlloc):
  • b3/air/AirPadInterference.h:
  • b3/air/AirReportUsedRegisters.cpp: (JSC::B3::Air::reportUsedRegisters):
  • b3/testb3.cpp: (JSC::B3::testReportUsedRegistersLateUseNotDead): (JSC::B3::run):

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

1:24 AM Changeset in webkit [242856] by bshafiei@apple.com
  • 3 edits
    2 adds in branches/safari-607-branch

Cherry-pick r242515. rdar://problem/48839275

SVGPathSegList.insertItemBefore() should fail if the newItem belongs to an animating animPathSegList
https://bugs.webkit.org/show_bug.cgi?id=195333
<rdar://problem/48475802>

Reviewed by Simon Fraser.

Source/WebCore:

Because the SVG1.1 specs states that the newItem should be removed from
its original list before adding it to another list,
SVGPathSegList.insertItemBefore() should fail if the new item belongs to
an animating animPathSegList since it is read-only.

Test: svg/dom/SVGPathSegList-insert-from-animating-animPathSegList.svg

  • svg/SVGPathSegList.cpp: (WebCore::SVGPathSegList::processIncomingListItemValue):

LayoutTests:

  • svg/dom/SVGPathSegList-insert-from-animating-animPathSegList-expected.txt: Added.
  • svg/dom/SVGPathSegList-insert-from-animating-animPathSegList.svg: Added.

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

1:24 AM Changeset in webkit [242855] by bshafiei@apple.com
  • 3 edits
    1 add in branches/safari-607-branch

Cherry-pick r242276. rdar://problem/48839389

DFG: Loop-invariant code motion (LICM) should not hoist dead code
https://bugs.webkit.org/show_bug.cgi?id=194945
<rdar://problem/48311657>

Reviewed by Saam Barati.

  • dfg/DFGLICMPhase.cpp: (JSC::DFG::LICMPhase::run):

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

1:24 AM Changeset in webkit [242854] by bshafiei@apple.com
  • 5 edits
    1 add in branches/safari-607-branch

Cherry-pick r242114. rdar://problem/48839372

wasmToJS() should purify incoming NaNs.
https://bugs.webkit.org/show_bug.cgi?id=194807
<rdar://problem/48189132>

Reviewed by Saam Barati.

JSTests:

  • wasm/regress/wasmToJS-should-purify-NaNs.js: Added.

Source/JavaScriptCore:

  • runtime/JSCJSValue.h: (JSC::jsNumber):
  • runtime/TypedArrayAdaptors.h: (JSC::IntegralTypedArrayAdaptor::toJSValue):
  • wasm/js/WasmToJS.cpp: (JSC::Wasm::wasmToJS):

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

1:24 AM Changeset in webkit [242853] by bshafiei@apple.com
  • 2 edits in branches/safari-607-branch/Source/WebCore

Cherry-pick r241632. rdar://problem/48839379

Sample domainsVisited diagnostic logging
https://bugs.webkit.org/show_bug.cgi?id=194657

Reviewed by Ryosuke Niwa.

Sample domainsVisited diagnostic logging, we are getting a lot of data from
this key and this is hurting our other keys.

  • page/Page.cpp: (WebCore::Page::logNavigation):

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

1:24 AM Changeset in webkit [242852] by bshafiei@apple.com
  • 4 edits
    4 adds in branches/safari-607-branch

Cherry-pick r241615. rdar://problem/48839366

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

Reviewed by Saam Barati.

JSTests:

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

Source/JavaScriptCore:

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

  • runtime/SamplingProfiler.cpp: (JSC::SamplingProfiler::stackTracesAsJSON):
  • runtime/TypeSet.cpp: (JSC::TypeSet::toJSONString const): (JSC::StructureShape::toJSONString const):

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

1:24 AM Changeset in webkit [242851] by bshafiei@apple.com
  • 4 edits in branches/safari-607-branch

Cherry-pick r241608. rdar://problem/48839277

[WebVTT] Inline WebVTT styles should start with '::cue'
https://bugs.webkit.org/show_bug.cgi?id=194227

Reviewed by Eric Carlson.

Source/WebCore:

The original fix in r241203 is not sufficient, since it only checks if the CSS string starts
with '::cue'. Before accepting a CSS string from a WebVTT file, it should be checked that
all selectors starts with '::cue'.

Test: media/track/track-cue-css.html

  • html/track/WebVTTParser.cpp: (WebCore::WebVTTParser::checkAndStoreStyleSheet):

LayoutTests:

Add invalid 'STYLE' blocks which the WebVTT parser should reject.

  • media/track/captions-webvtt/css-styling.vtt:

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

1:24 AM Changeset in webkit [242850] by bshafiei@apple.com
  • 3 edits in branches/safari-607-branch/Source/WebCore

Cherry-pick r241468. rdar://problem/48839280

REGRESSION: [ Mac Debug WK2 ] Layout Test storage/indexeddb/key-type-infinity-private.html is a flaky crash
https://bugs.webkit.org/show_bug.cgi?id=194413
<rdar://problem/47897254>

Reviewed by Brady Eidson.

IDB clients expected transaction operations to be executed in order, but in
UniqueIDBDatabase::immediateCloseForUserDelete, callbacks in callback map were errored out randomly.
This patch added a callback queue to UniqueIDBDatabase to make sure callbacks will be called in the same order
as IDB Server receives the request.

  • Modules/indexeddb/server/UniqueIDBDatabase.cpp: (WebCore::IDBServer::UniqueIDBDatabase::storeCallbackOrFireError): (WebCore::IDBServer::UniqueIDBDatabase::immediateCloseForUserDelete): (WebCore::IDBServer::UniqueIDBDatabase::performErrorCallback): (WebCore::IDBServer::UniqueIDBDatabase::performKeyDataCallback): (WebCore::IDBServer::UniqueIDBDatabase::performGetResultCallback): (WebCore::IDBServer::UniqueIDBDatabase::performGetAllResultsCallback): (WebCore::IDBServer::UniqueIDBDatabase::performCountCallback): (WebCore::IDBServer::UniqueIDBDatabase::forgetErrorCallback):
  • Modules/indexeddb/server/UniqueIDBDatabase.h:

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

1:24 AM Changeset in webkit [242849] by bshafiei@apple.com
  • 2 edits in branches/safari-607-branch/Source/WebKit

Cherry-pick r241452. rdar://problem/48839390

Make WebRTCUnifiedPlanEnabled true by default
https://bugs.webkit.org/show_bug.cgi?id=194595

Reviewed by Eric Carlson.

  • Shared/WebPreferences.yaml:

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

1:24 AM Changeset in webkit [242848] by bshafiei@apple.com
  • 2 edits in branches/safari-607-branch/Source/WebKit

Cherry-pick r241002. rdar://problem/48839377

UserMediaPermissionRequestManagerProxy lambdas should check for 'this' being valid
https://bugs.webkit.org/show_bug.cgi?id=194246

Reviewed by Eric Carlson.

With PSON enabled, the manager proxy can be destroyed.
It is thus important for its callbacks to check for 'this' to be valid.

  • UIProcess/UserMediaPermissionRequestManagerProxy.cpp: (WebKit::UserMediaPermissionRequestManagerProxy::captureDevicesChanged): (WebKit::UserMediaPermissionRequestManagerProxy::requestUserMediaPermissionForFrame): (WebKit::UserMediaPermissionRequestManagerProxy::enumerateMediaDevicesForFrame):

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

12:48 AM Changeset in webkit [242847] by Fujii Hironori
  • 5 edits in trunk/Source

[Win][PlayStation] Remove WebCore::standardUserAgentForURL
https://bugs.webkit.org/show_bug.cgi?id=195662

Reviewed by Ryosuke Niwa.

Source/WebCore:

WebCore::standardUserAgentForURL is just a stub in Windows port.

No new tests because there is no behavior change.

  • platform/win/UserAgentWin.cpp:

(WebCore::standardUserAgentForURL): Deleted.

  • platform/playstation/UserAgentPlayStation.cpp:

(WebCore::standardUserAgentForURL): Deleted.

Source/WebKit:

  • WebProcess/WebPage/win/WebPageWin.cpp:

(WebKit::WebPage::platformUserAgent const): Return an empty string as well as mac/ios ports.

12:05 AM Changeset in webkit [242846] by bshafiei@apple.com
  • 2 edits in branches/safari-607-branch/Source/WebCore

Cherry-pick r242770. rdar://problem/48795265

REGRESSION(r236281): YouTube Movies fail with "video format" error
https://bugs.webkit.org/show_bug.cgi?id=195598
<rdar://problem/48782842>

Reviewed by Jon Lee.

Partially revert r236281 for YouTube.com.

  • page/Quirks.cpp: (WebCore::Quirks::hasBrokenEncryptedMediaAPISupportQuirk const):

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

12:05 AM Changeset in webkit [242845] by bshafiei@apple.com
  • 2 edits in branches/safari-607-branch/Source/WebKit

Cherry-pick r242394. rdar://problem/48591282

Cherry-pick r242394. rdar://problem/48591281

Unreviewed build fix after r242378

  • UIProcess/ios/EditableImageController.mm: (WebKit::EditableImageController::associateWithAttachment):

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

git-svn-id: https://svn.webkit.org/repository/webkit/branches/safari-607.1.40.0-branch@242502 268f45cc-cd09-0410-ab3c-d52691b4dbfc

12:05 AM Changeset in webkit [242844] by bshafiei@apple.com
  • 5 edits in branches/safari-607-branch/Source/WebKit

Cherry-pick r242378. rdar://problem/48591282

Cherry-pick r242378. rdar://problem/48591281

Check contextIDs when handling WebContent messages
https://bugs.webkit.org/show_bug.cgi?id=195289
<rdar://problem/48475870>

Reviewed by Alex Christensen.

The WebContent process is untrusted because it handles arbitrary markup and javascript from untrusted sources.
We should handle its messages with suspicion, and make sure the arguments are valid and usable before honoring them.

This patch hardens the message passing layer by performing MESSAGE_CHECK in places that had been overlooked.

  • UIProcess/Cocoa/PlaybackSessionManagerProxy.mm: (WebKit::PlaybackSessionManagerProxy::setUpPlaybackControlsManagerWithID): (WebKit::PlaybackSessionManagerProxy::currentTimeChanged): (WebKit::PlaybackSessionManagerProxy::bufferedTimeChanged): (WebKit::PlaybackSessionManagerProxy::seekableRangesVectorChanged): (WebKit::PlaybackSessionManagerProxy::canPlayFastReverseChanged): (WebKit::PlaybackSessionManagerProxy::audioMediaSelectionOptionsChanged): (WebKit::PlaybackSessionManagerProxy::legibleMediaSelectionOptionsChanged): (WebKit::PlaybackSessionManagerProxy::audioMediaSelectionIndexChanged): (WebKit::PlaybackSessionManagerProxy::legibleMediaSelectionIndexChanged): (WebKit::PlaybackSessionManagerProxy::externalPlaybackPropertiesChanged): (WebKit::PlaybackSessionManagerProxy::wirelessVideoPlaybackDisabledChanged): (WebKit::PlaybackSessionManagerProxy::mutedChanged): (WebKit::PlaybackSessionManagerProxy::volumeChanged): (WebKit::PlaybackSessionManagerProxy::durationChanged): (WebKit::PlaybackSessionManagerProxy::playbackStartedTimeChanged): (WebKit::PlaybackSessionManagerProxy::rateChanged): (WebKit::PlaybackSessionManagerProxy::pictureInPictureSupportedChanged): (WebKit::PlaybackSessionManagerProxy::pictureInPictureActiveChanged): (WebKit::PlaybackSessionManagerProxy::handleControlledElementIDResponse const):
  • UIProcess/Cocoa/UserMediaCaptureManagerProxy.cpp: (WebKit::UserMediaCaptureManagerProxy::createMediaSourceForCaptureDeviceWithConstraints): (WebKit::UserMediaCaptureManagerProxy::startProducingData): (WebKit::UserMediaCaptureManagerProxy::stopProducingData): (WebKit::UserMediaCaptureManagerProxy::end): (WebKit::UserMediaCaptureManagerProxy::capabilities): (WebKit::UserMediaCaptureManagerProxy::setMuted): (WebKit::UserMediaCaptureManagerProxy::applyConstraints):
  • UIProcess/Cocoa/VideoFullscreenManagerProxy.mm: (WebKit::VideoFullscreenManagerProxy::setupFullscreenWithID): (WebKit::VideoFullscreenManagerProxy::setHasVideo): (WebKit::VideoFullscreenManagerProxy::setVideoDimensions): (WebKit::VideoFullscreenManagerProxy::enterFullscreen): (WebKit::VideoFullscreenManagerProxy::exitFullscreen): (WebKit::VideoFullscreenManagerProxy::exitFullscreenWithoutAnimationToMode): (WebKit::VideoFullscreenManagerProxy::setInlineRect): (WebKit::VideoFullscreenManagerProxy::setHasVideoContentLayer): (WebKit::VideoFullscreenManagerProxy::cleanupFullscreen): (WebKit::VideoFullscreenManagerProxy::preparedToReturnToInline): (WebKit::VideoFullscreenManagerProxy::preparedToExitFullscreen):
  • UIProcess/ios/EditableImageController.mm: (WebKit::EditableImageController::didCreateEditableImage): (WebKit::EditableImageController::didDestroyEditableImage): (WebKit::EditableImageController::associateWithAttachment):

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

git-svn-id: https://svn.webkit.org/repository/webkit/branches/safari-607.1.40.0-branch@242501 268f45cc-cd09-0410-ab3c-d52691b4dbfc

12:05 AM Changeset in webkit [242843] by bshafiei@apple.com
  • 2 edits in branches/safari-607-branch/Source/WebKit

Cherry-pick r242629. rdar://problem/48716552

Crash under RemoteLayerTreePropertyApplier::applyProperties
https://bugs.webkit.org/show_bug.cgi?id=195448
<rdar://problem/48588226>

Reviewed by Simon Fraser.

  • UIProcess/RemoteLayerTree/RemoteLayerTreeHost.mm: (WebKit::RemoteLayerTreeHost::updateLayerTree): Under some currently-unknown circumstances, the UI process is receiving commits referring to layers that it does not know about. One understood case of this was fixed in r241899, but there seem to be cases remaining that are not understood. Also, add a release log so that we can identify any downstream effects.

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

Mar 12, 2019:

9:24 PM Changeset in webkit [242842] by Ross Kirsling
  • 31 edits in trunk

[Win] Fix a slew of simple clang-cl warnings.
https://bugs.webkit.org/show_bug.cgi?id=195652

Reviewed by Don Olmstead.

Source/WebCore:

  • page/AutoscrollController.cpp:

(WebCore::AutoscrollController::handleMouseReleaseEvent): -Wswitch

  • platform/network/curl/CurlContext.cpp:

(WebCore::CurlHandle::willSetupSslCtx):
(WebCore::CurlHandle::appendRequestHeaders): -Wunused-variable

  • platform/network/curl/CurlFormDataStream.cpp:

(WebCore::CurlFormDataStream::computeContentLength): -Wunused-variable

  • platform/network/curl/CurlRequest.cpp:

(WebCore::CurlRequest::CurlRequest): -Wreorder
(WebCore::CurlRequest::setupTransfer): -Wunused-variable

  • platform/network/curl/CurlSSLVerifier.cpp:

(WebCore::CurlSSLVerifier::CurlSSLVerifier):

  • platform/network/curl/CurlSSLVerifier.h: -Wunused-private-field
  • platform/win/LoggingWin.cpp:

(WebCore::logLevelString): -Wwritable-strings

  • rendering/RenderThemeWin.cpp: -Wunused-const-variable (x2)

(WebCore::RenderThemeWin::getThemeData): -Wswitch

Source/WebCore/PAL:

  • pal/win/LoggingWin.cpp:

(PAL::logLevelString): -Wwritable-strings

Source/WebKit:

  • NetworkProcess/curl/NetworkDataTaskCurl.cpp:

(WebKit::NetworkDataTaskCurl::invokeDidReceiveResponse): -Wswitch

  • Platform/IPC/win/ConnectionWin.cpp:

(IPC::Connection::readEventHandler): -Wunused-variable

  • Platform/win/LoggingWin.cpp:

(WebKit::logLevelString): -Wwritable-strings

  • UIProcess/Launcher/win/ProcessLauncherWin.cpp:

(WebKit::ProcessLauncher::launchProcess): -Wunused-variable

Source/WebKitLegacy/win:

  • Interfaces/AccessibleComparable.idl: -Wmissing-braces
  • Plugins/PluginDatabaseWin.cpp: -Wunused-function

(WebCore::addJavaPluginDirectory): Deleted.

  • WebCoreSupport/AcceleratedCompositingContext.cpp:

(AcceleratedCompositingContext::AcceleratedCompositingContext): -Wreorder

  • WebCoreSupport/WebEditorClient.cpp:

(WebEditorUndoCommand::WebEditorUndoCommand): -Wreorder
(undoNameForEditAction): -Wswitch

  • WebCoreSupport/WebFrameLoaderClient.cpp:

(WebFrameLoaderClient::WebFrameLoaderClient): -Wswitch
(WebFrameLoaderClient::updateGlobalHistoryRedirectLinks): -Wunused-variable

  • WebCoreSupport/WebInspectorClient.cpp:

(WebInspectorFrontendClient::WebInspectorFrontendClient): -Wreorder

  • WebCoreSupport/WebInspectorClient.h: -Winconsistent-missing-override
  • WebError.cpp:

(WebError::WebError): -Wreorder

  • WebFrame.cpp:

(WebFrame::stringByEvaluatingJavaScriptInScriptWorld): -Wlogical-op-parentheses

  • WebHistory.cpp: -Wunused-function (x5)

(areEqualOrClose): Deleted.
(addDayToSystemTime): Deleted.
(getDayBoundaries): Deleted.
(beginningOfDay): Deleted.
(dateKey): Deleted.

  • WebNotificationCenter.cpp:

(WebNotificationCenter::removeObserver): -Wunused-variable

  • WebView.cpp: -Wunused-function, -Wreorder

(WebView::addVisitedLinks): -Wunused-variable

Tools:

  • WebKitTestRunner/win/PlatformWebViewWin.cpp:

(WTR::PlatformWebView::windowSnapshotImage): -Wunused-variable

7:34 PM Changeset in webkit [242841] by ysuzuki@apple.com
  • 3 edits
    1 add in trunk

[JSC] OSR entry should respect abstract values in addition to flush formats
https://bugs.webkit.org/show_bug.cgi?id=195653

Reviewed by Mark Lam.

JSTests:

  • stress/osr-entry-locals-none.js: Added.

Source/JavaScriptCore:

Let's consider the following graph.

Block #0

...
27:< 2:loc13> JSConstant(JS|UseAsOther, StringIdent, Strong:String (atomic) (identifier): , StructureID: 42679, bc#10, ExitValid)
...
28:< 2:loc13> ArithPow(DoubleRep:@437<Double>, Int32:@27, Double|UseAsOther, BytecodeDouble, Exits, bc#10, ExitValid)
29:<!0:-> MovHint(DoubleRep:@28<Double>, MustGen, loc7, W:SideState, ClobbersExit, bc#10, ExitValid)
30:< 1:-> SetLocal(DoubleRep:@28<Double>, loc7(M<Double>/FlushedDouble), machine:loc6, W:Stack(-8), bc#10, exit: bc#14, ExitValid) predicting BytecodeDouble
...
73:<!0:-> Jump(MustGen, T:#1, W:SideState, bc#71, ExitValid)

Block #1 (bc#71): (OSR target) pred, #0

...

102:<!2:loc15> GetLocal(Check:Untyped:@400, Double|MustGen|PureInt, BytecodeDouble, loc7(M<Double>/FlushedDouble), machine:loc6, R:Stack(-8), bc#120, ExitValid) predicting BytecodeDouble

...

CFA at @28 says it is invalid since there are type contradiction (Int32:@27 v.s. StringIdent). So, of course, we do not propagate #0's type information to #1 since we become invalid state.
However, #1 is still reachable since it is an OSR target. Since #0 was only the predecessor of #1, loc7's type information becomes None at the head of #1.
Since loc7's AbstractValue is None, @102 GetLocal emits breakpoint. It is OK as long as OSR entry fails because AbstractValue validation requires the given value is None type.

The issue here is that we skipped AbstractValue validation when we have FlushFormat information. Since loc7 has FlushedDouble format, DFG OSR entry code does not validate it against AbstractValue,
which is None. Then, we hit the breakpoint emitted by @102.

This patch performs AbstractValue validation against values even if we have FlushFormat. We should correctly configure AbstractValue for OSR entry's locals too to avoid unnecessary OSR entry
failures in the future but anyway validating locals with AbstractValue is correct behavior here since DFGSpeculativeJIT relies on that.

  • dfg/DFGOSREntry.cpp:

(JSC::DFG::prepareOSREntry):

7:31 PM Changeset in webkit [242840] by rniwa@webkit.org
  • 12 edits in trunk/Source

Move the code for determining the need for touch bar quirks to Quirks class
https://bugs.webkit.org/show_bug.cgi?id=195654

Reviewed by Brent Fulgham.

Source/WebCore:

Moved the code to determine whether the touch bar quirks are needed or not from WebKit2.

  • WebCore.xcodeproj/project.pbxproj:
  • page/Quirks.cpp:

(WebCore::Quirks::isTouchBarUpdateSupressedForHiddenContentEditable const):
(WebCore::Quirks::isNeverRichlyEditableForTouchBar const):

  • page/Quirks.h:

Source/WebKit:

Moved the code to determine whether touch bar quirks are needed or not to WebCore.

Also renamed HiddenContentEditableQuirk to IsTouchBarUpdateSupressedForHiddenContentEditable
and PlainTextQuirk to NeverRichlyEditableForTouchBar.

  • UIProcess/Cocoa/WebViewImpl.h:

(WebKit::WebViewImpl::isRichlyEditableForTouchBar): Renamed.

  • UIProcess/Cocoa/WebViewImpl.mm:

(WebKit::WebViewImpl::updateTouchBar):
(WebKit::WebViewImpl::candidateListTouchBarItem const):
(WebKit::WebViewImpl::isRichlyEditableForTouchBar const): Renamed from isRichlyEditable.
(WebKit::WebViewImpl::textTouchBar const):
(WebKit::WebViewImpl::updateTextTouchBar):

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::setIsTouchBarUpdateSupressedForHiddenContentEditable): Renamed from
setNeedsHiddenContentEditableQuirk.
(WebKit::WebPageProxy::setIsNeverRichlyEditableForTouchBar): Renamed from setNeedsPlainTextQuirk.

  • UIProcess/WebPageProxy.h:

(WebKit::WebPageProxy::isTouchBarUpdateSupressedForHiddenContentEditable const): Renamed from
needsHiddenContentEditableQuirk.
(WebKit::WebPageProxy::isNeverRichlyEditableForTouchBar const): Renamed from needsPlainTextQuirk.

  • UIProcess/WebPageProxy.messages.in: Renamed the IPC messages.
  • WebProcess/WebPage/WebPage.cpp:

(WebKit::needsHiddenContentEditableQuirk): Deleted. Moved to WebCore.
(WebKit::needsPlainTextQuirk): Deleted. Moved to WebCore.
(WebKit::WebPage::didStartPageTransition):
(WebKit::WebPage::didChangeSelection):

  • WebProcess/WebPage/WebPage.h:

(WebKit::WebPage):

6:33 PM Changeset in webkit [242839] by Justin Fan
  • 53 edits
    1 copy
    5 moves
    6 deletes in trunk

[Web GPU] Update GPURenderPipelineDescriptor and add GPUColorStateDescriptor.format
https://bugs.webkit.org/show_bug.cgi?id=195518
<rdar://problem/46322356>

Reviewed by Myles C. Maxfield.

Source/WebCore:

Upgrade the implementation of GPURenderPipelineDescriptor and GPURenderPipeline and match the updated Web GPU API.
Add stubs for GPUColorStateDescriptor so attachment format can be provided by GPURenderPipelineDescriptor.

All affected Web GPU tests updated to cover existing behavior.

Update file names and symbols:

  • CMakeLists.txt:
  • DerivedSources-input.xcfilelist:
  • DerivedSources-output.xcfilelist:
  • DerivedSources.make:
  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • bindings/js/WebCoreBuiltinNames.h:

Updates to GPURenderPipeline, GPURenderPipelineDescriptor, and its components:

  • Modules/webgpu/GPUColorStateDescriptor.idl: Added. Provide the expected texture format of the render pipeline's color attachments.
  • Modules/webgpu/GPUInputStateDescriptor.idl: Renamed from Source/WebCore/Modules/webgpu/WebGPUInputStateDescriptor.idl.
  • Modules/webgpu/GPUTextureFormat.idl: Update the existing values to match the new style.
  • Modules/webgpu/GPUVertexAttributeDescriptor.idl: Renamed from Source/WebCore/Modules/webgpu/WebGPUVertexAttributeDescriptor.idl.
  • Modules/webgpu/GPUVertexInputDescriptor.idl: Renamed from Source/WebCore/Modules/webgpu/WebGPUVertexInputDescriptor.idl.
  • Modules/webgpu/WebGPUDevice.cpp:

(WebCore::WebGPUDevice::createPipelineLayout const): Remove unnecessary comment.
(WebCore::WebGPUDevice::createRenderPipeline const): Descriptor validation and conversion moved into WebGPURenderPipelineDescriptor.
(WebCore::validateAndConvertPipelineStage): Deleted.

  • Modules/webgpu/WebGPUDevice.h: create* functions should not return nullable.
  • Modules/webgpu/WebGPUIndexFormat.h: Removed. Moved into GPUInputStateDescriptor.idl.
  • Modules/webgpu/WebGPUInputStateDescriptor.h: Removed.
  • Modules/webgpu/WebGPUInputStepMode.idl: Removed. Moved into GPUVertexInputDescriptor.idl.
  • Modules/webgpu/WebGPUPipelineLayout.h:

(WebCore::WebGPUPipelineLayout::pipelineLayout): Getters should return raw references.

  • Modules/webgpu/WebGPUPipelineStageDescriptor.h: Now shares a common base with GPUPipelineStageDescriptor.
  • Modules/webgpu/WebGPURenderPipeline.cpp:

(WebCore::WebGPURenderPipeline::create):
(WebCore::WebGPURenderPipeline::WebGPURenderPipeline):

  • Modules/webgpu/WebGPURenderPipeline.h: Now internally nullable.

(WebCore::WebGPURenderPipeline::renderPipeline const):
(WebCore::WebGPURenderPipeline::renderPipeline): Deleted.

  • Modules/webgpu/WebGPURenderPipelineDescriptor.cpp:

(WebCore::WebGPUPipelineStageDescriptor::asGPUPipelineStageDescriptor const): Validate and convert a WebGPUPipelineStageDescriptor to GPU version.
(WebCore::WebGPURenderPipelineDescriptor::asGPURenderPipelineDescriptor const): Ditto for WebGPURenderPipelineDescriptor.

  • Modules/webgpu/WebGPURenderPipelineDescriptor.h: Now shares a base class and some instance variables with GPURenderPipelineDescriptor.
  • Modules/webgpu/WebGPURenderPipelineDescriptor.idl: Update GPUPrimitiveTopology for new style and add colorStates.
  • Modules/webgpu/WebGPUShaderModule.idl: Small pilot to test using InterfaceName to easily rename DOM-facing interfaces.
  • Modules/webgpu/WebGPUVertexAttributeDescriptor.h: Removed.
  • Modules/webgpu/WebGPUVertexFormat.idl: Removed. Moved and updated in GPUVertexAttributeDescriptor.idl.
  • Modules/webgpu/WebGPUVertexInputDescriptor.h: Removed.
  • platform/graphics/gpu/GPUInputStateDescriptor.h:
  • platform/graphics/gpu/GPUPipelineStageDescriptor.h:

(WebCore::GPUPipelineStageDescriptor::GPUPipelineStageDescriptor):

  • platform/graphics/gpu/GPURenderPipelineDescriptor.h: Add shared base class for Web/GPURenderPipelineDescriptor.

(WebCore::GPURenderPipelineDescriptor::GPURenderPipelineDescriptor):

  • platform/graphics/gpu/GPUTextureFormat.h:
  • platform/graphics/gpu/GPUVertexAttributeDescriptor.h:
  • platform/graphics/gpu/GPUVertexInputDescriptor.h:
  • platform/graphics/gpu/cocoa/GPURenderPipelineMetal.mm:

(WebCore::setFunctionsForPipelineDescriptor): Make fragment required since descriptor validation fails if fragment function is not found right now.
(WebCore::mtlVertexFormatForGPUVertexFormat): Renamed from validateAndConvertVertexFormatToMTLVertexFormat.
(WebCore::mtlStepFunctionForGPUInputStepMode): Renamed from validateAndConvertStepModeToMTLStepFunction
(WebCore::trySetInputStateForPipelineDescriptor):
(WebCore::trySetColorStatesForColorAttachmentArray):
(WebCore::tryCreateMtlRenderPipelineState):
(WebCore::GPURenderPipeline::create):
(WebCore::validateAndConvertVertexFormatToMTLVertexFormat): Deleted.
(WebCore::validateAndConvertStepModeToMTLStepFunction): Deleted.

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

(WebCore::platformTextureFormatForGPUTextureFormat):

  • platform/graphics/gpu/GPUColorStateDescriptor.h: Added.

Misc:

  • Modules/webgpu/WebGPUProgrammablePassEncoder.cpp:

(WebCore::WebGPUProgrammablePassEncoder::setPipeline):

  • Modules/webgpu/WebGPUProgrammablePassEncoder.h:
  • platform/graphics/gpu/GPUProgrammablePassEncoder.h:
  • platform/graphics/gpu/GPURenderPassEncoder.h:
  • platform/graphics/gpu/GPURenderPipeline.h:

(WebCore::GPURenderPipeline::primitiveTopology const):

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

(WebCore::GPURenderPassEncoder::setPipeline):
(WebCore::primitiveTypeForGPUPrimitiveTopology):

Tools:

  • DumpRenderTree/DerivedSources-input.xcfilelist:
  • DumpRenderTree/DerivedSources-output.xcfilelist:

LayoutTests:

Update all tests with new enum styles and re-namings, and specify the format of the color attachment.

  • webgpu/blit-commands.html:
  • webgpu/buffer-command-buffer-races.html:
  • webgpu/buffer-resource-triangles.html:
  • webgpu/depth-enabled-triangle-strip.html:
  • webgpu/js/webgpu-functions.js:

(createBasicSwapChain):
(createBasicDepthTexture):

  • webgpu/render-pipelines-expected.txt:
  • webgpu/render-pipelines.html: Remove error cases, as createRenderPipeline no longer returns a null value on failure.
  • webgpu/shader-modules.html:
  • webgpu/texture-triangle-strip.html:
  • webgpu/textures-textureviews.html:
  • webgpu/vertex-buffer-triangle-strip.html:
6:26 PM Changeset in webkit [242838] by msaboff@apple.com
  • 3 edits
    1 add in trunk

REGRESSION (iOS 12.2): Webpage using CoffeeScript crashes
https://bugs.webkit.org/show_bug.cgi?id=195613

Reviewed by Mark Lam.

JSTests:

New regression test.

  • stress/regexp-backref-inbounds.js: Added.

(testRegExp):

Source/JavaScriptCore:

The bug here is in Yarr JIT backreference matching code. We are incorrectly
using a checkedOffset / inputPosition correction when checking for the available
length left in a string. It is improper to do these corrections as a backreference's
match length is based on what was matched in the referenced capture group and not
part of the checkedOffset and inputPosition computed when we compiled the RegExp.
In some cases, the resulting incorrect calculation would allow us to go past
the subject string's length. Removed these adjustments.

After writing tests for the first bug, found another bug where the non-greedy
backreference backtracking code didn't do an "are we at the end of the input?" check.
This caused an infinite loop as we'd jump from the backtracking code back to
try matching one more backreference, fail and then backtrack.

  • yarr/YarrJIT.cpp:

(JSC::Yarr::YarrGenerator::generateBackReference):
(JSC::Yarr::YarrGenerator::backtrackBackReference):

6:19 PM Changeset in webkit [242837] by bshafiei@apple.com
  • 1 copy in tags/Safari-607.1.40.1.4

Tag Safari-607.1.40.1.4.

5:36 PM Changeset in webkit [242836] by jiewen_tan@apple.com
  • 6 edits in trunk/Source/WebKit

Add WebFrameProxy::loadData
https://bugs.webkit.org/show_bug.cgi?id=195647
<rdar://problem/48826856>

Reviewed by Youenn Fablet.

This patch adds WebFrameProxy::loadData which is a simplified version of WebPageProxy::loadData that
loads substitute data to an iframe. This is needed by the Load Optimizer.

  • UIProcess/WebFrameProxy.cpp:

(WebKit::WebFrameProxy::loadData):

  • UIProcess/WebFrameProxy.h:
  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::loadDataInFrame):

  • WebProcess/WebPage/WebPage.h:
  • WebProcess/WebPage/WebPage.messages.in:
5:15 PM Changeset in webkit [242835] by rniwa@webkit.org
  • 2 edits in trunk/Source/WebKitLegacy/mac

Remove a site specific hack for AppleConnect plugin
https://bugs.webkit.org/show_bug.cgi?id=195643

Reviewed by Simon Fraser.

r66437 added a workaround for AppleConnect plugin.

Remove this code since Safari doesn't even use WebKitLegacy anymore,
and other WebKit clients support AppleConnect plugins.

  • WebCoreSupport/WebFrameLoaderClient.mm:

(WebFrameLoaderClient::createPlugin):

5:12 PM Changeset in webkit [242834] by Alan Bujtas
  • 3 edits in trunk/Source/WebCore

[ContentChangeObserver] Reset state when touchStart does not turn into click.
https://bugs.webkit.org/show_bug.cgi?id=195603
<rdar://problem/48796582>

Reviewed by Simon Fraser.

Add reset() function to assert and reset the current state.

  • page/ios/ContentChangeObserver.cpp:

(WebCore::ContentChangeObserver::willNotProceedWithClick):
(WebCore::ContentChangeObserver::adjustObservedState):

  • page/ios/ContentChangeObserver.h:
4:51 PM Changeset in webkit [242833] by Wenson Hsieh
  • 9 edits
    2 adds in trunk

[iOS] Input view sometimes flickers when blurring and refocusing an element
https://bugs.webkit.org/show_bug.cgi?id=195639
<rdar://problem/48735337>

Reviewed by Tim Horton.

Source/WebKit:

On iOS, if a focused element is blurred and immediately refocused in the scope of user interaction, we will end
up reloading interaction state (input views, autocorrection contexts, etc.) in the UI process. On certain well-
trafficked websites, this results in the input view and input accessory view flickering (or more egregiously,
scrolling to re-reveal the focused element) when changing selection.

To fix the issue, this patch refactors some focus management logic to suppress sending focused element updates
to the UI process in the case where the same element is being blurred and immediately refocused. To do this, we
track the most recently blurred element and bail when the recently blurred element is identical to the newly
focused element. See below for more detail.

Test: fast/forms/ios/keyboard-stability-when-refocusing-element.html

  • UIProcess/WebPageProxy.h:
  • UIProcess/ios/WKContentViewInteraction.mm:

(-[WKContentView _elementDidFocus:userIsInteracting:blurPreviousNode:changingActivityState:userObject:]):
(-[WKContentView _elementDidBlur]):

Update the web process' notion of whether an input view is showing. Importantly, this accounts for decisions
made by _WKUIDelegate. See below for more details.

(isAssistableInputType): Deleted.

Removed this helper function; this was only used in one place as a sanity check that the focused element's type
is not none, right before attempting to show an input view. Instead, we can just check the focused element's
type directly against InputType::None in the if statement of the early return.

  • UIProcess/ios/WebPageProxyIOS.mm:

(WebKit::WebPageProxy::setIsShowingInputViewForFocusedElement):

Add a hook to notify the web process when an input view is showing or not (see below for more detail).

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::didStartPageTransition):
(WebKit::WebPage::elementDidRefocus):
(WebKit::WebPage::shouldDispatchUpdateAfterFocusingElement const):

Add a helper to determine whether we notify the UI process about a newly focused element. On macOS, this is true
only when the new focused element is neither the currently focused element, nor the focused element that was
just blurred. On iOS, we have an additional constraint that when the input view is not showing, we still need to
notify the UI process, since the UI process might want to begin showing the keyboard for an element that has
only been programmatically focused, for which we aren't currently showing the input view.

(WebKit::WebPage::elementDidFocus):
(WebKit::WebPage::elementDidBlur):

Replace a couple of existing member variables in WebPage used for focus management:

  • Replace m_hasPendingBlurNotification with m_recentlyBlurredElement, a RefPtr to the Element that is being

blurred. Behavior here is the same as before (i.e. having a pending blur notification is equivalent to
having recently blurred a focused element). However, this allows us to check newly focused elements against
the recently blurred element in WebPage::elementDidFocus().

  • Replace m_isFocusingElementDueToUserInteraction with m_isShowingInputViewForFocusedElement. The flag

m_isFocusingElementDueToUserInteraction was originally added to fix <webkit.org/b/146735>, by ensuring that
we don't send redundant ElementDidFocus (formerly, StartAssistingNode) messages to the UI process even when
the keyboard is already up. In these simpler times, user interaction when focusing an element was equivalent
to showing an input view for the focused element. However, in today's world, there are a variety of reasons
why we might or might not show an input view for a given element (including, but not limited to activity
state changes and decisions made by _WKInputDelegate). As such, it doesn't make sense to continue relying on
m_isFocusingElementDueToUserInteraction in this early return. Instead, have the UI process propagate a
message back to the web process, to let it know whether there is a keyboard showing, and use this flag
instead.

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

(WebKit::WebPage::setIsShowingInputViewForFocusedElement):

LayoutTests:

Add a test to ensure that the form control interaction doesn't stop and start again when blurring and focusing
an editable element.

  • fast/forms/ios/keyboard-stability-when-refocusing-element-expected.txt: Added.
  • fast/forms/ios/keyboard-stability-when-refocusing-element.html: Added.
3:49 PM Changeset in webkit [242832] by commit-queue@webkit.org
  • 3 edits in trunk/Tools

Unreviewed, rolling out r242825.
https://bugs.webkit.org/show_bug.cgi?id=195648

"Broke webkitpy tests with my change to
lldb_dump_class_layout.py" (Requested by rmorisset on
#webkit).

Reverted changeset:

"Alter Tools/Scripts/dump-class-layout to be able to dump all
classes with suspicious padding"
https://bugs.webkit.org/show_bug.cgi?id=195573
https://trac.webkit.org/changeset/242825

3:42 PM Changeset in webkit [242831] by timothy@apple.com
  • 5 edits in trunk/Source/WebCore

Expose document attributes and body background color through HTMLConverter.
https://bugs.webkit.org/show_bug.cgi?id=195636
rdar://problem/45055697

Reviewed by Tim Horton.

Source/WebCore:

  • editing/cocoa/HTMLConverter.h:
  • editing/cocoa/HTMLConverter.mm:

(HTMLConverter::convert):
(WebCore::attributedStringFromRange):
(WebCore::attributedStringFromSelection):
(WebCore::attributedStringBetweenStartAndEnd):

Source/WebCore/PAL:

  • pal/spi/cocoa/NSAttributedStringSPI.h:

(NSBackgroundColorDocumentAttribute): Added.

3:35 PM Changeset in webkit [242830] by Antti Koivisto
  • 3 edits in trunk/Source/WebCore

Compositing layer that renders two positioned elements should not hit test
https://bugs.webkit.org/show_bug.cgi?id=195371
<rdar://problem/48649586>

Reviewed by Simon Fraser.

Followup to fix the test case (fast/scrolling/ios/overflow-scroll-overlap-2.html)

  • platform/graphics/ca/GraphicsLayerCA.cpp:

(WebCore::GraphicsLayerCA::setEventRegion):

Revert a last minute change (that was done to fix a Mac displaylist test).

  • rendering/RenderLayerBacking.cpp:

(WebCore::RenderLayerBacking::paintIntoLayer):

Compute the region on iOS only for now (it is not used on other platforms).

2:47 PM Changeset in webkit [242829] by Devin Rousso
  • 7 edits
    1 copy in trunk/Source/WebInspectorUI

Web Inspector: Sources: allow image collections to be filtered by type
https://bugs.webkit.org/show_bug.cgi?id=195630

Reviewed by Matt Baker.

  • UserInterface/Views/ResourceCollectionContentView.js:

(WI.ResourceCollectionContentView):
(WI.ResourceCollectionContentView.prototype.get navigationItems): Added.
(WI.ResourceCollectionContentView.prototype.contentViewAdded):
(WI.ResourceCollectionContentView.prototype.contentViewRemoved): Added.
(WI.ResourceCollectionContentView.prototype._updateImageTypeScopeBar): Added.
(WI.ResourceCollectionContentView.prototype._handleImageTypeSelectionChanged): Added.

  • UserInterface/Views/ResourceCollectionContentView.css: Asdded.

(.resource-collection-image-type-scope-bar.default-item-selected):

  • UserInterface/Views/CollectionContentView.css:

(.content-view.collection > .content-view[hidden]): Added.

  • UserInterface/Views/ScopeBarItem.js:

(WI.ScopeBarItem.prototype.set hidden):

  • UserInterface/Views/MultipleScopeBarItem.js:

(WI.MultipleScopeBarItem.prototype.set scopeBarItems):
(WI.MultipleScopeBarItem.prototype.set selectedScopeBarItem):
(WI.MultipleScopeBarItem.prototype.get _visibleScopeBarItems): Added.
(WI.MultipleScopeBarItem.prototype._selectElementSelectionChanged):
(WI.MultipleScopeBarItem.prototype._handleItemHiddenChanged): Added.
Dispatch an event when an item is hidden so that any owner WI.MultipleScopeBarItem can
rerender it's <select> without that item.

  • Localizations/en.lproj/localizedStrings.js:
  • UserInterface/Main.html:
2:03 PM Changeset in webkit [242828] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WTF

Unreviewed, rolling out r242747.
https://bugs.webkit.org/show_bug.cgi?id=195641

Performance measurement is difficult in this period, rolling
out it and rolling in later to isolate it from the other
sensitive patches (Requested by yusukesuzuki on #webkit).

Reverted changeset:

"[JSC] Make StaticStringImpl & StaticSymbolImpl actually
static"
https://bugs.webkit.org/show_bug.cgi?id=194212
https://trac.webkit.org/changeset/242747

1:58 PM Changeset in webkit [242827] by aakash_jain@apple.com
  • 2 edits in trunk/Tools

[ews-build] Show status bubbles while the patch is waiting in queue
https://bugs.webkit.org/show_bug.cgi?id=195618

Reviewed by Lucas Forschler.

  • BuildSlaveSupport/ews-app/ews/views/statusbubble.py:

(StatusBubble): Added ALL_QUEUES and ENABLED_QUEUES. Only certain queues are
enabled in initial deployment.
(StatusBubble._build_bubble): Display bubble even when build hasn't started.
(StatusBubble.get_latest_build_for_queue): Get latest build for a given queue.
(StatusBubble.get_builds_for_queue): Get all builds for a given queue.
(StatusBubble._should_show_bubble_for): Display bubble for only ENABLED_QUEUES for now.
(StatusBubble._build_bubbles_for_patch):

1:57 PM Changeset in webkit [242826] by dino@apple.com
  • 3 edits
    2 adds in trunk

[WebGL] WebGLBuffer can be too large
https://bugs.webkit.org/show_bug.cgi?id=195068
<rdar://problem/48414289>

Reviewed by Antoine Quint.

Source/WebCore:

When creating an element array buffer, make sure to
test against the maximum size of an ArrayBuffer, rather
than just assume it can be created.

Test: fast/canvas/webgl/largeBuffer.html

  • html/canvas/WebGLBuffer.cpp:

(WebCore::WebGLBuffer::associateBufferDataImpl):

LayoutTests:

  • fast/canvas/webgl/largeBuffer-expected.txt: Added.
  • fast/canvas/webgl/largeBuffer.html: Added.
1:55 PM Changeset in webkit [242825] by rmorisset@apple.com
  • 3 edits in trunk/Tools

Alter Tools/Scripts/dump-class-layout to be able to dump all classes with suspicious padding
https://bugs.webkit.org/show_bug.cgi?id=195573

Reviewed by Simon Fraser.

Also modified the script so that when multiple types match a given name it shows them all and not arbitrarily pick one.

  • Scripts/dump-class-layout:

(main):

  • lldb/lldb_dump_class_layout.py:

(ClassLayout.init):
(ClassLayout._compute_padding_recursive):
(LLDBDebuggerInstance.dump_layout_for_classname):
(LLDBDebuggerInstance):
(LLDBDebuggerInstance.dump_all_wasteful_layouts):
(LLDBDebuggerInstance.layout_for_classname): Deleted.

1:40 PM Changeset in webkit [242824] by timothy_horton@apple.com
  • 2 edits in trunk/Source/WebKit

More attempts at build fixing.

  • UIProcess/ios/WKActionSheetAssistant.mm:

Yet more.

1:32 PM Changeset in webkit [242823] by Chris Dumez
  • 7 edits
    1 add in trunk

Device Orientation access permission should be denied unless explicitly granted by the client
https://bugs.webkit.org/show_bug.cgi?id=195625

Reviewed by Youenn Fablet.

Source/WebKit:

Device Orientation access permission should be denied unless explicitly granted by the client.
Previously, it was granted by default.

  • UIProcess/API/APIUIClient.h:

(API::UIClient::shouldAllowDeviceOrientationAndMotionAccess):

  • UIProcess/API/C/WKPage.cpp:

(WKPageSetPageUIClient):

  • UIProcess/Cocoa/UIDelegate.mm:

(WebKit::UIDelegate::UIClient::shouldAllowDeviceOrientationAndMotionAccess):

Tools:

add API test coverage.

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/WebKitCocoa/DeviceOrientation.mm: Added.

(-[DeviceOrientationMessageHandler userContentController:didReceiveScriptMessage:]):
(-[DeviceOrientationPermissionUIDelegate initWithHandler:]):
(-[DeviceOrientationPermissionUIDelegate _webView:shouldAllowDeviceOrientationAndMotionAccessRequestedByFrame:decisionHandler:]):
(runDeviceOrientationTest):
(TEST):

  • TestWebKitAPI/Tests/WebKitCocoa/WebsitePolicies.mm:

(-[WebsitePoliciesDeviceOrientationUIDelegate _webView:shouldAllowDeviceOrientationAndMotionAccessRequestedByFrame:decisionHandler:]):

1:17 PM Changeset in webkit [242822] by Kocsen Chung
  • 2 edits in branches/safari-607.1.40.0-branch/Source/WebCore

Apply patch. rdar://problem/48795264

1:10 PM Changeset in webkit [242821] by Nikita Vasilyev
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: Keyboard shortcut for settings tab too greedy on non-US keyboards
https://bugs.webkit.org/show_bug.cgi?id=192947
<rdar://problem/46886779>

Reviewed by Devin Rousso.

  • UserInterface/Base/Main.js:

(WI._showSettingsTab):

1:05 PM Changeset in webkit [242820] by Devin Rousso
  • 3 edits in trunk/Source/WebInspectorUI

Web Inspector: Elements: provide node context menu items for event listeners sorted by node
https://bugs.webkit.org/show_bug.cgi?id=195633

Reviewed by Matt Baker.

  • UserInterface/Base/DOMUtilities.js:

(WI.linkifyNodeReferenceElement):
(WI.bindInteractionsForNodeToElement): Added.
Split logic for adding event listeners into a separate function so it can be used on
existing DOM without modifying it.

  • UserInterface/Views/DOMNodeDetailsSidebarPanel.js:

(WI.DOMNodeDetailsSidebarPanel.prototype._refreshEventListeners.generateGroupsByNode):

12:37 PM Changeset in webkit [242819] by jer.noble@apple.com
  • 2 edits in trunk/Tools

Flaky API Test TestWebKitAPI.WebKitLegacy.ScrollingDoesNotPauseMedia
https://bugs.webkit.org/show_bug.cgi?id=195137
<rdar://problem/48810307>

Reviewed by Eric Carlson.

  • TestWebKitAPI/Tests/WebKitLegacy/ios/ScrollingDoesNotPauseMedia.mm:

(TestWebKitAPI::TEST):

12:36 PM Changeset in webkit [242818] by sihui_liu@apple.com
  • 7 edits in trunk

Layout Test imported/w3c/web-platform-tests/IndexedDB/fire-*-event-exception.html are failing
https://bugs.webkit.org/show_bug.cgi?id=195581

LayoutTests/imported/w3c:

Updated test expectations to PASS.

Reviewed by Brady Eidson.

  • web-platform-tests/IndexedDB/fire-error-event-exception-expected.txt:
  • web-platform-tests/IndexedDB/fire-success-event-exception-expected.txt:
  • web-platform-tests/IndexedDB/fire-upgradeneeded-event-exception-expected.txt:

Source/WebCore:

Reviewed by Brady Eidson.

Uncaught exceptions should be handled after IDBRequest dispatches events so that IDBTransaction would stay
active during event dispatch.

  • Modules/indexeddb/IDBRequest.cpp:

(WebCore::IDBRequest::dispatchEvent):
(WebCore::IDBRequest::uncaughtExceptionInEventHandler):

  • Modules/indexeddb/IDBRequest.h:
12:34 PM Changeset in webkit [242817] by aakash_jain@apple.com
  • 4 edits in trunk/Tools

[ews-build] Change urls from uat to production
https://bugs.webkit.org/show_bug.cgi?id=195566

Reviewed by Lucas Forschler.

  • BuildSlaveSupport/ews-app/ews/config.py:
  • BuildSlaveSupport/ews-build/events.py:
  • BuildSlaveSupport/ews-build/steps.py:
12:32 PM Changeset in webkit [242816] by aakash_jain@apple.com
  • 2 edits in trunk/Tools

[ews-build] change max_builds for local-worker to 1
https://bugs.webkit.org/show_bug.cgi?id=195568

Reviewed by Lucas Forschler.

  • BuildSlaveSupport/ews-build/loadConfig.py:
12:28 PM Changeset in webkit [242815] by sihui_liu@apple.com
  • 4 edits in trunk

Layout Test imported/w3c/web-platform-tests/IndexedDB/transaction-abort-request-error.html is failing
https://bugs.webkit.org/show_bug.cgi?id=195570

Reviewed by Brady Eidson.

LayoutTests/imported/w3c:

Updated test expectation to PASS.

  • web-platform-tests/IndexedDB/transaction-abort-request-error-expected.txt:

Source/WebCore:

IDBRequest result should be undefined if it is never set.

  • Modules/indexeddb/IDBRequest.cpp:

(WebCore::IDBRequest::IDBRequest):

12:18 PM Changeset in webkit [242814] by Antti Koivisto
  • 3 edits in trunk/Source/WebKit

[iOS] Enable asynchronous frame scrolling by default
https://bugs.webkit.org/show_bug.cgi?id=195622
<rdar://problem/48658028>

Reviewed by Simon Fraser

  • Shared/WebPreferences.yaml:
  • Shared/WebPreferencesDefaultValues.h:
12:16 PM Changeset in webkit [242813] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

Unreviewed, fix a typo in TestExpecations.

  • platform/mac/TestExpectations:
12:07 PM Changeset in webkit [242812] by rmorisset@apple.com
  • 35 edits in trunk/Source

A lot more classes have padding that can be reduced by reordering their fields
https://bugs.webkit.org/show_bug.cgi?id=195579

Reviewed by Mark Lam.

Source/bmalloc:

  • bmalloc/Heap.h:
  • bmalloc/Scavenger.h:

Source/JavaScriptCore:

  • assembler/LinkBuffer.h:
  • dfg/DFGArrayifySlowPathGenerator.h:

(JSC::DFG::ArrayifySlowPathGenerator::ArrayifySlowPathGenerator):

  • dfg/DFGCallArrayAllocatorSlowPathGenerator.h:

(JSC::DFG::CallArrayAllocatorSlowPathGenerator::CallArrayAllocatorSlowPathGenerator):
(JSC::DFG::CallArrayAllocatorWithVariableSizeSlowPathGenerator::CallArrayAllocatorWithVariableSizeSlowPathGenerator):

  • dfg/DFGGraph.h:
  • dfg/DFGNode.h:

(JSC::DFG::SwitchData::SwitchData):

  • dfg/DFGPlan.cpp:

(JSC::DFG::Plan::Plan):

  • dfg/DFGPlan.h:
  • dfg/DFGSlowPathGenerator.h:

(JSC::DFG::CallSlowPathGenerator::CallSlowPathGenerator):

  • dfg/DFGSpeculativeJIT.cpp:

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

  • dfg/DFGSpeculativeJIT.h:
  • domjit/DOMJITSignature.h:

(JSC::DOMJIT::Signature::Signature):
(JSC::DOMJIT::Signature::effect):
(JSC::DOMJIT::Signature::argumentCount): Deleted.

  • heap/MarkingConstraintSolver.h:
  • heap/SlotVisitor.h:
  • jit/CallFrameShuffleData.h:
  • jit/JITDivGenerator.h:
  • jit/SpillRegistersMode.h:
  • parser/Nodes.h:
  • profiler/ProfilerOSRExit.cpp:

(JSC::Profiler::OSRExit::OSRExit):

  • profiler/ProfilerOSRExit.h:
  • runtime/ArrayBufferView.h:
  • runtime/SamplingProfiler.cpp:

(JSC::SamplingProfiler::SamplingProfiler):

  • runtime/SamplingProfiler.h:
  • runtime/TypeSet.cpp:

(JSC::StructureShape::StructureShape):

  • runtime/TypeSet.h:
  • runtime/Watchdog.h:

Source/WTF:

  • wtf/CrossThreadQueue.h:
  • wtf/Logger.h:
  • wtf/MemoryPressureHandler.h:
  • wtf/MetaAllocator.h:
  • wtf/Threading.cpp:
12:03 PM Changeset in webkit [242811] by Devin Rousso
  • 3 edits in trunk/Source/WebInspectorUI

Web Inspector: DOM Debugger: remove left padding when the last DOM breakpoint is removed
https://bugs.webkit.org/show_bug.cgi?id=195522

Reviewed by Matt Baker.

  • UserInterface/Views/DOMTreeContentView.js:

(WI.DOMTreeContentView.prototype._updateBreakpointStatus):

  • UserInterface/Views/DOMTreeElement.js:

(WI.DOMTreeElement.prototype.get hasBreakpoint): Added.

12:02 PM Changeset in webkit [242810] by mark.lam@apple.com
  • 3 edits
    1 add in trunk

The HasIndexedProperty node does GC.
https://bugs.webkit.org/show_bug.cgi?id=195559
<rdar://problem/48767923>

Reviewed by Yusuke Suzuki.

JSTests:

  • stress/HasIndexedProperty-does-gc.js: Added.

Source/JavaScriptCore:

HasIndexedProperty can call the slow path operationHasIndexedPropertyByInt(),
which can eventually call JSString::getIndex(), which can resolve a rope.

  • dfg/DFGDoesGC.cpp:

(JSC::DFG::doesGC):

11:59 AM Changeset in webkit [242809] by Devin Rousso
  • 12 edits
    2 adds in trunk

Web Inspector: Canvas: export recording as HTML
https://bugs.webkit.org/show_bug.cgi?id=195311
<rdar://problem/48588673>

Reviewed by Joseph Pecoraro.

Source/WebInspectorUI:

  • UserInterface/Models/Recording.js:

(WI.Recording.prototype.async swizzle):
(WI.Recording.prototype.toHTML): Added.
(WI.Recording.prototype.toHTML.escapeHTML): Added.
(WI.Recording.prototype.toHTML.processObject): Added.
(WI.Recording.prototype.toHTML.processValue): Added.

  • UserInterface/Views/RecordingContentView.js:

(WI.RecordingContentView):
(WI.RecordingContentView.prototype._exportRecording):
(WI.RecordingContentView.prototype._exportReduction): Added.
(WI.RecordingContentView.prototype._updateExportButton): Added.
(WI.RecordingContentView.prototype._handleExportNavigationItemClicked): Added.
(WI.RecordingContentView.prototype._handleRecordingProcessedAction):

  • UserInterface/Views/CanvasOverviewContentView.js:

(WI.CanvasOverviewContentView):

  • UserInterface/Views/HeapAllocationsTimelineView.js:

(WI.HeapAllocationsTimelineView):

  • UserInterface/Views/HeapSnapshotContentView.js:

(WI.HeapSnapshotContentView):
Drive-by: s/toolTip/tooltip.

  • Localizations/en.lproj/localizedStrings.js:

LayoutTests:

  • inspector/canvas/recording-html-2d.html: Added.
  • inspector/canvas/recording-html-2d-expected.txt: Added.
  • inspector/canvas/recording-2d-expected.txt: Added.
  • inspector/canvas/resources/recording-utilities.js:

(TestPage.registerInitializer.log):
(TestPage.registerInitializer.window.startRecording):

  • platform/ios-wk1/TestExpectations:
  • platform/mac-wk1/TestExpectations:
11:56 AM Changeset in webkit [242808] by Devin Rousso
  • 12 edits
    2 adds in trunk

Web Inspector: Audit: there should be a centralized place for reusable code
https://bugs.webkit.org/show_bug.cgi?id=195265
<rdar://problem/47040673>

Reviewed by Joseph Pecoraro.

Source/JavaScriptCore:

  • inspector/protocol/Audit.json:

Increment version.

Source/WebInspectorUI:

  • UserInterface/Controllers/AuditManager.js:

(WI.AuditManager.prototype.async start):
(WI.AuditManager.prototype._topLevelTestForTest): Added.
(WI.AuditManager.prototype._topLevelTestForTest.walk): Added.

  • UserInterface/Models/AuditTestBase.js:

(WI.AuditTestBase):
(WI.AuditTestBase.prototype.async setup): Added.
(WI.AuditTestBase.toJSON):

  • UserInterface/Models/AuditTestCase.js:

(WI.AuditTestCase.async.fromPayload):
(WI.AuditTestCase.prototype.async run.async parseResponse):
Allow additional data to be passed back to the result's data for testing.

  • UserInterface/Models/AuditTestGroup.js:

(WI.AuditTestGroup.async.fromPayload):

LayoutTests:

  • inspector/audit/manager-start-setup.html: Added.
  • inspector/audit/manager-start-setup-expected.txt: Added.
  • inspector/model/auditTestCase.html:
  • inspector/model/auditTestCase-expected.txt:
  • inspector/model/auditTestGroup.html:
  • inspector/model/auditTestGroup-expected.txt:
11:51 AM Changeset in webkit [242807] by pvollan@apple.com
  • 9 edits in trunk/Source/WebKit

[iOS] Block access to backboardd service
https://bugs.webkit.org/show_bug.cgi?id=195484

Reviewed by Brent Fulgham.

This patch is addressing blocking the backboardd service "com.apple.backboard.hid.services". Getting the
backlight level in the WebContent process will initiate a connection with this service. To be able to
block the service, the backlight level is queried in the UI process and sent to the WebContent process
when the WebContent process is started, and when the backlight level is changed. On the WebContent side,
the method getting the backlight level is swizzled to return the value sent from the UI process.

  • Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb:
  • UIProcess/Cocoa/WebProcessPoolCocoa.mm:

(WebKit::WebProcessPool::displayBrightness):
(WebKit::WebProcessPool::backlightLevelDidChangeCallback):
(WebKit::WebProcessPool::registerNotificationObservers):
(WebKit::WebProcessPool::unregisterNotificationObservers):

  • UIProcess/WebProcessPool.cpp:

(WebKit::WebProcessPool::initializeNewWebProcess):

  • UIProcess/WebProcessPool.h:
  • WebProcess/WebProcess.h:
  • WebProcess/WebProcess.messages.in:
  • WebProcess/cocoa/WebProcessCocoa.mm:

(WebKit::currentBacklightLevel):
(WebKit::WebProcess::backlightLevelDidChange):

11:25 AM Changeset in webkit [242806] by timothy_horton@apple.com
  • 2 edits in trunk/Source/WebKit

Fix the build after 242801

  • UIProcess/ios/WKActionSheetAssistant.mm:

(-[WKActionSheetAssistant _elementActionForDDAction:]):
More.

11:23 AM Changeset in webkit [242805] by timothy_horton@apple.com
  • 2 edits in trunk/Source/WebKit

Fix the build after 242801

  • UIProcess/ios/WKActionSheetAssistant.mm:

(-[WKActionSheetAssistant _elementActionForDDAction:]):

11:08 AM Changeset in webkit [242804] by youenn@apple.com
  • 8 edits in trunk/Source/WebCore

Rename originsMatch in originSerializationsMatch
https://bugs.webkit.org/show_bug.cgi?id=195572

Reviewed by Jiewen Tan.

In addition to renaming, make use of SecurityOrigin::isSameOriginAs
where it makes more sense than to compare origin serialization.
The main difference is that isSameOriginAs will return false for two different unique origins
while originsSerializationsMatch will not.

  • Modules/credentialmanagement/CredentialsContainer.cpp:

(WebCore::CredentialsContainer::doesHaveSameOriginAsItsAncestors):

  • Modules/mediastream/RTCController.cpp:

(WebCore::matchDocumentOrigin):

  • Modules/mediastream/RTCPeerConnection.cpp:

(WebCore::RTCPeerConnection::certificatesFromConfiguration):

  • loader/DocumentLoader.cpp:

(WebCore::DocumentLoader::shouldOpenExternalURLsPolicyToPropagate const):

  • loader/cache/CachedResourceLoader.cpp:

(WebCore::CachedResourceLoader::shouldUpdateCachedResourceWithCurrentRequest):

  • page/SecurityOrigin.cpp:

(WebCore::serializedOriginsMatch):
(WebCore::originsMatch): Deleted.

  • page/SecurityOrigin.h:
10:47 AM Changeset in webkit [242803] by eric.carlson@apple.com
  • 2 edits in trunk/Source/WebKit

[iOS] Sandbox must allow mach lookup required to compress video
https://bugs.webkit.org/show_bug.cgi?id=195627
<rdar://problem/48811072>

Reviewed by Youenn Fablet.

  • Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb:
10:42 AM Changeset in webkit [242802] by rmorisset@apple.com
  • 3 edits in trunk/Source/JavaScriptCore

blocksInPreOrder and blocksInPostOrder should reserve the right capacity for their result vector
https://bugs.webkit.org/show_bug.cgi?id=195595

Reviewed by Saam Barati.

Also change BlockList from being Vector<BasicBlock*, 5> to Vector<BasicBlock*>

  • dfg/DFGBasicBlock.h:
  • dfg/DFGGraph.cpp:

(JSC::DFG::Graph::blocksInPreOrder):
(JSC::DFG::Graph::blocksInPostOrder):

10:41 AM Changeset in webkit [242801] by commit-queue@webkit.org
  • 6 edits in trunk/Source

Check whether to launch a default action instead of action sheet
https://bugs.webkit.org/show_bug.cgi?id=195225
<rdar://problem/47715544>

Patch by Jennifer Moore <jennifer.moore@apple.com> on 2019-03-12
Source/WebCore/PAL:

Reviewed by Daniel Bates.

Add new SPI declarations.

  • pal/spi/ios/DataDetectorsUISPI.h:

Source/WebKit:

Reviewed by Daniel Bates and Tim Horton.

Notify DataDetectors at the start of a touch on a link, and check whether to immediately
launch the default action instead of an action sheet.

  • UIProcess/ios/WKActionSheetAssistant.h:
  • UIProcess/ios/WKActionSheetAssistant.mm:

(-[WKActionSheetAssistant interactionDidStart]):
(-[WKActionSheetAssistant _createSheetWithElementActions:defaultTitle:showLinkTitle:]):
(-[WKActionSheetAssistant showImageSheet]):
(-[WKActionSheetAssistant showLinkSheet]):
(-[WKActionSheetAssistant showDataDetectorsSheet]):
(-[WKActionSheetAssistant _createSheetWithElementActions:showLinkTitle:]): Deleted.

  • UIProcess/ios/WKContentViewInteraction.mm:

(-[WKContentView _webTouchEventsRecognized:]):

10:23 AM Changeset in webkit [242800] by dbates@webkit.org
  • 2 edits
    1 add in trunk/LayoutTests

[iOS] Add test to ensure that a web page can prevent the default for Command + A
https://bugs.webkit.org/show_bug.cgi?id=192425

Reviewed by Wenson Hsieh.

Skip the test until we have the UIKit fix for <rdar://problem/46430796>.

  • fast/events/ios/key-command-select-all-prevent-default.html: Added.
  • platform/ios/TestExpectations:
10:22 AM Changeset in webkit [242799] by timothy_horton@apple.com
  • 3 edits in trunk/Tools

Fix the build

  • TestRunnerShared/spi/PencilKitTestSPI.h:
  • TestWebKitAPI/ios/PencilKitTestSPI.h:
10:15 AM Changeset in webkit [242798] by Alan Bujtas
  • 8 edits
    1 copy
    1 add in trunk

[Synthetic Click] Dispatch mouseout soon after mouseup
https://bugs.webkit.org/show_bug.cgi?id=195575
<rdar://problem/47093049>

Reviewed by Simon Fraser.

Source/WebCore:

Let's fire a mouseout event when a click is submitted as the result of a tap. It helps to dismiss content which would otherwise require you to move the mouse (cases like control bar on youtube.com).

Test: fast/events/touch/ios/content-observation/mouse-out-event-should-fire-on-click.html

  • page/EventHandler.h:
  • page/ios/EventHandlerIOS.mm:

(WebCore::EventHandler::dispatchFakeMouseOut):

Source/WebKit:

  • WebProcess/WebPage/ios/WebPageIOS.mm:

(WebKit::WebPage::completeSyntheticClick):

LayoutTests:

  • fast/events/touch/ios/content-observation/mouse-out-event-should-fire-on-click-expected.txt: Added.
  • fast/events/touch/ios/content-observation/mouse-out-event-should-fire-on-click.html: Added.
9:50 AM Changeset in webkit [242797] by rniwa@webkit.org
  • 2 edits in trunk/Source/WebCore

In CachedFrame's constructor, release-assert that DOMWindow still has a frame after page-caching subframes
https://bugs.webkit.org/show_bug.cgi?id=195609

Reviewed by Chris Dumez.

r242677 added release assertions to DOMWindow::suspendForPageCache. But when the first release assert in
that function is hit, we still can't tell whether active DOM objects are detaching frames, or if creating
CachedFrame's on one of subframes is causing the frame to go way.

Add a release assertion immediately after creating CachedFrame on subframes to detect this case.

  • history/CachedFrame.cpp:

(WebCore::CachedFrame::CachedFrame):

9:40 AM Changeset in webkit [242796] by Alan Bujtas
  • 10 edits in trunk/Source

[ContentChangeObserver] Stop content change observation when the touch event turns into long press
https://bugs.webkit.org/show_bug.cgi?id=195601
<rdar://problem/48796324>

Reviewed by Wenson Hsieh.

Source/WebCore:

Cancel the ongoing content observation (started at touchStart) when the touch event does not turn into a tap gesture.

Not testable because any subsequent tap would reset the state anyway (though it might be measurable through some code triggering heavy content change).

  • page/ios/ContentChangeObserver.cpp:

(WebCore::ContentChangeObserver::didRecognizeLongPress):
(WebCore::ContentChangeObserver::willNotProceedWithClick):

  • page/ios/ContentChangeObserver.h:

Source/WebKit:

Add didRecognizeLongPress() message to be able to cancel content observation (started at touchStart).

  • UIProcess/WebPageProxy.h:
  • UIProcess/ios/WKContentViewInteraction.mm:

(-[WKContentView _longPressRecognized:]):

  • UIProcess/ios/WebPageProxyIOS.mm:

(WebKit::WebPageProxy::didRecognizeLongPress):

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

(WebKit::WebPage::didRecognizeLongPress):

8:07 AM Changeset in webkit [242795] by aestes@apple.com
  • 3 edits in trunk/Source/WebKit

[Mac] Ensure Apple Pay is unavailable when PassKit.framework is missing
https://bugs.webkit.org/show_bug.cgi?id=195583
<rdar://problem/48420224>

Reviewed by Daniel Bates.

PassKit.framework is optionally soft-linked on Mac because it is missing from the Recovery
Partition. We need to check if the framework is available before calling into it.

  • Shared/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.mm:

(WebKit::WebPaymentCoordinatorProxy::platformCanMakePayments):
(WebKit::WebPaymentCoordinatorProxy::platformCanMakePaymentsWithActiveCard):
(WebKit::WebPaymentCoordinatorProxy::platformOpenPaymentSetup):
(WebKit::WebPaymentCoordinatorProxy::platformAvailablePaymentNetworks):

  • Shared/ApplePay/mac/WebPaymentCoordinatorProxyMac.mm:

(WebKit::WebPaymentCoordinatorProxy::platformShowPaymentUI):

7:45 AM Changeset in webkit [242794] by Antti Koivisto
  • 25 edits
    2 adds in trunk

Compositing layer that renders two positioned elements should not hit test
https://bugs.webkit.org/show_bug.cgi?id=195371
<rdar://problem/48649586>

Reviewed by Simon Fraser.

Source/WebCore:

Compute and pass an event region for layers if it differs from layer bounds.

This patch fixes various block overflow and layer expansion cases. It does not handle
overflowing line boxes yet (it adds tests for those too).

Test: fast/scrolling/ios/overflow-scroll-overlap-2.html

  • platform/graphics/GraphicsLayer.cpp:

(WebCore::GraphicsLayer::setEventRegion):

  • platform/graphics/GraphicsLayer.h:

(WebCore::GraphicsLayer::eventRegion):

  • platform/graphics/Region.h:
  • platform/graphics/ca/GraphicsLayerCA.cpp:

(WebCore::GraphicsLayerCA::setEventRegion):
(WebCore::GraphicsLayerCA::commitLayerChangesBeforeSublayers):
(WebCore::GraphicsLayerCA::updateEventRegion):

Pass the region via the main platform layer of the graphics layer.

  • platform/graphics/ca/GraphicsLayerCA.h:
  • platform/graphics/ca/PlatformCALayer.h:
  • platform/graphics/ca/cocoa/PlatformCALayerCocoa.h:
  • rendering/PaintInfo.h:
  • rendering/PaintPhase.h:

Add EventRegion paint phase that computes the region instead of painting anything.

  • rendering/RenderBlock.cpp:

(WebCore::RenderBlock::paintObject):

  • rendering/RenderLayer.cpp:

(WebCore::RenderLayer::paintForegroundForFragments):
(WebCore::RenderLayer::paintForegroundForFragmentsWithPhase):

Invoke EventRegion paint phase.

  • rendering/RenderLayer.h:
  • rendering/RenderLayerBacking.cpp:

(WebCore::RenderLayerBacking::paintIntoLayer):

Request event region when pointing a layer.

Source/WebKit:

  • Shared/RemoteLayerTree/RemoteLayerTreePropertyApplier.mm:

(WebKit::RemoteLayerTreePropertyApplier::applyProperties):

  • Shared/RemoteLayerTree/RemoteLayerTreeTransaction.h:
  • Shared/RemoteLayerTree/RemoteLayerTreeTransaction.mm:

(WebKit::RemoteLayerTreeTransaction::LayerProperties::LayerProperties):
(WebKit::RemoteLayerTreeTransaction::LayerProperties::encode const):
(WebKit::RemoteLayerTreeTransaction::LayerProperties::decode):

Pass event region to UI process.

  • UIProcess/RemoteLayerTree/RemoteLayerTreeNode.h:

(WebKit::RemoteLayerTreeNode::layerID const):
(WebKit::RemoteLayerTreeNode::eventRegion const):

  • UIProcess/RemoteLayerTree/RemoteLayerTreeNode.mm:

(WebKit::RemoteLayerTreeNode::RemoteLayerTreeNode):
(WebKit::RemoteLayerTreeNode::~RemoteLayerTreeNode):
(WebKit::RemoteLayerTreeNode::setEventRegion):

Maintain event region in RemoteLayerTreeNodes.

(WebKit::RemoteLayerTreeNode::initializeLayer):
(WebKit::RemoteLayerTreeNode::layerID):
(WebKit::RemoteLayerTreeNode::forCALayer):

Move layerID to RemoteLayerTreeNode and store RemoteLayerTreeNode pointer to CALayers instead.
This makes it easy to find the matching RemoteLayerTreeNode from a layer, globally.

(WebKit::RemoteLayerTreeNode::setLayerID): Deleted.

  • UIProcess/RemoteLayerTree/ios/RemoteLayerTreeViews.mm:

(WebKit::collectDescendantViewsAtPoint):

If we have event region, use it for hit testing.

(-[UIView _web_findDescendantViewAtPoint:withEvent:]):
(collectDescendantViewsAtPoint): Deleted.

  • WebProcess/WebPage/RemoteLayerTree/PlatformCALayerRemote.cpp:

(WebKit::PlatformCALayerRemote::eventRegion const):
(WebKit::PlatformCALayerRemote::setEventRegion):

  • WebProcess/WebPage/RemoteLayerTree/PlatformCALayerRemote.h:

LayoutTests:

  • fast/scrolling/ios/overflow-scroll-overlap-2-expected.txt: Added.
  • fast/scrolling/ios/overflow-scroll-overlap-2.html: Added.
7:18 AM WebKitGTK/2.24.x edited by Philippe Normand
(diff)
7:17 AM Changeset in webkit [242793] by Philippe Normand
  • 6 edits in trunk/Source/WebCore

[GStreamer][v4l2] Synchronous video texture flushing support
https://bugs.webkit.org/show_bug.cgi?id=195453

Reviewed by Xabier Rodriguez-Calvar.

The v4l2 video decoder currently requires that downstream users of
the graphics resources complete any pending draw call and release
resources before returning from the DRAIN query.

To accomplish this the player monitors the pipeline and whenever a
v4l2 decoder is added, synchronous video texture flushing support
is enabled. Additionally and for all decoder configurations, a
flush is performed before disposing of the player.

  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:

(WebCore::MediaPlayerPrivateGStreamer::playbinDeepElementAddedCallback):
Monitor elements added to the decodebin bin.
(WebCore::MediaPlayerPrivateGStreamer::decodebinElementAdded): Set
a flag if a v4l2 decoder was added in decodebin.
(WebCore::MediaPlayerPrivateGStreamer::createGSTPlayBin): Connect
to the deep-element-added signal so as to monitor pipeline
topology updates.

  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.h:
  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:

(WebCore::MediaPlayerPrivateGStreamerBase::~MediaPlayerPrivateGStreamerBase):
Flush video texture before disposing of the player.
(WebCore::MediaPlayerPrivateGStreamerBase::flushCurrentBuffer):
Synchronously flush if the pipeline contains a v4l2 decoder.
(WebCore::MediaPlayerPrivateGStreamerBase::createGLAppSink): Monitor push events only.

  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.h:
  • platform/graphics/texmap/TextureMapperPlatformLayerProxy.cpp:

(WebCore::TextureMapperPlatformLayerProxy::pushNextBuffer): New
boolean flag used mostly to trigger synchronous flush conditions.
(WebCore::TextureMapperPlatformLayerProxy::dropCurrentBufferWhilePreservingTexture):
Optionally drop the current buffer in a synchronous manner. By
default the method keeps operating asynchronously.

  • platform/graphics/texmap/TextureMapperPlatformLayerProxy.h:
4:38 AM Changeset in webkit [242792] by rniwa@webkit.org
  • 7 edits in trunk/Source/WebCore

Move the remaining code to decide whether site specific quirks are needed to Quirks class
https://bugs.webkit.org/show_bug.cgi?id=195610

Reviewed by Antti Koivisto.

Moved the remaining code scattered across WebCore to decide whether a site specific quirk
is needed or not to Quirks class introduced in r236818.

  • Modules/fetch/FetchRequest.cpp:

(WebCore::needsSignalQuirk): Deleted.
(WebCore::processInvalidSignal):

  • html/HTMLFormControlElement.cpp:

(WebCore::HTMLFormControlElement::needsMouseFocusableQuirk const):

  • html/HTMLMediaElement.cpp:

(WebCore::needsAutoplayPlayPauseEventsQuirk): Deleted.
(WebCore::HTMLMediaElement::dispatchPlayPauseEventsIfNeedsQuirks):
(WebCore::needsSeekingSupportQuirk): Deleted.
(WebCore::HTMLMediaElement::supportsSeeking const):

  • html/MediaElementSession.cpp:

(WebCore::needsArbitraryUserGestureAutoplayQuirk): Deleted.
(WebCore::needsPerDocumentAutoplayBehaviorQuirk): Deleted.
(WebCore::MediaElementSession::playbackPermitted const):

  • page/Quirks.cpp:

(WebCore::allowedAutoplayQuirks): Added.
(WebCore::Quirks::needsQuirks const): Added.
(WebCore::Quirks::shouldIgnoreInvalidSignal const): Added.
(WebCore::Quirks::needsFormControlToBeMouseFocusable const): Added.
(WebCore::Quirks::needsAutoplayPlayPauseEvents const): Added.
(WebCore::Quirks::needsSeekingSupportDisabled const): Addd.
(WebCore::Quirks::needsPerDocumentAutoplayBehavior const): Added.
(WebCore::Quirks::shouldAutoplayForArbitraryUserGesture const): Added.
(WebCore::Quirks::hasBrokenEncryptedMediaAPISupportQuirk const): Added.
(WebCore::Quirks::hasWebSQLSupportQuirk const): Fixed the coding style.

  • page/Quirks.h:
4:09 AM Changeset in webkit [242791] by eocanha@igalia.com
  • 7 edits in trunk

[Media][MSE] Don't emit timeUpdate after play() if currentTime hasn't changed
https://bugs.webkit.org/show_bug.cgi?id=195454

Reviewed by Jer Noble.

Source/WebCore:

This change fixes YouTube 2019 MSE Conformance Tests "26. SFRPausedAccuracy"
and "27. HFRPausedAccuracy".

The first timeUpdate event after play() is omitted, because currentTime
doesn't actually change in that scenario.

Tests 26 and 27 measure the time drift (real time vs. media time) on playback
and start counting since the first timeUpdate event. In WebKit, that event
happens at play(), before the pipeline has completed the transition to playing.
Therefore, the real time inherits this startup delay and the test thinks that
the player has drifted.

  • html/HTMLMediaElement.cpp:

(WebCore::HTMLMediaElement::playInternal): Don't emit a timeUpdated event unless currentTime has changed.

LayoutTests:

This patch removes expectations for the first timeUpdate event after
play(), because currentTime doesn't actually change in that scenario
and the spec[1] states that a timeupdate event is fired if "The current
playback position changed as part of normal playback or in an
especially interesting way, for example discontinuously."

[1] https://www.w3.org/TR/html52/semantics-embedded-content.html#eventdef-media-timeupdate

  • media/video-paused-0-rate.html: Don't require the timeUpdate event when currentTime=0 to pass the test.
  • media/video-play-pause-events-expected.txt: Ditto, and changed test description.
  • media/video-play-pause-events.html: Changed test description to reflect the new behaviour.
  • media/video-play-pause-exception-expected.txt: Don't require the timeUpdate event.
3:59 AM Changeset in webkit [242790] by eocanha@igalia.com
  • 2 edits in trunk/Source/WebCore

[EME][GStreamer] Speculative build fix
https://bugs.webkit.org/show_bug.cgi?id=195614

Unreviewed speculative WPE build fix after r242776.

  • platform/graphics/gstreamer/eme/WebKitCommonEncryptionDecryptorGStreamer.h: Added missing include.
3:25 AM Changeset in webkit [242789] by Philippe Normand
  • 4 edits in trunk/Source/WebCore

[GStreamer] remove legacy GStreamer version checks
https://bugs.webkit.org/show_bug.cgi?id=195552

Reviewed by Xabier Rodriguez-Calvar.

We require GStreamer 1.8.x so version checks below that make
little sense. Also checks for odd minor version numbers make sense
only for the latest GStreamer git development version.

  • platform/graphics/gstreamer/GStreamerCommon.cpp:

(WebCore::initializeGStreamerAndRegisterWebKitElements):

  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:

(WebCore::MediaPlayerPrivateGStreamer::createAudioSink):
(WebCore::MediaPlayerPrivateGStreamer::createGSTPlayBin):

  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:

(WebCore::MediaPlayerPrivateGStreamerBase::ensureGstGLContext):

2:08 AM WebKitGTK/2.24.x edited by Philippe Normand
(diff)
1:30 AM Changeset in webkit [242788] by Carlos Garcia Campos
  • 12 edits in trunk

[WPE][GTK] Load events may occur in unexpected order when JS redirects page before subresource load finishes
https://bugs.webkit.org/show_bug.cgi?id=194131

Source/WebKit:

Reviewed by Michael Catanzaro.

Ensure we emit the load-failed and load-changed with finished event when there's still an ongoing load when a
new provisional load strarts. Previous load fails with cancelled error.

  • UIProcess/API/glib/WebKitWebView.cpp:

(webkitWebViewWillStartLoad): Call webkitWebViewLoadFailed() if current page load state is not finished.

  • UIProcess/API/glib/WebKitWebViewPrivate.h:
  • UIProcess/API/gtk/PageClientImpl.cpp:

(WebKit::PageClientImpl::didStartProvisionalLoadForMainFrame): Call webkitWebViewWillStartLoad().

  • UIProcess/API/wpe/APIViewClient.h:

(API::ViewClient::willStartLoad): Add willStartLoad() to API::ViewClient

  • UIProcess/API/wpe/PageClientImpl.cpp:

(WebKit::PageClientImpl::didStartProvisionalLoadForMainFrame): Call WPEView::willStartLoad().

  • UIProcess/API/wpe/PageClientImpl.h:
  • UIProcess/API/wpe/WPEView.cpp:

(WKWPE::View::willStartLoad): Call API::ViewClient::willStartLoad().

  • UIProcess/API/wpe/WPEView.h:
  • UIProcess/PageLoadState.h:

(WebKit::PageLoadState::isProvisional const):
(WebKit::PageLoadState::isCommitted const):
(WebKit::PageLoadState::isFinished const):

Tools:

Patch by Michael Catanzaro <Michael Catanzaro> on 2019-03-12
Reviewed by Michael Catanzaro.

  • TestWebKitAPI/Tests/WebKitGLib/TestLoaderClient.cpp:

(uriChanged):
(testUnfinishedSubresourceLoad):
(serverCallback):
(beforeAll):

1:29 AM Changeset in webkit [242787] by calvaris@igalia.com
  • 2 edits in trunk/Source/WebCore

[EME] generateRequest was not using the sanitized init data
https://bugs.webkit.org/show_bug.cgi?id=195555

Reviewed by Jer Noble.

  • Modules/encryptedmedia/MediaKeySession.cpp:

(WebCore::MediaKeySession::generateRequest): Use sanitized init
data instead of the original one.

1:13 AM Changeset in webkit [242786] by commit-queue@webkit.org
  • 7 edits in trunk

Implement further CORS restrictions
https://bugs.webkit.org/show_bug.cgi?id=188644

Patch by Rob Buis <rbuis@igalia.com> on 2019-03-12
Reviewed by Darin Adler.

LayoutTests/imported/w3c:

Update improved test results.

  • web-platform-tests/fetch/api/cors/cors-preflight-not-cors-safelisted.any-expected.txt:
  • web-platform-tests/fetch/api/cors/cors-preflight-not-cors-safelisted.any.worker-expected.txt:
  • web-platform-tests/fetch/api/headers/headers-no-cors.window-expected.txt:

Source/WebCore:

Verify that header value length is not greater than 128 [1]. Also implement
Step 5 of [2] to append values to existing header value when calling
Headers.append.

Tests: fetch/api/cors/cors-preflight-not-cors-safelisted.any.html

fetch/api/cors/cors-preflight-not-cors-safelisted.any.worker.html
fetch/api/headers/headers-no-cors.window.html

[1] https://fetch.spec.whatwg.org/#cors-safelisted-request-header
[2] https://fetch.spec.whatwg.org/#concept-headers-append

  • Modules/fetch/FetchHeaders.cpp:

(WebCore::canWriteHeader):
(WebCore::appendToHeaderMap):
(WebCore::FetchHeaders::remove):
(WebCore::FetchHeaders::set):
(WebCore::FetchHeaders::filterAndFill):

  • platform/network/HTTPParsers.cpp:

(WebCore::isCrossOriginSafeRequestHeader): verify that header length is not greater than 128

12:10 AM Changeset in webkit [242785] by commit-queue@webkit.org
  • 3 edits in trunk/Source/WebInspectorUI

Web Inspector: Timelines - Improve handling of past recordings (readonly)
https://bugs.webkit.org/show_bug.cgi?id=195594

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2019-03-12
Reviewed by Devin Rousso.

  • UserInterface/Views/TimelineRecordingContentView.js:

(WI.TimelineRecordingContentView.prototype._clearTimeline):
Don't allow clearing of a readonly recording.

  • UserInterface/Views/TimelineTabContentView.js:

(WI.TimelineTabContentView.prototype._toggleRecordingOnSpacebar):
Don't do anything when viewing a readonly recording.

(WI.TimelineTabContentView.prototype._recordButtonClicked):
Start a new recording if viewing a readonly recording.

Mar 11, 2019:

11:58 PM Changeset in webkit [242784] by rniwa@webkit.org
  • 3 edits in trunk/Source/WebCore

Remove OS X Server QuickTime plugin quirks
https://bugs.webkit.org/show_bug.cgi?id=195607

Reviewed by Brent Fulgham.

r87244 added a site specific quirk for Mac OS X Sever wiki pages.
However, the issue has since been resolved as of OS X Mountain Lion,
of which Apple has ended the support in September 2015.

Because the latest versions of Safari no longer supports non-Flash plugins,
the only scenario in which this quirk comes into play is when a third party app
which embeds WKWebView or WebKitLegacy loaded web pages on a OS X Server
running OS X Mountain Lion or earlier.

Given these observations, it's probably safe to remove this quirk from WebKit.

  • html/HTMLObjectElement.cpp:

(WebCore::HTMLObjectElement::hasFallbackContent const):
(WebCore::HTMLObjectElement::hasValidClassId):
(WebCore::HTMLObjectElement::shouldAllowQuickTimeClassIdQuirk): Deleted.

  • html/HTMLObjectElement.h:
11:44 PM Changeset in webkit [242783] by Ross Kirsling
  • 2 edits in trunk/Source/WebCore

Unreviewed speculative WPE build fix after r195586.

  • platform/encryptedmedia/CDMInstance.h:
11:15 PM Changeset in webkit [242782] by Kocsen Chung
  • 2 edits in branches/safari-607.1.40.1-branch/Source/WebCore

Cherry-pick r242770. rdar://problem/48795263

REGRESSION(r236281): YouTube Movies fail with "video format" error
https://bugs.webkit.org/show_bug.cgi?id=195598
<rdar://problem/48782842>

Reviewed by Jon Lee.

Partially revert r236281 for YouTube.com.

  • page/Quirks.cpp: (WebCore::Quirks::hasBrokenEncryptedMediaAPISupportQuirk const):

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

11:10 PM Changeset in webkit [242781] by Kocsen Chung
  • 2 edits in branches/safari-607.1.40.0-branch/Source/WebCore

Cherry-pick r242770. rdar://problem/48795264

REGRESSION(r236281): YouTube Movies fail with "video format" error
https://bugs.webkit.org/show_bug.cgi?id=195598
<rdar://problem/48782842>

Reviewed by Jon Lee.

Partially revert r236281 for YouTube.com.

  • page/Quirks.cpp: (WebCore::Quirks::hasBrokenEncryptedMediaAPISupportQuirk const):

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

11:09 PM Changeset in webkit [242780] by rniwa@webkit.org
  • 4 edits in trunk/Source/WebCore

Remove MediaWiki site specific quirks
https://bugs.webkit.org/show_bug.cgi?id=195597

Reviewed by Simon Fraser.

r47383 added a site specific quirk for the KHTML workaround in MediaWiki.

Blink since removed this workaround:
https://github.com/chromium/chromium/commit/ecf84fc9c1a51c8ede7adfd0b0cba446d9a8caa0

Given Chrome has been shipping without this quirk for six years, it's safe to assume
this site specific quirk is no longer neeed for Web compatibility.

  • css/StyleSheetContents.cpp:

(WebCore::StyleSheetContents::parseAuthorStyleSheet):

  • css/parser/CSSParserContext.cpp:

(WebCore::CSSParserContext::CSSParserContext):
(WebCore::operator==):

  • css/parser/CSSParserContext.h:

(WebCore::CSSParserContextHash::hash):

11:07 PM Changeset in webkit [242779] by rniwa@webkit.org
  • 2 edits in trunk/Source/WebCore

Remove OpenCube QuickMenu quirks from navigator.appVersion
https://bugs.webkit.org/show_bug.cgi?id=195600

Reviewed by Simon Fraser.

Remove the site specific quirk added in r35050 for OpenCube QuickMenu library for nwa.com

Blink removed this code back in 2013. The fact Chrome has been shipping successfully without
this quirk for six years is a good evidence that it's no longer needed for the Web compatibility.

  • page/Navigator.cpp:

(WebCore::Navigator::appVersion const):
(WebCore::shouldHideFourDot): Deleted.

11:04 PM Changeset in webkit [242778] by commit-queue@webkit.org
  • 4 edits in trunk

WTF::Expected should use std::addressof instead of operator&
https://bugs.webkit.org/show_bug.cgi?id=195604

Patch by Alex Christensen <achristensen@webkit.org> on 2019-03-11
Reviewed by Myles Maxfield.

Source/WTF:

The latter was causing problems with types that do tricky things with constructors and operator&,
specifically UniqueRef but I made a reduced test case. When it used operator&, it would get the contained
type and call the constructor that takes a contained type instead of the move constructor.

  • wtf/Expected.h:

(std::experimental::fundamentals_v3::expected_detail::base::base):
(std::experimental::fundamentals_v3::expected::swap):

Tools:

  • TestWebKitAPI/Tests/WTF/Expected.cpp:

(TestWebKitAPI::Unique::Unique):
(TestWebKitAPI::Unique::operator&):
(TestWebKitAPI::TEST):

10:50 PM Changeset in webkit [242777] by Ryan Haddad
  • 8 edits in trunk

Unreviewed, rolling out r242763.

Causes layout test crashes on iOS simulator

Reverted changeset:

"[Synthetic Click] Dispatch mouseout soon after mouseup"
https://bugs.webkit.org/show_bug.cgi?id=195575
https://trac.webkit.org/changeset/242763

10:27 PM Changeset in webkit [242776] by Ross Kirsling
  • 132 edits in trunk

Add Optional to Forward.h.
https://bugs.webkit.org/show_bug.cgi?id=195586

Reviewed by Darin Adler.

Source/JavaScriptCore:

  • b3/B3Common.cpp:
  • b3/B3Common.h:
  • debugger/DebuggerParseData.cpp:
  • debugger/DebuggerParseData.h:
  • heap/HeapSnapshot.cpp:
  • heap/HeapSnapshot.h:
  • jit/PCToCodeOriginMap.cpp:
  • jit/PCToCodeOriginMap.h:
  • runtime/AbstractModuleRecord.cpp:
  • runtime/AbstractModuleRecord.h:
  • wasm/WasmInstance.h:
  • wasm/WasmModuleParser.h:
  • wasm/WasmSectionParser.cpp:
  • wasm/WasmSectionParser.h:
  • wasm/WasmStreamingParser.cpp:
  • wasm/WasmStreamingParser.h:
  • yarr/YarrFlags.cpp:
  • yarr/YarrFlags.h:
  • yarr/YarrUnicodeProperties.cpp:
  • yarr/YarrUnicodeProperties.h:

Remove unnecessary includes from headers.

Source/WebCore:

  • Modules/encryptedmedia/MediaKeyStatusMap.cpp:
  • Modules/encryptedmedia/MediaKeyStatusMap.h:
  • Modules/webauthn/apdu/ApduCommand.cpp:
  • Modules/webauthn/apdu/ApduCommand.h:
  • Modules/webauthn/apdu/ApduResponse.cpp:
  • Modules/webauthn/apdu/ApduResponse.h:
  • Modules/webauthn/fido/FidoHidMessage.cpp:
  • Modules/webauthn/fido/FidoHidMessage.h:
  • Modules/webauthn/fido/U2fCommandConstructor.cpp:
  • Modules/webauthn/fido/U2fCommandConstructor.h:
  • Modules/webdatabase/SQLTransaction.cpp:
  • Modules/webdatabase/SQLTransaction.h:
  • Modules/webgpu/WHLSL/Metal/WHLSLEntryPointScaffolding.cpp:
  • Modules/webgpu/WHLSL/Metal/WHLSLEntryPointScaffolding.h:
  • Modules/webgpu/WHLSL/WHLSLGatherEntryPointItems.h:
  • Modules/webgpu/WHLSL/WHLSLPrepare.cpp:
  • Modules/webgpu/WHLSL/WHLSLPrepare.h:
  • Modules/webgpu/WebGPU.cpp:
  • Modules/webgpu/WebGPU.h:
  • Modules/webgpu/WebGPUCommandBuffer.cpp:
  • Modules/webgpu/WebGPUCommandBuffer.h:
  • animation/WebAnimation.cpp:
  • animation/WebAnimation.h:
  • crypto/gcrypt/GCryptUtilities.cpp:
  • crypto/gcrypt/GCryptUtilities.h:
  • css/CSSStyleDeclaration.cpp:
  • css/CSSStyleDeclaration.h:
  • dom/TextDecoder.cpp:
  • dom/TextDecoder.h:
  • dom/UserGestureIndicator.cpp:
  • dom/UserGestureIndicator.h:
  • editing/ChangeListTypeCommand.cpp:
  • editing/ChangeListTypeCommand.h:
  • editing/EditingStyle.cpp:
  • editing/EditingStyle.h:
  • html/DOMFormData.cpp:
  • html/DOMFormData.h:
  • html/HTMLAllCollection.cpp:
  • html/HTMLAllCollection.h:
  • html/HTMLAnchorElement.cpp:
  • html/HTMLAnchorElement.h:
  • html/ImageBitmap.cpp:
  • html/ImageBitmap.h:
  • html/canvas/Path2D.h:
  • html/canvas/WebMetalEnums.cpp:
  • html/canvas/WebMetalEnums.h:
  • html/parser/HTMLParserIdioms.cpp:
  • html/parser/HTMLParserIdioms.h:
  • loader/ResourceCryptographicDigest.cpp:
  • loader/ResourceCryptographicDigest.h:
  • mathml/MathMLOperatorDictionary.cpp:
  • mathml/MathMLOperatorDictionary.h:
  • page/PerformanceEntry.cpp:
  • page/PerformanceEntry.h:
  • page/ResourceUsageData.h:
  • platform/ReferrerPolicy.cpp:
  • platform/ReferrerPolicy.h:
  • platform/Theme.cpp:
  • platform/Theme.h:
  • platform/encryptedmedia/CDMInstance.h:
  • platform/graphics/gpu/GPUDevice.cpp:
  • platform/graphics/gpu/GPUDevice.h:
  • platform/graphics/transforms/AffineTransform.cpp:
  • platform/graphics/transforms/AffineTransform.h:
  • platform/graphics/transforms/TransformState.cpp:
  • platform/graphics/transforms/TransformState.h:
  • platform/graphics/transforms/TransformationMatrix.cpp:
  • platform/graphics/transforms/TransformationMatrix.h:
  • platform/graphics/win/ImageDecoderDirect2D.cpp:
  • platform/graphics/win/ImageDecoderDirect2D.h:
  • platform/mediacapabilities/AudioConfiguration.h:
  • platform/network/CacheValidation.cpp:
  • platform/network/CacheValidation.h:
  • platform/network/DataURLDecoder.cpp:
  • platform/network/DataURLDecoder.h:
  • platform/network/HTTPParsers.cpp:
  • platform/network/HTTPParsers.h:
  • platform/network/curl/CookieJarDB.cpp:
  • platform/network/curl/CookieJarDB.h:
  • platform/win/SearchPopupMenuDB.cpp:
  • platform/win/SearchPopupMenuDB.h:
  • rendering/ImageQualityController.cpp:
  • rendering/ImageQualityController.h:
  • svg/SVGToOTFFontConversion.cpp:
  • svg/SVGToOTFFontConversion.h:

Remove unnecessary includes from headers.

Source/WebCore/PAL:

  • pal/crypto/tasn1/Utilities.cpp:
  • pal/crypto/tasn1/Utilities.h:

Remove unnecessary includes from headers.

Source/WebKit:

  • Shared/RTCNetwork.cpp:
  • Shared/RTCNetwork.h:
  • Shared/RTCPacketOptions.cpp:
  • Shared/RTCPacketOptions.h:
  • UIProcess/API/APIWebsitePolicies.h:
  • UIProcess/WebStorage/LocalStorageDatabaseTracker.h:

Remove unnecessary includes from headers.

Source/WTF:

  • wtf/Forward.h:

Add forward declaration for Optional.

  • wtf/CPUTime.h:
  • wtf/Expected.h:
  • wtf/MainThread.h:
  • wtf/MemoryFootprint.h:
  • wtf/URLHelpers.cpp:
  • wtf/URLHelpers.h:
  • wtf/cocoa/CPUTimeCocoa.cpp:
  • wtf/fuchsia/CPUTimeFuchsia.cpp:
  • wtf/unix/CPUTimeUnix.cpp:
  • wtf/win/CPUTimeWin.cpp:

Remove unnecessary includes from headers.

Tools:

  • TestWebKitAPI/Tests/WebCore/ApduTest.cpp:
  • TestWebKitAPI/Tests/WebCore/FidoHidMessageTest.cpp:

Remove unnecessary includes from headers.

10:23 PM Changeset in webkit [242775] by commit-queue@webkit.org
  • 9 edits in trunk/Source/WebKit

Unreviewed, rolling out r242745 and r242756.
https://bugs.webkit.org/show_bug.cgi?id=195606

Breaks internal builds (Requested by ryanhaddad on #webkit).

Reverted changesets:

"[iOS] Block access to backboardd service"
https://bugs.webkit.org/show_bug.cgi?id=195484
https://trac.webkit.org/changeset/242745

"Unreviewed build fix after r242745."
https://trac.webkit.org/changeset/242756

10:18 PM Changeset in webkit [242774] by Ryan Haddad
  • 3 edits in trunk/LayoutTests

Unreviewed test gardening, rebaseline tests after r242757.

  • http/tests/adClickAttribution/anchor-tag-attributes-validation-expected.txt:
  • http/tests/security/anchor-download-block-crossorigin-expected.txt:
9:59 PM Changeset in webkit [242773] by Simon Fraser
  • 7 edits
    2 adds in trunk

Add testing API to hit-test and scroll overflow scrollers
https://bugs.webkit.org/show_bug.cgi?id=195278

Reviewed by Antti Koivisto.

Tools:

Add UIScriptController::immediateScrollElementAtContentPointToOffset() to enable
testing of the view hit-testing code path, and immediate scrolling of overflow:scroll.

Tests: scrollingcoordinator/ios/scroll-element-at-point.html

  • DumpRenderTree/ios/UIScriptControllerIOS.mm:

(WTR::UIScriptController::immediateScrollElementAtContentPointToOffset):

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

(WTR::UIScriptController::immediateScrollElementAtContentPointToOffset):

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

(WTR::enclosingScrollViewIncludingSelf):
(WTR::UIScriptController::immediateScrollElementAtContentPointToOffset):

LayoutTests:

The test loads a scaled page with accelerated overflow:scroll, and hit-tests
near the top-left and bottom-right corners to test the point conversion logic.

  • scrollingcoordinator/ios/scroll-element-at-point-expected.txt: Added.
  • scrollingcoordinator/ios/scroll-element-at-point.html: Added.
9:56 PM Changeset in webkit [242772] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: REGRESSION: Network Cookies Table does not load
https://bugs.webkit.org/show_bug.cgi?id=195599

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2019-03-11
Reviewed by Devin Rousso.

  • UserInterface/Views/ResourceCookiesContentView.js:

(WI.ResourceCookiesContentView.prototype.tableIndexForRepresentedObject):
(WI.ResourceCookiesContentView.prototype.tableRepresentedObjectForIndex):
Include needed delegate methods.

9:12 PM Changeset in webkit [242771] by Fujii Hironori
  • 2 edits in trunk/Source/WebKit

[CoordinatedGraphics] ASSERTION FAILED: !m_state.isSuspended
https://bugs.webkit.org/show_bug.cgi?id=195550

Reviewed by Carlos Garcia Campos.

CompositingRunLoop::suspend() locks a mutex and stops the update
timer. But, the timer can be fired after the lock was acquired and
before the timer is stopped.

  • Shared/CoordinatedGraphics/threadedcompositor/CompositingRunLoop.cpp:

(WebKit::CompositingRunLoop::updateTimerFired): Removed the
assertion. Return early if m_state.isSuspended.

8:49 PM Changeset in webkit [242770] by jer.noble@apple.com
  • 2 edits in trunk/Source/WebCore

REGRESSION(r236281): YouTube Movies fail with "video format" error
https://bugs.webkit.org/show_bug.cgi?id=195598
<rdar://problem/48782842>

Reviewed by Jon Lee.

Partially revert r236281 for YouTube.com.

  • page/Quirks.cpp:

(WebCore::Quirks::hasBrokenEncryptedMediaAPISupportQuirk const):

8:24 PM Changeset in webkit [242769] by pvollan@apple.com
  • 2 edits in trunk/Source/WebKit

[macOS] Remove the Kerberos rules from the WebContent sandbox
https://bugs.webkit.org/show_bug.cgi?id=195464
<rdar://problem/35369230>

Reviewed by Brent Fulgham.

Kerberos auth is done in the UIProcess or NetworkProcess now.

  • WebProcess/com.apple.WebProcess.sb.in:
8:22 PM Changeset in webkit [242768] by Devin Rousso
  • 36 edits in trunk/Source/WebInspectorUI

Web Inspector: use -webkit-{margin,padding}-{start,end} instead of [dir={ltr/rtl}] rules
https://bugs.webkit.org/show_bug.cgi?id=195569
<rdar://problem/48778727>

Reviewed by Matt Baker.

  • UserInterface/Debug/UncaughtExceptionReporter.css:
  • UserInterface/Views/BoxModelDetailsSectionRow.css:
  • UserInterface/Views/BreakpointActionView.css:
  • UserInterface/Views/BreakpointPopoverController.css:
  • UserInterface/Views/CPUTimelineView.css:
  • UserInterface/Views/CallFrameTreeElement.css:
  • UserInterface/Views/CallFrameView.css:
  • UserInterface/Views/DOMTreeContentView.css:
  • UserInterface/Views/DOMTreeOutline.css:
  • UserInterface/Views/DashboardContainerView.css:
  • UserInterface/Views/DataGrid.css:
  • UserInterface/Views/DebuggerDashboardView.css:
  • UserInterface/Views/DebuggerSidebarPanel.css:
  • UserInterface/Views/DefaultDashboardView.css:
  • UserInterface/Views/DetailsSection.css:
  • UserInterface/Views/FilterBar.css:
  • UserInterface/Views/FindBanner.css:
  • UserInterface/Views/FontResourceContentView.css:
  • UserInterface/Views/GeneralStyleDetailsSidebarPanel.css:
  • UserInterface/Views/HierarchicalPathComponent.css:
  • UserInterface/Views/LayerTreeDetailsSidebarPanel.css:
  • UserInterface/Views/Main.css:
  • UserInterface/Views/NetworkTableContentView.css:
  • UserInterface/Views/OpenResourceDialog.css:
  • UserInterface/Views/RecordingActionTreeElement.css:
  • UserInterface/Views/ScopeRadioButtonNavigationItem.css:
  • UserInterface/Views/SettingsTabContentView.css:
  • UserInterface/Views/ThreadTreeElement.css:
  • UserInterface/Views/Toolbar.css:
  • UserInterface/Views/TreeOutline.css:
  • UserInterface/Views/TypeTreeElement.css:
  • UserInterface/Views/TypeTreeView.css:
  • UserInterface/Views/URLBreakpointPopover.css:
  • UserInterface/Views/WebSocketContentView.css:
  • UserInterface/Views/RecordingActionTreeElement.js:

(WI.RecordingActionTreeElement.static _getClassNames):
Replace class .action with .recording-action for better uniqueness/clarity.

8:21 PM Changeset in webkit [242767] by pvollan@apple.com
  • 2 edits in trunk/Source/WebKit

[iOS] Add entitlement to enable use of graphics endpoint with limited capabilities
https://bugs.webkit.org/show_bug.cgi?id=195582
<rdar://problem/36082379>

Reviewed by Brent Fulgham.

This is a QuartzCore endpoint with a minimal set of capabilities.

  • Configurations/WebContent-iOS.entitlements:
8:19 PM Changeset in webkit [242766] by Justin Fan
  • 11 edits
    1 add
    1 delete in trunk/Source/WebCore

[Web GPU] BindGroups/Argument buffers: Move MTLBuffer creation from and GPUBindGroup validation to GPUDevice.createBindGroup
https://bugs.webkit.org/show_bug.cgi?id=195519
<rdar://problem/48781297>

Reviewed by Myles C. Maxfield.

Metal's Argument Buffers should not be tied directly to GPUBindGroupLayout; rather, create the MTLBuffer
in GPUBindGroup creation process.
Move GPUBindGroup validation out of setBindGroup and to GPUBindGroup creation for performance.

Covered by existing tests. No behavior change.

  • Modules/webgpu/WebGPUDevice.cpp:

(WebCore::WebGPUDevice::createBindGroup const):

  • Sources.txt:
  • SourcesCocoa.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • platform/graphics/gpu/GPUBindGroup.cpp: Removed.
  • platform/graphics/gpu/GPUBindGroup.h:

(WebCore::GPUBindGroup::vertexArgsBuffer): A buffer that arguments will be encoded into during setBindGroup.
(WebCore::GPUBindGroup::fragmentArgsBuffer): Ditto.
(WebCore::GPUBindGroup::boundBuffers const): A list of resources that are bound by this GPUBindGroup.
(WebCore::GPUBindGroup::boundTextures const): Ditto.
(WebCore::GPUBindGroup::layout const): Deleted.
(WebCore::GPUBindGroup::bindings const): Deleted.

  • platform/graphics/gpu/GPUBindGroupLayout.h: No longer creating and retaining MTLBuffers.

(WebCore::GPUBindGroupLayout::vertexEncoder const):
(WebCore::GPUBindGroupLayout::fragmentEncoder const):
(WebCore::GPUBindGroupLayout::computeEncoder const):
(WebCore::GPUBindGroupLayout::ArgumentEncoderBuffer::isValid const): Deleted.
(WebCore::GPUBindGroupLayout::vertexArguments const): Deleted.
(WebCore::GPUBindGroupLayout::fragmentArguments const): Deleted.
(WebCore::GPUBindGroupLayout::computeArguments const): Deleted.

  • platform/graphics/gpu/GPUProgrammablePassEncoder.h:
  • platform/graphics/gpu/cocoa/GPUBindGroupLayoutMetal.mm:

(WebCore::tryCreateMtlArgumentEncoder):
(WebCore::GPUBindGroupLayout::tryCreate):
(WebCore::GPUBindGroupLayout::GPUBindGroupLayout):
(WebCore::tryCreateArgumentEncoderAndBuffer): Deleted.

  • platform/graphics/gpu/cocoa/GPUBindGroupMetal.mm: Added.

(WebCore::tryCreateArgumentBuffer): Create and associate the MTLBuffer that backs the MTLArgumentEncoder.
(WebCore::tryGetResourceAsBufferBinding): Validate a GPUBindingResource.
(WebCore::trySetBufferOnEncoder): Encodes a GPUBufferBinding's MTLBuffer on a MTLArgumentEncoder.
(WebCore::tryGetResourceAsSampler): Ditto, for GPUSamplers.
(WebCore::trySetSamplerOnEncoder):
(WebCore::tryGetResourceAsTexture): Ditto, for GPUTextures.
(WebCore::trySetTextureOnEncoder):
(WebCore::GPUBindGroup::tryCreate): Most setBindGroup validation moved here.
(WebCore::GPUBindGroup::GPUBindGroup): Retains the resource references needed for setBindGroup.

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

(WebCore::GPUProgrammablePassEncoder::setBindGroup): Most validation moved to GPUBindGroup::tryCreate().
(WebCore::GPUProgrammablePassEncoder::setResourceAsBufferOnEncoder): Deleted.
(WebCore::GPUProgrammablePassEncoder::setResourceAsSamplerOnEncoder): Deleted.
(WebCore::GPUProgrammablePassEncoder::setResourceAsTextureOnEncoder): Deleted.

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

(WebCore::GPURenderPassEncoder::useResource):
(WebCore::GPURenderPassEncoder::setVertexBuffer):
(WebCore::GPURenderPassEncoder::setFragmentBuffer):

Misc:

  • platform/graphics/gpu/GPUCommandBuffer.cpp/h: Move missing includes to header.
7:54 PM Changeset in webkit [242765] by Devin Rousso
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: DOMDebugger: protocol error on first open
https://bugs.webkit.org/show_bug.cgi?id=195248
<rdar://problem/48538465>

Unreviewed followup of r242743 to fix test inspector/dom-debugger/dom-breakpoints.html.

  • UserInterface/Controllers/DOMDebuggerManager.js:

(WI.DOMDebuggerManager.prototype.addDOMBreakpoint):
(WI.DOMDebuggerManager.prototype._resolveDOMBreakpoint):
Still attempt to resolve the DOM breakpoint if it already has a domNodeIdentifier so that
it will get added to the node's frame's DOM breakpoint map. Without this, some breakpoints
might get "missed" when calling WI.domDebuggerManager.removeDOMBreakpointsForNode.

7:16 PM Changeset in webkit [242764] by wilander@apple.com
  • 14 edits
    1 delete in trunk/Source/WebKit

Move NetworkProcess/Classifier/ResourceLoadStatisticsStoreCocoa.mm functionality into UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm
https://bugs.webkit.org/show_bug.cgi?id=195117
<rdar://problem/48448715>

Reviewed by Brent Fulgham.

Reading of user defaults on Cocoa platforms should be done in the UI process and
forwarded to Resource Load Statistics in the network process through the
WebKit::NetworkSessionCreationParameters struct.

This patch does away with some old user defaults we don't use anymore. It also
changes the developer-facing default name to ITPManualPrevalentResource.

  • NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp:

(WebKit::ResourceLoadStatisticsDatabaseStore::ResourceLoadStatisticsDatabaseStore):

Removed the call to the old registerUserDefaultsIfNeeded().

  • NetworkProcess/Classifier/ResourceLoadStatisticsMemoryStore.cpp:

(WebKit::ResourceLoadStatisticsMemoryStore::ResourceLoadStatisticsMemoryStore):

Removed the call to the old registerUserDefaultsIfNeeded().

  • NetworkProcess/Classifier/ResourceLoadStatisticsStore.h:

Removed the declaration of the old registerUserDefaultsIfNeeded().

  • NetworkProcess/Classifier/ResourceLoadStatisticsStoreCocoa.mm: Removed.
  • NetworkProcess/Classifier/WebResourceLoadStatisticsStore.h:

Added an enum class EnableResourceLoadStatisticsDebugMode.

  • NetworkProcess/NetworkSession.cpp:

(WebKit::NetworkSession::setResourceLoadStatisticsEnabled):

  • NetworkProcess/NetworkSession.h:
  • NetworkProcess/NetworkSessionCreationParameters.cpp:

(WebKit::NetworkSessionCreationParameters::encode const):
(WebKit::NetworkSessionCreationParameters::decode):

  • NetworkProcess/NetworkSessionCreationParameters.h:

The struct now has two new fields:

  • enableResourceLoadStatisticsDebugMode
  • resourceLoadStatisticsManualPrevalentResource
  • NetworkProcess/cocoa/NetworkSessionCocoa.mm:

(WebKit::NetworkSessionCocoa::NetworkSessionCocoa):

Forwarding of the parameters.

  • SourcesCocoa.txt:
  • UIProcess/WebProcessPool.cpp:

(WebKit::WebProcessPool::ensureNetworkProcess):

Forwarding of the parameters.

  • UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm:

(WebKit::WebsiteDataStore::parameters):

This is where user defaults for Resource Load Statistics are now read.

  • WebKit.xcodeproj/project.pbxproj:
6:58 PM Changeset in webkit [242763] by Alan Bujtas
  • 8 edits in trunk

[Synthetic Click] Dispatch mouseout soon after mouseup
https://bugs.webkit.org/show_bug.cgi?id=195575
<rdar://problem/47093049>

Reviewed by Simon Fraser.

Source/WebCore:

Let's fire a mouseout event when a click is submitted as the result of a tap. It helps to dismiss content which would otherwise require you to move the mouse (cases like control bar on youtube.com).

Test: fast/events/touch/ios/content-observation/mouse-out-event-should-fire-on-click.html

  • page/EventHandler.h:
  • page/ios/EventHandlerIOS.mm:

(WebCore::EventHandler::dispatchFakeMouseOut):

Source/WebKit:

  • WebProcess/WebPage/ios/WebPageIOS.mm:

(WebKit::WebPage::completeSyntheticClick):

LayoutTests:

  • fast/events/touch/ios/content-observation/mouse-out-event-should-fire-on-click-expected.txt: Added.
  • fast/events/touch/ios/content-observation/mouse-out-event-should-fire-on-click.html: Added.
6:53 PM Changeset in webkit [242762] by timothy_horton@apple.com
  • 5 edits in trunk

API test WebKit.RequestTextInputContext fails on iOS
https://bugs.webkit.org/show_bug.cgi?id=195585

Reviewed by Wenson Hsieh and Simon Fraser.

Source/WebKit:

  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView _convertRectFromRootViewCoordinates:]):
(-[WKWebView _convertRectToRootViewCoordinates:]):
(-[WKWebView _requestTextInputContextsInRect:completionHandler:]):
(-[WKWebView _focusTextInputContext:completionHandler:]):

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::elementRectInRootViewCoordinates):
(WebKit::WebPage::textInputContextsInRect):
(WebKit::elementRectInWindowCoordinates): Deleted.
Text input context SPI should be in terms of WKWebView coordinates,
for consistency's sake. This is a bit irritating; WebPage(Proxy) continue
to operate in "root view" coordinates, which means different things
depending on if delegatesScrolling is true or not. So, WKWebView does
the conversion, re-creating objects as needed.

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/RequestTextInputContext.mm:

(applyStyle):
(TEST):
Add a viewport, so that the coordinates match up on iOS.
Scroll by moving the UIScrollView's contentOffset.

6:08 PM Changeset in webkit [242761] by youenn@apple.com
  • 2 edits in trunk/Source/WebCore

REGRESSION: (r242181) API test DragAndDropTests.ExternalSourcePlainTextToIFrame is Timing out
https://bugs.webkit.org/show_bug.cgi?id=195362

Reviewed by Alexey Proskuryakov.

Covered by API test no longer crashing.

  • page/SecurityOrigin.cpp:

(WebCore::originsMatch):
String representation should only match if originsMatch returns true.

5:57 PM Changeset in webkit [242760] by jiewen_tan@apple.com
  • 10 edits in trunk/Source/WebKit

Optimizing loads when creating new pages
https://bugs.webkit.org/show_bug.cgi?id=195516
<rdar://problem/48738086>

Reviewed by Darin Adler.

This patch adds hooks in WebPageProxy::createNewPage to optimize loads, and moves the creationParameters
of API::NavigationAction from UI clients to WebPageProxy::createNewPage. Also, we now pass the whole
API::NavigationAction to the load optimizer instead of the request within.

  • UIProcess/API/APINavigationAction.h:
  • UIProcess/API/APIUIClient.h:

(API::UIClient::createNewPage):

  • UIProcess/API/C/WKPage.cpp:

(WKPageSetPageUIClient):

  • UIProcess/API/glib/WebKitUIClient.cpp:
  • UIProcess/Cocoa/NavigationState.mm:

(WebKit::tryOptimizingLoad):
(WebKit::tryInterceptNavigation):
(WebKit::NavigationState::NavigationClient::decidePolicyForNavigationAction):

  • UIProcess/Cocoa/UIDelegate.h:
  • UIProcess/Cocoa/UIDelegate.mm:

(WebKit::UIDelegate::UIClient::createNewPage):

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::decidePolicyForNavigationAction):
(WebKit::tryOptimizingLoad):
(WebKit::WebPageProxy::createNewPage):

  • UIProcess/WebPageProxy.h:
5:46 PM Changeset in webkit [242759] by Justin Fan
  • 62 edits
    2 copies
    3 moves
    5 deletes in trunk

[Web GPU] Update GPUSwapChainDescriptor, GPUSwapChain and implement GPUCanvasContext
https://bugs.webkit.org/show_bug.cgi?id=194406
<rdar://problem/47892466>

Reviewed by Myles C. Maxfield.

Source/JavaScriptCore:

Added WebGPU to inspector context types.

  • inspector/protocol/Canvas.json:
  • inspector/scripts/codegen/generator.py:

Source/WebCore:

GPUSwapChain no longer inherits from GPUBasedRenderingContext, and is now created from a GPUDevice.
WebGPURenderingContext is now GPUCanvasContext and delegates functionality to the GPUSwapChain, if it exists.
GPUQueue now implicitly presents the GPUSwapChain's current drawable at the task boundary, if one exists.
Creating a new GPUSwapChain with the same GPUCanvasContext invalidates the previous one and its drawable and pipeline attachments.
Calling GPUSwapChain::getCurrentTexture returns the same drawable within one task cycle.
Some mentions of "WebGPU" have been renamed to "Web GPU" and "gpu".

All Web GPU tests updated to match.

Add new files and symbols.

  • CMakeLists.txt:
  • DerivedSources-input.xcfilelist:
  • DerivedSources-output.xcfilelist:
  • DerivedSources.make:
  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • bindings/js/WebCoreBuiltinNames.h:

Rename some mentions of "webgpu" to "gpu".

  • Modules/webgpu/DOMWindowWebGPU.cpp:

(WebCore::DOMWindowWebGPU::gpu):
(WebCore::DOMWindowWebGPU::gpu const):

  • Modules/webgpu/DOMWindowWebGPU.h:
  • Modules/webgpu/DOMWindowWebGPU.idl:

Replace WebGPURenderingContext with GPUCanvasContext.

  • Modules/webgpu/GPUCanvasContext.cpp: Renamed from Source/WebCore/Modules/webgpu/WebGPURenderingContext.cpp.

(WebCore::GPUCanvasContext::create):
(WebCore::GPUCanvasContext::GPUCanvasContext):
(WebCore::GPUCanvasContext::replaceSwapChain):
(WebCore::GPUCanvasContext::platformLayer const):
(WebCore::GPUCanvasContext::reshape):
(WebCore::GPUCanvasContext::markLayerComposited):

  • Modules/webgpu/GPUCanvasContext.h: Renamed from Source/WebCore/Modules/webgpu/WebGPURenderingContext.h.
  • Modules/webgpu/GPUCanvasContext.idl: Renamed from Source/WebCore/Modules/webgpu/WebGPURenderingContext.idl.
  • dom/Document.cpp:

(WebCore::Document::getCSSCanvasContext):

  • dom/Document.h:
  • dom/Document.idl:
  • html/HTMLCanvasElement.cpp:

(WebCore::HTMLCanvasElement::getContext):
(WebCore::HTMLCanvasElement::isWebGPUType):
(WebCore::HTMLCanvasElement::createContextWebGPU):
(WebCore::HTMLCanvasElement::getContextWebGPU):

  • html/HTMLCanvasElement.h:
  • html/HTMLCanvasElement.idl:
  • inspector/InspectorCanvas.cpp:

(WebCore::InspectorCanvas::buildObjectForCanvas):

  • inspector/agents/InspectorCanvasAgent.cpp:

(WebCore::contextAsScriptValue):

Update WebGPUSwapChain.

  • Modules/webgpu/GPUTextureDescriptor.idl:
  • Modules/webgpu/GPUTextureFormat.idl: Add the other two texture formats supported by CAMetalLayer.
  • Modules/webgpu/WebGPUDevice.cpp: Implement createSwapChain.

(WebCore::WebGPUDevice::createSwapChain const):
(WebCore::WebGPUDevice::getQueue const):
(WebCore::WebGPUDevice::getQueue): Deleted.

  • Modules/webgpu/WebGPUDevice.h:
  • Modules/webgpu/WebGPUDevice.idl:
  • Modules/webgpu/WebGPUSwapChain.cpp:

(WebCore::WebGPUSwapChain::create):
(WebCore::WebGPUSwapChain::WebGPUSwapChain):
(WebCore::WebGPUSwapChain::getCurrentTexture): Renamed from getNextTexture. Only returns the next drawable if the last was presented.
(WebCore::WebGPUSwapChain::destroy): Invalidate this GPUSwapChain and its textures and views.
(WebCore::WebGPUSwapChain::configure): Deleted.
(WebCore::WebGPUSwapChain::getNextTexture): Deleted.
(WebCore::WebGPUSwapChain::present): Deleted.
(WebCore::WebGPUSwapChain::reshape): Deleted.
(WebCore::WebGPUSwapChain::markLayerComposited): Deleted.

  • Modules/webgpu/WebGPUSwapChain.h: Now a device-based object rather than a rendering context.

(WebCore::WebGPUSwapChain::swapChain const):
(WebCore::WebGPUSwapChain::WebGPUSwapChain): Deleted.

  • Modules/webgpu/WebGPUSwapChain.idl:
  • Modules/webgpu/WebGPUSwapChainDescriptor.h: Added.
  • platform/graphics/gpu/GPUDevice.cpp: Implement tryCreateSwapChain.

(WebCore::GPUDevice::tryCreateSwapChain const):
(WebCore::GPUDevice::getQueue const):
(WebCore::GPUDevice::getQueue): Deleted.

  • platform/graphics/gpu/GPUDevice.h: Retain a reference to the current GPUSwapChain, if one exists.

(WebCore::GPUDevice::swapChain const):

  • platform/graphics/gpu/GPUQueue.h:
  • platform/graphics/gpu/GPUSwapChain.h:

(WebCore::GPUSwapChain::destroy):

  • platform/graphics/gpu/GPUSwapChainDescriptor.h: Added.
  • platform/graphics/gpu/GPUTextureFormat.h: Add the other two texture formats supported by CAMetalLayer.
  • platform/graphics/gpu/cocoa/GPUBufferMetal.mm:

(WebCore::GPUBuffer::commandBufferCommitted):

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

(WebCore::GPUQueue::tryCreate): Renamed from create to better fit functionality. Now retain a reference to the GPUDevice.
(WebCore::GPUQueue::GPUQueue):
(WebCore::GPUQueue::submit): Now checks state of all resources before marking them as committed or committing any resource.

In addition, schedules the current drawable to be presented after all commands have been submitted during this task cycle.

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

(WebCore::useAttachments): Ensure that the command buffer is aware of any texture resources used as attachments.
(WebCore::GPURenderPassEncoder::tryCreate):

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

(WebCore::tryGetSupportedPixelFormat): Supported texture formats are the intersection of Web GPU's texture formats and CAMetalLayer's.
(WebCore::setLayerShape):
(WebCore::tryCreateSwapLayer): Create and configure the CAMetalLayer backing the swap chain.
(WebCore::GPUSwapChain::tryCreate):
(WebCore::GPUSwapChain::GPUSwapChain):
(WebCore::GPUSwapChain::tryGetCurrentTexture): Renamed from getNextTexture. Only returns a texture if the last one was presented.
(WebCore::GPUSwapChain::present):
(WebCore::GPUSwapChain::reshape):
(WebCore::GPUSwapChain::takeDrawable): Swaps out the current drawable so that it can be presented. The GPUSwapChain thus releases its reference to it.
(WebCore::GPUSwapChain::create): Deleted.
(WebCore::GPUSwapChain::setDevice): Deleted.
(WebCore::GPUSwapChain::setFormat): Deleted.
(WebCore::GPUSwapChain::getNextTexture): Deleted.

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

(WebCore::platformTextureFormatForGPUTextureFormat):

Misc:

  • Modules/webgpu/WebGPUProgrammablePassEncoder.cpp: Missing include.

Source/WebInspectorUI:

Name updates for Web GPU renaming in inspector.

  • UserInterface/Models/Canvas.js:

(WI.Canvas.displayNameForContextType):

LayoutTests:

Update all tests for new WebGPUSwapChain and GPUCanvasContext, and window object name change from 'webgpu' to 'gpu'.
In addition, all tests have been updated to WPT style.

  • webgpu/adapter-options.html:
  • webgpu/buffer-command-buffer-races.html:
  • webgpu/buffer-resource-triangles.html:
  • webgpu/command-buffers-expected.txt:
  • webgpu/command-buffers.html:
  • webgpu/depth-enabled-triangle-strip.html:
  • webgpu/js/basic-webgpu-functions.js: Removed. No longer needed.
  • webgpu/js/webgpu-functions.js:

(async.getBasicDevice):
(createBasicSwapChain): Renamed from createBasicContext.
(beginBasicRenderPass):
(createBasicContext): Deleted.
(createBasicDepthStateDescriptor): Deleted.

  • webgpu/queue-creation.html:
  • webgpu/render-command-encoding-expected.txt:
  • webgpu/render-command-encoding.html:
  • webgpu/render-passes-expected.txt: Removed.
  • webgpu/render-passes.html: Removed for redundancy with other tests.
  • webgpu/shader-modules-expected.txt:
  • webgpu/shader-modules.html:
  • webgpu/simple-triangle-strip.html:
  • webgpu/texture-triangle-strip.html:
  • webgpu/textures-textureviews.html:
  • webgpu/vertex-buffer-triangle-strip.html:
  • webgpu/webgpu-basics-expected.txt: Removed.
  • webgpu/webgpu-basics.html: Removed for redundancy with other tests.
  • webgpu/webgpu-enabled-expected.txt:
  • webgpu/webgpu-enabled.html:
5:11 PM Changeset in webkit [242758] by Simon Fraser
  • 2 edits in trunk/LayoutTests

[iOS WK2] REGRESSION (r242687): Programmatic scroll of overflow scroll results in bad rendering
https://bugs.webkit.org/show_bug.cgi?id=195584

Unreviewed test gardening. Mark compositing/ios/overflow-scroll-update-overlap.html as failing
since I want to unskip and land a fix with additional tests.

  • platform/ios-wk2/TestExpectations:
4:43 PM Changeset in webkit [242757] by dino@apple.com
  • 25 edits
    2 moves
    3 adds in trunk

[iOS] Implement a faster click detection that intercepts double-tap-to-zoom if possible
https://bugs.webkit.org/show_bug.cgi?id=195473
<rdar://problem/48718396>

Reviewed by Wenson Hsieh (with some help from Dan Bates).

Source/WebKit:

Adds a new algorithm, behind a flag FasterClicksEnabled, that can trigger a click
event without waiting to see if a double tap will occur. It does this by examining
the amount of zoom that would be triggered if it was a double tap, and if that value
doesn't exceed a set threshold, commits to the click event instead.

This is implemented by having the Web Process respond to the potential click with
some geometry information. If the UI Process receives the information before the
second tap in a double tap, it can decide to trigger a click.

  • Shared/WebPreferences.yaml: New internal feature so this can be toggled in

a UI for testing.

  • SourcesCocoa.txt: Renamed WKSyntheticTapGestureRecognizer.
  • WebKit.xcodeproj/project.pbxproj: Ditto.
  • UIProcess/ios/WKSyntheticTapGestureRecognizer.h:
  • UIProcess/ios/WKSyntheticTapGestureRecognizer.m:

(-[WKSyntheticTapGestureRecognizer setGestureIdentifiedTarget:action:]):
(-[WKSyntheticTapGestureRecognizer setGestureFailedTarget:action:]):
(-[WKSyntheticTapGestureRecognizer setResetTarget:action:]):
(-[WKSyntheticTapGestureRecognizer setState:]):
(-[WKSyntheticTapGestureRecognizer reset]): Renamed WKSyntheticClickTapGestureRecognizer to

WKSyntheticTapGestureRecognizer, changed the signature of the main function to be a bit
more clear about what it does, and added a gesture failed target.

  • UIProcess/API/Cocoa/WKWebViewInternal.h:
  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView _initialScaleFactor]):
(-[WKWebView _contentZoomScale]):
(-[WKWebView _targetContentZoomScaleForRect:currentScale:fitEntireRect:minimumScale:maximumScale:]):

Exposed the initial content scale, the current scale and added a declaration that
was missing from the .h.

  • UIProcess/WebPageProxy.messages.in: Add a new message,

HandleSmartMagnificationInformationForPotentialTap, to
communicate the geometry of the clicked node to the UI Process.

  • UIProcess/PageClient.h: Pure virtual function for the geometry message response.
  • UIProcess/WebPageProxy.h: Ditto.
  • UIProcess/ios/PageClientImplIOS.h: Calls into the WKContentView.
  • UIProcess/ios/PageClientImplIOS.mm:

(WebKit::PageClientImpl::handleSmartMagnificationInformationForPotentialTap):

  • UIProcess/ios/SmartMagnificationController.h:
  • UIProcess/ios/SmartMagnificationController.mm:

(WebKit::SmartMagnificationController::calculatePotentialZoomParameters): A new method that

asks the WKContentView to work out what the zoom factor will be for a potential double
tap at a location.

(WebKit::SmartMagnificationController::smartMagnificationTargetRectAndZoomScales): New implementation

of this function to avoid multiple out-arguments.

  • UIProcess/ios/WKContentView.h:
  • UIProcess/ios/WKContentView.mm:

(-[WKContentView _initialScaleFactor]):
(-[WKContentView _contentZoomScale]):
(-[WKContentView _targetContentZoomScaleForRect:currentScale:fitEntireRect:minimumScale:maximumScale:]):

Exposed the initial content scale, the current scale and the target zoom scale. These
all just call into the WKWebView implementation.

  • UIProcess/ios/WKContentViewInteraction.h:
  • UIProcess/ios/WKContentViewInteraction.mm:

(-[WKContentView _createAndConfigureDoubleTapGestureRecognizer]): Use a WKSyntheticTapGestureRecognizer instead

of a generic one, so we can capture the failure.

(-[WKContentView setupInteraction]):
(-[WKContentView cleanupInteraction]):
(-[WKContentView _handleSmartMagnificationInformationForPotentialTap:origin:renderRect:fitEntireRect:viewportMinimumScale:viewportMaximumScale:]):

New method that responds to the incoming Web Process message, and decides if any
potential zoom would be "significant".

(-[WKContentView _singleTapIdentified:]):
(-[WKContentView _doubleTapDidFail:]):
(-[WKContentView _didCompleteSyntheticClick]):
(-[WKContentView _singleTapRecognized:]):
(-[WKContentView _doubleTapRecognized:]):

Add some release logging.

(-[WKContentView _singleTapCommited:]): Deleted.

  • UIProcess/ios/WebPageProxyIOS.mm:

(WebKit::WebPageProxy::potentialTapAtPosition):
(WebKit::WebPageProxy::handleSmartMagnificationInformationForPotentialTap):

  • WebProcess/WebPage/ViewGestureGeometryCollector.h:
  • WebProcess/WebPage/WebPage.h:
  • WebProcess/WebPage/WebPage.messages.in:

Removed an unused parameter from the existing message.

  • WebProcess/WebPage/ios/WebPageIOS.mm:

(WebKit::WebPage::potentialTapAtPosition): Calculates the geometry of the element
if requested, and sends it to the UIProcess.

LayoutTests:

Implement a test (iPad only) that sets up a page with zoomable content
but not quite at a significant scale, meaning we should dispatch a click
event rather than Double Tap To Zoom.

In order to do this, a humanSpeedDoubleTapAt() method was added to
UIHelper that sleeps a bit between taps, otherwise the double tap
gesture is recognized before the Web Process has had a chance to
evaluate the potential click.

  • fast/events/ios/ipad/fast-click-double-tap-sends-click-on-insignificant-zoom-expected.txt: Added.
  • fast/events/ios/ipad/fast-click-double-tap-sends-click-on-insignificant-zoom.html: Added.
  • platform/ios/TestExpectations:
  • platform/ipad/TestExpectations:
  • resources/ui-helper.js:

(window.UIHelper.humanSpeedDoubleTapAt):

4:36 PM Changeset in webkit [242756] by pvollan@apple.com
  • 2 edits in trunk/Source/WebKit

Unreviewed build fix after r242745.

  • UIProcess/Cocoa/WebProcessPoolCocoa.mm:

(WebKit::WebProcessPool::registerNotificationObservers):
(WebKit::WebProcessPool::unregisterNotificationObservers):

4:31 PM Changeset in webkit [242755] by Chris Dumez
  • 4 edits in trunk

Assert in WebPageProxy::suspendCurrentPageIfPossible()
https://bugs.webkit.org/show_bug.cgi?id=195506
<rdar://problem/48733477>

Reviewed by Alex Christensen.

Source/WebKit:

The crash was caused by the top-hit preloading logic in MobileSafari which creates a new Web view that is *related*
to the previous one, restores the session state onto it and then triggers a load in this new Web view.

Initially, the 2 Web views use the same process as they are related. However, if the new load's URL is cross-site
with regards to the first view's URL, then we decide to process swap in the new view. This process swap makes
sense from a security standpoint. However, when we commit the load in the new process and call
suspendCurrentPageIfPossible() we end up in an unexpected state because we have a fromItem (due to the session
state having been restored on the new view) but we haven't committed any load yet in this new view.

To address the issue, suspendCurrentPageIfPossible() now returns early and does not attempt to suspend anything
if we have not committed any load yet.

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::suspendCurrentPageIfPossible):
Do not attempt to suspend to current page if we have not committed any provisional load yet.

Tools:

Add API test coverage.

  • TestWebKitAPI/Tests/WebKitCocoa/ProcessSwapOnNavigation.mm:
4:30 PM Changeset in webkit [242754] by Shawn Roberts
  • 2 edits in trunk/Tools

Adding myself to contributors.json

Unreviewed, addming myself to contributors.json .

  • Scripts/webkitpy/common/config/contributors.json:
4:14 PM Changeset in webkit [242753] by Chris Dumez
  • 16 edits in trunk/Source

Update device orientation & motion permission native SPI as per latest proposal
https://bugs.webkit.org/show_bug.cgi?id=195567

Reviewed by Youenn Fablet.

Source/WebCore:

  • dom/DeviceOrientationAndMotionAccessController.cpp:

(WebCore::DeviceOrientationAndMotionAccessController::shouldAllowAccess):

  • page/ChromeClient.h:

Source/WebKit:

The native SPI is now:
+- (void)_webView:(WKWebView *)webView shouldAllowDeviceOrientationAndMotionAccessRequestedByFrame:(WKFrameInfo *)frameInfo decisionHandler:(void ()(BOOL))decisionHandler;

  • UIProcess/API/APIUIClient.h:

(API::UIClient::shouldAllowDeviceOrientationAndMotionAccess):

  • UIProcess/API/C/WKPage.cpp:

(WKPageSetPageUIClient):

  • UIProcess/API/Cocoa/WKUIDelegatePrivate.h:
  • UIProcess/Cocoa/UIDelegate.h:
  • UIProcess/Cocoa/UIDelegate.mm:

(WebKit::UIDelegate::setDelegate):
(WebKit::UIDelegate::UIClient::shouldAllowDeviceOrientationAndMotionAccess):

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::requestDeviceOrientationAndMotionAccess):

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

(WebKit::WebChromeClient::shouldAllowDeviceOrientationAndMotionAccess):

  • WebProcess/WebCoreSupport/WebChromeClient.h:
  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::shouldAllowDeviceOrientationAndMotionAccess):

  • WebProcess/WebPage/WebPage.h:
4:08 PM Changeset in webkit [242752] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: Editing Timelines shows two CPU Timelines
https://bugs.webkit.org/show_bug.cgi?id=195578

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2019-03-11
Reviewed by Devin Rousso.

  • UserInterface/Controllers/TimelineManager.js:

(WI.TimelineManager.availableTimelineTypes):
The CPU Instrument is already in the default list.

3:58 PM Changeset in webkit [242751] by bshafiei@apple.com
  • 7 edits in tags/Safari-608.1.8.2/Source

Versioning.

3:55 PM Changeset in webkit [242750] by bshafiei@apple.com
  • 1 copy in tags/Safari-608.1.8.2

Tag Safari-608.1.8.2.

3:46 PM Changeset in webkit [242749] by Wenson Hsieh
  • 4 edits
    2 adds in trunk

[macOS] Dispatching reentrant "contextmenu" events may cause crashes
https://bugs.webkit.org/show_bug.cgi?id=195571
<rdar://problem/48086046>

Reviewed by Andy Estes.

Source/WebCore:

Make ContextMenuController::handleContextMenuEvent robust against reentrancy by guarding it with a boolean flag.
As demonstrated in the test case, it is currently possible to force WebKit into a bad state by dispatching a
synthetic "contextmenu" event from within the scope of one of the "before(copy|cut|paste)" events triggered as
a result of handling a context menu event.

Test: fast/events/contextmenu-reentrancy-crash.html

  • page/ContextMenuController.cpp:

(WebCore::ContextMenuController::handleContextMenuEvent):

  • page/ContextMenuController.h:

LayoutTests:

Add a test to verify that triggering reentrant "contextmenu" events from script does not cause a crash.

  • fast/events/contextmenu-reentrancy-crash-expected.txt: Added.
  • fast/events/contextmenu-reentrancy-crash.html: Added.
3:42 PM Changeset in webkit [242748] by aestes@apple.com
  • 36 edits
    1 copy
    2 adds in trunk/Source

[Apple Pay] Use PKPaymentAuthorizationController to present the Apple Pay UI remotely from the Networking service on iOS
https://bugs.webkit.org/show_bug.cgi?id=195530
<rdar://problem/48747164>

Reviewed by Alex Christensen.

Source/WebCore:

  • Modules/applepay/PaymentCoordinatorClient.h: Defined isWebPaymentCoordinator.
  • page/Settings.yaml: Defined the applePayRemoteUIEnabled setting and reordered the other

Apple Pay settings.

Source/WebCore/PAL:

  • pal/cocoa/PassKitSoftLink.h: Soft-linked PKPaymentAuthorizationController on iOS.
  • pal/cocoa/PassKitSoftLink.mm: Ditto.
  • pal/spi/cocoa/PassKitSPI.h: Declared PKPaymentAuthorizationControllerPrivateDelegate and

related SPI.

Source/WebKit:

  • Configurations/Network-iOS.entitlements: Added the 'com.apple.payment.all-access'

entitlement and reordered the others.

  • NetworkProcess/NetworkConnectionToWebProcess.cpp:

(WebKit::NetworkConnectionToWebProcess::didReceiveMessage): Forwarded
WebPaymentCoordinatorProxy messages to the payment coordinator.
(WebKit::NetworkConnectionToWebProcess::didReceiveSyncMessage): Ditto.
(WebKit::NetworkConnectionToWebProcess::didClose): Set m_paymentCoordinator to nullptr.

  • NetworkProcess/NetworkConnectionToWebProcess.h: Inherited from

WebPaymentCoordinatorProxy::Client and added a unique_ptr<WebPaymentCoordinatorProxy> member.

  • NetworkProcess/cocoa/NetworkSessionCocoa.h: Declared getters for source application bundle

and secondary identifiers, and CTDataConnectionServiceType on iOS.

  • NetworkProcess/cocoa/NetworkSessionCocoa.mm:

(WebKit::NetworkSessionCocoa::sourceApplicationBundleIdentifier const): Defined getter.
(WebKit::NetworkSessionCocoa::sourceApplicationSecondaryIdentifier const): Ditto.
(WebKit::NetworkSessionCocoa::ctDataConnectionServiceType const): Ditto.
(WebKit::NetworkSessionCocoa::NetworkSessionCocoa): Initialized
m_sourceApplicationBundleIdentifier and m_sourceApplicationSecondaryIdentifier with
corresponding NetworkSessionCreationParameters.

  • NetworkProcess/ios/NetworkConnectionToWebProcessIOS.mm: Added.

(WebKit::NetworkConnectionToWebProcess::paymentCoordinator): Added. Returns
m_paymentCoordinator after lazily initializing it.
(WebKit::NetworkConnectionToWebProcess::paymentCoordinatorConnection): Added. Returns the
connection to the web process.
(WebKit::NetworkConnectionToWebProcess::paymentCoordinatorPresentingViewController): Added.
Returns nil.
(WebKit::NetworkConnectionToWebProcess::paymentCoordinatorCTDataConnectionServiceType):
Added. Returns the value from the network session identified by sessionID.
(WebKit::NetworkConnectionToWebProcess::paymentCoordinatorSourceApplicationBundleIdentifier):
Ditto.
(WebKit::NetworkConnectionToWebProcess::paymentCoordinatorSourceApplicationSecondaryIdentifier):
Ditto.
(WebKit::NetworkConnectionToWebProcess::paymentCoordinatorAuthorizationPresenter): Added.
Returns a new PaymentAuthorizationController.
(WebKit::NetworkConnectionToWebProcess::paymentCoordinatorAddMessageReceiver): Added empty
definition. NetworkConnectionToWebProcess explicitly forwards WebPaymentCoordinatorProxy
messages to its payment coordinator, so there's no need to register with a MessageReceiverMap.
(WebKit::NetworkConnectionToWebProcess::paymentCoordinatorRemoveMessageReceiver): Ditto.

  • Platform/ios/PaymentAuthorizationController.h: Added. Declares a

PaymentAuthorizationPresenter subclass based on PKPaymentAuthorizationController.

  • Platform/ios/PaymentAuthorizationController.mm: Added.

(-[WKPaymentAuthorizationControllerDelegate initWithRequest:presenter:]):
Initialized WKPaymentAuthorizationDelegate with request and presenter.
(-[WKPaymentAuthorizationControllerDelegate paymentAuthorizationControllerDidFinish:]):
Forwarded call to WKPaymentAuthorizationDelegate.
(-[WKPaymentAuthorizationControllerDelegate paymentAuthorizationController:didAuthorizePayment:handler:]):
Ditto.
(-[WKPaymentAuthorizationControllerDelegate paymentAuthorizationController:didSelectShippingMethod:handler:]):
Ditto.
(-[WKPaymentAuthorizationControllerDelegate paymentAuthorizationController:didSelectShippingContact:handler:]):
Ditto.
(-[WKPaymentAuthorizationControllerDelegate paymentAuthorizationController:didSelectPaymentMethod:handler:]):
Ditto.
(-[WKPaymentAuthorizationControllerDelegate paymentAuthorizationController:willFinishWithError:]):
Ditto.
(-[WKPaymentAuthorizationControllerDelegate paymentAuthorizationController:didRequestMerchantSession:]):
Ditto.
(WebKit::PaymentAuthorizationController::PaymentAuthorizationController):
Initialized m_controller with a new PKPaymentAuthorizationController and m_delegate with a
new WKPaymentAuthorizationControllerDelegate.
(WebKit::PaymentAuthorizationController::platformDelegate): Returned m_delegate.
(WebKit::PaymentAuthorizationController::dismiss): Dismissed the controller, set its
delegates to nil, set m_controller to nil, invalidated the delegate, and set m_delegate to
nil.
(WebKit::PaymentAuthorizationController::present): Called -presentWithCompletion: on the
controller, forwarding the passed-in completion handler.

  • Resources/SandboxProfiles/ios/com.apple.WebKit.Networking.sb: Allowed PassKit to look up

the "com.apple.passd.in-app-payment" and "com.apple.passd.library" service endpoints.

  • Shared/ApplePay/WebPaymentCoordinatorProxy.cpp:

(WebKit::WebPaymentCoordinatorProxy::WebPaymentCoordinatorProxy): Changed to call
paymentCoordinatorAddMessageReceiver.
(WebKit::WebPaymentCoordinatorProxy::~WebPaymentCoordinatorProxy): Changed to call
paymentCoordinatorRemoveMessageReceiver.
(WebKit::WebPaymentCoordinatorProxy::messageSenderDestinationID const): Deleted.
(WebKit::WebPaymentCoordinatorProxy::canMakePaymentsWithActiveCard): Passed sessionID to
platformCanMakePaymentsWithActiveCard.
(WebKit::WebPaymentCoordinatorProxy::showPaymentUI): Stored destinationID and passed
sessionID to platformShowPaymentUI.
(WebKit::WebPaymentCoordinatorProxy::cancelPaymentSession): Changed to account for new
behavior of didCancelPaymentSession.
(WebKit::WebPaymentCoordinatorProxy::didCancelPaymentSession): Changed to call hidePaymentUI.
(WebKit::WebPaymentCoordinatorProxy::presenterDidFinish): Changed to only call hidePaymentUI
when didReachFinalState is true, since didCancelPaymentSession is called otherwise.
(WebKit::WebPaymentCoordinatorProxy::didReachFinalState): Cleared m_destinationID.

  • Shared/ApplePay/WebPaymentCoordinatorProxy.h: Added m_destionationID member.
  • Shared/ApplePay/WebPaymentCoordinatorProxy.messages.in: Changed

CanMakePaymentsWithActiveCard and ShowPaymentUI messages to take destinationID and sessionID
arguments.

  • Shared/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.mm:

(WebKit::WebPaymentCoordinatorProxy::platformCanMakePaymentsWithActiveCard): Passed
sessionID to paymentCoordinatorSourceApplicationSecondaryIdentifier.
(WebKit::WebPaymentCoordinatorProxy::platformPaymentRequest): Passed sessionID to various
m_client call sites.

  • Shared/ApplePay/ios/WebPaymentCoordinatorProxyIOS.mm:

(WebKit::WebPaymentCoordinatorProxy::platformShowPaymentUI): Passed sessionID to
platformPaymentRequest.
(WebKit::WebPaymentCoordinatorProxy::hidePaymentUI): Null-checked m_authorizationPresenter
before calling dismiss.

  • Shared/ApplePay/mac/WebPaymentCoordinatorProxyMac.mm:

(WebKit::WebPaymentCoordinatorProxy::platformShowPaymentUI): Passed sessionID to
platformPaymentRequest.
(WebKit::WebPaymentCoordinatorProxy::hidePaymentUI): Null-checked m_authorizationPresenter
before calling dismiss.

  • Shared/WebPreferences.yaml: Added ApplePayRemoteUIEnabled as an internal preference.
  • SourcesCocoa.txt: Added NetworkConnectionToWebProcessIOS.mm and

PaymentAuthorizationController.mm.

  • UIProcess/AuxiliaryProcessProxy.h:

(WebKit::AuxiliaryProcessProxy::messageReceiverMap): Deleted.

  • UIProcess/Cocoa/WebPageProxyCocoa.mm:

(WebKit::WebPageProxy::paymentCoordinatorConnection): Moved from WebPageProxy.cpp.
(WebKit::WebPageProxy::paymentCoordinatorSourceApplicationBundleIdentifier): Ditto.
(WebKit::WebPageProxy::paymentCoordinatorSourceApplicationSecondaryIdentifier): Ditto.
(WebKit::WebPageProxy::paymentCoordinatorAddMessageReceiver): Ditto.
(WebKit::WebPageProxy::paymentCoordinatorRemoveMessageReceiver): Ditto.

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::paymentCoordinatorConnection): Moved to WebPageProxyCocoa.mm.
(WebKit::WebPageProxy::paymentCoordinatorMessageReceiver): Ditto.
(WebKit::WebPageProxy::paymentCoordinatorSourceApplicationBundleIdentifier): Ditto.
(WebKit::WebPageProxy::paymentCoordinatorSourceApplicationSecondaryIdentifier): Ditto.
(WebKit::WebPageProxy::paymentCoordinatorDestinationID): Ditto.

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

(WebKit::WebPageProxy::paymentCoordinatorCTDataConnectionServiceType): Asserted that
sessionID equals the website data store's sessionID.

  • WebKit.xcodeproj/project.pbxproj:
  • WebProcess/ApplePay/WebPaymentCoordinator.cpp:

(WebKit::WebPaymentCoordinator::networkProcessConnectionClosed): Added. Cancels the current
session if Apple Pay Remote UI is enabled and the network process connection closes.
(WebKit::WebPaymentCoordinator::availablePaymentNetworks): Changed to account for
WebPaymentCoordinator being an IPC::MessageSender.
(WebKit::WebPaymentCoordinator::canMakePayments): Ditto.
(WebKit::WebPaymentCoordinator::canMakePaymentsWithActiveCard): Ditto.
(WebKit::WebPaymentCoordinator::openPaymentSetup): Ditto.
(WebKit::WebPaymentCoordinator::showPaymentUI): Ditto.
(WebKit::WebPaymentCoordinator::completeMerchantValidation): Ditto.
(WebKit::WebPaymentCoordinator::completeShippingMethodSelection): Ditto.
(WebKit::WebPaymentCoordinator::completeShippingContactSelection): Ditto.
(WebKit::WebPaymentCoordinator::completePaymentMethodSelection): Ditto.
(WebKit::WebPaymentCoordinator::completePaymentSession): Ditto.
(WebKit::WebPaymentCoordinator::abortPaymentSession): Ditto.
(WebKit::WebPaymentCoordinator::cancelPaymentSession): Ditto.
(WebKit::WebPaymentCoordinator::messageSenderConnection const): Added. Returns a connection
to the network process if Apple Pay Remote UI is enabled. Otherwise, returned the web
process's parent connection.
(WebKit::WebPaymentCoordinator::messageSenderDestinationID const): Added. Returns the web
page's ID.
(WebKit::WebPaymentCoordinator::remoteUIEnabled const): Added. Calls Settings::applePayRemoteUIEnabled.

  • WebProcess/ApplePay/WebPaymentCoordinator.h: Inherited from IPC::MessageSender.
  • WebProcess/Network/NetworkProcessConnection.cpp:

(WebKit::NetworkProcessConnection::didReceiveMessage): Forwarded WebPaymentCoordinator
messages to the payment coordinator of the web page matching the decoder's destination ID.
(WebKit::NetworkProcessConnection::didReceiveSyncMessage): Ditto for sync messages.

  • WebProcess/WebPage/Cocoa/WebPageCocoa.mm:

(WebKit::WebPage::paymentCoordinator): Added a payment coordinator getter.

  • WebProcess/WebPage/WebPage.h: Ditto.
  • WebProcess/WebProcess.cpp:

(WebKit::WebProcess::networkProcessConnectionClosed): Called
WebPaymentCoordinator::networkProcessConnectionClosed when the network process connection
closes.

Source/WTF:

  • wtf/FeatureDefines.h: Defined ENABLE_APPLE_PAY_REMOTE_UI.
3:37 PM Changeset in webkit [242747] by ysuzuki@apple.com
  • 2 edits in trunk/Source/WTF

[JSC] Make StaticStringImpl & StaticSymbolImpl actually static
https://bugs.webkit.org/show_bug.cgi?id=194212

Reviewed by Mark Lam.

Avoid mutation onto refcounts if isStatic() returns true so that the content of StaticStringImpl never gets modified.

  • wtf/text/StringImpl.h:

(WTF::StringImpl::ref):
(WTF::StringImpl::deref):

3:31 PM Changeset in webkit [242746] by achristensen@apple.com
  • 4 edits in trunk/Source/WebCore

Soft linking to Reveal framework should be optional
https://bugs.webkit.org/show_bug.cgi?id=195576
<rdar://problem/46822452>

Reviewed by Megan Gardner.

Source/WebCore:

Systems exist with ENABLE(REVEAL) true and the Reveal framework does not exist.

  • editing/cocoa/DictionaryLookup.mm:

(WebCore::showPopupOrCreateAnimationController):

Source/WebCore/PAL:

  • pal/spi/cocoa/RevealSPI.h:
3:15 PM Changeset in webkit [242745] by pvollan@apple.com
  • 9 edits in trunk/Source/WebKit

[iOS] Block access to backboardd service
https://bugs.webkit.org/show_bug.cgi?id=195484

Reviewed by Brent Fulgham.

This patch is addressing blocking the backboardd service "com.apple.backboard.hid.services". Getting the
backlight level in the WebContent process will initiate a connection with this service. To be able to
block the service, the backlight level is queried in the UI process and sent to the WebContent process
when the WebContent process is started, and when the backlight level is changed. On the WebContent side,
the method getting the backlight level is swizzled to return the value sent from the UI process.

  • Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb:
  • UIProcess/Cocoa/WebProcessPoolCocoa.mm:

(WebKit::WebProcessPool::displayBrightness):
(WebKit::WebProcessPool::backlightLevelDidChangeCallback):
(WebKit::WebProcessPool::registerNotificationObservers):
(WebKit::WebProcessPool::unregisterNotificationObservers):

  • UIProcess/WebProcessPool.cpp:

(WebKit::WebProcessPool::initializeNewWebProcess):

  • UIProcess/WebProcessPool.h:
  • WebProcess/WebProcess.h:
  • WebProcess/WebProcess.messages.in:
  • WebProcess/cocoa/WebProcessCocoa.mm:

(WebKit::currentBacklightLevel):
(WebKit::WebProcess::backlightLevelDidChange):

3:12 PM Changeset in webkit [242744] by Truitt Savell
  • 2 edits in trunk/LayoutTests

REGRESSION: Layout Test media/media-fullscreen-return-to-inline.html is a flaky timeout
https://bugs.webkit.org/show_bug.cgi?id=193399

Unreviewed test gardening.

  • platform/mac/TestExpectations:
2:56 PM Changeset in webkit [242743] by Devin Rousso
  • 5 edits
    1 add in trunk/Source/WebInspectorUI

Web Inspector: DOMDebugger: protocol error on first open
https://bugs.webkit.org/show_bug.cgi?id=195248
<rdar://problem/48538465>

Reviewed by Joseph Pecoraro.

Don't try to call DOMDebugger commands until a target has been initialized.
Still attempt to resolve DOM breakpoints whenever the main resource/frame changes.

  • UserInterface/Controllers/DOMDebuggerManager.js:

(WI.DOMDebuggerManager):
(WI.DOMDebuggerManager.prototype.initializeTarget): Added.
(WI.DOMDebuggerManager.supportsEventBreakpoints):
(WI.DOMDebuggerManager.prototype.get supported):
(WI.DOMDebuggerManager.prototype.addDOMBreakpoint):
(WI.DOMDebuggerManager.prototype.removeDOMBreakpoint):
(WI.DOMDebuggerManager.prototype.addEventBreakpoint):
(WI.DOMDebuggerManager.prototype.removeEventBreakpoint):
(WI.DOMDebuggerManager.prototype.addURLBreakpoint):
(WI.DOMDebuggerManager.prototype.removeURLBreakpoint):
(WI.DOMDebuggerManager.prototype._speculativelyResolveDOMBreakpointsForURL): Added.
(WI.DOMDebuggerManager.prototype._resolveDOMBreakpoint):
(WI.DOMDebuggerManager.prototype._updateDOMBreakpoint):
(WI.DOMDebuggerManager.prototype._updateEventBreakpoint):
(WI.DOMDebuggerManager.prototype._updateURLBreakpoint):
(WI.DOMDebuggerManager.prototype._saveDOMBreakpoints):
(WI.DOMDebuggerManager.prototype._handleDOMBreakpointDisabledStateChanged):
(WI.DOMDebuggerManager.prototype._handleEventBreakpointDisabledStateChanged):
(WI.DOMDebuggerManager.prototype._handleURLBreakpointDisabledStateChanged):
(WI.DOMDebuggerManager.prototype._mainFrameDidChange):
(WI.DOMDebuggerManager.prototype._mainResourceDidChange):
(WI.DOMDebuggerManager.prototype.removeEventBreakpoint.breakpointRemoved): Deleted.
(WI.DOMDebuggerManager.prototype._speculativelyResolveBreakpoints): Deleted.
(WI.DOMDebuggerManager.prototype._updateDOMBreakpoint.breakpointUpdated): Deleted.
(WI.DOMDebuggerManager.prototype._resolveEventBreakpoint): Deleted.
(WI.DOMDebuggerManager.prototype._resolveURLBreakpoint): Deleted.

  • UserInterface/Base/Multimap.js: Added.

(Multimap):
(Multimap.prototype.get):
(Multimap.prototype.add):
(Multimap.prototype.delete):
(Multimap.prototype.clear):
(Multimap.prototype.keys):
(Multimap.prototype.*values):
(Multimap.prototype.*[Symbol.iterator]):
(Multimap.prototype.toJSON):

  • .eslintrc:
  • UserInterface/Main.html:
  • UserInterface/Test.html:

Helper data structure for managing Maps of Sets (e.g. all DOM breakpoints for a URL).

2:55 PM Changeset in webkit [242742] by ysuzuki@apple.com
  • 18 edits in trunk/Source

[JSC] Reduce # of structures in JSGlobalObject initialization
https://bugs.webkit.org/show_bug.cgi?id=195498

Reviewed by Darin Adler.

Source/JavaScriptCore:

This patch reduces # of structure allocations in JSGlobalObject initialization. Now it becomes 141, it fits in one
MarkedBlock and this patch drops one MarkedBlock used for Structure previously.

  • CMakeLists.txt:
  • DerivedSources-output.xcfilelist:
  • DerivedSources.make:
  • JavaScriptCore.xcodeproj/project.pbxproj:
  • runtime/ArrayIteratorPrototype.cpp:

(JSC::ArrayIteratorPrototype::finishCreation): ArrayIteratorPrototype, MapIteratorPrototype, and StringIteratorPrototype's
"next" properties are referenced by JSGlobalObject::init, and it causes reification of the lazy "next" property and structure
transition anyway. So we should put it eagerly "without-transition" configuration to avoid one structure transition.

  • runtime/ArrayPrototype.cpp:

(JSC::ArrayPrototype::finishCreation): @@unscopable object's structure should be dictionary because (1) it is used as a dictionary
in with-scope-resolution and (2) since with-scope-resolution is C++ runtime function anyway, non-dictionary structure does not add
any performance benefit. This change saves several structures that are not useful.

  • runtime/ClonedArguments.cpp:

(JSC::ClonedArguments::createStructure): Bake CloneArguments's structure with 'without-transition' manner.

  • runtime/JSGlobalObject.cpp:

(JSC::JSGlobalObject::init): Previously we are always call resetProtoype at the end of JSGlobalObject::init. But it is not necessary
since we do not change Prototype of JSGlobalObject. All we want is (1) fixupPrototypeChainWithObjectPrototype's operation and (2) setGlobalThis
operation. Since setGlobalThis part is done in JSGlobalObject::finishCreation, fixupPrototypeChainWithObjectPrototype is only the thing
we should do here.

(JSC::JSGlobalObject::fixupPrototypeChainWithObjectPrototype):
(JSC::JSGlobalObject::resetPrototype): If the Prototype is the same to the current Prototype, we can skip the operation.

  • runtime/JSGlobalObject.h:
  • runtime/MapIteratorPrototype.cpp:

(JSC::MapIteratorPrototype::finishCreation):

  • runtime/NullGetterFunction.h:
  • runtime/NullSetterFunction.h: Since structures of them are allocated per JSGlobalObject and they are per-JSGlobalObject,

we can use without-transition property addition.

  • runtime/StringIteratorPrototype.cpp:

(JSC::StringIteratorPrototype::finishCreation):

  • runtime/VM.cpp:

(JSC::VM::VM):
(JSC::VM::setIteratorStructureSlow):
(JSC::VM::mapIteratorStructureSlow): These structures are only used in WebCore's main thread.

  • runtime/VM.h:

(JSC::VM::setIteratorStructure):
(JSC::VM::mapIteratorStructure):

Source/WebCore:

  • bindings/js/SerializedScriptValue.cpp:

(WebCore::CloneSerializer::serialize):

2:26 PM Changeset in webkit [242741] by Joseph Pecoraro
  • 9 edits
    2 deletes in trunk/Source/WebInspectorUI

Web Inspector: CPU Usage Timeline - Enable by default
https://bugs.webkit.org/show_bug.cgi?id=195471

Reviewed by Devin Rousso.

Remove experimental setting and include the CPU timeline in the
default set of timelines.

  • UserInterface/Base/Setting.js:
  • UserInterface/Controllers/TimelineManager.js:

(WI.TimelineManager.defaultTimelineTypes):

  • UserInterface/Main.html:
  • UserInterface/Views/CPUTimelineOverviewGraph.css:

(.timeline-overview-graph.cpu > .stacked-column-chart > svg > rect.selected):
(.timeline-overview-graph.cpu > .column-chart > svg > rect): Deleted.
(body[dir=rtl] .timeline-overview-graph.cpu > .column-chart): Deleted.

  • UserInterface/Views/CPUTimelineOverviewGraph.js:

(WI.CPUTimelineOverviewGraph):
(WI.CPUTimelineOverviewGraph.prototype.layout):

  • UserInterface/Views/ContentView.js:

(WI.ContentView.createFromRepresentedObject):

  • UserInterface/Views/LegacyCPUTimelineView.css: Removed.
  • UserInterface/Views/LegacyCPUTimelineView.js: Removed.
  • UserInterface/Views/SettingsTabContentView.js:

(WI.SettingsTabContentView.prototype._createExperimentalSettingsView):

  • UserInterface/Views/Variables.css:

(:root):

2:26 PM Changeset in webkit [242740] by Joseph Pecoraro
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: CPU Usage Timeline - Better Thread chart layout values
https://bugs.webkit.org/show_bug.cgi?id=195547

Reviewed by Devin Rousso.

  • UserInterface/Views/CPUTimelineView.js:

(WI.CPUTimelineView.prototype.layout.bestThreadLayoutMax):
(WI.CPUTimelineView.prototype.layout.layoutView):
(WI.CPUTimelineView.prototype._showGraphOverlay):
Include a separate layoutMax for the combined view and a thread layoutMax
for the thread groups.

2:26 PM Changeset in webkit [242739] by Joseph Pecoraro
  • 10 edits
    1 move
    1 add
    3 deletes in trunk/Source/WebInspectorUI

Web Inspector: CPU Usage Timeline - Add legend and graph hover effects
https://bugs.webkit.org/show_bug.cgi?id=195390

Reviewed by Devin Rousso.

  • Localizations/en.lproj/localizedStrings.js:

New strings for the legends.

  • UserInterface/Main.html:

Combined files.

  • UserInterface/Views/Variables.css:

(:root):
(@media (prefers-color-scheme: dark)):
Tweaked colors, including individual stroke and fill colors for each CPU section.

  • UserInterface/Views/CPUTimelineOverviewGraph.css:

(.timeline-overview-graph.cpu > .stacked-column-chart > svg > rect.total-usage):
(.timeline-overview-graph.cpu > .stacked-column-chart > svg > rect.main-thread-usage):
(.timeline-overview-graph.cpu > .stacked-column-chart > svg > rect.worker-thread-usage):
Updated colors.

  • UserInterface/Views/CPUUsageCombinedView.css: Renamed from Source/WebInspectorUI/UserInterface/Views/CPUUsageStackedView.css.

(.cpu-usage-combined-view > .details > .legend-container):
(.cpu-usage-combined-view > .details > .legend-container > .row):
(.cpu-usage-combined-view > .details > .legend-container > .row + .row):
(.cpu-usage-combined-view > .details > .legend-container > .row > .swatch):

  • UserInterface/Views/CPUUsageCombinedView.js: Renamed from Source/WebInspectorUI/UserInterface/Views/CPUUsageStackedView.js.

(WI.CPUUsageCombinedView.appendLegendRow):
(WI.CPUUsageCombinedView):
(WI.CPUUsageCombinedView.prototype.get graphElement):
(WI.CPUUsageCombinedView.prototype.get chart):
(WI.CPUUsageCombinedView.prototype.get rangeChart):
(WI.CPUUsageCombinedView.prototype.clear):
(WI.CPUUsageCombinedView.prototype.updateChart):
(WI.CPUUsageCombinedView.prototype.updateMainThreadIndicator):
(WI.CPUUsageCombinedView.prototype.clearLegend):
(WI.CPUUsageCombinedView.prototype.updateLegend):
(WI.CPUUsageCombinedView.prototype._updateDetails):

  • UserInterface/Views/CPUUsageIndicatorView.css: Removed.
  • UserInterface/Views/CPUUsageIndicatorView.js: Removed.

Combined the Indicator and StackedAreaChart into a single view
that share a left details section.

  • UserInterface/Views/CPUUsageView.js:

(WI.CPUUsageView):
(WI.CPUUsageView.prototype.get graphElement):
(WI.CPUUsageView.prototype.clear):
(WI.CPUUsageView.prototype.updateChart):
(WI.CPUUsageView.prototype.clearLegend):
(WI.CPUUsageView.prototype.updateLegend):
(WI.CPUUsageView.prototype._updateDetails):
Include a legend in the left details section.

  • UserInterface/Views/AreaChart.js:

(WI.AreaChart):
(WI.AreaChart.prototype.addPointMarker):
(WI.AreaChart.prototype.clearPointMarkers):
(WI.AreaChart.prototype.clear):
(WI.AreaChart.prototype.layout):

  • UserInterface/Views/StackedAreaChart.js:

(WI.StackedAreaChart):
(WI.StackedAreaChart.prototype.addPointMarker):
(WI.StackedAreaChart.prototype.clearPointMarkers):
(WI.StackedAreaChart.prototype.clear):
(WI.StackedAreaChart.prototype.layout):
Add point markers for the area charts.

  • UserInterface/Views/CPUTimelineView.css:
  • UserInterface/Views/CPUTimelineView.js:

(WI.CPUTimelineView):
(WI.CPUTimelineView.prototype.get cpuUsageViewHeight):
(WI.CPUTimelineView.prototype.clear):
(WI.CPUTimelineView.prototype.initialLayout.appendLegendRow):
(WI.CPUTimelineView.prototype.initialLayout):
(WI.CPUTimelineView.prototype.layout):
(WI.CPUTimelineView.prototype._graphPositionForMouseEvent):
(WI.CPUTimelineView.prototype._handleMouseClick):
(WI.CPUTimelineView.prototype._handleGraphMouseMove):
(WI.CPUTimelineView.prototype._showGraphOverlayNearTo):
(WI.CPUTimelineView.prototype._updateGraphOverlay):
(WI.CPUTimelineView.prototype._showGraphOverlay.xScale):
(WI.CPUTimelineView.prototype._showGraphOverlay.yScale):
(WI.CPUTimelineView.prototype._showGraphOverlay.addOverlayPoint):
(WI.CPUTimelineView.prototype._showGraphOverlay):
(WI.CPUTimelineView.prototype._clearOverlayMarkers.clearGraphOverlayElement):
(WI.CPUTimelineView.prototype._clearOverlayMarkers):
(WI.CPUTimelineView.prototype._hideGraphOverlay):
Include graph overlay markers.

2:19 PM Changeset in webkit [242738] by Brent Fulgham
  • 29 edits in trunk/Source

Remove obsolete runtime flag for StorageAccess API Prompt
https://bugs.webkit.org/show_bug.cgi?id=195564
<rdar://problem/37279014>

Reviewed by Chris Dumez.

This bug tracks the work of removing the obsolete flag that had been used to optionally
prevent display of the StorageAccess API prompt. We have since shipped the final version
of this feature with an always-on prompt, and should have removed this runtime flag.

No test changes because this has no change in behavior. Tests already assume the prompt
behavior, and did not test turning the flag off.

Source/WebCore:

  • page/RuntimeEnabledFeatures.h:

(WebCore::RuntimeEnabledFeatures::setStorageAccessPromptsEnabled): Deleted.
(WebCore::RuntimeEnabledFeatures::storageAccessPromptsEnabled const): Deleted.

  • testing/InternalSettings.cpp:

(WebCore::InternalSettings::Backup::Backup):
(WebCore::InternalSettings::Backup::restoreTo):
(WebCore::InternalSettings::setStorageAccessPromptsEnabled): Deleted.

  • testing/InternalSettings.h:

(): Deleted.

  • testing/InternalSettings.idl:

Source/WebKit:

  • NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp:

(WebKit::ResourceLoadStatisticsDatabaseStore::requestStorageAccess):
(WebKit::ResourceLoadStatisticsDatabaseStore::grantStorageAccessInternal):

  • NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.h:
  • NetworkProcess/Classifier/ResourceLoadStatisticsMemoryStore.cpp:

(WebKit::ResourceLoadStatisticsMemoryStore::requestStorageAccess):
(WebKit::ResourceLoadStatisticsMemoryStore::grantStorageAccessInternal):

  • NetworkProcess/Classifier/ResourceLoadStatisticsMemoryStore.h:
  • NetworkProcess/Classifier/ResourceLoadStatisticsStore.h:

(WebKit::ResourceLoadStatisticsStore::debugModeEnabled const):
(WebKit::ResourceLoadStatisticsStore::storageAccessPromptsEnabled const): Deleted.
(WebKit::ResourceLoadStatisticsStore::setStorageAccessPromptsEnabled): Deleted.

  • NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp:

(WebKit::WebResourceLoadStatisticsStore::requestStorageAccessGranted):
(WebKit::WebResourceLoadStatisticsStore::requestStorageAccess):

  • NetworkProcess/Classifier/WebResourceLoadStatisticsStore.h:
  • NetworkProcess/NetworkConnectionToWebProcess.cpp:

(WebKit::NetworkConnectionToWebProcess::requestStorageAccess):

  • NetworkProcess/NetworkConnectionToWebProcess.h:
  • NetworkProcess/NetworkConnectionToWebProcess.messages.in:
  • NetworkProcess/NetworkProcess.cpp:

(WebKit::NetworkProcess::requestStorageAccess):
(WebKit::NetworkProcess::requestStorageAccessGranted):

  • NetworkProcess/NetworkProcess.h:
  • NetworkProcess/NetworkProcess.messages.in:
  • Shared/WebPreferences.yaml:
  • UIProcess/API/C/WKPreferences.cpp:

(WKPreferencesSetStorageAccessPromptsEnabled): Deleted.
(WKPreferencesGetStorageAccessPromptsEnabled): Deleted.

  • UIProcess/API/C/WKPreferencesRef.h:
  • UIProcess/API/Cocoa/WKPreferences.mm:

(-[WKPreferences _storageAccessPromptsEnabled]): Deleted.
(-[WKPreferences _setStorageAccessPromptsEnabled:]): Deleted.

  • UIProcess/API/Cocoa/WKPreferencesPrivate.h:
  • UIProcess/Network/NetworkProcessProxy.cpp:

(WebKit::NetworkProcessProxy::requestStorageAccess):

  • UIProcess/Network/NetworkProcessProxy.h:
  • UIProcess/WebsiteData/WebsiteDataStore.cpp:

(WebKit::WebsiteDataStore::requestStorageAccess):

  • UIProcess/WebsiteData/WebsiteDataStore.h:
  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::requestStorageAccess):

1:35 PM Changeset in webkit [242737] by Devin Rousso
  • 10 edits in trunk/Source/WebInspectorUI

Web Inspector: eliminate manual syncing of numeric constants used by JavaScript and CSS
https://bugs.webkit.org/show_bug.cgi?id=194883
<rdar://problem/48257785>

Reviewed by Joseph Pecoraro.

  • UserInterface/Views/CanvasOverviewContentView.js:

(WI.CanvasOverviewContentView):
(WI.CanvasOverviewContentView.static get recordingAutoCaptureInputMargin): Added.
(WI.CanvasOverviewContentView.prototype._updateRecordingAutoCaptureInputElementSize):

  • UserInterface/Views/CanvasOverviewContentView.css:

(.navigation-bar > .item.canvas-recording-auto-capture > label > input):

  • UserInterface/Views/MemoryTimelineView.js:

(WI.MemoryTimelineView.static get memoryCategoryViewHeight): Added.
(WI.MemoryTimelineView.prototype.initialLayout): Added.
(WI.MemoryTimelineView.prototype.layout):

  • UserInterface/Views/MemoryCategoryView.css:

(.memory-category-view):

  • UserInterface/Views/NetworkTableContentView.js:

(WI.NetworkTableContentView.static get nodeWaterfallDOMEventSize): Added.
(WI.NetworkTableContentView.prototype.initialLayout):

  • UserInterface/Views/NetworkTableContentView.css:

(.content-view.network .network-table): Deleted.

  • UserInterface/Views/TreeOutline.js:

(WI.TreeOutline._generateStyleRulesIfNeeded):

  • UserInterface/Views/TreeOutline.css:

(.tree-outline, .tree-outline .children):
(.tree-outline .item):

  • UserInterface/Controllers/CanvasManager.js:

(WI.CanvasManager.supportsRecordingAutoCapture):
Drive-by: fix usage of InspectorBackend.domains.{CanvasAgent => Canvas}

1:22 PM Changeset in webkit [242736] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

Unreviewed, fix a test expecation linter warning for macOS.

  • platform/mac/TestExpectations: Delete the entry for 'media/modern-media-controls/media-documents/ipad'.
1:21 PM Changeset in webkit [242735] by commit-queue@webkit.org
  • 23 edits in trunk

Add a WKContentRuleList variant that uses copied memory instead of mmap'd shared memory for class A containerized apps
https://bugs.webkit.org/show_bug.cgi?id=195511
<rdar://problem/44873269>

Patch by Alex Christensen <achristensen@webkit.org> on 2019-03-11
Reviewed by Darin Adler.

Source/WebKit:

  • NetworkProcess/NetworkContentRuleListManager.cpp:

(WebKit::NetworkContentRuleListManager::addContentRuleLists):

  • NetworkProcess/NetworkContentRuleListManager.h:
  • NetworkProcess/cache/NetworkCacheFileSystem.cpp:

(WebKit::NetworkCache::pathRegisteredAsUnsafeToMemoryMapForTesting):
(WebKit::NetworkCache::registerPathAsUnsafeToMemoryMapForTesting):
(WebKit::NetworkCache::isSafeToUseMemoryMapForPath):

  • NetworkProcess/cache/NetworkCacheFileSystem.h:
  • Shared/WebCompiledContentRuleList.cpp:

(WebKit::WebCompiledContentRuleList::usesCopiedMemory const):
(WebKit::WebCompiledContentRuleList::conditionsApplyOnlyToDomain const):
(WebKit::WebCompiledContentRuleList::filtersWithoutConditionsBytecode const):
(WebKit::WebCompiledContentRuleList::filtersWithConditionsBytecode const):
(WebKit::WebCompiledContentRuleList::topURLFiltersBytecode const):
(WebKit::WebCompiledContentRuleList::actions const):

  • Shared/WebCompiledContentRuleList.h:
  • Shared/WebCompiledContentRuleListData.cpp:

(WebKit::WebCompiledContentRuleListData::size const):
(WebKit::WebCompiledContentRuleListData::dataPointer const):
(WebKit::WebCompiledContentRuleListData::encode const):
(WebKit::WebCompiledContentRuleListData::decode):

  • Shared/WebCompiledContentRuleListData.h:

(WebKit::WebCompiledContentRuleListData::WebCompiledContentRuleListData):

  • UIProcess/API/APIContentRuleList.cpp:

(API::ContentRuleList::usesCopiedMemory const):

  • UIProcess/API/APIContentRuleList.h:
  • UIProcess/API/APIContentRuleListStore.cpp:

(API::getData):
(API::decodeContentRuleListMetaData):
(API::ContentRuleListStore::readContentsOfFile):
(API::MappedOrCopiedData::dataPointer const):
(API::openAndMapOrCopyContentRuleList):
(API::compiledToFile):
(API::createExtension):
(API::ContentRuleListStore::lookupContentRuleList):
(API::ContentRuleListStore::compileContentRuleList):
(API::ContentRuleListStore::getContentRuleListSource):
(API::openAndMapContentRuleList): Deleted.

  • UIProcess/API/APIContentRuleListStore.h:
  • UIProcess/API/Cocoa/APIContentRuleListStoreCocoa.mm:

(API::ContentRuleListStore::readContentsOfFile):

  • UIProcess/API/Cocoa/WKContentRuleListStore.mm:

(+[WKContentRuleListStore _registerPathAsUnsafeToMemoryMapForTesting:]):

  • UIProcess/API/Cocoa/WKContentRuleListStorePrivate.h:
  • UIProcess/API/Cocoa/_WKUserContentFilter.mm:

(-[_WKUserContentFilter usesCopiedMemory]):

  • UIProcess/API/Cocoa/_WKUserContentFilterPrivate.h:
  • WebProcess/UserContent/WebUserContentController.cpp:

(WebKit::WebUserContentController::addContentRuleLists):

  • WebProcess/UserContent/WebUserContentController.h:
  • WebProcess/WebPage/WebPage.cpp:

(WebKit::m_hostFileDescriptor):

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/WKContentExtensionStore.mm:

(-[TestSchemeHandlerSubresourceShouldBeBlocked webView:startURLSchemeTask:]):
(-[TestSchemeHandlerSubresourceShouldBeBlocked webView:stopURLSchemeTask:]):
(TEST_F):

1:19 PM Changeset in webkit [242734] by eric.carlson@apple.com
  • 28 edits in trunk/Source/WebCore

Add web audio release logging
https://bugs.webkit.org/show_bug.cgi?id=195554
<rdar://problem/48767211>

Reviewed by Jer Noble.

No new tests, no functional change.

  • Modules/webaudio/AudioBasicInspectorNode.cpp:

(WebCore::AudioBasicInspectorNode::AudioBasicInspectorNode):

  • Modules/webaudio/AudioBufferSourceNode.cpp:

(WebCore::AudioBufferSourceNode::setBuffer):
(WebCore::AudioBufferSourceNode::startPlaying):

  • Modules/webaudio/AudioContext.cpp:

(WebCore::nextLogIdentifier):
(WebCore::AudioContext::AudioContext):
(WebCore::AudioContext::uninitialize):
(WebCore::AudioContext::stop):
(WebCore::AudioContext::createBufferSource):
(WebCore::AudioContext::createMediaElementSource):
(WebCore::AudioContext::createMediaStreamSource):
(WebCore::AudioContext::createScriptProcessor):
(WebCore::AudioContext::createBiquadFilter):
(WebCore::AudioContext::createWaveShaper):
(WebCore::AudioContext::createPanner):
(WebCore::AudioContext::createConvolver):
(WebCore::AudioContext::createDynamicsCompressor):
(WebCore::AudioContext::createAnalyser):
(WebCore::AudioContext::createGain):
(WebCore::AudioContext::createDelay):
(WebCore::AudioContext::createChannelSplitter):
(WebCore::AudioContext::createChannelMerger):
(WebCore::AudioContext::createOscillator):
(WebCore::AudioContext::createPeriodicWave):
(WebCore::AudioContext::willBeginPlayback):
(WebCore::AudioContext::startRendering):
(WebCore::AudioContext::fireCompletionEvent):
(WebCore::AudioContext::logChannel const):

  • Modules/webaudio/AudioContext.h:

(WebCore::AudioContext::nextAudioNodeLogIdentifier):
(WebCore::AudioContext::nextAudioParameterLogIdentifier):

  • Modules/webaudio/AudioDestinationNode.cpp:

(WebCore::AudioDestinationNode::AudioDestinationNode):

  • Modules/webaudio/AudioNode.cpp:

(WebCore::convertEnumerationToString):
(WebCore::AudioNode::AudioNode):
(WebCore::AudioNode::~AudioNode):
(WebCore::AudioNode::setNodeType):
(WebCore::AudioNode::addInput):
(WebCore::AudioNode::addOutput):
(WebCore::AudioNode::connect):
(WebCore::AudioNode::disconnect):
(WebCore::AudioNode::setChannelCount):
(WebCore::AudioNode::setChannelCountMode):
(WebCore::AudioNode::setChannelInterpretation):
(WebCore::AudioNode::logChannel const):

  • Modules/webaudio/AudioNode.h:

(WTF::LogArgument<WebCore::AudioNode::NodeType>::toString):

  • Modules/webaudio/AudioParam.cpp:

(WebCore::AudioParam::AudioParam):
(WebCore::AudioParam::setValue):
(WebCore::AudioParam::connect):
(WebCore::AudioParam::disconnect):
(WebCore::AudioParam::logChannel const):

  • Modules/webaudio/AudioParam.h:
  • Modules/webaudio/AudioScheduledSourceNode.cpp:

(WebCore::AudioScheduledSourceNode::start):
(WebCore::AudioScheduledSourceNode::stop):

  • Modules/webaudio/BiquadFilterNode.cpp:

(WebCore::BiquadFilterNode::BiquadFilterNode):

  • Modules/webaudio/ChannelMergerNode.cpp:

(WebCore::ChannelMergerNode::ChannelMergerNode):

  • Modules/webaudio/ChannelSplitterNode.cpp:

(WebCore::ChannelSplitterNode::ChannelSplitterNode):

  • Modules/webaudio/ConvolverNode.cpp:

(WebCore::ConvolverNode::ConvolverNode):

  • Modules/webaudio/DefaultAudioDestinationNode.cpp:

(WebCore::DefaultAudioDestinationNode::initialize):
(WebCore::DefaultAudioDestinationNode::uninitialize):
(WebCore::DefaultAudioDestinationNode::enableInput):
(WebCore::DefaultAudioDestinationNode::setChannelCount):

  • Modules/webaudio/DelayNode.cpp:

(WebCore::DelayNode::DelayNode):

  • Modules/webaudio/DynamicsCompressorNode.cpp:

(WebCore::DynamicsCompressorNode::DynamicsCompressorNode):

  • Modules/webaudio/GainNode.cpp:

(WebCore::GainNode::GainNode):

  • Modules/webaudio/MediaElementAudioSourceNode.cpp:

(WebCore::MediaElementAudioSourceNode::MediaElementAudioSourceNode):

  • Modules/webaudio/MediaStreamAudioSourceNode.cpp:

(WebCore::MediaStreamAudioSourceNode::MediaStreamAudioSourceNode):

  • Modules/webaudio/OfflineAudioDestinationNode.cpp:

(WebCore::OfflineAudioDestinationNode::startRendering):

  • Modules/webaudio/OscillatorNode.cpp:

(WebCore::OscillatorNode::setType):
(WebCore::OscillatorNode::setPeriodicWave):

  • Modules/webaudio/OscillatorNode.h:

(WTF::LogArgument<WebCore::OscillatorNode::Type>::toString):

  • Modules/webaudio/PannerNode.cpp:

(WebCore::PannerNode::PannerNode):

  • Modules/webaudio/ScriptProcessorNode.cpp:

(WebCore::ScriptProcessorNode::ScriptProcessorNode):

  • Modules/webaudio/WaveShaperNode.cpp:

(WebCore::WaveShaperNode::WaveShaperNode):
(WebCore::WaveShaperNode::setCurve):
(WebCore::WaveShaperNode::setOversample):

  • Modules/webaudio/WaveShaperNode.h:

(WTF::LogArgument<WebCore::WaveShaperNode::OverSampleType>::toString):

1:17 PM Changeset in webkit [242733] by Chris Dumez
  • 2 edits in trunk/Tools

Regression(r242664) WebKit.WebsitePoliciesDeviceOrientationEventEnabled API test is timing out
https://bugs.webkit.org/show_bug.cgi?id=195561

Reviewed by Youenn Fablet.

Make sure the JS in the test requests for permission to receive device orientation events.

  • TestWebKitAPI/Tests/WebKitCocoa/WebsitePolicies.mm:
1:06 PM Changeset in webkit [242732] by sihui_liu@apple.com
  • 2 edits in trunk/Source/WTF

Crash under WebCore::IDBDatabase::connectionToServerLost
https://bugs.webkit.org/show_bug.cgi?id=195563
<rdar://problem/37193655>

CrossThreadTask should protect callee if it is ThreadSafeRefCounted.

Reviewed by Geoffrey Garen.

  • wtf/CrossThreadTask.h:

(WTF::createCrossThreadTask):

1:05 PM Changeset in webkit [242731] by Nikita Vasilyev
  • 2 edits in trunk/Source/WebInspectorUI

REGRESSION(r242622): Web Inspector: Fix asserts "Overridden property is missing overridingProperty"
https://bugs.webkit.org/show_bug.cgi?id=195515
<rdar://problem/48737315>

Reviewed by Matt Baker.

  • UserInterface/Views/SpreadsheetStyleProperty.js:

(WI.SpreadsheetStyleProperty.prototype.updateStatus):

1:03 PM Changeset in webkit [242730] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

[ iOS Sim ] Layout Test imported/w3c/web-platform-tests/webrtc/simplecall-no-ssrcs.https.html is a flaky crash
https://bugs.webkit.org/show_bug.cgi?id=195433

Unreviewed test gardening.

  • platform/ios/TestExpectations: Skip the test.
1:00 PM Changeset in webkit [242729] by youenn@apple.com
  • 4 edits in trunk/Source/WebCore

Make IDBDatabaseIdentifier take a ClientOrigin as member
https://bugs.webkit.org/show_bug.cgi?id=195544

Reviewed by Geoffrey Garen.

Instead of taking a top and a frame origin, make
make IDBDatabaseIdentifier take a ClientOrigin.

This allows reusing some ClientOrigin code
and will ease implementation of storage quota checking in
NetworkProcess, as quota managers are keyed by client origins.

No change of behavior.

  • Modules/indexeddb/IDBDatabaseIdentifier.cpp:

(WebCore::IDBDatabaseIdentifier::IDBDatabaseIdentifier):
(WebCore::IDBDatabaseIdentifier::isolatedCopy const):
(WebCore::IDBDatabaseIdentifier::databaseDirectoryRelativeToRoot const):
(WebCore::IDBDatabaseIdentifier::debugString const):

  • Modules/indexeddb/IDBDatabaseIdentifier.h:

(WebCore::IDBDatabaseIdentifier::hash const):
(WebCore::IDBDatabaseIdentifier::operator== const):
(WebCore::IDBDatabaseIdentifier::origin const):
(WebCore::IDBDatabaseIdentifier::isRelatedToOrigin const):
(WebCore::IDBDatabaseIdentifier::encode const):
(WebCore::IDBDatabaseIdentifier::decode):

  • page/ClientOrigin.h:

(WebCore::ClientOrigin::isRelated const):

12:51 PM Changeset in webkit [242728] by Chris Dumez
  • 2 edits in trunk/Source/WebKit

Unreviewed, fix assertions in layout tests on iOS Simulator after r242666.

Log an error but do not crash if we fail to acquire a ProcessAssertion.

  • UIProcess/ios/ProcessAssertionIOS.mm:

(WebKit::ProcessAssertion::ProcessAssertion):

12:38 PM Changeset in webkit [242727] by youenn@apple.com
  • 11 edits in trunk

Allow storage quota increase by default in WTR
https://bugs.webkit.org/show_bug.cgi?id=195541

Reviewed by Geoffrey Garen.

Tools:

Allow storage quota increase by default in WTR.
Move from testRunner.allowStorageQuotaIncrease to testRunner.setAllowStorageQuotaIncrease.
Use this for tests that explicitly need cache increase.

Instead of increasing quota by 2, make sure the next request is
granted by adding all given parameters.

  • WebKitTestRunner/InjectedBundle/Bindings/TestRunner.idl:
  • WebKitTestRunner/InjectedBundle/TestRunner.cpp:

(WTR::TestRunner::setAllowStorageQuotaIncrease):
(WTR::TestRunner::allowCacheStorageQuotaIncrease): Deleted.

  • WebKitTestRunner/InjectedBundle/TestRunner.h:
  • WebKitTestRunner/TestController.cpp:

(WTR::TestController::setAllowStorageQuotaIncrease):
(WTR::TestController::allowCacheStorageQuotaIncrease): Deleted.

  • WebKitTestRunner/TestController.h:
  • WebKitTestRunner/TestInvocation.cpp:

(WTR::TestInvocation::didReceiveSynchronousMessageFromInjectedBundle):

  • WebKitTestRunner/cocoa/TestControllerCocoa.mm:

(WTR::TestController::cocoaResetStateToConsistentValues):
(WTR::TestController::setAllowStorageQuotaIncrease):
(WTR::TestController::allowCacheStorageQuotaIncrease): Deleted.

  • WebKitTestRunner/cocoa/TestWebsiteDataStoreDelegate.mm:

(-[TestWebsiteDataStoreDelegate requestStorageSpace:frameOrigin:quota:currentSize:spaceRequired:decisionHandler:]):

LayoutTests:

  • http/wpt/cache-storage/cache-quota.any.js:

(promise_test):

12:30 PM Changeset in webkit [242726] by Chris Dumez
  • 6 edits in trunk/Source/WebKit

WebProcessCache should keep track of processes being added
https://bugs.webkit.org/show_bug.cgi?id=195538

Reviewed by Geoffrey Garen.

WebProcessCache should keep track of processes being added, while they are being
checked for responsiveness. This is useful so that:

  • Requests to clear the cache also clear processes being added
  • Requests to remove a given process from the cache (either because it crashed or because it is being used for a history navigation) actually remove the process if it is still being checked for responsiveness.
  • The cached process eviction timer applies to such processes in case something goes wrong with the code and the pending request does not get processed.
  • UIProcess/WebProcessCache.cpp:

(WebKit::generateAddRequestIdentifier):
(WebKit::WebProcessCache::addProcessIfPossible):
(WebKit::WebProcessCache::addProcess):
(WebKit::WebProcessCache::clear):
(WebKit::WebProcessCache::clearAllProcessesForSession):
(WebKit::WebProcessCache::removeProcess):
(WebKit::WebProcessCache::CachedProcess::evictionTimerFired):
(WebKit::WebProcessCache::evictProcess): Deleted.

  • UIProcess/WebProcessCache.h:

(WebKit::WebProcessCache::size const):

  • UIProcess/WebProcessPool.cpp:

(WebKit::WebProcessPool::processForNavigationInternal):

  • UIProcess/WebProcessProxy.cpp:

(WebKit::WebProcessProxy::processDidTerminateOrFailedToLaunch):

12:21 PM Changeset in webkit [242725] by zandobersek@gmail.com
  • 6 edits in trunk/Source/WebCore

Unreviewed. Manually rolling out r242701 and r242703 since the changes
are causing test timeouts and crashes on GTK and WPE.

  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:

(WebCore::MediaPlayerPrivateGStreamer::createGSTPlayBin):

  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:

(WebCore::MediaPlayerPrivateGStreamerBase::~MediaPlayerPrivateGStreamerBase):
(WebCore::MediaPlayerPrivateGStreamerBase::flushCurrentBuffer):
(WebCore::MediaPlayerPrivateGStreamerBase::createGLAppSink):

  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.h:
  • platform/graphics/texmap/TextureMapperPlatformLayerProxy.cpp:

(WebCore::TextureMapperPlatformLayerProxy::pushNextBuffer):
(WebCore::TextureMapperPlatformLayerProxy::dropCurrentBufferWhilePreservingTexture):

  • platform/graphics/texmap/TextureMapperPlatformLayerProxy.h:

(): Deleted.

12:11 PM Changeset in webkit [242724] by commit-queue@webkit.org
  • 4 edits in trunk

[CMake] Build 32bit binaries on Linux/64bit when the --32-bit is passed to build-jsc
https://bugs.webkit.org/show_bug.cgi?id=194147

Patch by Xan Lopez <Xan Lopez> on 2019-03-11
Reviewed by Michael Saboff.

.:

  • CMakeLists.txt: set WTF_CPU properly if FORCE_32BIT is set in

build-jsc.

Tools:

To make --32-bit work correctly on Linux/64bit we need to:

  • Set FORCE_32BIT on, which will be read by CMake to set WTF_CPU

correctly. Ideally we'd just redefine CMAKE_SYSTEM_PROCESSOR, but
unfortunately CMake only allows us to do this during
crosscompilation, which is overkill here.

  • Set CMAKE_PREFIX_PATH and CMAKE_LIBRARY_ARCHITECTURE so that the

pkg-config detection module uses the x86 .pc files instead of the
x86_64 ones.

  • Set the -m32 flags for the compiler.
  • Scripts/webkitdirs.pm:

(generateBuildSystemFromCMakeProject):

12:07 PM Changeset in webkit [242723] by commit-queue@webkit.org
  • 4 edits in trunk/Source/WebKit

REGRESSION: ( r240978-r240985 ) [ iOS Release ] Layout Test imported/w3c/web-platform-tests/xhr/send-redirect-post-upload.htm is crashing
https://bugs.webkit.org/show_bug.cgi?id=194523

Patch by Alex Christensen <achristensen@webkit.org> on 2019-03-11
Reviewed by Alexey Proskuryakov.

Attempt another workaround to prevent crashes.

  • NetworkProcess/cocoa/NetworkDataTaskCocoa.h:
  • NetworkProcess/cocoa/NetworkDataTaskCocoa.mm:

(WebKit::NetworkDataTaskCocoa::~NetworkDataTaskCocoa):

  • NetworkProcess/cocoa/NetworkSessionCocoa.mm:

(-[WKNetworkSessionDelegate URLSession:task:needNewBodyStream:]):

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

[JSC] BuiltinExecutables should behave like a WeakSet instead of generic WeakHandleOwner for memory footprint
https://bugs.webkit.org/show_bug.cgi?id=195508

Reviewed by Darin Adler.

Weak<> is not cheap in terms of memory footprint. We allocate WeakBlock (256 bytes) for book-keeping Weak<>.
Currently BuiltinExecutables has 203 Weak<> members and many WeakBlocks are actually allocated because
many UnlinkedFunctionExecutables in BuiltinExecutables are allocated during JSGlobalObject initialization process.

This patch changes two things in BuiltinExecutables.

  1. Previously we have m_xxxSourceCode fields too. But we do not need to keep it since we know how to produce it when it is required. We generate SourceCode in xxxSourceCode() method instead of just returning m_xxxSourceCode. This reduces sizeof(BuiltinExecutables) 24 x 203 = 4KB.
  1. Instead of using Weak<>, BuiltinExecutables holds raw array of UnlinkedFunctionExecutable*. And Heap::finalizeUnconditionalFinalizers() correctly clears dead executables. This is similar to JSWeakSet implementation. And it saves WeakBlock allocations.
  • builtins/BuiltinExecutables.cpp:

(JSC::BuiltinExecutables::BuiltinExecutables):
(JSC::BuiltinExecutables::finalizeUnconditionally):
(JSC::JSC_FOREACH_BUILTIN_CODE): Deleted.
(JSC::BuiltinExecutables::finalize): Deleted.

  • builtins/BuiltinExecutables.h:

(JSC::BuiltinExecutables::static_cast<unsigned>):
(): Deleted.

  • heap/Heap.cpp:

(JSC::Heap::finalizeUnconditionalFinalizers):

11:45 AM Changeset in webkit [242721] by Dewei Zhu
  • 1 edit
    1 add in trunk/Tools

Add MotionMark-1.1 plan file for run-benchmark script.
https://bugs.webkit.org/show_bug.cgi?id=195481

Rubber-stamped by Darin Adler.

Run-benchmark script should support MontionMark-1.1.

  • Scripts/webkitpy/benchmark_runner/data/plans/motionmark1.1.plan: Added.
11:30 AM Changeset in webkit [242720] by jer.noble@apple.com
  • 12 edits in trunk/Source/WebCore

Use AVContentKeySession for "com.apple.fps.2_0" CDM version when AVStreamSession is absent
https://bugs.webkit.org/show_bug.cgi?id=195462
<rdar://problem/48712306>

Reviewed by Eric Carlson.

The difference between "com.apple.fps.2_0" and "3_0" is a protocol difference more than an
implementation difference. In "2_0", the "EME nitialization" data comes in the form of a "content
identifier", while the true initialization data is retrieved through a side channel directly from
the attached element. In "3_0", the "EME initialization data" is the exact initialization data
given by the parser, with no "content identifier" at all.

In the original implementation, the "2_0" used AVStreamSession, and "3_0" used AVContentKeySession,
but in the absense of AVStreamSession, those protocol differences are minor and can be implemented
using AVContentKeySession.

Changes:

  • Add a new helper struct in CDMPrivateMediaSourceAVFObjC that represents the parsed parameters of the CDM string.
  • Add an "initData()" accessor to SourceBufferPrivateAVFObjC so that the "2_0" path can implement the side channel access to the necessary initialization data.
  • Refactor some of the SPI code to not re-declare unnecessary APIs.
  • In CDMSessionAVContentKeySession::generateKeyRequest(), this function can never be called twice so it is a logical impossibility to have a certificate at this point. Remove all this if() code.
  • Modules/encryptedmedia/legacy/LegacyCDM.cpp:
  • platform/graphics/avfoundation/CDMPrivateMediaSourceAVFObjC.h:
  • platform/graphics/avfoundation/CDMPrivateMediaSourceAVFObjC.mm:

(WebCore::CDMPrivateMediaSourceAVFObjC::parseKeySystem):
(WebCore::queryDecoderAvailability):
(WebCore::CDMPrivateMediaSourceAVFObjC::supportsKeySystem):
(WebCore::CDMPrivateMediaSourceAVFObjC::createSession):
(WebCore::validKeySystemRE): Deleted.

  • platform/graphics/avfoundation/objc/CDMSessionAVContentKeySession.h:
  • platform/graphics/avfoundation/objc/CDMSessionAVContentKeySession.mm:

(WebCore::CDMSessionAVContentKeySession::CDMSessionAVContentKeySession):
(WebCore::CDMSessionAVContentKeySession::generateKeyRequest):
(WebCore::CDMSessionAVContentKeySession::update):
(WebCore::CDMSessionAVContentKeySession::addParser):
(WebCore::CDMSessionAVContentKeySession::removeParser):
(WebCore::CDMSessionAVContentKeySession::contentKeySession):

  • platform/graphics/avfoundation/objc/CDMSessionAVStreamSession.h:
  • platform/graphics/avfoundation/objc/CDMSessionAVStreamSession.mm:

(WebCore::CDMSessionAVStreamSession::CDMSessionAVStreamSession):

  • platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.h:
  • platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.mm:

(WebCore::MediaPlayerPrivateMediaSourceAVFObjC::setCDMSession):

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

(WebCore::SourceBufferPrivateAVFObjC::didProvideContentKeyRequestInitializationDataForTrackID):

11:22 AM Changeset in webkit [242719] by aakash_jain@apple.com
  • 4 edits
    2 adds in trunk/Tools

[ews-app] Add support for submit-to-ews url
https://bugs.webkit.org/show_bug.cgi?id=195477

Reviewed by Lucas Forschler.

  • BuildSlaveSupport/ews-app/ews/fetcher.py:
  • BuildSlaveSupport/ews-app/ews/templates/statusbubble.html:
  • BuildSlaveSupport/ews-app/ews/templates/submittoews.html: Copied from QueueStatusServer/templates/submittoews.html.
  • BuildSlaveSupport/ews-app/ews/urls.py:
  • BuildSlaveSupport/ews-app/ews/views/submittoews.py: Added.
10:54 AM Changeset in webkit [242718] by rmorisset@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

IntlDateTimeFormat can be shrunk by 32 bytes
https://bugs.webkit.org/show_bug.cgi?id=195504

Reviewed by Darin Adler.

  • runtime/IntlDateTimeFormat.h:
10:39 AM Changeset in webkit [242717] by rmorisset@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

IntlCollator can be shrunk by 16 bytes
https://bugs.webkit.org/show_bug.cgi?id=195503

Reviewed by Darin Adler.

  • runtime/IntlCollator.h:
10:27 AM Changeset in webkit [242716] by rmorisset@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

IntlNumberFormat can be shrunk by 16 bytes
https://bugs.webkit.org/show_bug.cgi?id=195505

Reviewed by Darin Adler.

  • runtime/IntlNumberFormat.h:
10:21 AM Changeset in webkit [242715] by Caio Lima
  • 25 edits
    6 adds in trunk

[ESNext][BigInt] Implement "~" unary operation
https://bugs.webkit.org/show_bug.cgi?id=182216

Reviewed by Keith Miller.

JSTests:

  • stress/big-int-bit-not-general.js: Added.
  • stress/big-int-bitwise-not-jit.js: Added.
  • stress/big-int-bitwise-not-wrapped-value.js: Added.
  • stress/bit-op-with-object-returning-int32.js:
  • stress/bitwise-not-fixup-rules.js: Added.
  • stress/value-bit-not-ai-rule.js: Added.

PerformanceTests:

  • BigIntBench/big-int-simple-bit-not.js: Added.

Source/JavaScriptCore:

This patch is adding support of BigInt into op_bitnot operations. In
addition, we are changing ArithBitNot to handle only Number operands,
while introducing a new node named ValueBitNot to handle Untyped and
BigInt. This node follows the same approach we are doing into other
arithimetic operations into DFG.

  • dfg/DFGAbstractInterpreterInlines.h:

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

It is possible that fixup and prediction propagation don't convert a
ValueBitNot(ConstInt32) into ArithBitNot(ConstInt32) because these
analysis are conservative. In such case, we are adding constant
folding rules to ValueBitNot AI.

  • dfg/DFGBackwardsPropagationPhase.cpp:

(JSC::DFG::BackwardsPropagationPhase::propagate):

ValueBitNot has same rules as ArithBitNot on backwards propagation.

  • dfg/DFGByteCodeParser.cpp:

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

We can emit ArithBitNot if we know that operand of op_bitnot is a
Number or any int. Otherwise we fallback to ValueBitNot and rely on
fixup to convert the node to ArithBitNot when it is possible.
ValueBitNot uses heap prediction on prediction propagation and we
collect its type from op_bitnot's value profiler.

  • dfg/DFGClobberize.h:

(JSC::DFG::clobberize):

When we have the case with ValueBitNot(BigInt), we don't clobberize
world.

  • dfg/DFGDoesGC.cpp:

(JSC::DFG::doesGC):

ValueBitNot can GC on BigIntUse because, right now, all bitNot
operation allocates temporary BigInts to perform calculations and it
can potentially trigger GC.

  • dfg/DFGFixupPhase.cpp:

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

ValueBitNot is responsible do handle BigIntUse and UntypedUse. To all
other uses, we fallback to ArithBitNot.

  • dfg/DFGNode.h:

(JSC::DFG::Node::hasHeapPrediction):

  • dfg/DFGNodeType.h:
  • dfg/DFGOperations.cpp:

(JSC::DFG::bitwiseBinaryOp):

This template function is abstracting the new semantics of numeric
values operations on bitwise operations. These operations usually
folow these steps:

  1. rhsNumeric = GetInt32OrBigInt(rhs)
  2. lhsNumeric = GetInt32OrBigInt(lhs)
  3. trhow error if TypeOf(rhsNumeric) != TypeOf(lhsNumeric)
  4. return BigInt::bitwiseOp(bitOp, rhs, lhs) if TypeOf(lhsNumeric) == BigInt
  5. return rhs <int32BitOp> lhs

Since we have almost the same code for every bitwise op,
we use such template to avoid code duplication. The template receives
Int32 and BigInt operations as parameter. Error message is received as
const char* instead of String& to avoid String allocation even when
there is no error to throw.

  • dfg/DFGOperations.h:
  • dfg/DFGPredictionPropagationPhase.cpp:
  • dfg/DFGSafeToExecute.h:

(JSC::DFG::safeToExecute):

  • dfg/DFGSpeculativeJIT.cpp:

(JSC::DFG::SpeculativeJIT::compileValueBitNot):

ValueBitNot generates speculative code for BigIntUse and this code is a
call to operationBitNotBigInt. This operation is faster than
operationValueBitNot because there is no need to check types of
operands and execute properly operation. We still need to check
exceptions after operationBitNotBigInt because it can throw OOM.

(JSC::DFG::SpeculativeJIT::compileBitwiseNot):

  • dfg/DFGSpeculativeJIT.h:
  • dfg/DFGSpeculativeJIT32_64.cpp:

(JSC::DFG::SpeculativeJIT::compile):

  • dfg/DFGSpeculativeJIT64.cpp:

(JSC::DFG::SpeculativeJIT::compile):

  • ftl/FTLCapabilities.cpp:

(JSC::FTL::canCompile):

  • ftl/FTLLowerDFGToB3.cpp:

(JSC::FTL::DFG::LowerDFGToB3::compileNode):
(JSC::FTL::DFG::LowerDFGToB3::compileValueBitNot):
(JSC::FTL::DFG::LowerDFGToB3::compileArithBitNot):

  • runtime/CommonSlowPaths.cpp:

(JSC::SLOW_PATH_DECL):

  • runtime/JSBigInt.cpp:

(JSC::JSBigInt::bitwiseNot):

  • runtime/JSBigInt.h:
10:19 AM Changeset in webkit [242714] by Ryan Haddad
  • 39 edits
    1 move
    1 add
    1 delete in trunk

Unreviewed, rolling out r242688, r242643, r242624.

Caused multiple layout test failures and crashes on iOS and macOS.

Reverted changeset:

"requestAnimationFrame should execute before the next frame"
https://bugs.webkit.org/show_bug.cgi?id=177484
https://trac.webkit.org/changeset/242624/webkit

Source/WebCore:

  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • accessibility/mac/AXObjectCacheMac.mm:

(WebCore::AXObjectCache::platformHandleFocusedUIElementChanged):

  • animation/DocumentAnimationScheduler.cpp: Added.

(WebCore::DocumentAnimationScheduler::create):
(WebCore::DocumentAnimationScheduler::DocumentAnimationScheduler):
(WebCore::DocumentAnimationScheduler::detachFromDocument):
(WebCore::DocumentAnimationScheduler::scheduleWebAnimationsResolution):
(WebCore::DocumentAnimationScheduler::unscheduleWebAnimationsResolution):
(WebCore::DocumentAnimationScheduler::scheduleScriptedAnimationResolution):
(WebCore::DocumentAnimationScheduler::displayRefreshFired):
(WebCore::DocumentAnimationScheduler::windowScreenDidChange):
(WebCore::DocumentAnimationScheduler::createDisplayRefreshMonitor const):

  • animation/DocumentAnimationScheduler.h: Renamed from Source/WebCore/page/RenderingUpdateScheduler.h.

(WebCore::DocumentAnimationScheduler::lastTimestamp):
(WebCore::DocumentAnimationScheduler::isFiring const):

  • animation/DocumentTimeline.cpp:

(WebCore::DocumentTimeline::DocumentTimeline):
(WebCore::DocumentTimeline::updateThrottlingState):
(WebCore::DocumentTimeline::suspendAnimations):
(WebCore::DocumentTimeline::resumeAnimations):
(WebCore::DocumentTimeline::liveCurrentTime const):
(WebCore::DocumentTimeline::currentTime):
(WebCore::DocumentTimeline::cacheCurrentTime):
(WebCore::DocumentTimeline::scheduleAnimationResolutionIfNeeded):
(WebCore::DocumentTimeline::animationTimingDidChange):
(WebCore::DocumentTimeline::scheduleAnimationResolution):
(WebCore::DocumentTimeline::unscheduleAnimationResolution):
(WebCore::DocumentTimeline::animationResolutionTimerFired):
(WebCore::DocumentTimeline::updateAnimationsAndSendEvents):
(WebCore::DocumentTimeline::scheduleNextTick):
(WebCore::DocumentTimeline::updateListOfElementsWithRunningAcceleratedAnimationsForElement):
(WebCore::DocumentTimeline::resolveAnimationsForElement):
(WebCore::DocumentTimeline::internalUpdateAnimationsAndSendEvents): Deleted.

  • animation/DocumentTimeline.h:
  • dom/Document.cpp:

(WebCore::Document::resolveStyle):
(WebCore::Document::prepareForDestruction):
(WebCore::Document::windowScreenDidChange):
(WebCore::Document::updateIntersectionObservations):
(WebCore::Document::scheduleForcedIntersectionObservationUpdate):
(WebCore::Document::animationScheduler):
(WebCore::Document::updateAnimationsAndSendEvents): Deleted.
(WebCore::Document::serviceRequestAnimationFrameCallbacks): Deleted.

  • dom/Document.h:
  • dom/ScriptedAnimationController.cpp:

(WebCore::ScriptedAnimationController::serviceScriptedAnimations):
(WebCore::ScriptedAnimationController::scheduleAnimation):
(WebCore::ScriptedAnimationController::animationTimerFired):
(WebCore::ScriptedAnimationController::documentAnimationSchedulerDidFire):
(WebCore::ScriptedAnimationController::serviceRequestAnimationFrameCallbacks): Deleted.

  • dom/ScriptedAnimationController.h:
  • page/FrameView.cpp:

(WebCore::FrameView::viewportContentsChanged):

  • page/IntersectionObserver.cpp:

(WebCore::IntersectionObserver::observe):

  • page/Page.cpp:

(WebCore::Page::Page):
(WebCore::Page::willDisplayPage):
(WebCore::Page::addDocumentNeedingIntersectionObservationUpdate):
(WebCore::Page::updateIntersectionObservations):
(WebCore::Page::scheduleForcedIntersectionObservationUpdate):
(WebCore::Page::layoutIfNeeded): Deleted.
(WebCore::Page::renderingUpdate): Deleted.
(WebCore::Page::renderingUpdateScheduler): Deleted.

  • page/Page.h:
  • page/PageOverlayController.cpp:

(WebCore::PageOverlayController::didChangeViewExposedRect):
(WebCore::PageOverlayController::notifyFlushRequired):

  • page/RenderingUpdateScheduler.cpp: Removed.
  • page/ios/ContentChangeObserver.h:
  • page/mac/ServicesOverlayController.mm:

(WebCore::ServicesOverlayController::Highlight::notifyFlushRequired):

  • rendering/RenderLayerCompositor.cpp:

(WebCore::RenderLayerCompositor::scheduleLayerFlushNow):

Source/WebKit:

  • WebProcess/WebPage/CoordinatedGraphics/DrawingAreaCoordinatedGraphics.cpp:

(WebKit::DrawingAreaCoordinatedGraphics::scheduleCompositingLayerFlush):
(WebKit::DrawingAreaCoordinatedGraphics::updateBackingStoreState):
(WebKit::DrawingAreaCoordinatedGraphics::display):

  • WebProcess/WebPage/CoordinatedGraphics/LayerTreeHost.cpp:

(WebKit::LayerTreeHost::layerFlushTimerFired):

  • WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.mm:

(WebKit::RemoteLayerTreeDrawingArea::flushLayers):

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::layoutIfNeeded):
(WebKit::WebPage::willDisplayPage):
(WebKit::WebPage::renderingUpdate): Deleted.

  • WebProcess/WebPage/WebPage.h:
  • WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:

(WebKit::TiledCoreAnimationDrawingArea::flushLayers):

Source/WebKitLegacy/mac:

  • WebView/WebView.mm:

(-[WebView _viewWillDrawInternal]):

Source/WebKitLegacy/win:

  • WebView.cpp:

(WebView::updateBackingStore):
(WebView::flushPendingGraphicsLayerChangesSoon):
(WebView::flushPendingGraphicsLayerChanges):

Source/WTF:

  • wtf/SystemTracing.h:

Tools:

  • Tracing/SystemTracePoints.plist:

LayoutTests:

  • TestExpectations:
  • animations/animation-multiple-callbacks-timestamp.html:
  • animations/no-style-recalc-during-accelerated-animation-expected.txt:
  • animations/no-style-recalc-during-accelerated-animation.html:
  • platform/mac-wk2/TestExpectations:
10:11 AM Changeset in webkit [242713] by Darin Adler
  • 37 edits in trunk/Source

Specify fixed precision explicitly to prepare to change String::number and StringBuilder::appendNumber floating point behavior
https://bugs.webkit.org/show_bug.cgi?id=195533

Reviewed by Brent Fulgham.

Source/JavaScriptCore:

  • API/tests/ExecutionTimeLimitTest.cpp:

(testExecutionTimeLimit): Use appendFixedPrecisionNumber.

  • runtime/NumberPrototype.cpp:

(JSC::numberProtoFuncToPrecision): Use numberToStringFixedPrecision.

  • runtime/Options.cpp:

(JSC::Option::dump const): Use appendFixedPrecisionNumber.

Source/WebCore:

  • accessibility/AccessibilityNodeObject.cpp:

(WebCore::AccessibilityNodeObject::changeValueByStep): Use numberToStringFixedPrecision.
(WebCore::AccessibilityNodeObject::changeValueByPercent): Ditto.

  • accessibility/AccessibilityScrollbar.cpp:

(WebCore::AccessibilityScrollbar::setValue): Ditto.

  • css/CSSFontVariationValue.cpp:

(WebCore::CSSFontVariationValue::customCSSText const): Use appendFixedPrecisionNumber.

  • css/CSSGradientValue.cpp:

(WebCore::CSSLinearGradientValue::customCSSText const): Ditto.
(WebCore::CSSRadialGradientValue::customCSSText const): Ditto.

  • css/CSSKeyframeRule.cpp:

(WebCore::StyleRuleKeyframe::keyText const): Ditto.

  • css/CSSTimingFunctionValue.cpp:

(WebCore::CSSCubicBezierTimingFunctionValue::customCSSText const): Ditto.
(WebCore::CSSSpringTimingFunctionValue::customCSSText const): Ditto.

  • css/parser/CSSParserToken.cpp:

(WebCore::CSSParserToken::serialize const): Ditto.

  • html/HTMLImageElement.cpp:

(WebCore::HTMLImageElement::completeURLsInAttributeValue const): Ditto.

  • inspector/InspectorOverlay.cpp:

(WebCore::InspectorOverlay::drawRulers): Use numberToStringFixedPrecision.

  • loader/ResourceLoadStatistics.cpp:

(WebCore::ResourceLoadStatistics::toString const): Use appendFixedPrecisionNumber.

  • page/PrintContext.cpp:

(WebCore::PrintContext::pageProperty): Use numberToStringFixedPrecision.

  • page/cocoa/ResourceUsageOverlayCocoa.mm:

(WebCore::gcTimerString): Use numberToStringFixedPrecision.

  • platform/LayoutUnit.h:

(WTF::ValueToString<WebCore::LayoutUnit>::string): Ditto.

  • platform/graphics/Color.cpp:

(WebCore::Color::cssText const): Use appendFixedPrecisionNumber.

  • platform/graphics/ExtendedColor.cpp:

(WebCore::ExtendedColor::cssText const): Ditto.

  • svg/SVGAngleValue.cpp:

(WebCore::SVGAngleValue::valueAsString const): Use numberToStringFixedPrecision.

  • svg/SVGNumberListValues.cpp:

(WebCore::SVGNumberListValues::valueAsString const): Use appendFixedPrecisionNumber.

  • svg/SVGPathStringBuilder.cpp:

(WebCore::appendNumber): Ditto.
(WebCore::appendPoint): Ditto.

  • svg/SVGPointListValues.cpp:

(WebCore::SVGPointListValues::valueAsString const): Ditto.

  • svg/SVGTransformValue.cpp:

(WebCore::SVGTransformValue::valueAsString const): Ditto.

  • svg/properties/SVGPropertyTraits.h:

(WebCore::SVGPropertyTraits<float>::toString): Use numberToStringFixedPrecision.
(WebCore::SVGPropertyTraits<FloatPoint>::toString): Use appendFixedPrecisionNumber.
(WebCore::SVGPropertyTraits<FloatRect>::toString): Ditto.

  • testing/Internals.cpp:

(WebCore::Internals::dumpMarkerRects): Use appendFixedPrecisionNumber.
(WebCore::Internals::getCurrentCursorInfo): Ditto.

  • xml/XPathValue.cpp:

(WebCore::XPath::Value::toString const): Use numberToStringFixedPrecision.

Source/WebKit:

  • NetworkProcess/cache/NetworkCache.cpp:

(WebKit::NetworkCache::Cache::dumpContentsToFile): Use appendFixedPrecisionNumber.

  • NetworkProcess/cache/NetworkCacheEntry.cpp:

(WebKit::NetworkCache::Entry::asJSON const): Ditto.

  • Shared/Gamepad/GamepadData.cpp:

(WebKit::GamepadData::loggingString const): Ditto.

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::logDiagnosticMessageWithValue): Use numberToStringFixedPrecision.

Source/WTF:

Soon, we will change String::number and StringBuilder::appendNumber for floating
point to use "shortest form" serialization instead of the current default, which is
"6-digit fixed precision stripping trailing zeros". To prepare to do this safely
without accidentally changing any behavior, changing callers to call the explicit
versions. Later, we may want to return and change many of them to use shortest form
instead, but that may require rebaselining tests, and in some extreme cases, getting
rid of flawed logic that converts between different single and double precision
floating point; such problems may be hidden by fixed precision serialization.

Since "shortest form" is already the behavior for AtomicString::number and
for makeString, no changes required for clients of either of those.

  • wtf/Logger.h:

(WTF::LogArgument::toString): Use numberToStringFixedPrecision.

  • wtf/MediaTime.cpp:

(WTF::MediaTime::toString const): Use appendFixedPrecisionNumber.

  • wtf/text/ValueToString.h:

(WTF::ValueToString<float>::string): Use numberToStringFixedPrecision.
(WTF::ValueToString<double>::string): Ditto.

10:01 AM Changeset in webkit [242712] by wilander@apple.com
  • 46 edits in trunk

Resource Load Statistics: Make it possible exclude localhost from classification
https://bugs.webkit.org/show_bug.cgi?id=195474
<rdar://problem/47520577>

Reviewed by Brent Fulgham.

Source/WebKit:

This patch allows for localhost to be excluded from classification and
treatment as a prevalent resource.

  • NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp:

(WebKit::ResourceLoadStatisticsDatabaseStore::ResourceLoadStatisticsDatabaseStore):
(WebKit::ResourceLoadStatisticsDatabaseStore::reclassifyResources):

Makes use of the new ResourceLoadStatisticsMemoryStore::shouldSkip().

(WebKit::ResourceLoadStatisticsDatabaseStore::setPrevalentResource):

Makes use of the new ResourceLoadStatisticsMemoryStore::shouldSkip().

(WebKit::ResourceLoadStatisticsDatabaseStore::isPrevalentResource const):

Makes use of the new ResourceLoadStatisticsMemoryStore::shouldSkip().

(WebKit::ResourceLoadStatisticsDatabaseStore::isVeryPrevalentResource const):

Makes use of the new ResourceLoadStatisticsMemoryStore::shouldSkip().

(WebKit::ResourceLoadStatisticsDatabaseStore::setVeryPrevalentResource):

Makes use of the new ResourceLoadStatisticsMemoryStore::shouldSkip().

  • NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.h:
  • NetworkProcess/Classifier/ResourceLoadStatisticsMemoryStore.cpp:

(WebKit::ResourceLoadStatisticsMemoryStore::ResourceLoadStatisticsMemoryStore):
(WebKit::ResourceLoadStatisticsMemoryStore::classifyPrevalentResources):

Makes use of the new ResourceLoadStatisticsMemoryStore::shouldSkip().

(WebKit::ResourceLoadStatisticsMemoryStore::setPrevalentResource):

Makes use of the new ResourceLoadStatisticsMemoryStore::shouldSkip().

(WebKit::ResourceLoadStatisticsMemoryStore::isPrevalentResource const):

Makes use of the new ResourceLoadStatisticsMemoryStore::shouldSkip().

(WebKit::ResourceLoadStatisticsMemoryStore::isVeryPrevalentResource const):

Makes use of the new ResourceLoadStatisticsMemoryStore::shouldSkip().

(WebKit::ResourceLoadStatisticsMemoryStore::setVeryPrevalentResource):

Makes use of the new ResourceLoadStatisticsMemoryStore::shouldSkip().

  • NetworkProcess/Classifier/ResourceLoadStatisticsMemoryStore.h:
  • NetworkProcess/Classifier/ResourceLoadStatisticsStore.cpp:

(WebKit::ResourceLoadStatisticsStore::ResourceLoadStatisticsStore):

Now takes a ShouldIncludeLocalhost parameter.

(WebKit::ResourceLoadStatisticsStore::shouldSkip const):

Convenience function, currently supporting the localhost exclusion.

(WebKit::ResourceLoadStatisticsStore::setIsRunningTest):

Test infrastructure.

  • NetworkProcess/Classifier/ResourceLoadStatisticsStore.h:
  • NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp:

(WebKit::WebResourceLoadStatisticsStore::setIsRunningTest):

Test infrastructure.

(WebKit::WebResourceLoadStatisticsStore::WebResourceLoadStatisticsStore):

Now takes a ShouldIncludeLocalhost parameter.

  • NetworkProcess/Classifier/WebResourceLoadStatisticsStore.h:

Defines the new ShouldIncludeLocalhost boolean enum.

  • NetworkProcess/NetworkProcess.cpp:

(WebKit::NetworkProcess::setIsRunningResourceLoadStatisticsTest):

Test infrastructure.

  • NetworkProcess/NetworkProcess.h:
  • NetworkProcess/NetworkProcess.messages.in:
  • NetworkProcess/NetworkSession.cpp:

(WebKit::NetworkSession::setResourceLoadStatisticsEnabled):

Forwards the localhost setting to the create function.

  • NetworkProcess/NetworkSession.h:
  • NetworkProcess/NetworkSessionCreationParameters.cpp:

(WebKit::NetworkSessionCreationParameters::encode const):
(WebKit::NetworkSessionCreationParameters::decode):

  • NetworkProcess/NetworkSessionCreationParameters.h:

New parameter called shouldIncludeLocalhostInResourceLoadStatistics.

  • NetworkProcess/cocoa/NetworkSessionCocoa.mm:

(WebKit::NetworkSessionCocoa::NetworkSessionCocoa):

Picks up the localhost setting from the parameters.

  • UIProcess/API/C/WKWebsiteDataStoreRef.cpp:

(WKWebsiteDataStoreSetStatisticsIsRunningTest):

Test infrastructure.

  • UIProcess/API/C/WKWebsiteDataStoreRef.h:
  • UIProcess/Network/NetworkProcessProxy.cpp:

(WebKit::NetworkProcessProxy::setIsRunningResourceLoadStatisticsTest):

Test infrastructure.

  • UIProcess/Network/NetworkProcessProxy.h:
  • UIProcess/WebProcessPool.cpp:

(WebKit::WebProcessPool::ensureNetworkProcess):

Picks up the localhost setting from the WebsiteDataStore parameters.

  • UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm:

(WebKit::WebsiteDataStore::parameters):

Makes sure Safari does not exclude localhost.

  • UIProcess/WebsiteData/WebsiteDataStore.cpp:

(WebKit::WebsiteDataStore::setIsRunningResourceLoadStatisticsTest):

Test infrastructure.

  • UIProcess/WebsiteData/WebsiteDataStore.h:

Tools:

This patch allows for localhost to be excluded from classification and
treatment as a prevalent resource.

The WebKit Tools change adds a new function called
testRunner.setStatisticsIsRunningTest() which can be used to control this
behavior.

  • WebKitTestRunner/InjectedBundle/Bindings/TestRunner.idl:
  • WebKitTestRunner/InjectedBundle/TestRunner.cpp:

(WTR::TestRunner::setStatisticsIsRunningTest):

  • WebKitTestRunner/InjectedBundle/TestRunner.h:
  • WebKitTestRunner/TestController.cpp:

(WTR::TestController::setStatisticsIsRunningTest):

  • WebKitTestRunner/TestController.h:
  • WebKitTestRunner/TestInvocation.cpp:

(WTR::TestInvocation::didReceiveSynchronousMessageFromInjectedBundle):

LayoutTests:

This patch makes sure that all test cases that need to, call the enableFeature()
function in http/tests/resourceLoadStatistics/resources/util.js.

The enableFeature() now calls the new function testRunner.setStatisticsIsRunningTest().

  • http/tests/resourceLoadStatistics/do-not-block-top-level-navigation-redirect.html:
  • http/tests/resourceLoadStatistics/non-sandboxed-iframe-redirect-ip-to-localhost-to-ip.html:
  • http/tests/resourceLoadStatistics/prevalent-resource-with-user-interaction.html:
  • http/tests/resourceLoadStatistics/resources/set-cookie-on-redirect.php:
  • http/tests/resourceLoadStatistics/resources/util.js:

(setEnableFeature):

  • http/tests/storageAccess/has-storage-access-from-prevalent-domain-with-user-interaction.html:
  • http/tests/storageAccess/request-and-grant-access-cross-origin-sandboxed-iframe-from-prevalent-domain-with-user-interaction.html:
  • http/tests/storageAccess/request-and-grant-access-cross-origin-sandboxed-iframe-from-prevalent-domain-without-user-interaction.html:
  • http/tests/storageAccess/request-and-grant-access-cross-origin-sandboxed-iframe.html:
  • http/tests/storageAccess/request-storage-access-cross-origin-sandboxed-iframe-with-unique-origin.html:
  • http/tests/storageAccess/request-storage-access-same-origin-iframe.html:
  • http/tests/storageAccess/request-storage-access-same-origin-sandboxed-iframe.html:
  • http/tests/storageAccess/request-storage-access-top-frame.html:
9:56 AM Changeset in webkit [242711] by aakash_jain@apple.com
  • 2 edits in trunk/Tools

[ews-build] Disable waterfall and console view for ews-build.webkit.org
https://bugs.webkit.org/show_bug.cgi?id=195560

Reviewed by Lucas Forschler.

  • BuildSlaveSupport/ews-build/master.cfg:
9:50 AM Changeset in webkit [242710] by achristensen@apple.com
  • 23 edits in trunk

Unreviewed, rolling out r242698.

API test crashes on bots.

Reverted changeset:

"Add a WKContentRuleList variant that uses copied memory
instead of mmap'd shared memory for class A containerized
apps"
https://bugs.webkit.org/show_bug.cgi?id=195511
https://trac.webkit.org/changeset/242698

9:47 AM Changeset in webkit [242709] by Michael Catanzaro
  • 9 edits
    1 add in trunk

[WPE] Enable web process sandbox
https://bugs.webkit.org/show_bug.cgi?id=195169

Reviewed by Daniel Bates.

.:

  • Source/cmake/BubblewrapSandboxChecks.cmake: Added.
  • Source/cmake/OptionsGTK.cmake:
  • Source/cmake/OptionsWPE.cmake:

Source/WebKit:

  • PlatformWPE.cmake:
  • UIProcess/Launcher/glib/BubblewrapLauncher.cpp:

(WebKit::bubblewrapSpawn):

Tools:

  • wpe/install-dependencies:
  • wpe/jhbuild.modules:
9:40 AM Changeset in webkit [242708] by aakash_jain@apple.com
  • 2 edits in trunk/Tools

[ews-app] Use port 17000 for worker communication
https://bugs.webkit.org/show_bug.cgi?id=195558

Reviewed by Lucas Forschler.

  • BuildSlaveSupport/ews-build/master.cfg:
9:38 AM Changeset in webkit [242707] by aakash_jain@apple.com
  • 4 edits in trunk/Tools

[ews-build] unit-tests fail when passwords.json is missing
https://bugs.webkit.org/show_bug.cgi?id=195557

Reviewed by Lucas Forschler.

  • BuildSlaveSupport/ews-build/loadConfig.py:

(loadBuilderConfig):

  • BuildSlaveSupport/ews-build/loadConfig_unittest.py:

(ConfigDotJSONTest.test_configuration):

  • BuildSlaveSupport/ews-build/master.cfg:
9:25 AM Changeset in webkit [242706] by Truitt Savell
  • 5 edits
    1 delete in trunk

Unreviewed, rolling out r242702.

Broke High Sierra builders.

Reverted changeset:

"Add utility function to allow easy reverse range-based
iteration of a container"
https://bugs.webkit.org/show_bug.cgi?id=195542
https://trac.webkit.org/changeset/242702

8:55 AM Changeset in webkit [242705] by Truitt Savell
  • 10 edits in trunk/Source/WebKit

Unreviewed, rolling out r242697.

Broke internal builders.

Reverted changeset:

"Optimizing loads when creating new pages"
https://bugs.webkit.org/show_bug.cgi?id=195516
https://trac.webkit.org/changeset/242697

8:44 AM WebKitGTK/2.24.x edited by Philippe Normand
(diff)
8:38 AM Changeset in webkit [242704] by jfernandez@igalia.com
  • 2 edits in trunk/LayoutTests

Unreviewed GTK test gardening
https://bugs.webkit.org/show_bug.cgi?id=195551

Unreviewed test gardening.

Mark the text-transform-capitilize-026.html as flaky for all platforms.

8:26 AM Changeset in webkit [242703] by Philippe Normand
  • 2 edits in trunk/Source/WebCore

Unreviewed, Non-GStreamer-GL build fix after r242701.

  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:

(WebCore::MediaPlayerPrivateGStreamerBase::~MediaPlayerPrivateGStreamerBase):

8:25 AM Changeset in webkit [242702] by commit-queue@webkit.org
  • 5 edits
    1 add in trunk

Add utility function to allow easy reverse range-based iteration of a container
https://bugs.webkit.org/show_bug.cgi?id=195542

Patch by Sam Weinig <sam@webkit.org> on 2019-03-11
Reviewed by Antti Koivisto.

Source/WTF:

Add functions to create an IteratorRange<T> that will iterate a container backwards. It
works with any container that is compatible with std::rbegin() and std::rend(). It is
expected to be used in conjunction with range-based for-loops like so:

for (auto& value : WTF::makeReversedRange(myContainer))

...

  • wtf/IteratorRange.h:

(WTF::makeReversedRange):

Tools:

  • TestWebKitAPI/CMakeLists.txt:
  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/WTF/IteratorRange.cpp: Added.

(TestWebKitAPI::TEST):
Add test to ensure WTF::makeReversedRange() works correctly and uses the correct types.

7:43 AM WebKitGTK/2.24.x edited by Philippe Normand
(diff)
7:41 AM Changeset in webkit [242701] by Philippe Normand
  • 6 edits in trunk/Source/WebCore

[GStreamer][v4l2] Synchronous video texture flushing support
https://bugs.webkit.org/show_bug.cgi?id=195453

Reviewed by Xabier Rodriguez-Calvar.

The v4l2 video decoder currently requires that downstream users of
the graphics resources complete any pending draw call and release
resources before returning from the DRAIN query.

To accomplish this the player monitors the pipeline and whenever a
v4l2 decoder is added, synchronous video texture flushing support
is enabled. Additionally and for all decoder configurations, a
flush is performed before disposing of the player.

  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:

(WebCore::MediaPlayerPrivateGStreamer::playbinDeepElementAddedCallback):
Monitor elements added to the decodebin bin.
(WebCore::MediaPlayerPrivateGStreamer::decodebinElementAdded): Set
a flag if a v4l2 decoder was added in decodebin.
(WebCore::MediaPlayerPrivateGStreamer::createGSTPlayBin): Connect
to the deep-element-added signal so as to monitor pipeline
topology updates.

  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.h:
  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:

(WebCore::MediaPlayerPrivateGStreamerBase::~MediaPlayerPrivateGStreamerBase):
Flush video texture before disposing of the player.
(WebCore::MediaPlayerPrivateGStreamerBase::flushCurrentBuffer):
Synchronously flush if the pipeline contains a v4l2 decoder.
(WebCore::MediaPlayerPrivateGStreamerBase::createGLAppSink): Monitor push events only.

  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.h:
  • platform/graphics/texmap/TextureMapperPlatformLayerProxy.cpp:

(WebCore::TextureMapperPlatformLayerProxy::pushNextBuffer): New
boolean flag used mostly to trigger synchronous flush conditions.
(WebCore::TextureMapperPlatformLayerProxy::dropCurrentBufferWhilePreservingTexture):
Optionally drop the current buffer in a synchronous manner. By
default the method keeps operating asynchronously.

  • platform/graphics/texmap/TextureMapperPlatformLayerProxy.h:
5:58 AM Changeset in webkit [242700] by Antti Koivisto
  • 3 edits in trunk/Source/WebCore

Rename contentOffsetInCompostingLayer to contentOffsetInCompositingLayer
https://bugs.webkit.org/show_bug.cgi?id=195553

Reviewed by Simon Fraser.

Less composting, more compositing.

  • rendering/RenderLayerBacking.cpp:

(WebCore::RenderLayerBacking::updateBackdropFiltersGeometry):
(WebCore::RenderLayerBacking::resetContentsRect):
(WebCore::RenderLayerBacking::updateChildClippingStrategy):
(WebCore::RenderLayerBacking::updateImageContents):
(WebCore::RenderLayerBacking::contentOffsetInCompositingLayer const):
(WebCore::RenderLayerBacking::contentsBox const):
(WebCore::RenderLayerBacking::backgroundBoxForSimpleContainerPainting const):
(WebCore::RenderLayerBacking::contentOffsetInCompostingLayer const): Deleted.

  • rendering/RenderLayerBacking.h:
2:08 AM WebKitGTK/2.24.x edited by tpopela@redhat.com
(diff)
Note: See TracTimeline for information about the timeline view.