Timeline
Nov 25, 2018:
- 10:55 PM Changeset in webkit [238487] by
-
- 2 edits in trunk/LayoutTests
Unreviewed test gardening, rebaseline webgpu/queue-creation.html.
- webgpu/queue-creation-expected.txt:
- 5:06 PM Changeset in webkit [238486] by
-
- 2 edits in trunk/Tools
Unreviewed test fix after r238467.
- TestWebKitAPI/Tests/WTF/ListHashSet.cpp:
(TestWebKitAPI::TEST):
- 2:59 PM Changeset in webkit [238485] by
-
- 2 edits in trunk/Tools
Unreviewed, fix the internal iOS 12 build after r238471
- TestWebKitAPI/Tests/WebKitCocoa/DataDetection.mm:
(TEST):
- 2:11 PM Changeset in webkit [238484] by
-
- 20 edits3 copies8 adds in trunk/Source/WebInspectorUI
Web Inspector: Timelines: add Media timeline
https://bugs.webkit.org/show_bug.cgi?id=191625
Reviewed by Matt Baker.
Add a new timeline to Timelines for media related events (e.g. event/fullscreen/low-power).
Mimics what is visible by using the same instrumentation points as the Network tab when
"Group Media Requests" is enabled.
- UserInterface/Models/MediaInstrument.js: Added.
(WI.MediaInstrument):
(WI.MediaInstrument.supported):
(WI.MediaInstrument.prototype.get timelineRecordType):
(WI.MediaInstrument.prototype.startInstrumentation):
(WI.MediaInstrument.prototype.stopInstrumentation):
- UserInterface/Models/MediaTimelineRecord.js: Added.
(WI.MediaTimelineRecord):
(WI.MediaTimelineRecord.prototype.get eventType):
(WI.MediaTimelineRecord.prototype.get domNode):
(WI.MediaTimelineRecord.prototype.get domEvent):
(WI.MediaTimelineRecord.prototype.get isLowPower):
(WI.MediaTimelineRecord.prototype.get displayName):
(WI.MediaTimelineRecord.prototype.saveIdentityToCookie):
- UserInterface/Views/MediaTimelineDataGridNode.js: Added.
(WI.MediaTimelineDataGridNode):
(WI.MediaTimelineDataGridNode.prototype.get records):
(WI.MediaTimelineDataGridNode.prototype.get data):
(WI.MediaTimelineDataGridNode.prototype.createCellContent):
(WI.MediaTimelineDataGridNode.prototype.iconClassNames):
(WI.MediaTimelineDataGridNode.prototype.filterableDataForColumn):
- UserInterface/Views/MediaTimelineOverviewGraph.js: Added.
(WI.MediaTimelineOverviewGraph):
(WI.MediaTimelineOverviewGraph.prototype.reset):
(WI.MediaTimelineOverviewGraph.prototype.shown):
(WI.MediaTimelineOverviewGraph.prototype.hidden):
(WI.MediaTimelineOverviewGraph.prototype.layout):
(WI.MediaTimelineOverviewGraph.prototype.updateSelectedRecord):
(WI.MediaTimelineOverviewGraph.prototype._handleRecordAdded):
- UserInterface/Views/MediaTimelineOverviewGraph.css: Added.
(.timeline-overview-graph.media > .timeline-record-bar):
(.timeline-overview-graph.media > .timeline-record-bar > .segment):
- UserInterface/Views/MediaTimelineView.js: Added.
(WI.MediaTimelineView):
(WI.MediaTimelineView.prototype.get secondsPerPixel):
(WI.MediaTimelineView.prototype.get selectionPathComponents):
(WI.MediaTimelineView.prototype.closed):
(WI.MediaTimelineView.prototype.reset):
(WI.MediaTimelineView.prototype.dataGridSortComparator.compareDOMNodes):
(WI.MediaTimelineView.prototype.dataGridSortComparator.):
(WI.MediaTimelineView.prototype.dataGridSortComparator):
(WI.MediaTimelineView.prototype.layout):
(WI.MediaTimelineView.prototype._processPendingRecords):
(WI.MediaTimelineView.prototype._handleRecordAdded):
(WI.MediaTimelineView.prototype._handleSelectionPathComponentSiblingSelected):
- UserInterface/Views/MediaTimelineView.css: Added.
(.timeline-view.media > .data-grid):
- UserInterface/Views/DOMEventsBreakdownView.js:
(WI.DOMEventsBreakdownView.prototype.layout):
- UserInterface/Views/DOMNodeEventsContentView.js:
(WI.DOMNodeEventsContentView.prototype.initialLayout):
- UserInterface/Views/NetworkDOMNodeDetailView.js:
(WI.NetworkDOMNodeDetailView):
(WI.NetworkDOMNodeDetailView.prototype.showContentViewForIdentifier):
- UserInterface/Views/NetworkTableContentView.js:
(WI.NetworkTableContentView):
(WI.NetworkTableContentView.prototype.get filterNavigationItems):
(WI.NetworkTableContentView.prototype._populateWaterfallGraph):
(WI.NetworkTableContentView.prototype._showDetailView):
(WI.NetworkTableContentView.prototype._waterfallPopoverContentForNodeEntry):
Remove passing ofstartTimestamptoWI.DOMEventsBreakdownView, as we should be showing
absolute timestamps for each event, not relative to the start of the recording.
- UserInterface/Views/TimelineIcons.css:
(.media-icon .icon): Added.
(.dom-event-record .icon): Added.
(.dom-event-record.fullscreen .icon): Added.
(.low-power-record .icon): Added.
- UserInterface/Controllers/TimelineManager.js:
(WI.TimelineManager.availableTimelineTypes):
(WI.TimelineManager.prototype.capturingStarted):
(WI.TimelineManager.prototype.capturingStopped):
(WI.TimelineManager.prototype._updateAutoCaptureInstruments):
(WI.TimelineManager.prototype._handleDOMNodeDidFireEvent): Added.
(WI.TimelineManager.prototype._handleDOMNodeLowPowerChanged): Added.
- UserInterface/Views/TimelineRuler.js:
(WI.TimelineRuler.prototype.clearMarkers):
(WI.TimelineRuler.prototype._handleClick):
- UserInterface/Views/TimelineOverview.js:
(WI.TimelineOverview.prototype._timelineRulerMouseClicked):
- UserInterface/Models/TimelineRecording.js:
(WI.TimelineRecording.prototype.reset):
(WI.TimelineRecording.prototype.addEventMarker):
(WI.TimelineRecording.prototype.addRecord):
(WI.TimelineRecording.prototype._keyForRecord):
Drive-by: rework the logic for "click" event pass-through to the graph underneath.
- UserInterface/Models/Instrument.js:
(WI.Instrument.createForTimelineType):
- UserInterface/Models/TimelineRecord.js:
- UserInterface/Views/TimelineTabContentView.js:
(WI.TimelineTabContentView.displayNameForTimelineType):
(WI.TimelineTabContentView.iconClassNameForTimelineType):
(WI.TimelineTabContentView.genericClassNameForTimelineType):
(WI.TimelineTabContentView.iconClassNameForRecord):
(WI.TimelineTabContentView.displayNameForRecord):
- UserInterface/Views/TimelineRecordBar.css:
(.timeline-record-bar.timeline-record-type-media > .segment): Added.
- UserInterface/Views/ContentView.js:
(WI.ContentView.createFromRepresentedObject):
- UserInterface/Views/TimelineOverviewGraph.js:
(WI.TimelineOverviewGraph.createForTimeline):
- UserInterface/Models/ScriptTimelineRecord.js:
(WI.ScriptTimelineRecord.EventType.displayName):
- UserInterface/Main.html:
- UserInterface/Test.html:
- Localizations/en.lproj/localizedStrings.js:
- UserInterface/Images/DOMEvent.svg: Added.
- UserInterface/Images/DOMEventFullscreen.svg: Added.
- UserInterface/Images/LowPower.svg: Added.
- UserInterface/Images/MediaInstrument.svg: Added.
- 1:44 PM Changeset in webkit [238483] by
-
- 14 edits in trunk/Source/WebInspectorUI
Web Inspector: Remove parameters from TreeOutline SelectionDidChange event
https://bugs.webkit.org/show_bug.cgi?id=191770
Reviewed by Devin Rousso.
- UserInterface/Controllers/CallFrameTreeController.js:
(WI.CallFrameTreeController.prototype._treeSelectionDidChange):
- UserInterface/Views/AuditNavigationSidebarPanel.js:
(WI.AuditNavigationSidebarPanel.prototype._treeSelectionDidChange):
- UserInterface/Views/CanvasSidebarPanel.js:
(WI.CanvasSidebarPanel):
(WI.CanvasSidebarPanel.prototype._treeSelectionDidChange):
(WI.CanvasSidebarPanel.prototype._treeOutlineSelectionDidChange): Deleted.
- UserInterface/Views/CanvasTabContentView.js:
(WI.CanvasTabContentView.prototype._canvasTreeOutlineSelectionDidChange):
- UserInterface/Views/DebuggerSidebarPanel.js:
(WI.DebuggerSidebarPanel.prototype._treeSelectionDidChange):
- UserInterface/Views/OpenResourceDialog.js:
(WI.OpenResourceDialog.prototype._treeSelectionDidChange):
- UserInterface/Views/ResourceSidebarPanel.js:
(WI.ResourceSidebarPanel.prototype._treeSelectionDidChange):
- UserInterface/Views/SearchSidebarPanel.js:
(WI.SearchSidebarPanel.prototype._treeSelectionDidChange):
- UserInterface/Views/StorageSidebarPanel.js:
(WI.StorageSidebarPanel._treeSelectionDidChange):
- UserInterface/Views/TimelineDataGrid.js:
(WI.TimelineDataGrid.prototype._popoverCallStackTreeSelectionDidChange):
(WI.TimelineDataGrid):
- UserInterface/Views/TimelineTabContentView.js:
(WI.TimelineTabContentView.prototype._recordingsTreeSelectionDidChange):
Useevent.target.selectedTreeElementinstead ofevent.data.selectedElement.
- UserInterface/Views/TimelineOverview.js:
(WI.TimelineOverview.prototype._timelinesTreeSelectionDidChange):
(WI.TimelineOverview.prototype._timelinesTreeSelectionDidChange.updateGraphSelectedState): Deleted.
Refactor away the single placeevent.data.deselectedElementwas used.
- UserInterface/Views/TreeElement.js:
(WI.TreeElement.prototype.select):
(WI.TreeElement.prototype.deselect):
RemoveselectedElementanddeselectedElementfrom event data.
- 1:35 PM Changeset in webkit [238482] by
-
- 10 edits in trunk/Source/WebCore
[LFC] Remove PointInContainingBlock and PositionInContainingBlock
https://bugs.webkit.org/show_bug.cgi?id=191954
Reviewed by Antti Koivisto.
Use Point and Position instead. Points and positions are by default in the containing block's coordinate system.
- layout/FormattingContextGeometry.cpp:
(WebCore::Layout::contentHeightForFormattingContextRoot):
- layout/LayoutUnits.h:
(WebCore::Layout::Position::operator LayoutUnit const):
(WebCore::Layout::operator<):
(WebCore::Layout::operator==):
- layout/floats/FloatAvoider.cpp:
(WebCore::Layout::FloatAvoider::FloatAvoider):
(WebCore::Layout::FloatAvoider::setHorizontalConstraints):
(WebCore::Layout::FloatAvoider::horizontalPositionCandidate):
(WebCore::Layout::FloatAvoider::initialHorizontalPosition const):
- layout/floats/FloatBox.cpp:
(WebCore::Layout::FloatBox::horizontalPositionCandidate):
(WebCore::Layout::FloatBox::verticalPositionCandidate):
(WebCore::Layout::FloatBox::initialVerticalPosition const):
- layout/floats/FloatingContext.cpp:
(WebCore::Layout::FloatingContext::positionForFloat const):
(WebCore::Layout::FloatingContext::positionForFloatAvoiding const):
(WebCore::Layout::FloatingContext::verticalPositionWithClearance const):
(WebCore::Layout::FloatingContext::floatingPosition const):
(WebCore::Layout::FloatingPair::horizontalConstraints const):
(WebCore::Layout::FloatingPair::bottom const):
- layout/floats/FloatingContext.h:
- layout/floats/FloatingState.cpp:
(WebCore::Layout::FloatingState::constraints const):
(WebCore::Layout::FloatingState::bottom const):
- layout/floats/FloatingState.h:
(WebCore::Layout::FloatingState::FloatItem::bottom const):
- layout/inlineformatting/InlineFormattingContext.cpp:
(WebCore::Layout::InlineFormattingContext::initializeNewLine const):
- 1:32 PM Changeset in webkit [238481] by
-
- 7 edits in trunk/Source/WebCore
[LFC] Rename Layout::Position to Layout::Point
https://bugs.webkit.org/show_bug.cgi?id=191950
Reviewed by Antti Koivisto.
It actually represents a point.
- layout/FormattingContext.cpp:
(WebCore::Layout::FormattingContext::mapTopLeftToAncestor):
(WebCore::Layout::FormattingContext::mapCoordinateToAncestor):
- layout/FormattingContext.h:
- layout/LayoutUnits.h:
(WebCore::Layout::Point::Point):
(WebCore::Layout::Point::moveBy):
(WebCore::Layout::Position::operator LayoutPoint const): Deleted.
(WebCore::Layout::Position::Position): Deleted.
(WebCore::Layout::Position::moveBy): Deleted.
- layout/blockformatting/BlockFormattingContext.h:
- layout/blockformatting/BlockFormattingContextGeometry.cpp:
(WebCore::Layout::BlockFormattingContext::Geometry::staticPosition):
- layout/floats/FloatingState.cpp:
(WebCore::Layout::FloatingState::constraints const):
- 1:30 PM Changeset in webkit [238480] by
-
- 3 edits in trunk/Source/WebCore
[LFC] Floating code should use typed positions (PositionInContextRoot).
https://bugs.webkit.org/show_bug.cgi?id=191949
Reviewed by Antti Koivisto.
Use PositionInContextRoot instead of LayoutUnit.
- layout/floats/FloatingState.cpp:
(WebCore::Layout::FloatingState::constraints const):
(WebCore::Layout::FloatingState::bottom const):
- layout/floats/FloatingState.h:
(WebCore::Layout::FloatingState::leftBottom const):
(WebCore::Layout::FloatingState::rightBottom const):
(WebCore::Layout::FloatingState::bottom const):
- 1:28 PM Changeset in webkit [238479] by
-
- 4 edits in trunk/Source/WebCore
Fix build after r238472.
- layout/inlineformatting/InlineFormattingContext.cpp:
(WebCore::Layout::InlineFormattingContext::splitInlineRunIfNeeded const):
- layout/inlineformatting/InlineFormattingContextGeometry.cpp:
(WebCore::Layout::InlineFormattingContext::Geometry::runWidth):
- layout/inlineformatting/InlineLineBreaker.cpp:
(WebCore::Layout::InlineLineBreaker::textWidth const):
- 10:22 AM Changeset in webkit [238478] by
-
- 2 edits in trunk/Source/WTF
CRASH() should call abort() except on Darwin and in developer builds
https://bugs.webkit.org/show_bug.cgi?id=184408
Reviewed by Daniel Bates.
CRASH() should call abort() except on Darwin and in developer builds, as discussed on
webkit-dev. This should be slightly nicer than dereferencing 0xbadbeef.
On Darwin, CRASH() uses a breakpoint trap, which seems to corrupt the stack on Linux, so we
can't do that.
Continue to call WTFCrash() in developer mode, and make no changes to WTFCrash(), since it
is reportedly useful in nightmare scenarios where core dumps are unavailable.
We also have to define CRASH_UNDER_CONSTEXPR_CONTEXT(). It's a bit odd that it's possible to
use a non-constexpr function here, but it works. Currently this macro uses WTFCrash(), which
is also non-constexpr.
- wtf/Assertions.h:
- 8:22 AM Changeset in webkit [238477] by
-
- 2 edits in trunk/Source/WTF
Unreviewed, rolling out r238469.
Broke the build
Reverted changeset:
"CRASH() should call abort() except on Darwin and in developer
builds"
https://bugs.webkit.org/show_bug.cgi?id=184408
https://trac.webkit.org/changeset/238469
- 4:19 AM Changeset in webkit [238476] by
-
- 8 edits in trunk/Source/WebKit
RemoteLayerTreeNode construction cleanups
https://bugs.webkit.org/show_bug.cgi?id=191951
Reviewed by Tim Horton.
- UIProcess/RemoteLayerTree/RemoteLayerTreeHost.h:
- UIProcess/RemoteLayerTree/RemoteLayerTreeHost.mm:
(WebKit::RemoteLayerTreeHost::updateLayerTree):
Drop unused LayerProperties argument.
(WebKit::RemoteLayerTreeHost::createLayer):
Split the actual construction out to makeNode.
Map updating is shared between platforms.
Move setting of layerID and clearing default actions to RemoteLayerTreeNode.
(WebKit::RemoteLayerTreeHost::makeNode):
Returns RemoteLayerTreeNode.
(WebKit::RemoteLayerTreeHost::setLayerID): Deleted.
(WebKit::RemoteLayerTreeHost::layerID): Deleted.
Move to RemoteLayerTreeNode.
- UIProcess/RemoteLayerTree/RemoteLayerTreeNode.h:
- UIProcess/RemoteLayerTree/RemoteLayerTreeNode.mm:
(WebKit::RemoteLayerTreeNode::RemoteLayerTreeNode):
(WebKit::RemoteLayerTreeNode::setLayerID):
(WebKit::RemoteLayerTreeNode::layerID):
- UIProcess/RemoteLayerTree/ios/RemoteLayerTreeHostIOS.mm:
(WebKit::RemoteLayerTreeHost::makeNode):
(WebKit::RemoteLayerTreeHost::createEmbeddedView):
(WebKit::RemoteLayerTreeHost::createLayer): Deleted.
- UIProcess/RemoteLayerTree/ios/RemoteLayerTreeViews.mm:
(-[WKCompositingView description]):
(-[WKUIRemoteView description]):
(-[WKBackdropView description]):
- WebProcess/WebPage/RemoteLayerTree/PlatformCAAnimationRemote.mm:
(WebKit::addAnimationToLayer):
- 4:11 AM Changeset in webkit [238475] by
-
- 25 edits1 copy7 adds in trunk
Make it possible to insert editable images with a gesture
https://bugs.webkit.org/show_bug.cgi?id=191937
Reviewed by Wenson Hsieh.
Source/WebCore:
Tests:
editing/images/redo-insert-editable-image-maintains-strokes.html,
editing/images/undo-insert-editable-image.html,
editing/images/basic-editable-image-from-execCommand.html
- Sources.txt:
- WebCore.xcodeproj/project.pbxproj:
- Source/WebCore/editing/EditorCommand.cpp:
- Source/WebCore/en.lproj/Localizable.strings:
- editing/EditAction.h:
- editing/Editor.cpp:
(WebCore::Editor::insertEditableImage):
- editing/Editor.h:
- editing/InsertEditableImageCommand.cpp: Added.
(WebCore::InsertEditableImageCommand::InsertEditableImageCommand):
(WebCore::InsertEditableImageCommand::doApply):
- editing/InsertEditableImageCommand.h: Added.
(WebCore::InsertEditableImageCommand::create):
- editing/VisibleSelection.cpp:
Add an editor command that inserts an editable image.
It will likely get a bit more complicated, but for now it just inserts
a 100% by 300px editable image.
Source/WebKit:
- UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView _stylusTapGestureShouldCreateEditableImage]):
- UIProcess/API/Cocoa/WKWebViewInternal.h:
Add a internal getter for a WKWebViewConfiguration property.
- UIProcess/WebEditCommandProxy.cpp:
(WebKit::WebEditCommandProxy::nameForEditAction):
Add a undo name.
- UIProcess/WebPageProxy.h:
- UIProcess/ios/WKContentViewInteraction.h:
- UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView setupInteraction]):
(-[WKContentView cleanupInteraction]):
(-[WKContentView _removeDefaultGestureRecognizers]):
(-[WKContentView _addDefaultGestureRecognizers]):
Add a single-stylus-tap gesture recognizer.
(-[WKContentView _stylusSingleTapRecognized:]):
If allowed, request to insert an editable image when a stylus tap occurs.
- UIProcess/ios/WebPageProxyIOS.mm:
(WebKit::WebPageProxy::handleStylusSingleTapAtPoint):
- WebProcess/WebPage/WebPage.h:
- WebProcess/WebPage/WebPage.messages.in:
- WebProcess/WebPage/ios/WebPageIOS.mm:
(WebKit::WebPage::handleStylusSingleTapAtPoint):
Do a hit test, select the hit position, insert an editable image, and
then de-assist any assisted node (to make the keyboard go away).
For now, we'll only insert if we hit non-replaced elements,
though this heuristic will need to be enhanced significantly once we
decide on a design.
Source/WebKitLegacy/mac:
- WebCoreSupport/WebEditorClient.mm:
(undoNameForEditAction):
Add a undo name.
Tools:
- WebKitTestRunner/ios/UIScriptControllerIOS.mm:
(WTR::UIScriptController::drawSquareInEditableImage):
If the canvas already has a drawing, draw a new stroke on top of it
instead of removing the existing stroke.
LayoutTests:
- editing/images/basic-editable-image-from-execCommand-expected.txt: Added.
- editing/images/basic-editable-image-from-execCommand.html: Added.
Add a test that ensures that editable images also work when
inserted via the editor command.
- editing/images/redo-insert-editable-image-maintains-strokes-expected.txt: Added.
- editing/images/redo-insert-editable-image-maintains-strokes.html: Added.
Add a test that ensures that strokes are maintained when re-doing an
un-done editable image insertion.
- editing/images/undo-insert-editable-image-expected.txt: Added.
- editing/images/undo-insert-editable-image.html: Added.
Add a test that ensures that the selection stays in a sensible place
when undoing and redoing editable image insertion.
- 4:05 AM Changeset in webkit [238474] by
-
- 4 edits in trunk/Source/WebKit
Scrolling and drawing compete for incoming gestures
https://bugs.webkit.org/show_bug.cgi?id=191940
Reviewed by Wenson Hsieh.
- Platform/spi/ios/PencilKitSPI.h:
- UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView _initializeWithConfiguration:]):
- UIProcess/ios/WKDrawingView.mm:
(-[WKDrawingView initWithEmbeddedViewID:webPageProxy:]):
Make scrolling and drawing mutually exclusive if editable images
are enabled.
Nov 24, 2018:
- 5:45 PM Changeset in webkit [238473] by
-
- 6 edits in trunk/Source
[Cocoa] Fix a few localizable string descriptions in WebEditCommandProxy.cpp and WebEditorClient.mm
https://bugs.webkit.org/show_bug.cgi?id=191945
Reviewed by Anders Carlsson.
Source/WebCore:
Run
update-webkit-localizable-strings.
- en.lproj/Localizable.strings:
Source/WebKit:
Replace some a couple of command undo action name descriptions with "Undo action name", to match all other
edit commands.
- UIProcess/WebEditCommandProxy.cpp:
(WebKit::WebEditCommandProxy::nameForEditAction):
Source/WebKitLegacy/mac:
- WebCoreSupport/WebEditorClient.mm:
(undoNameForEditAction):
- 4:37 PM Changeset in webkit [238472] by
-
- 5 edits in trunk/Source/WebCore
Remove now unnecessary specialized ListHashSet from InlineItem.h
https://bugs.webkit.org/show_bug.cgi?id=191946
Patch by Sam Weinig <sam@webkit.org> on 2018-11-24
Reviewed by Zalan Bujtas.
Now that ListHashSet supports raw pointer overloads for smart pointers,
we can fix the FIXME in InlineItem.h and remove the specialized ListHashSet
and ListHashSet::find calls.
- layout/inlineformatting/InlineFormattingContext.cpp:
(WebCore::Layout::InlineFormattingContext::splitInlineRunIfNeeded const):
(WebCore::Layout::InlineFormattingContext::collectInlineContentForSubtree const):
- layout/inlineformatting/InlineFormattingContextGeometry.cpp:
(WebCore::Layout::InlineFormattingContext::Geometry::runWidth):
- layout/inlineformatting/InlineItem.h:
(WebCore::Layout::InlineItemHashFunctions::hash): Deleted.
(WebCore::Layout::InlineItemHashFunctions::equal): Deleted.
(WebCore::Layout::InlineItemHashTranslator::hash): Deleted.
(WebCore::Layout::InlineItemHashTranslator::equal): Deleted.
- layout/inlineformatting/InlineLineBreaker.cpp:
(WebCore::Layout::InlineLineBreaker::textWidth const):
- 1:06 PM Changeset in webkit [238471] by
-
- 19 edits1 copy1 add in trunk
[Cocoa] Add WKWebView SPI to trigger and remove data detection
https://bugs.webkit.org/show_bug.cgi?id=191918
<rdar://problem/36185051>
Reviewed by Tim Horton.
Source/WebCore:
Add a helper method on DataDetection to remove all data detected links in the given document. See WebKit changes
for more detail.
- editing/cocoa/DataDetection.h:
- editing/cocoa/DataDetection.mm:
(WebCore::DataDetection::removeDataDetectedLinksInDocument):
Source/WebKit:
Adds support for two new WKWebView SPI methods,
-_detectDataWithTypes:completionHandler:and
-_removeAllDataDetectedLinks:, to allow internal WebKit clients to run data detection and add links to data
detected content, or remove all data detected links from the document.
Test: WebKit.AddAndRemoveDataDetectors
- Shared/Cocoa/DataDetectionResult.h:
- Shared/Cocoa/DataDetectionResult.mm:
(WebKit::DataDetectionResult::decode):
Modernize DataDetectionResult's IPC decoding, so that it can be used with reply-based async IPC.
- UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView _removeDataDetectedLinks:]):
(-[WKWebView _detectDataWithTypes:completionHandler:]):
- UIProcess/API/Cocoa/WKWebViewPrivate.h:
- UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::detectDataInAllFrames):
(WebKit::WebPageProxy::removeDataDetectedLinks):
Add or remove data detected links from each frame in the page, and then propagate the new data detector
results of the main frame to the UI process (this matches current behavior, where the results of -[WKWebView
_dataDetectionResults] only reflects data detection results in the main frame of the page).
- UIProcess/WebPageProxy.h:
- WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::removeDataDetectedLinks):
(WebKit::WebPage::detectDataInAllFrames):
- WebProcess/WebPage/WebPage.h:
- WebProcess/WebPage/WebPage.messages.in:
Tools:
Add an API test to exercise the new WebKit SPI.
- TestWebKitAPI/DataDetectorsCoreSPI.h: Added.
- TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
- TestWebKitAPI/Tests/WebKitCocoa/DataDetection.mm:
(-[WKWebView synchronouslyDetectDataWithTypes:]):
(-[WKWebView synchronouslyRemoveDataDetectedLinks]):
(TEST):
- TestWebKitAPI/Tests/WebKitCocoa/WKAttachmentTests.mm:
(TestWebKitAPI::TEST):
(-[TestWKWebView tagsInBody]): Deleted.
(-[TestWKWebView expectElementTagsInOrder:]): Deleted.
(-[TestWKWebView expectElementCount:tagName:]): Deleted.
(-[TestWKWebView expectElementTag:toComeBefore:]): Deleted.
Rename this from
-expectElementCount:tagName:to-expectElementCount:querySelector:.
- TestWebKitAPI/Tests/WebKitCocoa/data-detectors.html: Added.
Add a new test page containing some content that can be data detected.
- TestWebKitAPI/cocoa/TestWKWebView.h:
- TestWebKitAPI/cocoa/TestWKWebView.mm:
(-[WKWebView tagsInBody]):
(-[WKWebView expectElementTagsInOrder:]):
(-[WKWebView expectElementCount:querySelector:]):
(-[WKWebView expectElementTag:toComeBefore:]):
Move some testing helper functions from WKAttachmentTests to a testing category on WKWebView. This allows us to
use-expectElementCount:querySelector:in tests outside of WKAttachmentTests.
(-[WKWebView objectByEvaluatingJavaScript:]):
(-[WKWebView objectByEvaluatingJavaScriptWithUserGesture:]):
(-[WKWebView stringByEvaluatingJavaScript:]):
Move some common helper functions from TestWKWebView to a testing category on WKWebView.
(-[TestWKWebView objectByEvaluatingJavaScript:]): Deleted.
(-[TestWKWebView objectByEvaluatingJavaScriptWithUserGesture:]): Deleted.
(-[TestWKWebView stringByEvaluatingJavaScript:]): Deleted.
- 10:37 AM Changeset in webkit [238470] by
-
- 16 edits in trunk/Source
[Cocoa] SOFT_LINK_CLASS_FOR_{HEADER,SOURCE} should generate a more concise getter function
https://bugs.webkit.org/show_bug.cgi?id=191899
Reviewed by Dean Jackson.
Source/WebCore:
- editing/cocoa/DataDetection.mm:
- editing/cocoa/FontAttributesCocoa.mm:
- editing/cocoa/FontShadowCocoa.mm:
- platform/cocoa/DataDetectorsCoreSoftLink.h:
- platform/graphics/cocoa/ColorCocoa.mm:
- platform/ios/PlatformScreenIOS.mm:
Source/WebCore/PAL:
- pal/cocoa/PassKitSoftLink.h:
- pal/ios/UIKitSoftLink.h:
Source/WebKit:
- Shared/cocoa/WebCoreArgumentCodersCocoa.mm:
- UIProcess/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.mm:
- UIProcess/ApplePay/mac/WebPaymentCoordinatorProxyMac.mm:
Source/WTF:
Currently, SOFT_LINK_CLASS_FOR_HEADER declares a class getter function that includes the
framework name. For example, NSView would have a class getter named
namespace::get_AppKit_NSViewClass().
Including the framework name in the getter is unnecessary. Objective-C classes already exist
in a global namespace, so there is no need to disambiguate class names by framework. This
patch elides the framework name from the getter function. For example, NSView would now have
a getter named namespace::getNSViewClass().
- wtf/cocoa/SoftLinking.h:
- 7:13 AM Changeset in webkit [238469] by
-
- 2 edits in trunk/Source/WTF
CRASH() should call abort() except on Darwin and in developer builds
https://bugs.webkit.org/show_bug.cgi?id=184408
Reviewed by Daniel Bates.
CRASH() should call abort() except on Darwin and in developer builds, as discussed on
webkit-dev. This should be slightly nicer than dereferencing 0xbadbeef.
On Darwin, CRASH() uses a breakpoint trap, which seems to corrupt the stack on Linux, so we
can't do that.
Continue to call WTFCrash() in developer mode, and make no changes to WTFCrash(), since it
is reportedly useful in nightmare scenarios where core dumps are unavailable.
- wtf/Assertions.h: