blob: eafa215585124fc48807022fe0541ed3c2d3ad7e [file] [log] [blame]
2019-05-09 Devin Rousso <drousso@apple.com>
Web Inspector: Uncaught Exception: null is not an object (evaluating 'resource.parentFrame.securityOrigin')
https://bugs.webkit.org/show_bug.cgi?id=196572
<rdar://problem/49578338>
Reviewed by Timothy Hatcher.
* UserInterface/Views/SourcesNavigationSidebarPanel.js:
(WI.SourcesNavigationSidebarPanel.prototype._addResource):
2019-05-09 Devin Rousso <drousso@apple.com>
Web Inspector: REGRESSION: unable to expand/collapse non-selectable WI.TreeOutline
https://bugs.webkit.org/show_bug.cgi?id=197591
Reviewed by Timothy Hatcher.
* UserInterface/Views/TreeElement.js:
(WI.TreeElement.treeElementToggled):
2019-05-09 Devin Rousso <drousso@apple.com>
Web Inspector: Uncaught Exception: null is not an object (evaluating 'url.startsWith')
https://bugs.webkit.org/show_bug.cgi?id=196662
<rdar://problem/49659633>
Reviewed by Timothy Hatcher.
* UserInterface/Views/ConsoleMessageView.js:
(WI.ConsoleMessageView.prototype._appendLocationLink):
(WI.ConsoleMessageView.prototype._linkifyLocation): Deleted.
* UserInterface/Base/Main.js:
(WI.linkifyLocation):
(WI.linkifySourceCode): Added.
Split the logic into two functions, as there's no need to re-fetch the `SourceCode` from a
given url if you already have the `SourceCode` in the caller.
2019-05-08 Ryan Haddad <ryanhaddad@apple.com>
Unreviewed, rolling out r244952.
Caused inspector to appear blank.
Reverted changeset:
"Web Inspector: Provide UIString descriptions to improve
localizations"
https://bugs.webkit.org/show_bug.cgi?id=195132
https://trac.webkit.org/changeset/244952
2019-05-04 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Provide UIString descriptions to improve localizations
https://bugs.webkit.org/show_bug.cgi?id=195132
<rdar://problem/48457817>
Reviewed by Devin Rousso.
* Localizations/en.lproj/localizedStrings.js:
* UserInterface/Base/LoadLocalizedStrings.js:
(WI.UIString):
(WI.repeatedUIString.timelineRecordLayout):
(WI.repeatedUIString.timelineRecordPaint):
(WI.repeatedUIString.timelineRecordComposite):
(WI.repeatedUIString.allExceptions):
(WI.repeatedUIString.uncaughtExceptions):
(WI.repeatedUIString.assertionFailures):
(WI.repeatedUIString.allRequests):
(WI.repeatedUIString.fetch):
(WI.repeatedUIString.revealInDOMTree):
* UserInterface/Models/LayoutTimelineRecord.js:
(WI.LayoutTimelineRecord.displayNameForEventType):
* UserInterface/Models/RenderingFrameTimelineRecord.js:
(WI.RenderingFrameTimelineRecord.displayNameForTaskType):
* UserInterface/Models/Resource.js:
(WI.Resource.displayNameForType):
* UserInterface/Views/AuditTestGroupContentView.js:
(WI.AuditTestGroupContentView.prototype.layout):
* UserInterface/Views/CPUTimelineView.js:
(WI.CPUTimelineView.displayNameForSampleType):
* UserInterface/Views/ContextMenuUtilities.js:
* UserInterface/Views/DOMBreakpointTreeElement.js:
(WI.DOMBreakpointTreeElement.displayNameForType):
* UserInterface/Views/DOMNodeTreeElement.js:
(WI.DOMNodeTreeElement.prototype.populateContextMenu):
(WI.DOMNodeTreeElement):
* UserInterface/Views/DOMTreeElement.js:
(WI.DOMTreeElement.prototype._populateTagContextMenu):
(WI.DOMTreeElement.prototype._populateNodeContextMenu):
* UserInterface/Views/DebuggerSidebarPanel.js:
(WI.DebuggerSidebarPanel.prototype._addBreakpoint):
(WI.DebuggerSidebarPanel.prototype._handleCreateBreakpointMouseDown):
(WI.DebuggerSidebarPanel):
* UserInterface/Views/LayerTreeDetailsSidebarPanel.js:
(WI.LayerTreeDetailsSidebarPanel.prototype._buildDataGridSection):
* UserInterface/Views/NetworkTableContentView.js:
(WI.NetworkTableContentView.shortDisplayNameForResourceType):
(WI.NetworkTableContentView.prototype.initialLayout):
* UserInterface/Views/SourcesNavigationSidebarPanel.js:
(WI.SourcesNavigationSidebarPanel.prototype._addBreakpoint):
(WI.SourcesNavigationSidebarPanel.prototype._handleCreateBreakpointMouseDown):
* UserInterface/Views/SpreadsheetCSSStyleDeclarationSection.js:
(WI.SpreadsheetCSSStyleDeclarationSection.prototype._renderSelector):
* UserInterface/Views/SpreadsheetRulesStyleDetailsPanel.js:
(WI.SpreadsheetRulesStyleDetailsPanel.prototype.layout):
2019-05-04 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Styles: use the same green color for modified properties as in Changes panel
https://bugs.webkit.org/show_bug.cgi?id=197538
Reviewed by Timothy Hatcher.
* UserInterface/Views/ChangesDetailsSidebarPanel.css:
(.changes-panel .css-property-line.added):
(.changes-panel .css-property-line.removed):
(.changes-panel .css-property-line.added::before):
* UserInterface/Views/SpreadsheetCSSStyleDeclarationEditor.css:
(.spreadsheet-style-declaration-editor .property.modified):
(.spreadsheet-style-declaration-editor .property.modified:not(.selected)):
(@media (prefers-color-scheme: dark)):
* UserInterface/Views/Variables.css:
(:root):
(@media (prefers-color-scheme: dark)):
2019-05-03 Devin Rousso <drousso@apple.com>
Web Inspector: DOM: dragging a node to the console should log the node
https://bugs.webkit.org/show_bug.cgi?id=197330
Reviewed by Timothy Hatcher.
* UserInterface/Views/DOMTreeOutline.js:
(WI.DOMTreeOutline.prototype._ondragstart):
* UserInterface/Views/LogContentView.js:
(WI.LogContentView):
(WI.LogContentView.prototype._handleDragOver): Added.
(WI.LogContentView.prototype._handleDrop): Added.
* UserInterface/Views/QuickConsole.js:
(WI.QuickConsole):
(WI.QuickConsole.prototype._handleDragOver): Added.
(WI.QuickConsole.prototype._handleDrop): Added.
* UserInterface/Views/GeneralStyleDetailsSidebarPanel.js:
Drive-by: update the format to be more unique.
* Localizations/en.lproj/localizedStrings.js:
2019-05-03 Devin Rousso <drousso@apple.com>
Web Inspector: DOM: rename "low power" to "display composited"
https://bugs.webkit.org/show_bug.cgi?id=197296
Reviewed by Joseph Pecoraro.
Removed specific ChangeLog entries since it is almost entirely mechanical changes.
* UserInterface/Protocol/DOMObserver.js:
* UserInterface/Controllers/DOMManager.js:
* UserInterface/Controllers/TimelineManager.js:
* UserInterface/Models/DOMNode.js:
* UserInterface/Models/MediaInstrument.js:
* UserInterface/Models/MediaTimelineRecord.js:
* UserInterface/Models/TimelineRecording.js:
* UserInterface/Views/DOMEventsBreakdownView.js:
* UserInterface/Views/DOMEventsBreakdownView.css:
* UserInterface/Views/NetworkTableContentView.js:
* UserInterface/Views/NetworkTableContentView.css:
* UserInterface/Views/TimelineIcons.css:
* UserInterface/Views/TimelineTabContentView.js:
* UserInterface/Images/PowerEfficientPlaybackStateChanged.svg: Added.
* UserInterface/Images/LowPower.svg: Removed.
* Localizations/en.lproj/localizedStrings.js:
2019-05-03 Devin Rousso <drousso@apple.com>
Web Inspector: Record actions performed on WebGL2RenderingContext
https://bugs.webkit.org/show_bug.cgi?id=176008
<rdar://problem/34213884>
Reviewed by Joseph Pecoraro.
* UserInterface/Models/Recording.js:
(WI.Recording.fromPayload):
(WI.Recording.displayNameForSwizzleType):
(WI.Recording.prototype.async swizzle):
(WI.Recording.prototype.createContext):
* UserInterface/Models/RecordingAction.js:
(WI.RecordingAction.constantNameForParameter):
(WI.RecordingAction._prototypeForType):
(WI.RecordingAction.prototype.async swizzle):
Treat all actions with a snapshot as being a "visible" action.
* UserInterface/Views/CanvasTabContentView.css:
(.content-view.tab.canvas .navigation-bar > .item .canvas:matches(.webgl, .webgl2, .webgpu, .webmetal) .icon): Added.
(.content-view.tab.canvas .navigation-bar > .item .canvas.webgl): Deleted.
* UserInterface/Views/CanvasContentView.js:
(WI.CanvasContentView.prototype.initialLayout):
* UserInterface/Views/CanvasSidebarPanel.js:
(WI.CanvasSidebarPanel.prototype.shown):
(WI.CanvasSidebarPanel.prototype._canvasChanged):
(WI.CanvasSidebarPanel.prototype._updateRecordNavigationItem):
* UserInterface/Views/RecordingContentView.js:
(WI.RecordingContentView):
(WI.RecordingContentView.prototype.get navigationItems):
(WI.RecordingContentView.prototype.shown):
(WI.RecordingContentView.prototype.initialLayout):
* UserInterface/Views/RecordingActionTreeElement.js:
(WI.RecordingActionTreeElement._generateDOM.createParameterElement):
2019-05-02 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Dark Mode: borders between section should be lighter than background
https://bugs.webkit.org/show_bug.cgi?id=197551
Reviewed by Joseph Pecoraro.
* UserInterface/Views/DetailsSection.css:
(.details-section .details-section):
2019-04-29 Alex Christensen <achristensen@webkit.org>
<rdar://problem/50299396> Fix internal High Sierra build
https://bugs.webkit.org/show_bug.cgi?id=197388
* Configurations/Base.xcconfig:
2019-04-26 Jessie Berlin <jberlin@webkit.org>
Add new mac target numbers
https://bugs.webkit.org/show_bug.cgi?id=197313
Reviewed by Alex Christensen.
* Configurations/Version.xcconfig:
2019-04-25 Alex Christensen <achristensen@webkit.org>
Start using C++17
https://bugs.webkit.org/show_bug.cgi?id=197131
Reviewed by Darin Adler.
* Configurations/Base.xcconfig:
2019-04-24 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Styles: don't start property selection when pressing right mouse button
https://bugs.webkit.org/show_bug.cgi?id=197242
<rdar://problem/50180380>
Reviewed by Timothy Hatcher.
* UserInterface/Views/SpreadsheetCSSStyleDeclarationSection.js:
(WI.SpreadsheetCSSStyleDeclarationSection.prototype._handleMouseDown):
2019-04-24 Devin Rousso <drousso@apple.com>
Web Inspector: Network: importing a HAR with an active detail view shows no content
https://bugs.webkit.org/show_bug.cgi?id=197223
Reviewed by Timothy Hatcher.
When hiding the detail view, we force a `layout` of the Network table, which causes the
cached row count to be set to `0`, which prevents the `reloadDataAddedToEndOnly` from
rendering anything since the `WI.Table` thinks it has no rows.
Given that all of the users of `WI.Table` are backed by an array, we don't need to cache the
number of rows since `.length` is an extremely cheap operation. In turn, this guarantees
that we are always rendering with an accurate value.
* UserInterface/Views/Table.js:
(WI.Table):
(WI.Table.prototype.get numberOfRows):
(WI.Table.prototype.reloadData):
(WI.Table.prototype._removeRows):
2019-04-23 Devin Rousso <drousso@apple.com>
Web Inspector: REGRESSION(r238168): Network: preserve log doesn't show main frame main resource changes
https://bugs.webkit.org/show_bug.cgi?id=197220
<rdar://problem/49960464>
Reviewed by Timothy Hatcher.
* UserInterface/Views/NetworkTableContentView.js:
(WI.NetworkTableContentView.prototype.reset):
(WI.NetworkTableContentView.prototype._addCollection):
(WI.NetworkTableContentView.prototype._resetCollection): Added.
(WI.NetworkTableContentView.prototype._changeCollection):
(WI.NetworkTableContentView.prototype._mainResourceDidChange):
We want to add the frame's main resource in the case that it's the main frame, but we also
want to clear the main collection of data (e.g. if viewing an imported HAR).
Drive-by: `_groupByDOMNodeNavigationItem` was renamed in a previous patch.
2019-04-23 Devin Rousso <drousso@apple.com>
Web Inspector: Network: support drag/drop for importing
https://bugs.webkit.org/show_bug.cgi?id=197221
Reviewed by Timothy Hatcher.
* UserInterface/Views/NetworkTabContentView.js:
(WI.NetworkTabContentView.prototype.async.handleFileDrop): Added.
* UserInterface/Views/NetworkTableContentView.js:
(WI.NetworkTableContentView.prototype.processHAR): Added.
(WI.NetworkTableContentView.prototype._importHAR):
* UserInterface/Base/FileUtilities.js:
(WI.FileUtilities.async readText):
Only `await` if the result is a `Promise`.
2019-04-23 Devin Rousso <drousso@apple.com>
Web Inspector: Uncaught Exception: null is not an object (evaluating 'this.ownerDocument.frameIdentifier')
https://bugs.webkit.org/show_bug.cgi?id=196420
<rdar://problem/49444205>
Reviewed by Timothy Hatcher.
* UserInterface/Models/DOMNode.js:
(WI.DOMNode):
(WI.DOMNode.prototype.get frame): Added.
(WI.DOMNode.prototype.get frameIdentifier): Deleted.
Modify the existing `frameId` to represent the owner frame of the node, rather than the
frame it holds (in the case of an `<iframe>`).
* UserInterface/Controllers/DOMDebuggerManager.js:
(WI.DOMDebuggerManager.prototype.domBreakpointsForNode):
(WI.DOMDebuggerManager.prototype._detachDOMBreakpoint):
(WI.DOMDebuggerManager.prototype._resolveDOMBreakpoint):
(WI.DOMDebuggerManager.prototype._nodeInserted):
(WI.DOMDebuggerManager.prototype._nodeRemoved):
* UserInterface/Views/DOMTreeElement.js:
(WI.DOMTreeElement.prototype._populateTagContextMenu):
(WI.DOMTreeElement.prototype._buildAttributeDOM):
* UserInterface/Views/QuickConsole.js:
(WI.QuickConsole.prototype._selectExecutionContext):
* UserInterface/Views/SpreadsheetCSSStyleDeclarationSection.js:
(WI.SpreadsheetCSSStyleDeclarationSection.prototype._highlightNodesWithSelector):
2019-04-23 Devin Rousso <drousso@apple.com>
Web Inspector: Canvas: no obvious way of switching to the overview when viewing an imported recording
https://bugs.webkit.org/show_bug.cgi?id=197178
<rdar://problem/50106641>
Reviewed by Timothy Hatcher.
Expand the idea of "imported" recordings to include "saved" recordings, ones whose
underlying <canvas> was destroyed.
* UserInterface/Views/CanvasTabContentView.js:
(WI.CanvasTabContentView):
(WI.CanvasTabContentView.prototype.attached):
(WI.CanvasTabContentView.prototype._removeCanvas):
(WI.CanvasTabContentView.prototype._addRecording):
(WI.CanvasTabContentView.prototype._handleRecordingSavedOrStopped): Added.
(WI.CanvasTabContentView.prototype.initialLayout): Deleted.
(WI.CanvasTabContentView.prototype._recordingImportedOrStopped): Deleted.
Make the "Saved Recordings" folder a child of the "Overview" so that the "Overview" path
component is always visible/clickable.
* UserInterface/Views/CanvasOverviewContentView.js:
(WI.CanvasOverviewContentView):
(WI.CanvasOverviewContentView.prototype.contentViewAdded):
(WI.CanvasOverviewContentView.prototype.attached):
(WI.CanvasOverviewContentView.prototype.detached):
(WI.CanvasOverviewContentView.prototype._addSavedRecording): Added.
(WI.CanvasOverviewContentView.prototype._handleRecordingSaved): Added.
(WI.CanvasOverviewContentView.prototype._handleSavedRecordingClicked): Added.
* UserInterface/Views/CanvasOverviewContentView.css:
(.content-view.canvas-overview .content-view.canvas.saved-recordings): Added.
(.content-view.canvas-overview .content-view.canvas.saved-recordings .tree-outline): Added.
(.content-view.canvas-overview .content-view.canvas.saved-recordings .tree-outline > .item.recording > .icon): Added.
Add a card for "Saved Recordings" that mimics the style of regular canvas cards.
* UserInterface/Controllers/CanvasManager.js:
(WI.CanvasManager):
(WI.CanvasManager.prototype.get savedRecordings): Added.
(WI.CanvasManager.prototype.async processJSON):
(WI.CanvasManager.prototype.disable):
(WI.CanvasManager.prototype._removeCanvas):
(WI.CanvasManager.prototype.get importedRecordings): Deleted.
* Localizations/en.lproj/localizedStrings.js:
2019-04-22 Devin Rousso <drousso@apple.com>
Web Inspector: REGRESSION: Sources: auto-continue breakpoint triangle is incorrectly positioned
https://bugs.webkit.org/show_bug.cgi?id=197179
Reviewed by Joseph Pecoraro.
* UserInterface/Views/BreakpointTreeElement.css:
(.item.breakpoint .status): Added.
(.item.breakpoint .status > .status-image.auto-continue::after):
2019-04-19 Devin Rousso <drousso@apple.com>
Web Inspector: Timelines: CPU: remove extra border under last section
https://bugs.webkit.org/show_bug.cgi?id=197120
Reviewed by Joseph Pecoraro.
* UserInterface/Views/CPUTimelineView.css:
(.timeline-view.cpu > .content > .overview):
(.timeline-view.cpu > .content > .overview:not(:last-child)): Added.
2019-04-19 Devin Rousso <drousso@apple.com>
Web Inspector: Timelines: adjust default Media timeline column widths
https://bugs.webkit.org/show_bug.cgi?id=197114
Reviewed by Joseph Pecoraro.
* UserInterface/Views/MediaTimelineView.js:
(WI.MediaTimelineView):
2019-04-18 Devin Rousso <drousso@apple.com>
Web Inspector: REGRESSION (r244155): pressing down expands folders in trees
https://bugs.webkit.org/show_bug.cgi?id=197051
<rdar://problem/50006414>
Reviewed by Timothy Hatcher.
* UserInterface/Views/TreeOutline.js:
(WI.TreeOutline.prototype.selectionControllerPreviousSelectableItem):
(WI.TreeOutline.prototype.selectionControllerNextSelectableItem):
Skip hidden items when traversing the tree.
* UserInterface/Views/DOMTreeOutline.js:
(WI.DOMTreeOutline.prototype.ondelete):
Reveal all items about to be deleted so that the above change won't skip any siblings.
2019-04-18 Devin Rousso <drousso@apple.com>
Web Inspector: Canvas: enable WebGL2 for inspector page
https://bugs.webkit.org/show_bug.cgi?id=196932
<rdar://problem/49916213>
Reviewed by Timothy Hatcher.
* UserInterface/Models/RecordingAction.js:
(WI.RecordingAction._prototypeForType):
(WI.RecordingAction.prototype.process.getContent):
Add additional checks for `ImageBitmapRenderingContext` and `WebGLRenderingContext`.
2019-04-17 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Navigating to resource sometimes shows different resource
https://bugs.webkit.org/show_bug.cgi?id=195978
<rdar://problem/49043191>
Reviewed by Timothy Hatcher.
* UserInterface/Views/NavigationSidebarPanel.js:
(WI.NavigationSidebarPanel.prototype.cancelRestoringState):
Reset _pendingViewStateCookie so _checkElementsForPendingViewStateCookie could exit early.
* UserInterface/Views/ResourceSidebarPanel.js:
(WI.ResourceSidebarPanel.prototype.initialLayout):
(WI.ResourceSidebarPanel.prototype._mainFrameMainResourceDidChange):
(WI.ResourceSidebarPanel.prototype._createMainFrameTreeElement):
Don't try to change content view on initialLayout.
2019-04-17 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: CPU Usage Timeline - Include # of Network Requests in the Statistics section
https://bugs.webkit.org/show_bug.cgi?id=197039
<rdar://problem/49996299>
Reviewed by Timothy Hatcher.
* Localizations/en.lproj/localizedStrings.js:
* UserInterface/Views/CPUTimelineView.js:
(WI.CPUTimelineView.prototype.initialLayout):
(WI.CPUTimelineView.prototype._computeStatisticsData):
(WI.CPUTimelineView.prototype._clearStatistics):
Add the number of network requests started in the selected range.
2019-04-17 Timothy Hatcher <timothy@apple.com>
Rename `supported-color-schemes` to `color-scheme`.
https://bugs.webkit.org/show_bug.cgi?id=197016
rdar://problem/49980259
Reviewed by Simon Fraser.
* UserInterface/Views/Main.css:
(:root):
2019-04-17 Devin Rousso <drousso@apple.com>
Web Inspector: Canvas: imported recordings aren't processed when the navigation sidebar is collapsed
https://bugs.webkit.org/show_bug.cgi?id=196921
<rdar://problem/49910815>
Reviewed by Timothy Hatcher.
* UserInterface/Views/RecordingContentView.js:
(WI.RecordingContentView.prototype.initialLayout):
2019-04-17 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Extension scripts with parse errors do not show up in Web Inspector
https://bugs.webkit.org/show_bug.cgi?id=196996
<rdar://problem/47054804>
Reviewed by Devin Rousso.
* UserInterface/Controllers/DebuggerManager.js:
(WI.DebuggerManager.prototype.scriptDidFail):
Create a LocalScript that can be linked to but ignore it
if we already have a Resource for the URL.
* UserInterface/Protocol/DebuggerObserver.js:
(WI.DebuggerObserver.prototype.scriptFailedToParse):
Let DebuggerManager potentially create a script for this.
* UserInterface/Models/Script.js:
(WI.Script):
Local scripts provide a null id and id is not required below.
2019-04-16 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Worker imported scripts not showing up in Open Quickly dialog if inspector open after workers exist
https://bugs.webkit.org/show_bug.cgi?id=196986
Reviewed by Devin Rousso.
* UserInterface/Views/OpenResourceDialog.js:
(WI.OpenResourceDialog.prototype._addScriptsForTarget):
We were unnecessary skipping Scripts that do not have a sourceURL but do
have a URL, which ends up being Worker populated scripts.
2019-04-16 Joseph Pecoraro <pecoraro@apple.com>
REGRESSION(r238168) Web Inspector: <iframe src=...> request does not show up in Network Tab
https://bugs.webkit.org/show_bug.cgi?id=193505
<rdar://problem/47325957>
Reviewed by Devin Rousso.
* UserInterface/Views/NetworkTableContentView.js:
(WI.NetworkTableContentView):
(WI.NetworkTableContentView.prototype._handleFrameWasAdded):
Handle new frames by adding the frame's main resource.
2019-04-16 Devin Rousso <drousso@apple.com>
Web Inspector: Uncaught Exception: TypeError: null is not an object (evaluating 'this._contentViewContainer.currentContentView.selectionPathComponents')
https://bugs.webkit.org/show_bug.cgi?id=196936
<rdar://problem/49917789>
Reviewed by Joseph Pecoraro.
* UserInterface/Views/HeapAllocationsTimelineView.js:
(WI.HeapAllocationsTimelineView.prototype.showHeapSnapshotTimelineRecord):
(WI.HeapAllocationsTimelineView.prototype.get navigationItems):
(WI.HeapAllocationsTimelineView.prototype.get selectionPathComponents):
Drive-by: when selecting a record, force it to be visible before selecting it, as otherwise
the selection events won't be fired.
* UserInterface/Views/HeapAllocationsTimelineOverviewGraph.js:
(WI.HeapAllocationsTimelineOverviewGraph.prototype.layout):
Drive-by: ensure that clicking on a [S] heap snapshot record icon actually selects the record.
2019-04-16 Devin Rousso <drousso@apple.com>
Unprefix -webkit-sticky
https://bugs.webkit.org/show_bug.cgi?id=196962
<rdar://problem/40903458>
Reviewed by Simon Fraser.
Replace all `-webkit-sticky` with `sticky`.
* UserInterface/Models/CSSKeywordCompletions.js:
* UserInterface/Views/AuditTestCaseContentView.css:
(.content-view-container > .content-view.audit-test-case > header):
* UserInterface/Views/AuditTestGroupContentView.css:
(.content-view.audit-test-group.contains-test-case > header):
* UserInterface/Views/ChangesDetailsSidebarPanel.css:
(.changes-panel .resource-section > .header):
* UserInterface/Views/DetailsSection.css:
(.details-section > .header):
* UserInterface/Views/NetworkDetailView.css:
(.network-detail .navigation-bar):
* UserInterface/Views/SettingsTabContentView.css:
(.content-view.settings .navigation-bar):
* UserInterface/Views/Table.css:
(.table > .header):
2019-04-16 Devin Rousso <drousso@apple.com>
Web Inspector: remove unused WI.DOMTreeDataGrid
https://bugs.webkit.org/show_bug.cgi?id=196958
<rdar://problem/49931383>
Reviewed by Joseph Pecoraro.
* UserInterface/Views/DOMTreeDataGrid.css: Removed.
* UserInterface/Views/DOMTreeDataGrid.js: Removed.
* UserInterface/Views/DOMTreeDataGridNode.js: Removed.
* UserInterface/Main.html:
2019-04-16 Devin Rousso <drousso@apple.com>
Web Inspector: Storage: values truncated in Local/Session table
https://bugs.webkit.org/show_bug.cgi?id=178318
<rdar://problem/34998581>
Reviewed by Joseph Pecoraro.
* UserInterface/Views/DataGrid.js:
(WI.DataGrid):
(WI.DataGrid.prototype._copyTextForDataGridNode):
* UserInterface/Views/TimelineDataGrid.js:
(WI.TimelineDataGrid):
Refactor `WI.DataGrid` constructor to allow for more optional arguments.
Introduce a new optional argument `copyCallback` that can be used to override the text that
would be copied for any `WI.DataGridNode` in any column.
* UserInterface/Views/DOMStorageContentView.js:
(WI.DOMStorageContentView):
(WI.DOMStorageContentView.prototype.itemAdded):
(WI.DOMStorageContentView.prototype.itemUpdated):
(WI.DOMStorageContentView.prototype._populate):
(WI.DOMStorageContentView.prototype._dataGridCopy): Added.
Save the full non-truncated value as part of the `WI.DataGridNode`'s `data`. When copying,
use the full non-truncated value instead of what was shown in the DOM.
2019-04-15 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: DOM Nodes should not show $0 when selected in Console area
https://bugs.webkit.org/show_bug.cgi?id=196953
Reviewed by Devin Rousso.
* UserInterface/Views/DOMTreeContentView.js:
(WI.DOMTreeContentView):
Enable showing the last selected element.
* UserInterface/Views/DOMTreeOutline.js:
Make parameters explicit. Drop "selectable" which was always true.
And add a new option for adding a class name.
* UserInterface/Views/DOMTreeOutline.css:
(.tree-outline.dom.show-last-selected li.last-selected > span::after):
(.tree-outline.dom.show-last-selected:focus li.last-selected > span::after):
Only show the "= $0" for a DOM tree that has enabled showing the last selected element.
* UserInterface/Views/FormattedValue.css:
(.formatted-node > .tree-outline.dom li.selected .selection-area):
Don't show the selection-area for a console formatted node.
2019-04-15 Devin Rousso <drousso@apple.com>
Web Inspector: update sheet rect whenever inspector window size changes
https://bugs.webkit.org/show_bug.cgi?id=196942
<rdar://problem/49920241>
Reviewed by Joseph Pecoraro.
* UserInterface/Base/Main.js:
(WI.contentLoaded):
(WI._windowResized):
(WI._updateSheetRect): Added.
2019-04-15 Nikita Vasilyev <nvasilyev@apple.com>
Unreviewed, fix typo in a comment.
* UserInterface/Views/SearchSidebarPanel.js:
(WI.SearchSidebarPanel.prototype.performSearch):
2019-04-15 Devin Rousso <drousso@apple.com>
Web Inspector: Heap: don't use recursion when calculating root paths
https://bugs.webkit.org/show_bug.cgi?id=196890
<rdar://problem/49870751>
Reviewed by Joseph Pecoraro.
* UserInterface/Workers/HeapSnapshot/HeapSnapshot.js:
(HeapSnapshot.prototype.shortestGCRootPath):
(HeapSnapshot.prototype._determineGCRootPaths):
(HeapSnapshot.prototype._gcRootPathes.visitNode): Deleted.
(HeapSnapshot.prototype._gcRootPathes): Deleted.
2019-04-15 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: SameSite parsing should be stricter
https://bugs.webkit.org/show_bug.cgi?id=196927
<rdar://problem/42291601>
Reviewed by Devin Rousso.
* UserInterface/Models/Cookie.js:
(WI.Cookie.parseSameSiteAttributeValue):
2019-04-15 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: CPU Usage Timeline - Energy impact popover flickers
https://bugs.webkit.org/show_bug.cgi?id=196931
<rdar://problem/49569122>
Reviewed by Devin Rousso.
* UserInterface/Views/CPUTimelineView.js:
(WI.CPUTimelineView.prototype.initialLayout):
2019-04-15 Devin Rousso <drousso@apple.com>
Web Inspector: REGRESSION(r244268): Canvas: navigation sidebar no longer appears
https://bugs.webkit.org/show_bug.cgi?id=196920
<rdar://problem/49910618>
Reviewed by Timothy Hatcher.
* UserInterface/Views/ContentBrowserTabContentView.js:
(WI.ContentBrowserTabContentView.prototype.showNavigationSidebarPanel):
Now that we no longer call `addSubview` when adding a sidebar panel, we can't check to see
if `parentSidebar` has been set, as that is just an alias for `parentView`.
2019-04-15 Devin Rousso <drousso@apple.com>
Web Inspector: DOMDebugger: move breakpoint storage to use `WI.ObjectStore`
https://bugs.webkit.org/show_bug.cgi?id=196231
<rdar://problem/49236864>
Reviewed by Joseph Pecoraro.
* UserInterface/Controllers/DOMDebuggerManager.js:
(WI.DOMDebuggerManager):
(WI.DOMDebuggerManager.prototype.addDOMBreakpoint):
(WI.DOMDebuggerManager.prototype.removeDOMBreakpoint):
(WI.DOMDebuggerManager.prototype.removeDOMBreakpointsForNode):
(WI.DOMDebuggerManager.prototype.addEventBreakpoint):
(WI.DOMDebuggerManager.prototype.removeEventBreakpoint):
(WI.DOMDebuggerManager.prototype.addURLBreakpoint):
(WI.DOMDebuggerManager.prototype.removeURLBreakpoint):
(WI.DOMDebuggerManager.prototype._handleDOMBreakpointDisabledStateChanged):
(WI.DOMDebuggerManager.prototype._handleEventBreakpointDisabledStateChanged):
(WI.DOMDebuggerManager.prototype._handleURLBreakpointDisabledStateChanged):
(WI.DOMDebuggerManager.prototype._saveDOMBreakpoints): Deleted.
(WI.DOMDebuggerManager.prototype._saveEventBreakpoints): Deleted.
(WI.DOMDebuggerManager.prototype._saveURLBreakpoints): Deleted.
* UserInterface/Models/DOMBreakpoint.js:
(WI.DOMBreakpoint.prototype.saveIdentityToCookie):
(WI.DOMBreakpoint.prototype.toJSON): Added.
(WI.DOMBreakpoint.prototype.get serializableInfo): Deleted.
* UserInterface/Models/EventBreakpoint.js:
(WI.EventBreakpoint.prototype.saveIdentityToCookie):
(WI.EventBreakpoint.prototype.toJSON): Added.
(WI.EventBreakpoint.prototype.get serializableInfo): Deleted.
* UserInterface/Models/URLBreakpoint.js:
(WI.URLBreakpoint.prototype.saveIdentityToCookie):
(WI.URLBreakpoint.prototype.toJSON): Added.
(WI.URLBreakpoint.prototype.get serializableInfo): Deleted.
Replace `get serializableInfo` with `toJSON` as required by `WI.ObjectStore`.
* UserInterface/Base/ObjectStore.js:
(WI.ObjectStore._open):
Increment version.
2019-04-15 Devin Rousso <drousso@apple.com>
Web Inspector: drag/drop over the sidebar should load an imported file in Canvas/Audit tab
https://bugs.webkit.org/show_bug.cgi?id=196873
<rdar://problem/49858190>
Reviewed by Timothy Hatcher.
* UserInterface/Base/Main.js:
(WI.contentLoaded):
(WI._handleDragOver): Added.
(WI._handleDrop): Added.
(WI._dragOver): Deleted.
* UserInterface/Views/AuditTabContentView.js:
(WI.AuditTabContentView):
(WI.AuditTabContentView.prototype.async handleFileDrop): Added.
(WI.AuditTabContentView.prototype._handleDragOver): Deleted.
(WI.AuditTabContentView.prototype._handleDrop): Deleted.
* UserInterface/Views/CanvasTabContentView.js:
(WI.CanvasTabContentView):
(WI.CanvasTabContentView.prototype.async handleFileDrop): Added.
(WI.CanvasTabContentView.prototype._handleDragOver): Deleted.
(WI.CanvasTabContentView.prototype._handleDrop): Deleted.
* UserInterface/Views/TimelineTabContentView.js:
(WI.TimelineTabContentView.prototype.async handleFileDrop): Added.
Check whether the current tab is able to handle a file drop, and if so, don't prevent the
drag from occuring. This now allows the user to drop anywhere on the Web Inspector area to
import files, so long as the relevant tab is currently selected.
* UserInterface/Controllers/CanvasManager.js:
(WI.CanvasManager.prototype.async processJSON): Added.
(WI.CanvasManager.prototype.processJSON): Deleted.
* UserInterface/Controllers/TimelineManager.js:
(WI.TimelineManager.prototype.async processJSON): Added.
(WI.TimelineManager.prototype.processJSON): Deleted.
Make `async` to match other `processJSON` functions.
2019-04-15 Devin Rousso <drousso@apple.com>
Web Inspector: Heap: logging an object from a snapshot shouldn't use the "special" style if the object is reachable
https://bugs.webkit.org/show_bug.cgi?id=196889
<rdar://problem/49870693>
Reviewed by Joseph Pecoraro.
* UserInterface/Views/HeapSnapshotInstanceDataGridNode.js:
(WI.HeapSnapshotInstanceDataGridNode.logHeapSnapshotNode):
2019-04-15 Devin Rousso <drousso@apple.com>
Web Inspector: Debugger: deleting a special breakpoint should disable it
https://bugs.webkit.org/show_bug.cgi?id=196737
<rdar://problem/49740680>
Reviewed by Timothy Hatcher.
* UserInterface/Views/BreakpointTreeElement.js:
(WI.BreakpointTreeElement.prototype.ondelete):
2019-04-15 Devin Rousso <drousso@apple.com>
Web Inspector: Uncaught Exception: null is not an object (evaluating 'this.selectedTreeElement.reveal')
https://bugs.webkit.org/show_bug.cgi?id=196804
<rdar://problem/49800708>
Reviewed by Timothy Hatcher.
* UserInterface/Views/DOMTreeOutline.js:
(WI.DOMTreeOutline.prototype.update):
2019-04-15 Devin Rousso <drousso@apple.com>
Web Inspector: Uncaught Exception: Can't find variable: WebGL2RenderingContext
https://bugs.webkit.org/show_bug.cgi?id=196874
<rdar://problem/49858912>
Reviewed by Timothy Hatcher.
* UserInterface/Models/Recording.js:
(WI.Recording.prototype.createContext):
* UserInterface/Models/RecordingAction.js:
(WI.RecordingAction.prototype.process.getContent):
2019-04-15 Devin Rousso <drousso@apple.com>
Web Inspector: sidebar panels shouldn't be added as subviews unless visible
https://bugs.webkit.org/show_bug.cgi?id=196888
<rdar://problem/49870659>
Reviewed by Timothy Hatcher.
* UserInterface/Views/Sidebar.js:
(WI.Sidebar.prototype.insertSidebarPanel):
(WI.Sidebar.prototype.removeSidebarPanel):
(WI.Sidebar.prototype.set selectedSidebarPanel):
2019-04-15 Devin Rousso <drousso@apple.com>
Web Inspector: Elements: event listener change events should only be fired for the selected node and it's ancestors
https://bugs.webkit.org/show_bug.cgi?id=196887
<rdar://problem/49870627>
Reviewed by Timothy Hatcher.
* UserInterface/Models/DOMNode.js:
(WI.DOMNode.prototype.getEventListeners):
2019-04-15 Devin Rousso <drousso@apple.com>
Web Inspector: replace all uses of `this` with `WI` in Main.js/Test.js
https://bugs.webkit.org/show_bug.cgi?id=196795
<rdar://problem/49796618>
Reviewed by Timothy Hatcher.
* UserInterface/Base/Main.js:
* UserInterface/Test/Test.js:
2019-04-15 Devin Rousso <drousso@apple.com>
Web Inspector: REGRESSION: Heap: snapshots taken manually don't appear in the list
https://bugs.webkit.org/show_bug.cgi?id=196900
<rdar://problem/49880278>
Reviewed by Timothy Hatcher.
* UserInterface/Views/HeapAllocationsTimelineView.js:
(WI.HeapAllocationsTimelineView):
(WI.HeapAllocationsTimelineView.prototype.layout):
(WI.HeapAllocationsTimelineView.prototype._importButtonNavigationItemClicked):
(WI.HeapAllocationsTimelineView.prototype._takeHeapSnapshotClicked):
Drive-by: only show heap snapshots for the selected range.
* UserInterface/Views/TimelineView.js:
* UserInterface/Views/TimelineRecordingContentView.js:
(WI.TimelineRecordingContentView):
(WI.TimelineRecordingContentView.prototype._handleTimelineViewNeedsEntireSelectedRange): Added.
Drive-by: taking (or importing) a heap snapshot should select the entire range so that the
new record will appear in the list of heap snapshots.
2019-04-15 Devin Rousso <drousso@apple.com>
Web Inspector: REGRESSION (r244157): Timelines: ruler size appears wrong on first layout
https://bugs.webkit.org/show_bug.cgi?id=196901
<rdar://problem/49880539>
Reviewed by Timothy Hatcher.
* UserInterface/Views/View.js:
(WI.View.prototype._layoutSubtree):
Ensure that the forced override of the layout reason during the initial layout doesn't
affect subviews.
* UserInterface/Views/ConsoleDrawer.js:
(WI.ConsoleDrawer.prototype.sizeDidChange): Added.
(WI.ConsoleDrawer.prototype.layout): Deleted.
* UserInterface/Views/ConsolePrompt.js:
(WI.ConsolePrompt.prototype.sizeDidChange): Added.
(WI.ConsolePrompt.prototype.layout): Deleted.
* UserInterface/Views/DOMTreeContentView.js:
(WI.DOMTreeContentView.prototype.sizeDidChange): Added.
(WI.DOMTreeContentView.prototype.layout):
* UserInterface/Views/NavigationBar.js:
(WI.NavigationBar.prototype.sizeDidChange): Added.
(WI.NavigationBar.prototype.layout):
(WI.NavigationBar.prototype._updateContent): Added.
(WI.NavigationBar.prototype._updateContent.forceItemHidden): Added.
(WI.NavigationBar.prototype._updateContent.isDivider): Added.
(WI.NavigationBar.prototype._updateContent.calculateVisibleItemWidth): Added.
(WI.NavigationBar.prototype.layout.forceItemHidden): Deleted.
(WI.NavigationBar.prototype.layout.isDivider): Deleted.
(WI.NavigationBar.prototype.layout.calculateVisibleItemWidth): Deleted.
* UserInterface/Views/TabBrowser.js:
(WI.TabBrowser.prototype.sizeDidChange): Added.
(WI.TabBrowser.prototype.layout): Deleted.
Move logic in `layout` to `sizeDidChange` where applicable.
2019-04-11 Devin Rousso <drousso@apple.com>
Web Inspector: REGRESSION(r244195): Timelines: unable to take heap snapshot
https://bugs.webkit.org/show_bug.cgi?id=196832
<rdar://problem/49828862>
Reviewed by Simon Fraser.
* UserInterface/Controllers/TimelineManager.js:
(WI.TimelineManager.prototype.heapSnapshotAdded):
(WI.TimelineManager.prototype._addRecord):
Heap snapshots can be taken outside of a timeline recording, so remove the early return (and
assertion) that checks for an active recording before adding the heap snapshot record.
2019-04-11 Devin Rousso <drousso@apple.com>
Web Inspector: Timelines: can't reliably stop/start a recording
https://bugs.webkit.org/show_bug.cgi?id=196778
<rdar://problem/47606798>
Reviewed by Timothy Hatcher.
Rather than have a binary state of capturing/not-capturing, we should use a four state:
1. inactive (when the backend has stopped capturing)
2. starting (when the frontend requests capturing to start)
3. active (when the backend has started capturing)
4. stopping (when the frontend requests capturing to stop)
Capturing is considered "on" when not in an "inactive" state. Prevent the frontend from
starting/stopping capturing unless we're in a "stable" ("inactive" or "active") state, not a
"transition" ("starting" or "stopping") state.
One "side effect" of this change is that since the capturing is considered active until the
backend has stopped capturing, we will continue to process records in the frontend even if
the frontend has requested to stop capturing. <https://webkit.org/b/152904>
* UserInterface/Controllers/TimelineManager.js:
(WI.TimelineManager):
(WI.TimelineManager.prototype.get capturingState): Added.
(WI.TimelineManager.prototype.reset):
(WI.TimelineManager.prototype.get activeRecording):
(WI.TimelineManager.prototype.set autoCaptureOnPageLoad):
(WI.TimelineManager.prototype.isCapturing):
(WI.TimelineManager.prototype.startCapturing):
(WI.TimelineManager.prototype.stopCapturing):
(WI.TimelineManager.prototype.processJSON):
(WI.TimelineManager.prototype.capturingStarted):
(WI.TimelineManager.prototype.capturingStopped):
(WI.TimelineManager.prototype.autoCaptureStarted):
(WI.TimelineManager.prototype.eventRecorded):
(WI.TimelineManager.prototype.pageDOMContentLoadedEventFired):
(WI.TimelineManager.prototype.pageLoadEventFired):
(WI.TimelineManager.prototype.cpuProfilerTrackingUpdated):
(WI.TimelineManager.prototype.cpuProfilerTrackingCompleted):
(WI.TimelineManager.prototype.memoryTrackingUpdated):
(WI.TimelineManager.prototype.memoryTrackingCompleted):
(WI.TimelineManager.prototype.heapTrackingStarted):
(WI.TimelineManager.prototype.heapTrackingCompleted):
(WI.TimelineManager.prototype.heapSnapshotAdded):
(WI.TimelineManager.prototype._updateCapturingState): Added.
(WI.TimelineManager.prototype._processRecord):
(WI.TimelineManager.prototype._processEvent):
(WI.TimelineManager.prototype._loadNewRecording):
(WI.TimelineManager.prototype._addRecord):
(WI.TimelineManager.prototype._attemptAutoCapturingForFrame):
(WI.TimelineManager.prototype._legacyAttemptStartAutoCapturingForFrame):
(WI.TimelineManager.prototype._stopAutoRecordingSoon):
(WI.TimelineManager.prototype._resetAutoRecordingDeadTimeTimeout):
(WI.TimelineManager.prototype._resourceWasAdded):
(WI.TimelineManager.prototype._garbageCollected):
(WI.TimelineManager.prototype._memoryPressure):
(WI.TimelineManager.prototype._handleTimelinesAutoStopSettingChanged):
(WI.TimelineManager.prototype.scriptProfilerTrackingCompleted):
(WI.TimelineManager.prototype._handleDOMNodeDidFireEvent):
(WI.TimelineManager.prototype._handleDOMNodeLowPowerChanged):
(WI.TimelineManager.prototype.unloadRecording): Deleted.
(WI.TimelineManager.prototype.programmaticCaptureStarted): Deleted.
(WI.TimelineManager.prototype.programmaticCaptureStopped): Deleted.
(WI.TimelineManager.prototype.scriptProfilerProgrammaticCaptureStarted): Deleted.
(WI.TimelineManager.prototype.scriptProfilerProgrammaticCaptureStopped): Deleted.
* UserInterface/Protocol/ScriptProfilerObserver.js:
(WI.ScriptProfilerObserver.prototype.trackingComplete):
(WI.ScriptProfilerObserver.prototype.programmaticCaptureStarted):
(WI.ScriptProfilerObserver.prototype.programmaticCaptureStopped):
* UserInterface/Protocol/TimelineObserver.js:
(WI.TimelineObserver.prototype.programmaticCaptureStarted):
(WI.TimelineObserver.prototype.programmaticCaptureStopped):
It is possible to determine when programmatic capturing starts/stops in the frontend based
on the state when the backend causes the state to change, such as if the state is "inactive"
when the frontend is told that the backend has started capturing.
* UserInterface/Protocol/CPUProfilerObserver.js:
(WI.CPUProfilerObserver.prototype.trackingComplete):
* UserInterface/Protocol/MemoryObserver.js:
(WI.MemoryObserver.prototype.trackingComplete):
Send an end timestamp to match other instruments.
* UserInterface/Controllers/DebuggerManager.js:
(WI.DebuggerManager):
(WI.DebuggerManager.prototype._handleTimelineCapturingStateChanged): Added.
(WI.DebuggerManager.prototype._timelineCapturingWillStart): Deleted.
(WI.DebuggerManager.prototype._timelineCapturingStopped): Deleted.
* UserInterface/Models/DefaultDashboard.js:
(WI.DefaultDashboard):
(WI.DefaultDashboard.prototype._handleTimelineCapturingStateChanged): Added.
(WI.DefaultDashboard.prototype._capturingStopped): Deleted.
* UserInterface/Views/DebuggerSidebarPanel.js:
(WI.DebuggerSidebarPanel):
(WI.DebuggerSidebarPanel.prototype._handleTimelineCapturingStateChanged): Added.
(WI.DebuggerSidebarPanel.prototype._timelineCapturingWillStart): Deleted.
(WI.DebuggerSidebarPanel.prototype._timelineCapturingStopped): Deleted.
* UserInterface/Views/SourcesNavigationSidebarPanel.js:
(WI.SourcesNavigationSidebarPanel):
(WI.SourcesNavigationSidebarPanel.prototype._handleTimelineCapturingStateChanged): Added.
(WI.SourcesNavigationSidebarPanel.prototype._handleTimelineCapturingWillStart): Deleted.
(WI.SourcesNavigationSidebarPanel.prototype._handleTimelineCapturingStopped): Deleted.
* UserInterface/Views/TimelineOverview.js:
(WI.TimelineOverview):
(WI.TimelineOverview.prototype._handleTimelineCapturingStateChanged): Added.
(WI.TimelineOverview.prototype._capturingStarted): Deleted.
(WI.TimelineOverview.prototype._capturingStopped): Deleted.
* UserInterface/Views/TimelineRecordingContentView.js:
(WI.TimelineRecordingContentView):
(WI.TimelineRecordingContentView.prototype._handleTimelineCapturingStateChanged): Added.
(WI.TimelineRecordingContentView.prototype._recordingUnloaded):
(WI.TimelineRecordingContentView.prototype._capturingStarted): Deleted.
(WI.TimelineRecordingContentView.prototype._capturingStopped): Deleted.
* UserInterface/Views/TimelineTabContentView.js:
(WI.TimelineTabContentView):
(WI.TimelineTabContentView.prototype._handleTimelineCapturingStateChanged): Added.
(WI.TimelineTabContentView.prototype._capturingStartedOrStopped): Deleted.
Use the new single event for all Timelines capture state changes.
Prevent the record button from being clicked when capturing is in a transition state.
2019-04-11 Truitt Savell <tsavell@apple.com>
Unreviewed, rolling out r244158.
Casued 8 inspector/timeline/ test failures.
Reverted changeset:
"Web Inspector: Timelines: can't reliably stop/start a
recording"
https://bugs.webkit.org/show_bug.cgi?id=196778
https://trac.webkit.org/changeset/244158
2019-04-10 Devin Rousso <drousso@apple.com>
Web Inspector: save sheet should be anchored underneath the tab bar when detached
https://bugs.webkit.org/show_bug.cgi?id=196722
<rdar://problem/49613280>
Reviewed by Timothy Hatcher.
* UserInterface/Base/Main.js:
(WI.contentLoaded):
2019-04-10 Devin Rousso <drousso@apple.com>
Web Inspector: Timelines: can't reliably stop/start a recording
https://bugs.webkit.org/show_bug.cgi?id=196778
<rdar://problem/47606798>
Reviewed by Timothy Hatcher.
Rather than have a binary state of capturing/not-capturing, we should use a four state:
1. inactive (when the backend has stopped capturing)
2. starting (when the frontend requests capturing to start)
3. active (when the backend has started capturing)
4. stopping (when the frontend requests capturing to stop)
Capturing is considered "on" when not in an "inactive" state. Prevent the frontend from
starting/stopping capturing unless we're in a "stable" ("inactive" or "active") state, not a
"transition" ("starting" or "stopping") state.
One "side effect" of this change is that since the capturing is considered active until the
backend has stopped capturing, we will continue to process records in the frontend even if
the frontend has requested to stop capturing. <https://webkit.org/b/152904>
* UserInterface/Controllers/TimelineManager.js:
(WI.TimelineManager):
(WI.TimelineManager.prototype.get capturingState): Added.
(WI.TimelineManager.prototype.reset):
(WI.TimelineManager.prototype.get activeRecording):
(WI.TimelineManager.prototype.set autoCaptureOnPageLoad):
(WI.TimelineManager.prototype.isCapturing):
(WI.TimelineManager.prototype.startCapturing):
(WI.TimelineManager.prototype.stopCapturing):
(WI.TimelineManager.prototype.processJSON):
(WI.TimelineManager.prototype.capturingStarted):
(WI.TimelineManager.prototype.capturingStopped):
(WI.TimelineManager.prototype.autoCaptureStarted):
(WI.TimelineManager.prototype.eventRecorded):
(WI.TimelineManager.prototype.pageDOMContentLoadedEventFired):
(WI.TimelineManager.prototype.pageLoadEventFired):
(WI.TimelineManager.prototype.cpuProfilerTrackingUpdated):
(WI.TimelineManager.prototype.cpuProfilerTrackingCompleted):
(WI.TimelineManager.prototype.memoryTrackingUpdated):
(WI.TimelineManager.prototype.memoryTrackingCompleted):
(WI.TimelineManager.prototype.heapTrackingStarted):
(WI.TimelineManager.prototype.heapTrackingCompleted):
(WI.TimelineManager.prototype.heapSnapshotAdded):
(WI.TimelineManager.prototype._updateCapturingState): Added.
(WI.TimelineManager.prototype._processRecord):
(WI.TimelineManager.prototype._processEvent):
(WI.TimelineManager.prototype._loadNewRecording):
(WI.TimelineManager.prototype._addRecord):
(WI.TimelineManager.prototype._attemptAutoCapturingForFrame):
(WI.TimelineManager.prototype._legacyAttemptStartAutoCapturingForFrame):
(WI.TimelineManager.prototype._stopAutoRecordingSoon):
(WI.TimelineManager.prototype._resetAutoRecordingDeadTimeTimeout):
(WI.TimelineManager.prototype._mainResourceDidChange):
(WI.TimelineManager.prototype._resourceWasAdded):
(WI.TimelineManager.prototype._garbageCollected):
(WI.TimelineManager.prototype._memoryPressure):
(WI.TimelineManager.prototype._handleTimelinesAutoStopSettingChanged):
(WI.TimelineManager.prototype.scriptProfilerTrackingCompleted):
(WI.TimelineManager.prototype._handleDOMNodeDidFireEvent):
(WI.TimelineManager.prototype._handleDOMNodeLowPowerChanged):
(WI.TimelineManager.prototype.unloadRecording): Deleted.
(WI.TimelineManager.prototype.programmaticCaptureStarted): Deleted.
(WI.TimelineManager.prototype.programmaticCaptureStopped): Deleted.
(WI.TimelineManager.prototype.scriptProfilerProgrammaticCaptureStarted): Deleted.
(WI.TimelineManager.prototype.scriptProfilerProgrammaticCaptureStopped): Deleted.
* UserInterface/Protocol/ScriptProfilerObserver.js:
(WI.ScriptProfilerObserver.prototype.trackingComplete):
(WI.ScriptProfilerObserver.prototype.programmaticCaptureStarted):
(WI.ScriptProfilerObserver.prototype.programmaticCaptureStopped):
* UserInterface/Protocol/TimelineObserver.js:
(WI.TimelineObserver.prototype.programmaticCaptureStarted):
(WI.TimelineObserver.prototype.programmaticCaptureStopped):
It is possible to determine when programmatic capturing starts/stops in the frontend based
on the state when the backend causes the state to change, such as if the state is "inactive"
when the frontend is told that the backend has started capturing.
* UserInterface/Protocol/CPUProfilerObserver.js:
(WI.CPUProfilerObserver.prototype.trackingComplete):
* UserInterface/Protocol/MemoryObserver.js:
(WI.MemoryObserver.prototype.trackingComplete):
Send an end timestamp to match other instruments.
* UserInterface/Controllers/DebuggerManager.js:
(WI.DebuggerManager):
(WI.DebuggerManager.prototype._handleTimelineCapturingStateChanged): Added.
(WI.DebuggerManager.prototype._timelineCapturingWillStart): Deleted.
(WI.DebuggerManager.prototype._timelineCapturingStopped): Deleted.
* UserInterface/Models/DefaultDashboard.js:
(WI.DefaultDashboard):
(WI.DefaultDashboard.prototype._handleTimelineCapturingStateChanged): Added.
(WI.DefaultDashboard.prototype._capturingStopped): Deleted.
* UserInterface/Views/DebuggerSidebarPanel.js:
(WI.DebuggerSidebarPanel):
(WI.DebuggerSidebarPanel.prototype._handleTimelineCapturingStateChanged): Added.
(WI.DebuggerSidebarPanel.prototype._timelineCapturingWillStart): Deleted.
(WI.DebuggerSidebarPanel.prototype._timelineCapturingStopped): Deleted.
* UserInterface/Views/SourcesNavigationSidebarPanel.js:
(WI.SourcesNavigationSidebarPanel):
(WI.SourcesNavigationSidebarPanel.prototype._handleTimelineCapturingStateChanged): Added.
(WI.SourcesNavigationSidebarPanel.prototype._handleTimelineCapturingWillStart): Deleted.
(WI.SourcesNavigationSidebarPanel.prototype._handleTimelineCapturingStopped): Deleted.
* UserInterface/Views/TimelineOverview.js:
(WI.TimelineOverview):
(WI.TimelineOverview.prototype._handleTimelineCapturingStateChanged): Added.
(WI.TimelineOverview.prototype._capturingStarted): Deleted.
(WI.TimelineOverview.prototype._capturingStopped): Deleted.
* UserInterface/Views/TimelineRecordingContentView.js:
(WI.TimelineRecordingContentView):
(WI.TimelineRecordingContentView.prototype._handleTimelineCapturingStateChanged): Added.
(WI.TimelineRecordingContentView.prototype._recordingUnloaded):
(WI.TimelineRecordingContentView.prototype._capturingStarted): Deleted.
(WI.TimelineRecordingContentView.prototype._capturingStopped): Deleted.
* UserInterface/Views/TimelineTabContentView.js:
(WI.TimelineTabContentView):
(WI.TimelineTabContentView.prototype._handleTimelineCapturingStateChanged): Added.
(WI.TimelineTabContentView.prototype._capturingStartedOrStopped): Deleted.
Use the new single event for all Timelines capture state changes.
Prevent the record button from being clicked when capturing is in a transition state.
2019-04-10 Devin Rousso <drousso@apple.com>
Web Inspector: REGRESSION: Audit: result UI shown on first open if an audit was previously selected
https://bugs.webkit.org/show_bug.cgi?id=196723
<rdar://problem/49722252>
Reviewed by Timothy Hatcher.
When opening Web Inspector for the first time, we will trigger resize `layout`s on the main
content area as Web Inspector is resized to it's old window size.
Rather than treating this layout as a `View.LayoutReason.Resize`, we should treat the
first `layout` (e.g. `initialLayout`) as a `View.LayoutReason.Dirty` instead, as there was
previously no content.
* UserInterface/Views/View.js:
(WI.View.prototype._layoutSubtree):
(WI.View.prototype._setLayoutReason):
* UserInterface/Views/AuditTestContentView.js:
(WI.AuditTestContentView):
Drive-by: ensure that this class is not instantiated directly.
2019-04-10 Devin Rousso <drousso@apple.com>
Web Inspector: Debugger: current call frame indicator is indented when there is more than one thread
https://bugs.webkit.org/show_bug.cgi?id=196580
<rdar://problem/49582138>
Reviewed by Timothy Hatcher.
* UserInterface/Views/CallFrameTreeElement.css:
(.tree-outline .item.call-frame .status):
(.tree-outline.single-thread .item.call-frame .status): Added.
2019-04-10 Devin Rousso <drousso@apple.com>
Web Inspector: REGRESSION (r238602): Elements: deleting the last child of a collapsed parent selects the parent's next sibling
https://bugs.webkit.org/show_bug.cgi?id=192711
<rdar://problem/46738990>
Reviewed by Timothy Hatcher.
Original patch by Matt Baker <mattbaker@apple.com>.
* UserInterface/Controllers/SelectionController.js:
(WI.SelectionController.prototype.removeSelectedItems):
When looking for a new item to select, start with the item preceding the
selection, instead of the item following the selection. This matches
pre-multiple selection behavior, as well as Mail and Xcode.
* UserInterface/Views/DOMTreeElement.js:
(WI.DOMTreeElement.prototype.onexpand):
Drive-by fix: when a hidden node is selected, its selection area is drawn
with a height of 0px. Update the selection area once the hidden node's
parent is expanded. AFAIK, this has always been broken.
* UserInterface/Views/DOMTreeOutline.js:
(WI.DOMTreeOutline.prototype.ondelete):
After a delete the `SelectionController` may have chosen a child of a
collapsed parent as the new selected item. If the item isn't the closing tag (e.g. after
deleting the last child), reveal it.
(WI.DOMTreeOutline.prototype.selectionControllerPreviousSelectableItem):
* UserInterface/Views/TreeElement.js:
(WI.TreeElement.prototype.get previousSelectableSibling): Added.
(WI.TreeElement.prototype.get nextSelectableSibling): Added.
* UserInterface/Views/TreeOutline.js:
(WI.TreeOutline.prototype.selectionControllerPreviousSelectableItem):
(WI.TreeOutline.prototype.selectionControllerNextSelectableItem):
Set `skipUnrevealed` to false, so that children of collapsed parent nodes
are considered when looking for an item to selected after a delete. Hidden `TreeElement`s
are still ignored as they aren't `selectable`.
2019-04-10 Devin Rousso <drousso@apple.com>
Web Inspector: Elements tab: multiple selection lost after navigating to another tab
https://bugs.webkit.org/show_bug.cgi?id=192681
<rdar://problem/46709392>
Reviewed by Timothy Hatcher.
Orginal patch by Matt Baker <mattbaker@apple.com>.
* UserInterface/Controllers/SelectionController.js:
(WI.SelectionController.prototype.selectItem):
Simplify internal logic by removing an early return.
(WI.SelectionController.prototype.selectItems): Added.
(WI.SelectionController.prototype.selectAll):
Provide a means to select multiple items in a single operation.
If `_lastSelectedItem` is not in the items to select, the last
item being selected will become the last selected item.
(WI.SelectionController.prototype._deselectAllAndSelect):
Drive-by fix: correct a logic error. If no items are selected, the item
passed as an argument should still become selected.
* UserInterface/Views/TreeOutline.js:
(WI.TreeOutline.prototype.selectTreeElements): Added.
* UserInterface/Views/DOMTreeElement.js:
(WI.DOMTreeElement):
(WI.DOMTreeElement.prototype.get closeTagTreeElement): Added.
(WI.DOMTreeElement.prototype._updateChildren):
Make the close tag `TreeElement` available from the open tag `TreeElement`.
* UserInterface/Views/DOMTreeOutline.js:
(WI.DOMTreeOutline.prototype.update):
Restore selected `TreeElement`s after updating.
* UserInterface/Base/Utilities.js:
* UserInterface/Test.html:
2019-04-08 Matt Baker <mattbaker@apple.com>
Web Inspector: Elements tab: Classes toggle should use accent color on hover
https://bugs.webkit.org/show_bug.cgi?id=196266
Reviewed by Devin Rousso.
* UserInterface/Views/GeneralStyleDetailsSidebarPanel.css:
(.sidebar > .panel.details.css-style > .content ~ .options-container > .toggle-class-toggle):
(.sidebar > .panel.details.css-style > .content ~ .options-container > .toggle-class-toggle::before):
(.sidebar > .panel.details.css-style > .content ~ .options-container > .toggle-class-toggle:matches(.selected, :hover)):
(.sidebar > .panel.details.css-style > .content ~ .options-container > .toggle-class-toggle:matches(.selected, :hover)::before):
(.sidebar > .panel.details.css-style > .content ~ .options-container > .toggle-class-toggle:not(.selected):hover::before):
(.sidebar > .panel.details.css-style > .content ~ .options-container > .toggle-class-toggle.selected:active::before):
(.sidebar > .panel.details.css-style > .content ~ .options-container > .toggle-class-toggle.selected): Deleted.
(.sidebar > .panel.details.css-style > .content ~ .options-container > .toggle-class-toggle:not(.selected):hover): Deleted.
2019-04-08 Devin Rousso <drousso@apple.com>
Web Inspector: REGRESSION: Audit: default audits aren't added when an existing audit is present
https://bugs.webkit.org/show_bug.cgi?id=196663
<rdar://problem/49660757>
Reviewed by Timothy Hatcher.
Rather than have a button that allows the user to re-add the default audits, prevent them
from being deletable in the first place. "Deleting" a default audit will instead mark it as
disabled (and beep if it is already disabled).
* UserInterface/Controllers/AuditManager.js:
(WI.AuditManager.prototype.loadStoredTests):
(WI.AuditManager.prototype.removeTest):
(WI.AuditManager.prototype._addDefaultTests): Added.
(WI.AuditManager.prototype.addDefaultTestsIfNeeded): Deleted.
* UserInterface/Views/AuditNavigationSidebarPanel.js:
(WI.AuditNavigationSidebarPanel.prototype._addTest):
(WI.AuditNavigationSidebarPanel.prototype._updateStartStopButtonNavigationItemState):
(WI.AuditNavigationSidebarPanel.prototype._updateNoAuditsPlaceholder):
(WI.AuditNavigationSidebarPanel.prototype._handleAuditTestRemoved):
* UserInterface/Views/AuditNavigationSidebarPanel.css:
(.sidebar > .panel.navigation.audit.has-results > .content > .message-text-view.no-enabled-audits): Added.
(.sidebar > .panel.navigation.audit.has-results:not(.has-tests) > .content > .message-text-view): Deleted.
(.sidebar > .panel.navigation.audit.has-results:not(.has-tests) > .content > .message-text-view > .message): Deleted.
(.sidebar > .panel.navigation.audit.has-results:not(.has-tests) > .content > .message-text-view > button): Deleted.
* Localizations/en.lproj/localizedStrings.js:
2019-04-06 Nikita Vasilyev <nvasilyev@apple.com>
REGRESSION(r237196): Web Inspector: Computed panel shouldn't update when it isn't visible
https://bugs.webkit.org/show_bug.cgi?id=196667
<rdar://problem/49664912>
Reviewed by Timothy Hatcher.
Explicitly define `hidden` and `shown` methods instead of relying on SidebarPanel's `visible` getter.
* UserInterface/Views/GeneralStyleDetailsSidebarPanel.js:
(WI.GeneralStyleDetailsSidebarPanel.prototype.visibilityDidChange): Deleted.
(WI.GeneralStyleDetailsSidebarPanel.prototype.hidden): Added.
(WI.GeneralStyleDetailsSidebarPanel.prototype.shown): Added.
2019-04-05 Devin Rousso <drousso@apple.com>
Web Inspector: TestSuite test cases should have their own timeout to ensure tests fail with output instead of timeout by test runner
https://bugs.webkit.org/show_bug.cgi?id=162814
<rdar://problem/28574102>
Reviewed by Brian Burg.
A 10s timer is started for every test case added to an async suite. The timer is cleared
when the test finishes, but if the timer fires, the test is forcibly ended with an error.
This timer can be configured by setting a `timeout` value when adding the test case. Values
are expected to be in milliseconds. The value `-1` will prevent a timer from being set.
This change also relaxes the expectation that any individual test case failure will stop the
rest of the suite from running. Since timers are set per test case, it is possible to
recover from a "bad" test case to still run the remaining test cases.
NOTE: there may be unexpected behaviour if a test times out, as the timer doesn't actually
stop the execution of the test, so it may still run and log information, which may appear
"out of nowhere" in the middle of other tests.
* UserInterface/Test/TestSuite.js:
(TestSuite.prototype.get passCount):
(AsyncTestSuite.prototype.runTestCases):
(SyncTestSuite.prototype.runTestCases):
2019-04-03 Devin Rousso <drousso@apple.com>
Web Inspector: Single click on links in non-read-only TextEditors should not follow links
https://bugs.webkit.org/show_bug.cgi?id=123364
<rdar://problem/15323913>
Reviewed by Timothy Hatcher.
* UserInterface/Base/Main.js:
(WI._updateModifierKeys):
Add classes to the body whenever alt, shift, or ctrl are pressed.
* UserInterface/Views/CodeMirrorEditor.js:
(WI.CodeMirrorEditor.create):
Add a `read-only` class if the `CodeMirror` is readonly.
* UserInterface/Views/SyntaxHighlightingDefaultTheme.css:
(.cm-s-default .cm-link,):
(.read-only.cm-s-default .cm-link:hover,):
(.cm-s-default .cm-link:hover,): Deleted.
* UserInterface/Views/TextEditor.js:
(WI.TextEditor.prototype.set readOnly):
(WI.TextEditor.prototype._openClickedLinks):
2019-04-03 Myles C. Maxfield <mmaxfield@apple.com>
Remove support for -apple-trailing-word
https://bugs.webkit.org/show_bug.cgi?id=196525
Reviewed by Zalan Bujtas.
This CSS property is nonstandard and not used.
* UserInterface/Models/CSSKeywordCompletions.js:
2019-04-03 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Uncaught Exception: TypeError: this._computedStyleSection.focus is not a function. (In 'this._computedStyleSection.focus()', 'this._computedStyleSection.focus' is undefined)
https://bugs.webkit.org/show_bug.cgi?id=192108
<rdar://problem/46685392>
Reviewed by Devin Rousso.
This patch fixes the uncaught exception. Tabbing to and from "Properties" section continues
working the same way as before the patch.
* UserInterface/Views/ComputedStyleDetailsPanel.js:
(WI.ComputedStyleDetailsPanel.prototype.focusFirstSection): Deleted.
(WI.ComputedStyleDetailsPanel.prototype.focusLastSection): Deleted.
2019-04-02 Devin Rousso <drousso@apple.com>
Web Inspector: Elements: DOM breakpoint icon should stroke when hovering selection area
https://bugs.webkit.org/show_bug.cgi?id=196516
<rdar://problem/49540494>
Reviewed by Timothy Hatcher.
* UserInterface/Views/DOMTreeContentView.css:
(body:not(.window-inactive) .content-view.dom-tree .tree-outline.dom:focus li:matches(.selected, .hovered) .status-image.breakpoint,): Added.
(body:not(.window-inactive) .content-view.dom-tree .tree-outline.dom:focus li:matches(.selected, .hovered) .status-image.breakpoint.subtree): Added.
(body:not(.window-inactive) .content-view.dom-tree .tree-outline.dom:focus li:matches(.selected, :hover) .status-image.breakpoint): Deleted.
(body:not(.window-inactive) .content-view.dom-tree .tree-outline.dom:focus li:matches(.selected, :hover) .status-image.breakpoint.subtree): Deleted.
2019-04-01 Devin Rousso <drousso@apple.com>
Web Inspector: Debugger: modernize serialization of breakpoints and the maps that hold them
https://bugs.webkit.org/show_bug.cgi?id=196230
<rdar://problem/49236485>
Reviewed by Joseph Pecoraro.
* UserInterface/Controllers/DebuggerManager.js:
(WI.DebuggerManager):
(WI.DebuggerManager.prototype.breakpointsForSourceCode):
(WI.DebuggerManager.prototype.addBreakpoint):
(WI.DebuggerManager.prototype.removeBreakpoint):
(WI.DebuggerManager.prototype._setBreakpoint):
(WI.DebuggerManager.prototype._setBreakpoint.didSetBreakpoint):
* UserInterface/Models/Breakpoint.js:
(WI.Breakpoint):
(WI.Breakpoint.fromJSON): Added.
(WI.Breakpoint.prototype.toJSON):
(WI.Breakpoint.prototype.set resolved):
(WI.Breakpoint.prototype.recreateAction):
(WI.Breakpoint.prototype.saveIdentityToCookie):
(WI.Breakpoint.prototype._isSpecial): Added.
(WI.Breakpoint.set resolved.isSpecialBreakpoint): Deleted.
(WI.Breakpoint.serializeOptions): Deleted.
* UserInterface/Models/BreakpointAction.js:
(WI.BreakpointAction):
(WI.BreakpointAction.fromJSON): Added.
(WI.BreakpointAction.prototype.toProtocol): Added.
* UserInterface/Views/DebuggerSidebarPanel.js:
(WI.DebuggerSidebarPanel.prototype._addBreakpointsForSourceCode):
* UserInterface/Views/SourceCodeTextEditor.js:
(WI.SourceCodeTextEditor.prototype._prepareEditorForInitialContent):
(WI.SourceCodeTextEditor.prototype._breakpointsEnabledDidChange):
2019-04-01 Devin Rousso <drousso@apple.com>
Web Inspector: DOMDebugger: disabling a breakpoint for a specific event listener removes it from the UI
https://bugs.webkit.org/show_bug.cgi?id=196453
<rdar://problem/49489318>
Reviewed by Joseph Pecoraro.
Allow breakpoints for specific event listeners to be disabled, rather than immeditately
removing/deleting them when they are about to become disabled. This preserves the existing
functionality, but now allows for the tree element to stay in the UI in a disabled state.
* UserInterface/Controllers/DOMManager.js:
(WI.DOMManager):
(WI.DOMManager.prototype.setBreakpointForEventListener):
(WI.DOMManager.prototype.removeBreakpointForEventListener):
(WI.DOMManager.prototype.removeEventListenerBreakpointsForNode): Added.
(WI.DOMManager.prototype._updateEventBreakpoint): Added.
(WI.DOMManager.prototype._handleEventBreakpointDisabledStateChanged): Added.
* UserInterface/Controllers/DOMDebuggerManager.js:
(WI.DOMDebuggerManager.prototype._handleEventBreakpointDisabledStateChanged):
* UserInterface/Views/EventBreakpointTreeElement.js:
(WI.EventBreakpointTreeElement.prototype.populateContextMenu):
(WI.EventBreakpointTreeElement.prototype._toggleBreakpoint):
* UserInterface/Views/ContextMenuUtilities.js:
(WI.appendContextMenuItemsForDOMNodeBreakpoints):
* UserInterface/Views/DOMNodeTreeElement.js:
(WI.DOMNodeTreeElement.prototype.ondelete):
2019-04-01 Devin Rousso <drousso@apple.com>
Web Inspector: Canvas: auto-record after page load sometimes shows the wrong UI
https://bugs.webkit.org/show_bug.cgi?id=196320
<rdar://problem/49356686>
Reviewed by Joseph Pecoraro.
It was previously possible that the timing of a recording being started and the preview
image being loaded would not always be in the same order.
Utilize the existing `View.prototype.layout` mechanics to ensure that updates are coalesced
and that the changes are always applied in a particular order.
* UserInterface/Views/CanvasContentView.js:
(WI.CanvasContentView):
(WI.CanvasContentView.prototype.refreshPreview): Added.
(WI.CanvasContentView.prototype.initialLayout):
(WI.CanvasContentView.prototype.layout):
(WI.CanvasContentView.prototype.shown):
(WI.CanvasContentView.prototype.attached):
(WI.CanvasContentView.prototype._refreshPixelSize):
(WI.CanvasContentView.prototype.refresh): Deleted.
(WI.CanvasContentView.prototype._recordingStarted): Deleted.
(WI.CanvasContentView.prototype._recordingProgress): Deleted.
(WI.CanvasContentView.prototype._recordingStopped): Deleted.
(WI.CanvasContentView.prototype._shaderProgramAdded): Deleted.
(WI.CanvasContentView.prototype._shaderProgramRemoved): Deleted.
* UserInterface/Views/CanvasOverviewContentView.js:
(WI.CanvasOverviewContentView.prototype._refreshPreviews):
2019-04-01 Devin Rousso <drousso@apple.com>
Web Inspector: Canvas: add compatibility support for WebMetal
https://bugs.webkit.org/show_bug.cgi?id=196412
<rdar://problem/49439417>
Reviewed by Joseph Pecoraro.
* UserInterface/Models/Canvas.js:
(WI.Canvas.fromPayload):
(WI.Canvas.displayNameForContextType):
* UserInterface/Protocol/Legacy/12.2/InspectorBackendCommands.js:
* Versions/Inspector-iOS-12.2.json:
2019-04-01 Devin Rousso <drousso@apple.com>
Web Inspector: "Copy as HTML" appears twice when showing a context menu for a logged node
https://bugs.webkit.org/show_bug.cgi?id=196271
<rdar://problem/49290676>
Reviewed by Joseph Pecoraro.
* UserInterface/Views/ObjectTreeBaseTreeElement.js:
(WI.ObjectTreeBaseTreeElement.prototype._appendMenusItemsForObject):
* Localizations/en.lproj/localizedStrings.js:
2019-04-01 Devin Rousso <drousso@apple.com>
Web Inspector: Debugger: breakpoints don't populate in inspector2 on first load
https://bugs.webkit.org/show_bug.cgi?id=196063
<rdar://problem/49097787>
Reviewed by Joseph Pecoraro.
In the case that a breakpoint becomes resolved after the resource has finished loaded, there
won't be an already existing `TreeElement` for the breakpoint to replace.
This can realistically only happen if the IndexedDB lookup is super slow, or the resource is
extremely fast (e.g. a `data` url).
* UserInterface/Views/DebuggerSidebarPanel.js:
(WI.DebuggerSidebarPanel.prototype._handleDebuggerObjectDisplayLocationDidChange):
(WI.DebuggerSidebarPanel.prototype._addDebuggerObject): Deleted.
* UserInterface/Views/SourcesNavigationSidebarPanel.js:
(WI.SourcesNavigationSidebarPanel.prototype._addBreakpoint):
(WI.SourcesNavigationSidebarPanel.prototype._addBreakpointsForSourceCode):
(WI.SourcesNavigationSidebarPanel.prototype._handleDebuggerObjectDisplayLocationDidChange):
2019-04-01 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: CPU Usage Timeline - Adjust Energy Impact Threshholds
https://bugs.webkit.org/show_bug.cgi?id=196421
<rdar://problem/49125703>
Reviewed by Devin Rousso.
- Low - Keep Below 3% to continue to encourage idle pages stay below 3%
Might want to reduce to 2.5 or 2 after fixing bug 196419.
- High - Make Above 30% instead of 50% to encourage long running interactivity to stay below 30%
Depends on interaction, but sustained (1-2min) at 30%+ will certainly impact battery.
- Very High - Make above 100% instead of 150%
CPU Usage spikes around page load and is quite often still under 100% despite many threads.
Drop this a bit as we dropped High down.
Reduce the size of the Medium section, and increase the High section
Having 70% of the chart be "Medium" is just too much Medium, and
we've now made it more possible to be in the High range.
* UserInterface/Views/CPUTimelineView.js:
(WI.CPUTimelineView.prototype.get mediumEnergyThreshold):
(WI.CPUTimelineView.prototype.get highEnergyThreshold):
(WI.CPUTimelineView.prototype.get lowEnergyGraphBoundary):
(WI.CPUTimelineView.prototype.get mediumEnergyGraphBoundary):
(WI.CPUTimelineView.prototype.get highEnergyGraphBoundary):
(WI.CPUTimelineView.prototype.initialLayout):
(WI.CPUTimelineView.prototype.layout.bestThreadLayoutMax):
(WI.CPUTimelineView.prototype._layoutEnergyChart):
2019-03-29 Myles C. Maxfield <mmaxfield@apple.com>
Delete WebMetal implementation in favor of WebGPU
https://bugs.webkit.org/show_bug.cgi?id=195418
Reviewed by Dean Jackson.
* UserInterface/Models/Canvas.js:
(WI.Canvas.fromPayload):
(WI.Canvas.displayNameForContextType):
* UserInterface/Protocol/Legacy/12.2/InspectorBackendCommands.js:
* Versions/Inspector-iOS-12.2.json:
2019-03-29 Devin Rousso <drousso@apple.com>
Web Inspector: Storage: some cookie column headers are not localized
https://bugs.webkit.org/show_bug.cgi?id=196406
<rdar://problem/48467422>
Reviewed by Joseph Pecoraro.
* UserInterface/Views/CookieStorageContentView.js:
(WI.CookieStorageContentView.prototype.initialLayout):
* Localizations/en.lproj/localizedStrings.js:
2019-03-28 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Show Resource Initiator in Network Tab detail views
https://bugs.webkit.org/show_bug.cgi?id=196316
<rdar://problem/49352679>
Reviewed by Devin Rousso.
* UserInterface/Controllers/NetworkManager.js:
(WI.NetworkManager.prototype.resourceRequestWillBeSent):
(WI.NetworkManager.prototype.resourceRequestWasServedFromMemoryCache):
(WI.NetworkManager.prototype._initiatorCallFramesFromPayload):
Initialize call frames from the initiator payload.
* UserInterface/Models/Resource.js:
(WI.Resource.prototype.get initiatorCallFrames):
Initialization and accessor.
* UserInterface/Views/CallFrameTreeElement.js:
(WI.CallFrameTreeElement):
Selecting a native element won't do anything so just don't allow selection.
* UserInterface/Views/ResourceHeadersContentView.css:
(.resource-headers .go-to-link):
(.resource-headers .call-stack):
(.resource-headers .call-stack:hover):
(@media (prefers-color-scheme: dark)):
* UserInterface/Views/ResourceHeadersContentView.js:
(WI.ResourceHeadersContentView):
(WI.ResourceHeadersContentView.prototype.hidden):
(WI.ResourceHeadersContentView.prototype._refreshSummarySection):
Add an "Initiator" line in the summary with a way to view the whole
initiator backtrace if one exists.
2019-03-26 Devin Rousso <drousso@apple.com>
Web Inspector: Sources: fix typo in CSS selector to always show add breakpoint button
https://bugs.webkit.org/show_bug.cgi?id=196241
Reviewed by Matt Baker.
* UserInterface/Views/SourcesNavigationSidebarPanel.css:
(.sidebar > .panel.navigation.sources > .content > .details-section:matches(.paused-reason, .breakpoints).collapsed > .header > .options,):
(.sidebar > .panel.navigation.sources > .content > .details-section:matches(.paused-reason, .breakpoins).collapsed > .header > .options,): Deleted.
2019-03-25 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Page Weight indicator clears on pages with zero length resources (macrumors.com)
https://bugs.webkit.org/show_bug.cgi?id=196170
Reviewed by Timothy Hatcher.
* UserInterface/Models/DefaultDashboard.js:
(WI.DefaultDashboard.prototype._resourceSizeDidChange):
Catch NaN earlier.
* UserInterface/Models/Resource.js:
(WI.Resource.prototype.updateWithMetrics):
When we receive exact metrics transition the estimated size to zero,
since we won't receive any more updates for the resource.
2019-03-24 Devin Rousso <drousso@apple.com>
Web Inspector: Canvas: WebGL action icon shouldn't invert when selected
https://bugs.webkit.org/show_bug.cgi?id=196135
Reviewed by Timothy Hatcher.
* UserInterface/Views/RecordingActionTreeElement.js:
(WI.RecordingActionTreeElement._classNameForAction):
(WI.RecordingActionTreeElement._classNameForAction.classNameForActionName): Deleted.
Remove unnecessary logging and memoization.
* UserInterface/Views/RecordingActionTreeElement.css:
(.tree-outline:focus .item.recording-action.selected:not(.invalid, .initial-state, .has-context-replacer, .name-unknown) > .icon): Added.
(@media (prefers-color-scheme: dark)):
(.item.recording-action:not(.invalid, .initial-state, .has-context-replacer, .name-unknown) > .icon): Added.
(.tree-outline:focus .item.recording-action.selected:not(.invalid, .initial-state, .has-context-replacer) > .icon): Deleted.
(.item.recording-action.has-context-replacer > .icon): Deleted.
(.item.recording-action:not(.invalid, .initial-state, .has-context-replacer) > .icon): Deleted.
Simplify styles between light and dark mode.
2019-03-24 Simon Welsh <simon@welsh-au.com>
Web Inspector: testCellRoleForRequiredChidren accessibility audit checks for rows in cells
https://bugs.webkit.org/show_bug.cgi?id=195988
Reviewed by Timothy Hatcher.
The audit now checks that rows contain cells, allowing any of the four
cell-based roles.
* UserInterface/Controllers/AuditManager.js:
(WI.AuditManager.prototype.addDefaultTestsIfNeeded):
(WI.AuditManager):
(WI.AuditManager.prototype.addDefaultTestsIfNeeded.const.testCellRoleForRequiredChidren): Deleted.
2019-03-24 Devin Rousso <drousso@apple.com>
Web Inspector: Canvas: missing icons for WebGL2 contexts
https://bugs.webkit.org/show_bug.cgi?id=196136
Reviewed by Timothy Hatcher.
* UserInterface/Views/CanvasSidebarPanel.css:
(.sidebar > .panel.navigation.canvas > .navigation-bar > .item.record-start-stop.disabled > .glyph): Added.
(.sidebar > .panel.navigation.canvas > .content > .tree-outline .item.canvas:matches(.canvas-2d, .bitmaprenderer) .icon): Added.
(.sidebar > .panel.navigation.canvas > .content > .tree-outline .item.canvas:matches(.webgl, .webgl2, .webgpu, .webmetal) .icon): Added.
(@media (prefers-color-scheme: dark)):
(.sidebar > .panel.navigation.canvas > .navigation-bar > .item.record-start-stop.disabled): Deleted.
(.sidebar > .panel.navigation.canvas > .content > .tree-outline .item.canvas.canvas-2d .icon): Deleted.
(.sidebar > .panel.navigation.canvas > .content > .tree-outline .item.casnvas.webgl .icon): Deleted.
Use the 2D icon for BitmapRenderer and the 3D icon for WebGL2, WebMetals, and WebGPU.
Drive-by: the start/stop button text was too dark when disabled in dark mode.
* UserInterface/Models/Canvas.js:
Drive-by: "gpu" => "webgpu", to match the protocol string.
2019-03-22 Devin Rousso <drousso@apple.com>
Web Inspector: Sources: "Reveal in Resources Tab" still shown when Sources tab is enabled
https://bugs.webkit.org/show_bug.cgi?id=196134
Reviewed by Joseph Pecoraro.
* UserInterface/Views/RecordingActionTreeElement.js:
(WI.RecordingActionTreeElement.prototype.populateContextMenu):
Drive-by: find the first call frame that has a source code location, rather than naively
always using the top call frame.
* UserInterface/Views/SearchResultTreeElement.js:
(WI.SearchResultTreeElement.prototype.populateContextMenu):
2019-03-22 Keith Rollin <krollin@apple.com>
Enable ThinLTO support in Production builds
https://bugs.webkit.org/show_bug.cgi?id=190758
<rdar://problem/45413233>
Reviewed by Daniel Bates.
Enable building with Thin LTO in Production when using Xcode 10.2 or
later. This change results in a 1.45% progression in PLT5. Full
Production build times increase about 2-3%. Incremental build times
are more severely affected, and so LTO is not enabled for local
engineering builds.
LTO is enabled only on macOS for now, until rdar://problem/49013399,
which affects ARM builds, is fixed.
To change the LTO setting when building locally:
- If building with `make`, specify WK_LTO_MODE={none,thin,full} on the
command line.
- If building with `build-webkit`, specify --lto-mode={none,thin,full}
on the command line.
- If building with `build-root`, specify --lto={none,thin,full} on the
command line.
- If building with Xcode, create a LocalOverrides.xcconfig file at the
top level of your repository directory (if needed) and define
WK_LTO_MODE to full, thin, or none.
* Configurations/Base.xcconfig:
2019-03-21 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Timelines - Cannot export on about:blank - suggested filename containing a colon silently fails
https://bugs.webkit.org/show_bug.cgi?id=196109
Reviewed by Timothy Hatcher.
* UserInterface/Base/FileUtilities.js:
(WI.FileUtilities.sanitizeFilename):
(WI.FileUtilities.inspectorURLForFilename):
New utility functions.
* UserInterface/Test.html:
Include FileUtilities.
* UserInterface/Base/Main.js:
* UserInterface/Controllers/AuditManager.js:
(WI.AuditManager.prototype.export):
* UserInterface/Debug/ProtocolTrace.js:
(WI.ProtocolTrace.prototype.get saveData):
(WI.ProtocolTrace):
* UserInterface/Views/ConsoleMessageView.js:
(WI.ConsoleMessageView.prototype._handleContextMenu):
(WI.ConsoleMessageView):
* UserInterface/Views/ContextMenuUtilities.js:
* UserInterface/Views/HeapSnapshotContentView.js:
(WI.HeapSnapshotContentView.prototype._exportSnapshot):
* UserInterface/Views/LogContentView.js:
(WI.LogContentView.prototype.get saveData):
(WI.LogContentView.prototype._handleContextMenuEvent):
* UserInterface/Views/NetworkTableContentView.js:
(WI.NetworkTableContentView.prototype._exportHAR):
* UserInterface/Views/RecordingContentView.js:
(WI.RecordingContentView.prototype._exportRecording):
(WI.RecordingContentView.prototype._exportReduction):
* UserInterface/Views/ScriptContentView.js:
(WI.ScriptContentView.prototype.get saveData):
* UserInterface/Views/ShaderProgramContentView.js:
(WI.ShaderProgramContentView.prototype.get saveData):
* UserInterface/Views/TextContentView.js:
(WI.TextContentView.prototype.get saveData):
* UserInterface/Views/TextResourceContentView.js:
(WI.TextResourceContentView.prototype.get saveData):
* UserInterface/Views/TimelineRecordingContentView.js:
(WI.TimelineRecordingContentView.prototype._exportTimelineRecording):
Update "web-inspector:///" URL building code to use the utility.
2019-03-21 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Use CSS variables for text color in Computed panel
https://bugs.webkit.org/show_bug.cgi?id=196117
Reviewed by Timothy Hatcher.
* UserInterface/Views/ComputedStyleSection.css:
(.computed-style-section):
(.computed-style-section .computed-property-item .property-trace-item .selector):
(.computed-style-section .computed-property-item .go-to-link):
2019-03-21 Devin Rousso <drousso@apple.com>
Web Inspector: Timelines: flatten the overview to show all records, one per line
https://bugs.webkit.org/show_bug.cgi?id=191901
<rdar://problem/46423618>
Reviewed by Timothy Hatcher.
* UserInterface/Views/OverviewTimelineView.js:
(WI.OverviewTimelineView):
(WI.OverviewTimelineView.prototype.closed):
(WI.OverviewTimelineView.prototype.get navigationItems): Added.
(WI.OverviewTimelineView.prototype.reset):
(WI.OverviewTimelineView.prototype.layout):
(WI.OverviewTimelineView.prototype.get _relevantTimelines): Added.
(WI.OverviewTimelineView.prototype.get _shouldGroupBySourceCode): Added.
(WI.OverviewTimelineView.prototype._loadExistingRecords): Added.
(WI.OverviewTimelineView.prototype._insertDataGridNode):
(WI.OverviewTimelineView.prototype._addResourceToDataGridIfNeeded):
(WI.OverviewTimelineView.prototype._addSourceCodeTimeline):
(WI.OverviewTimelineView.prototype._processPendingRepresentedObjects):
(WI.OverviewTimelineView.prototype._handleGroupBySourceCodeSettingChanged): Added.
(WI.OverviewTimelineView.prototype._handleGroupBySourceCodeNavigationItemCheckedDidChange): Added.
(WI.OverviewTimelineView.prototype._handleTimelineRecordAdded): Added.
(WI.OverviewTimelineView.prototype._sourceCodeTimelineAdded):
(WI.OverviewTimelineView.prototype._networkTimelineRecordAdded): Deleted.
Listen for new records on all timelines. Add each record as a new line. Since each timeline
has different data to display, only show the "name" and "graph" for all records.
* UserInterface/Views/TimelineRecordingContentView.js:
(WI.TimelineRecordingContentView):
(WI.TimelineRecordingContentView.prototype._currentContentViewDidChange):
(WI.TimelineRecordingContentView.prototype._updateImportedView): Deleted.
When viewing the overview of an imported recording, show the non-grouped overview.
* UserInterface/Models/TimelineRecording.js:
(WI.TimelineRecording.prototype.addRecord):
(WI.TimelineRecording.prototype._keyForRecord):
Drive-by: show Media timeline events under the owner frame's resource when grouped.
* UserInterface/Views/TimelineRecordBar.css:
(.timeline-record-bar.timeline-record-type-script.garbage-collected > .segment, .timeline-record-bar.timeline-record-type-heap-allocations > .segment): Added.
(.timeline-record-bar.timeline-record-type-script.garbage-collected > .segment): Deleted.
* UserInterface/Base/Setting.js:
Add setting for controlling the Timeline overview grouping.
* UserInterface/Main.html:
* UserInterface/Views/SourceCodeTimelineTreeElement.js: Removed.
* UserInterface/Views/TimelineRecordingImportedView.js: Removed.
* UserInterface/Views/TimelineRecordingImportedView.css: Removed.
Remove unused files.
* Localizations/en.lproj/localizedStrings.js:
2019-03-21 Devin Rousso <drousso@apple.com>
Web Inspector: Sources: the name of the file should not be used as a folder
https://bugs.webkit.org/show_bug.cgi?id=196064
<rdar://problem/49097710>
Reviewed by Timothy Hatcher.
* UserInterface/Views/GeneralTreeElement.js:
(WI.GeneralTreeElement.prototype.createFoldersAsNeededForSubpath):
* UserInterface/Views/SourcesNavigationSidebarPanel.js:
(WI.SourcesNavigationSidebarPanel.prototype._addResource):
Drive-by: sort resources in each folder by name when grouping by path.
2019-03-20 Devin Rousso <drousso@apple.com>
Web Inspector: Canvas: rework how Canvas.enable/Canvas.disable is used so that events are not sent when the Canvas tab isn't enabled
https://bugs.webkit.org/show_bug.cgi?id=195828
<rdar://problem/48941756>
Reviewed by Timothy Hatcher.
* UserInterface/Controllers/CanvasManager.js:
(WI.CanvasManager):
(WI.CanvasManager.prototype.initializeTarget):
(WI.CanvasManager.prototype.enable): Added.
(WI.CanvasManager.prototype.disable): Added.
* UserInterface/Views/CanvasTabContentView.js:
(WI.CanvasTabContentView):
(WI.CanvasTabContentView.prototype.closed): Added.
* UserInterface/Base/Test.js:
(WI.contentLoaded):
2019-03-20 Devin Rousso <drousso@apple.com>
Web Inspector: Sources: collapsing a section doesn't shrink the space used by that section
https://bugs.webkit.org/show_bug.cgi?id=196045
Reviewed by Timothy Hatcher.
* UserInterface/Views/SourcesNavigationSidebarPanel.js:
(WI.SourcesNavigationSidebarPanel):
(WI.SourcesNavigationSidebarPanel.prototype._handleDebuggerPaused):
(WI.SourcesNavigationSidebarPanel.prototype._handleDebuggerResumed):
* UserInterface/Views/SourcesNavigationSidebarPanel.css:
(.sidebar > .panel.navigation.sources > .content > .details-section):
(.sidebar > .panel.navigation.sources > .content > .details-section:matches(.paused-reason, .breakpoins).collapsed > .header > .options,):
(.sidebar > .panel.navigation.sources > .content > .details-section.collapsed > .content):
(.sidebar > .panel.navigation.sources > .content > .details-section.breakpoints > .header > .options .create-breakpoint):
(.sidebar > .panel.navigation.sources > .content > .details-section:matches(.pause-reason, .call-stack, .breakpoints) > .content,):
(.sidebar > .panel.navigation.sources > .content > .details-section:matches(.call-stack, .breakpoints) > .content):
(.sidebar > .panel.navigation.sources > .content > .details-section:matches(.call-stack, .breakpoints):not(.collapsed) > .content):
(.sidebar > .panel.navigation.sources > .content > .details-section.call-stack):
(.sidebar > .panel.navigation.sources > .content > .details-section.breakpoints):
(.sidebar > .panel.navigation.sources > .content > .details-section.breakpoints .create-breakpoint):
(.sidebar > .panel.navigation.sources > .content > .pause-reason):
(.sidebar > .panel.navigation.sources > .content > .details-section:matches(.call-stack, .breakpoints):not(.collapsed) > .content,):
(.sidebar > .panel.navigation.sources > .content > .details-section.breakpoints .tree-outline .item.event-target-window .icon):
(.sidebar > .panel.navigation.sources > .content .details-section): Deleted.
(.sidebar > .panel.navigation.sources > .content .details-section:matches(.paused-reason, .breakpoins).collapsed > .header > .options,): Deleted.
(.sidebar > .panel.navigation.sources > .content .details-section.collapsed > .content): Deleted.
(.sidebar > .panel.navigation.sources > .content .details-section.breakpoints > .header > .options .create-breakpoint): Deleted.
(.sidebar > .panel.navigation.sources > .content > :matches(.pause-reason-container, .call-stack-container, .breakpoints-container)): Deleted.
(.sidebar > .panel.navigation.sources > .content > .call-stack-container): Deleted.
(.sidebar > .panel.navigation.sources > .content > .breakpoints-container): Deleted.
(.sidebar > .panel.navigation.sources > .content > .breakpoints-container .create-breakpoint): Deleted.
(.sidebar > .panel.navigation.sources > .content > .resources-container): Deleted.
(.sidebar > .panel.navigation.sources > .content > .pause-reason-container): Deleted.
(.sidebar > .panel.navigation.sources > .content > :matches(.call-stack-container, .breakpoints-container, .resources-container)): Deleted.
(.sidebar > .panel.navigation.sources > .content > .breakpoints .tree-outline .item.event-target-window .icon): Deleted.
- Apply the overflow scrolling to the content element of each `WI.DetailsSection`.
- Ensure that there is a maximum height for each section.
- When `.collapsed`, don't try to grow/shrink the section based on its contents.
* UserInterface/Views/CallFrameTreeElement.css:
(.tree-outline .item.call-frame):
(.tree-outline .item.call-frame .status):
Make the container of the active call frame status indicator relatively positioned so that
the active call frame status indicator will follow the container when scrolling.
2019-03-20 Devin Rousso <drousso@apple.com>
Web Inspector: Timeline should show when events preventDefault() was called on an event or not
https://bugs.webkit.org/show_bug.cgi?id=176824
<rdar://problem/34290931>
Reviewed by Timothy Hatcher.
Original patch by Joseph Pecoraro <pecoraro@apple.com>.
* Localizations/en.lproj/localizedStrings.js:
New string.
* UserInterface/Controllers/TimelineManager.js:
(WI.TimelineManager.prototype._processRecord):
Include the whole data object as extra details.
* UserInterface/Models/ScriptTimelineRecord.js:
(WI.ScriptTimelineRecord):
(WI.ScriptTimelineRecord.prototype.get eventType):
Wholesale copy of the extra data instead of just a single property.
* UserInterface/Views/ScriptDetailsTimelineView.js:
(WI.ScriptDetailsTimelineView):
Give the name column more initial space, there is still extra space
after this adjustment but name is comfortably larger (and the most
likely to be expanded).
* UserInterface/Views/ScriptTimelineDataGridNode.js:
(WI.ScriptTimelineDataGridNode.prototype.get subtitle):
Include "default prevented" as the event's subtitle if it was prevented.
2019-03-20 Devin Rousso <drousso@apple.com>
Web Inspector: Styles Redesign: Editing selector should not hide the rule
https://bugs.webkit.org/show_bug.cgi?id=178489
<rdar://problem/35062434>
Reviewed by Timothy Hatcher.
Extracts the selector payload parsing logic inside `WI.DOMNodeStyles` into static functions
so that when the user changes the selector of a `WI.CSSRule`, it's able to process and
update itself with the new selector. This is mainly useful in the case where the `WI.CSSRule`
no longer applies to the selected node (meaning it won't be part of that node's
`WI.DOMNodeStyles`) in that it allows the `WI.SpreadsheetCSSStyleDeclarationSection` to
display the new selector text and the owner `WI.SpreadsheetRulesStyleDetailsPanel` to keep
that section visible even though it isn't applicable to the current node anymore.
* UserInterface/Models/DOMNodeStyles.js:
(WI.DOMNodeStyles):
(WI.DOMNodeStyles.parseSelectorListPayload): Added.
(WI.DOMNodeStyles.createSourceCodeLocation): Added.
(WI.DOMNodeStyles.prototype.refresh):
(WI.DOMNodeStyles.prototype.refresh.fetchedMatchedStyles):
(WI.DOMNodeStyles.prototype.refresh.fetchedInlineStyles):
(WI.DOMNodeStyles.prototype.refresh.fetchedComputedStyle):
(WI.DOMNodeStyles.prototype._parseStyleDeclarationPayload):
(WI.DOMNodeStyles.prototype._parseRulePayload):
(WI.DOMNodeStyles.prototype._styleSheetContentDidChange):
(WI.DOMNodeStyles.prototype.refresh.parseRuleMatchArrayPayload): Deleted.
(WI.DOMNodeStyles.prototype._createSourceCodeLocation): Deleted.
(WI.DOMNodeStyles.prototype._parseSelectorListPayload): Deleted.
Keep track of all `WI.CSSRule` and `WI.CSSStyleDeclaration` that have ever been associated
with this object, so that if a rule's selector is changed to no longer match, and then is
changed back to match again, we are able to update that rule instead of creating a new one.
* UserInterface/Views/SpreadsheetRulesStyleDetailsPanel.js:
(WI.SpreadsheetRulesStyleDetailsPanel.prototype.layout):
(WI.SpreadsheetRulesStyleDetailsPanel.prototype._handleSectionFilterApplied):
(WI.SpreadsheetRulesStyleDetailsPanel.prototype._handleSectionSelectorWillChange): Added.
Attempt to preserve the position of any sections that are changed and no longer apply to the
current node.
* UserInterface/Views/SpreadsheetCSSStyleDeclarationSection.js:
(WI.SpreadsheetCSSStyleDeclarationSection.prototype.spreadsheetSelectorFieldDidChange):
(WI.SpreadsheetCSSStyleDeclarationSection.prototype._renderSelector):
Drive-by: remove unused CSS classes.
* UserInterface/Models/CSSRule.js:
(WI.CSSRule.prototype.update):
(WI.CSSRule.prototype._selectorResolved):
Drive-by: remove unused event.
* UserInterface/Base/Multimap.js:
(Multimap.prototype.has): Added.
(Multimap.prototype.sets): Added.
(Multimap.prototype.copy): Added.
2019-03-20 Devin Rousso <drousso@apple.com>
Web Inspector: no way to filter out all console messages or all evaluations/results
https://bugs.webkit.org/show_bug.cgi?id=167035
<rdar://problem/30023523>
Reviewed by Timothy Hatcher.
* UserInterface/Views/LogContentView.js:
(WI.LogContentView):
(WI.LogContentView.prototype.didAppendConsoleMessageView):
(WI.LogContentView.prototype._markScopeBarItemUnread):
(WI.LogContentView.prototype._markScopeBarItemForMessageLevelUnread): Added.
(WI.LogContentView.prototype._previousMessageRepeatCountUpdated):
(WI.LogContentView.prototype._messageSourceBarSelectionDidChange):
(WI.LogContentView.prototype._scopeBarSelectionDidChange):
(WI.LogContentView.prototype._filterMessageElements):
(WI.LogContentView.prototype.performSearch):
* UserInterface/Views/LogContentView.css:
(.log-scope-bar > li.unread.evaluations::before): Added.
* UserInterface/Views/ConsoleCommandView.js:
(WI.ConsoleCommandView):
Drive-by: remove unnecessary super-class extends.
* Localizations/en.lproj/localizedStrings.js:
2019-03-20 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Styles: enabledProperties don't get invalidated after removing property
https://bugs.webkit.org/show_bug.cgi?id=196038
Reviewed by Timothy Hatcher.
* UserInterface/Models/CSSStyleDeclaration.js:
(WI.CSSStyleDeclaration.prototype.shiftPropertiesAfter):
2019-03-20 Devin Rousso <drousso@apple.com>
Web Inspector: DOM: include window as part of any event listener chain
https://bugs.webkit.org/show_bug.cgi?id=195730
<rdar://problem/48916872>
Reviewed by Timothy Hatcher.
Allow non-nodes (e.g. `window`) to be listed as the target of an event listener.
Add support for the same concept when showing breakpoint details after pausing on a specific
event listener in the Debugger/Sources navigation sidebar.
* UserInterface/Views/DOMNodeDetailsSidebarPanel.js:
(WI.DOMNodeDetailsSidebarPanel.prototype.initialLayout):
(WI.DOMNodeDetailsSidebarPanel.prototype._refreshEventListeners.generateGroupsByEvent):
(WI.DOMNodeDetailsSidebarPanel.prototype._refreshEventListeners.generateGroupsByTarget): Added.
(WI.DOMNodeDetailsSidebarPanel.prototype._refreshEventListeners.eventListenersCallback):
(WI.DOMNodeDetailsSidebarPanel.prototype._refreshEventListeners):
(WI.DOMNodeDetailsSidebarPanel.prototype._refreshEventListeners.generateGroupsByNode): Deleted.
* UserInterface/Views/EventListenerSectionGroup.js:
(WI.EventListenerSectionGroup.prototype._targetTextOrLink): Added.
(WI.EventListenerSectionGroup.prototype._nodeTextOrLink): Deleted.
* UserInterface/Views/DebuggerSidebarPanel.js:
(WI.DebuggerSidebarPanel.prototype._addBreakpoint):
(WI.DebuggerSidebarPanel.prototype._breakpointTreeOutlineDeleteTreeElement):
(WI.DebuggerSidebarPanel.prototype._treeSelectionDidChange):
(WI.DebuggerSidebarPanel.prototype._updatePauseReasonSection):
* UserInterface/Views/DebuggerSidebarPanel.css:
(.sidebar > .panel.navigation.debugger > .content > .breakpoints .tree-outline .item.event-target-window .icon): Added.
* UserInterface/Views/SourcesNavigationSidebarPanel.js:
(WI.SourcesNavigationSidebarPanel):
(WI.SourcesNavigationSidebarPanel.prototype._addBreakpoint):
(WI.SourcesNavigationSidebarPanel.prototype._updatePauseReasonSection):
(WI.SourcesNavigationSidebarPanel.prototype._handleTreeSelectionDidChange):
* UserInterface/Views/SourcesNavigationSidebarPanel.css:
(.sidebar > .panel.navigation.sources > .content > .breakpoints .tree-outline .item.event-target-window .icon): Added.
* Localizations/en.lproj/localizedStrings.js:
2019-03-20 Devin Rousso <drousso@apple.com>
Web Inspector: Debugger: virtualize the list of variables in the Scope sidebar
https://bugs.webkit.org/show_bug.cgi?id=192648
<rdar://problem/46800949>
Reviewed by Joseph Pecoraro.
* UserInterface/Views/ScopeChainDetailsSidebarPanel.js:
(WI.ScopeChainDetailsSidebarPanel.prototype._generateCallFramesSection):
* UserInterface/Views/TreeElement.js:
(WI.TreeElement.prototype.set hidden):
(WI.TreeElement.prototype._attach):
(WI.TreeElement.prototype._detach):
(WI.TreeElement.prototype.collapse):
(WI.TreeElement.prototype.expand):
Move `updateVirtualizedElements` calls to the owner `WI.TreeOutline` to ensure that they get
called. Make the remaining calls use rAF debouncing to better coalesce updates.
* UserInterface/Views/TreeOutline.js:
(WI.TreeOutline.prototype._rememberTreeElement):
(WI.TreeOutline.prototype._forgetTreeElement):
(WI.TreeOutline.prototype.registerScrollVirtualizer):
(WI.TreeOutline.prototype._updateVirtualizedElements.calculateOffsetFromContainer): Added.
(WI.TreeOutline.prototype._updateVirtualizedElements):
(WI.TreeOutline.prototype._calculateVirtualizedValues): Deleted.
Calculate the `WI.TreeOutline`'s top offset within the scroll container so that it will only
update when it's within the visual area.
* UserInterface/Views/Utilities.js:
(Array.prototype.remove):
Return whether the item was actually removed from the array.
2019-03-20 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Timelines - Export fails for MediaTimelineRecords with originator DOM Node - Cannot serialize cyclic structure
https://bugs.webkit.org/show_bug.cgi?id=196027
Reviewed by Timothy Hatcher.
* UserInterface/Models/MediaTimelineRecord.js:
(WI.MediaTimelineRecord.prototype.toJSON):
Remove the originator since that is a WI.DOMNode and cannot
be JSON serialized.
2019-03-20 Devin Rousso <drousso@apple.com>
Web Inspector: Debugger: move breakpoint storage to use `WI.ObjectStore`
https://bugs.webkit.org/show_bug.cgi?id=192719
<rdar://problem/46746857>
Reviewed by Timothy Hatcher.
* UserInterface/Controllers/DebuggerManager.js:
(WI.DebuggerManager):
(WI.DebuggerManager.prototype.addBreakpoint):
(WI.DebuggerManager.prototype.removeBreakpoint):
(WI.DebuggerManager.prototype._debuggerBreakpointOptions):
(WI.DebuggerManager.prototype._setBreakpoint.didSetBreakpoint):
(WI.DebuggerManager.prototype._setBreakpoint):
(WI.DebuggerManager.prototype._breakpointDisabledStateDidChange):
(WI.DebuggerManager.prototype._breakpointEditablePropertyDidChange):
(WI.DebuggerManager.prototype._saveBreakpoints): Deleted.
* UserInterface/Models/Breakpoint.js:
(WI.Breakpoint.prototype.saveIdentityToCookie):
(WI.Breakpoint.prototype.serializeOptions): Added.
(WI.Breakpoint.prototype.toJSON): Added.
(WI.Breakpoint.prototype.get options): Deleted.
(WI.Breakpoint.prototype.get info): Deleted.
(WI.Breakpoint.prototype._serializableActions): Deleted.
* UserInterface/Models/BreakpointAction.js:
(WI.BreakpointAction.prototype.toJSON): Added.
(WI.BreakpointAction.prototype.get info): Deleted.
* UserInterface/Base/ObjectStore.js:
(WI.ObjectStore.async reset): Added.
(WI.ObjectStore._open):
(WI.ObjectStore.prototype.get keyPath): Added.
(WI.ObjectStore.prototype.async.getAll):
(WI.ObjectStore.prototype.async.put): Added.
(WI.ObjectStore.prototype.async.putObject): Added.
(WI.ObjectStore.prototype.async.add): Deleted.
(WI.ObjectStore.prototype.async.addObject): Deleted.
Replace `add` with `put` so that if a key already exists, it is overridden.
* UserInterface/Controllers/AuditManager.js:
(WI.AuditManager.prototype.set editing):
(WI.AuditManager.prototype.async processJSON):
* UserInterface/Controllers/BreakpointPopoverController.js:
(WI.BreakpointPopoverController.prototype._popoverActionsAddActionButtonClicked):
Inline some `WI.Breakpoint` static values.
2019-03-20 Devin Rousso <drousso@apple.com>
Web Inspector: Sources: disabled breakpoints banner should be sticky
https://bugs.webkit.org/show_bug.cgi?id=195104
<rdar://problem/48442259>
Reviewed by Timothy Hatcher.
Allow each of the individual sections to be scrolled separately from the entire sidebar.
Leverage CSS variables set via JavaScript to be able to calculate the maximum height of each
`WI.TreeOutline` section based on the number of items.
* UserInterface/Views/SourcesNavigationSidebarPanel.js:
(WI.SourcesNavigationSidebarPanel):
(WI.SourcesNavigationSidebarPanel.prototype._handleCallStackElementAddedOrRemoved): Added.
(WI.SourcesNavigationSidebarPanel.prototype._handleBreakpointElementAddedOrRemoved):
(WI.SourcesNavigationSidebarPanel.prototype._handleDebuggerPaused):
(WI.SourcesNavigationSidebarPanel.prototype._handleDebuggerResumed):
* UserInterface/Views/SourcesNavigationSidebarPanel.css:
(.sidebar > .panel.navigation.sources > .content):
(.sidebar > .panel.navigation.sources > .content .details-section): Added.
(.sidebar > .panel.navigation.sources > .content .details-section.paused-reason.collapsed > .header > .options,): Added.
(.sidebar > .panel.navigation.sources > .content .details-section.collapsed > .content): Added.
(.sidebar > .panel.navigation.sources > .content > :matches(.pause-reason-container, .call-stack-container, .breakpoints-container)): Added.
(.sidebar > .panel.navigation.sources > .content > .call-stack-container): Added.
(.sidebar > .panel.navigation.sources > .content > .breakpoints-container): Added.
(.sidebar > .panel.navigation.sources > .content > .breakpoints-container .create-breakpoint): Added.
(.sidebar > .panel.navigation.sources > .content > .resources-container): Added.
(.sidebar > .panel.navigation.sources > .content .tree-outline.single-thread): Added.
(.sidebar > .panel.navigation.sources > .content .tree-outline.single-thread > .item.thread): Added.
(@media (min-height: 600px) .sidebar > .panel.navigation.sources > .content): Added.
(@media (min-height: 600px) .sidebar > .panel.navigation.sources > .content > .pause-reason-container): Added.
(@media (min-height: 600px) .sidebar > .panel.navigation.sources > .content > :matches(.call-stack-container, .breakpoints-container, .resources-container)): Added.
(.sidebar > .panel.navigation.sources > .content > .details-section): Deleted.
(.sidebar > .panel.navigation.sources > .content > .details-section.paused-reason.collapsed > .header > .options,): Deleted.
(.sidebar > .panel.navigation.sources > .content > .details-section.collapsed > .content): Deleted.
(.sidebar > .panel.navigation.sources > .content > .details-section.breakpoints > .header > .options .create-breakpoint): Deleted.
(.sidebar > .panel.navigation.sources > .content > .tree-outline.single-thread): Deleted.
(.sidebar > .panel.navigation.sources > .content > .tree-outline.single-thread > .item.thread): Deleted.
(.sidebar > .panel.navigation.sources > .content > .resources): Deleted.
2019-03-20 Devin Rousso <drousso@apple.com>
"Reveal in Layers Tab" context menu option should not be available if the Layers Tab has not been enabled
https://bugs.webkit.org/show_bug.cgi?id=196009
Reviewed by Joseph Pecoraro.
* UserInterface/Views/ContextMenuUtilities.js:
(WI.appendContextMenuItemsForDOMNode):
2019-03-20 Devin Rousso <drousso@apple.com>
Web Inspector: Console: add a setting for controlling auto-expansion of Trace messages
https://bugs.webkit.org/show_bug.cgi?id=195690
Reviewed by Timothy Hatcher.
* UserInterface/Views/ConsoleMessageView.js:
(WI.ConsoleMessageView.prototype._appendStackTrace):
* UserInterface/Base/Setting.js:
* UserInterface/Views/SettingsTabContentView.js:
(WI.SettingsTabContentView.prototype._createGeneralSettingsView):
* Localizations/en.lproj/localizedStrings.js:
2019-03-20 Devin Rousso <drousso@apple.com>
Web Inspector: DOM: selecting a node in a different frame should automatically switch the console prompt's execution context
https://bugs.webkit.org/show_bug.cgi?id=195805
<rdar://problem/48930866>
Reviewed by Timothy Hatcher.
Add an "Auto" execution context item that is selected by default and will update the
selected execution context whenever the inspected node changes. It will also display the
preferred name for whatever execution context is currently active.
* UserInterface/Views/QuickConsole.js:
(WI.QuickConsole):
(WI.QuickConsole.prototype.initializeMainExecutionContextPathComponent):
(WI.QuickConsole.prototype._preferredNameForFrame): Added.
(WI.QuickConsole.prototype._selectExecutionContext): Added.
(WI.QuickConsole.prototype._executionContextPathComponentsToDisplay):
(WI.QuickConsole.prototype._rebuildExecutionContextPathComponents):
(WI.QuickConsole.prototype._framePageExecutionContextsChanged):
(WI.QuickConsole.prototype._frameExecutionContextsCleared):
(WI.QuickConsole.prototype._activeExecutionContextChanged):
(WI.QuickConsole.prototype._createExecutionContextPathComponent):
(WI.QuickConsole.prototype._insertOtherExecutionContextPathComponent):
(WI.QuickConsole.prototype._removeOtherExecutionContextPathComponent):
(WI.QuickConsole.prototype._insertExecutionContextPathComponentForFrame):
(WI.QuickConsole.prototype._removeExecutionContextPathComponentForFrame):
(WI.QuickConsole.prototype._targetRemoved):
(WI.QuickConsole.prototype._pathComponentSelected):
(WI.QuickConsole.prototype._handleInspectedNodeChanged): Added.
(WI.QuickConsole.prototype.get selectedExecutionContext): Deleted.
(WI.QuickConsole.prototype.set selectedExecutionContext): Deleted.
(WI.QuickConsole.prototype._createExecutionContextPathComponentFromFrame): Deleted.
* UserInterface/Views/QuickConsole.css:
(.quick-console > .navigation-bar > .hierarchical-path:not(.automatic-execution-context)): Added.
(.quick-console > .navigation-bar > .hierarchical-path:not(.automatic-execution-context) .execution-context): Added.
(.quick-console > .navigation-bar > .hierarchical-path:not(.automatic-execution-context) .execution-context .selector-arrows): Added.
(.quick-console > .navigation-bar > .hierarchical-path.non-default-execution-context .execution-context): Deleted.
(.quick-console > .navigation-bar > .hierarchical-path.non-default-execution-context .execution-context .selector-arrows): Deleted.
* UserInterface/Controllers/DOMManager.js:
(WI.DOMManager.prototype.get inspectedNode): Added.
(WI.DOMManager.prototype.setInspectedNode):
Broadcast when the inspected node changes.
* UserInterface/Views/NavigationBar.js:
(WI.NavigationBar.prototype.layout):
When `sizesToFit` is enabled, don't force any items to be hidden.
* Localizations/en.lproj/localizedStrings.js:
2019-03-20 Devin Rousso <drousso@apple.com>
Web Inspector: refactor WI.TimelineDataGridNode and its subclasses to unify the API surface
https://bugs.webkit.org/show_bug.cgi?id=195959
<rdar://problem/49028896>
Reviewed by Timothy Hatcher.
* UserInterface/Views/TimelineDataGridNode.js:
(WI.TimelineDataGridNode.prototype.get records):
(WI.TimelineDataGridNode.prototype.get data):
(WI.TimelineDataGridNode.prototype.refresh):
* UserInterface/Views/HeapAllocationsTimelineDataGridNode.js:
(WI.HeapAllocationsTimelineDataGridNode):
(WI.HeapAllocationsTimelineDataGridNode.prototype.get heapSnapshot): Added.
(WI.HeapAllocationsTimelineDataGridNode.prototype.get data):
(WI.HeapAllocationsTimelineDataGridNode.prototype.createCellContent):
(WI.HeapAllocationsTimelineDataGridNode.prototype.createCells):
(WI.HeapAllocationsTimelineDataGridNode.prototype._handleHeapSnapshotCollectedNodes):
(WI.HeapAllocationsTimelineDataGridNode.prototype._handleHeapSnapshotInvalidated):
(WI.HeapAllocationsTimelineDataGridNode.prototype.get record): Deleted.
(WI.HeapAllocationsTimelineDataGridNode.prototype.updateTimestamp): Deleted.
(WI.HeapAllocationsTimelineDataGridNode.prototype._heapSnapshotCollectedNodes): Deleted.
(WI.HeapAllocationsTimelineDataGridNode.prototype._heapSnapshotInvalidated): Deleted.
* UserInterface/Views/LayoutTimelineDataGridNode.js:
(WI.LayoutTimelineDataGridNode):
(WI.LayoutTimelineDataGridNode.prototype.get data):
(WI.LayoutTimelineDataGridNode.prototype.createCellContent):
(WI.LayoutTimelineDataGridNode.prototype.get records): Deleted.
* UserInterface/Views/MediaTimelineDataGridNode.js:
(WI.MediaTimelineDataGridNode):
(WI.MediaTimelineDataGridNode.prototype.get records): Deleted.
* UserInterface/Views/ProfileNodeDataGridNode.js:
(WI.ProfileNodeDataGridNode):
(WI.ProfileNodeDataGridNode.prototype.get profileNode):
(WI.ProfileNodeDataGridNode.prototype.get data):
(WI.ProfileNodeDataGridNode.prototype.createCellContent):
(WI.ProfileNodeDataGridNode.prototype._populate):
(WI.ProfileNodeDataGridNode.prototype.get records): Deleted.
(WI.ProfileNodeDataGridNode.prototype.get baseStartTime): Deleted.
(WI.ProfileNodeDataGridNode.prototype.get rangeStartTime): Deleted.
(WI.ProfileNodeDataGridNode.prototype.get rangeEndTime): Deleted.
(WI.ProfileNodeDataGridNode.prototype.updateRangeTimes): Deleted.
(WI.ProfileNodeDataGridNode.prototype.refresh): Deleted.
* UserInterface/Views/RenderingFrameTimelineDataGridNode.js:
(WI.RenderingFrameTimelineDataGridNode):
(WI.RenderingFrameTimelineDataGridNode.prototype.get data):
(WI.RenderingFrameTimelineDataGridNode.prototype.createCellContent):
(WI.RenderingFrameTimelineDataGridNode.prototype.get records): Deleted.
* UserInterface/Views/ResourceTimelineDataGridNode.js:
(WI.ResourceTimelineDataGridNode):
(WI.ResourceTimelineDataGridNode.prototype.get resource):
(WI.ResourceTimelineDataGridNode.prototype.get data):
(WI.ResourceTimelineDataGridNode.prototype.createCellContent):
(WI.ResourceTimelineDataGridNode.prototype.appendContextMenuItems):
(WI.ResourceTimelineDataGridNode.prototype.filterableDataForColumn):
(WI.ResourceTimelineDataGridNode.prototype._createNameCellDocumentFragment):
(WI.ResourceTimelineDataGridNode.prototype._cachedCellContent):
(WI.ResourceTimelineDataGridNode.prototype._timelineRecordUpdated):
(WI.ResourceTimelineDataGridNode.prototype._dataGridNodeGoToArrowClicked):
(WI.ResourceTimelineDataGridNode.prototype._updateStatus):
(WI.ResourceTimelineDataGridNode.prototype._mouseoverRecordBar.else.let.graphDataSource.get startTime):
(WI.ResourceTimelineDataGridNode.prototype._mouseoverRecordBar.else.let.graphDataSource.get currentTime):
(WI.ResourceTimelineDataGridNode.prototype._mouseoverRecordBar.else.let.graphDataSource.get endTime):
(WI.ResourceTimelineDataGridNode.prototype._mouseoverRecordBar.else.let.graphDataSource.get _extraTimePadding):
(WI.ResourceTimelineDataGridNode.prototype._mouseoverRecordBar):
(WI.ResourceTimelineDataGridNode.prototype.get records): Deleted.
* UserInterface/Views/ResourceTimingPopoverDataGridNode.js:
(WI.ResourceTimingPopoverDataGridNode):
(WI.ResourceTimingPopoverDataGridNode.prototype.get records): Deleted.
* UserInterface/Views/ScriptTimelineDataGridNode.js:
(WI.ScriptTimelineDataGridNode.prototype.get data):
(WI.ScriptTimelineDataGridNode.prototype.get subtitle):
(WI.ScriptTimelineDataGridNode.prototype.createCellContent):
(WI.ScriptTimelineDataGridNode.prototype.get records): Deleted.
(WI.ScriptTimelineDataGridNode.prototype.get baseStartTime): Deleted.
(WI.ScriptTimelineDataGridNode.prototype.get rangeStartTime): Deleted.
(WI.ScriptTimelineDataGridNode.prototype.get rangeEndTime): Deleted.
(WI.ScriptTimelineDataGridNode.prototype.updateRangeTimes): Deleted.
* UserInterface/Views/SourceCodeTimelineTimelineDataGridNode.js:
(WI.SourceCodeTimelineTimelineDataGridNode.prototype.get data):
* UserInterface/Views/HeapAllocationsTimelineView.js:
(WI.HeapAllocationsTimelineView):
(WI.HeapAllocationsTimelineView.prototype.layout):
(WI.HeapAllocationsTimelineView.prototype.reset):
* UserInterface/Views/LayoutTimelineView.js:
(WI.LayoutTimelineView.prototype._processPendingRecords):
* UserInterface/Views/MediaTimelineView.js:
(WI.MediaTimelineView.prototype._processPendingRecords):
* UserInterface/Views/NetworkTimelineView.js:
(WI.NetworkTimelineView.prototype._processPendingRecords):
* UserInterface/Views/OverviewTimelineView.js:
(WI.OverviewTimelineView.prototype._addResourceToDataGridIfNeeded):
(WI.OverviewTimelineView.prototype._addSourceCodeTimeline):
* UserInterface/Views/RenderingFrameTimelineView.js:
(WI.RenderingFrameTimelineView.prototype._processPendingRecords):
* UserInterface/Views/ScriptDetailsTimelineView.js:
(WI.ScriptDetailsTimelineView.prototype.layout):
(WI.ScriptDetailsTimelineView.prototype._processPendingRecords):
Update Timeline `WI.DataGrid` views to use the new constructor format.
* UserInterface/Views/ResourceTimelineDataGridNode.css:
(.resource-timing-popover-content .data-grid td.graph-column):
Drive-by: add extra padding before/after resource timing bars shown when hovering.
2019-03-20 Devin Rousso <drousso@apple.com>
Web Inspector: changes to CSS resources only take affect once editing stops
https://bugs.webkit.org/show_bug.cgi?id=195774
<rdar://problem/48905413>
Reviewed by Timothy Hatcher.
* UserInterface/Controllers/CSSManager.js:
(WI.CSSManager.prototype._resourceContentDidChange.applyStyleSheetChanges.styleSheetFound):
(WI.CSSManager.prototype._resourceContentDidChange):
(WI.CSSManager.prototype._updateResourceContent.fetchedStyleSheetContent):
(WI.CSSManager.prototype._updateResourceContent):
Use a `Throttler` instead of a 500ms debounce.
2019-03-20 Devin Rousso <drousso@apple.com>
Web Inspector: Search: allow DOM searches to be case sensitive
https://bugs.webkit.org/show_bug.cgi?id=194673
<rdar://problem/48087577>
Reviewed by Timothy Hatcher.
* UserInterface/Views/SearchSidebarPanel.js:
(WI.SearchSidebarPanel.prototype.performSearch):
* UserInterface/Views/DOMTreeContentView.js:
(WI.DOMTreeContentView.prototype.performSearch.contextNodesReady):
* UserInterface/Controllers/DOMManager.js:
(WI.DOMManager.prototype.performSearch.callback): Deleted.
(WI.DOMManager.prototype.performSearch): Deleted.
(WI.DOMManager.prototype.searchResult.mycallback): Deleted.
(WI.DOMManager.prototype.searchResult): Deleted.
(WI.DOMManager.prototype.cancelSearch): Deleted.
Drive-by: remove unused code.
2019-03-19 Devin Rousso <drousso@apple.com>
Web Inspector: Sources: provide option to group by path
https://bugs.webkit.org/show_bug.cgi?id=195203
<rdar://problem/27340680>
Reviewed by Timothy Hatcher.
Create top-level folders for each origin and nest all resources (in a folder chain) underneath.
* UserInterface/Views/SourcesNavigationSidebarPanel.js:
(WI.SourcesNavigationSidebarPanel):
(WI.SourcesNavigationSidebarPanel.prototype.closed):
(WI.SourcesNavigationSidebarPanel.prototype.treeElementForRepresentedObject.searchTreeOutline): Added.
(WI.SourcesNavigationSidebarPanel.prototype.treeElementForRepresentedObject):
(WI.SourcesNavigationSidebarPanel.prototype._compareTreeElements):
(WI.SourcesNavigationSidebarPanel.prototype._updateMainFrameTreeElement):
(WI.SourcesNavigationSidebarPanel.prototype._addResource):
(WI.SourcesNavigationSidebarPanel.prototype._addScript):
(WI.SourcesNavigationSidebarPanel.prototype._addWorkerTargetWithMainResource):
(WI.SourcesNavigationSidebarPanel.prototype._handleResourceGroupingModeMouseDown.addOption): Added.
(WI.SourcesNavigationSidebarPanel.prototype._handleResourceGroupingModeMouseDown): Added.
(WI.SourcesNavigationSidebarPanel.prototype._handleTreeSelectionDidChange):
(WI.SourcesNavigationSidebarPanel.prototype._handleResourceGroupingModeChanged):
(WI.SourcesNavigationSidebarPanel.prototype._handleFrameMainResourceDidChange):
(WI.SourcesNavigationSidebarPanel.prototype._handleMainFrameDidChange):
* UserInterface/Views/SourcesNavigationSidebarPanel.css:
(.sidebar > .panel.navigation.sources > .content):
(.sidebar > .panel.navigation.sources > .content > .details-section.paused-reason.collapsed > .header > .options,):
(.sidebar > .panel.navigation.sources > .content > .details-section.breakpoints > .header > .options .create-breakpoint): Added.
(.sidebar > .panel.navigation.sources > .content > .resources): Added.
(.sidebar > .panel.navigation.sources > .content .tree-outline.single-thread): Added.
(.sidebar > .panel.navigation.sources > .content .tree-outline.single-thread > .item.thread): Added.
(.sidebar > .panel.navigation.sources > .content > .details-section.scripts:not(.collapsed)): Deleted.
(.sidebar > .panel.navigation.sources > .content > .tree-outline.single-thread): Deleted.
(.sidebar > .panel.navigation.sources > .content > .tree-outline.single-thread > .item.thread): Deleted.
Drive-by: fix "No Filter Results" message view to not overlap eachother.
Drive-by: try to be more smart about what tree we focus when selecting a represented object.
* UserInterface/Views/ResourceTreeElement.js:
(WI.ResourceTreeElement):
(WI.ResourceTreeElement.prototype.get mainTitleText):
(WI.ResourceTreeElement.prototype._updateTitles):
* UserInterface/Base/URLUtilities.js:
(WI.displayNameForURL):
Provide a way for the display name to use a directory "/" instead of the last path component.
This is needed in cases where the loaded resource is an implicit "index.*".
* UserInterface/Views/GeneralTreeElement.js:
(WI.GeneralTreeElement.prototype.createFoldersAsNeededForSubpath): Added.
* UserInterface/Views/SourceCodeTreeElement.js:
(WI.SourceCodeTreeElement.prototype.createFoldersAsNeededForSubpath): Deleted.
* Localizations/en.lproj/localizedStrings.js:
* UserInterface/Models/Resource.js:
* UserInterface/Views/DetailsSection.css:
(.details-section > .header .go-to-arrow):
Drive-by: vertically center go-to-arrow.
* UserInterface/Protocol/InspectorFrontendAPI.js:
(InspectorFrontendAPI.contextMenuItemSelected):
* UserInterface/Base/Setting.js:
* UserInterface/Views/NetworkTableContentView.js:
(WI.NetworkTableContentView):
(WI.NetworkTableContentView.prototype.get filterNavigationItems):
(WI.NetworkTableContentView.prototype._populateNameCell):
(WI.NetworkTableContentView.prototype._generateSortComparator):
(WI.NetworkTableContentView.prototype._insertResourceAndReloadTable):
(WI.NetworkTableContentView.prototype._updateFilteredEntries):
(WI.NetworkTableContentView.prototype._handleGroupMediaRequestsByDOMNodeCheckedDidChange): Added.
(WI.NetworkTableContentView.prototype._handleGroupByDOMNodeCheckedDidChange): Deleted.
Rename the `groupByNode` setting to be more specific.
2019-03-19 Devin Rousso <drousso@apple.com>
Web Inspector: CPU Usage Timeline - the right edge of each column should align with a CPU measurement
https://bugs.webkit.org/show_bug.cgi?id=195789
<rdar://problem/48915271>
Reviewed by Joseph Pecoraro.
Right now, each column is rendered such that the middle of the column is aligned with the
time of the CPU measurement. This could potentially be misleading, as the width/position of
the bar implies that there was a period of time after the actual time of the CPU measurement
that should be "attributed" to that same CPU measurement.
1 2 3
_______
[ * ]
[ * ]_______
[ * ][ * ]
_______[ * ][ * ]
[ * ][ * ][ * ]
[__*__][__*__][__*__]
A B C D E F
In this example, one might "attribute" any work done at time B to record 1, when in reality,
it should be "attributed" to record 2, since the CPU measurement had already been taken by
the time B was captured, meaning that the work for B hadn't yet been done and could
therefore not have affected the CPU measurement for record 1.
We should be rendering the columns such that the CPU measurement aligns with the trailing
edge of the column, so that all of the work that could be "attributed" to a given CPU
measurement comes before it.
1 2 3
_______ ___
[ *] [
[ *]_______[
[ *][ *][
____[ *][ *][
*][ *][ *][
__*][____*][____*][__
A B C D E F
NOTE: this "rendering" isn't exactly accurate, as the `*` should overlap the `]`.
Legend:
- `[ ]` represents a column for a CPU measurement
- `*` represents the time when the measurement actually takes place
* UserInterface/Views/CPUTimelineOverviewGraph.js:
(WI.CPUTimelineOverviewGraph.prototype.layout):
(WI.CPUTimelineOverviewGraph.prototype._handleChartClick):
* UserInterface/Views/TimelineOverview.js:
(WI.TimelineOverview.prototype._recordSelected):
2019-03-19 Devin Rousso <drousso@apple.com>
Web Inspector: Provide $event in the console when paused on an event listener
https://bugs.webkit.org/show_bug.cgi?id=188672
Reviewed by Timothy Hatcher.
* UserInterface/Controllers/JavaScriptRuntimeCompletionProvider.js:
(WI.JavaScriptRuntimeCompletionProvider.prototype.completionControllerCompletionsNeeded.receivedPropertyNames):
2019-03-19 Devin Rousso <drousso@apple.com>
Web Inspector: DOM: "Capture Screenshot" should only be shown if the node is attached
https://bugs.webkit.org/show_bug.cgi?id=195793
<rdar://problem/48916594>
Reviewed by Joseph Pecoraro.
* UserInterface/Models/DOMNode.js:
(WI.DOMNode.prototype.get attached): Added.
* UserInterface/Views/ContextMenuUtilities.js:
(WI.appendContextMenuItemsForDOMNode):
* UserInterface/Views/DOMTreeElement.js:
(WI.DOMTreeElement.prototype._populateTagContextMenu):
2019-03-18 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: HAR Extension for `serverIPAddress` port number
https://bugs.webkit.org/show_bug.cgi?id=195695
Reviewed by Matt Baker.
* UserInterface/Controllers/HARBuilder.js:
(WI.HARBuilder.entry):
(WI.HARBuilder.port):
* UserInterface/Models/LocalResource.js:
(WI.LocalResource.fromHAREntry):
2019-03-16 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Changes: style attribute changes aren't being tracked
https://bugs.webkit.org/show_bug.cgi?id=193859
<rdar://problem/47568977>
Reviewed by Devin Rousso.
* UserInterface/Controllers/CSSManager.js:
(WI.CSSManager):
(WI.CSSManager.prototype.get modifiedStyles):
(WI.CSSManager.prototype.addModifiedStyle):
(WI.CSSManager.prototype._mainResourceDidChange):
(WI.CSSManager.prototype.get modifiedCSSRules): Deleted.
(WI.CSSManager.prototype.addModifiedCSSRule): Deleted.
(WI.CSSManager.prototype.removeModifiedCSSRule): Deleted.
* UserInterface/Models/CSSRule.js:
(WI.CSSRule.prototype.get stringId): Deleted.
(WI.CSSRule.prototype.markModified): Deleted.
* UserInterface/Models/CSSStyleDeclaration.js:
(WI.CSSStyleDeclaration.prototype.get stringId):
(WI.CSSStyleDeclaration.prototype.markModified):
Inline styles weren't tracked because they didn't have owner rules.
Track style declarations instead of CSS rules.
* UserInterface/Views/ChangesDetailsSidebarPanel.css:
(.sidebar > .panel.changes-panel .css-rule):
(.sidebar > .panel.changes-panel .css-rule + .css-rule):
(.changes-panel .selector.style-attribute):
(.changes-panel .selector:not(.style-attribute)):
(.changes-panel .css-property-line > .property):
(.changes-panel .css-property-line.unchanged): Deleted.
Drive-by: use text-color-secondary for unchanged properties instead of altering opacity.
* UserInterface/Views/ChangesDetailsSidebarPanel.js:
(WI.ChangesDetailsSidebarPanel.prototype.layout):
(WI.ChangesDetailsSidebarPanel.prototype._createRuleElement):
For an inline style declaration, instead of showing a CSS source file location show an appropriate selector for its DOM node.
2019-03-15 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: HAR Extension for Resource Priority
https://bugs.webkit.org/show_bug.cgi?id=195693
Reviewed by Devin Rousso.
* 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.
2019-03-15 Joseph Pecoraro <pecoraro@apple.com>
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):
2019-03-15 Joseph Pecoraro <pecoraro@apple.com>
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):
2019-03-15 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Timelines - Import / Export Timeline Recordings
https://bugs.webkit.org/show_bug.cgi?id=195709
<rdar://problem/23188921>
Reviewed by Devin Rousso.
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.
2019-03-15 Joseph Pecoraro <pecoraro@apple.com>
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.
2019-03-15 Devin Rousso <drousso@apple.com>
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.
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:
2019-03-14 Nikita Vasilyev <nvasilyev@apple.com>
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.
2019-03-14 Devin Rousso <drousso@apple.com>
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).
2019-03-14 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Network - HAR Import
https://bugs.webkit.org/show_bug.cgi?id=195642
<rdar://problem/34820974>
Reviewed by Devin Rousso.
* 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).
2019-03-14 Devin Rousso <drousso@apple.com>
Web Inspector: Console: getEventListeners should work for any EventTarget
https://bugs.webkit.org/show_bug.cgi?id=195713
Reviewed by Joseph Pecoraro.
* UserInterface/Models/NativeFunctionParameters.js:
2019-03-14 Devin Rousso <drousso@apple.com>
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.
* 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.
2019-03-14 Devin Rousso <drousso@apple.com>
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):
2019-03-13 Devin Rousso <drousso@apple.com>
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.
2019-03-13 Keith Rollin <krollin@apple.com>
Add support for new StagedFrameworks layout
https://bugs.webkit.org/show_bug.cgi?id=195543
Reviewed by Alexey Proskuryakov.
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.
2019-03-13 Nikita Vasilyev <nvasilyev@apple.com>
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.
* 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.
2019-03-13 Devin Rousso <drousso@apple.com>
Web Inspector: Protocol Logging: log messages with backtrace if inspector^2 is open
https://bugs.webkit.org/show_bug.cgi?id=195687
Reviewed by Joseph Pecoraro.
* UserInterface/Protocol/LoggingProtocolTracer.js:
(WI.LoggingProtocolTracer.prototype._processEntry):
2019-03-13 Devin Rousso <drousso@apple.com>
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):
2019-03-13 Joseph Pecoraro <pecoraro@apple.com>
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.
* UserInterface/Controllers/HARBuilder.js:
(WI.HARBuilder.timings):
2019-03-12 Devin Rousso <drousso@apple.com>
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:
2019-03-12 Nikita Vasilyev <nvasilyev@apple.com>
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):
2019-03-12 Devin Rousso <drousso@apple.com>
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):
2019-03-12 Devin Rousso <drousso@apple.com>
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.
2019-03-12 Devin Rousso <drousso@apple.com>
Web Inspector: Canvas: export recording as HTML
https://bugs.webkit.org/show_bug.cgi?id=195311
<rdar://problem/48588673>
Reviewed by Joseph Pecoraro.
* 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:
2019-03-12 Devin Rousso <drousso@apple.com>
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.
* 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):
2019-03-12 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Timelines - Improve handling of past recordings (readonly)
https://bugs.webkit.org/show_bug.cgi?id=195594
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.
2019-03-11 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: REGRESSION: Network Cookies Table does not load
https://bugs.webkit.org/show_bug.cgi?id=195599
Reviewed by Devin Rousso.
* UserInterface/Views/ResourceCookiesContentView.js:
(WI.ResourceCookiesContentView.prototype.tableIndexForRepresentedObject):
(WI.ResourceCookiesContentView.prototype.tableRepresentedObjectForIndex):
Include needed delegate methods.
2019-03-11 Devin Rousso <drousso@apple.com>
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.
2019-03-11 Devin Rousso <drousso@apple.com>
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`.
2019-03-11 Justin Fan <justin_fan@apple.com>
[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.
Name updates for Web GPU renaming in inspector.
* UserInterface/Models/Canvas.js:
(WI.Canvas.displayNameForContextType):
2019-03-11 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Editing Timelines shows two CPU Timelines
https://bugs.webkit.org/show_bug.cgi?id=195578
Reviewed by Devin Rousso.
* UserInterface/Controllers/TimelineManager.js:
(WI.TimelineManager.availableTimelineTypes):
The CPU Instrument is already in the default list.
2019-03-11 Devin Rousso <drousso@apple.com>
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).
2019-03-11 Joseph Pecoraro <pecoraro@apple.com>
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):
2019-03-11 Joseph Pecoraro <pecoraro@apple.com>
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.
2019-03-11 Joseph Pecoraro <pecoraro@apple.com>
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.
2019-03-11 Devin Rousso <drousso@apple.com>
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}
2019-03-11 Nikita Vasilyev <nvasilyev@apple.com>
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):
2019-03-07 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Styles: overridden CSS property should have go-to button to jump to effective property
https://bugs.webkit.org/show_bug.cgi?id=185930
<rdar://problem/40506252>
Reviewed by Matt Baker.
Introduce a new experimental jump to effective property button. The button is a small arrow button
next to an overridden CSS property. Clicking the button scrolls to the effective CSS property and
selects it.
* Localizations/en.lproj/localizedStrings.js:
* UserInterface/Base/Setting.js:
* UserInterface/Models/CSSProperty.js:
(WI.CSSProperty):
(WI.CSSProperty.prototype.update):
(WI.CSSProperty.prototype.get overridingProperty):
(WI.CSSProperty.prototype.set overridingProperty):
* UserInterface/Models/DOMNodeStyles.js:
(WI.DOMNodeStyles.prototype._markOverriddenProperties):
* UserInterface/Views/SettingsTabContentView.js:
(WI.SettingsTabContentView.prototype._createExperimentalSettingsView):
* UserInterface/Views/SpreadsheetCSSStyleDeclarationEditor.css:
(.spreadsheet-style-declaration-editor .property.overridden .select-effective-property):
(.spreadsheet-style-declaration-editor .property.overridden:hover .select-effective-property,):
(.spreadsheet-style-declaration-editor .property.overridden:hover .select-effective-property::after,):
(@media (prefers-color-scheme: dark)):
* UserInterface/Views/SpreadsheetCSSStyleDeclarationEditor.js:
(WI.SpreadsheetCSSStyleDeclarationEditor.prototype.spreadsheetStylePropertySelectByProperty):
* UserInterface/Views/SpreadsheetCSSStyleDeclarationSection.js:
(WI.SpreadsheetCSSStyleDeclarationSection.prototype.spreadsheetCSSStyleDeclarationEditorSelectProperty):
* UserInterface/Views/SpreadsheetRulesStyleDetailsPanel.js:
(WI.SpreadsheetRulesStyleDetailsPanel.prototype.spreadsheetCSSStyleDeclarationSectionSelectProperty):
* UserInterface/Views/SpreadsheetStyleProperty.js:
(WI.SpreadsheetStyleProperty.prototype.updateStatus):
2019-03-07 Devin Rousso <drousso@apple.com>
Web Inspector: Protocol: add type checking when commands are called via invoke
https://bugs.webkit.org/show_bug.cgi?id=195310
<rdar://problem/48588679>
Reviewed by Joseph Pecoraro.
* UserInterface/Protocol/InspectorBackend.js:
(InspectorBackend.Command.prototype.invoke.deliverFailure): Added.
(InspectorBackend.Command.prototype.invoke):
(InspectorBackend.Command.prototype._invokeWithArguments):
2019-03-07 Devin Rousso <drousso@apple.com>
Web Inspector: REGRESSION(r242118): WI.ScopeBar missing background
https://bugs.webkit.org/show_bug.cgi?id=195299
Reviewed by Joseph Pecoraro.
Rework the way `color`, `background-color`, and `border-color` are set for `WI.ScopeBar` to
use CSS variables instead. Divides the variables into three categories:
- default: these are the values that the `WI.ScopeBar` would use normally
- override: these are values that take precidence over the default (e.g. set by other elements)
- falls back to default when no value is set
- actual: this is the resulting value that will be used when displaying
- this way, other elements can "mirror" the styling of the `WI.ScopeBar`
* UserInterface/Views/ScopeBar.css:
(.scope-bar):
(.scope-bar > li):
(.scope-bar > li::before):
(.scope-bar > li:matches(.selected, :hover)):
(.scope-bar > li:not(.selected):hover::after):
(.scope-bar > li.selected:active::after):
(.scope-bar > li.multiple > select):
(body[dir=ltr] .scope-bar > li.multiple > select):
(body[dir=rtl] .scope-bar > li.multiple > select):
(.scope-bar > li.multiple:not(.selected) > select): Added.
(.scope-bar > li.multiple > .arrows):
(.scope-bar > li::before): Deleted.
(.scope-bar.default-item-selected > li.multiple.selected::before): Deleted.
(.scope-bar > li:matches(.selected, :hover)::before): Deleted.
(.scope-bar > li.selected:active::before): Deleted.
(.scope-bar > li.multiple.selected > select): Deleted.
(body[dir=ltr] .scope-bar > li.multiple > .arrows): Deleted.
(body[dir=rtl] .scope-bar > li.multiple > .arrows): Deleted.
(.scope-bar > li.multiple:matches(.selected, :hover, :active) > .arrows): Deleted.
(.scope-bar > li:matches(.selected, :active)): Deleted.
(@media (prefers-color-scheme: dark)): Deleted.
Switch to using `::after` since `::before` is more commonly used.
* UserInterface/Views/MultipleScopeBarItem.js:
(WI.MultipleScopeBarItem.prototype._handleMouseDown):
Drive-by: fix the <select> alignment by re-firing the "mousedown" event on it.
* UserInterface/Views/AuditTestGroupContentView.js:
(WI.AuditTestGroupContentView.prototype.layout):
* UserInterface/Views/AuditTestGroupContentView.css:
(.content-view.audit-test-group > header > nav > .scope-bar > li):
(.content-view.audit-test-group > header > nav > .scope-bar > li:not(:hover, .selected)):
(.content-view.audit-test-group > header > nav > .scope-bar > li > img): Added.
(.content-view.audit-test-group > header > nav > .scope-bar > li.pass > img): Added.
(.content-view.audit-test-group > header > nav > .scope-bar > li.warn > img): Added.
(.content-view.audit-test-group > header > nav > .scope-bar > li.fail > img): Added.
(.content-view.audit-test-group > header > nav > .scope-bar > li.error > img): Added.
(.content-view.audit-test-group > header > nav > .scope-bar > li.unsupported > img): Added.
(.content-view.audit-test-group > section > .audit-test-case:first-child, .content-view.audit-test-group > section > .audit-test-case.filtered ~ .audit-test-case:not(.filtered), .content-view.audit-test-group > section > .audit-test-group + .audit-test-case, .content-view.audit-test-group > section > .audit-test-case + .audit-test-group): Added.
(.content-view.audit-test-group > section > .audit-test-case:not(.filtered) ~ .audit-test-case:not(.filtered)): Added.
(.content-view.audit-test-group > header > nav > .scope-bar > li::before): Deleted.
(.content-view.audit-test-group > header > nav > .scope-bar > li.pass::before): Deleted.
(.content-view.audit-test-group > header > nav > .scope-bar > li.warn::before): Deleted.
(.content-view.audit-test-group > header > nav > .scope-bar > li.fail::before): Deleted.
(.content-view.audit-test-group > header > nav > .scope-bar > li.error::before): Deleted.
(.content-view.audit-test-group > header > nav > .scope-bar > li.unsupported::before): Deleted.
(.content-view.audit-test-group > section > .audit-test-case:first-child, .content-view.audit-test-group > section > .audit-test-group + .audit-test-case, .content-view.audit-test-group > section > .audit-test-case + .audit-test-group): Deleted.
Replace the `::before` image with an actual `<img>` now that the `WI.ScopeBar` itself uses
a pseudo-element for the background styling.
* UserInterface/Views/LogContentView.js:
(WI.LogContentView):
* UserInterface/Views/LogContentView.css:
(.log-scope-bar > li:not(.unread) > .indicator): Added.
(.log-scope-bar > li.unread > .indicator): Added.
(.log-scope-bar > li.unread:hover > .indicator): Added.
(.log-scope-bar > li.unread.errors > .indicator): Added.
(.log-scope-bar > li.unread.warnings > .indicator): Added.
(.log-scope-bar > li.unread.logs > .indicator): Added.
(.log-scope-bar > li.unread::before): Deleted.
(body[dir=ltr] .log-scope-bar > li.unread::before): Deleted.
(body[dir=rtl] .log-scope-bar > li.unread::before): Deleted.
(.log-scope-bar > li.unread:hover::before): Deleted.
(.log-scope-bar > li.unread.errors::before): Deleted.
(.log-scope-bar > li.unread.warnings::before): Deleted.
(.log-scope-bar > li.unread.logs::before): Deleted.
Replace the `::before` unread indicator with an actual `<div>` now that the `WI.ScopeBar`
itself uses a pseudo-element for the background styling.
* UserInterface/Views/TimelineRecordingContentView.css:
(.content-view.timeline-recording > .content-browser > .navigation-bar > .item.scope-bar.default-item-selected):
(.content-view.timeline-recording > .content-browser > .navigation-bar > .item.scope-bar.default-item-selected > .multiple): Deleted.
(.content-view.timeline-recording > .content-browser > .navigation-bar > .item.scope-bar.default-item-selected > .multiple .arrows): Deleted.
* UserInterface/Views/CanvasSidebarPanel.js:
(WI.CanvasSidebarPanel.prototype._updateRecordingScopeBar):
Drive-by: fix typo.
2019-03-07 Devin Rousso <drousso@apple.com>
Web Inspector: CSS: there should be a way to inline-replace a variable with it's value
https://bugs.webkit.org/show_bug.cgi?id=195335
Reviewed by Joseph Pecoraro.
* UserInterface/Views/InlineSwatch.js:
(WI.InlineSwatch):
(WI.InlineSwatch.prototype.didDismissPopover):
(WI.InlineSwatch.prototype._swatchElementClicked):
(WI.InlineSwatch.prototype._swatchElementClicked.optionsForType): Added.
Shift-clicking a variable swatch replaces the text with the variable's value.
Drive-by: try to create a readonly swatch for the variable's value (e.g. a color indicator).
* UserInterface/Views/SpreadsheetStyleProperty.js:
(WI.SpreadsheetStyleProperty.prototype._createInlineSwatch):
If the value of a variable swatch changes, re-render the value.
* UserInterface/Views/CodeMirrorTextMarkers.js:
(createCodeMirrorTextMarkers):
(createCodeMirrorColorTextMarkers):
(createCodeMirrorGradientTextMarkers):
(createCodeMirrorBezierTextMarkers):
(createCodeMirrorSpringTextMarkers):
Refactor function parameters for more flexibility.
* Localizations/en.lproj/localizedStrings.js:
2019-03-06 Devin Rousso <drousso@apple.com>
Web Inspector: Elements: highlight the node when hovering event listeners sorted by node
https://bugs.webkit.org/show_bug.cgi?id=195368
Reviewed by Joseph Pecoraro.
* UserInterface/Views/DOMNodeDetailsSidebarPanel.js:
(WI.DOMNodeDetailsSidebarPanel.prototype._refreshEventListeners.generateGroupsByNode):
2019-03-06 Matt Baker <mattbaker@apple.com>
Web Inspector: system accent color follow-ups
https://bugs.webkit.org/show_bug.cgi?id=195190
Reviewed by Devin Rousso.
* UserInterface/Views/ButtonToolbarItem.css:
(.toolbar .item.button:not(.disabled):matches(:focus, .activate.activated)):
(@media (prefers-color-scheme: dark)):
(.toolbar .item.button:not(.disabled):active:matches(:focus, .activate.activated)): Deleted.
Drop pressed toolbar button style. It's extremely subtle and not worth the hassle.
* UserInterface/Views/LogContentView.css:
(.console-messages:focus .console-item.selected::after):
(@media (prefers-color-scheme: dark)):
* UserInterface/Views/ScopeBar.css:
(.scope-bar > li.selected:active::before):
* UserInterface/Views/TimelineRecordBar.css:
(.timeline-record-bar.selected > .segment):
2019-03-06 Matt Baker <mattbaker@apple.com>
REGRESSION: Elements tab: Uncaught Exception: No node with given id found
https://bugs.webkit.org/show_bug.cgi?id=194299
<rdar://problem/47828647>
Reviewed by Devin Rousso.
When removing the selection, TreeOutline subclasses should have more
control over which item becomes selected after the selection is removed.
DOMTreeOutline should track the items that are being removed, and prevent
them or their descendants from becoming selected.
* UserInterface/Views/DOMTreeOutline.js:
(WI.DOMTreeOutline):
(WI.DOMTreeOutline.prototype.ondelete):
(WI.DOMTreeOutline.prototype.canSelectTreeElement):
* UserInterface/Views/TreeOutline.js:
(WI.TreeOutline.prototype.selectionControllerLastSelectableItem):
(WI.TreeOutline.prototype.selectionControllerPreviousSelectableItem):
(WI.TreeOutline.prototype.selectionControllerNextSelectableItem):
(WI.TreeOutline.prototype.canSelectTreeElement):
2019-03-06 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: CPU Usage Timeline - Allow clicking a bar in the overview to select a tight time range around it
https://bugs.webkit.org/show_bug.cgi?id=195321
Reviewed by Devin Rousso.
* UserInterface/Models/Timeline.js:
(WI.Timeline.prototype.closestRecordTo):
Helper to get the closest record to a timestamp.
* UserInterface/Views/CPUTimelineOverviewGraph.css:
(.timeline-overview-graph.cpu > .stacked-column-chart):
(.timeline-overview-graph.cpu > .stacked-column-chart > svg > rect.selected):
Style a selected record with the active color.
* UserInterface/Views/CPUTimelineOverviewGraph.js:
(WI.CPUTimelineOverviewGraph):
(WI.CPUTimelineOverviewGraph.prototype.get samplingRatePerSecond):
(WI.CPUTimelineOverviewGraph.prototype.reset):
(WI.CPUTimelineOverviewGraph.prototype.layout):
(WI.CPUTimelineOverviewGraph.prototype.updateSelectedRecord):
(WI.CPUTimelineOverviewGraph.prototype._graphPositionForMouseEvent):
(WI.CPUTimelineOverviewGraph.prototype._handleGraphMouseClick):
A click in the overview which hits a rect triggers a selection of
the associated timeline record.
* UserInterface/Views/StackedColumnChart.js:
(WI.StackedColumnChart.prototype.addColumnSet):
(WI.StackedColumnChart.prototype.layout):
Allow setting an additional class name with a column set.
It will set the class name on each rect in that column.
* UserInterface/Views/TimelineOverview.js:
(WI.TimelineOverview.prototype._recordSelected):
When selecting a CPU record, make a selection range of 2 neighboring
columns in each direction.
* UserInterface/Views/TimelineRuler.js:
(WI.TimelineRuler.prototype._handleClick):
When a sub-element has handled the click stop further event propagation.
* UserInterface/Views/TimelineOverviewGraph.js:
(WI.TimelineOverviewGraph.prototype.get selected):
Drive-by style fix.
2019-03-06 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: TimelineOverview clicks do not always behave as expected
https://bugs.webkit.org/show_bug.cgi?id=195319
Reviewed by Devin Rousso.
* UserInterface/Views/TimelineRuler.js:
(WI.TimelineRuler.prototype._shouldIgnoreMicroMovement):
(WI.TimelineRuler.prototype._handleMouseDown):
(WI.TimelineRuler.prototype._handleMouseMove):
Ignore moves that haven't gone more than 4px. Once the threshold is
passed allow all moves. This improves the click behavior since
previously click would never re-dispatch if there was any movement.
2019-03-06 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: CPU Usage Timeline - Statistics and Sources sections
https://bugs.webkit.org/show_bug.cgi?id=195202
Reviewed by Devin Rousso.
* Localizations/en.lproj/localizedStrings.js:
New strings.
* UserInterface/Base/Utilities.js:
(Map.prototype.getOrInitialize):
Helper to get and if not found initialize with a value.
* UserInterface/Views/CPUTimelineView.css:
(.timeline-view.cpu > .content > .overview > .chart > .container.stats):
(.timeline-view.cpu > .content > .overview > .chart > .container.stats > table):
(.timeline-view.cpu > .content > .overview > .chart > .container.stats > table > tr > th):
(.timeline-view.cpu > .content > .overview > .chart > .container.stats > table > tr > td.number):
(.timeline-view.cpu > .content > .overview > .chart > .container.stats > table > tr > td.label):
(.timeline-view.cpu > .content > .overview > .chart > .container.stats > table .show-more):
(.timeline-view.cpu > .content > .overview > .chart > .container.stats > table .filter):
(.timeline-view.cpu > .content > .overview > .chart > .container.stats > table .filter:hover):
(.timeline-view.cpu > .content > .overview > .chart > .container.stats > table .active):
(.timeline-view.cpu > .content > .overview > .chart > .container.stats > table .active + .active):
(@media (prefers-color-scheme: dark)):
Colors for the statistics sections.
* UserInterface/Views/CPUTimelineView.js:
(WI.CPUTimelineView):
(WI.CPUTimelineView.prototype.reset):
(WI.CPUTimelineView.prototype.clear):
(WI.CPUTimelineView.prototype._clearStatistics):
(WI.CPUTimelineView.prototype._clearSources):
Updates for additional sections.
Include a cache of the statisiticsData so we can relayout parts of the UI and
avoid an entire UI update.
(WI.CPUTimelineView.prototype.initialLayout):
(WI.CPUTimelineView.prototype._layoutBreakdownChart):
(WI.CPUTimelineView.prototype._layoutStatisticsAndSources):
(WI.CPUTimelineView.prototype._layoutStatisticsSection.createEllipsisElement):
(WI.CPUTimelineView.prototype._layoutStatisticsSection):
(WI.CPUTimelineView.prototype._layoutSourcesSection.firstNonNativeCallFrame):
(WI.CPUTimelineView.prototype._layoutSourcesSection.keyForSourceCodeLocation):
(WI.CPUTimelineView.prototype._layoutSourcesSection.labelForLocation):
(WI.CPUTimelineView.prototype._layoutSourcesSection.createEllipsisElement):
(WI.CPUTimelineView.prototype._layoutSourcesSection):
Extract layouts into helper methods to avoid an enormous layout method.
(WI.CPUTimelineView.prototype._computeSamplingData.incrementTypeCount):
(WI.CPUTimelineView.prototype._computeSamplingData):
Compute additional data when going through script events.
(WI.CPUTimelineView.prototype._resetSourcesFilters):
(WI.CPUTimelineView.prototype._addSourcesFilter):
(WI.CPUTimelineView.prototype._removeSourcesFilter):
(WI.CPUTimelineView.prototype._updateSourcesFilters):
Helpers for updating the source filters.
(WI.CPUTimelineView.prototype._createTableRow):
(WI.CPUTimelineView.prototype._insertTableRow):
Helpers for creating rows in the statistics / sources tables.
2019-03-06 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Simplify chart <rect>s with x/y attributes instead of transform(x, y)
https://bugs.webkit.org/show_bug.cgi?id=195352
Reviewed by Matt Baker.
* UserInterface/Views/ColumnChart.js:
(WI.ColumnChart.prototype.layout):
(WI.ColumnChart):
* UserInterface/Views/RangeChart.js:
(WI.RangeChart.prototype.layout):
(WI.RangeChart):
* UserInterface/Views/StackedColumnChart.js:
(WI.StackedColumnChart.prototype.layout):
(WI.StackedColumnChart):
2019-03-06 Devin Rousso <drousso@apple.com>
Web Inspector: CSS Changes: only show changes for the given node
https://bugs.webkit.org/show_bug.cgi?id=194608
<rdar://problem/48050206>
Reviewed by Timothy Hatcher.
* UserInterface/Views/ChangesDetailsSidebarPanel.js:
(WI.ChangesDetailsSidebarPanel.prototype.inspect):
(WI.ChangesDetailsSidebarPanel.prototype.supportsDOMNode):
(WI.ChangesDetailsSidebarPanel.prototype.layout):
Make this panel a subclass of `WI.DOMDetailsSidebarPanel` so it has access to the selected
DOM node in the Elements tab.
* UserInterface/Base/Setting.js:
* UserInterface/Views/SettingsTabContentView.js:
(WI.SettingsTabContentView.prototype._createGeneralSettingsView):
Create new general setting for controlling this change.
* Localizations/en.lproj/localizedStrings.js:
2019-03-06 Devin Rousso <drousso@apple.com>
Web Inspector: Canvas: color swatches aren't shown for valid inputs with leading/trailing whitespace
https://bugs.webkit.org/show_bug.cgi?id=195298
Reviewed by Timothy Hatcher.
* UserInterface/Views/RecordingActionTreeElement.js:
(WI.RecordingActionTreeElement._generateDOM):
(WI.RecordingActionTreeElement._createSwatchForColorParameters):
Trim the color string since it can be an arbitrary string, seeing as it is captured before
the <canvas> has a chance to parse/fix it.
2019-03-05 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: recordsInTimeRange sometimes does not get the expected record when includeRecordBeforeStart
https://bugs.webkit.org/show_bug.cgi?id=195317
Reviewed by Devin Rousso.
* UserInterface/Models/Timeline.js:
(WI.Timeline.prototype.recordsOverlappingTimeRange):
2019-03-05 Devin Rousso <drousso@apple.com>
Web Inspector: Canvas: remove event listeners once a recording is ready
https://bugs.webkit.org/show_bug.cgi?id=195324
Reviewed by Matt Baker.
* UserInterface/Models/Recording.js:
(WI.Recording):
(WI.Recording.prototype.async swizzle):
(WI.Recording.prototype.async _process):
* UserInterface/Views/RecordingActionTreeElement.js:
(WI.RecordingActionTreeElement):
(WI.RecordingActionTreeElement.prototype._handleValidityChanged):
* UserInterface/Views/CanvasSidebarPanel.js:
(WI.CanvasSidebarPanel.prototype.set recording):
(WI.CanvasSidebarPanel.prototype._handleRecordingProcessedAction):
* UserInterface/Views/RecordingContentView.js:
(WI.RecordingContentView.prototype.initialLayout):
(WI.RecordingContentView.prototype._handleRecordingProcessedAction):
2019-03-05 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Attempting to select records in the bottom 16px of the timeline overview graph fails
https://bugs.webkit.org/show_bug.cgi?id=195318
Reviewed by Devin Rousso.
The bottom few pixels of the overview are reserved for the scroll-container
which may show a scrollbar if the overview needs to scroll. When the scrollbars
are not visible we can allow pointer events to click through the invisible
scroll-container and allow record selection.
* UserInterface/Views/TimelineOverview.css:
(.timeline-overview:not(.has-scrollbar) > .scroll-container):
* UserInterface/Views/TimelineOverview.js:
(WI.TimelineOverview.prototype._handleScrollEvent):
(WI.TimelineOverview.prototype._handleWheelEvent):
(WI.TimelineOverview._handleGestureStart):
2019-03-05 Devin Rousso <drousso@apple.com>
Web Inspector: iPod user agent UIString should have a lowercase "T"
https://bugs.webkit.org/show_bug.cgi?id=195312
<rdar://problem/48586853>
Reviewed by Matt Baker.
* UserInterface/Base/Main.js:
(WI._handleDeviceSettingsToolbarButtonClicked):
2019-03-05 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: CPU Usage Timeline - Adjust sizes in timeline overview
https://bugs.webkit.org/show_bug.cgi?id=195313
Reviewed by Devin Rousso.
Reduce the height slightly to save some precious vertical space.
Also increase the size of the minimum bar height so that it doesn't
look like there are no events when there is low CPU.
* UserInterface/Views/CPUTimelineOverviewGraph.css:
(body .sidebar > .panel.navigation.timeline > .timelines-content li.item.cpu,):
* UserInterface/Views/CPUTimelineOverviewGraph.js:
(WI.CPUTimelineOverviewGraph.prototype.get height):
Reduce the CPU overview graph height to 60px.
(WI.CPUTimelineOverviewGraph.prototype.layout):
Increase the minimum size of a column bar to 4px.
2019-03-04 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Reload actions from second level inspector should properly reload the inspected inspector
https://bugs.webkit.org/show_bug.cgi?id=195306
Reviewed by Matt Baker.
* UserInterface/Base/Main.js:
Provide a better reload for a Nth level inspector.
* UserInterface/Debug/Bootstrap.js:
(WI.runBootstrapOperations):
Simplify, should not need to check for InspectorFrontendHost.
2019-03-04 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: MediaSource logging not initialized properly
https://bugs.webkit.org/show_bug.cgi?id=195307
Reviewed by Matt Baker.
* UserInterface/Controllers/ConsoleManager.js:
(WI.ConsoleManager.prototype.initializeLogChannels):
Typo caused undefined to be included and trigger assertions.
2019-03-04 Devin Rousso <drousso@apple.com>
Web Inspector: CSS: class input isn't fully centered
https://bugs.webkit.org/show_bug.cgi?id=195297
Reviewed by Matt Baker.
* UserInterface/Views/GeneralStyleDetailsSidebarPanel.css:
(.sidebar > .panel.details.css-style > .content ~ .class-list-container > .new-class > .class-name-input):
(body[dir=ltr] .sidebar > .panel.details.css-style > .content ~ .class-list-container > .new-class > .class-name-input): Deleted.
(body[dir=rtl] .sidebar > .panel.details.css-style > .content ~ .class-list-container > .new-class > .class-name-input): Deleted.
2019-03-04 Devin Rousso <drousso@apple.com>
Web Inspector: Audit: show the version number in the UI
https://bugs.webkit.org/show_bug.cgi?id=195292
Reviewed by Matt Baker.
* UserInterface/Views/AuditNavigationSidebarPanel.js:
(WI.AuditNavigationSidebarPanel.prototype.showDefaultContentView):
(WI.AuditNavigationSidebarPanel.prototype._updateNoAuditsPlaceholder):
Fix the logic for showing a placeholder when editing or with only disabled tests.
* UserInterface/Views/AuditNavigationSidebarPanel.css:
(.sidebar > .panel.navigation.audit > .content > .message-text-view): Added.
(.audit-version): Added.
Don't obstruct the "Edit" button when showing a placeholder.
* Localizations/en.lproj/localizedStrings.js:
2019-03-04 Joseph Pecoraro <pecoraro@apple.com>
ITMLKit Inspector: Data Bindings / Associated Data for nodes
https://bugs.webkit.org/show_bug.cgi?id=195290
<rdar://problem/48304019>
Reviewed by Devin Rousso.
* Localizations/en.lproj/localizedStrings.js:
New title and empty message strings.
* UserInterface/Views/DOMNodeDetailsSidebarPanel.css:
(.sidebar > .panel.dom-node-details .details-section.dom-node-associated-data > .content .row):
* UserInterface/Views/DOMNodeDetailsSidebarPanel.js:
(WI.DOMNodeDetailsSidebarPanel.prototype.initialLayout):
(WI.DOMNodeDetailsSidebarPanel.prototype.layout):
(WI.DOMNodeDetailsSidebarPanel.prototype._refreshDataBindings):
(WI.DOMNodeDetailsSidebarPanel.prototype._refreshAssociatedData):
(WI.DOMNodeDetailsSidebarPanel.prototype._attributesChanged):
New Node sections only enabled for ITMLKit `WI.sharedApp.hasExtraDomains`.
* UserInterface/Views/ObjectTreeView.js:
(WI.ObjectTreeView):
Provide a way, like TreeElement/View to access the ObjectTreeView from an element.
2019-03-04 Devin Rousso <drousso@apple.com>
Web Inspector: Canvas: protocol error on first open
https://bugs.webkit.org/show_bug.cgi?id=195059
<rdar://problem/48407871>
Reviewed by Joseph Pecoraro.
* UserInterface/Controllers/CanvasManager.js:
(WI.CanvasManager.prototype.initializeTarget):
(WI.CanvasManager.prototype.static supportsRecordingAutoCapture):
(WI.CanvasManager.prototype.setRecordingAutoCaptureFrameCount):
If targets aren't available, wait until they are and then set the auto-capture frame count.
2019-03-04 Devin Rousso <drousso@apple.com>
Web Inspector: Toggling Timeline "Stop when page loads" to on should stop (immediately or soon) any active recording if already past the load event
https://bugs.webkit.org/show_bug.cgi?id=195239
Reviewed by Joseph Pecoraro.
* UserInterface/Controllers/TimelineManager.js:
(WI.TimelineManager.prototype._handleTimelinesAutoStopSettingChanged):
2019-03-02 Devin Rousso <drousso@apple.com>
Web Inspector: Unexpectedly frequent flashing of DOM node attributes
https://bugs.webkit.org/show_bug.cgi?id=148049
<rdar://problem/22296830>
Reviewed by Joseph Pecoraro.
Save a timestamp of when the CSS animation began, so that if the attribute's node is replaced,
we can "resume" the CSS animation at the same point with the attribute's new node.
* UserInterface/Views/DOMTreeElement.js:
(WI.DOMTreeElement):
(WI.DOMTreeElement.prototype.attributeDidChange):
(WI.DOMTreeElement.prototype._buildAttributeDOM):
(WI.DOMTreeElement.prototype._createModifiedAnimation):
(WI.DOMTreeElement.prototype._markNodeChanged): Deleted.
(WI.DOMTreeElement.prototype._nodeChangedAnimationEnd): Deleted.
(WI.DOMTreeElement.prototype._fireDidChange): Deleted.
2019-03-02 Devin Rousso <drousso@apple.com>
Web Inspector: Debugger: DOM, URL, and Event breakpoints don't grey out when all breakpoints are disabled
https://bugs.webkit.org/show_bug.cgi?id=195170
<rdar://problem/48478193>
Reviewed by Joseph Pecoraro.
* UserInterface/Views/DOMBreakpointTreeElement.js:
(WI.DOMBreakpointTreeElement):
(WI.DOMBreakpointTreeElement.prototype.onattach):
(WI.DOMBreakpointTreeElement.prototype.ondetach):
(WI.DOMBreakpointTreeElement.prototype._updateStatus):
* UserInterface/Views/EventBreakpointTreeElement.js:
(WI.EventBreakpointTreeElement):
(WI.EventBreakpointTreeElement.prototype.onattach):
(WI.EventBreakpointTreeElement.prototype.ondetach):
(WI.EventBreakpointTreeElement.prototype._updateStatus):
* UserInterface/Views/URLBreakpointTreeElement.js:
(WI.URLBreakpointTreeElement):
(WI.URLBreakpointTreeElement.prototype.onattach):
(WI.URLBreakpointTreeElement.prototype.ondetach):
(WI.URLBreakpointTreeElement.prototype._updateStatus):
Remove the `"resolved"` class when the global "breakpoints enabled" state is changed.
* UserInterface/Controllers/DOMDebuggerManager.js:
(WI.DOMDebuggerManager):
(WI.DOMDebuggerManager.prototype._handleDOMBreakpointDisabledStateChanged): Added.
(WI.DOMDebuggerManager.prototype._handleEventBreakpointDisabledStateChanged): Added.
(WI.DOMDebuggerManager.prototype._handleURLBreakpointDisabledStateChanged): Added.
(WI.DOMDebuggerManager.prototype._updateEventBreakpoint):
(WI.DOMDebuggerManager.prototype._updateURLBreakpoint):
(WI.DOMDebuggerManager.prototype._resolveEventBreakpoint):
(WI.DOMDebuggerManager.prototype._resolveURLBreakpoint):
(WI.DOMDebuggerManager.prototype._updateEventBreakpoint.breakpointUpdated): Deleted.
(WI.DOMDebuggerManager.prototype._updateURLBreakpoint.breakpointUpdated): Deleted.
* UserInterface/Models/DOMBreakpoint.js:
(WI.DOMBreakpoint):
(WI.DOMBreakpoint.deserialize): Added.
(WI.DOMBreakpoint.prototype.set disabled):
(WI.DOMBreakpoint.prototype.set domNodeIdentifier):
* UserInterface/Models/EventBreakpoint.js:
(WI.EventBreakpoint.deserialize): Added.
(WI.EventBreakpoint.prototype.set disabled):
(WI.EventBreakpoint.fromPayload): Deleted.
* UserInterface/Models/URLBreakpoint.js:
(WI.URLBreakpoint.deserialize): Added.
(WI.URLBreakpoint.prototype.set disabled):
* UserInterface/Views/DOMTreeContentView.js:
(WI.DOMTreeContentView):
(WI.DOMTreeContentView.prototype._handleDOMBreakpointDisabledStateChanged): Added.
(WI.DOMTreeContentView.prototype._handleDOMBreakpointDOMNodeChanged): Added.
* UserInterface/Views/DebuggerSidebarPanel.js:
(WI.DebuggerSidebarPanel.prototype._handleDOMBreakpointResolvedStateChanged): Added.
* UserInterface/Views/SourcesNavigationSidebarPanel.js:
(WI.SourcesNavigationSidebarPanel):
(WI.SourcesNavigationSidebarPanel.prototype._handleDOMBreakpointResolvedStateChanged): Added.
Drive-by: rename all events with the name `*DidChange` to `*Changed`.
Drive-by: create static `deserialize` helper functions.
2019-03-02 Devin Rousso <drousso@apple.com>
Web Inspector: Sources: breakpoints should be disabled when an audit is running
https://bugs.webkit.org/show_bug.cgi?id=195105
<rdar://problem/48441373>
Reviewed by Joseph Pecoraro.
* UserInterface/Views/SourcesNavigationSidebarPanel.js:
(WI.SourcesNavigationSidebarPanel):
(WI.SourcesNavigationSidebarPanel.prototype.closed):
(WI.SourcesNavigationSidebarPanel.prototype._updateTemporarilyDisabledBreakpointsButtons): Added.
(WI.SourcesNavigationSidebarPanel.prototype._updateBreakpointsDisabledBanner):
(WI.SourcesNavigationSidebarPanel.prototype._handleTimelineCapturingWillStart):
(WI.SourcesNavigationSidebarPanel.prototype._handleTimelineCapturingStopped):
(WI.SourcesNavigationSidebarPanel.prototype._handleAuditManagerTestScheduled): Added.
(WI.SourcesNavigationSidebarPanel.prototype._handleAuditManagerTestCompleted): Added.
* UserInterface/Views/SourcesNavigationSidebarPanel.css:
(.sidebar > .panel.navigation.sources > .content > .warning-banner + .warning-banner): Added.
* UserInterface/Views/DebuggerSidebarPanel.js:
(WI.DebuggerSidebarPanel):
2019-03-02 Devin Rousso <drousso@apple.com>
Web Inspector: Debugger: don't enable breakpoints when source location changes
https://bugs.webkit.org/show_bug.cgi?id=195081
<rdar://problem/48422701>
Reviewed by Joseph Pecoraro.
* UserInterface/Controllers/DebuggerManager.js:
(WI.DebuggerManager.prototype._breakpointDisplayLocationDidChange):
(WI.DebuggerManager.prototype._breakpointEditablePropertyDidChange):
2019-03-01 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: CPU Usage - Energy Impact Section
https://bugs.webkit.org/show_bug.cgi?id=195151
Reviewed by Devin Rousso.
* Localizations/en.lproj/localizedStrings.js:
* UserInterface/Main.html:
New strings and resources.
* UserInterface/Views/CPUTimelineView.css:
(.timeline-view.cpu > .content .subtitle > .info):
(@media (prefers-color-scheme: dark)):
(.energy-info-popover-content):
(.timeline-view.cpu > .content > .overview > .divider):
(body[dir=ltr] .timeline-view.cpu > .content > .overview > .divider):
(body[dir=rtl] .timeline-view.cpu > .content > .overview > .divider):
(.timeline-view.cpu :matches(.area-chart, .stacked-area-chart) svg > path):
(.timeline-view.cpu .gauge-chart:not(.empty) > svg > path.low):
(.timeline-view.cpu .gauge-chart:not(.empty) > svg > path.medium):
(.timeline-view.cpu .gauge-chart:not(.empty) > svg > path.high):
(.timeline-view.cpu .gauge-chart:not(.empty) > svg > polygon.needle):
(.timeline-view.cpu .energy):
(.timeline-view.cpu .energy .energy-impact):
(.timeline-view.cpu .energy .energy-impact.low):
(.timeline-view.cpu .energy .energy-impact.medium):
(.timeline-view.cpu .energy .energy-impact.high):
(.timeline-view.cpu .energy .energy-impact-number):
Styling the chart and text for the different energy impact levels.
* UserInterface/Views/CPUTimelineView.js:
(WI.CPUTimelineView.prototype.get lowEnergyValue):
(WI.CPUTimelineView.prototype.get highEnergyValue):
(WI.CPUTimelineView.prototype.initialLayout):
(WI.CPUTimelineView.prototype.layout):
(WI.CPUTimelineView.prototype._layoutEnergyChart.mapWithBias):
(WI.CPUTimelineView.prototype._layoutEnergyChart.valuesForGauge):
(WI.CPUTimelineView.prototype._layoutEnergyChart):
(WI.CPUTimelineView.prototype._clearEnergyImpactText):
New gauge chart and associated popover.
We do a bit of biasing of the data for each of the sections
in the gauge chart. Each section biases toward the cap of the
section so that:
- we encourage lower power usage (sub 3%)
- the gauge needle quickly moves past the low value of a range
* UserInterface/Views/GaugeChart.css: Added.
(.gauge-chart):
(body[dir=rtl] .gauge-chart):
(.gauge-chart > svg > path,):
(.gauge-chart > svg > polygon.needle):
(.gauge-chart.empty > svg > polygon.needle):
(@media (prefers-color-scheme: dark)):
* UserInterface/Views/GaugeChart.js: Added.
(WI.GaugeChart.prototype.get size):
(WI.GaugeChart.prototype.get segments):
(WI.GaugeChart.prototype.get value):
(WI.GaugeChart.prototype.set value):
(WI.GaugeChart.prototype.clear):
(WI.GaugeChart.prototype.initialLayout):
(WI.GaugeChart.prototype.layout):
(WI.GaugeChart.prototype._validateSegments):
(WI.GaugeChart.prototype._createSegmentPathData):
GaugeChart with variable number of sections and a
current value needle. It has a bit of customization
when drawing the arc at the start of each segment.
* UserInterface/Views/Variables.css:
(:root):
(@media (prefers-color-scheme: dark)):
New CPU colors for the different energy impact levels.
2019-03-01 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Data grid border colors don't match accent colors
https://bugs.webkit.org/show_bug.cgi?id=195232
Reviewed by Matt Baker.
* UserInterface/Views/DataGrid.css:
(.data-grid:focus tr.selected td:not(:last-child)):
(body[dir=ltr] .data-grid:focus tr.selected td:not(:last-child)):
(body[dir=rtl] .data-grid:focus tr.selected td:not(:last-child)):
2019-02-28 Devin Rousso <drousso@apple.com>
Web Inspector: Timelines: don't show the auto-stop UI when not inspecting a page
https://bugs.webkit.org/show_bug.cgi?id=195192
Reviewed by Joseph Pecoraro.
* UserInterface/Views/TimelineRecordingContentView.js:
(WI.TimelineRecordingContentView):
(WI.TimelineRecordingContentView.prototype.get navigationItems):
2019-02-28 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: CPU Usage: Worker thread that dies might stay at a high value forever
https://bugs.webkit.org/show_bug.cgi?id=195148
Reviewed by Matt Baker.
* UserInterface/Views/CPUTimelineView.js:
(CPUTimelineView.prototype.layout):
Handle workers dieing or at least zeroing out between records.
2019-02-28 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: CPU Usage Timeline - Make Threads section expandable / collapsable
https://bugs.webkit.org/show_bug.cgi?id=195085
Reviewed by Matt Baker.
* UserInterface/Base/Setting.js:
New setting to save the Threads expanded/collapsed state.
* UserInterface/Views/CPUTimelineView.css:
(.timeline-view.cpu > .content > .details > .subtitle):
(.timeline-view.cpu > .content > .details > details > .subtitle.threads):
(.timeline-view.cpu > .content > .details > .subtitle): Deleted.
(.timeline-view.cpu > .content > .details > .subtitle.threads): Deleted.
Ensure subtitle styles apply now that one of the subtitles is inside
of a <details> / <summary> element.
* UserInterface/Views/CPUTimelineView.js:
(WI.CPUTimelineView.prototype.initialLayout):
Make the Threads group a <details> / <summary> expandable / collapsed element.
* UserInterface/Views/Main.css:
(summary):
(summary::-webkit-details-marker):
Default styles for <summary>.
2019-02-28 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: View.removeSubview not removing the element properly when not parented
https://bugs.webkit.org/show_bug.cgi?id=195146
Reviewed by Matt Baker.
* UserInterface/Views/View.js:
(WI.View.prototype.removeSubview):
Since the element may not be a direct child, just use Element.prototype.remove.
2019-02-28 Matt Baker <mattbaker@apple.com>
Web Inspector: Debugger: disabled breakpoint color is too dark
https://bugs.webkit.org/show_bug.cgi?id=195103
<rdar://problem/48440678>
Reviewed by Devin Rousso.
Increase the disabled breakpoint contrast, as well as the contrast between
disabled and auto-continue breakpoints. Disabled breakpoints stand out by
being somewhat brighter and less saturated. Using the same strategy for
auto-continue breakpoints is too subtle to provide sufficient contrast.
We can adopt the technique used by Xcode, and overlay a white triangle
marker on the breakpoint arrow to indicate an auto-continue breakpoint.
* UserInterface/Views/BreakpointTreeElement.css:
(.item.breakpoint .status > .status-image):
(.item.breakpoint.selected .status > .status-image.resolved):
Add white outline to make selected breakpoint button stand out.
(.item.breakpoint .status > .status-image.auto-continue::after):
(.item.breakpoint .status > .status-image.disabled):
(.item.breakpoint .status > .status-image.auto-continue): Deleted.
* UserInterface/Views/DOMTreeContentView.css:
(.content-view.dom-tree .tree-outline.dom li .status-image.breakpoint):
(.content-view.dom-tree .tree-outline.dom li .status-image.breakpoint.disabled):
(.content-view.dom-tree .tree-outline.dom li .status-image.breakpoint.subtree):
(.content-view.dom-tree .tree-outline.dom li .status-image.breakpoint.disabled,): Deleted.
* UserInterface/Views/TextEditor.css:
(.text-editor > .CodeMirror .has-breakpoint .CodeMirror-linenumber::before):
(.text-editor > .CodeMirror .breakpoint-auto-continue:not(.execution-line.primary) .CodeMirror-linenumber::after):
(.text-editor > .CodeMirror .breakpoint-disabled .CodeMirror-linenumber::before):
(.text-editor > .CodeMirror .breakpoint-auto-continue:not(.breakpoint-disabled) .CodeMirror-linenumber::before): Deleted.
* UserInterface/Views/Variables.css:
(:root):
Add breakpoint color variables to use across all breakpoint controls.
Use system colors if available, otherwise fall back to hard-coded values
based on sampling the default (blue) accent color on Mojave.
2019-02-28 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Styles: Control-Space should force completion
https://bugs.webkit.org/show_bug.cgi?id=194796
<rdar://problem/48180822>
Reviewed by Matt Baker.
Pressing Control-Space when editing CSS property should show completion popover,
even if the value is empty.
* UserInterface/Models/CSSCompletions.js:
(WI.CSSCompletions.prototype.startsWith):
Performance optimization: exit early when `prefix` is empty.
* UserInterface/Views/SpreadsheetStyleProperty.js:
(WI.SpreadsheetStyleProperty.prototype._nameCompletionDataProvider):
(WI.SpreadsheetStyleProperty.prototype._valueCompletionDataProvider):
* UserInterface/Views/SpreadsheetTextField.js:
(WI.SpreadsheetTextField):
(WI.SpreadsheetTextField.prototype._handleKeyDown):
(WI.SpreadsheetTextField.prototype._updateCompletions):
2019-02-28 Devin Rousso <drousso@apple.com>
Web Inspector: Canvas: enabling auto-capture if the frame count is empty triggers an assertion
https://bugs.webkit.org/show_bug.cgi?id=195060
Reviewed by Matt Baker.
* UserInterface/Views/CanvasOverviewContentView.js:
(WI.CanvasOverviewContentView.prototype._setRecordingAutoCaptureFrameCount):
(WI.CanvasOverviewContentView.prototype._updateRecordingAutoCaptureCheckboxLabel):
(WI.CanvasOverviewContentView.prototype._handleRecordingAutoCaptureCheckedDidChange):
2019-02-28 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Revert -webkit-border-end changes that are unreliable
https://bugs.webkit.org/show_bug.cgi?id=195149
Reviewed by Matt Baker.
* UserInterface/Views/CPUUsageIndicatorView.css:
(.cpu-usage-indicator-view > .details):
(body[dir=ltr] .cpu-usage-indicator-view > .details):
(body[dir=rtl] .cpu-usage-indicator-view > .details):
* UserInterface/Views/CPUUsageStackedView.css:
(.cpu-usage-stacked-view > .details):
(body[dir=ltr] .cpu-usage-stacked-view > .details):
(body[dir=rtl] .cpu-usage-stacked-view > .details):
* UserInterface/Views/CPUUsageView.css:
(.cpu-usage-view > .details):
(body[dir=ltr] .cpu-usage-view > .details):
(body[dir=rtl] .cpu-usage-view > .details):
* UserInterface/Views/MemoryCategoryView.css:
(.memory-category-view > .details):
(body[dir=ltr] .memory-category-view > .details):
(body[dir=rtl] .memory-category-view > .details):
2019-02-28 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Cleanup some Chart code
https://bugs.webkit.org/show_bug.cgi?id=195147
Reviewed by Matt Baker.
* UserInterface/Views/RangeChart.js:
(WI.RangeChart.prototype.layout):
(WI.RangeChart):
* UserInterface/Views/StackedColumnChart.js:
(WI.StackedColumnChart.prototype.layout):
(WI.StackedColumnChart):
2019-02-27 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Add a new Scanner TimelineMarker to show up when mousing over TimelineView graphs
https://bugs.webkit.org/show_bug.cgi?id=195079
Reviewed by Devin Rousso.
* UserInterface/Base/Utilities.js:
(Note.prototype.enclosingNodeOrSelfWithClassInArray):
Helper for a set of classes.
* UserInterface/Models/TimelineMarker.js:
Add a new marker type, "Scanner".
* UserInterface/Views/CPUTimelineView.js:
(WI.CPUTimelineView.prototype.initialLayout):
(WI.CPUTimelineView.prototype._graphPositionForMouseEvent):
(WI.CPUTimelineView.prototype._handleGraphMouseMove):
* UserInterface/Views/MemoryTimelineView.js:
(WI.MemoryTimelineView):
(WI.MemoryTimelineView.prototype._graphPositionForMouseEvent):
(WI.MemoryTimelineView.prototype._handleGraphMouseMove):
Update a scanner time when mousing over various graphs that span the entire time range.
These use the containing graph element because there was a single pixel between
adjacent graphs which would cause the scanner to flicker because the mouse event target
was not an svg element.
* UserInterface/Views/TimelineOverview.js:
(WI.TimelineOverview.prototype.hidden):
(WI.TimelineOverview.prototype.updateScannerTime):
(WI.TimelineOverview.prototype.clearScanner):
* UserInterface/Views/TimelineRecordingContentView.js:
(WI.TimelineRecordingContentView):
(WI.TimelineRecordingContentView.prototype._handleTimelineViewScannerTimeDidChange):
(WI.TimelineRecordingContentView.prototype._handleTimelineViewScannerDidClear):
Update the overview's ruler with scanner changes.
* UserInterface/Views/TimelineRuler.css:
(.timeline-ruler > .markers > .marker.scanner):
* UserInterface/Views/TimelineRuler.js:
(WI.TimelineRuler):
(WI.TimelineRuler.prototype.clearMarkers):
(WI.TimelineRuler.prototype.updateScannerTime):
(WI.TimelineRuler.prototype.clearScanner):
(WI.TimelineRuler.prototype._updateMarkers):
Have a special scanner marker that updates.
* UserInterface/Views/TimelineView.js:
New events that a TimelineView can dispatch to update the overview.
* UserInterface/Views/Variables.css:
(:root):
(@media (prefers-color-scheme: dark)):
Scanner marker colors.
2019-02-27 Devin Rousso <drousso@apple.com>
Web Inspector: Use Element.closest for internal code
https://bugs.webkit.org/show_bug.cgi?id=173747
Reviewed by Joseph Pecoraro.
Replace usage of added utility functions on the `Node` prototype with the built-in
`Element.prototype.closest` as it's more flexible and is capable of doing the same thing.
* UserInterface/Base/Utilities.js:
(Node.prototype.enclosingNodeOrSelfWithClass): Deleted.
(Node.prototype.enclosingNodeOrSelfWithNodeNameInArray): Deleted.
(Node.prototype.enclosingNodeOrSelfWithNodeName): Deleted.
* UserInterface/Base/Main.js:
(WI.handlePossibleLinkClick):
(WI._focusedContentBrowser):
* UserInterface/Views/CPUTimelineView.js:
(WI.CPUTimelineView.prototype._graphPositionForMouseEvent):
* UserInterface/Views/CompletionSuggestionsView.js:
(WI.CompletionSuggestionsView.prototype.set selectedIndex):
(WI.CompletionSuggestionsView.prototype.update):
(WI.CompletionSuggestionsView.prototype._itemClicked):
* UserInterface/Views/ConsoleGroup.js:
(WI.ConsoleGroup.prototype._titleClicked):
* UserInterface/Views/DOMTreeContentView.js:
(WI.DOMTreeContentView.prototype._mouseWasClicked):
* UserInterface/Views/DOMTreeElement.js:
(WI.DOMTreeElement.prototype._startEditingTarget):
(WI.DOMTreeElement.prototype._populateTagContextMenu):
* UserInterface/Views/DOMTreeOutline.js:
(WI.DOMTreeOutline.prototype.populateContextMenu):
* UserInterface/Views/DataGrid.js:
(WI.DataGrid.prototype._startEditing):
(WI.DataGrid.prototype._editingCancelled):
(WI.DataGrid.prototype.dataGridNodeFromNode):
(WI.DataGrid.prototype.dataGridNodeFromPoint):
(WI.DataGrid.prototype._headerCellClicked):
(WI.DataGrid.prototype._mouseoverColumnCollapser):
(WI.DataGrid.prototype._mouseoutColumnCollapser):
(WI.DataGrid.prototype._clickInColumnCollapser):
(WI.DataGrid.prototype._contextMenuInHeader):
(WI.DataGrid.prototype._contextMenuInDataTable):
* UserInterface/Views/DataGridNode.js:
(WI.DataGridNode.prototype.isEventWithinDisclosureTriangle):
* UserInterface/Views/LegacyTabBar.js:
(WI.LegacyTabBar.prototype._handleMouseDown):
(WI.LegacyTabBar.prototype._handleClick):
* UserInterface/Views/LogContentView.js:
(WI.LogContentView.prototype._handleContextMenuEvent):
(WI.LogContentView.prototype._mousedown):
(WI.LogContentView.prototype._targetInMessageCanBeSelected):
(WI.LogContentView.prototype._mousemove):
(WI.LogContentView.prototype._mouseup):
(WI.LogContentView.prototype._ondragstart):
* UserInterface/Views/NavigationBar.js:
(WI.NavigationBar.prototype._mouseDown):
(WI.NavigationBar.prototype._mouseMoved):
* UserInterface/Views/Popover.js:
(WI.Popover.prototype.handleEvent):
* UserInterface/Views/TabBar.js:
(WI.TabBar.prototype._handleMouseDown):
(WI.TabBar.prototype._handleClick):
* UserInterface/Views/Table.js:
(WI.Table.prototype._handleMouseDown):
(WI.Table.prototype._handleContextMenu):
* UserInterface/Views/TreeOutline.js:
(WI.TreeOutline.prototype.treeElementFromNode):
2019-02-27 Devin Rousso <drousso@apple.com>
Web Inspector: REGRESSION(r242118): Debugger: event breakpoints have no icon
https://bugs.webkit.org/show_bug.cgi?id=195119
Reviewed by Matt Baker.
* UserInterface/Views/EventBreakpointTreeElement.js:
(WI.EventBreakpointTreeElement):
2019-02-27 Devin Rousso <drousso@apple.com>
Web Inspector: Dark Mode: unreadable text in bezier curve editor numeric input fields
https://bugs.webkit.org/show_bug.cgi?id=195018
<rdar://problem/48378541>
Reviewed by Matt Baker.
Simplify some styles using `-webkit-*` properties instead of `[dir=ltr]`/`[dir=rtl]` selectors.
* UserInterface/Views/BezierEditor.css:
(.bezier-editor):
(.bezier-editor > .bezier-preview):
(.bezier-editor > .bezier-preview-timing):
(.bezier-editor > .bezier-container .linear-curve):
(.bezier-editor > .bezier-container .bezier-curve):
(.bezier-editor > .bezier-container .control-line):
(.bezier-editor > .bezier-container .control-handle):
(.bezier-editor > .number-input-container):
(.bezier-editor > .number-input-container > input):
(body[dir=ltr] .bezier-editor > .bezier-preview-timing): Deleted.
(body[dir=rtl] .bezier-editor > .bezier-preview-timing): Deleted.
(body[dir=ltr] .bezier-editor > .number-input-container > input): Deleted.
(body[dir=rtl] .bezier-editor > .number-input-container > input): Deleted.
(@media (prefers-color-scheme: dark)): Deleted.
Remove all custom styling on any <input>s, as they look fine with their default styling.
* UserInterface/Views/SpringEditor.css:
(.spring-editor > .spring-preview):
(.spring-editor > .spring-preview > div):
(.spring-editor > .spring-timing > div):
2019-02-27 Devin Rousso <drousso@apple.com>
Web Inspector: popover colors don't change when transitioning to/from dark mode
https://bugs.webkit.org/show_bug.cgi?id=195113
<rdar://problem/48444188>
Reviewed by Timothy Hatcher.
* UserInterface/Views/Popover.js:
(WI.Popover.prototype.dismiss):
(WI.Popover.prototype._addListenersIfNeeded):
2019-02-26 Matt Baker <mattbaker@apple.com>
Web Inspector: Use system accent color throughout UI
https://bugs.webkit.org/show_bug.cgi?id=193507
<rdar://problem/47327971>
Reviewed by Timothy Hatcher.
* UserInterface/Images/Breakpoint.png: Removed.
* UserInterface/Images/Breakpoint.svg: Added.
* UserInterface/Images/Breakpoint@2x.png: Removed.
* UserInterface/Images/BreakpointInactive.png: Removed.
* UserInterface/Images/BreakpointInactive@2x.png: Removed.
Replace breakpoint pixel art with an SVG image that can be styled in CSS.
* UserInterface/Images/CSSVariable.svg:
* UserInterface/Images/CubicBezier.svg:
* UserInterface/Images/UserInputPrompt.svg:
Remove fill color since it is now styled in CSS.
* UserInterface/Views/BezierEditor.css:
(.bezier-editor > .bezier-preview > div):
(@media (prefers-color-scheme: dark)):
(.bezier-editor > .bezier-container .control-handle):
(.bezier-editor > .bezier-container .control-line):
Use system accent color for control handles.
* UserInterface/Views/BreakpointTreeElement.css:
(.item.breakpoint .status > .status-image):
(.item.breakpoint .status > .status-image.resolved):
Use system accent color for breakpoint fill, with a dark outline
to match Xcode and make the button stand out against the selection.
* UserInterface/Views/BreakpointTreeElement.js:
(WI.BreakpointTreeElement.prototype._updateStatus):
* UserInterface/Views/ButtonNavigationItem.css:
(.navigation-bar .item.button > .glyph):
* UserInterface/Views/ConsolePrompt.js:
(WI.ConsolePrompt):
* UserInterface/Views/DOMBreakpointTreeElement.js:
* UserInterface/Views/DOMTreeContentView.css:
(.content-view.dom-tree .tree-outline.dom li .status-image.breakpoint):
(.content-view.dom-tree .tree-outline.dom li .status-image.breakpoint.disabled,):
(.content-view.dom-tree .tree-outline.dom li .status-image.breakpoint.subtree):
(.content-view.dom-tree .tree-outline.dom li .status-image.breakpoint.disabled): Deleted.
(.content-view.dom-tree .tree-outline.dom.breakpoints-disabled li .status-image.breakpoint): Deleted.
(.content-view.dom-tree .tree-outline.dom.breakpoints-disabled li .status-image.breakpoint.disabled): Deleted.
* UserInterface/Views/DOMTreeOutline.css:
(.tree-outline.dom li.selected .selection-area):
(.tree-outline.dom li.elements-drag-over .selection-area):
(.tree-outline.dom:focus li:matches(.selected, .hovered) .selection-area):
(.tree-outline.dom li.hovered:not(.selected) .selection-area):
(.tree-outline.dom li.pseudo-class-enabled > .selection-area::before):
Use the system accent color for the "pseudo-class enabled" marker.
(@media (prefers-color-scheme: dark)):
(.tree-outline.dom:focus li.selected .selection-area): Deleted.
Use --selected-background-color for selection and hover styles, which is
set to the system highlight color if available.
* UserInterface/Views/InlineSwatch.css:
(.inline-swatch:matches(.bezier, .spring, .variable)):
(.inline-swatch:matches(.bezier, .spring)): Deleted.
(.inline-swatch.variable): Deleted.
* UserInterface/Views/InlineSwatch.js:
(WI.InlineSwatch):
* UserInterface/Views/NetworkDetailView.css:
(.network .network-detail .navigation-bar .item.radio.button.text-only:before):
(.network .network-detail .navigation-bar .item.radio.button.text-only.selected):
(@media (prefers-color-scheme: dark)):
(.network-detail .item.close > .glyph):
* UserInterface/Views/QuickConsole.css:
(.quick-console > .console-prompt > .glyph):
(.quick-console > .console-prompt::before): Deleted.
* UserInterface/Views/RadioButtonNavigationItem.css:
(.navigation-bar .item.radio.button.text-only):
(.navigation-bar .item.radio.button.text-only::before):
(.navigation-bar .item.radio.button.text-only:matches(.selected, :hover)):
(.navigation-bar .item.radio.button.text-only:matches(.selected, :hover)::before):
(.navigation-bar .item.radio.button.text-only:not(.selected):hover::before):
(.navigation-bar .item.radio.button.text-only.selected:active::before):
(.navigation-bar .item.radio.button.text-only:hover): Deleted.
(.navigation-bar .item.radio.button.text-only.selected): Deleted.
(.navigation-bar .item.radio.button.text-only:active): Deleted.
(.navigation-bar .item.radio.button.text-only.selected:active): Deleted.
Use system accent color for selection and hover styles. Since it isn't
yet possible to derive new colors from the accent color in CSS, fake it
with a ::before pseudo-element that can have have `filter` or `opacity`
effects applied to it without altering the button text color.
* UserInterface/Views/RenderingFrameTimelineOverviewGraph.css:
(.timeline-overview-graph.rendering-frame > .frame-marker):
Use system accent color for selected frame marker.
* UserInterface/Views/ScopeBar.css:
(.scope-bar > li):
(.scope-bar > li::before):
(.scope-bar.default-item-selected > li.multiple.selected::before):
(.scope-bar > li:matches(.selected, :hover)):
(.scope-bar > li:matches(.selected, :hover)::before):
(.scope-bar > li:not(.selected):hover::before):
(.scope-bar > li.selected:active::before):
(.scope-bar > li:hover): Deleted.
(.scope-bar > li.selected): Deleted.
(.scope-bar > li:active): Deleted.
(.scope-bar > li.selected:active): Deleted.
* UserInterface/Views/SettingsTabContentView.css:
(.content-view.settings .navigation-bar .item.radio.button.text-only:before):
* UserInterface/Views/SpreadsheetCSSStyleDeclarationEditor.css:
(.spreadsheet-style-declaration-editor):
(@media (prefers-color-scheme: dark)):
* UserInterface/Views/TextEditor.css:
(.text-editor > .CodeMirror .has-breakpoint .CodeMirror-linenumber::before):
(.text-editor > .CodeMirror .breakpoint-resolved .CodeMirror-linenumber::before):
(.text-editor > .CodeMirror .has-breakpoint.multiple-breakpoints .CodeMirror-linenumber::before):
(@keyframes text-editor-highlight-fadeout):
(@keyframes text-editor-hovered-expression-highlight-fadeout):
Replace breakpoint pixel art with a solid color (the system accent
color) clipped to the shape of a breakpoint.
* UserInterface/Views/TimelineRecordFrame.css:
(.timeline-record-frame.selected):
* UserInterface/Views/URLBreakpointTreeElement.js:
* UserInterface/Views/Variables.css:
(:root):
(body.window-inactive):
(@media (prefers-color-scheme: dark)):
(body.mac-platform:not(.sierra, .high-sierra)):
Add custom property overrides for system colors where supported.
2019-02-26 Devin Rousso <drousso@apple.com>
Web Inspector: Search: no results when opening to Search tab
https://bugs.webkit.org/show_bug.cgi?id=195058
<rdar://problem/48407699>
Reviewed by Joseph Pecoraro.
* UserInterface/Views/SearchSidebarPanel.js:
(WI.SearchSidebarPanel.prototype.performSearch):
If targets aren't available, wait until they are and then perform the search.
* UserInterface/Base/Main.js:
(WI.targetsAvailable): Added.
Expose getter for indicating whether targets are available.
2019-02-26 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: CPU Usage Timeline - Main Thread Indicator
https://bugs.webkit.org/show_bug.cgi?id=194972
Reviewed by Devin Rousso.
* UserInterface/Main.html:
* UserInterface/Base/Utilities.js:
(value):
The existing enclosingNode doesn't work for SVG because its names
are lowercase. Add a simplified version for the svg case.
* UserInterface/Views/RangeChart.js: Added.
(WI.RangeChart):
(WI.RangeChart.prototype.get size):
(WI.RangeChart.prototype.set size):
(WI.RangeChart.prototype.addRange):
(WI.RangeChart.prototype.clear):
(WI.RangeChart.prototype.layout):
A new chart that draws rects for given ranges.
* UserInterface/Models/Timeline.js:
(WI.Timeline.prototype.recordsOverlappingTimeRange):
Helper to specifically get records touching a range. Useful
for when we have a single pixel spanning (startTime -> endTime)
and we want to find records in that pixel.
* UserInterface/Views/CPUTimelineView.css:
(.timeline-view.cpu .cpu-usage-indicator-view > .graph > .range-chart rect):
(.timeline-view.cpu .cpu-usage-indicator-view > .graph > .range-chart .sample-type-script):
(.timeline-view.cpu .cpu-usage-indicator-view > .graph > .range-chart .sample-type-style):
(.timeline-view.cpu .cpu-usage-indicator-view > .graph > .range-chart .sample-type-layout):
(.timeline-view.cpu .cpu-usage-indicator-view > .graph > .range-chart .sample-type-paint):
* UserInterface/Views/CPUTimelineView.js:
(WI.CPUTimelineView.prototype.get indicatorViewHeight):
(WI.CPUTimelineView.prototype.clear):
(WI.CPUTimelineView.prototype.get scrollableElements):
(WI.CPUTimelineView.prototype.initialLayout):
(WI.CPUTimelineView.prototype.layout):
(WI.CPUTimelineView.prototype._graphPositionForMouseEvent):
(WI.CPUTimelineView.prototype._handleIndicatorClick):
(WI.CPUTimelineView.prototype._attemptSelectIndicatatorTimelineRecord):
(WI.CPUTimelineView.prototype._selectTimelineRecord):
Place the Main Thread Indicator view beneath the big graph.
Clicking inside it selects records in the Timeline Overview.
* UserInterface/Views/CPUUsageIndicatorView.css: Added.
(.cpu-usage-indicator-view):
(.cpu-usage-indicator-view > .details):
(body[dir=ltr] .cpu-usage-indicator-view > .details):
(body[dir=rtl] .cpu-usage-indicator-view > .details):
(body[dir=rtl] .cpu-usage-indicator-view > .graph):
(.cpu-usage-indicator-view > .graph):
(.cpu-usage-indicator-view > .graph,):
* UserInterface/Views/CPUUsageIndicatorView.js: Added.
(WI.CPUUsageIndicatorView):
(WI.CPUUsageIndicatorView.prototype.get chart):
(WI.CPUUsageIndicatorView.prototype.clear):
(WI.CPUUsageIndicatorView.prototype.updateChart):
Converts the CPU samples data into a RangeChart. It works to coalesce
many samples of the same type into a single range to reduce total ranges.
* UserInterface/Views/TimelineRecordingContentView.js:
(WI.TimelineRecordingContentView):
(WI.TimelineRecordingContentView.prototype._recordSelected):
(WI.TimelineRecordingContentView.prototype._recordWasSelected):
(WI.TimelineRecordingContentView.prototype._selectRecordInTimelineOverview):
(WI.TimelineRecordingContentView.prototype._selectRecordInTimelineView):
* UserInterface/Views/TimelineView.js:
Add a path for a TimelineView to dispatch a record selected event and cause
have the TimelineRecordingContentView react to it by updating the timeline
overview and relevent timeline view.
2019-02-26 Devin Rousso <drousso@apple.com>
Web Inspector: navigation sidebar says "No Search Results" when a slow search is in progress
https://bugs.webkit.org/show_bug.cgi?id=170631
<rdar://problem/29473874>
Reviewed by Joseph Pecoraro.
Keep a count of all the backend commands (increment when firing, decrement when a result is
sent back to the frontend). Once the count comes back to `0`, attempt to show the "No Results"
placeholder, since we will have finished searching at that point. Since commands can be called
as a result of other commands, using `Promise.all` isn't possible.
* UserInterface/Views/SearchSidebarPanel.js:
(WI.SearchSidebarPanel.prototype.performSearch):
(WI.SearchSidebarPanel.prototype.performSearch.updateEmptyContentPlaceholderSoon): Deleted.
(WI.SearchSidebarPanel.prototype.performSearch.updateEmptyContentPlaceholder): Deleted.
Drive-by: replace `bind` calls with arrow functions, and use for-of loops.
* Localizations/en.lproj/localizedStrings.js:
2019-02-26 Devin Rousso <drousso@apple.com>
Web Inspector: Canvas: if no auto-capture value is specified, don't force the input to have "0" as the value
https://bugs.webkit.org/show_bug.cgi?id=194950
<rdar://problem/48276798>
Reviewed by Joseph Pecoraro.
Create a getter/setter for the value of the auto-capture frame count <input> so that all
code follows the same path.
If the <input> currently has no content and the frame count is 0, only set the placeholder.
* UserInterface/Views/CanvasOverviewContentView.js:
(WI.CanvasOverviewContentView):
(WI.CanvasOverviewContentView.prototype._setRecordingAutoCaptureFrameCount):
(WI.CanvasOverviewContentView.prototype._updateRecordingAutoCaptureCheckboxLabel):
(WI.CanvasOverviewContentView.prototype.get _recordingAutoCaptureFrameCountInputElementValue): Added.
(WI.CanvasOverviewContentView.prototype.set _recordingAutoCaptureFrameCountInputElementValue): Added.
(WI.CanvasOverviewContentView.prototype._updateRecordingAutoCaptureInputElementSize):
(WI.CanvasOverviewContentView.prototype._handleCanvasRecordingAutoCaptureFrameCountChanged):
2019-02-26 Devin Rousso <drousso@apple.com>
Web Inspector: Console: dragging a selection outside the selected element clears the selection
https://bugs.webkit.org/show_bug.cgi?id=194660
<rdar://problem/46719239>
Reviewed by Joseph Pecoraro.
* UserInterface/Views/LogContentView.js:
(WI.LogContentView.prototype._mousemove):
Don't clear the selection if the target of the "mousemove" is outside of the view.
(WI.LogContentView.prototype._updateMessagesSelection):
Drive-by: clear the saved selected messages when we're just selecting a single message.
2019-02-25 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Rename LineChart to AreaChart
https://bugs.webkit.org/show_bug.cgi?id=195038
Rubber-stamped by Matt Baker.
* UserInterface/Main.html:
New file names.
* UserInterface/Views/AreaChart.js: Renamed from Source/WebInspectorUI/UserInterface/Views/LineChart.js.
* UserInterface/Views/StackedAreaChart.js: Renamed from Source/WebInspectorUI/UserInterface/Views/StackedLineChart.js.
Renamed.
* UserInterface/Views/CPUTimelineView.css:
* UserInterface/Views/CPUUsageStackedView.css:
* UserInterface/Views/CPUUsageStackedView.js:
* UserInterface/Views/CPUUsageView.css:
* UserInterface/Views/CPUUsageView.js:
* UserInterface/Views/LegacyCPUTimelineView.css:
* UserInterface/Views/MemoryCategoryView.css:
* UserInterface/Views/MemoryCategoryView.js:
* UserInterface/Views/MemoryTimelineOverviewGraph.css:
Update references.
2019-02-25 Devin Rousso <drousso@apple.com>
Web Inspector: hovering a node inside an object preview should highlight it
https://bugs.webkit.org/show_bug.cgi?id=194862
<rdar://problem/48246433>
Reviewed by Joseph Pecoraro.
* UserInterface/Views/FormattedValue.js:
(WI.FormattedValue.createElementForNodePreview):
When provided a way to access the `WI.RemoteObject` for the given preview, add various mouse
event listeners that highlight the corresponding DOM node.
* UserInterface/Views/ObjectPreviewView.js:
(WI.ObjectPreviewView):
(WI.ObjectPreviewView.prototype._initTitleElement):
(WI.ObjectPreviewView.prototype._appendPropertyPreviews):
(WI.ObjectPreviewView.prototype._appendValuePreview):
Implement various ways of getting the `WI.RemoteObject` for a given preview.
- When the preview is for the actual `WI.RemoteObject`, simply return it
- If the preview is a property of the main object, get the `WI.RemoteObject` for that property
* UserInterface/Views/ObjectTreeView.js:
(WI.ObjectTreeView):
* UserInterface/Views/ObjectTreePropertyTreeElement.js:
(WI.ObjectTreePropertyTreeElement.prototype._createTitlePropertyStyle):
Pass the `WI.RemoteObject` to the preview so that it can utilize it.
* UserInterface/Controllers/ConsoleManager.js:
(WI.ConsoleManager):
(WI.ConsoleManager.prototype.releaseRemoteObjectWithConsoleClear): Added.
(WI.ConsoleManager.prototype.messagesCleared): Added.
2019-02-25 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: CPU Usage Timeline - Thread Breakdown
https://bugs.webkit.org/show_bug.cgi?id=194788
Reviewed by Devin Rousso.
* Localizations/en.lproj/localizedStrings.js:
* UserInterface/Main.html:
New strings and files.
* UserInterface/Views/Variables.css:
(:root):
New colors for cpu threads / activity breakdown.
* UserInterface/Models/CPUTimelineRecord.js:
(WI.CPUTimelineRecord.prototype.get workers):
(WI.CPUTimelineRecord):
Distinguish the workers in a CPU timeline record.
* UserInterface/Views/CPUTimelineOverviewGraph.js:
(WI.CPUTimelineOverviewGraph):
(WI.CPUTimelineOverviewGraph.prototype.layout):
* UserInterface/Views/CPUTimelineOverviewGraph.css:
(.timeline-overview-graph.cpu > .stacked-column-chart > svg > rect):
(.timeline-overview-graph.cpu > .stacked-column-chart > svg > rect.main-thread-usage):
(.timeline-overview-graph.cpu > .stacked-column-chart > svg > rect.worker-thread-usage):
(.timeline-overview-graph.cpu > .column-chart > svg > rect):
Stacked column chart for CPU in the overview graph.
* UserInterface/Views/CPUTimelineView.css:
(.timeline-view.cpu > .content > .overview):
(.timeline-view.cpu > .content > .details > .subtitle.threads):
(.timeline-view.cpu > .content > .overview > .chart):
(.timeline-view.cpu > .content > .overview > .chart > .subtitle):
(.timeline-view.cpu > .content > .overview > .chart > .container):
(.timeline-view.cpu > .content > .overview .samples,):
(.timeline-view.cpu .legend):
(.timeline-view.cpu .legend .row):
(.timeline-view.cpu .legend .row + .row):
(.timeline-view.cpu .legend .swatch):
(.timeline-view.cpu .legend > .row > .swatch.sample-type-idle):
(.timeline-view.cpu .legend > .row > .swatch.sample-type-script):
(.timeline-view.cpu .legend > .row > .swatch.sample-type-style):
(.timeline-view.cpu .legend > .row > .swatch.sample-type-layout):
(.timeline-view.cpu .legend > .row > .swatch.sample-type-paint):
(.timeline-view.cpu .circle-chart > svg > path.segment.sample-type-idle):
(.timeline-view.cpu .circle-chart > svg > path.segment.sample-type-script):
(.timeline-view.cpu .circle-chart > svg > path.segment.sample-type-style):
(.timeline-view.cpu .circle-chart > svg > path.segment.sample-type-layout):
(.timeline-view.cpu .circle-chart > svg > path.segment.sample-type-paint):
(.timeline-view.cpu svg > path):
(.timeline-view.cpu .main-thread svg > path,):
(.timeline-view.cpu .worker-thread svg > path,):
(.timeline-view.cpu .cpu-usage-view.empty):
(.timeline-view.cpu :matches(.line-chart, .stacked-line-chart) .markers):
(.timeline-view.cpu :matches(.line-chart, .stacked-line-chart) .markers > div):
(.timeline-view.cpu :matches(.line-chart, .stacked-line-chart) .markers > div > .label):
(.timeline-view.cpu > .content): Deleted.
(.cpu-usage-view .line-chart > svg > path): Deleted.
(.timeline-view.cpu .legend > .row > .swatch.current): Deleted.
* UserInterface/Views/CPUTimelineView.js:
(WI.CPUTimelineView):
(WI.CPUTimelineView.displayNameForSampleType):
(WI.CPUTimelineView.prototype.shown):
(WI.CPUTimelineView.prototype.clear.clearUsageView):
(WI.CPUTimelineView.prototype.clear):
(WI.CPUTimelineView.prototype.initialLayout.createChartContainer):
(WI.CPUTimelineView.prototype.initialLayout.appendLegendRow):
(WI.CPUTimelineView.prototype.initialLayout):
(WI.CPUTimelineView.prototype.layout.removeGreaterThan):
(WI.CPUTimelineView.prototype.layout):
(WI.CPUTimelineView.prototype.layout.layoutView):
(WI.CPUTimelineView.prototype.layout.yScale):
(WI.CPUTimelineView.prototype._computeSamplingData.markRecordEntries):
(WI.CPUTimelineView.prototype._computeSamplingData):
(WI.CPUTimelineView.prototype._removeWorkerThreadViews):
(WI.CPUTimelineView.prototype._clearBreakdownLegend):
(WI.CPUTimelineView.prototype.layout.xScale): Deleted.
Line charts and Circle Chart for threads and breakdowns.
* UserInterface/Views/CPUUsageStackedView.css:
(.cpu-usage-stacked-view):
(.cpu-usage-stacked-view > .details):
(body[dir=ltr] .cpu-usage-stacked-view > .details):
(body[dir=rtl] .cpu-usage-stacked-view > .details):
(.cpu-usage-stacked-view > .details > .name):
(body[dir=rtl] .cpu-usage-stacked-view > .graph):
(.cpu-usage-stacked-view > .graph):
(.cpu-usage-stacked-view > .graph,):
* UserInterface/Views/CPUUsageStackedView.js:
(WI.CPUUsageStackedView):
(WI.CPUUsageStackedView.prototype.get chart):
(WI.CPUUsageStackedView.prototype.clear):
(WI.CPUUsageStackedView.prototype.updateChart):
(WI.CPUUsageStackedView.prototype._updateDetails):
Same as CPUUsageView except Stacked for the total.
* UserInterface/Views/CPUUsageView.css:
(.cpu-usage-view):
(.cpu-usage-view > .details):
(.cpu-usage-view > .details > .name):
(.cpu-usage-view > .graph):
* UserInterface/Views/CPUUsageView.js:
(WI.CPUUsageView):
(WI.CPUUsageView.prototype.get chart):
(WI.CPUUsageView.prototype.clear):
(WI.CPUUsageView.prototype.updateChart):
(WI.CPUUsageView.prototype._updateDetails):
Slight modifications for the new UI.
* UserInterface/Views/LegacyCPUTimelineView.css:
(.timeline-view.legacy-cpu .cpu-usage-view .line-chart > svg > path):
* UserInterface/Views/LegacyCPUTimelineView.js:
(WI.LegacyCPUTimelineView.prototype.layout):
Update API calls in the legacy view for minor changes.
* UserInterface/Views/MemoryCategoryView.css:
(.memory-category-view > .details):
(.memory-category-view > .details > .name):
* UserInterface/Views/MemoryTimelineOverviewGraph.js:
(WI.MemoryTimelineOverviewGraph.prototype.layout):
* UserInterface/Views/MemoryTimelineView.css:
(body .timeline-view.memory):
(.timeline-view.memory): Deleted.
Improvements ported from the CPU timeline views.
* UserInterface/Views/StackedColumnChart.js: Added.
(WI.StackedColumnChart):
(WI.StackedColumnChart.prototype.get size):
(WI.StackedColumnChart.prototype.set size):
(WI.StackedColumnChart.prototype.initializeSections):
(WI.StackedColumnChart.prototype.addColumnSet):
(WI.StackedColumnChart.prototype.clear):
(WI.StackedColumnChart.prototype.layout):
A stacked column chart implementation.
* UserInterface/Views/View.js:
(WI.View.prototype.removeUnparentedSubview):
Add a way to remove a subview that had its `element` moved
someplace other than a direct child of our element.
2019-02-25 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Dark Mode: Network Overview Graph segments have distracting white box shadow
https://bugs.webkit.org/show_bug.cgi?id=194966
Reviewed by Devin Rousso.
* UserInterface/Views/Variables.css:
(@media (prefers-color-scheme: dark)):
Make global timeline even/odd colors where odd is the default content background
color and even is slightly different. These were used in multiple places.
* UserInterface/Views/CPUTimelineOverviewGraph.css:
(.timeline-overview-graph.cpu > .legend):
(.timeline-overview-graph.cpu:nth-child(even) > .legend):
(@media (prefers-color-scheme: dark)): Deleted.
* UserInterface/Views/MemoryTimelineOverviewGraph.css:
(.timeline-overview-graph.memory > .legend):
(.timeline-overview-graph.memory:nth-child(even) > .legend):
(@media (prefers-color-scheme: dark)): Deleted.
* UserInterface/Views/NetworkTimelineOverviewGraph.css:
(.timeline-overview-graph.network > .graph-row > .timeline-record-bar > .segment:not(.inactive)):
(.timeline-overview-graph.network:nth-child(even) > .graph-row > .timeline-record-bar > .segment:not(.inactive)):
Use the variable colors now and eliminate dark mode blocks.
2019-02-25 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Styles: Command-/ should toggle edited property
https://bugs.webkit.org/show_bug.cgi?id=194967
<rdar://problem/48329852>
Reviewed by Devin Rousso.
* UserInterface/Models/CSSProperty.js:
(WI.CSSProperty.prototype.commentOut):
* UserInterface/Views/SpreadsheetCSSStyleDeclarationEditor.js:
(WI.SpreadsheetCSSStyleDeclarationEditor.prototype.spreadsheetStylePropertySelect):
* UserInterface/Views/SpreadsheetStyleProperty.js:
(WI.SpreadsheetStyleProperty.prototype.update):
(WI.SpreadsheetStyleProperty.prototype._toggle):
(WI.SpreadsheetStyleProperty.prototype._select):
2019-02-25 Devin Rousso <drousso@apple.com>
Web Inspector: REGRESSION(r242018): Timelines shows no results
https://bugs.webkit.org/show_bug.cgi?id=195017
Reviewed by Joseph Pecoraro.
`simpleGlobStringToRegExp` can return `null` if the provided search query is an empty string.
* UserInterface/Base/SearchUtilities.js:
(WI.SearchUtilities.prototype.regExpForString):
Add assertions that the provided search query is a valid non-empty string.
* UserInterface/Views/DataGrid.js:
(WI.DataGrid.prototype._updateFilter):
If the search query is empty, don't attempt to create a `RegExp` for it.
2019-02-25 Matt Baker <mattbaker@apple.com>
Web Inspector: REGRESSION: TreeElement or Table row selected using the keyboard should always be revealed
https://bugs.webkit.org/show_bug.cgi?id=194918
<rdar://problem/48289314>
Reviewed by Devin Rousso.
* UserInterface/Views/Table.js:
(WI.Table.prototype.selectionControllerSelectionDidChange):
* UserInterface/Views/TreeOutline.js:
(WI.TreeOutline.prototype._treeKeyDown):
2019-02-25 Devin Rousso <drousso@apple.com>
Web Inspector: [META] Merge Resources and Debugger into a single Sources tab
https://bugs.webkit.org/show_bug.cgi?id=183420
Reviewed by Joseph Pecoraro.
* UserInterface/Views/SourcesNavigationSidebarPanel.js: Added.
(WI.SourcesNavigationSidebarPanel):
(WI.SourcesNavigationSidebarPanel.shouldPlaceResourcesAtTopLevel):
(WI.SourcesNavigationSidebarPanel.prototype.get minimumWidth):
(WI.SourcesNavigationSidebarPanel.prototype.closed):
(WI.SourcesNavigationSidebarPanel.prototype.showDefaultContentView):
(WI.SourcesNavigationSidebarPanel.prototype.treeElementForRepresentedObject.isAncestor):
(WI.SourcesNavigationSidebarPanel.prototype.treeElementForRepresentedObject.getParent):
(WI.SourcesNavigationSidebarPanel.prototype.treeElementForRepresentedObject):
(WI.SourcesNavigationSidebarPanel.prototype.resetFilter):
(WI.SourcesNavigationSidebarPanel.prototype.hasCustomFilters):
(WI.SourcesNavigationSidebarPanel.prototype.matchTreeElementAgainstCustomFilters.match):
(WI.SourcesNavigationSidebarPanel.prototype.matchTreeElementAgainstCustomFilters):
(WI.SourcesNavigationSidebarPanel.prototype.willDismissPopover):
(WI.SourcesNavigationSidebarPanel.prototype._compareTreeElements):
(WI.SourcesNavigationSidebarPanel.prototype._updateMainFrameTreeElement):
(WI.SourcesNavigationSidebarPanel.prototype._addTarget):
(WI.SourcesNavigationSidebarPanel.prototype._findCallStackTargetTreeElement):
(WI.SourcesNavigationSidebarPanel.prototype._updateCallStackTreeOutline):
(WI.SourcesNavigationSidebarPanel.prototype._addResource):
(WI.SourcesNavigationSidebarPanel.prototype._addResourcesRecursivelyForFrame):
(WI.SourcesNavigationSidebarPanel.prototype._addScript):
(WI.SourcesNavigationSidebarPanel.prototype._addWorkerTargetWithMainResource):
(WI.SourcesNavigationSidebarPanel.prototype._addDebuggerTreeElementForSourceCode):
(WI.SourcesNavigationSidebarPanel.prototype._insertDebuggerTreeElement):
(WI.SourcesNavigationSidebarPanel.prototype._compareBreakpointTreeElements):
(WI.SourcesNavigationSidebarPanel.prototype._addBreakpoint):
(WI.SourcesNavigationSidebarPanel.prototype._removeBreakpoint):
(WI.SourcesNavigationSidebarPanel.prototype._removeAllBreakpoints):
(WI.SourcesNavigationSidebarPanel.prototype._toggleAllBreakpoints):
(WI.SourcesNavigationSidebarPanel.prototype._breakpointsBeneathTreeElement):
(WI.SourcesNavigationSidebarPanel.prototype._addIssue):
(WI.SourcesNavigationSidebarPanel.prototype._removeDebuggerTreeElement):
(WI.SourcesNavigationSidebarPanel.prototype._addBreakpointsForSourceCode):
(WI.SourcesNavigationSidebarPanel.prototype._addIssuesForSourceCode):
(WI.SourcesNavigationSidebarPanel.prototype._updateBreakpointsDisabledBanner):
(WI.SourcesNavigationSidebarPanel.prototype._updatePauseReason):
(WI.SourcesNavigationSidebarPanel.prototype._updatePauseReasonGotoArrow):
(WI.SourcesNavigationSidebarPanel.prototype._updatePauseReasonSection):
(WI.SourcesNavigationSidebarPanel.prototype._handleResourceTypeScopeBarSelectionChanged):
(WI.SourcesNavigationSidebarPanel.prototype._handleTreeSelectionDidChange):
(WI.SourcesNavigationSidebarPanel.prototype._handleBreakpointElementAddedOrRemoved):
(WI.SourcesNavigationSidebarPanel.prototype._handleCreateBreakpointClicked):
(WI.SourcesNavigationSidebarPanel.prototype._handleFrameMainResourceDidChange):
(WI.SourcesNavigationSidebarPanel.prototype._handleResourceAdded):
(WI.SourcesNavigationSidebarPanel.prototype._handleMainFrameDidChange):
(WI.SourcesNavigationSidebarPanel.prototype._handleDebuggerBreakpointAdded):
(WI.SourcesNavigationSidebarPanel.prototype._handleDebuggerBreakpointRemoved):
(WI.SourcesNavigationSidebarPanel.prototype._handleDebuggerBreakpointsEnabledDidChange):
(WI.SourcesNavigationSidebarPanel.prototype._handleDebuggerScriptAdded):
(WI.SourcesNavigationSidebarPanel.prototype._handleDebuggerScriptRemoved):
(WI.SourcesNavigationSidebarPanel.prototype._handleDebuggerScriptsCleared):
(WI.SourcesNavigationSidebarPanel.prototype._handleDebuggerPaused):
(WI.SourcesNavigationSidebarPanel.prototype._handleDebuggerResumed):
(WI.SourcesNavigationSidebarPanel.prototype._handleDebuggerCallFramesDidChange):
(WI.SourcesNavigationSidebarPanel.prototype._handleDebuggerActiveCallFrameDidChange):
(WI.SourcesNavigationSidebarPanel.prototype._handleDebuggerWaitingToPause):
(WI.SourcesNavigationSidebarPanel.prototype._handleDebuggerObjectDisplayLocationDidChange):
(WI.SourcesNavigationSidebarPanel.prototype._handleDOMBreakpointResolvedStateDidChange):
(WI.SourcesNavigationSidebarPanel.prototype._handleConsoleIssueAdded):
(WI.SourcesNavigationSidebarPanel.prototype._handleConsoleCleared):
(WI.SourcesNavigationSidebarPanel.prototype._handleTimelineCapturingWillStart):
(WI.SourcesNavigationSidebarPanel.prototype._handleTimelineCapturingStopped):
(WI.SourcesNavigationSidebarPanel.prototype._handleCSSStyleSheetAdded):
(WI.SourcesNavigationSidebarPanel.prototype._handleTargetAdded):
(WI.SourcesNavigationSidebarPanel.prototype._handleTargetRemoved):
(WI.SourcesNavigationSidebarPanel.prototype._handleExtraDomainsActivated):
* UserInterface/Views/SourcesNavigationSidebarPanel.css: Added.
(.sidebar > .panel.navigation.sources > .content):
(.sidebar > .panel.navigation.sources > .navigation-bar):
(.sidebar > .panel.navigation.sources > .navigation-bar .debugger-breakpoints):
(.sidebar > .panel.navigation.sources > .navigation-bar .debugger-breakpoints.activated):
(.sidebar > .panel.navigation.sources > .navigation-bar .debugger-pause-resume):
(.sidebar > .panel.navigation.sources > .navigation-bar .debugger-pause-resume.activated):
(.sidebar > .panel.navigation.sources > .content > .warning-banner):
(.sidebar > .panel.navigation.sources > .content > .details-section):
(.sidebar > .panel.navigation.sources > .content > .details-section.paused-reason.collapsed > .header > .options,):
(.sidebar > .panel.navigation.sources > .content > .details-section.collapsed > .content):
(.sidebar > .panel.navigation.sources > .content > .details-section.scripts:not(.collapsed)):
(.sidebar > .panel.navigation.sources > .content > .navigation-bar):
(.sidebar > .panel.navigation.sources > .content > .tree-outline.single-thread):
(.sidebar > .panel.navigation.sources > .content > .tree-outline.single-thread > .item.thread):
(@media (prefers-dark-interface) .sidebar > > .content > .panel.navigation.sources .warning-banner):
* UserInterface/Views/SourcesTabContentView.js: Added.
(WI.SourcesTabContentView):
(WI.SourcesTabContentView.tabInfo):
(WI.SourcesTabContentView.isTabAllowed):
(WI.SourcesTabContentView.prototype.get type):
(WI.SourcesTabContentView.prototype.get supportsSplitContentBrowser):
(WI.SourcesTabContentView.prototype.canShowRepresentedObject):
(WI.SourcesTabContentView.prototype.showDetailsSidebarPanels):
(WI.SourcesTabContentView.prototype.showScopeChainDetailsSidebarPanel):
(WI.SourcesTabContentView.prototype.revealAndSelectBreakpoint):
* UserInterface/Views/CanvasSidebarPanel.js:
(WI.CanvasSidebarPanel):
* UserInterface/Views/DebuggerSidebarPanel.js:
(WI.DebuggerSidebarPanel):
(WI.DebuggerSidebarPanel.prototype._updatePauseReasonSection):
* UserInterface/Views/NavigationSidebarPanel.js:
(WI.NavigationSidebarPanel.prototype.createContentTreeOutline):
(WI.NavigationSidebarPanel.prototype._treeElementAddedOrChanged):
(WI.NavigationSidebarPanel.prototype._checkOutlinesForPendingViewStateCookie):
Rework `createContentTreeOutline` to allow for additional symbols.
Add another symbol to ensure that the `WI.TreeOutline` is not used for cookie restoration.
* UserInterface/Protocol/InspectorFrontendAPI.js:
(InspectorFrontendAPI.showResources):
* UserInterface/Views/ContextMenuUtilities.js:
(WI.appendContextMenuItemsForURL):
* UserInterface/Views/DefaultDashboardView.js:
(WI.DefaultDashboardView.prototype._resourcesItemWasClicked):
* UserInterface/Views/SourceCodeTextEditor.js:
(WI.SourceCodeTextEditor.prototype.textEditorGutterContextMenu):
* UserInterface/Views/TabBrowser.js:
(WI.TabBrowser.prototype.bestTabContentViewForRepresentedObject):
* UserInterface/Base/Main.js:
(WI.contentLoaded):
(WI.showSourcesTab): Added.
(WI.isShowingSourcesTab): Added.
(WI.tabContentViewClassForRepresentedObject):
(WI._debuggerDidPause):
* UserInterface/Views/DebuggerTabContentView.js:
(WI.DebuggerTabContentView.isTabAllowed):
* UserInterface/Views/ResourcesTabContentView.js:
(WI.ResourcesTabContentView.isTabAllowed):
* UserInterface/Base/Setting.js:
* UserInterface/Views/SettingsTabContentView.js:
(WI.SettingsTabContentView.prototype._createExperimentalSettingsView):
* UserInterface/Main.html:
* UserInterface/Images/Sources.svg: Added.
* Localizations/en.lproj/localizedStrings.js:
2019-02-24 Devin Rousso <drousso@apple.com>
Web Inspector: Change the InspectorOverlay to use native rather than canvas
https://bugs.webkit.org/show_bug.cgi?id=105023
<rdar://problem/13443692>
Reviewed by Brian Burg.
* UserInterface/Base/Main.js:
(WI.initializeTarget):
* UserInterface/Protocol/Legacy/10.0/InspectorBackendCommands.js:
* UserInterface/Protocol/Legacy/10.3/InspectorBackendCommands.js:
* UserInterface/Protocol/Legacy/11.0/InspectorBackendCommands.js:
* UserInterface/Protocol/Legacy/11.3/InspectorBackendCommands.js:
* UserInterface/Protocol/Legacy/12.0/InspectorBackendCommands.js:
* UserInterface/Protocol/Legacy/12.2/InspectorBackendCommands.js:
* UserInterface/Protocol/Legacy/8.0/InspectorBackendCommands.js:
* UserInterface/Protocol/Legacy/9.0/InspectorBackendCommands.js:
* UserInterface/Protocol/Legacy/9.3/InspectorBackendCommands.js:
* Versions/Inspector-iOS-10.0.json:
* Versions/Inspector-iOS-10.3.json:
* Versions/Inspector-iOS-11.0.json:
* Versions/Inspector-iOS-11.3.json:
* Versions/Inspector-iOS-12.0.json:
* Versions/Inspector-iOS-12.2.json:
* Versions/Inspector-iOS-8.0.json:
* Versions/Inspector-iOS-9.0.json:
* Versions/Inspector-iOS-9.3.json:
Remove `Debugger.setOverlayMessage` command as it hasn't been used and is no longer supported.
2019-02-24 Devin Rousso <drousso@apple.com>
Web Inspector: provide a way to make searches case sensitive or use a regular expression
https://bugs.webkit.org/show_bug.cgi?id=192527
Reviewed by Joseph Pecoraro.
* UserInterface/Base/SearchUtilities.js: Added.
(WI.SearchUtilities.get defaultSettings):
(WI.SearchUtilities.createSettings):
(WI.SearchUtilities.regExpForString):
(WI.SearchUtilities.createSettingsButton):
(WI.SearchUtilities.createSettingsButton.toggleActive):
* UserInterface/Views/Main.css:
(.search-settings): Added.
(.search-settings > .glyph): Added.
(.search-settings:active > .glyph): Added.
(.search-settings.active > .glyph): Added.
(.search-settings:active.active > .glyph): Added.
Create static utility class for handling settings related to searching/filtering.
* UserInterface/Base/Setting.js:
* UserInterface/Views/SettingsTabContentView.js:
(WI.SettingsTabContentView.prototype._createGeneralSettingsView):
Create default search settings that apply across WebInspector, unless a more specific
setting has been created that overrides it (e.g. the navigation sidebar or Search tab).
* UserInterface/Views/SearchSidebarPanel.js:
(WI.SearchSidebarPanel):
(WI.SearchSidebarPanel.prototype.performSearch.forEachMatch):
(WI.SearchSidebarPanel.prototype.performSearch.resourceCallback):
(WI.SearchSidebarPanel.prototype.performSearch.resourcesCallback):
(WI.SearchSidebarPanel.prototype.performSearch.searchScripts.scriptCallback):
(WI.SearchSidebarPanel.prototype.performSearch.searchScripts):
(WI.SearchSidebarPanel.prototype.performSearch.domSearchResults):
(WI.SearchSidebarPanel.prototype.performSearch.domCallback):
(WI.SearchSidebarPanel.prototype.performSearch):
* UserInterface/Views/SearchSidebarPanel.css:
(.sidebar > .panel.navigation.search > .search-bar):
(.sidebar > .panel.navigation.search > .search-bar > input[type="search"]):
Add a (*) settings "gear" after each `<input type="search">` that shows a contextmenu with
checkboxes for each search setting. Any settings changed for each input take precedence over
the default settings, but will match the corresponding default setting if it's changed.
* UserInterface/Views/SearchResultTreeElement.js:
(WI.SearchResultTreeElement.truncateAndHighlightTitle):
Use the length of the found text, rather than the length of the query.
* UserInterface/Views/DOMTreeElement.js:
(WI.DOMTreeElement.prototype._highlightSearchResults):
* UserInterface/Views/DataGrid.js:
(WI.DataGrid.prototype._updateFilter):
* UserInterface/Views/LogContentView.js:
(WI.LogContentView.prototype.performSearch):
* UserInterface/Views/NetworkTableContentView.js:
(WI.NetworkTableContentView.prototype._urlFilterDidChange):
* UserInterface/Views/ResourceHeadersContentView.js:
(WI.ResourceHeadersContentView.prototype._perfomSearchOnKeyValuePairs):
* UserInterface/Views/ResourceSecurityContentView.js:
(WI.ResourceSecurityContentView.prototype._perfomSearchOnKeyValuePairs):
* UserInterface/Views/SourceCodeTextEditor.js:
(WI.SourceCodeTextEditor.prototype.customPerformSearch.searchResultCallback):
(WI.SourceCodeTextEditor.prototype.customPerformSearch):
* UserInterface/Views/TextEditor.js:
(WI.TextEditor.prototype.performSearch):
Use the default search settings when searching/filtering.
* UserInterface/Views/SearchBar.css:
(.search-bar > input[type="search"]:placeholder-shown::-webkit-search-cancel-button): Added.
Drive-by: prevent the (x) from appearing when no text has been entered.
* Localizations/en.lproj/localizedStrings.js:
* UserInterface/Main.html:
2019-02-24 Devin Rousso <drousso@apple.com>
Web Inspector: make debounce Proxy into its own class
https://bugs.webkit.org/show_bug.cgi?id=194721
Reviewed by Joseph Pecoraro.
The `debounce`/`throttle` functions leveraged a `Proxy` to intercept the function call and
replace it with a "delayed" version. The issue with this is that it set the identifier for
the timer on the function itself, which is shared across all instances of a given class.
When different instances call the same delayed function, they'd clobber eachother's attempts
to delay work.
* UserInterface/Base/Debouncer.js: Added.
(Debouncer):
(Debouncer.prototype.force):
(Debouncer.prototype.delayForTime):
(Debouncer.prototype.delayForFrame):
(Debouncer.prototype.delayForMicrotask):
(Debouncer.prototype.cancel):
(Debouncer.prototype._execute):
* UserInterface/Base/Throttler.js: Added.
(Throttler):
(Throttler.prototype.force):
(Throttler.prototype.fire):
(Throttler.prototype.cancel):
(Throttler.prototype._execute):
* UserInterface/Base/Utilities.js:
* UserInterface/Views/BezierEditor.js:
(WI.BezierEditor):
* UserInterface/Views/ContentBrowser.js:
(WI.ContentBrowser):
(WI.ContentBrowser.prototype._contentViewSelectionPathComponentDidChange):
(WI.ContentBrowser.prototype._contentViewSupplementalRepresentedObjectsDidChange):
(WI.ContentBrowser.prototype._currentContentViewDidChange):
(WI.ContentBrowser.prototype._dispatchCurrentRepresentedObjectsDidChangeEvent): Deleted.
* UserInterface/Views/DOMTreeUpdater.js:
(WI.DOMTreeUpdater):
(WI.DOMTreeUpdater.prototype._nodeAttributeModified):
(WI.DOMTreeUpdater.prototype._nodeInserted):
(WI.DOMTreeUpdater.prototype._nodeRemoved):
* UserInterface/Views/NavigationSidebarPanel.js:
(WI.NavigationSidebarPanel):
(WI.NavigationSidebarPanel.prototype.closed):
(WI.NavigationSidebarPanel.prototype.showEmptyContentPlaceholder):
(WI.NavigationSidebarPanel.prototype.hideEmptyContentPlaceholder):
(WI.NavigationSidebarPanel.prototype.updateFilter):
(WI.NavigationSidebarPanel.prototype.shown):
(WI.NavigationSidebarPanel.prototype._updateContentOverflowShadowVisibility):
(WI.NavigationSidebarPanel.prototype._treeElementAddedOrChanged):
(WI.NavigationSidebarPanel.prototype._treeElementDisclosureDidChange):
* UserInterface/Views/RecordingContentView.js:
(WI.RecordingContentView):
(WI.RecordingContentView.prototype.updateActionIndex):
(WI.RecordingContentView.prototype.hidden):
* UserInterface/Views/ResourceDetailsSidebarPanel.js:
(WI.ResourceDetailsSidebarPanel.prototype._refreshRelatedResourcesSection):
(WI.ResourceDetailsSidebarPanel.prototype._applyResourceEventListeners):
(WI.ResourceDetailsSidebarPanel):
* UserInterface/Views/ShaderProgramContentView.js:
(WI.ShaderProgramContentView):
* UserInterface/Views/SpringEditor.js:
(WI.SpringEditor.prototype._resetPreviewAnimation):
* UserInterface/Views/TreeElement.js:
(WI.TreeElement.prototype.set hidden):
(WI.TreeElement.prototype.didChange):
(WI.TreeElement.prototype._attach):
(WI.TreeElement.prototype._detach):
(WI.TreeElement.prototype.collapse):
(WI.TreeElement.prototype.expand):
(WI.TreeElement.prototype.reveal):
* UserInterface/Views/TreeOutline.js:
(WI.TreeOutline):
(WI.TreeOutline.prototype.registerScrollVirtualizer):
(WI.TreeOutline.prototype.get updateVirtualizedElementsDebouncer): Added.
(WI.TreeOutline.prototype._updateVirtualizedElements): Added.
(WI.TreeOutline.prototype.updateVirtualizedElements.walk): Deleted.
(WI.TreeOutline.prototype.updateVirtualizedElements): Deleted.
* UserInterface/Views/WebSocketContentView.js:
(WI.WebSocketContentView):
(WI.WebSocketContentView.prototype.shown):
(WI.WebSocketContentView.prototype._updateFramesSoon):
(WI.WebSocketContentView.prototype._updateFrames):
* UserInterface/Main.html:
* UserInterface/Test.html:
* .eslintrc:
2019-02-24 Nikita Vasilyev <nvasilyev@apple.com>
Unreviewed, fix indentation.
* UserInterface/Models/CSSStyleDeclaration.js:
(WI.CSSStyleDeclaration.prototype.markModified):
2019-02-23 Keith Miller <keith_miller@apple.com>
Add new mac target numbers
https://bugs.webkit.org/show_bug.cgi?id=194955
Reviewed by Tim Horton.
* Configurations/Base.xcconfig:
* Configurations/DebugRelease.xcconfig:
2019-02-22 Devin Rousso <drousso@apple.com>
Web Inspector: Timelines: add UI for preventing auto-stop
https://bugs.webkit.org/show_bug.cgi?id=194956
Reviewed by Joseph Pecoraro.
Add a checkbox to the navigation area of the Timelines tab that controls whether recordings
automatically stop (e.g. after "load" or a period of inactivity).
* UserInterface/Views/TimelineRecordingContentView.js:
(WI.TimelineRecordingContentView):
(WI.TimelineRecordingContentView.prototype.get navigationItems):
(WI.TimelineRecordingContentView.prototype._handleAutoStopCheckboxCheckedDidChange): Added.
(WI.TimelineRecordingContentView.prototype._handleTimelinesAutoStopSettingChanged): Added.
* UserInterface/Controllers/TimelineManager.js:
(WI.TimelineManager):
(WI.TimelineManager.prototype.capturingStopped):
(WI.TimelineManager.prototype._stopAutoRecordingSoon):
(WI.TimelineManager.prototype._resetAutoRecordingMaxTimeTimeout):
(WI.TimelineManager.prototype._resetAutoRecordingDeadTimeTimeout):
(WI.TimelineManager.prototype._handleTimelinesAutoStopSettingChanged):
* UserInterface/Base/Setting.js:
* Localizations/en.lproj/localizedStrings.js:
2019-02-22 Devin Rousso <drousso@apple.com>
REGRESSION(r?): Web Inspector: Popovers have inset shadows
https://bugs.webkit.org/show_bug.cgi?id=192963
<rdar://problem/46888679>
Reviewed by Brian Burg.
* UserInterface/Views/Popover.js:
(WI.Popover.prototype._drawBackground):
(WI.Popover.prototype._drawBackground.isolate): Added.
* UserInterface/Views/Popover.css:
(.popover):
2019-02-22 Devin Rousso <drousso@apple.com>
Web Inspector: Styles Redesign: clicking CSS property or selector should always select its text
https://bugs.webkit.org/show_bug.cgi?id=180791
<rdar://problem/36038366>
Reviewed by Brian Burg.
* UserInterface/Views/SpreadsheetSelectorField.js:
(WI.SpreadsheetSelectorField):
(WI.SpreadsheetSelectorField.prototype.startEditing):
(WI.SpreadsheetSelectorField.prototype.stopEditing):
(WI.SpreadsheetSelectorField.prototype._handleMouseDown): Added.
(WI.SpreadsheetSelectorField.prototype._handleMouseUp): Added.
(WI.SpreadsheetSelectorField.prototype._handleFocus): Deleted.
* UserInterface/Views/SpreadsheetCSSStyleDeclarationSection.js:
(WI.SpreadsheetCSSStyleDeclarationSection.prototype.initialLayout):
* UserInterface/Views/SpreadsheetCSSStyleDeclarationSection.css:
(.spreadsheet-css-declaration .selector.editing:focus, .spreadsheet-css-declaration .selector > .matched): Added.
(.spreadsheet-css-declaration .selector.spreadsheet-selector-field):
(.spreadsheet-css-declaration .selector:focus, .spreadsheet-css-declaration .selector > .matched): Deleted.
2019-02-22 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Dark Mode: DOM Content Loaded blue marker is too dark
https://bugs.webkit.org/show_bug.cgi?id=194970
<rdar://problem/48330126>
Reviewed by Joseph Pecoraro.
* UserInterface/Views/TimelineRuler.css:
(@media (prefers-color-scheme: dark)):
(.timeline-ruler > .markers > .marker.dom-content-event):
Make the marker lighter for the dark mode.
2019-02-22 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Remove unused Timeline record selection code path
https://bugs.webkit.org/show_bug.cgi?id=194931
Reviewed by Devin Rousso.
* UserInterface/Views/TimelineOverview.js:
(WI.TimelineOverview):
(WI.TimelineOverview.prototype.userSelectedRecord): Deleted.
* UserInterface/Views/TimelineRecordingContentView.js:
(WI.TimelineRecordingContentView):
(WI.TimelineRecordingContentView.prototype.timelineOverviewUserSelectedRecord): Deleted.
* UserInterface/Views/TimelineView.js:
(WI.TimelineView.prototype.userSelectedRecordFromOverview): Deleted.
2019-02-21 Darin Adler <darin@apple.com>
Some refinements for Node and Document
https://bugs.webkit.org/show_bug.cgi?id=194764
Reviewed by Ryosuke Niwa.
* UserInterface/Models/NativeFunctionParameters.js: Removed getOverrideStyle
because this deprecated non-working function is no longer something web authors
should be thinking about or typing.
2019-02-21 Devin Rousso <drousso@apple.com>
Web Inspector: Canvas: recordings with a single frame sometimes missing TreeElement
https://bugs.webkit.org/show_bug.cgi?id=194687
Reviewed by Joseph Pecoraro.
* UserInterface/Views/CanvasSidebarPanel.js:
(WI.CanvasSidebarPanel):
Wait until the entire `Recording` has been processed before setting the selected action.
* UserInterface/Views/CanvasSidebarPanel.css:
(.sidebar > .panel.navigation.canvas.has-recordings > .content > .recording-content):
Drive-by: ensure that the recording `TreeOutline` container element has the full height to
take advantage of for virtualization.
* UserInterface/Views/RecordingStateDetailsSidebarPanel.js:
(WI.RecordingStateDetailsSidebarPanel.prototype.set recording):
Drive-by: clear the `DataGrid` list when changing recordings since we removed all subviews.
2019-02-21 Devin Rousso <drousso@apple.com>
Web Inspector: DOM Debugger: node-specific event breakpoints aren't cleared/recalculated on navigation
https://bugs.webkit.org/show_bug.cgi?id=194874
<rdar://problem/48253415>
Reviewed by Joseph Pecoraro.
* UserInterface/Controllers/DOMManager.js:
(WI.DOMManager.prototype._setDocument):
(WI.DOMManager.prototype.removeBreakpointForEventListener):
2019-02-21 Devin Rousso <drousso@apple.com>
Web Inspector: macOS user agent option should be available in device settings menu
https://bugs.webkit.org/show_bug.cgi?id=194885
<rdar://problem/48259253>
Reviewed by Joseph Pecoraro.
* UserInterface/Base/Main.js:
(WI._handleDeviceSettingsToolbarButtonClicked):
2019-02-20 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: RTL: Scripts Timeline loading indicator has incorrect margins
https://bugs.webkit.org/show_bug.cgi?id=194882
Reviewed by Matt Baker.
* UserInterface/Views/TimelineRecordingContentView.css:
(.content-view.timeline-recording > .content-browser .recording-progress > .status > .indeterminate-progress-spinner):
2019-02-20 Andy Estes <aestes@apple.com>
[Xcode] Add SDKVariant.xcconfig to various Xcode projects
https://bugs.webkit.org/show_bug.cgi?id=194869
Rubber-stamped by Jer Noble.
* WebInspectorUI.xcodeproj/project.pbxproj:
2019-02-19 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Improve ES6 Class instances in Heap Snapshot instances view
https://bugs.webkit.org/show_bug.cgi?id=172848
<rdar://problem/25709212>
Reviewed by Mark Lam.
* UserInterface/Workers/HeapSnapshot/HeapSnapshot.js:
(HeapSnapshot):
Support the new snapshot version. The only thing that changes are the
node flags, and its actually completely compatible with version 1.
(HeapSnapshot.updateCategoriesAndMetadata):
List the count of object type instances in each class category.
(HeapSnapshot.prototype.serializeNode):
Include whether or not the node is an object type.
* UserInterface/Proxies/HeapSnapshotNodeProxy.js:
(WebInspector.HeapSnapshotNodeProxy):
(WebInspector.HeapSnapshotNodeProxy.deserialize):
Add a new Node isObjectType property based on the new data.
* UserInterface/Views/HeapSnapshotClassDataGridNode.js:
(WebInspector.HeapSnapshotClassDataGridNode.prototype.createCellContent):
* UserInterface/Views/HeapSnapshotClusterContentView.js:
(WebInspector.HeapSnapshotClusterContentView.iconStyleClassNameForClassName):
If a class contains 50% or more object type instances then treat it as such
instead of defaulting to native.
* UserInterface/Views/HeapSnapshotDataGridTree.js:
(WebInspector.HeapSnapshotInstancesDataGridTree.prototype.populateTopLevel):
* UserInterface/Views/HeapSnapshotInstanceDataGridNode.js:
(WebInspector.HeapSnapshotInstanceDataGridNode.prototype.createCellContent):
We can be more specific than the default if the individual instance is
known to be an object type.
2019-02-19 Truitt Savell <tsavell@apple.com>
Unreviewed, rolling out r241784.
Broke all OpenSource builds.
Reverted changeset:
"Web Inspector: Improve ES6 Class instances in Heap Snapshot
instances view"
https://bugs.webkit.org/show_bug.cgi?id=172848
https://trac.webkit.org/changeset/241784
2019-02-19 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Improve ES6 Class instances in Heap Snapshot instances view
https://bugs.webkit.org/show_bug.cgi?id=172848
<rdar://problem/25709212>
Reviewed by Mark Lam.
* UserInterface/Workers/HeapSnapshot/HeapSnapshot.js:
(HeapSnapshot):
Support the new snapshot version. The only thing that changes are the
node flags, and its actually completely compatible with version 1.
(HeapSnapshot.updateCategoriesAndMetadata):
List the count of object type instances in each class category.
(HeapSnapshot.prototype.serializeNode):
Include whether or not the node is an object type.
* UserInterface/Proxies/HeapSnapshotNodeProxy.js:
(WebInspector.HeapSnapshotNodeProxy):
(WebInspector.HeapSnapshotNodeProxy.deserialize):
Add a new Node isObjectType property based on the new data.
* UserInterface/Views/HeapSnapshotClassDataGridNode.js:
(WebInspector.HeapSnapshotClassDataGridNode.prototype.createCellContent):
* UserInterface/Views/HeapSnapshotClusterContentView.js:
(WebInspector.HeapSnapshotClusterContentView.iconStyleClassNameForClassName):
If a class contains 50% or more object type instances then treat it as such
instead of defaulting to native.
* UserInterface/Views/HeapSnapshotDataGridTree.js:
(WebInspector.HeapSnapshotInstancesDataGridTree.prototype.populateTopLevel):
* UserInterface/Views/HeapSnapshotInstanceDataGridNode.js:
(WebInspector.HeapSnapshotInstanceDataGridNode.prototype.createCellContent):
We can be more specific than the default if the individual instance is
known to be an object type.
2019-02-19 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Scripts timeline on-going-recording text looks poor in dark mode
https://bugs.webkit.org/show_bug.cgi?id=194809
Reviewed by Matt Baker.
* UserInterface/Views/TimelineRecordingContentView.css:
(.content-view.timeline-recording > .content-browser .recording-progress > .status):
2019-02-18 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Provide a way to avoid a recording auto-stop on reload
https://bugs.webkit.org/show_bug.cgi?id=194793
Reviewed by Matt Baker.
* Localizations/en.lproj/localizedStrings.js:
New tooltip.
* UserInterface/Controllers/TimelineManager.js:
(WI.TimelineManager.prototype.willAutoStop):
(WI.TimelineManager.prototype.relaxAutoStop):
Getter and relaxer for auto stop behavior.
* UserInterface/Views/AuditNavigationSidebarPanel.js:
(WI.AuditNavigationSidebarPanel.prototype.showDefaultContentView):
Drive-by fix some whitespace issues.
* UserInterface/Views/TimelineTabContentView.js:
(WI.TimelineTabContentView):
(WI.TimelineTabContentView.prototype._showRecordButton):
(WI.TimelineTabContentView.prototype._showContinueButton):
(WI.TimelineTabContentView.prototype._updateNavigationBarButtons):
(WI.TimelineTabContentView.prototype._capturingStartedOrStopped):
(WI.TimelineTabContentView.prototype._globalModifierKeysDidChange):
(WI.TimelineTabContentView.prototype._continueButtonClicked):
Show a "continue" like icon instead of the usual stop button when
a recording would auto-stop and the alt key is down. When pressed
this button will relax the auto-stop and continue the recording
until explicitly stopped by the user.
2019-02-18 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Fix a typo causing assertions in ConsoleManager
https://bugs.webkit.org/show_bug.cgi?id=194792
Reviewed by Matt Baker.
* UserInterface/Controllers/ConsoleManager.js:
(WI.ConsoleManager.prototype.initializeLogChannels):
Extra comma produced an undefined value in the list.
2019-02-18 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Styles: typing ";" shouldn't focus on the next property when there's open parenthesis or comment
https://bugs.webkit.org/show_bug.cgi?id=194789
Reviewed by Matt Baker.
* UserInterface/Views/SpreadsheetStyleProperty.js:
(WI.SpreadsheetStyleProperty.prototype._handleValueBeforeInput):
2019-02-18 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Better categorize CPU usage per-thread / worker
https://bugs.webkit.org/show_bug.cgi?id=194564
Reviewed by Devin Rousso.
* UserInterface/Controllers/TimelineManager.js:
(WI.TimelineManager.prototype.cpuProfilerTrackingUpdated):
* UserInterface/Models/CPUTimelineRecord.js:
(WI.CPUTimelineRecord.prototype.get mainThreadUsage):
(WI.CPUTimelineRecord.prototype.get webkitThreadUsage):
(WI.CPUTimelineRecord.prototype.get workerThreadUsage):
(WI.CPUTimelineRecord.prototype.get unknownThreadUsage):
Build a better record from the protocol events.
2019-02-18 Devin Rousso <drousso@apple.com>
Web Inspector: duplicate left double quotation mark (\u201C) in 'Unable to show certificate for “%s“.'
https://bugs.webkit.org/show_bug.cgi?id=194782
<rdar://problem/48159683>
Reviewed by Joseph Pecoraro.
* UserInterface/Models/Resource.js:
(WI.Resource.prototype.async showCertificate):
* Localizations/en.lproj/localizedStrings.js:
2019-02-18 Eric Carlson <eric.carlson@apple.com>
Add MSE logging configuration
https://bugs.webkit.org/show_bug.cgi?id=194719
<rdar://problem/48122151>
Reviewed by Joseph Pecoraro.
* Localizations/en.lproj/localizedStrings.js:
* UserInterface/Models/ConsoleMessage.js:
* UserInterface/Models/IssueMessage.js:
(WI.IssueMessage):
* UserInterface/Views/LogContentView.js:
(WI.LogContentView):
* UserInterface/Views/SettingsTabContentView.js:
(WI.SettingsTabContentView.prototype._createGeneralSettingsView):
2019-02-17 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Move CSS completion logic from SpreadsheetTextField to SpreadsheetStyleProperty
https://bugs.webkit.org/show_bug.cgi?id=194724
Reviewed by Devin Rousso.
Move CSS value completion logic from SpreadsheetTextField, a generic text field,
to SpreadsheetStyleProperty.
* UserInterface/Views/SpreadsheetStyleProperty.js:
(WI.SpreadsheetStyleProperty.prototype._nameCompletionDataProvider):
(WI.SpreadsheetStyleProperty.prototype._valueCompletionDataProvider):
* UserInterface/Views/SpreadsheetTextField.js:
(WI.SpreadsheetTextField):
(WI.SpreadsheetTextField.prototype.completionSuggestionsSelectedCompletion):
(WI.SpreadsheetTextField.prototype.completionSuggestionsClickedCompletion):
(WI.SpreadsheetTextField.prototype._updateCompletions):
(WI.SpreadsheetTextField.prototype._showSuggestionsView):
(WI.SpreadsheetTextField.prototype._getCompletionPrefix): Deleted.
2019-02-17 Matt Baker <mattbaker@apple.com>
Web Inspector: Frontend performance is very slow reloading theverge.com - 50% of time in TreeOutline _indexOfTreeElement
https://bugs.webkit.org/show_bug.cgi?id=193605
<rdar://problem/47403986>
Reviewed by Devin Rousso.
SelectionController should track an unordered Set of represented objects
instead of an ordered set of indexes. This eliminates the costly and
error-prone updates needed to keep the selected indexes in sync as items
are added and removed from TreeOutline (and Table, to a far lesser extent).
The SelectionController interface is largely the same. Class and delegate
methods have been renamed to reflect the change from indexes to objects.
SelectionController tracks selected items in selection order. For the
operations that rely on objects being in insertion order, the controller
uses a comparator function provided at construction time.
* UserInterface/Base/IndexSet.js: Removed.
No longer used. SelectionController now uses a plain Set.
* UserInterface/Base/Utilities.js:
(value):
(get return):
Add utilities previously supplied by IndexSet and used by SelectionController.
* UserInterface/Controllers/SelectionController.js:
(WI.SelectionController):
(WI.SelectionController.prototype.get lastSelectedItem):
(WI.SelectionController.prototype.get selectedItems):
(WI.SelectionController.prototype.set allowsMultipleSelection):
(WI.SelectionController.prototype.hasSelectedItem):
(WI.SelectionController.prototype.selectItem):
(WI.SelectionController.prototype.deselectItem):
(WI.SelectionController.prototype.selectAll):
(WI.SelectionController.prototype.deselectAll):
(WI.SelectionController.prototype.removeSelectedItems):
(WI.SelectionController.prototype.reset):
(WI.SelectionController.prototype.didRemoveItems):
(WI.SelectionController.prototype.handleKeyDown):
(WI.SelectionController.prototype.handleItemMouseDown):
(WI.SelectionController.prototype._deselectAllAndSelect):
(WI.SelectionController.prototype._selectItemsFromArrowKey):
(WI.SelectionController.prototype._firstSelectableItem):
(WI.SelectionController.prototype._lastSelectableItem):
(WI.SelectionController.prototype._previousSelectableItem):
(WI.SelectionController.prototype._nextSelectableItem):
(WI.SelectionController.prototype._updateSelectedItems):
(WI.SelectionController.prototype._addRange):
(WI.SelectionController.prototype._deleteRange):
(WI.SelectionController.prototype.get numberOfItems): Deleted.
(WI.SelectionController.prototype.didInsertItem): Deleted.
(WI.SelectionController.prototype.handleItemMouseDown.normalizeRange): Deleted.
(WI.SelectionController.prototype._nextSelectableIndex): Deleted.
(WI.SelectionController.prototype._previousSelectableIndex): Deleted.
* UserInterface/Main.html:
* UserInterface/Test.html:
Remove IndexSet.
* UserInterface/Views/CookieStorageContentView.js:
(WI.CookieStorageContentView.prototype.tableIndexForRepresentedObject):
(WI.CookieStorageContentView.prototype.tableRepresentedObjectForIndex):
* UserInterface/Views/DOMTreeOutline.js:
(WI.DOMTreeOutline.prototype.objectForSelection):
* UserInterface/Views/NetworkTableContentView.js:
(WI.NetworkTableContentView.prototype.tableIndexForRepresentedObject):
(WI.NetworkTableContentView.prototype.tableRepresentedObjectForIndex):
* UserInterface/Views/Table.js:
(WI.Table):
(WI.Table.prototype.get selectedRow):
(WI.Table.prototype.get selectedRows):
(WI.Table.prototype.isRowSelected):
(WI.Table.prototype.selectRow):
(WI.Table.prototype.deselectRow):
(WI.Table.prototype.removeRow):
(WI.Table.prototype.removeSelectedRows):
(WI.Table.prototype.selectionControllerSelectionDidChange):
(WI.Table.prototype.selectionControllerFirstSelectableItem):
(WI.Table.prototype.selectionControllerLastSelectableItem):
(WI.Table.prototype.selectionControllerPreviousSelectableItem):
(WI.Table.prototype.selectionControllerNextSelectableItem):
(WI.Table.prototype._handleMouseDown):
(WI.Table.prototype._removeRows):
(WI.Table.prototype._indexForRepresentedObject):
(WI.Table.prototype._representedObjectForIndex):
(WI.Table.prototype.selectionControllerNumberOfItems): Deleted.
(WI.Table.prototype.selectionControllerNextSelectableIndex): Deleted.
(WI.Table.prototype.selectionControllerPreviousSelectableIndex): Deleted.
(WI.Table.prototype._toggleSelectedRowStyle): Deleted.
* UserInterface/Views/TreeOutline.js:
(WI.TreeOutline.compareSiblings):
(WI.TreeOutline):
(WI.TreeOutline.prototype.get selectedTreeElement):
(WI.TreeOutline.prototype.set selectedTreeElement):
(WI.TreeOutline.prototype.get selectedTreeElements):
(WI.TreeOutline.prototype.removeChildAtIndex):
(WI.TreeOutline.prototype.removeChildren):
(WI.TreeOutline.prototype._rememberTreeElement):
(WI.TreeOutline.prototype.getCachedTreeElement):
(WI.TreeOutline.prototype.selectionControllerSelectionDidChange):
(WI.TreeOutline.prototype.selectionControllerFirstSelectableItem):
(WI.TreeOutline.prototype.selectionControllerLastSelectableItem):
(WI.TreeOutline.prototype.selectionControllerPreviousSelectableItem):
(WI.TreeOutline.prototype.selectionControllerNextSelectableItem):
(WI.TreeOutline.prototype.objectForSelection):
(WI.TreeOutline._generateStyleRulesIfNeeded):
(WI.TreeOutline.prototype.selectionControllerNextSelectableIndex): Deleted.
(WI.TreeOutline.prototype.selectionControllerPreviousSelectableIndex): Deleted.
(WI.TreeOutline._generateStyleRulesIfNeeded._indexesForSubtree.numberOfElementsInSubtree): Deleted.
2019-02-15 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Logging a native function to the console, such as `alert`, produces unhandled rejection
https://bugs.webkit.org/show_bug.cgi?id=194740
Reviewed by Matt Baker.
* UserInterface/Protocol/RemoteObject.js:
(WI.RemoteObject.prototype.findFunctionSourceCodeLocation):
In case of a protocol error (common when attempting to get a location
for a native function) produce the NoSourceFound result.
* UserInterface/Views/ConsoleMessageView.js:
(WI.ConsoleMessageView.prototype._appendLocationLink):
Simplify with an arrow function.
2019-02-15 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Some timelines views work, show Legacy CPU timeline
https://bugs.webkit.org/show_bug.cgi?id=194738
Reviewed by Yusuke Suzuki.
* UserInterface/Views/ContentView.js:
(WI.ContentView.createFromRepresentedObject):
2019-02-15 Aaron Chu <aaron_chu@apple.com>
AX: Audit tab should have built-in accessibility tests.
https://bugs.webkit.org/show_bug.cgi?id=194005
<rdar://problem/47657503>
Updated built-in accessibility audits test suite.
Reviewed by Devin Rousso.
* Localizations/en.lproj/localizedStrings.js:
* UserInterface/Controllers/AuditManager.js:
(WI.AuditManager.prototype.addDefaultTestsIfNeeded):
(WI.AuditManager):
(WI.AuditManager.prototype.addDefaultTestsIfNeeded.): Deleted.
2019-02-15 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Dark Mode: commas in CSS selectors are too dim
https://bugs.webkit.org/show_bug.cgi?id=194729
<rdar://problem/48128592>
Reviewed by Matt Baker.
Use `--text-color-tertiary` for both light and dark modes.
* UserInterface/Views/SpreadsheetCSSStyleDeclarationEditor.css:
(.spreadsheet-style-declaration-editor):
* UserInterface/Views/SpreadsheetCSSStyleDeclarationSection.css:
(.spreadsheet-css-declaration):
(.spreadsheet-css-declaration .selector > span):
(@media (prefers-color-scheme: dark)):
* UserInterface/Views/Variables.css:
(:root):
2019-02-15 Nikita Vasilyev <nvasilyev@apple.com>
Unreviewed, fix intentation.
* UserInterface/Views/SpreadsheetRulesStyleDetailsPanel.css:
(.sidebar > .panel.details.css-style .rules):
(.sidebar > .panel.details.css-style > .content > .rules .section-header):
2019-02-15 Dean Jackson <dino@apple.com>
Allow emulation of user gestures from Web Inspector console
https://bugs.webkit.org/show_bug.cgi?id=194725
<rdar://problem/48126604>
Reviewed by Joseph Pecoraro and Devin Rousso.
Add some UI for emulating a User Gesture when evaluating in the console. This
allows the developer to do things that would otherwise require actual interaction
with the page, such as start playback of media on iOS.
* Localizations/en.lproj/localizedStrings.js:
* UserInterface/Base/Setting.js: Add a new setting for this option.
* UserInterface/Controllers/JavaScriptLogViewController.js:
(WI.JavaScriptLogViewController.prototype.consolePromptTextCommitted):
* UserInterface/Controllers/RuntimeManager.js: Call evaluate with this new option.
(WI.RuntimeManager.prototype.evaluateInInspectedWindow):
* UserInterface/Views/LogContentView.js: Add a new checkbox in the upper bar
that allows the user to toggle the setting.
(WI.LogContentView):
(WI.LogContentView.prototype.get navigationItems):
(WI.LogContentView.prototype._handleEmulateInUserGestureSettingChanged):
* UserInterface/Views/NetworkTableContentView.js: Two drive-by typo fixes :)
(WI.NetworkTableContentView): perserve -> preserve
(WI.NetworkTableContentView.prototype.get navigationItems): checkboxs -> checkboxes
2019-02-15 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Styles: valid values in style attributes are reported as unsupported property values
https://bugs.webkit.org/show_bug.cgi?id=194619
<rdar://problem/47917373>
Reviewed by Devin Rousso.
Payload of inline styles may contain `range` that doesn't match
the actual text of the payload - it has an extra empty line at the end.
Mismatching ranges caused data corruption.
* UserInterface/Models/DOMNodeStyles.js:
(WI.DOMNodeStyles.prototype._parseStylePropertyPayload):
2019-02-15 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: remove unused parameter in _parseStylePropertyPayload
https://bugs.webkit.org/show_bug.cgi?id=194642
Reviewed by Devin Rousso.
* UserInterface/Models/DOMNodeStyles.js:
(WI.DOMNodeStyles.prototype._parseStyleDeclarationPayload):
The `styleText` parameter was never used
2019-02-15 Devin Rousso <drousso@apple.com>
Web Inspector: Canvas: all actions after an offscreen path modification are marked as offscreen path errors
https://bugs.webkit.org/show_bug.cgi?id=194684
Reviewed by Joseph Pecoraro.
* UserInterface/Models/RecordingAction.js:
(WI.RecordingAction.prototype.process):
2019-02-15 Devin Rousso <drousso@apple.com>
Web Inspector: Canvas: taking a second recording doesn't select the Initial State by default
https://bugs.webkit.org/show_bug.cgi?id=194685
Reviewed by Matt Baker.
* UserInterface/Views/CanvasSidebarPanel.js:
(WI.CanvasSidebarPanel.prototype._recordingChanged):
2019-02-14 Commit Queue <commit-queue@webkit.org>
Unreviewed, rolling out r241497.
https://bugs.webkit.org/show_bug.cgi?id=194676
New test times out (Requested by NVI on #webkit).
Reverted changeset:
"Web Inspector: Styles: valid values in style attributes are
reported as unsupported property values"
https://bugs.webkit.org/show_bug.cgi?id=194619
https://trac.webkit.org/changeset/241497
2019-02-13 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Styles: valid values in style attributes are reported as unsupported property values
https://bugs.webkit.org/show_bug.cgi?id=194619
<rdar://problem/47917373>
Reviewed by Devin Rousso.
Payload of inline styles may contain `range` that doesn't match
the actual text of the payload - it has an extra empty line at the end.
Mismatching ranges caused data corruption.
* UserInterface/Models/DOMNodeStyles.js:
(WI.DOMNodeStyles.prototype._parseStylePropertyPayload):
2019-02-13 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Update combined and minified copyright header for 2018-2019
https://bugs.webkit.org/show_bug.cgi?id=194635
Reviewed by Devin Rousso.
* Scripts/copy-user-interface-resources.pl:
2019-02-13 Chris Dumez <cdumez@apple.com>
Unreviewed, update localizable strings.
* Localizations/en.lproj/localizedStrings.js:
2019-02-12 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Experimental setting for CPU Usage Timeline improvements
https://bugs.webkit.org/show_bug.cgi?id=194556
Reviewed by Matt Baker.
* UserInterface/Main.html:
* UserInterface/Views/LegacyCPUTimelineView.css: Added.
* UserInterface/Views/LegacyCPUTimelineView.js: Added.
Copy of CPUTimelineView.js/css to be used when the setting is not set.
* UserInterface/Views/ContentView.js:
(WI.ContentView.createFromRepresentedObject):
ContentView to create based on the setting.
* UserInterface/Base/Setting.js:
* UserInterface/Views/SettingsTabContentView.js:
(WI.SettingsTabContentView.prototype._createExperimentalSettingsView):
Experimental switch.
2019-02-12 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Timeline.prototype.recordsInTimeRange uses a property most records do not have
https://bugs.webkit.org/show_bug.cgi?id=194549
Reviewed by Devin Rousso.
* UserInterface/Models/Timeline.js:
(WI.Timeline.prototype.recordsInTimeRange):
2019-02-12 Devin Rousso <drousso@apple.com>
Web Inspector: Timelines: clicking on an empty space in the overview should deselect any selected record bar
https://bugs.webkit.org/show_bug.cgi?id=194365
<rdar://problem/47868426>
Reviewed by Joseph Pecoraro.
* UserInterface/Views/TimelineRecordBar.js:
(WI.TimelineRecordBar.prototype._handleClick):
Mark the "click" event so that later listeners know it was handled by `WI.TimelineRecordBar`.
* UserInterface/Views/TimelineOverview.js:
(WI.TimelineOverview):
(WI.TimelineOverview.prototype._instrumentAdded):
(WI.TimelineOverview.prototype._instrumentRemoved):
(WI.TimelineOverview.prototype._handleGraphsContainerClick): Added.
(WI.TimelineOverview.prototype._handleOverviewGraphRecordSelected): Added.
(WI.TimelineOverview.prototype._recordSelected):
Listen for "click" on the graph container and deselect all records when fired, unless the
click was marked by a `WI.TimelineRecordBar`.
* UserInterface/Views/TimelineRecordingContentView.js:
(WI.TimelineRecordingContentView.prototype._recordSelected):
Ensure that all `WI.TimelineView` update their selected record whenever it changes for any
other `WI.TimelineView` (or if there is no selected record).
* UserInterface/Views/TimelineOverviewGraph.js:
(WI.TimelineOverviewGraph.prototype.didLayoutSubtree): Added.
Drive-by: since `WI.TimelineRecordBar` are reused when combining, we need to re-determine
which one holds the currently selected record.
2019-02-12 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Remove unused maxUsage in CPUTimelineView
https://bugs.webkit.org/show_bug.cgi?id=194526
Reviewed by Devin Rousso.
* UserInterface/Views/CPUTimelineView.js:
(WI.CPUTimelineView):
(WI.CPUTimelineView.prototype.shown):
2019-02-11 Devin Rousso <drousso@apple.com>
Web Inspector: add context menu items to copy a resource's HTTP request/response data
https://bugs.webkit.org/show_bug.cgi?id=194261
<rdar://problem/21693696>
Reviewed by Joseph Pecoraro.
* UserInterface/Models/Resource.js:
(WI.Resource.prototype.stringifyHTTPRequest): Added.
(WI.Resource.prototype.stringifyHTTPResponse): Added.
Don't include the request/response data, as that can be very large, and can easily be
accessed by actually selecting the resource in the Resources/Network tab.
* UserInterface/Views/ContextMenuUtilities.js:
(WI.appendContextMenuItemsForSourceCode):
* Localizations/en.lproj/localizedStrings.js:
2019-02-08 Devin Rousso <drousso@apple.com>
Web Inspector: Audit: show keyboard shortcut in export tooltip
https://bugs.webkit.org/show_bug.cgi?id=194454
Reviewed by Matt Baker.
* UserInterface/Views/AuditTestContentView.js:
(WI.AuditTestContentView):
(WI.AuditTestContentView.prototype.get saveData):
(WI.AuditTestContentView.prototype._exportResult): Added.
(WI.AuditTestContentView.prototype._handleExportButtonNavigationItemClicked):
(WI.AuditTestContentView.prototype._exportAudit): Deleted.
* Localizations/en.lproj/localizedStrings.js:
2019-02-08 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Styles: easier way to select a single line
https://bugs.webkit.org/show_bug.cgi?id=193305
Reviewed by Devin Rousso.
Start property selection after mousedown when mouse cursor moves 8px,
which is ~1.5 times the width of a text character in the style editor.
* UserInterface/Views/SpreadsheetCSSStyleDeclarationSection.js:
(WI.SpreadsheetCSSStyleDeclarationSection):
(WI.SpreadsheetCSSStyleDeclarationSection.prototype._handleMouseDown):
(WI.SpreadsheetCSSStyleDeclarationSection.prototype._handleWindowMouseMove): Added.
(WI.SpreadsheetCSSStyleDeclarationSection.prototype._stopSelection):
2019-02-08 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Debugger Popover should work with value in template string `${identifier}`
https://bugs.webkit.org/show_bug.cgi?id=194459
<rdar://problem/47932564>
Reviewed by Devin Rousso.
* UserInterface/Controllers/CodeMirrorTokenTrackingController.js:
(WI.CodeMirrorTokenTrackingController.prototype._processJavaScriptExpression):
When walking backwards to get the full expression we were walking outside
of the interpolation group `outside ${inside}`. Stop walking backwards once
we cross the boundary.
2019-02-08 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Import / Export Heap Snapshots
https://bugs.webkit.org/show_bug.cgi?id=194448
<rdar://problem/47928093>
Reviewed by Devin Rousso.
* Localizations/en.lproj/localizedStrings.js:
New strings.
* UserInterface/Proxies/HeapSnapshotProxy.js:
(WI.HeapSnapshotProxy):
(WI.HeapSnapshotProxy.deserialize):
(WI.HeapSnapshotProxy.prototype.get imported):
(WI.HeapSnapshotProxy.prototype.get snapshotStringData):
(WI.HeapSnapshotProxy.prototype.set snapshotStringData):
Include an "imported" state on the HeapSnapshot and allow for
stashing the snapshotStringData on the main thread side.
* UserInterface/Proxies/HeapSnapshotWorkerProxy.js:
(WI.HeapSnapshotWorkerProxy.prototype.createImportedSnapshot):
* UserInterface/Workers/HeapSnapshot/HeapSnapshotWorker.js:
(HeapSnapshotWorker.prototype.clearSnapshots):
(HeapSnapshotWorker.prototype.createSnapshot):
Provide a specialized way to create an imported HeapSnapshot.
Track imported snapshots separately since they won't want to
be searched for live/dead objects due to active recording GCs.
* UserInterface/Workers/HeapSnapshot/HeapSnapshot.js:
(HeapSnapshot):
(HeapSnapshot.updateCategoriesAndMetadata):
(HeapSnapshot.allocationBucketCounts):
(HeapSnapshot.instancesWithClassName):
(HeapSnapshot.prototype.nodeWithIdentifier):
(HeapSnapshot.prototype.dominatedNodes):
(HeapSnapshot.prototype.retainedNodes):
(HeapSnapshot.prototype.retainers):
(HeapSnapshot.prototype.updateDeadNodesAndGatherCollectionData):
(HeapSnapshot.prototype.serialize):
(HeapSnapshot.prototype.serializeNode):
(HeapSnapshot.prototype._buildPostOrderIndexes):
(HeapSnapshot.prototype._buildDominatorIndexes):
(HeapSnapshot.prototype._buildRetainedSizes):
(HeapSnapshot.prototype._gcRootPathes.visitNode):
(HeapSnapshot.prototype._gcRootPathes):
Construct a HeapSnapshot knowinng whether or not it is imported.
Imported snapshots may be the "GCDebugging" snapshot type which
differs from "Inspector" by the number of node fields. So keep
the node field count a member instead of a global constant
in order to work with both snapshot types.
* UserInterface/Models/HeapAllocationsInstrument.js:
(WI.HeapAllocationsInstrument.prototype._takeHeapSnapshot):
* UserInterface/Protocol/ConsoleObserver.js:
(WI.ConsoleObserver.prototype.heapSnapshot):
* UserInterface/Protocol/HeapObserver.js:
(WI.HeapObserver.prototype.trackingStart):
(WI.HeapObserver.prototype.trackingComplete):
Stash the original string JSON data on the main thread side
where we already have the data.
* UserInterface/Views/HeapAllocationsTimelineOverviewGraph.js:
(WI.HeapAllocationsTimelineOverviewGraph.prototype.layout):
Don't show [S] icons for imported snapshots with no timestamp.
* UserInterface/Views/HeapAllocationsTimelineView.js:
(WI.HeapAllocationsTimelineView):
(WI.HeapAllocationsTimelineView.prototype.get navigationItems):
(WI.HeapAllocationsTimelineView.prototype._importButtonNavigationItemClicked):
(WI.HeapAllocationsTimelineView.prototype._takeHeapSnapshotClicked):
Import button that just creates a new snapshot.
* UserInterface/Views/HeapSnapshotContentView.js:
(WI.HeapSnapshotContentView):
(WI.HeapSnapshotContentView.prototype.get navigationItems):
(WI.HeapSnapshotContentView.prototype.get supportsSave):
(WI.HeapSnapshotContentView.prototype.get saveData):
(WI.HeapSnapshotContentView.prototype._exportSnapshot):
Export button that saves the original data.
* UserInterface/Views/TimelineTabContentView.js:
(WI.TimelineTabContentView.displayNameForRecord):
Specialized display string for imported snapshots.
2019-02-08 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Add Debug setting to show Internal Object Classes in Heap Snapshot
https://bugs.webkit.org/show_bug.cgi?id=194445
Reviewed by Devin Rousso.
* UserInterface/Base/Setting.js:
* UserInterface/Views/HeapSnapshotDataGridTree.js:
(WI.HeapSnapshotInstancesDataGridTree.prototype.populateTopLevel):
* UserInterface/Views/SettingsTabContentView.js:
(WI.SettingsTabContentView.prototype._createDebugSettingsView):
2019-02-08 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Styles: close unbalanced quotes and parenthesis when editing values
https://bugs.webkit.org/show_bug.cgi?id=182523
<rdar://problem/37260209>
Reviewed by Devin Rousso.
Close CSS comments, append missing closed quotes and right parenthesis.
* UserInterface/Models/CSSCompletions.js:
(WI.CSSCompletions.completeUnbalancedValue):
* UserInterface/Models/CSSProperty.js:
(WI.CSSProperty.prototype.set rawValue):
2019-02-07 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Make Timeline markers light gray instead of black in dark mode
https://bugs.webkit.org/show_bug.cgi?id=194417
Reviewed by Devin Rousso.
* UserInterface/Views/RenderingFrameTimelineOverviewGraph.css:
(.timeline-overview-graph.rendering-frame > .divider):
* UserInterface/Views/TimelineRuler.css:
(.timeline-ruler > .markers > .divider):
2019-02-06 Devin Rousso <drousso@apple.com>
Web Inspector: DOM: don't send the entire function string with each event listener
https://bugs.webkit.org/show_bug.cgi?id=194293
<rdar://problem/47822809>
Reviewed by Joseph Pecoraro.
* UserInterface/Views/EventListenerSectionGroup.js:
(WI.EventListenerSectionGroup.prototype._functionTextOrLink):
2019-02-06 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: "Worker not found" uncaught protocol errors
https://bugs.webkit.org/show_bug.cgi?id=194319
Reviewed by Matt Baker.
* UserInterface/Base/Main.js:
(WI.terminatePageTarget):
Remove Worker targets associated with the Page on navigation.
Eventually we will have to associate Workers with their parent
frame, but for now a transition can only happen at the Page
level, so we can eliminate all workers on the page.
* UserInterface/Controllers/WorkerManager.js:
(WI.WorkerManager.prototype.workerCreated):
* UserInterface/Protocol/Connection.js:
(InspectorBackend.WorkerConnection.sendMessageToBackend):
Allow any WorkerAgent domain message to fail silently. This can
happen if a Worker is created and destroyed before the frontend
hears about it and sends messages to the backend for that Worker.
2019-02-05 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Styles: PropertiesChanged shouldn't fire when old and new text are both empty
https://bugs.webkit.org/show_bug.cgi?id=194318
Reviewed by Devin Rousso.
Previously, WI.CSSStyleDeclaration.Event.PropertiesChanged fired when
old text and new text were empty strings.
* UserInterface/Models/CSSStyleDeclaration.js:
2019-02-05 Devin Rousso <drousso@apple.com>
Web Inspector: Lots of time spent updating related resources in ResourceDetailsSidebar when loading a page with lots of resources
https://bugs.webkit.org/show_bug.cgi?id=159577
<rdar://problem/27251461>
Reviewed by Joseph Pecoraro.
* UserInterface/Views/ResourceDetailsSidebarPanel.js:
(WI.ResourceDetailsSidebarPanel.prototype._refreshRelatedResourcesSection):
(WI.ResourceDetailsSidebarPanel.prototype._applyResourceEventListeners):
2019-02-05 Matt Baker <mattbaker@apple.com>
Web Inspector: Elements tab: selection is broken after deleting the selected node
https://bugs.webkit.org/show_bug.cgi?id=194300
<rdar://problem/47829275>
Reviewed by Devin Rousso.
Deleting a TreeElement can cause an IndexSet including indexes
outside the deleted range to be passed to SelectionController,
corrupting the internal selection state.
* UserInterface/Views/TreeOutline.js:
(WI.TreeOutline.prototype._indexesForSubtree.numberOfElementsInSubtree): Added.
(WI.TreeOutline.prototype._indexesForSubtree):
Finding the last (rightmost leaf) TreeElement in the subtree used
TreeElement.prototype.traverseNextElement to do a depth first traversal.
This method did not stay within the subtree rooted at `treeElement`.
2019-02-05 Matt Baker <mattbaker@apple.com>
Web Inspector: REGRESSION (r240947): Resources tab: can't select main frame after refreshing page
https://bugs.webkit.org/show_bug.cgi?id=194254
<rdar://problem/47805023>
Reviewed by Devin Rousso.
* UserInterface/Views/TreeOutline.js:
(WI.TreeOutline.prototype.selectionControllerSelectionDidChange):
TreeOutline should always call the TreeElement `select` and `deselect`
methods while processing selection changes. Having notifications
suppressed by `this._suppressNextSelectionDidChangeEvent` should only
affect the dispatching of TreeOutline events.
2019-02-05 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Styles: remove harmless "property was unlocked" asserts
https://bugs.webkit.org/show_bug.cgi?id=194262
Reviewed by Matt Baker.
* UserInterface/Views/SpreadsheetStyleProperty.js:
(WI.SpreadsheetStyleProperty.prototype.remove):
(WI.SpreadsheetStyleProperty.prototype.update):
(WI.SpreadsheetStyleProperty.prototype._handleNameChange):
(WI.SpreadsheetStyleProperty.prototype._handleValueChange):
2019-02-04 Devin Rousso <drousso@apple.com>
Web Inspector: Uncaught Exception: undefined is not an object (evaluating 'classes.includes')
https://bugs.webkit.org/show_bug.cgi?id=194280
<rdar://problem/47811159>
Reviewed by Matt Baker.
* UserInterface/Views/GeneralStyleDetailsSidebarPanel.js:
(WI.GeneralStyleDetailsSidebarPanel.prototype._populateClassToggles):
Add a fallback value in case the `class` attribute isn't specified for the selected node.
2019-02-04 Devin Rousso <drousso@apple.com>
Web Inspector: Resources: missing resource data for document on reload
https://bugs.webkit.org/show_bug.cgi?id=194243
<rdar://problem/47559021>
Reviewed by Joseph Pecoraro.
* UserInterface/Views/ResourceDetailsSidebarPanel.js:
(WI.ResourceDetailsSidebarPanel.prototype.set resource):
(WI.ResourceDetailsSidebarPanel.prototype._applyResourceEventListeners):
* UserInterface/Base/Object.js:
(WI.Object.removeEventListener):
Drive-by: there's no need to iterate over the entire table to check if `thisObject` exists,
as that is handled for us by `ListMultimap`, which we later call anyways.
2019-02-04 Matt Baker <mattbaker@apple.com>
Web Inspector: REGRESSION: Resources: WI.TreeOutline assertions when refreshing the page
https://bugs.webkit.org/show_bug.cgi?id=194242
<rdar://problem/47802027>
Reviewed by Joseph Pecoraro.
* UserInterface/Views/FolderizedTreeElement.js:
(WI.FolderizedTreeElement.prototype.removeChildren):
FolderTreeElements are removed by the base class call to removeChildren.
Calling `removeChildren` for detached TreeElements is unnecessary.
2019-02-04 Matt Baker <mattbaker@apple.com>
Web Inspector: REGRESSION: clicking a selected call frame doesn't re-scroll
https://bugs.webkit.org/show_bug.cgi?id=194169
<rdar://problem/47743864>
Reviewed by Devin Rousso.
* UserInterface/Views/TreeOutline.js:
(WI.TreeOutline.prototype._handleMouseDown):
Add a special case for a single-selection TreeOutline with
allowsRepeatSelection enabled. Since the element is already
selected, bypass the SelectionCongroller and dispatch an
event with event.data.selectedByUser set to true.
2019-02-04 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Styles: fix race conditions when editing
https://bugs.webkit.org/show_bug.cgi?id=192739
<rdar://problem/46752925>
Reviewed by Devin Rousso.
Editing CSS property in the style editor syncronously updates CSSStyleDeclaration on the front-end
and asyncronously updates the backend by calling CSSAgent.setStyleText. After the new style text is applied
on the backend, CSSStyleDeclaration (on the front-end) gets updated.
Unsure there's no race conditions by introducing `_updatesInProgressCount`:
- Increment it before calling CSSAgent.setStyleText.
- Decrement it after CSSAgent.setStyleText is finished.
Prevent updates of CSSStyleDeclaration when _updatesInProgressCount isn't 0.
* UserInterface/Models/CSSProperty.js:
(WI.CSSProperty.prototype._updateOwnerStyleText):
* UserInterface/Models/CSSStyleDeclaration.js:
(WI.CSSStyleDeclaration):
(WI.CSSStyleDeclaration.prototype.set text): Removed.
(WI.CSSStyleDeclaration.prototype.setText): Added.
Change the setter to a method since it has side effects including an asynchronous backend call.
* UserInterface/Models/DOMNodeStyles.js:
(WI.DOMNodeStyles.prototype.changeStyleText):
* UserInterface/Views/SpreadsheetStyleProperty.js:
(WI.SpreadsheetStyleProperty.prototype.get nameTextField): Removed.
(WI.SpreadsheetStyleProperty.prototype.get valueTextField): Removed.
Drive-by: remove unused code.
2019-02-01 Devin Rousso <drousso@apple.com>
Web Inspector: create icons for media event types instead of using a blue circle
https://bugs.webkit.org/show_bug.cgi?id=190381
<rdar://problem/45507995>
Reviewed by Brian Burg.
* UserInterface/Models/DOMNode.js:
(WI.DOMNode.isPlayEvent): Added.
(WI.DOMNode.isPauseEvent): Added.
(WI.DOMNode.isStopEvent): Added.
* UserInterface/Views/DOMEventsBreakdownView.js:
(WI.DOMEventsBreakdownView.prototype.layout):
* UserInterface/Views/DOMEventsBreakdownView.css:
(.dom-events-breakdown tr > :matches(th, td)):
(.dom-events-breakdown .graph):
(.dom-events-breakdown .graph > :matches(img, .area)): Added.
(.dom-events-breakdown .graph > img): Added.
(.dom-events-breakdown .inherited > .name, .dom-events-breakdown .inherited > .graph > img): Added.
(.dom-events-breakdown .graph > :matches(.point, .area)): Deleted.
(.dom-events-breakdown .graph > .point): Deleted.
(.dom-events-breakdown .inherited > .name, .dom-events-breakdown .inherited > .graph > .point): Deleted.
* UserInterface/Views/NetworkTableContentView.js:
(WI.NetworkTableContentView.prototype._populateWaterfallGraph.createDOMEventLine):
* UserInterface/Images/EventPause.svg: Added.
* UserInterface/Images/EventPlay.svg: Added.
* UserInterface/Images/EventProcessing.svg: Added.
* UserInterface/Images/EventStop.svg: Added.
2019-02-01 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Make WI.ColumnChart a WI.View subclass
https://bugs.webkit.org/show_bug.cgi?id=194171
Rubber-stamped by Devin Rousso.
* UserInterface/Views/CPUTimelineOverviewGraph.js:
(WI.CPUTimelineOverviewGraph):
* UserInterface/Views/ColumnChart.js:
(WI.ColumnChart):
(WI.ColumnChart.prototype.set size):
(WI.ColumnChart.prototype.layout):
(WI.ColumnChart.prototype.get element): Deleted.
(WI.ColumnChart.prototype.needsLayout): Deleted.
(WI.ColumnChart.prototype.updateLayout): Deleted.
2019-02-01 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Make WI.StackedLineChart a WI.View subclass
https://bugs.webkit.org/show_bug.cgi?id=194119
Rubber-stamped by Devin Rousso.
* UserInterface/Views/LineChart.js:
(WI.LineChart.prototype.layout):
(WI.LineChart):
* UserInterface/Views/MemoryTimelineOverviewGraph.js:
(WI.MemoryTimelineOverviewGraph):
* UserInterface/Views/StackedLineChart.js:
(WI.StackedLineChart):
(WI.StackedLineChart.prototype.set size):
(WI.StackedLineChart.prototype.layout):
(WI.StackedLineChart.prototype.get element): Deleted.
(WI.StackedLineChart.prototype.get points): Deleted.
(WI.StackedLineChart.prototype.needsLayout): Deleted.
(WI.StackedLineChart.prototype.updateLayout): Deleted.
2019-02-01 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Make WI.CircleChart a WI.View subclass
https://bugs.webkit.org/show_bug.cgi?id=194118
Reviewed by Matt Baker.
* UserInterface/Views/CircleChart.js:
(WI.CircleChart.prototype.get centerElement):
(WI.CircleChart.prototype.layout):
(WI.CircleChart.prototype.get element): Deleted.
(WI.CircleChart.prototype.needsLayout): Deleted.
(WI.CircleChart.prototype.updateLayout): Deleted.
* UserInterface/Views/MemoryTimelineView.js:
(WI.MemoryTimelineView):
2019-02-01 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Timeline Detail Views do not reset properly when new time range selection contains nothing
https://bugs.webkit.org/show_bug.cgi?id=194115
<rdar://problem/47716693>
Rubber-stamped by Devin Rousso.
* UserInterface/Views/CPUTimelineView.js:
(WI.CPUTimelineView.prototype.reset):
(WI.CPUTimelineView.prototype.clear):
(WI.CPUTimelineView.prototype.layout):
* UserInterface/Views/MemoryTimelineView.js:
(WI.MemoryTimelineView.prototype.reset):
(WI.MemoryTimelineView.prototype.clear):
(WI.MemoryTimelineView.prototype.layout):
When there are no visible records in the selected range clear our UI.
Introduce a `clear` method that clears the UI but keeps
non-range-specific values (e.g. maximums).
2019-02-01 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Timeline graphs have drawing issues with multiple discontinuities
https://bugs.webkit.org/show_bug.cgi?id=194110
<rdar://problem/47714356>
Reviewed by Devin Rousso.
* UserInterface/Views/CPUTimelineView.js:
(WI.CPUTimelineView):
(WI.CPUTimelineView.prototype.layout.xScale): Deleted.
* UserInterface/Views/MemoryTimelineOverviewGraph.js:
(WI.MemoryTimelineOverviewGraph.prototype.layout.insertDiscontinuity):
(WI.MemoryTimelineOverviewGraph.prototype.layout):
* UserInterface/Views/MemoryTimelineView.js:
(WI.MemoryTimelineView.prototype.layout.xScale):
(WI.MemoryTimelineView.prototype.layout.yScale):
(WI.MemoryTimelineView.prototype.layout):
Handle if multiple discontinuities exist between records.
2019-02-01 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Timeline time range selection should show duration alongside start and end
https://bugs.webkit.org/show_bug.cgi?id=194109
<rdar://problem/47714279>
Reviewed by Devin Rousso.
* Localizations/en.lproj/localizedStrings.js:
* UserInterface/Views/TimelineRecordingContentView.js:
(WI.TimelineRecordingContentView.prototype._updateTimeRangePathComponents):
Include the duration when not obvious.
2019-02-01 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Improve API and documentation of ColumnChart
https://bugs.webkit.org/show_bug.cgi?id=193982
Reviewed by Devin Rousso.
This used to be named "BarChart". Convert remaining instances
of "bar" to "column" and clean up related things.
* UserInterface/Views/CPUTimelineOverviewGraph.css:
(body[dir=rtl] .timeline-overview-graph.cpu > .column-chart):
(.timeline-overview-graph.cpu > .column-chart > svg > rect):
(body[dir=rtl] .timeline-overview-graph.cpu > .bar-chart): Deleted.
(.timeline-overview-graph.cpu > .bar-chart > svg > rect): Deleted.
* UserInterface/Views/CPUTimelineOverviewGraph.js:
(WI.CPUTimelineOverviewGraph.prototype.layout):
* UserInterface/Views/ColumnChart.js:
(WI.ColumnChart):
(WI.ColumnChart.prototype.get columns):
(WI.ColumnChart.prototype.addColumn):
(WI.ColumnChart.prototype.clear):
(WI.ColumnChart.prototype.updateLayout):
(WI.ColumnChart.prototype.get bars): Deleted.
(WI.ColumnChart.prototype.addBar): Deleted.
* UserInterface/Views/StackedLineChart.js:
(WI.StackedLineChart.prototype.get element):
(WI.StackedLineChart.prototype.get points):
2019-01-31 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Timeline time range selection sometimes shows 0.000, should be just 0
https://bugs.webkit.org/show_bug.cgi?id=194108
<rdar://problem/47714273>
Reviewed by Devin Rousso.
* UserInterface/Base/Utilities.js:
Check under epsilon for the zero case.
2019-01-31 Matt Baker <mattbaker@apple.com>
REGRESSION(r?): Web Inspector: Clicking on text doesn't move text caret when editing innerHTML/tagName/attribute
https://bugs.webkit.org/show_bug.cgi?id=192652
<rdar://problem/46684612>
Reviewed by Devin Rousso.
* UserInterface/Views/DOMTreeElement.js:
(WI.DOMTreeElement.prototype.canSelectOnMouseDown):
Call to Event.preventDefault() should be made here instead of at the
TreeOutline level.
* UserInterface/Views/TreeElement.js:
(WI.TreeElement.prototype.selectOnMouseDown): Deleted.
Remove dead code.
* UserInterface/Views/TreeOutline.js:
(WI.TreeOutline._handleMouseDown):
Do not prevent default event handling when the item cannot be selected.
This matches TreeOutline behavior prior to introducing SelectionController.
2019-01-30 Devin Rousso <drousso@apple.com>
Web Inspector: Memory Timeline View should be responsive / resizable
https://bugs.webkit.org/show_bug.cgi?id=153758
<rdar://problem/24444320>
Reviewed by Joseph Pecoraro.
Leverage the SVG `viewBox` (which was misspelled) to scale the graphs when the width of the
container changes. The `viewBox` used is equal to the total amount of time that is visible.
Make `WI.LineChart` (and its container classes) into subclasses of `WI.View` to leverage the
existing layout system.
Prevent any work from being done when resizing, as this is now handled by CSS/SVG.
* UserInterface/Views/LineChart.js:
(WI.LineChart):
(WI.LineChart.prototype.set size):
(WI.LineChart.prototype.addPoint):
(WI.LineChart.prototype.clear):
(WI.LineChart.prototype.layout):
(WI.LineChart.prototype.get element): Deleted.
(WI.LineChart.prototype.get points): Deleted.
(WI.LineChart.prototype.needsLayout): Deleted.
(WI.LineChart.prototype.updateLayout): Deleted.
* UserInterface/Views/CPUUsageView.js:
(WI.CPUUsageView):
(WI.CPUUsageView.prototype.clear):
(WI.CPUUsageView.prototype.updateChart): Added.
(WI.CPUUsageView.prototype.get element): Deleted.
(WI.CPUUsageView.prototype.layoutWithDataPoints): Deleted.
* UserInterface/Views/CPUUsageView.css:
(.cpu-usage-view):
(.cpu-usage-view > .details):
(.cpu-usage-view > .graph, .cpu-usage-view > .graph > .line-chart, .cpu-usage-view > .graph > .line-chart > svg): Added.
(.cpu-usage-view > .graph): Deleted.
* UserInterface/Views/CPUTimelineView.js:
(WI.CPUTimelineView):
(WI.CPUTimelineView.prototype.layout):
(WI.CPUTimelineView.prototype.layout.layoutView):
(WI.CPUTimelineView.prototype.layout.layoutView.xScale):
(WI.CPUTimelineView.prototype.layout.layoutView.yScale):
* UserInterface/Views/CPUTimelineView.css:
(body .timeline-view.cpu): Added.
(.timeline-view.cpu > .content):
(.timeline-view.cpu): Deleted.
* UserInterface/Views/MemoryCategoryView.js:
(WI.MemoryCategoryView):
(WI.MemoryCategoryView.prototype.clear):
(WI.MemoryCategoryView.prototype.updateChart): Added.
(WI.MemoryCategoryView.prototype.get element): Deleted.
(WI.MemoryCategoryView.prototype.layoutWithDataPoints): Deleted.
* UserInterface/Views/MemoryCategoryView.css:
(.memory-category-view):
(.memory-category-view > .details):
(.memory-category-view > .graph, .memory-category-view > .graph > .line-chart, .memory-category-view > .graph > .line-chart > svg): Added.
(.memory-category-view > .graph): Deleted.
* UserInterface/Views/MemoryTimelineView.js:
(WI.MemoryTimelineView.prototype.layout):
(WI.MemoryTimelineView.prototype.layout.layoutCategoryView):
(WI.MemoryTimelineView.prototype.layout.layoutCategoryView.xScale):
(WI.MemoryTimelineView.prototype.layout.layoutCategoryView.yScale):
(WI.MemoryTimelineView.prototype._initializeCategoryViews):
(WI.MemoryTimelineView.prototype._initializeCategoryViews.appendLegendRow):
* UserInterface/Views/MemoryTimelineView.css:
(.timeline-view.memory > .content > .overview):
(.timeline-view.memory > .content > .overview > .divider):
(.timeline-view.memory > .content > .overview .total-usage, .timeline-view.memory > .content > .overview .max-percentage, .timeline-view.memory > .content > .overview .legend .size): Added.
(.timeline-view.memory .legend):
(.timeline-view.memory .legend .row): Added.
(.timeline-view.memory .legend .row + .row): Added.
(.timeline-view.memory .legend .swatch): Addd.
(.timeline-view.memory .legend .swatch.javascript): Addd.
(.timeline-view.memory .legend .swatch.images): Addd.
(.timeline-view.memory .legend .swatch.layers): Addd.
(.timeline-view.memory .legend .swatch.page): Addd.
(.timeline-view.memory .legend .swatch.current): Addd.
(.timeline-view.memory > .content): Deleted.
(.timeline-view.memory > .content > .overview .total-usage, .timeline-view.memory > .content > .overview .max-percentage):
(body[dir=ltr] .timeline-view.memory .legend): Deleted.
(body[dir=rtl] .timeline-view.memory .legend): Deleted.
(.timeline-view.memory .legend > .row): Deleted.
(.timeline-view.memory .legend > .row > .swatch): Deleted.
(body[dir=ltr] .timeline-view.memory .legend > .row > .swatch): Deleted.
(body[dir=rtl] .timeline-view.memory .legend > .row > .swatch): Deleted.
(.timeline-view.memory .legend > .row > p): Deleted.
(body[dir=ltr] .timeline-view.memory .legend > .row > :matches(.label, .size)): Deleted.
(body[dir=rtl] .timeline-view.memory .legend > .row > :matches(.label, .size)): Deleted.
(.timeline-view.memory .legend > .row > .label): Deleted.
(.timeline-view.memory .legend > .row > .size): Deleted.
(.timeline-view.memory .legend > .row > .swatch.javascript): Deleted.
(.timeline-view.memory .legend > .row > .swatch.images): Deleted.
(.timeline-view.memory .legend > .row > .swatch.layers): Deleted.
(.timeline-view.memory .legend > .row > .swatch.page): Deleted.
(.timeline-view.memory .legend > .row > .swatch.current): Deleted.
2019-01-30 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Changes: group CSS rules by resource
https://bugs.webkit.org/show_bug.cgi?id=193940
<rdar://problem/47617785>
Reviewed by Matt Baker.
Create resource sections with source links in their headers.
Also:
- Use read-only WI.SpreadsheetStyleProperty to display inline swatches for colors;
- Make the red and green background span the entire width of the panel.
* Localizations/en.lproj/localizedStrings.js:
* UserInterface/Views/ChangesDetailsSidebarPanel.css:
(.sidebar > .panel.changes-panel):
(.sidebar > .panel.changes-panel .css-rule):
(.sidebar > .panel.selected.changes-panel.empty):
(.changes-panel .resource-section):
(.changes-panel .resource-section > .header):
(.changes-panel .resource-section > .header > a:hover):
(.sidebar > .panel.changes-panel .selector-line,):
(.changes-panel .css-property-line > .property):
(.changes-panel .css-property-line.unchanged):
(.changes-panel .css-property-line.added):
(.changes-panel .css-property-line.removed):
(.changes-panel .css-property-line.removed::before):
(.changes-panel .css-property-line.added::before):
(@media (prefers-color-scheme: dark)):
* UserInterface/Views/ChangesDetailsSidebarPanel.js:
(WI.ChangesDetailsSidebarPanel.prototype.layout):
(WI.ChangesDetailsSidebarPanel.prototype._createRuleElement):
(WI.ChangesDetailsSidebarPanel.prototype._createLocationLink):
* UserInterface/Views/SpreadsheetStyleProperty.js:
(WI.SpreadsheetStyleProperty.prototype._createInlineSwatch):
Allow passing `null` as a delegate.
2019-01-30 Devin Rousso <drousso@apple.com>
Web Inspector: change style of device settings override popover content
https://bugs.webkit.org/show_bug.cgi?id=194049
Reviewed by Joseph Pecoraro.
* UserInterface/Base/Main.js:
(WI._handleDeviceSettingsToolbarButtonClicked):
(WI._handleDeviceSettingsToolbarButtonClicked.showUserAgentInput):
(WI._handleDeviceSettingsToolbarButtonClicked.createContainer): Deleted.
* UserInterface/Views/Main.css:
(.device-settings-content):
(.device-settings-content > tr > td:first-child): Added.
(.device-settings-content .container):
(.device-settings-content .container > * + *): Added.
(.device-settings-content .column): Added.
(.device-settings-content .user-agent select): Added.
(.device-settings-content .user-agent input): Added.
(.device-settings-content label + label): Added.
(.device-settings-content label > input): Added.
(.device-settings-content .columns): Deleted.
(.device-settings-content .columns > .column): Deleted.
(.device-settings-content .columns > .column + .column): Deleted.
(.device-settings-content .user-agent-value): Deleted.
(.device-settings-content .user-agent-value > select): Deleted.
(.device-settings-content .user-agent-value > input): Deleted.
(body[dir=ltr] .device-settings-content .user-agent-value > input): Deleted.
(body[dir=rtl] .device-settings-content .user-agent-value > input): Deleted.
2019-01-30 Devin Rousso <drousso@apple.com>
Web Inspector: Uncaught Exception: null is not an object (evaluating 'url.startsWith')
https://bugs.webkit.org/show_bug.cgi?id=194029
Reviewed by Matt Baker.
* UserInterface/Views/ConsoleMessageView.js:
(WI.ConsoleMessageView.prototype._appendLocationLink):
2019-01-29 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Enabled Changes panel in Elements tab by default
https://bugs.webkit.org/show_bug.cgi?id=193986
<rdar://problem/47647683>
Reviewed by Matt Baker.
* UserInterface/Base/Setting.js:
* UserInterface/Views/ElementsTabContentView.js:
(WI.ElementsTabContentView):
* UserInterface/Views/SettingsTabContentView.js:
(WI.SettingsTabContentView.prototype._createExperimentalSettingsView):
2019-01-29 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Styles: enable computed style cascades by default
https://bugs.webkit.org/show_bug.cgi?id=193983
<rdar://problem/47645821>
Reviewed by Matt Baker.
* Localizations/en.lproj/localizedStrings.js:
* UserInterface/Base/Setting.js:
* UserInterface/Views/ComputedStyleDetailsPanel.css:
(.computed-style-properties):
(.computed-style-properties .property .go-to-arrow):
(.details-section.computed-style-properties:not(.collapsed) > :matches(.header, .content)):
(.details-section.computed-style-properties > .content):
(@media (prefers-color-scheme: dark)):
(.computed-with-traces .computed-style-properties): Deleted.
(.computed-with-traces .details-section.computed-style-properties:not(.collapsed) > :matches(.header, .content)): Deleted.
(.computed-with-traces .details-section.computed-style-properties > .content): Deleted.
(.computed-with-traces .computed-style-properties .property .go-to-arrow): Deleted.
* UserInterface/Views/ComputedStyleDetailsPanel.js:
(WI.ComputedStyleDetailsPanel.prototype.refresh):
(WI.ComputedStyleDetailsPanel.prototype.initialLayout):
* UserInterface/Views/ComputedStyleDetailsSidebarPanel.js:
(WI.ComputedStyleDetailsSidebarPanel):
* UserInterface/Views/SettingsTabContentView.js:
(WI.SettingsTabContentView.prototype._createExperimentalSettingsView):
2019-01-28 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Remove unnecessary promise rejection handlers now that we use the global onunhandledrejection handler
https://bugs.webkit.org/show_bug.cgi?id=193921
Reviewed by Devin Rousso.
* UserInterface/Base/Utilities.js:
* UserInterface/Debug/UncaughtExceptionReporter.js:
* UserInterface/Views/NetworkTableContentView.js:
(WI.NetworkTableContentView.prototype._exportHAR):
* UserInterface/Views/TextEditor.js:
(WI.TextEditor.prototype.updateFormattedState):
2019-01-28 Devin Rousso <drousso@apple.com>
Web Inspector: provide a way to edit page WebRTC settings on a remote target
https://bugs.webkit.org/show_bug.cgi?id=193863
<rdar://problem/47572764>
Reviewed by Joseph Pecoraro.
* UserInterface/Base/Main.js:
(WI.loaded):
(WI.initializeTarget):
(WI._handleDeviceSettingsToolbarButtonClicked):
(WI._handleDeviceSettingsToolbarButtonClicked.createCheckbox):
(WI._handleDeviceSettingsToolbarButtonClicked.createColumns): Deleted.
* UserInterface/Views/Main.css:
(.device-settings-content .container): Added.
* Localizations/en.lproj/localizedStrings.js:
2019-01-28 Matt Baker <mattbaker@apple.com>
Web Inspector: Elements tab should toggle visibility for all selected nodes
https://bugs.webkit.org/show_bug.cgi?id=193089
<rdar://problem/47009256>
Reviewed by Devin Rousso.
Update "Toggle Visibility" command in DOM tree for multiple selection.
When both visible and hidden elements are selected in the DOM tree,
the toggle command behaves contextually. If one or more elements are
visible, they are hidden, otherwise they are shown. The context menu
shows "Hide Elements" or "Show Elements", respectively.
When only one element is selected, or the context menu target element
is not selected, the command continues to be "Toggle Visibility".
* Localizations/en.lproj/localizedStrings.js:
* UserInterface/Views/DOMTreeElement.js:
(WI.DOMTreeElement.prototype.get isNodeHidden): Added.
(WI.DOMTreeElement.prototype.toggleElementVisibility.inspectedPage_node_injectStyleAndToggleClass):
(WI.DOMTreeElement.prototype.toggleElementVisibility):
(WI.DOMTreeElement.prototype._populateTagContextMenu):
* UserInterface/Views/DOMTreeOutline.js:
(WI.DOMTreeOutline):
(WI.DOMTreeOutline.prototype.toggleSelectedElementsVisibility): Added.
Provide a public method for toggling the visibility of selected DOM nodes.
Used by the "H" keyboard shortcut and DOMTreeElement context menu.
(WI.DOMTreeOutline.prototype._hideElements):
(WI.DOMTreeOutline.prototype._hideElement): Deleted.
Rename for multiple selection.
2019-01-28 Commit Queue <commit-queue@webkit.org>
Unreviewed, rolling out r240351.
https://bugs.webkit.org/show_bug.cgi?id=193918
Causes overlapping Timeline records, as some record types
don't have an endTime (Requested by drousso on #webkit).
Reverted changeset:
"WebInspector: Confusingly nested events in the timeline for
Mutation Observers"
https://bugs.webkit.org/show_bug.cgi?id=192884
https://trac.webkit.org/changeset/240351
2019-01-28 Matt Baker <mattbaker@apple.com>
REGRESSION(?): Web Inspector: Can have multiple Timelines selected after edit mode
https://bugs.webkit.org/show_bug.cgi?id=193808
<rdar://problem/47537734>
Reviewed by Devin Rousso.
* UserInterface/Controllers/SelectionController.js:
(WI.SelectionController.prototype.didRemoveItems):
* UserInterface/Views/TreeOutline.js:
(WI.TreeOutline.prototype._indexesForSubtree):
Fix a bug where no IndexSet was returned when passed a TreeElement with
no children. This caused the Timelines tree selection to be corrupted when
entering and exiting edit mode, as TreeElements are inserted and removed.
2019-01-28 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Add Changes panel to Elements tab
https://bugs.webkit.org/show_bug.cgi?id=193803
Reviewed by Devin Rousso.
Introduce the new experimental Changes Panel. It shows a list of CSS changes
made via Web Inspector, so the changes could be copied to the source files.
* Localizations/en.lproj/localizedStrings.js:
* UserInterface/Base/Setting.js:
* UserInterface/Base/Utilities.js:
(Array.diffArrays): Added.
* UserInterface/Controllers/CSSManager.js:
(WI.CSSManager):
(WI.CSSManager.prototype.get modifiedCSSRules):
(WI.CSSManager.prototype.addModifiedCSSRule):
(WI.CSSManager.prototype.removeModifiedCSSRule):
(WI.CSSManager.prototype._mainResourceDidChange):
* UserInterface/Main.html:
* UserInterface/Models/CSSProperty.js:
(WI.CSSProperty):
(WI.CSSProperty.prototype.remove):
(WI.CSSProperty.prototype.replaceWithText):
(WI.CSSProperty.prototype.commentOut):
(WI.CSSProperty.prototype.set text):
(WI.CSSProperty.prototype.get modified):
(WI.CSSProperty.prototype.set name):
(WI.CSSProperty.prototype.set rawValue):
(WI.CSSProperty.prototype.get initialState):
(WI.CSSProperty.prototype._updateOwnerStyleText):
(WI.CSSProperty.prototype._markModified):
Mark CSSProperty modified *before* making any changes to copy its initial state.
* UserInterface/Models/CSSRule.js:
(WI.CSSRule):
(WI.CSSRule.prototype.get id):
(WI.CSSRule.prototype.get initialState):
(WI.CSSRule.prototype.get stringId):
(WI.CSSRule.prototype.markModified):
* UserInterface/Models/CSSStyleDeclaration.js:
(WI.CSSStyleDeclaration):
(WI.CSSStyleDeclaration.prototype.get initialState):
(WI.CSSStyleDeclaration.prototype.get enabledProperties):
(WI.CSSStyleDeclaration.prototype.get properties):
(WI.CSSStyleDeclaration.prototype.set properties):
(WI.CSSStyleDeclaration.prototype.propertyForName):
(WI.CSSStyleDeclaration.prototype.newBlankProperty):
(WI.CSSStyleDeclaration.prototype.markModified):
* UserInterface/Views/ChangesDetailsSidebarPanel.css: Added.
(.sidebar > .panel.changes-panel):
(.sidebar > .panel.changes-panel:not(.empty)):
(.sidebar > .panel.changes-panel.empty):
(.changes-panel ins):
(.changes-panel del):
(.changes-panel del.css-property::before):
(.changes-panel ins.css-property::before):
(@media (prefers-color-scheme: dark)):
* UserInterface/Views/ChangesDetailsSidebarPanel.js: Added.
(WI.ChangesDetailsSidebarPanel):
(WI.ChangesDetailsSidebarPanel.prototype.inspect):
(WI.ChangesDetailsSidebarPanel.prototype.supportsDOMNode):
(WI.ChangesDetailsSidebarPanel.prototype.shown):
(WI.ChangesDetailsSidebarPanel.prototype.detached):
(WI.ChangesDetailsSidebarPanel.prototype.layout):
(WI.ChangesDetailsSidebarPanel.prototype._mainResourceDidChange):
* UserInterface/Views/ElementsTabContentView.js:
(WI.ElementsTabContentView):
* UserInterface/Views/SettingsTabContentView.js:
(WI.SettingsTabContentView.prototype._createExperimentalSettingsView):
* UserInterface/Views/SpreadsheetCSSStyleDeclarationEditor.css:
(.spreadsheet-style-declaration-editor .property):
(.spreadsheet-style-declaration-editor .property.modified):
(.spreadsheet-style-declaration-editor .property.modified:not(.selected)):
(@media (prefers-color-scheme: dark)):
* UserInterface/Views/SpreadsheetStyleProperty.js:
(WI.SpreadsheetStyleProperty.prototype.updateStatus):
2019-01-26 Devin Rousso <drousso@apple.com>
Web Inspector: handle CSS Color 4 color syntaxes
https://bugs.webkit.org/show_bug.cgi?id=193166
<rdar://problem/47062403>
Reviewed by Simon Fraser.
* UserInterface/Models/Color.js:
(WI.Color.fromString):
(WI.Color.fromString.splitFunctionString): Added.
(WI.Color.fromString.parseFunctionAlpha): Added.
(WI.Color.fromString.parseFunctionComponent): Added.
(WI.Color.fromString.parseHueComponent): Added.
(WI.Color.fromString.parsePercentageComponent): Added.
2019-01-26 Devin Rousso <drousso@apple.com>
Web Inspector: provide a way to edit the user agent of a remote target
https://bugs.webkit.org/show_bug.cgi?id=193862
<rdar://problem/47359292>
Reviewed by Joseph Pecoraro.
* UserInterface/Base/Main.js:
(WI.loaded):
(WI.contentLoaded):
(WI.initializeTarget):
(WI._handleDeviceSettingsToolbarButtonClicked):
(WI._handleDeviceSettingsToolbarButtonClicked.updateActivatedState):
(WI._handleDeviceSettingsToolbarButtonClicked.applyOverriddenUserAgent):
(WI._handleDeviceSettingsToolbarButtonClicked.applyOverriddenSetting):
(WI._handleDeviceSettingsToolbarButtonClicked.createContainer):
(WI._handleDeviceSettingsToolbarButtonClicked.createColumns):
(WI._handleDeviceSettingsToolbarButtonClicked.calculateTargetFrame):
(WI._handleDeviceSettingsToolbarButtonClicked.showUserAgentInput):
* UserInterface/Views/Main.css:
(.device-settings-content):
(.device-settings-content .user-agent-value): Added.
(.device-settings-content .user-agent-value > select): Added.
(.device-settings-content .user-agent-value > input): Added.
(body[dir=ltr] .device-settings-content .user-agent-value > input): Added.
(body[dir=rtl] .device-settings-content .user-agent-value > input): Added.
(.device-settings-content label > input): Added.
(body[dir=ltr] .device-settings-content label > input): Deleted.
(body[dir=rtl] .device-settings-content label > input): Deleted.
* Localizations/en.lproj/localizedStrings.js:
2019-01-25 Devin Rousso <drousso@apple.com>
Web Inspector: provide a way to edit page settings on a remote target
https://bugs.webkit.org/show_bug.cgi?id=193813
<rdar://problem/47359510>
Reviewed by Joseph Pecoraro.
Add toolbar button that shows a popover with the target's (page's) settings when clicked.
* UserInterface/Base/Main.js:
(WI.loaded):
(WI.contentLoaded):
(WI.initializeTarget): Added.
(WI._handleDeviceSettingsToolbarButtonClicked): Added.
(WI.didDismissPopover): Added.
* UserInterface/Views/Main.css:
(.device-settings-content): Added.
(.device-settings-content .columns): Added.
(.device-settings-content .columns > .column): Added.
(.device-settings-content .columns > .column + .column): Added.
(body[dir=ltr] .device-settings-content label > input): Added.
(body[dir=rtl] .device-settings-content label > input): Added.
* UserInterface/Views/Popover.js:
(WI.Popover.prototype._update.area):
(WI.Popover.prototype._update):
(WI.Popover.prototype._drawBackground):
(WI.Popover.prototype._bestMetricsForEdge):
(WI.Popover.prototype._drawFrame):
If the best area is negative, treat it as the worst area.
Allow areas to be clamped so long as the clamped edge is not the preferred edge.
* UserInterface/Base/Test.js:
(WI.initializeTarget): Added.
* UserInterface/Images/Device.svg: Added.
* Localizations/en.lproj/localizedStrings.js:
2019-01-25 Devin Rousso <drousso@apple.com>
Web Inspector: Audit: unable to import audits
https://bugs.webkit.org/show_bug.cgi?id=193861
Reviewed by Joseph Pecoraro.
* UserInterface/Controllers/AuditManager.js:
(WI.AuditManager.prototype.async processJSON):
2019-01-25 Devin Rousso <drousso@apple.com>
Web Inspector: Uncaught Exception: No node with given id found
https://bugs.webkit.org/show_bug.cgi?id=193833
Reviewed by Joseph Pecoraro.
* UserInterface/Views/CanvasContentView.js:
(WI.CanvasContentView):
(WI.CanvasContentView.prototype.initialLayout):
(WI.CanvasContentView.prototype.layout):
(WI.CanvasContentView.prototype._refreshPixelSize):
Drive-by: show the refresh button when viewing a specific canvas.
* UserInterface/Views/CanvasTabContentView.js:
(WI.CanvasTabContentView.prototype._removeCanvas):
Reset to the overview if the canvas is removed.
2019-01-25 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Improve Dark Mode appearance within Memory timeline
https://bugs.webkit.org/show_bug.cgi?id=193804
Reviewed by Matt Baker.
* UserInterface/Views/TimelineOverview.css:
(.timeline-overview.edit-instruments > .tree-outline.timelines .item.selected):
(.timeline-overview > .tree-outline.timelines .item.selected + .item,):
(@media (prefers-color-scheme: dark)):
(.timeline-overview > .tree-outline.timelines .item.selected + .item): Deleted.
(body.window-inactive .timeline-overview > .tree-outline.timelines .item.selected + .item): Deleted.
Fix some colors for Timelines edit mode.
* UserInterface/Views/CPUTimelineOverviewGraph.css:
(.timeline-overview-graph.cpu:nth-child(even) > .legend):
(@media (prefers-color-scheme: dark)):
(.timeline-overview-graph.cpu > .legend):
(.timeline-overview-graph:nth-child(even) > .legend): Deleted.
* UserInterface/Views/MemoryTimelineOverviewGraph.css:
(.timeline-overview-graph.memory:nth-child(even) > .legend):
(@media (prefers-color-scheme: dark)):
(.timeline-overview-graph.memory > .legend):
(.timeline-overview-graph:nth-child(even) > .legend): Deleted.
Improved colors in CPU / Memory overview graph legends.
* UserInterface/Views/CPUUsageView.css:
(.cpu-usage-view > .details):
* UserInterface/Views/CircleChart.css:
(.circle-chart > svg > path.background):
* UserInterface/Views/MemoryCategoryView.css:
(.memory-category-view > .details):
(.memory-category-view > .details > .name):
* UserInterface/Views/MemoryTimelineView.css:
(.timeline-view.memory > .content > .overview .total-usage,):
(.timeline-view.memory .legend > .row > .size):
Improved colors in CPU / Memory detail views.
* UserInterface/Views/Variables.css:
(:root):
Add a default --text-secondary-color which will end up slightly
lighter in dark mode where it was already implemented.
(@media (prefers-color-scheme: dark)):
Improved max-comparison colors.
2019-01-25 Devin Rousso <drousso@apple.com>
Web Inspector: Timelines: DOMContentLoaded and load event lines need to be more obvious
https://bugs.webkit.org/show_bug.cgi?id=193186
<rdar://problem/45100694>
Reviewed by Joseph Pecoraro.
Shift around z-index values to make Timelines markers appear behind record bars. Widen the
marker hit region to make it easier to see the tooltip.
* UserInterface/Views/Variables.css:
(:root):
* UserInterface/Views/TimelineRuler.css:
(.timeline-ruler):
(.timeline-ruler > .markers):
(.timeline-ruler > .markers > .marker):
(body[dir=ltr] .timeline-ruler > .markers > .marker):
(body[dir=rtl] .timeline-ruler > .markers > .marker):
(.timeline-ruler > .markers > .marker::before):
(body[dir=ltr] .timeline-ruler > .markers > .marker::before):
(body[dir=rtl] .timeline-ruler > .markers > .marker::before):
(.timeline-ruler > .markers > .marker::after): Added.
(body[dir=ltr] .timeline-ruler > .markers > .marker::after): Added.
(body[dir=rtl] .timeline-ruler > .markers > .marker::after): Added.
(.timeline-ruler > .markers > .marker.current-time):
(.timeline-ruler > .markers > .marker.current-time::after): Added.
(.timeline-ruler > .markers > .marker.load-event):
(.timeline-ruler > .markers > .marker.dom-content-event):
(.timeline-ruler > .markers > .marker.timestamp):
(.timeline-ruler > .selection-handle):
(.timeline-ruler.both-handles-clamped > .selection-handle):
(.timeline-ruler > .shaded-area):
(.timeline-ruler > .markers > .marker.current-time::before): Deleted.
* UserInterface/Views/TimelineRecordBar.css:
(.timeline-record-bar):
(.timeline-record-bar > .segment):
* UserInterface/Views/CPUTimelineOverviewGraph.css:
(.timeline-overview-graph.cpu > .legend):
* UserInterface/Views/MemoryTimelineOverviewGraph.css:
(.timeline-overview-graph.memory > .legend):
2019-01-25 Devin Rousso <drousso@apple.com>
Web Inspector: Audit: remove experimental setting
https://bugs.webkit.org/show_bug.cgi?id=193743
<rdar://problem/28234022>
Reviewed by Joseph Pecoraro.
* UserInterface/Base/Setting.js:
(WI.Setting):
(WI.Setting.localStorageKey): Added.
(WI.Setting.migrateValue):
Drive-by: add the localStorage key prefix to the key passed into `WI.Setting.migrateValue`.
* UserInterface/Base/Main.js:
(WI.loaded):
* UserInterface/Views/AuditTabContentView.js:
(WI.AuditTabContentView.isTabAllowed):
* UserInterface/Views/SettingsTabContentView.js:
(WI.SettingsTabContentView.prototype._createExperimentalSettingsView):
* Localizations/en.lproj/localizedStrings.js:
2019-01-25 Devin Rousso <drousso@apple.com>
Web Inspector: show uncaught exception view for unhandled promise rejections
https://bugs.webkit.org/show_bug.cgi?id=193832
Reviewed by Matt Baker.
* UserInterface/Debug/UncaughtExceptionReporter.js:
(handleUnhandledPromiseRejection): Added.
2019-01-25 Devin Rousso <drousso@apple.com>
Web Inspector: REGRESSION (r237808): offscreen path warning doesn't work
https://bugs.webkit.org/show_bug.cgi?id=193830
Reviewed by Matt Baker.
* UserInterface/Models/RecordingAction.js:
(WI.RecordingAction.prototype.process):
2019-01-25 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Add another Protocol Version (iOS 12.2)
https://bugs.webkit.org/show_bug.cgi?id=193810
<rdar://problem/42981838>
Reviewed by Matt Baker.
* UserInterface/Protocol/Legacy/12.2/InspectorBackendCommands.js: Added.
* Versions/Inspector-iOS-12.2.json: Added.
2019-01-25 Devin Rousso <drousso@apple.com>
Web Inspector: `WI.Setting.migrateValue` doesn't take into account the key prefix
https://bugs.webkit.org/show_bug.cgi?id=193814
Reviewed by Matt Baker.
* UserInterface/Base/Setting.js:
(WI.Setting):
(WI.Setting.migrateValue):
(WI.Setting._localStorageKey): Added.
2019-01-25 Devin Rousso <drousso@apple.com>
Web Inspector: improve invalid Audit/Recording JSON error messages
https://bugs.webkit.org/show_bug.cgi?id=193476
<rdar://problem/47303659>
Reviewed by Joseph Pecoraro.
* UserInterface/Models/AuditTestBase.js:
(WI.AuditTestBase):
* UserInterface/Models/AuditTestCase.js:
(WI.AuditTestCase.async fromPayload):
* UserInterface/Models/AuditTestGroup.js:
(WI.AuditTestGroup.async fromPayload):
* UserInterface/Models/AuditTestCaseResult.js:
(WI.AuditTestCaseResult.async fromPayload.checkArray):
(WI.AuditTestCaseResult.async fromPayload):
* UserInterface/Models/AuditTestGroupResult.js:
(WI.AuditTestGroupResult.async fromPayload):
* UserInterface/Controllers/AuditManager.js:
(WI.AuditManager.synthesizeWarning): Added.
(WI.AuditManager.synthesizeError):
(WI.AuditManager.prototype.async processJSON):
* UserInterface/Models/Recording.js:
(WI.Recording.fromPayload):
(WI.Recording.synthesizeWarning): Added.
(WI.Recording.synthesizeError):
* UserInterface/Models/RecordingFrame.js:
(WI.RecordingFrame.fromPayload):
* UserInterface/Models/RecordingAction.js:
(WI.RecordingAction.fromPayload):
(WI.RecordingAction.prototype.async swizzle):
(WI.RecordingAction.prototype.apply):
* UserInterface/Controllers/CanvasManager.js:
(WI.CanvasManager.prototype.processJSON):
* Localizations/en.lproj/localizedStrings.js:
2019-01-24 Devin Rousso <drousso@apple.com>
Web Inspector: Audit: add supports key to test/group for compatibility
https://bugs.webkit.org/show_bug.cgi?id=193686
<rdar://problem/47460872>
Reviewed by Joseph Pecoraro.
* UserInterface/Models/AuditTestBase.js:
(WI.AuditTestBase):
(WI.AuditTestBase.prototype.get supported): Added.
(WI.AuditTestBase.prototype.set supported): Added.
(WI.AuditTestBase.prototype.set disabled):
(WI.AuditTestBase.prototype.async start):
(WI.AuditTestBase.prototype.stop):
(WI.AuditTestBase.toJSON):
* UserInterface/Models/AuditTestCase.js:
(WI.AuditTestCase.async fromPayload):
* UserInterface/Models/AuditTestGroup.js:
(WI.AuditTestGroup):
(WI.AuditTestGroup.async fromPayload):
(WI.AuditTestGroup.prototype.get supported): Added.
(WI.AuditTestGroup.prototype.set supported): Added.
Add support for a "supports" key in the test JSON that prevents the test from being run if
it's value is lower than the frontend/backend version.
* UserInterface/Views/AuditTreeElement.js:
(WI.AuditTreeElement.prototype.onattach):
(WI.AuditTreeElement.prototype.ondelete):
(WI.AuditTreeElement.prototype.populateContextMenu):
(WI.AuditTreeElement.prototype._updateStatus): Added.
(WI.AuditTreeElement.prototype._showRunningSpinner):
(WI.AuditTreeElement.prototype._showRunningProgress):
(WI.AuditTreeElement.prototype._updateTestGroupDisabled):
(WI.AuditTreeElement.prototype._handleTestCaseCompleted):
(WI.AuditTreeElement.prototype._handleTestResultCleared):
(WI.AuditTreeElement.prototype._handleTestGroupCompleted):
(WI.AuditTreeElement.prototype._handleManagerEditingChanged):
(WI.AuditTreeElement.prototype.canSelectOnMouseDown): Deleted.
(WI.AuditTreeElement.prototype._updateLevel): Deleted.
* UserInterface/Views/AuditTreeElement.css:
(.tree-outline .item.audit:matches(.test-case, .test-group):not(.unsupported, .manager-active) > .status:hover > img): Added.
(.tree-outline .item.audit > .status:not(:hover) > img.show-on-hover, .tree-outline .item.audit.test-group.expanded:not(.unsupported, .editing-audits) > .status:not(:hover)): Added.
(.tree-outline .item.audit.manager-active > .status > img.show-on-hover, .tree-outline .item.audit.test-group.expanded:not(.editing-audits) > .status:hover > :not(img), .tree-outline .item.audit.test-group-result.expanded > .status, .tree-outline .item.audit.unsupported + .children .item.audit.unsupported > .status > img): Added.
(.tree-outline .item.audit.unsupported:not(.selected) > :matches(.icon, .titles)): Added.
(.tree-outline .item.audit.unsupported > .status > img): Added.
(.tree-outline .item.audit:matches(.test-case, .test-group):not(.manager-active) > .status:hover > img): Deleted.
(.tree-outline .item.audit > .status:not(:hover) > img.show-on-hover, .tree-outline .item.audit.test-group.expanded:not(.editing-audits) > .status:not(:hover)): Deleted.
(.tree-outline .item.audit.manager-active > .status > img.show-on-hover, .tree-outline .item.audit.test-group.expanded:not(.editing-audits) > .status:hover > :not(img), .tree-outline .item.audit.test-group-result.expanded > .status): Deleted.
Hide unsupported tests unless in edit mode, where they are greyed out and cannot be enabled.
Drive-by: only allow tests to be deleted when in edit mode.
* UserInterface/Views/AuditNavigationSidebarPanel.js:
(WI.AuditNavigationSidebarPanel.prototype._treeSelectionDidChange):
* Localizations/en.lproj/localizedStrings.js:
2019-01-24 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: CPU Usage Timeline
https://bugs.webkit.org/show_bug.cgi?id=193730
<rdar://problem/46797201>
Reviewed by Devin Rousso.
CPU Usage is gathered in the backend twice a second, the frequency of the
ResourceUsageThread in WebCore. The frontend displays cpu usage in a few
ways in the Timeline.
We use a column chart in the timeline overview to display the frequency and
relative distance of samples. This helps show if the samples were close
together or far apart, which indicates how meaningful they will be at a
particular scale.
We use a line chart in the timeline detail view which will be easier to see
the changes over a particular time range selection.
* Localizations/en.lproj/localizedStrings.js:
New strings.
* UserInterface/Main.html:
* UserInterface/Base/Main.js:
(WI.loaded):
* UserInterface/Test.html:
* UserInterface/Test/Test.js:
(WI.loaded):
* UserInterface/Protocol/CPUProfilerObserver.js:
(WI.CPUProfilerObserver.prototype.trackingStart):
(WI.CPUProfilerObserver.prototype.trackingUpdate):
(WI.CPUProfilerObserver.prototype.trackingComplete):
(WI.CPUProfilerObserver):
New files and default registration.
* UserInterface/Protocol/Target.js:
(WI.Target.prototype.get CPUProfilerAgent):
New Agent.
* UserInterface/Controllers/TimelineManager.js:
(WI.TimelineManager.availableTimelineTypes):
(WI.TimelineManager.prototype.cpuProfilerTrackingStarted):
(WI.TimelineManager.prototype.cpuProfilerTrackingUpdated):
(WI.TimelineManager.prototype.cpuProfilerTrackingCompleted):
(WI.TimelineManager.prototype._updateAutoCaptureInstruments):
(WI.TimelineManager.prototype.memoryTrackingStart): Renamed.
(WI.TimelineManager.prototype.memoryTrackingUpdate): Renamed.
(WI.TimelineManager.prototype.memoryTrackingComplete): Renamed.
* UserInterface/Models/CPUInstrument.js:
(WI.CPUInstrument):
(WI.CPUInstrument.supported):
(WI.CPUInstrument.prototype.get timelineRecordType):
(WI.CPUInstrument.prototype.startInstrumentation):
(WI.CPUInstrument.prototype.stopInstrumentation):
* UserInterface/Models/CPUTimelineRecord.js:
(WI.CPUTimelineRecord):
(WI.CPUTimelineRecord.prototype.get timestamp):
(WI.CPUTimelineRecord.prototype.get usage):
* UserInterface/Models/Instrument.js:
(WI.Instrument.createForTimelineType):
* UserInterface/Models/TimelineRecord.js:
* UserInterface/Models/TimelineRecording.js:
(WI.TimelineRecording.prototype.addRecord):
Expose a new CPU instrument and timeline.
* UserInterface/Views/ColumnChart.js: Added.
(WI.ColumnChart):
(WI.ColumnChart.prototype.get element):
(WI.ColumnChart.prototype.get bars):
(WI.ColumnChart.prototype.get size):
(WI.ColumnChart.prototype.set size):
(WI.ColumnChart.prototype.addBar):
(WI.ColumnChart.prototype.clear):
(WI.ColumnChart.prototype.needsLayout):
(WI.ColumnChart.prototype.updateLayout):
View that will draw vertical bars with independent widths.
This is meant to be used similiar to WI.LineChart.
* UserInterface/Images/CPUInstrument.svg: Added.
* UserInterface/Views/Variables.css:
(:root):
CPU timeline colors and icon.
* UserInterface/Views/CPUTimelineOverviewGraph.css:
(body .sidebar > .panel.navigation.timeline > .timelines-content li.item.cpu,):
(.timeline-overview-graph.cpu):
(.timeline-overview-graph.cpu > .legend):
(body[dir=ltr] .timeline-overview-graph.cpu > .legend):
(body[dir=rtl] .timeline-overview-graph.cpu > .legend):
(.timeline-overview-graph:nth-child(even) > .legend):
(body[dir=rtl] .timeline-overview-graph.cpu > .bar-chart):
(.timeline-overview-graph.cpu > .bar-chart > svg > g > rect):
* UserInterface/Views/CPUTimelineOverviewGraph.js: Added.
(WI.CPUTimelineOverviewGraph):
(WI.CPUTimelineOverviewGraph.prototype.get height):
(WI.CPUTimelineOverviewGraph.prototype.reset):
(WI.CPUTimelineOverviewGraph.prototype.layout.xScale):
(WI.CPUTimelineOverviewGraph.prototype.layout.yScale):
(WI.CPUTimelineOverviewGraph.prototype.layout.yScaleForRecord):
(WI.CPUTimelineOverviewGraph.prototype.layout):
(WI.CPUTimelineOverviewGraph.prototype._updateLegend):
(WI.CPUTimelineOverviewGraph.prototype._cpuTimelineRecordAdded):
* UserInterface/Views/CPUTimelineView.css:
(.timeline-view.cpu):
(.timeline-view.cpu > .content):
(.timeline-view.cpu > .content .subtitle):
(.timeline-view.cpu > .content > .details):
(.timeline-view.cpu > .content > .details > .timeline-ruler):
(body[dir=ltr] .timeline-view.cpu > .content > .details > .timeline-ruler):
(body[dir=rtl] .timeline-view.cpu > .content > .details > .timeline-ruler):
(.timeline-view.cpu > .content > .details > .subtitle):
(.cpu-usage-view .line-chart > svg > path):
(.timeline-view.cpu .legend > .row > .swatch.current):
* UserInterface/Views/CPUTimelineView.js: Added.
(WI.CPUTimelineView):
(WI.CPUTimelineView.prototype.shown):
(WI.CPUTimelineView.prototype.hidden):
(WI.CPUTimelineView.prototype.closed):
(WI.CPUTimelineView.prototype.reset):
(WI.CPUTimelineView.prototype.get scrollableElements):
(WI.CPUTimelineView.prototype.get showsFilterBar):
(WI.CPUTimelineView.prototype.layout.layoutView):
(WI.CPUTimelineView.prototype.layout.xScale):
(WI.CPUTimelineView.prototype.layout.yScale):
(WI.CPUTimelineView.prototype.layout):
(WI.CPUTimelineView.prototype._cpuTimelineRecordAdded):
* UserInterface/Views/CPUUsageView.css:
(.cpu-usage-view):
(.cpu-usage-view > .details):
(body[dir=ltr] .cpu-usage-view > .details):
(body[dir=rtl] .cpu-usage-view > .details):
(.cpu-usage-view > .graph):
(body[dir=rtl] .cpu-usage-view > .graph):
* UserInterface/Views/CPUUsageView.js:
(WI.CPUUsageView):
(WI.CPUUsageView.prototype.get element):
(WI.CPUUsageView.prototype.clear):
(WI.CPUUsageView.prototype.layoutWithDataPoints):
(WI.CPUUsageView.prototype._updateDetails):
* UserInterface/Views/ContentView.js:
(WI.ContentView.createFromRepresentedObject):
* UserInterface/Views/TimelineIcons.css:
(.cpu-icon .icon):
* UserInterface/Views/TimelineOverviewGraph.js:
(WI.TimelineOverviewGraph.createForTimeline):
* UserInterface/Views/TimelineTabContentView.js:
(WI.TimelineTabContentView.displayNameForTimelineType):
(WI.TimelineTabContentView.iconClassNameForTimelineType):
(WI.TimelineTabContentView.genericClassNameForTimelineType):
(WI.TimelineTabContentView.iconClassNameForRecord):
(WI.TimelineTabContentView.displayNameForRecord):
Timeline views for CPU usage.
* UserInterface/Views/MemoryCategoryView.js:
(WI.MemoryCategoryView):
* UserInterface/Views/MemoryTimelineView.js:
(WI.MemoryTimelineView.createChartContainer):
(WI.MemoryTimelineView):
(WI.MemoryTimelineView.prototype._clearMaxComparisonLegend):
Minor updates to style and comments.
2019-01-23 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Refactor WI.CSSStyleDeclaration.prototype.update
https://bugs.webkit.org/show_bug.cgi?id=193737
Reviewed by Matt Baker.
Remove unused event data from the WI.CSSStyleDeclaration.Event.PropertiesChanged event.
* UserInterface/Models/CSSStyleDeclaration.js:
(WI.CSSStyleDeclaration.prototype.update):
2019-01-23 Devin Rousso <drousso@apple.com>
WebInspector: Confusingly nested events in the timeline for Mutation Observers
https://bugs.webkit.org/show_bug.cgi?id=192884
<rdar://problem/46854178>
Reviewed by Joseph Pecoraro.
If a microtask event (e.g. `ObserverCallback`) is contained within a `EvaluatedScript`
event, move that microtask event to be a sibling of the `EvaluateScript`, subtracting the
microtask's time taken from the `EvaluateScript`'s time. If there are no other children
after this move, then remove the `EvaluateScript` altogether.
* UserInterface/Controllers/TimelineManager.js:
(WI.TimelineManager.prototype.eventRecorded.fixMicrotaskPlacement): Added.
(WI.TimelineManager.prototype.eventRecorded):
(WI.TimelineManager.prototype._mergeScriptProfileRecords):
2019-01-23 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Network Waterfall column should redraw when adding/removing new columns
https://bugs.webkit.org/show_bug.cgi?id=193696
<rdar://problem/47464149>
Reviewed by Devin Rousso.
* UserInterface/Views/TableColumn.js:
(WI.TableColumn.prototype.get needsReloadOnResize):
* UserInterface/Views/NetworkTableContentView.js:
(WI.NetworkTableContentView.prototype.initialLayout):
Mark the waterfall column as sensitive to any resizes.
* UserInterface/Views/Table.js:
(WI.Table.prototype.showColumn):
(WI.Table.prototype.hideColumn):
Update column widths and reload any columns that may be sensitive to resizes.
2019-01-22 Devin Rousso <drousso@apple.com>
Web Inspector: InspectorInstrumentation::willEvaluateScript should include column number
https://bugs.webkit.org/show_bug.cgi?id=116191
<rdar://problem/13905910>
Reviewed by Joseph Pecoraro.
* UserInterface/Controllers/TimelineManager.js:
(WI.TimelineManager.prototype._processRecord):
2019-01-22 Devin Rousso <drousso@apple.com>
Web Inspector: expose Audit and Recording versions to the frontend
https://bugs.webkit.org/show_bug.cgi?id=193262
<rdar://problem/47130684>
Reviewed by Joseph Pecoraro.
* UserInterface/Protocol/InspectorBackend.js:
(InspectorBackendClass.prototype.registerVersion): Added.
* UserInterface/Models/AuditTestCase.js:
* UserInterface/Models/Recording.js:
(WI.Recording.fromPayload):
Add Interface version values.
2019-01-22 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Styles: refactor properties/allProperties/visibleProperties/allVisibleProperties
https://bugs.webkit.org/show_bug.cgi?id=193615
Reviewed by Devin Rousso.
Remove unused visibleProperties.
Rename:
- properties to enabledProperties;
- allProperties to properties;
- allVisibleProperties to visibleProperties.
* UserInterface/Models/CSSProperty.js:
(WI.CSSProperty.prototype._prependSemicolonIfNeeded):
(WI.CSSProperty):
* UserInterface/Models/CSSStyleDeclaration.js:
(WI.CSSStyleDeclaration):
(WI.CSSStyleDeclaration.prototype.get enabledProperties):
(WI.CSSStyleDeclaration.prototype.get properties):
(WI.CSSStyleDeclaration.prototype.propertyForName):
(WI.CSSStyleDeclaration.prototype.newBlankProperty):
(WI.CSSStyleDeclaration.prototype.shiftPropertiesAfter):
(WI.CSSStyleDeclaration.prototype._rangeAfterPropertyAtIndex):
* UserInterface/Models/DOMNodeStyles.js:
(WI.DOMNodeStyles.prototype._parseStylePropertyPayload):
(WI.DOMNodeStyles.prototype._markOverriddenProperties):
(WI.DOMNodeStyles.prototype._associateRelatedProperties):
(WI.DOMNodeStyles.prototype._isPropertyFoundInMatchingRules):
(WI.DOMNodeStyles):
* UserInterface/Views/BoxModelDetailsSectionRow.js:
(WI.BoxModelDetailsSectionRow.prototype._updateMetrics):
* UserInterface/Views/ComputedStyleDetailsPanel.js:
(WI.ComputedStyleDetailsPanel.prototype._computePropertyTraces):
* UserInterface/Views/ComputedStyleSection.js:
(WI.ComputedStyleSection.prototype.get propertiesToRender):
* UserInterface/Views/SpreadsheetCSSStyleDeclarationEditor.js:
(WI.SpreadsheetCSSStyleDeclarationEditor.prototype.get propertiesToRender):
* UserInterface/Views/SpreadsheetRulesStyleDetailsPanel.js:
(WI.SpreadsheetRulesStyleDetailsPanel.prototype.layout):
* UserInterface/Views/SpreadsheetStyleProperty.js:
(WI.SpreadsheetStyleProperty.prototype.updateStatus):
2019-01-22 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Network Table appears broken after filter - rows look collapsed
https://bugs.webkit.org/show_bug.cgi?id=192730
<rdar://problem/46853158>
Reviewed by Devin Rousso.
* UserInterface/Views/Table.js:
(WI.Table.prototype._applyColumnWidthsToColumnsIfNeeded):
Affect the filler row like the other applyColumnWidths calls since this
now may be the initial call to size visible columns.
2019-01-22 Devin Rousso <drousso@apple.com>
Web Inspector: Audit: use plural strings for Passed, Failed, and Unsupported
https://bugs.webkit.org/show_bug.cgi?id=193675
<rdar://problem/46628680>
Reviewed by Joseph Pecoraro.
* UserInterface/Views/AuditTestGroupContentView.js:
(WI.AuditTestGroupContentView.prototype.layout):
* Localizations/en.lproj/localizedStrings.js:
2019-01-18 Jer Noble <jer.noble@apple.com>
SDK_VARIANT build destinations should be separate from non-SDK_VARIANT builds
https://bugs.webkit.org/show_bug.cgi?id=189553
Reviewed by Tim Horton.
* Configurations/Base.xcconfig:
* Configurations/SDKVariant.xcconfig: Added.
2019-01-18 Devin Rousso <drousso@apple.com>
Web Inspector: Uncaught Exception: TypeError: undefined is not an object (evaluating 'resource.finished')
https://bugs.webkit.org/show_bug.cgi?id=193589
Reviewed by Joseph Pecoraro.
* UserInterface/Views/NetworkTableContentView.js:
(WI.NetworkTableContentView.prototype.get supportsSave):
(WI.NetworkTableContentView.prototype._HARResources):
2019-01-17 Truitt Savell <tsavell@apple.com>
Unreviewed, rolling out r240124.
This commit broke an internal build.
Reverted changeset:
"SDK_VARIANT build destinations should be separate from non-
SDK_VARIANT builds"
https://bugs.webkit.org/show_bug.cgi?id=189553
https://trac.webkit.org/changeset/240124
2019-01-17 Jer Noble <jer.noble@apple.com>
SDK_VARIANT build destinations should be separate from non-SDK_VARIANT builds
https://bugs.webkit.org/show_bug.cgi?id=189553
Reviewed by Tim Horton.
* Configurations/Base.xcconfig:
* Configurations/SDKVariant.xcconfig: Added.
2019-01-16 Matt Baker <mattbaker@apple.com>
Web Inspector: Fix TreeOutline TypeError:​ this._indexesForSubtree is not a function
https://bugs.webkit.org/show_bug.cgi?id=193501
<rdar://problem/47323967>
Reviewed by Joseph Pecoraro.
* UserInterface/Views/TreeOutline.js:
(WI.TreeOutline.prototype.removeChildAtIndex):
2019-01-15 Devin Rousso <drousso@apple.com>
Web Inspector: Audit: create new IDL type for exposing special functionality in test context
https://bugs.webkit.org/show_bug.cgi?id=193149
<rdar://problem/46801218>
Reviewed by Joseph Pecoraro.
Add `AuditAgent` getters and plumbing.
* UserInterface/Protocol/Target.js:
(WI.Target.prototype.get AuditAgent): Added.
* UserInterface/Models/AuditTestCase.js:
(WI.AuditTestCase.prototype.async run):
* UserInterface/Controllers/AuditManager.js:
(WI.AuditManager.prototype.async start):
* .eslintrc:
2019-01-14 Devin Rousso <drousso@apple.com>
Web Inspector: Event breakpoints: typing uppercase "DOM" doesn't show completions for events that start with "DOM"
https://bugs.webkit.org/show_bug.cgi?id=193384
Reviewed by Joseph Pecoraro.
* UserInterface/Views/EventBreakpointPopover.js:
(WI.EventBreakpointPopover.prototype.show):
2019-01-14 Devin Rousso <drousso@apple.com>
Web Inspector: Event breakpoints: text field and completion popover fonts should match
https://bugs.webkit.org/show_bug.cgi?id=193249
Reviewed by Matt Baker.
* UserInterface/Views/EventBreakpointPopover.css:
(.popover .event-breakpoint-content > .event-type > input): Added.
(.popover .event-breakpoint-content > .event-type > input::placeholder): Added.
* UserInterface/Views/EventBreakpointPopover.js:
(WI.EventBreakpointPopover.prototype.show):
(WI.EventBreakpointPopover.prototype._showSuggestionsView):
Subtract the <input> border and padding from the bounds position so the <input> text lines
up with the `WI.CompletionSuggestionsView` text.
* UserInterface/Views/CompletionSuggestionsView.js:
(WI.CompletionSuggestionsView):
Drive-by: force `dir=ltr` to match the `text-align: left;` CSS styling.
2019-01-14 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Styles: pressing Down key on empty value field shouldn't discard completion popover
https://bugs.webkit.org/show_bug.cgi?id=193098
<rdar://problem/47016036>
Reviewed by Devin Rousso.
Hide CompletionSuggestionsView when SpreadsheetTextField moves, e.g. by scrolling or resizing the sidebar.
Update CompletionSuggestionsView position after pressing Up or Down key, because SpreadsheetTextField may
move from wrapping text.
* UserInterface/Views/CompletionSuggestionsView.js:
(WI.CompletionSuggestionsView.prototype.hide):
(WI.CompletionSuggestionsView.prototype.show):
(WI.CompletionSuggestionsView.prototype.showUntilAnchorMoves): Removed.
(WI.CompletionSuggestionsView.prototype.hideWhenElementMoves): Added.
(WI.CompletionSuggestionsView.prototype._stopMoveTimer): Added.
(WI.CompletionSuggestionsView):
* UserInterface/Views/SpreadsheetTextField.js:
(WI.SpreadsheetTextField.prototype.set suggestionHint):
(WI.SpreadsheetTextField.prototype.completionSuggestionsSelectedCompletion):
(WI.SpreadsheetTextField.prototype._handleKeyDownForSuggestionView):
(WI.SpreadsheetTextField.prototype._updateCompletions):
(WI.SpreadsheetTextField.prototype._showSuggestionsView): Added.
(WI.SpreadsheetTextField.prototype._reAttachSuggestionHint):
Drive-by: abstract out repeating code into a private method.
2019-01-14 Devin Rousso <drousso@apple.com>
Web Inspector: Settings: group titles should vertically align with the first editor
https://bugs.webkit.org/show_bug.cgi?id=193391
Reviewed by Dean Jackson.
* UserInterface/Views/SettingsTabContentView.css:
(.content-view.settings > .settings-view > .container):
(.content-view.settings > .settings-view > .container > .editor-group > .editor): Added.
(.content-view.settings > .settings-view > .container > .editor-group > .editor:first-child > *): Added.
(.content-view.settings > .settings-view > .container > .editor-group > .editor select):
(.content-view.settings > .settings-view > .container > .editor-group > .editor input[type="number"]):
2019-01-11 Matt Baker <mattbaker@apple.com>
Web Inspector: REGRESSION: deleting an audit puts selection in a selected but invisible state
https://bugs.webkit.org/show_bug.cgi?id=192917
<rdar://problem/46875285>
Reviewed by Devin Rousso.
SelectionController should not be notified of removed children until the
child items have been removed from the TreeOutline. Doing so at this stage
is unsafe, since this method checks `this.selectedTreeElement`, which could
return the adjusted index from the SelectionController before anything has
actually been removed from the TreeOutline.
The number of calls to SelectionController.prototype.didRemoveItems is also
reduced somewhat, since we're no longer calling it for every TreeElement.
* UserInterface/Views/TreeOutline.js:
(WI.TreeOutline.prototype.removeChildAtIndex):
(WI.TreeOutline.prototype.removeChildren):
(WI.TreeOutline.prototype._forgetTreeElement):
(WI.TreeOutline.prototype._indexesForSubtree): Added.
2019-01-10 Devin Rousso <drousso@apple.com>
Web Inspector: Audit: allow audits to be enabled/disabled
https://bugs.webkit.org/show_bug.cgi?id=192210
<rdar://problem/46423583>
Reviewed by Joseph Pecoraro.
* UserInterface/Controllers/AuditManager.js:
(WI.AuditManager.prototype.get editing): Added.
(WI.AuditManager.prototype.set editing): Added.
(WI.AuditManager.prototype.stop):
(WI.AuditManager.prototype.addDefaultTestsIfNeeded):
Since default audits aren't stored, keep a list of disabled default tests in a `WI.Setting`.
* UserInterface/Models/AuditTestBase.js:
(WI.AuditTestBase):
(WI.AuditTestBase.prototype.get disabled): Added.
(WI.AuditTestBase.prototype.set disabled): Added.
(WI.AuditTestBase.prototype.async start):
(WI.AuditTestBase.prototype.stop):
(WI.AuditTestBase.toJSON):
* UserInterface/Models/AuditTestCase.js:
(WI.AuditTestCase):
(WI.AuditTestCase.async fromPayload):
(WI.AuditTestCase.prototype.toJSON):
* UserInterface/Models/AuditTestGroup.js:
(WI.AuditTestGroup):
(WI.AuditTestGroup.async fromPayload):
(WI.AuditTestGroup.prototype.get disabled): Added.
(WI.AuditTestGroup.prototype.set disabled): Added.
(WI.AuditTestGroup.prototype.toJSON):
(WI.AuditTestGroup.prototype.async run):
(WI.AuditTestGroup.prototype._handleTestDisabledChanged): Added.
(WI.AuditTestGroup.prototype._handleTestProgress):
Propagate `disabled` changes to all sub-tests, unless the change was caused by one of the
sub-tests, in which case we are now in an intermediate state.
* UserInterface/Views/AuditNavigationSidebarPanel.js:
(WI.AuditNavigationSidebarPanel):
(WI.AuditNavigationSidebarPanel.prototype.showDefaultContentView):
(WI.AuditNavigationSidebarPanel.prototype.initialLayout):
(WI.AuditNavigationSidebarPanel.prototype.hasCustomFilters): Added.
(WI.AuditNavigationSidebarPanel.prototype.matchTreeElementAgainstCustomFilters): Added.
(WI.AuditNavigationSidebarPanel.prototype._addTest):
(WI.AuditNavigationSidebarPanel.prototype._addResult):
(WI.AuditNavigationSidebarPanel.prototype._updateStartStopButtonNavigationItemState):
(WI.AuditNavigationSidebarPanel.prototype._updateEditButtonNavigationItemState): Added.
(WI.AuditNavigationSidebarPanel.prototype._handleAuditManagerEditingChanged): Added.
(WI.AuditNavigationSidebarPanel.prototype._handleAuditTestRemoved):
(WI.AuditNavigationSidebarPanel.prototype._handleAuditTestScheduled):
(WI.AuditNavigationSidebarPanel.prototype._treeSelectionDidChange):
(WI.AuditNavigationSidebarPanel.prototype._handleEditButtonNavigationItemClicked): Added.
* UserInterface/Views/AuditNavigationSidebarPanel.css:
(.sidebar > .panel.navigation.audit > .content):
(.sidebar > .panel.navigation.audit > .content > .tree-outline): Added.
(.sidebar > .panel.navigation.audit > .content .edit-audits:not(.disabled):active): Added.
(.sidebar > .panel.navigation.audit > .content .edit-audits:not(.disabled).activated): Added.
(.sidebar > .panel.navigation.audit > .content .edit-audits:not(.disabled).activated:active): Added.
(.sidebar > .panel.navigation.audit > .content .edit-audits.disabled): Added.
(.finish-editing-audits-placeholder.message-text-view .navigation-item-help .navigation-bar): Added.
Leverage custom filters to ensure that disabled audits arent shown when not editing and that
result tree elements aren't shown while editing.
* UserInterface/Views/AuditTestGroupContentView.js:
(WI.AuditTestGroupContentView.prototype.shown):
* UserInterface/Views/AuditTreeElement.js:
(WI.AuditTreeElement.prototype.onattach):
(WI.AuditTreeElement.prototype.canSelectOnMouseDown): Added.
(WI.AuditTreeElement.prototype._updateTestGroupDisabled): Added.
(WI.AuditTreeElement.prototype._handleTestDisabledChanged): Added.
(WI.AuditTreeElement.prototype._handleManagerEditingChanged): Added.
* UserInterface/Views/AuditTreeElement.css:
(.tree-outline .item.audit > .status:not(:hover) > img.show-on-hover, .tree-outline .item.audit.test-group.expanded:not(.editing-audits) > .status:not(:hover)): Added.
(.tree-outline .item.audit.manager-active > .status > img.show-on-hover, .tree-outline .item.audit.test-group.expanded:not(.editing-audits) > .status:hover > :not(img), .tree-outline .item.audit.test-group-result.expanded > .status): Added.
(.tree-outline .item.audit > .status:not(:hover) > img.show-on-hover, .tree-outline .item.audit.test-group.expanded > .status:not(:hover)): Deleted.
(.tree-outline .item.audit.manager-active > .status > img.show-on-hover, .tree-outline .item.audit.test-group.expanded > .status:hover > :not(img), .tree-outline .item.audit.test-group-result.expanded > .status): Deleted.
Prevent selection and running when editing.
* UserInterface/Views/TreeOutline.css:
(.tree-outline .children.expanded:not([hidden])): Added.
(.tree-outline .children.expanded): Deleted.
* UserInterface/Base/ObjectStore.js:
(WI.ObjectStore._open):
Batch operations together to help avoid multiple simultaneous `indexedDB.open` calls. This
should also help preserve the order of operations, as once the database is open, operations
are executed in the order they were enqueued.
(WI.ObjectStore.prototype.async.addObject):
Pass a unique `Symbol` to the `toJSON` call on the given object so that the object can save
additional values that wouldn't normally be saved. This doesn't conflict with normal usage
of `toJSON` (e.g. `JSON.stringify`) because that case also passes in a value:
- `undefined`, if it was called directly on the object
- the key for this object in the containing object
- the index of this object in the containing array
In any case, the value can never equal the unique `Symbol`, so it's guaranteed that the code
will only run for `WI.ObjectStore` operations.
(WI.ObjectStore.prototype.async.clear): Added.
* Localizations/en.lproj/localizedStrings.js:
2019-01-09 Devin Rousso <drousso@apple.com>
Web Inspector: Protocol Logging: log messages as objects if inspector^2 is open
https://bugs.webkit.org/show_bug.cgi?id=193284
Reviewed by Joseph Pecoraro.
If inspector^2 is closed, stringify all messages.
If inspector^2 is open, log each message JSON object without modifying it.
* UserInterface/Protocol/LoggingProtocolTracer.js:
(WI.LoggingProtocolTracer.prototype._processEntry):
2019-01-09 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Styles: clicking on property that soon to be discarded shouldn't start selection
https://bugs.webkit.org/show_bug.cgi?id=193218
<rdar://problem/47098303>
Reviewed by Devin Rousso.
* UserInterface/Views/SpreadsheetCSSStyleDeclarationSection.js:
(WI.SpreadsheetCSSStyleDeclarationSection.prototype._handleMouseDown):
A style property may get removed on blur event, so propertyElement may get removed from the DOM right when mousedown event happens.
(WI.SpreadsheetCSSStyleDeclarationSection.prototype._handleWindowClick):
(WI.SpreadsheetCSSStyleDeclarationSection.prototype._handleClick):
(WI.SpreadsheetCSSStyleDeclarationSection.prototype._stopSelection):
2019-01-08 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Styles: Undo reverts all changes at once
https://bugs.webkit.org/show_bug.cgi?id=177676
<rdar://problem/34745031>
Reviewed by Devin Rousso.
Command-Z used to revert all changes at once because Web Inspector never
set any history checkpoints in the style editor.
* UserInterface/Views/SpreadsheetStyleProperty.js:
(WI.SpreadsheetStyleProperty.prototype.spreadsheetTextFieldDidBlur):
* UserInterface/Views/SpreadsheetTextField.js:
(WI.SpreadsheetTextField.prototype._handleBlur):
2019-01-08 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Use prefers-color-scheme instead of prefers-dark-interface
https://bugs.webkit.org/show_bug.cgi?id=193265
Reviewed by Timothy Hatcher.
* UserInterface/Views/AuditTestContentView.css:
(@media (prefers-color-scheme: dark)):
* UserInterface/Views/AuditTestGroupContentView.css:
(@media (prefers-color-scheme: dark)):
* UserInterface/Views/BezierEditor.css:
(@media (prefers-color-scheme: dark)):
* UserInterface/Views/BoxModelDetailsSectionRow.css:
(@media (prefers-color-scheme: dark)):
* UserInterface/Views/BreakpointActionView.css:
(@media (prefers-color-scheme: dark)):
* UserInterface/Views/BreakpointPopoverController.css:
(@media (prefers-color-scheme: dark)):
* UserInterface/Views/ButtonNavigationItem.css:
(@media (prefers-color-scheme: dark)):
* UserInterface/Views/ButtonToolbarItem.css:
(@media (prefers-color-scheme: dark)):
* UserInterface/Views/CallFrameView.css:
(@media (prefers-color-scheme: dark)):
* UserInterface/Views/CanvasContentView.css:
(@media (prefers-color-scheme: dark)):
* UserInterface/Views/CanvasOverviewContentView.css:
(@media (prefers-color-scheme: dark)):
* UserInterface/Views/CanvasSidebarPanel.css:
(@media (prefers-color-scheme: dark)):
* UserInterface/Views/CanvasTabContentView.css:
(@media (prefers-color-scheme: dark)):
* UserInterface/Views/CodeMirrorOverrides.css:
(@media (prefers-color-scheme: dark)):
* UserInterface/Views/CompletionSuggestionsView.css:
(@media (prefers-color-scheme: dark)):
* UserInterface/Views/ComputedStyleDetailsPanel.css:
(@media (prefers-color-scheme: dark)):
* UserInterface/Views/ComputedStyleSection.css:
(@media (prefers-color-scheme: dark)):
* UserInterface/Views/ConsoleMessageView.css:
(@media (prefers-color-scheme: dark)):
* UserInterface/Views/ConsolePrompt.css:
(@media (prefers-color-scheme: dark)):
* UserInterface/Views/DOMNodeDetailsSidebarPanel.css:
(@media (prefers-color-scheme: dark)):
* UserInterface/Views/DOMTreeOutline.css:
(@media (prefers-color-scheme: dark)):
* UserInterface/Views/DataGrid.css:
(@media (prefers-color-scheme: dark)):
* UserInterface/Views/DebuggerDashboardView.css:
(@media (prefers-color-scheme: dark)):
* UserInterface/Views/DebuggerSidebarPanel.css:
(@media (prefers-color-scheme: dark)):
* UserInterface/Views/DefaultDashboardView.css:
(@media (prefers-color-scheme: dark)):
* UserInterface/Views/DetailsSection.css:
(@media (prefers-color-scheme: dark)):
* UserInterface/Views/DividerNavigationItem.css:
(@media (prefers-color-scheme: dark)):
* UserInterface/Views/Editing.css:
(@media (prefers-color-scheme: dark)):
* UserInterface/Views/FindBanner.css:
(@media (prefers-color-scheme: dark)):
* UserInterface/Views/FontResourceContentView.css:
(@media (prefers-color-scheme: dark)):
* UserInterface/Views/FormattedValue.css:
(@media (prefers-color-scheme: dark)):
* UserInterface/Views/GeneralStyleDetailsSidebarPanel.css:
(@media (prefers-color-scheme: dark)):
* UserInterface/Views/HoverMenu.css:
(@media (prefers-color-scheme: dark)):
* UserInterface/Views/ImageResourceContentView.css:
(@media (prefers-color-scheme: dark)):
* UserInterface/Views/IndexedDatabaseObjectStoreContentView.css:
(@media (prefers-color-scheme: dark)):
* UserInterface/Views/LogContentView.css:
(@media (prefers-color-scheme: dark)):
* UserInterface/Views/Main.css:
(:root):
(@media (prefers-color-scheme: dark)):
* UserInterface/Views/NetworkDetailView.css:
(@media (prefers-color-scheme: dark)):
* UserInterface/Views/NetworkTableContentView.css:
(@media (prefers-color-scheme: dark)):
* UserInterface/Views/NewTabContentView.css:
(@media (prefers-color-scheme: dark)):
* UserInterface/Views/ObjectPreviewView.css:
(@media (prefers-color-scheme: dark)):
* UserInterface/Views/ObjectTreePropertyTreeElement.css:
(@media (prefers-color-scheme: dark)):
* UserInterface/Views/OpenResourceDialog.css:
(@media (prefers-color-scheme: dark)):
* UserInterface/Views/ProgressView.css:
(@media (prefers-color-scheme: dark)):
* UserInterface/Views/QuickConsole.css:
(@media (prefers-color-scheme: dark)):
* UserInterface/Views/RecordingActionTreeElement.css:
(@media (prefers-color-scheme: dark)):
* UserInterface/Views/RecordingContentView.css:
(@media (prefers-color-scheme: dark)):
* UserInterface/Views/RecordingStateDetailsSidebarPanel.css:
(@media (prefers-color-scheme: dark)):
* UserInterface/Views/ResourceSecurityContentView.css:
(@media (prefers-color-scheme: dark)):
* UserInterface/Views/ResourceSizesContentView.css:
(@media (prefers-color-scheme: dark)):
* UserInterface/Views/ResourceTimingBreakdownView.css:
(@media (prefers-color-scheme: dark)):
* UserInterface/Views/ScopeBar.css:
(@media (prefers-color-scheme: dark)):
* UserInterface/Views/ScopeChainDetailsSidebarPanel.css:
(@media (prefers-color-scheme: dark)):
* UserInterface/Views/SearchBar.css:
(@media (prefers-color-scheme: dark)):
* UserInterface/Views/SearchSidebarPanel.css:
(@media (prefers-color-scheme: dark)):
* UserInterface/Views/SettingsTabContentView.css:
(@media (prefers-color-scheme: dark)):
* UserInterface/Views/ShaderProgramContentView.css:
(@media (prefers-color-scheme: dark)):
* UserInterface/Views/ShaderProgramTreeElement.css:
(@media (prefers-color-scheme: dark)):
* UserInterface/Views/SourceCodeTextEditor.css:
(@media (prefers-color-scheme: dark)):
* UserInterface/Views/SpreadsheetCSSStyleDeclarationEditor.css:
(@media (prefers-color-scheme: dark)):
* UserInterface/Views/SpreadsheetCSSStyleDeclarationSection.css:
(@media (prefers-color-scheme: dark)):
* UserInterface/Views/SpreadsheetRulesStyleDetailsPanel.css:
(@media (prefers-color-scheme: dark)):
* UserInterface/Views/SyntaxHighlightingDefaultTheme.css:
(@media (prefers-color-scheme: dark)):
* UserInterface/Views/TabBar.css:
(@media (prefers-color-scheme: dark)):
* UserInterface/Views/Table.css:
(@media (prefers-color-scheme: dark)):
* UserInterface/Views/TextEditor.css:
(@media (prefers-color-scheme: dark)):
* UserInterface/Views/TimelineDataGrid.css:
(@media (prefers-color-scheme: dark)):
* UserInterface/Views/TimelineIcons.css:
(@media (prefers-color-scheme: dark)):
* UserInterface/Views/TimelineOverview.css:
(@media (prefers-color-scheme: dark)):
* UserInterface/Views/Toolbar.css:
(@media (prefers-color-scheme: dark)):
* UserInterface/Views/TreeOutline.css:
(@media (prefers-color-scheme: dark)):
* UserInterface/Views/URLBreakpointPopover.css:
(@media (prefers-color-scheme: dark)):
* UserInterface/Views/Variables.css:
(@media (prefers-color-scheme: dark)):
* UserInterface/Views/WebSocketContentView.css:
(@media (prefers-color-scheme: dark)):
2019-01-07 Devin Rousso <drousso@apple.com>
Web Inspector: Audit: run arrow shouldn't be visible when running tests
https://bugs.webkit.org/show_bug.cgi?id=192209
<rdar://problem/46423615>
Reviewed by Brian Burg.
* UserInterface/Views/AuditTreeElement.js:
(WI.AuditTreeElement.prototype.onattach):
(WI.AuditTreeElement.prototype.ondetach):
(WI.AuditTreeElement.prototype._updateLevel):
(WI.AuditTreeElement.prototype._handleAuditManagerTestScheduled): Added.
(WI.AuditTreeElement.prototype._handleAuditManagerTestCompleted): Added.
* UserInterface/Views/AuditTreeElement.css: Added.
(.tree-outline .item.audit:matches(.test-case, .test-group):not(.manager-active) > .status:hover > img): Added.
(.tree-outline .item.audit.manager-active > .status > img.show-on-hover, .tree-outline .item.audit.test-group.expanded > .status:hover > :not(img), .tree-outline .item.audit.test-group-result.expanded > .status): Added.
(.tree-outline .item.audit:matches(.test-case, .test-group) > .status:hover > img): Deleted.
(.tree-outline .item.audit.test-group.expanded > .status:hover > :not(img), .tree-outline .item.audit.test-group-result.expanded > .status): Deleted.
2019-01-07 Devin Rousso <drousso@apple.com>
Web Inspector: extend XHR breakpoints to work with fetch
https://bugs.webkit.org/show_bug.cgi?id=185843
<rdar://problem/40431027>
Reviewed by Matt Baker.
* UserInterface/Controllers/DOMDebuggerManager.js:
(WI.DOMDebuggerManager):
(WI.DOMDebuggerManager.supportsURLBreakpoints): Added.
(WI.DOMDebuggerManager.prototype.get urlBreakpoints): Added.
(WI.DOMDebuggerManager.prototype.urlBreakpointForURL): Added.
(WI.DOMDebuggerManager.prototype.addURLBreakpoint): Added.
(WI.DOMDebuggerManager.prototype.removeURLBreakpoint): Added.
(WI.DOMDebuggerManager.prototype._speculativelyResolveBreakpoints):
(WI.DOMDebuggerManager.prototype._updateURLBreakpoint): Added.
(WI.DOMDebuggerManager.prototype._resolveURLBreakpoint): Added.
(WI.DOMDebuggerManager.prototype._saveURLBreakpoints): Added.
(WI.DOMDebuggerManager.prototype._urlBreakpointDisabledStateDidChange): Added.
(WI.DOMDebuggerManager.prototype.get xhrBreakpoints): Deleted.
(WI.DOMDebuggerManager.prototype.xhrBreakpointForURL): Deleted.
(WI.DOMDebuggerManager.prototype.addXHRBreakpoint): Deleted.
(WI.DOMDebuggerManager.prototype.removeXHRBreakpoint): Deleted.
(WI.DOMDebuggerManager.prototype._updateXHRBreakpoint.breakpointUpdated): Deleted.
(WI.DOMDebuggerManager.prototype._updateXHRBreakpoint): Deleted.
(WI.DOMDebuggerManager.prototype._resolveXHRBreakpoint): Deleted.
(WI.DOMDebuggerManager.prototype._saveXHRBreakpoints): Deleted.
(WI.DOMDebuggerManager.prototype._xhrBreakpointDisabledStateDidChange): Deleted.
* UserInterface/Controllers/DebuggerManager.js:
(WI.DebuggerManager.prototype._pauseReasonFromPayload):
* UserInterface/Views/DebuggerSidebarPanel.js:
(WI.DebuggerSidebarPanel):
(WI.DebuggerSidebarPanel.prototype.willDismissPopover):
(WI.DebuggerSidebarPanel.prototype._addBreakpoint):
(WI.DebuggerSidebarPanel.prototype._treeSelectionDidChange):
(WI.DebuggerSidebarPanel.prototype._addTreeElement):
(WI.DebuggerSidebarPanel.prototype._updatePauseReasonSection):
(WI.DebuggerSidebarPanel.prototype._handleCreateBreakpointClicked):
* UserInterface/Views/NavigationSidebarPanel.js:
(WI.NavigationSidebarPanel.prototype._isTreeElementWithoutRepresentedObject):
* UserInterface/Models/URLBreakpoint.js: Renamed from Source/WebInspectorUI/UserInterface/Models/XHRBreakpoint.js.
* UserInterface/Views/URLBreakpointPopover.css: Renamed from Source/WebInspectorUI/UserInterface/Views/XHRBreakpointPopover.css.
* UserInterface/Views/URLBreakpointPopover.js: Renamed from Source/WebInspectorUI/UserInterface/Views/XHRBreakpointPopover.js.
* UserInterface/Views/URLBreakpointTreeElement.css: Renamed from Source/WebInspectorUI/UserInterface/Views/XHRBreakpointTreeElement.css.
* UserInterface/Views/URLBreakpointTreeElement.js: Renamed from Source/WebInspectorUI/UserInterface/Views/XHRBreakpointTreeElement.js.
* UserInterface/Base/Setting.js:
(WI.Setting.migrateValue): Added.
* UserInterface/Main.html:
* UserInterface/Test.html:
* Localizations/en.lproj/localizedStrings.js:
2019-01-07 Devin Rousso <drousso@apple.com>
Web Inspector: Network: show secure connection details per-request
https://bugs.webkit.org/show_bug.cgi?id=191539
<rdar://problem/45979891>
Reviewed by Joseph Pecoraro.
* UserInterface/Models/Resource.js:
(WI.Resource):
(WI.Resource.prototype.get security): Added.
(WI.Resource.prototype.updateForResponse):
(WI.Resource.prototype.updateWithMetrics):
(WI.Resource.prototype.get responseSecurity): Deleted.
* UserInterface/Views/ResourceSecurityContentView.js:
(WI.ResourceSecurityContentView):
(WI.ResourceSecurityContentView.prototype.initialLayout):
(WI.ResourceSecurityContentView.prototype.layout):
(WI.ResourceSecurityContentView.prototype._refreshConnectionSection): Added.
(WI.ResourceSecurityContentView.prototype._refreshCetificateSection):
(WI.ResourceSecurityContentView.prototype._handleResourceMetricsDidChange): Added.
* UserInterface/Views/ResourceSecurityContentView.css:
(body[dir] .resource-security > section:matches(.connection, .certificate) > .details): Added.
(@media (prefers-dark-interface) body[dir] .resource-security > section:matches(.connection, .certificate) > .details): Added.
(body[dir] .resource-security > section.certificate > .details): Deleted.
(@media (prefers-dark-interface) body[dir] .resource-security > section.certificate > .details): Deleted.
* Localizations/en.lproj/localizedStrings.js:
2019-01-07 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: "white" isn't recognized as a color keyword
https://bugs.webkit.org/show_bug.cgi?id=193173
<rdar://problem/47068595>
Reviewed by Joseph Pecoraro.
Attempt to parse "atom" token types as colors.
Display color picker only for color-aware properties. For instance,
display it for "color: white" but not for "-apple-pay-button-style: white".
* UserInterface/Models/CSSKeywordCompletions.js:
(addKeywordsForName):
(WI.CSSKeywordCompletions.forProperty):
(WI.CSSKeywordCompletions.isColorAwareProperty):
* UserInterface/Views/SpreadsheetStyleProperty.js:
(WI.SpreadsheetStyleProperty.prototype._renderValue):
(WI.SpreadsheetStyleProperty.prototype._addColorTokens):
2019-01-04 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: subclasses of WI.ClusterContentView don't save/restore content views after the initial view
https://bugs.webkit.org/show_bug.cgi?id=192451
<rdar://problem/46800958>
Reviewed by Devin Rousso.
* UserInterface/Models/BackForwardEntry.js:
(WI.BackForwardEntry.prototype.prepareToHide):
* UserInterface/Views/ClusterContentView.js:
(WI.ClusterContentView.prototype.get shouldSaveStateOnHide):
* UserInterface/Views/ContentView.js:
(WI.ContentView.prototype.get shouldSaveStateOnHide):
Allow ClusterContentViews to save its state whenever its hidden,
this means it can be properly restored to the last state it had
instead of the initial state it was shown with.
2019-01-04 Devin Rousso <drousso@apple.com>
Web Inspector: Audit: disable breakpoints when running Audit
https://bugs.webkit.org/show_bug.cgi?id=193158
<rdar://problem/47057083>
Reviewed by Joseph Pecoraro.
* UserInterface/Controllers/DebuggerManager.js:
(WI.DebuggerManager):
(WI.DebuggerManager.prototype._startDisablingBreakpointsTemporarily):
(WI.DebuggerManager.prototype._stopDisablingBreakpointsTemporarily):
(WI.DebuggerManager.prototype._handleAuditManagerTestScheduled): Added.
(WI.DebuggerManager.prototype._handleAuditManagerTestCompleted): Added.
* UserInterface/Views/DebuggerSidebarPanel.js:
(WI.DebuggerSidebarPanel.prototype._timelineCapturingWillStart):
(WI.DebuggerSidebarPanel.prototype._timelineCapturingStopped):
(WI.DebuggerSidebarPanel.prototype._handleAuditManagerTestScheduled): Added.
(WI.DebuggerSidebarPanel.prototype._handleAuditManagerTestCompleted): Added.
(WI.DebuggerSidebarPanel.prototype._updateBreakpointsDisabledBanner):
* UserInterface/Views/DebuggerSidebarPanel.css:
(.sidebar > .panel.navigation.debugger .warning-banner + .warning-banner): Added.
* UserInterface/Base/Main.js:
(WI.loaded):
* UserInterface/Test/Test.js:
(WI.loaded):
Move `WI.auditManager` higher in the managers list so that it can be used in
`WI.DebuggerManager`'s constructor.
* Localizations/en.lproj/localizedStrings.js:
2019-01-04 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Add a Setting Toggle for Source Maps
https://bugs.webkit.org/show_bug.cgi?id=193148
Reviewed by Devin Rousso.
* UserInterface/Controllers/NetworkManager.js:
(WI.NetworkManager.prototype.downloadSourceMap):
Don't download source maps if the setting is disabled.
* UserInterface/Base/Setting.js:
* UserInterface/Views/SettingsTabContentView.js:
(WI.SettingsTabContentView.prototype._createGeneralSettingsView):
Settings toggle for source maps. Enabled by default.
* Localizations/en.lproj/localizedStrings.js:
2019-01-04 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Include `globalThis` in default JavaScript completions
https://bugs.webkit.org/show_bug.cgi?id=193147
Reviewed by Devin Rousso.
* UserInterface/Controllers/CodeMirrorCompletionController.js:
Add `globalThis` which is a new global value.
2019-01-03 Devin Rousso <drousso@apple.com>
Web Inspector: conic-gradient color picker doesn't accurately show color when saturation value is not 100%
https://bugs.webkit.org/show_bug.cgi?id=192729
<rdar://problem/46746815>
Reviewed by Joseph Pecoraro.
Rework `WI.ColorWheel` to use similar canvas drawing logic as `WI.LegacyColorWheel` so that
it's able to adjust the saturation value as the pixels gets closer to the center.
* UserInterface/Models/Color.js:
(WI.Color.rgb2hsl): Added.
(WI.Color.hsl2rgb): Added.
(WI.Color.cmyk2rgb):
(WI.Color.prototype.isKeyword):
(WI.Color.prototype._toRGBString):
(WI.Color.prototype._toRGBAString):
(WI.Color.prototype._toHSLString):
(WI.Color.prototype._toHSLAString):
(WI.Color.prototype._rgbaToHSLA):
(WI.Color.prototype._hslaToRGBA):
(WI.Color.rgb2hsv): Deleted.
(WI.Color.hsv2rgb): Deleted.
(WI.Color.prototype._rgbToHSL): Deleted.
(WI.Color.prototype._hslToRGB): Deleted.
Adjust the conversion functions of `WI.Color` to be more accurate.
* UserInterface/Views/ColorWheel.js:
(WI.ColorWheel):
(WI.ColorWheel.prototype.set dimension):
(WI.ColorWheel.prototype.set brightness):
(WI.ColorWheel.prototype.get tintedColor):
(WI.ColorWheel.prototype.set tintedColor):
(WI.ColorWheel.prototype._updateColorForMouseEvent):
(WI.ColorWheel.prototype._updateCanvas): Added.
(WI.ColorWheel.prototype._updateGradient): Deleted.
* UserInterface/Views/ColorWheel.css:
(.color-wheel > canvas): Added.
(.color-wheel > .gradient): Deleted.
* UserInterface/Views/ColorPicker.js:
(WI.ColorPicker):
(WI.ColorPicker.prototype.set color):
(WI.ColorPicker.prototype.sliderValueDidChange):
(WI.ColorPicker.prototype._updateSliders):
(WI.ColorPicker.prototype._showColorComponentInputs):
(WI.ColorPicker.supportsConicGradient): Deleted.
* UserInterface/Main.html:
* UserInterface/Views/LegacyColorWheel.js: Removed.
2019-01-02 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Styles: selection lost when inspector is blurred
https://bugs.webkit.org/show_bug.cgi?id=192124
<rdar://problem/46800965>
Reviewed by Devin Rousso.
* UserInterface/Views/SpreadsheetCSSStyleDeclarationEditor.css:
(body:matches(.window-docked-inactive, .window-inactive) .spreadsheet-style-declaration-editor .property.selected):
Selection should be gray when Web Inspector window isn't focused.
* UserInterface/Views/SpreadsheetStyleProperty.js:
2019-01-02 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Styles: it shouldn't be possible to delete read-only properties
https://bugs.webkit.org/show_bug.cgi?id=193099
<rdar://problem/47016335>
Reviewed by Devin Rousso.
* UserInterface/Views/SpreadsheetCSSStyleDeclarationEditor.js:
(WI.SpreadsheetCSSStyleDeclarationEditor):
Drive-by: Forward Delete should work the same way as Delete (Backspace).
2019-01-02 Devin Rousso <webkit@devinrousso.com>
Web Inspector: Implement `queryObjects` Command Line API
https://bugs.webkit.org/show_bug.cgi?id=176766
<rdar://problem/34890689>
Reviewed by Joseph Pecoraro.
* UserInterface/Controllers/JavaScriptRuntimeCompletionProvider.js:
(WI.JavaScriptRuntimeCompletionProvider.completionControllerCompletionsNeeded.receivedPropertyNames):
Add `queryObjects` to the list of command line functions.
2018-12-21 Devin Rousso <drousso@apple.com>
Web Inspector: Styles Redesign: remove unused CSS style icons
https://bugs.webkit.org/show_bug.cgi?id=192999
<rdar://problem/46912094>
Reviewed by Matt Baker.
* UserInterface/Main.html:
* UserInterface/Views/StyleRuleIcons.css: Removed.
* UserInterface/Images/StyleRule.svg: Removed.
* UserInterface/Images/StyleRuleInheritedElement.svg: Removed.
* UserInterface/Images/StyleRulePseudoElement.svg: Removed.
* WebInspectorUI.vcxproj/WebInspectorUI.vcxproj:
* WebInspectorUI.vcxproj/WebInspectorUI.vcxproj.filters:
2018-12-21 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Styles: editing focus lost when inspector is blurred
https://bugs.webkit.org/show_bug.cgi?id=192123
<rdar://problem/46800966>
Reviewed by Devin Rousso.
* UserInterface/Views/SpreadsheetSelectorField.js:
(WI.SpreadsheetSelectorField.prototype._handleBlur):
* UserInterface/Views/SpreadsheetTextField.js:
(WI.SpreadsheetTextField.prototype._handleBlur):
2018-12-21 Devin Rousso <drousso@apple.com>
Web Inspector: Settings: experimental setting editors are misaligned in other locales
https://bugs.webkit.org/show_bug.cgi?id=192971
<rdar://problem/46718451>
Reviewed by Joseph Pecoraro.
* UserInterface/Views/SettingsTabContentView.css:
(.content-view.settings > .settings-view > .container):
(.content-view.settings > .settings-view > .container > .title):
2018-12-21 Devin Rousso <drousso@apple.com>
Web Inspector: update scroll position when revealing a virtualized WI.DataGridNode
https://bugs.webkit.org/show_bug.cgi?id=192992
<rdar://problem/46886427>
Reviewed by Joseph Pecoraro.
When `reveal`ing a `WI.DataGridNode`, if it is not currently in the DOM tree (e.g. it's been
virtualized by it's owner `WI.DataGrid`), we need to scroll to it's position so that it gets
added to the DOM tree before it can be revealed/selected.
* UserInterface/Views/DataGrid.js:
(WI.DataGrid.prototype.layout):
(WI.DataGrid.prototype.updateVisibleRows):
(WI.DataGrid.prototype._updateVisibleRows): Deleted.
* UserInterface/Views/DataGridNode.js:
(WI.DataGridNode.prototype.reveal):
2018-12-20 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Dark Mode: Type profiler popovers have black text on dark background
https://bugs.webkit.org/show_bug.cgi?id=192916
<rdar://problem/46863518>
Reviewed by Devin Rousso.
* UserInterface/Views/SourceCodeTextEditor.css:
(.popover .debugger-popover-content > .body):
* UserInterface/Views/TypeTreeElement.css:
(.item.type-tree-element.prototype):
(.item.type-tree-element.prototype:hover,):
* UserInterface/Views/TypeTreeView.css:
(.type-tree):
* UserInterface/Views/Variables.css:
(:root):
2018-12-20 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Styles: Pressing Esc when editing name/value should select entire property
https://bugs.webkit.org/show_bug.cgi?id=192919
Reviewed by Devin Rousso.
- Esc still hides the completion popover.
- Esc still discards changes.
- When there's no completion popover, Esc selects outer scope.
I.e., it goes from editing name/value to selecting the entire property.
- Pressing Esc for newly added properties discards those properties.
* UserInterface/Views/SpreadsheetCSSStyleDeclarationEditor.js:
(WI.SpreadsheetCSSStyleDeclarationEditor.prototype.spreadsheetStylePropertyRemoved):
(WI.SpreadsheetCSSStyleDeclarationEditor.prototype.spreadsheetStylePropertyDidPressEsc):
* UserInterface/Views/SpreadsheetStyleProperty.js:
(WI.SpreadsheetStyleProperty.prototype.spreadsheetTextFieldDidPressEsc):
* UserInterface/Views/SpreadsheetTextField.js:
(WI.SpreadsheetTextField.prototype._discardChange):
(WI.SpreadsheetTextField.prototype._handleKeyDown):
2018-12-20 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Charles Proxy errors opening har files exported from Safari (invalid startedDateTime)
https://bugs.webkit.org/show_bug.cgi?id=192959
<rdar://problem/46863411>
Reviewed by Brian Burg.
* UserInterface/Views/NetworkTableContentView.js:
(WI.NetworkTableContentView.prototype.tableCellContextMenuClicked):
(WI.NetworkTableContentView.prototype._updateExportButton):
(WI.NetworkTableContentView.prototype._canExportHAR):
Disallow HAR export if we don't have load data, such as the requestSentDate for
the main resource or sub-resources.
(WI.NetworkTableContentView.prototype._HARResources):
Only export resources that have load data.
2018-12-20 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Autoformat doesn't work on icloud.com (javascript-packed.js)
https://bugs.webkit.org/show_bug.cgi?id=192946
<rdar://problem/42546126>
Rubber-stamped by Devin Rousso.
* UserInterface/Base/Utilities.js:
(whitespaceRatio):
(isTextLikelyMinified):
Check the first 2500 and the last 2500 characters whitespace ratio.
If either is below 20% then treat as minified.
2018-12-20 Joseph Pecoraro <pecoraro@apple.com>
ITMLKit Inspector: Elements tab does not show DOM Tree
https://bugs.webkit.org/show_bug.cgi?id=192910
<rdar://problem/46680585>
Reviewed by Brian Burg.
* UserInterface/Protocol/Connection.js:
(InspectorBackend.Connection.prototype._dispatchEvent):
Better logging for errors.
* UserInterface/Base/Main.js:
* UserInterface/Controllers/AppController.js:
(WI.AppController.prototype.activateExtraDomains):
Let Targets get a chance to activate extra domains.
Perform a little more work in these cases.
* UserInterface/Protocol/Target.js:
(WI.Target):
(WI.Target.prototype.activateExtraDomain):
Expose agents for domains that are active.
Expose agents for extra domains when they are activated.
2018-12-20 Joseph Pecoraro <pecoraro@apple.com>
ITMLKit Inspector: Computed Style Box Model section throws exceptions
https://bugs.webkit.org/show_bug.cgi?id=192911
<rdar://problem/46861112>
Reviewed by Matt Baker.
* UserInterface/Views/BoxModelDetailsSectionRow.js:
(WI.BoxModelDetailsSectionRow.prototype._updateMetrics.createBoxPartElement):
(WI.BoxModelDetailsSectionRow.prototype._updateMetrics.createContentAreaElement):
(WI.BoxModelDetailsSectionRow.prototype._updateMetrics):
ITMLKit doesn't always provide a display/position/width/height etc properties.
Protect against this, and just show an empty message in the box model section
if those properties do not exist.
2018-12-20 Devin Rousso <drousso@apple.com>
Web Inspector: UIString should take an optional key and description to aid localization
https://bugs.webkit.org/show_bug.cgi?id=153962
<rdar://problem/24542505>
Reviewed by Brian Burg.
* UserInterface/Base/LoadLocalizedStrings.js:
(WI.UIString):
* UserInterface/Test/Test.js:
(WI.UIString):
* UserInterface/Views/AuditTestGroupContentView.js:
(WI.AuditTestGroupContentView.prototype.initialLayout):
2018-12-20 Devin Rousso <drousso@apple.com>
Web Inspector: Audits: don't cache default audits
https://bugs.webkit.org/show_bug.cgi?id=192918
<rdar://problem/46626543>
Reviewed by Brian Burg.
Instead of adding the default audits to the "audits" `WI.ObjectStore`, which preserves them
across WebInspector sessions, load them every time WebInspector is opened (unless there are
existing audits) so that the localized strings are able to respond to locale changes.
* UserInterface/Controllers/AuditManager.js:
(WI.AuditManager.prototype.removeTest):
(WI.AuditManager.prototype.addDefaultTestsIfNeeded):
2018-12-20 Devin Rousso <drousso@apple.com>
Web Inspector: Dark Mode: unreadable background color for tables containing object previews
https://bugs.webkit.org/show_bug.cgi?id=192887
<rdar://problem/46855270>
Reviewed by Brian Burg.
* UserInterface/Views/LogContentView.css:
(.console-messages:focus .console-item .data-grid tr.selected td:not(:last-child)): Added.
(@media (prefers-dark-interface) .console-item .data-grid tr.selected): Added.
(@media (prefers-dark-interface) .console-messages:focus .console-item.selected .data-grid tr.selected): Added.
(@media (prefers-dark-interface) .console-messages:focus .console-item .data-grid tr.selected td:not(:last-child)): Added.
* UserInterface/Views/IndexedDatabaseObjectStoreContentView.css:
(.content-view.indexed-database-object-store > .data-grid tr.selected):
(.content-view.indexed-database-object-store > .data-grid:focus tr.selected): Added.
(@media (prefers-dark-interface) .content-view.indexed-database-object-store > .data-grid tr.selected): Added.
(@media (prefers-dark-interface) .content-view.indexed-database-object-store > .data-grid:focus tr.selected): Added.
(@media (prefers-dark-interface) .content-view.indexed-database-object-store > .data-grid:focus tr.selected td:not(:last-child)): Added.
2018-12-19 Devin Rousso <drousso@apple.com>
Web Inspector: Audit: fix descriptions for default tests
https://bugs.webkit.org/show_bug.cgi?id=192764
<rdar://problem/46729437>
Reviewed by Matt Baker.
* UserInterface/Controllers/AuditManager.js:
(WI.AuditManager.prototype.addDefaultTestsIfNeeded):
* Localizations/en.lproj/localizedStrings.js:
2018-12-19 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: "E" icon on debugger dashboard is too close to current function name
https://bugs.webkit.org/show_bug.cgi?id=192915
Reviewed by Matt Baker.
* UserInterface/Views/DebuggerDashboardView.css:
(.dashboard.debugger > .location):
(body[dir=ltr] .dashboard.debugger > .location :matches(.function-icon, .event-listener-icon)):
(body[dir=rtl] .dashboard.debugger > .location :matches(.function-icon, .event-listener-icon)):
(.dashboard.debugger > .location .function-icon): Deleted.
(body[dir=ltr] .dashboard.debugger > .location .function-icon): Deleted.
(body[dir=rtl] .dashboard.debugger > .location .function-icon): Deleted.
2018-12-19 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Dark Mode: ThreadTreeElement status icon is hard to see when hovered
https://bugs.webkit.org/show_bug.cgi?id=192097
<rdar://problem/46318421>
Reviewed by Matt Baker.
* UserInterface/Views/ThreadTreeElement.css:
(.tree-outline > .item.thread .status-button.resume):
(.tree-outline > .item.thread .status-button.resume:active):
2018-12-19 Devin Rousso <drousso@apple.com>
Web Inspector: Uncaught Exception: TypeError: null is not an object (evaluating 'effectiveDOMNode.enabledPseudoClasses')
https://bugs.webkit.org/show_bug.cgi?id=192783
Reviewed by Joseph Pecoraro.
* UserInterface/Views/GeneralStyleDetailsSidebarPanel.js:
(WI.GeneralStyleDetailsSidebarPanel.prototype._forcedPseudoClassCheckboxChanged):
(WI.GeneralStyleDetailsSidebarPanel.prototype._updatePseudoClassCheckboxes):
2018-12-19 Devin Rousso <drousso@apple.com>
Web Inspector: REGRESSION (r237195): Timelines: selecting a rendering frame row moves the time selection
https://bugs.webkit.org/show_bug.cgi?id=192773
<rdar://problem/46782446>
Reviewed by Joseph Pecoraro.
* UserInterface/Views/TimelineOverview.js:
(WI.TimelineOverview.prototype._recordSelected):
The Frames timeline uses `frameIndex` instead of `startTime`/`endTime`, so when trying to
ensure that the selected record is within the filtered range, use `frameIndex` instead.
The associated `WI.TimelineRuler` will already be using an index-based approach for
selection, so this will match.
2018-12-19 Devin Rousso <drousso@apple.com>
Web Inspector: Canvas: the recording auto-capture input shouldn't start focused
https://bugs.webkit.org/show_bug.cgi?id=192454
Reviewed by Joseph Pecoraro.
* UserInterface/Views/CanvasOverviewContentView.js:
(WI.CanvasOverviewContentView.prototype._updateRecordingAutoCaptureCheckboxLabel):
(WI.CanvasOverviewContentView.prototype._handleCanvasRecordingAutoCaptureFrameCountChanged):
2018-12-19 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Styles: shift-clicking a color-swatch to change formats starts editing the color
https://bugs.webkit.org/show_bug.cgi?id=192784
<rdar://problem/46801028>
Reviewed by Devin Rousso.
* UserInterface/Views/SpreadsheetStyleProperty.js:
(WI.SpreadsheetStyleProperty.prototype._createInlineSwatch):
2018-12-19 Matt Baker <mattbaker@apple.com>
Web Inspector: Elements tab: arrow key after undoing a DOM node delete selects the wrong element
https://bugs.webkit.org/show_bug.cgi?id=192871
<rdar://problem/46849060>
Reviewed by Devin Rousso.
Undoing a DOM node removal reinserts the node into the DOMTreeOutline.
When the reinserted node precedes the selected node in the tree, the
SelectionController should update `_lastSelectedIndex`.
* UserInterface/Controllers/SelectionController.js:
(WI.SelectionController.prototype.didInsertItem):
2018-12-19 Devin Rousso <drousso@apple.com>
Web Inspector: Audit: provide localization support for % pass display
https://bugs.webkit.org/show_bug.cgi?id=192870
<rdar://problem/46779245>
Reviewed by Brian Burg.
* UserInterface/Views/AuditTestGroupContentView.js:
(WI.AuditTestGroupContentView.prototype.initialLayout):
(WI.AuditTestGroupContentView.prototype.layout):
* UserInterface/Views/AuditTestGroupContentView.css:
(.content-view.audit-test-group > header > .percentage-pass):
(.content-view.audit-test-group > header > .percentage-pass > span): Added.
(@media (prefers-dark-interface) .content-view.audit-test-group > header > .percentage-pass): Added.
(@media (prefers-dark-interface) .content-view.audit-test-group > header > .percentage-pass > span): Added.
(.content-view.audit-test-group > header > .percentage-pass:not(:empty)::after): Deleted.
* Localizations/en.lproj/localizedStrings.js:
2018-12-19 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Computed: make UI more usable when the panel is narrow
https://bugs.webkit.org/show_bug.cgi?id=192578
<rdar://problem/46615753>
Reviewed by Devin Rousso.
* UserInterface/Views/ComputedStyleSection.css:
(.computed-style-section .computed-property-item .property-traces):
(.computed-style-section .computed-property-item.expanded .disclosure-button):
(.computed-style-section .computed-property-item .property-trace-item):
(.computed-style-section .computed-property-item .property-trace-item::before):
(.computed-style-section .computed-property-item .property):
(.computed-style-section .computed-property-item .property-trace-item .selector):
Allow CSS property values and selectors to take more than one line.
(.computed-style-section .property-trace-item .property .name,):
* UserInterface/Views/ComputedStyleSection.js:
(WI.ComputedStyleSection.prototype._createTrace):
* UserInterface/Views/SpreadsheetStyleProperty.js:
(WI.SpreadsheetStyleProperty.prototype.update):
2018-12-18 Simon Fraser <simon.fraser@apple.com>
Web Inspector: Timelines: correctly label Intersection Observer callbacks
https://bugs.webkit.org/show_bug.cgi?id=192669
<rdar://problem/46702490>
Reviewed by Joseph Pecoraro.
Add InspectorInstrumentation::willFireObserverCallback() and use it to wrap calls
to Intersection Observer, Performance Observer and Mutation Observer callbacks so
that they get correctly labeled in the Inspector timeline.
* Localizations/en.lproj/localizedStrings.js:
* UserInterface/Controllers/TimelineManager.js:
(WI.TimelineManager.prototype._processRecord):
* UserInterface/Models/ScriptTimelineRecord.js:
(WI.ScriptTimelineRecord.EventType.displayName):
* UserInterface/Views/TimelineTabContentView.js:
(WI.TimelineTabContentView.iconClassNameForRecord):
2018-12-19 Devin Rousso <drousso@apple.com>
Web Inspector: Audit: "Clear Filters" button gets clipped when window is vertically small
https://bugs.webkit.org/show_bug.cgi?id=192868
<rdar://problem/46780400>
Reviewed by Matt Baker.
* UserInterface/Views/Main.css:
(.message-text-view):
2018-12-19 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Dark Mode: selected text is too light when Inspector window is inactive
https://bugs.webkit.org/show_bug.cgi?id=190542
<rdar://problem/45238712>
Reviewed by Devin Rousso.
* UserInterface/Views/CodeMirrorOverrides.css:
(.CodeMirror .CodeMirror-selected):
2018-12-19 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: column sort controls in Layers tab sidebar don't render correctly in dark mode
https://bugs.webkit.org/show_bug.cgi?id=192845
Reviewed by Devin Rousso.
* UserInterface/Views/DataGrid.css:
(@media (prefers-dark-interface)):
(.data-grid th.sortable:active):
Drive-by: replace obnoxiously light background of the pressed header with a more subtle gray.
(.data-grid th.sort-ascending > div:first-child::after, .data-grid th.sort-descending > div:first-child::after):
Invert colors of the arrow glyph.
2018-12-18 Devin Rousso <drousso@apple.com>
Web Inspector: Layers: increase default column width for other localizations
https://bugs.webkit.org/show_bug.cgi?id=192812
<rdar://problem/46628625>
Reviewed by Brian Burg.
* UserInterface/Views/LayerDetailsSidebarPanel.js:
(WI.LayerDetailsSidebarPanel.prototype._buildDataGrid):
* UserInterface/Views/LayerTreeDetailsSidebarPanel.js:
(WI.LayerTreeDetailsSidebarPanel.prototype._buildDataGridSection):
2018-12-18 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: m3u8 content not shown, it should be text
https://bugs.webkit.org/show_bug.cgi?id=192731
<rdar://problem/46747728>
Reviewed by Devin Rousso.
* UserInterface/Base/MIMETypeUtilities.js:
(WI.shouldTreatMIMETypeAsText):
Support m3u8/m3u files as text.
2018-12-17 Devin Rousso <drousso@apple.com>
Web Inspector: Canvas: path view is misaligned
https://bugs.webkit.org/show_bug.cgi?id=192761
Reviewed by Joseph Pecoraro.
* UserInterface/Views/RecordingContentView.css:
(.content-view:not(.tab).recording :matches(img, canvas)):
(.content-view:not(.tab).recording canvas.path):
2018-12-17 Devin Rousso <drousso@apple.com>
Web Inspector: Audit: add plural result strings
https://bugs.webkit.org/show_bug.cgi?id=192769
<rdar://problem/46628680>
Reviewed by Brian Burg.
* UserInterface/Views/AuditTestContentView.js:
(WI.AuditTestContentView.prototype.showNoResultDataPlaceholder):
* UserInterface/Views/AuditTestGroupContentView.js:
(WI.AuditTestGroupContentView.prototype.layout):
* Localizations/en.lproj/localizedStrings.js:
2018-12-17 Devin Rousso <drousso@apple.com>
Web Inspector: Settings: add singular "space" UIString
https://bugs.webkit.org/show_bug.cgi?id=192766
<rdar://problem/46776948>
Reviewed by Brian Burg.
* UserInterface/Views/SettingEditor.js:
(WI.SettingEditor):
(WI.SettingEditor.prototype.get label):
(WI.SettingEditor.prototype.set label): Added.
* UserInterface/Views/SettingsTabContentView.js:
(WI.SettingsTabContentView.prototype._createGeneralSettingsView):
(WI.SettingsTabContentView.prototype._createGeneralSettingsView.addSpacesSetting): Added.
(WI.SettingsTabContentView.prototype._createGeneralSettingsView.addSpacesSetting.updateLabel): Added.
* Localizations/en.lproj/localizedStrings.js:
2018-12-15 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Styles: toggling selected properties may cause data corruption
https://bugs.webkit.org/show_bug.cgi?id=192396
<rdar://problem/46478383>
Reviewed by Devin Rousso.
Uncommenting a property after a commented out property used to insert an unnecessary semicolon,
and not updating ranges of the following properties.
For example:
/* color: red; */
/* font-size: 12px */
Uncommenting `font-size` would result in something like this:
/* color: red; */; font-size: 12px
^
unnecessary semicolon
Now the semicolon doesn't get inserted and the white space is preserved better:
/* color: red; */
font-size: 12px
* UserInterface/Models/CSSProperty.js:
(WI.CSSProperty.prototype._updateOwnerStyleText):
(WI.CSSProperty.prototype._appendSemicolonIfNeeded): Removed.
(WI.CSSProperty.prototype._prependSemicolonIfNeeded): Added.
* UserInterface/Views/SpreadsheetStyleProperty.js:
(WI.SpreadsheetStyleProperty.prototype.remove):
(WI.SpreadsheetStyleProperty.prototype.update):
(WI.SpreadsheetStyleProperty.prototype._handleNameChange):
(WI.SpreadsheetStyleProperty.prototype._handleValueChange):
Style declaration should be locked while editing. Add asserts to ensure this.
2018-12-14 Matt Baker <mattbaker@apple.com>
Web Inspector: REGRESSION(r238599): Uncaught Exception: TypeError: null is not an object (evaluating 'treeElement.listItemElement.classList')
https://bugs.webkit.org/show_bug.cgi?id=192090
<rdar://problem/46318614>
Reviewed by Devin Rousso.
* UserInterface/Views/TreeOutline.js:
(WI.TreeOutline.prototype.selectionControllerSelectionDidChange):
Check that `listItemElement` is valid before accessing it to update class
names. The selection can change before the TreeElement has been attached.
2018-12-14 Matt Baker <mattbaker@apple.com>
Web Inspector: Cookies view should use model objects instead of raw payload data
https://bugs.webkit.org/show_bug.cgi?id=189533
<rdar://problem/44364183>
Reviewed by Joseph Pecoraro and Devin Rousso.
* UserInterface/Models/Cookie.js:
(WI.Cookie):
(WI.Cookie.fromPayload):
(WI.Cookie.parseSetCookieResponseHeader):
(WI.Cookie.prototype.get type):
(WI.Cookie.prototype.get name):
(WI.Cookie.prototype.get value):
(WI.Cookie.prototype.get header):
(WI.Cookie.prototype.get expires):
(WI.Cookie.prototype.get maxAge):
(WI.Cookie.prototype.get path):
(WI.Cookie.prototype.get domain):
(WI.Cookie.prototype.get secure):
(WI.Cookie.prototype.get httpOnly):
(WI.Cookie.prototype.get sameSite):
(WI.Cookie.prototype.get size):
(WI.Cookie.prototype.get url):
(WI.Cookie.prototype.expirationDate):
Cleanup Cookie object; add pubic getters for data, `url` property,
static `fromPayload` method, and calculate `_size` if missing.
* UserInterface/Views/CookieStorageContentView.js:
(WI.CookieStorageContentView.prototype.tableDidRemoveRows):
(WI.CookieStorageContentView.prototype._reloadCookies):
Create Cookie objects from the payload instead of using raw payload data.
2018-12-13 Devin Rousso <drousso@apple.com>
Web Inspector: remove DOM.BackendNodeId and associated commands/events
https://bugs.webkit.org/show_bug.cgi?id=192478
Reviewed by Matt Baker.
* Versions/Inspector-iOS-8.0.json:
* Versions/Inspector-iOS-9.0.json:
* Versions/Inspector-iOS-9.3.json:
* Versions/Inspector-iOS-10.0.json:
* Versions/Inspector-iOS-10.3.json:
* Versions/Inspector-iOS-11.0.json:
* Versions/Inspector-iOS-11.3.json:
* Versions/Inspector-iOS-12.0.json:
* UserInterface/Protocol/Legacy/8.0/InspectorBackendCommands.js:
* UserInterface/Protocol/Legacy/9.0/InspectorBackendCommands.js:
* UserInterface/Protocol/Legacy/9.3/InspectorBackendCommands.js:
* UserInterface/Protocol/Legacy/10.0/InspectorBackendCommands.js:
* UserInterface/Protocol/Legacy/10.3/InspectorBackendCommands.js:
* UserInterface/Protocol/Legacy/11.0/InspectorBackendCommands.js:
* UserInterface/Protocol/Legacy/11.3/InspectorBackendCommands.js:
* UserInterface/Protocol/Legacy/12.0/InspectorBackendCommands.js:
2018-12-13 Devin Rousso <drousso@apple.com>
Web Inspector: experimental settings reload button disappears after changing more than one setting
https://bugs.webkit.org/show_bug.cgi?id=192645
<rdar://problem/46626204>
Reviewed by Joseph Pecoraro.
* UserInterface/Views/SettingsTabContentView.js:
(WI.SettingsTabContentView.prototype._createExperimentalSettingsView.listenForChange):
(WI.SettingsTabContentView.prototype._createExperimentalSettingsView):
2018-12-13 Matt Baker <mattbaker@apple.com>
Web Inspector: REGRESSION(r238602): Elements: deleting multiple DOM nodes doesn't select the nearest node after deletion
https://bugs.webkit.org/show_bug.cgi?id=192116
<rdar://problem/46344339>
Reviewed by Devin Rousso.
* UserInterface/Controllers/SelectionController.js:
(WI.SelectionController.prototype.removeSelectedItems):
Finding a new index to select should go through the delegate instead of
naively advancing the index.
* UserInterface/Views/DOMTreeElement.js:
(WI.DOMTreeElement.prototype._populateNodeContextMenu):
(WI.DOMTreeElement.prototype.ondelete): Deleted.
The menu item for removing the DOM node is now managed by the parent
DOMTreeOutline, since its UI and behavior now depend on whether there
are multiple elements selected.
* UserInterface/Views/DOMTreeOutline.js:
(WI.DOMTreeOutline.prototype.populateContextMenu):
(WI.DOMTreeOutline.prototype.ondelete.level):
(WI.DOMTreeOutline.prototype.ondelete):
Implement `ondelete` to remove selected DOM nodes using the delete and
backspace keys. Also used by the DOMTreeOutline's context menu handler.
2018-12-13 Matt Baker <mattbaker@apple.com>
Web Inspector: Table selection becomes corrupted when deleting selected cookies
https://bugs.webkit.org/show_bug.cgi?id=192388
<rdar://problem/46472364>
Reviewed by Devin Rousso.
* UserInterface/Controllers/SelectionController.js:
(WI.SelectionController):
(WI.SelectionController.prototype.didRemoveItems):
(WI.SelectionController.prototype._updateSelectedItems):
(WI.SelectionController.prototype.didRemoveItem): Deleted.
Replace `didRemoveItem` with a method taking an IndexSet. Calling the
single-index version while iterating over multiple rows in ascending
order is unsafe, a detail best left to the SelectionController.
* UserInterface/Views/Table.js:
(WI.Table.prototype.removeRow):
(WI.Table.prototype._removeRows):
Notify SelectionController of removed rows.
* UserInterface/Views/TreeOutline.js:
(WI.TreeOutline.prototype.insertChild):
(WI.TreeOutline.prototype.removeChildAtIndex):
Remove the child from the element's `children` after calling `_forgetTreeElement`,
which needs to calculate the child's index to pass to the SelectionController.
(WI.TreeOutline.prototype.removeChildren):
Remove child items during iteration so that `children` doesn't contain
detached TreeElements while calling `_forgetTreeElement`.
(WI.TreeOutline.prototype._rememberTreeElement):
(WI.TreeOutline.prototype._forgetTreeElement):
2018-12-10 Matt Baker <mattbaker@apple.com>
Web Inspector: REGRESSION (r238599): unable to select specific timeline
https://bugs.webkit.org/show_bug.cgi?id=192443
<rdar://problem/46608087>
Reviewed by Joseph Pecoraro.
When determining the trailing horizontal edge for TreeElement mouse
events, TreeOutline should not assume that its containing DOM element
is only as wide as its <ol> element.
* UserInterface/Views/TreeOutline.js:
(WI.TreeOutline.prototype.treeElementFromEvent):
2018-12-10 Matt Baker <mattbaker@apple.com>
Web Inspector: Move TreeOutlineGroup coordination out of TreeElement
https://bugs.webkit.org/show_bug.cgi?id=192487
<rdar://problem/46543431>
Reviewed by Devin Rousso.
* UserInterface/Views/TreeElement.js:
(WI.TreeElement.prototype.select):
(WI.TreeElement.prototype.deselect):
* UserInterface/Views/TreeOutlineGroup.js:
(WI.TreeOutlineGroup):
(WI.TreeOutlineGroup.prototype.itemAdded):
(WI.TreeOutlineGroup.prototype.itemRemoved):
(WI.TreeOutlineGroup.prototype._removeConflictingTreeSelections):
(WI.TreeOutlineGroup.prototype._treeOutlineSelectionDidChange):
(WI.TreeOutlineGroup.groupForTreeOutline): Deleted.
(WI.TreeOutlineGroup.prototype.didSelectTreeElement): Deleted.
make the group responsible for listening to selection changes from the
TreeOutlines it manages, and synchronizing the selection between them.
2018-12-10 Dean Jackson <dino@apple.com>
Use text/javascript as recommended by the HTML specification
https://bugs.webkit.org/show_bug.cgi?id=192525
<rdar://problem/46569636>
Reviewed by Jon Lee.
The HTML specification says we should use text/javascript for
JavaScript files:
https://html.spec.whatwg.org/multipage/scripting.html#scriptingLanguages:javascript-mime-type
* UserInterface/Base/MIMETypeUtilities.js:
(WI.mimeTypeForFileExtension):
* UserInterface/Views/TextEditor.js:
(WI.TextEditor.prototype._attemptToDetermineMIMEType):
2018-12-06 Matt Baker <mattbaker@apple.com>
Web Inspector: REGRESSION(r238602): Elements: collapsing a DOM node with the left arrow doesn't work
https://bugs.webkit.org/show_bug.cgi?id=192353
<rdar://problem/46455019>
Reviewed by Devin Rousso.
* UserInterface/Views/TreeElement.js:
(WI.TreeElement.prototype.deselect):
Don't early return when the element is not the selected tree element.
This condition no longer holds now that TreeOutline supports multiple selection.
2018-12-05 Matt Baker <mattbaker@apple.com>
Web Inspector: SelectionController should not extend the selection when allowsMultipleSelection is false
https://bugs.webkit.org/show_bug.cgi?id=192390
<rdar://problem/46473624>
Reviewed by Devin Rousso.
* UserInterface/Controllers/SelectionController.js:
(WI.SelectionController.prototype.selectItem):
2018-12-04 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Add style editing debug mode
https://bugs.webkit.org/show_bug.cgi?id=192282
<rdar://problem/46399176>
Reviewed by Matt Baker.
Introduce a style editing debug mode to help to troubleshoot complex bugs in the style editor.
- Log CSS changes;
- Display red border for locked style declarations.
* UserInterface/Base/Setting.js:
* UserInterface/Models/CSSProperty.js:
(WI.CSSProperty.prototype._updateOwnerStyleText):
* UserInterface/Views/SettingsTabContentView.js:
(WI.SettingsTabContentView.prototype._createDebugSettingsView):
* UserInterface/Views/SpreadsheetCSSStyleDeclarationEditor.css:
(.spreadsheet-style-declaration-editor.debug-style-locked::after):
* UserInterface/Views/SpreadsheetCSSStyleDeclarationEditor.js:
(WI.SpreadsheetCSSStyleDeclarationEditor.prototype.layout):
(WI.SpreadsheetCSSStyleDeclarationEditor.prototype._updateStyleLock):
(WI.SpreadsheetCSSStyleDeclarationEditor.prototype._updateDebugLockStatus):
2018-12-04 Matt Baker <mattbaker@apple.com>
Web Inspector: REGRESSION(r238602): Elements: changing selection no longer highlights the selected node
https://bugs.webkit.org/show_bug.cgi?id=192354
<rdar://problem/46444438>
Reviewed by Joseph Pecoraro.
* UserInterface/Views/TreeOutline.js:
(WI.TreeOutline.prototype._treeKeyDown):
(WI.TreeOutline.prototype._handleMouseDown):
2018-12-04 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: REGRESSION(r238330): Timeline auto-capture does not work after page transition
https://bugs.webkit.org/show_bug.cgi?id=192248
<rdar://problem/46390199>
Reviewed by Devin Rousso.
* UserInterface/Base/Main.js:
(WI.transitionPageTarget):
Let the TimelineManager perform work on page transitions.
* UserInterface/Controllers/TimelineManager.js:
(WI.TimelineManager.prototype.initializeTarget):
Initialize the autocapture state of the target.
(WI.TimelineManager.prototype.transitionPageTarget):
When transitioning pages perform a legacy (frontend based) timeline capture.
2018-12-04 Matt Baker <mattbaker@apple.com>
Web Inspector: Elements: $0 is shown for all selected elements
https://bugs.webkit.org/show_bug.cgi?id=192119
<rdar://problem/46327554>
Reviewed by Devin Rousso.
* UserInterface/Views/ContentBrowserTabContentView.js:
(WI.ContentBrowserTabContentView.prototype._revealAndSelectRepresentedObject):
* UserInterface/Views/DOMTreeContentView.js:
(WI.DOMTreeContentView):
(WI.DOMTreeContentView.prototype.layout):
(WI.DOMTreeContentView.prototype._domTreeSelectionDidChange):
Update the selected DOM node using the TreeOutline's selection change
event, instead of in `onselect`, which wasn't always called.
* UserInterface/Views/DOMTreeElement.js:
(WI.DOMTreeElement.prototype.onselect): Deleted.
(WI.DOMTreeElement.prototype.ondeselect): Deleted.
Eliminate `onselect` and `ondeselect`. TreeOutline clients should use
the TreeOutline.Event.SelectedDidChange event instead.
* UserInterface/Views/DOMTreeOutline.css:
(.tree-outline.dom li.last-selected > span::after):
(.tree-outline.dom:focus li.last-selected > span::after):
(.tree-outline.dom li.selected > span::after): Deleted.
(.tree-outline.dom:focus li.selected > span::after): Deleted.
* UserInterface/Views/DOMTreeOutline.js:
(WI.DOMTreeOutline.prototype.updateSelection): Deleted.
* UserInterface/Views/DebuggerSidebarPanel.js:
(WI.DebuggerSidebarPanel.prototype._handleDebuggerObjectDisplayLocationDidChange):
* UserInterface/Views/FolderizedTreeElement.js:
(WI.FolderizedTreeElement.prototype._addTreeElement):
* UserInterface/Views/NavigationSidebarPanel.js:
(WI.NavigationSidebarPanel.prototype.showDefaultContentViewForTreeElement):
(WI.NavigationSidebarPanel.prototype._treeElementWasFiltered):
(WI.NavigationSidebarPanel):
* UserInterface/Views/OpenResourceDialog.js:
(WI.OpenResourceDialog.prototype._populateResourceTreeOutline):
(WI.OpenResourceDialog.prototype._handleKeydownEvent):
* UserInterface/Views/SourceCodeTreeElement.js:
(WI.SourceCodeTreeElement.prototype.descendantResourceTreeElementTypeDidChange):
* UserInterface/Views/TreeElement.js:
(WI.TreeElement.prototype.select):
(WI.TreeElement.prototype.revealAndSelect):
(WI.TreeElement.prototype.deselect):
Remove `suppressOnDeselect` and rename `suppressOnSelect` to `suppressNotification`.
Now that `ondeselect` has been removed `suppressOnDeselect` is no longer
meaningful, as TreeOutline generates a single `SelectedDidChange` event
when the selected item changes. In the case of `revealAndSelect`, both
arguments had the same value.
* UserInterface/Views/TreeOutline.js:
(WI.TreeOutline):
(WI.TreeOutline.prototype.selectionControllerSelectionDidChange):
Add a unique class name to the last selected TreeElement to distinguish
it from other selected elements.
2018-12-04 Matt Baker <mattbaker@apple.com>
Web Inspector: Elements: ⌘-A should select all visible nodes
https://bugs.webkit.org/show_bug.cgi?id=192120
<rdar://problem/46344435>
Reviewed by Devin Rousso.
* UserInterface/Views/TreeOutline.js:
(WI.TreeOutline.prototype._treeKeyDown):
Remove an early return, allowing `WI.SelectionController` to handle ⌘-A
and select all items.
2018-12-04 Devin Rousso <drousso@apple.com>
Web Inspector: Audit: tests should support async operations
https://bugs.webkit.org/show_bug.cgi?id=192171
<rdar://problem/46423562>
Reviewed by Joseph Pecoraro.
* UserInterface/Controllers/RuntimeManager.js:
(WI.RuntimeManager.supportsAwaitPromise): Added.
* UserInterface/Models/AuditTestCase.js:
(WI.AuditTestCase.prototype.async run.async parseResponse.checkResultProperty.addErrorForValueType): Deleted.
(WI.AuditTestCase.prototype.async run.async parseResponse.checkResultProperty): Deleted.
(WI.AuditTestCase.prototype.async run.async parseResponse.async resultArrayForEach): Deleted.
(WI.AuditTestCase.prototype.async run.async parseResponse): Added.
(WI.AuditTestCase.prototype.async run):
(WI.AuditTestCase.prototype.async run.checkResultProperty.addErrorForValueType): Deleted.
(WI.AuditTestCase.prototype.async run.checkResultProperty): Deleted.
(WI.AuditTestCase.prototype.async run.async resultArrayForEach): Deleted.
* UserInterface/Models/AuditTestCaseResult.js:
(WI.AuditTestCaseResult.async fromPayload):
(WI.AuditTestCaseResult.prototype.toJSON):
* UserInterface/Views/AuditTestCaseContentView.js:
(WI.AuditTestCaseContentView.prototype.layout):
2018-12-03 Devin Rousso <drousso@apple.com>
Web Inspector: Audit: save the expanded state of test groups
https://bugs.webkit.org/show_bug.cgi?id=192346
<rdar://problem/46440704>
Reviewed by Matt Baker.
* UserInterface/Views/AuditTreeElement.js:
(WI.AuditTreeElement):
(WI.AuditTreeElement.prototype.onattach):
(WI.AuditTreeElement.prototype.onexpand): Added.
(WI.AuditTreeElement.prototype.oncollapse): Added.
2018-12-03 Devin Rousso <drousso@apple.com>
Web Inspector: Audit: sidebar briefly shows "No Filter Results" before populating default audits
https://bugs.webkit.org/show_bug.cgi?id=192341
<rdar://problem/46436550>
Reviewed by Matt Baker.
* UserInterface/Views/AuditNavigationSidebarPanel.js:
(WI.AuditNavigationSidebarPanel.prototype.initialLayout):
(WI.AuditNavigationSidebarPanel.prototype._addTest):
(WI.AuditNavigationSidebarPanel.prototype._addResult):
(WI.AuditNavigationSidebarPanel.prototype.applyFiltersToTreeElement): Deleted.
Delay the construction of the "Results" folder until it's needed, since adding a hidden
`WI.TreeElement` will cause the placeholder to appear.
2018-12-03 Devin Rousso <drousso@apple.com>
Web Inspector: Audit: navigating while tests are running should stop and clear all results
https://bugs.webkit.org/show_bug.cgi?id=192317
<rdar://problem/46435222>
Reviewed by Joseph Pecoraro.
* UserInterface/Controllers/AuditManager.js:
(WI.AuditManager.prototype.async start):
(WI.AuditManager.prototype._handleFrameMainResourceDidChange):
* UserInterface/Views/AuditNavigationSidebarPanel.js:
(WI.AuditNavigationSidebarPanel.prototype.initialLayout):
Drive-by: pass the index of the saved result.
2018-12-03 Devin Rousso <drousso@apple.com>
Web Inspector: Audit: "Add Default Audits" shown when there are no filter results
https://bugs.webkit.org/show_bug.cgi?id=192105
Reviewed by Matt Baker.
* UserInterface/Views/NavigationSidebarPanel.js:
(WI.NavigationSidebarPanel):
(WI.NavigationSidebarPanel.prototype.get hasActiveFilters): Added.
(WI.NavigationSidebarPanel.prototype.suppressFilteringOnTreeElements):
(WI.NavigationSidebarPanel.prototype.showEmptyContentPlaceholder):
(WI.NavigationSidebarPanel.prototype.hideEmptyContentPlaceholder):
(WI.NavigationSidebarPanel.prototype.updateEmptyContentPlaceholder):
(WI.NavigationSidebarPanel.prototype.updateFilter):
(WI.NavigationSidebarPanel.prototype._checkForEmptyFilterResults.checkTreeOutlineForEmptyFilterResults):
(WI.NavigationSidebarPanel.prototype._filterDidChange):
(WI.NavigationSidebarPanel.prototype._updateFilter): Deleted.
(WI.NavigationSidebarPanel.prototype._createEmptyContentPlaceholderIfNeeded): Deleted.
* UserInterface/Views/AuditNavigationSidebarPanel.js:
(WI.AuditNavigationSidebarPanel.prototype._handleAuditTestRemoved):
Drive-by: change capitalization for consistency with other navigation sidebars.
* Localizations/en.lproj/localizedStrings.js:
2018-12-03 Devin Rousso <drousso@apple.com>
Web Inspector: Canvas: add singular localized string for "Record first %s frames"
https://bugs.webkit.org/show_bug.cgi?id=192189
Reviewed by Joseph Pecoraro.
* UserInterface/Views/CanvasOverviewContentView.js:
(WI.CanvasOverviewContentView):
(WI.CanvasOverviewContentView.prototype._setRecordingAutoCaptureFrameCount):
(WI.CanvasOverviewContentView.prototype._updateRecordingAutoCaptureCheckboxLabel): Added.
(WI.CanvasOverviewContentView.prototype._handleRecordingAutoCaptureInput):
(WI.CanvasOverviewContentView.prototype._handleCanvasRecordingAutoCaptureFrameCountChanged):
(WI.CanvasOverviewContentView.prototype.initialLayout): Deleted.
Drive-by: update the auto-capture navigation item when the view is first created so there is
no flashing of in the navigation bar (before `initialLayout` is called).
* UserInterface/Views/CheckboxNavigationItem.js:
(WI.CheckboxNavigationItem):
(WI.CheckboxNavigationItem.prototype.set label): Added.
* Localizations/en.lproj/localizedStrings.js:
2018-12-03 Matt Baker <mattbaker@apple.com>
Web Inspector: REGRESSION(r238599): Multiple Selection: restoring selection when opening WebInspector puts the TreeElement into a permanent selected state
https://bugs.webkit.org/show_bug.cgi?id=192091
<rdar://problem/46321795>
Reviewed by Devin Rousso.
* UserInterface/Controllers/SelectionController.js:
(WI.SelectionController.prototype.didInsertItem):
Fix a bug where selected indexes were overwritten by the inserted index.
* UserInterface/Views/TreeOutline.js:
(WI.TreeOutline):
(WI.TreeOutline.prototype.insertChild):
Update the SelectionController with the newly inserted index before
attaching the TreeElement. Attaching the TreeElement can cause it to
become selected, which would add the index to the SelectionController,
only to have it immediately incremented by the call to `didInsertItem`.
Additionally, change `insertionIndex` to be the index of the inserted
item instead of the inserted item's previous sibling.
(WI.TreeOutline.prototype._rememberTreeElement):
(WI.TreeOutline.prototype._forgetTreeElement):
(WI.TreeOutline.prototype._indexOfTreeElement.previousElement): Deleted.
Eliminate TreeElement index caching, which could become stale and cause
the wrong index to be calculated. Additionally, instead of walking up the
parent chain to determine the index, start at the root and use existing
method `traverseNextTreeElement`.
2018-12-03 Devin Rousso <drousso@apple.com>
Web Inspector: Audit: test tree elements should start out collapsed
https://bugs.webkit.org/show_bug.cgi?id=192107
Reviewed by Matt Baker.
* UserInterface/Views/AuditTreeElement.js:
(WI.AuditTreeElement.prototype.onattach):
2018-12-03 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Styles: can't select properties of read-only rules
https://bugs.webkit.org/show_bug.cgi?id=192266
Reviewed by Devin Rousso.
Implement multiple properties selection for read-only rules (such as User Agent Stylesheets)
in the Styles panel.
* UserInterface/Views/SpreadsheetCSSStyleDeclarationEditor.js:
(WI.SpreadsheetCSSStyleDeclarationEditor.prototype.initialLayout):
(WI.SpreadsheetCSSStyleDeclarationEditor.prototype.layout):
Keep selection on layout.
(WI.SpreadsheetCSSStyleDeclarationEditor.prototype.startEditingFirstProperty):
(WI.SpreadsheetCSSStyleDeclarationEditor.prototype.startEditingLastProperty):
(WI.SpreadsheetCSSStyleDeclarationEditor.prototype.spreadsheetStylePropertyBlur):
(WI.SpreadsheetCSSStyleDeclarationEditor.prototype.spreadsheetStylePropertyMouseEnter):
SpreadsheetCSSStyleDeclarationEditor is used by ComputedStyleDetailsPanel, which doesn't have:
- spreadsheetCSSStyleDeclarationEditorPropertyBlur
- spreadsheetCSSStyleDeclarationEditorPropertyMouseEnter
(WI.SpreadsheetCSSStyleDeclarationEditor.prototype.spreadsheetStylePropertyFocusMoved):
(WI.SpreadsheetCSSStyleDeclarationEditor.prototype._handleKeyDown):
* UserInterface/Views/SpreadsheetCSSStyleDeclarationSection.js:
(WI.SpreadsheetCSSStyleDeclarationSection.prototype.initialLayout):
* UserInterface/Views/SpreadsheetStyleProperty.js:
(WI.SpreadsheetStyleProperty.prototype.startEditingName):
(WI.SpreadsheetStyleProperty.prototype.startEditingValue):
2018-11-30 Brian Burg <bburg@apple.com>
Web Inspector: resource combining should be more robust against missing WebKitAdditions
https://bugs.webkit.org/show_bug.cgi?id=192255
<rdar://problem/46042879>
Reviewed by Joseph Pecoraro.
* Scripts/copy-user-interface-resources.pl:
(combineOrStripResourcesForWebKitAdditions):
2018-11-30 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Jumping from Computed to Styles should select property
https://bugs.webkit.org/show_bug.cgi?id=192198
Reviewed by Devin Rousso.
* UserInterface/Views/SpreadsheetCSSStyleDeclarationEditor.css:
(.spreadsheet-style-declaration-editor .property.highlighted): Deleted.
(@keyframes style-property-highlight): Deleted.
* UserInterface/Views/SpreadsheetCSSStyleDeclarationEditor.js:
(WI.SpreadsheetCSSStyleDeclarationEditor.prototype.highlightProperty):
Remove unnecessary `__propertyView` property.
* UserInterface/Views/SpreadsheetStyleProperty.js:
(WI.SpreadsheetStyleProperty.prototype.detached):
(WI.SpreadsheetStyleProperty.prototype.highlight): Deleted.
2018-11-30 Matt Baker <mattbaker@apple.com>
Web Inspector: REGRESSION(r238599): Multiple Selection: selecting a breakpoint will change the selection to it's parent on the first click
https://bugs.webkit.org/show_bug.cgi?id=192093
<rdar://problem/46318466>
Reviewed by Devin Rousso.
* UserInterface/Views/TreeElement.js:
(WI.TreeElement.prototype.select):
TreeElement shouldn't manage the TreeOutline's selection barrier.
* UserInterface/Views/TreeOutline.js:
(WI.TreeOutline):
(WI.TreeOutline.prototype.get processingSelectionChange):
(WI.TreeOutline.prototype.selectionControllerSelectionDidChange):
(WI.TreeOutline.prototype.selectTreeElementInternal):
The selection re-entry barrier `processingSelectionChange` should be
managed internally by TreeOutline, and exposed as a read-only property.
Fix a bug where the barrier was cleared before dispatching the change
notification, which can cause re-entry as a side effect.
2018-11-30 Devin Rousso <drousso@apple.com>
Web Inspector: Settings: reload button needs horizontal spacing
https://bugs.webkit.org/show_bug.cgi?id=192231
<rdar://problem/46274363>
Reviewed by Matt Baker.
* UserInterface/Views/SettingsTabContentView.css:
(.content-view.settings > .settings-view > .container button):
(.content-view.settings > .settings-view > .container > .title):
(.content-view.settings > .settings-view > .container > .editor-group > .editor input[type="checkbox"]):
(body[dir=ltr] .content-view.settings > .settings-view > .container > .title): Deleted.
(body[dir=rtl] .content-view.settings > .settings-view > .container > .title): Deleted.
(body[dir=ltr] .content-view.settings > .settings-view > .container > .editor-group > .editor input[type="checkbox"]): Deleted.
(body[dir=rtl] .content-view.settings > .settings-view > .container > .editor-group > .editor input[type="checkbox"]): Deleted.
Drive-by: replace `dir=*` attribute rules with `-webkit-margin-*` properties.
2018-11-30 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Uncaught Exception opening Web Inspector to Debugger Tab
https://bugs.webkit.org/show_bug.cgi?id=192174
Reviewed by Devin Rousso.
* UserInterface/Protocol/InspectorBackend.js:
(InspectorBackendClass.prototype.runAfterPendingDispatches):
Dispatch the callback with a timeout if there is no backend target yet
so it doesn't get lost.
* UserInterface/Protocol/Connection.js:
(InspectorBackend.Connection.prototype.runAfterPendingDispatches):
Change the ambiguous name "script" to the more familiar "callback".
2018-11-30 Devin Rousso <drousso@apple.com>
Web Inspector: replace all unicode characters with the escaped character code
https://bugs.webkit.org/show_bug.cgi?id=192216
<rdar://problem/46275637>
Reviewed by Brian Burg.
* Localizations/en.lproj/localizedStrings.js:
* UserInterface/Controllers/BreakpointPopoverController.js:
* UserInterface/Debug/UncaughtExceptionReporter.js:
* UserInterface/Models/AuditTestCase.js:
* UserInterface/Models/Canvas.js:
* UserInterface/Models/RecordingAction.js:
* UserInterface/Models/ScriptTimelineRecord.js:
* UserInterface/Views/AuditTestCaseContentView.js:
* UserInterface/Views/AuditTestContentView.js:
* UserInterface/Views/AuditTestGroupContentView.js:
* UserInterface/Views/CallFrameView.js:
* UserInterface/Views/CanvasContentView.js:
* UserInterface/Views/CanvasOverviewContentView.css:
* UserInterface/Views/ConsoleMessageView.css:
* UserInterface/Views/ContextMenuUtilities.js:
* UserInterface/Views/DOMEventsBreakdownView.js:
* UserInterface/Views/DataGrid.css:
* UserInterface/Views/DataGrid.js:
* UserInterface/Views/DatabaseTableContentView.js:
* UserInterface/Views/DebuggerDashboardView.css:
* UserInterface/Views/DebuggerSidebarPanel.js:
* UserInterface/Views/ErrorObjectView.js:
* UserInterface/Views/EventBreakpointPopover.js:
* UserInterface/Views/InlineSwatch.js:
* UserInterface/Views/LayerTreeDataGridNode.js:
* UserInterface/Views/LayerTreeDetailsSidebarPanel.js:
* UserInterface/Views/Layers3DContentView.js:
* UserInterface/Views/LayoutTimelineDataGridNode.js:
* UserInterface/Views/NetworkTableContentView.css:
* UserInterface/Views/NetworkTableContentView.js:
* UserInterface/Views/ObjectPreviewView.js:
* UserInterface/Views/ProfileDataGridNode.js:
* UserInterface/Views/ResourceTimelineDataGridNode.js:
* UserInterface/Views/ScriptDetailsTimelineView.css:
* UserInterface/Views/TextEditor.css:
* UserInterface/Views/TreeOutline.css:
2018-11-29 Matt Baker <mattbaker@apple.com>
Web Inspector: RTL: disclosure triangles should be flipped and aligned right
https://bugs.webkit.org/show_bug.cgi?id=192089
<rdar://problem/46316753>
Reviewed by Devin Rousso.
* UserInterface/Views/ComputedStyleSection.css:
(.computed-style-section .computed-property-item .disclosure-button):
(body[dir=rtl] .computed-style-section .computed-property-item .disclosure-button):
* UserInterface/Views/ConsoleMessageView.css:
(.console-message.expandable .console-top-level-message::before):
(body[dir=rtl] .console-message.expandable .console-top-level-message::before):
* UserInterface/Views/ErrorObjectView.css:
(.error-object > .formatted-error::before):
(body[dir=rtl] .error-object > .formatted-error::before):
(.error-object .content):
* UserInterface/Views/LogContentView.css:
(.console-group-title::before):
(body[dir=ltr] .console-group-title::before):
(body[dir=rtl] .console-group-title::before):
* UserInterface/Views/ObjectTreeView.css:
(body[dir=rtl] .object-tree > :matches(.title, .object-preview)::before):
* UserInterface/Views/TypeTreeElement.css:
(body[dir=rtl] .item.type-tree-element.parent > .disclosure-button):
2018-11-28 Dean Jackson <dino@apple.com>
[ES Modules] Allow .mjs content when loaded from file://
https://bugs.webkit.org/show_bug.cgi?id=192100
<rdar://problem/46320065>
Reviewed by Sam Weinig.
Add a mapping from .mjs to application/javascript.
* UserInterface/Base/MIMETypeUtilities.js:
(WI.mimeTypeForFileExtension):
2018-11-29 Matt Baker <mattbaker@apple.com>
Web Inspector: Elements: selecting more than one DOM node causes the scope highlight to contrast
https://bugs.webkit.org/show_bug.cgi?id=192118
<rdar://problem/46325664>
Reviewed by Devin Rousso.
Use an alpha blended border for the "selected" DOM scope highlight,
matching the "hovered" scope highlight.
* UserInterface/Views/DOMTreeOutline.css:
(.tree-outline.dom li.selected + ol.children.expanded):
2018-11-28 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: REGRESSION(?): all "Show *" develop menu items cause the page to crash
https://bugs.webkit.org/show_bug.cgi?id=192016
<rdar://problem/46284417>
Reviewed by Devin Rousso.
* UserInterface/Base/Main.js:
(WI.loaded):
(WI.initializeBackendTarget):
(WI.contentLoaded):
(WI.whenTargetsAvailable):
Don't evaluate any InspectorFrontendAPI commands until the frontend
has initialized a main target and the user interface.
2018-11-28 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Styles: enable selection of multiple properties by default
https://bugs.webkit.org/show_bug.cgi?id=192109
<rdar://problem/46323565>
Reviewed by Devin Rousso.
* UserInterface/Base/Setting.js:
* UserInterface/Views/SettingsTabContentView.js:
(WI.SettingsTabContentView.prototype._createExperimentalSettingsView):
Remove the checkbox.
* UserInterface/Views/SpreadsheetCSSStyleDeclarationEditor.css:
(.spreadsheet-style-declaration-editor .property):
(.spreadsheet-style-declaration-editor :matches(.name, .value):not(.editing)):
(.spreadsheet-style-declaration-editor .property.selected):
(.spreadsheet-style-declaration-editor .property.selected:focus):
(.multiple-properties-selection .spreadsheet-style-declaration-editor .property): Deleted.
(.multiple-properties-selection .spreadsheet-style-declaration-editor :matches(.name, .value):not(.editing)): Deleted.
(.multiple-properties-selection .spreadsheet-style-declaration-editor .property.selected): Deleted.
(.multiple-properties-selection .spreadsheet-style-declaration-editor .property.selected:focus): Deleted.
Remove `.multiple-properties-selection` class.
* UserInterface/Views/SpreadsheetCSSStyleDeclarationEditor.js:
(WI.SpreadsheetCSSStyleDeclarationEditor.prototype.initialLayout):
* UserInterface/Views/SpreadsheetCSSStyleDeclarationSection.js:
(WI.SpreadsheetCSSStyleDeclarationSection):
(WI.SpreadsheetCSSStyleDeclarationSection.prototype._handleMouseDown):
* UserInterface/Views/SpreadsheetStyleProperty.js:
(WI.SpreadsheetStyleProperty.prototype._createInlineSwatch):
* UserInterface/Views/SpreadsheetTextField.js:
(WI.SpreadsheetTextField):
(WI.SpreadsheetTextField.prototype._handleFocus): Deleted.
2018-11-28 Devin Rousso <drousso@apple.com>
Web Inspector: Audit: empty results folder is shown after clearing filters
https://bugs.webkit.org/show_bug.cgi?id=192106
Reviewed by Matt Baker.
* UserInterface/Views/AuditNavigationSidebarPanel.js:
(WI.AuditNavigationSidebarPanel.prototype.applyFiltersToTreeElement): Added.
2018-11-28 Matt Baker <mattbaker@apple.com>
Web Inspector: Remove unused DataGrid and TreeOutline code
https://bugs.webkit.org/show_bug.cgi?id=191622
<rdar://problem/46052014>
Reviewed by Devin Rousso.
* UserInterface/Views/CanvasDetailsSidebarPanel.js:
(WI.CanvasDetailsSidebarPanel.prototype.initialLayout):
* UserInterface/Views/DOMTreeElement.js:
(WI.DOMTreeElement.prototype.insertChildElement):
* UserInterface/Views/DOMTreeOutline.js:
(WI.DOMTreeOutline):
(WI.DOMTreeOutline.prototype.update):
* UserInterface/Views/DataGrid.js:
(WI.DataGrid.prototype.removeChildrenRecursive): Deleted.
* UserInterface/Views/DataGridNode.js:
(WI.DataGridNode.prototype.removeChildren):
(WI.DataGridNode.prototype.removeChildrenRecursive): Deleted.
* UserInterface/Views/ErrorObjectView.css:
(.error-object:not(.expanded) .content):
(.error-object .content):
(.error-object:not(.expanded) .tree-outline): Deleted.
(.error-object .tree-outline): Deleted.
* UserInterface/Views/ErrorObjectView.js:
(WI.ErrorObjectView):
(WI.ErrorObjectView.prototype.get treeOutline): Deleted.
Use a simple container since TreeOutline features aren't used,
and remove unused property `treeOutline`.
* UserInterface/Views/RecordingTraceDetailsSidebarPanel.js:
(WI.RecordingTraceDetailsSidebarPanel):
* UserInterface/Views/TreeElement.js:
(WI.TreeElement.prototype.removeChildren):
(WI.TreeElement.prototype.removeChildrenRecursive): Deleted.
* UserInterface/Views/TreeOutline.js:
(WI.TreeOutline):
(WI.TreeOutline.prototype.removeChildrenRecursive): Deleted.
(WI.TreeOutline.prototype.reattachIfIndexChanged): Deleted.
Removed `element` parameter now that the only use case has been removed.
2018-11-27 Matt Baker <mattbaker@apple.com>
Web Inspector: Elements tab should allow selecting/deleting multiple DOM nodes
https://bugs.webkit.org/show_bug.cgi?id=192059
<rdar://problem/46294827>
Reviewed by Devin Rousso.
Enable multiple DOM node selection in the DOMTreeContentView.
* UserInterface/Controllers/SelectionController.js:
(WI.SelectionController):
(WI.SelectionController.prototype.get allowsEmptySelection):
(WI.SelectionController.prototype.set allowsEmptySelection):
Allow clients to control whether the last selected item can be deselected.
(WI.SelectionController.prototype.deselectItem):
(WI.SelectionController.prototype.didInsertItem):
Rewritten to prevent infinite loop.
(WI.SelectionController.prototype.didRemoveItem):
(WI.SelectionController.prototype._updateSelectedItems):
(WI.SelectionController.prototype._adjustIndexesAfter): Deleted.
* UserInterface/Views/DOMTreeContentView.js:
(WI.DOMTreeContentView):
* UserInterface/Views/DOMTreeElement.js:
(WI.DOMTreeElement.prototype.updateSelectionArea):
* UserInterface/Views/DOMTreeOutline.js:
(WI.DOMTreeOutline.prototype.updateSelection):
Updating the selection area DOM element should not assume that only one
TreeElement is selected at a time.
* UserInterface/Views/TreeOutline.js:
(WI.TreeOutline.prototype.get allowsEmptySelection):
(WI.TreeOutline.prototype.set allowsEmptySelection):
(WI.TreeOutline.prototype.set selectedTreeElement):
(WI.TreeOutline.prototype.get selectedTreeElements):
(WI.TreeOutline.prototype._treeKeyDown):
* UserInterface/Views/TreeOutlineGroup.js:
(WI.TreeOutlineGroup):
(WI.TreeOutlineGroup.prototype._removeConflictingTreeSelections):
Eliminate use of `TreeElement.prototype.deselect`.
2018-11-27 Matt Baker <mattbaker@apple.com>
Web Inspector: TreeOutline should re-use multiple-selection logic from Table
https://bugs.webkit.org/show_bug.cgi?id=191483
<rdar://problem/45953305>
Reviewed by Devin Rousso.
Update TreeOutline to use SelectionController. Adopting SelectionController
in TreeOutline is not as straightforward as it was in Table. Selected items
are tracked by index, and TreeElement lacks an explicit index. As a consequence
TreeElement indexes are calcualted as needed and cached. The cache is cleared
whenever an element is added or removed.
* UserInterface/Controllers/SelectionController.js:
(WI.SelectionController.prototype.didInsertItem):
(WI.SelectionController.prototype.didRemoveItem):
(WI.SelectionController.prototype.handleKeyDown):
Drive-by syntax error fix.
(WI.SelectionController.prototype._adjustIndexesAfter):
(WI.SelectionController):
* UserInterface/Views/DOMTreeElement.js:
(WI.DOMTreeElement.prototype.canSelectOnMouseDown):
(WI.DOMTreeElement.prototype.selectOnMouseDown): Deleted.
* UserInterface/Views/DOMTreeOutline.js:
(WI.DOMTreeOutline.prototype._onmousedown):
Item selection is now handled by SelectionController.
* UserInterface/Views/ShaderProgramTreeElement.js:
(WI.ShaderProgramTreeElement.prototype.canSelectOnMouseDown):
(WI.ShaderProgramTreeElement.prototype.selectOnMouseDown): Deleted.
* UserInterface/Views/TreeElement.js:
(WI.TreeElement.prototype.canSelectOnMouseDown):
(WI.TreeElement.prototype._attach):
(WI.TreeElement.prototype.select):
(WI.TreeElement.prototype.deselect):
Route item selection through the parent TreeOutline, in order to go though
the TreeOutline's SelectionController.
(WI.TreeElement.treeElementMouseDown): Deleted.
Moved handler to TreeOutline, which owns the SelectionController that
needs to respond to mouse events.
* UserInterface/Views/TreeOutline.js:
(WI.TreeOutline):
(WI.TreeOutline.prototype.get allowsMultipleSelection):
(WI.TreeOutline.prototype.set allowsMultipleSelection):
(WI.TreeOutline.prototype.get selectedTreeElement):
(WI.TreeOutline.prototype.set selectedTreeElement):
(WI.TreeOutline.prototype.insertChild):
(WI.TreeOutline.prototype.removeChildAtIndex):
(WI.TreeOutline.prototype._rememberTreeElement):
(WI.TreeOutline.prototype._forgetTreeElement):
(WI.TreeOutline.prototype._treeKeyDown):
(WI.TreeOutline.prototype.selectionControllerNumberOfItems):
(WI.TreeOutline.prototype.selectionControllerSelectionDidChange):
(WI.TreeOutline.prototype.selectionControllerNextSelectableIndex):
(WI.TreeOutline.prototype.selectionControllerPreviousSelectableIndex):
(WI.TreeOutline.prototype.selectTreeElementInternal):
(WI.TreeOutline._generateStyleRulesIfNeeded._indexOfTreeElement.previousElement):
(WI.TreeOutline._generateStyleRulesIfNeeded):
2018-11-27 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Experimental Computed panel is unreadable in Dark Mode
https://bugs.webkit.org/show_bug.cgi?id=192053
Reviewed by Matt Baker.
* UserInterface/Views/ComputedStyleDetailsPanel.css:
(@media (prefers-dark-interface)):
(.computed-with-traces .details-section.computed-style-properties:not(.collapsed) > :matches(.header, .content)):
* UserInterface/Views/ComputedStyleSection.css:
(.computed-style-section .computed-property-item.expanded):
(.computed-style-section .computed-property-item.expanded + .computed-property-item):
(@media (prefers-dark-interface)):
2018-11-27 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Computed panel: allow to expand properties to show list of overridden values
https://bugs.webkit.org/show_bug.cgi?id=191984
Reviewed by Devin Rousso.
Introduce the new experimental Computed Style Cascades.
Each property now can expand to show a list of overridden values, their corresponding
selectors, and source locations.
* Localizations/en.lproj/localizedStrings.js:
* UserInterface/Base/Setting.js:
* UserInterface/Main.html:
* UserInterface/Models/DOMNodeStyles.js:
(WI.DOMNodeStyles.prototype.get uniqueOrderedStyles):
Move `uniqueOrderedStyles` function unmodified from SpreadsheetRulesStyleDetailsPanel so it can be used by ComputedStyleDetailsPanel, too.
* UserInterface/Views/ComputedStyleDetailsPanel.css:
(.computed-with-traces .computed-style-properties):
(.computed-with-traces .details-section.computed-style-properties:not(.collapsed) > :matches(.header, .content)):
(.computed-with-traces .details-section.computed-style-properties > .content):
(.computed-with-traces .computed-style-properties .property .go-to-arrow):
* UserInterface/Views/ComputedStyleDetailsPanel.js:
(WI.ComputedStyleDetailsPanel.prototype.refresh):
(WI.ComputedStyleDetailsPanel.prototype.applyFilter):
(WI.ComputedStyleDetailsPanel.prototype.focusFirstSection):
(WI.ComputedStyleDetailsPanel.prototype.initialLayout):
(WI.ComputedStyleDetailsPanel.prototype._computePropertyTraces):
(WI.ComputedStyleDetailsPanel.prototype._computedStyleShowAllCheckboxValueChanged):
(WI.ComputedStyleDetailsPanel.prototype._handlePropertiesSectionCollapsedStateChanged):
(WI.ComputedStyleDetailsPanel.prototype._handleEditorFilterApplied):
(WI.ComputedStyleDetailsPanel):
Use the new Computed section (WI.ComputedStyleSection) only when it's enabled in the experimental settings.
Otherwise, use the current Computed section.
* UserInterface/Views/ComputedStyleDetailsSidebarPanel.js:
(WI.ComputedStyleDetailsSidebarPanel):
* UserInterface/Views/ComputedStyleSection.css: Added.
(.computed-style-section):
(.computed-style-section .computed-property-item):
(.computed-style-section .computed-property-item.expanded):
(.computed-style-section .computed-property-item.expanded + .computed-property-item):
(.computed-style-section .computed-property-item .disclosure-button):
(.computed-style-section .computed-property-item .property-traces):
(.computed-style-section .computed-property-item.expanded .property-traces):
(.computed-style-section .computed-property-item.expanded .disclosure-button):
(.computed-style-section .computed-property-item .property-trace-item):
(.computed-style-section .computed-property-item .property-trace-item .property.overridden .value):
(.computed-style-section .property-trace-item-left,):
(.computed-style-section .property-trace-item-right):
(.computed-style-section .computed-property-item .property-trace-item .value):
(.computed-style-section .property .value):
(.computed-style-section .computed-property-item .property):
(.computed-style-section .computed-property-item .property .name):
(.computed-style-section .computed-property-item .property-trace-item .selector):
(.computed-style-section .computed-property-item .origin):
(.computed-style-section .computed-property-item .go-to-link):
(.computed-style-section .property-trace-item .property .name,):
(.computed-style-section .property-trace-item .property .value + span):
(.computed-style-properties.details-section > .content,):
* UserInterface/Views/ComputedStyleSection.js: Added.
(WI.ComputedStyleSection):
(WI.ComputedStyleSection.prototype.get style):
(WI.ComputedStyleSection.prototype.set style):
(WI.ComputedStyleSection.prototype.get styleTraces):
(WI.ComputedStyleSection.prototype.set styleTraces):
(WI.ComputedStyleSection.prototype.set showsImplicitProperties):
(WI.ComputedStyleSection.prototype.set alwaysShowPropertyNames):
(WI.ComputedStyleSection.prototype.set propertyVisibilityMode):
(WI.ComputedStyleSection.prototype.set hideFilterNonMatchingProperties):
(WI.ComputedStyleSection.prototype.get propertiesToRender):
(WI.ComputedStyleSection.prototype.layout):
(WI.ComputedStyleSection.prototype.detached):
(WI.ComputedStyleSection.prototype.hidden):
(WI.ComputedStyleSection.prototype.applyFilter):
(WI.ComputedStyleSection.prototype.spreadsheetStylePropertyShowProperty):
(WI.ComputedStyleSection.prototype._createTrace):
(WI.ComputedStyleSection.prototype._handlePropertiesChanged):
* UserInterface/Views/ExpandableView.js: Added.
(WI.ExpandableView):
(WI.ExpandableView.prototype.get element):
(WI.ExpandableView.prototype._onDisclosureButtonClick):
(WI.ExpandableView.prototype._update):
* UserInterface/Views/SettingsTabContentView.js:
(WI.SettingsTabContentView.prototype._createExperimentalSettingsView):
* UserInterface/Views/SpreadsheetCSSStyleDeclarationSection.js:
(WI.SpreadsheetCSSStyleDeclarationSection.prototype.initialLayout):
(WI.SpreadsheetCSSStyleDeclarationSection.prototype.layout):
Replace `_renderOrigin` with WI.StyleOriginView so it could be used by WI.ComputedStyleSection.
* UserInterface/Views/SpreadsheetRulesStyleDetailsPanel.js:
(WI.SpreadsheetRulesStyleDetailsPanel.prototype.layout):
* UserInterface/Views/SpreadsheetStyleProperty.js:
(WI.SpreadsheetStyleProperty.prototype.update):
(WI.SpreadsheetStyleProperty.prototype._isEditable):
(WI.SpreadsheetStyleProperty.prototype._createInlineSwatch):
Introduce `readOnly` option so WI.SpreadsheetStyleProperty could be used by WI.ComputedStyleSection.
* UserInterface/Views/StyleOriginView.js: Added.
(WI.StyleOriginView):
2018-11-27 Timothy Hatcher <timothy@apple.com>
Web Inspector: Add support for forcing color scheme appearance in DOM tree.
https://bugs.webkit.org/show_bug.cgi?id=191820
rdar://problem/46153172
Reviewed by Devin Rousso.
* Localizations/en.lproj/localizedStrings.js: Updated.
* UserInterface/Controllers/CSSManager.js:
(WI.CSSManager):
(WI.CSSManager.prototype.get defaultAppearance): Added.
(WI.CSSManager.prototype.get forcedAppearance): Added.
(WI.CSSManager.prototype.set forcedAppearance): Added.
(WI.CSSManager.prototype.canForceAppearance): Added.
(WI.CSSManager.prototype.defaultAppearanceDidChange): Added.
* UserInterface/Images/Appearance.svg: Added.
* UserInterface/Protocol/PageObserver.js:
(WI.PageObserver.prototype.defaultAppearanceChanged): Added.
* UserInterface/Views/DOMTreeContentView.js:
(WI.DOMTreeContentView):
(WI.DOMTreeContentView.prototype.get navigationItems):
(WI.DOMTreeContentView.prototype._defaultAppearanceDidChange): Added.
(WI.DOMTreeContentView.prototype._toggleAppearance): Added.
2018-11-27 Matt Baker <mattbaker@apple.com>
Web Inspector: Cookies table needs copy keyboard shortcut and context menu support
https://bugs.webkit.org/show_bug.cgi?id=191482
<rdar://problem/45953002>
Reviewed by Joseph Pecoraro.
* UserInterface/Views/CookieStorageContentView.js:
(WI.CookieStorageContentView.prototype.handleCopyEvent):
(WI.CookieStorageContentView.prototype.tableCellContextMenuClicked):
As with Delete, if the target row is selected, all selected rows are copied.
Otherwise only the target row is copied. This distinction will be surfaced
in the UI in https://webkit.org/b/191095.
(WI.CookieStorageContentView.prototype.tablePopulateCell):
(WI.CookieStorageContentView.prototype._cookiesAtIndexes):
(WI.CookieStorageContentView.prototype._formatCookiesAsText):
(WI.CookieStorageContentView.prototype._formatCookiePropertyForColumn):
(WI.CookieStorageContentView):
Break Cookie property formatting into a helper method, which is used for
formatting Table cells and creating plain text for the clipboard.
* UserInterface/Views/Table.js:
(WI.Table.prototype.get columns):
2018-11-27 Matt Baker <mattbaker@apple.com>
Web Inspector: Table selection should be handled by a SelectionController
https://bugs.webkit.org/show_bug.cgi?id=191977
<rdar://problem/46253093>
Reviewed by Devin Rousso.
Add a SelectionController class, which manages an IndexSet of selected
items, and provides operations for adding and removing items from the
selection. Complex behaviors such as shift-clicking to select a range of
items, and updating the selection using the keyboard, are forwarded to
the controller using special-purpose methods that accept DOM Event objects.
* UserInterface/Base/Utilities.js:
* UserInterface/Controllers/SelectionController.js: Added.
(WI.SelectionController):
(WI.SelectionController.prototype.get delegate):
(WI.SelectionController.prototype.get lastSelectedItem):
(WI.SelectionController.prototype.get selectedItems):
(WI.SelectionController.prototype.get allowsMultipleSelection):
(WI.SelectionController.prototype.set allowsMultipleSelection):
(WI.SelectionController.prototype.get numberOfItems):
(WI.SelectionController.prototype.hasSelectedItem):
(WI.SelectionController.prototype.selectItem):
(WI.SelectionController.prototype.deselectItem):
(WI.SelectionController.prototype.selectAll):
(WI.SelectionController.prototype.deselectAll):
(WI.SelectionController.prototype.removeSelectedItems):
(WI.SelectionController.prototype.reset):
(WI.SelectionController.prototype.didRemoveItem):
(WI.SelectionController.prototype.handleKeyDown):
(WI.SelectionController.prototype.handleItemMouseDown.normalizeRange):
(WI.SelectionController.prototype.handleItemMouseDown):
(WI.SelectionController.prototype._deselectAllAndSelect):
(WI.SelectionController.prototype._selectItemsFromArrowKey):
(WI.SelectionController.prototype._nextSelectableIndex):
(WI.SelectionController.prototype._previousSelectableIndex):
(WI.SelectionController.prototype._updateSelectedItems):
* UserInterface/Main.html:
* UserInterface/Test.html:
* UserInterface/Views/Table.js:
(WI.Table):
(WI.Table.prototype.get selectedRow):
(WI.Table.prototype.get selectedRows):
(WI.Table.prototype.get allowsMultipleSelection):
(WI.Table.prototype.set allowsMultipleSelection):
(WI.Table.prototype.isRowSelected):
(WI.Table.prototype.reloadData):
(WI.Table.prototype.selectRow):
(WI.Table.prototype.deselectRow):
(WI.Table.prototype.selectAll):
(WI.Table.prototype.deselectAll):
(WI.Table.prototype.removeRow):
(WI.Table.prototype.removeSelectedRows):
(WI.Table.prototype.selectionControllerSelectionDidChange):
(WI.Table.prototype.selectionControllerNumberOfItems):
(WI.Table.prototype.selectionControllerNextSelectableIndex):
(WI.Table.prototype.selectionControllerPreviousSelectableIndex):
(WI.Table.prototype._handleKeyDown):
(WI.Table.prototype._handleMouseDown):
(WI.Table.prototype._removeRows):
(WI.Table.prototype._toggleSelectedRowStyle):
(WI.Table.prototype._selectRowsFromArrowKey): Deleted.
(WI.Table.prototype._handleMouseDown.normalizeRange): Deleted.
(WI.Table.prototype._deselectAllAndSelect): Deleted.
(WI.Table.prototype._notifySelectionDidChange): Deleted.
(WI.Table.prototype._updateSelectedRows): Deleted.
2018-11-26 Devin Rousso <drousso@apple.com>
Web Inspector: "No Filter Results" in navigation sidebar should have a button to clear filters
https://bugs.webkit.org/show_bug.cgi?id=191916
Reviewed by Joseph Pecoraro.
* UserInterface/Views/NavigationSidebarPanel.js:
(WI.NavigationSidebarPanel.prototype.resetFilter): Added.
(WI.NavigationSidebarPanel.prototype._checkForEmptyFilterResults.checkTreeOutlineForEmptyFilterResults):
* UserInterface/Views/FilterBar.js:
(WI.FilterBar.prototype.clear):
* UserInterface/Views/FilterBarButton.js:
(WI.FilterBarButton.prototype.toggle):
* UserInterface/Views/ResourceSidebarPanel.js:
(WI.ResourceSidebarPanel.prototype.resetFilter): Added.
* UserInterface/Views/StorageSidebarPanel.js:
(WI.StorageSidebarPanel.prototype.resetFilter): Added.
* UserInterface/Views/AuditTestContentView.js:
(WI.AuditTestContentView.prototype.showFilteredPlaceholder):
* UserInterface/Views/NetworkTableContentView.js:
(WI.NetworkTableContentView.prototype._showEmptyFilterResultsMessage):
* UserInterface/Views/Main.css:
(.message-text-view > .message + button): Added.
* Localizations/en.lproj/localizedStrings.js:
2018-11-26 Devin Rousso <drousso@apple.com>
Web Inspector: Audit: automatically add to tab bar when the experimental setting is enabled
https://bugs.webkit.org/show_bug.cgi?id=191659
Reviewed by Joseph Pecoraro.
* UserInterface/Views/SettingsTabContentView.js:
(WI.SettingsTabContentView.prototype._createExperimentalSettingsView):
* UserInterface/Base/Main.js:
(WI.loaded):
Drive-by: use existing constants instead of hard-coded strings for consistency.
2018-11-25 Devin Rousso <drousso@apple.com>
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 of `startTimestamp` to `WI.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.
2018-11-25 Matt Baker <mattbaker@apple.com>
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):
Use `event.target.selectedTreeElement` instead of `event.data.selectedElement`.
* UserInterface/Views/TimelineOverview.js:
(WI.TimelineOverview.prototype._timelinesTreeSelectionDidChange):
(WI.TimelineOverview.prototype._timelinesTreeSelectionDidChange.updateGraphSelectedState): Deleted.
Refactor away the single place `event.data.deselectedElement` was used.
* UserInterface/Views/TreeElement.js:
(WI.TreeElement.prototype.select):
(WI.TreeElement.prototype.deselect):
Remove `selectedElement` and `deselectedElement` from event data.
2018-11-19 Devin Rousso <drousso@apple.com>
Web Inspector: Audit: removing and re-adding the tab will duplicate tests
https://bugs.webkit.org/show_bug.cgi?id=191843
Reviewed by Matt Baker.
* UserInterface/Controllers/AuditManager.js:
(WI.AuditManager.prototype.loadStoredTests):
If we already have tests, don't attempt to load any stored tests.
2018-11-19 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: "Reload Web Inspector" button no longer partially works
https://bugs.webkit.org/show_bug.cgi?id=191773
<rdar://problem/46139932>
Reviewed by Devin Rousso.
* UserInterface/Base/Main.js:
* UserInterface/Debug/UncaughtExceptionReporter.js:
(sheetElement.innerHTML):
* UserInterface/Views/SettingsTabContentView.js:
2018-11-17 Devin Rousso <drousso@apple.com>
Web Inspector: Network: add button to show system certificate dialog
https://bugs.webkit.org/show_bug.cgi?id=191458
<rdar://problem/45977019>
Reviewed by Joseph Pecoraro.
* UserInterface/Controllers/NetworkManager.js:
(WI.NetworkManager.supportsShowCertificate): Added.
* UserInterface/Models/Resource.js:
(WI.Resource.prototype.showCertificate): Added.
* UserInterface/Views/ResourceSecurityContentView.js:
(WI.ResourceSecurityContentView.prototype._refreshCetificateSection):
* UserInterface/Views/ResourceSecurityContentView.css:
(.resource-security .details > .show-certificate > .key): Added.
(.resource-security .details > .show-certificate > .key > .error): Added.
* Localizations/en.lproj/localizedStrings.js:
2018-11-16 Devin Rousso <drousso@apple.com>
Web Inspector: Audit: add default tests
https://bugs.webkit.org/show_bug.cgi?id=191758
Reviewed by Matt Baker.
* UserInterface/Controllers/AuditManager.js:
(WI.AuditManager.prototype.loadStoredTests):
(WI.AuditManager.prototype.addDefaultTestsIfNeeded): Added.
If there are no previously saved tests in the database, automatically add the default set.
* UserInterface/Views/AuditNavigationSidebarPanel.js:
(WI.AuditNavigationSidebarPanel.prototype._addTest):
(WI.AuditNavigationSidebarPanel.prototype._addResult):
(WI.AuditNavigationSidebarPanel.prototype._handleAuditTestRemoved):
* UserInterface/Views/AuditNavigationSidebarPanel.css:
(.sidebar > .panel.navigation.audit.has-results:not(.has-tests) > .content > .message-text-view): Added.
(.sidebar > .panel.navigation.audit.has-results:not(.has-tests) > .content > .message-text-view > .message): Added.
(.sidebar > .panel.navigation.audit.has-results:not(.has-tests) > .content > .message-text-view > button): Added.
When the last test is removed, show a placeholder message that allows the user to re-add the
default set of tests.
* UserInterface/Views/NavigationSidebarPanel.js:
(WI.NavigationSidebarPanel.prototype.showEmptyContentPlaceholder):
(WI.NavigationSidebarPanel.prototype._createEmptyContentPlaceholderIfNeeded):
* Localizations/en.lproj/localizedStrings.js:
2018-11-16 Devin Rousso <drousso@apple.com>
Web Inspector: Audit: minor style improvements
https://bugs.webkit.org/show_bug.cgi?id=191727
Reviewed by Joseph Pecoraro.
* UserInterface/Controllers/AuditManager.js:
(WI.AuditManager):
(WI.AuditManager.prototype._handleFrameMainResourceDidChange): Added.
Clear test results when the main frame navigates, but don't clear the saved results.
* UserInterface/Models/AuditTestCase.js:
(WI.AuditTestCase.prototype.async run):
* UserInterface/Models/AuditTestCaseResult.js:
(WI.AuditTestCaseResult):
(WI.AuditTestCaseResult.async fromPayload):
(WI.AuditTestCaseResult.prototype.get resolvedDOMNodes): Added.
(WI.AuditTestCaseResult.prototype.toJSON):
Capture the full CSS path for any returned DOM nodes when the test finishes running, so that
if the node moves around the path isn't modified as well.
* UserInterface/Views/AuditTestCaseContentView.js:
(WI.AuditTestCaseContentView.prototype.layout):
Always show the URL for the test when viewing a saved result.
* UserInterface/Views/AuditTestContentView.css:
(.content-view-container > .content-view.audit-test > header p):
(.content-view.audit-test > header):
* UserInterface/Views/AuditTestCaseContentView.css:
(.content-view.audit-test-case > header): Added.
(.content-view.audit-test-case > header h1 > img):
(.content-view.audit-test-case > header > .metadata > .source): Added.
(.content-view.audit-test-case > header > .metadata > .duration):
(.content-view.audit-test-case > section table > tr > td:first-child):
* UserInterface/Views/AuditTestGroupContentView.css:
(.content-view.audit-test-group > header):
Horizontally align items in the header for visual consistency.
2018-11-16 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Include default filtering of InspectorBackend.dumpInspectorProtocolMessages with multi target backend
https://bugs.webkit.org/show_bug.cgi?id=191785
Reviewed by Matt Baker.
* UserInterface/Debug/Bootstrap.js:
(dumpMessagesCurrentState):
(applyDumpMessagesState):
(WI.runBootstrapOperations):
Include tri-state for the logs button.
* UserInterface/Protocol/InspectorBackend.js:
(InspectorBackendClass.prototype.set filterMultiplexingBackendInspectorProtocolMessages):
(InspectorBackendClass.prototype.get filterMultiplexingBackendInspectorProtocolMessages):
(InspectorBackendClass.prototype._startOrStopAutomaticTracing):
Add new filtering state (the Setting already got added in the past).
* UserInterface/Protocol/LoggingProtocolTracer.js:
(WI.LoggingProtocolTracer):
(WI.LoggingProtocolTracer.prototype.set filterMultiplexingBackend):
(WI.LoggingProtocolTracer.prototype.get filterMultiplexingBackend):
(WI.LoggingProtocolTracer.prototype._processEntry):
Perform new filtering.
2018-11-16 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Keep Web Inspector window alive across process swaps (PSON) (Local Inspector)
https://bugs.webkit.org/show_bug.cgi?id=191740
<rdar://problem/45470897>
Reviewed by Timothy Hatcher.
* UserInterface/Protocol/Connection.js:
(InspectorBackend.Connection.prototype._dispatchResponse):
Hide the TargetAgent does not exist message. This is necessary so that WebKitLegacy
tests don't include this line in output each test.
* UserInterface/Test.html:
* UserInterface/Test/Test.js:
(WI.loaded):
(WI.resetMainExecutionContext):
(WI.performOneTimeFrontendInitializationsUsingTarget):
Behave more like Main.js and initialize a MultiplexingBackendTarget when the
TargetAgent is available.
* UserInterface/Protocol/InspectorBackend.js:
(InspectorBackendClass.prototype.runAfterPendingDispatches):
Use the main target, a.k.a. the page connection. The backend target's
messages don't have any responses, so this was effectively not waiting
at all.
2018-11-16 Matt Baker <mattbaker@apple.com>
Web Inspector: TreeOutline shouldn't select first child of an expanded element on right arrow key
https://bugs.webkit.org/show_bug.cgi?id=191766
Reviewed by Devin Rousso.
* UserInterface/Views/TreeOutline.js:
(WI.TreeOutline.prototype._treeKeyDown):
2018-11-14 Matt Baker <mattbaker@apple.com>
Web Inspector: Table should recalculate scrollable height when resized
https://bugs.webkit.org/show_bug.cgi?id=191328
<rdar://problem/45854412>
Reviewed by Devin Rousso.
* UserInterface/Views/NetworkTableContentView.js:
(WI.NetworkTableContentView.prototype._hideDetailView):
Force table columns to layout after hiding the detail view.
* UserInterface/Views/Table.js:
(WI.Table):
(WI.Table.prototype.showColumn):
Call `_resizeColumnsAndFiller` instead of `resize`. The latter also cleared
`_cachedWidth`, which isn't unnecessary since the width hasn't changed.
(WI.Table.prototype.layout):
previously `_resizeColumnsAndFiller` always occurred after `_updateVisibleRows`,
it was just a matter of whether the cached width and height were cleared first.
That now happens in `sizeDidChange`.
(WI.Table.prototype.sizeDidChange):
(WI.Table.prototype._updateVisibleRows):
(WI.Table.prototype.resize): Deleted.
Internally this cleared the cached width and height, which moved to `sizeDidChange`.
Externally this was used by NetworkTableContentView to force columns to
layout after hiding the details view. Calling `updateLayout` on the table
accomplishes the same thing using the standard View API.
(WI.Table.prototype._resizeColumnsAndFiller):
Only update the cached width, since the height will already have been
updated. The number of rows doesn't change during this method, so that
check was removed.
2018-11-14 Devin Rousso <drousso@apple.com>
Web Inspector: REGRESSION(r236540): Debugger: breakpoints are sorted alphabetically instead of numerically
https://bugs.webkit.org/show_bug.cgi?id=191560
Reviewed by Joseph Pecoraro.
When sorting breakpoints, if the `WI.TreeElement`s being compared both contain instances of
`WI.Breakpoint`, sort by `WI.SourceCodeLocation` instead of title.
We only do this for `WI.Breakpoint` because they are the only debuggable item that has a
`WI.SourceCodeLocation` (e.g. `WI.EventBreakpoint` is just an event name string).
* UserInterface/Views/DebuggerSidebarPanel.js:
(WI.DebuggerSidebarPanel.prototype._addTreeElement):
(WI.DebuggerSidebarPanel.prototype._compareBreakpointTreeElements): Added.
(WI.DebuggerSidebarPanel.prototype._addIssue):
(WI.DebuggerSidebarPanel.prototype._addTreeElement.comparator): Deleted.
(WI.DebuggerSidebarPanel.prototype._compareTreeElements): Deleted.
2018-11-14 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Styles: shift-clicking on a property should extend selection
https://bugs.webkit.org/show_bug.cgi?id=191575
<rdar://problem/46012855>
Reviewed by Devin Rousso.
When there's at least one property is selected, Shift-clicking another property should extend the selection.
Pressing Up or Down keys while holding Shift also extends the selection.
Remove unnecessary `_startedSelection`. Use `hasSelectedProperties` and `_isMousePressed` instead.
* UserInterface/Views/SpreadsheetCSSStyleDeclarationEditor.js:
`_isMousePressed` was set to `true` by mistake, causing numerous assertion fails.
(WI.SpreadsheetCSSStyleDeclarationEditor.prototype.set focusIndex):
(WI.SpreadsheetCSSStyleDeclarationEditor.prototype.hasSelectedProperties): Renamed from _hasSelectedProperties.
(WI.SpreadsheetCSSStyleDeclarationEditor.prototype.extendSelectedProperties): Added.
(WI.SpreadsheetCSSStyleDeclarationEditor.prototype.spreadsheetStylePropertyMouseLeave): Removed.
(WI.SpreadsheetCSSStyleDeclarationEditor.prototype.spreadsheetStylePropertyCopy):
(WI.SpreadsheetCSSStyleDeclarationEditor.prototype._handleKeyDown):
Implement Shift-ArrowUp/ArrowDown keys.
* UserInterface/Views/SpreadsheetCSSStyleDeclarationSection.js:
(WI.SpreadsheetCSSStyleDeclarationSection):
(WI.SpreadsheetCSSStyleDeclarationSection.prototype.spreadsheetCSSStyleDeclarationEditorPropertyBlur):
(WI.SpreadsheetCSSStyleDeclarationSection.prototype.spreadsheetCSSStyleDeclarationEditorPropertyMouseLeave): Removed.
This was only used to set _startedSelection.
(WI.SpreadsheetCSSStyleDeclarationSection.prototype._handleMouseDown):
(WI.SpreadsheetCSSStyleDeclarationSection.prototype._handleWindowClick):
(WI.SpreadsheetCSSStyleDeclarationSection.prototype._handleClick):
Remove _startedSelection and use hasSelectedProperties method instead.
* UserInterface/Views/SpreadsheetStyleProperty.js:
(WI.SpreadsheetStyleProperty):
Remove spreadsheetStylePropertyMouseLeave since it is no longer used.
2018-11-14 Devin Rousso <drousso@apple.com>
Web Inspector: Canvas: send a call stack with each action instead of an array of call frames
https://bugs.webkit.org/show_bug.cgi?id=191628
Reviewed by Dean Jackson.
* UserInterface/Models/Recording.js:
(WI.Recording.prototype.async swizzle):
* UserInterface/Models/RecordingAction.js:
(WI.RecordingAction.fromPayload):
(WI.RecordingAction.prototype.async swizzle):
2018-11-14 Devin Rousso <drousso@apple.com>
Web Inspector: add drag+drop for importing Audits and Recordings
https://bugs.webkit.org/show_bug.cgi?id=191566
Reviewed by Joseph Pecoraro.
Reorganize the file loading logic for the Audit and Canvas tabs/managers. Add "drop" event
handlers to the tabs that add and show the corresponding object for the imported data.
* UserInterface/Views/AuditTabContentView.js:
(WI.AuditTabContentView):
(WI.AuditTabContentView.prototype._handleDragOver): Added.
(WI.AuditTabContentView.prototype._handleDrop): Added.
* UserInterface/Views/CanvasTabContentView.js:
(WI.CanvasTabContentView):
(WI.CanvasTabContentView.prototype._addCanvas):
(WI.CanvasTabContentView.prototype._recordingImportedOrStopped):
(WI.CanvasTabContentView.prototype._handleDragOver): Added.
(WI.CanvasTabContentView.prototype._handleDrop): Added.
* UserInterface/Controllers/AuditManager.js:
(WI.AuditManager.prototype.async processJSON): Added.
(WI.AuditManager.prototype.export):
(WI.AuditManager.prototype.import): Deleted.
* UserInterface/Controllers/CanvasManager.js:
(WI.CanvasManager.prototype.processJSON): Added.
(WI.CanvasManager.prototype.importRecording): Deleted.
* UserInterface/Views/AuditNavigationSidebarPanel.js:
(WI.AuditNavigationSidebarPanel):
(WI.AuditNavigationSidebarPanel.prototype.showDefaultContentView):
(WI.AuditNavigationSidebarPanel.prototype._handleImportButtonNavigationItemClicked):
* UserInterface/Views/CanvasSidebarPanel.js:
(WI.CanvasSidebarPanel):
(WI.CanvasSidebarPanel.prototype._handleImportButtonNavigationItemClicked): Added.
(WI.CanvasSidebarPanel.prototype._recordingChanged):
(WI.CanvasSidebarPanel.prototype._updateRecordNavigationItem):
* UserInterface/Views/CanvasOverviewContentView.js:
(WI.CanvasOverviewContentView):
(WI.CanvasOverviewContentView.prototype._handleImportButtonNavigationItemClicked): Added.
* UserInterface/Base/FileUtilities.js:
(WI.FileUtilities.save): Added.
(WI.FileUtilities.importText): Added.
(WI.FileUtilities.importJSON): Added.
(WI.FileUtilities.async readText): Added.
(WI.FileUtilities.async readJSON): Added.
(WI.saveDataToFile): Deleted.
(WI.loadDataFromFile): Deleted.
* UserInterface/Base/Main.js:
(WI._contextMenuRequested):
(WI._save):
(WI._saveAs):
* UserInterface/Views/ContextMenuUtilities.js:
(WI.appendContextMenuItemsForSourceCode):
* UserInterface/Views/LogContentView.js:
(WI.LogContentView.prototype._handleContextMenuEvent):
* UserInterface/Views/NetworkTableContentView.js:
(WI.NetworkTableContentView.prototype._exportHAR):
* UserInterface/Views/RecordingContentView.js:
(WI.RecordingContentView.prototype._exportRecording):
* UserInterface/Views/SpreadsheetCSSStyleDeclarationSection.js:
(WI.SpreadsheetCSSStyleDeclarationSection.prototype._save):
Move file related functions into a static class container.
* Localizations/en.lproj/localizedStrings.js:
2018-11-14 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Include target identifier in protocol logging
https://bugs.webkit.org/show_bug.cgi?id=191478
Reviewed by Devin Rousso.
* UserInterface/Protocol/Connection.js:
(InspectorBackend.Connection.prototype._dispatchResponse):
(InspectorBackend.Connection.prototype._dispatchEvent):
(InspectorBackend.Connection.prototype._sendMessageToBackend):
Call tracer log methods with the connection.
* UserInterface/Debug/CapturingProtocolTracer.js:
* UserInterface/Protocol/ProtocolTracer.js:
* UserInterface/Protocol/LoggingProtocolTracer.js:
(WI.LoggingProtocolTracer):
(WI.LoggingProtocolTracer.prototype.logFrontendException):
(WI.LoggingProtocolTracer.prototype.logFrontendRequest):
(WI.LoggingProtocolTracer.prototype.logWillHandleResponse):
(WI.LoggingProtocolTracer.prototype.logDidHandleResponse):
(WI.LoggingProtocolTracer.prototype.logDidHandleEvent):
Include the connection in log methods.
(WI.LoggingProtocolTracer.prototype.logProtocolError):
Removed, this is never called.
(WI.LoggingProtocolTracer.prototype._processEntry):
Include the target identifier in entry messages.
2018-11-14 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Keep Web Inspector window alive across process swaps (PSON) (Remote Inspector)
https://bugs.webkit.org/show_bug.cgi?id=191494
<rdar://problem/45469854>
Reviewed by Devin Rousso.
This starts introducing multi-target support into the Web Inspector frontend.
Specifically a backend connection that is persistent, but has the ability to
connect to and transition between Page targets received through that backend
connection.
This patch introduces the concept of a "Backend Target" which is the single
connection that the frontend contains to a backend. The old way of connecting
directly to a target is still supported. In that case the frontend constructs
a DirectBackendTarget for the debuggable type the frontend was spawns for.
However, if the frontend opens and has a TargetAgent, then it is likely
connected to a multi-target supporting backend and instead constructs a
MultiplexingBackendTarget, and will receive further information about
sub-targets to connect to. The only sub-target at the moment is a Page
sub-target.
As part of bringing up multi-target support this adds a few measures to
handle situations where the frontend is playing fast and loose with agents.
When the frontend does `FooAgent.method` it intends that to be performed
on the "main" target being debugged. Likewise when the frontend loops
over targets it expects them to be the debuggable targets. This patch
profiles a new implementation of `WI.mainTarget` and `WI.targets` to
match the assumptions being made by the frontend.
- In a direct-target world, there is a single target which
should be used for global agents and in WI.targets.
- In a multi-target world, the page target is the one that
should be used for global agents and WI.targets is the list
of sub-targets (excluding the MultiplexingBackendTarget).
In a multi-target world, there are now commonly two Targets. The
MultiplexingBackendTarget and a PageTarget sub-target. In the future
this may include more targets, such as ServiceWorkers, DedicatedWorkers,
and perhaps even frames.
In a multi-target world, the frontend is immediately told about targets
as soon as it opens (via Target.targetCreated). In order to support
this, frontend initialization happens without a main target being available.
So this makes a few small changes to frontend initialization to perform
a bit of work once we know what the main target is.
During a page transition the frontend is told to destroy existing targets
and is soon after told about any new page targets (via Target.targetDestroyed
and Target.targetCreated). The frontend special cases this page transition.
It expects only one Page target to be alive at any time, accessible through
WI.pageTarget. When a page transition happens the WI.pageTarget changes, and
the frontend performs a bit of work to prepare the UI to handle the transition:
`<Manager>.transitionPageTarget` / WI.Notification.TransitionPageTarget.
For the most part the UI behaves fine as long once there are main frame
change and main resource change events, but those other events allow
the frontend to respond to the specific page transition cases.
* UserInterface/Base/Main.js:
(WI.loaded):
(WI.initializeBackendTarget):
(WI.initializePageTarget):
(WI.transitionPageTarget):
(WI.terminatePageTarget):
(WI.resetMainExecutionContext):
(WI.redirectGlobalAgentsToConnection):
(WI.contentLoaded):
New global functions for target initialization
and page transitioning.
* UserInterface/Test/Test.js:
(WI.loaded):
(WI.initializeBackendTarget):
(WI.initializePageTarget):
(WI.transitionPageTarget):
(WI.terminatePageTarget):
(WI.resetMainExecutionContext):
(WI.redirectGlobalAgentsToConnection):
New global functions for target initialization.
Tests continue to be a direct connection to the Page.
* UserInterface/Protocol/TargetObserver.js:
(WI.TargetObserver.prototype.targetCreated):
(WI.TargetObserver.prototype.targetDestroyed):
(WI.TargetObserver.prototype.dispatchMessageFromTarget):
New observer goes to the manager.
* UserInterface/Controllers/TargetManager.js:
(WI.TargetManager):
(WI.TargetManager.prototype.get targets):
(WI.TargetManager.prototype.get allTargets):
(WI.TargetManager.prototype.targetForIdentifier):
(WI.TargetManager.prototype.targetCreated):
(WI.TargetManager.prototype.targetDestroyed):
(WI.TargetManager.prototype.dispatchMessageFromTarget):
(WI.TargetManager.prototype.createMultiplexingBackendTarget):
(WI.TargetManager.prototype.createDirectBackendTarget):
(WI.TargetManager.prototype._addTarget):
(WI.TargetManager.prototype._removeTarget):
(WI.TargetManager.prototype._createTarget):
(WI.TargetManager.prototype._checkAndHandlePageTargetTransition):
(WI.TargetManager.prototype._checkAndHandlePageTargetTermination):
(WI.TargetManager.prototype.addTarget): Deleted.
(WI.TargetManager.prototype.removeTarget): Deleted.
(WI.TargetManager.prototype.initializeMainTarget): Deleted.
TargetManager is where we handle creating and destroying targets
and their connections. In order to simplify things a bit we make
`WI.targets`, which goes through `get targets()` an array instead
of a Set. And this includes only the sub-targets.
* UserInterface/Controllers/WorkerManager.js:
(WI.WorkerManager.prototype.workerCreated):
(WI.WorkerManager.prototype.workerTerminated):
Workers are still special-target-like things that multiplex through
WorkerAgent instead of TargetAgent. We'd like to promote these to
be full targets in the future.
* UserInterface/Protocol/DirectBackendTarget.js: Renamed from Source/WebInspectorUI/UserInterface/Protocol/MainTarget.js.
(WI.DirectBackendTarget):
(WI.DirectBackendTarget.connectionInfoForDebuggable):
(WI.DirectBackendTarget.prototype.get mainResource):
(WI.DirectBackendTarget.prototype.set mainResource):
This is the only "MainTarget" class. It is the backend target for a direct connection.
* UserInterface/Protocol/MultiplexingBackendTarget.js:
(WI.MultiplexingBackendTarget):
(WI.MultiplexingBackendTarget.prototype.initialize):
(WI.MultiplexingBackendTarget.prototype.get name):
(WI.MultiplexingBackendTarget.prototype.get executionContext):
(WI.MultiplexingBackendTarget.prototype.get mainResource):
This is the new backend target for a multi-target connection.
We don't expect it to be treated like other targets, so we don't
expect anyone to ask it for resources/executionContext/name info.
* UserInterface/Controllers/RuntimeManager.js:
(WI.TargetManager.prototype.evaluateInInspectedWindow):
This can be triggered by watch expressions before any target, and
therefore execution context, is available. Just return null, when
an execution context is available those clients will try again.
* UserInterface/Debug/Bootstrap.js:
Provide an WI.isEngineeringBuild boolean that can be used for various
debugging features.
* UserInterface/Main.html:
* UserInterface/Test.html:
New resources.
* UserInterface/Protocol/InspectorBackend.js:
(InspectorBackendClass.prototype.dispatch):
(InspectorBackendClass.prototype.runAfterPendingDispatches):
(InspectorBackend.Agent):
`InspectorBackend.mainConnection` was renamed `InspectorBackend.backendConnection`.
* UserInterface/Protocol/Connection.js:
(InspectorBackend.Connection):
(InspectorBackend.Connection.prototype._dispatchResponse):
(InspectorBackend.Connection.prototype._sendCommandToBackendWithCallback):
(InspectorBackend.Connection.prototype._sendCommandToBackendExpectingPromise):
(InspectorBackend.BackendConnection):
(InspectorBackend.BackendConnection.prototype.sendMessageToBackend):
(InspectorBackend.WorkerConnection):
(InspectorBackend.TargetConnection):
(InspectorBackend.TargetConnection.sendMessageToBackend):
Use a global sequence id to make filtering a bit easier in protocol tracing.
TargetConnection is identical to WorkerConnection except it uses TargetAgent
instead of WorkerAgent to perform multiplexing.
* UserInterface/Protocol/JavaScriptContextTarget.js:
(WI.JavaScriptContextTarget):
* UserInterface/Protocol/PageTarget.js:
(WI.PageTarget):
(WI.PageTarget.prototype.get displayName):
Specialized target types.
* UserInterface/Views/DebuggerSidebarPanel.js:
(WI.DebuggerSidebarPanel):
(WI.DebuggerSidebarPanel.prototype._targetAdded):
(WI.DebuggerSidebarPanel.prototype._targetRemoved):
(WI.DebuggerSidebarPanel.prototype._updateCallStackTreeOutline):
* UserInterface/Views/SourceCodeTextEditor.js:
(WI.SourceCodeTextEditor.prototype._targetAdded):
(WI.SourceCodeTextEditor.prototype._targetRemoved):
(WI.SourceCodeTextEditor.prototype._callFramesDidChange):
(WI.SourceCodeTextEditor.prototype._updateThreadIndicatorWidget):
(WI.SourceCodeTextEditor.prototype._reinsertAllThreadIndicators):
* UserInterface/Views/QuickConsole.js:
(WI.QuickConsole.prototype.initializeMainExecutionContextPathComponent):
(WI.QuickConsole.prototype._targetAdded):
(WI.QuickConsole.prototype._targetRemoved):
We make target added get called with all targets, including the
MultiplexingBackendTarget and PageTargets, both of which would
not have happened before. Before it was only WorkerTargets. Make
these sites a little more robust for the type of target they expect
to be able to handle.
* UserInterface/Base/Object.js:
* UserInterface/Controllers/DOMManager.js:
(WI.DOMManager):
(WI.DOMManager.prototype.transitionPageTarget):
(WI.DOMManager.prototype.requestDocument):
(WI.DOMManager.prototype._setDocument):
* UserInterface/Controllers/NetworkManager.js:
(WI.NetworkManager):
(WI.NetworkManager.prototype.transitionPageTarget):
(WI.NetworkManager.prototype.executionContextCreated):
(WI.NetworkManager.prototype._processMainFrameResourceTreePayload):
* UserInterface/Models/DefaultDashboard.js:
(WI.DefaultDashboard):
(WI.DefaultDashboard.prototype._mainResourceDidChange):
(WI.DefaultDashboard.prototype._transitionPageTarget):
* UserInterface/Views/NetworkTableContentView.js:
(WI.NetworkTableContentView):
(WI.NetworkTableContentView.prototype._mainResourceDidChange):
(WI.NetworkTableContentView.prototype._transitionPageTarget):
Special case handling when performing a page transition.
* UserInterface/Views/SettingsTabContentView.js:
* UserInterface/Debug/UncaughtExceptionReporter.js:
Document reloads are not supported right now.
2018-11-14 Devin Rousso <drousso@apple.com>
Web Inspector: Canvas: don't start with auto-capture enabled
https://bugs.webkit.org/show_bug.cgi?id=191553
Reviewed by Matt Baker.
* UserInterface/Views/CanvasOverviewContentView.js:
(WI.CanvasOverviewContentView.prototype._setRecordingAutoCaptureFrameCount):
(WI.CanvasOverviewContentView.prototype._updateRecordingAutoCaptureInputElementSize):
(WI.CanvasOverviewContentView.prototype._handleRecordingAutoCaptureInput):
* UserInterface/Views/CanvasOverviewContentView.css:
(.navigation-bar > .item.canvas-recording-auto-capture > label > input):
2018-11-14 Devin Rousso <drousso@apple.com>
Web Inspector: Network Graphs are missing minimum sizes, might have no graph at all
https://bugs.webkit.org/show_bug.cgi?id=191208
Reviewed by Joseph Pecoraro.
`WI.NetworkTableContentView` used to rely on the `WI.timelineManager.persistentNetworkTimeline`
for events when a new resource is added. It also listened for `WI.Frame.Event.MainResourceDidChange`
on it's own, which was also listened to by `WI.timelineManager.persistentNetworkTimeline`.
Due to the order in which these listeners are added, the new main resource would get added
to the `WI.timelineManager.persistentNetworkTimeline` (and the `WI.NetworkTableContentView`
shortly after), and right after that the `WI.NetworkTableContentView` would reset the graph
in it's own listener for `WI.Frame.Event.MainResourceDidChange`.
This patch removes `WI.timelineManager.persistentNetworkTimeline` and instead makes it so
that `WI.NetworkTableContentView` listens for resource added and main frame changed events
on its own (similar to other views that follow this pattern), ensuring that there are no
event races.
Also relaxes the "requirement" that prevented 0 width blocks from being drawn, allowing
requests served from memory/disk to appear in the graph (their time is effectively 0).
* UserInterface/Views/NetworkTableContentView.js:
(WI.NetworkTableContentView):
(WI.NetworkTableContentView.prototype.closed):
(WI.NetworkTableContentView.prototype._populateWaterfallGraph):
(WI.NetworkTableContentView.prototype._populateWaterfallGraph.appendBlock):
(WI.NetworkTableContentView.prototype._updateWaterfallTimeRange): Added.
(WI.NetworkTableContentView.prototype._resourceLoadingDidFinish):
(WI.NetworkTableContentView.prototype._resourceLoadingDidFail):
(WI.NetworkTableContentView.prototype._handleResourceAdded): Added.
(WI.NetworkTableContentView.prototype._insertResourceAndReloadTable):
(WI.NetworkTableContentView.prototype._handleNodeDidFireEvent):
(WI.NetworkTableContentView.prototype._handleNodeLowPowerChanged):
* UserInterface/Views/NetworkTableContentView.css:
(.network-table .waterfall .block:matches(.mouse-tracking, .filler) + .block:not(.mouse-tracking, .filler)): Added.
(.network-table .waterfall .block.filler + .block): Deleted.
* UserInterface/Controllers/TimelineManager.js:
(WI.TimelineManager):
(WI.TimelineManager.prototype._mainResourceDidChange):
(WI.TimelineManager.prototype._resourceWasAdded):
(WI.TimelineManager.prototype.get persistentNetworkTimeline): Deleted.
2018-11-13 Matt Baker <mattbaker@apple.com>
Web Inspector: Table should support select all (Cmd-A)
https://bugs.webkit.org/show_bug.cgi?id=190299
<rdar://problem/45029170>
Reviewed by Devin Rousso.
* UserInterface/Views/Table.js:
(WI.Table.prototype.selectAll):
(WI.Table.prototype._handleKeyDown):
2018-11-13 Matt Baker <mattbaker@apple.com>
Web Inspector: Table with no selection should select the first/last row on down/up arrow key
https://bugs.webkit.org/show_bug.cgi?id=190100
<rdar://problem/44879243>
Reviewed by Devin Rousso.
Pressing the up or down arrow key when nothing is selected should select
the last or first row, respectively. After selecting the row make sure
it is visible by calling the new Table method `revealRow`.
* UserInterface/Views/Table.js:
(WI.Table.prototype.revealRow):
(WI.Table.prototype._handleKeyDown):
(WI.Table.prototype._selectRowsFromArrowKey):
2018-11-13 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Styles: Command-A should select all properties
https://bugs.webkit.org/show_bug.cgi?id=191435
<rdar://problem/45921373>
Reviewed by Devin Rousso.
When focused on a style property, Command-A on Mac (Control-A on other platforms)
should select all properties of the style rule.
* UserInterface/Base/Utilities.js:
* UserInterface/Views/SpreadsheetCSSStyleDeclarationEditor.js:
(WI.SpreadsheetCSSStyleDeclarationEditor.prototype.selectProperties):
(WI.SpreadsheetCSSStyleDeclarationEditor.prototype._handleKeyDown):
2018-11-12 Devin Rousso <drousso@apple.com>
Web Inspector: Network: show secure certificate details per-request
https://bugs.webkit.org/show_bug.cgi?id=191447
<rdar://problem/30019476>
Reviewed by Joseph Pecoraro.
* UserInterface/Controllers/NetworkManager.js:
(WI.NetworkManager.prototype.resourceRequestWasServedFromMemoryCache):
(WI.NetworkManager.prototype.resourceRequestDidReceiveResponse):
* UserInterface/Models/Resource.js:
(WI.Resource.prototype.get responseSecurity): Added.
(WI.Resource.prototype.get loadedSecurely): Added.
(WI.Resource.prototype.updateForResponse):
* UserInterface/Views/NetworkResourceDetailView.js:
(WI.NetworkResourceDetailView):
(WI.NetworkResourceDetailView.prototype.initialLayout):
(WI.NetworkResourceDetailView.prototype.showContentViewForIdentifier):
* UserInterface/Views/NetworkResourceDetailView.css:
(.content-view.resource-details .go-to-arrow): Added.
(.content-view.resource-details.showing-find-banner .search-highlight): Added.
* UserInterface/Views/ResourceSecurityContentView.js: Added.
(WI.ResourceSecurityContentView):
(WI.ResourceSecurityContentView.prototype.initialLayout):
(WI.ResourceSecurityContentView.prototype.layout):
(WI.ResourceSecurityContentView.prototype.closed):
(WI.ResourceSecurityContentView.prototype.get supportsSearch):
(WI.ResourceSecurityContentView.prototype.get numberOfSearchResults):
(WI.ResourceSecurityContentView.prototype.get hasPerformedSearch):
(WI.ResourceSecurityContentView.prototype.set automaticallyRevealFirstSearchResult):
(WI.ResourceSecurityContentView.prototype.performSearch):
(WI.ResourceSecurityContentView.prototype.searchCleared):
(WI.ResourceSecurityContentView.prototype.revealPreviousSearchResult):
(WI.ResourceSecurityContentView.prototype.revealNextSearchResult):
(WI.ResourceSecurityContentView.prototype._refreshCetificateSection):
(WI.ResourceSecurityContentView.prototype._perfomSearchOnKeyValuePairs):
(WI.ResourceSecurityContentView.prototype._revealSearchResult):
(WI.ResourceSecurityContentView.prototype._handleResourceResponseReceived):
* UserInterface/Views/ResourceSecurityContentView.css: Added.
(body[dir] .resource-security > section.certificate > .details):
(.resource-security .details .key):
(.resource-security .dns-name + .dns-name > .key,):
(.resource-security .show-more):
(@media (prefers-dark-interface) body[dir] .resource-security > section.certificate > .details):
(@media (prefers-dark-interface) .resource-security .details .key):
* UserInterface/Views/ResourceCookiesContentView.js:
(WI.ResourceCookiesContentView.prototype._refreshRequestCookiesSection):
(WI.ResourceCookiesContentView.prototype._refreshResponseCookiesSection):
(WI.ResourceCookiesContentView.prototype._markIncompleteSectionWithMessage): Deleted.
(WI.ResourceCookiesContentView.prototype._markIncompleteSectionWithLoadingIndicator): Deleted.
* UserInterface/Views/ResourceHeadersContentView.js:
(WI.ResourceHeadersContentView.prototype._refreshSummarySection):
(WI.ResourceHeadersContentView.prototype._refreshRedirectHeadersSections):
(WI.ResourceHeadersContentView.prototype._refreshRequestHeadersSection):
(WI.ResourceHeadersContentView.prototype._refreshResponseHeadersSection):
(WI.ResourceHeadersContentView.prototype._refreshQueryStringSection):
(WI.ResourceHeadersContentView.prototype._refreshRequestDataSection):
(WI.ResourceHeadersContentView.prototype._markIncompleteSectionWithMessage): Deleted.
(WI.ResourceHeadersContentView.prototype._markIncompleteSectionWithLoadingIndicator): Deleted.
(WI.ResourceHeadersContentView.prototype._appendKeyValuePair): Deleted.
* UserInterface/Views/ResourceHeadersContentView.css:
(.resource-headers .h1-status > .key,):
(body[dir] .resource-headers > section.error > .details): Deleted.
(.resource-headers > section.error .key): Deleted.
(.resource-headers .details): Deleted.
(.resource-headers .details .pair): Deleted.
(body[dir=rtl] .resource-headers .details .pair): Deleted.
(.resource-headers .details .key): Deleted.
(.resource-headers .value): Deleted.
(.resource-headers .go-to-arrow): Deleted.
(.resource-headers.showing-find-banner .search-highlight): Deleted.
* UserInterface/Views/ResourceDetailsSection.js:
(WI.ResourceDetailsSection.prototype.markIncompleteSectionWithMessage): Added.
(WI.ResourceDetailsSection.prototype.markIncompleteSectionWithLoadingIndicator): Added.
(WI.ResourceDetailsSection.prototype.appendKeyValuePair): Added.
* UserInterface/Views/ResourceDetailsSection.css:
(.resource-details > section > .details): Added.
(.resource-details > section > .details > .pair): Added.
(body[dir=rtl] .resource-details > section > .details > .pair): Added.
(.resource-details > section > .details > .pair > .key): Added.
(.resource-details > section > .details > .pair > .value): Added.
(body[dir] .resource-details > section.error > .details): Added.
(.resource-details > section.error > .details > .pair > .key): Added.
Move commonly used functions/styles from container classes onto this object.
* UserInterface/Main.html:
* Localizations/en.lproj/localizedStrings.js:
2018-11-12 Matt Baker <mattbaker@apple.com>
Web Inspector: Table should support shift-extending the row selection
https://bugs.webkit.org/show_bug.cgi?id=189718
<rdar://problem/44577942>
Reviewed by Devin Rousso.
Allow the table selection to be extended by shift-clicking a row, or by
holding shift and pressing either the up or down arrow key. If both command
and shift are pressed, shift is ignored. The selection behavior is modeled
after AppKit's NSTableView.
* UserInterface/Base/IndexSet.js:
(WI.IndexSet.prototype.addRange):
(WI.IndexSet.prototype.deleteRange):
(WI.IndexSet.prototype.equals):
(WI.IndexSet.prototype.difference):
* UserInterface/Views/Table.js:
(WI.Table):
(WI.Table.prototype.set allowsMultipleSelection):
(WI.Table.prototype.reloadData):
(WI.Table.prototype.selectRow):
(WI.Table.prototype.deselectRow):
(WI.Table.prototype._handleKeyDown):
Holding shift and pressing either the up or down arrow key extends the
selection to the next unselected row adjacent to the anchor row, or causes
the anchor row to be deselected, decreasing the selection. The table chooses
the action to take based on the direction of movement (up or down), and
the currently selected rows.
(WI.Table.prototype._selectRowsFromArrowKey):
(WI.Table.prototype._handleMouseDown.normalizeRange):
(WI.Table.prototype._handleMouseDown):
Clicking a row while holding down shift extends the selection to include
the rows between the anchor row (exclusive) and clicked row (inclusive).
The anchor row is equal to the value of `_selectedRowIndex` prior to
clicking a new row.
(WI.Table.prototype._deselectAllAndSelect):
(WI.Table.prototype._removeRows):
(WI.Table.prototype._toggleSelectedRowStyle):
(WI.Table.prototype._updateSelectedRows):
Helper method for updating the selection to the specified rows, and updating
DOM styles for rows that are added to or removed from the selection.
2018-11-12 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Styles: inline swatches don't work when Multiple Properties Selection is enabled
https://bugs.webkit.org/show_bug.cgi?id=191165
<rdar://problem/45737972>
Reviewed by Devin Rousso.
* UserInterface/Views/SpreadsheetStyleProperty.js:
(WI.SpreadsheetStyleProperty.prototype._createInlineSwatch):
* UserInterface/Views/SpreadsheetTextField.js:
(WI.SpreadsheetTextField):
`click` is fired after `mouseup` and inline swatches are activated by `click` event.
Changing this to `click` allows swatches to activate before editing starts.
(WI.SpreadsheetTextField.prototype._handleMouseDown):
Clicking on the field that is being edited should't restart editing. It should move the text caret.
2018-11-12 Don Olmstead <don.olmstead@sony.com>
Shipped PNGs include bad profiles: iCCP: known incorrect sRGB profile
https://bugs.webkit.org/show_bug.cgi?id=189230
<rdar://problem/44050379>
Reviewed by Joseph Pecoraro.
Runs all png images through zopflipng. This results in a smaller file
size and takes care of this issue as a byproduct.
* UserInterface/Images/ApplicationCache.png:
* UserInterface/Images/ApplicationCache@2x.png:
* UserInterface/Images/ApplicationCacheManifest.png:
* UserInterface/Images/ApplicationCacheManifest@2x.png:
* UserInterface/Images/Breakpoint.png:
* UserInterface/Images/Breakpoint@2x.png:
* UserInterface/Images/BreakpointInactive.png:
* UserInterface/Images/BreakpointInactive@2x.png:
* UserInterface/Images/ClippingCSS.png:
* UserInterface/Images/ClippingCSS@2x.png:
* UserInterface/Images/ClippingCSSLarge.png:
* UserInterface/Images/ClippingCSSLarge@2x.png:
* UserInterface/Images/ClippingGeneric.png:
* UserInterface/Images/ClippingGeneric@2x.png:
* UserInterface/Images/ClippingGenericLarge.png:
* UserInterface/Images/ClippingGenericLarge@2x.png:
* UserInterface/Images/ClippingJS.png:
* UserInterface/Images/ClippingJS@2x.png:
* UserInterface/Images/ClippingJSLarge.png:
* UserInterface/Images/ClippingJSLarge@2x.png:
* UserInterface/Images/ColorIcon.png:
* UserInterface/Images/ColorIcon@2x.png:
* UserInterface/Images/Cookie.png:
* UserInterface/Images/Cookie@2x.png:
* UserInterface/Images/Database.png:
* UserInterface/Images/Database@2x.png:
* UserInterface/Images/DatabaseTable.png:
* UserInterface/Images/DatabaseTable@2x.png:
* UserInterface/Images/DocumentCSS.png:
* UserInterface/Images/DocumentCSS@2x.png:
* UserInterface/Images/DocumentCSSLarge.png:
* UserInterface/Images/DocumentCSSLarge@2x.png:
* UserInterface/Images/DocumentFont.png:
* UserInterface/Images/DocumentFont@2x.png:
* UserInterface/Images/DocumentFontLarge.png:
* UserInterface/Images/DocumentFontLarge@2x.png:
* UserInterface/Images/DocumentGL.png:
* UserInterface/Images/DocumentGL@2x.png:
* UserInterface/Images/DocumentGeneric.png:
* UserInterface/Images/DocumentGeneric@2x.png:
* UserInterface/Images/DocumentGenericLarge.png:
* UserInterface/Images/DocumentGenericLarge@2x.png:
* UserInterface/Images/DocumentImage.png:
* UserInterface/Images/DocumentImage@2x.png:
* UserInterface/Images/DocumentImageLarge.png:
* UserInterface/Images/DocumentImageLarge@2x.png:
* UserInterface/Images/DocumentJS.png:
* UserInterface/Images/DocumentJS@2x.png:
* UserInterface/Images/DocumentJSLarge.png:
* UserInterface/Images/DocumentJSLarge@2x.png:
* UserInterface/Images/DocumentMarkup.png:
* UserInterface/Images/DocumentMarkup@2x.png:
* UserInterface/Images/DocumentMarkupLarge.png:
* UserInterface/Images/DocumentMarkupLarge@2x.png:
* UserInterface/Images/FolderGeneric.png:
* UserInterface/Images/FolderGeneric@2x.png:
* UserInterface/Images/GradientStop.png:
* UserInterface/Images/GradientStop@2x.png:
* UserInterface/Images/GradientStopSelected.png:
* UserInterface/Images/GradientStopSelected@2x.png:
* UserInterface/Images/HoverMenuButton.png:
* UserInterface/Images/HoverMenuButton@2x.png:
* UserInterface/Images/InstructionPointer.png:
* UserInterface/Images/InstructionPointer@2x.png:
* UserInterface/Images/LocalStorage.png:
* UserInterface/Images/LocalStorage@2x.png:
* UserInterface/Images/SessionStorage.png:
* UserInterface/Images/SessionStorage@2x.png:
* UserInterface/Images/SliderThumb.png:
* UserInterface/Images/SliderThumb@2x.png:
* UserInterface/Images/SliderThumbPressed.png:
* UserInterface/Images/SliderThumbPressed@2x.png:
* UserInterface/Images/WebSocket.png:
* UserInterface/Images/WebSocket@2x.png:
* UserInterface/Images/WebSocketLarge.png:
* UserInterface/Images/WebSocketLarge@2x.png:
* UserInterface/Images/WorkerScript.png:
* UserInterface/Images/WorkerScript@2x.png:
* UserInterface/Images/WorkerScriptLarge.png:
* UserInterface/Images/WorkerScriptLarge@2x.png:
2018-11-12 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Styles: Pressing Tab or Enter should start editing focused property
https://bugs.webkit.org/show_bug.cgi?id=191510
<rdar://problem/45970897>
Reviewed by Dean Jackson.
* UserInterface/Views/SpreadsheetCSSStyleDeclarationEditor.js:
(WI.SpreadsheetCSSStyleDeclarationEditor.prototype._handleKeyDown):
2018-11-08 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Start moving toward better multi-target support
https://bugs.webkit.org/show_bug.cgi?id=191345
Reviewed by Devin Rousso.
This change continues the move toward better multi-target support
by explicitly using explicit target agents in more places, and
converting generalized feature checks into target agnostic versions
that use the new InspectorBackend.domains, which does not vary based
on the connected targets / debuggable type.
I also audited uses of RuntimeAgent, ConsoleAgent, and DebuggerAgent
for better multi-target support since these agents should already
have complete multi-target support.
* UserInterface/Protocol/Target.js:
(WI.Target.prototype.initialize):
Move explicitly to target.Agent feature checks with a known target.
* UserInterface/Controllers/DebuggerManager.js:
(WI.DebuggerManager.prototype.initializeTarget):
(WI.DebuggerManager.prototype._pauseForInternalScriptsDidChange):
Move explicitly to target.DebuggerAgent for feature checks with a known target.
* UserInterface/Controllers/NetworkManager.js:
(WI.NetworkManager.prototype.initializeTarget):
Move explicitly to target.NetworkAgent for feature checks with a known target.
* UserInterface/Controllers/RuntimeManager.js:
(WI.RuntimeManager.prototype.initializeTarget):
(WI.RuntimeManager.prototype.saveResult):
* UserInterface/Protocol/RemoteObject.js:
(WI.RemoteObject.prototype.updatePreview):
(WI.RemoteObject.prototype.getDisplayablePropertyDescriptors):
(WI.RemoteObject.prototype.deprecatedGetDisplayableProperties):
* UserInterface/Views/SourceCodeTextEditor.js:
(WI.SourceCodeTextEditor.prototype._createTypeTokenAnnotator):
(WI.SourceCodeTextEditor.prototype._createBasicBlockAnnotator):
Move explicitly to target.RuntimeAgent for feature checks with a known target.
* UserInterface/Models/CSSCompletions.js:
(WI.CSSCompletions.initializeCSSCompletions):
Move explicitly to target.CSSAgent for feature checks with a known target.
* UserInterface/Views/ContextMenuUtilities.js:
Use the DebuggerAgent from the target associated with the DOMNode's
remote object instead of assuming the main target.
* UserInterface/Views/SettingsTabContentView.js:
(WI.SettingsTabContentView.prototype._createGeneralSettingsView):
Update the ConsoleAgent setting on all targets that support it.
* UserInterface/Views/BreakpointActionView.js:
(WI.BreakpointActionView):
All backends support BreakpointActionType, the assertion can go away.
* UserInterface/Views/LogContentView.js:
(WI.LogContentView.prototype.get navigationItems):
* UserInterface/Views/DOMTreeContentView.js:
(WI.DOMTreeContentView.prototype.get navigationItems):
Include additional `window.FooAgent` checks for these since they will need
to be revisited in the future.
* UserInterface/Protocol/InspectorBackend.js:
(InspectorBackendClass.prototype.get domains):
(InspectorBackendClass.prototype.activateDomain):
Expose InspectorBackend.domains.<Domain> for feature checking.
* UserInterface/Controllers/BreakpointPopoverController.js:
(WI.BreakpointPopoverController.prototype._createPopoverContent):
* UserInterface/Controllers/CSSManager.js:
(WI.CSSManager):
(WI.CSSManager.prototype._mainResourceDidChange):
* UserInterface/Controllers/TimelineManager.js:
(WI.TimelineManager.prototype._attemptAutoCapturingForFrame):
(WI.TimelineManager.prototype._updateAutoCaptureInstruments):
(WI.TimelineManager):
* UserInterface/Models/Canvas.js:
(WI.Canvas.prototype.startRecording):
(WI.Canvas.prototype.recordingFinished):
* UserInterface/Models/ScriptSyntaxTree.js:
(WI.ScriptSyntaxTree.functionReturnDivot):
* UserInterface/Protocol/DebuggerObserver.js:
(WI.DebuggerObserver):
* UserInterface/Protocol/NetworkObserver.js:
(WI.NetworkObserver.prototype.requestWillBeSent):
* UserInterface/Views/DebuggerSidebarPanel.js:
(WI.DebuggerSidebarPanel):
(WI.DebuggerSidebarPanel.prototype._handleCreateBreakpointClicked):
* UserInterface/Views/NetworkTimelineView.js:
(WI.NetworkTimelineView):
* UserInterface/Views/ResourceDetailsSidebarPanel.js:
(WI.ResourceDetailsSidebarPanel.prototype._refreshRequestAndResponse):
* UserInterface/Views/WebSocketContentView.js:
(WI.WebSocketContentView):
(WI.NetworkManager.prototype.webSocketWillSendHandshakeRequest):
(WI.DebuggerManager.prototype.debuggerDidResume):
Feature check in a target agnostic way.
2018-11-08 Matt Baker <mattbaker@apple.com>
Web Inspector: ResourceQueryController should early return when query is longer than search string
https://bugs.webkit.org/show_bug.cgi?id=191436
Reviewed by Devin Rousso.
* UserInterface/Controllers/ResourceQueryController.js:
* UserInterface/Models/ResourceQueryMatch.js:
(WI.ResourceQueryMatch):
Drive-by fixes.
2018-11-08 Joseph Pecoraro <pecoraro@apple.com>
Uncaught Exception: undefined is not an object (evaluating 'treeElement.parent.removeChild')
https://bugs.webkit.org/show_bug.cgi?id=191454
Reviewed by Matt Baker.
* UserInterface/Views/ResourceSidebarPanel.js:
(WI.ResourceSidebarPanel.prototype._scriptsCleared):
This was intending to iterate the Map's values, which are tree elements.
2018-11-08 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Potential for watch expressions to never show results
https://bugs.webkit.org/show_bug.cgi?id=191438
Reviewed by Matt Baker.
* UserInterface/Views/ScopeChainDetailsSidebarPanel.js:
(WI.ScopeChainDetailsSidebarPanel.prototype._generateWatchExpressionsSection):
If there was no object don't bail, continue and resolve the Promise.
In this case we can fallback to show `undefined`. This code might not be
reachable right now, but is wrong as is.
2018-11-08 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Debugger Popover does not work when paused in Worker
https://bugs.webkit.org/show_bug.cgi?id=191342
Reviewed by Devin Rousso.
* UserInterface/Views/SourceCodeTextEditor.js:
(WI.SourceCodeTextEditor.prototype._tokenTrackingControllerHighlightedJavaScriptExpression.populate):
(WI.SourceCodeTextEditor.prototype._tokenTrackingControllerHighlightedJavaScriptExpression):
When receiving the result of the popover evaluation associate the RemoteObject with
the target we used to evaluate (such as the Debugger call frame), not the target
associated with the editor.
2018-11-08 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Restrict domains at the target level instead of only at the window level
https://bugs.webkit.org/show_bug.cgi?id=191344
Reviewed by Devin Rousso.
With this change the list of agents available on the target should accurately
reflect the domains that target supports. We should start moving in the direction
that if we are checking for, or using, a feature, we should ideally be using
code that looks like `target.FooAgent.method` and not `window.FooAgent` or
an unprefixed `FooAgent`. More changes to follow.
* UserInterface/Controllers/AppControllerBase.js:
* UserInterface/Base/DebuggableType.js: Added.
Extract debuggable type enum out into its own file loaded early on.
* UserInterface/Main.html:
* UserInterface/Test.html:
Load DebuggableType.js.
* UserInterface/Controllers/NetworkManager.js:
(WI.NetworkManager.prototype.initializeTarget):
With these changes target.ServiceWorker is only exposed on a ServiceWorker target.
* UserInterface/Protocol/Connection.js:
(InspectorBackend.WorkerConnection):
With these changes Target.js restricts the domains exposed on the Target so just
clone all of the agents (we don't need to do anything special).
* UserInterface/Protocol/InspectorBackend.js:
(InspectorBackendClass.prototype.activateDomain):
Update supported domains per-type. If there is no explicit availability
then the domain is supported on all types.
(InspectorBackendClass.prototype.supportedDomainsForDebuggableType):
Get supported domains per-type.
(InspectorBackendClass.prototype.get workerSupportedDomains): Deleted.
(InspectorBackendClass.prototype.workerSupportedDomain): Deleted.
workerSupportedDomains is now unnecessary.
* UserInterface/Protocol/Target.js:
(WI.Target.prototype._supportedDomainsForTargetType):
Restrict supported domains for this target based on its type.
* UserInterface/Protocol/Legacy/10.3/InspectorBackendCommands.js:
* UserInterface/Protocol/Legacy/11.0/InspectorBackendCommands.js:
* UserInterface/Protocol/Legacy/11.3/InspectorBackendCommands.js:
* UserInterface/Protocol/Legacy/12.0/InspectorBackendCommands.js:
* Versions/Inspector-iOS-10.3.json:
* Versions/Inspector-iOS-11.0.json:
* Versions/Inspector-iOS-11.3.json:
* Versions/Inspector-iOS-12.0.json:
Regenerate protocol files now that workerSupportedDomains is unnecessary
and explicit availability has been added to other domains.
2018-11-07 Nikita Vasilyev <nvasilyev@apple.com>
REGRESSION(r236705): Web Inspector: wrong text color for selected DataGrid row
https://bugs.webkit.org/show_bug.cgi?id=191405
<rdar://problem/45893283>
Reviewed by Matt Baker.
Selection background color for both Dark Mode mode and Light Mode is dark blue.
The text color for both cases should be white.
* UserInterface/Views/DataGrid.css:
(body:not(.window-inactive, .window-docked-inactive) .data-grid:focus tr.editable.selected .cell-content > input):
2018-11-07 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Fix "Javascript" => "JavaScript" enum in protocol generated objects
https://bugs.webkit.org/show_bug.cgi?id=191340
Reviewed by Devin Rousso.
* UserInterface/Models/Canvas.js:
(WI.Canvas.fromPayload):
Insert a missing break statement for the WebGPU case.
* UserInterface/Models/MemoryTimelineRecord.js:
(WI.MemoryTimelineRecord.memoryCategoriesFromProtocol):
Use new enum name.
* UserInterface/Protocol/Legacy/10.0/InspectorBackendCommands.js:
* UserInterface/Protocol/Legacy/10.3/InspectorBackendCommands.js:
* UserInterface/Protocol/Legacy/11.0/InspectorBackendCommands.js:
* UserInterface/Protocol/Legacy/11.3/InspectorBackendCommands.js:
* UserInterface/Protocol/Legacy/12.0/InspectorBackendCommands.js:
* UserInterface/Protocol/Legacy/8.0/InspectorBackendCommands.js:
* UserInterface/Protocol/Legacy/9.0/InspectorBackendCommands.js:
* UserInterface/Protocol/Legacy/9.3/InspectorBackendCommands.js:
Update enums with new generator.
2018-11-06 Joseph Pecoraro <pecoraro@apple.com>
REGRESSION: Web Inspector: Popovers drawing incorrectly in Network Tab (clicking between a few items)
https://bugs.webkit.org/show_bug.cgi?id=191323
Reviewed by Devin Rousso.
* UserInterface/Views/Popover.js:
(WI.Popover.prototype._drawBackground):
Save and restore the context state between updates. Something
was affecting the clearRect, making it so that it didn't actually
clear the entire rect each time.
2018-11-05 Devin Rousso <drousso@apple.com>
Web Inspector: Audit: turn off Start button when all tests are removed
https://bugs.webkit.org/show_bug.cgi?id=191235
Reviewed by Matt Baker.
* UserInterface/Views/AuditNavigationSidebarPanel.js:
(WI.AuditNavigationSidebarPanel.prototype._handleAuditTestRemoved):
2018-11-05 Matt Baker <mattbaker@apple.com>
Web Inspector: Table selection should not require that rows be in the cache
https://bugs.webkit.org/show_bug.cgi?id=190993
<rdar://problem/45613812>
Reviewed by Devin Rousso.
Deselecting a table row shouldn't depend on it being in the cache. This
allows us to implement select all, and other kinds of bulk selection
actions that affect rows that haven't been revealed.
* UserInterface/Views/Table.js:
(WI.Table.prototype.deselectRow):
2018-11-05 Devin Rousso <drousso@apple.com>
Web Inspector: show save/restore stack for recorded 2D Canvases
https://bugs.webkit.org/show_bug.cgi?id=175283
<rdar://problem/34040756>
Reviewed by Matt Baker.
Instead of using plain objects for holding the `WI.Recording`'s state, use a model object
so that more data can be passed around. When visualizing the state, show any previously
saved states in a `WI.DetailsSection` underneath the current state. If there are no saved
states (meaning there is only the current state), don't use a `WI.DetailsSection`.
* UserInterface/Models/RecordingState.js: Added.
(WI.RecordingState):
(WI.RecordingState.fromContext):
(WI.RecordingState.async swizzleInitialState):
(WI.RecordingState.prototype.get source):
(WI.RecordingState.prototype.has):
(WI.RecordingState.prototype.get return):
(WI.RecordingState.prototype.toJSON):
(WI.RecordingState.prototype.[Symbol.iterator]):
* UserInterface/Models/Recording.js:
(WI.Recording.prototype.async _process):
(WI.Recording.prototype.async _swizzleState): Deleted.
* UserInterface/Models/RecordingAction.js:
(WI.RecordingAction.prototype.process):
(WI.RecordingAction.deriveCurrentState): Deleted.
* UserInterface/Views/RecordingContentView.js:
(WI.RecordingContentView.prototype._generateContentCanvas2D):
* UserInterface/Views/RecordingStateDetailsSidebarPanel.js:
(WI.RecordingStateDetailsSidebarPanel):
(WI.RecordingStateDetailsSidebarPanel.prototype.get scrollElement):
(WI.RecordingStateDetailsSidebarPanel.prototype.sizeDidChange): Added.
(WI.RecordingStateDetailsSidebarPanel.prototype._generateDetailsCanvas2D):
(WI.RecordingStateDetailsSidebarPanel.prototype._generateDetailsCanvas2D.isColorProperty): Deleted.
(WI.RecordingStateDetailsSidebarPanel.prototype._generateDetailsCanvas2D.createInlineSwatch): Deleted.
* UserInterface/Views/RecordingStateDetailsSidebarPanel.css:
(.sidebar > .panel.details.recording-state > .content .details-section > .header .source): Added.
(.sidebar > .panel.details.recording-state > .content .data-grid tr.modified): Added.
(.sidebar > .panel.details.recording-state > .content .data-grid tr:not(.selected).non-standard .name-column): Added.
(.sidebar > .panel.details.recording-state > .content .data-grid tr:not(.selected) .unavailable): Added.
(.sidebar > .panel.details.recording-state > .content .data-grid .inline-swatch): Added.
(.sidebar > .panel.details.recording-state > .content > .data-grid tr.modified): Deleted.
(.sidebar > .panel.details.recording-state > .content > .data-grid tr:not(.selected).non-standard): Deleted.
(.sidebar > .panel.details.recording-state > .content > .data-grid tr:not(.selected) .unavailable): Deleted.
(.sidebar > .panel.details.recording-state > .content > .data-grid .inline-swatch): Deleted.
* UserInterface/Main.html:
* UserInterface/Test.html:
* Localizations/en.lproj/localizedStrings.js:
2018-11-03 Devin Rousso <drousso@apple.com>
Web Inspector: Canvas: capture changes to <canvas> that would affect the recorded context
https://bugs.webkit.org/show_bug.cgi?id=190854
Reviewed by Matt Baker.
* UserInterface/Models/RecordingAction.js:
(WI.RecordingAction):
(WI.RecordingAction.isFunctionForType):
(WI.RecordingAction.constantNameForParameter):
(WI.RecordingAction.prototype.get contextReplacer): Added.
(WI.RecordingAction.prototype.async.swizzle):
(WI.RecordingAction.prototype.apply):
Create a constant list of actions for each recording type that need to replace the context
with a different value before being applied (e.g. `width` should be applied to the
`context`'s `canvas` instead of directly to the `context`).
* UserInterface/Views/RecordingContentView.js:
(WI.RecordingContentView.prototype._generateContentCanvas2D.actionModifiesPath): Added.
(WI.RecordingContentView.prototype._generateContentCanvas2D):
(WI.RecordingContentView._actionModifiesPath): Deleted.
Generate the path context after the actions are applied to the preview context so that the
final width/height are known and can be used. This is needed because changing the
width/height causes the content to be erased.
* UserInterface/Views/RecordingActionTreeElement.js:
(WI.RecordingActionTreeElement._generateDOM):
(WI.RecordingActionTreeElement._classNameForAction):
* UserInterface/Views/RecordingActionTreeElement.css:
(.tree-outline:focus .item.action.selected:not(.invalid, .initial-state, .has-context-replacer) > .icon): Added.
(.item.action > .titles .context-replacer::after): Added.
(.item.action.has-context-replacer > .icon): Added.
(@media (prefers-dark-interface) .item.action:not(.invalid, .initial-state, .has-context-replacer) > .icon): Added.
(.tree-outline:focus .item.action.selected:not(.initial-state, .invalid) > .icon): Deleted.
(@media (prefers-dark-interface) .item.action:not(.initial-state) > .icon): Deleted.
(@media (prefers-dark-interface) .tree-outline:not(.hide-disclosure-buttons) .item.action:not(.initial-state, .parent) > .icon): Deleted.
Add the context replacer text to the beginning of the action's name if it exists.
* UserInterface/Views/CanvasContentView.js:
(WI.CanvasContentView.prototype._refreshPixelSize):
(WI.CanvasContentView.prototype._updatePixelSize): Deleted.
Update preview image when the canvas' size changes.
2018-11-02 Matt Baker <mattbaker@apple.com>
Web Inspector: support multiple selection/deletion of cookie records
https://bugs.webkit.org/show_bug.cgi?id=66381
<rdar://problem/19281525>
Reviewed by Devin Rousso.
* Localizations/en.lproj/localizedStrings.js:
* UserInterface/Views/CookieStorageContentView.js:
(WI.CookieStorageContentView):
(WI.CookieStorageContentView.prototype.get scrollableElements):
(WI.CookieStorageContentView.prototype.tableNumberOfRows):
(WI.CookieStorageContentView.prototype.tableSortChanged):
(WI.CookieStorageContentView.prototype.tableCellContextMenuClicked):
(WI.CookieStorageContentView.prototype.tableDidRemoveRows):
(WI.CookieStorageContentView.prototype.tablePopulateCell):
(WI.CookieStorageContentView.prototype.initialLayout):
(WI.CookieStorageContentView.prototype._generateSortComparator):
(WI.CookieStorageContentView.prototype._refreshButtonClicked):
(WI.CookieStorageContentView.prototype._reloadCookies):
(WI.CookieStorageContentView.prototype._updateSort):
(WI.CookieStorageContentView.prototype._handleTableKeyDown):
(WI.CookieStorageContentView.prototype.update): Deleted.
(WI.CookieStorageContentView.prototype._rebuildTable): Deleted.
(WI.CookieStorageContentView.prototype._sortDataGrid.localeCompare): Deleted.
(WI.CookieStorageContentView.prototype._sortDataGrid.numberCompare): Deleted.
(WI.CookieStorageContentView.prototype._sortDataGrid.expiresCompare): Deleted.
(WI.CookieStorageContentView.prototype._sortDataGrid): Deleted.
(WI.CookieStorageContentView.prototype._deleteCallback): Deleted.
Replace DataGrid with Table. The content view serves as the table
delegate and data source, and handles delete and backspace key events
to allow deleting the selected cookies. Cookies may also be deleted from
the table context menu and a new button in the navigation bar.
* UserInterface/Views/Table.js:
(WI.Table.prototype.isRowSelected):
(WI.Table.prototype.selectRow):
(WI.Table.prototype.deselectRow):
(WI.Table.prototype.removeRow):
(WI.Table.prototype._getOrCreateRow):
(WI.Table.prototype._handleMouseDown):
(WI.Table.prototype._removeRows):
(WI.Table.prototype._isRowSelected): Deleted.
Make `isSelectedRow` public. It is more convenient and efficient than
calling `Table.prototype.selectedRows.includes(rowIndex)`.
2018-11-01 Devin Rousso <drousso@apple.com>
Web Inspector: View: introduce a didLayoutSubtree
https://bugs.webkit.org/show_bug.cgi?id=191176
Reviewed by Matt Baker.
Introduce logic to allow subclasses of `WI.View` to perform logic after every `WI.View` in
their subtree has finished `layout`.
* UserInterface/Views/View.js:
(WI.View.prototype.didLayoutSubtree): Added.
(WI.View.prototype._layoutSubtree):
* UserInterface/Views/NetworkTableContentView.js:
(WI.NetworkTableContentView.prototype.layout):
(WI.NetworkTableContentView.prototype.didLayoutSubtree): Added.
2018-11-01 Devin Rousso <drousso@apple.com>
Web Inspector: Network: remove unnecessary media event tracking
https://bugs.webkit.org/show_bug.cgi?id=191174
Reviewed by Joseph Pecoraro.
Renames "Group by Node" to "Group Media Requests" for clarity.
* UserInterface/Views/NetworkTableContentView.js:
(WI.NetworkTableContentView):
(WI.NetworkTableContentView.prototype.reset):
(WI.NetworkTableContentView.prototype.showRepresentedObject):
(WI.NetworkTableContentView.prototype.networkDetailViewClose):
(WI.NetworkTableContentView.prototype._populateNameCell):
(WI.NetworkTableContentView.prototype._populateWaterfallGraph.createDOMEventLine):
(WI.NetworkTableContentView.prototype._populateWaterfallGraph):
(WI.NetworkTableContentView.prototype.layout):
(WI.NetworkTableContentView.prototype._entryForDOMNode):
(WI.NetworkTableContentView.prototype._handleGroupByDOMNodeCheckedDidChange):
(WI.NetworkTableContentView.prototype._restoreSelectedRow):
(WI.NetworkTableContentView.prototype._handleResourceEntryMousedownWaterfall):
(WI.NetworkTableContentView.prototype._handleNodeEntryMousedownWaterfall):
(WI.NetworkTableContentView.prototype._handleMousedownWaterfall):
* UserInterface/Views/NetworkTableContentView.css:
(.network-table .data-container .cell.name .range): Added.
(.network-table .data-container .cell.name .range::before): Added.
(.network-table:focus .data-container li.selected .cell.name .range): Added.
(@media (prefers-dark-interface) .network-table .data-container .cell.name .range): Added.
Always display the "Byte Range" title as a "subtitle", regardless of the media requests
setting being toggled.
Drive-by: update the position of the waterfall popover whenever the time range changes.
Drive-by: close the details view if a node is selected and the media requests setting is
turned off.
* UserInterface/Views/Popover.js:
(WI.Popover.prototype.resize): Added.
(WI.Popover.prototype.handleEvent):
* Localizations/en.lproj/localizedStrings.js:
2018-11-01 Devin Rousso <drousso@apple.com>
Web Inspector: Uncaught Exception: TypeError: null is not an object (evaluating 'mouseBlock.addEventListener')
https://bugs.webkit.org/show_bug.cgi?id=191020
Reviewed by Joseph Pecoraro.
* UserInterface/Views/TimelineRuler.js:
(WI.TimelineRuler):
Since `undefined` is not a number, it isn't less than `0`, which caused us to divide by
`undefined` (equivalent to dividing by `0`), resulting in `NaN`.
2018-11-01 Nikita Vasilyev <nvasilyev@apple.com>
Uncaught Exception: TypeError: undefined is not an object (evaluating 'WI.modifierKeys.metaKey') (at ScopeBarItem.js:87:67)
https://bugs.webkit.org/show_bug.cgi?id=191173
Reviewed by Devin Rousso.
WI.modifierKeys was accessed before it was initialized. Move it from WI.contentLoaded to WI.loaded,
which happens before WI.contentLoaded.
* UserInterface/Base/Main.js:
(WI.loaded):
(WI.contentLoaded):
2018-11-01 Nikita Vasilyev <nvasilyev@apple.com>
REGRESSION(r237652): Web Inspector: dumpInspectorProtocolMessages is always enabled
https://bugs.webkit.org/show_bug.cgi?id=191161
Reviewed by Joseph Pecoraro.
* UserInterface/Protocol/InspectorBackend.js:
(InspectorBackendClass.prototype.get dumpInspectorProtocolMessages):
2018-11-01 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Styles: Toggle selected properties by pressing Space or Command+/
https://bugs.webkit.org/show_bug.cgi?id=181145
<rdar://problem/36203388>
Reviewed by Brian Burg.
Pressing Space key or Command-/ toggles (comments out or uncomments) selected properties.
This patch only works with "Enable Selection of Multiple Properties" checked. It shouldn't introduce any
changes when this setting is unchecked.
* UserInterface/Views/SpreadsheetCSSStyleDeclarationEditor.js:
(WI.SpreadsheetCSSStyleDeclarationEditor.prototype.get selectionRange):
(WI.SpreadsheetCSSStyleDeclarationEditor.prototype.selectProperties):
(WI.SpreadsheetCSSStyleDeclarationEditor.prototype.spreadsheetStylePropertyCopy):
(WI.SpreadsheetCSSStyleDeclarationEditor.prototype._handleKeyDown):
* UserInterface/Views/SpreadsheetStyleProperty.js:
(WI.SpreadsheetStyleProperty):
(WI.SpreadsheetStyleProperty.prototype.update): Renamed from _update.
(WI.SpreadsheetStyleProperty.prototype.updateStatus):
(WI.SpreadsheetStyleProperty.prototype.applyFilter):
(WI.SpreadsheetStyleProperty.prototype.handleCopyEvent):
Make `update` method public. No other changes were made.
2018-10-31 Devin Rousso <drousso@apple.com>
Web Inspector: Canvas: create a setting for auto-recording newly created contexts
https://bugs.webkit.org/show_bug.cgi?id=190856
Reviewed by Brian Burg.
* UserInterface/Controllers/CanvasManager.js:
(WI.CanvasManager.supportsRecordingAutoCapture): Added.
(WI.CanvasManager.prototype.setRecordingAutoCaptureFrameCount): Added.
* UserInterface/Models/Canvas.js:
(WI.Canvas.prototype.startRecording):
(WI.Canvas.prototype.recordingStarted):
(WI.Canvas.prototype.recordingFinished):
* UserInterface/Models/Recording.js:
* UserInterface/Views/CanvasOverviewContentView.js:
(WI.CanvasOverviewContentView):
(WI.CanvasOverviewContentView.prototype.get navigationItems):
(WI.CanvasOverviewContentView.prototype.initialLayout): Added.
(WI.CanvasOverviewContentView.prototype.attached):
(WI.CanvasOverviewContentView.prototype.detached):
(WI.CanvasOverviewContentView.prototype._setRecordingAutoCaptureFrameCount): Added.
(WI.CanvasOverviewContentView.prototype._updateRecordingAutoCaptureInputElementSize): Added.
(WI.CanvasOverviewContentView.prototype._handleRecordingAutoCaptureInput): Added.
(WI.CanvasOverviewContentView.prototype._handleRecordingAutoCaptureCheckedDidChange): Added.
(WI.CanvasOverviewContentView.prototype._handleCanvasRecordingAutoCaptureEnabledChanged): Added.
(WI.CanvasOverviewContentView.prototype._handleCanvasRecordingAutoCaptureFrameCountChanged): Added.
* UserInterface/Views/CanvasOverviewContentView.css:
(.navigation-bar > .item.canvas-recording-auto-capture > label): Added.
(.navigation-bar > .item.canvas-recording-auto-capture > label > input): Added.
(.navigation-bar > .item.canvas-recording-auto-capture > label > input::-webkit-inner-spin-button): Added.
(.popover-content > .tree-outline .item.recording > .icon): Deleted.
(.popover-content > .tree-outline .item.recording:hover): Deleted.
(.popover-content > .tree-outline .item.recording:hover > .icon): Deleted.
Drive-by: removed unused CSS rules.
* UserInterface/Views/CanvasContentView.js:
(WI.CanvasContentView.prototype.initialLayout):
(WI.CanvasContentView.prototype._updateProgressView):
(WI.CanvasContentView.prototype._updateViewRelatedItems):
* UserInterface/Views/CanvasTabContentView.js:
(WI.CanvasTabContentView.prototype._recordingImportedOrStopped):
* UserInterface/Views/CheckboxNavigationItem.js:
(WI.CheckboxNavigationItem):
(WI.CheckboxNavigationItem.prototype._handleLabelClick): Added.
* UserInterface/Base/Setting.js:
* Localizations/en.lproj/localizedStrings.js:
2018-10-31 Devin Rousso <drousso@apple.com>
Web Inspector: display low-power enter/exit events in Timelines and Network node waterfalls
https://bugs.webkit.org/show_bug.cgi?id=190641
<rdar://problem/45319049>
Reviewed by Joseph Pecoraro.
* UserInterface/Protocol/DOMObserver.js:
(WI.DOMObserver.prototype.videoLowPowerChanged): Added.
* UserInterface/Controllers/DOMManager.js:
(WI.DOMManager.prototype.videoLowPowerChanged): Added.
* UserInterface/Models/DOMNode.js:
(WI.DOMNode):
(WI.DOMNode.prototype.get lowPowerRanges): Added.
(WI.DOMNode.prototype.videoLowPowerChanged): Added.
(WI.DOMNode.prototype.canEnterLowPowerMode): Added.
* UserInterface/Views/NetworkTableContentView.js:
(WI.NetworkTableContentView.prototype._populateDomainCell):
(WI.NetworkTableContentView.prototype._tryLinkResourceToDOMNode):
(WI.NetworkTableContentView.prototype._handleNodeLowPowerChanged): Added.
* UserInterface/Views/NetworkTableContentView.css:
(.network-table :not(.header) .cell.waterfall .waterfall-container > .area):
(.network-table :not(.header) .cell.waterfall .waterfall-container > .area.dom-fullscreen): Added.
(.network-table :not(.header) .cell.waterfall .waterfall-container > .area.low-power): Added.
(.network-table :not(.header) .cell.waterfall .waterfall-container > .dom-fullscreen): Deleted.
* UserInterface/Views/DOMNodeEventsContentView.js:
(WI.DOMNodeEventsContentView):
(WI.DOMNodeEventsContentView.prototype.initialLayout):
(WI.DOMNodeEventsContentView.prototype.closed): Deleted.
(WI.DOMNodeEventsContentView.prototype._handleDOMNodeDidFireEvent): Deleted.
* UserInterface/Views/DOMEventsBreakdownView.js:
(WI.DOMEventsBreakdownView):
(WI.DOMEventsBreakdownView.prototype.initialLayout):
(WI.DOMEventsBreakdownView.prototype.layout): Added.
(WI.DOMEventsBreakdownView.prototype._handleDOMNodeDidFireEvent): Added.
(WI.DOMEventsBreakdownView.prototype._handleDOMNodeLowPowerChanged): Added.
(WI.DOMEventsBreakdownView.prototype.addEvent): Deleted.
(WI.DOMEventsBreakdownView.prototype._populateTable.percentOfTotalTime): Deleted.
(WI.DOMEventsBreakdownView.prototype._populateTable): Deleted.
* UserInterface/Views/DOMEventsBreakdownView.css:
(.dom-events-breakdown .graph > .area): Added.
(.dom-events-breakdown .graph > .area.fullscreen):
(.dom-events-breakdown .graph > .area.low-power): Added.
* Localizations/en.lproj/localizedStrings.js:
2018-10-31 Devin Rousso <drousso@apple.com>
Web Inspector: Audit: save imported audits across WebInspector sessions
https://bugs.webkit.org/show_bug.cgi?id=190858
<rdar://problem/45527625>
Reviewed by Brian Burg.
* UserInterface/Base/ObjectStore.js: Added.
(WI.ObjectStore):
(WI.ObjectStore.supported):
(WI.ObjectStore._open):
(WI.ObjectStore.get _databaseName):
(WI.ObjectStore.prototype.associateObject):
(WI.ObjectStore.prototype.async getAll):
(WI.ObjectStore.prototype.async add):
(WI.ObjectStore.prototype.async addObject):
(WI.ObjectStore.prototype.async delete):
(WI.ObjectStore.prototype.async deleteObject):
(WI.ObjectStore.prototype._resolveKeyPath):
(WI.ObjectStore.prototype.async _operation.listener):
(WI.ObjectStore.prototype.async _operation):
Wrapper for a global `IndexedDB` instance for all of WebInspector (per level). Instances of
`WI.ObjectStore` are able to control a given `IDBObjectStore` using a promise-based API.
*NOTE*: due to the constraint that `IDBObjectStore`s are only able to be created when the
owner `IndexedDB` is "upgrade"d, all `WI.ObjectStore` must be declared before the database
is opened for the first time. Additionally, any time a new `WI.ObjectStore` is added, the
`version` needs to be incremented to ensure that the "upgrade" event fires.
To use any of the `*Object` functions, one must implement a `toJSON` on the object provided.
This is so that `WI.ObjectStore` is able to add the resulting identifier value to the owner
object while storing its `toJSON` value in the IndexedDB (e.g. for objects that have cycles).
* UserInterface/Controllers/AuditManager.js:
(WI.AuditManager.prototype.import):
(WI.AuditManager.prototype.loadStoredTests): Added.
(WI.AuditManager.prototype.removeTest): Added.
(WI.AuditManager.prototype._addTest):
* UserInterface/Views/AuditTabContentView.js:
(WI.AuditTabContentView.prototype.initialLayout): Added.
Attempt to load stored audits when the Audit tab is first shown (lazy-load).
* UserInterface/Views/AuditNavigationSidebarPanel.js:
(WI.AuditNavigationSidebarPanel.prototype.initialLayout):
(WI.AuditNavigationSidebarPanel.prototype._handleAuditTestRemoved): Added.
* UserInterface/Views/AuditTreeElement.js:
(WI.AuditTreeElement.prototype.ondelete):
Only allow top-level audits to be deleted, as that is what matches the `WI.ObjectStore`.
* UserInterface/Main.html:
* UserInterface/Test.html:
2018-10-31 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Move a few remaining global WI settings to WI.settings
https://bugs.webkit.org/show_bug.cgi?id=191137
Reviewed by Brian Burg.
Move and better name some of the WI.settings created in Main.js
to WI.settings, alongside other global settings.
* UserInterface/Base/Main.js:
(WI.loaded):
Move settings, and register for settings changes in contentLoaded.
* UserInterface/Base/Setting.js:
New settings, and sort values.
* UserInterface/Test/Test.js:
(WI.loaded):
Update setting values for tests.
* UserInterface/Controllers/NetworkManager.js:
(WI.NetworkManager.prototype.initializeTarget):
* UserInterface/Controllers/RuntimeManager.js:
(WI.RuntimeManager.prototype.initializeTarget):
* UserInterface/Models/DOMNode.js:
(WI.DOMNode.prototype.get children):
(WI.DOMNode.prototype.get nextSibling):
(WI.DOMNode.prototype.get previousSibling):
(WI.DOMNode.prototype.get childNodeCount):
* UserInterface/Protocol/Target.js:
(WI.Target.prototype.initialize):
* UserInterface/Views/DOMTreeContentView.js:
(WI.DOMTreeContentView):
(WI.DOMTreeContentView.prototype.closed):
(WI.DOMTreeContentView.prototype._togglePaintFlashing):
(WI.DOMTreeContentView.prototype._showPaintRectsSettingChanged):
(WI.DOMTreeContentView.prototype._showShadowDOMSettingChanged):
(WI.DOMTreeContentView.prototype._toggleShowsShadowDOMSetting):
* UserInterface/Views/DOMTreeOutline.js:
(WI.DOMTreeOutline):
(WI.DOMTreeOutline.prototype.close):
(WI.DOMTreeOutline.prototype._revealAndSelectNode):
* UserInterface/Views/LayerTreeDetailsSidebarPanel.js:
(WI.LayerTreeDetailsSidebarPanel.prototype.initialLayout):
(WI.LayerTreeDetailsSidebarPanel.prototype._updateDisplayWithLayers):
* UserInterface/Views/Layers3DContentView.js:
(WI.Layers3DContentView):
(WI.Layers3DContentView.prototype.closed):
(WI.Layers3DContentView.prototype._showPaintRectsSettingChanged):
(WI.Layers3DContentView.prototype._togglePaintFlashing):
* UserInterface/Views/NetworkTableContentView.js:
(WI.NetworkTableContentView):
(WI.NetworkTableContentView.prototype.closed):
(WI.NetworkTableContentView.prototype._resourceCachingDisabledSettingChanged):
(WI.NetworkTableContentView.prototype._toggleDisableResourceCache):
* UserInterface/Views/ScriptContentView.js:
(WI.ScriptContentView):
(WI.ScriptContentView.prototype.closed):
(WI.ScriptContentView.prototype._contentDidPopulate):
(WI.ScriptContentView.prototype._enableControlFlowProfilerSettingChanged):
(WI.ScriptContentView.prototype._showJavaScriptTypeInformationSettingChanged):
* UserInterface/Views/SourceCodeTextEditor.js:
(WI.SourceCodeTextEditor.prototype.shown):
(WI.SourceCodeTextEditor.prototype._proceedPopulateWithContent):
(WI.SourceCodeTextEditor.prototype._setTypeTokenAnnotatorEnabledState):
(WI.SourceCodeTextEditor.prototype.set _basicBlockAnnotatorEnabled):
* UserInterface/Views/TextResourceContentView.js:
(WI.TextResourceContentView):
(WI.TextResourceContentView.prototype.closed):
(WI.TextResourceContentView.prototype._contentDidPopulate):
(WI.TextResourceContentView.prototype._enableControlFlowProfilerSettingChanged):
(WI.TextResourceContentView.prototype._showJavaScriptTypeInformationSettingChanged):
Renamed setting.
2018-10-31 Devin Rousso <drousso@apple.com>
Web Inspector: Styles: missing contextmenu items for links
https://bugs.webkit.org/show_bug.cgi?id=191021
Reviewed by Joseph Pecoraro.
* UserInterface/Views/SpreadsheetStyleProperty.js:
(WI.SpreadsheetStyleProperty.prototype._renderValue):
(WI.SpreadsheetStyleProperty.prototype._handleLinkContextMenu): Added.
If the token is subtype of "link", add contextmenu items to the wrapper element.
* UserInterface/Views/ContextMenuUtilities.js:
(WI.appendContextMenuItemsForURL.showResourceWithOptions):
(WI.appendContextMenuItemsForURL):
Drive-by: don't assume that `options` will be provided.
* Localizations/en.lproj/localizedStrings.js:
2018-10-31 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Styles: implement copying and deletion of multiple properties
https://bugs.webkit.org/show_bug.cgi?id=191037
<rdar://problem/45650078>
Reviewed by Brian Burg.
This patch should only work with "Enable Selection of Multiple Properties" checked. It shouldn't introduce any
changes when this setting is unchecked.
Mousedown on a property (1) and moving the mouse cursor to another property (2) should select properties 1, 2, and
all properties between them until mouseup is fired.
Once selected:
- Pressing Command-C should copy the selected properties.
- Pressing Delete should remove the properties.
* UserInterface/Models/CSSProperty.js:
(WI.CSSProperty.prototype.get formattedText):
* UserInterface/Views/SpreadsheetCSSStyleDeclarationEditor.css:
(.spreadsheet-style-declaration-editor):
(.multiple-properties-selection .spreadsheet-style-declaration-editor .property):
(.multiple-properties-selection .spreadsheet-style-declaration-editor :matches(.name, .value):not(.editing)):
(.multiple-properties-selection .spreadsheet-style-declaration-editor .property.selected):
(.multiple-properties-selection .spreadsheet-style-declaration-editor .property.selected:focus):
(@media (prefers-dark-interface)):
* UserInterface/Views/SpreadsheetCSSStyleDeclarationEditor.js:
(WI.SpreadsheetCSSStyleDeclarationEditor):
(WI.SpreadsheetCSSStyleDeclarationEditor.prototype.initialLayout):
(WI.SpreadsheetCSSStyleDeclarationEditor.prototype.selectProperties):
(WI.SpreadsheetCSSStyleDeclarationEditor.prototype.deselectProperties):
(WI.SpreadsheetCSSStyleDeclarationEditor.prototype.spreadsheetStylePropertyBlur):
(WI.SpreadsheetCSSStyleDeclarationEditor.prototype.spreadsheetStylePropertyMouseEnter):
(WI.SpreadsheetCSSStyleDeclarationEditor.prototype.spreadsheetStylePropertyMouseLeave):
(WI.SpreadsheetCSSStyleDeclarationEditor.prototype.spreadsheetStylePropertyCopy):
(WI.SpreadsheetCSSStyleDeclarationEditor.prototype._handleKeyDown):
(WI.SpreadsheetCSSStyleDeclarationEditor.prototype._hasSelectedProperties):
Property selection is defined as two numbers: anchorIndex and focusIndex.
The property with focusIndex is actually focused. The focus outline is replaced by a more subtle left blue border.
* UserInterface/Views/SpreadsheetCSSStyleDeclarationSection.css:
(.spreadsheet-css-declaration.selecting,):
* UserInterface/Views/SpreadsheetCSSStyleDeclarationSection.js:
(WI.SpreadsheetCSSStyleDeclarationSection):
(WI.SpreadsheetCSSStyleDeclarationSection.prototype.spreadsheetCSSStyleDeclarationEditorPropertyBlur):
(WI.SpreadsheetCSSStyleDeclarationSection.prototype.spreadsheetCSSStyleDeclarationEditorPropertyMouseEnter):
(WI.SpreadsheetCSSStyleDeclarationSection.prototype.spreadsheetCSSStyleDeclarationEditorPropertyMouseLeave):
(WI.SpreadsheetCSSStyleDeclarationSection.prototype._handleMouseDown):
(WI.SpreadsheetCSSStyleDeclarationSection.prototype._handleWindowMouseUp):
(WI.SpreadsheetCSSStyleDeclarationSection.prototype._handleClick):
* UserInterface/Views/SpreadsheetStyleProperty.js:
(WI.SpreadsheetStyleProperty):
Implement copying the same way it's done for DataGrid: by adding copyHandler property to the focused element.
Add `tabIndex=-1` so the property element can be focused.
(WI.SpreadsheetStyleProperty.prototype.get property):
(WI.SpreadsheetStyleProperty.prototype.get selected):
(WI.SpreadsheetStyleProperty.prototype.set selected):
(WI.SpreadsheetStyleProperty.prototype.remove):
(WI.SpreadsheetStyleProperty.prototype.updateStatus):
(WI.SpreadsheetStyleProperty.prototype.handleCopyEvent):
(WI.SpreadsheetStyleProperty.prototype.spreadsheetTextFieldDidCommit):
(WI.SpreadsheetStyleProperty.prototype.spreadsheetTextFieldDidBlur):
(WI.SpreadsheetStyleProperty.prototype._handleNamePaste):
2018-10-31 Devin Rousso <drousso@apple.com>
Web Inspector: Audit: attempt to re-link DOM nodes for imported results
https://bugs.webkit.org/show_bug.cgi?id=191044
<rdar://problem/45687364>
Reviewed by Brian Burg.
When importing a `WI.AuditTestCaseResult`, attempt to `querySelector` for each item in
`data.domNodes`. If a node is found, replace it with that node and show a tree instead.
* UserInterface/Models/AuditTestCase.js:
(WI.AuditTestCase.async fromPayload): Added.
(WI.AuditTestCase.fromPayload): Deleted.
* UserInterface/Models/AuditTestGroup.js:
(WI.AuditTestGroup.async fromPayload): Added.
(WI.AuditTestGroup.fromPayload): Deleted.
* UserInterface/Models/AuditTestCaseResult.js:
(WI.AuditTestCaseResult.async fromPayload): Added.
(WI.AuditTestCaseResult.fromPayload): Deleted.
* UserInterface/Models/AuditTestGroupResult.js:
(WI.AuditTestGroupResult.async fromPayload): Added.
(WI.AuditTestGroupResult.fromPayload): Deleted.
* UserInterface/Controllers/AuditManager.js:
(WI.AuditManager.prototype.import):
2018-10-31 Joseph Pecoraro <pecoraro@apple.com>
Follow-up review comment to r237652.
Reviewed by Brian Burg.
* UserInterface/Controllers/DebuggerManager.js:
(WI.DebuggerManager):
2018-10-31 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Separate target initialization from frontend initialization
https://bugs.webkit.org/show_bug.cgi?id=191052
<rdar://problem/45658384>
Reviewed by Brian Burg.
* UserInterface/Base/Main.js:
(WI.loaded):
(WI.performOneTimeFrontendInitializationsUsingTarget):
Create the targets after the rest of frontend initialization. This is a step
toward a frontend opening and being told about multiple targets instead of
knowing in advance a single target it is connected to. All backend
messages during frontend initialization now happen with an explicit target.
* UserInterface/Controllers/ApplicationCacheManager.js:
(WI.ApplicationCacheManager):
(WI.ApplicationCacheManager.prototype.initializeTarget):
(WI.ApplicationCacheManager.prototype.initialize):
* UserInterface/Controllers/CSSManager.js:
(WI.CSSManager):
(WI.CSSManager.prototype.initializeTarget):
* UserInterface/Controllers/CanvasManager.js:
(WI.CanvasManager):
(WI.CanvasManager.prototype.initializeTarget):
* UserInterface/Controllers/ConsoleManager.js:
(WI.ConsoleManager):
(WI.ConsoleManager.prototype.initializeLogChannels):
* UserInterface/Controllers/DOMManager.js:
(WI.DOMManager):
(WI.DOMManager.prototype.initializeTarget):
* UserInterface/Controllers/DOMStorageManager.js:
(WI.DOMStorageManager):
(WI.DOMStorageManager.prototype.initializeTarget):
* UserInterface/Controllers/DatabaseManager.js:
(WI.DatabaseManager):
(WI.DatabaseManager.prototype.initializeTarget):
* UserInterface/Controllers/DebuggerManager.js:
(WI.DebuggerManager):
(WI.DebuggerManager.prototype.initializeTarget):
(WI.DebuggerManager.restoreBreakpointsSoon): Deleted.
* UserInterface/Controllers/HeapManager.js:
(WI.HeapManager.prototype.initializeTarget):
* UserInterface/Controllers/IndexedDBManager.js:
(WI.IndexedDBManager):
(WI.IndexedDBManager.prototype.initializeTarget):
* UserInterface/Controllers/LayerTreeManager.js:
(WI.LayerTreeManager.prototype.initializeTarget):
* UserInterface/Controllers/MemoryManager.js:
(WI.MemoryManager.prototype.initializeTarget):
* UserInterface/Controllers/NetworkManager.js:
(WI.NetworkManager):
(WI.NetworkManager.prototype.initializeTarget):
* UserInterface/Controllers/RuntimeManager.js:
(WI.RuntimeManager):
(WI.RuntimeManager.prototype.initializeTarget):
* UserInterface/Controllers/TargetManager.js:
(WI.TargetManager):
(WI.TargetManager.prototype.initializeTargetsWithMainTarget):
* UserInterface/Controllers/TimelineManager.js:
(WI.TimelineManager):
(WI.TimelineManager.prototype.initializeTarget):
(WI.TimelineManager.prototype.set enabledTimelineTypes):
(WI.TimelineManager.prototype._updateAutoCaptureInstruments):
* UserInterface/Controllers/WorkerManager.js:
(WI.WorkerManager):
(WI.WorkerManager.prototype.initializeTarget):
Move Target initialization out of the constructor into a top level
`initializeTarget` function. This will be expected to be called
by any target that the frontend connects to.
(WI.DebuggerManager.prototype._pauseForInternalScriptsDidChange):
Drive-by fix. Update all targets if the setting changes.
(WI.WorkerManager.prototype.workerCreated):
Call initialize on the new target.
* UserInterface/Models/CSSCompletions.js:
(WI.CSSCompletions.initializeCSSCompletions):
(WI.CSSCompletions.requestCSSCompletions): Deleted.
Rename requestCSSCompletions to initializeCSSCompletions to try
and standardize on "initialize" being used for most frontend one
time initialization tasks. This being one such operation that
only needs to be performed once on a target that supports it.
* UserInterface/Protocol/Target.js:
(WI.Target):
(WI.Target.prototype.initialize):
Perform explicit target initialization, such as initializing
the state of all backend domains / agents. This is done by asking
each of the managers to do initialization work for this target.
(WI.Target.prototype.get ApplicationCacheAgent):
(WI.Target.prototype.get CSSAgent):
(WI.Target.prototype.get CanvasAgent):
(WI.Target.prototype.get ConsoleAgent):
(WI.Target.prototype.get DOMAgent):
(WI.Target.prototype.get DOMDebuggerAgent):
(WI.Target.prototype.get DOMStorageAgent):
(WI.Target.prototype.get DatabaseAgent):
(WI.Target.prototype.get DebuggerAgent):
(WI.Target.prototype.get HeapAgent):
(WI.Target.prototype.get IndexedDBAgent):
(WI.Target.prototype.get InspectorAgent):
(WI.Target.prototype.get LayerTreeAgent):
(WI.Target.prototype.get MemoryAgent):
(WI.Target.prototype.get NetworkAgent):
(WI.Target.prototype.get PageAgent):
(WI.Target.prototype.get RecordingAgent):
(WI.Target.prototype.get RuntimeAgent):
(WI.Target.prototype.get ScriptProfilerAgent):
(WI.Target.prototype.get ServiceWorkerAgent):
(WI.Target.prototype.get TargetAgent):
(WI.Target.prototype.get TimelineAgent):
(WI.Target.prototype.get WorkerAgent):
Accessors for all of the agents on a Target.
* UserInterface/Protocol/WorkerTarget.js:
(WI.WorkerTarget):
This is now automatically done in the base class.
* UserInterface/Test/Test.js:
(WI.loaded):
(WI.performOneTimeFrontendInitializationsUsingTarget):
New necessary top level hooks, and initialize more like Main.js.
2018-10-31 Devin Rousso <drousso@apple.com>
Web Inspector: Audit: show metadata for results
https://bugs.webkit.org/show_bug.cgi?id=190853
<rdar://problem/45527623>
Reviewed by Brian Burg.
* UserInterface/Models/AuditTestCase.js:
(WI.AuditTestCase.prototype.async run):
Capture timestamps around the `RunetimeAgent.evaluate` call, as well as the URL of the page.
* UserInterface/Models/AuditTestCaseResult.js:
(WI.AuditTestCaseResult):
(WI.AuditTestCaseResult.fromPayload):
(WI.AuditTestCaseResult.prototype.get metadata): Added.
(WI.AuditTestCaseResult.prototype.toJSON):
* UserInterface/Views/AuditTestCaseContentView.js:
(WI.AuditTestCaseContentView.prototype.initialLayout):
(WI.AuditTestCaseContentView.prototype.layout):
* UserInterface/Views/AuditTestCaseContentView.css:
(.content-view.audit-test-case > header h1): Added.
(.content-view.audit-test-case > header h1 > img): Added.
(.content-view.audit-test-case > header > .metadata): Added.
(.content-view.audit-test-case > header > .metadata > .source > time): Added.
(.content-view.audit-test-case > header > .metadata > .source > a): Added.
(.content-view.audit-test-case > header > .metadata > .duration): Added.
(.content-view.audit-test-case > header > h1): Deleted.
(.content-view.audit-test-case > header > h1 > img): Deleted.
Display any metadata information where the `WI.ScopeBar` is for `WI.AuditTestGroupContentView`s.
* UserInterface/Views/AuditTestContentView.css:
(.content-view.audit-test > header):
(.content-view.audit-test > header > .information): Added.
* UserInterface/Views/AuditTestGroupContentView.css:
(.content-view.audit-test-group > header):
(.content-view.audit-test-group > header > .percentage-pass):
(.content-view.audit-test-group > header > .information): Deleted.
Move common CSS rules to common parent class.
* UserInterface/Base/Utilities.js:
2018-10-30 Devin Rousso <drousso@apple.com>
Web Inspector: Audit: create Audit Tab
https://bugs.webkit.org/show_bug.cgi?id=190754
Reviewed by Matt Baker.
Create an Audit tab for running audits on the inspected page. Leverage `Runtime.evaluate`
for running the audit tests (arbitrary JavaScript), and use the returned value to generate
a preview UI of the results. All tests/results can be exported/imported to formatted JSON:
`AuditTestCase` JSON:
{
"type": "test-case",
"name": <string>,
<optional> "description": <string>,
"test": <stringified JavaScript function>,
}
`AuditTestGroup` JSON:
{
"type": "test-group",
"name": <string>,
<optional> "description": <string>,
"tests": [...<AuditTestCase, AuditTestGroup>],
}
`AuditTestCaseResult` JSON:
{
"type": "test-case-result",
"name": <string>,
<optional> "description": <string>,
"level": <"pass", "warn", "fail", "error", "unsupported">,
"data": {
"domNodes": [...<stringified CSS path>],
"domAttributes": [...<string>],
"errors": [...<string>],
},
}
`AuditTestGroupResult` JSON:
{
"type": "test-group-result",
"name": <string>,
<optional> "description": <string>,
"results": [...<AuditTestCaseResult, AuditTestGroupResult>],
}
More keys may be added in the future (especially for `AuditTestCaseResult.data`).
* UserInterface/Controllers/AuditManager.js:
(WI.AuditManager):
(WI.AuditManager.synthesizeError): Added.
(WI.AuditManager.prototype.get tests): Added.
(WI.AuditManager.prototype.get results): Added.
(WI.AuditManager.prototype.get runningState): Added.
(WI.AuditManager.prototype.start): Added.
(WI.AuditManager.prototype.stop): Added.
(WI.AuditManager.prototype.import): Added.
(WI.AuditManager.prototype.export): Added.
(WI.AuditManager.prototype._addTest): Added.
(WI.AuditManager.prototype._addResult): Added.
(WI.AuditManager.prototype.get testSuites): Deleted.
(WI.AuditManager.prototype.get reports): Deleted.
(WI.AuditManager.prototype.async runAuditTestByRepresentedObject): Deleted.
(WI.AuditManager.prototype.reportForId): Deleted.
(WI.AuditManager.prototype.removeAllReports): Deleted.
(WI.AuditManager.prototype.async _runTestCase): Deleted.
* UserInterface/Models/AuditTestBase.js: Added.
(WI.AuditTestBases):
(WI.AuditTestBases.prototype.get name):
(WI.AuditTestBases.prototype.get description):
(WI.AuditTestBases.prototype.get runningState):
(WI.AuditTestBases.prototype.get result):
(WI.AuditTestBases.prototype.async start):
(WI.AuditTestBases.prototype.stop):
(WI.AuditTestBases.prototype.clearResult):
(WI.AuditTestBases.prototype.saveIdentityToCookie):
(WI.AuditTestBases.prototype.toJSON):
(WI.AuditTestBases.prototype.async run):
* UserInterface/Models/AuditTestCase.js:
(WI.AuditTestCase):
(WI.AuditTestCase.fromPayload): Added.
(WI.AuditTestCase.prototype.toJSON): Added.
(WI.AuditTestCase.prototype.async run): Added.
(WI.AuditTestCase.prototype.async run.setLevel): Added.
(WI.AuditTestCase.prototype.async run.addError): Added.
(WI.AuditTestCase.prototype.async run.checkResultProperty.addErrorForValueType): Added.
(WI.AuditTestCase.prototype.async run.checkResultProperty): Added.
(WI.AuditTestCase.prototype.async run.async resultArrayForEach): Added.
(WI.AuditTestCase.prototype.get id): Deleted.
(WI.AuditTestCase.prototype.get name): Deleted.
(WI.AuditTestCase.prototype.get suite): Deleted.
(WI.AuditTestCase.prototype.get setup): Deleted.
(WI.AuditTestCase.prototype.get tearDown): Deleted.
(WI.AuditTestCase.prototype.get errorDetails): Deleted.
* UserInterface/Models/AuditTestGroup.js: Added.
(WI.AuditTestGroup):
(WI.AuditTestGroup.fromPayload):
(WI.AuditTestGroup.prototype.get tests):
(WI.AuditTestGroup.prototype.stop):
(WI.AuditTestGroup.prototype.clearResult):
(WI.AuditTestGroup.prototype.async run):
(WI.AuditTestGroup.prototype.toJSON):
(WI.AuditTestGroup.prototype._updateResult):
(WI.AuditTestGroup.prototype._handleTestCompleted):
(WI.AuditTestGroup.prototype._handleTestProgress):
* UserInterface/Models/AuditTestResultBase.js: Added.
(WI.AuditTestResultBase):
(WI.AuditTestResultBase.prototype.get name):
(WI.AuditTestResultBase.prototype.get description):
(WI.AuditTestResultBase.prototype.get result):
(WI.AuditTestResultBase.prototype.get didPass):
(WI.AuditTestResultBase.prototype.get didWarn):
(WI.AuditTestResultBase.prototype.get didFail):
(WI.AuditTestResultBase.prototype.get didError):
(WI.AuditTestResultBase.prototype.get unsupported):
(WI.AuditTestResultBase.prototype.saveIdentityToCookie):
(WI.AuditTestResultBase.prototype.toJSON):
* UserInterface/Models/AuditTestCaseResult.js: Added.
(WI.AuditTestCaseResult):
(WI.AuditTestCaseResult.fromPayload.checkArray):
(WI.AuditTestCaseResult.fromPayload):
(WI.AuditTestCaseResult.prototype.get level):
(WI.AuditTestCaseResult.prototype.get data):
(WI.AuditTestCaseResult.prototype.get didPass):
(WI.AuditTestCaseResult.prototype.get didWarn):
(WI.AuditTestCaseResult.prototype.get didFail):
(WI.AuditTestCaseResult.prototype.get didError):
(WI.AuditTestCaseResult.prototype.get unsupported):
(WI.AuditTestCaseResult.prototype.toJSON):
* UserInterface/Models/AuditTestGroupResult.js: Added.
(WI.AuditTestGroupResult):
(WI.AuditTestGroupResult.fromPayload):
(WI.AuditTestGroupResult.prototype.get results):
(WI.AuditTestGroupResult.prototype.get levelCounts):
(WI.AuditTestGroupResult.prototype.get didPass):
(WI.AuditTestGroupResult.prototype.get didWarn):
(WI.AuditTestGroupResult.prototype.get didFail):
(WI.AuditTestGroupResult.prototype.get didError):
(WI.AuditTestGroupResult.prototype.get unsupported):
(WI.AuditTestGroupResult.prototype.toJSON):
* UserInterface/Views/AuditTabContentView.js: Added.
(WI.AuditTabContentView):
(WI.AuditTabContentView.tabInfo):
(WI.AuditTabContentView.isTabAllowed):
(WI.AuditTabContentView.prototype.get type):
(WI.AuditTabContentView.prototype.get supportsSplitContentBrowser):
(WI.AuditTabContentView.prototype.canShowRepresentedObject):
(WI.AuditTabContentView.prototype.shown):
(WI.AuditTabContentView.prototype.hidden):
(WI.AuditTabContentView.prototype._handleSpace):
* UserInterface/Views/AuditNavigationSidebarPanel.js: Added.
(WI.AuditNavigationSidebarPanel):
(WI.AuditNavigationSidebarPanel.prototype.showDefaultContentView):
(WI.AuditNavigationSidebarPanel.prototype.initialLayout):
(WI.AuditNavigationSidebarPanel.prototype.closed):
(WI.AuditNavigationSidebarPanel.prototype._addTest):
(WI.AuditNavigationSidebarPanel.prototype._addResult):
(WI.AuditNavigationSidebarPanel.prototype._updateStartStopButtonNavigationItemState):
(WI.AuditNavigationSidebarPanel.prototype._handleAuditTestAdded):
(WI.AuditNavigationSidebarPanel.prototype._handleAuditTestCompleted):
(WI.AuditNavigationSidebarPanel.prototype._handleAuditTestScheduled):
(WI.AuditNavigationSidebarPanel.prototype._treeSelectionDidChange):
(WI.AuditNavigationSidebarPanel.prototype._handleStartStopButtonNavigationItemClicked):
(WI.AuditNavigationSidebarPanel.prototype._handleImportButtonNavigationItemClicked):
* UserInterface/Views/AuditNavigationSidebarPanel.css: Added.
(.sidebar > .panel.navigation.audit > .content):
* UserInterface/Views/AuditTreeElement.js: Added.
(WI.AuditTreeElement):
(WI.AuditTreeElement.prototype.get result):
(WI.AuditTreeElement.prototype.onattach):
(WI.AuditTreeElement.prototype.ondetach):
(WI.AuditTreeElement.prototype.onpopulate):
(WI.AuditTreeElement.prototype.populateContextMenu):
(WI.AuditTreeElement.prototype._start):
(WI.AuditTreeElement.prototype._updateLevel):
(WI.AuditTreeElement.prototype._showRunningSpinner):
(WI.AuditTreeElement.prototype._showRunningProgress):
(WI.AuditTreeElement.prototype._handleTestCaseCompleted):
(WI.AuditTreeElement.prototype._handleTestResultCleared):
(WI.AuditTreeElement.prototype._handleTestCaseScheduled):
(WI.AuditTreeElement.prototype._handleTestGroupCompleted):
(WI.AuditTreeElement.prototype._handleTestGroupProgress):
(WI.AuditTreeElement.prototype._handleTestGroupScheduled):
(WI.AuditTreeElement.prototype._handleStatusClick):
* UserInterface/Views/AuditTreeElement.css: Added.
(.tree-outline .item.audit > .status):
(.tree-outline .item.audit > .status > img):
(.tree-outline .item.audit:matches(.test-case, .test-group) > .status:hover > img):
(.tree-outline .item.audit > .status:not(:hover) > img.show-on-hover, .tree-outline .item.audit.test-group.expanded > .status:not(:hover)):
(.tree-outline .item.audit.test-group.expanded > .status:hover > :not(img), .tree-outline .item.audit.test-group-result.expanded > .status):
(.tree-outline .item.audit > .status > img.pass):
(.tree-outline .item.audit > .status > img.warn):
(.tree-outline .item.audit > .status > img.fail):
(.tree-outline .item.audit > .status > img.error):
(.tree-outline .item.audit > .status > img.unsupported):
(.audit.test-case .icon):
(.audit.test-group .icon):
(.audit.test-case-result .icon):
(.audit.test-group-result .icon):
* UserInterface/Views/AuditTestContentView.js: Added.
(WI.AuditTestContentView):
(WI.AuditTestContentView.prototype.get navigationItems):
(WI.AuditTestContentView.prototype.get headerView):
(WI.AuditTestContentView.prototype.get contentView):
(WI.AuditTestContentView.prototype.get supportsSave):
(WI.AuditTestContentView.prototype.get saveData):
(WI.AuditTestContentView.prototype.initialLayout):
(WI.AuditTestContentView.prototype.layout):
(WI.AuditTestContentView.prototype.shown):
(WI.AuditTestContentView.prototype.hidden):
(WI.AuditTestContentView.prototype.get placeholderElement):
(WI.AuditTestContentView.prototype.set placeholderElement):
(WI.AuditTestContentView.prototype.showRunningPlaceholder):
(WI.AuditTestContentView.prototype.showStoppingPlaceholder):
(WI.AuditTestContentView.prototype.showNoResultPlaceholder):
(WI.AuditTestContentView.prototype.showNoResultDataPlaceholder):
(WI.AuditTestContentView.prototype.showFilteredPlaceholder):
(WI.AuditTestContentView.prototype.hidePlaceholder):
(WI.AuditTestContentView.prototype.applyFilter):
(WI.AuditTestContentView.prototype.resetFilter):
(WI.AuditTestContentView.prototype._exportAudit):
(WI.AuditTestContentView.prototype._updateExportButtonNavigationItemState):
(WI.AuditTestContentView.prototype._showPlaceholder):
(WI.AuditTestContentView.prototype._handleExportButtonNavigationItemClicked):
(WI.AuditTestContentView.prototype._handleTestChanged):
* UserInterface/Views/AuditTestContentView.css: Added.
(.content-view-container > .content-view.audit-test):
(.content-view-container > .content-view.audit-test > header):
(.content-view-container > .content-view.audit-test > header h1):
(.content-view-container > .content-view.audit-test > header p):
(.content-view.audit-test):
(.content-view.audit-test h1):
(.content-view.audit-test > header):
(.content-view.audit-test > header p):
(.content-view.audit-test .audit-test.filtered, .content-view.audit-test .audit-test .message-text-view):
(.content-view.audit-test > section):
(.content-view.audit-test > section > .message-text-view):
(.content-view.audit-test.showing-placeholder):
(.content-view.audit-test.showing-placeholder > section):
(.content-view.audit-test.showing-placeholder > section > :not(.message-text-view)):
(@media (prefers-dark-interface) .content-view.audit-test):
* UserInterface/Views/AuditTestCaseContentView.js: Added.
(WI.AuditTestCaseContentView):
(WI.AuditTestCaseContentView.prototype.initialLayout):
(WI.AuditTestCaseContentView.prototype.layout):
(WI.AuditTestCaseContentView.prototype.showRunningPlaceholder):
* UserInterface/Views/AuditTestCaseContentView.css: Added.
(.content-view-container > .content-view.audit-test-case > header):
(.content-view-container > .content-view.audit-test-case > section > :not(.message-text-view):first-child):
(.content-view.audit-test-case > header > h1):
(.content-view.audit-test-case > header > h1 > img):
(.content-view.audit-test-case > section > :not(.message-text-view)):
(.content-view.audit-test-case > section > :not(.message-text-view):last-child):
(.content-view.audit-test-case > section > :not(.message-text-view) + :not(.message-text-view)):
(.content-view.audit-test-case > section h1):
(.content-view.audit-test-case > section table):
(.content-view.audit-test-case > section table > tr + tr > td):
(.content-view.audit-test-case > section table > tr > td > :not(.tree-outline)):
(.content-view.audit-test-case > section table > tr > td:first-child):
(.content-view.audit-test-case > section > .dom-nodes > table > tr > td:first-child):
(.content-view.audit-test-case > section code):
(.content-view.audit-test-case > section mark):
* UserInterface/Views/AuditTestGroupContentView.js: Added.
(WI.AuditTestGroupContentView):
(WI.AuditTestGroupContentView.prototype.initialLayout):
(WI.AuditTestGroupContentView.prototype.layout):
(WI.AuditTestGroupContentView.prototype.shown):
(WI.AuditTestGroupContentView.prototype.hidden):
(WI.AuditTestGroupContentView.prototype.applyFilter):
(WI.AuditTestGroupContentView.prototype.resetFilter):
(WI.AuditTestGroupContentView.prototype.showRunningPlaceholder):
(WI.AuditTestGroupContentView.prototype._subobjects):
(WI.AuditTestGroupContentView.prototype._updateLevelScopeBar):
(WI.AuditTestGroupContentView.prototype._handleTestGroupCompleted):
(WI.AuditTestGroupContentView.prototype._handleTestGroupProgress):
(WI.AuditTestGroupContentView.prototype._handleTestGroupScheduled):
(WI.AuditTestGroupContentView.prototype._handleLevelScopeBarSelectionChanged):
* UserInterface/Views/AuditTestGroupContentView.css: Added.
(.content-view-container > .content-view.audit-test-group > header):
(.content-view.audit-test-group > header):
(.content-view.audit-test-group.no-matches + .audit-test-group > header):
(.content-view.audit-test-group > header, .content-view.audit-test-group:not(.filtered):last-child > header):
(.content-view.audit-test-group.contains-test-case > header):
(.content-view.audit-test-group.contains-test-case + .audit-test-group.contains-test-case):
(.content-view.audit-test-group.contains-test-case:not(.contains-test-group) > section, .content-view.audit-test-group.contains-test-case.contains-test-group > section > .audit-test-case):
(.content-view.audit-test-group > header > .information):
(.content-view.audit-test-group > header > .information > p):
(.content-view.audit-test-group > header > nav):
(.content-view.audit-test-group > header > nav:empty):
(.content-view.audit-test-group > header > nav:not(:empty):before):
(.content-view.audit-test-group > header > nav > .scope-bar > li):
(.content-view.audit-test-group > header > nav > .scope-bar > li:not(:hover, .selected)):
(.content-view.audit-test-group > header > nav > .scope-bar > li:last-child):
(.content-view.audit-test-group > header > nav > .scope-bar > li::before):
(.content-view.audit-test-group > header > nav > .scope-bar > li.pass::before):
(.content-view.audit-test-group > header > nav > .scope-bar > li.warn::before):
(.content-view.audit-test-group > header > nav > .scope-bar > li.fail::before):
(.content-view.audit-test-group > header > nav > .scope-bar > li.error::before):
(.content-view.audit-test-group > header > nav > .scope-bar > li.unsupported::before):
(.content-view.audit-test-group > header > .percentage-pass):
(.content-view.audit-test-group > header > .percentage-pass:not(:empty)::after):
(.content-view.audit-test-group > section > .audit-test-case:first-child, .content-view.audit-test-group > section > .audit-test-group + .audit-test-case, .content-view.audit-test-group > section > .audit-test-case + .audit-test-group):
(.content-view.audit-test-group > section > .audit-test-case:last-child):
* UserInterface/Views/ScopeBarItem.js:
(WI.ScopeBarItem):
(WI.ScopeBarItem.prototype.set selected):
* UserInterface/Views/MultipleScopeBarItem.js:
(WI.MultipleScopeBarItem.prototype.set selectedScopeBarItem):
Add an `independent` option that prevents selection changes from deselecting other
`WI.ScopeBarItem`s in the same `WI.ScopeBar` (`exclusive` takes precedence).
* UserInterface/Views/DOMTreeElement.js:
(WI.DOMTreeElement):
(WI.DOMTreeElement.prototype.highlightAttribute):
(WI.DOMTreeElement.prototype._buildAttributeDOM):
* UserInterface/Views/DOMTreeOutline.css:
(.tree-outline.dom li .highlight):
* UserInterface/Views/ToggleButtonNavigationItem.js:
(WI.ToggleButtonNavigationItem.prototype.set toggled):
Also change the `label` if the `ButtonStyle` has text.
* UserInterface/Base/Setting.js:
* UserInterface/Views/SettingsTabContentView.js:
(WI.SettingsTabContentView.prototype._createExperimentalSettingsView):
* UserInterface/Views/DividerNavigationItem.css:
(.navigation-bar .item.divider):
* UserInterface/Base/Utilities.js:
(Promise.chain): Added.
* UserInterface/Views/ContentView.js:
(WI.ContentView.createFromRepresentedObject):
(WI.ContentView.isViewable):
* UserInterface/Main.html:
* UserInterface/Base/Main.js:
(WI.loaded):
(WI.contentLoaded):
* UserInterface/Test.html:
* UserInterface/Base/Test.js:
(WI.loaded):
* UserInterface/Images/Audit.svg: Added.
* UserInterface/Images/AuditStart.svg: Added.
* UserInterface/Images/AuditStop.svg: Added.
* UserInterface/Images/AuditTestCase.svg: Added.
* UserInterface/Images/AuditTestCaseResult.svg: Added.
* UserInterface/Images/AuditTestError.svg: Added.
* UserInterface/Images/AuditTestFail.svg: Added.
* UserInterface/Images/AuditTestGroup.svg: Added.
* UserInterface/Images/AuditTestGroupResult.svg: Added.
* UserInterface/Images/AuditTestNoResult.svg: Added.
* UserInterface/Images/AuditTestPass.svg: Added.
* UserInterface/Images/AuditTestUnsupported.svg: Added.
* UserInterface/Images/AuditTestWarn.svg: Added.
* Localizations/en.lproj/localizedStrings.js:
2018-10-30 Devin Rousso <drousso@apple.com>
Web Inspector: provide options to WI.cssPath for more verbosity
https://bugs.webkit.org/show_bug.cgi?id=190987
Reviewed by Brian Burg.
* UserInterface/Base/DOMUtilities.js:
(WI.cssPath):
(WI.cssPathComponent):
When the option `full` is true, print every attribute along with every node in the hierarchy
until the root is reached. This partially duplicates the effect of an XPath, but instead
uses CSS selectors, making it much more human readable and recognizable.
2018-10-30 Devin Rousso <drousso@apple.com>
Web Inspector: change WI.ColorWheel to use conic-gradient()
https://bugs.webkit.org/show_bug.cgi?id=189485
Reviewed by Brian Burg.
Use the ("new") HSL `WI.ColorPicker` if `conic-gradient` is supported. Otherwise, use the
("old") RGB `WI.LegacyColorPicker`.
* UserInterface/Views/ColorWheel.js:
(WI.ColorWheel):
(WI.ColorWheel.prototype.set dimension):
(WI.ColorWheel.prototype.set brightness):
(WI.ColorWheel.prototype.get tintedColor):
(WI.ColorWheel.prototype.set tintedColor):
(WI.ColorWheel.prototype.get rawColor):
(WI.ColorWheel.prototype.get _hue): Added.
(WI.ColorWheel.prototype.get _saturation): Added.
(WI.ColorWheel.prototype._updateColorForMouseEvent):
(WI.ColorWheel.prototype._setCrosshairPosition):
(WI.ColorWheel.prototype._updateGradient): Added.
(WI.ColorWheel.prototype._pointInCircleForEvent.distance): Deleted.
(WI.ColorWheel.prototype._pointInCircleForEvent.angleFromCenterToPoint): Deleted.
(WI.ColorWheel.prototype._pointInCircleForEvent.pointOnCircumference): Deleted.
(WI.ColorWheel.prototype._pointInCircleForEvent): Deleted.
(WI.ColorWheel.prototype._tintedColorToPointAndBrightness): Deleted.
(WI.ColorWheel.prototype._drawRawCanvas): Deleted.
(WI.ColorWheel.prototype._colorAtPointWithBrightness): Deleted.
(WI.ColorWheel.prototype._drawTintedCanvas): Deleted.
(WI.ColorWheel.prototype._draw): Deleted.
* UserInterface/Views/ColorWheel.css:
(.color-wheel > .gradient): Added.
(.color-wheel > .crosshair): Added.
* UserInterface/Views/LegacyColorWheel.js: Copied from Source/WebInspectorUI/UserInterface/Views/ColorWheel.js.
* UserInterface/Views/ColorPicker.js:
(WI.ColorPicker):
(WI.ColorPicker.supportsConicGradient): Added.
(WI.ColorPicker.prototype._updateSliders):
* UserInterface/Models/Geometry.js:
(WI.Point.prototype.distance):
* UserInterface/Main.html:
2018-10-30 Devin Rousso <drousso@apple.com>
Web Inspector: make the layers sidebar in the Elements tab always visible
https://bugs.webkit.org/show_bug.cgi?id=190158
Reviewed by Brian Burg.
* UserInterface/Views/ElementsTabContentView.js:
(WI.ElementsTabContentView):
* UserInterface/Views/SearchTabContentView.js:
(WI.SearchTabContentView):
2018-10-30 Devin Rousso <drousso@apple.com>
Web Inspector: refactor WI.ScopeBarItem for better extensibility
https://bugs.webkit.org/show_bug.cgi?id=190986
Reviewed by Brian Burg.
Renames `withModifier` to `extendSelection` for clarity of usage, and to allow the changes
in <https://webkit.org/b/190754> (adding an option to allow `WI.ScopeBarItem`s to be
selected without deselcting any other `WI.ScopeBarItem`s) to use the same variable.
* UserInterface/Views/ScopeBarItem.js:
(WI.ScopeBarItem):
(WI.ScopeBarItem.prototype.set selected):
(WI.ScopeBarItem.prototype._handleMouseDown):
(WI.ScopeBarItem.prototype.setSelected): Deleted.
* UserInterface/Views/ScopeBar.js:
(WI.ScopeBar):
(WI.ScopeBar.prototype._populate):
(WI.ScopeBar.prototype._itemSelectionDidChange):
* UserInterface/Views/MultipleScopeBarItem.js:
(WI.MultipleScopeBarItem.prototype.set selectedScopeBarItem):
* UserInterface/Views/CanvasSidebarPanel.js:
(WI.CanvasSidebarPanel.prototype._updateRecordingScopeBar):
* UserInterface/Views/LogContentView.js:
(WI.LogContentView):
* UserInterface/Views/NetworkTableContentView.js:
(WI.NetworkTableContentView):
* UserInterface/Views/ResourceSidebarPanel.js:
(WI.ResourceSidebarPanel):
* UserInterface/Views/StorageSidebarPanel.js:
(WI.StorageSidebarPanel):
2018-10-29 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Flash views with red outline on initial layout
https://bugs.webkit.org/show_bug.cgi?id=191048
Reviewed by Devin Rousso.
* UserInterface/Views/View.js:
(WI.View.prototype._layoutSubtree):
(WI.View.prototype._drawLayoutFlashingOutline):
2018-10-29 Devin Rousso <drousso@apple.com>
Web Inspector: Canvas: show warning when path moves offscreen
https://bugs.webkit.org/show_bug.cgi?id=191016
Reviewed by Joseph Pecoraro.
* UserInterface/Models/RecordingAction.js:
(WI.RecordingAction):
(WI.RecordingAction.deriveCurrentState):
(WI.RecordingAction.prototype.get isVisual):
(WI.RecordingAction.prototype.get warning): Added.
(WI.RecordingAction.prototype.process.checkInvalidCurrentAxisPoint): Added.
(WI.RecordingAction.prototype.process):
(WI.RecordingAction.prototype.get hasVisibleEffect): Deleted.
Replace `hasVisibleEffect` with a more general `warning` value, so that it can be used for
more types of warnings.
* UserInterface/Views/RecordingActionTreeElement.js:
(WI.RecordingActionTreeElement.prototype.onattach):
* UserInterface/Views/RecordingActionTreeElement.css:
(.item.action.visual.warning:not(.invalid) > .status > .warning): Added.
(.item.action.visual.no-visible-effect:not(.invalid) > .status > .warning): Deleted.
* Localizations/en.lproj/localizedStrings.js:
2018-10-29 Devin Rousso <drousso@apple.com>
Web Inspector: refactor code for getting properties via WI.RemoteObject
https://bugs.webkit.org/show_bug.cgi?id=190989
Reviewed by Matt Baker.
* UserInterface/Protocol/RemoteObject.js:
(WI.RemoteObject.prototype.getPropertyDescriptors): Added.
(WI.RemoteObject.prototype.getPropertyDescriptorsAsObject): Added.
(WI.RemoteObject.prototype.getOwnPropertyDescriptors): Deleted.
(WI.RemoteObject.prototype.getAllPropertyDescriptors): Deleted.
(WI.RemoteObject.prototype._getPropertyDescriptors): Deleted.
(WI.RemoteObject.prototype.getOwnPropertyDescriptorsAsObject): Deleted.
* UserInterface/Views/ErrorObjectView.js:
(WI.ErrorObjectView.prototype.update):
* UserInterface/Views/ObjectTreePropertyTreeElement.js:
(WI.ObjectTreePropertyTreeElement.prototype._updateChildren):
* UserInterface/Views/ObjectTreeView.js:
(WI.ObjectTreeView.prototype.update):
2018-10-29 Tim Horton <timothy_horton@apple.com>
Modernize WebKit nibs and lprojs for localization's sake
https://bugs.webkit.org/show_bug.cgi?id=190911
<rdar://problem/45349466>
Reviewed by Dan Bernstein.
* WebInspectorUI.xcodeproj/project.pbxproj:
English->en
2018-10-29 Devin Rousso <drousso@apple.com>
Web Inspector: prevent Canvas tab from listening for "space" when not visibile
https://bugs.webkit.org/show_bug.cgi?id=190988
Reviewed by Joseph Pecoraro.
* UserInterface/Views/CanvasTabContentView.js:
(WI.CanvasTabContentView):
(WI.CanvasTabContentView.prototype.shown):
(WI.CanvasTabContentView.prototype.hidden): Added.
2018-10-27 Matt Baker <mattbaker@apple.com>
Web Inspector: Table should support deleting rows
https://bugs.webkit.org/show_bug.cgi?id=189803
<rdar://problem/44655709>
Reviewed by Devin Rousso.
Add methods for removing rows from a Table without reloading the data
source. This patch adds Table.prototype.removeRow for removing a single
row, and Table.prototype.removeSelectedRows for removing the entire selection.
The latter also attempts to select a new row, if possible, before removing
the selection.
* UserInterface/Base/IndexSet.js:
(WI.IndexSet.prototype.copy):
* UserInterface/Views/Table.js:
(WI.Table):
(WI.Table.prototype.get numberOfRows):
Cache the number of rows in the table data source. Invalidate cached
value whenever table data is reloaded. Removing rows immediately updates
cached value, without incurring a potentially expensive reload.
(WI.Table.prototype.reloadData):
(WI.Table.prototype.selectRow):
(WI.Table.prototype.deselectRow):
(WI.Table.prototype.removeRow):
(WI.Table.prototype.removeSelectedRows):
Remove the selected rows and select a new row, if possible.
(WI.Table.prototype._updateVisibleRows):
(WI.Table.prototype._handleKeyDown):
(WI.Table.prototype._deselectAllAndSelect):
Drive-by fix: should work when `rowToSelect` isn't already selected.
(WI.Table.prototype._removeRows):
Remove rows and adjust the indexes of rows that are shifted up as a result
of preceding rows being removed.
2018-10-26 Devin Rousso <drousso@apple.com>
Web Inspector: simplify some editing code checks
https://bugs.webkit.org/show_bug.cgi?id=190970
Reviewed by Joseph Pecoraro.
* UserInterface/Base/Main.js:
(WI._focusChanged):
* UserInterface/Base/Utilities.js:
* UserInterface/Views/EditingSupport.js:
(WI.enclosingCodeMirror): Added.
(WI.isBeingEdited):
(WI.isEventTargetAnEditableField):
* UserInterface/Views/QuickConsole.js:
(WI.QuickConsole):
2018-10-26 Devin Rousso <drousso@apple.com>
Web Inspector: Uncaught Exception: undefined is not an object (evaluating 'this._classListContainer.children')
https://bugs.webkit.org/show_bug.cgi?id=190966
Reviewed by Joseph Pecoraro.
* UserInterface/Views/GeneralStyleDetailsSidebarPanel.js:
(WI.GeneralStyleDetailsSidebarPanel.prototype.layout):
(WI.GeneralStyleDetailsSidebarPanel.prototype._classToggleButtonClicked):
(WI.GeneralStyleDetailsSidebarPanel.prototype._populateClassToggles):
Don't try to reload the class toggles if the we haven't `layout` yet, as the element won't
yet exist.
2018-10-25 Devin Rousso <drousso@apple.com>
Web Inspector: Canvas Recording loading goes significantly slower when "Frame" tree element is expanded
https://bugs.webkit.org/show_bug.cgi?id=190497
Reviewed by Joseph Pecoraro.
Save the `WI.TreeElement` that are in the DOM, and compare that with any `WI.TreeElement`
that would be added to the DOM. If all of the following are true, don't edit the DOM:
- no focused `WI.TreeElement` that isn't currently visible (we would scroll otherwise)
- the set of previously visible `WI.TreeElement`s (e.g. not used for scroll padding) has at
least one of the `WI.TreeElement`s that would be added from this update
- this means that the user hasn't scrolled beyond the padding `WI.TreeElement`
- there are no `WI.TreeElement`s that would be added from this update that were NOT added
in a previous update
- this covers the case that a `WI.TreeElement` is inserted in the visible area
* UserInterface/Base/Utilities.js:
* UserInterface/Views/TreeOutline.js:
(WI.TreeOutline):
(WI.TreeOutline.prototype.registerScrollVirtualizer):
(WI.TreeOutline.prototype.updateVirtualizedElements.walk):
(WI.TreeOutline.prototype.updateVirtualizedElements):
2018-10-25 Joseph Pecoraro <pecoraro@apple.com>
JSContext Inspector: Broken frontend, DOMAgent is used but does not exist
https://bugs.webkit.org/show_bug.cgi?id=190922
<rdar://problem/45569827>
Reviewed by Devin Rousso.
* UserInterface/Controllers/DOMManager.js:
(WI.DOMManager.prototype.requestDocument):
Feature check for agents that may not exist in a JSContext.
2018-10-25 Devin Rousso <drousso@apple.com>
Web Inspector: add corner rounding to the network timing "blocks"
https://bugs.webkit.org/show_bug.cgi?id=190379
Reviewed by Timothy Hatcher.
* UserInterface/Views/NetworkTableContentView.css:
(.waterfall .block):
(body[dir=ltr] .waterfall .block): Added.
(body[dir=rtl] .waterfall .block): Added.
(.network-table .waterfall .block + .block): Added.
(.network-table .waterfall .block.filler + .block, .network-table .waterfall .block:not(.request, .response) + :matches(.request, .response)): Added.
(.network-table .waterfall .block:last-child): Added.
2018-10-25 Devin Rousso <drousso@apple.com>
Web Inspector: display fullscreen enter/exit events in Timelines and Network node waterfalls
https://bugs.webkit.org/show_bug.cgi?id=189874
<rdar://problem/44700000>
Reviewed by Joseph Pecoraro.
* Localizations/en.lproj/localizedStrings.js:
* UserInterface/Protocol/DOMObserver.js:
(WI.DOMObserver.prototype.didFireEvent):
* UserInterface/Controllers/DOMManager.js:
(WI.DOMManager.prototype.didFireEvent):
Allow `data` to be passed to the frontend with `didFireEvent`.
* UserInterface/Models/DOMNode.js:
(WI.DOMNode):
(WI.DOMNode.getFullscreenDOMEvents): Added.
(WI.DOMNode.prototype.didFireEvent):
(WI.DOMNode.prototype._handleDOMNodeDidFireEvent): Added.
(WI.DOMNode.prototype._addDOMEvent):
(WI.DOMNode.prototype._shouldListenForEventListeners): Added.
If an event is fired on an ancestor of this node, also record that event in this node's
`domEvents`, including the `originator` node.
* UserInterface/Views/NetworkTableContentView.js:
(WI.NetworkTableContentView.prototype._populateWaterfallGraph):
* UserInterface/Views/NetworkTableContentView.css:
(.network-table :not(.header) .cell.waterfall .waterfall-container > .dom-fullscreen): Added.
* UserInterface/Views/DOMEventsBreakdownView.js:
(WI.DOMEventsBreakdownView.prototype.initialLayout):
(WI.DOMEventsBreakdownView.prototype._populateTable):
* UserInterface/Views/DOMEventsBreakdownView.css:
(.dom-events-breakdown .graph > .area.fullscreen): Added.
(.dom-events-breakdown .inherited > .name, .dom-events-breakdown .inherited > .graph > .point): Added.
(.dom-events-breakdown:not(.has-inherited) .originator): Added.
2018-10-25 Devin Rousso <drousso@apple.com>
Web Inspector: Network: more aggressively snap timing blocks together
https://bugs.webkit.org/show_bug.cgi?id=190439
Reviewed by Timothy Hatcher.
* UserInterface/Views/NetworkTableContentView.js:
(WI.NetworkTableContentView.prototype._populateWaterfallGraph.appendBlock):
(WI.NetworkTableContentView.prototype._populateWaterfallGraph):
If the time difference between the end of the previous block and the start of this block
would result in less than 2px of space, extend the next block back to the previous block.
2018-10-24 Devin Rousso <drousso@apple.com>
Web Inspector: popovers for function source code are malformed
https://bugs.webkit.org/show_bug.cgi?id=190859
Reviewed by Joseph Pecoraro.
Previously, the `WI.Popover` would be drawn twice: once when the
`WI.CodeMirrorTokenTrackingController` determines that the user has hovered on a function
token, and once again when the source for that function is formatted (after being retrieved).
In the case that the formatter is able to return the prettified source within a frame (or
two), the `WI.Popover` is still in the middle of animating to its new size, meaning that the
changes made by the formatted `update` will be overridden on the next rAF (creates a flash).
* UserInterface/Views/Popover.js:
(WI.Popover.prototype):
(WI.Popover.prototype._animateFrame.drawBackground):
(WI.Popover.prototype._drawBackground):
Add a member variable to make sure that there is only ever one rAF firing at a time.
Drive-by: rework the background code to only use one canvas.
* UserInterface/Views/SourceCodeTextEditor.js:
(WI.SourceCodeTextEditor.prototype._showPopoverForFunction.didGetDetails):
Don't show the `WI.Popover` until the formatter has finished prettifying the function's
source code, as otherwise there is brief moment that the popover appears and is empty.
2018-10-24 Devin Rousso <drousso@apple.com>
Web Inspector: REGRESSION (r237232): changing resources via up/down blurs the TreeOutline in Resources
https://bugs.webkit.org/show_bug.cgi?id=190862
Reviewed by Matt Baker.
* UserInterface/Views/TextEditor.js:
(WI.TextEditor.prototype.set selectedTextRange):
Don't `focus` unless the `activeElement` is not a WebInspector element (e.g. <body>),
meaning that the previously focused element has been removed from the DOM and no longer
needs to keep the focus.
2018-10-24 Devin Rousso <drousso@apple.com>
Web Inspector: CSP request payload on medium.com is unreadable, should be pretty-printed
https://bugs.webkit.org/show_bug.cgi?id=190354
<rdar://problem/45090894>
Reviewed by Joseph Pecoraro.
* UserInterface/Views/TextEditor.js:
(WI.TextEditor.prototype.set string.update):
(WI.TextEditor.prototype._attemptToDetermineMIMEType): Added.
If the content doesn't already have a MIME type, attempt to determine one by trying to
format it as "javascript" (e.g. request JSON that is simply missing a MIME type).
* UserInterface/Views/TextContentView.js:
(WI.TextContentView):
(WI.TextContentView.prototype._handleTextEditorMIMETypeChanged): Added.
* UserInterface/Views/TextResourceContentView.js:
(WI.TextResourceContentView):
(WI.TextResourceContentView.prototype._handleTextEditorMIMETypeChanged): Added.
* UserInterface/Views/ScriptContentView.js:
(WI.ScriptContentView):
(WI.ScriptContentView.prototype._handleTextEditorMIMETypeChanged): Added.
Enable the "Pretty Print" navigation button if the MIME type changes to something that is
able to be formatted.
Drive-by: reorder the creation of the "Pretty Print" button so that it exists if
`_attemptToDetermineMIMEType` finishes synchronously.
2018-10-23 Devin Rousso <drousso@apple.com>
Uncaught Exception: TypeError: null is not an object (evaluating 'mouseBlock.addEventListener')
https://bugs.webkit.org/show_bug.cgi?id=190766
Reviewed by Brian Burg.
* UserInterface/Views/NetworkTableContentView.js:
(WI.NetworkTableContentView.prototype._populateWaterfallGraph):
When creating the `mouseBlock`, if the `startTimestamp` and `endTimestamp` are equal, we
don't create an element. If this is true for the total range of the `WI.Resouce` (meaning
its `startTime` and `responseEnd`), don't even try to create blocks.
2018-10-23 Devin Rousso <drousso@apple.com>
Web Inspector: "Queued NaNms" in Network tab
https://bugs.webkit.org/show_bug.cgi?id=190767
<rdar://problem/45420859>
Reviewed by Brian Burg.
* UserInterface/Models/ResourceTimingData.js:
(WI.ResourceTimingData.prototype.get fetchStart):
If the `WI.ResourceTimingData` has no `fetchStart` use the associated `WI.Resource`'s
`requestSentTimestamp` (just like `startTime`).
2018-10-22 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Open Quickly dialog doesn't show named scripts that appear in the debugger sidebar
https://bugs.webkit.org/show_bug.cgi?id=190649
Reviewed by Devin Rousso.
* UserInterface/Views/OpenResourceDialog.js:
(WI.OpenResourceDialog.prototype.didPresentDialog):
(WI.OpenResourceDialog.prototype._addResourcesForTarget):
(WI.OpenResourceDialog.prototype._addScriptsForTarget):
Include non-resource named scripts from the main target in
the open quickly dialog.
2018-10-19 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Remove unused member variable of DebuggerSidebarPanel
https://bugs.webkit.org/show_bug.cgi?id=190743
Reviewed by Devin Rousso.
* UserInterface/Views/DebuggerSidebarPanel.js:
(WI.DebuggerSidebarPanel):
2018-10-17 Devin Rousso <drousso@apple.com>
Web Inspector: Quickly Open to line/column does should have caret indicating where the position is
https://bugs.webkit.org/show_bug.cgi?id=190643
Reviewed by Matt Baker.
* UserInterface/Views/TextEditor.js:
(WI.TextEditor.prototype.set selectedTextRange):
(WI.TextEditor.prototype.revealPosition):
Ensure that CodeMirror is focused before attempting to `setSelection`.
Drive-by: allow selections past the "end" of the line (since there is a `\n` or `\r`).
* UserInterface/Views/SourceCodeTextEditor.js:
(WI.SourceCodeTextEditor.prototype.dialogWasDismissedWithRepresentedObject):
Remove the extra `focus` call after dismissing the `WI.GoToLineDialog` since it is now
handled by `WI.TextEditor` via `revealPosition`.
2018-10-16 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: ⌃G to jump to line in CSS file wipes the line
https://bugs.webkit.org/show_bug.cgi?id=190645
Reviewed by Devin Rousso.
* UserInterface/Base/Main.js:
* UserInterface/Views/Dialog.js:
(WI.Dialog.prototype.dismiss):
* UserInterface/Views/SourceCodeTextEditor.js:
(WI.SourceCodeTextEditor.prototype.dialogWasDismissed): Deleted.
Rename the handler when dismissing a dialog with a value so that
it is clear this is only on a successful value and not an invalid value.
Dialog now only calls this delegate with a valid value. This addresses
exceptions seen when the GoToLineDialog was dimissed via Escape and
an unexpected `null` value was being handled in the delegate.
* UserInterface/Views/GoToLineDialog.js:
(WI.GoToLineDialog.prototype._handleKeydownEvent):
* UserInterface/Views/OpenResourceDialog.js:
(WI.OpenResourceDialog.prototype._handleKeydownEvent):
Prevent default on the event whenever we dismiss the dialog.
Without this, the key event was also being sent to the editor.
In this case, that meant an "Enter" key was replacing the new
selection in the TextEditor with a newline!
2018-10-16 Devin Rousso <drousso@apple.com>
Web Inspector: Canvas: capture previously saved states and add them to the recording payload
https://bugs.webkit.org/show_bug.cgi?id=190473
Reviewed by Joseph Pecoraro.
Instead of sending a single object of the current state of the context, send an array of
objects, one for each restore point. When replaying, recreate each restore point before
applying the selected action(s).
* UserInterface/Models/Recording.js:
(WI.Recording):
(WI.Recording.fromPayload):
(WI.Recording.prototype.toJSON):
(WI.Recording.prototype.async._process):
(WI.Recording.prototype.async._swizzleState): Added.
* UserInterface/Models/RecordingAction.js:
(WI.RecordingAction):
(WI.RecordingAction.deriveCurrentState): Added.
(WI.RecordingAction.prototype.get states): Added.
(WI.RecordingAction.prototype.process):
(WI.RecordingAction.prototype.get state): Deleted.
Drive-by: when `process`ing, also check to see if any values in the current state changed
outside of those expected in `_stateModifiers` (e.g. `restore` may modify some state values).
* UserInterface/Views/RecordingContentView.js:
(WI.RecordingContentView.prototype._generateContentCanvas2D):
* UserInterface/Views/RecordingStateDetailsSidebarPanel.js:
(WI.RecordingStateDetailsSidebarPanel.prototype._generateDetailsCanvas2D):
Default to showing the most recent (current) state.
* UserInterface/Views/CanvasTabContentView.js:
(WI.CanvasTabContentView.prototype.initialLayout): Added.
(WI.CanvasTabContentView.prototype._addCanvas):
(WI.CanvasTabContentView.prototype._removeCanvas):
(WI.CanvasTabContentView.prototype._addRecording): Added.
(WI.CanvasTabContentView.prototype._recordingImportedOrStopped):
(WI.CanvasTabContentView.prototype._recordingAdded): Deleted.
* UserInterface/Controllers/CanvasManager.js:
(WI.CanvasManager):
(WI.CanvasManager.prototype.get importedRecordings): Added.
(WI.CanvasManager.prototype.importRecording):
Drive-by: store imported recordings on `WI.CanvasManager` so that if the Canvas tab is
closed we can still show the list of imported recordings.
2018-10-16 Devin Rousso <drousso@apple.com>
Web Inspector: Canvas recording sidebar scroll position lost after switching tabs
https://bugs.webkit.org/show_bug.cgi?id=190482
Reviewed by Joseph Pecoraro.
* UserInterface/Views/Sidebar.js:
(WI.Sidebar.prototype.removeSidebarPanel):
(WI.Sidebar.prototype.set selectedSidebarPanel):
Call `hidden` before setting `selected` to `false`, as that sets `display: none;` on the
element, which sets the `scrollTop` to `0`.
* UserInterface/Views/SidebarPanel.js:
(WI.SidebarPanel.prototype.shown):
(WI.SidebarPanel.prototype.hidden):
(WI.SidebarPanel.prototype.get scrollElement): Added.
Allow subclasses to specify the scrolling element for saving/restoring the scroll position.
* UserInterface/Views/CanvasSidebarPanel.js:
(WI.CanvasSidebarPanel.prototype.get scrollElement): Added.
* UserInterface/Views/RecordingStateDetailsSidebarPanel.js:
(WI.RecordingStateDetailsSidebarPanel.prototype.get scrollElement): Added.
2018-10-16 Devin Rousso <drousso@apple.com>
Web Inspector: Should be a way to go directly from an event in the overview view to the specialized timeline for that event
https://bugs.webkit.org/show_bug.cgi?id=135307
<rdar://problem/17273966>
Reviewed by Joseph Pecoraro.
When a `WI.TimelineRecordBar` is clicked, call up the delegate chain to the overview and
adjust the currently selected `WI.TimelineRecordBar` among the `WI.TimelineOverviewGraph`s.
Similarly, selecting a `WI.DataGridNode` in any `WI.TimelineView` subclass will use the same
logic to select the corresponding `WI.TimelineRecordBar`.
* UserInterface/Views/TimelineOverview.js:
(WI.TimelineOverview):
(WI.TimelineOverview.prototype.reset):
(WI.TimelineOverview.prototype._recordSelected):
* UserInterface/Views/TimelineOverviewGraph.js:
(WI.TimelineOverviewGraph):
(WI.TimelineOverviewGraph.prototype.set selectedRecord):
(WI.TimelineOverviewGraph.prototype.get selectedRecordBar): Added.
(WI.TimelineOverviewGraph.prototype.set selectedRecordBar): Added.
(WI.TimelineOverviewGraph.prototype.timelineRecordBarClicked): Added.
(WI.TimelineOverviewGraph.prototype._needsSelectedRecordLayout):
* UserInterface/Views/TimelineRecordBar.js:
(WI.TimelineRecordBar):
(WI.TimelineRecordBar.prototype.get selected): Added.
(WI.TimelineRecordBar.prototype.set selected): Added.
(WI.TimelineRecordBar.prototype._handleClick): Added.
* UserInterface/Views/TimelineRecordBar.css:
(.timeline-record-bar.selected > .segment): Added.
Add a `delegate` that is notified whenever the element is clicked.
* UserInterface/Views/TimelineDataGridNode.js:
(WI.TimelineDataGridNode.prototype.refreshGraph.createBar):
* UserInterface/Views/LayoutTimelineOverviewGraph.js:
(WI.LayoutTimelineOverviewGraph.prototype.updateSelectedRecord):
(WI.LayoutTimelineOverviewGraph.prototype._updateRowLayout.createBar):
* UserInterface/Views/NetworkTimelineOverviewGraph.js:
(WI.NetworkTimelineOverviewGraph.prototype.layout.createBar):
* UserInterface/Views/ScriptTimelineOverviewGraph.js:
(WI.ScriptTimelineOverviewGraph.prototype.layout.createBar):
(WI.ScriptTimelineOverviewGraph.prototype.updateSelectedRecord):
* UserInterface/Views/TimelineRecordingContentView.js:
(WI.TimelineRecordingContentView.prototype.showTimelineViewForTimeline):
2018-10-16 Devin Rousso <drousso@apple.com>
Web Inspector: sequences of spaces longer than 16 don't show a dot
https://bugs.webkit.org/show_bug.cgi?id=190528
Reviewed by Matt Baker.
* UserInterface/Views/CodeMirrorAdditions.js:
Create a new CSS rule and add it to a unique <style> whenever a whitespace sequence with
a length is seen for the first time.
* UserInterface/Views/CodeMirrorOverrides.css:
(.show-whitespace-characters .CodeMirror .cm-whitespace-1::before): Deleted.
(.show-whitespace-characters .CodeMirror .cm-whitespace-2::before): Deleted.
(.show-whitespace-characters .CodeMirror .cm-whitespace-3::before): Deleted.
(.show-whitespace-characters .CodeMirror .cm-whitespace-4::before): Deleted.
(.show-whitespace-characters .CodeMirror .cm-whitespace-5::before): Deleted.
(.show-whitespace-characters .CodeMirror .cm-whitespace-6::before): Deleted.
(.show-whitespace-characters .CodeMirror .cm-whitespace-7::before): Deleted.
(.show-whitespace-characters .CodeMirror .cm-whitespace-8::before): Deleted.
(.show-whitespace-characters .CodeMirror .cm-whitespace-9::before): Deleted.
(.show-whitespace-characters .CodeMirror .cm-whitespace-10::before): Deleted.
(.show-whitespace-characters .CodeMirror .cm-whitespace-11::before): Deleted.
(.show-whitespace-characters .CodeMirror .cm-whitespace-12::before): Deleted.
(.show-whitespace-characters .CodeMirror .cm-whitespace-13::before): Deleted.
(.show-whitespace-characters .CodeMirror .cm-whitespace-14::before): Deleted.
(.show-whitespace-characters .CodeMirror .cm-whitespace-15::before): Deleted.
(.show-whitespace-characters .CodeMirror .cm-whitespace-16::before): Deleted.
2018-10-15 Charles Vazac <cvazac@gmail.com>
Web Inspector: Expose Server Timing Response Headers in Network Tab
https://bugs.webkit.org/show_bug.cgi?id=190440
Reviewed by Joseph Pecoraro.
* Localizations/en.lproj/localizedStrings.js: new key "Server Timing:"
* UserInterface/Main.html: add reference to Models/ServerTimingEntry.js
* UserInterface/Models/Resource.js:
(WI.Resource.prototype.get serverTiming):
(WI.Resource.prototype.updateForResponse):
* UserInterface/Models/ServerTimingEntry.js: Added.
(WI.ServerTimingEntry):
(WI.ServerTimingEntry.parseHeaders): parse raw response headers into an array of ServerTimingEntry objects
(WI.ServerTimingEntry.parseHeaders.consumeDelimiter):
(WI.ServerTimingEntry.parseHeaders.consumeToken):
(WI.ServerTimingEntry.):
* UserInterface/Test.html: add reference to Models/ServerTimingEntry.js
* UserInterface/Views/ResourceTimingBreakdownView.js:
(WI.ResourceTimingBreakdownView.prototype._appendServerTimingRow): render a table row per ServerTimingEntry object
(WI.ResourceTimingBreakdownView.prototype.initialLayout):
(WI.ResourceTimingBreakdownView):
2018-10-15 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Dark Mode: pseudo elements in DOM tree are too dark
https://bugs.webkit.org/show_bug.cgi?id=190541
<rdar://problem/45238443>
Reviewed by Matt Baker.
* UserInterface/Views/DOMTreeOutline.css:
(@media (prefers-dark-interface)):
(.tree-outline.dom .html-pseudo-element):
2018-10-15 Matt Baker <mattbaker@apple.com>
Web Inspector: REGRESSION (r233824): execution highlight range missing/incorrect in pretty printed code
https://bugs.webkit.org/show_bug.cgi?id=188082
<rdar://problem/42640580>
Reviewed by Joseph Pecoraro.
* UserInterface/Views/SourceCodeTextEditor.js:
(WI.SourceCodeTextEditor.prototype.textEditorExecutionHighlightRange):
TextEditor expects positions returned by the delegate to be relative to
the editor's text content, not the original source code content.
* UserInterface/Views/TextEditor.js:
(WI.TextEditor.prototype._updateExecutionRangeHighlight):
Convert positions to CodeMirror format here rather than in the delegate
method, which is a layer removed from CodeMirror.
2018-10-15 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Dark Mode: unreadable text when hovering CSS properties while holding Command
https://bugs.webkit.org/show_bug.cgi?id=190548
<rdar://problem/45242098>
Reviewed by Joseph Pecoraro.
* UserInterface/Views/SpreadsheetCSSStyleDeclarationEditor.css:
(.meta-key-pressed .spreadsheet-css-declaration:not(.locked) :matches(.name, .value):not(.editing):hover):
In the light mode the color remained the same.
2018-10-15 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Dark Mode: style editor warnings should not look like errors
https://bugs.webkit.org/show_bug.cgi?id=190569
<rdar://problem/45261689>
Reviewed by Matt Baker.
Make warnings in the style editor look the same as warnings in the content views.
Unify warning and error background color variables.
* UserInterface/Views/LogContentView.css:
(@media (prefers-dark-interface)):
(.console-error-level):
(.console-warning-level):
* UserInterface/Views/SourceCodeTextEditor.css:
(.source-code.text-editor > .CodeMirror .warning):
(.source-code.text-editor > .CodeMirror .error):
(.source-code.text-editor > .CodeMirror .issue-widget.warning):
(.source-code.text-editor > .CodeMirror .issue-widget.inline.warning):
(.source-code.text-editor > .CodeMirror .issue-widget.error):
(.source-code.text-editor > .CodeMirror .issue-widget.inline.error):
(@media (prefers-dark-interface)):
(.source-code.text-editor > .CodeMirror .issue-widget):
* UserInterface/Views/SpreadsheetCSSStyleDeclarationEditor.css:
(.spreadsheet-style-declaration-editor .property.has-warning):
(.spreadsheet-style-declaration-editor .property.has-warning .warning):
(@media (prefers-dark-interface)):
(.spreadsheet-style-declaration-editor :matches(.name, .value).editing):
* UserInterface/Views/Variables.css:
(:root):
(@media (prefers-dark-interface)):
2018-10-12 Devin Rousso <drousso@apple.com>
Web Inspector: Canvas: previews aren't removed when the parent view is hidden
https://bugs.webkit.org/show_bug.cgi?id=190525
Reviewed by Matt Baker.
* UserInterface/Views/CanvasTabContentView.js:
(WI.CanvasTabContentView.prototype.attached):
* UserInterface/Controllers/CanvasManager.js:
(WI.CanvasManager.prototype.get canvases):
(WI.CanvasManager.prototype.get shaderPrograms):
Drive-by: simplify these getters.
2018-10-12 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Dark Mode: Highlight text in Network Headers search is too dark
https://bugs.webkit.org/show_bug.cgi?id=190510
Reviewed by Devin Rousso.
* UserInterface/Views/ResourceHeadersContentView.css:
(.resource-headers.showing-find-banner .search-highlight):
Use adaptive text-color.
2018-10-12 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Dark Mode: wrong color used for "goto arrow" for selected DOM breakpoint tree element
https://bugs.webkit.org/show_bug.cgi?id=190180
<rdar://problem/44927654>
Reviewed by Matt Baker.
* UserInterface/Views/Main.css:
(@media (prefers-dark-interface)):
(:focus .selected .go-to-arrow):
2018-10-11 Devin Rousso <drousso@apple.com>
Web Inspector: Network: detail view reverts to "Response" when new requests are added
https://bugs.webkit.org/show_bug.cgi?id=190443
Reviewed by Joseph Pecoraro.
* UserInterface/Views/NetworkTableContentView.js:
(WI.NetworkTableContentView.prototype._showDetailView):
Return early if we are already showing a detail view for the selected object.
2018-10-11 Matt Baker <mattbaker@apple.com>
Web Inspector: remove unused TreeOutline style .force-focus
https://bugs.webkit.org/show_bug.cgi?id=190480
<rdar://problem/45203484>
Reviewed by Joseph Pecoraro.
* UserInterface/Views/CallFrameTreeElement.css:
(.tree-outline:focus .item.call-frame.selected .status > .status-image):
(.tree-outline:matches(:focus, .force-focus) .item.call-frame.selected .status > .status-image): Deleted.
* UserInterface/Views/CanvasSidebarPanel.css:
(.sidebar > .panel.navigation.canvas > .content > .recording-content > .tree-outline:focus .item.processing.selected .subtitle > progress):
(.sidebar > .panel.navigation.canvas > .content > .recording-content > .tree-outline:matches(:focus, .force-focus) .item.processing.selected .subtitle > progress): Deleted.
* UserInterface/Views/DataGrid.css:
(body[dir=ltr] .data-grid:focus tr.selected td:not(:last-child)):
(body[dir=rtl] .data-grid:focus tr.selected td:not(:last-child)):
(.data-grid:focus tr.parent.selected td.disclosure::before):
(.data-grid:focus tr.parent.expanded.selected td.disclosure::before):
(.data-grid:focus tr.selected):
(.data-grid:focus tr.selected td .subtitle):
(body:not(.window-inactive, .window-docked-inactive) .data-grid:focus tr.editable.selected .cell-content > input):
(@media (prefers-dark-interface)):
(body[dir=ltr] .data-grid:matches(:focus, .force-focus) tr.selected td:not(:last-child)): Deleted.
(body[dir=rtl] .data-grid:matches(:focus, .force-focus) tr.selected td:not(:last-child)): Deleted.
(.data-grid:matches(:focus, .force-focus) tr.parent.selected td.disclosure::before): Deleted.
(.data-grid:matches(:focus, .force-focus) tr.parent.expanded.selected td.disclosure::before): Deleted.
(.data-grid:matches(:focus, .force-focus) tr.selected): Deleted.
(.data-grid:matches(:focus, .force-focus) tr.selected td .subtitle): Deleted.
(body:not(.window-inactive, .window-docked-inactive) .data-grid:matches(:focus, .force-focus) tr.editable.selected .cell-content > input): Deleted.
* UserInterface/Views/Main.css:
(:focus .selected .go-to-arrow):
(:focus .selected .go-to-arrow:active):
(:matches(:focus, .force-focus) .selected .go-to-arrow): Deleted.
(:matches(:focus, .force-focus) .selected .go-to-arrow:active): Deleted.
* UserInterface/Views/ProfileView.css:
(.profile > .data-grid:focus tr.selected td .location):
(.profile > .data-grid:matches(:focus, .force-focus) tr.selected td .location): Deleted.
* UserInterface/Views/RecordingActionTreeElement.css:
(.tree-outline:focus .item.action.selected:not(.initial-state, .invalid) > .icon):
(body:not(.window-inactive, .window-docked-inactive) .tree-outline:focus .item.action.selected > .titles .parameter.swizzled,):
(.tree-outline:matches(:focus, .force-focus) .item.action.selected:not(.initial-state, .invalid) > .icon): Deleted.
(body:not(.window-inactive, .window-docked-inactive) .tree-outline:matches(:focus, .force-focus) .item.action.selected > .titles .parameter.swizzled,): Deleted.
* UserInterface/Views/ScriptDetailsTimelineView.css:
(.tree-outline:focus .item.selected .alternate-subtitle):
(.tree-outline:matches(:focus, .force-focus) .item.selected .alternate-subtitle): Deleted.
* UserInterface/Views/ShaderProgramTreeElement.css:
(.tree-outline:focus .item.shader-program.selected .status > img):
(.tree-outline:matches(:focus, .force-focus) .item.shader-program.selected .status > img): Deleted.
* UserInterface/Views/ThreadTreeElement.css:
(.tree-outline:focus > .item.thread.selected .status-button.resume):
(.tree-outline:matches(:focus, .force-focus) > .item.thread.selected .status-button.resume): Deleted.
* UserInterface/Views/TimelineRecordBar.css:
(:focus .selected .timeline-record-bar > .segment):
(:focus .selected .timeline-record-bar > .segment.inactive):
(body[dir=ltr] :focus .selected .timeline-record-bar.has-inactive-segment > .segment:not(.inactive)):
(body[dir=rtl] :focus .selected .timeline-record-bar.has-inactive-segment > .segment:not(.inactive)):
(:matches(:focus, .force-focus) .selected .timeline-record-bar > .segment): Deleted.
(:matches(:focus, .force-focus) .selected .timeline-record-bar > .segment.inactive): Deleted.
(body[dir=ltr] :matches(:focus, .force-focus) .selected .timeline-record-bar.has-inactive-segment > .segment:not(.inactive)): Deleted.
(body[dir=rtl] :matches(:focus, .force-focus) .selected .timeline-record-bar.has-inactive-segment > .segment:not(.inactive)): Deleted.
* UserInterface/Views/TreeElementStatusButton.css:
(:focus .item.selected > .status > .status-button):
(:matches(:focus, .force-focus) .item.selected > .status > .status-button): Deleted.
* UserInterface/Views/TreeOutline.css:
(.tree-outline:focus .item.selected .disclosure-button):
(.tree-outline:focus .item.selected.expanded .disclosure-button):
(.tree-outline:focus .item.selected):
(.tree-outline:focus .item.selected .subtitle):
(.tree-outline:not(.large):focus .item.selected .status .indeterminate-progress-spinner):
(.tree-outline:matches(:focus, .force-focus) .item.selected .disclosure-button): Deleted.
(.tree-outline:matches(:focus, .force-focus) .item.selected.expanded .disclosure-button): Deleted.
(.tree-outline:matches(:focus, .force-focus) .item.selected): Deleted.
(.tree-outline:matches(:focus, .force-focus) .item.selected .subtitle): Deleted.
(.tree-outline:not(.large):matches(:focus, .force-focus) .item.selected .status .indeterminate-progress-spinner): Deleted.
2018-10-11 Devin Rousso <drousso@apple.com>
Web Inspector: detail view is not re-shown after sorting the Network table
https://bugs.webkit.org/show_bug.cgi?id=190330
<rdar://problem/45089607>
Reviewed by Matt Baker.
* UserInterface/Views/NetworkTableContentView.js:
(WI.NetworkTableContentView.prototype._restoreSelectedRow):
2018-10-10 Devin Rousso <drousso@apple.com>
Web Inspector: create special Network waterfall for media events
https://bugs.webkit.org/show_bug.cgi?id=189773
<rdar://problem/44626605>
Reviewed by Joseph Pecoraro.
* Localizations/en.lproj/localizedStrings.js:
* UserInterface/Main.html:
* UserInterface/Base/Utilities.js:
* UserInterface/Protocol/DOMObserver.js:
(WI.DOMObserver.prototype.didFireEvent): Added.
* UserInterface/Controllers/DOMManager.js:
(WI.DOMManager.prototype.didFireEvent): Added.
* UserInterface/Models/DOMNode.js:
(WI.DOMNode):
(WI.DOMNode.prototype.get domEvents): Added.
(WI.DOMNode.prototype.didFireEvent): Added.
(WI.DOMNode.prototype._addDOMEvent): Added.
* UserInterface/Views/NetworkTableContentView.js:
(WI.NetworkTableContentView):
(WI.NetworkTableContentView.prototype.shown):
(WI.NetworkTableContentView.prototype.hidden):
(WI.NetworkTableContentView.prototype.closed):
(WI.NetworkTableContentView.prototype.reset):
(WI.NetworkTableContentView.prototype.showRepresentedObject):
(WI.NetworkTableContentView.prototype.networkDetailViewClose): Added.
(WI.NetworkTableContentView.prototype.tableSortChanged):
(WI.NetworkTableContentView.prototype.tableSelectionDidChange):
(WI.NetworkTableContentView.prototype._populateNameCell):
(WI.NetworkTableContentView.prototype._populateWaterfallGraph.positionByStartOffset): Added.
(WI.NetworkTableContentView.prototype._populateWaterfallGraph.setWidthForDuration): Added.
(WI.NetworkTableContentView.prototype._populateWaterfallGraph.createDOMEventLine): Added.
(WI.NetworkTableContentView.prototype._populateWaterfallGraph.appendBlock):
(WI.NetworkTableContentView.prototype._populateWaterfallGraph):
(WI.NetworkTableContentView.prototype._processPendingEntries):
(WI.NetworkTableContentView.prototype._rowIndexForRepresentedObject): Added.
(WI.NetworkTableContentView.prototype._updateEntryForResource):
(WI.NetworkTableContentView.prototype._hideDetailView): Added.
(WI.NetworkTableContentView.prototype._showDetailView): Added.
(WI.NetworkTableContentView.prototype._positionDetailView): Added.
(WI.NetworkTableContentView.prototype._resourceTransferSizeDidChange):
(WI.NetworkTableContentView.prototype._tryLinkResourceToDOMNode):
(WI.NetworkTableContentView.prototype._handleNodeDidFireEvent): Added.
(WI.NetworkTableContentView.prototype._updateFilteredEntries):
(WI.NetworkTableContentView.prototype._typeFilterScopeBarSelectionChanged):
(WI.NetworkTableContentView.prototype._urlFilterDidChange):
(WI.NetworkTableContentView.prototype._restoreSelectedRow):
(WI.NetworkTableContentView.prototype._waterfallPopoverContent): Added.
(WI.NetworkTableContentView.prototype._waterfallPopoverContentForResourceEntry): Added.
(WI.NetworkTableContentView.prototype._waterfallPopoverContentForNodeEntry): Added.
(WI.NetworkTableContentView.prototype._handleResourceEntryMousedownWaterfall): Added.
(WI.NetworkTableContentView.prototype._handleNodeEntryMousedownWaterfall): Added.
(WI.NetworkTableContentView.prototype._handleMousedownWaterfall): Added.
(WI.NetworkTableContentView.prototype.networkResourceDetailViewClose): Deleted.
(WI.NetworkTableContentView.prototype._rowIndexForResource): Deleted.
(WI.NetworkTableContentView.prototype._hideResourceDetailView): Deleted.
(WI.NetworkTableContentView.prototype._showResourceDetailView): Deleted.
(WI.NetworkTableContentView.prototype._waterfallPopoverContentForResource): Deleted.
* UserInterface/Views/NetworkTableContentView.css:
(.content-view.network .network-table): Added.
(.network-table :not(.header) .cell.waterfall .waterfall-container > .dom-event): Added.
(.network-table :not(.header) .cell.waterfall .waterfall-container > .dom-activity): Added.
(.network-table :not(.header) .cell.waterfall .waterfall-container > .dom-activity.playing): Added.
* UserInterface/Views/NetworkDOMNodeDetailView.js: Added.
(WI.NetworkDOMNodeDetailView):
(WI.NetworkDOMNodeDetailView.prototype.initialLayout):
(WI.NetworkDOMNodeDetailView.prototype.showContentViewForIdentifier):
* UserInterface/Views/NetworkResourceDetailView.css:
(.content-view.resource-details):
(.network-resource-detail): Deleted.
(.network-resource-detail .navigation-bar): Deleted.
(.network-resource-detail .item.close > .glyph): Deleted.
(.network-resource-detail .item.close > .glyph:hover): Deleted.
(.network-resource-detail .item.close > .glyph:active): Deleted.
(.network .network-resource-detail .navigation-bar .item.radio.button.text-only): Deleted.
(.network .network-resource-detail .navigation-bar .item.radio.button.text-only.selected): Deleted.
(.network-resource-detail > .content-browser): Deleted.
(@media (prefers-dark-interface)): Deleted.
* UserInterface/Views/NetworkResourceDetailView.js:
(WI.NetworkResourceDetailView):
(WI.NetworkResourceDetailView.prototype.shown):
(WI.NetworkResourceDetailView.prototype.headersContentViewGoToRequestData):
(WI.NetworkResourceDetailView.prototype.sizesContentViewGoToHeaders):
(WI.NetworkResourceDetailView.prototype.sizesContentViewGoToRequestBody):
(WI.NetworkResourceDetailView.prototype.sizesContentViewGoToResponseBody):
(WI.NetworkResourceDetailView.prototype.initialLayout):
(WI.NetworkResourceDetailView.prototype.showContentViewForIdentifier):
(WI.NetworkResourceDetailView.prototype.get resource): Deleted.
(WI.NetworkResourceDetailView.prototype.hidden): Deleted.
(WI.NetworkResourceDetailView.prototype.dispose): Deleted.
(WI.NetworkResourceDetailView.prototype.willShowWithCookie): Deleted.
(WI.NetworkResourceDetailView.prototype.initialLayout): Deleted.
(WI.NetworkResourceDetailView.prototype._showPreferredContentView): Deleted.
(WI.NetworkResourceDetailView.prototype._showContentViewForNavigationItem): Deleted.
(WI.NetworkResourceDetailView.prototype._navigationItemSelected): Deleted.
(WI.NetworkResourceDetailView.prototype._handleCloseButton): Deleted.
* UserInterface/Views/NetworkDetailView.js: Added.
(WI.NetworkDetailView):
(WI.NetworkDetailView.prototype.get representedObject):
(WI.NetworkDetailView.prototype.shown):
(WI.NetworkDetailView.prototype.hidden):
(WI.NetworkDetailView.prototype.dispose):
(WI.NetworkDetailView.prototype.willShowWithCookie):
(WI.NetworkDetailView.prototype.initialLayout):
(WI.NetworkDetailView.prototype.createDetailNavigationItem):
(WI.NetworkDetailView.prototype.detailNavigationItemForIdentifier):
(WI.NetworkDetailView.prototype.showContentViewForIdentifier):
(WI.NetworkDetailView.prototype._showPreferredContentView):
(WI.NetworkDetailView.prototype._navigationItemSelected):
(WI.NetworkDetailView.prototype._handleCloseButton):
* UserInterface/Views/NetworkDetailView.css: Added.
(.network-detail):
(.network-detail .navigation-bar):
(.network-detail .item.close > .glyph):
(.network-detail .item.close > .glyph:hover):
(.network-detail .item.close > .glyph:active):
(.network .network-detail .navigation-bar .item.radio.button.text-only):
(.network .network-detail .navigation-bar .item.radio.button.text-only.selected):
(.network-detail > .content-browser):
(@media (prefers-dark-interface)):
Create base class for detail views shown in the Network tab.
* UserInterface/Views/DOMNodeEventsContentView.js: Added.
(WI.DOMNodeEventsContentView):
(WI.DOMNodeEventsContentView.prototype.initialLayout):
(WI.DOMNodeEventsContentView.prototype.closed):
(WI.DOMNodeEventsContentView.prototype._handleDOMNodeDidFireEvent):
* UserInterface/Views/DOMNodeEventsContentView.css: Added.
(.dom-node-details.dom-events):
* UserInterface/Views/DOMEventsBreakdownView.js: Added.
(WI.DOMEventsBreakdownView):
(WI.DOMEventsBreakdownView.prototype.addEvent):
(WI.DOMEventsBreakdownView.prototype.initialLayout):
(WI.DOMEventsBreakdownView.prototype._populateTable.percentOfTotalTime):
(WI.DOMEventsBreakdownView.prototype._populateTable):
* UserInterface/Views/DOMEventsBreakdownView.css: Added.
(.waterfall-popover-content .dom-events-breakdown):
(.dom-events-breakdown):
(.dom-events-breakdown table):
(.dom-events-breakdown tr > :matches(th, td)):
(.dom-events-breakdown tbody > tr):
(.dom-events-breakdown .graph):
(.dom-events-breakdown .graph > :matches(.point, .area)):
(.dom-events-breakdown .graph > .point):
(.dom-events-breakdown .time):
* UserInterface/Views/ResourceTimingBreakdownView.css:
(.resource-timing-breakdown > table > tr.header:not(.total-row) > td): Added.
(.popover.waterfall-popover): Deleted.
2018-10-10 Devin Rousso <drousso@apple.com>
Web Inspector: REGRESSION(r236853): Uncaught Exception: undefined is not an object (evaluating 'entry.resource')
https://bugs.webkit.org/show_bug.cgi?id=190442
Reviewed by Joseph Pecoraro.
* UserInterface/Views/NetworkTableContentView.js:
(WI.NetworkTableContentView.prototype.reset):
It's unnecessary to deselect rows in the `WI.Table` when we're about to remove them.
2018-10-10 Devin Rousso <drousso@apple.com>
Web Inspector: REGRESSION: selection in network table is lost when new entries are added
https://bugs.webkit.org/show_bug.cgi?id=190362
Reviewed by Matt Baker.
The `_selectedRows` list is cleared each time `reloadData` is called, meaning that
`WI.Table` expects its "owner" to restore the selection (since it doesn't know how). As a
result, `WI.NetworkTableContentView` needs to call `selectRow` _after_ `reloadData` is
called, not before.
* UserInterface/Views/NetworkTableContentView.js:
(WI.NetworkTableContentView.prototype.tableSortChanged):
(WI.NetworkTableContentView.prototype._populateNameCell):
(WI.NetworkTableContentView.prototype._processPendingEntries):
(WI.NetworkTableContentView.prototype._insertResourceAndReloadTable):
(WI.NetworkTableContentView.prototype._updateSort): Added.
(WI.NetworkTableContentView.prototype._updateFilteredEntries):
(WI.NetworkTableContentView.prototype._reloadTable): Added.
(WI.NetworkTableContentView.prototype._resetFilters):
(WI.NetworkTableContentView.prototype._typeFilterScopeBarSelectionChanged):
(WI.NetworkTableContentView.prototype._handleGroupByDOMNodeCheckedDidChange):
(WI.NetworkTableContentView.prototype._urlFilterDidChange):
(WI.NetworkTableContentView.prototype._updateSortAndFilteredEntries): Deleted.
* UserInterface/Views/Table.js:
(WI.Table.prototype.reloadData):
Ensure that the `_selectedRowIndex` is also reset.
2018-10-10 Devin Rousso <drousso@apple.com>
Web Inspector: notify the frontend when a canvas has started recording via console.record
https://bugs.webkit.org/show_bug.cgi?id=190306
Reviewed by Brian Burg.
* UserInterface/Protocol/CanvasObserver.js:
(WI.CanvasObserver.prototype.recordingStarted): Added.
* UserInterface/Protocol/CanvasManager.js:
(WI.CanvasManager.prototype.recordingStarted): Added.
* UserInterface/Models/Canvas.js:
(WI.Canvas.prototype.startRecording):
(WI.Canvas.prototype.recordingStarted): Added.
(WI.Canvas.prototype.recordingFinished):
2018-10-10 Devin Rousso <drousso@apple.com>
Web Inspector: indent all network entries when "Group by Node" is checked
https://bugs.webkit.org/show_bug.cgi?id=190388
Reviewed by Timothy Hatcher.
* UserInterface/Views/NetworkTableContentView.js:
(WI.NetworkTableContentView.prototype._populateNameCell):
(WI.NetworkTableContentView.prototype._handleGroupByDOMNodeCheckedDidChange):
* UserInterface/Views/NetworkTableContentView.css:
(.network-table.grouped .data-container .cell.name): Added.
(.network-table.grouped .data-container .cell:not(.parent).name): Added.
(.network-table.grouped .data-container .cell.child.name): Added.
(.network-table .cell.grouped-by-node.name): Deleted.
(body[dir=ltr] .network-table .cell.grouped-by-node.name): Deleted.
(body[dir=rtl] .network-table .cell.grouped-by-node.name): Deleted.
Apply a padding to all nodes when the `WI.Table` is grouped.
2018-10-09 Devin Rousso <drousso@apple.com>
Web Inspector: show redirect requests in Network and Timelines tabs
https://bugs.webkit.org/show_bug.cgi?id=150005
<rdar://problem/5378164>
Reviewed by Joseph Pecoraro.
* Localizations/en.lproj/localizedStrings.js:
* UserInterface/Views/Variables.css:
* UserInterface/Main.html:
* UserInterface/Test.html:
* UserInterface/Controllers/NetworkManager.js:
(WI.NetworkManager.prototype.resourceRequestWillBeSent):
* UserInterface/Models/Resource.js:
(WI.Resource):
(WI.Resource.prototype.get redirects): Added.
(WI.Resource.prototype.get lastRedirectReceivedTimestamp):
(WI.Resource.prototype.updateForRedirectResponse):
Save each redirect in an array instead of just remembering the last timestamp.
* UserInterface/Models/ResourceTimingData.js:
(WI.ResourceTimingData):
(WI.ResourceTimingData.fromPayload.offsetToTimestamp):
(WI.ResourceTimingData.fromPayload):
(WI.ResourceTimingData.prototype.get redirectStart): Added.
(WI.ResourceTimingData.prototype.get redirectEnd): Added.
(WI.ResourceTimingData.prototype.get fetchStart): Added.
Add missing fields for `Network.types.ResourceTiming`.
* UserInterface/Models/Redirect.js: Added.
(WI.Redirect):
(WI.Redirect.prototype.get url):
(WI.Redirect.prototype.get requestMethod):
(WI.Redirect.prototype.get requestHeaders):
(WI.Redirect.prototype.get responseStatusCode):
(WI.Redirect.prototype.get responseStatusText):
(WI.Redirect.prototype.get responseHeaders):
(WI.Redirect.prototype.get timestamp):
(WI.Redirect.prototype.get urlComponents):
* UserInterface/Views/ResourceHeadersContentView.js:
(WI.ResourceHeadersContentView):
(WI.ResourceHeadersContentView.prototype.initialLayout):
(WI.ResourceHeadersContentView.prototype.layout):
(WI.ResourceHeadersContentView.prototype._refreshRedirectHeadersSections): Added.
(WI.ResourceHeadersContentView.prototype._resourceRequestHeadersDidChange):
* UserInterface/Views/ResourceHeadersContentView.css:
(body[dir] .resource-headers > section.summary > .details): Added.
(body[dir] .resource-headers > section:matches(.redirect, .headers) > .details): Added.
(.resource-headers .details .key):
(.resource-headers .summary .key):
(body[dir] .resource-headers > section > .details): Deleted.
(body[dir] .resource-headers > section.headers > .details): Deleted.
(.resource-headers .value): Deleted.
Add a request/response header section for each redirect.
* UserInterface/Views/NetworkTableContentView.js:
(WI.NetworkTableContentView.prototype._populateWaterfallGraph.appendBlock):
(WI.NetworkTableContentView.prototype._populateWaterfallGraph):
(WI.NetworkTableContentView.prototype._checkURLFilterAgainstResource):
(WI.NetworkTableContentView.prototype._waterfallPopoverContentForResource):
* UserInterface/Views/NetworkTableContentView.css:
(.waterfall .block.redirect): Added.
(.waterfall .block.queue):
* UserInterface/Views/ResourceTimelineDataGridNode.js:
(WI.ResourceTimelineDataGridNode.prototype._mouseoverRecordBar):
* UserInterface/Views/ResourceTimingBreakdownView.js:
(WI.ResourceTimingBreakdownView.prototype.initialLayout):
Add timeline/waterfall entries for total redirect time.
2018-10-09 Devin Rousso <drousso@apple.com>
Web Inspector: Canvas Tab: grayed out Record button in navigator is nearly invisible
https://bugs.webkit.org/show_bug.cgi?id=190365
<rdar://problem/45097739>
Reviewed by Brian Burg.
* UserInterface/Views/CanvasSidebarPanel.css:
(@media (prefers-dark-interface)): Added.
(.sidebar > .panel.navigation.canvas > .navigation-bar > .item.record-start-stop.disabled): Added.
2018-10-09 Devin Rousso <drousso@apple.com>
Web Inspector: REGRESSION: fix canvas test failures after r236952 and r236954
https://bugs.webkit.org/show_bug.cgi?id=190403
Reviewed by Joseph Pecoraro.
* UserInterface/Controllers/CanvasManager.js:
(WI.CanvasManager.prototype._removeCanvas):
Clear the `shaderProgramCollection` when a `WI.Canvas` is removed so that a remove event is
fired for each `WI.ShaderProgram`.
2018-10-08 Justin Fan <justin_fan@apple.com>
WebGPU: Rename old WebGPU prototype to WebMetal
https://bugs.webkit.org/show_bug.cgi?id=190325
<rdar://problem/44990443>
Reviewed by Dean Jackson.
Rename WebGPU prototype files to WebMetal in preparation for implementing the new (Oct 2018) WebGPU interface.
For WebInspector, add WebMetal to valid enums for canvas types.
* UserInterface/Models/Canvas.js:
(WI.Canvas.fromPayload):
(WI.Canvas.displayNameForContextType):
2018-10-08 Devin Rousso <drousso@apple.com>
Web Inspector: Dark Mode: canvas recording glyph is black on gray
https://bugs.webkit.org/show_bug.cgi?id=190367
<rdar://problem/45099304>
Reviewed by Joseph Pecoraro.
* UserInterface/Views/CanvasOverviewContentView.css:
(.content-view.canvas-overview .content-view.canvas > footer .view-recording): Added.
(.content-view.canvas-overview .content-view.canvas > footer > .recordings::before): Deleted.
2018-10-08 Devin Rousso <drousso@apple.com>
Web Inspector: allow multiple canvases to be recorded at the same time
https://bugs.webkit.org/show_bug.cgi?id=190305
Reviewed by Brian Burg.
Moved the logic for maintaining whether a canvas is actively recording from
`WI.CanvasManager` to `WI.Canvas`, meaning that each canvas can now record independently of
every other canvas in the page. If multiple recordings are all finished simultaneously, only
show the first one to be recieved by the frontend.
* UserInterface/Controllers/CanvasManager.js:
(WI.CanvasManager):
(WI.CanvasManager.prototype.recordingProgress):
(WI.CanvasManager.prototype.recordingFinished):
(WI.CanvasManager.prototype.programCreated):
(WI.CanvasManager.prototype.programDeleted):
(WI.CanvasManager.prototype._removeCanvas):
(WI.CanvasManager.prototype._mainResourceDidChange):
(WI.CanvasManager.prototype.get recordingCanvas): Deleted.
(WI.CanvasManager.prototype.startRecording): Deleted.
(WI.CanvasManager.prototype.stopRecording): Deleted.
(WI.CanvasManager.prototype._dispatchShaderProgramRemoved): Deleted.
* UserInterface/Models/Canvas.js:
(WI.Canvas.prototype.get recordingFrameCount): Added.
(WI.Canvas.prototype.get recordingBufferUsed): Added.
(WI.Canvas.prototype.get recordingActive): Added.
(WI.Canvas.prototype.get isRecording): Deleted.
(WI.Canvas.prototype.startRecording): Added.
(WI.Canvas.prototype.stopRecording): Added.
(WI.Canvas.prototype.recordingProgress): Added.
(WI.Canvas.prototype.recordingFinished): Added.
* UserInterface/Views/CanvasTabContentView.js:
(WI.CanvasTabContentView.prototype.attached):
(WI.CanvasTabContentView.prototype.detached):
(WI.CanvasTabContentView.prototype._recordingImportedOrStopped):
(WI.CanvasTabContentView.prototype._handleSpace):
(WI.CanvasTabContentView):
* UserInterface/Views/CanvasOverviewContentView.css:
(.content-view.canvas-overview .content-view.canvas.recording-active): Added.
(.content-view.canvas-overview .content-view.canvas.recording-active > header): Added.
(.content-view.canvas-overview .content-view.canvas.recording-active > header > .titles > .title): Added.
(.content-view.canvas-overview .content-view.canvas.recording-active > header > .titles > .subtitle): Added.
(.content-view.canvas-overview .content-view.canvas.recording-active > header > .navigation-bar > .item): Added.
(.content-view.canvas-overview .content-view.canvas:matches(:hover, .recording-active) > header > .navigation-bar): Added.
(.content-view.canvas-overview .content-view.canvas:not(.recording-active) > header > .navigation-bar > .item.record-start-stop.disabled): Added.
(.content-view.canvas-overview .content-view.canvas:not(.recording-active) > header > .navigation-bar > .item.record-start-stop:not(.disabled):hover): Added.
(.content-view.canvas-overview .content-view.canvas:not(.recording-active) > header > .navigation-bar > .item.record-start-stop:not(.disabled):active): Added.
(.content-view.canvas-overview .content-view.canvas.recording-active > .progress-vie): Added.
(.content-view.canvas-overview .content-view.canvas.recording-active > .preview): Added.
(.content-view.canvas-overview .content-view.canvas.recording-active): Added.
(.content-view.canvas-overview .content-view.canvas.recording-active > header): Added.
(.content-view.canvas-overview .content-view.canvas.recording-active > header > .titles > .subtitle): Added.
(.content-view.canvas-overview .content-view.canvas.is-recording): Deleted.
(.content-view.canvas-overview .content-view.canvas.is-recording > header): Deleted.
(.content-view.canvas-overview .content-view.canvas.is-recording > header > .titles > .title): Deleted.
(.content-view.canvas-overview .content-view.canvas.is-recording > header > .titles > .subtitle): Deleted.
(.content-view.canvas-overview .content-view.canvas.is-recording > header > .navigation-bar > .item): Deleted.
(.content-view.canvas-overview .content-view.canvas:matches(:hover, .is-recording) > header > .navigation-bar): Deleted.
(.content-view.canvas-overview .content-view.canvas:not(.is-recording) > header > .navigation-bar > .item.record-start-stop.disabled): Deleted.
(.content-view.canvas-overview .content-view.canvas:not(.is-recording) > header > .navigation-bar > .item.record-start-stop:not(.disabled):hover): Deleted.
(.content-view.canvas-overview .content-view.canvas:not(.is-recording) > header > .navigation-bar > .item.record-start-stop:not(.disabled):active): Deleted.
(.content-view.canvas-overview .content-view.canvas.is-recording > .progress-vie): Deleted.
(.content-view.canvas-overview .content-view.canvas.is-recording > .preview): Deleted.
(.content-view.canvas-overview .content-view.canvas.is-recording): Deleted.
(.content-view.canvas-overview .content-view.canvas.is-recording > header): Deleted.
(.content-view.canvas-overview .content-view.canvas.is-recording > header > .titles > .subtitle): Deleted.
* UserInterface/Views/CanvasContentView.js:
(WI.CanvasContentView.prototype.attached):
(WI.CanvasContentView.prototype.detached):
(WI.CanvasContentView.prototype._toggleRecording):
(WI.CanvasContentView.prototype._recordingProgress):
(WI.CanvasContentView.prototype._recordingStopped):
(WI.CanvasContentView.prototype._shaderProgramAdded):
(WI.CanvasContentView.prototype._shaderProgramRemoved):
(WI.CanvasContentView.prototype._updateRecordNavigationItem):
(WI.CanvasContentView.prototype._updateProgressView):
* UserInterface/Views/CanvasSidebarPanel.js:
(WI.CanvasSidebarPanel):
(WI.CanvasSidebarPanel.prototype.set canvas):
(WI.CanvasSidebarPanel.prototype._toggleRecording):
(WI.CanvasSidebarPanel.prototype._updateRecordNavigationItem):
* UserInterface/Views/CanvasTreeElement.js:
(WI.CanvasTreeElement):
(WI.CanvasTreeElement.prototype._updateStatus):
2018-10-08 Devin Rousso <drousso@apple.com>
Web Inspector: replace Range.svg icon
https://bugs.webkit.org/show_bug.cgi?id=190372
Reviewed by Joseph Pecoraro.
* UserInterface/Images/Range.svg:
* UserInterface/Images/RangeLarge.svg: Added.
* UserInterface/Models/Resource.js:
(WI.Resource.classNameForResource): Added.
Create a static function for specializing the `className` of `WI.Resource` objects.
* UserInterface/Views/NetworkTableContentView.js:
(WI.NetworkTableContentView.prototype._populateNameCell):
* UserInterface/Views/ResourceTreeElement.js:
(WI.ResourceTreeElement):
* UserInterface/Views/ResourceIcons.css:
(.resource-icon.resource-type-ping .icon, .resource-icon.resource-type-beacon .icon, .large .resource-icon.resource-type-ping .icon, .large .resource-icon.resource-type-beacon .icon):
(.resource-icon.resource-type-range .icon):
(.large .resource-icon.resource-type-range .icon): Added.
Drive-by: added `.large` versions of `ping` and `beacon` icons for the
`WI.OpenResourceDialog` elements.
2018-10-08 Devin Rousso <drousso@apple.com>
Web Inspector: group media network entries by the node that triggered the request
https://bugs.webkit.org/show_bug.cgi?id=189606
<rdar://problem/44438527>
Reviewed by Brian Burg.
Introduces a `WI.NavigationItem` for changing whether network entries are grouped by the
node that initiated the load (if applicable). When grouped by node, a tree-like layout of
the table cells (including expand/collapse) is used for resources that share the same
initiator node. The values for the node's cell are based on it's initated resources.
* Localizations/en.lproj/localizedStrings.js:
* UserInterface/Base/Setting.js:
* UserInterface/Controllers/DOMManager.js:
(WI.DOMManager):
(WI.DOMManager.prototype._mainResourceDidChange): Added.
Whenever the frame navigates, re-request the document so that `NetworkAgent` is able to send
valid `nodeId` for each request's `initiatorNode`. This means that the document should
always be available.
* UserInterface/Views/NetworkTableContentView.js:
(WI.NetworkTableContentView):
(WI.NetworkTableContentView.prototype.get filterNavigationItems):
(WI.NetworkTableContentView.prototype.closed):
(WI.NetworkTableContentView.prototype.reset):
(WI.NetworkTableContentView.prototype.tableSortChanged):
(WI.NetworkTableContentView.prototype.tableSelectedRowChanged):
(WI.NetworkTableContentView.prototype.tablePopulateCell):
(WI.NetworkTableContentView.prototype._populateNameCell.createIconElement): Added.
(WI.NetworkTableContentView.prototype._populateNameCell):
(WI.NetworkTableContentView.prototype._populateDomainCell.createIconAndText): Added.
(WI.NetworkTableContentView.prototype._populateDomainCell):
(WI.NetworkTableContentView.prototype._populateInitiatorCell):
(WI.NetworkTableContentView.prototype._populateTransferSizeCell):
(WI.NetworkTableContentView.prototype._generateSortComparator):
(WI.NetworkTableContentView.prototype._processPendingEntries):
(WI.NetworkTableContentView.prototype._updateEntryForResource.updateExistingEntry): Added.
(WI.NetworkTableContentView.prototype._updateEntryForResource):
(WI.NetworkTableContentView.prototype._insertResourceAndReloadTable):
(WI.NetworkTableContentView.prototype._entryForDOMNode): Added.
(WI.NetworkTableContentView.prototype._tryLinkResourceToDOMNode): Added.
(WI.NetworkTableContentView.prototype._uniqueValuesForDOMNodeEntry): Added.
(WI.NetworkTableContentView.prototype._updateFilteredEntries):
(WI.NetworkTableContentView.prototype._handleGroupByDOMNodeCheckedDidChange): Added.
* UserInterface/Views/NetworkTableContentView.css:
(.network-table .cell.dom-node.name .icon): Added.
(.network-table .cell.dom-node.name .disclosure): Added.
(body[dir=rtl] .network-table .cell.dom-node.name .disclosure): Added.
(.network-table:focus li.selected .cell.dom-node.name .disclosure): Added.
(.network-table .cell.dom-node.name .disclosure.expanded): Added.
(.network-table:focus li.selected .cell.node.name .disclosure.expanded): Added.
(.network-table .cell.grouped-by-node.name): Added.
(body[dir=ltr] .network-table .cell.grouped-by-node.name): Added.
(body[dir=rtl] .network-table .cell.grouped-by-node.name): Added.
(.network-table li:not(.selected) .cell:matches(.cache-type, .multiple)): Added.
(.network-table li.selected .cell.domain > .lock): Added.
(.network-table .cache-type): Deleted.
When two resources are added that share the same `initiatorNode`, insert a node entry into
the `WI.Table` before the first resource entry for that node (based on the current sort).
This node entry is added after the resource entries are filtered, so they won't appear in
the default entries list.
* UserInterface/Models/Resource.js:
(WI.Resource):
(WI.Resource.prototype.initiatorNode): Added.
(WI.Resource.prototype.requestedByteRange): Added.
* UserInterface/Controllers/NetworkManager.js:
(WI.NetworkManager.prototype.resourceRequestWillBeSent):
(WI.NetworkManager.prototype.resourceRequestWasServedFromMemoryCache):
(WI.NetworkManager.prototype._initiatorNodeFromPayload): Added.
* UserInterface/Images/Range.svg: Added.
* UserInterface/Views/ResourceIcons.css:
(.resource-icon.resource-type-range .icon): Added.
2018-10-08 Devin Rousso <drousso@apple.com>
Web Inspector: clicking initiator link in Network Tab table doesn't automatically switch to Preview section
https://bugs.webkit.org/show_bug.cgi?id=190286
Reviewed by Brian Burg.
* UserInterface/Views/NetworkResourceDetailView.js:
(WI.NetworkResourceDetailView.prototype.shown):
(WI.NetworkResourceDetailView.prototype._showContentViewForNavigationItem):
2018-10-08 Devin Rousso <drousso@apple.com>
Web Inspector: be more specific as to what types of WI.Collection are allowed for the Resources tab
https://bugs.webkit.org/show_bug.cgi?id=190304
Reviewed by Brian Burg.
* UserInterface/Base/Main.js:
(WI.tabContentViewClassForRepresentedObject):
* UserInterface/Views/ResourcesTabContentView.js:
(WI.ResourcesTabContentView.prototype.canShowRepresentedObject):
2018-10-08 Devin Rousso <drousso@apple.com>
Web Inspector: Open Resource Dialog should show path to resource (to disambiguate resources with same name)
https://bugs.webkit.org/show_bug.cgi?id=178153
<rdar://problem/34925686>
Reviewed by Brian Burg.
* UserInterface/Views/OpenResourceDialog.js:
(WI.OpenResourceDialog.prototype._populateResourceTreeOutline):
* UserInterface/Views/OpenResourceDialog.css:
(.open-resource-dialog .tree-outline.large .item .titles[data-path]): Added.
(.open-resource-dialog .tree-outline.large .item .titles[data-path]::after): Added.
(.open-resource-dialog .tree-outline.large .item .titles .title): Added.
(.open-resource-dialog .tree-outline.large .item .titles .subtitle): Added.
(.open-resource-dialog .tree-outline.large .item .titles): Deleted.
2018-10-05 Devin Rousso <drousso@apple.com>
Web Inspector: add WebVTT MIME/file type mappings to the frontend
https://bugs.webkit.org/show_bug.cgi?id=190288
Reviewed by Brian Burg.
* UserInterface/Base/MIMETypeUtilities.js:
(WI.mimeTypeForFileExtension):
(WI.fileExtensionForMIMEType):
* UserInterface/Views/NetworkTableContentView.js:
(WI.NetworkTableContentView.displayNameForResource):
Also attempt to use the mime-type-to-extension when the `WI.Resource` is of type `Other`.
2018-10-05 Devin Rousso <drousso@apple.com>
Web Inspector: refactor constructor of WI.Resource
https://bugs.webkit.org/show_bug.cgi?id=190318
Reviewed by Joseph Pecoraro.
Reworked constructor of `WI.Resource` to use an optional object for any non-essential arguments.
Drive-by: moved some simple getters to the top of the class to save space.
* UserInterface/Models/Resource.js:
(WI.Resource):
* UserInterface/Models/SourceMapResource.js:
(WI.SourceMapResource):
* UserInterface/Models/WebSocketResource.js:
(WI.WebSocketResource):
* UserInterface/Controllers/NetworkManager.js:
(WI.NetworkManager.prototype.frameDidNavigate):
(WI.NetworkManager.prototype.resourceRequestWillBeSent):
(WI.NetworkManager.prototype.webSocketWillSendHandshakeRequest):
(WI.NetworkManager.prototype.resourceRequestWasServedFromMemoryCache):
(WI.NetworkManager.prototype.resourceRequestDidReceiveResponse):
(WI.NetworkManager.prototype._addNewResourceToFrameOrTarget):
(WI.NetworkManager.prototype._createFrame):
(WI.NetworkManager.prototype._createResource):
2018-10-05 Devin Rousso <drousso@apple.com>
Web Inspector: use iframe's name attribute for FrameTreeElement
https://bugs.webkit.org/show_bug.cgi?id=190275
Reviewed by Joseph Pecoraro.
* UserInterface/Views/FrameTreeElement.js:
(WI.FrameTreeElement.prototype.get mainTitleText): Added.
* UserInterface/Views/ResourceTreeElement.js:
(WI.ResourceTreeElement.prototype.get mainTitleText): Added.
(WI.ResourceTreeElement.prototype._updateTitles):
Provide a way for subclasses to override what is used for the `mainTitle`.
* UserInterface/Views/QuickConsole.js:
(WI.QuickConsole.prototype._createExecutionContextPathComponentFromFrame):
Update the execution context picker to match what `WI.FrameTreeElement`s show.
2018-10-04 Matt Baker <mattbaker@apple.com>
Web Inspector: REGRESSION (r236766): Storage tab no longer updates after main frame navigation
https://bugs.webkit.org/show_bug.cgi?id=190298
Reviewed by Joseph Pecoraro.
Handle Cleared events from storage managers separately, so that successive
events during page load does not cause the Storage tab to destroy newly
created tree elements.
* UserInterface/Views/StorageSidebarPanel.js:
(WI.StorageSidebarPanel):
(WI.StorageSidebarPanel.prototype._closeContentViewForTreeElement):
(WI.StorageSidebarPanel.prototype._domStorageCleared):
(WI.StorageSidebarPanel.prototype._applicationCacheCleared):
(WI.StorageSidebarPanel.prototype._indexedDatabaseCleared):
(WI.StorageSidebarPanel.prototype._databaseCleared):
(WI.StorageSidebarPanel.prototype._storageCleared): Deleted.
2018-10-04 Matt Baker <mattbaker@apple.com>
Web Inspector: Table should support multiple selection and Cmd-click behavior
https://bugs.webkit.org/show_bug.cgi?id=189705
<rdar://problem/44571170>
Reviewed by Devin Rousso.
Add multiple row selection to Table, with new methods for programmatic
selection (deselectRow, deselectAll), and Command-click support for
selecting/deselecting Table rows.
* UserInterface/Base/IndexSet.js: Added.
(WI.IndexSet):
(WI.IndexSet.prototype.get size):
(WI.IndexSet.prototype.get firstIndex):
(WI.IndexSet.prototype.get lastIndex):
(WI.IndexSet.prototype.add):
(WI.IndexSet.prototype.delete):
(WI.IndexSet.prototype.has):
(WI.IndexSet.prototype.clear):
(WI.IndexSet.prototype.indexGreaterThan):
(WI.IndexSet.prototype.indexLessThan):
(WI.IndexSet.prototype.Symbol.iterator):
(WI.IndexSet.prototype._indexClosestTo):
(WI.IndexSet.prototype._validateIndex):
Helper container for managing an ordered sequence of unique positive
integers, with set semantics, backed by a sorted array. Used by Table,
and eventually by TreeOutline.
* UserInterface/Main.html:
* UserInterface/Test.html:
* UserInterface/Test/Test.js:
New files and stubs to make Table layout tests possible.
* UserInterface/Views/NetworkTableContentView.js:
(WI.NetworkTableContentView.prototype.reset):
(WI.NetworkTableContentView.prototype.showRepresentedObject):
(WI.NetworkTableContentView.prototype.networkResourceDetailViewClose):
(WI.NetworkTableContentView.prototype.tableSelectionDidChange):
(WI.NetworkTableContentView.prototype._restoreSelectedRow):
(WI.NetworkTableContentView.prototype.tableSelectedRowChanged): Deleted.
Replace uses of `clearSelectedRow` with `deselectAll`, and updated
selection changed delegate.
* UserInterface/Views/Table.css:
(.table > .data-container > .data-list > li):
(.table > .data-container > .data-list > li.selected):
(@media (prefers-dark-interface)):
(.table,): Deleted.
Removed styles that are no longer needed after https://webkit.org/b/189766,
and provide a visual separation between adjacent selected rows.
* UserInterface/Views/Table.js:
(WI.Table):
(WI.Table.prototype.get selectedRows):
(WI.Table.prototype.get allowsMultipleSelection):
(WI.Table.prototype.set allowsMultipleSelection):
(WI.Table.prototype.reloadData):
(WI.Table.prototype.selectRow):
(WI.Table.prototype.deselectRow):
(WI.Table.prototype.deselectAll):
(WI.Table.prototype._getOrCreateRow):
(WI.Table.prototype._handleMouseDown):
(WI.Table.prototype._deselectAllAndSelect):
(WI.Table.prototype._isRowSelected):
(WI.Table.prototype._notifySelectionDidChange):
(WI.Table.prototype.clearSelectedRow): Deleted.
Table now tracks selected rows using an IndexSet. selectRow accepts an
optional parameter, `extendSelection`, for adding rows to the selection.
_selectedRowIndex is now used to track the most recently selected row.
This will be the only selected row unless multiple selection is enabled,
in which case it is the row that has the "focus", for purposes of selecting
a new row using the up or down arrow keys.
2018-10-04 Devin Rousso <drousso@apple.com>
Web Inspector: REGRESSION(r236540): Uncaught Exception: TypeError: pauseReasonBreakpointTreeElement.removeStatusImage is not a function.
https://bugs.webkit.org/show_bug.cgi?id=190230
Reviewed by Matt Baker.
* UserInterface/Views/DebuggerSidebarPanel.js:
(WI.DebuggerSidebarPanel._removeBreakpoint):
Leverage existing `status` getter/setter for creating/removing the breakpoint icon element.
* UserInterface/Views/BreakpointTreeElement.js:
(WI.BreakpointTreeElement):
(WI.BreakpointTreeElement.prototype.populateContextMenu):
(WI.BreakpointTreeElement.prototype._updateStatus):
(WI.BreakpointTreeElement.prototype.removeStatusImage): Deleted.
* UserInterface/Views/DOMBreakpointTreeElement.js:
(WI.DOMBreakpointTreeElement):
(WI.DOMBreakpointTreeElement.prototype.onattach):
(WI.DOMBreakpointTreeElement.prototype.ondetach):
(WI.DOMBreakpointTreeElement.prototype._updateStatus):
* UserInterface/Views/EventBreakpointTreeElement.js:
(WI.EventBreakpointTreeElement):
(WI.EventBreakpointTreeElement.prototype.onattach):
(WI.EventBreakpointTreeElement.prototype.ondetach):
(WI.EventBreakpointTreeElement.prototype._updateStatus):
* UserInterface/Views/XHRBreakpointTreeElement.js:
(WI.XHRBreakpointTreeElement):
(WI.XHRBreakpointTreeElement.prototype.onattach):
(WI.XHRBreakpointTreeElement.prototype.ondetach):
(WI.XHRBreakpointTreeElement.prototype._updateStatus):
2018-10-04 Dan Bernstein <mitz@apple.com>
WebInspectorUI part of [Xcode] Update some build settings as recommended by Xcode 10
https://bugs.webkit.org/show_bug.cgi?id=190250
Reviewed by Andy Estes.
* Configurations/Base.xcconfig: Enabled CLANG_WARN_COMMA, CLANG_WARN_INFINITE_RECURSION,
CLANG_WARN_SUSPICIOUS_MOVE, CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS, and
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF.
* WebInspectorUI.xcodeproj/project.pbxproj: Let Xcode update LastUpgradeCheck.
2018-10-04 Devin Rousso <drousso@apple.com>
Web Inspector: merge ProbeManager into DebuggerManager
https://bugs.webkit.org/show_bug.cgi?id=190225
Reviewed by Joseph Pecoraro.
* UserInterface/Main.html:
* UserInterface/Base/Main.js:
(WI.loaded):
* UserInterface/Test.html:
* UserInterface/Test/Test.js:
(WI.loaded):
* UserInterface/Controllers/DebuggerManager.js:
(WI.DebuggerManager.prototype.get probeSets): Added.
(WI.DebuggerManager.prototype.probeForIdentifier): Added.
(WI.DebuggerManager.prototype.addBreakpoint):
(WI.DebuggerManager.prototype.removeBreakpoint):
(WI.DebuggerManager.prototype.didSampleProbe): Added.
(WI.DebuggerManager.prototype._handleBreakpointActionsDidChange): Added.
(WI.DebuggerManager.prototype._addProbesForBreakpoint): Added.
(WI.DebuggerManager.prototype._removeProbesForBreakpoint): Added.
(WI.DebuggerManager.prototype._updateProbesForBreakpoint): Added.
(WI.DebuggerManager.prototype._probeSetForBreakpoint): Added.
* UserInterface/Controllers/ProbeManager.js: Removed.
* UserInterface/Protocol/DebuggerObserver.js:
(WI.DebuggerObserver.prototype.didSampleProbe):
* UserInterface/Controllers/TimelineManager.js:
(WI.TimelineManager.prototype._processRecord):
* UserInterface/Views/BreakpointTreeElement.js:
(WI.BreakpointTreeElement.prototype.onattach):
* UserInterface/Views/ProbeDetailsSidebarPanel.js:
(WI.ProbeDetailsSidebarPanel.prototype.closed):
(WI.ProbeDetailsSidebarPanel.prototype.initialLayout):
* UserInterface/Views/TextResourceContentView.js:
(WI.TextResourceContentView):
(WI.TextResourceContentView.prototype.get supplementalRepresentedObjects):
(WI.TextResourceContentView.prototype.closed):
2018-10-04 Devin Rousso <drousso@apple.com>
Web Inspector: some files not listed in OpenResourceDialog
https://bugs.webkit.org/show_bug.cgi?id=190272
Reviewed by Joseph Pecoraro.
* UserInterface/Controllers/ResourceQueryController.js:
(WI.ResourceQueryController.prototype._findQueryMatches):
Allow the `searchIndex` to go past the end of the `searchString` to allow for backtracking
if the last character of `searchString` is not found in `query`.
2018-10-04 Devin Rousso <drousso@apple.com>
Web Inspector: REGRESSION(r236783): Uncaught Exception: Can't find variable: sourceMapURL
https://bugs.webkit.org/show_bug.cgi?id=190276
Reviewed by Joseph Pecoraro.
* UserInterface/Controllers/NetworkManager.js:
(WI.NetworkManager.prototype._sourceMapLoadAndParseFailed):
2018-10-02 Devin Rousso <drousso@apple.com>
Web Inspector: merge SourceMapManager into NetworkManager
https://bugs.webkit.org/show_bug.cgi?id=190224
Reviewed by Joseph Pecoraro.
* UserInterface/Main.html:
* UserInterface/Base/Main.js:
(WI.loaded):
* UserInterface/Test.html:
* UserInterface/Test/Test.js:
(WI.loaded):
* UserInterface/Controllers/NetworkManager.js:
(WI.NetworkManager):
(WI.NetworkManager.prototype.downloadSourceMap): Added.
(WI.NetworkManager.prototype.resourceRequestWasServedFromMemoryCache):
(WI.NetworkManager.prototype.resourceRequestDidFinishLoading):
(WI.NetworkManager.prototype._createResource):
(WI.NetworkManager.prototype._loadAndParseSourceMap): Added.
(WI.NetworkManager.prototype._sourceMapLoadAndParseFailed): Added.
(WI.NetworkManager.prototype._sourceMapLoadAndParseSucceeded): Added.
(WI.NetworkManager.prototype._handleFrameMainResourceDidChange): Added.
* UserInterface/Controllers/SourceMapManager.js: Removed.
* UserInterface/Models/Script.js:
(WI.Script):
* WebInspectorUI.vcxproj/WebInspectorUI.vcxproj:
* WebInspectorUI.vcxproj/WebInspectorUI.vcxproj.filters:
2018-10-02 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Styles: start editing property name/value on mouseup instead of mousedown
https://bugs.webkit.org/show_bug.cgi?id=190114
<rdar://problem/44891030>
Reviewed by Matt Baker.
This change only affects the experimental multiple properties selection.
* UserInterface/Views/SpreadsheetCSSStyleDeclarationSection.js:
(WI.SpreadsheetCSSStyleDeclarationSection):
* UserInterface/Views/SpreadsheetCSSStyleDeclarationEditor.css:
(.multiple-properties-selection .spreadsheet-style-declaration-editor :matches(.name, .value):not(.editing)):
Without this code, the focus outline flickers on click (after mousedown but before mouseup event).
* UserInterface/Views/SpreadsheetTextField.js:
(WI.SpreadsheetTextField):
(WI.SpreadsheetTextField.prototype._handleMouseUp):
2018-10-02 Devin Rousso <drousso@apple.com>
Web Inspector: prevent layer events from firing until the layer information is re-requested
https://bugs.webkit.org/show_bug.cgi?id=190159
Reviewed by Joseph Pecoraro.
* UserInterface/Controllers/LayerTreeManager.js:
(WI.LayerTreeManager):
(WI.LayerTreeManager.prototype.get supported):
Remove `supported` member variable in favor of re-evaluating its value.
* UserInterface/Protocol/LayerTreeObserver.js:
(WI.LayerTreeObserver.prototype.layerTreeDidChange):
2018-10-02 Devin Rousso <drousso@apple.com>
Web Inspector: REGRESSION(r236766): WI.IssueManager no longer exists
https://bugs.webkit.org/show_bug.cgi?id=190226
Reviewed by Joseph Pecoraro.
* UserInterface/Controllers/ConsoleManager.js:
(WI.ConsoleManager.prototype.issuesForSourceCode):
2018-10-02 Devin Rousso <drousso@apple.com>
Web Inspector: rename frontend managers to be more consistent with backend agents
https://bugs.webkit.org/show_bug.cgi?id=190160
Reviewed by Joseph Pecoraro.
* UserInterface/Test.html:
* UserInterface/Test/Test.js:
* UserInterface/Main.html:
* UserInterface/Base/Main.js:
* UserInterface/Base/DOMUtilities.js:
* UserInterface/Controllers/ApplicationCacheManager.js:
* UserInterface/Controllers/CSSManager.js: Renamed from Source/WebInspectorUI/UserInterface/Controllers/CSSStyleManager.js.
* UserInterface/Controllers/ConsoleManager.js: Renamed from Source/WebInspectorUI/UserInterface/Controllers/LogManager.js.
* UserInterface/Controllers/DOMDebuggerManager.js:
* UserInterface/Controllers/DOMManager.js: Renamed from Source/WebInspectorUI/UserInterface/Controllers/DOMTreeManager.js.
* UserInterface/Controllers/DOMStorageManager.js: Renamed from Source/WebInspectorUI/UserInterface/Controllers/StorageManager.js.
* UserInterface/Controllers/DashboardManager.js: Removed.
* UserInterface/Controllers/DatabaseManager.js: Copied from Source/WebInspectorUI/UserInterface/Controllers/DOMStorageManager.js.
* UserInterface/Controllers/HARBuilder.js:
* UserInterface/Controllers/IndexedDBManager.js: Copied from Source/WebInspectorUI/UserInterface/Controllers/DOMStorageManager.js.
* UserInterface/Controllers/IssueManager.js: Removed.
* UserInterface/Controllers/JavaScriptLogViewController.js:
* UserInterface/Controllers/NetworkManager.js: Renamed from Source/WebInspectorUI/UserInterface/Controllers/FrameResourceManager.js.
* UserInterface/Controllers/SourceMapManager.js:
* UserInterface/Controllers/TimelineManager.js:
* UserInterface/Debug/UncaughtExceptionReporter.js:
* UserInterface/Models/CSSProperty.js:
* UserInterface/Models/CSSSelector.js:
* UserInterface/Models/CallFrame.js:
* UserInterface/Models/Canvas.js:
* UserInterface/Models/ConsoleMessage.js:
* UserInterface/Models/DOMBreakpoint.js:
* UserInterface/Models/DOMNode.js:
* UserInterface/Models/DOMNodeStyles.js:
* UserInterface/Models/DOMTree.js:
* UserInterface/Models/DefaultDashboard.js:
* UserInterface/Models/Script.js:
* UserInterface/Models/ScriptTimelineRecord.js:
* UserInterface/Models/SourceMapResource.js:
* UserInterface/Models/TimelineRecording.js:
* UserInterface/Protocol/CSSObserver.js:
* UserInterface/Protocol/ConsoleObserver.js:
* UserInterface/Protocol/DOMObserver.js:
* UserInterface/Protocol/DOMStorageObserver.js:
* UserInterface/Protocol/DatabaseObserver.js:
* UserInterface/Protocol/InspectorFrontendAPI.js:
* UserInterface/Protocol/InspectorObserver.js:
* UserInterface/Protocol/MainTarget.js:
* UserInterface/Protocol/NetworkObserver.js:
* UserInterface/Protocol/PageObserver.js:
* UserInterface/Protocol/RemoteObject.js:
* UserInterface/Protocol/RuntimeObserver.js:
* UserInterface/Protocol/WorkerTarget.js:
* UserInterface/Views/BoxModelDetailsSectionRow.js:
* UserInterface/Views/CanvasOverviewContentView.js:
* UserInterface/Views/CanvasTreeElement.js:
* UserInterface/Views/ContentView.js:
* UserInterface/Views/ContextMenuUtilities.js:
* UserInterface/Views/CookieStorageContentView.js:
* UserInterface/Views/DOMDetailsSidebarPanel.js:
* UserInterface/Views/DOMNodeDetailsSidebarPanel.js:
* UserInterface/Views/DOMNodeTreeElement.js:
* UserInterface/Views/DOMTreeContentView.js:
* UserInterface/Views/DOMTreeDataGrid.js:
* UserInterface/Views/DOMTreeElement.js:
* UserInterface/Views/DOMTreeElementPathComponent.js:
* UserInterface/Views/DOMTreeOutline.js:
* UserInterface/Views/DOMTreeUpdater.js:
* UserInterface/Views/DebuggerSidebarPanel.js:
* UserInterface/Views/ElementsTabContentView.js:
* UserInterface/Views/EventBreakpointPopover.js:
* UserInterface/Views/EventBreakpointTreeElement.js:
* UserInterface/Views/EventListenerSectionGroup.js:
* UserInterface/Views/FormattedValue.js:
* UserInterface/Views/FrameTreeElement.js:
* UserInterface/Views/GeneralStyleDetailsSidebarPanel.js:
* UserInterface/Views/IndexedDatabaseObjectStoreContentView.js:
* UserInterface/Views/LayerDetailsSidebarPanel.js:
* UserInterface/Views/LayerTreeDataGridNode.js:
* UserInterface/Views/LayerTreeDetailsSidebarPanel.js:
* UserInterface/Views/Layers3DContentView.js:
* UserInterface/Views/LogContentView.js:
* UserInterface/Views/NetworkTableContentView.js:
* UserInterface/Views/ObjectTreeBaseTreeElement.js:
* UserInterface/Views/ObjectTreeView.js:
* UserInterface/Views/OpenResourceDialog.js:
* UserInterface/Views/ResourceSidebarPanel.js:
* UserInterface/Views/SearchSidebarPanel.js:
* UserInterface/Views/SettingsTabContentView.js:
* UserInterface/Views/SourceCodeTextEditor.js:
* UserInterface/Views/SpreadsheetCSSStyleDeclarationSection.js:
* UserInterface/Views/SpreadsheetRulesStyleDetailsPanel.js:
* UserInterface/Views/StorageSidebarPanel.js:
* UserInterface/Views/StyleDetailsPanel.js:
* WebInspectorUI.vcxproj/WebInspectorUI.vcxproj:
* WebInspectorUI.vcxproj/WebInspectorUI.vcxproj.filters:
2018-10-02 Devin Rousso <drousso@apple.com>
Web Inspector: Canvas: replace constant numbers with their associated name on WebGL contexts
https://bugs.webkit.org/show_bug.cgi?id=190026
Reviewed by Joseph Pecoraro.
* UserInterface/Models/RecordingAction.js:
(WI.RecordingAction.constantNameForParameter): Added.
(WI.RecordingAction.prototype.getColorParameters):
(WI.RecordingAction.prototype.getImageParameters):
Drive-by: add additional swatches to color/image arguments for WebGL actions.
* UserInterface/Views/CanvasSidebarPanel.js:
(WI.CanvasSidebarPanel.prototype._treeOutlineSelectionDidChange):
Drive-by: ensure that the `WI.RecordingContentView` is showing before applying the action.
* UserInterface/Views/RecordingActionTreeElement.js:
(WI.RecordingActionTreeElement._generateDOM.createParameterElement):
(WI.RecordingActionTreeElement._generateDOM):
* UserInterface/Views/RecordingActionTreeElement.css:
(.item.action > .titles .parameter.constant): Added.
2018-10-01 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Fix a typo for execution context identifier
https://bugs.webkit.org/show_bug.cgi?id=190185
Reviewed by Matt Baker.
* UserInterface/Protocol/MainTarget.js:
(WI.MainTarget):
* UserInterface/Protocol/WorkerTarget.js:
(WI.WorkerTarget):
2018-10-01 Devin Rousso <drousso@apple.com>
Web Inspector: remove analyzer manager
https://bugs.webkit.org/show_bug.cgi?id=190162
Reviewed by Joseph Pecoraro.
* UserInterface/Main.html:
* UserInterface/Base/Main.js:
(WI.loaded):
* UserInterface/Controllers/AnalyzerManager.js: Removed.
* UserInterface/Models/AnalyzerMessage.js: Removed.
* Scripts/copy-user-interface-resources.pl:
* UserInterface/External/ESLint/LICENSE: Removed.
* UserInterface/External/ESLint/eslint.js: Removed.
2018-10-01 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Styles: add an experimental setting for multi-property selection
https://bugs.webkit.org/show_bug.cgi?id=190053
<rdar://problem/44842787>
Reviewed by Matt Baker.
This patch only adds a setting. It doesn't change property selection behavior.
* Localizations/en.lproj/localizedStrings.js:
* UserInterface/Base/Setting.js:
* UserInterface/Views/SettingsTabContentView.js:
(WI.SettingsTabContentView.prototype._createExperimentalSettingsView):
2018-10-01 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Dark Mode: use the same CSS variables for dark and light modes
https://bugs.webkit.org/show_bug.cgi?id=189766
<rdar://problem/44619650>
Use --text-color and --background-color CSS variables for both dark and light modes.
Reviewed by Matt Baker.
* UserInterface/Views/BreakpointPopoverController.css:
(.popover .edit-breakpoint-popover-content > label.toggle):
Color of the label matches the color of the popover, no need to specify it.
(.edit-breakpoint-popover-condition):
(@media (prefers-dark-interface)):
(.popover .edit-breakpoint-popover-content > table > tr > th):
* UserInterface/Views/CompletionSuggestionsView.css:
(.completion-suggestions-container > .item):
(@media (prefers-dark-interface)):
(.completion-suggestions):
* UserInterface/Views/ComputedStyleDetailsPanel.css:
(.details-section:matches(.computed-style-properties, .computed-style-box-model):not(.collapsed) > :matches(.header, .content)):
(.computed-style-properties .property:hover .go-to-arrow):
(@media (prefers-dark-interface)): Deleted.
(.computed-style-properties.details-section): Deleted.
(.details-section.style-box-model:not(.collapsed) > :matches(.header, .content)): Deleted.
* UserInterface/Views/DOMTreeOutline.css:
(.tree-outline.dom):
(@media (prefers-dark-interface)):
* UserInterface/Views/DataGrid.css:
(.data-grid th):
(body:not(.window-inactive, .window-docked-inactive) .data-grid:matches(:focus, .force-focus) tr.editable.selected .cell-content > input):
(@media (prefers-dark-interface)):
* UserInterface/Views/GeneralStyleDetailsSidebarPanel.css:
(.sidebar > .panel.details.css-style > .content ~ .options-container > .toggle-class-toggle):
(@media (prefers-dark-interface)):
(.sidebar > .panel.details.css-style > .content ~ .options-container > .new-rule):
* UserInterface/Views/InlineSwatch.css:
(.inline-swatch):
(.inline-swatch-variable-popover .CodeMirror pre):
(@media (prefers-dark-interface)): Deleted.
* UserInterface/Views/NetworkResourceDetailView.css:
(.network-resource-detail):
(.network .network-resource-detail .navigation-bar .item.radio.button.text-only.selected):
(@media (prefers-dark-interface)):
(.resource-headers .value): Deleted.
Move this rule to ResourceHeadersContentView.css.
* UserInterface/Views/ObjectPreviewView.css:
(.object-preview):
(@media (prefers-dark-interface)):
(.object-preview .name):
* UserInterface/Views/ObjectTreeView.css:
(.object-tree):
(.object-tree-property :matches(.formatted-string, .formatted-regexp)):
(@media (prefers-dark-interface)): Deleted.
(.object-tree,): Deleted.
(.object-preview .name): Deleted.
(.object-preview > .size): Deleted.
Move these rules to ObjectPreviewView.css.
* UserInterface/Views/QuickConsole.css:
(.quick-console):
(@media (prefers-dark-interface)):
* UserInterface/Views/ResourceHeadersContentView.css:
(.resource-headers .value):
(.resource-headers.showing-find-banner .search-highlight):
(@media (prefers-dark-interface)): Deleted.
* UserInterface/Views/ResourceTimingBreakdownView.css:
(.resource-timing-breakdown > table > tr.header:not(.total-row) > td):
(@media (prefers-dark-interface)):
* UserInterface/Views/SpreadsheetCSSStyleDeclarationEditor.css:
(.spreadsheet-style-declaration-editor .property:not(.disabled) .value):
(.spreadsheet-style-declaration-editor .property:matches(.invalid-name, .other-vendor, .overridden):not(.disabled) .content > *):
(@media (prefers-dark-interface)):
(.spreadsheet-style-declaration-editor .property.has-warning .warning):
* UserInterface/Views/SpreadsheetCSSStyleDeclarationSection.css:
(.spreadsheet-css-declaration .media-label):
(.spreadsheet-css-declaration .selector:focus,):
(@media (prefers-dark-interface)):
(.spreadsheet-css-declaration .origin .go-to-link,):
* UserInterface/Views/SpreadsheetRulesStyleDetailsPanel.css:
(.sidebar > .panel.details.css-style > .content > .rules .section-header .node-link:hover):
(@media (prefers-dark-interface)):
(.sidebar > .panel.details.css-style > .content > .rules .section-header):
* UserInterface/Views/SyntaxHighlightingDefaultTheme.css:
(.cm-s-default,):
(@media (prefers-dark-interface)):
(.syntax-highlighted,): Deleted.
* UserInterface/Views/Table.css:
(.table):
(.table > .header):
* UserInterface/Views/TimelineOverview.css:
(.timeline-overview > .navigation-bar.timelines):
(@media (prefers-dark-interface)):
* UserInterface/Views/TimelineRecordingContentView.css:
(.content-view.timeline-recording > .content-browser > .navigation-bar > .item.scope-bar.default-item-selected > .multiple):
(.content-view.timeline-recording > .content-browser > .navigation-bar > .item.scope-bar.default-item-selected > .multiple .arrows):
(.content-view.timeline-recording > .content-browser .recording-progress > .status > .indeterminate-progress-spinner):
(@media (prefers-dark-interface)): Deleted.
* UserInterface/Views/Variables.css:
(:root):
(@media (prefers-dark-interface)):
* UserInterface/Views/XHRBreakpointPopover.css:
(.popover .xhr-breakpoint-content > .editor-wrapper > .editor):
(@media (prefers-dark-interface)):
2018-09-28 Andy Estes <aestes@apple.com>
REGRESSION (r236091): CSSKeywordCompletions.js has "checkout" instead of "check-out" as a value for -apple-pay-button-type
https://bugs.webkit.org/show_bug.cgi?id=190096
Reviewed by Ryosuke Niwa.
I changed "checkout" to "check-out" in r235754, but it somehow got flipped back to "checkout" in r236091.
* UserInterface/Models/CSSKeywordCompletions.js:
2018-09-28 Andy Estes <aestes@apple.com>
[Apple Pay] Remove the "in-store" button type
https://bugs.webkit.org/show_bug.cgi?id=190079
Reviewed by Tim Horton.
* UserInterface/Models/CSSKeywordCompletions.js:
2018-09-28 Devin Rousso <drousso@apple.com>
Web Inspector: image resources without content are still shown when the Images folder is selected
https://bugs.webkit.org/show_bug.cgi?id=190072
Reviewed by Matt Baker.
* UserInterface/Views/ResourceContentView.js:
(WI.ResourceContentView.prototype.showGenericNoContentMessage):
Treat paths that result in a "Resource has no content" message as a "content error".
2018-09-26 Devin Rousso <drousso@apple.com>
Web Inspector: Hide DOM and XHR breakpoint sections when they are empty
https://bugs.webkit.org/show_bug.cgi?id=182406
<rdar://problem/37131512>
Reviewed by Joseph Pecoraro.
Combine all breakpoint sections (e.g. DOM, XHR, and Event) into the main "Breakpoints"
section, including all the various "+" buttons for creating different types of breakpoints.
Global breakpoints (except "All Exceptions" and "Uncaught Exceptions") are now deletable,
and can be re-added via the "+" button of the "Breakpoints" section. Deletable global
breakpoints (e.g. "Assertion Failures" and "All Requests") are able to remain visible while
disabled, and will only be hidden when the user specifically deletes them.
* Localizations/en.lproj/localizedStrings.js:
* UserInterface/Base/Setting.js:
* UserInterface/Main.html:
* UserInterface/Controllers/DOMBreakpointTreeController.js: Removed.
* UserInterface/Controllers/EventBreakpointTreeController.js: Removed.
* UserInterface/Controllers/XHRBreakpointTreeController.js: Removed.
* UserInterface/Controllers/DebuggerManager.js:
(WI.DebuggerManager.prototype.get uncaughtExceptionsBreakpoint): Added.
(WI.DebuggerManager.prototype.get assertionFailuresBreakpoint): Added.
(WI.DebuggerManager.prototype.isBreakpointRemovable):
(WI.DebuggerManager.prototype.isBreakpointSpecial): Added.
(WI.DebuggerManager.prototype.isBreakpointEditable):
(WI.DebuggerManager.prototype.addBreakpoint):
(WI.DebuggerManager.prototype.removeBreakpoint):
(WI.DebuggerManager.prototype.initializeTarget):
(WI.DebuggerManager.prototype._breakpointDisabledStateDidChange):
(WI.DebuggerManager.prototype._updateBreakOnExceptionsState):
(WI.DebuggerManager.prototype.get allUncaughtExceptionsBreakpoint): Deleted.
(WI.DebuggerManager.prototype.get assertionsBreakpoint): Deleted.
* UserInterface/Controllers/DOMDebuggerManager.js:
(WI.DOMDebuggerManager.prototype.isBreakpointSpecial): Added.
(WI.DOMDebuggerManager.prototype.addDOMBreakpoint):
(WI.DOMDebuggerManager.prototype.removeDOMBreakpoint):
(WI.DOMDebuggerManager.prototype.addEventBreakpoint):
(WI.DOMDebuggerManager.prototype.removeEventBreakpoint):
(WI.DOMDebuggerManager.prototype.addXHRBreakpoint):
(WI.DOMDebuggerManager.prototype.removeXHRBreakpoint):
(WI.DOMDebuggerManager.prototype.isBreakpointRemovable): Deleted.
Always fire add/remove events, including for special breakpoints, so that any listeners will
be able to adjust accordingly. Even though special breakpoints don't get stored in the lists
held by each manager, we are still able to enable/disable them, and that should be reported.
* UserInterface/Views/DebuggerSidebarPanel.js:
(WI.DebuggerSidebarPanel):
(WI.DebuggerSidebarPanel.prototype.closed):
(WI.DebuggerSidebarPanel.prototype.saveStateToCookie):
(WI.DebuggerSidebarPanel.prototype.restoreStateFromCookie.revealAndSelect):
(WI.DebuggerSidebarPanel.prototype.restoreStateFromCookie):
(WI.DebuggerSidebarPanel.prototype.willDismissPopover):
(WI.DebuggerSidebarPanel.prototype._addBreakpoint):
(WI.DebuggerSidebarPanel.prototype._removeBreakpoint): Added.
(WI.DebuggerSidebarPanel.prototype._addTreeElementForSourceCodeToTreeOutline):
(WI.DebuggerSidebarPanel.prototype._mainResourceDidChange):
(WI.DebuggerSidebarPanel.prototype._breakpointRemoved):
(WI.DebuggerSidebarPanel.prototype._removeDebuggerTreeElement):
(WI.DebuggerSidebarPanel.prototype._treeSelectionDidChange):
(WI.DebuggerSidebarPanel.prototype._addTreeElement.comparator): Added.
(WI.DebuggerSidebarPanel.prototype._addTreeElement): Added.
(WI.DebuggerSidebarPanel.prototype._updatePauseReasonSection):
(WI.DebuggerSidebarPanel.prototype._domBreakpointResolvedStateDidChange): Added.
(WI.DebuggerSidebarPanel.prototype._handleBreakpointElementAddedOrRemoved): Added.
(WI.DebuggerSidebarPanel.prototype._handleCreateBreakpointClicked): Added.
(WI.DebuggerSidebarPanel.prototype._compareTopLevelTreeElements.isSpecialBreakpoint): Deleted.
(WI.DebuggerSidebarPanel.prototype._compareTopLevelTreeElements): Deleted.
(WI.DebuggerSidebarPanel.prototype._domBreakpointAddedOrRemoved): Deleted.
(WI.DebuggerSidebarPanel.prototype._eventBreakpointAddedOrRemoved): Deleted.
(WI.DebuggerSidebarPanel.prototype._addEventBreakpointButtonClicked): Deleted.
(WI.DebuggerSidebarPanel.prototype._addXHRBreakpointButtonClicked): Deleted.
* UserInterface/Views/DebuggerSidebarPanel.css:
(.sidebar > .panel.navigation.debugger .details-section.dom-breakpoints .item.dom-node .titles): Deleted.
(.sidebar > .panel.navigation.debugger .details-section.dom-breakpoints .item.dom-node .icon): Deleted.
(.sidebar > .panel.navigation.debugger .details-section.dom-breakpoints .item.dom-node:not(:hover, .selected) .status .go-to-arrow): Deleted.
(.sidebar > .panel.navigation.debugger .details-section.xhr-breakpoints .item.breakpoint .subtitle): Deleted.
Unify the logic for adding/removing breakpoints of all types.
* UserInterface/Views/BreakpointTreeElement.js:
(WI.BreakpointTreeElement):
(WI.BreakpointTreeElement.prototype.ondelete):
* UserInterface/Views/DOMBreakpointTreeElement.js:
(WI.DOMBreakpointTreeElement):
(WI.DOMBreakpointTreeElement.prototype.ondelete):
* UserInterface/Views/DOMNodeTreeElement.js:
(WI.DOMNodeTreeElement):
(WI.DOMNodeTreeElement.prototype.ondelete):
(WI.DOMNodeTreeElement.prototype.populateContextMenu):
* UserInterface/Views/EventBreakpointTreeElement.js:
(WI.EventBreakpointTreeElement):
(WI.EventBreakpointTreeElement.prototype.ondelete):
(WI.EventBreakpointTreeElement.prototype.populateContextMenu):
* UserInterface/Views/XHRBreakpointTreeElement.js:
(WI.XHRBreakpointTreeElement):
(WI.XHRBreakpointTreeElement.prototype.ondelete):
(WI.XHRBreakpointTreeElement.prototype.populateContextMenu):
* UserInterface/Views/XHRBreakpointTreeElement.css: Added.
(.breakpoint.xhr .subtitle):
Add/remove checks for whether the associated breakpoint can be deleted.
* UserInterface/Views/DOMNodeTreeElement.css: Added.
(.tree-outline .item.dom-node .titles):
(.tree-outline .item.dom-node .icon):
(.tree-outline .item.dom-node:not(:hover, .selected) .status .go-to-arrow):
* UserInterface/Views/ContextMenuUtilities.js:
(WI.appendContextMenuItemsForDOMNode):
(WI.appendContextMenuItemsForDOMNodeBreakpoints): Added.
* UserInterface/Views/DOMTreeElement.js:
(WI.DOMTreeElement.prototype._statusImageContextmenu):
* UserInterface/Views/XHRBreakpointPopover.js:
(WI.XHRBreakpointPopover):
(WI.XHRBreakpointPopover.prototype.get breakpoint): Added.
(WI.XHRBreakpointPopover.prototype.show):
(WI.XHRBreakpointPopover.prototype.dismiss): Added.
(WI.XHRBreakpointPopover.prototype._createEditor):
(WI.XHRBreakpointPopover.prototype._updateEditor):
(WI.XHRBreakpointPopover.prototype.get result): Deleted.
(WI.XHRBreakpointPopover.prototype.get type): Deleted.
(WI.XHRBreakpointPopover.prototype.get value): Deleted.
Drive-by: remove the erroneous usage of `WI.InputPopover.Result`.
2018-09-26 Devin Rousso <drousso@apple.com>
Web Inspector: determine hasVisibleEffect for each RecordingAction as it's processed
https://bugs.webkit.org/show_bug.cgi?id=189860
Reviewed by Joseph Pecoraro.
* Localizations/en.lproj/localizedStrings.js:
* UserInterface/Base/Setting.js:
* UserInterface/Base/Utilities.js:
* UserInterface/Models/RecordingAction.js:
(WI.RecordingAction.prototype.process.getContent):
(WI.RecordingAction.prototype.process):
* UserInterface/Views/RecordingActionTreeElement.js:
(WI.RecordingActionTreeElement.prototype.onattach):
* UserInterface/Views/SettingsTabContentView.js:
(WI.SettingsTabContentView.prototype._createExperimentalSettingsView):
* UserInterface/Views/RecordingContentView.js:
(WI.RecordingContentView.prototype._updateImageGrid):
Drive-by: don't attempt to show the image grid if we haven't called initialized yet.
* UserInterface/Views/CanvasSidebarPanel.js:
(WI.CanvasSidebarPanel.prototype._treeOutlineSelectionDidChange):
Drive-by: ensure that the `WI.RecordingContentView` is showing before applying the action.
2018-09-26 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Dark Mode: new watch expression popover has light background
https://bugs.webkit.org/show_bug.cgi?id=190013
<rdar://problem/44810000>
Reviewed by Matt Baker.
Make the background dark to match the CodeMirror editor background.
* UserInterface/Views/ScopeChainDetailsSidebarPanel.css:
(@media (prefers-dark-interface)):
(.watch-expression-editor):
2018-09-21 Nikita Vasilyev <nvasilyev@apple.com>
REGRESSION(r236237): Web Inspector: DarkMode: white background in Elements and Timelines
https://bugs.webkit.org/show_bug.cgi?id=189852
Reviewed by Joseph Pecoraro.
* UserInterface/Views/Main.css:
(body):
(#main):
2018-09-21 Brian Burg <bburg@apple.com>
Web Inspector: remove unnecessary WI.Platform.version checks
https://bugs.webkit.org/show_bug.cgi?id=189845
Reviewed by Matt Baker.
* UserInterface/Base/Platform.js:
(osVersionMatch): Add name for macOS Mojave.
* UserInterface/Base/Main.js:
* UserInterface/Views/Popover.js:
Remove old logic that's no longer needed.
2018-09-21 Devin Rousso <drousso@apple.com>
Web Inspector: remove setting for Sources tab
https://bugs.webkit.org/show_bug.cgi?id=189817
Reviewed by Joseph Pecoraro.
* Localizations/en.lproj/localizedStrings.js:
* UserInterface/Base/Setting.js:
* UserInterface/Main.html:
* UserInterface/Base/Main.js:
(WI.contentLoaded):
(WI._debuggerDidPause):
(WI.isShowingSourcesTab): Removed.
(WI.showSourcesTab): Removed.
* UserInterface/Views/SourcesSidebarPanel.css: Removed.
* UserInterface/Views/SourcesSidebarPanel.js: Removed.
* UserInterface/Views/SourcesTabContentView.js: Removed.
* UserInterface/Views/ContextMenuUtilities.js:
(WI.appendContextMenuItemsForURL):
* UserInterface/Views/SettingsTabContentView.js:
(WI.SettingsTabContentView.prototype._createExperimentalSettingsView):
* UserInterface/Views/SourceCodeTextEditor.js:
(WI.SourceCodeTextEditor.prototype.textEditorGutterContextMenu):
2018-09-20 Simon Fraser <simon.fraser@apple.com>
Make "overflow: overlay" a synonym for "overflow: auto"
https://bugs.webkit.org/show_bug.cgi?id=189811
Reviewed by Zalan Bujtas.
Remove "overlay" from the overflow values.
* UserInterface/Models/CSSKeywordCompletions.js:
* UserInterface/Views/VisualStyleDetailsPanel.js:
(WI.VisualStyleDetailsPanel.prototype._populateDisplaySection):
2018-09-21 Devin Rousso <drousso@apple.com>
Web Inspector: hide Accessibility Audit Tab setting
https://bugs.webkit.org/show_bug.cgi?id=189816
Reviewed by Joseph Pecoraro.
Considering that this tab doesn't exist, there's no reason to have a setting/UI for it.
* UserInterface/Base/Setting.js:
* UserInterface/Views/SettingsTabContentView.js:
(WI.SettingsTabContentView.prototype._createExperimentalSettingsView):
2018-09-21 Devin Rousso <drousso@apple.com>
Web Inspector: remove Legacy Style Editor
https://bugs.webkit.org/show_bug.cgi?id=189808
Reviewed by Joseph Pecoraro.
The Legacy Style Editor has been hidden behind an "experimental" setting for almost a year.
It's time that we remove it, especially since the new Style Editor is at a similar, if not
more advanced, state.
* .eslintrc:
* WebInspectorUI.vcxproj/WebInspectorUI.vcxproj:
* WebInspectorUI.vcxproj/WebInspectorUI.vcxproj.filters:
* Localizations/en.lproj/localizedStrings.js:
* Tools/PrettyPrinting/index.html:
* UserInterface/Main.html:
* UserInterface/Test.html:
* UserInterface/Base/Setting.js:
* UserInterface/Base/TextUtilities.js: Removed.
* UserInterface/Base/Utilities.js:
* UserInterface/Views/RulesStyleDetailsPanel.css: Removed.
* UserInterface/Views/RulesStyleDetailsPanel.js: Removed.
* UserInterface/Views/CSSStyleDeclarationSection.css: Removed.
* UserInterface/Views/CSSStyleDeclarationSection.js: Removed.
* UserInterface/Views/CSSStyleDeclarationTextEditor.css: Removed.
* UserInterface/Views/CSSStyleDeclarationTextEditor.js: Removed.
* UserInterface/Models/CSSProperty.js:
(WI.CSSProperty.prototype.get text):
(WI.CSSProperty.prototype.get synthesizedText): Deleted.
* UserInterface/Models/CSSStyleDeclaration.js:
(WI.CSSStyleDeclaration):
(WI.CSSStyleDeclaration.prototype.set text):
(WI.CSSStyleDeclaration.prototype.resetText): Deleted.
(WI.CSSStyleDeclaration.prototype.get modified): Deleted.
(WI.CSSStyleDeclaration.prototype.generateCSSRuleString): Deleted.
(WI.CSSStyleDeclaration.prototype.isInspectorRule): Deleted.
* UserInterface/Models/CSSSelector.js:
(WI.CSSSelector.prototype.isGreaterThan): Deleted.
* UserInterface/Models/CSSRule.js:
(WI.CSSRule.prototype.update):
(WI.CSSRule.prototype.get matchedSelectors): Deleted.
(WI.CSSRule.prototype.get matchedSelectorText): Deleted.
(WI.CSSRule.prototype.hasMatchedPseudoElementSelector): Deleted.
(WI.CSSRule.prototype.get mediaText): Deleted.
(WI.CSSRule.prototype.get mostSpecificSelector): Deleted.
(WI.CSSRule.prototype.selectorIsGreater): Deleted.
(WI.CSSRule.prototype._determineMostSpecificSelector): Deleted.
* UserInterface/Models/DOMNodeStyles.js:
(WI.DOMNodeStyles.prototype.changeRule.changeCompleted): Deleted.
(WI.DOMNodeStyles.prototype.changeRule.styleChanged): Deleted.
(WI.DOMNodeStyles.prototype.changeRule.changeText): Deleted.
(WI.DOMNodeStyles.prototype.changeRule.ruleSelectorChanged): Deleted.
(WI.DOMNodeStyles.prototype.changeRule): Deleted.
* UserInterface/Models/CSSCompletions.js:
(WI.CSSCompletions.prototype.isValidPropertyName):
(WI.CSSCompletions):
(WI.CSSCompletions.prototype.keySet): Deleted.
(WI.CSSCompletions.prototype.propertyRequiresWebkitPrefix): Deleted.
(WI.CSSCompletions.prototype.getClosestPropertyName): Deleted.
* UserInterface/Views/ComputedStyleDetailsPanel.js:
(WI.ComputedStyleDetailsPanel.prototype.cssStyleDeclarationTextEditorStartEditingAdjacentRule): Deleted.
* UserInterface/Views/RulesStyleDetailsSidebarPanel.js:
(WI.RulesStyleDetailsSidebarPanel):
* UserInterface/Views/SpreadsheetCSSStyleDeclarationEditor.js:
(WI.SpreadsheetCSSStyleDeclarationEditor.prototype.spreadsheetStylePropertyFocusMoved):
* UserInterface/Views/SpreadsheetCSSStyleDeclarationSection.js:
(WI.SpreadsheetCSSStyleDeclarationSection.prototype.spreadsheetCSSStyleDeclarationEditorStartEditingRuleSelector): Added.
(WI.SpreadsheetCSSStyleDeclarationSection.prototype.cssStyleDeclarationTextEditorStartEditingRuleSelector): Deleted.
* UserInterface/Views/SpreadsheetRulesStyleDetailsPanel.js:
(WI.SpreadsheetRulesStyleDetailsPanel):
* UserInterface/Views/SpreadsheetRulesStyleDetailsPanel.css:
(.sidebar > .panel.details.css-style .rules): Added.
(.sidebar > .panel.details.css-style > .content > .rules .section-header): Added.
(.sidebar > .panel.details.css-style > .content > .rules .section-header .node-link): Added.
(.sidebar > .panel.details.css-style > .content > .rules .section-header .node-link:hover): Added.
(.sidebar > .panel.details.css-style > .content > .rules > .message-text-view): Added.
(.sidebar > .panel.details.css-style > .content > .rules:not(.filter-non-matching) > .message-text-view): Added.
(@media (prefers-dark-interface)):
(.sidebar > .panel.details.css-style > .content > .rules .section-header): Added.
(.sidebar > .panel.details.css-style > .content > .rules .section-header .node-link:hover): Added.
(.spreadsheet-style-panel .section-header): Deleted.
(.spreadsheet-style-panel .section-header .node-link): Deleted.
(.spreadsheet-style-panel .section-header .node-link:hover): Deleted.
(.spreadsheet-style-panel .section-header): Deleted.
(.spreadsheet-style-panel .section-header .node-link:hover): Deleted.
* UserInterface/Views/CodeMirrorAdditions.js:
(extendedCSSRuleStartState): Removed.
* UserInterface/Views/CodeMirrorFormatters.js:
Remove "css-rule" CodeMirror mode.
* UserInterface/Views/CodeMirrorTextMarkers.js:
(createCodeMirrorVariableTextMarkers): Deleted.
* UserInterface/Views/SettingsTabContentView.js:
(WI.SettingsTabContentView.prototype._createExperimentalSettingsView):
2018-09-21 Mike Gorse <mgorse@suse.com>
Build tools should work when the /usr/bin/python is python3
https://bugs.webkit.org/show_bug.cgi?id=156674
Reviewed by Michael Catanzaro.
* Scripts/copy-user-interface-resources.pl: Use $PYTHON if set
in the environment.
2018-09-20 Devin Rousso <drousso@apple.com>
Web Inspector: remove Visual Style CSS details sidebar panel
https://bugs.webkit.org/show_bug.cgi?id=189807
Reviewed by Joseph Pecoraro.
The Visual Style CSS details sidebar panel has been hidden behind an "experimental" setting
for almost a year. It's time that we remove it.
* Localizations/en.lproj/localizedStrings.js:
* UserInterface/Base/Setting.js:
* UserInterface/Main.html:
* UserInterface/Views/ElementsTabContentView.js:
(WI.ElementsTabContentView):
* UserInterface/Views/SettingsTabContentView.js:
(WI.SettingsTabContentView.prototype._createExperimentalSettingsView):
* UserInterface/Images/AnimationPlayStatePaused.svg: Removed.
* UserInterface/Images/AnimationPlayStateRunning.svg: Removed.
* UserInterface/Images/ClearBoth.svg: Removed.
* UserInterface/Images/ClearLeft.svg: Removed.
* UserInterface/Images/ClearRight.svg: Removed.
* UserInterface/Images/FloatLeft.svg: Removed.
* UserInterface/Images/FloatRight.svg: Removed.
* UserInterface/Images/FontStyleItalic.svg: Removed.
* UserInterface/Images/FontStyleNormal.svg: Removed.
* UserInterface/Images/ListStylePositionInside.svg: Removed.
* UserInterface/Images/ListStylePositionOutside.svg: Removed.
* UserInterface/Images/TextAlignCenter.svg: Removed.
* UserInterface/Images/TextAlignJustify.svg: Removed.
* UserInterface/Images/TextAlignLeft.svg: Removed.
* UserInterface/Images/TextAlignRight.svg: Removed.
* UserInterface/Images/TextDecorationLineThrough.svg: Removed.
* UserInterface/Images/TextDecorationOverline.svg: Removed.
* UserInterface/Images/TextDecorationUnderline.svg: Removed.
* UserInterface/Images/TextTransformCapitalize.svg: Removed.
* UserInterface/Images/TextTransformLowercase.svg: Removed.
* UserInterface/Images/TextTransformUppercase.svg: Removed.
* UserInterface/Images/VisualStyleNone.svg: Removed.
* UserInterface/Images/VisualStylePropertyLinked.svg: Removed.
* UserInterface/Images/VisualStylePropertyUnlinked.svg: Removed.
* UserInterface/Views/VisualStyleBackgroundPicker.css: Removed.
* UserInterface/Views/VisualStyleBackgroundPicker.js: Removed.
* UserInterface/Views/VisualStyleBasicInput.js: Removed.
* UserInterface/Views/VisualStyleColorPicker.css: Removed.
* UserInterface/Views/VisualStyleColorPicker.js: Removed.
* UserInterface/Views/VisualStyleCommaSeparatedKeywordEditor.css: Removed.
* UserInterface/Views/VisualStyleCommaSeparatedKeywordEditor.js: Removed.
* UserInterface/Views/VisualStyleDetailsPanel.css: Removed.
* UserInterface/Views/VisualStyleDetailsPanel.js: Removed.
* UserInterface/Views/VisualStyleDetailsSidebarPanel.js: Removed.
* UserInterface/Views/VisualStyleFontFamilyListEditor.js: Removed.
* UserInterface/Views/VisualStyleFontFamilyTreeElement.js: Removed.
* UserInterface/Views/VisualStyleKeywordCheckbox.css: Removed.
* UserInterface/Views/VisualStyleKeywordCheckbox.js: Removed.
* UserInterface/Views/VisualStyleKeywordIconList.css: Removed.
* UserInterface/Views/VisualStyleKeywordIconList.js: Removed.
* UserInterface/Views/VisualStyleKeywordPicker.js: Removed.
* UserInterface/Views/VisualStyleNumberInputBox.css: Removed.
* UserInterface/Views/VisualStyleNumberInputBox.js: Removed.
* UserInterface/Views/VisualStylePropertyCombiner.js: Removed.
* UserInterface/Views/VisualStylePropertyEditor.css: Removed.
* UserInterface/Views/VisualStylePropertyEditor.js: Removed.
* UserInterface/Views/VisualStylePropertyEditorLink.css: Removed.
* UserInterface/Views/VisualStylePropertyEditorLink.js: Removed.
* UserInterface/Views/VisualStylePropertyNameInput.js: Removed.
* UserInterface/Views/VisualStyleRelativeNumberSlider.css: Removed.
* UserInterface/Views/VisualStyleRelativeNumberSlider.js: Removed.
* UserInterface/Views/VisualStyleSelectorSection.css: Removed.
* UserInterface/Views/VisualStyleSelectorSection.js: Removed.
* UserInterface/Views/VisualStyleSelectorTreeItem.css: Removed.
* UserInterface/Views/VisualStyleSelectorTreeItem.js: Removed.
* UserInterface/Views/VisualStyleTabbedPropertiesRow.css: Removed.
* UserInterface/Views/VisualStyleTabbedPropertiesRow.js: Removed.
* UserInterface/Views/VisualStyleTimingEditor.css: Removed.
* UserInterface/Views/VisualStyleTimingEditor.js: Removed.
* UserInterface/Views/VisualStyleURLInput.js: Removed.
* UserInterface/Views/VisualStyleUnitSlider.css: Removed.
* UserInterface/Views/VisualStyleUnitSlider.js: Removed.
* UserInterface/Controllers/VisualStyleCompletionsController.js: Removed.
2018-09-20 Devin Rousso <drousso@apple.com>
Web Inspector: Styles Redesign: rework Computed panel to use Spreadsheet classes
https://bugs.webkit.org/show_bug.cgi?id=183627
Reviewed by Joseph Pecoraro.
* UserInterface/Views/ComputedStyleDetailsPanel.js:
(WI.ComputedStyleDetailsPanel):
(WI.ComputedStyleDetailsPanel.prototype.refresh):
(WI.ComputedStyleDetailsPanel.prototype.applyFilter):
(WI.ComputedStyleDetailsPanel.prototype.spreadsheetCSSStyleDeclarationEditorShowProperty):
(WI.ComputedStyleDetailsPanel.prototype.initialLayout):
(WI.ComputedStyleDetailsPanel.prototype.filterDidChange):
(WI.ComputedStyleDetailsPanel.prototype._computedStyleShowAllCheckboxValueChanged):
(WI.ComputedStyleDetailsPanel.prototype._handlePropertiesSectionCollapsedStateChanged):
(WI.ComputedStyleDetailsPanel.prototype._handleVariablesSectionCollapsedStateChanged):
(WI.ComputedStyleDetailsPanel.prototype._handleEditorFilterApplied):
(WI.ComputedStyleDetailsPanel.prototype.cssStyleDeclarationTextEditorShowProperty.delegateShowProperty): Deleted.
(WI.ComputedStyleDetailsPanel.prototype.cssStyleDeclarationTextEditorShowProperty): Deleted.
Replace CSSStyleDeclarationTextEditor with SpreadsheetCSSStyleDeclarationEditor.
* UserInterface/Views/SpreadsheetCSSStyleDeclarationEditor.js:
(WI.SpreadsheetCSSStyleDeclarationEditor):
(WI.SpreadsheetCSSStyleDeclarationEditor.prototype.initialLayout):
(WI.SpreadsheetCSSStyleDeclarationEditor.prototype.layout):
(WI.SpreadsheetCSSStyleDeclarationEditor.prototype.set showsImplicitProperties):
(WI.SpreadsheetCSSStyleDeclarationEditor.prototype.set alwaysShowPropertyNames):
(WI.SpreadsheetCSSStyleDeclarationEditor.prototype.set propertyVisibilityMode):
(WI.SpreadsheetCSSStyleDeclarationEditor.prototype.set hideFilterNonMatchingProperties):
(WI.SpreadsheetCSSStyleDeclarationEditor.prototype.set sortPropertiesByName): Added.
(WI.SpreadsheetCSSStyleDeclarationEditor.prototype.get propertiesToRender):
(WI.SpreadsheetCSSStyleDeclarationEditor.prototype.highlightProperty):
(WI.SpreadsheetCSSStyleDeclarationEditor.prototype.applyFilter):
(WI.SpreadsheetCSSStyleDeclarationEditor.prototype.spreadsheetStylePropertyShowProperty):
(WI.SpreadsheetCSSStyleDeclarationEditor.prototype._updateStyleLock):
(WI.SpreadsheetCSSStyleDeclarationEditor.prototype.get _propertiesToRender): Deleted.
Create setters for the "special" functionality required by the Computed panel and tie them
into the logic that determines what properties are rendered.
* UserInterface/Views/SpreadsheetStyleProperty.js:
(WI.SpreadsheetStyleProperty.prototype._update):
Create go-to arrow if the property has a shorthand version or a source code location.
* UserInterface/Views/GeneralStyleDetailsSidebarPanel.js:
(WI.GeneralStyleDetailsSidebarPanel.prototype.initialLayout):
Don't reapply the filter after refreshing, as the current panel will handle applying it.
* UserInterface/Views/ComputedStyleDetailsPanel.css:
(.details-section:matches(.computed-style-properties, .computed-style-box-model):not(.collapsed) > :matches(.header, .content)):
(.computed-style-properties .property .go-to-arrow):
(.computed-style-properties .property:hover .go-to-arrow):
(.computed-style-properties.details-section): Deleted.
(.details-section > .content > .group > .row .CodeMirror-code pre .go-to-arrow): Deleted.
(.details-section > .content > .group > .row .CodeMirror-code pre:hover .go-to-arrow): Deleted.
(.details-section.style-box-model:not(.collapsed) > :matches(.header, .content)): Deleted.
* UserInterface/Views/DetailsSection.css:
(.details-section.computed-style-properties:not(.collapsed) > .header): Deleted.
Consolidate Computed panel styles to it's respective CSS file.
* UserInterface/Views/SpreadsheetCSSStyleDeclarationEditor.css:
(.spreadsheet-style-declaration-editor):
(.spreadsheet-style-declaration-editor .property:matches(.implicit, .not-inherited) .content > *):
(.spreadsheet-style-declaration-editor .property.not-inherited .content > *): Deleted.
* UserInterface/Views/SpreadsheetCSSStyleDeclarationSection.css:
(.spreadsheet-css-declaration):
* UserInterface/Views/Variables.css:
(:root):
Move `css-declaration` padding variables so they can be used by SpreadsheetCSSStyleDeclarationEditor
without a parent SpreadsheetCSSStyleDeclarationSection.
* UserInterface/Views/SpreadsheetRulesStyleDetailsPanel.css:
(.style-spreadsheet .style-rule): Deleted.
(.style-spreadsheet .selector-line): Deleted.
(.style-spreadsheet .selector): Deleted.
(.style-spreadsheet :matches(.selector .matched, .selector:focus)): Deleted.
(.style-spreadsheet .name): Deleted.
(.style-spreadsheet .value): Deleted.
(.style-spreadsheet :matches(.selector, .name, .value)): Deleted.
(.style-spreadsheet :matches(.selector, .name, .value):focus): Deleted.
(.style-spreadsheet .selector-inline): Deleted.
(.style-spreadsheet .property): Deleted.
(.style-spreadsheet .property-disabled,): Deleted.
(.style-spreadsheet .property-disabled :matches(.name, .value)): Deleted.
(.style-spreadsheet .styles-source): Deleted.
(.style-spreadsheet :matches(a, .node-link)): Deleted.
(.style-spreadsheet :matches(a, .node-link):hover): Deleted.
(.style-spreadsheet .declarations): Deleted.
(.style-spreadsheet input[type="checkbox"]): Deleted.
(.style-spreadsheet input[type="checkbox"]:not(:checked)): Deleted.
(.style-spreadsheet .declarations:hover input[type="checkbox"]): Deleted.
Drive-by fix: remove styles that don't apply to anything.
2018-09-19 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: move DarkMode.css rules into appropriate CSS files
https://bugs.webkit.org/show_bug.cgi?id=189673
Reviewed by Matt Baker.
* UserInterface/Main.html:
* UserInterface/Views/BezierEditor.css:
(@media (prefers-dark-interface)):
(.bezier-editor > .bezier-preview-timing):
(.bezier-editor > .bezier-container .bezier-curve):
(.bezier-editor > .bezier-container .linear-curve):
(.bezier-editor > .bezier-preview):
(.bezier-editor > .bezier-preview > div):
(.bezier-editor > .bezier-container .control-handle):
(.bezier-editor > .bezier-container .control-line):
* UserInterface/Views/BreakpointActionView.css:
(@media (prefers-dark-interface)):
(.breakpoint-action-block-body):
(.breakpoint-action-block-body > .description):
(.breakpoint-action-append-button,):
(.breakpoint-action-eval-editor):
* UserInterface/Views/BreakpointPopoverController.css:
(@media (prefers-dark-interface)):
(.popover .edit-breakpoint-popover-content > label.toggle):
(.popover .edit-breakpoint-popover-content > table > tr > th):
(.edit-breakpoint-popover-condition):
* UserInterface/Views/ButtonNavigationItem.css:
(@media (prefers-dark-interface)):
(.navigation-bar .item.button):
* UserInterface/Views/ButtonToolbarItem.css:
(@media (prefers-dark-interface)):
(.toolbar .item.button):
(.toolbar .item.button:not(.disabled):active):
(.toolbar .item.button:not(.disabled):matches(:focus, .activate.activated)):
(.toolbar .item.button:not(.disabled):active:matches(:focus, .activate.activated)):
* UserInterface/Views/CallFrameView.css:
(@media (prefers-dark-interface)):
(.call-frame .subtitle,):
(.call-frame:hover .subtitle .source-link,):
(.call-frame .separator):
* UserInterface/Views/CanvasContentView.css:
(@media (prefers-dark-interface)):
(.content-view.canvas:not(.tab)):
* UserInterface/Views/CanvasOverviewContentView.css:
(@media (prefers-dark-interface)):
(.content-view.canvas-overview):
(.content-view.canvas-overview .content-view.canvas):
(.content-view.canvas-overview .content-view.canvas.is-recording):
(.content-view.canvas-overview .content-view.canvas.is-recording > header):
(.content-view.canvas-overview .content-view.canvas > header > .titles > .title):
(.content-view.canvas-overview .content-view.canvas > header > .titles > .subtitle,):
(.content-view.canvas-overview .content-view.canvas > footer > .recordings::before):
(.content-view.canvas-overview .content-view.canvas.is-recording > header > .titles > .subtitle):
* UserInterface/Views/CanvasTabContentView.css:
(@media (prefers-dark-interface)):
(.content-view.tab.canvas .navigation-bar > .item .canvas-overview .icon):
(.content-view.tab.canvas .navigation-bar > .item .canvas.canvas-2d .icon,):
(.content-view.canvas > .preview > img,):
* UserInterface/Views/CodeMirrorOverrides.css:
(@media (prefers-dark-interface)):
(.CodeMirror-cursor):
(.CodeMirror .CodeMirror-gutters):
(.cm-s-default .cm-link):
(.CodeMirror .CodeMirror-lines .CodeMirror-matchingbracket):
* UserInterface/Views/CompletionSuggestionsView.css:
(@media (prefers-dark-interface)):
(.completion-suggestions):
(.completion-suggestions-container > .item):
* UserInterface/Views/ComputedStyleDetailsPanel.css:
(@media (prefers-dark-interface)):
(.computed-style-properties.details-section):
(.details-section.style-box-model:not(.collapsed) > :matches(.header, .content)):
* UserInterface/Views/ConsoleMessageView.css:
(@media (prefers-dark-interface)):
(.console-message .syntax-highlighted):
(.console-warning-level .console-message-text):
(.console-error-level .console-message-text):
(.console-user-command > .console-message-text):
(.console-message .repeat-count):
* UserInterface/Views/ConsolePrompt.css:
(@media (prefers-dark-interface)):
(.console-prompt):
* UserInterface/Views/DOMNodeDetailsSidebarPanel.css:
(@media (prefers-dark-interface)):
(.sidebar > .panel.dom-node-details .details-section.dom-node-event-listeners > .header > .filter:hover):
* UserInterface/Views/DOMTreeOutline.css:
(@media (prefers-dark-interface)):
(.tree-outline.dom):
(.tree-outline.dom li.elements-drag-over .selection-area):
(.tree-outline.dom li.selected .selection-area):
(.tree-outline.dom:focus li.selected .selection-area):
(.tree-outline.dom li.selected + ol.children.expanded):
(.tree-outline.dom .shadow):
(.tree-outline.dom li.parent.shadow + ol.children.expanded,):
(.showing-find-banner .tree-outline.dom .search-highlight):
* UserInterface/Views/DarkMode.css: Removed.
* UserInterface/Views/DataGrid.css:
(@media (prefers-dark-interface)):
(.data-grid th):
(.data-grid td .subtitle):
(.data-grid:matches(:focus, .force-focus) tr.selected td .subtitle):
(body:not(.window-inactive, .window-docked-inactive) .data-grid:matches(:focus, .force-focus) tr.editable.selected .cell-content > input):
(.data-grid tr.editable .cell-content > input):
(.data-grid td.spanning):
* UserInterface/Views/DebuggerDashboardView.css:
(@media (prefers-dark-interface)):
(.toolbar .dashboard.debugger):
(.dashboard.debugger .navigation-bar .item.button > .glyph):
(.dashboard.debugger > .location .function-name):
(.dashboard.debugger > .location .go-to-link):
(.dashboard.debugger > .divider):
* UserInterface/Views/DefaultDashboardView.css:
(@media (prefers-dark-interface)):
(.toolbar .dashboard.default > .item > div):
(.toolbar .dashboard.default > .item.enabled > div):
(.toolbar .dashboard.default > .item.enabled:hover):
(.toolbar .dashboard.default > .item.enabled:hover > div):
(.toolbar .dashboard.default > .resourcesCount > img,):
(body.latest-mac .toolbar .dashboard .item.button):
(.dashboard-container .advance-arrow):
* UserInterface/Views/DetailsSection.css:
(@media (prefers-dark-interface)):
(.details-section > .header):
(.details-section > .header > label):
(.details-section .details-section,):
(.details-section .details-section:not(.collapsed) > .header):
(.details-section > .content > .group > .row.simple > .label):
(.details-section > .content > .group:nth-child(even)):
(.details-section > .content > .group > .row:matches(.empty, .text)):
* UserInterface/Views/DividerNavigationItem.css:
(@media (prefers-dark-interface)):
(.navigation-bar .item.divider):
* UserInterface/Views/Editing.css:
(@media (prefers-dark-interface)):
(.editing):
(.editing, .editing *):
* UserInterface/Views/FindBanner.css:
(@media (prefers-dark-interface)):
(.find-banner > input[type="search"]):
(.find-banner.console-find-banner > input[type=search]:not(:placeholder-shown)):
* UserInterface/Views/FontResourceContentView.css:
(@media (prefers-dark-interface)):
(.content-view.resource.font .preview > .line):
(.content-view.resource.font .metric.top):
(.content-view.resource.font .metric.baseline):
(.content-view.resource.font .metric.middle):
(.content-view.resource.font .metric.xheight):
(.content-view.resource.font .metric.bottom):
* UserInterface/Views/FormattedValue.css:
(@media (prefers-dark-interface)):
(.formatted-object,):
(.formatted-null,):
* UserInterface/Views/GeneralStyleDetailsSidebarPanel.css:
(@media (prefers-dark-interface)):
(.sidebar > .panel.details.css-style > .content > .pseudo-classes > .group > label):
(.sidebar > .panel.details.css-style > .content ~ .options-container > .new-rule):
(.sidebar > .panel.details.css-style > .content ~ .options-container > .toggle-class-toggle):
* UserInterface/Views/HoverMenu.css:
(@media (prefers-dark-interface)):
(.hover-menu > svg > :matches(path, rect)):
* UserInterface/Views/ImageResourceContentView.css:
(@media (prefers-dark-interface)):
(.content-view.resource.image):
* UserInterface/Views/InlineSwatch.css:
(@media (prefers-dark-interface)):
(.inline-swatch):
* UserInterface/Views/LogContentView.css:
(@media (prefers-dark-interface)):
(.console-messages):
(.console-item):
(.console-messages:focus .console-item.selected):
(.console-messages:focus .console-item.selected + .console-item):
(.console-session:first-of-type .console-session-header):
(.console-session:not(:first-of-type) .console-session-header):
(.console-messages a):
(.console-messages a:hover):
(.console-messages:focus .console-item.selected::after):
(.console-error-level):
(.console-error-level:not(.filtered-out, .filtered-out-by-search), .console-error-level:not(.filtered-out, .filtered-out-by-search) + .console-item):
(.console-warning-level):
(.console-warning-level:not(.filtered-out, .filtered-out-by-search), .console-warning-level:not(.filtered-out, .filtered-out-by-search) + .console-item):
(.search-in-progress .console-item:not(.filtered-out-by-search) .highlighted):
(.search-in-progress .console-item:not(.filtered-out-by-search) .highlighted.selected):
* UserInterface/Views/Main.css:
(#main):
(@media (prefers-dark-interface)):
(.go-to-arrow):
(.resource-link,):
(.expand-list-button):
(:matches(img, canvas).show-grid):
* UserInterface/Views/NetworkResourceDetailView.css:
(@media (prefers-dark-interface)):
(.network-resource-detail):
(.network-resource-detail .item.close > .glyph):
(.network .network-resource-detail .navigation-bar .item.radio.button.text-only.selected):
(.resource-headers .value):
* UserInterface/Views/NetworkTableContentView.css:
(@media (prefers-dark-interface)):
(.network-table .cell.domain > .lock):
* UserInterface/Views/NewTabContentView.css:
(@media (prefers-dark-interface)):
(.new-tab.tab.content-view):
* UserInterface/Views/ObjectTreePropertyTreeElement.css:
(@media (prefers-dark-interface)):
(.object-tree-property .getter,):
(.item.object-tree-property.prototype-property):
(.object-tree-property.prototype-property:hover,):
(.object-tree-property .value.error):
* UserInterface/Views/ObjectTreeView.css:
(@media (prefers-dark-interface)):
(.object-tree,):
(.object-preview .name):
(.object-preview > .size):
* UserInterface/Views/OpenResourceDialog.css:
(@media (prefers-dark-interface)):
(.open-resource-dialog):
(.open-resource-dialog > .field > input):
(.open-resource-dialog > .field > input::placeholder):
(.open-resource-dialog > .tree-outline .item.selected):
(.open-resource-dialog > .field::before):
* UserInterface/Views/ProgressView.css:
(@media (prefers-dark-interface)):
(.progress-view > .titles > .title):
(.progress-view > .titles > .subtitle):
(.indeterminate-progress-spinner):
* UserInterface/Views/QuickConsole.css:
(@media (prefers-dark-interface)):
(.quick-console):
(.CodeMirror .jump-to-symbol-highlight,):
(.quick-console.showing-log):
* UserInterface/Views/RecordingActionTreeElement.css:
(@media (prefers-dark-interface)):
(.item.action:not(.initial-state)::before):
(.tree-outline .item.action.visual:not(.selected, .invalid)):
(.item.action:not(.initial-state) > .icon):
(.tree-outline:not(.hide-disclosure-buttons) .item.action:not(.initial-state, .parent) > .icon):
* UserInterface/Views/RecordingContentView.css:
(@media (prefers-dark-interface)):
(.content-view:not(.tab).recording):
(.content-view:not(.tab).recording > header > .slider-container):
(.content-view:not(.tab).recording > header > .slider-container > input[type=range]):
* UserInterface/Views/RecordingStateDetailsSidebarPanel.css:
(@media (prefers-dark-interface)):
(.sidebar > .panel.details.recording-state > .content > .data-grid tr.modified):
* UserInterface/Views/ResourceHeadersContentView.css:
(@media (prefers-dark-interface)):
(.resource-headers .value):
* UserInterface/Views/ResourceSizesContentView.css:
(@media (prefers-dark-interface)):
(.resource-sizes > .content .label):
* UserInterface/Views/ResourceTimingBreakdownView.css:
(@media (prefers-dark-interface)):
(.popover.waterfall-popover):
(.resource-timing-breakdown > table > tr.header:not(.total-row) > td):
(.resource-timing-breakdown > table > tr > td.label,):
(.resource-timing-breakdown > table hr):
* UserInterface/Views/ScopeBar.css:
(@media (prefers-dark-interface)):
(.scope-bar > li):
* UserInterface/Views/SearchBar.css:
(@media (prefers-dark-interface)):
(:matches(.search-bar, .filter-bar) > input[type="search"],):
(:matches(.search-bar, .filter-bar) > input[type="search"]::placeholder):
(:matches(.search-bar, .filter-bar) > input[type="search"]:focus):
* UserInterface/Views/SearchSidebarPanel.css:
(@media all):
* UserInterface/Views/SettingsTabContentView.css:
(@media (prefers-dark-interface)):
(.content-view.settings .navigation-bar):
(.content-view.settings .navigation-bar .item.radio.button.text-only.selected):
* UserInterface/Views/ShaderProgramContentView.css:
(@media (prefers-dark-interface)):
(.content-view.shader-program > .text-editor.shader):
(.content-view.shader-program > .text-editor.shader > .type-title):
* UserInterface/Views/ShaderProgramTreeElement.css:
(@media (prefers-dark-interface)):
(.item.shader-program .status > img):
* UserInterface/Views/SourceCodeTextEditor.css:
(@media (prefers-dark-interface)):
(.source-code.text-editor > .CodeMirror .error):
(.source-code.text-editor > .CodeMirror .warning):
(.source-code.text-editor > .CodeMirror .issue-widget):
(.source-code.text-editor > .CodeMirror .issue-widget.warning,):
(.source-code.text-editor > .CodeMirror .issue-widget.error,):
* UserInterface/Views/SpreadsheetCSSStyleDeclarationEditor.css:
(@media (prefers-dark-interface)):
(.spreadsheet-style-declaration-editor .property:not(.disabled) .value):
(.spreadsheet-style-declaration-editor :matches(.name, .value).editing):
(.spreadsheet-style-declaration-editor .property.has-warning):
(.spreadsheet-style-declaration-editor .property.has-warning .warning):
(.spreadsheet-style-declaration-editor .property:matches(.invalid-name, .other-vendor, .overridden):not(.disabled) .content > *):
* UserInterface/Views/SpreadsheetCSSStyleDeclarationSection.css:
(@media (prefers-dark-interface)):
(.spreadsheet-css-declaration):
(.spreadsheet-css-declaration.locked):
(.spreadsheet-css-declaration .selector.style-attribute):
(.spreadsheet-css-declaration .selector:focus,):
(.spreadsheet-css-declaration.locked .origin::after):
(.spreadsheet-css-declaration .origin .go-to-link,):
(.spreadsheet-css-declaration .media-label):
* UserInterface/Views/SpreadsheetRulesStyleDetailsPanel.css:
(@media (prefers-dark-interface)):
(.spreadsheet-style-panel .section-header):
(.spreadsheet-style-panel .section-header .node-link:hover):
* UserInterface/Views/SyntaxHighlightingDefaultTheme.css:
(@media (prefers-dark-interface)):
(.syntax-highlighted,):
(.cm-s-default,):
(.cm-s-default .cm-attribute):
(.cm-s-default .cm-m-xml.cm-attribute,):
(.cm-s-default .cm-meta):
(.cm-s-default .cm-variable-3):
(.cm-s-default .cm-builtin):
* UserInterface/Views/TabBar.css:
(@media (prefers-dark-interface)):
(.tab-bar):
(.tab-bar > .item):
(.tab-bar > .item > .title):
(.tab-bar > .item:not(.disabled).selected):
(.tab-bar:not(.animating) > .item:not(.selected):hover):
(.tab-bar > .item > .close,):
(body.window-inactive .tab-bar):
(body.window-inactive .tab-bar > .item):
(body.window-inactive .tab-bar > .item.selected):
(body.window-inactive .tab-bar > .item > .title):
* UserInterface/Views/Table.css:
(@media (prefers-dark-interface)):
(.table,):
(.table > .header > .sortable:active):
(.table > .header > :matches(.sort-ascending, .sort-descending)):
(.table > .header > :matches(.sort-ascending, .sort-descending)::after):
* UserInterface/Views/TextEditor.css:
(@media (prefers-dark-interface)):
(.text-editor > .CodeMirror .execution-line):
(.text-editor > .CodeMirror .execution-range-highlight:not(.CodeMirror-selectedtext),):
* UserInterface/Views/TimelineDataGrid.css:
(@media (prefers-dark-interface)):
(.data-grid th:matches(.sort-ascending, .sort-descending)):
* UserInterface/Views/TimelineIcons.css:
(@media (prefers-dark-interface)):
(.time-icon .icon):
* UserInterface/Views/TimelineOverview.css:
(@media (prefers-dark-interface)):
(.timeline-overview > .navigation-bar.timelines):
(.timeline-overview:not(.frames) > .graphs-container > .timeline-overview-graph:nth-child(even)):
(.timeline-overview.edit-instruments > .tree-outline.timelines .item:not(:first-child),):
* UserInterface/Views/TimelineRecordingContentView.css:
(@media (prefers-dark-interface)):
(.content-view.timeline-recording > .content-browser > .navigation-bar > .item.scope-bar.default-item-selected > .multiple):
(.content-view.timeline-recording > .content-browser > .navigation-bar > .item.scope-bar.default-item-selected > .multiple .arrows):
* UserInterface/Views/Toolbar.css:
(@media (prefers-dark-interface)):
(body .toolbar):
(body.window-inactive .toolbar):
(body.latest-mac .toolbar .item.button,):
(body.latest-mac .toolbar .search-bar > input[type="search"]):
(body.latest-mac .toolbar .search-bar > input[type="search"]:focus):
(body.latest-mac .toolbar .search-bar > input[type="search"]::placeholder):
(body.latest-mac.window-inactive .toolbar .search-bar > input[type="search"]::placeholder):
(body.latest-mac.window-inactive .toolbar .search-bar > input[type="search"]::-webkit-search-results-button):
(body.latest-mac .toolbar .dashboard-container):
(body.latest-mac .toolbar .item.button:active):
(body.latest-mac.window-inactive .toolbar .item.button,):
* UserInterface/Views/TreeOutline.css:
(@media (prefers-dark-interface)):
(.tree-outline .item .subtitle):
* UserInterface/Views/Variables.css:
(@media (prefers-dark-interface)):
(:root):
(body.window-inactive):
(body.window-inactive *):
* UserInterface/Views/WebSocketContentView.css:
(@media (prefers-dark-interface)):
(.web-socket.content-view .data-grid table.data tr.revealed):
(.web-socket.content-view .data-grid.variable-height-rows table.data tr.outgoing):
(.web-socket.content-view .data-grid.variable-height-rows table.data tr.non-text-frame):
* UserInterface/Views/XHRBreakpointPopover.css:
(@media (prefers-dark-interface)):
(.popover .xhr-breakpoint-content > .editor-wrapper > .editor):
2018-09-17 Devin Rousso <drousso@apple.com>
Web Inspector: generate CSSKeywordCompletions from backend values
https://bugs.webkit.org/show_bug.cgi?id=189041
Reviewed by Joseph Pecoraro.
Moves the longhands map to `WI.CSSKeywordCompletions` for more global access. Creates an
aliases map to support completions on aliases with the same values as the non-alias name.
Removes all keyword-only properties from `WI.CSSKeywordCompletions._propertyKeywordMap` as
they are now generated by the backend (kept for compatibility).
* UserInterface/Models/CSSCompletions.js:
(WI.CSSCompletions):
(WI.CSSCompletions.requestCSSCompletions.propertyNamesCallback):
(WI.CSSCompletions.prototype.isShorthandPropertyName):
* UserInterface/Models/CSSKeywordCompletions.js:
(WI.CSSKeywordCompletions.forProperty.addKeywordsForName): Added.
(WI.CSSKeywordCompletions.forProperty):
(WI.CSSKeywordCompletions.addCustomCompletions):
* UserInterface/Models/CSSProperty.js:
(WI.CSSProperty.isInheritedPropertyName):
2018-09-15 Devin Rousso <drousso@apple.com>
Web Inspector: REGRESSION: breakpoint context menu appears twice in DOM tree
https://bugs.webkit.org/show_bug.cgi?id=189308
Reviewed by Joseph Pecoraro.
* UserInterface/Controllers/DOMBreakpointTreeController.js:
(WI.DOMBreakpointTreeController.appendBreakpointContextMenuItems):
Set a symbol on the `contextMenu` to ensure that the same items are not added twice.
2018-09-14 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Source View doesn't scroll to show line when breakpoint is hit inside of <script> in HTML resource
https://bugs.webkit.org/show_bug.cgi?id=189638
<rdar://problem/43359278>
Reviewed by Matt Baker.
Pausing in Document resources on page load have special considerations where we
may not receive their full content immediately, so we may synthesize inline script
content for the resource until we have full content. Unfortunately, when we get
full content and update the TextEditor we were losing the revealed position and
other editor information. This change specifically targets those cases, by
re-applying editor state when updating such a resource from partial to full content.
* UserInterface/Views/SourceCodeTextEditor.js:
(WI.SourceCodeTextEditor.prototype._contentAvailable):
Signal to the editor that when updating the content it should carry
over editor state. Only do this if we had partial content before.
* UserInterface/Views/TextEditor.js:
(WI.TextEditor):
(WI.TextEditor.prototype.set repeatReveal):
Provide a way to signal we should restore state when update the content.
(WI.TextEditor.set string.update):
(WI.TextEditor.prototype.set string):
When repeatReveal was enabled, restore editor state such as the
revealed location and text selection.
2018-09-14 Devin Rousso <webkit@devinrousso.com>
Web Inspector: Record actions performed on ImageBitmapRenderingContext
https://bugs.webkit.org/show_bug.cgi?id=181341
Reviewed by Joseph Pecoraro.
* UserInterface/Models/Recording.js:
(WI.Recording.fromPayload):
(WI.Recording.prototype.createContext):
* UserInterface/Models/RecordingAction.js:
(WI.RecordingAction._prototypeForType):
(WI.RecordingAction.prototype.getImageParameters):
* UserInterface/Views/RecordingActionTreeElement.js:
(WI.RecordingActionTreeElement._classNameForAction.classNameForActionName):
* UserInterface/Views/RecordingContentView.js:
(WI.RecordingContentView):
(WI.RecordingContentView.prototype.get navigationItems):
(WI.RecordingContentView.prototype.updateActionIndex):
(WI.RecordingContentView.prototype.shown):
(WI.RecordingContentView.prototype.hidden):
(WI.RecordingContentView.prototype._generateContentFromSnapshot): Renamed.
(WI.RecordingContentView.prototype._updateImageGrid):
(WI.RecordingContentView.prototype._generateContentCanvasWebGL): Deleted.
* UserInterface/Views/CanvasContentView.js:
(WI.CanvasContentView):
2018-09-13 Jamal Nasser <jamaln@mail.com>
Web Inspector: Dark Mode: bezier curve editor should be updated
https://bugs.webkit.org/show_bug.cgi?id=187657
Reviewed by Matt Baker.
* UserInterface/Views/DarkMode.css:
(@media (prefers-dark-interface)):
(.bezier-editor > .bezier-preview-timing):
(.bezier-editor > .bezier-container .bezier-curve):
(.bezier-editor > .bezier-container .linear-curve):
(.bezier-editor > .bezier-preview):
(.bezier-editor > .bezier-preview > div):
(.bezier-editor > .bezier-container .control-handle):
(.bezier-editor > .bezier-container .control-line):
2018-09-13 Matt Baker <mattbaker@apple.com>
Web Inspector: Timelines: clicking a row in Script > Events grid triggers Location popover when column is hidden
https://bugs.webkit.org/show_bug.cgi?id=189603
<rdar://problem/44431403>
Reviewed by Joseph Pecoraro.
TimelineDataGrid controls showing/hiding the call frame popover, with subclasses
overriding callFramePopoverAnchorElement to position it. This patch adds
another overridable base class method, shouldShowCallFramePopover, which subclasses
can use to block the popover when the Location column is hidden.
* UserInterface/Views/DataGrid.js:
(WI.DataGrid.prototype.layout):
(WI.DataGrid.prototype._positionResizerElements):
(WI.DataGrid.prototype._isColumnVisible): Deleted.
* UserInterface/Views/LayoutTimelineDataGrid.js:
(WI.LayoutTimelineDataGrid.prototype.shouldShowCallFramePopover):
(WI.LayoutTimelineDataGrid):
* UserInterface/Views/ScriptTimelineDataGrid.js:
(WI.ScriptTimelineDataGrid.prototype.shouldShowCallFramePopover):
(WI.ScriptTimelineDataGrid):
* UserInterface/Views/TimelineDataGrid.js:
(WI.TimelineDataGrid.prototype.shouldShowCallFramePopover):
(WI.TimelineDataGrid.prototype._dataGridSelectedNodeChanged):
2018-09-13 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Opening inspector with a selected element might immediately scroll that element off screen in the DOM Tree outline
https://bugs.webkit.org/show_bug.cgi?id=189569
<rdar://problem/44397098>
Reviewed by Devin Rousso.
* UserInterface/Views/DOMTreeContentView.js:
(WI.DOMTreeContentView.prototype.layout):
Re-select the selected DOM node in the DOM Tree when the view resizes.
Typically this can happen if the sidebar opens/closes/resizes, in which
case we will want the selected DOM node to stay in view even if the DOM
tree starts wrapping earlier content.
2018-09-12 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: fix test case failures in js-isLikelyStackTrace.html
https://bugs.webkit.org/show_bug.cgi?id=180664
Reviewed by Devin Rousso.
* UserInterface/Models/StackTrace.js:
(WI.StackTrace.isLikelyStackTrace):
In a quick benchmark 50% of the time was rebuilding the same complex regular
expression over and over again. Instead just build the regex once and reset
it before each use.
2018-09-12 Devin Rousso <drousso@apple.com>
Web Inspector: imported recordings are unable to be viewed after navigation
https://bugs.webkit.org/show_bug.cgi?id=189208
Reviewed by Joseph Pecoraro.
Move the "Imported Recordings" folder to the top level (instead of under "Overview") so that
it is selectable when there are no canvases but there is an imported recording.
* UserInterface/Controllers/CanvasManager.js:
(WI.CanvasManager.prototype._removeCanvas):
Null out the `source` of each `WI.Recording` for the removed `WI.Canvas`.
* UserInterface/Views/CanvasTabContentView.js:
(WI.CanvasTabContentView):
(WI.CanvasTabContentView.prototype._removeCanvas):
Add each `WI.Recording`for the removed `WI.Canvas` to the "Imported Recordings" folder.
* UserInterface/Views/CanvasContentView.js:
(WI.CanvasContentView.prototype.refresh):
(WI.CanvasContentView.prototype.initialLayout):
(WI.CanvasContentView.prototype._showError):
Drive-by: don't recreate the error preview element if it already exists.
* UserInterface/Views/CanvasSidebarPanel.js:
(WI.CanvasSidebarPanel.prototype.updateRepresentedObjects): Added.
(WI.CanvasSidebarPanel.prototype.shown):
(WI.CanvasSidebarPanel.prototype._currentRepresentedObjectsDidChange): Deleted.
2018-09-11 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Fix typo "vritualized"
https://bugs.webkit.org/show_bug.cgi?id=189511
Reviewed by Devin Rousso.
* UserInterface/Views/TreeOutline.js:
(WI.TreeOutline):
(WI.TreeOutline.prototype.registerScrollVirtualizer):
(WI.TreeOutline.prototype.updateVirtualizedElements):
2018-09-10 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Address some ESLint warnings
https://bugs.webkit.org/show_bug.cgi?id=188824
Reviewed by Matt Baker.
* .eslintrc:
* UserInterface/Base/Platform.js:
* UserInterface/Controllers/AuditManager.js:
* UserInterface/Controllers/BasicBlockAnnotator.js:
* UserInterface/Controllers/CallFrameTreeController.js:
* UserInterface/Controllers/HARBuilder.js:
* UserInterface/Models/AuditReport.js:
* UserInterface/Models/AuditResult.js:
* UserInterface/Models/AuditTestCase.js:
* UserInterface/Models/AuditTestSuite.js:
* UserInterface/Models/Cookie.js:
* UserInterface/Models/SourceCodePosition.js:
* UserInterface/Test/FrontendTestHarness.js:
* UserInterface/Test/TestSuite.js:
* UserInterface/Views/CanvasContentView.js:
* UserInterface/Views/CollectionContentView.js:
* UserInterface/Views/ContentBrowser.js:
* UserInterface/Views/CookieStorageContentView.js:
* UserInterface/Views/DataGrid.js:
* UserInterface/Views/DatabaseTableContentView.js:
* UserInterface/Views/FindBanner.js:
* UserInterface/Views/JSONResourceContentView.js:
* UserInterface/Views/LogContentView.js:
* UserInterface/Views/ResourceSidebarPanel.js:
* UserInterface/Views/SourceCodeTextEditor.js:
* UserInterface/Views/SpreadsheetTextField.js:
* UserInterface/Workers/Formatter/FormatterUtilities.js:
2018-09-06 Andy Estes <aestes@apple.com>
[Apple Pay] Rename the -apple-pay-button-type value "checkout" to "check-out"
https://bugs.webkit.org/show_bug.cgi?id=189366
<rdar://problem/44193218>
Reviewed by Sam Weinig.
* UserInterface/Models/CSSKeywordCompletions.js:
2018-08-31 Jamal Nasser <xnasser@outlook.com>
Added a CSS rule to DarkMode.css to fix color on sidebar toggle.
<https://webkit.org/b/189139>
Reviewed by Matt Baker.
* UserInterface/Views/DarkMode.css:
(@media (prefers-dark-interface)):
(.sidebar > .panel.details.css-style > .content ~ .options-container > .toggle-class-toggle):
2018-08-29 David Kilzer <ddkilzer@apple.com>
Remove empty directories from from svn.webkit.org repository
<https://webkit.org/b/189081>
* WebInspectorUI.esproj: Removed.
2018-08-28 Devin Rousso <drousso@apple.com>
console.log() shows (anonymous function) instead of the passed string when a certain format is used
https://bugs.webkit.org/show_bug.cgi?id=188946
<rdar://problem/43756428>
Reviewed by Brian Burg.
Stack trace URLs are much more likely to follow the following format:
<protocol>://<path>:<line>:<column>
Modify the test regexp to always require that a protocol exists and to check that there are
no ":" inside the protocol or path. Additionally, stack traces usually have more than one
frame, so return false if there isn't more than one line.
* UserInterface/Models/StackTrace.js:
(WI.StackTrace.isLikelyStackTrace):
2018-08-28 Devin Rousso <drousso@apple.com>
Web Inspector: REGRESSION: CanvasSidebarPanel is empty for imported recordings
https://bugs.webkit.org/show_bug.cgi?id=189061
Reviewed by Brian Burg.
When recordings are imported, they don't have an associated `WI.Canvas`, meaning that the
`WI.Recording` is never added to the canvas' `WI.RecordingCollection`. Previously, the
canvas sidebar relied upon the `ItemAdded` event to update the recording `WI.ScopeBar`.
Since the imported recording isn't ever added to the collection, this is never fired.
This patch moves the function call that updates the `WI.ScopeBar` to a more universal path,
ensuring that no matter how a `WI.Recording` is set for the sidebar, it will be shown.
* UserInterface/Views/CanvasSidebarPanel.js:
(WI.CanvasSidebarPanel.prototype.set recording):
(WI.CanvasSidebarPanel.prototype._recordingAdded):
(WI.CanvasSidebarPanel.prototype._updateRecordingScopeBar):
2018-08-28 Devin Rousso <drousso@apple.com>
Web Inspector: Search bar is too narrow in some localizations
https://bugs.webkit.org/show_bug.cgi?id=189060
<rdar://problem/43006369>
Reviewed by Brian Burg.
* UserInterface/Views/Toolbar.css:
(.toolbar .search-bar):
2018-08-27 Keith Rollin <krollin@apple.com>
Unreviewed build fix -- disable LTO for production builds
* Configurations/Base.xcconfig:
2018-08-27 Andy Estes <aestes@apple.com>
Teach Web Inspector how to complete keywords for -apple-pay-button-style and -apple-pay-button-type
https://bugs.webkit.org/show_bug.cgi?id=189001
Reviewed by Devin Rousso.
* UserInterface/Models/CSSKeywordCompletions.js:
2018-08-27 Devin Rousso <drousso@apple.com>
Web Inspector: when scrolling a virtualized TreeOutline, only update the DOM periodically
https://bugs.webkit.org/show_bug.cgi?id=188960
Reviewed by Brian Burg.
After each `updateVirtualizedElements` call, remember the `WI.TreeElement` that is located
halfway within the visible list. When handling each "scroll", only regenerate the
`WI.TreeOutline` DOM if the user has scrolled `extraRows` distance.
* UserInterface/Views/TreeOutline.js:
(WI.TreeOutline):
(WI.TreeOutline.prototype.registerScrollVirtualizer):
(WI.TreeOutline.prototype.updateVirtualizedElements):
(WI.TreeOutline.prototype._calculateVirtualizedValues): Added.
2018-08-27 Devin Rousso <drousso@apple.com>
Web Inspector: provide autocompletion for event breakpoints
https://bugs.webkit.org/show_bug.cgi?id=188717
Reviewed by Brian Burg.
* UserInterface/Controllers/DOMTreeManager.js:
(WI.DOMTreeManager):
(WI.DOMTreeManager.prototype.getSupportedEventNames): Added.
* UserInterface/Views/EventBreakpointPopover.js:
(WI.EventBreakpointPopover):
(WI.EventBreakpointPopover.prototype.show):
(WI.EventBreakpointPopover.prototype.dismiss): Added.
(WI.EventBreakpointPopover.prototype.completionSuggestionsClickedCompletion): Added.
(WI.EventBreakpointPopover.prototype._presentOverTargetElement):
(WI.EventBreakpointPopover.prototype._showSuggestionsView): Added.
2018-08-27 Keith Rollin <krollin@apple.com>
Build system support for LTO
https://bugs.webkit.org/show_bug.cgi?id=187785
<rdar://problem/42353132>
Reviewed by Dan Bernstein.
Update Base.xcconfig and DebugRelease.xcconfig to optionally enable
LTO.
* Configurations/Base.xcconfig:
* Configurations/DebugRelease.xcconfig:
2018-08-27 Devin Rousso <drousso@apple.com>
Web Inspector: REGRESSION: virtualized TreeOutline is empty when filtering
https://bugs.webkit.org/show_bug.cgi?id=188959
Reviewed by Brian Burg.
* UserInterface/Views/TreeElement.js:
(WI.TreeElement.prototype.set hidden):
Only set `focusedTreeElement` if the `WI.TreeElement` is selected and not hidden. There is
no reason to focus a hidden or unselected `WI.TreeElement`.
2018-08-23 Devin Rousso <drousso@apple.com>
Web Inspector: Color picker: can't enter decimal numbers for opacity
https://bugs.webkit.org/show_bug.cgi?id=187026
<rdar://problem/41446500>
Reviewed by Brian Burg.
After every "input" event, we update the `color` value of the `WI.ColorPicker` based on a
generated string using the values of the various <input>. The issue with this approach is
that adding a decimal point (e.g. "0.") would still be construed as 0, meaning that the
color wouldn't change and would instead be reset back to it's old value. This patch adds an
early return if the newly generated color has the same value as the current color, thereby
meaning that the `color` wouldn't change when changing from "0" to "0.".
* UserInterface/Views/ColorPicker.js:
(WI.ColorPicker):
(WI.ColorPicker.createColorInput):
(WI.ColorPicker.prototype._handleColorInputInput):
2018-08-23 Simon Fraser <simon.fraser@apple.com>
Add support for dumping GC heap snapshots, and a viewer
https://bugs.webkit.org/show_bug.cgi?id=186416
Reviewed by Joseph Pecoraro.
Make a way to dump information about the GC heap that is useful for looking for leaked
or abandoned objects. This dump is obtained (on Apple platforms) via:
notifyutil -p com.apple.WebKit.dumpGCHeap
which writes a JSON file to /tmp which can then be loaded into the viewer in Tools/GCHeapInspector.
This leverages the heap snapshot used by Web Inspector, adding an alternate format for
the snapshot JSON that adds additional data about objects and why they are GC roots.
The generated bindings code is changed to include the output root reason from isReachableFromOpaqueRoots(),
and to implement heapSnapshot() which provides the address of the wrapped object. A new IDL attribute,
CustomHeapSnapshot, is used to allow custom heapSnapshot() implementations for classes like JSDocument
that need to decorate the heap snapshot cell data with things like the document URL.
GCController registers a notifyutil callback which gathers the debug heap snapshot, and dumps it
to a file in /tmp. The file path is printed out to the system log.
* UserInterface/Workers/HeapSnapshot/HeapSnapshot.js:
(HeapSnapshot):
2018-08-23 Brian Burg <bburg@apple.com>
Web Inspector: fix typos in some compositing reasons
https://bugs.webkit.org/show_bug.cgi?id=188905
<rdar://problem/43624825>
Reviewed by Simon Fraser.
* Localizations/en.lproj/localizedStrings.js:
* UserInterface/Views/LayerTreeDetailsSidebarPanel.js:
(WI.LayerTreeDetailsSidebarPanel.prototype._populateListOfCompositingReasons):
(WI.LayerTreeDetailsSidebarPanel):
* UserInterface/Views/Layers3DContentView.js:
(WI.Layers3DContentView.prototype._updateReasonsList):
(WI.Layers3DContentView):
2018-08-23 Devin Rousso <drousso@apple.com>
Web Inspector: support breakpoints for timers and animation-frame events
https://bugs.webkit.org/show_bug.cgi?id=188778
Reviewed by Brian Burg.
Add a `type` to `WI.EventBreakpoint` that matches `DOMDebugger.EventBreakpointType`:
- `AnimationFrame` for `requestAnimationFrame`
- `Listener` for any named DOM Event
- `Timer` for `setTimeout` and `setInterval`
Modified `WI.EventBreakpointPopover` to provide ways for selecting these other types, which
is then passed to `WI.DOMDebuggerManager`, which now calls through to the newly added
`DOMDebugger.removeEventBreakpoint` and `DOMDebugger.setEventBreakpoint` that sets
breakpoints for all event types.
* Localizations/en.lproj/localizedStrings.js:
* UserInterface/Images/EventBreakpointAnimationFrame.svg: Added.
* UserInterface/Images/EventBreakpointListener.svg: Renamed from Source/WebInspectorUI/UserInterface/Images/EventBreakpoint.svg.
* UserInterface/Images/EventBreakpointTimer.svg: Added.
* UserInterface/Controllers/DOMDebuggerManager.js:
(WI.DOMDebuggerManager.supportsEventBreakpoints): Added.
(WI.DOMDebuggerManager.prototype.eventBreakpointForTypeAndEventName): Added.
(WI.DOMDebuggerManager.prototype.addEventBreakpoint):
(WI.DOMDebuggerManager.prototype.removeEventBreakpoint.breakpointRemoved): Added.
(WI.DOMDebuggerManager.prototype.removeEventBreakpoint):
(WI.DOMDebuggerManager.prototype._updateEventBreakpoint):
(WI.DOMDebuggerManager.prototype.eventBreakpointForEventName): Deleted.
* UserInterface/Controllers/DOMTreeManager.js:
(WI.DOMTreeManager.prototype.setBreakpointForEventListener):
* UserInterface/Controllers/DebuggerManager.js:
(WI.DebuggerManager.prototype._pauseReasonFromPayload):
* UserInterface/Models/EventBreakpoint.js:
(WI.EventBreakpoint):
(WI.EventBreakpoint.fromPayload):
(WI.EventBreakpoint.prototype.get type): Added.
(WI.EventBreakpoint.prototype.get serializableInfo):
(WI.EventBreakpoint.prototype.saveIdentityToCookie):
* UserInterface/Views/DebuggerSidebarPanel.js:
(WI.DebuggerSidebarPanel.prototype._updatePauseReasonSection):
(WI.DebuggerSidebarPanel.prototype.willDismissPopover):
* UserInterface/Views/EventBreakpointPopover.js:
(WI.EventBreakpointPopover):
(WI.EventBreakpointPopover.prototype.get breakpoint): Added.
(WI.EventBreakpointPopover.prototype.show):
(WI.EventBreakpointPopover.prototype.show.createOption): Added.
(WI.EventBreakpointPopover.prototype.dismiss): Added.
(WI.EventBreakpointPopover.prototype._presentOverTargetElement):
(WI.EventBreakpointPopover.prototype._handleTypeSelectChange): Added.
(WI.EventBreakpointPopover.prototype.get result): Deleted.
(WI.EventBreakpointPopover.prototype.get value): Deleted.
* UserInterface/Views/EventBreakpointPopover.css:
(.popover .event-breakpoint-content > .event-type): Added.
(.popover .event-breakpoint-content > input): Deleted.
* UserInterface/Views/EventBreakpointTreeElement.js:
(WI.EventBreakpointTreeElement):
* UserInterface/Views/EventBreakpointTreeElement.css:
(.breakpoint.event.animation-frame:not(.breakpoint-paused-icon) .icon): Added.
(.breakpoint.event.listener:not(.breakpoint-paused-icon) .icon): Added.
(.breakpoint.event.timer:not(.breakpoint-paused-icon) .icon): Added.
(.breakpoint.event:not(.breakpoint-paused-icon) .icon): Deleted.
2018-08-23 Devin Rousso <drousso@apple.com>
Web Inspector: `console.inspect(sessionStorage)` first time does not show Session Storage content view if Storage tab was previously unvisited
https://bugs.webkit.org/show_bug.cgi?id=188801
Reviewed by Matt Baker.
* UserInterface/Base/Main.js:
(WI.tabContentViewClassForRepresentedObject):
(WI._storageWasInspected):
Since the `WI.StorageSidebarPanel` is not created until the `WI.StorageTabContentView` is
created, the `WI.StorageManager.Event.DOMStorageObjectWasInspected` and
`WI.StorageManager.Event.DatabaseWasInspected` events do not reach the sidebar. We should
follow what `WI._domNodeWasInspected` does and additionally call `WI.showRepresentedObject`
on the inspected object.
2018-08-23 Devin Rousso <drousso@apple.com>
Web Inspector: REGRESSION: InspectorStyleSheet not visible in the resources sidebar
https://bugs.webkit.org/show_bug.cgi?id=188819
<rdar://problem/43579039>
Reviewed by Brian Burg.
* UserInterface/Models/ResourceCollection.js:
(WI.ResourceCollection.prototype.objectIsRequiredType):
2018-08-23 Joseph Pecoraro <pecoraro@apple.com>
JSContext Inspector: Scripts not showing up in Resources tab
https://bugs.webkit.org/show_bug.cgi?id=188814
<rdar://problem/43576117>
Reviewed by Brian Burg.
* UserInterface/Views/ResourceSidebarPanel.js:
(WI.ResourceSidebarPanel.prototype._addScript):
This path shouldn't apply to JSContext inspection which will
never have a pageTarget and but doesn't have a mainResource.
2018-08-22 Devin Rousso <drousso@apple.com>
Web Inspector: cannot delete multiple event breakpoints by repeatedly hitting delete
https://bugs.webkit.org/show_bug.cgi?id=188803
<rdar://problem/43572838>
Reviewed by Matt Baker.
* UserInterface/Views/DebuggerSidebarPanel.js:
(WI.DebuggerSidebarPanel.prototype._domBreakpointAddedOrRemoved):
(WI.DebuggerSidebarPanel.prototype._eventBreakpointAddedOrRemoved):
2018-08-22 Carlos Garcia Campos <cgarcia@igalia.com>
Unreviewed. Do not include TreeOutlineDataGridSynchronizer.js in inspector main.
The script was removed in r235151.
* UserInterface/Main.html:
2018-08-21 Matt Baker <mattbaker@apple.com>
Web Inspector: Remove TreeOutlineDataGridSynchronizer
https://bugs.webkit.org/show_bug.cgi?id=188449
<rdar://problem/43107980>
Reviewed by Devin Rousso.
* UserInterface/Views/HeapAllocationsTimelineView.js:
(WI.HeapAllocationsTimelineView.prototype.layout):
* UserInterface/Views/LayoutTimelineView.js:
(WI.LayoutTimelineView.prototype._processPendingRecords):
* UserInterface/Views/NetworkTimelineView.js:
(WI.NetworkTimelineView.prototype._processPendingRecords):
* UserInterface/Views/RenderingFrameTimelineView.js:
(WI.RenderingFrameTimelineView.prototype._processPendingRecords):
(WI.RenderingFrameTimelineView.prototype.dataGridNodeForTreeElement): Deleted.
* UserInterface/Views/ScriptDetailsTimelineView.js:
(WI.ScriptDetailsTimelineView.prototype._processPendingRecords):
* UserInterface/Views/TimelineDataGrid.js:
(WI.TimelineDataGrid):
(WI.TimelineDataGrid.prototype.reset):
(WI.TimelineDataGrid.prototype.shown):
(WI.TimelineDataGrid.prototype.addRowInSortOrder):
(WI.TimelineDataGrid.prototype._refreshDirtyDataGridNodes):
(WI.TimelineDataGrid.prototype._sort):
(WI.TimelineDataGrid.prototype.treeElementForDataGridNode): Deleted.
(WI.TimelineDataGrid.prototype.dataGridNodeForTreeElement): Deleted.
* UserInterface/Views/TreeOutlineDataGridSynchronizer.js: Removed.
2018-08-21 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: ⌘G does not while find banner is focused
https://bugs.webkit.org/show_bug.cgi?id=188815
<rdar://problem/43577158>
Reviewed by Matt Baker.
* UserInterface/Base/Main.js:
Allow an <input> element to be the current focus element, which is what will
our global KeyboardShortcut handlers will interact with. Also make sure
that showing the find banner for the first time still focuses it.
2018-08-21 Devin Rousso <drousso@apple.com>
Web Inspector: REGRESSION(r235095): duplicate actions existing in WI.CanvasSidebarPanel
https://bugs.webkit.org/show_bug.cgi?id=188808
Reviewed by Joseph Pecoraro.
* UserInterface/Views/CanvasSidebarPanel.js:
(WI.CanvasSidebarPanel.prototype._recordingChanged):
Check that the `WI.RecordingAction` is not already represented in the `WI.TreeOutline`
before adding it.
* UserInterface/Views/CanvasSidebarPanel.css:
(.sidebar > .panel.navigation.canvas > .content > .recording-content > .tree-outline .item.processing .subtitle > progress):
Drive-by: vertically center the <progress> shown for `WI.RecordingFrame` during processing.
2018-08-21 Devin Rousso <drousso@apple.com>
Web Inspector: Canvas: provide default icon for all actions
https://bugs.webkit.org/show_bug.cgi?id=188807
Reviewed by Matt Baker.
* UserInterface/Views/RecordingActionTreeElement.css:
(.item.action > .icon):
(.item.action.initial-state > .icon): Deleted.
2018-08-21 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Rulers.svg is missing
https://bugs.webkit.org/show_bug.cgi?id=188806
<rdar://problem/43574273>
Reviewed by Devin Rousso.
* UserInterface/Images/Rulers.svg: Added.
2018-08-20 Devin Rousso <drousso@apple.com>
Web Inspector: allow breakpoints to be set for specific event listeners
https://bugs.webkit.org/show_bug.cgi?id=183138
Reviewed by Joseph Pecoraro.
* Localizations/en.lproj/localizedStrings.js:
* UserInterface/Models/EventBreakpoint.js:
(WI.EventBreakpoint):
(WI.EventBreakpoint.fromPayload): Added.
(WI.EventBreakpoint.prototype.get eventListener): Added.
* UserInterface/Controllers/DOMDebuggerManager.js:
(WI.DOMDebuggerManager):
* UserInterface/Controllers/DOMTreeManager.js:
(WI.DOMTreeManager):
(WI.DOMTreeManager.prototype.get eventBreakpoints): Added.
(WI.DOMTreeManager.prototype._setDocument):
(WI.DOMTreeManager.prototype.setEventListenerDisabled):
(WI.DOMTreeManager.prototype.setBreakpointForEventListener): Added.
(WI.DOMTreeManager.prototype.removeBreakpointForEventListener): Added.
(WI.DOMTreeManager.prototype.breakpointForEventListenerId): Added.
* UserInterface/Controllers/EventBreakpointTreeController.js:
(WI.EventBreakpointTreeController):
* UserInterface/Views/DebuggerSidebarPanel.js:
(WI.DebuggerSidebarPanel.prototype._updatePauseReasonSection):
* UserInterface/Views/EventListenerSectionGroup.js:
(WI.EventListenerSectionGroup):
(WI.EventListenerSectionGroup.prototype._createDisabledToggleRow):
(WI.EventListenerSectionGroup.prototype._createBreakpointToggleRow): Added.
* UserInterface/Views/EventBreakpointTreeElement.js:
(WI.EventBreakpointTreeElement):
(WI.EventBreakpointTreeElement.prototype.ondelete):
(WI.EventBreakpointTreeElement.prototype.populateContextMenu):
(WI.EventBreakpointTreeElement.prototype._toggleBreakpoint):
2018-08-20 Devin Rousso <drousso@apple.com>
Web Inspector: Canvas tab: allow recording processing to be stopped midway
https://bugs.webkit.org/show_bug.cgi?id=185152
Reviewed by Joseph Pecoraro.
Previously, `WI.Recording` used a `WI.YieldableTask` to process every action in such a way
as to not block the UI. The downside to this approach was that it used a message view to
indicate the progress of this process, and prevented the user from viewing the `WI.Recording`
until that process was completed.
This patch changes `WI.Recording` to instead use `async/await` and fire events whenever a
`WI.RecordingAction` (and `WI.RecordingFrame`) finished processing, allowing it to be added
to the recording `WI.TreeOutline` and selected by the user. Additionally, a pause/resume
button is added to the `WI.CanvasSidebarPanel` so the user has greater control over what
how much of the `WI.Recording` they want to process.
* Localizations/en.lproj/localizedStrings.js:
* UserInterface/Base/Utilities.js:
(Promise.delay)
Utility function for promisifying `setTimeout`.
* UserInterface/Models/Recording.js:
(WI.Recording):
(WI.Recording.prototype.get processing): Added.
(WI.Recording.prototype.get ready): Added.
(WI.Recording.prototype.startProcessing): Added.
(WI.Recording.prototype.stopProcessing): Added.
(WI.Recording.prototype.async._process): Added.
(WI.Recording.prototype.process): Deleted.
(WI.Recording.prototype.async.yieldableTaskWillProcessItem): Deleted.
(WI.Recording.prototype.async.yieldableTaskDidFinish): Deleted.
* UserInterface/Models/RecordingAction.js:
(WI.RecordingAction):
(WI.RecordingAction.prototype.get ready): Added.
(WI.RecordingAction.prototype.async.swizzle):
(WI.RecordingAction.prototype.apply):
* UserInterface/Models/RecordingInitialStateAction.js:
(WI.RecordingInitialStateAction):
* UserInterface/Views/CanvasSidebarPanel.js:
(WI.CanvasSidebarPanel):
(WI.CanvasSidebarPanel.prototype.set recording):
(WI.CanvasSidebarPanel.prototype.set action):
(WI.CanvasSidebarPanel.prototype._recordingAdded):
(WI.CanvasSidebarPanel.prototype._recordingRemoved):
(WI.CanvasSidebarPanel.prototype._currentRepresentedObjectsDidChange):
(WI.CanvasSidebarPanel.prototype._treeOutlineSelectionDidChange):
(WI.CanvasSidebarPanel.prototype._recordingChanged):
(WI.CanvasSidebarPanel.prototype._recordingChanged.createPauseButton): Added.
(WI.CanvasSidebarPanel.prototype._recordingChanged.createResumeButton): Added.
(WI.CanvasSidebarPanel.prototype._createRecordingFrameTreeElement): Added.
(WI.CanvasSidebarPanel.prototype._createRecordingActionTreeElement): Added.
(WI.CanvasSidebarPanel.prototype._handleRecordingProcessedAction): Added.
(WI.CanvasSidebarPanel.prototype._handleRecordingStartProcessingFrame): Added.
* UserInterface/Views/CanvasSidebarPanel.css:
(.sidebar > .panel.navigation.canvas > .content > .recording-content > .tree-outline .item.processing .subtitle > progress): Added.
(.sidebar > .panel.navigation.canvas > .content > .recording-content > .tree-outline:matches(:focus, .force-focus) .item.processing.selected .subtitle > progress): Added.
(.sidebar > .panel.navigation.canvas > .content > .recording-content > .tree-outline .item.processing .subtitle::before): Added.
(.sidebar > .panel.navigation.canvas > .content > .recording-content > .recording-processing-options): Added.
(.sidebar > .panel.navigation.canvas > .content > .recording-content > .recording-processing-options > .indeterminate-progress-spinner): Added.
(.sidebar > .panel.navigation.canvas > .content > .recording-content > .indeterminate-progress-spinner): Deleted.
* UserInterface/Views/RecordingContentView.js:
(WI.RecordingContentView):
(WI.RecordingContentView.prototype.updateActionIndex):
(WI.RecordingContentView.prototype.initialLayout):
(WI.RecordingContentView.prototype._updateCanvasPath):
(WI.RecordingContentView.prototype._handleRecordingProcessedAction): Added.
(WI.RecordingContentView.prototype._updateProcessProgress): Deleted.
(WI.RecordingContentView.prototype._handleRecordingProcessedActionSwizzle): Deleted.
(WI.RecordingContentView.prototype._handleRecordingProcessedActionApply): Deleted.
* UserInterface/Views/RecordingContentView.css:
(.content-view:not(.tab).recording > header > .slider-container > .slider-value): Added.
* UserInterface/Views/FolderTreeElement.js:
(WI.FolderTreeElement):
* UserInterface/Views/GeneralTreeElement.js:
(WI.GeneralTreeElement.prototype.get statusElement): Added.
(WI.GeneralTreeElement.prototype._updateTitleElements):
* UserInterface/Views/RecordingContentView.js:
(WI.CanvasContentView.prototype._handleViewShaderButtonClicked):
(WI.CanvasContentView.prototype._handleViewRecordingButtonClicked):
Drive-by: `WI.Collection` doesn't have a `values()` accessor for the underlying `Set`.
* UserInterface/Views/RecordingNavigationSidebarPanel.css: Removed.
* UserInterface/Views/RecordingNavigationSidebarPanel.js: Removed.
These files are no longer used since they were "merged" into `WI.CanvasSidebarPanel`.
2018-08-20 Devin Rousso <webkit@devinrousso.com>
Web Inspector: Canvas tab: create icons for recordings/shaders in the preview tile
https://bugs.webkit.org/show_bug.cgi?id=183650
Reviewed by Joseph Pecoraro.
* Localizations/en.lproj/localizedStrings.js:
* UserInterface/Views/CanvasContentView.js:
(WI.CanvasContentView):
(WI.CanvasContentView.prototype.initialLayout):
(WI.CanvasContentView.prototype.attached):
(WI.CanvasContentView.prototype._recordingStopped):
(WI.CanvasContentView.prototype._shaderProgramAdded):
(WI.CanvasContentView.prototype._shaderProgramRemoved):
(WI.CanvasContentView.prototype._updateViewRelatedItems):
(WI.CanvasContentView.prototype._handleViewShaderButtonClicked):
(WI.CanvasContentView.prototype._handleViewRecordingButtonClicked):
(WI.CanvasContentView.prototype._addRecording): Deleted.
(WI.CanvasContentView.prototype._handleRecordingSelectElementChange): Deleted.
* UserInterface/Views/CanvasOverviewContentView.css:
(.content-view.canvas-overview .content-view.canvas > footer > .view-related-items):
(.content-view.canvas-overview .content-view.canvas > footer > .view-related-items > :matches(.view-shader, .view-recording)):
(.content-view.canvas-overview .content-view.canvas > footer > .view-related-items > img + img):
(.content-view.canvas-overview .content-view.canvas > footer > .view-related-items > .view-shader):
(.content-view.canvas-overview .content-view.canvas > footer > .view-related-items > .view-recording):
(.content-view.canvas-overview .content-view.canvas > footer > .recordings): Deleted.
(.content-view.canvas-overview .content-view.canvas > footer > .recordings::before): Deleted.
(.content-view.canvas-overview .content-view.canvas > footer > .recordings > select): Deleted.
(.content-view.canvas-overview .content-view.canvas > footer .recordings > select:focus): Deleted.
Create two image buttons in the bottom left corner of each canvas tile that appear when the
canvas has associated shaders and/or recordings. Clicking each image button will function
similar to path components, in that if there is only one shader/recording, it is immediately
selected, whereas if there are multiple a dropdown is shown.
* UserInterface/Views/CanvasSidebarPanel.js:
(WI.CanvasSidebarPanel.prototype._currentRepresentedObjectsDidChange):
(WI.CanvasSidebarPanel.prototype._recordingChanged):
Drive-by: ensure that the selected recording action is properly updated when first loading a
recording and when scrubbing through one.
2018-08-16 Devin Rousso <drousso@apple.com>
Web Inspector: support breakpoints for arbitrary event names
https://bugs.webkit.org/show_bug.cgi?id=183118
Reviewed by Joseph Pecoraro.
Create UI for setting breakpoints on event names. Ties into renamed DOMDebugger commands,
specifically `setEventBreakpoint` and `removeEventBreakpoint`, that will pause execution if
any DOM event is fired that matches any previously registered breakpoints.
Event breakpoints are distinguished by name, and they currently apply globally, meaning
that only one breakpoint per event name can be registered.
Event breakpoints are created in the Debugger tab in a new "Event Breakpoints" section in
the Navigation sidebar. A new type of popover, EventBreakpointPopover, is used, but right
now all it contains is a basic text input for the event name. Similarly, a new TreeElement
subclass, EventBreakpointTreeElement, is used when showing the list of event listener
breakpoints, but all it shows now is the event name.
The majority of the logic in this patch was derived from XHR breakpoints.
* Localizations/en.lproj/localizedStrings.js:
* UserInterface/Main.html:
* UserInterface/Test.html:
* UserInterface/Images/EventBreakpoint.svg: Added.
* UserInterface/Models/EventBreakpoint.js: Added.
(WI.EventBreakpoint):
(WI.EventBreakpoint.prototype.get eventName):
(WI.EventBreakpoint.prototype.get disabled):
(WI.EventBreakpoint.prototype.set disabled):
(WI.EventBreakpoint.prototype.get serializableInfo):
(WI.EventBreakpoint.prototype.saveIdentityToCookie):
* UserInterface/Controllers/DOMDebuggerManager.js:
(WI.DOMDebuggerManager):
(WI.DOMDebuggerManager.prototype.get eventBreakpoints): Added.
(WI.DOMDebuggerManager.prototype.eventBreakpointForEventName): Added.
(WI.DOMDebuggerManager.prototype.addEventBreakpoint): Added.
(WI.DOMDebuggerManager.prototype.removeEventBreakpoint): Added.
(WI.DOMDebuggerManager.prototype._speculativelyResolveBreakpoints):
(WI.DOMDebuggerManager.prototype._updateEventBreakpoint.breakpointUpdated): Added.
(WI.DOMDebuggerManager.prototype._updateEventBreakpoint): Added.
(WI.DOMDebuggerManager.prototype._resolveEventBreakpoint): Added.
(WI.DOMDebuggerManager.prototype._saveEventBreakpoints): Added.
(WI.DOMDebuggerManager.prototype._eventBreakpointDisabledStateDidChange): Added.
* UserInterface/Controllers/DebuggerManager.js:
(WI.DebuggerManager.prototype._pauseReasonFromPayload):
* UserInterface/Controllers/EventBreakpointTreeController.js: Added.
(WI.EventBreakpointTreeController):
(WI.EventBreakpointTreeController.prototype.revealAndSelect):
(WI.EventBreakpointTreeController.prototype._eventBreakpointAdded):
(WI.EventBreakpointTreeController.prototype._eventBreakpointRemoved):
(WI.EventBreakpointTreeController.prototype._addTreeElement):
* UserInterface/Views/DebuggerSidebarPanel.js:
(WI.DebuggerSidebarPanel):
(WI.DebuggerSidebarPanel.prototype._updatePauseReasonSection):
(WI.DebuggerSidebarPanel.prototype._eventBreakpointAddedOrRemoved): Added.
(WI.DebuggerSidebarPanel.prototype._addEventBreakpointButtonClicked): Added.
(WI.DebuggerSidebarPanel.prototype.willDismissPopover):
* UserInterface/Views/EventBreakpointTreeElement.js: Added.
(WI.EventBreakpointTreeElement):
(WI.EventBreakpointTreeElement.prototype.onattach):
(WI.EventBreakpointTreeElement.prototype.ondetach):
(WI.EventBreakpointTreeElement.prototype.ondelete):
(WI.EventBreakpointTreeElement.prototype.onenter):
(WI.EventBreakpointTreeElement.prototype.onspace):
(WI.EventBreakpointTreeElement.prototype.populateContextMenu):
(WI.EventBreakpointTreeElement.prototype._statusImageElementClicked):
(WI.EventBreakpointTreeElement.prototype._statusImageElementFocused):
(WI.EventBreakpointTreeElement.prototype._statusImageElementMouseDown):
(WI.EventBreakpointTreeElement.prototype._toggleBreakpoint):
(WI.EventBreakpointTreeElement.prototype._updateStatus):
* UserInterface/Views/EventBreakpointTreeElement.css: Added.
(.breakpoint.event-listener:not(.breakpoint-paused-icon) .icon):
* UserInterface/Views/EventBreakpointPopover.js: Added.
(WI.EventBreakpointPopover):
(WI.EventBreakpointPopover.prototype.get result):
(WI.EventBreakpointPopover.prototype.get value):
(WI.EventBreakpointPopover.prototype.show):
(WI.EventBreakpointPopover.prototype._presentOverTargetElement):
* UserInterface/Views/EventBreakpointPopover.css: Added.
(.popover .event-listener-breakpoint-content):
(.popover .event-listener-breakpoint-content > input):
* UserInterface/Views/NavigationSidebarPanel.js:
(WI.NavigationSidebarPanel.prototype._isTreeElementWithoutRepresentedObject):
2018-08-16 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Show Initiator information in Network Table
https://bugs.webkit.org/show_bug.cgi?id=188590
<rdar://problem/43305488>
Reviewed by Matt Baker.
* UserInterface/Views/NetworkResourceDetailView.js:
(WI.NetworkResourceDetailView):
(WI.NetworkResourceDetailView.prototype.shown):
(WI.NetworkResourceDetailView.prototype.willShowWithCookie):
(WI.NetworkResourceDetailView.prototype._showContentViewForNavigationItem):
When a ResourceDetailView gets shown, it may also want to show its initial content view
with a cookie as the cookie may contain position highlight information.
* UserInterface/Views/NetworkTableContentView.js:
(WI.NetworkTableContentView):
(WI.NetworkTableContentView.prototype._showResourceDetailView):
(WI.NetworkTableContentView.prototype.showRepresentedObject):
When showing a represented object, pass the cookie information on to the detail
view's so that it may include the cookie when showing the final content view.
(WI.NetworkTableContentView.prototype.tablePopulateCell):
(WI.NetworkTableContentView.prototype._populateInitiatorCell):
(WI.NetworkTableContentView.prototype.initialLayout):
New initiator column contains a source code link to the call site.
(WI.NetworkTableContentView.prototype._generateSortComparator):
(WI.NetworkTableContentView.prototype._entryForResource):
Entry data for the initiator is a display string that can be sorted easily.
2018-08-16 Joseph Pecoraro <pecoraro@apple.com>
LayoutTest inspector/worker/debugger-pause.html sometimes times out
https://bugs.webkit.org/show_bug.cgi?id=188580
Reviewed by Matt Baker.
* UserInterface/Protocol/Target.js:
(WI.Target.prototype.get mainResource):
(WI.Target.prototype.set mainResource):
Dispatch an event when the Main Resource is set.
2018-08-15 Aditya Keerthi <akeerthi@apple.com>
[Datalist] Add button to TextFieldInputs with a datalist
https://bugs.webkit.org/show_bug.cgi?id=187741
Reviewed by Tim Horton.
Add keyword completion for 'list-button'.
* UserInterface/External/CodeMirror/css.js:
* UserInterface/Models/CSSKeywordCompletions.js:
2018-08-15 Devin Rousso <drousso@apple.com>
Web Inspector: REGRESSION(r?): the probe sidebar doesn't show up when adding probes
https://bugs.webkit.org/show_bug.cgi?id=188594
Reviewed by Brian Burg.
* UserInterface/Views/ProbeDetailsSidebarPanel.js:
(WI.ProbeDetailsSidebarPanel.prototype.set inspectedProbeSets):
(WI.ProbeDetailsSidebarPanel.prototype.initialLayout):
Add checks to ensure that DOM elements for each probe section exist before trying to
add/remove them from the sidebar. This can happen if probes are inspected before the sidebar
is shown for the first time.
* UserInterface/Views/ProbeSetDataGrid.js:
(WI.ProbeSetDataGrid):
(WI.ProbeSetDataGrid.columnIdentifierForProbe): Added.
(WI.ProbeSetDataGrid.prototype._setupProbe):
(WI.ProbeSetDataGrid.prototype._teardownProbe):
(WI.ProbeSetDataGrid.prototype._probeExpressionChanged):
* UserInterface/Views/ProbeSetDataGridNode.js:
(WI.ProbeSetDataGridNode.prototype.set frame):
Provide better column identifiers for each probe's `WI.DataGrid`. It's possible for the
numeric probe ID value to be stringified when passing it into the constructor of
`WI.DataGrid`, which will not match the original numeric value on later retrieval.
2018-08-14 Matt Baker <mattbaker@apple.com>
Web Inspector: Table should not center rows when scrolling them into view
https://bugs.webkit.org/show_bug.cgi?id=188593
<rdar://problem/43311660>
Reviewed by Devin Rousso.
* UserInterface/Views/Table.js:
(WI.Table.prototype._handleKeyDown):
2018-08-13 Matt Baker <mattbaker@apple.com>
Web Inspector: Table should handle row selection instead of the table delegate
https://bugs.webkit.org/show_bug.cgi?id=188534
<rdar://problem/43253335>
Reviewed by Joseph Pecoraro.
Row selection should be implemented by Table, rather than its delegate.
* UserInterface/Views/NetworkTableContentView.js:
(WI.NetworkTableContentView.prototype.tableShouldSelectRow):
(WI.NetworkTableContentView.prototype.tableCellMouseDown): Deleted.
Prevent selection unless the clicked cell belongs to the name column.
* UserInterface/Views/ResourceCookiesContentView.js:
(WI.ResourceCookiesContentView.prototype.tableShouldSelectRow):
Always prevent selection.
* UserInterface/Views/Table.js:
(WI.Table):
(WI.Table.prototype._handleMouseDown):
2018-08-12 Aditya Keerthi <akeerthi@apple.com>
[macOS] Color wells should appear pressed when presenting a color picker
https://bugs.webkit.org/show_bug.cgi?id=188477
Reviewed by Tim Horton.
Add keyword completion for 'color-well'.
* UserInterface/External/CodeMirror/css.js:
* UserInterface/Models/CSSKeywordCompletions.js:
2018-08-09 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Dark Mode: SourceCodeTextEditor error/warning text widget is too light
https://bugs.webkit.org/show_bug.cgi?id=188126
<rdar://problem/42674963>
Reviewed by Matt Baker.
* UserInterface/Views/DarkMode.css:
(@media (prefers-dark-interface)):
(.source-code.text-editor > .CodeMirror .issue-widget.warning,): Added.
(.source-code.text-editor > .CodeMirror .issue-widget.error,): Added.
2018-08-07 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Add another Protocol Version (iOS 12)
https://bugs.webkit.org/show_bug.cgi?id=188359
<rdar://problem/42981364>
Reviewed by Brian Burg.
* UserInterface/Protocol/Legacy/12.0/InspectorBackendCommands.js: Added.
* Versions/Inspector-iOS-12.0.json: Added.
2018-08-06 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Global search sometimes returns duplicate results for a resource
https://bugs.webkit.org/show_bug.cgi?id=188270
<rdar://problem/42867498>
Reviewed by Brian Burg.
* UserInterface/Views/SearchSidebarPanel.js:
(WI.SearchSidebarPanel.prototype.performSearch.resourcesCallback):
Avoid duplicate search results in the frontend. We should also fix the backend
but a frontend fix will also be desired for backends that have the issue.
2018-08-03 Alex Christensen <achristensen@webkit.org>
Fix spelling of "overridden"
https://bugs.webkit.org/show_bug.cgi?id=188315
Reviewed by Darin Adler.
* UserInterface/Views/ContentBrowserTabContentView.js:
(WI.ContentBrowserTabContentView.prototype.treeElementForRepresentedObject):
* UserInterface/Views/GeneralTreeElement.js:
(WI.GeneralTreeElement.prototype.ondetach):
* UserInterface/Views/NavigationBar.js:
(WI.NavigationBar.prototype.get sizesToFit):
* UserInterface/Views/NavigationSidebarPanel.js:
(WI.NavigationSidebarPanel.prototype.shouldFilterPopulate):
* UserInterface/Views/TextEditor.js:
(WI.TextEditor.prototype.canBeFormatted):
* UserInterface/Views/TreeElement.js:
(WI.TreeElement.prototype.onpopulate):
2018-08-01 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Dark Mode: SourceCodeTextEditor thread indicator widget is too light
https://bugs.webkit.org/show_bug.cgi?id=188119
<rdar://problem/42670811>
Reviewed by Matt Baker.
Make the background of the thread indicator widget darker.
Reduce the number of HTML elements and simplify CSS by removing the HTML element that drew an arrow and using clip-path on inline widgets instead.
* UserInterface/Views/DarkMode.css:
(@media (prefers-dark-interface)):
(.text-editor > .CodeMirror .execution-line):
(.text-editor > .CodeMirror .execution-range-highlight:not(.CodeMirror-selectedtext),):
* UserInterface/Views/SourceCodeTextEditor.css:
(.source-code.text-editor .CodeMirror-linewidget):
(.source-code.text-editor > .CodeMirror .line-indicator-widget.inline):
(@media (prefers-dark-interface)):
(.source-code.text-editor > .CodeMirror .thread-widget.inline):
* UserInterface/Views/SourceCodeTextEditor.js:
(WI.SourceCodeTextEditor.prototype._updateThreadIndicatorWidget):
(WI.SourceCodeTextEditor.prototype._updateIssueWidgetForIssues):
* UserInterface/Views/TextEditor.css:
(@media (prefers-dark-interface)):
(.text-editor > .CodeMirror .execution-line.primary .CodeMirror-linenumber::after):
* UserInterface/Views/Variables.css:
(:root):
2018-08-01 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Dark Mode: disabled breakpoints banner is too light
https://bugs.webkit.org/show_bug.cgi?id=188120
<rdar://problem/42671348>
Reviewed by Matt Baker.
* UserInterface/Views/DebuggerSidebarPanel.css:
(@media (prefers-dark-interface)):
(.sidebar > .panel.navigation.debugger .warning-banner):
2018-07-31 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Include a full URL tooltip when hovering the name in the Network Tab
https://bugs.webkit.org/show_bug.cgi?id=188199
Reviewed by Matt Baker.
* UserInterface/Views/NetworkTableContentView.js:
(WI.NetworkTableContentView.prototype._populateNameCell):
Give a tooltip to the entire cell since the entire cell has interactivity.
2018-07-30 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Dark Mode: Search sidebar panel text field has a white background
https://bugs.webkit.org/show_bug.cgi?id=188128
<rdar://problem/42678270>
Reviewed by Matt Baker.
Make the search bar in Search tab match the style of the filter bar.
* UserInterface/Views/DarkMode.css:
(@media (prefers-dark-interface)):
(:matches(.search-bar, .filter-bar) > input[type="search"],):
(:matches(.search-bar, .filter-bar) > input[type="search"]::placeholder):
(:matches(.search-bar, .filter-bar) > input[type="search"]:focus):
(.filter-bar > input[type="search"]): Deleted.
(.filter-bar > input[type="search"]::placeholder): Deleted.
(.filter-bar > input[type="search"]:focus): Deleted.
2018-07-26 Ryan Haddad <ryanhaddad@apple.com>
Unreviewed, rolling out r234281.
Broke internal builds.
Reverted changeset:
"[Datalist] Add button to TextFieldInputs with a datalist"
https://bugs.webkit.org/show_bug.cgi?id=187741
https://trac.webkit.org/changeset/234281
2018-07-26 Aditya Keerthi <akeerthi@apple.com>
[Datalist] Add button to TextFieldInputs with a datalist
https://bugs.webkit.org/show_bug.cgi?id=187741
Reviewed by Tim Horton.
Add keyword completion for 'list-button'.
* UserInterface/External/CodeMirror/css.js:
* UserInterface/Models/CSSKeywordCompletions.js:
2018-07-25 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Dark Mode: Breakpoint editor in JS debugger has inconsistent background
https://bugs.webkit.org/show_bug.cgi?id=188026
Reviewed by Matt Baker.
* UserInterface/Views/DarkMode.css:
(@media (prefers-dark-interface)):
(.edit-breakpoint-popover-condition):
(.breakpoint-action-eval-editor):
2018-07-22 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Dark Mode: remove odd-looking top border
https://bugs.webkit.org/show_bug.cgi?id=187885
Reviewed by Matt Baker.
This border doesn't exist in the light mode, and it shouldn't be in the dark mode either.
* UserInterface/Views/DarkMode.css:
(@media (prefers-dark-interface)):
(body .toolbar):
2018-07-20 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Dark Mode: Layers tab background should be dark
https://bugs.webkit.org/show_bug.cgi?id=187660
<rdar://problem/42179616>
Reviewed by Brian Burg.
* UserInterface/Views/Layers3DContentView.js:
(WI.Layers3DContentView.prototype.initialLayout):
* UserInterface/Views/Variables.css:
(:root):
2018-07-19 Ross Kirsling <ross.kirsling@sony.com>
Web Inspector: Layers visualization shouldn't select on mousedown
https://bugs.webkit.org/show_bug.cgi?id=187488
Reviewed by Matt Baker.
* UserInterface/Views/Layers3DContentView.js:
(WI.Layers3DContentView):
(WI.Layers3DContentView.prototype.initialLayout):
(WI.Layers3DContentView.prototype._canvasMouseDown):
(WI.Layers3DContentView.prototype._canvasMouseUp):
Don't update selection on mousedown, update on mouseup!
Specifically, only update when mousedown & mouseup targets are the same and mousemove hasn't been triggered.
2018-07-19 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Dark Mode: poor contrast for Search Tab's "the page's content has changed" message
https://bugs.webkit.org/show_bug.cgi?id=187792
Reviewed by Brian Burg.
* UserInterface/Views/DarkMode.css:
(@media (prefers-dark-interface)):
(:root):
Make the background color slightly more yellow and less red. This slightly dicreases the contrast
but makes the text look less like an error.
* UserInterface/Views/SearchSidebarPanel.css:
(@media (prefers-dark-interface)):
(.sidebar > .panel.navigation.search.changed > .banner):
2018-07-18 Matt Baker <mattbaker@apple.com>
Web Inspector: REGRESSION(r232591): CodeMirrorEditor should not use a RegExp lineSeparator option
https://bugs.webkit.org/show_bug.cgi?id=187772
<rdar://problem/42331640>
Reviewed by Joseph Pecoraro.
* UserInterface/Views/CodeMirrorEditor.js:
(WI.CodeMirrorEditor.create):
(WI.CodeMirrorEditor):
CodeMirror should be left to auto-detect line separators. By default
it detects \n, \r\n, and \r. By specifying a regular expression we
merely cause problems when CodeMirror uses the supplied lineSeparator
when joining its array of lines together.
* UserInterface/Views/TextEditor.js:
(WI.TextEditor.set string.update):
(WI.TextEditor.prototype.set string):
This assertion was only true when we forced "\n" line endings everywhere.
It no longer holds for source text with "\r\n" (Windows-style) line endings.
2018-07-16 Matt Baker <mattbaker@apple.com>
Web Inspector: Fix execution highlighting after r233820
https://bugs.webkit.org/show_bug.cgi?id=187703
<rdar://problem/42246167>
Reviewed by Joseph Pecoraro.
* UserInterface/Views/SourceCodeTextEditor.js:
(WI.SourceCodeTextEditor.prototype.textEditorExecutionHighlightRange):
* UserInterface/Views/TextEditor.js:
(WI.TextEditor.prototype.currentPositionToOriginalPosition):
(WI.TextEditor.prototype._updateExecutionRangeHighlight):
2018-07-16 Aaron Chu <aaron_chu@apple.com>
AX: Audit Tab should have an Audit Manager
https://bugs.webkit.org/show_bug.cgi?id=184071
<rdar://problem/38946364>
Reviewed by Brian Burg.
This implements the AuditManager for the audit feature. This patch revolves
around building out an AuditManager that facilitates an audit. The AuditManager
is responsible for managing and storing AuditReports and AuditTestSuites. It is
also tasked to decide how to run a test -- whether as a test case or as a test
suite. This patch also includes 4 models with which the AuditManager works to
perform an audit and to generate a report. These models include AuditTestCase,
which as a collection is stored inside an AuditTestSuite; and AuditResult,
which, as a collection is stored inside an AuditReport.
* UserInterface/Controllers/AuditManager.js: Added.
(WI.AuditManager):
(WI.AuditManager.prototype.get testSuites):
(WI.AuditManager.prototype.get reports):
(WI.AuditManager.prototype.async.runAuditTestByRepresentedObject):
(WI.AuditManager.prototype.reportForId):
(WI.AuditManager.prototype.removeAllReports):
(WI.AuditManager.prototype.async._runTestCase):
* UserInterface/Main.html:
* UserInterface/Models/AuditReport.js: Added.
(WI.AuditReport):
(WI.AuditReport.prototype.get representedTestCases):
(WI.AuditReport.prototype.get representedTestSuite):
(WI.AuditReport.prototype.get resultsData):
(WI.AuditReport.prototype.get isWritable):
(WI.AuditReport.prototype.get failedCount):
(WI.AuditReport.prototype.addResult):
(WI.AuditReport.prototype.close):
* UserInterface/Models/AuditResult.js: Added.
(WI.AuditResult):
(WI.AuditResult.prototype.get testResult):
(WI.AuditResult.prototype.get name):
(WI.AuditResult.prototype.get logLevel):
(WI.AuditResult.prototype.get failed):
* UserInterface/Models/AuditTestCase.js: Added.
(WI.AuditTestCase.prototype.get id):
(WI.AuditTestCase.prototype.get name):
(WI.AuditTestCase.prototype.get suite):
(WI.AuditTestCase.prototype.get test):
(WI.AuditTestCase.prototype.get setup):
(WI.AuditTestCase.prototype.get tearDown):
(WI.AuditTestCase.prototype.get errorDetails):
(WI.AuditTestCase):
* UserInterface/Models/AuditTestSuite.js: Added.
(WI.AuditTestSuite):
(WI.AuditTestSuite.testCaseDescriptors):
(WI.AuditTestSuite.prototype.get id):
(WI.AuditTestSuite.prototype.get name):
(WI.AuditTestSuite.prototype.get testCases):
(WI.AuditTestSuite.prototype._buildTestCasesFromDescriptors):
* UserInterface/Test.html:
2018-07-16 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Dark Mode: Console filter field buttons should be darker
https://bugs.webkit.org/show_bug.cgi?id=187626
<rdar://problem/42142744>
Reviewed by Brian Burg.
* UserInterface/Views/FindBanner.css:
(@media (prefers-dark-interface)):
(.find-banner > button.segmented):
(.find-banner > button.segmented > .glyph):
2018-07-16 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Dark Mode: selected item background color is too light
https://bugs.webkit.org/show_bug.cgi?id=187691
<rdar://problem/42225308>
Reviewed by Brian Burg.
* UserInterface/Views/DarkMode.css:
(@media (prefers-dark-interface)):
(:root):
(.tree-outline.dom li.elements-drag-over .selection-area):
(.tree-outline.dom:focus li.selected .selection-area):
2018-07-14 Kocsen Chung <kocsen_chung@apple.com>
Ensure WebKit stack is ad-hoc signed
https://bugs.webkit.org/show_bug.cgi?id=187667
Reviewed by Alexey Proskuryakov.
* Configurations/Base.xcconfig:
2018-07-13 Matt Baker <mattbaker@apple.com>
Web Inspector: REGRESSION (r195723): Improve support for resources with '\r' and '\r\n' line endings
https://bugs.webkit.org/show_bug.cgi?id=186453
<rdar://problem/39689180>
Reviewed by Joseph Pecoraro.
Now that the frontend no longer uses offsets from the original source
file to calculate positions within CodeMirror, it is possible to support
resources with '\r' and '\r\n' line endings in the editor.
* UserInterface/Views/CodeMirrorEditor.js:
(WI.CodeMirrorEditor.create):
(WI.CodeMirrorEditor):
2018-07-13 Matt Baker <mattbaker@apple.com>
Web Inspector: Basic blocks highlighting should use line/column locations instead of offsets
https://bugs.webkit.org/show_bug.cgi?id=187613
<rdar://problem/42131808>
Reviewed by Joseph Pecoraro.
* UserInterface/Controllers/BasicBlockAnnotator.js:
Basic blocks sent from the backend include offsets into the original
file, rather than line/column locations. In order to translate to positions
within CodeMirror, we need to calculate the original line and column
for each block.
(WI.BasicBlockAnnotator.prototype.insertAnnotations):
(WI.BasicBlockAnnotator.prototype._calculateBasicBlockPositions.offsetToPosition):
(WI.BasicBlockAnnotator.prototype._calculateBasicBlockPositions):
(WI.BasicBlockAnnotator.prototype._annotateBasicBlockExecutionRanges.):
(WI.BasicBlockAnnotator.prototype._annotateBasicBlockExecutionRanges):
(WI.BasicBlockAnnotator.prototype._highlightTextForBasicBlock):
* UserInterface/Models/SourceCodePosition.js:
(WI.SourceCodePosition.prototype.offsetColumn):
* UserInterface/Views/TextEditor.js:
(WI.TextEditor.prototype.getTextInRange):
(WI.TextEditor.prototype.addStyleToTextRange):
Better encapsulation for CodeMirror positions.
* UserInterface/Workers/Formatter/FormatterUtilities.js:
(get if):
Update String.prototype.lineEndings to support additional line separators.
2018-07-13 Matt Baker <mattbaker@apple.com>
Web Inspector: Execution highlighting in the frontend should be line/column-based
https://bugs.webkit.org/show_bug.cgi?id=187532
<rdar://problem/42035580>
Reviewed by Joseph Pecoraro.
Source code offsets from Esprima should not be used to calculate ranges
in CodeMirror for expression highlighting.
This also fixes a long standing bug when adjusting for the starting
position of an inline script. Previously the start offset from the script
TextRange was used for this purpose, but the value is often incorrect (see
https://bugs.webkit.org/show_bug.cgi?id=187532#c5). By using the starting
line/column instead, we avoid the problem.
* UserInterface/Models/ScriptSyntaxTree.js:
(WI.ScriptSyntaxTree.prototype.containersOfPosition):
(WI.ScriptSyntaxTree.prototype.containersOfOffset): Deleted.
* UserInterface/Models/SourceCodePosition.js:
(WI.SourceCodePosition.prototype.offsetColumn):
* UserInterface/Views/SourceCodeTextEditor.js:
(WI.SourceCodeTextEditor.prototype.textEditorExecutionHighlightRange.toInlineScriptPosition):
(WI.SourceCodeTextEditor.prototype.textEditorExecutionHighlightRange.fromInlineScriptPosition):
(WI.SourceCodeTextEditor.prototype.textEditorExecutionHighlightRange):
(WI.SourceCodeTextEditor.prototype.textEditorExecutionHighlightRange.convertRangeOffsetsToSourceCodeOffsets): Deleted.
* UserInterface/Views/TextEditor.js:
(WI.TextEditor.prototype._updateExecutionRangeHighlight):
2018-07-13 Matt Baker <mattbaker@apple.com>
Web Inspector: SourceCodePosition.js missing from Test.html
https://bugs.webkit.org/show_bug.cgi?id=187644
Reviewed by Brian Burg.
* UserInterface/Test.html:
2018-07-12 Matt Baker <mattbaker@apple.com>
Web Inspector: Type token positioning should use line/column locations from Esprima instead of offsets
https://bugs.webkit.org/show_bug.cgi?id=187612
<rdar://problem/42131910>
Reviewed by Joseph Pecoraro.
* UserInterface/Controllers/TypeTokenAnnotator.js:
(WI.TypeTokenAnnotator.prototype.insertAnnotations):
(WI.TypeTokenAnnotator.prototype._insertTypeToken):
(WI.TypeTokenAnnotator.prototype._insertToken):
Use line/column locations, instead of offsets, from the AST when calculating
token positions for CodeMirror. Once in CodeMirror's string space, we
can safely convert to/from offsets.
* UserInterface/Models/ScriptSyntaxTree.js:
Retrieve line/column locations for AST nodes, in addition to offsets.
Offsets into the original file are still needed for getting type information
from the profiler in the backend.
(WI.ScriptSyntaxTree):
(WI.ScriptSyntaxTree.prototype.filterByRange):
Filter by positions, which can be safely used from CodeMirror, instead of offsets.
(WI.ScriptSyntaxTree.prototype._createInternalSyntaxTree):
(WI.ScriptSyntaxTree.prototype.filterByRange.filterForNodesInRange): Deleted.
* UserInterface/Models/SourceCodePosition.js:
Add convenience methods for comparing line/column positions, and for
converting to the format expected by CodeMirror. SourceCodePosition could
be made to interoperate with CodeMirror by exposing properties `line`
and `ch`, but making the conversion explicit improves code readability.
(WI.SourceCodePosition.prototype.equals):
(WI.SourceCodePosition.prototype.isBefore):
(WI.SourceCodePosition.prototype.isAfter):
(WI.SourceCodePosition.prototype.isWithin):
(WI.SourceCodePosition.prototype.toCodeMirror):
(WI.SourceCodePosition):
* UserInterface/Views/TextEditor.js:
(WI.TextEditor.prototype.visibleRangePositions):
(WI.TextEditor.prototype.originalPositionToCurrentPosition):
(WI.TextEditor.prototype.currentOffsetToCurrentPosition):
(WI.TextEditor.prototype.currentPositionToCurrentOffset):
(WI.TextEditor.prototype.setInlineWidget):
2018-07-10 Fujii Hironori <Hironori.Fujii@sony.com>
REGRESSION(r229932) Use of uninitialized value in subroutine entry at copy-user-interface-resources.pl
https://bugs.webkit.org/show_bug.cgi?id=187511
Reviewed by Brian Burg.
copy-user-interface-resources.pl output warning messages unless
BUILT_PRODUCTS_DIR and BUILT_PRODUCTS_DIR env vars are defined.
* Scripts/copy-user-interface-resources.pl:
(webInspectorUIAdditionsDir): Added. Return UNDEF if
BUILT_PRODUCTS_DIR and SDKROOT env vars aren't defined.
(combineOrStripResourcesForWebKitAdditions): Check
$webInspectorUIAdditionsDir is defined.
2018-07-10 Ross Kirsling <rkirsling@gmail.com>
Web Inspector: Layers inspector should allow control-dragging to pan the 3D render
https://bugs.webkit.org/show_bug.cgi?id=185109
Reviewed by Matt Baker.
Addressed in the three.js repo itself (https://github.com/mrdoob/three.js/pull/13972),
so this patch simply updates three.js and its OrbitControls module.
* UserInterface/External/three.js/LICENSE:
* UserInterface/External/three.js/three.js:
Update to r94.
* UserInterface/External/three.js/OrbitControls.js:
Update to latest.
* UserInterface/Views/Layers3DContentView.js:
(WI.Layers3DContentView.prototype.initialLayout):
(WI.Layers3DContentView.prototype._restrictPan):
Adapt to recent changes in three.js.
2018-07-10 Matt Baker <mattbaker@apple.com>
Web Inspector: Remove unused NavigationSidebarPanel.treeElementAddedOrChanged
https://bugs.webkit.org/show_bug.cgi?id=187508
Reviewed by Joseph Pecoraro.
* UserInterface/Views/NavigationSidebarPanel.js:
(WI.NavigationSidebarPanel.prototype._treeElementAddedOrChanged):
(WI.NavigationSidebarPanel.prototype.treeElementAddedOrChanged): Deleted.
2018-07-10 Matt Baker <mattbaker@apple.com>
Web Inspector: REGRESSION (r217505): Debugger content view doesn't update when left sidebar is collapsed
https://bugs.webkit.org/show_bug.cgi?id=187482
<rdar://problem/41989190>
Reviewed by Brian Burg.
Subclasses of NavigationSidebarPanel must process tree selection changes
even when collapsed. Sidebar panels perform critical controller tasks
for their tabs, such as updating the view when pausing in the debugger,
and when the hierarchical path component selection changes.
* UserInterface/Views/DebuggerSidebarPanel.js:
(WI.DebuggerSidebarPanel.prototype._treeSelectionDidChange):
* UserInterface/Views/ResourceSidebarPanel.js:
(WI.ResourceSidebarPanel.prototype._treeSelectionDidChange):
* UserInterface/Views/SearchSidebarPanel.js:
(WI.SearchSidebarPanel.prototype._treeSelectionDidChange):
* UserInterface/Views/SourcesSidebarPanel.js:
(WI.SourcesSidebarPanel.prototype._treeSelectionDidChange):
* UserInterface/Views/StorageSidebarPanel.js:
(WI.StorageSidebarPanel._treeSelectionDidChange):
2018-07-09 Brian Burg <bburg@apple.com>
REGRESSION: Web Inspector no longer pauses in internal injected scripts like WDFindNodes.js
https://bugs.webkit.org/show_bug.cgi?id=187350
<rdar://problem/41728249>
Reviewed by Matt Baker.
* UserInterface/Base/Setting.js: Add a new setting to allow pausing in internal scripts.
* UserInterface/Controllers/DebuggerManager.js: Listen to the setting change and toggle
the backend setting accordingly. The default is to not break into internal scripts.
* UserInterface/Views/SettingsTabContentView.js:
(WI.SettingsTabContentView.prototype._createDebugSettingsView):
Expose the new setting in the Debug settings panel.
2018-07-06 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Dark Mode: resource search field has white text on white background
https://bugs.webkit.org/show_bug.cgi?id=187423
Reviewed by Timothy Hatcher.
Match the colors of sidebar filter fields.
* UserInterface/Views/DarkMode.css:
(@media (prefers-dark-interface)):
(.find-banner > input[type="search"]):
2018-07-04 Tim Horton <timothy_horton@apple.com>
Introduce PLATFORM(IOSMAC)
https://bugs.webkit.org/show_bug.cgi?id=187315
Reviewed by Dan Bernstein.
* Configurations/Base.xcconfig:
2018-06-28 Matt Baker <mattbaker@apple.com>
Web Inspector: REGRESSION (r213000): copy from Search results content view broken
https://bugs.webkit.org/show_bug.cgi?id=187020
<rdar://problem/40928766>
Reviewed by Timothy Hatcher.
Since WI._copy listens for a copy event from the document, it is called
after CodeMirror handles the event and sets clipboard data. If WI._copy
finds a custom copy handler to call, that handler can determine whether
to overwrite the current clipboard data, or leave it alone.
SearchTabContentView's handleCopyEvent method should return early if the
content tree outline doesn't have the focus. This prevents the selection
in the TextEditor from being overwritten, without any special knowledge of
the content browser's current view.
* UserInterface/Views/SearchTabContentView.js:
(WI.SearchTabContentView.prototype.handleCopyEvent):
2018-06-25 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Dark Mode: Box Model section should have dark background
https://bugs.webkit.org/show_bug.cgi?id=186976
Reviewed by Brian Burg.
Replace all instances of black text on white background with the default text and background colors.
* UserInterface/Views/BoxModelDetailsSectionRow.css:
(@media (prefers-dark-interface)):
(.details-section .row.box-model):
(.details-section .row.box-model .label):
(.details-section .row.box-model :matches(.position, .margin, .border, .padding, .content)):
(.details-section .row.box-model:not(.hovered) :matches(.margin, .border, .padding, .content),):
(.details-section .row.box-model .margin):
(.details-section .row.box-model .border):
2018-06-25 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Dark Mode: color outline is too dark
https://bugs.webkit.org/show_bug.cgi?id=186975
Reviewed by Brian Burg.
Make the outline lighter than the background.
* UserInterface/Views/DarkMode.css:
(@media (prefers-dark-interface)):
(.hover-menu > svg > :matches(path, rect)):
2018-06-25 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Dark Mode: Media query names are unreadable
https://bugs.webkit.org/show_bug.cgi?id=186974
Reviewed by Brian Burg.
Change media query names from dark blue to light blue.
* UserInterface/Views/DarkMode.css:
(@media (prefers-dark-interface)):
(.CodeMirror .CodeMirror-lines .CodeMirror-matchingbracket):
(.cm-s-default .cm-attribute):
2018-06-25 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Dark Mode: Network headers colors are too dim
https://bugs.webkit.org/show_bug.cgi?id=186985
Reviewed by Brian Burg.
Increasing the luminance of network header colors by increasing lightness and brightness.
* UserInterface/Views/DarkMode.css:
(@media (prefers-dark-interface)):
(:root):
2018-06-25 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Dark Mode: Font guideline colors are too bright
https://bugs.webkit.org/show_bug.cgi?id=186986
Reviewed by Brian Burg.
Make the guidelines less distractive from the font glyphs.
* UserInterface/Views/DarkMode.css:
(@media (prefers-dark-interface)):
(.content-view.resource.font .preview > .line):
(.content-view.resource.font .metric.top):
(.content-view.resource.font .metric.baseline):
(.content-view.resource.font .metric.middle):
(.content-view.resource.font .metric.xheight):
(.content-view.resource.font .metric.bottom):
2018-06-20 Daniel Bates <dabates@apple.com>
Web Inspector: All non-Same-Site cookies are marked as Same-Site Strict in Storage tab
https://bugs.webkit.org/show_bug.cgi?id=186867
<rdar://problem/41175424>
Reviewed by Matt Baker.
Fixes an issue where cookies that do not have a Same-Site policy would be marked up as Same-
Site Strict in Web Inspector's cookie storage content view (under the storage tab).
* UserInterface/Views/CookieStorageContentView.js:
(WI.CookieStorageContentView.prototype._rebuildTable): Only compute the display name if
we cookie.sameSite is non-null and is not WI.Cookie.SameSiteType.None. Moreover, remove
an extraneous call to WI.Cookie.parseSameSiteAttributeValue() as cookie.SameSite represents
the already parsed value (one of the WI.Cookie.SameSiteType-scoped values).
2018-06-18 Brian Burg <bburg@apple.com>
Web Inspector: TypeError: Array.prototype.sort passed bad value in NetworkTableContentView _updateSortAndFilteredEntries
https://bugs.webkit.org/show_bug.cgi?id=186787
<rdar://problem/41175680>
Reviewed by Timothy Hatcher.
* UserInterface/Views/NetworkTableContentView.js:
(WI.NetworkTableContentView.prototype._updateSortAndFilteredEntries):
2018-06-13 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: open source Dark Mode
https://bugs.webkit.org/show_bug.cgi?id=186606
Reviewed by Timothy Hatcher.
The dark mode is currently only available on macOS Mojave via prefers-dark-interface CSS media query.
* UserInterface/Main.html:
* UserInterface/Views/DarkMode.css: Added.
(@media (prefers-dark-interface)):
(:root):
(body.window-inactive):
(body.window-inactive *):
(#main):
(.tree-outline.dom li.selected .selection-area):
(.tab-bar > .item > .icon):
(.go-to-arrow):
(.resource-link,):
(.expand-list-button):
(:matches(img, canvas).show-grid):
(.formatted-object,):
(.formatted-null,):
(.editing):
(.editing, .editing *):
(.text-editor > .CodeMirror .execution-line):
(.text-editor > .CodeMirror .execution-range-highlight:not(.CodeMirror-selectedtext),):
(.details-section > .header):
(.details-section > .header > label):
(.details-section .details-section,):
(.details-section .details-section:not(.collapsed) > .header):
(.details-section > .content > .group > .row.simple > .label):
(.details-section > .content > .group:nth-child(even)):
(.details-section > .content > .group > .row:matches(.empty, .text)):
(.data-grid th):
(.data-grid td .subtitle):
(.data-grid:matches(:focus, .force-focus) tr.selected td .subtitle):
(body:not(.window-inactive, .window-docked-inactive) .data-grid:matches(:focus, .force-focus) tr.editable.selected .cell-content > input):
(.data-grid tr.editable .cell-content > input):
(.data-grid td.spanning):
(.object-tree,):
(.object-preview .name):
(.object-preview > .size):
(.tab-bar):
(.tab-bar > .item):
(.tab-bar > .item > .title):
(.tab-bar > .item:not(.disabled).selected):
(.tab-bar:not(.animating) > .item:not(.selected):hover):
(.tab-bar > .item > .close):
(body.window-inactive .tab-bar):
(body.window-inactive .tab-bar > .item):
(body.window-inactive .tab-bar > .item.selected):
(body.window-inactive .tab-bar > .item > .title):
(body .toolbar):
(body.window-inactive .toolbar):
(body.latest-mac .toolbar .item.button,):
(body.latest-mac .toolbar .search-bar > input[type="search"]):
(body.latest-mac .toolbar .search-bar > input[type="search"]:focus):
(body.latest-mac .toolbar .search-bar > input[type="search"]::placeholder):
(body.latest-mac.window-inactive .toolbar .search-bar > input[type="search"]::placeholder):
(body.latest-mac.window-inactive .toolbar .search-bar > input[type="search"]::-webkit-search-results-button):
(body.latest-mac .toolbar .dashboard-container):
(body.latest-mac .toolbar .item.button:active):
(body.latest-mac.window-inactive .toolbar .item.button,):
(.navigation-bar .item.divider):
(.toolbar .item.button):
(.toolbar .item.button:not(.disabled):active):
(.toolbar .item.button:not(.disabled):matches(:focus, .activate.activated)):
(.toolbar .item.button:not(.disabled):active:matches(:focus, .activate.activated)):
(.toolbar .dashboard.default > .item > div):
(.toolbar .dashboard.default > .item.enabled > div):
(.toolbar .dashboard.default > .item.enabled:hover):
(.toolbar .dashboard.default > .item.enabled:hover > div):
(.toolbar .dashboard.default > .resourcesCount > img,):
(body.latest-mac .toolbar .dashboard .item.button):
(.dashboard-container .advance-arrow):
(.toolbar .dashboard.debugger):
(.dashboard.debugger .navigation-bar .item.button > .glyph):
(.dashboard.debugger > .location .function-name):
(.dashboard.debugger > .location .go-to-link):
(.dashboard.debugger > .divider):
(.popover .edit-breakpoint-popover-content > label.toggle):
(.popover .edit-breakpoint-popover-content > table > tr > th):
(.breakpoint-action-block-body):
(.breakpoint-action-block-body > .description):
(.breakpoint-action-append-button,):
(.popover .xhr-breakpoint-content > .editor-wrapper > .editor):
(.navigation-bar .item.button):
(.spreadsheet-style-declaration-editor .property:not(.disabled) .value):
(.spreadsheet-css-declaration):
(.spreadsheet-css-declaration .selector:focus,):
(.spreadsheet-css-declaration.locked .origin::after):
(.spreadsheet-css-declaration .origin .go-to-link,):
(.spreadsheet-style-declaration-editor :matches(.name, .value).editing):
(.spreadsheet-style-declaration-editor .property.has-warning):
(.spreadsheet-style-declaration-editor .property.has-warning .warning):
(.spreadsheet-css-declaration .media-label):
(.quick-console):
(.syntax-highlighted,):
(.cm-s-default,):
(.CodeMirror .jump-to-symbol-highlight,):
(.console-prompt):
(.completion-suggestions):
(.completion-suggestions-container > .item):
(.CodeMirror-cursor):
(.CodeMirror .CodeMirror-gutters):
(.cm-s-default .cm-link):
(.cm-s-default .cm-m-xml.cm-attribute,):
(.cm-s-default .cm-meta):
(.cm-s-default .cm-variable-3):
(.cm-s-default .cm-builtin):
(.tree-outline .item .subtitle):
(.object-tree-property .getter,):
(.item.object-tree-property.prototype-property):
(.object-tree-property.prototype-property:hover,):
(.object-tree-property .value.error):
(.tree-outline.dom):
(.tree-outline.dom li.selected + ol.children.expanded):
(.tree-outline.dom .shadow):
(.tree-outline.dom li.parent.shadow + ol.children.expanded,):
(.showing-find-banner .tree-outline.dom .search-highlight):
(.sidebar > .panel.dom-node-details .details-section.dom-node-event-listeners > .header > .filter:hover):
(.sidebar > .panel.details.css-style > .content > .pseudo-classes > .group > label):
(.spreadsheet-css-declaration.locked):
(.spreadsheet-css-declaration .selector.style-attribute):
(.spreadsheet-style-declaration-editor .property:matches(.invalid-name, .other-vendor, .overridden):not(.disabled) .content > *):
(.inline-swatch):
(.spreadsheet-style-panel .section-header):
(.spreadsheet-style-panel .section-header .node-link:hover):
(.computed-style-properties.details-section):
(.details-section.style-box-model:not(.collapsed) > :matches(.header, .content)):
(.table,):
(.table > .header > .sortable:active):
(.table > .header > :matches(.sort-ascending, .sort-descending)):
(.table > .header > :matches(.sort-ascending, .sort-descending)::after):
(.scope-bar > li):
(.timeline-overview > .navigation-bar.timelines):
(.timeline-overview:not(.frames) > .graphs-container > .timeline-overview-graph:nth-child(even)):
(.timeline-overview.edit-instruments > .tree-outline.timelines .item:not(:first-child),):
(.time-icon .icon):
(.data-grid th:matches(.sort-ascending, .sort-descending)):
(.content-view.timeline-recording > .content-browser > .navigation-bar > .item.scope-bar.default-item-selected > .multiple):
(.content-view.timeline-recording > .content-browser > .navigation-bar > .item.scope-bar.default-item-selected > .multiple .arrows):
(.content-view.settings .navigation-bar):
(.content-view.settings .navigation-bar .item.radio.button.text-only.selected):
(.new-tab.tab.content-view):
(.filter-bar > input[type="search"]):
(.filter-bar > input[type="search"]::placeholder):
(.filter-bar > input[type="search"]:focus):
(.content-view.resource.image):
(.console-messages):
(.console-item):
(.console-messages:focus .console-item.selected):
(.console-messages:focus .console-item.selected + .console-item):
(.console-session:first-of-type .console-session-header):
(.console-session:not(:first-of-type) .console-session-header):
(.console-messages a):
(.console-messages a:hover):
(.console-messages:focus .console-item.selected::after):
(.console-error-level):
(.console-error-level:not(.filtered-out, .filtered-out-by-search), .console-error-level:not(.filtered-out, .filtered-out-by-search) + .console-item):
(.console-warning-level):
(.console-warning-level:not(.filtered-out, .filtered-out-by-search), .console-warning-level:not(.filtered-out, .filtered-out-by-search) + .console-item):
(.search-in-progress .console-item:not(.filtered-out-by-search) .highlighted):
(.search-in-progress .console-item:not(.filtered-out-by-search) .highlighted.selected):
(.source-code.text-editor > .CodeMirror .error):
(.source-code.text-editor > .CodeMirror .warning):
(.source-code.text-editor > .CodeMirror .issue-widget):
(.source-code.text-editor > .CodeMirror .issue-widget.inline.warning):
(.source-code.text-editor > .CodeMirror .issue-widget.inline.warning > .arrow):
(.source-code.text-editor > .CodeMirror .issue-widget.inline.error):
(.source-code.text-editor > .CodeMirror .issue-widget.inline.error > .arrow):
(.console-message .syntax-highlighted):
(.console-warning-level .console-message-text):
(.console-error-level .console-message-text):
(.console-user-command > .console-message-text):
(.console-message .repeat-count):
(.call-frame .subtitle,):
(.call-frame:hover .subtitle .source-link,):
(.call-frame .separator):
(.quick-console.showing-log):
(.find-banner.console-find-banner > input[type=search]:not(:placeholder-shown)):
(.network-resource-detail):
(.network-resource-detail .item.close > .glyph):
(.network .network-resource-detail .navigation-bar .item.radio.button.text-only.selected):
(.resource-headers .value):
(.network-table .cell.domain > .lock):
(.resource-sizes > .content .label):
(.popover.waterfall-popover):
(.resource-timing-breakdown > table > tr.header:not(.total-row) > td):
(.resource-timing-breakdown > table > tr > td.label,):
(.resource-timing-breakdown > table hr):
(.sidebar > .panel.details.css-style > .content ~ .options-container > .new-rule):
(.content-view.tab.canvas .navigation-bar > .item .canvas-overview .icon):
(.web-socket.content-view .data-grid table.data tr.revealed):
(.web-socket.content-view .data-grid.variable-height-rows table.data tr.outgoing):
(.web-socket.content-view .data-grid.variable-height-rows table.data tr.non-text-frame):
(.item.action:not(.initial-state)::before):
(.tree-outline .item.action.visual:not(.selected, .invalid)):
(.item.action:not(.initial-state) > .icon):
(.tree-outline:not(.hide-disclosure-buttons) .item.action:not(.initial-state, .parent) > .icon):
(.content-view.tab.canvas .navigation-bar > .item .canvas-overview .icon,):
(.content-view.canvas > .preview > img,):
(.content-view.canvas-overview):
(.content-view.canvas-overview .content-view.canvas):
(.content-view.canvas-overview .content-view.canvas.is-recording):
(.content-view.canvas-overview .content-view.canvas.is-recording > header):
(.content-view.canvas-overview .content-view.canvas > header > .titles > .title):
(.content-view.canvas-overview .content-view.canvas > header > .titles > .subtitle,):
(.content-view.canvas-overview .content-view.canvas > footer > .recordings::before):
(.content-view.canvas-overview .content-view.canvas.is-recording > header > .titles > .subtitle):
(.content-view.canvas:not(.tab)):
(.content-view:not(.tab).recording):
(.content-view:not(.tab).recording > header > .slider-container):
(.content-view:not(.tab).recording > header > .slider-container > input[type=range]):
(.sidebar > .panel.details.recording-state > .content > .data-grid tr.modified):
(.progress-view > .titles > .title):
(.progress-view > .titles > .subtitle):
(.indeterminate-progress-spinner):
(.content-view.shader-program > .text-editor.shader):
(.content-view.shader-program > .text-editor.shader > .type-title):
(.item.shader-program .status > img):
(.open-resource-dialog):
(.open-resource-dialog > .field > input):
(.open-resource-dialog > .field > input::placeholder):
(.open-resource-dialog > .tree-outline .item.selected):
(.open-resource-dialog > .field::before):
2018-06-09 Dan Bernstein <mitz@apple.com>
[Xcode] Clean up and modernize some build setting definitions
https://bugs.webkit.org/show_bug.cgi?id=186463
Reviewed by Sam Weinig.
* Configurations/Base.xcconfig: Removed definition for macOS 10.11.
* Configurations/DebugRelease.xcconfig: Ditto.
* Configurations/Version.xcconfig: Ditto.
2018-06-05 Matt Baker <mattbaker@apple.com>
Web Inspector: Tab picker is briefly visible when TabBar initially shown
https://bugs.webkit.org/show_bug.cgi?id=186317
Reviewed by Joseph Pecoraro.
* UserInterface/Views/TabBar.js:
(WI.TabBar): Picker should be initially hidden.
2018-06-05 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Text in "Add New Class" in auto-capitalizes
https://bugs.webkit.org/show_bug.cgi?id=186311
Reviewed by Matt Baker.
Disable spellcheck to prevent auto-capitalization.
* UserInterface/Views/GeneralStyleDetailsSidebarPanel.js:
(WI.GeneralStyleDetailsSidebarPanel.prototype.initialLayout):
2018-06-04 Matt Baker <mattbaker@apple.com>
Web Inspector: Cannot copy a link address in Elements tab
https://bugs.webkit.org/show_bug.cgi?id=186281
<rdar://problem/39193355>
Reviewed by Brian Burg.
* UserInterface/Views/ContextMenuUtilities.js:
(WI.appendContextMenuItemsForURL):
2018-05-30 Daniel Bates <dabates@apple.com>
Web Inspector: Annotate Same-Site cookies
https://bugs.webkit.org/show_bug.cgi?id=184897
<rdar://problem/35178209>
Reviewed by Brian Burg.
Add a new column for the value of the Same-Site cookie attribute to the resource cookie content
view (shown for a resource under the Network tab) and cookie storage content view (shown under
the Storage tab).
The SameSite column in the resource cookie content view reflects the parsing of the Same-Site
attribute from the HTTP response by Web Inspector. This parsing is materially consistent with
the parsing of the SameSite atttribute in CFNetwork. The Same-Site column in the cookie storage
content view reflects the Same-Site cookie policy associated with the cookies provided by the
network stack, if supported. This column will be blank on systems whose network stack does not
support Same-Site cookies (e.g libsoup).
* Localizations/en.lproj/localizedStrings.js:
* UserInterface/Controllers/HARBuilder.js:
(WI.HARBuilder.cookies):
* UserInterface/Models/Cookie.js:
(WI.Cookie):
(WI.Cookie.displayNameForSameSiteType):
(WI.Cookie.parseSameSiteAttributeValue):
(WI.Cookie.parseSetCookieResponseHeader):
* UserInterface/Views/CookieStorageContentView.js:
(WI.CookieStorageContentView.prototype._rebuildTable):
(WI.CookieStorageContentView.prototype._sortDataGrid):
* UserInterface/Views/ResourceCookiesContentView.js:
(WI.ResourceCookiesContentView.prototype.tablePopulateCell):
(WI.ResourceCookiesContentView.prototype._generateSortComparator):
(WI.ResourceCookiesContentView.prototype._refreshResponseCookiesSection):
2018-05-25 Matt Baker <mattbaker@apple.com>
Web Inspector: Popover dismissed while attempting to move cursor inside
https://bugs.webkit.org/show_bug.cgi?id=185741
<rdar://problem/40340938>
Reviewed by Joseph Pecoraro.
Hovering a token within the bounds of the current popover should not
show a new popover. This prevents the popover from being dismissed when
the cursor passes over a token under the transparent portion of the
popover frame.
* UserInterface/Views/SourceCodeTextEditor.js:
(WI.SourceCodeTextEditor.prototype._showPopover):
2018-05-22 Ryan Haddad <ryanhaddad@apple.com>
Unreviewed, rolling out r232052.
Breaks internal builds.
Reverted changeset:
"Use more C++17"
https://bugs.webkit.org/show_bug.cgi?id=185176
https://trac.webkit.org/changeset/232052
2018-05-21 Yusuke Suzuki <utatane.tea@gmail.com>
Use more C++17
https://bugs.webkit.org/show_bug.cgi?id=185176
Reviewed by JF Bastien.
* Configurations/Base.xcconfig:
2018-05-18 Devin Rousso <webkit@devinrousso.com>
Web Inspector: Canvas: put `hasVisualEffect` behind an experimental setting
https://bugs.webkit.org/show_bug.cgi?id=185758
Reviewed by Matt Baker.
* Localizations/en.lproj/localizedStrings.js:
* UserInterface/Base/Setting.js:
* UserInterface/Models/RecordingAction.js:
(WI.RecordingAction.prototype.process):
* UserInterface/Views/RecordingActionTreeElement.js:
(WI.RecordingActionTreeElement.prototype.onattach):
* UserInterface/Views/SettingsTabContentView.js:
(WI.SettingsTabContentView.prototype._createExperimentalSettingsView):
2018-05-16 Devin Rousso <webkit@devinrousso.com>
Web Inspector: create a navigation item for toggling the overlay rulers/guides
https://bugs.webkit.org/show_bug.cgi?id=185644
Reviewed by Matt Baker.
* Localizations/en.lproj/localizedStrings.js:
* UserInterface/Base/Setting.js:
* UserInterface/Views/DOMTreeContentView.js:
(WI.DOMTreeContentView):
(WI.DOMTreeContentView.prototype.get navigationItems):
(WI.DOMTreeContentView.prototype.closed):
(WI.DOMTreeContentView.prototype._showRulersChanged): Added.
(WI.DOMTreeContentView.prototype._toggleShowRulers): Added.
2018-05-14 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Canvas: Remove unused --value-visual-highlight CSS variable
https://bugs.webkit.org/show_bug.cgi?id=185636
Reviewed by Matt Baker.
* UserInterface/Views/Variables.css:
(:root):
2018-05-14 Devin Rousso <webkit@devinrousso.com>
Web Inspector: Canvas tab: don't automatically select a recording when viewing a canvas
https://bugs.webkit.org/show_bug.cgi?id=182950
Reviewed by Matt Baker.
* UserInterface/Views/CanvasSidebarPanel.js:
(WI.CanvasSidebarPanel):
(WI.CanvasSidebarPanel.prototype._currentRepresentedObjectsDidChange):
(WI.CanvasSidebarPanel.prototype._treeOutlineSelectionDidChange):
(WI.CanvasSidebarPanel.prototype._canvasChanged):
(WI.CanvasSidebarPanel.prototype._recordingChanged):
(WI.CanvasSidebarPanel.prototype._updateRecordingScopeBar):
Add a "dummy" ScopeBarItem to the recording ScopeBar that is selected whenever a TreeElement
that doesn't correspond to a Recording is selected. This way, the Recording ScopeBar will
become deselected, and the list of actions will disappear. Clicking on the Recording ScopeBar
will show the previously selected Recording.
2018-05-08 Matt Baker <mattbaker@apple.com>
Web Inspector: Console drawer resizing is broken when console prompt has >1 line of code
https://bugs.webkit.org/show_bug.cgi?id=185369
<rdar://problem/40013202>
Reviewed by Devin Rousso.
Mouse offset calculation should account for the height of the quick console.
The only reason resizing worked with the single-line quick console is that
the offset calculation included the resizer height, which is very close
to that of the single-line quick console (27px and 30px respectively).
* UserInterface/Views/ConsoleDrawer.js:
2018-05-04 Devin Rousso <webkit@devinrousso.com>
Web Inspector: simplify the WI.Collection interface
https://bugs.webkit.org/show_bug.cgi?id=185187
Reviewed by Brian Burg.
* UserInterface/Models/Collection.js:
(WI.Collection.prototype.get size): Added.
(WI.Collection.prototype.has): Added.
(WI.Collection.prototype.toJSON):
(WI.Collection.prototype.[Symbol.iterator]): Added.
(WI.Collection.prototype.get items): Deleted.
(WI.Collection.prototype.toArray): Deleted.
* UserInterface/Controllers/CanvasManager.js:
(WI.CanvasManager.prototype._removeCanvas):
* UserInterface/Controllers/DOMDebuggerManager.js:
(WebInspector.DOMDebuggerManager.prototype.get domBreakpoints):
* UserInterface/Models/Frame.js:
(WI.Frame.prototype.removeAllChildFrames):
(WI.Frame.prototype.resourceForURL):
(WI.Frame.prototype.removeAllResources):
* UserInterface/Models/Script.js:
(WI.Script):
* UserInterface/Views/CanvasContentView.js:
(WI.CanvasContentView.prototype.initialLayout):
* UserInterface/Views/CanvasOverviewContentView.js:
(WI.CanvasOverviewContentView.prototype._updateNavigationItems):
* UserInterface/Views/CanvasSidebarPanel.js:
(WI.CanvasSidebarPanel.prototype._recordingRemoved):
(WI.CanvasSidebarPanel.prototype._canvasChanged):
(WI.CanvasSidebarPanel.prototype._updateRecordingScopeBar):
* UserInterface/Views/CanvasTabContentView.js:
(WI.CanvasTabContentView.prototype.attached):
(WI.CanvasTabContentView.prototype._addCanvas):
(WI.CanvasTabContentView.prototype._removeCanvas):
* UserInterface/Views/CanvasTreeElement.js:
(WI.CanvasTreeElement.prototype.onpopulate):
* UserInterface/Views/CollectionContentView.js:
(WI.CollectionContentView.prototype.initialLayout):
(WI.CollectionContentView.prototype.attached):
* UserInterface/Views/CookieStorageContentView.js:
(WI.CookieStorageContentView.prototype._filterCookies):
* UserInterface/Views/DebuggerSidebarPanel.js:
(WI.DebuggerSidebarPanel.prototype._addResourcesRecursivelyForFrame):
* UserInterface/Views/FolderizedTreeElement.js:
(WI.FolderizedTreeElement.prototype.updateParentStatus):
(WI.FolderizedTreeElement.prototype._shouldGroupIntoFolders):
* UserInterface/Views/FrameTreeElement.js:
(WI.FrameTreeElement.prototype.onpopulate):
* UserInterface/Views/NavigationSidebarPanel.js:
(WI.NavigationSidebarPanel.prototype.get contentTreeOutlines):
* UserInterface/Views/NetworkTableContentView.js:
(WI.NetworkTableContentView.prototype._populateWithInitialResourcesIfNeeded):
* UserInterface/Views/OpenResourceDialog.js:
(WI.OpenResourceDialog.prototype._addResourcesForFrame):
(WI.OpenResourceDialog.prototype._addResourcesForTarget):
* UserInterface/Views/TreeOutlineGroup.js:
(WI.TreeOutlineGroup.prototype.get selectedTreeElement):
(WI.TreeOutlineGroup.prototype._removeConflictingTreeSelections):
* UserInterface/Views/WorkerTreeElement.js:
(WI.WorkerTreeElement.prototype.onpopulate):
2018-05-04 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Styles: Newly added unsupported properties sometimes don't have warnings
https://bugs.webkit.org/show_bug.cgi?id=183097
<rdar://problem/37843816>
Reviewed by Matt Baker.
Update status of properties warnings every time focus moves.
* UserInterface/Views/SpreadsheetCSSStyleDeclarationEditor.js:
(WI.SpreadsheetCSSStyleDeclarationEditor.prototype.layout):
(WI.SpreadsheetCSSStyleDeclarationEditor.prototype.spreadsheetStylePropertyFocusMoved):
(WI.SpreadsheetCSSStyleDeclarationEditor.prototype._propertiesChanged):
(WI.SpreadsheetCSSStyleDeclarationEditor.prototype._updatePropertiesStatus):
* UserInterface/Views/SpreadsheetStyleProperty.js:
(WI.SpreadsheetStyleProperty.prototype.spreadsheetTextFieldDidBlur):
2018-05-04 Devin Rousso <webkit@devinrousso.com>
Web Inspector: Styles Redesign: ensure that tabbing through the last section wraps back to the first
https://bugs.webkit.org/show_bug.cgi?id=181973
Reviewed by Matt Baker.
Unified delegate functions to start editing previous/next rules into a single function for
simplicity.
* UserInterface/Views/SpreadsheetCSSStyleDeclarationEditor.js:
(WI.SpreadsheetCSSStyleDeclarationEditor.prototype.spreadsheetCSSStyleDeclarationEditorFocusMoved):
* UserInterface/Views/SpreadsheetCSSStyleDeclarationSection.js:
(WI.SpreadsheetCSSStyleDeclarationSection.prototype.startEditingRuleSelector):
(WI.SpreadsheetCSSStyleDeclarationSection.prototype.spreadsheetSelectorFieldDidChange):
(WI.SpreadsheetCSSStyleDeclarationSection.prototype.spreadsheetCSSStyleDeclarationEditorStartEditingAdjacentRule):
(WI.SpreadsheetCSSStyleDeclarationSection.prototype.cssStyleDeclarationEditorStartEditingAdjacentRule): Deleted.
* UserInterface/Views/SpreadsheetRulesStyleDetailsPanel.js:
(WI.SpreadsheetRulesStyleDetailsPanel.prototype.focusFirstSection):
(WI.SpreadsheetRulesStyleDetailsPanel.prototype.focusLastSection):
(WI.SpreadsheetRulesStyleDetailsPanel.prototype.spreadsheetCSSStyleDeclarationSectionStartEditingAdjacentRule):
(WI.SpreadsheetRulesStyleDetailsPanel.prototype.cssStyleDeclarationSectionStartEditingNextRule): Deleted.
(WI.SpreadsheetRulesStyleDetailsPanel.prototype.cssStyleDeclarationSectionStartEditingPreviousRule): Deleted.
* UserInterface/Views/GeneralStyleDetailsSidebarPanel.js:
(WI.GeneralStyleDetailsSidebarPanel.prototype.styleDetailsPanelFocusLastPseudoClassCheckbox):
(WI.GeneralStyleDetailsSidebarPanel.prototype.styleDetailsPanelFocusFilterBar):
(WI.GeneralStyleDetailsSidebarPanel.prototype.initialLayout):
(WI.GeneralStyleDetailsSidebarPanel.prototype._handleForcedPseudoClassCheckboxKeydown):
(WI.GeneralStyleDetailsSidebarPanel.prototype._forcedPseudoClassCheckboxChanged):
(WI.GeneralStyleDetailsSidebarPanel.prototype._handleFilterBarInputFieldKeyDown):
Drive-by fix: provide tabbing support for the Computed styles panel.
* UserInterface/Views/CSSStyleDeclarationTextEditor.js:
(WI.CSSStyleDeclarationTextEditor.prototype._handleShiftTabKey.switchRule):
(WI.CSSStyleDeclarationTextEditor.prototype._handleTabKey.switchRule):
* UserInterface/Views/ComputedStyleDetailsPanel.js:
(WI.ComputedStyleDetailsPanel.prototype.focusFirstSection):
(WI.ComputedStyleDetailsPanel.prototype.focusLastSection):
(WI.ComputedStyleDetailsPanel.prototype.cssStyleDeclarationTextEditorStartEditingAdjacentRule):
2018-05-04 Devin Rousso <webkit@devinrousso.com>
Web Inspector: Canvas tab: Determine isFunction by looking at the prototype
https://bugs.webkit.org/show_bug.cgi?id=184990
Reviewed by Brian Burg.
* UserInterface/Models/RecordingAction.js:
(WI.RecordingAction.isFunctionForType):
(WI.RecordingAction._prototypeForType):
(WI.RecordingAction.prototype.async.swizzle):
2018-05-01 Devin Rousso <webkit@devinrousso.com>
Web Inspector: Canvas tab: determine hasVisibleEffect for all actions immediately after recording is added
https://bugs.webkit.org/show_bug.cgi?id=182995
Reviewed by Matt Baker.
Previously, we'd swizzle the entirety of the `WI.Recording` in one, which would usually
freeze the UI, especially for larger recordings. This patch uses `WI.YieldableTask` to split
the work and allow the rest of the UI to still be usable while `WI.Recording` are processing.
Additionally, since we no longer have to worry about hangs, we can do more work upfront,
such as calculating `hasVisibleEffect` and the current state of 2D canvases.
These changes require that all uses of `WI.Recording` call `process()` before attempting to
use any `frames`/`actions`/`initialState`, as they will have their original payload values
and will have not been swizzled or applied.
* Localizations/en.lproj/localizedStrings.js:
* UserInterface/Models/Recording.js:
(WI.Recording):
(WI.Recording.prototype.process):
(WI.Recording.prototype.createContext): Added.
(WI.Recording.prototype.async yieldableTaskWillProcessItem): Added.
(WI.Recording.prototype.async yieldableTaskDidFinish): Added.
* UserInterface/Models/RecordingAction.js:
(WI.RecordingAction):
(WI.RecordingAction.prototype.process): Added.
(WI.RecordingAction.prototype.async swizzle): Added.
(WI.RecordingAction.prototype.apply):
(WI.RecordingAction.prototype.toJSON):
(WI.RecordingAction.prototype.set state): Deleted.
(WI.RecordingAction.prototype.swizzle): Deleted.
(WI.RecordingAction.prototype.apply.getContent): Deleted.
(WI.RecordingAction.prototype.async _swizzle): Deleted.
* UserInterface/Models/RecordingInitialStateAction.js:
(WI.RecordingInitialStateAction):
* UserInterface/Views/CanvasSidebarPanel.js:
(WI.CanvasSidebarPanel):
(WI.CanvasSidebarPanel.prototype.set action):
(WI.CanvasSidebarPanel.prototype._treeOutlineSelectionDidChange):
(WI.CanvasSidebarPanel.prototype._recordingChanged):
* UserInterface/Views/CanvasSidebarPanel.css:
(.sidebar > .panel.navigation.canvas > .content > .recording-content > .indeterminate-progress-spinner):
* UserInterface/Views/RecordingActionTreeElement.js:
(WI.RecordingActionTreeElement):
(WI.RecordingActionTreeElement.prototype.onattach):
(WI.RecordingActionTreeElement.prototype._handleHasVisibleEffectChanged): Deleted.
* UserInterface/Views/RecordingContentView.js:
(WI.RecordingContentView):
(WI.RecordingContentView.prototype.get navigationItems):
(WI.RecordingContentView.prototype.updateActionIndex):
(WI.RecordingContentView.prototype.initialLayout):
(WI.RecordingContentView.prototype._generateContentCanvas2D): Added.
(WI.RecordingContentView.prototype._generateContentCanvasWebGL): Added.
(WI.RecordingContentView.prototype._updateCanvasPath):
(WI.RecordingContentView.prototype._updateProcessProgress): Added.
(WI.RecordingContentView.prototype._handleRecordingProcessedActionSwizzle): Added.
(WI.RecordingContentView.prototype._handleRecordingProcessedActionApply): Added.
(WI.RecordingContentView.supportsCanvasPathDebugging): Deleted.
(WI.RecordingContentView.prototype.async _generateContentCanvas2D): Deleted.
(WI.RecordingContentView.prototype.async _generateContentCanvasWebGL): Deleted.
* UserInterface/Views/RecordingContentView.css:
(.content-view:not(.tab).recording > .preview-container):
* UserInterface/Base/ImageUtilities.js:
(WI.ImageUtilities.supportsCanvasPathDebugging):
2018-04-26 Jer Noble <jer.noble@apple.com>
Unreviewed build fix; fix WebInspectorUI copy resources step after r231063.
* Configurations/Base.xcconfig:
2018-04-26 Jer Noble <jer.noble@apple.com>
WK_COCOA_TOUCH all the things.
https://bugs.webkit.org/show_bug.cgi?id=185006
Reviewed by Tim Horton.
* Configurations/WebInspectorUIFramework.xcconfig:
2018-04-21 Nikita Vasilyev <nvasilyev@apple.com>
REGRESSION(r214076): Web Inspector: Timelines load and DOMContentLoaded markers aren't visible
https://bugs.webkit.org/show_bug.cgi?id=184858
Reviewed by Brian Burg.
r214076 changed the color of all markers to light gray.
* UserInterface/Views/TimelineRuler.css:
(.timeline-ruler > .markers > .marker):
(body[dir=ltr] .timeline-ruler > .markers > .marker):
(body[dir=rtl] .timeline-ruler > .markers > .marker):
(.timeline-ruler > .markers > .marker.current-time):
(.timeline-ruler > .markers > .marker.load-event):
(.timeline-ruler > .markers > .marker.dom-content-event):
(.timeline-ruler > .markers > .marker.timestamp):
(body[dir=ltr] .timeline-ruler > .markers > .marker.current-time): Deleted.
(body[dir=rtl] .timeline-ruler > .markers > .marker.current-time): Deleted.
2018-04-19 Chris Dumez <cdumez@apple.com>
Rename JSDOMWindowProxy to JSWindowProxy
https://bugs.webkit.org/show_bug.cgi?id=184797
Reviewed by Sam Weinig.
Rename JSDOMWindowProxy to JSWindowProxy for consistency with WindowProxy.
* UserInterface/Workers/HeapSnapshot/HeapSnapshot.js:
(HeapSnapshot.prototype._isNodeGlobalObject):
2018-04-19 David Kilzer <ddkilzer@apple.com>
Enable Objective-C weak references
<https://webkit.org/b/184789>
<rdar://problem/39571716>
Reviewed by Dan Bernstein.
* Configurations/Base.xcconfig:
(CLANG_ENABLE_OBJC_WEAK): Enable.
2018-04-16 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Can't select and copy text from Network tab popover
https://bugs.webkit.org/show_bug.cgi?id=184606
Reviewed by Matt Baker.
* UserInterface/Views/ResourceTimingBreakdownView.css:
(.waterfall-popover .resource-timing-breakdown):
2018-04-12 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Refactoring: move popover styles from JS to CSS
https://bugs.webkit.org/show_bug.cgi?id=184558
Reviewed by Brian Burg.
Introduce several CSS variables to customize popover appearance in CSS
and not JavaScript.
* UserInterface/Views/NetworkTableContentView.js:
(WI.NetworkTableContentView.prototype._waterfallPopoverContentForResource):
(WI.NetworkTableContentView.prototype._handleMousedownWaterfall):
* UserInterface/Views/Popover.css:
(.popover):
* UserInterface/Views/Popover.js:
(WI.Popover):
(WI.Popover.prototype._drawBackground):
Replace `var` with `let`.
(WI.Popover.prototype.get backgroundStyle): Deleted.
(WI.Popover.prototype.set backgroundStyle): Deleted.
* UserInterface/Views/ResourceTimingBreakdownView.css:
(.popover.waterfall-popover):
(.waterfall-popover-content .resource-timing-breakdown):
(.waterfall-popover .resource-timing-breakdown): Deleted.
* UserInterface/Views/NetworkTableContentView.js:
(WI.NetworkTableContentView.prototype._waterfallPopoverContentForResource):
(WI.NetworkTableContentView.prototype._handleMousedownWaterfall):
* UserInterface/Views/Popover.css:
(.popover):
* UserInterface/Views/Popover.js:
(WI.Popover):
(WI.Popover.prototype._drawBackground):
* UserInterface/Views/ResourceTimingBreakdownView.css:
(.popover.waterfall-popover):
(.waterfall-popover-content .resource-timing-breakdown):
2018-04-07 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Errors glyph doesn't fully change to blue when active
https://bugs.webkit.org/show_bug.cgi?id=184389
Reviewed by Joseph Pecoraro.
The dot of the exclamation mark was always black.
* UserInterface/Images/Errors.svg:
2018-04-03 Aaron Chu <aaron_chu@apple.com>
AX: Add Experimental setting for Accessibility Audit
https://bugs.webkit.org/show_bug.cgi?id=183646
<rdar://problem/38478583>
Reviewed by Brian Burg.
Added experimental feature flag for Accessibility Audit work.
* Localizations/en.lproj/localizedStrings.js:
* UserInterface/Base/Setting.js:
* UserInterface/Views/SettingsTabContentView.js:
(WI.SettingsTabContentView.prototype._createExperimentalSettingsView):
2018-04-01 Matt Baker <mattbaker@apple.com>
Web Inspector: Remove dead TabBrowser/TabContentView code
https://bugs.webkit.org/show_bug.cgi?id=184104
Reviewed by Devin Rousso.
* UserInterface/Base/Main.js:
(WI._tryToRestorePendingTabs):
* UserInterface/Views/NewTabContentView.js:
(WI.NewTabContentView.prototype.shown):
(WI.NewTabContentView.prototype.hidden):
* UserInterface/Views/TabBrowser.js:
(WI.TabBrowser.prototype.addTabForContentView):
(WI.TabBrowser.prototype.showTabForContentView):
(WI.TabBrowser._tabBarItemRemoved):
* UserInterface/Views/TabContentView.js:
(WI.TabContentView.prototype.get parentTabBrowser): Deleted.
(WI.TabContentView.prototype.set parentTabBrowser): Deleted.
2018-03-30 Devin Rousso <webkit@devinrousso.com>
Web Inspector: tint all pixels drawn by shader program when hovering ShaderProgramTreeElement
https://bugs.webkit.org/show_bug.cgi?id=175223
Reviewed by Matt Baker.
* UserInterface/Models/ShaderProgram.js:
(WI.ShaderProgram):
(WI.ShaderProgram.prototype.showHighlight):
(WI.ShaderProgram.prototype.hideHighlight):
* UserInterface/Views/ShaderProgramTreeElement.js:
(WI.ShaderProgramTreeElement.prototype.onattach):
(WI.ShaderProgramTreeElement.prototype._handleMouseOver):
(WI.ShaderProgramTreeElement.prototype._handleMouseOut):
Whenever a ShaderProgramTreeElement is hovered, highlight the corresponding shader program
by tinting the pixels it draws via a blend.
2018-03-27 Timothy Hatcher <timothy@apple.com>
Web Inspector: Modernize some utility functions
https://bugs.webkit.org/show_bug.cgi?id=184047
Reviewed by Matt Baker.
* UserInterface/Base/Utilities.js:
(Node.prototype.enclosingNodeOrSelfWithClass): Use parentElement instead of parentNode, so we don't need to check for document.
(Node.prototype.enclosingNodeOrSelfWithNodeNameInArray): Ditto. Also just toUpperCase input, since nodeName is already upper case.
(String.prototype.escapeCharacters): Use Set and string iteration instead of indexOf and charAt.
2018-03-27 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Command-Shift-left/right arrow keys should not switch tabs when focused on color picker text fields
https://bugs.webkit.org/show_bug.cgi?id=184028
Reviewed by Timothy Hatcher.
* UserInterface/Views/EditingSupport.js:
(WI.isEventTargetAnEditableField):
Detect <input type="number"> as an editable text field.
2018-03-23 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Styles: don't show checkboxes for invalid properties
https://bugs.webkit.org/show_bug.cgi?id=183951
<rdar://problem/38807602>
Reviewed by Matt Baker.
Since toggling of invalid properties isn't supported by the backend, don't show checkboxes for invalid properties.
* UserInterface/Views/SpreadsheetCSSStyleDeclarationEditor.css:
(.spreadsheet-css-declaration:matches(:hover, :focus) .property:not(:matches(.invalid-name, .invalid-value)) .property-toggle,):
(.spreadsheet-css-declaration:matches(:hover, :focus) .property-toggle,): Deleted.
Don't show checkboxes for invalid properties but still show them for duplicate properties.
2018-03-23 Brian Burg <bburg@apple.com>
Web Inspector: add WebKitAdditions hooks for WebInspectorUI
https://bugs.webkit.org/show_bug.cgi?id=183940
<rdar://problem/38796310>
Reviewed by Timothy Hatcher.
* Scripts/combine-resources.pl:
(debugLog): Added. Leave in the logging I used to debug this.
(concatenateIncludedFilesMatchingPattern):
(stripIncludedFilesMatchingPattern):
(concatenateFiles): Deleted.
This function tried to do too many things. Split it into
two functions, one for stripping includes and one for concatenating
files referenced by includes.
Lastly, add a negative lookahead clause for 'WebKitAdditions' so includes
containing that string are not combined when no input directory is passed
to the script.
* Scripts/copy-user-interface-resources.pl:
WebKitAdditions is computed either from BUILT_PRODUCTS_DIR or SDKROOT,
depending on the build style. Just try them in order and use the first
one that exists. WebInspectorUI files are in their own directory, so
we can assume there are files to process if that directory exists.
Copy Main.html to derived sources before doing any processing on it.
This makes all combining phases have the same --input-html argument.
(debugLog): Added. Leave in the logging I used to debug this.
(combineOrStripResourcesForWebKitAdditions):
(stripResourcesForWebKitAdditions):
(combineResourcesForWebKitAdditions):
Determine if WebKitAdditions exists and whether there are any
resources for WebInspectorUI present that need to be processed.
* UserInterface/Main.html:
Add stub .js and .css WebKitAdditions files. We can add more later
if it makes sense but this is good enough to validate the build machinery.
2018-03-23 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Styles Redesign: flashing when switching between nodes
https://bugs.webkit.org/show_bug.cgi?id=179291
<rdar://problem/35352660>
Reviewed by Matt Baker.
Flashing was happening because the layout was a two-step process:
1. Append empty sections.
2. Layout everything inside of the section on requestAnimationFrame.
SpreadsheetRulesStyleDetailsPanel was converted to use layout method,
so both steps happen on requestAnimationFrame.
* UserInterface/Views/SpreadsheetRulesStyleDetailsPanel.js:
(WI.SpreadsheetRulesStyleDetailsPanel):
(WI.SpreadsheetRulesStyleDetailsPanel.prototype.refresh):
(WI.SpreadsheetRulesStyleDetailsPanel.prototype.layout):
The removed lines from the refresh method moved to the layout method without any changes.
2018-03-22 Nikita Vasilyev <nvasilyev@apple.com>
Uncaught Exception: TypeError: this._textEditor.toggleUnexecutedCodeHighlights().then is not a function
https://bugs.webkit.org/show_bug.cgi?id=181912
<rdar://problem/36700022>
Reviewed by Matt Baker.
The uncaught exception was caused by returning `false` instead of a promise object.
This patch only fixes the exception. Further enhancements should be done in <https://webkit.org/b/183887>.
* UserInterface/Views/SourceCodeTextEditor.js:
(WI.SourceCodeTextEditor.prototype.toggleTypeAnnotations):
(WI.SourceCodeTextEditor.prototype.toggleUnexecutedCodeHighlights):
2018-03-20 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Styles: Loses focus when editing a property while page is being loaded
https://bugs.webkit.org/show_bug.cgi?id=182619
<rdar://problem/37363185>
Reviewed by Matt Baker.
Adding or removing a stylesheet causes SpreadsheetRulesStyleDetailsPanel to refresh, triggering a layout
of all SpreadsheetCSSStyleDeclarationSection child views. This resets the focus, selection, and
auto-completion state.
This patch prevents SpreadsheetCSSStyleDeclarationSection from performing a layout when a property is being edited.
* UserInterface/Views/SpreadsheetCSSStyleDeclarationEditor.js:
(WI.SpreadsheetCSSStyleDeclarationEditor.prototype.layout):
Allow re-layout after creating a blank CSS property and pasting CSS code.
- _pendingAddBlankPropertyIndexOffset is a number after pasting CSS rules.
- _propertyPendingStartEditing is a property model after creating a new property.
2018-03-20 Devin Rousso <webkit@devinrousso.com>
Web Inspector: Session dividers are not added when Console tab is not visible
https://bugs.webkit.org/show_bug.cgi?id=168622
Reviewed by Matt Baker.
Restructure `_pendingMessages` to be a `Map [ConsoleSession, ConsoleMessageView]`. Instead
of rendering to the `_currentConsoleGroup`, we now render to the saved `ConsoleSession`.
Also ensure that `_pendingMessages` is cleared when navigating and "Preserve Log" is off.
* UserInterface/Controllers/JavaScriptLogViewController.js:
(WI.JavaScriptLogViewController):
(WI.JavaScriptLogViewController.prototype.startNewSession):
(WI.JavaScriptLogViewController.prototype.consolePromptHistoryDidChange):
(WI.JavaScriptLogViewController.prototype._appendConsoleMessageView):
(WI.JavaScriptLogViewController.prototype.renderPendingMessages):
(WI.JavaScriptLogViewController.prototype.get prompt): Deleted.
(WI.JavaScriptLogViewController.prototype.get currentConsoleGroup): Deleted.
2018-03-20 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Can't add a new class by editing class attribute in DOM outline
https://bugs.webkit.org/show_bug.cgi?id=180890
Reviewed by Ryosuke Niwa.
Typing "my-foo my-bar" creates a single "my-foo\xA0my-bar" class name because
contentEditable-based attribute editor sometimes inserts non-breaking space characters (\xA0).
Replace all non-breaking space characters with the regular space characters when
commiting attribute change.
* UserInterface/Views/DOMTreeElement.js:
2018-03-16 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Elements: "Force Print Media Styles" should not persist across Web Inspector sessions
https://bugs.webkit.org/show_bug.cgi?id=183708
<rdar://problem/36452183>
Reviewed by Matt Baker.
* UserInterface/Base/Main.js:
(WI.loaded):
* UserInterface/Views/DOMTreeContentView.js:
(WI.DOMTreeContentView):
(WI.DOMTreeContentView.prototype._showPrintStylesChanged):
(WI.DOMTreeContentView.prototype._togglePrintStyles):
(WI.DOMTreeContentView.prototype._showPrintStylesSettingChanged): Deleted.
(WI.DOMTreeContentView.prototype._togglePrintStylesSetting): Deleted.
2018-03-14 Devin Rousso <webkit@devinrousso.com>
Web Inspector: Canvas: a recording initiated by the user should be shown immediately on completion
https://bugs.webkit.org/show_bug.cgi?id=183647
<rdar://problem/38479187>
Reviewed by Matt Baker.
When recordings are initiated via `console.record`, we don't want to automatically show the
recording after it's payload is sent to the frontend. We determine whether a recording came
from the console by comparing the recording's associated canvas with the current value of
`_recordingCanvas`. Previously, when stopping a recording, we would always null the value,
which meant that all non-single-frame recordings (single-frame recordings are stopped by
the agent after the first paint or tick after an action is performed) would be categorized
as coming from the console, since `_recordingCanvas` would be null by the time the frontend
recieved the payload.
This patch changes it so that the nulling of `_recordingCanvas` in `stopRecording` is only
done if the agent command errors. It was already the case that `_recordingCanvas` was nulled
in `stopRecording`, so this patch just prevents it from being nulled too early.
* UserInterface/Controllers/CanvasManager.js:
(WI.CanvasManager.prototype.stopRecording):
2018-03-12 Jon Davis <jond@apple.com>
Web Inspector: Remove redundant tooltips
https://bugs.webkit.org/show_bug.cgi?id=183099
Reviewed by Matt Baker.
* Localizations/en.lproj/localizedStrings.js:
* UserInterface/Base/Main.js:
(WI.contentLoaded):
Instantiate ConsoleDrawer so the keyboard shortcuts for FindBanner are available.
* UserInterface/Views/BreakpointTreeElement.js:
(WI.BreakpointTreeElement):
Suppress tooltips by setting the tooltipHandledSeprately flag with no custom handler.
* UserInterface/Views/ButtonNavigationItem.js:
(WI.ButtonNavigationItem):
Only show tooltips when the button style is an image.
* UserInterface/Views/ConsoleDrawer.js:
(WI.ConsoleDrawer):
(WI.ConsoleDrawer.prototype.toggleButtonShortcutTooltip):
Added helper to set the toggle button keyboard shortcut tooltip.
* UserInterface/Views/DOMBreakpointTreeElement.js:
(WI.DOMBreakpointTreeElement):
Suppress tooltips by setting the tooltipHandledSeprately flag with no custom handler.
* UserInterface/Views/DOMNodeTreeElement.js:
(WI.DOMNodeTreeElement):
Suppress tooltips by setting the tooltipHandledSeprately flag with no custom handler.
* UserInterface/Views/FindBanner.js:
(WI.FindBanner):
* UserInterface/Views/HierarchicalPathComponent.js:
(WI.HierarchicalPathComponent):
(WI.HierarchicalPathComponent.prototype.get tooltip):
(WI.HierarchicalPathComponent.prototype.set tooltip):
(WI.HierarchicalPathComponent.prototype.get hideTooltip):
(WI.HierarchicalPathComponent.prototype.set hideTooltip):
(WI.HierarchicalPathComponent.prototype._updateElementTitleAndText):
Add tooltip management features to manage tooltips separately of the displayName,
and provide a behavior to hide tooltips while retaining the tooltip data.
* UserInterface/Views/HierarchicalPathNavigationItem.js:
(WI.HierarchicalPathNavigationItem.prototype.updateLayout):
Hide tooltips when fully visible, show tooltips for collapsed items.
* UserInterface/Views/PinnedTabBarItem.js:
(WI.PinnedTabBarItem.prototype.titleDidChange):
Set tooltips for pinned tab bar items.
* UserInterface/Views/QuickConsole.js:
(WI.QuickConsole):
Set the ConsoleDrawer toggle button tooltip after the keyboard shortcut is registered.
* UserInterface/Views/StorageTreeElement.js:
(WI.StorageTreeElement):
Suppress tooltips by setting the tooltipHandledSeprately flag with no custom handler.
* UserInterface/Views/TabBarItem.js:
(WI.TabBarItem.prototype.get title):
(WI.TabBarItem.prototype.set title):
(WI.TabBarItem.prototype.titleDidChange):
(WI.TabBarItem):
Add title property management with an overridable titleDidChange handler for
setting tooltips when needed.
* UserInterface/Views/TimelineTreeElement.js:
(WI.TimelineTreeElement):
Suppress tooltips by setting the tooltipHandledSeprately flag with no custom handler.
* UserInterface/Views/ToggleButtonNavigationItem.js:
(WI.ToggleButtonNavigationItem.prototype.set defaultToolTip):
Added a setter for manging the default tooltip of a toggle button.
* UserInterface/Views/XHRBreakpointTreeElement.js:
(WI.XHRBreakpointTreeElement):
Suppress tooltips by setting the tooltipHandledSeprately flag with no custom handler.
2018-03-09 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Sources: Open all resources in Sources tab instead of Resources/Debugger
https://bugs.webkit.org/show_bug.cgi?id=183317
<rdar://problem/38108455>
Reviewed by Matt Baker.
* Localizations/en.lproj/localizedStrings.js:
* UserInterface/Base/Main.js:
* UserInterface/Views/ContextMenuUtilities.js:
(WI.appendContextMenuItemsForURL):
Introduce preferredTabType option instead of listing ignoreResourcesTab, ignoreDebuggerTab, ignoreSearchTab, and ignoreNetworkTab.
The only correct outcome of selecting "Reveal in Sources Tab" context menu is to open Sources tab, not any other tab.
* UserInterface/Views/SourceCodeTextEditor.js:
(WI.SourceCodeTextEditor.prototype.textEditorGutterContextMenu):
* UserInterface/Views/TabBrowser.js:
(WI.TabBrowser.prototype.bestTabContentViewForRepresentedObject):
2018-03-08 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Sources: add SourcesTabContentView and SourceSidebarPanel classes
https://bugs.webkit.org/show_bug.cgi?id=183316
<rdar://problem/38107639>
Reviewed by Matt Baker.
Add Sources tab and sidebar panel, which are copies of the corresponding Resources classes.
The Sources tab is shown when it's enabled in the experimental settings. This patch doesn't
remove existing Resources and Debugger tabs.
* UserInterface/Base/Main.js:
(WI.contentLoaded):
* UserInterface/Main.html:
* UserInterface/Views/SourcesSidebarPanel.css: Added.
(.sidebar > .panel.navigation.sources > .content):
(.sidebar > .panel.navigation.sources > .navigation-bar):
* UserInterface/Views/SourcesSidebarPanel.js: Added.
(WI.SourcesSidebarPanel):
(WI.SourcesSidebarPanel.shouldPlaceResourcesAtTopLevel):
(WI.SourcesSidebarPanel.prototype.get minimumWidth):
(WI.SourcesSidebarPanel.prototype.closed):
(WI.SourcesSidebarPanel.prototype.showDefaultContentView):
(WI.SourcesSidebarPanel.prototype.treeElementForRepresentedObject.isAncestor):
(WI.SourcesSidebarPanel.prototype.treeElementForRepresentedObject.getParent):
(WI.SourcesSidebarPanel.prototype.treeElementForRepresentedObject):
(WI.SourcesSidebarPanel.prototype.initialLayout):
(WI.SourcesSidebarPanel.prototype.hasCustomFilters):
(WI.SourcesSidebarPanel.prototype.matchTreeElementAgainstCustomFilters.match):
(WI.SourcesSidebarPanel.prototype.matchTreeElementAgainstCustomFilters):
(WI.SourcesSidebarPanel.prototype._mainResourceDidChange):
(WI.SourcesSidebarPanel.prototype._mainFrameDidChange):
(WI.SourcesSidebarPanel.prototype._mainFrameMainResourceDidChange.delayedWork):
(WI.SourcesSidebarPanel.prototype._mainFrameMainResourceDidChange):
(WI.SourcesSidebarPanel.prototype._scriptWasAdded):
(WI.SourcesSidebarPanel.prototype._addScript):
(WI.SourcesSidebarPanel.prototype._scriptWasRemoved):
(WI.SourcesSidebarPanel.prototype._scriptsCleared):
(WI.SourcesSidebarPanel.prototype._styleSheetAdded):
(WI.SourcesSidebarPanel.prototype._addTargetWithMainResource):
(WI.SourcesSidebarPanel.prototype._targetRemoved):
(WI.SourcesSidebarPanel.prototype._treeSelectionDidChange):
(WI.SourcesSidebarPanel.prototype._compareTreeElements):
(WI.SourcesSidebarPanel.prototype._extraDomainsActivated):
(WI.SourcesSidebarPanel.prototype._scopeBarSelectionDidChange):
* UserInterface/Views/SourcesTabContentView.js: Added.
(WI.SourcesTabContentView):
(WI.SourcesTabContentView.tabInfo):
(WI.SourcesTabContentView.isTabAllowed):
(WI.SourcesTabContentView.prototype.get type):
(WI.SourcesTabContentView.prototype.get supportsSplitContentBrowser):
(WI.SourcesTabContentView.prototype.canShowRepresentedObject):
2018-03-07 Devin Rousso <webkit@devinrousso.com>
Web Inspector: Canvas tab: ensure that the Recording TreeOutline has a specified height for virtualization
https://bugs.webkit.org/show_bug.cgi?id=183015
Reviewed by Matt Baker.
* UserInterface/Views/CanvasSidebarPanel.js:
(WI.CanvasSidebarPanel):
* UserInterface/Views/CanvasSidebarPanel.css:
(.sidebar > .panel.navigation.canvas > .content):
(.sidebar > .panel.navigation.canvas > .content > .navigation-bar):
(.sidebar > .panel.navigation.canvas.has-recordings > .content > .recording-content):
(.sidebar > .panel.navigation.canvas:not(.has-recordings) > .filter-bar,):
(.sidebar > .panel.navigation.canvas > .content > .recording-content > .navigation-bar): Deleted.
(.sidebar > .panel.navigation.canvas.has-recordings > .content > .tree-outline.canvas): Deleted.
* UserInterface/Views/TreeElement.js:
(WI.TreeElement.prototype._detach):
2018-02-26 Devin Rousso <webkit@devinrousso.com>
Web Inspector: Canvas Tab: Scroll into view / Inspect element if Canvas has DOM node
https://bugs.webkit.org/show_bug.cgi?id=181769
Reviewed by Matt Baker.
* Localizations/en.lproj/localizedStrings.js:
* UserInterface/Images/Markup.svg: Added.
* UserInterface/Views/CanvasContentView.js:
(WI.CanvasContentView):
(WI.CanvasContentView.prototype.initialLayout):
(WI.CanvasContentView.prototype._canvasElementButtonClicked):
2018-02-19 Matt Baker <mattbaker@apple.com>
Web Inspector: Canvas tab: hide navigation sidebar when viewing the overview
https://bugs.webkit.org/show_bug.cgi?id=182597
<rdar://problem/37341564>
Reviewed by Devin Rousso.
Support showing/hiding the navigation sidebar panel based on the current
represented object. Individual TabContentViews can opt-in to this behavior,
by overriding TabContentView.prototype.managesNavigationSidebarPanel.
* UserInterface/Views/CanvasSidebarPanel.js:
(WI.CanvasSidebarPanel.prototype.canShowRepresentedObject):
* UserInterface/Views/CanvasTabContentView.js:
(WI.CanvasTabContentView.prototype.get managesNavigationSidebarPanel):
Hide the Canvas navigation sidebar when viewing the overview.
* UserInterface/Views/ContentBrowserTabContentView.js:
(WI.ContentBrowserTabContentView):
(WI.ContentBrowserTabContentView.prototype.showNavigationSidebarPanel):
(WI.ContentBrowserTabContentView.prototype._navigationSidebarCollapsedStateDidChange):
(WI.ContentBrowserTabContentView.prototype._contentBrowserCurrentRepresentedObjectsDidChange):
* UserInterface/Views/NavigationSidebarPanel.js:
(WI.NavigationSidebarPanel.prototype.canShowRepresentedObject):
Provide default implementation that just defers to the TabContentView.
This exists so that a NavigationSidebarPanel that implements canShowRepresentedObject
will have a meaningful default to fall back on.
* UserInterface/Views/TabBrowser.js:
(WI.TabBrowser.prototype._sidebarCollapsedStateDidChange):
(WI.TabBrowser.prototype._showNavigationSidebarPanelForTabContentView):
* UserInterface/Views/TabContentView.js:
(WI.TabContentView.prototype.get managesNavigationSidebarPanel):
2018-02-16 Matt Baker <mattbaker@apple.com>
Web Inspector: TabBar redesign: remove top-level search field and pin the Search tab
https://bugs.webkit.org/show_bug.cgi?id=182353
<rdar://problem/37088644>
Reviewed by Devin Rousso.
* Localizations/en.lproj/localizedStrings.js:
* UserInterface/Base/Main.js:
(WI.contentLoaded):
Create Search UI based on experimental setting. When the new TabBar is
enabled, the Search tab is a pinned tab. Since it is also saveable, it
needs to be added to the TabBrowser (the browser adds the item to the bar).
When restoring saved tabs, make an additional check to prevent a tab
from being added twice. This can occur now that the Search tab is pinned.
* UserInterface/Images/Search.svg:
Update art to better match Safari/macOS. Slightly increase the radius of
the lens, and shorten the length of the handle.
* UserInterface/Views/GoToLineDialog.css:
(.go-to-line-dialog > div::before):
Update styles for new Search icon.
* UserInterface/Views/LegacyTabBar.js:
(WI.LegacyTabBar.prototype.get saveableTabCount):
Backported new TabBar method which is called by TabBrowser.
* UserInterface/Views/OpenResourceDialog.css:
(.open-resource-dialog > .field::before):
Update styles for new Search icon.
* UserInterface/Views/PinnedTabBarItem.js:
(WI.PinnedTabBarItem.prototype.fromTabInfo):
Match GeneralTabBarItem.fromTabInfo.
* UserInterface/Views/SearchTabContentView.js:
(WI.SearchTabContentView):
(WI.SearchTabContentView.tabInfo):
New image (magnifying glass without border) when new TabBar is enabled.
* UserInterface/Views/SettingsTabContentView.js:
(WI.SettingsTabContentView):
* UserInterface/Views/TabBar.js:
(WI.TabBar):
Move creation of the Settings item out of TabBar. The TabBar should
only be concerned with managing tabs.
(WI.TabBar.prototype.get saveableTabCount):
(WI.TabBar.prototype._handleContextMenu):
(WI.TabBar.prototype.get normalNonEphemeralTabCount): Deleted.
Now that the Search tab is pinned, there aren't any normal tabs that
are also ephemeral. For the LegacyTabBar, both the Search and New Tab
tabs are still in this category.
* UserInterface/Views/TabBrowser.js:
(WI.TabBrowser.prototype.addTabForContentView):
(WI.TabBrowser.prototype.closeTabForContentView):
(WI.TabBrowser.prototype._tabBarItemSelected):
(WI.TabBrowser._tabBarItemRemoved):
Recent tab list should be validated against the list of saveable tabs,
since the Search tab is no longer a normal tab (a GeneralTabBarItem),
but is still persisted across Inspector sessions.
2018-02-16 Matt Baker <mattbaker@apple.com>
Web Inspector: TabBar redesign: TabBarItem close button is incorrectly positioned
https://bugs.webkit.org/show_bug.cgi?id=182844
<rdar://problem/37586749>
Reviewed by Timothy Hatcher.
* UserInterface/Views/GeneralTabBarItem.js:
(WI.GeneralTabBarItem.prototype.set title):
Insert the title before the last flexible space item.
* UserInterface/Views/TabBar.css:
(.tab-bar > .item):
(.tab-bar > .item > .close):
(.tab-bar > .item > .flex-space):
(.tab-bar > .item.ephemeral > .flex-space:last-child):
(.tab-bar.collapsed > .item):
(.tab-bar.collapsed > .item > .flex-space):
(.tab-bar.collapsed > .item > .close):
(.tab-bar.collapsed > .item:hover > .close):
(.tab-bar.collapsed > .item.ephemeral:hover > .icon):
(.tab-bar > .item:hover > .close): Deleted.
(.tab-bar:not(.collapsed) > .item.ephemeral:hover > .icon): Deleted.
* UserInterface/Views/TabBarItem.js:
(WI.TabBarItem):
Restore flexible space items before and after the icon.
2018-02-14 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Styles: completion popover doesn't hide when switching panels
https://bugs.webkit.org/show_bug.cgi?id=182464
<rdar://problem/37202763>
Reviewed by Timothy Hatcher.
Save the position of the anchor, an element the popover is shown for, and hide the completion popover
when the position changes.
* UserInterface/Views/CompletionSuggestionsView.js:
(WI.CompletionSuggestionsView.prototype.showUntilAnchorMoves):
When the popover is visible, check every 200ms if the anchor moved.
(WI.CompletionSuggestionsView.prototype.hide):
* UserInterface/Views/SpreadsheetTextField.js:
(WI.SpreadsheetTextField.prototype._updateCompletions):
(WI.SpreadsheetTextField.prototype._getCaretRect):
getBoundingClientRect returns {x: 0, y: 0} when it can't determine node's position.
This happens when a node isn't attached to DOM, attached to DOM but not visible, and
a number of odd cases.
2018-02-14 Matt Baker <mattbaker@apple.com>
Web Inspector: TabBar redesign: only show allowed tabs in the available tabs context menu
https://bugs.webkit.org/show_bug.cgi?id=182721
<rdar://problem/37479019>
Reviewed by Timothy Hatcher.
In addition to only including allowed tabs in the TabBar context menu,
perform a sanity check when setting the selected tab item, since the
serialized selection index could refer to a tab that is no longer allowed.
* UserInterface/Views/LegacyTabBar.js:
(WI.LegacyTabBar.prototype.set selectedTabBarItem):
(WI.LegacyTabBar.prototype._handleContextMenu):
* UserInterface/Views/TabBar.js:
(WI.TabBar.prototype.set selectedTabBarItem):
(WI.TabBar.prototype._handleContextMenu):
2018-02-09 Matt Baker <mattbaker@apple.com>
Web Inspector: Canvas tab: tree selection abruptly changes when selecting a recording frame
https://bugs.webkit.org/show_bug.cgi?id=182667
<rdar://problem/37412639>
Reviewed by Devin Rousso.
* UserInterface/Views/CanvasSidebarPanel.css:
(.sidebar > .panel.navigation.canvas > .content > .recording-content > .navigation-bar):
(.sidebar > .panel.navigation.canvas:not(.has-recordings) > .filter-bar,):
(.sidebar > .panel.navigation.canvas > .content > .recording-content > .tree-outline .item.recording > .icon):
(.sidebar > .panel.navigation.canvas > .content > .recording-content > .tree-outline .item.folder-icon > .icon):
(.sidebar > .panel.navigation.canvas > .content > .recording-content > .tree-outline .item.folder-icon > .status):
(.sidebar > .panel.navigation.canvas > .content > .navigation-bar): Deleted.
(.sidebar > .panel.navigation.canvas > .content > .tree-outline .item.recording > .icon): Deleted.
(.sidebar > .panel.navigation.canvas > .content > .tree-outline .item.folder-icon > .icon): Deleted.
(.sidebar > .panel.navigation.canvas > .content > .tree-outline .item.folder-icon > .status): Deleted.
Style changes for the additional DOM element required to virtualize the recording tree outline.
* UserInterface/Views/CanvasSidebarPanel.js:
(WI.CanvasSidebarPanel):
In order to be virtualized, the tree must be the only child of its parent.
(WI.CanvasSidebarPanel.prototype.set action):
Ensure that a frame tree element isn't deselected when the last action
in the frame becomes selected in the RecordingContentView.
(WI.CanvasSidebarPanel.prototype.shown):
Refresh the sidebar, as represented objects may have changed while hidden.
(WI.CanvasSidebarPanel.prototype._currentRepresentedObjectsDidChange):
Unset the recording when no valid represented objects are found, to
prevent a stale recording tree from being shown when viewing the overview.
(WI.CanvasSidebarPanel.prototype._canvasChanged):
(WI.CanvasSidebarPanel.prototype._recordingChanged):
(WI.CanvasSidebarPanel.prototype._updateRecordingScopeBar):
Moved toggling of the "has-recordings" style to _canvasChanged, since
the navigation bar should be hidden when no canvas exists.
* UserInterface/Views/CollectionContentView.js:
(WI.CollectionContentView.prototype.addContentViewForItem):
(WI.CollectionContentView.prototype.removeContentViewForItem):
Drive by fixes for child view visible state.
* UserInterface/Views/TreeOutline.css:
(.tree-outline:not(.large):matches(:focus, .force-focus) .item.selected .status .indeterminate-progress-spinner):
Make spinner easier to see against the selection background color.
2018-02-09 Matt Baker <mattbaker@apple.com>
Web Inspector: Object.shallowEqual always fails when comparing array property values
https://bugs.webkit.org/show_bug.cgi?id=182634
<rdar://problem/37374639>
Reviewed by Devin Rousso.
Object.shallowEqual should use Array.shallowEqual when comparing property
values, since strictly comparing objects/arrays is only true if both
operands reference the same Object.
* UserInterface/Base/Utilities.js:
(value):
2018-02-08 Matt Baker <mattbaker@apple.com>
Web Inspector: add listing of Canvases/Programs/Recordings to the NavigationSidebar
https://bugs.webkit.org/show_bug.cgi?id=178744
<rdar://problem/35374379>
Reviewed by Devin Rousso.
* Localizations/en.lproj/localizedStrings.js:
* UserInterface/Images/Canvas2D.svg:
* UserInterface/Images/Canvas3D.svg:
* UserInterface/Images/Recording.svg:
Update canvas icons to be monochrome. Simplified the recording icon.
* UserInterface/Main.html:
* UserInterface/Models/RecordingAction.js:
(WI.RecordingAction.prototype.get state):
(WI.RecordingAction.prototype.set state):
Allow (2D) snapshot state to be associated with the action. Used by
RecordingActionDetailsSidebarPanel to retrieve the snapshot state.
* UserInterface/Views/CanvasContentView.css:
(.content-view.canvas:not(.tab)):
(.content-view.canvas:not(.tab) > .progress): Deleted.
(.content-view.canvas:not(.tab) > .progress > .frame-count): Deleted.
* UserInterface/Views/CanvasContentView.js:
(WI.CanvasContentView):
(WI.CanvasContentView.prototype.get navigationItems):
(WI.CanvasContentView.prototype.layout):
(WI.CanvasContentView.prototype.shown):
(WI.CanvasContentView.prototype._recordingStarted):
(WI.CanvasContentView.prototype._recordingProgress):
(WI.CanvasContentView.prototype._recordingStopped):
(WI.CanvasContentView.prototype._updateRecordNavigationItem):
(WI.CanvasContentView.prototype._updateProgressView):
Replace progress UI with a reusable ProgressView class.
When in the overview, clicking the CanvasContentView shows a dedicated
CanvasContentView for inspecting shaders and recordings. This behavior
is controlled by CollectionContentView, so we need to prevent it when
clicking inside the header and footer elements, which contain clickable UI.
* UserInterface/Views/CanvasDetailsSidebarPanel.js:
(WI.CanvasDetailsSidebarPanel.prototype.inspect):
* UserInterface/Views/CanvasOverviewContentView.css:
(.content-view.canvas-overview .content-view.canvas):
(.content-view.canvas-overview .content-view.canvas.is-recording):
(.content-view.canvas-overview .content-view.canvas > :matches(header, footer)):
(.content-view.canvas-overview .content-view.canvas > header):
(.content-view.canvas-overview .content-view.canvas.is-recording > header):
(.content-view.canvas-overview .content-view.canvas > header > .navigation-bar):
(.content-view.canvas-overview .content-view.canvas:matches(:hover, .is-recording) > header > .navigation-bar):
(.content-view.canvas-overview .content-view.canvas.is-recording > .progress-view,):
(.content-view.canvas-overview .content-view.canvas.is-recording > .preview):
(.content-view.canvas-overview .content-view.canvas > :matches(header, .progress, .preview, footer)): Deleted.
(.content-view.canvas-overview .content-view.canvas.selected > :matches(.progress, .preview, footer),): Deleted.
(.content-view.canvas-overview .content-view.canvas:not(:hover, .is-recording, .selected) > header > .navigation-bar): Deleted.
(.content-view.canvas-overview .content-view.canvas > :matches(.progress, .preview)): Deleted.
(.content-view.canvas-overview .content-view.canvas > .preview): Deleted.
(.content-view.canvas-overview .content-view.canvas > .progress ~ .preview): Deleted.
Clean up styles, and remove selection styles as canvases are no longer selectable in the overview.
* UserInterface/Views/CanvasOverviewContentView.js:
(WI.CanvasOverviewContentView):
(WI.CanvasOverviewContentView.prototype.get navigationItems):
(WI.CanvasOverviewContentView.prototype.attached):
(WI.CanvasOverviewContentView.prototype.detached):
(WI.CanvasOverviewContentView.prototype.get selectionPathComponents): Deleted.
(WI.CanvasOverviewContentView.prototype._changeSelectedItemVertically): Deleted.
(WI.CanvasOverviewContentView.prototype._changeSelectedItemHorizontally): Deleted.
(WI.CanvasOverviewContentView.prototype._selectionPathComponentsChanged): Deleted.
(WI.CanvasOverviewContentView.prototype._handleUp): Deleted.
(WI.CanvasOverviewContentView.prototype._handleRight): Deleted.
(WI.CanvasOverviewContentView.prototype._handleDown): Deleted.
(WI.CanvasOverviewContentView.prototype._handleLeft): Deleted.
(WI.CanvasOverviewContentView.prototype._handleSpace): Deleted.
(WI.CanvasOverviewContentView.prototype._supplementalRepresentedObjectsDidChange): Deleted.
Disable canvas selection. Remove logic for supplemental represented objects,
path components, and selection keyboard shortcuts.
* UserInterface/Views/CanvasSidebarPanel.css: Added.
(.sidebar > .panel.navigation.canvas > .content):
(.sidebar > .panel.navigation.canvas > .navigation-bar > .item.record-start-stop.disabled):
(.sidebar > .panel.navigation.canvas > .content > .tree-outline .item.canvas.canvas-2d .icon):
(.sidebar > .panel.navigation.canvas > .content > .tree-outline .item.canvas.webgl .icon):
(.sidebar > .panel.navigation.canvas > .content > .navigation-bar):
(.sidebar > .panel.navigation.canvas.has-recordings > .content > .tree-outline.canvas):
(.sidebar > .panel.navigation.canvas:not(.has-recordings) > .filter-bar,):
(.sidebar > .panel.navigation.canvas > .content > .tree-outline .item.recording > .icon):
(.sidebar > .panel.navigation.canvas > .content > .tree-outline .item.shader-program > .icon):
(.sidebar > .panel.navigation.canvas > .content > .tree-outline .item.folder-icon > .icon):
(.sidebar > .panel.navigation.canvas > .content > .tree-outline .item.folder-icon > .status):
* UserInterface/Views/CanvasSidebarPanel.js: Added.
(WI.CanvasSidebarPanel):
(WI.CanvasSidebarPanel.prototype.get canvas):
(WI.CanvasSidebarPanel.prototype.set canvas):
(WI.CanvasSidebarPanel.prototype.set recording):
(WI.CanvasSidebarPanel.prototype.set action):
(WI.CanvasSidebarPanel.prototype.shown):
(WI.CanvasSidebarPanel.prototype.hidden):
(WI.CanvasSidebarPanel.prototype.hasCustomFilters):
(WI.CanvasSidebarPanel.prototype.matchTreeElementAgainstCustomFilters):
(WI.CanvasSidebarPanel.prototype.initialLayout):
(WI.CanvasSidebarPanel.prototype._recordingAdded):
(WI.CanvasSidebarPanel.prototype._recordingRemoved):
(WI.CanvasSidebarPanel.prototype._scopeBarSelectionChanged):
(WI.CanvasSidebarPanel.prototype._toggleRecording):
(WI.CanvasSidebarPanel.prototype._currentRepresentedObjectsDidChange):
(WI.CanvasSidebarPanel.prototype._treeOutlineSelectionDidChange):
(WI.CanvasSidebarPanel.prototype._canvasChanged):
(WI.CanvasSidebarPanel.prototype._recordingChanged):
(WI.CanvasSidebarPanel.prototype._updateRecordNavigationItem):
(WI.CanvasSidebarPanel.prototype._updateRecordingScopeBar):
Add new navigation sidebar, split into two sections. The upper section
contains a tree with a single element for the current canvas, and child
elements for any shader programs. The maximum height of this section is 50%
of the sidebar's height. The lower section contains a tree for the selected
recording, and a scope bar for choosing between recordings.
* UserInterface/Views/CanvasTabContentView.css:
(.content-view.tab.canvas .navigation-bar > .item .canvas-overview .icon):
(.content-view.tab.canvas .navigation-bar > .item .canvas.canvas-2d .icon):
(.content-view.tab.canvas .navigation-bar > .item .canvas.webgl .icon):
(.content-view.tab.canvas .navigation-bar > .item .shader-program > .icon):
(.content-view.tab.canvas .navigation-bar > .item > .hierarchical-path-component > .icon): Deleted.
(.content-view.tab.canvas .navigation-bar > .item .canvas .icon): Deleted.
* UserInterface/Views/CanvasTabContentView.js:
(WI.CanvasTabContentView):
(WI.CanvasTabContentView.prototype.canShowRepresentedObject):
(WI.CanvasTabContentView.prototype.attached):
(WI.CanvasTabContentView.prototype._addCanvas):
(WI.CanvasTabContentView.prototype._removeCanvas):
(WI.CanvasTabContentView.prototype._canvasTreeOutlineSelectionDidChange):
(WI.CanvasTabContentView.prototype._recordingAdded):
(WI.CanvasTabContentView.prototype._handleSpace):
(WI.CanvasTabContentView.prototype.showRepresentedObject): Deleted.
(WI.CanvasTabContentView.prototype._navigationSidebarTreeOutlineSelectionChanged): Deleted.
(WI.CanvasTabContentView.prototype._recordingActionIndexChanged): Deleted.
(WI.CanvasTabContentView.prototype._updateActionIndex): Deleted.
The canvas tab now maintains a tree outline of all canvases, with an
"Overview" element as the root. The Overview element is always the first
item of content browser's hierarchical path.
* UserInterface/Views/CanvasTreeElement.js:
(WI.CanvasTreeElement.createRecordingTreeElement):
(WI.CanvasTreeElement):
(WI.CanvasTreeElement.prototype.onattach):
(WI.CanvasTreeElement.prototype.onpopulate):
(WI.CanvasTreeElement.prototype._updateStatus):
(WI.CanvasTreeElement.prototype.ondetach): Deleted.
Make it possible to not show recordings under the Canvas element.
Create `isRecording` status element (spinner).
* UserInterface/Views/CollectionContentView.js:
(WI.CollectionContentView.prototype.shown):
(WI.CollectionContentView.prototype.hidden):
Child ContentViews need to be updated when the collection's visibility changes.
* UserInterface/Views/ContentView.js:
(WI.ContentView.isViewable):
* UserInterface/Views/ProgressView.css: Added.
(.progress-view):
(.progress-view > .titles):
(.progress-view > .titles > .title):
(.progress-view > .titles > .subtitle):
(.progress-view > .titles > .subtitle::before):
(.progress-view > .indeterminate-progress-spinner):
* UserInterface/Views/ProgressView.js: Added.
(WI.ProgressView):
(WI.ProgressView.prototype.get title):
(WI.ProgressView.prototype.set title):
(WI.ProgressView.prototype.get subtitle):
(WI.ProgressView.prototype.set subtitle):
(WI.ProgressView.prototype.get visible):
(WI.ProgressView.prototype.set visible):
(WI.ProgressView.prototype.initialLayout):
(WI.ProgressView.prototype._updateTitles):
New view class (not a ContentView) for showing a generic progress message,
with a title, subtitle, and progress spinner.
* UserInterface/Views/RecordingContentView.css:
(.content-view:not(.tab).recording > .preview-container):
Remove unnecessary styles.
* UserInterface/Views/RecordingContentView.js:
(WI.RecordingContentView):
(WI.RecordingContentView.prototype.get navigationItems):
(WI.RecordingContentView.prototype.get supplementalRepresentedObjects):
(WI.RecordingContentView.prototype.updateActionIndex):
(WI.RecordingContentView.prototype.get saveData):
(WI.RecordingContentView.prototype._exportRecording):
Relocate the recording export logic and UI.
(WI.RecordingContentView.prototype.async._generateContentCanvas2D):
(WI.RecordingContentView.prototype.async._generateContentCanvasWebGL):
(WI.RecordingContentView.prototype._sliderChanged):
Refactor logic for notifying the rest of the UI of changes to the action slider.
The selected action is now exposed as a supplemental represented object, and a
corresponding SupplementalRepresentedObjectsDidChange event.
* UserInterface/Views/RecordingStateDetailsSidebarPanel.js:
(WI.RecordingStateDetailsSidebarPanel.prototype.inspect):
(WI.RecordingStateDetailsSidebarPanel.prototype.set action):
(WI.RecordingStateDetailsSidebarPanel.prototype._generateDetailsCanvas2D):
(WI.RecordingStateDetailsSidebarPanel):
(WI.RecordingStateDetailsSidebarPanel.prototype.updateAction): Deleted.
* UserInterface/Views/RecordingTraceDetailsSidebarPanel.js:
(WI.RecordingTraceDetailsSidebarPanel.prototype.inspect):
(WI.RecordingTraceDetailsSidebarPanel.prototype.set action):
(WI.RecordingTraceDetailsSidebarPanel):
(WI.RecordingTraceDetailsSidebarPanel.prototype.updateAction): Deleted.
Now that the selected action is exposed to the UI as a supplemental
represented object, details sidebars can be more decoupled from the
canvas tab, and be notified of changes to the selection via `inspect()`.
* UserInterface/Views/ResourceIcons.css:
(.canvas > .icon): Deleted.
(.shader-program .icon): Deleted.
2018-02-08 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Styles: Typing value and quickly moving focus away may display outdated value in UI
https://bugs.webkit.org/show_bug.cgi?id=182588
<rdar://problem/37332161>
Reviewed by Matt Baker.
CSSProperty models were updated with a 250ms delay. Quickly adding a blank property after modifying
an existing property could result in outdated values being shown.
This patch removes the 250ms delay.
* UserInterface/Views/SpreadsheetStyleProperty.js:
(WI.SpreadsheetStyleProperty.prototype.spreadsheetTextFieldDidChange):
2018-02-07 Matt Baker <mattbaker@apple.com>
Web Inspector: replace isAncestor with Node.contains() in LegacyTabBar
https://bugs.webkit.org/show_bug.cgi?id=182586
Reviewed by Timothy Hatcher.
* UserInterface/Views/LegacyTabBar.js:
2018-02-07 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Styles: completion popover doesn't hide when switching panels
https://bugs.webkit.org/show_bug.cgi?id=182464
<rdar://problem/37202763>
Reviewed by Timothy Hatcher.
Hide completion popover by triggering blur event on the focused text field.
Removing text fields from the DOM tree would hide the completion popovers as well,
but switching sidebar panels doesn't remove them from the DOM.
* UserInterface/Views/SpreadsheetCSSStyleDeclarationEditor.js:
(WI.SpreadsheetCSSStyleDeclarationEditor.prototype.hidden):
* UserInterface/Views/SpreadsheetCSSStyleDeclarationSection.js:
(WI.SpreadsheetCSSStyleDeclarationSection.prototype.hidden):
* UserInterface/Views/SpreadsheetRulesStyleDetailsPanel.js:
(WI.SpreadsheetRulesStyleDetailsPanel.prototype.hidden):
* UserInterface/Views/SpreadsheetStyleProperty.js:
(WI.SpreadsheetStyleProperty.prototype.hidden):
2018-02-06 Devin Rousso <webkit@devinrousso.com>
Web Inspector: Replace isAncestor and isDescendant with native DOM contains method
https://bugs.webkit.org/show_bug.cgi?id=182069
Reviewed by Brian Burg.
* UserInterface/Base/Main.js:
(WI.restoreFocusFromElement):
(WI._mouseDown):
(WI._focusedContentBrowser):
(WI._focusedContentView):
* UserInterface/Base/Utilities.js:
(Node.prototype.traverseNextNode):
(Node.prototype.isAncestor): Deleted.
(Node.prototype.isDescendant): Deleted.
(Node.prototype.isSelfOrAncestor): Deleted.
(Node.prototype.isSelfOrDescendant): Deleted.
* UserInterface/Views/BoxModelDetailsSectionRow.js:
(WI.BoxModelDetailsSectionRow.prototype._handleKeyDown):
* UserInterface/Views/CSSStyleDeclarationSection.js:
(WI.CSSStyleDeclarationSection.prototype._handleSelectorPaste):
* UserInterface/Views/DOMTreeOutline.js:
(WI.DOMTreeOutline.prototype._onmouseout):
* UserInterface/Views/DetailsSection.js:
(WI.DetailsSection.prototype._headerElementClicked):
* UserInterface/Views/EditingSupport.js:
(WI.incrementElementValue):
* UserInterface/Views/LogContentView.js:
(WI.LogContentView.prototype._handleContextMenuEvent):
* UserInterface/Views/ShaderProgramTreeElement.js:
(WI.ShaderProgramTreeElement.prototype.selectOnMouseDown):
* UserInterface/Views/SoftContextMenu.js:
(WI.SoftContextMenu.prototype._menuItemMouseOut):
* UserInterface/Views/SpreadsheetCSSStyleDeclarationEditor.js:
(WI.SpreadsheetCSSStyleDeclarationEditor.prototype.initialLayout):
* UserInterface/Views/TabBar.js:
(WI.TabBar.prototype.insertTabBarItem):
2018-02-06 Devin Rousso <webkit@devinrousso.com>
Web Inspector: Elements tab should have "Jump to Layer" functionality
https://bugs.webkit.org/show_bug.cgi?id=181800
Reviewed by Joseph Pecoraro.
* Localizations/en.lproj/localizedStrings.js:
* UserInterface/Base/Main.js:
(WI.isShowingElementsTab):
(WI.showLayersTab):
(WI.isShowingLayersTab):
* UserInterface/Views/ContextMenuUtilities.js:
(WI.appendContextMenuItemsForDOMNode):
* UserInterface/Views/LayersTabContentView.js:
(WI.LayersTabContentView.prototype.selectLayerForNode):
* UserInterface/Views/Layers3DContentView.js:
(WI.Layers3DContentView):
(WI.Layers3DContentView.prototype.selectLayerForNode):
(WI.Layers3DContentView.prototype.layout):
* UserInterface/Views/LayerDetailsSidebarPanel.js:
(WI.LayerDetailsSidebarPanel):
(WI.LayerDetailsSidebarPanel.prototype.selectNodeByLayerId):
(WI.LayerDetailsSidebarPanel.prototype._updateDataGrid):
2018-02-06 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Rename String.prototype.trimEnd to avoid conflicts with native trimEnd
https://bugs.webkit.org/show_bug.cgi?id=182545
Reviewed by Brian Burg.
Rename:
- trimEnd to truncateEnd
- trimMiddle to truncateMiddle
* UserInterface/Base/Utilities.js:
(String.prototype.trimMiddle): Deleted.
(String.prototype.trimEnd): Deleted.
(String.prototype.truncateMiddle): Added.
(String.prototype.truncateEnd): Added.
Use strict mode. Scrict mode allows `this` to be a primitive (a string, in our case).
In non-strict mode, `this` is always an object. Without the strict mode,
"a".truncateEnd(42) !== "a", because truncateEnd returns a string object.
* UserInterface/Views/DOMTreeElement.js:
(WI.DOMTreeElement.prototype._buildAttributeDOM):
* UserInterface/Views/DOMTreeElementPathComponent.js:
(WI.DOMTreeElementPathComponent):
* UserInterface/Views/SearchResultTreeElement.js:
Remove an obvious comment.
(WI.SearchResultTreeElement.truncateAndHighlightTitle):
* UserInterface/Views/SpreadsheetStyleProperty.js:
(WI.SpreadsheetStyleProperty.prototype._renderValue):
2018-02-05 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Add an experimental setting to enable Sources tab
https://bugs.webkit.org/show_bug.cgi?id=182461
Reviewed by Brian Burg.
This patch only adds a setting. It doesn't add the Sources tab.
* Localizations/en.lproj/localizedStrings.js:
* UserInterface/Base/Setting.js:
* UserInterface/Views/SettingsTabContentView.js:
2018-02-02 Devin Rousso <webkit@devinrousso.com>
Web Inspector: Styles Redesign: Pasting multiple properties should create properties instead of a bad property
https://bugs.webkit.org/show_bug.cgi?id=179622
<rdar://problem/35511170>
Reviewed by Matt Baker.
* UserInterface/Views/SpreadsheetStyleProperty.js:
(WI.SpreadsheetStyleProperty.prototype._remove):
(WI.SpreadsheetStyleProperty.prototype._update):
(WI.SpreadsheetStyleProperty.prototype.spreadsheetTextFieldDidCommit):
(WI.SpreadsheetStyleProperty.prototype._handleNamePaste):
When the user pastes into the name field, parse the text for a list of name-value pairs and
replace the property being edited with the text of those pairs.
* UserInterface/Views/SpreadsheetCSSStyleDeclarationEditor.js:
(WI.SpreadsheetCSSStyleDeclarationEditor):
(WI.SpreadsheetCSSStyleDeclarationEditor.prototype.layout):
(WI.SpreadsheetCSSStyleDeclarationEditor.prototype.addBlankProperty):
(WI.SpreadsheetCSSStyleDeclarationEditor.prototype.spreadsheetStylePropertyFocusMoved):
(WI.SpreadsheetCSSStyleDeclarationEditor.prototype.spreadsheetStylePropertyAddBlankPropertySoon):
(WI.SpreadsheetCSSStyleDeclarationEditor.prototype.spreadsheetStylePropertyRemoved):
(WI.SpreadsheetCSSStyleDeclarationEditor.prototype._propertiesChanged):
(WI.SpreadsheetCSSStyleDeclarationEditor.prototype.spreadsheetCSSStyleDeclarationEditorFocusMoved): Deleted.
Calling `addBlankProperty` will trigger a layout on the next frame, but that might be before
the CSSAgent has had a chance to finish refreshing, so we need a way to defer the creation
of a new property until after we have finished the next layout (which is after the refresh).
Drive-by: fix naming of some delegate functions.
* UserInterface/Models/CSSProperty.js:
(WI.CSSProperty.prototype.replaceWithText):
Provide a way for replacing the property with new text.
2018-02-02 Matt Baker <mattbaker@apple.com>
Web Inspector: TabBar redesign: remove New Tab button and add experimental feature flag
https://bugs.webkit.org/show_bug.cgi?id=182342
<rdar://problem/37078662>
Reviewed by Devin Rousso.
This patch adds a new experimental setting group, "User Interface", with
a single setting, "Enable New TabBar". When enabled, the New Tab button is
no longer available in the top-level TabBar. The 'open tabs' context menu
no longer allows the last non-ephemeral open tab to be closed (unchecked).
* Localizations/en.lproj/localizedStrings.js:
* UserInterface/Base/Main.js:
(WI.contentLoaded):
(WI._tryToRestorePendingTabs):
Retain legacy behavior behind experimental feature setting.
(WI.isNewTabWithTypeAllowed):
* UserInterface/Base/Setting.js:
* UserInterface/Main.html:
* UserInterface/Views/CanvasTabContentView.js:
(WI.CanvasTabContentView):
* UserInterface/Views/ConsoleTabContentView.js:
(WI.ConsoleTabContentView):
* UserInterface/Views/DebuggerTabContentView.js:
(WI.DebuggerTabContentView):
* UserInterface/Views/ElementsTabContentView.js:
(WI.ElementsTabContentView):
* UserInterface/Views/GeneralTabBarItem.js:
(WI.GeneralTabBarItem):
(WI.GeneralTabBarItem.prototype.fromTabInfo):
(WI.GeneralTabBarItem.prototype.get isEphemeral):
(WI.GeneralTabBarItem.fromTabContentViewConstructor): Deleted.
* UserInterface/Views/LayersTabContentView.js:
(WI.LayersTabContentView):
* UserInterface/Views/LegacyTabBar.js: Copied from Source/WebInspectorUI/UserInterface/Views/TabBar.js.
(WI.LegacyTabBar):
(WI.LegacyTabBar.prototype.get newTabTabBarItem):
(WI.LegacyTabBar.prototype.updateNewTabTabBarItemState):
(WI.LegacyTabBar.prototype.addTabBarItem):
(WI.LegacyTabBar.prototype.insertTabBarItem.animateTabs):
(WI.LegacyTabBar.prototype.insertTabBarItem.removeStyles):
(WI.LegacyTabBar.prototype.insertTabBarItem):
(WI.LegacyTabBar.prototype.removeTabBarItem.animateTabs):
(WI.LegacyTabBar.prototype.removeTabBarItem.removeStyles):
(WI.LegacyTabBar.prototype.removeTabBarItem):
(WI.LegacyTabBar.prototype.selectPreviousTab):
(WI.LegacyTabBar.prototype.selectNextTab):
(WI.LegacyTabBar.prototype.get selectedTabBarItem):
(WI.LegacyTabBar.prototype.set selectedTabBarItem):
(WI.LegacyTabBar.prototype.get tabBarItems):
(WI.LegacyTabBar.prototype.get normalTabCount):
(WI.LegacyTabBar.prototype.layout.forceItemHidden):
(WI.LegacyTabBar.prototype.layout):
(WI.LegacyTabBar.prototype._tabBarItemsFromLeftToRight):
(WI.LegacyTabBar.prototype._findTabBarItem):
(WI.LegacyTabBar.prototype._hasMoreThanOneNormalTab):
(WI.LegacyTabBar.prototype._openDefaultTab):
(WI.LegacyTabBar.prototype._recordTabBarItemSizesAndPositions):
(WI.LegacyTabBar.prototype._applyTabBarItemSizesAndPositions):
(WI.LegacyTabBar.prototype._clearTabBarItemSizesAndPositions):
(WI.LegacyTabBar.prototype._finishExpandingTabsAfterClose.):
(WI.LegacyTabBar.prototype._finishExpandingTabsAfterClose):
(WI.LegacyTabBar.prototype._handleMouseDown):
(WI.LegacyTabBar.prototype._handleClick):
(WI.LegacyTabBar.prototype._handleMouseMoved):
(WI.LegacyTabBar.prototype._handleMouseUp):
(WI.LegacyTabBar.prototype._handleMouseLeave):
(WI.LegacyTabBar.prototype._handleContextMenu):
(WI.LegacyTabBar.prototype._handleNewTabClick):
(WI.LegacyTabBar.prototype._handleTabPickerTabContextMenu):
(WI.LegacyTabBar.prototype._handleNewTabMouseEnter):
* UserInterface/Views/NetworkTabContentView.js:
(WI.NetworkTabContentView):
* UserInterface/Views/NewTabContentView.js:
(WI.NewTabContentView):
(WI.NewTabContentView.tabInfo):
(WI.NewTabContentView.isEphemeral): Deleted.
* UserInterface/Views/ResourcesTabContentView.js:
(WI.ResourcesTabContentView):
* UserInterface/Views/SearchTabContentView.js:
(WI.SearchTabContentView):
(WI.SearchTabContentView.tabInfo):
(WI.SearchTabContentView.isEphemeral): Deleted.
* UserInterface/Views/SettingsTabContentView.js:
(WI.SettingsTabContentView.tabInfo):
(WI.SettingsTabContentView.prototype._createExperimentalSettingsView):
(WI.SettingsTabContentView.isEphemeral): Deleted.
* UserInterface/Views/StorageTabContentView.js:
(WI.StorageTabContentView):
* UserInterface/Views/TabBar.css:
* UserInterface/Views/TabBar.js:
(WI.TabBar):
(WI.TabBar.prototype.insertTabBarItem):
(WI.TabBar.prototype.removeTabBarItem):
(WI.TabBar.prototype.set selectedTabBarItem):
(WI.TabBar.prototype.get normalNonEphemeralTabCount):
(WI.TabBar.prototype._handleMouseDown):
(WI.TabBar.prototype._handleClick):
(WI.TabBar.prototype._handleMouseMoved):
(WI.TabBar.prototype._handleMouseLeave):
(WI.TabBar.prototype._handleContextMenu):
(WI.TabBar.prototype._handleTabPickerTabContextMenu):
(WI.TabBar.prototype.get newTabTabBarItem): Deleted.
(WI.TabBar.prototype.updateNewTabTabBarItemState): Deleted.
(WI.TabBar.prototype._openDefaultTab): Deleted.
(WI.TabBar.prototype._handleNewTabClick): Deleted.
(WI.TabBar.prototype._handleNewTabMouseEnter): Deleted.
Remove support for the New Tab button and default tab. Without a default
tab, there is nothing to display when no tabs are open, so prevent the
last non-pinned tab from being removed.
* UserInterface/Views/TabBrowser.js:
(WI.TabBrowser._tabBarItemRemoved):
* UserInterface/Views/TabContentView.js:
(WI.TabContentView.isEphemeral): Deleted.
* UserInterface/Views/TimelineTabContentView.js:
(WI.TimelineTabContentView):
2018-01-30 Devin Rousso <webkit@devinrousso.com>
Web Inspector: Replace Object.shallowMerge with ES2018 spread operator
https://bugs.webkit.org/show_bug.cgi?id=182219
Reviewed by Brian Burg.
* UserInterface/Base/Utilities.js:
(Object.shallowMerge): Deleted.
* UserInterface/Base/DOMUtilities.js:
(WI.linkifyNodeReference):
* UserInterface/Base/Main.js:
(WI.handlePossibleLinkClick):
(WI.openURL):
(WI.showSourceCodeLocation):
(WI.showOriginalUnformattedSourceCodeLocation):
(WI.showOriginalOrFormattedSourceCodeLocation):
(WI.showOriginalOrFormattedSourceCodeTextRange):
(WI.linkifyLocation):
* UserInterface/Views/DOMTreeElement.js:
(WI.DOMTreeElement.prototype._insertAdjacentHTML):
* UserInterface/Views/WebSocketContentView.js:
(WI.WebSocketContentView.prototype._addRow):
2018-01-26 Matt Baker <mattbaker@apple.com>
Web Inspector: Timelines content browser NavigationBar is squashed at narrow heights
https://bugs.webkit.org/show_bug.cgi?id=182196
<rdar://problem/36929899>
Reviewed by Joseph Pecoraro.
* UserInterface/Views/NavigationBar.css:
(.navigation-bar):
2018-01-26 Matt Baker <mattbaker@apple.com>
Web Inspector: TabBar redesign: improvements to tab layout and resize behavior
https://bugs.webkit.org/show_bug.cgi?id=181468
<rdar://problem/36395439>
Reviewed by Devin Rousso.
* Localizations/en.lproj/localizedStrings.js:
* UserInterface/Images/TabPicker.svg: Added.
New ">>" icon for the tab picker button.
* UserInterface/Views/CanvasTabContentView.js:
(WI.CanvasTabContentView):
* UserInterface/Views/ConsoleTabContentView.js:
(WI.ConsoleTabContentView):
* UserInterface/Views/DebuggerTabContentView.js:
(WI.DebuggerTabContentView):
* UserInterface/Views/ElementsTabContentView.js:
(WI.ElementsTabContentView):
* UserInterface/Views/GeneralTabBarItem.js:
(WI.GeneralTabBarItem):
(WI.GeneralTabBarItem.fromTabContentViewConstructor):
(WI.GeneralTabBarItem.prototype.get title):
Add missing override for getter/setter pair.
(WI.GeneralTabBarItem.prototype.set title):
(WI.GeneralTabBarItem.prototype._handleContextMenuEvent):
Show the close button on ephemeral tabs only (Search, New Tab).
Replace unused `representedObject` parameter with `isEphemeral`, which
determines whether to show a close button for the tab.
* UserInterface/Views/LayersTabContentView.js:
(WI.LayersTabContentView):
* UserInterface/Views/NavigationBar.js:
Remove unused symbol.
* UserInterface/Views/NetworkTabContentView.js:
(WI.NetworkTabContentView):
* UserInterface/Views/NewTabContentView.js:
(WI.NewTabContentView):
* UserInterface/Views/PinnedTabBarItem.js:
(WI.PinnedTabBarItem):
Remove unused parameter.
* UserInterface/Views/ResourcesTabContentView.js:
(WI.ResourcesTabContentView):
* UserInterface/Views/SearchTabContentView.js:
(WI.SearchTabContentView):
* UserInterface/Views/StorageTabContentView.js:
(WI.StorageTabContentView):
* UserInterface/Views/TabBar.css:
(.tab-bar > .item):
(.tab-bar.calculate-width > .item):
(.tab-bar > .item.pinned.tab-picker):
(.tab-bar > .item > .close):
(.tab-bar > .item > .title):
(.tab-bar:not(.collapsed) > .item > .title):
(.tab-bar.collapsed > .item:not(.pinned) > .icon):
(.tab-bar > .item:hover > .close):
(.tab-bar.collapsed > .item:hover > .close):
(.tab-bar:not(.collapsed) > .item.ephemeral:hover > .icon):
(.tab-bar.collapsed > .item.ephemeral:hover > .title):
(body[dir=ltr] .tab-bar > .item > .close): Deleted.
(body[dir=rtl] .tab-bar > .item > .close): Deleted.
(.tab-bar > .item > .flex-space): Deleted.
(.tab-bar > .item:not(.pinned) > .flex-space:last-child): Deleted.
(body[dir=ltr] .tab-bar > .item:not(.pinned) > .flex-space:last-child): Deleted.
(body[dir=rtl] .tab-bar > .item:not(.pinned) > .flex-space:last-child): Deleted.
(body[dir=ltr] .tab-bar > .item > .title): Deleted.
(body[dir=rtl] .tab-bar > .item > .title): Deleted.
(.tab-bar.collapsed > .item): Deleted.
(.tab-bar.collapsed > .item > .flex-space): Deleted.
(.tab-bar.collapsed > .item > .close): Deleted.
(body[dir=ltr] .tab-bar.collapsed > .item > .close): Deleted.
(body[dir=rtl] .tab-bar.collapsed > .item > .close): Deleted.
(.tab-bar.hide-titles > .item > .title): Deleted.
(.tab-bar.collapsed:not(.hide-titles) > .item:not(.pinned):hover > .icon,): Deleted.
(.tab-bar.collapsed:not(.hide-titles) > .item:hover > .close,): Deleted.
Clean up tab styles and prevent tabs from shrinking during flex layout.
Added new `calculate-width` class, to disable flex layout when measuring
the minimum width of the TabBar required to fit all tab items.
* UserInterface/Views/TabBar.js:
(WI.TabBar):
(WI.TabBar.prototype.set selectedTabBarItem):
(WI.TabBar.prototype.layout.forceItemHidden):
(WI.TabBar.prototype.layout):
Perform two layout passes, similar to NavigationBar. The first pass disables
flex layout and measures tab items at full size. If the bar isn't wide enough
to show all the tabs, hide their icons and measure again. If there still isn't
room, hide tabs starting from the end of the bar and display the tab picker.
(WI.TabBar.prototype._handleMouseDown):
(WI.TabBar.prototype._handleTabPickerTabContextMenu):
* UserInterface/Views/TabBarItem.js:
(WI.TabBarItem):
* UserInterface/Views/TimelineTabContentView.js:
(WI.TimelineTabContentView):
2018-01-25 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Network Table: Sort indicator is not displayed when sorted column is hidden and re-shown
https://bugs.webkit.org/show_bug.cgi?id=182164
<rdar://problem/36892619>
Reviewed by Brian Burg.
* UserInterface/Views/Table.js:
(WI.Table.prototype.showColumn):
Re-add the sort classes if the column being shown is the active sort column.
2018-01-25 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Network - Cookies view should behave better at narrow widths, all data is hidden
https://bugs.webkit.org/show_bug.cgi?id=182163
<rdar://problem/36893241>
Reviewed by Brian Burg.
* UserInterface/Views/ResourceCookiesContentView.css:
(.resource-cookies .table):
Give these tables a reasonable minimum size so that if the inspector
is narrow, the content view can still be scrolled to see all of
the table data.
* UserInterface/Views/Table.css:
(.table > .header):
Match the data-container and mark overflow as hidden, otherwise
super narrow widths show header content beyond the edge.
2018-01-25 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: "Displayed Columns" should not be displayed in context menu if all columns are required columns
https://bugs.webkit.org/show_bug.cgi?id=182162
<rdar://problem/36893758>
Reviewed by Matt Baker.
* UserInterface/Views/Table.js:
(WI.Table.prototype._handleHeaderContextMenu):
Only add the header column when we know there are hideable columns.
2018-01-24 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Simplify update-LegacyInspectorBackendCommands.rb
https://bugs.webkit.org/show_bug.cgi?id=182067
Reviewed by Brian Burg.
* Scripts/update-LegacyInspectorBackendCommands.rb:
Remove stale dependency_json, it has always been empty for a while now.
Switch to framework WebInspectorUI to generate only the backend commands
and not spend time generating a bunch of cpp files.
2018-01-24 Nikita Vasilyev <nvasilyev@apple.com>
REGRESSION (r226994): Web Inspector: Styles: Suggestions popover floats in top-left corner of Web Inspector after tabbing
https://bugs.webkit.org/show_bug.cgi?id=182027
Reviewed by Matt Baker.
r226994 added a layout of all properties on property removal. Layout caused
a property element to be removed from DOM right before dislaying the suggestion
popover, resulting in the popover being displayed at the top left corner.
* UserInterface/Views/SpreadsheetCSSStyleDeclarationEditor.js:
(WI.SpreadsheetCSSStyleDeclarationEditor.prototype.layout):
(WI.SpreadsheetCSSStyleDeclarationEditor.prototype.spreadsheetStylePropertyRemoved):
Only update property view indices when a property is removed.
* UserInterface/Views/SpreadsheetStyleProperty.js:
(WI.SpreadsheetStyleProperty):
(WI.SpreadsheetStyleProperty.prototype.set index):
* UserInterface/Views/SpreadsheetTextField.js:
(WI.SpreadsheetTextField.prototype._updateCompletions):
Checking this._element.parentNode to see if the element is attached to the DOM tree is unreliable,
since the element may have a non-null parent node that is detached from the DOM tree. To fix that,
we could traverse element's ancestors, but I used a concise isConnected property instead.
2018-01-24 Joseph Pecoraro <pecoraro@apple.com>
ReferenceError:​ Can't find variable:​ DOMAgent (at ScriptSyntaxTree.js:​178:​22)​
https://bugs.webkit.org/show_bug.cgi?id=182059
Reviewed by Matt Baker.
* UserInterface/Models/ScriptSyntaxTree.js:
(WI.ScriptSyntaxTree.functionReturnDivot):
DOMAgent won't be available in a ServiceWorker or JSContext inspector. So add
a check for DOMAgent, and assume if DOMAgent doesn't exist that we should fall
back to the latest path (non-iOS 9) target.
2018-01-23 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Network's columns shake when scrolling at non-default zoom level
https://bugs.webkit.org/show_bug.cgi?id=181998
<rdar://problem/36449808>
Reviewed by Matt Baker.
* UserInterface/Views/Table.js:
When zoomed the bounding client rect values were fractional, which was
unexpected by this area of code. Floor the values to get a value we expect
to be able to evenly distribute.
2018-01-22 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Styles Redesign: data corruption when updating values quickly
https://bugs.webkit.org/show_bug.cgi?id=179461
<rdar://problem/35431882>
Reviewed by Joseph Pecoraro.
Data corruption used to happen because CSSStyleDeclaration.prototype.text didn't
update synchronously. Making two or more quick changes resulted in corrupted data.
Imagine we modify a CSS value 3 times:
Front-end: (1)-(2)---(3)
Back-end: (1)-----(2)-(3)
The first response from the backend could happen after the 2nd edit. In this patch,
CSSStyleDeclaration is locked when its view is being edited.
To correctly display invalid and overridden properties, the backend is allowed to update
CSSStyleDeclaration and CSSProperty when they're locked if the text from the backend
matches the model's text. This should happen when the backend is caught up with the
front-end changes.
* UserInterface/Models/CSSProperty.js:
(WI.CSSProperty.prototype.update):
* UserInterface/Models/CSSStyleDeclaration.js:
(WI.CSSStyleDeclaration):
(WI.CSSStyleDeclaration.prototype.get locked):
(WI.CSSStyleDeclaration.prototype.set locked):
(WI.CSSStyleDeclaration.prototype.set text):
* UserInterface/Views/SpreadsheetCSSStyleDeclarationEditor.js:
(WI.SpreadsheetCSSStyleDeclarationEditor):
(WI.SpreadsheetCSSStyleDeclarationEditor.prototype.initialLayout):
(WI.SpreadsheetCSSStyleDeclarationEditor.prototype.detached):
(WI.SpreadsheetCSSStyleDeclarationEditor.prototype.get editing):
(WI.SpreadsheetCSSStyleDeclarationEditor.prototype.set focused):
(WI.SpreadsheetCSSStyleDeclarationEditor.prototype.set inlineSwatchActive):
(WI.SpreadsheetCSSStyleDeclarationEditor.prototype.stylePropertyInlineSwatchActivated):
(WI.SpreadsheetCSSStyleDeclarationEditor.prototype.stylePropertyInlineSwatchDeactivated):
(WI.SpreadsheetCSSStyleDeclarationEditor.prototype._propertiesChanged):
(WI.SpreadsheetCSSStyleDeclarationEditor.prototype._updateStyleLock):
Lock CSSStyleDeclaration when a CSS property name or value is focused or
an inline widget is active.
* UserInterface/Views/SpreadsheetCSSStyleDeclarationSection.js:
(WI.SpreadsheetCSSStyleDeclarationSection):
(WI.SpreadsheetCSSStyleDeclarationSection.prototype._handleMouseDown):
(WI.SpreadsheetCSSStyleDeclarationSection.prototype._handleClick):
* UserInterface/Views/SpreadsheetStyleProperty.js:
(WI.SpreadsheetStyleProperty):
(WI.SpreadsheetStyleProperty.prototype._createInlineSwatch):
When selector is focused, clicking on the white-space should not add a new blank property.
2018-01-19 Ross Kirsling <ross.kirsling@sony.com>
Web Inspector: Layers tab should do away with popovers (if possible)
https://bugs.webkit.org/show_bug.cgi?id=181805
Reviewed by Matt Baker.
* Localizations/en.lproj/localizedStrings.js:
Remove superfluous colon from a string.
* UserInterface/Main.html:
* UserInterface/Views/LayerDetailsSidebarPanel.css:
* UserInterface/Views/Layers3DContentView.css: Added.
Remove popover styling from sidebar, add new file with similar styling for canvas overlay.
* UserInterface/Views/LayerDetailsSidebarPanel.js:
(WI.LayerDetailsSidebarPanel):
(WI.LayerDetailsSidebarPanel.prototype.selectNodeByLayerId):
(WI.LayerDetailsSidebarPanel.prototype._dataGridSelectedNodeChanged):
(WI.LayerDetailsSidebarPanel.prototype._updateLayers):
(WI.LayerDetailsSidebarPanel.prototype._updateBottomBar):
(WI.LayerDetailsSidebarPanel.prototype.willDismissPopover): Deleted.
(WI.LayerDetailsSidebarPanel.prototype._showPopoverForSelectedNode): Deleted.
(WI.LayerDetailsSidebarPanel.prototype._presentPopover): Deleted.
(WI.LayerDetailsSidebarPanel.prototype._contentForPopover): Deleted.
(WI.LayerDetailsSidebarPanel.prototype._populateListOfCompositingReasons.addReason): Deleted.
(WI.LayerDetailsSidebarPanel.prototype._populateListOfCompositingReasons): Deleted.
* UserInterface/Views/Layers3DContentView.js:
(WI.Layers3DContentView):
(WI.Layers3DContentView.prototype.shown):
(WI.Layers3DContentView.prototype.selectLayerById):
(WI.Layers3DContentView.prototype._canvasMouseDown):
(WI.Layers3DContentView.prototype._buildLayerInfoElement):
(WI.Layers3DContentView.prototype._updateLayerInfoElement):
(WI.Layers3DContentView.prototype._updateReasonsList):
Remove popover from sidebar table, overlay div with same data arrangement on top of the canvas.
Also reverse the fix from r226671 since the visualization is no longer unusable without the sidebar!
2018-01-19 Matt Baker <mattbaker@apple.com>
Web Inspector: Canvas Tab: Multiple "waiting for frames" messages displayed
https://bugs.webkit.org/show_bug.cgi?id=181865
<rdar://problem/36664737>
Reviewed by Devin Rousso.
* UserInterface/Views/CanvasContentView.js:
(WI.CanvasContentView.prototype._recordingStarted):
(WI.CanvasContentView.prototype._recordingStopped):
2018-01-19 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Styles Redesign: tabbing on commented out property throws exception
https://bugs.webkit.org/show_bug.cgi?id=180676
<rdar://problem/35981058>
Reviewed by Joseph Pecoraro.
* UserInterface/Views/SpreadsheetCSSStyleDeclarationEditor.js:
(WI.SpreadsheetCSSStyleDeclarationEditor.prototype.startEditingFirstProperty):
Tabbing from the selector field should focus on the first editable property.
When no editable properties are present, a new blank property should be added after the commented out ones.
(WI.SpreadsheetCSSStyleDeclarationEditor.prototype.startEditingLastProperty):
Shift-tabbing from the selector field should focus on the last editable property of the previous CSS rule.
When no editable properties are present, a new blank property should be added after the commented out ones.
(WI.SpreadsheetCSSStyleDeclarationEditor.prototype.spreadsheetCSSStyleDeclarationEditorFocusMoved):
When navigating between properties skip the commented out ones.
(WI.SpreadsheetCSSStyleDeclarationEditor.prototype._editablePropertyAfter):
(WI.SpreadsheetCSSStyleDeclarationEditor.prototype._editablePropertyBefore):
* UserInterface/Views/SpreadsheetStyleProperty.js:
(WI.SpreadsheetStyleProperty.prototype.get enabled):
(WI.SpreadsheetStyleProperty.prototype._update):
2018-01-19 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Make styles sidebar always LTR
https://bugs.webkit.org/show_bug.cgi?id=175357
<rdar://problem/33787988>
Reviewed by Joseph Pecoraro.
* UserInterface/Views/SpreadsheetRulesStyleDetailsPanel.js:
(WI.SpreadsheetRulesStyleDetailsPanel):
2018-01-19 Keith Miller <keith_miller@apple.com>
HaveInternalSDK includes should be "#include?"
https://bugs.webkit.org/show_bug.cgi?id=179670
Reviewed by Dan Bernstein.
* Configurations/Base.xcconfig:
2018-01-18 Dan Bernstein <mitz@apple.com>
[Xcode] Streamline and future-proof target-macOS-version-dependent build setting definitions
https://bugs.webkit.org/show_bug.cgi?id=181803
Reviewed by Tim Horton.
* Configurations/Base.xcconfig: Updated.
* Configurations/DebugRelease.xcconfig: Ditto.
* Configurations/Version.xcconfig: Ditto.
2018-01-18 Devin Rousso <webkit@devinrousso.com>
Web Inspector: Canvas Tab: record button on canvas card doesn't always show on hover, or is misplaced
https://bugs.webkit.org/show_bug.cgi?id=179183
Reviewed by Joseph Pecoraro.
* UserInterface/Views/CanvasOverviewContentView.css:
(.content-view.canvas-overview .content-view.canvas:not(.is-recording) > header > .navigation-bar > .item.record-start-stop): Deleted.
2018-01-17 Devin Rousso <webkit@devinrousso.com>
Web Inspector: clicking on a path component that has no siblings should select it
https://bugs.webkit.org/show_bug.cgi?id=181772
Reviewed by Joseph Pecoraro.
* UserInterface/Views/HierarchicalPathComponent.js:
(WI.HierarchicalPathComponent.prototype._updateSelectElement):
(WI.HierarchicalPathComponent.prototype._selectElementMouseDown):
2018-01-17 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Add back localized strings for Styles sidebar panels
https://bugs.webkit.org/show_bug.cgi?id=181748
<rdar://problem/36583184>
Reviewed by Brian Burg.
* Localizations/en.lproj/localizedStrings.js:
* UserInterface/Views/ComputedStyleDetailsSidebarPanel.js:
(WI.ComputedStyleDetailsSidebarPanel):
* UserInterface/Views/RulesStyleDetailsSidebarPanel.js:
(WI.RulesStyleDetailsSidebarPanel):
* UserInterface/Views/VisualStyleDetailsSidebarPanel.js:
(WI.VisualStyleDetailsSidebarPanel):
Add back localized strings for panel titles lost in r225547.
2018-01-17 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Super long URL string causes bad wrapping in Resources detail sidebar
https://bugs.webkit.org/show_bug.cgi?id=181617
Reviewed by Brian Burg.
* UserInterface/Views/DetailsSection.css:
(.details-section > .content > .group > .row.simple > .value):
Set the break to all characters.
2018-01-16 Matt Baker <mattbaker@apple.com>
Web Inspector: Canvas tab: typing a "space" in the QuickConsole shouldn't trigger a recording
https://bugs.webkit.org/show_bug.cgi?id=181706
<rdar://problem/36558221>
Reviewed by Joseph Pecoraro.
* UserInterface/Views/CanvasOverviewContentView.js:
(WI.CanvasOverviewContentView):
(WI.CanvasOverviewContentView.prototype._handleSpace):
2018-01-16 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Make Console's Execution Context picker stand out when it is non-default
https://bugs.webkit.org/show_bug.cgi?id=181628
<rdar://problem/36492044>
Reviewed by Matt Baker.
* UserInterface/Views/HierarchicalPathComponent.css:
(.hierarchical-path-component > .selector-arrows):
* UserInterface/Views/HierarchicalPathComponent.js:
(WI.HierarchicalPathComponent.prototype.set selectorArrows):
Switch to SVG element so we can style the arrows.
* UserInterface/Views/QuickConsole.css:
(.quick-console > .navigation-bar > .hierarchical-path .execution-context):
(.quick-console > .navigation-bar > .hierarchical-path .execution-context .separator):
(.quick-console > .navigation-bar > .hierarchical-path.non-default-execution-context .execution-context):
(.quick-console > .navigation-bar > .hierarchical-path.non-default-execution-context .execution-context .selector-arrows):
Styles for the execution context picker. We hide the unused separator
and instead use margin so that the selected background and border don't
have an extra 7px on the right/end side.
* UserInterface/Views/QuickConsole.js:
(WI.QuickConsole.prototype._activeExecutionContextChanged):
Toggle the non-default class name on the path.
2018-01-16 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Styles: pressing down key should select first item from completion list when focusing on empty value
https://bugs.webkit.org/show_bug.cgi?id=181633
<rdar://problem/36501797>
Reviewed by Joseph Pecoraro.
* UserInterface/Views/SpreadsheetTextField.js:
(WI.SpreadsheetTextField.prototype._updateCompletions):
2018-01-16 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Styles Redesign: Long value causes bad wrapping
https://bugs.webkit.org/show_bug.cgi?id=181618
<rdar://problem/36485175>
Reviewed by Joseph Pecoraro.
Wrap long values only when editing.
* UserInterface/Views/SpreadsheetCSSStyleDeclarationEditor.css:
(.spreadsheet-style-declaration-editor .value.editing):
2018-01-16 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Styles Redesign: clicking on the white space after the property sometimes places a blank property at the wrong index
https://bugs.webkit.org/show_bug.cgi?id=179585
<rdar://problem/35490780>
Reviewed by Joseph Pecoraro.
* UserInterface/Views/SpreadsheetCSSStyleDeclarationEditor.js:
(WI.SpreadsheetCSSStyleDeclarationEditor.prototype.spreadsheetStylePropertyRemoved):
Layout call is needed to update data-property-index attributes on the property views.
2018-01-16 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Network Tab - Export HAR Context Menu not working
https://bugs.webkit.org/show_bug.cgi?id=181694
<rdar://problem/36479197>
Reviewed by Brian Burg.
* UserInterface/Views/NetworkTableContentView.js:
(WI.NetworkTableContentView.prototype.tableCellContextMenuClicked):
Ensure `this` works in the handler.
2018-01-15 Matt Baker <mattbaker@apple.com>
Web Inspector: TabBar redesign: add context menu to TabBar for toggling available tabs
https://bugs.webkit.org/show_bug.cgi?id=181448
<rdar://problem/36383298>
Reviewed by Devin Rousso.
* UserInterface/Base/Main.js:
(WI.loaded):
(WI.contentLoaded):
Reorder production tab classes and default (open) tabs.
(WI.registerTabClass): Removed.
Not used.
* UserInterface/Base/Object.js:
Remove notification that is no longer used.
* UserInterface/Views/GeneralTabBarItem.js:
(WI.GeneralTabBarItem):
(WI.GeneralTabBarItem.prototype.set title):
(WI.GeneralTabBarItem.prototype._handleContextMenuEvent): Deleted.
Remove per-tab context menu (provided Close Tab and Close Other Tabs).
* UserInterface/Views/NewTabContentView.js:
(WI.NewTabContentView):
* UserInterface/Views/TabBar.js:
(WI.TabBar):
(WI.TabBar.prototype._handleContextMenu):
* UserInterface/Views/TabBrowser.js:
(WI.TabBrowser):
(WI.TabBrowser._handleNewTabContextMenu): Deleted.
No longer needed.
2018-01-13 Nikita Vasilyev <nvasilyev@apple.com>
Web Inspector: Styles Redesign: properties should never be semitransparent or crossed out while editing
https://bugs.webkit.org/show_bug.cgi?id=180793
<rdar://problem/36038813>
Reviewed by Devin Rousso.
* UserInterface/Views/SpreadsheetCSSStyleDeclarationEditor.css:
(.spreadsheet-style-declaration-editor .value.editing):
(.spreadsheet-style-declaration-editor .property:matches(.invalid-name, .other-vendor, .overridden):not(.disabled) .content > *):
(.spreadsheet-style-declaration-editor .property.invalid-name:not(.disabled) .content > *):
(.spreadsheet-style-declaration-editor .property.invalid-value:not(.disabled) .content .value):
(.spreadsheet-style-declaration-editor .property.not-inherited .content > *):
* UserInterface/Views/SpreadsheetStyleProperty.js:
(WI.SpreadsheetStyleProperty.prototype._update):
2018-01-12 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Drop support for iOS 7 targets
https://bugs.webkit.org/show_bug.cgi?id=181549
<rdar://problem/36444813>
Reviewed by Brian Burg.
* Versions/Inspector-iOS-7.0.json: Removed.
* UserInterface/Protocol/Legacy/7.0/InspectorBackendCommands.js: Removed.
Remove protocol snapshot and generated commands for iOS 7.
* UserInterface/Base/Main.js:
* UserInterface/Controllers/BreakpointPopoverController.js:
(WI.BreakpointPopoverController.prototype._createPopoverContent):
* UserInterface/Controllers/DebuggerManager.js:
(WI.DebuggerManager.prototype._setBreakpoint):
* UserInterface/Controllers/SourceMapManager.js:
(WI.SourceMapManager.prototype._loadAndParseSourceMap):
* UserInterface/Models/Instrument.js:
(WI.Instrument.startLegacyTimelineAgent):
* UserInterface/Models/ResourceTimingData.js:
* UserInterface/Models/ScriptTimelineRecord.js:
(WI.ScriptTimelineRecord.EventType.displayName):
* UserInterface/Models/SourceMapResource.js:
(WI.SourceMapResource.prototype.requestContentFromBackend):
* UserInterface/Protocol/CSSObserver.js:
(WI.CSSObserver.prototype.regionLayoutUpdated): Deleted.
* UserInterface/Protocol/RemoteObject.js:
(WI.RemoteObject.fromPayload):
Remove code that was only necessary to support iOS 7.
2018-01-12 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Support JSX (React) syntax highlighting
https://bugs.webkit.org/show_bug.cgi?id=181607
<rdar://problem/36442564>
Reviewed by Brian Burg.
* UserInterface/Base/MIMETypeUtilities.js:
(WI.mimeTypeForFileExtension):
(WI.fileExtensionForMIMEType):
* UserInterface/Models/Resource.js:
Support the jsx extension and mime types.
* UserInterface/Main.html:
* Scripts/update-codemirror-resources.rb:
* UserInterface/External/CodeMirror/jsx.js: Added.
Include new mode from CodeMirror@d8926768.
2018-01-11 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Rename "Query String" section as "Query String Parameters" for clarity
https://bugs.webkit.org/show_bug.cgi?id=181464
Reviewed by Darin Adler.
* Localizations/en.lproj/localizedStrings.js:
* UserInterface/Views/ResourceHeadersContentView.js:
(WI.ResourceHeadersContentView.prototype.initialLayout):
2018-01-11 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Remove unused variable in WI.DebuggerSidebarPanel
https://bugs.webkit.org/show_bug.cgi?id=181517
Reviewed by Matt Baker.
* UserInterface/Views/DebuggerSidebarPanel.js:
2018-01-10 Joseph Pecoraro <pecoraro@apple.com>
REGRESSION(r218975): Web Inspector: Add back NavigationSidebarPanel initialization parameter used by SearchSidebarPanel (top overflow shadow)
https://bugs.webkit.org/show_bug.cgi?id=181518
<rdar://problem/36427197>
Reviewed by Matt Baker.
* UserInterface/Views/NavigationSidebarPanel.css:
(.sidebar > .panel.navigation > .overflow-shadow.top):
* UserInterface/Views/NavigationSidebarPanel.js:
(WI.NavigationSidebarPanel):
Add back the initialization parameter still used by SearchSidebarPanel
and add back its implementation. There were still references to
dynamically update _topOverflowShadowElement in NavigationSidebarPanel.
2018-01-10 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Incorrect check with WI.debuggableType
https://bugs.webkit.org/show_bug.cgi?id=181515
<rdar://problem/36425509>
Reviewed by Brian Burg.
* UserInterface/Base/Main.js:
(WI.contentLoaded):
This moved to WI.sharedApp a while ago.
2018-01-10 Matt Baker <mattbaker@apple.com>
Web Inspector: Canvas tab: throttle recording slider updates
https://bugs.webkit.org/show_bug.cgi?id=180839
<rdar://problem/36057849>
Reviewed by Joseph Pecoraro
* UserInterface/Base/Utilities.js:
Add Object.throttle and Function.cancelThrottle. Repeated calls to a
function on a throttled object are delayed, so that the function isn't
invoked more frequently than the specified delay value.
For a description of throttling behavior see:
- http://www.chrislondon.co/throttling-vs-debouncing
- http://benalman.com/projects/jquery-throttle-debounce-plugin
* UserInterface/Views/RecordingContentView.js:
(WI.RecordingContentView.prototype.updateActionIndex):
Throttle frequency of canvas snapshot creation to 200ms.
(WI.RecordingContentView.prototype.hidden):
Prevent trailing edge call after hiding the view.
2018-01-10 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Should not try to autocomplete subsections of a string
https://bugs.webkit.org/show_bug.cgi?id=181461
<rdar://problem/36369421>
Reviewed by Brian Burg.
* UserInterface/Controllers/CodeMirrorCompletionController.js:
(WI.CodeMirrorCompletionController.prototype._completeAtCurrentPosition):
Disable autocompletion within strings.
2018-01-09 Joseph Pecoraro <pecoraro@apple.com>
REGRESSION(r201855): Web Inspector: Should see "length" autocompletion suggestion on a string literal
https://bugs.webkit.org/show_bug.cgi?id=181462
<rdar://problem/36390699>
Reviewed by Matt Baker.
* UserInterface/Controllers/JavaScriptRuntimeCompletionProvider.js:
(WI.JavaScriptRuntimeCompletionProvider.prototype.completionControllerCompletionsNeeded.inspectedPage_evalResult_getCompletions):
This is code that runs on the inspected target, which may have an old version of
WebKit/JavaScriptCore, so don't use new syntax like this.
(WI.JavaScriptRuntimeCompletionProvider.prototype.completionControllerCompletionsNeeded):
We intended to return the result by as a JSON value instead of a RemoteObject.
2018-01-09 Ross Kirsling <ross.kirsling@sony.com>
Web Inspector: Layers sidebar shows popover on selection even when collapsed
https://bugs.webkit.org/show_bug.cgi?id=181465
Reviewed by Matt Baker.
* UserInterface/Views/LayerDetailsSidebarPanel.js:
(WI.LayerDetailsSidebarPanel.prototype.selectNodeByLayerId):
Have sidebar show itself if necessary before displaying popover.
2018-01-08 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Find next / previous within a resource content view does not have bouncy highlight when editor scrolls
https://bugs.webkit.org/show_bug.cgi?id=181279
<rdar://problem/36291097>
Reviewed by Brian Burg.
* UserInterface/Views/TextEditor.js:
(WI.TextEditor.prototype._revealSearchResult):
Reposition the bouncy highlight on scroll based on the CodeMirror
line/ch position of the search result.
(WI.TextEditor.prototype._removeBouncyHighlightElementIfNeeded):
Track the bouncy highlight scroll handler in a member variable so that
we always remember to remove it and don't leak scroll handlers.
2018-01-07 David Kilzer <ddkilzer@apple.com>
Enable -Wcast-qual for WebInspectorUI, WebKitLegacy, WebKit projects
<https://webkit.org/b/181256>
<rdar://problem/36281730>
Reviewed by Darin Adler.
* Configurations/Base.xcconfig:
(WARNING_CFLAGS): Add -Wcast-qual.
2018-01-05 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Add another Protocol Version
https://bugs.webkit.org/show_bug.cgi?id=181354
<rdar://problem/35432817>
Reviewed by Matt Baker.
* UserInterface/Protocol/Legacy/11.3/InspectorBackendCommands.js: Added.
* Versions/Inspector-iOS-11.3.json: Added.
2018-01-04 Devin Rousso <webkit@devinrousso.com>
Web Inspector: replace HTMLCanvasElement with CanvasRenderingContext for instrumentation logic
https://bugs.webkit.org/show_bug.cgi?id=180770
Reviewed by Joseph Pecoraro.
* UserInterface/Models/Canvas.js:
(WI.Canvas.fromPayload):
(WI.Canvas.prototype.get contextType):
(WI.Canvas.prototype.saveIdentityToCookie):
(WI.Canvas.prototype.get frame): Deleted.
2018-01-04 Joseph Pecoraro <pecoraro@apple.com>
REGRESSION (r225709): Web Inspector: CSS Source maps not loading
https://bugs.webkit.org/show_bug.cgi?id=181314
<rdar://problem/36177620>
Reviewed by Brian Burg.
* UserInterface/Controllers/SourceMapManager.js:
(WI.SourceMapManager.prototype._loadAndParseSourceMap):
* UserInterface/Models/SourceMapResource.js:
(WI.SourceMapResource.prototype.requestContentFromBackend):
Correct this so that we only fall back to a reasonable frame id
if we couldn't determine a frame id from earlier. Previously this
was incorrectly clearing the frame id if we had gotten it earlier.
* UserInterface/Test.html:
* UserInterface/Test/Test.js:
(WI.loaded):
Add SourceMap related files for tests.
2018-01-04 Brian Burg <bburg@apple.com>
Web Inspector: Capture Element Screenshot looks fuzzy
https://bugs.webkit.org/show_bug.cgi?id=175734
<rdar://problem/33803377>
Reviewed by Joseph Pecoraro and Simon Fraser.
Spruce up these functions a bit. They now optionally return a promise
if no callback is supplied. They now can take either a WI.DOMNode or a node id.
* UserInterface/Controllers/DOMTreeManager.js:
(WI.DOMTreeManager.prototype.querySelector):
(WI.DOMTreeManager.prototype.querySelectorAll):
2018-01-04 Brian Burg <bburg@apple.com>
Web Inspector: add RemoteObject.fetchProperties and some basic tests for RemoteObject API
https://bugs.webkit.org/show_bug.cgi?id=180945
Reviewed by Joseph Pecoraro.
Add a new method, fetchProperties, which async fetches an arbitrary list of properties
from a RemoteObject. This is intended for writing tests and other quick evaluations,
so it has some behaviors that are suitable in these situations:
- If the evaluation throws an exception, the result will reject with that exception.
- If there is a protocol error for some reason, the result will reject with an exception.
- Non-string and non-number keys cause an exception, as this is probably not intended.
- Does not accept a callback, returns a promise only. New code should use async.
For full fidelity introspection of property descriptors, clients should use the existing
getOwnPropertyDescriptor[s] class of methods.
* UserInterface/Protocol/RemoteObject.js:
(WI.RemoteObject.prototype.async.fetchProperties): Added.
- Validate specified keys and remove duplicates.
- Request properties one-by-one to avoid fetching all descriptors and dealing with previews.
- Unwrap returned primitive values to avoid unnecessary munging in tests.
(WI.RemoteObject.prototype.getProperty):
- Rework this to return a promise if no callback was supplied.
- Introduce stricter property type checking to avoid unintended mistakes.
(WI.RemoteObject.prototype.callFunction):
- Rework this to return a promise if no callback was supplied.
- Turn thrown exceptions and protocol errors into rejected promises.
2018-01-04 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: ⌘G / ⇧⌘G text search does not working after closing find banner
https://bugs.webkit.org/show_bug.cgi?id=181280
<rdar://problem/36291175>
Reviewed by Matt Baker.
* UserInterface/Views/ContentBrowser.js:
(WI.ContentBrowser.prototype._findBannerDidHide):
When the find banner is hidden trigger a new ContentView method,
searchHidden instead of the destructive searchCleared. This allows
most content views (text editors, DOM tree, Network Headers view)
to keep their populated search results.
* UserInterface/Views/ContentView.js:
(WI.ContentView.prototype.searchHidden):
* UserInterface/Views/LogContentView.js:
(WI.LogContentView.prototype.searchHidden):
By default searchHidden does nothing. The Console's LogContentView
treats the find banner differently and clears its search results.
* UserInterface/Views/TextEditor.js:
(WI.TextEditor.prototype.searchCleared):
Modernize some code while working in this area.
* UserInterface/Views/Main.css:
(.bouncy-highlight):
Ensure black text on yellow background in the bouncy highlight. In the
DOM Tree it could have been white if the find banner was closed.
2018-01-03 Ting-Wei Lan <lantw44@gmail.com>
Replace hard-coded paths in shebangs with #!/usr/bin/env
https://bugs.webkit.org/show_bug.cgi?id=181040
Reviewed by Alex Christensen.
* Scripts/combine-resources.pl:
* Scripts/copy-user-interface-resources-dryrun.rb:
* Scripts/copy-user-interface-resources.pl:
* Scripts/fix-worker-imports-for-optimized-builds.pl:
* Scripts/remove-console-asserts-dryrun.rb:
* Scripts/remove-console-asserts.pl:
* Scripts/update-LegacyInspectorBackendCommands.rb:
* Scripts/update-codemirror-resources.rb:
* WebInspectorUI.vcxproj/build-webinspectorui.pl:
2018-01-03 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: "Log Value" context menu is sometimes unavailable
https://bugs.webkit.org/show_bug.cgi?id=181278
<rdar://problem/36281649>
Reviewed by Devin Rousso.
* UserInterface/Views/ObjectPreviewView.css:
(.object-preview > .title):
* UserInterface/Views/ObjectTreeView.css:
(.object-tree.expanded > .title):
Make the expanded object title information 16px tall to match ObjectTree
tree element row heights. This eliminates the floating console message
location from overlapping the first ObjectTree's TreeElement and causing
truncation and other behavior issues (like Context Menu identification).
2018-01-03 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: RTL - DOM Tree Element selection doesn't work
https://bugs.webkit.org/show_bug.cgi?id=181275
<rdar://problem/36290450>
Reviewed by Devin Rousso.
* UserInterface/Views/TreeOutline.js:
(WI.TreeOutline.prototype.treeElementFromEvent):
Provide a better explanation for why we are making the `x` adjustment here,
to detect the inner most tree element along the horizontal. Fix the algorithm
for RTL, since the intent is to adjust to the trailing edge of the container
which is on the opposite side in RTL.
2018-01-03 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Find banner sometimes does not work (when already populated and shown for first time on resource)
https://bugs.webkit.org/show_bug.cgi?id=181255
<rdar://problem/36248855>
Reviewed by Matt Baker.
* UserInterface/Views/TextEditor.js:
(WI.TextEditor.prototype.set string):
Defer any early searches until the initial content of a TextEditor has been set.
Such searches can happen when the FindBanner already has content when a
ContentView is first opened and needs to load its content from the backend.
Further, even though the content may be loaded from the backend before the
search results, microtask hops might cause the content to get to the TextEditor
after the search results.
2018-01-03 Joseph Pecoraro <pecoraro@apple.com>
REGRESSION: Web Inspector: Debugger tab doesn't restore selected resource on reload
https://bugs.webkit.org/show_bug.cgi?id=181253
<rdar://problem/36280564>
Reviewed by Matt Baker.
* UserInterface/Views/DebuggerSidebarPanel.js:
(WI.DebuggerSidebarPanel.prototype.restoreStateFromCookie):
Add braces to ensure the trailing else is actually trailing the outer
chain as it was intended to be.
2018-01-02 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Clicking source location link in Console unexpectedly jumps to Network tab
https://bugs.webkit.org/show_bug.cgi?id=181229
<rdar://problem/36075219>
Reviewed by Matt Baker.
* UserInterface/Base/Main.js:
Cleanup linkifyURLAsNode. Ignore Search tab in generic handlePossibleLinkClick
when not already in the Search tab.
* UserInterface/Views/CallFrameView.js:
(WI.CallFrameView):
Ignore Search and Network tab in CallFrame links.
* UserInterface/Views/TabBrowser.js:
(WI.TabBrowser.prototype.bestTabContentViewForRepresentedObject):
Improve style.
== Rolled over to ChangeLog-2018-01-01 ==